|
Exping.txt |
|
|
Larrikin |
24.9.2011, 14:23
|
   
Apprentice
Сообщений: 120
Регистрация: 9.9.2011 Группа: Пользователи Наличность: 0
Пользователь №: 13.968
Возраст: 35

|
Похоже рефакторинг это как ремонт - нельзя закончить, можно прекратить. Скрипт для ма/дд, пауза между строк - 1 ms. Общая логика работы скрипта
Скрипт работает пока окошко таргета развернуто. Как только видит свернутое окошко таргета - останавливается. Сначала скрипт привязывается к последнему окну линейки Потом проверяет включена ли нужная панель. Это делается с помощью посыла кнопки макроса /taget %self и поиска синих кружочков, которые появляются вокруг головы персонажа при выборе самого себя. Это сделано потому, что обычно кач на скрипте идёт на особой панели. Потом скрипт ищет сам начало и конец полоск ХП и МП. Проверяет стабильность правой границы - чтобы хп не росло. Эти значения потом используются для анализа ХП мобов. Потом скрипт зацикливается на выборе и атаке моба.
exping.txt
Код /////////////////////////////////////////////////// // exping script set linedelay 1 // установить время задержки между строк
/////////////////////////////////////////////////// // Спот set #AgrFarDamaged 0 // Трогать ли далеких недобитков set #postmortem_duration 2222 // Время действия макроса свежевания set #MaxTargeting 77777 // Сколько времени пытаться взять таргет set #MaxTimeToKill 99999 // Сколько времени ждать падения моба set #NewMobFirstBoodTime 7777 // За сколько моб должен повредиться set #CloseOnlyTime 22222 // Сколько искать вблизи после фейла атаки set #AtackMacrosWorkTime 2222 // Сколько времени макросу атаки
/////////////////////////////////////////////////// // Персонаж set $self F11 // Кнопка с макросом /target %self set $attack F1 // Кнопка атаки set #attack 2222 // Время между простыми атаками set $macro_attack F2 // Кнопка с макросом начала атаки set $debuf 3 // Кнопка дебафа цели set #debuf 8000 // Время отката дебафа set #re_debuf 30000 // Время до следуюего дебафа set #overhit 1 // Оставлять пикселов на добивание set $overhit F1 // Кнопка добивания set #overhit_casting 1111 // Время добивания set $next F4 // Кнопка с макросом /targetnext set $mob F3 // Кнопка с выбором моба set $postmortem F7 // Макрос свежевания после убийства set $self_buf F8 // Кнопка селф бафа set #self_buf_casting 1111 // Время на селф бафание set #self_rebuf 77777 // Через сколько селф ребаф
/////////////////////////////////////////////////// // Константы set #DeadTargetDelay 7000 // Сколько висит окошко трупа set #DrawingTargetTime 2222 // Максимальное время появления таргета set #ColorAlive 1251183 // Цвет жизни set #ColorAlive2 1316719 // Цвет жизни тоже set #ColorAliveClose 1316976 // Цвети жизни при смерти set #ColorMP 8535813 // Цвет маны set #xMobLeft 0 // Будет абсолютный Х начала полосок ХП/МП цели set #xMobOver 0 // Будет абсолютный Х моба на добивание overhit set #xMobRight 0 // Будет абсолютный Х конца полосок ХП/МП цели set #xMobHigh 0 // Будет абсолютный Х у конца полосок ХП/МП цели set #yMobHP 0 // Будет абсолютный Y полоски ХП цели set #yMobMP 0 // Будет абсолютный Y полоски МП цели
// set logging close gosub set_log_on gosub lock_window gosub set_target_window
set timer 0 set #OnlyCloseSelect ( timer + #CloseOnlyTime ) while 1 gosub target_next gosub self_buf gosub attack end_while //gosub clicker
end_script
/////////////////////////////////////////////////// // селф бафы :self_buf if timer > #time_to_self_buf send $self_buf // Баф - залог победы // Когда следующий set #time_to_self_buf ( timer + #self_rebuf ) wait #self_buf_casting // Время на каст селф бафов end_if return
/////////////////////////////////////////////////// // Атака цели :attack set #MobCount ( #MobCount +1) // Раз уж будем его бить send $macro_attack // Пытаемся начать атаку set #attack_start timer if timer > #debuf_reuse // Дебаф был в откате set #time2re_debuf ( timer + #re_debuf ) // Когда обновлять дебаф set #debuf_reuse ( timer + #debuf ) // Когда откатится дебаф else set #time2re_debuf #debuf_reuse // Дебафнуть по откату сразу end_if //wait random (555) // Время развернуться к цели //send home // Разворачиваем экран set #FirstBloodTime ( #attack_start + #NewMobFirstBoodTime ) if #mob_is_far > 0 // Моб идёт издалека set #AttackMacrosEnd ( #attack_start + #AtackMacrosWorkTime ) else set #AttackMacrosEnd ( #attack_start + 2222 ) // Некогда особо end_if get color #Color #xMobLeft #yMobHP // Начало полоски ХП цели while #Color = #ColorAlive or #Color = #ColorAlive2 // Ждем падения моба if timer > #FirstBloodTime // Пора покоцать хоть децл get color #Color #xMobHigh #yMobHP // У правого края ХП if #Color = #ColorAlive or #Color = #ColorAlive2 // Моб всё ещё здоров set logging Моб #MobCount не коцается, цвет у правой границы #Color alarm set #OnlyCloseSelect ( timer + #CloseOnlyTime ) // Потыкай /targetnext set #MobCount ( #MobCount - 1) // Раз уж НЕ будем его бить send escape // снимаем таргет wait 555 return // Этого моба больше не пытаемся бить end_if end_if if timer > #AttackMacrosEnd // Макрос атаки выполнен if timer > #time2re_debuf // Пора обновить дебаф send $debuf // Дебафаем set #time2re_debuf ( timer + #re_debuf ) // Когда обновлять дебаф set #debuf_reuse ( timer + #debuf ) // Когда откатится дебаф else if timer > #time_to_reattack send $attack // Просто долбим set #time_to_reattack ( timer + #attack ) end_if end_if end_if // Ищем раскрытое окошко таргета set $target findimage (0 0 111 222 (FindImage\L2\LTargetBig.bmp) %Target 2 90 1) if $target < 90 // Если раскрытого окошка таргета нет gosub check_close_exit end_if // wait 111 // Разбавляем set #attack_duration ( timer - #attack_start ) if #attack_duration > #MaxTimeToKill set logging За время #MaxTimeToKill моб #MobCount не упал goto error_exit end_if get color #Color #xMobOver #yMobHP // Начало полоски ХП цели end_while // Моб упал сраженный или находится при смерти
send $overhit wait #overhit_casting wait random ( 111 )
set #OnlyCloseSelect ( timer + #DeadTargetDelay + random ( 55 ) ) set #AverageTimePerMob ( timer / #MobCount ) set #AverageMobsPerHour ( ( #MobCount * 1000 *60 * 60 ) / timer ) set logging Моб #MobCount за #attack_duration ms, средний цикл: #AverageTimePerMob или #AverageMobsPerHour мобов/час
send $postmortem // Мародёрствуем wait #postmortem_duration // Даём на это время
return // С этим всё
/////////////////////////////////////////////////// // Наведение на моба :target_next set #TargetingTimeOut ( timer + #MaxTargeting + #DrawingTargetTime ) while timer < #TargetingTimeOut // Ищем цель сколько можно if timer < #OnlyCloseSelect // Окошко трупа ещё висит? send $next // Пытаемся взять таргет на очередного моба set #mob_is_far 0 set #delay ( 555 + random ( 222 ) ) else // Окошку трупа пора пропасть send $mob // Берём таргет на дальнего моба set #mob_is_far 1 set #delay ( 1111 + random ( 1111 ) ) // set logging Берем таргет дальним макросом end_if // Крайний срок появления таргета после нажатия макроса set #MustDraw ( timer + #DrawingTargetTime )
while timer < #MustDraw // Ищем цель не дольше разрешённого wait 222 // Даем время успокоится картинке set $target findimage (0 0 111 222 (FindImage\L2\LTargetBig.bmp) %Target 2 90 1) if $target > 90 // Если окошко раскрытого таргета есть get color #hpColorMin #xMobLeft #yMobHP // Начало полоски ХП цели get color #hpColorHigh #xMobHigh #yMobHP // У конца полоски ХП цели get color #mpColorMin #xMobLeft #yMobMP // Начало полоски МП цели if_not #mpColorMin = #ColorMP // Цель - моб или нпц if #hpColorHigh = #ColorAlive or #hpColorHigh = #ColorAlive2 // Моб здоров, можно бить return // Цель предоставлена else if #hpColorMin = #ColorAlive or #hpColorMin = #ColorAlive2 // Моб недобиток if #mob_is_far > 0 // Дальний недобиток if #AgrFarDamaged > 0 // Можно трогать return // Цель предоставлена else // Нельзя трогать set logging Дальний моб оказался недобитком alarm set #OnlyCloseSelect ( timer + #CloseOnlyTime ) // Потыкай /targetnext send escape // снимаем таргет end_if // Разобрались с дальним недобитком else // Недобиток оказался ближним return // Цель предоставлена end_if // Разобрались с ближним недобитком end_if // Разобрались с недобитком end_if // Разобрались с мобом end_if // Разобрались с таргетом else gosub check_close_exit end_if end_while // Цель не найдена, пробуем ещё раз
gosub check_close_exit // Время появления окошка вышло send $postmortem // Мародёрствуем end_while // За этот клик макроса цель не найдена
set logging За время #MaxTargeting не взялся таргет goto error_exit return // Никогда здесь не должны оказаться
/////////////////////////////////////////////////// // Захватываем последнее окно линейки :lock_window set #handleWin findwindow (Lineage II) set workwindow #handleWin wait 555 // даём время пролагаться
return /////////////////////////////////////////////////// // Открываем окно логов :set_log_on set logging clear // очищаем
/////////////////////////////////////////////////// // Находим начало и конец хп таргета :set_target_window send escape // снимаем таргеты send $self // берём таргет на себя wait 1111 // даём время пролагаться
// Синие кружочки должны быть видны set $blue findimage (0 0 1920 1024 (FindImage\L2\LTargetBlue.bmp) %Blue 2 90 1) if $blue < 90 // Если синий кружок не виден это конец set logging Не виден синий кружок после /target %self - не та панель? goto error_exit end_if
// Должно появиться раскрытое окно таргета set $target findimage (0 0 111 222 (FindImage\L2\LTargetBig.bmp) %Target 2 90 1) if $target < 90 // Если не видно раскрытого окна таргета set logging Не видно развернутое окошко таргета после /target %self goto error_exit end_if
// Ищем левый край полоски хп set #yMobHP %Target [ 1 2 ] + 20 // Абсолютный Y полоски ХП цели set #xMobLeft %Target [ 1 1 ] + 18 // Абсолютный Х начала полоски ХП цели set #x #xMobLeft get color #Color #x #yMobHP while #Color = #ColorAlive or #Color = #ColorAlive2 set #xMobLeft #x // Уточняем начало полоски ХП цели set logging Установили левую границу полоски ХП на #xMobLeft #yMobHP set #i (#i + 1) set #x (#x - 1) get color #Color #x #yMobHP // set logging Левее текущей границы в точке #x #yMobHP цвет #Color // move #x #yMobHP end_while if #i < 1 set logging Проблемы с поиском левой границы полоски ХП. Последний цвет #Color goto error_exit end_if set logging Левый край полоски ХП цели найден в точке #xMobLeft #yMobHP Итераций: #i set #xMobOver ( #xMobLeft + #overhit )
// Ищем правый край полоски хп set #xMobRight #xMobLeft set #x #xMobRight
// Быстрый поиск правой границы set #diff 512 while #diff > 1 set #diff ( #diff / 2 ) // Точность на этом шаге get color #Color #x #yMobHP if #Color = #ColorAlive or #Color = #ColorAlive2 set #x ( #x + #diff ) set logging Правую границу полоски ХП надо правее на #diff в точку #x else set #x ( #x - #diff ) set logging Правую границу полоски ХП надо левее на #diff в точку #x end_if get color #Color #x #yMobHP // set logging Будем проверять цвет #Color в точке #x #yMobHP ? // move #x #yMobHP end_while set #xMobRight #x
// Проверка наличия полоски МП ниже полоски ХП set #yMobMP (#yMobHP + 8) // Абсолютный Y полоски МП цели get color #Color #xMobLeft #yMobMP //move #xMobLeft #yMobMP // wait 4s if_not #Color = #ColorMP set logging Вместо цвета маны #ColorMP в начале полоски МП найден #Color goto error_exit end_if set logging Найдена полоска МП, скорее всего таргет действительно на себе
// Проверка стабильности правой границы set #x ( #xMobRight +1) wait 7777 get color #Color #x #yMobHP //move #x #yMobHP if #Color = #ColorAlive or #Color = #ColorAlive2 set logging ХП не полное? Правее правой границы полоски ХП цвет оказался #Color goto error_exit end_if // wait 2s
set #xMobHigh ( #xMobRight - 2 ) set logging Правый край полной полоски ХП цели найден в точке #xMobRight #yMobHP
send escape // снимаем таргет
return
/////////////////////////////////////////////////// // Проверка признака команды завершения - свернутого окна таргета :check_close_exit set $target findimage (0 0 111 222 (FindImage\L2\LTarget.bmp) %Target 2 90 1) if $target > 90 // Окошко таргета закрыто set logging Окошко таргета свёрнуто - прекращаю работу goto error_exit end_if return // Свёрнутого окна не найдено - продолжаем работу
/////////////////////////////////////////////////// // Процедура аварийного завершения скрипта :error_exit set logging open // открываем окошко с логами for #i 1 3 alarm // wait 1s end_for end_script
Пример Main Assister с якорем
Якорь: БД стоит в центре комнаты, в перерывах между танцами иногда выполняет
/target %self /targetnext
МА: Макрос выбора ближнего моба: /target БД /assist
Макрос выбора дальнего моба: /target Моб
Пример Damage Dealer с дебафом по ассисту MA
МА: Дает таргет на нового моба, после смерти на следующего
DD: Скрипт анализирует полоски хп, поэтому они должны быть видны. Если ДД на компе несколько, можно использовать просто кликер макроса /target MA /assist /attack.
Макрос выбора ближнего моба: /target MA /assist
Макрос выбора дальнего моба: /target MA2 /assist
Макрос начала атаки: /useskill debaf1 /useskill debaf2
|
|
|
|
|
  |
Ответов
Larrikin |
30.10.2012, 1:54
|
   
Apprentice
Сообщений: 120
Регистрация: 9.9.2011 Группа: Пользователи Наличность: 0
Пользователь №: 13.968
Возраст: 35

|
Какие есть способы изменять переменные во время работы скрипта? Например, в начале скрипта задается: Код set #overhit 1 // Оставлять пикселов на добивание А мне надо прямо во время работы скрипта поменять значение на 10. Нет, лучше на 20. Нет, 10 было лучше. Нет, наверное 15. Да, 15 годится для этого спота. Хорошо бы еще эти значения можно было сохранять как начальные не дожидаясь окончания работы скрипта.
|
|
|
|
Сообщений в этой теме
Larrikin Exping.txt 24.9.2011, 14:23 dodik зачем столька многа? можна кароче намнога 24.9.2011, 14:31 Larrikin выкладывай - обсудим 24.9.2011, 14:44 Larrikin + добавил сброс таргета при обнаружении дальнего н... 24.9.2011, 20:12 Larrikin + добавил раздел после падения моба
* в разделах н... 26.9.2011, 5:53 ForestGam Сегодня постараюсь опробовать) Хотя займет какое т... 28.9.2011, 11:30 persty Макрос свежевания после убийства
? 28.9.2011, 12:36 Larrikin * какие-то мелкие правки типа выноса магических чи... 28.9.2011, 12:38 ppers LTargetBlue.bmp самому рисовать надо? =)
Выложи в... 2.10.2011, 10:23 Larrikin добавил ссылку на картинки 3.10.2011, 8:05 Kashim Скрипт нереально крутой, настолько, что не смог са... 6.10.2011, 12:03 Larrikin
set #ColorAlive 1251183 // Цвет жизни Чей?
такой... 7.10.2011, 15:12 Kashim Разобрался, спасибо, и даже работало вчера вечером... 8.10.2011, 3:06 Larrikin работало вчера вечером.
ну и как? 8.10.2011, 23:51 Larrikin синие кружочки частенько бывают заняты или нестаби... 8.10.2011, 7:38 Larrikin заменил post на send, вроде работает 9.10.2011, 22:03 Larrikin Изменил ссылку на картинки, работающие в GoD 12.10.2011, 7:03 sweetLu куда картинки надо положить, чтоб работало? 13.10.2011, 12:32 DarkMaster FindImage\L2\ 13.10.2011, 13:33 Kavbyz Подскажите плиз что вобще нада делать чтоб бот зар... 13.10.2011, 15:43 Larrikin Включить? 13.10.2011, 20:32 Kavbyz
Включить?
Как включить? 14.10.2011, 2:14 Larrikin нужная кнопка обведена кружочком
http://img8.imag... 14.10.2011, 12:59 Larrikin + добавил обновление дебафа на мобе через указанны... 16.10.2011, 14:58 Larrikin Добавил пример с якорем в первый пост. 17.10.2011, 0:35 Larrikin * добавил задержку в цикл определения моба для уме... 18.10.2011, 15:16 Larrikin + добавил обязательное добивание моба 18.10.2011, 16:13 sweetLu а можешь написать скриптик на асист, для 2го окна(... 19.10.2011, 7:48 Larrikin Добавил в первый пост пример использования дд по а... 19.10.2011, 13:31 sweetLu мб ты не так меня понял, или я не понял твой скрип... 19.10.2011, 15:00 Svolota
мб ты не так меня понял, или я не понял твой скри... 18.1.2013, 15:32 Larrikin Ты хочешь, чтобы в одном окне определялись новые м... 19.10.2011, 15:12 sweetLu нет, вот я бегаю чаром сам, выделяю и бью его, на ... 19.10.2011, 15:32 Larrikin Вроде тут бегала возможность чтения переменных меж... 19.10.2011, 17:28 sweetLu ну а если так
берет асист с чара, типа /target чар... 19.10.2011, 18:02 Larrikin если видит НР
про такой вариант я и добавил пример... 19.10.2011, 18:25 sweetLu блина, не могу придумать условие, кроме как полоск... 20.10.2011, 8:34 Larrikin скрипт включен на 2м окне, а условие НР считывать ... 10.7.2012, 23:29  Zeleax
самому интересно, можно ли считывать с одного окн... 11.7.2012, 7:03 sweetLu и еще, как сделать 2ое окно активным 20.10.2011, 10:01 Larrikin + добавил параметр #overhit - сколько пикселей пол... 23.10.2011, 5:45 Larrikin * теперь проверка хп цели независима от посыла ата... 27.10.2011, 5:17 Larrikin * теперь настройка времени выбора только ближних м... 28.10.2011, 1:17 Larrikin + добавил настройку времени отката скила дебафа 31.10.2011, 4:54 Larrikin добавил принудительную установку времени между стр... 30.11.2011, 20:39 RPB пробовал асист,неопознанная команда выдает 15.4.2012, 11:36 Zeleax
пробовал асист,неопознанная команда выдает
конкре... 15.4.2012, 11:40 RPB
пробовал асист,неопознанная команда выдает
мб я ... 15.4.2012, 15:47  Larrikin ничего не работает
ну тогда комп по гарантии меняй... 15.4.2012, 23:02   barok2 Хорошо бы еще добавлять, как сработал скрипт в игр... 27.5.2012, 19:10    Zeleax
Хорошо бы еще добавлять, как сработал скрипт в иг... 27.5.2012, 19:14    Larrikin Если на него агрятся соседи, то надо бы удирать, х... 30.5.2012, 2:18 DarkMaster Считывал чтением из памяти.
Сейчас можно попробова... 11.7.2012, 10:51 4u4undra Это жесть, сижу уже час пытаюсь его запустить, рук... 17.10.2012, 18:50 Larrikin
Че за синий кружок он пытается увидить?
когда на... 18.10.2012, 12:40 DarkMaster Скрипт-сателит с промптом. Тупо делаешь цикл на вы... 30.10.2012, 2:49 BobRifo Жаль нет хотя бы маленького пошагового мануала, к... 9.12.2012, 0:56 Larrikin добавил в первый пост немного комментариев
если чт... 9.12.2012, 1:38 BobRifo Открываю FindImage, включаю скрипт, но как доходит... 11.12.2012, 0:33 Larrikin Если руками нажать клавишу, заданную как ярлык к м... 11.12.2012, 23:26 BobRifo Я конечно нуб, но это сделал, берет конечно. Думаю... 18.12.2012, 1:57 Larrikin надо картинки класть в папку самого пилота, он ище... 18.12.2012, 3:28 harddrink 0:57:36 4 (, 260): Проблема с поиском левой границ... 29.12.2012, 1:00 DarkMaster Вы в числовую переменную Х координаты пихаете Х ко... 29.12.2012, 1:08 harddrink объясните принцип как правильно сделать , благодар... 29.12.2012, 1:42 DarkMaster set #xMobLeft
Судя по названию переменной это Х ко... 29.12.2012, 2:03 harddrink такс понял вот я сделал
/////////////////////////... 29.12.2012, 2:10 DarkMaster Кнопки с координатами две. Левая - относительные, ... 29.12.2012, 2:19 harddrink только что по правой переделал таже история
3:37... 29.12.2012, 2:38 DarkMaster Странно как-то. По идее #Color вообще показываться... 29.12.2012, 2:42 harddrink 2:46:10 4 (, 227): :set_target_window
2:46:10 4 (,... 29.12.2012, 2:54 DarkMaster Судя по всему у вас неправильно заданы:
set #Color... 29.12.2012, 3:27 harddrink wait 5s
move 900, 58
wait 5s
get color #c 900, 58
... 29.12.2012, 3:30 DarkMaster Вероятно и тут путаница абсолютных и относительных... 29.12.2012, 14:34 Larrikin Все переменные, которые помечены как "Будет... 29.12.2012, 22:40 Artificial Перезалейте пак с картинками пожалуйста, а то ссыл... 21.10.2013, 16:04
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|