OBEY Q OBEY Q Регистрация 15 Авг 2012 Сообщения 61 Репутация 10 Спасибо 1 Монет 0 26 Июн 2014 #1 После того как скомпилировали скрипт, обязательно запустить от администратора. Далее по пунктам. 1) Выставить семена в ячейку "Shift+1" 2) Ставим камеру в положение на персонажем и определяем начальную позицию посадки, как показано на скрине ниже: Дистанция между посадками в ряду и столбце зависит от размера растения. Для риса и азалии использовалось значение 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 Все зависит от ровности поверхности. В скрипте пример засадки БП.
После того как скомпилировали скрипт, обязательно запустить от администратора. Далее по пунктам. 1) Выставить семена в ячейку "Shift+1" 2) Ставим камеру в положение на персонажем и определяем начальную позицию посадки, как показано на скрине ниже: Дистанция между посадками в ряду и столбце зависит от размера растения. Для риса и азалии использовалось значение 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 Все зависит от ровности поверхности. В скрипте пример засадки БП.