From_Russia
Новичок
- Сообщения
- 8
- Репутация
- 0
Нашел в интернете код бота для приложения "Рыбное место" и решил его переделать под себя.
Начиная с 74 строки начинается проверка цвета в прямоугольнике, не могу понять логики работы.
1. Там проверяется 6 цветов в этом прямоугольнике и когда в этом прямоугольнике нету хотя бы одного из указанных цветов, скрипт делает то, что дальше написано (а именно подсекает рыбу нажатием пробела и выуживает).
Я правильно понял?
_________________________________________________
2. Хотел бы узнать, как сделать, чтобы цвет проверялся только в одной координате и когда бы этот цвет менялся, то скрипт бы делал то, что дальше написано(а именно подсекать рыбу нажатием пробела и выуживать)
Для ясности покажу пример на программеUoPilot. Проверка цвета в одной координате делалась так:
Начиная с 74 строки начинается проверка цвета в прямоугольнике, не могу понять логики работы.
1. Там проверяется 6 цветов в этом прямоугольнике и когда в этом прямоугольнике нету хотя бы одного из указанных цветов, скрипт делает то, что дальше написано (а именно подсекает рыбу нажатием пробела и выуживает).
Я правильно понял?
_________________________________________________
2. Хотел бы узнать, как сделать, чтобы цвет проверялся только в одной координате и когда бы этот цвет менялся, то скрипт бы делал то, что дальше написано(а именно подсекать рыбу нажатием пробела и выуживать)
Для ясности покажу пример на программеUoPilot. Проверка цвета в одной координате делалась так:
1 oplavok
2 while #Sx, #Sy #Sc
3 if 275, 328 12691860 // Если указанная координата заданного цвета
4 goto Poplavok // то перейти к проверке еще раз
5 else // Если же координата указанная в строке 3 изменила цвет,
6 left 500, 329 // то подсечь рыбу нажатием левой кнопкой мишки на кнопке в игре "Подсечь рыбу"
7 goto Loviti // После подсечки перейти в вылавливавний
8 end_if
9 end_while
Код:
oundPlay(EnvGet("WINDIR") & "\Media\Windows Notify.wav", 0)
$exit = 0
$refresh = 0
$pause = 0
HotKeySet("{Pause}", "TogglePause")
HotKeySet("{F10}", "Quit")
Func Quit()
SoundPlay(EnvGet("WINDIR") & "\Media\Windows Hardware Remove.wav", 0)
MsgBox(0, "Bye!!!", "See you later )))", 1)
Exit
EndFunc
Func TogglePause()
If $pause = 0 Then
$pause = 1
SoundPlay(EnvGet("WINDIR") & "\Media\Speech On.wav", 0)
MsgBox(0, "Pause", "Paused", 1)
Else
$pause = 0
SoundPlay(EnvGet("WINDIR") & "\Media\Speech Off.wav", 0)
MsgBox(0, "Pause", "Continue", 1)
EndIf
EndFunc
;Главный цикл программы
WHILE $exit <> 1
WinActive("«Рыбное место» - Приложения - Мой Мир@Mail.Ru - Google Chrome");Заголовок окна
WinActivate("«Рыбное место» - Приложения - Мой Мир@Mail.Ru - Google Chrome");Заголовок окна
MouseClick("left", 10, 70) ;Сфокусировались на странице
SLEEP(200)
Send("{Home}");Передвинули страницу на самый верх
SLEEP(200)
MouseClick("left", 451, 273);Сфокусировались на приложении
;Закрыли все оповещалки
Send("{Esc}")
SLEEP(200)
Send("{Esc}")
SLEEP(200)
Send("{Esc}")
SLEEP(200)
;Забросили удочку
Send("{Space}")
SLEEP(3000)
;Если не получилось
;Проверка - на обводке кнопки.
;Если кнопка есть, то можно забрасывать
;Так бывает когда закончились снасти
;или если сервер не доступен
IF Hex(PixelGetColor(891,533), 6) <> "563A12" THEN
;С каждым разом ждем дольше
SLEEP($refresh * 20000)
$refresh += 1
;что-то случилось, перезагружаем страницу
MouseClick("left", 70, 40)
;Ждем загрузки приложения
SLEEP(20000)
;Перезапуск главного цикла
ContinueLoop
EndIf
$refresh = 0
;Ждем поклевку
$bite = 0;
WHILE $bite=0
$bite1 = False
$bite2 = False
$bite3 = False
$bite4 = False
$bite5 = False
$bite6 = False
$bite7 = False
;Если удочка, то смотрим на поплавок
;При необходимости добавляем цвета на поверхности поплавка
;координаты прямоугольника, в котором ищем поплавок и цвет, который ищем
$coord = PixelSearch(624, 480, 680, 560, 0xFF8000)
IF NOT @ERROR THEN
$bite1 = True
EndIf
$coord = PixelSearch(624, 480, 680, 560, 0xD50202)
IF NOT @ERROR THEN
$bite2 = True
EndIf
$coord = PixelSearch(624, 480, 680, 560, 0xFF9F00)
IF NOT @ERROR THEN
$bite3 = True
EndIf
$coord = PixelSearch(624, 480, 680, 560, 0xD0661E)
IF NOT @ERROR THEN
$bite4 = True
EndIf
$coord = PixelSearch(624, 480, 680, 560, 0xFFCC00)
IF NOT @ERROR THEN
$bite5 = True
EndIf
$coord = PixelSearch(624, 480, 680, 560, 0xBF9900)
IF NOT @ERROR THEN
$bite6 = True
EndIf
$coord = PixelSearch(624, 480, 680, 560, 0xFF0000)
IF NOT @ERROR THEN
$bite7 = True
EndIf
IF $bite1 OR $bite2 OR $bite3 OR $bite4 OR $bite5 OR $bite6 OR $bite7 THEN
;нет поклевки, поплавок найден
$bite = 0
ELSE
;поклевка
$bite = 1
EndIf
SLEEP(25)
WEND
;Когда поплавок ушел под воду при поклевке
;или рыбачим на спининг (поплавка нет вовсе)
;запоминаем цвет под шкалой (закрашено шкалой или нет)
$str = 496 + 140;позиция шкалы по оси Х, где начинаем тянуть
$end = 883 - 140;позиция шкалы по оси X, где заканчиваем тянуть
;первое слагаемое - координата края шкалы
;второе - отступ от края
;по идее, чем мощнее тачка, тем меньше можно делать отступ
$lvl = 738;позиция шкалы по оси У
$drag = Hex(PixelGetColor($str, $lvl), 6);запоминаем цвет подложки слева
$drop = Hex(PixelGetColor($end, $lvl), 6);запоминаем цвет подложки справа
;Клюет, вытаскиваем!!!
;настройка ввода с клавиатуры
AutoItSetOption("SendKeyDelay", 1)
AutoItSetOption("SendKeyDownDelay", 100)
AutoItSetOption("SendCapslockMode", 1)
;подсекаем
Send("{Space}");решил, что это будет лишним. При желании, раскомментируйте
$flag = 1 ;0 - отпускаем, 1 - тащим
WHILE Hex(PixelGetColor(891,533), 6) = "563A12";пока есть кнопка
IF Hex(PixelGetColor($str, $lvl), 6) = $drag THEN;шкала ушла левее левой отметки, тащим
$flag = 1
EndIf
IF Hex(PixelGetColor($end, $lvl), 6) <> $drop THEN;шкала закрасила правую отметку, отпускаем
$flag = 0
EndIf
IF $flag = 1 THEN
Send("{Space}");тащим
ELSE
SLEEP(25);отпускаем
EndIf
WEND
;смотрим на улов
;или любуемся надписью "Рыба сорвалась" или что-либо другое
SLEEP(3000)
While $pause = 1
Sleep(3000)
WEnd
WEND