Author Topic: помогите доработать код для игры Lineage  (Read 2135 times)

0 Members and 1 Guest are viewing this topic.

Sop

  • Зашел в гости
  • *
  • Posts: 7
  • копий много, оригинал один
    • View Profile
Доброго времени суток!
столкнулся с проблемой скрипт работает, но есть незначительные траблы.  за основу взять код http://crapware.aidf.org/forum/index.php?topic=82.msg897#msg897, переделанный на более свежие версии кликера+ вместо мыши используется клава.
моя версия кода
Code: [Select]
$Count     = 3   // Кол-во перебираемых таргетов
$Skil      = 1   // Бить только скилом (1-1)
$Delay     = 0   // Задержка на респ мобов
$CastDelay = 0   // Задержка между кастами
$IsaHeal   = 0   // Сперва таргет на себя, потом хил
$Run       = 5  // Количество полу-секунд добежать до монстра и нанести удар
$WaitSkil  = 0   // Ждать каста 1-го скила (секунд, если 0 - не ждать)


$Buf1      = 1800
$Buf2      = 300
$Buf3      = 900
$Buf4      = 90
$Buf5      = 1200      // 1100 карамелька
//$Buf6      = 1200      // 75 карамелька
//$Buf7      = 1200
//$Buf8      = 1200
//$Buf9      = 1200
//$BufA      = 150
//$BufB      = 150
//$BufC      = 150
//$Har11     = 0
//$Har12     = 1200     // 1100 карамелька
//$Har13     = 0
//$Har21     = 0
//$Har22     = 0
//$Har23     = 0

// ********************************************************************
// Дальше настроек нет и править только с разрешения Папы Римского!
// ********************************************************************

$Attack     = 0 // Вид атаки
$Target     = 0 // Текущий номер таргета
$Next       = 0 // Нужна ли атака ближайшего?
$TargetOk   = 0 // До цели добежали?

//$LastBuff1  = $_time_t
//$LastBuff2  = $LastBuff1
//$LastBuff3  = $LastBuff1
//$LastBuff4  = $LastBuff1
//$LastBuff5  = $LastBuff1
//$LastBuff6  = $LastBuff1
//$LastBuff7  = $LastBuff1
//$LastBuff8  = $LastBuff1
//$LastBuff9  = $LastBuff1
//$LastBuffA  = $LastBuff1
//$LastBuffB  = $LastBuff1
//$LastBuffC  = $LastBuff1
//$LastHarm11 = $LastBuff1
//$LastHarm12 = $LastBuff1
//$LastHarm13 = $LastBuff1
//$LastHarm21 = $LastBuff1
//$LastHarm22 = $LastBuff1
//$LastHarm23 = $LastBuff1

// ********************************************************************
// Алгоритм
// ********************************************************************
// 1. Выбираем очередной таргет (ближайший, потом по списку)
// 2. Выбираем вид атаки
// 3. Атакуем
// 4. Определяем достижимость (добежали и стукнули)
// 5. Определяем убийство (добили до минимума)
// 6. Свип и дроп
// 7. Прыг в п.1
// ********************************************************************



GETSCREEN
$Col_1 = PXL (615,56)
$Col_2 = PXL (615,54)
$Col_3 = PXL (30,84)
$Col_4 = PXL (30,86)
$Col_5 = PXL (763,56)
$Col_6 = PXL (763,54)
$Col_7 = PXL (152,72)
$Col_8 = PXL (152,74)
//$Col_S = PXL (407,754)





// --------------------------------------------------------------
// SUB: SelectTarget - Выбор цели атаки
// --------------------------------------------------------------

sub(SelectTarget)
   $CountPause = 0
   loop1:
   // проверка наличия достижимого ближайшего
   if (($Next=1) & ($TargetOk=0))
      $Next = 0
   end_if
   WAITMS(300)
   KEYPRESS(#2)
   WAITMS(800)
   GETSCREEN
   if( (PXL(615,56)=$Col_1) & (PXL(615,54)=$Col_2))
      $Next = 1
      GOTO(ret1)
   end_if
   // проверка следующего ------------------------------------------------------
   proc1:
   WAITMS($Delay+10) // проверка задержки на респ
   INC($CountPause)
   if ($CountPause>10)
      $CountPause = 0
      WAITMS(1500)
   end_if
   
   INC($Target)
   if($Target>$Count)
      $Target = 1
   end_if
   $x = ($Target+1)
   WAITMS(500)
   KEYPRESS(#F$x)
   WAITMS(800)
   GETSCREEN
   if( (PXL(615,56)!$Col_1) | (PXL(615,54)!$Col_2))
      GOTO(loop1)
   end_if
   ret1:
end_sub

// --------------------------------------------------------------
// SUB : SelectAttack - Определение режима атаки
// --------------------------------------------------------------

sub(SelectAttack)
   $Attack = 0
   GETSCREEN
   if( (PXL(30,84)=$Col_3) & (PXL(30,86)=$Col_4))
      $Attack = 1
   end_if
end_sub

// --------------------------------------------------------------
// SUB: Attack - Выбор режима атаки и атака
// --------------------------------------------------------------

sub(Attack)
   if (($Attack = 1) | ($Skil = 1))
      $Attack = 0
      WAITMS(200)
      KEYPRESS(#3)
      WAITMS(300)
   else
      WAITMS(200)
      KEYPRESS(#1)
      WAITMS(300)
   end_if
   if ($CastDelay > 0)
      WAITMS(($CastDelay+1)*1000)
   end_if
end_sub

// --------------------------------------------------------------
// SUB: AttackОк - Проверка первой атаки, прошла или нет
// --------------------------------------------------------------

sub(AttackOk)
   $TargetOk = 0
   $Cnt = $Run
   loop2:
   if ($Cnt<1)
      GOTO(ret2)
   end_if
   GETSCREEN
   if( (PXL(763,56)!$Col_5) | (PXL(763,54)!$Col_6))
      $TargetOk = 1
      GOTO(ret2)
   else
      WAITMS(500)
      $Cnt = $Cnt - 1
      KEYPRESS(#3)
   end_if
   //sub(Attack)
   GOTO(loop2)
end_if
ret2:
end_sub

// --------------------------------------------------------------
// SUB: DeathОк - Определяем убийство монстра + 1сек
// --------------------------------------------------------------

sub(DeathOk)
$CntDeath = 0
loop3:
//sub(Attack)
GETSCREEN
if( (PXL(615,56)!$Col_1) | (PXL(615,54)!$Col_2))
   WAITMS(500)
   //sub(Attack)
   GOTO(ret3)
else
   WAITMS(500)
   INC($CntDeath)
   if ($CntDeath>30)
      GOTO(ret3)
   end_if
   GOTO(loop3)
end_if
ret3:
end_sub

sub(Heal)
GETSCREEN
if( (PXL(152,72)!$Col_7) | (PXL(152,74)!$Col_8))
   if ($IsaHeal = 1)
   end_if
   WAITMS(500)
   KEYPRESS(103)
   WAITMS(500)
   if ($IsaHeal = 1)
      WAITMS(500)
      KEYPRESS(103)
      WAITMS(500)
   end_if
end_if
end_sub

sub(Buff)
//$Flag = 0
if ($Buf1 > 0)
   if (($_time_t - $LastBuff1) > $Buf1)
      $LastBuff1 = $_time_t
      WAITMS(100)
      KEYPRESS(97)
      WAITMS(700)
      //$Flag = 1
   end_if
end_if
if ($Buf2 > 0)
   if (($_time_t - $LastBuff2) > $Buf2)
      $LastBuff2 = $_time_t
      WAITMS(100)
      KEYPRESS(98)
      WAITMS(700)
      //$Flag = 1
   end_if
end_if
if ($Buf3 > 0)
   if (($_time_t - $LastBuff3) > $Buf3)
      $LastBuff3 = $_time_t
      WAITMS(100)
      KEYPRESS(99)
      WAITMS(700)
      //$Flag = 1
   end_if
end_if
if ($Buf4 > 0)
   if (($_time_t - $LastBuff4) > $Buf4)
      $LastBuff4 = $_time_t
      WAITMS(100)
      KEYPRESS(100)
      WAITMS(700)
      //$Flag = 1
   end_if
end_if
if ($Buf5 > 0)
   if (($_time_t - $LastBuff5) > $Buf5)
      $LastBuff5 = $_time_t
      WAITMS(100)
      KEYPRESS(#NumPad 5)
      WAITMS(700)
      //$Flag = 1
   end_if
end_if

end_sub

sub(WaitAttack)
if ($WaitSkil > 0)
   $CntWait = 0
   loopwait:
   GETSCREEN
   LOGWRITE(PXL(407,754))
   if(PXL(407,754) = $Col_S)
      WAITMS(10)
      INC($CntWait)
      if ($CntWait < $WaitSkil*100)
         GOTO(loopwait)
      end_if
   end_if
end_if
end_sub

Begin:

Buff()
Heal()
// 1. Выбираем очередной таргет

SelectTarget()

// 2. Выбираем вид атаки

SelectAttack()

// 3. Атакуем

Attack()

// 4. Определяем достижимость


AttackOk()

if ($TargetOk = 0)
GOTO(Begin)
end_if

// 5. Определяем убийство

DeathOk()


// 7. По циклу

GOTO(Begin)
на описания и сноски не обращаем внимания.
буду рад любой помощи.
Трудно найти в тёмной комнате чёрную кошку особенно, если её там нет!

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: помогите доработать код для игры Lineage
« Reply #1 on: April 23, 2017, 12:14:04 PM »
Стока 183, лишний end_if

Code: (clickermann) [Select]
sub(AttackOk)
   $TargetOk = 0
   $Cnt = $Run
   loop2:
   if ($Cnt<1)
      GOTO(ret2)
   end_if
   GETSCREEN
   if( (PXL(763,56)!$Col_5) | (PXL(763,54)!$Col_6))
      $TargetOk = 1
      GOTO(ret2)
   else
      WAITMS(500)
      $Cnt = $Cnt - 1
      KEYPRESS(#3)
   end_if
   //sub(Attack)
   GOTO(loop2)
   // end_if   ========= Лишнее окончание
   ret2:
end_sub

Sop

  • Зашел в гости
  • *
  • Posts: 7
  • копий много, оригинал один
    • View Profile
Re: помогите доработать код для игры Lineage
« Reply #2 on: April 23, 2017, 12:25:03 PM »
спасибо исправил, но все  таки эта часть кода обрабатывается не очень удачно. проверка доступности моба, если моб не виден или где за стеной продолжается попытка атаковать.  хотя должен сбросить таргет.
Трудно найти в тёмной комнате чёрную кошку особенно, если её там нет!