Author Topic: помогите адаптировать код Танки онлайн  (Read 4140 times)

0 Members and 1 Guest are viewing this topic.

Karabas

  • Освоившийся
  • **
  • Posts: 90
    • View Profile
есть старенький. но в условиях отсутствия. какой либо альтернативы, код для бота танкионлайн
помогите убрать из кода скрипт отвечающий за движение корпуса (єто клавиши "w""a""s""d" или стрелочки)
и еще башня крутится ориентируясь на цвет пикселя. не могу понять алгоритм работы
Code: (clickermann) [Select]
// $w - время поворота башни на угол 90 градусов (в миллисекундах)сюда вводим значение полученное в коде настройки
//$w=1785  // смоки м0 убираем  двойной слеш(//) у пушки которую мы выбрали и меняем на наше значение
//$w=1442  // смоки м2
//$w=1130  // смоки м3 
//$w=1328  // твинс м1
//$w=1164  // твинс м
//$w=1030  // твинс м3
//$w=2900  // рельса м0 
//$w=2525  // рельса м1
//$w=1556 // рельса м3
//$w=1836  // рик м0
//$w=1241  // рик м3
//$w=2200  // гром м0
//$w=2030  // гром м1
 
$x0=0
$yt=0
$x3=1020   
$yb=800   
 
$h = wndfind("FlashEx Client v2.1.2  ( forum333.com )")
//$h = wndfind("Tanki Online - Google Chrome")
 
$x1=$x3/3
$x2=$x1+$x1
$pcolor= 1883722
$t=$_time_t
//$ycolor=1034712
IF($h > 0)
wndpos($h, $x0,$yt)
wndsize($h, $x3, $yb)
WNDSTATE ($h,0)
WNDSTATE ($h,1)
LCLICK ($x3/2, $yb/2)
END_IF
LOGCLEAR
 
while ($h>0)
//---------------------------------------------
SUB(tg)
$r=$w/18
IF ($xc<$x3/2)
$tg=1000*($x3/2-$xc)/($yb-$yc)
else
$tg=1000*($xc-$x3/2)/($yb-$yc)       
END_IF
IF ($xc=$x3/2)
$tg=0
$r=0
$abc=0
END_IF
IF ($tg>0 & $tg<45)
$r=$r/2
$abc=2
END_IF
IF ($tg>44 & $tg<88)
$r=$r
$abc=5
END_IF
IF ($tg>87 & $tg<133)
$r=$r+$r/2
$abc=7
END_IF
IF ($tg>132 & $tg<177)
$r=$r*2
$abc=10
END_IF
IF ($tg>176 & $tg<269)
$r=$r*3
$abc=15
END_IF
IF ($tg>268 & $tg<365)
$r=$r*4
$abc=20
END_IF
IF ($tg>364 & $tg<467)
$r=$r*5
$abc=25
END_IF
IF ($tg>466 & $tg<578)
$r=$r*6
$abc=30
END_IF
IF ($tg>577 & $tg<701)
$r=$r*7
$abc=35
END_IF
IF ($tg>700 & $tg<840)
$r=$r*8
$abc=40
END_IF
IF ($tg>839 & $tg<1001)
$r=$r*9
$abc=45
END_IF
IF ($tg>1000 & $tg<1193)
$r=$r*10
$abc=50
END_IF
IF ($tg>1192 & $tg<1429)
$r=$r*11
$abc=55
END_IF
IF ($tg>1428 & $tg<1733)
$r=$r*12
$abc=60
END_IF
IF ($tg>1732 & $tg<2146)
$r=$r*13
$abc=65
END_IF
IF ($tg>2145 & $tg<2748)
$r=$r*14
$abc=70
END_IF
IF ($tg>2747 & $tg<3733)
$r=$r*15
$abc=75
END_IF
IF ($tg>3732 & $tg<5672)
$r=$r*16
$abc=80
END_IF
IF ($tg>5671 & $tg<11431)
$r=$r*17
$abc=85
END_IF
IF (($tg>11430 )  | ($tg<0))
$r=$r*18
$abc=90
END_IF
end_sub
//---------------------------------------------
SUB(target)
while  (($xc<$x3/2) | ($xc>$x3/2) & ($xc>0))
IF  (($xc<$x3/2) & ($xc>0))
GOSUB(tg)
keydown (#z)
waitms ($r)
keyup (#z)
  Getscreen
IF_PIXEL_IN ($x1,$yc-30,$x2,$yc+30, $pcolor)
$xc=$_return1+10
$yc=$_return2
else
$xc=0
END_IF
END_IF
IF  (($xc>$x3/2) & ($xc>0))
GOSUB(tg)
keydown (#x)
waitms ($r)
keyup (#x)
  Getscreen
IF_PIXEL_IN ($x1,$yc-30,$x2,$yc+30, $pcolor)
$xc=$_return1+10
$yc=$_return2
else
$xc=0
END_IF
END_IF
IF ($abc < 10 )
keydown (#SPACE)
else
keyup (#SPACE)
End_IF
end_cyc
end_sub
//----------------------------------------------
m1:
keyup (#SPACE)
IF ($_time_t-$t>60)
$t=$_time_t
wndpos($h, $x0,$yt)
wndsize($h, $x3, $yb)
WNDSTATE ($h,0)
WNDSTATE ($h,1)
LCLICK ($x3/2, $yb/2)
END_IF
Getscreen
$zone_l=pxlcount ($x0,$yt,$x1,$yb, $pcolor)
$zone_c=pxlcount ($x1,$yt,$x2,$yb, $pcolor)
$zone_r=pxlcount ($x2,$yt,$x3,$yb, $pcolor)
IF (($zone_c=0) & ($zone_l>0))
IF_PIXEL_IN ($x0,$yt,$x1,$yb, $pcolor)
$xc=$_return1+10
$yc=$_return2
GOSUB(tg)
END_IF
keydown (#z)
waitms ($r)
keyup (#z)
goto(m1)
END_IF
IF (($zone_c=0) & ($zone_r>0))
IF_PIXEL_IN ($x2,$yt,$x3,$yb, $pcolor)
$xc=$_return1+10
$yc=$_return2
GOSUB(tg)
END_IF
keydown (#x)                             
waitms ($r)
keyup (#x)
goto(m1)
END_IF
IF ($zone_c>0)
IF_PIXEL_IN ($x1,$yt,$x2,$yb, $pcolor)
$xc=$_return1+10
$yc=$_return2
$i=0
END_IF
IF_PIXEL_IN ($x1,$yb/3,$x2,$yb, $pcolor)
$xc=$_return1+10
$yc=$_return2
$i=0
END_IF
GOSUB(target)
END_IF
 
IF (($zone_c=0) & ($zone_r=0) & ($zone_l=0))
$zx=RNDFROM (67,88, 90)
$ad=RNDFROM (65,68)
IF ($i<3)
$i=$i+1
keydown (#w)
keydown ($zx)
keydown ($ad)
waitms ($w/18*12)
keyup ($ad)
keyup ($zx)
waitms ($w/18*9) 
keyup (#w)
else
$i=0
keydown (#s)
keydown (#c)
keydown ($ad)
waitms ($w+$w/2)
keyup ($ad)
keyup (#s)
keyup (#c)
END_IF
END_IF
goto(m1)   
end_cyc
« Last Edit: March 05, 2019, 05:49:18 PM by Oraven »

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: помогите адаптировать код
« Reply #1 on: March 05, 2019, 05:04:18 PM »
У тебя какая версия кликера? Вызов GOSUB работает не выше 4.8 версии.
При том скрипт не корректен. Описания подпрограмм не могут быть вложены в циклы или условия!

Так не правильно
Code: (clickermann) [Select]
IF ($tg>0 & $tg<45)
Так правильно
Code: (clickermann) [Select]
IF (($tg>0) & ($tg<45))
« Last Edit: March 05, 2019, 05:09:02 PM by Oraven »

Karabas

  • Освоившийся
  • **
  • Posts: 90
    • View Profile
Re: помогите адаптировать код
« Reply #2 on: March 05, 2019, 05:21:50 PM »
а есть где взять версию 4.6 по моему под нее писали

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: помогите адаптировать код
« Reply #3 on: March 05, 2019, 05:47:21 PM »
а есть где взять версию 4.6 по моему под нее писали

Этого не требуется, код легко поправить под последнюю версию. 4.13
Заодно исправил ошибки.
Code: (clickermann) [Select]
// $w - время поворота башни на угол 90 градусов (в миллисекундах)сюда вводим значение полученное в коде настройки
//$w=1785  // смоки м0 убираем  двойной слеш(//) у пушки которую мы выбрали и меняем на наше значение
//$w=1442  // смоки м2
//$w=1130  // смоки м3
//$w=1328  // твинс м1
//$w=1164  // твинс м
//$w=1030  // твинс м3
//$w=2900  // рельса м0
//$w=2525  // рельса м1
//$w=1556 // рельса м3
//$w=1836  // рик м0
//$w=1241  // рик м3
//$w=2200  // гром м0
//$w=2030  // гром м1

$x0=0
$yt=0
$x3=1020
$yb=800

//=============================================


SUB(tg)
   $r=$w/18
   IF ($xc<$x3/2)
      $tg=1000*($x3/2-$xc)/($yb-$yc)
   else
      $tg=1000*($xc-$x3/2)/($yb-$yc)
   END_IF
   IF ($xc=$x3/2)
      $tg=0
      $r=0
      $abc=0
   END_IF
   IF (($tg>0) & ($tg<45))
      $r=$r/2
      $abc=2
   END_IF
   IF (($tg>44) & ($tg<88))
      $r=$r
      $abc=5
   END_IF
   IF (($tg>87) & ($tg<133))
      $r=$r+$r/2
      $abc=7
   END_IF
   IF (($tg>132) & ($tg<177))
      $r=$r*2
      $abc=10
   END_IF
   IF (($tg>176) & ($tg<269))
      $r=$r*3
      $abc=15
   END_IF
   IF (($tg>268) & ($tg<365))
      $r=$r*4
      $abc=20
   END_IF
   IF (($tg>364) & ($tg<467))
      $r=$r*5
      $abc=25
   END_IF
   IF (($tg>466) & ($tg<578))
      $r=$r*6
      $abc=30
   END_IF
   IF (($tg>577) & ($tg<701))
      $r=$r*7
      $abc=35
   END_IF
   IF (($tg>700) & ($tg<840))
      $r=$r*8
      $abc=40
   END_IF
   IF (($tg>839) & ($tg<1001))
      $r=$r*9
      $abc=45
   END_IF
   IF (($tg>1000) & ($tg<1193))
      $r=$r*10
      $abc=50
   END_IF
   IF (($tg>1192) & ($tg<1429))
      $r=$r*11
      $abc=55
   END_IF
   IF (($tg>1428) & ($tg<1733))
      $r=$r*12
      $abc=60
   END_IF
   IF (($tg>1732) & ($tg<2146))
      $r=$r*13
      $abc=65
   END_IF
   IF (($tg>2145) & ($tg<2748))
      $r=$r*14
      $abc=70
   END_IF
   IF (($tg>2747) & ($tg<3733))
      $r=$r*15
      $abc=75
   END_IF
   IF (($tg>3732) & ($tg<5672))
      $r=$r*16
      $abc=80
   END_IF
   IF (($tg>5671) & ($tg<11431))
      $r=$r*17
      $abc=85
   END_IF
   IF (($tg>11430) | ($tg<0))
      $r=$r*18
      $abc=90
   END_IF
end_sub
//---------------------------------------------
SUB(target)
   while  (($xc<$x3/2) | ($xc>$x3/2) & ($xc>0))
      IF  (($xc<$x3/2) & ($xc>0))
         tg()
         keydown (#z)
         waitms ($r)
         keyup (#z)
         Getscreen
         IF_PIXEL_IN ($x1,$yc-30,$x2,$yc+30, $pcolor)
            $xc=$_return1+10
            $yc=$_return2
         else
            $xc=0
         END_IF
      END_IF
      IF  (($xc>$x3/2) & ($xc>0))
         tg()
         keydown (#x)
         waitms ($r)
         keyup (#x)
         Getscreen
         IF_PIXEL_IN ($x1,$yc-30,$x2,$yc+30, $pcolor)
            $xc=$_return1+10
            $yc=$_return2
         else
            $xc=0
         END_IF
      END_IF
      IF ($abc < 10)
         keydown (#SPACE)
      else
         keyup (#SPACE)
      End_IF
   end_cyc
end_sub

//=============================================

$h = wndfind("FlashEx Client v2.1.2  ( forum333.com )")
//$h = wndfind("Tanki Online - Google Chrome")

$x1=$x3/3
$x2=$x1+$x1
$pcolor=1883722
$t=$_time_t
//$ycolor=1034712
IF($h > 0)
   wndpos($h, $x0,$yt)
   wndsize($h, $x3,$yb)
   WNDSTATE ($h,0)
   WNDSTATE ($h,1)
   LCLICK (int($x3/2),int($yb/2))
END_IF
LOGCLEAR

while ($h>0)
   m1:
   keyup (#SPACE)
   IF ($_time_t-$t>60)
      $t=$_time_t
      wndpos($h, $x0,$yt)
      wndsize($h, $x3,$yb)
      WNDSTATE ($h,0)
      WNDSTATE ($h,1)
      LCLICK (int($x3/2),int($yb/2))
   END_IF
   Getscreen
   $zone_l=pxlcount ($x0,$yt,$x1,$yb, $pcolor)
   $zone_c=pxlcount ($x1,$yt,$x2,$yb, $pcolor)
   $zone_r=pxlcount ($x2,$yt,$x3,$yb, $pcolor)
   IF (($zone_c=0) & ($zone_l>0))
      IF_PIXEL_IN ($x0,$yt,$x1,$yb, $pcolor)
         $xc=$_return1+10
         $yc=$_return2
         tg()
      END_IF
      keydown (#z)
      waitms ($r)
      keyup (#z)
      goto(m1)
   END_IF
   IF (($zone_c=0) & ($zone_r>0))
      IF_PIXEL_IN ($x2,$yt,$x3,$yb, $pcolor)
         $xc=$_return1+10
         $yc=$_return2
         tg()
      END_IF
      keydown (#x)
      waitms ($r)
      keyup (#x)
      goto(m1)
   END_IF
   IF ($zone_c>0)
      IF_PIXEL_IN ($x1,$yt,$x2,$yb, $pcolor)
         $xc=$_return1+10
         $yc=$_return2
         $i=0
      END_IF
      IF_PIXEL_IN ($x1,$yb/3,$x2,$yb, $pcolor)
         $xc=$_return1+10
         $yc=$_return2
         $i=0
      END_IF
      target()
   END_IF
   
   IF (($zone_c=0) & ($zone_r=0) & ($zone_l=0))
      $zx=RNDFROM (67,88,90)
      $ad=RNDFROM (65,68)
      IF ($i<3)
         $i=$i+1
         keydown (#w)
         keydown ($zx)
         keydown ($ad)
         waitms (int($w/18*12))
         keyup ($ad)
         keyup ($zx)
         waitms (int($w/18*9))
         keyup (#w)
      else
         $i=0
         keydown (#s)
         keydown (#c)
         keydown ($ad)
         waitms (int($w+$w/2))
         keyup ($ad)
         keyup (#s)
         keyup (#c)
      END_IF
   END_IF
   goto(m1)
end_cyc

Karabas

  • Освоившийся
  • **
  • Posts: 90
    • View Profile
благодарочка

Karabas

  • Освоившийся
  • **
  • Posts: 90
    • View Profile
башня крутит и стреляет а ноги едут куда хотят.... как отключит езду танка?

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
башня крутит и стреляет а ноги едут куда хотят.... как отключит езду танка?

Думаю так.
За комментировал нажатия WSAD
Code: (clickermann) [Select]
// $w - время поворота башни на угол 90 градусов (в миллисекундах)сюда вводим значение полученное в коде настройки
//$w=1785  // смоки м0 убираем  двойной слеш(//) у пушки которую мы выбрали и меняем на наше значение
//$w=1442  // смоки м2
//$w=1130  // смоки м3
//$w=1328  // твинс м1
//$w=1164  // твинс м
//$w=1030  // твинс м3
//$w=2900  // рельса м0
//$w=2525  // рельса м1
//$w=1556 // рельса м3
//$w=1836  // рик м0
//$w=1241  // рик м3
//$w=2200  // гром м0
//$w=2030  // гром м1

$x0=0
$yt=0
$x3=1020
$yb=800

//=============================================


SUB(tg)
   $r=$w/18
   IF ($xc<$x3/2)
      $tg=1000*($x3/2-$xc)/($yb-$yc)
   else
      $tg=1000*($xc-$x3/2)/($yb-$yc)
   END_IF
   IF ($xc=$x3/2)
      $tg=0
      $r=0
      $abc=0
   END_IF
   IF (($tg>0) & ($tg<45))
      $r=$r/2
      $abc=2
   END_IF
   IF (($tg>44) & ($tg<88))
      $r=$r
      $abc=5
   END_IF
   IF (($tg>87) & ($tg<133))
      $r=$r+$r/2
      $abc=7
   END_IF
   IF (($tg>132) & ($tg<177))
      $r=$r*2
      $abc=10
   END_IF
   IF (($tg>176) & ($tg<269))
      $r=$r*3
      $abc=15
   END_IF
   IF (($tg>268) & ($tg<365))
      $r=$r*4
      $abc=20
   END_IF
   IF (($tg>364) & ($tg<467))
      $r=$r*5
      $abc=25
   END_IF
   IF (($tg>466) & ($tg<578))
      $r=$r*6
      $abc=30
   END_IF
   IF (($tg>577) & ($tg<701))
      $r=$r*7
      $abc=35
   END_IF
   IF (($tg>700) & ($tg<840))
      $r=$r*8
      $abc=40
   END_IF
   IF (($tg>839) & ($tg<1001))
      $r=$r*9
      $abc=45
   END_IF
   IF (($tg>1000) & ($tg<1193))
      $r=$r*10
      $abc=50
   END_IF
   IF (($tg>1192) & ($tg<1429))
      $r=$r*11
      $abc=55
   END_IF
   IF (($tg>1428) & ($tg<1733))
      $r=$r*12
      $abc=60
   END_IF
   IF (($tg>1732) & ($tg<2146))
      $r=$r*13
      $abc=65
   END_IF
   IF (($tg>2145) & ($tg<2748))
      $r=$r*14
      $abc=70
   END_IF
   IF (($tg>2747) & ($tg<3733))
      $r=$r*15
      $abc=75
   END_IF
   IF (($tg>3732) & ($tg<5672))
      $r=$r*16
      $abc=80
   END_IF
   IF (($tg>5671) & ($tg<11431))
      $r=$r*17
      $abc=85
   END_IF
   IF (($tg>11430) | ($tg<0))
      $r=$r*18
      $abc=90
   END_IF
end_sub
//---------------------------------------------
SUB(target)
   while  (($xc<$x3/2) | ($xc>$x3/2) & ($xc>0))
      IF  (($xc<$x3/2) & ($xc>0))
         tg()
         keydown (#z)
         waitms ($r)
         keyup (#z)
         Getscreen
         IF_PIXEL_IN ($x1,$yc-30,$x2,$yc+30, $pcolor)
            $xc=$_return1+10
            $yc=$_return2
         else
            $xc=0
         END_IF
      END_IF
      IF  (($xc>$x3/2) & ($xc>0))
         tg()
         keydown (#x)
         waitms ($r)
         keyup (#x)
         Getscreen
         IF_PIXEL_IN ($x1,$yc-30,$x2,$yc+30, $pcolor)
            $xc=$_return1+10
            $yc=$_return2
         else
            $xc=0
         END_IF
      END_IF
      IF ($abc < 10)
         keydown (#SPACE)
      else
         keyup (#SPACE)
      End_IF
   end_cyc
end_sub

//=============================================

$h = wndfind("FlashEx Client v2.1.2  ( forum333.com )")
//$h = wndfind("Tanki Online - Google Chrome")

$x1=$x3/3
$x2=$x1+$x1
$pcolor=1883722
$t=$_time_t
//$ycolor=1034712
IF($h > 0)
   wndpos($h, $x0,$yt)
   wndsize($h, $x3,$yb)
   WNDSTATE ($h,0)
   WNDSTATE ($h,1)
   LCLICK (int($x3/2),int($yb/2))
END_IF
LOGCLEAR

while ($h>0)
   m1:
   keyup (#SPACE)
   IF ($_time_t-$t>60)
      $t=$_time_t
      wndpos($h, $x0,$yt)
      wndsize($h, $x3,$yb)
      WNDSTATE ($h,0)
      WNDSTATE ($h,1)
      LCLICK (int($x3/2),int($yb/2))
   END_IF
   Getscreen
   $zone_l=pxlcount ($x0,$yt,$x1,$yb, $pcolor)
   $zone_c=pxlcount ($x1,$yt,$x2,$yb, $pcolor)
   $zone_r=pxlcount ($x2,$yt,$x3,$yb, $pcolor)
   IF (($zone_c=0) & ($zone_l>0))
      IF_PIXEL_IN ($x0,$yt,$x1,$yb, $pcolor)
         $xc=$_return1+10
         $yc=$_return2
         tg()
      END_IF
      keydown (#z)
      waitms ($r)
      keyup (#z)
      goto(m1)
   END_IF
   IF (($zone_c=0) & ($zone_r>0))
      IF_PIXEL_IN ($x2,$yt,$x3,$yb, $pcolor)
         $xc=$_return1+10
         $yc=$_return2
         tg()
      END_IF
      keydown (#x)
      waitms ($r)
      keyup (#x)
      goto(m1)
   END_IF
   IF ($zone_c>0)
      IF_PIXEL_IN ($x1,$yt,$x2,$yb, $pcolor)
         $xc=$_return1+10
         $yc=$_return2
         $i=0
      END_IF
      IF_PIXEL_IN ($x1,$yb/3,$x2,$yb, $pcolor)
         $xc=$_return1+10
         $yc=$_return2
         $i=0
      END_IF
      target()
   END_IF
   
   IF (($zone_c=0) & ($zone_r=0) & ($zone_l=0))
      $zx=RNDFROM (67,88,90) // C X Z
      $ad=RNDFROM (65,68) // A D
      IF ($i<3)
         $i=$i+1
//         keydown (#w)
         keydown ($zx)
//         keydown ($ad)
         waitms (int($w/18*12))
//         keyup ($ad)
         keyup ($zx)
         waitms (int($w/18*9))
//         keyup (#w)
      else
         $i=0
//         keydown (#s)
         keydown (#c)
//         keydown ($ad)
         waitms (int($w+$w/2))
//         keyup ($ad)
//         keyup (#s)
         keyup (#c)
      END_IF
   END_IF
   goto(m1)
end_cyc

Karabas

  • Освоившийся
  • **
  • Posts: 90
    • View Profile
ща попробую

Karabas

  • Освоившийся
  • **
  • Posts: 90
    • View Profile
все равно ездит

Космич

  • Активный участник
  • ***
  • Posts: 265
    • View Profile
Он не может ездить, только рандомно крутится на месте
Code: (clickermann) [Select]
$ad=RNDFROM (65,68) // A D
«Иногда ты ваяешь до тех пор, пока до тебя не дойдёт, что именно ты делаешь.»

Karabas

  • Освоившийся
  • **
  • Posts: 90
    • View Profile
закоментировать можно єто?

Космич

  • Активный участник
  • ***
  • Posts: 265
    • View Profile
Вот именно вот эту строчку да, а остальное оказывается уже закоменченно  :D
Ну я не знаю, значит вообще не должен двигать корпус
«Иногда ты ваяешь до тех пор, пока до тебя не дойдёт, что именно ты делаешь.»

Karabas

  • Освоившийся
  • **
  • Posts: 90
    • View Profile
да ездит как бешеный

Космич

  • Активный участник
  • ***
  • Posts: 265
    • View Profile
Вот все клавиши которые он нажимает
«Иногда ты ваяешь до тех пор, пока до тебя не дойдёт, что именно ты делаешь.»