Author Topic: Clickermann в игре Eve Online  (Read 3629 times)

0 Members and 1 Guest are viewing this topic.

twyli

  • Зашел в гости
  • *
  • Posts: 1
    • View Profile
Clickermann в игре Eve Online
« on: October 16, 2017, 06:09:36 PM »
Вот мои текущие наброски  для скрипта автоматического майнинга.

Рабочее окно в Еве

[spoiler]
[/spoiler]
красным обведены места, где скрипт проверяет цвета

Если убрать основной массив кликов и нажатий клавиш, заменив их описанием, оставив только иерархию и условия

Code: [Select]
PRINT ("Start scenario")
thread(miner,1)
   setthread(gohome,2)
   //// Вход в варп режим - прыжок к поясу астероида
   WAIT(10)
   LOGWRITE(" вход в варп ")
   
   $check1=0          // Если пиксель белый (1) - варп закончен, выходим из цикла
   WHILE($check1=0)
      getscreen
      if(pxl(835,78)=16777215)
         $check1=1
         WAITMS(500)
      else
         waitms(500)
      end_if
   end_cyc
   LOGWRITE(" выход с варпа ")
   
   point:
   ////Подлетаем к Астероиду
   LOGWRITE(" Летим к астеру ")
   $check2=0 //  Если пиксель белый (2) - корабль возле астероида, выходим из цикла
   WHILE($check2=0)
      getscreen
      if(pxl(883,78)=16777215)
         $check2=1
         WAITMS(500)
      else
         waitms(500)
      end_if
   end_cyc
   LOGWRITE(" прилетел ")
   
   //==== Mining - Анализ прицела
   // мы должны быть возле астероида и центральный пиксель прицела - белый
   setthread(gohome,1)//activate gohome  - контроль пикселей 4,5 - ранили или отсек для руды заполнен, то сваливаем
   getscreen
   If (pxl(883,78)=16777215) // Если прицел белый
      // захватываем цель, активируем орудия копания - после захвата прицела центральный пиксель стал красным
      Wait(61)  // 1 цикл копания 60 сек
      $check3=0  // пока пиксель остается красным - идёт процес копания, просто ждём
      WHILE($check3=0)
         getscreen
         if(pxl(883,78)!1184511)
            $check3=1
            WAIT(10)
         else // если прицел не красный - значит астероид выкопан, переходим к метке - захват новой цели.
            waitms(500)
            goto(point) // перезахват цели
         end_if
      end_cyc
   else // если прицел не белый
      waitms(500)
      goto(point) // перезахват цели
   end_if
end_thread

thread(gohome,0) // Станет активным, когда корабль выйдет из варпа в поясе астероидов
   waitms(100)
   $check5=0
   while($check5=0)
      getscreen
      If((pxl(698,618)!13619151)|(Pxl(290,640)=6507777)) // Ранен или заполнен - Пиксель индикатора брои НЕ белый ИЛИ пиксель в отсеке руды СИНИЙ
         $check5=1
         waitms(500)
         setthread(miner,2) // ОТКЛЮЧАЕМ ПОТОК МАЙНЕР
         //// Варп + вход в док
         Wait(10)
         
         $check4=0 //Если буква [i] не белая - значит входим в док
         WHILE($check4=0)
            getscreen
            if(pxl(983,78)!16777215)
               $check4=1
               WAITMS(500)
            else
               waitms(500)
            end_if
         end_cyc
         
         LOGWRITE("Вход в док")
         wait(15)
         //// выгружаем руду, выходим с дока
         wait(15) // Исходное состояние
         setthread(miner,1)
      else
         wait(5)
      end_if
   end_cyc
end_thread
waitms(100)

//===Restart
$time=0   // Ева перегружает сервера в 14-00 по моему времени
while($time=0)
   if($_time_h=13)&if($_time_m=55) // если 13:55
      $time=1
      setthread(miner,2)
      setthread(gohome,2)
      WAIT(2100) //35m перезагрузка серверов
      // закрываем окно с игрой, окрываем лаунчер, запускаем игру, ждем
      // делаем порядок в игровом окне
   else
      wait(10)
   end_if
end_cyc
Полный текст - в прикреплённом файле.
Сейчас он почему-то застрял на выходе из варпа - даже когда контрольный пиксель стал белым, он ничего не делает.
Нужно ли контроль времени выносить в отдельный поток?
Выпрыгнет ли гото из указанных мест? или как можно переписать чтобы не было гото?
Что ещё нужно/можно изменить?
« Last Edit: October 16, 2017, 06:12:05 PM by twyli »

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: Clickermann в игре Eve Online
« Reply #1 on: October 16, 2017, 09:54:08 PM »
Комплексное условие правильно пишется не так
Code: (clickermann) [Select]
if($_time_h=13)&if($_time_m=55) // если 13:55а вот так!
Code: (clickermann) [Select]
if(($_time_h=13)&($_time_m=55)) // если 13:55
А еще в версии 4.12 кликера есть баг потоков. Если остановить поток setthread(miner,2), то после запуска setthread(miner,1) в этом потоке перестает воспроизводиться первая строка.
Что бы это обойти достаточно в начале потока написать что то вроде WAITMS(0)