| 
		
	
	
	
	
	   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    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  
 
        				  
  | 
 |