Работает Скрипт засадки огорода.

Статус
В этой теме нельзя размещать новые ответы.

OBEY

Q
Регистрация
15 Авг 2012
Сообщения
61
Репутация
10
Спасибо
1
Монет
0
После того как скомпилировали скрипт, обязательно запустить от администратора.

Далее по пунктам.

1) Выставить семена в ячейку "Shift+1"
2) Ставим камеру в положение на персонажем и определяем начальную позицию посадки, как показано на скрине ниже:
7gsrrbfnqjsaxwphy.png


Дистанция между посадками в ряду и столбце зависит от размера растения.

Для риса и азалии использовалось значение 63, можно и меньше, тестируйте.

Время движения персонажа в сек - это время, которое персонаж будет двигаться назад, чтобы урегулировать камеру для посадки новых рядов.

Код:
; Автозасадка в ArcheAge by Rulleks
Func _WinWaitActivate($title,$text,$timeout=0)
WinWait($title,$text,$timeout)
If Not WinActive($title,$text) Then WinActivate($title,$text)
WinWaitActive($title,$text,$timeout)
EndFunc

HotKeySet("{F11}","StartOrStop")
Global $STOP = True
Global $slp = 5 ; через сколько начнет работать прога (в сек) после активации F11
Global $crow = 3 ; кол-во посадок в ряду
Global $ccol = 5 ; кол-во рядов
Global $rrow = 63 ; дистанция между посадками в ряду
Global $rcol = 62 ; дистанция между посадками в столбце
Global $rtime = 1 ; время движения персонажа в сек
Global $footer = 2 ; через сколько рядов двигать персонажа вниз (для урегулирования камеры)
Global $countf ; кол-во сдвигов персонажа после расчетов

Global $x 
Global $y
Global $stat_y
Global $i[100]
Global $j
Global $n = 2
Global $count = 2
Global $countrow = 1

$slp = InputBox("Старт бота","Через сколько сек после нажатия F11 активировать бота (Пример: 5)")
$crow = InputBox("Введите кол-во посадок","Введите количество растений в одном ряду (Пример: 4)")
$ccol = InputBox("Введите кол-во рядов","Введите кол-во рядов (Пример: 5)")
$rrow = InputBox("Интервал между посадками в ряду","Интервал между посадками в ряду  (Пример: 63)")
$rcol = InputBox("Интервал между рядами","Интервал между рядами (Пример: 62)")
$rtime = InputBox("Время движения персонажа","Время движения персонажа в сек между интервалом рядов (Пример: 2)")
$footer = InputBox("Передвижение персонажа","Через сколько рядов передвигать персонажа (для урегулирования камеры) (Пример: 2)")

Global $AA_TITLE = "- ArcheAge " ;
_WinWaitActivate($AA_TITLE ,"")
Global $hWnd = WinActive($AA_TITLE ,"")

Do
Sleep(1000)
Until $STOP = False

If $STOP = False Then

	$slp = $slp * 1000
	Sleep($slp)
	
	$rtime = $rtime * 1000
	
	$pos = MouseGetPos()
	$x = $pos[0]
	$y = $pos[1]
	$stat_y = $pos[1]

	If $ccol > $footer And Mod($ccol,$footer) == 0 Then
		$countf = $ccol / $footer - 1
	Else
		$countf = Int($ccol/$footer)
	EndIf
	
	For $j = 0 to $ccol Step 1
		$i[$j] = 0
	Next
	
	$countf = $countf + 2
	
	For $j = 3 to $countf Step 1
		$i[$j-1] = $j-2
	Next
	
	While ($countrow <= $crow)
		Main()
	WEnd
	
	While ($count <= $ccol)
 
		$y = $y + $rcol
		Sleep(2000)
		MouseMove($x,$y)
		$countrow = 1
		While ($countrow <= $crow)
			Main()
		WEnd
		
		cnt($count)
		
		$count = $count + 1

	WEnd
	

	
Else
	Sleep(100)
EndIf

Func Main()

	$pos = MouseGetPos() 
	$ones = True
	
	If $STOP = False Then

	If $ones = True Then
		Send("{! 1}")
		MouseClick("left", $pos[0], $pos[1])
		Sleep(3000)
		$ones = False
	EndIf

		Send("{! 1}")  
		MouseClick("left", $pos[0]+$rrow, $pos[1])
		Sleep(3000)

		$countrow = $countrow + 1

	Else
		Sleep(100)
	EndIf
	
EndFunc

Func cnt($count)
	
	While ($n <= $countf)
		If $count = $i[$n]*$footer Then
			Send("{DOWN down}")
			Sleep ($rtime)
			Send("{DOWN up}")
			$y = $stat_y
		Else
			return 0
		EndIf
		$n = $n + 1
	WEnd

EndFunc

Func foot()

	$rtime = $rtime * 1000
	If $STOP = False Then
		Send("{DOWN down}")
		Sleep ($rtime)
		Send("{DOWN up}")
	Else
		Sleep(100)
	EndIf

EndFunc

Func StartOrStop()
If $STOP = True Then
$STOP = False
Else
$STOP = True
EndIf
EndFunc



Все зависит от ровности поверхности.

В скрипте пример засадки БП.
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху