Автокликер Clickermann :: Форум

Основной раздел => Использование => Topic started by: Sop on April 23, 2017, 11:12:29 AM

Title: помогите доработать код для игры Lineage
Post by: Sop on April 23, 2017, 11:12:29 AM
Доброго времени суток!
столкнулся с проблемой скрипт работает, но есть незначительные траблы.  за основу взять код http://crapware.aidf.org/forum/index.php?topic=82.msg897#msg897 (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)
на описания и сноски не обращаем внимания.
буду рад любой помощи.
Title: Re: помогите доработать код для игры Lineage
Post by: Oraven 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
Title: Re: помогите доработать код для игры Lineage
Post by: Sop on April 23, 2017, 12:25:03 PM
спасибо исправил, но все  таки эта часть кода обрабатывается не очень удачно. проверка доступности моба, если моб не виден или где за стеной продолжается попытка атаковать.  хотя должен сбросить таргет.