Что нового

Как внутри цикла осуществить чередование кликов?

Кайгородов В. Ю.

В универе только TurboBASIC изучал и то забыл уже
Сообщения
25
Репутация
0
Версия AutoIt: v3.3.6.1.

Описание:
Код:
While 1
  Sleep ( 350 )
  Select
    Case PixelGetColor(663, 701) = $x
      Sleep ( 350 )
      MouseClick("primary", 633,601, 1, 0)                       ;пить элик
      Sleep ( '350' )
  Select 
    Case PixelGetColor(900, 620) = $s          ;Цвет начала боя
        MouseClick("primary", 705,520, 2, 0)   ;элик
        Sleep ( '150' )
    Case PixelGetColor(900, 620) = $s          ;Цвет боя
        MouseClick("primary", 973,569, 2, 0)   ;удар
        Sleep ( '150' )
        MouseClick("primary", 705,557, 2, 0)   ;элик
        Sleep ( '150' )
    Case PixelGetColor(900, 620) = $u     ;Цвет нет удара
        Sleep ( '150' )
    Case PixelGetColor(900, 620) = $v     ;Цвет нет соперника
        Sleep ( '150' )
    Case PixelGetColor(900, 620) = $w     ;Цвет убит
        Sleep ( '150' )
    Case Else
        Sleep ( '150' )
  EndSelect
    Sleep ( 550 )    
Case PixelGetColor(663, 701) = $y
        MouseClick("primary", 633,601, 2, 0)   ;закинуть в бой
        Sleep ( '150' )
WEnd

Примечания:
Строчку:
Код:
MouseClick("primary", 973,569, 2, 0)   ;удар

надо изменить таким образом чтоб происходило чередование ударов в таком порядке:
Код:
MouseClick("primary", 973,569, 2, 0)   ;удар1
MouseClick("primary", 973,539, 2, 0)   ;удар2
MouseClick("primary", 973,569, 2, 0)   ;удар3
MouseClick("primary", 973,599, 2, 0)   ;удар4
 

---Zak---

Скриптер
Сообщения
455
Репутация
120
Можно использовать:

Код:
Random

Генерирует псевдо-случайное число с плавающей точкой.
Пример:
Код:
Switch Random(1, 4, 1)
    Case 1
        MouseClick("primary", 973,569, 2, 0)   ;удар1
    Case 2
        MouseClick("primary", 973,539, 2, 0)   ;удар2
    Case 3
        MouseClick("primary", 973,569, 2, 0)   ;удар3
    Case 4
        MouseClick("primary", 973,599, 2, 0)   ;удар4
EndSwitch


PS: чуть-чуть изменил код - поменьше текста будет ;)
 
Автор
К

Кайгородов В. Ю.

В универе только TurboBASIC изучал и то забыл уже
Сообщения
25
Репутация
0
Код:
While 1
  Sleep ( 350 )
  Select
    Case PixelGetColor(663, 701) = $x
      Sleep ( 350 )
      MouseClick("primary", 633,601, 1, 0)                       ;пить элик
      Sleep ( '350' )
  Select 
    Case PixelGetColor(900, 620) = $s          ;Цвет начала боя
        MouseClick("primary", 705,520, 2, 0)   ;элик
        Sleep ( '150' )
    Case PixelGetColor(900, 620) = $s          ;Цвет боя
        Switch Random(1, 4, 1)
    Case 1
        MouseClick("primary", 973,569, 2, 0)   ;удар1
    Case 2
        MouseClick("primary", 973,539, 2, 0)   ;удар2
    Case 3
        MouseClick("primary", 973,569, 2, 0)   ;удар3
    Case 4
        MouseClick("primary", 973,599, 2, 0)   ;удар4
EndSwitch
        Sleep ( '150' )
        MouseClick("primary", 705,557, 2, 0)   ;элик
        Sleep ( '150' )
    Case PixelGetColor(900, 620) = $u     ;Цвет нет удара
        Sleep ( '150' )
    Case PixelGetColor(900, 620) = $v     ;Цвет нет соперника
        Sleep ( '150' )
    Case PixelGetColor(900, 620) = $w     ;Цвет убит
        Sleep ( '150' )
    Case Else
        Sleep ( '150' )
  EndSelect
    Sleep ( 550 )    
Case PixelGetColor(663, 701) = $y
        MouseClick("primary", 633,601, 2, 0)   ;закинуть в бой
        Sleep ( '150' )
WEnd

В этом случае он будет кликать не системно, а есть ли функция что бы 1 затем 2, 3, 4 и снова с 1.
Я думал как можно воткнуть в код конструкцию:
Код:
$удар 1 =  MouseClick("primary", 973,569, 2, 0)
$удар 2 =  MouseClick("primary", 973,539, 2, 0)
$удар 3 =  MouseClick("primary", 973,569, 2, 0)
$удар 4 =  MouseClick("primary", 973,599, 2, 0)

While 1
For $i = 1 To 4
n = 1
$удар n 
MouseClSleep ( '3006' )
n = n + 1
Next
WEnd


Но так не работает :( Да и в код я не знаю как встроить это.
 

---Zak---

Скриптер
Сообщения
455
Репутация
120
У тебя удары меняются исходя только из третьего параметра
Код:
MouseClick("primary", 973, ???, 2, 0)


Чтобы было все поочереди можно сделать массив:
Код:
Dim $array[4] = [569, 539, 569, 599]


Код:
Dim $array[4] = [569, 539, 569, 599]

$arr_i = 0
While 1
  Sleep ( 350 )
  Select
    Case PixelGetColor(663, 701) = $x
      Sleep ( 350 )
      MouseClick("primary", 633,601, 1, 0)                       ;пить элик
      Sleep ( '350' )
  Select 
    Case PixelGetColor(900, 620) = $s          ;Цвет начала боя
        MouseClick("primary", 705,520, 2, 0)   ;элик
        Sleep ( '150' )
    Case PixelGetColor(900, 620) = $s          ;Цвет боя
;~ -----------------------------------------------------------------------------------------------
		 MouseClick("primary", 973, $array[$arr_i], 2, 0) ; УДАР $arr_i
			$arr_i = $arr_i + 1
			If $arr_i > UBound($array)-1 Then 
			   $arr_i = 0
			EndIf
;~ -----------------------------------------------------------------------------------------------
        Sleep ( '150' )
        MouseClick("primary", 705,557, 2, 0)   ;элик
        Sleep ( '150' )
    Case PixelGetColor(900, 620) = $u     ;Цвет нет удара
        Sleep ( '150' )
    Case PixelGetColor(900, 620) = $v     ;Цвет нет соперника
        Sleep ( '150' )
    Case PixelGetColor(900, 620) = $w     ;Цвет убит
        Sleep ( '150' )
    Case Else
        Sleep ( '150' )
  EndSelect
    Sleep ( 550 )    
Case PixelGetColor(663, 701) = $y
        MouseClick("primary", 633,601, 2, 0)   ;закинуть в бой
        Sleep ( '150' )
WEnd


PS: немного изменил код:
Код:
If $arr_i > UBound($array)-1 Then
 
Верх