|
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 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 Larrikin Какие есть способы изменять переменные во время ра... 30.10.2012, 1:54 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
|
|