Автокликер Clickermann :: Форум
Основной раздел => Общие вопросы => Topic started by: Alexankin on July 12, 2013, 09:12:48 PM
-
Сама игра http://rus-fishsoft.ru/ , весит всего 300 мб , вдруг какого нибудь Guru затянет на досуге и он за 5 минут напишет то , чем я занимаюсь 3-и сутки)))
Алгоритм действий:
1. Нажать "Т" (англ) закинуть удочку (всегда прямая и в одно и тоже место)
2. Когда рыба клюет (всегда разное время) , конец удочки цветом пикселя 255 загинается , нажимаем "G"
3. Ожидаем пока шкала "Леска" не заполнится до момента описанного цветом пикселя "4488494", после чего отпускаем "G" и нажимаем "H"
4. Заполняется шкала "Удочка" до момента описанного тем же цветом пикселя "4488494", отпускаем "H", нажимаем "G"
5. Повторяем пункты 3 и 4 до тех пор, пока не выловится рыба.
Скриншоты:
1. http://yadi.sk/d/8e2YI2od6jEpI
2. http://yadi.sk/d/4W39_vhq6km0W
3. http://yadi.sk/d/7zgd6gHH6kosi
4. http://yadi.sk/d/gd8KyzD66kosy
Вот что получается скриптом ниже : http://youtu.be/9KX9G5TGME4
Места IF_PIXEL_IN: http://yadi.sk/d/roL8_Pn86l3Fg
1 раз правильно все происходит , далее начинает работать только при нажатии "G" оно видимо заменяет первый
IF_PIXEL_IN (959, 434, 987, 486,255)
$key_g = 1
END_IF
Но 1 момент , когда я запускаю скрипт , изначально в зоне бокса первого IF_PIXEL_IN нет цвета 255 , он появляется чуть позже когда рыба клюет и скрипт начинает делать свое дело , но при продолжении там присутствует этот цвет , может быть поэтому и стопорится...
САМ СКРИПТ:
GETSCREEN
IF_PIXEL_IN (959, 435, 977, 486,255)
$key_g = 1
END_IF
IF_PIXEL_IN(913,717,930,732,6657107,7117147,4488494)
$key_g = 0
waitms (64)
$key_h = 1
END_IF
IF_PIXEL_IN(917,703,931,714,6657107,7117147,4488494)
$key_h = 0
END_IF
IF(($key_g = 1) & (iskeydown(#G)=0))
KEYDOWN(#G)
END_IF
IF(($key_g = 0) & (iskeydown(#G)=1))
KEYUP(#G)
END_IF
IF(($key_h = 1) & (iskeydown(#H)=0))
KEYDOWN(#H)
END_IF
IF(($key_h = 0) & (iskeydown(#H)=1))
KEYUP(#H)
END_IF
P.S. очень прошу помощи) так как уже замучился и всех уже достал))) , так как не могу понять что тут не так !!!
Ранее я много делал простых скриптов изучая самостоятельно (разовые клики и нажатия клавиш - правда этого хватало) и длинных и коротких в KFgame , PW , Karos и все работали на ура , выполняли утомительные задачи на которые тратились бы много часов жизни , без перебоев (ПРАВДА ПОСЛЕ НАПИСАНИЯ ВСЕГДА ТРАТИЛСЯ ИНТЕРЕС К ИГРАМ , так как ты мог все себе позволить и стремиться было уже не к чему) , но тут уже не интерес к игре))) , а сама цель разобраться , так как эти зажатия и отжатия клавиш уже достали.... Спасибо вам за помощь...
-
Один END_IF лишний. Может из-за него...
Не может 1 и 2 поиск находить одновременно?
Не знаю как iskeydown(#G) реагирует на программно же нажатый G. Может стоит подменить переменными в этих проверках.
-
Я немного все отредактировал !!! А проблема осталась ;D
-
Вот новая реинкарнация описания более понятна. Хотя что это одна из рыбалок было ясно и так.
Почему бы не сделать тупо и линейно прямо по твоему описанию? Написано ждем 255 - значит ждем, а не носимся по скрипту... дождались - нажимаен G. И так далее.
-
Может так?
$u=0
while($u=0)
GETSCREEN
IF_PIXEL_IN (959, 435, 977, 486,255)
KEYDOWN(#G)
$u=1
END_IF
waitms (50)
END_CYCLE
$lovim=0
while($lovim=0)
$g=0
while($g=0)
GETSCREEN
IF_PIXEL_IN
(913,717,930,732,6657107,7117147, 4488494)
$g=1
KEYUP(#G)
waitms (50)
KEYDOWN(#H)
END_IF
waitms (50)
END_CYCLE
$h=0
while($h=0)
GETSCREEN
IF_PIXEL_IN (917,703,931,714,6657107,7117147,
4488494)
$h=1
KEYUP(#H)
waitms (50)
KEYDOWN(#G)
END_IF
waitms (50)
END_CYCLE
END_CYCLE
только непонятно, где обработка поймали? Или это всё в ручную?
-
Оуууу Vint вы красавчик , выуживание рыбы происходит на 5+ баллов))) , а не как у меня 1 раз keydown(#G) -> keyup(#G) -> keydown(#H) -> keyup(#H) и скрипт застывал , вы этот цикл сделали бесконечным.
Почему бы не сделать тупо и линейно прямо по твоему описанию? Написано ждем 255 - значит ждем, а не носимся по скрипту... дождались - нажимам G. И так далее.
Я думал раз программа всегда носится по скрипту , значит рано или поздно дождется и будет делать свое дело :D
только непонятно, где обработка поймали? Или это всё в ручную?
Да , для полной автоматизации действии она безусловно нужна , просто на скорую руку (уже 4й день ковыряюсь) хотелось сделать что бы когда конец удочки сместился , происходило выуживание , что сейчас и происходит... НО к сожалению когда я закидываю удочку снова и происходит клев , скрипт не срабатывает , нужно заново его запускать , вот видео http://youtu.be/s1xibpVFo-w тут первую рыбу поймал сам скрипт , а на вторую не обратил даже внимания....
-
попробовал проверить работу скрипта как мне подсказывал Андрей Оравин вписав LOGWRITE
скрипт заканчивает работу всегда с зажатым "G" может быть поэтому не продолжает работу дальше ? так как в первом IF_PIXEL_IN как раз и нужно зажимать G
IF_PIXEL_IN (959, 435, 977, 486,255)
KEYDOWN(#G)
$u=0
while($u=0)
GETSCREEN
IF_PIXEL_IN (959, 435, 977, 486,255)
KEYDOWN(#G)
LOGWRITE ("Зажал G")
$u=1
END_IF
waitms (50)
END_CYC
$lovim=0
while($lovim=0)
$g=0
while($g=0)
GETSCREEN
IF_PIXEL_IN (913,717,930,732,6657107,7117147,4488494)
$g=1
KEYUP(#G)
LOGWRITE ("Отжал G")
waitms (50)
KEYDOWN(#H)
LOGWRITE ("Зажал H")
END_IF
waitms (50)
END_CYC
$h=0
while($h=0)
GETSCREEN
IF_PIXEL_IN (917,703,931,714,6657107,7117147,4488494)
$h=1
KEYUP(#H)
LOGWRITE ("Отжал H")
waitms (50)
KEYDOWN(#G)
LOGWRITE ("Зажал G")
END_IF
waitms (50)
END_CYC
END_CYC
-
Все пробую и пробую , ппц.... и не получается :(
Вот успешный лог !!!
Рыба клюнула - >зажал G
Леска слишком сильно натянулась -> отжал G
Тянем удочку -> зажал H
Удочка сильно гнется -> отжал H
Тянем леску - > зажал G
Поймал рыбку -> Отжал G
Окно с уловом закрываю -> Нажал Space
Закинул удочку -> Нажал T
И вот что произошло при следующем клеве
Нажал T
зажал G
отжал G
зажал H
отжал H
зажал G - Леска лопнула так как вовремя не отжалась
Сам скрипт
$u=0
while($u=0)
GETSCREEN
IF_PIXEL_IN (959, 435, 977, 486,255)
KEYDOWN(#G)
LOGWRITE ("Зажал G")
$u=1
END_IF
waitms (50)
END_CYC
$lovim=0
while($lovim=0)
$g=0
while($g=0)
GETSCREEN
IF_PIXEL_IN (913,717,930,732,6657107,7117147,4488494)
$g=1
KEYUP(#G)
LOGWRITE ("Отжал G")
waitms (50)
KEYDOWN(#H)
LOGWRITE ("Зажал H")
END_IF
waitms (50)
END_CYC
$h=0
while($h=0)
GETSCREEN
IF_PIXEL_IN (917,703,931,714,6657107,7117147,4488494)
$h=1
KEYUP(#H)
LOGWRITE ("Отжал H")
waitms (50)
KEYDOWN(#G)
LOGWRITE ("Зажал G")
END_IF
waitms (50)
END_CYC
$poimali=0
while($poimali=0)
GETSCREEN
IF_PIXEL_IN (665,777,767,778,16750899)
$poimali=1
KEYUP(#G)
LOGWRITE ("Отжал G")
wait (2)
Keypress(#SPACE)
LOGWRITE ("Нажал Space")
wait (2)
Keypress(#T)
LOGWRITE ("Нажал T")
wait (2)
END_IF
END_CYC
END_CYC
-
Сори, я из отпуска и с телефона писал. Проверять твои скрипты нет возможности. Допиши обработку поймали по какому нибудь признаку, потом спейс, задержку и переход на начало. Думаю там не сложно.
-
Допиши обработку поймали по какому нибудь признаку, потом спейс, задержку и переход на начало. Думаю там не сложно.
По какому признаку ??? я ведь сделал что бы он нашел по цвету в определенной области и как кинуть на начало ))) ? где об этом почитать ? что бы потом написать ! или где взять пример ?
Справку 100 раз уже открывал и даже не закрывал , но она явно написана для бывалых...
-
Справка она просто, справка. Для всех. Написана вполне доступно.
Ты не туда вставил проверку поймали. Этот участок у тебя никогда не выполняется. Можно сделать по разному. Проще:
убери циклы while вокруг твоего поймали (кстати, зачем он там?) и вокруг проверки удочки и лески. Все три поиска оберни в новый цикл while и внутри поиска поймали добавь выход из этого цикла.
Ну, или подожди пока Андрей тебе напишет/подскажет или если ни у кого нет желания - до среды минимум пока домой доберусь. Задача довольно простая.
-
Vint , совсем не спешу и конечно буду ждать , главное разобраться , не то что бы сделать и пользоваться , но и самому понять как это сделано...
Буду пробовать дальше))) и ждать , хорошего отдыха...
-
Keypress(#T)
LOGWRITE ("Нажал T")
wait (2)
$u=0
while($u=0)
GETSCREEN
IF_PIXEL_IN (959, 435, 977,
486,255)
KEYDOWN(#G)
LOGWRITE ("Зажал G")
$u=1
END_IF
waitms (50)
END_CYC
$lovim=0
while($lovim=0)
GETSCREEN
IF_PIXEL_IN (913,717,930,732,6657107,
7117147,4488494)
KEYUP(#G)
LOGWRITE ("Отжал G")
waitms (50)
KEYDOWN(#H)
LOGWRITE ("Зажал H")
waitms (50)
END_IF
IF_PIXEL_IN
(917,703,931,714,6657107,
7117147,4488494)
KEYUP(#H)
LOGWRITE ("Отжал H")
waitms (50)
KEYDOWN(#G)
LOGWRITE ("Зажал G")
waitms (50)
END_IF
IF_PIXEL_IN
(665,777,767,778,16750899)
$lovim=1
KEYUP(#G)
LOGWRITE ("Отжал G")
wait (2)
Keypress(#SPACE) LOGWRITE ("Нажал Space")
wait (2)
END_IF
END_CYC
-
оО спасибо , а я уже все сделал после того как прочитал ваше сообщение в VK)))
Хотел еще кое что сюда засунуть , но пока мучаюсь сам... не хочется никого обременять)))
-
Во время использования , встретил проблему , когда скрипт выполняет свою задачу используя только $u, т.е. только одним зажатием G не доходя до $lovim , сбивается вся работа , хотя зачастую $lovim нужно для выполнения задачи :(
Подлечил так , но не вылечил судя по логам :(
$nakonechnik=0
while($nakonechnik=0)
GETSCREEN
IF_PIXEL_IN (959, 435, 977, 486,255) // Красный наконечник удочки
$nakonechnik=1
KEYDOWN(#G)
LOGWRITE ("Зажал 1 G")
waitms (50)
END_IF
waitms (64)
END_CYC
waitms (10)
$lovim=0
while($lovim=0)
IF_PIXEL_IN (959,435,977,486,255) // Тянем
KEYDOWN(#G)
LOGWRITE ("Зажал 2 G")
GETSCREEN
IF_PIXEL_IN (913,717,930,732,4488494) // Макс. натяжение лески
KEYUP(#G)
LOGWRITE ("Отжал 2 G")
waitms (5)
KEYDOWN(#H)
LOGWRITE ("Зажал 1 H")
END_IF
END_IF
waitms (10)
GETSCREEN
IF_PIXEL_IN (917,703,931,714,4488494) // Макс. натяжение удочки
KEYUP(#H)
LOGWRITE ("Отжал 1 H")
waitms (5)
KEYDOWN(#G)
LOGWRITE ("Зажал 3 G")
END_IF
waitms (10)
GETSCREEN
IF_PIXEL_IN (951,436,956,440,0) // --------
$lovim=1
wait (1)
KEYPRESS(#T)
waitms (5)
LOGWRITE ("Нажал Т")
wait (1)
END_IF
waitms (64)
End_cyc
waitms (10)
$poimali=0
while($poimali=0)
GETSCREEN
IF_PIXEL_IN (665,777,767,778,16750899) // Если рыбу поймал
$poimali=1
KEYUP(#G)
waitms (5)
LOGWRITE ("Отжал G")
waitms (5)
KEYUP(#H)
waitms (5)
LOGWRITE ("отжал H")
wait (2)
Keypress(#SPACE)
waitms (5)
LOGWRITE ("Нажал Space")
wait (2)
Keypress(#T)
waitms (5)
LOGWRITE ("Нажал T")
waitms (5)
END_IF
waitms (64)
End_cyc
Постоянно проскакивает "Зажал 2 G" Админам игры это точно не понравится ;D , но дело не в ниХ...
А в том что это логично , так как я сам задал скрипту такую задачу , но не хватает знаний и опыта что бы излечить эту болезнь...
Как это лечится ? или с каким указателем поработать ?
Но зажатие G необходимо в $lovim
-
Ну кто об этом знал. Тогда так:
Keypress(#T)
LOGWRITE ("Нажал T")
wait (2)
$u=0
while($u=0)
GETSCREEN
IF_PIXEL_IN (959, 435, 977,
486,255)
KEYDOWN(#G)
LOGWRITE ("Зажал G")
$u=1
END_IF
waitms (50)
END_CYC
GETSCREEN
IF_PIXEL_IN
(665,777,767,778,16750899)
GOTO(dostaem)
END_IF
$lovim=0
while($lovim=0)
GETSCREEN
IF_PIXEL_IN (913,717,930,732,6657107,
7117147,4488494)
KEYUP(#G)
LOGWRITE ("Отжал G")
waitms (50)
KEYDOWN(#H)
LOGWRITE ("Зажал H")
waitms (50)
END_IF
IF_PIXEL_IN
(917,703,931,714,6657107,
7117147,4488494)
KEYUP(#H)
LOGWRITE ("Отжал H")
waitms (50)
KEYDOWN(#G)
LOGWRITE ("Зажал G")
waitms (50)
END_IF
IF_PIXEL_IN
(665,777,767,778,16750899)
$lovim=1
END_IF
END_CYC
dostaem:
KEYUP(#G)
LOGWRITE ("Отжал G")
wait (2)
Keypress(#SPACE)
LOGWRITE ("Нажал Space")
wait (2)
-
:o Goto , как все просто оказывается ;D (смеюсь над собой) и я же читал про то что можно было перекинуть на другую строчку и так туплю... надо передохнуть
Я вам очень благодарен за ваше терпение и помощь...
-
существует какой нибудь указатель который может перезапускать скрипт , например каждые 15 минут , не задерживая при этом скрипт ?
или
какое нибудь условие ? , ЕСЛИ в цикле не нажалась например Т в течении 2 минут , запустить скрипт заново !
Случайно не над FOR мне нужно ломать голову ?
-
фор это по количеству повторов.
Если по времени, в начале скрипта задаешь переменной значение: текущее время плюс время в секундах через которое хочешь перезапускать.
потом во всех циклах вставляешь проверку, сравниваешь переменную с текущим временем. Если переменная меньше текущего времени переход на начало скрипта.
-
Спасибо)))
Пытаюсь в скрипт внедрить еще одну удочку))) можно до 3х...
буду пробовать)))