Автокликер Clickermann :: Форум
Основной раздел => Использование => Topic started by: JulianDC on September 08, 2013, 09:23:30 AM
-
Всем Здравствуйте! Долго искал подобное решение наконец то нашел то что нужно кликер с анализом изображений.
Задача -
автозапуск скрипта каждые 8 часов (как сделать)
запуск браузера ( как ? с помощью кликов или командно)
ожидание. 30 сек
поиск картинки браузера (значка если окно открылось что бы не тыкнул в пустое место) как сделать?
ну и дальше все тоже самое поиск картики если есть то клик если нет то ожидание...
можно конкретный пример скрипта (куда класть картинку как заставить искать)
вот кое что накатал.... но не работает. инструкции прочитыны.
print ("starting")
//Checking Firefox....
GETSCREEN
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "firefox.bmp")
print("Найден в координатах X=0", $_return1, ", Y=0", $_return2)
LCLICK($_return1, $_return2)
else
// тут надо скрипт чтобы тыкая по клавишам запустил браузер или командно.
END_IF
halt // for single run - че это такое и зачем нужно....
-
функция EXECUTE тебе поможет.EXECUTE("C:\Program Files\Internet Explorer\iexplore.exe") .напиши путь к тому браузеру которым пользуешься.
-
В винде есть планировщик. Каждый раз когда запускается кликерманн он привязывает расширения своих скриптов ".cms" на себя. В настройках кликера нужно указать автозапуск сценария при старте кликера. Теперь если два раза кликнуть по файлу сценария, запустится кликер и сразу начнет его выполнение. В планировщике виндовс нужно создать задание и указать что запускать когда или с какой периодичностью.
Данный сценарий работает таким образом.
1 Сначала запускается браузер
2 Сразу же начинается поиск того по чему тебе нужно кликнуть (например в игре какую то кнопку). Поиск будет длиться 2 минуты, если за это время страница не загрузится то браузер убивается и все с начало. Если же загрузится то производится клик с последующем закрытием браузера и кликера.
При поиске функцией IF_PICTURE_IN возвращается верхний левый угол картинки. Если тебе нужно кликнуть куда то в другом месте (ниже) то пропиши смещение
LCLICK($_return1+2, $_return2+4) // клик на 2а пиксела правее и на 4 ниже
Если этого не нужно то так
LCLICK($_return1, $_return2)
Картинку следует класть в ту же папку где лежит сам скрипт.
Вот простая цепочка как создать картинку
PrintScreen -> Paint -> Ctrl+V -> Обрезать -> Сохранить в BMP 24bit -> Поместить в папку со скриптом.
EXECUTE("firefox.exe") // запуск браузера
WAIT(1)
$check1 = 0
$check2 = 0
$time = $_time_t + 120 // 2 минуты
WHILE(($check1 = 0) & ($time > $_time_t)) // ожидание картинки, но не более 2х минут
GETSCREEN
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "somefile.bmp")
LCLICK($_return1+2, $_return2+4) // клик по картинке со смещением
$check1 = 1 // меняем переменную прерываем поиск
$check2 = 1 // меняем переменную для следующего условия чтобы завершить скрипт
WAIT(5)
Else
WAITMS(100)
END_IF
END_CYC
WAIT(1)
IF($check2 = 1)
EXECUTE("taskkill","/IM firefox.exe") // если все удачно убиваем процесс браузера
EXECUTE("taskkill", "/IM Clickermann.exe") // и кликермана
Else
EXECUTE("taskkill","/IM firefox.exe") // если не удачно убиваем браузер и повторяем
WAIT(5)
END_IF
-
S400 спасибо! так и сделал. 8)
Oraven - да ты просто господь. Все на ура как по маслу!!!!!).
Задание создал в винде все заработает как надо. Дальше.
Скрипт открывает браузер и кликает по картинке которую надо было найти ( чтобы убедиться что браузер включен) . тут все отличчно надо только другую кнопу ему прописать в координатах ....
можно конкретно кусочки чтобы ждал ( с описанием как задается врем)
и что значит вот этот кусочек
$check1 = 1 // меняем переменную прерываем поиск
$check2 = 1 // меняем переменную для следующего условия чтобы завершить скрипт
-
EXECUTE("C:\Waterfox\waterfox.exe")
// запуск браузера
WAIT(1)
$check1 = 0
$check2 = 0
$time = $_time_t + 120 // 2 минуты
WHILE(($check1 = 0) & ($time > $_time_t)) // ожидание картинки, но не более 2х минут
GETSCREEN
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "firefox.bmp")
WAITMS(5000)
LCLICK(870, 45) // избранное
WAITMS(5000)
LCLICK(115, 210) // переход на вк.ком тут три ситуации
// 1 либо наша страничка уже с выполненым входом 2 либо входа не выполнено либо 3 открыта чужая страница нужна проверка по картинке
$check1 = 1 // меняем переменную прерываем поиск
$check2 = 1 // меняем переменную для следующего условия чтобы завершить скрипт
wait(100)
END_IF
END_CYC
//ДО СЮДА ВСЕ РАБОТАЕТ ХОРОШО ДАЛЬШЕ ЗАЦИКЛИВАНИЕ.
//---------------------------------------------------------------------------------------------------------------------------------------
// Проверка на чьей мы странице.
Cheking: // cюда мы вернемся если надо будет перепроверить находимся ли мы на своей странице.
wait(15)
GETSCREEN
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "main.bmp") // ОТКАЗЫВАЕТСЯ НАХОДИТЬ Я ПОЛАГАЮ
LCLICK($_return1, $_return2)
GOTO (Intergame) // если страница нужная то переходим через goto к запуску игры. если нет то - смотрим ELSE
Else // если мы не на своей странице значит либо не зашли либо зашел кто то другой проверяем...
wait(10)
GETSCREEN
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "inter.bmp") // проверяем находимся ли мы на странице входа (1*условие) если да то -
LCLICK(300,180) // кликаем в область с введением логина
KEYPRESS(40) // листаем логины до нашего
KEYPRESS(40)
KEYPRESS(40)
KEYPRESS(40)
KEYPRESS(40)
KEYPRESS(40) // мы на нашем логине
KEYPRESS(13) //enter
WAIT(1)
LCLICK(305,245) // область с паролем
KEYSTRING ("ztc25rq80", 1000 )
KEYPRESS(13) //enter входим //проверяем все ли удачно
WAIT(5)
GETSCREEN
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "main.bmp") // если мы вошли то можем через goto перейти к запуску игры.
goto(Intergame)
Else
wait(10)
END_IF
Else // если (1*условие) не выполнилось и мы не на своей странице и не на странице входа то ЗНачит мы на чужой странице.
LCLICK(1035,125) //кликаем по клавише "Выход"
WAITMS(10000) //ждем 10с
goto(Cheking) // возвращаемся проверить на своей ли мы странице и уже скорее всего будет - да. тогда сработает GOTO - $INTERGAME.
END_IF
END_IF
Intergame: // сюда мы прикатим если все пройдет хорошо. будем запускать игру.
LCLICK(330,420) // запускаем игру
WAIT(120) //ждем 120 секунд до ПОЛНОЙ ЗАГРУЗКИ.
// итак теоретически мы в игре. теперь нам надо проверить - свободен ли главный экран от уведомлений затемняющих игру и делающих кнопки некликабельными. проверяем - если уведомлений нет видно лицо нашего перса. проверим.
WAIT(1)
$check1 = 0
$check2 = 0
$time = $_time_t + 120
WHILE(($check1 = 0) & ($time > $_time_t))
GETSCREEN
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "hero.bmp") // герой.
//если он найден то переход к $Moving
$Moving
$check1 = 1 // меняем переменную прерываем поиск
$check2 = 1 // меняем переменную для следующего условия чтобы завершить скрипт
WAIT(5)
Else // если герой закрыт уведомлениями то ищем кнопки типа "ок" "закрыть" п"продолжить" .
GETSCREEN
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "cancel.bmp")
LCLICK($_return1, $_return2) //закрываем
END_IF
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "continue.bmp")
LCLICK($_return1, $_return2) // кликаем если есть
END_IF
// возвращаемся к проверки перса. и так мы будем вовращаться пока все подобные кнопки не нажмутся если все ок переходим к $moving
$Intergame
WAITMS(100)
END_IF
END_CYC
$moving // избавились от уведомлений шарим по игре. но в ходе самой игры у нас может быть еще одно уведомление о нападении там просто надо нажать 2 раза клавишу чтобы выйти из уведомления и продолжать.
// собираем первый бонус.
LCLICK(910,255) открываем уведомления.
wait(5)
LCLICK(730,511) //Собрать.
wait(2)
LCLICK(965,390) //Закрыть.
wait(4)
// теперь выходим на карту.
LCLICK(560,255) //- карта
wait(4)
LCLICK(640,450)
wait (10) // все отлично тперь надо начать собирать ресы для этого крикаем по значкам сбора . сразу после первого клика может появиться уведомление о нападении
//поэтому
//1 пункт
LCLICK(615,465) // кликаем по первой кнопочке и проверяем...
WAIT(10) // ждем пока перс дойдет до пункта.
$check1 = 0
$check2 = 0
$time = $_time_t + 120
WHILE(($check1 = 0) & ($time > $_time_t))
GETSCREEN
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "take.bmp") // если перс дошел успешно то появится клавиша - собрать по ней и тыкаем.
LCLICK(1105,530)
$check1 = 1 // меняем переменную прерываем поиск
$check2 = 1 // меняем переменную для следующего условия чтобы завершить скрипт
WAIT(5)
Else // если по пути на нас напали и клавиши собрать нет то смотрим что нам выпало тут 2 варианта.
//1 санитары.
GETSCREEN
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "sanitars.bmp") // что делать если уведомление о санитарах.
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "hide.bmp") // в этом уведомлении должна быть клавиша - затаиться. по ней и кликаем.
LCLICK($_return1, $_return2)
END_IF
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "go.bmp") // далее появится клавиша "продолжить."
LCLICK($_return1, $_return2) // клик по этой клавише.
END_IF
END_IF
//2 пациент.
GETSCREEN
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "seek.bmp") // что делать если уведомление о больном.
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "talk.bmp") // в этом уведомлении должна быть клавиша - "поговорить". по ней и кликаем.
LCLICK($_return1, $_return2)
END_IF
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "go.bmp") // далее появится клавиша "продолжить."
LCLICK($_return1, $_return2) // клик по этой клавише.
END_IF
END_IF
// К ЭТОМУ БЛОКУ ХОРОШО БЫ ОБРАЩАТЬСЯ КАЖДЫЙ РАЗ ПОСЛЕ КЛИКА ПО ЛОКАЦИИ. КАК СДЕЛАТЬ. GOTO?
// ПОКА ЧТО У НАС ДОЛЖНО СОБИРАТЬСЯ 1 ШТУКА С ЛОКАЦИИ ПРОВЕРЬТЕ КОД НА СИНТАКСИС И ПРОЧИЕ ОШИБКИ ПОЖАЛУЙСТА ЕСЛИ НЕ ТРУДНО.
END_IF
END_CYC
// ПОЧЕМУ ТО БРАУЗЕР СНОВА ОТКРЫВЕТСЯ ПОСЛЕ ЗАКРЫТИЯ.
IF($check2 = 1)
EXECUTE("taskkill","/IM waterfox.exe") // если все удачно убиваем процесс браузера
EXECUTE("taskkill", "/IM Clickermann.exe") // и кликермана
Else
EXECUTE("taskkill","/IM firefox.exe") // если не удачно убиваем браузер и повторяем
WAIT(5)
END_IF
-
Ох и бред же ты накатал. Тебе походу все едино что метки что переменные.
$a - это переменная
a: - это метка
Твой код нужно вставлять здесь
EXECUTE("firefox.exe") // запуск браузера
WAIT(1)
$check1 = 0
$check2 = 0
$time = $_time_t + 120 // 2 минуты
WHILE(($check1 = 0) & ($time > $_time_t)) // ожидание картинки, но не более 2х минут
GETSCREEN
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "somefile.bmp")
$check1 = 1 // меняем переменную прерываем поиск
$check2 = 1 // меняем переменную для следующего условия чтобы завершить скрипт
<<< ВОТ ТУТ ТВОЙ КОД>>>
WAIT(5)
Else
WAITMS(100)
END_IF
END_CYC
WAIT(1)
IF($check2 = 1)
EXECUTE("taskkill","/IM firefox.exe") // если все удачно убиваем процесс браузера
EXECUTE("taskkill", "/IM Clickermann.exe") // и кликермана
Else
EXECUTE("taskkill","/IM firefox.exe") // если не удачно убиваем браузер и повторяем
WAIT(5)
END_IF
Писать через KEYSTRING пароли не слишком удобно. При этом раскладки в кликере и целевом окне должны быть английскими.
$check1 = 1 // эта переменная отвечает за прерывание цикла
цикл прервется не здесь а потому что условие WHILE(($check1 = 0) & ($time > $_time_t)) станет неверно
$check2 = 1 // этой переменной я даю понять условию IF($check2 = 1) нужно завершать работу браузера и кликера или нет
-
испрвил метки еще до вашего ответа... сообщение переделано... можно смтореть.
-
Цикл с условием
$_time_t - это системная переменная возвращающая время Unix-систем отсчет там идет в секундах
$check1 = 0
$time = $_time_t + 120 // 2 минуты
WHILE(($check1 = 0) & ($time > $_time_t))
// тело
END_CYC
Условие цикла: пока переменная $check1 имеет значение 0 и пока $time больше $_time_t.
Задаем переменной $check1 значение 0
$check1 = 0
а переменной $time присваиваем вычисленное время Unix плюс 120 секунд
$time = $_time_t + 120 // 2 минуты
Дальше начнет выполняться цикл, и пока условия верны он будет выполняться. Но если какое то условие например найденная картинка задаст новое значение или время Unix нагонит значение $time то условие цикла станет неверно и цикл дойдет до конца то продолжится скрипт дальше после цикла.
-
а check2 зачем .....
странно но дальше не работает ... заходит на страницу (конец вашего кода) и все после cheking: ничего не выполняется.
-
переделал код. сделал его более простым и логичным теперь нету кучи условий программа просто выходит из аккаунта сначала а потом вхлдит в мой так проще. но вот этот кусок не работает не знаю почему все вроде такде
Cheking: // cþäà ìû âåðíåìñÿ åñëè íàäî áóäåò ïåðåïðîâåðèòü íàõîäèìñÿ ëè ìû íà ñâîåé ñòðàíèöå.
$check3 = 0
$time = $_time_t + 60
WHILE(($check3 = 0) & ($time > $_time_t))
GETSCREEN
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "enter.bmp") // ïðîâåðÿåì íàõîäèìñÿ ëè ìû íà ñòðàíèöå âõîäà åñëè äà òî -
$check3 = 1
$hwnd = wndfind("Waterfox") // àíãëèéñêèé
setkblayout($hwnd, 1033)
LCLICK($_return1+30, $_return2+30)// êëèêàåì â îáëàñòü ñ ââåäåíèåì ëîãèíà
wait(3)
KEYSTRING ("mustung94fre", 100 )
KEYDOWN (#SHIFT)
KEYSTRING ("2", 100 )
KEYUP (#SHIFT)
KEYSTRING ("mail.ru", 100 )
KEYPRESS(13)
WAIT(3)
END_IF
END_CYC
$check1 = 0
$time = $_time_t + 60
WHILE(($check1 = 0) & ($time > $_time_t))
GETSCREEN
wait(1)
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "pass.bmp")
LCLICK($_return1+30, $_return2+30)
KEYSTRING ("ztc35sq90", 100 )
KEYPRESS(13) //enter âõîäèì
$check1 = 1
WAIT(5)
END_IF
END_CYC
-
Уже работает больше половины кода!!!! Вход в аккаунт набор паролей пойск игры заход в игру.
В самой игре не ищет кнопки почему то..... интересно возможны ли условия типа -
HINTPOPUP(bla,bla)
$check7 = 0
WHILE(($check7 = 0) & ($time > $_time_t))
GETSCREEN
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "letter.bmp") & (0,0, $_xmax,$_ymax, "letter1.bmp")
LCLICK($_return1+5, $_return2+5)
$check7 = 1
WAIT(5)
else
wait(5)
HINTPOPUP("Ñòàäèÿ 7", "Ïèñüìà íå îòêðûëèñü - ïðîâåðÿåì.")
goto(Intergame)
END_IF
END_CYC
всегда говорит что не найдено хотя картинка есть.....
-
Уже работает больше половины кода!!!! Вход в аккаунт набор паролей пойск игры заход в игру.
Я вижу это приложение на mail.ru?
Написал, молодец. Но лучше это аккуратненько стереть и написать так:
$app = "609744" // номер приложения в моём мире. 609744 Зомби Ферма
$log = "login" // логин
$domen = "mail.ru" // домен
$pass = "password" // пароль
EXECUTE("firefox.exe", STRCONCAT ("win.mail.ru/cgi-bin/auth?page=http://my.mail.ru/apps/",$app,"?ref=promo&post=&Login=", $log, "&Domain=", $domen, "&Password=", $pass, "&level=0"))
а потом уже ждать появление окна.
Если аккаунт один, логин, пароль и домен напрямую вписать в EXECUTE без переменных.
-
Писать через KEYSTRING пароли не слишком удобно. При этом раскладки в кликере и целевом окне должны быть английскими.
Андрей. Говоришь правильно, но этот твой аргумент встречаю уже не первый раз. При вставке из буфера обмена, раскладка тоже влияет как ни странно. Использование буфера обмена от проблем с раскладками не спасает. Хотя помогает от многого другого.
-
Спасибо за советы уважаемые господа, не особо внимательно читавшим топик напомню что скрипт писал для vk.com однако это не имеет никакого значения я написал код который буквально обходит все препятствия (перемещение кнопок . новые окна и уведомления) все это моя програмка умненько закрывает и дело казалось бы в шляпе но нет ....
я тут уже научился роботать с подпрограммами - очень удобно - прекрасная альтернатива го то но не всегда.
у меня такая задача
в игре пользователь видит карту, на ней 5 точек куда надо сходить (кликнуть) чтобы собрать ресы (соотвественно нажать крупку "собрать" но есть проблемы.
значки "почти одинаковые" тоесть сам значек пункта один и тот же но расположен в разных фонах, поэтому с циклом дела не получаются.
да и по пути нам могут вылести 2 уведомления -1 о санитарах 2 о пациенте (тоже надо кликать = закрыть)
как я придумал
1 есть подпрограмма распознования кнопки собрать. тоесть как только я дойду до пункта и если уведомлений нет что как раз выпадает на else то программа распознавания кликнет на клавишу и дело в шляпе.
2 есть подпрограмма распознающая уведомления тоесть если вы кликнули на иконку прошло время но кнопки собрать нету то как раз else первой подпрограммы передает управление программе 2 которая закрывает вредителя и передает управление в точку "
где комнаты в которые надо сходить поочередно выбираются."
итак как же написать такою подпрограмму которая как цикл запускала бы поочередно все комнаты и кликала на них а в случае уведомлений передавала бы управленеие другим, но когда операции бы закончились с закрытием, то путешествие началось бы с той комнаты на которой прервалось.
надеюсь хоть кто то понял этот бред.
-
В самой игре не ищет кнопки почему то..... интересно возможны ли условия типа -
HINTPOPUP(bla,bla)
$check7 = 0
WHILE(($check7 = 0) & ($time > $_time_t))
GETSCREEN
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "letter.bmp") & (0,0, $_xmax,$_ymax, "letter1.bmp")
LCLICK($_return1+5, $_return2+5)
$check7 = 1
WAIT(5)
else
wait(5)
HINTPOPUP("Ñòàäèÿ 7", "Ïèñüìà íå îòêðûëèñü - ïðîâåðÿåì.")
goto(Intergame)
END_IF
END_CYC
всегда говорит что не найдено хотя картинка есть.....
Не ты первый пытаешься засунуть логический AND в IF_PICTURE_IN
Время от времени это пытаются сделать. Так писать нельзя.
По последнему посту.
Если честно, ничего не понял. Думаю ты тоже. Ты для себя хоть схемку набросай что после чего, думаю тогда и помощь не понадобится.
Напомни, где ты писал что скрипт для контакта? Да и для контакта можно сделать подобное.
-
Оставил отдельный кусок который может работатаь без предидущего кода и никак с ним не связан шлавное чтобы все действия выполняемые предидущим кодом заранее выполнил пользователь.
// Выбор комнат
Error:
sub(timer)
$TaskComplited=0
while($TaskComplited !=5)
gosub(Chose)
wait(10)
HINTPOPUP("Стадия 8", "Test zone")
// все сабы перенесены вниз далле только сабы и их взаимодействие.
GOSUB(Chose)
SUB(Chose) //1 комната
$check1 = 0
$time = $_time_t + 120 // 2 минуты
WHILE(($check1 = 0) & ($time > $_time_t))
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "room1.bmp")
HINTPOPUP("Стадия 9", "Найдена комната 5")
LCLICK($_return1+20, $_return2+20)
wait(10)
$check1 = 1
else
HINTPOPUP("Стадия 9", " Не найдена комната 5 поиск следующей.")
gosub(chose1)
end_if
end_cyc
gosub(Taking)
end_sub
SUB(Chose1) //2 комната
$check1 = 0
$time = $_time_t + 120 // 2 минуты
WHILE(($check1 = 0) & ($time > $_time_t))
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "room2.bmp")
LCLICK($_return1+20, $_return2+20)
wait(10)
$check1 = 1
HINTPOPUP("Стадия 9", "Найдена комната 4")
else
HINTPOPUP("Стадия 9", " Не найдена комната 4 поиск следующей.")
gosub(chose2)
end_if
end_cyc
gosub(Taking)
end_sub
SUB(Chose2) //3 комната
$check1 = 0
$time = $_time_t + 120 // 2 минуты
WHILE(($check1 = 0) & ($time > $_time_t))
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "room3.bmp")
HINTPOPUP("Стадия 9", "Найдена комната 3")
LCLICK($_return1+20, $_return2+20)
wait(10)
$check1 = 1
else
HINTPOPUP("Стадия 9", " Не найдена комната 3 поиск следующей.")
gosub(chose3)
end_if
end_cyc
gosub(Taking)
end_sub
SUB(Chose3) // 4 комната
$check1 = 0
$time = $_time_t + 120 // 2 минуты
WHILE(($check1 = 0) & ($time > $_time_t))
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "room4.bmp")
LCLICK($_return1+20, $_return2+20)
wait(10)
$check1 = 1
HINTPOPUP("Стадия 9", "Найдена комната 2")
wait(10)
else
HINTPOPUP("Стадия 9", " Не найдена комната 2 поиск следующей.")
gosub(chose4)
end_if
end_cyc
gosub(Taking)
end_sub
SUB(Chose4) // 5 комната
$check1 = 0
$time = $_time_t + 120 // 2 минуты
WHILE(($check1 = 0) & ($time > $_time_t))
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "room5.bmp")
LCLICK($_return1+20, $_return2+20)
wait(10)
$check1 = 1
HINTPOPUP("Стадия 9", "Найдена комната 1")
wait(10)
else
HINTPOPUP("Стадия 9", " Не найдена комната 1 поиск следующей.")
gosub(chose5)
end_if
end_cyc
gosub(Taking)
end_sub
SUB(Chose5) // 6 комната
$check1 = 0
$time = $_time_t + 120 // 2 минуты
WHILE(($check1 = 0) & ($time > $_time_t))
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "room6.bmp")
LCLICK($_return1+20, $_return2+20)
wait(10)
$check1 = 1
HINTPOPUP("Стадия 9", "Найдена комната 6")
wait(10)
else
HINTPOPUP("Стадия 9", " Не найдена комната 6 поиск следующей.")
gosub(chose6)
end_if
end_cyc
gosub(Taking)
end_sub
SUB(Chose6) // 7 комната
$check1 = 0
$time = $_time_t + 120 // 2 минуты
WHILE(($check1 = 0) & ($time > $_time_t))
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "room7.bmp")
LCLICK($_return1+20, $_return2+20)
wait(10)
$check1 = 1
HINTPOPUP("Стадия 9", "Найдена комната 7")
wait(10)
else
HINTPOPUP("Стадия 9", " Не найдена комната 7 поиск следующей.")
gosub(chose7)
end_if
end_cyc
gosub(Taking)
end_sub
SUB(Chose7) // 8 комната
$check1 = 0
$time = $_time_t + 120 // 2 минуты
WHILE(($check1 = 0) & ($time > $_time_t))
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "room8.bmp")
LCLICK($_return1+20, $_return2+20)
wait(10)
$check1 = 1
HINTPOPUP("Стадия 9", "Найдена комната 8")
wait(10)
else
HINTPOPUP("Стадия 9", " Не найдена комната 8 поиск следующей.")
gosub(chose)
end_if
end_cyc
gosub(Taking)
end_sub
wait(5)
//Собирательство
SUB(Taking)
wait(10)
HINTPOPUP("Стадия 9", "Ищем клавишу взять.")
Wait(10)
$check1 = 0
$time = $_time_t + 120 // 2 минуты
WHILE(($check1 = 0) & ($time > $_time_t))
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "take.bmp")
LCLICK($_return1+5, $_return2+5)
HINTPOPUP("Стадия 9", "Собираем дела Подпрограмма проверки клавиши взять")
wait(10)
gosub(chose)
$check1 = 1
wait(10)
Else
HINTPOPUP("Стадия 9", "Взять - не найдено, видимо закрыто уведомлениями. Переход к Attention")
gosub(ATTENTION1)
END_IF
END_CYC
END_SUB
SUB(ATTENTION1)
wait(10)
GETSCREEN
$check1 = 0
$time = $_time_t + 120 // 2 минуты
WHILE(($check1 = 0) & ($time > $_time_t))
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "sanitars.bmp") // что делать если уведомление о санитарах.
HINTPOPUP("Стадия 9", "Получено уведомление о санитарах")
wait(5)
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "hide.bmp") // в этом уведомлении должна быть клавиша - затаиться. по ней и кликаем.
HINTPOPUP("Стадия 9", "Найдена кнопка- затаиться."
LCLICK($_return1+5, $_return2+5)
wait(5)
END_IF
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "go.bmp") // далее появится клавиша "продолжить."
HINTPOPUP("Стадия 9", "Найдена кнопка- идти дальше."
LCLICK($_return1, $_return2) // клик по этой клавише.
END_IF
else
HINTPOPUP("Стадия 9", "Это не уведомление о санитарах, проверка по уведомлению о больном."
END_IF
$Check1 = 1
END_CYC
gosub(ATTENTION2)
END_SUB
SUB(ATTENTION2)
//2 пациент.
GETSCREEN
$check1 = 0
$time = $_time_t + 120 // 2 минуты
WHILE(($check1 = 0) & ($time > $_time_t))
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "seek.bmp") // что делать если уведомление о больном.
HINTPOPUP("Стадия 9", "Получено уведомление о больном."
wait(5)
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "talk.bmp") // в этом уведомлении должна быть клавиша - "поговорить". по ней и кликаем.
HINTPOPUP("Стадия 9", "Найдена кнопка - поговорить."
wait(5)
LCLICK($_return1, $_return2)
END_IF
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "go.bmp") // далее появится клавиша "продолжить."
HINTPOPUP("Стадия 9", "Найдена кнопка - идти дальше."
wait(5)
LCLICK($_return1, $_return2) // клик по этой клавише.
wait(5)
END_IF
END_IF
$Check1 = 1
END_CYC
gosub(chose)
END_SUB
//SUBs
// 1. Popups Саб для закрытия уведомлений.
SUb(popups)
HINTPOPUP("Стадия 6", " Избавляемся от уведомлений")
$check6 = 0
$time = $_time_t + 10
WHILE(($check6 = 0) & ($time > $_time_t))
GETSCREEN
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "hero.bmp") // герой.
//если он найден то переход к $Moving
HINTPOPUP("Стадия 6", "Уведомлений нет")
$check6 = 1
WAIT(5)
goto(Moving)
Else // если герой закрыт уведомлениями то ищем кнопки типа "ок" "закрыть" "продолжить" .
HINTPOPUP("Стадия 6", "Герой не найден. ПОиск уведомлений")
wait(10)
GETSCREEN
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "cancel.bmp")
HINTPOPUP("Стадия 6", "Найдена кнопка закрыть")
LCLICK($_return1, $_return2) //закрываем
END_IF
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "continue.bmp")
HINTPOPUP("Стадия 6", "Найдена кнопка продолжить")
LCLICK($_return1, $_return2) // кликаем если есть
END_IF
// возвращаемся к проверки перса. и так мы будем вовращаться
//пока все подобные кнопки не нажмутся если все ок переходим к $moving
WAIT(10)
END_IF
END_CYC
end_sub
// 2.Map. Саб для открытия карты
SUB(MAP)
$check1 = 0
$time = $_time_t + 120 // 2 минуты
WHILE(($check1 = 0) & ($time > $_time_t))
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "map.bmp")
LCLICK($_return1+20, $_return2+20)
HINTPOPUP("Стадия 8", "Идем гулять")
$check1 = 1
wait(5)
else
HINTPOPUP("Стадия 8", "Карта не найдена - возможны уведомления")
$check1 = 1
gosub(popups)
END_IF
END_CYC
$check1 = 0
$time = $_time_t + 120 // 2 минуты
WHILE(($check1 = 0) & ($time > $_time_t))
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "A.bmp")
LCLICK($_return1+5, $_return2+5)
HINTPOPUP("Стадия 8", "Можно гулять")
$check1 = 1
wait(5)
else
HINTPOPUP("Стадия 8", "Карта не найдена - возможны уведомления")
$check1 = 1
END_IF
END_CYC
wait(10)
END_SUB
// Закрытие, не работает.
end:
HINTPOPUP("Скрипт закончил работу", "Уведомление")
WAIT(5)
Else
WAITMS(100)
END_IF
END_CYC
WAIT(1)
IF($check2 = 1)
EXECUTE("taskkill","/IM firefox.exe") // если все удачно убиваем процесс браузера
EXECUTE("taskkill", "/IM Clickermann.exe") // и кликермана
Else
EXECUTE("taskkill","/IM firefox.exe") // если не удачно убиваем браузер и повторяем
WAIT(5)
END_IF
-
Охх
(http://lurkmore.so/images/thumb/0/0b/CaptainFacepalm.png/250px-CaptainFacepalm.png)
Твой код редкостная белебердень, а все потому что ты справку не дочитываешь до конца!
Во первых SUB не может быть внутри каких то условий или циклов!
Во вторых SUB не может быть внутри другого SUBа!
Во в третьих нажми в редакторе "Волшебную палочку" код выстроится, и если посмотреть у тебя в конце будет перекос. Уж не знаю виной тому SUBы где попало но скорее всего не хватает где то завершающего END_
SUBы лучше всего размещать в конце кода. Сам SUB это изолированный кусок кода вызываемый только по GOSUB после выполнения возвращается на следующую строку после GOSUB.
В общем переделывай этот бред ибо на это смотреть невозможно....
Изучи каждую функцию в скрипте отдельно, читай справку делай отдельный скрипт и смотри как это работает. А то ты ни черта не знаешь а уже сразу пытаешься сделать сложный код.
-
сделаем.
-
Что значит не может быть внутри условий и циклов тоесть
SUB(Chose) //1 комната
$check1 = 0
$time = $_time_t + 120 // 2 минуты
WHILE(($check1 = 0) & ($time > $_time_t))
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "room1.bmp")
HINTPOPUP("Стадия 9", "Найдена комната 5")
LCLICK($_return1+20, $_return2+20)
wait(10)
$check1 = 1
else
HINTPOPUP("Стадия 9", " Не найдена комната 5 поиск следующей.")
gosub(chose1)
end_if
end_cyc
gosub(Taking)
end_sub
так нельзя?
Конекретно таких конструкций как
SUB1
SUB2
END_SUB
END_SUB
нет и не было.... если вы об этом то явно что то упустили....
Но внутри других сабов у меня есть только указатели на другие при выполнении условий цикла, иуказатели еще на другие при невыполнении условий.... неужели так нельзя?????????????/
ВНИМАНИе - ПЕРЕДЕЛАЛ предыдущий пост с кодом бота, по правилам что вы указали.... вроде смотреть можно
-
Что значит не может быть внутри условий и циклов тоесть
SUB(Chose) //1 комната
$check1 = 0
$time = $_time_t + 120 // 2 минуты
WHILE(($check1 = 0) & ($time > $_time_t))
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "room1.bmp")
HINTPOPUP("Стадия 9", "Найдена комната 5")
LCLICK($_return1+20, $_return2+20)
wait(10)
$check1 = 1
else
HINTPOPUP("Стадия 9", " Не найдена комната 5 поиск следующей.")
gosub(chose1)
end_if
end_cyc
gosub(Taking)
end_sub
так нельзя?
Конекретно таких конструкций как
SUB1
SUB2
END_SUB
END_SUB
нет и не было.... если вы об этом то явно что то упустили....
Но внутри других сабов у меня есть только указатели на другие при выполнении условий цикла, иуказатели еще на другие при невыполнении условий.... неужели так нельзя?????????????/
Как не было??? Строка 3 и сразу смотри строка 16.
И там же SUB строки 16 внутри цикла while строка 5
(номера строк из большого кода)
-
Попытался вникнуть в то, что ты наворотил. Это кошмар. Если когда-то и будет отрабатывать, то это будет чудо.
Сейчас не берём в учёт вложенные сабы.
SUB(Chose) вызывает gosub(Taking) который сам вызывает SUB(Chose). Это что за рекурсия? Ты сам не запутался что куда должно попадать на каком этапе?
Туда же: SUB(Chose) при не нахождении картинки вызывает SUB(Chose1), который при не нахождении картинки вызывает SUB(Chose2).... последний вызывает SUB(Chose). Я себе представляю как это всё будет возвращаться назад, если ничего не найдётся во всех комнатах раз эдак 100.
Причём на все эти последовательные Сабы у тебя одна ОБЩАЯ переменная $check1 на выход из цикла. Не знаю, может так и задумано, но как минимум при нахождении не в первой комнате gosub(Taking) будет вызываться 2 раза подряд. А на самом деле столько, во сколько комнат ты "нырнёшь". Найдёшь в восьмой, при обратном откате из всех подпрограмм gosub(Taking) вызовется 8 раз подряд.
Подпрограммы это не GOTO! Не используй их так. Чуть понятней распиши порядок я покажу как сделать. Пока ясной картины порядка действий не вижу.
-
Спасибо Винт я 2 дня в программировании на скриптах,
если интересно зайди в Вк гейм безумие))) я там шариться не люблю вот и пишу бота чтобы на все готовенькое щас все со скринами поясню , постараюсь как можно подробнее , начну с того участка, до которого все работает отлично всегда, и не вызввает , нареканий, хорошо? поехали.
Итак после открытия карты что мы видим... это основная карта, на ней расположены значки в виде денег, окруженных красными точками,
(http://s7.postimg.org/uy5t8ks0b/Karta1.png)
Если мы загрузим карту еще раз, (зайдем в магазин или кумнату, и вернемся на карту) то расположение значков поменяется,
(http://s7.postimg.org/62cdl35cb/image.png)
и так оно будет менять каждый раз при перезагрузке игры\карты\перезаходе кароч каждый раз разная,
Почему я сдела чтобы сhose выбирал chose1 все просто, поскольку комбинации всегда разные то надо искать все комбинации, (я просто не дописал скрипт на все комнаты, поэтому замкнул сhose5 на chose и действительно происходило зацикливание, сделал я это потому что не знал куда отправить интерпритатор после того как все комнаты проверятся, что по поводу check то я плохо разбираюсь в циклах вот и сделал так... надо сделать так как вы скажете. продолжаем,
Вот у нас есть карта со значками, как они расположены программа не знает, поэто будет искать все варианты расположения (их не так много надо просто отскринить каждую клетку когда в ней будет значек с деньгами.
1 саб поиска комнаты
Вот она ищет
а) находит - тогда клик, по значку, и герой отправится путешевствовать до него.
передача управление Taking почему? все просто , если все прошло успешно , и герой дошел без уведомлений о нападении, то появится кнопка "Собрать" (Б ищите после закрытой скобки)
как на этой картинке.
( Тогда Taking
а) найдет кнопку и нажмет ее, и передаст управление обратно в Chose чтобы искать новую комнату. следите?
(http://s7.postimg.org/dwcz6hd57/image.png)
Б) не найдет кнопку "Взять" почему может не найти?
вот почему -
(http://s7.postimg.org/rtv5bsb7v/image.png)
тогда сработает ELSE программы Taking и управление передастся в ATTENTION1 которая проверит, если ли это избражение на экране,
а) да. Тогда клик по клавише - и закрытие уведомление, передача управления обратно в Chose для поиска комнаты,
б) не находит (другое уведомление (всего их 2 на всю игру) тогда передача управления в ATTENTION2 которая закрое его, и передаст управление в choose. ВОООТ.
)
Б) (choose) не ходит кнопку комнаты, тогда gosub(CHOOSE1) тоесть поиск новой комнаты.
тоесть в той "клетке" нет значка денег или нахолится другой значек, ок?
Играть мне не интересно, мне интресно смогу ли я сломать систему - в этом азарт, игра чушь послная, столько времени люди удивают, а я хочу все и сразу, поэтому я тут, ))))))))))))))))))) :) :) :) :) :) :) :) :) :) ;D ;D
тоесть ,
идеальная ситуация,
а) все проходит хорошо
Choose - нашла картинку комнаты, - передала управление в Taking , та кликнула собрать и передала управление в CHoose обратно , соотвествено choose2 уже будет искать вторую комнату, (как вот это сделать чтобы в choose1 не передавалось управление, если она прошла уже и все хорошо, чтобы снова ее не искало потому что 2 раза собрать не получится)
-
Ды забей ты на это безумие! Эта игра уже полный тухляк, и я переметнулся на город мертвых. Там та же система но все как у людей. И с балансом все норм и кланы встроенные в игру и тд. А от этой игры уже ниче нормального не жду.
Говорю тебе зааабей...
-
Как забей? я тут перебор комнат пишу... :) :) :)
JulianDC вот то, что касается перебора и работы комнат:
// перебор комнат
$room = 0
FOR($room, $room<8) // восемь комнат
GETSCREEN
IF_PICTURE_IN (0,0,$_xmax,$_ymax,STRCONCAT("room",$room,".bmp"))
LOGWRITE ("Стадия 9", "Найдена комната ",$room)
HINTPOPUP("Стадия 9", "Найдена комната ",$room)
LCLICK($_return1+20, $_return2+20)
wait(10)
GOSUB(Taking)
ELSE
LOGWRITE ("Стадия 9", "Не найдена комната ",$room," поиск следующей.")
HINTPOPUP ("Стадия 9", "Не найдена комната ",$room," поиск следующей.")
WAITMS(300)
END_IF
END_CYC
// обработка комнаты
SUB(Taking)
$time_main = $_time_t + 120 // 2 минуты
WHILE($time_main > $_time_t)
GETSCREEN
// ищем собрать
IF($time_main > $_time_t)
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "take.bmp")
LCLICK($_return1+5, $_return2+5)
$time_main = $_time_t-1
WAIT(5)
END_IF
END_IF
// 1 пациент
IF($time_main > $_time_t)
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "hide.bmp") // клавиша - затаиться.
HINTPOPUP("Стадия 9", "Найдена кнопка- затаиться."
LCLICK($_return1+5, $_return2+5)
GOSUB(GO)
END_IF
END_IF
// 2 пациент
IF($time_main > $_time_t)
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "talk.bmp") // клавиша - "поговорить".
HINTPOPUP("Стадия 9", "Найдена кнопка - поговорить."
LCLICK($_return1, $_return2)
GOSUB(GO)
END_IF
END_IF
WAITMS(100)
END_CYC
LOGWRITE ("Назад к перебору комнат.")
END_SUB
// ждём и кликаем клавишу "продолжить"
SUB(GO)
WAIT(1)
$check2 = 0
WHILE($check2 = 0)
GETSCREEN
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "go.bmp") // клавиша "продолжить."
HINTPOPUP("Стадия 9", "Найдена кнопка- идти дальше."
LCLICK($_return1, $_return2) // клик по этой клавише.
$check2 = 0
$time_main = $_time_t-1
WAIT(1)
ELSE
WAITMS(300)
END_IF
END_CYC
END_SUB
// перебор комнат - соответственно сам перебор, остальное сабы к нему.
Перебор сделан на разных (твоих) картинках. Хотя я бы делал по другому: искал бы одну картинку горы монет в разных областях. Но так наверно проще сделать, хоть и больше картинок готовить.
Ты не копируй тупо пример Андрея не разобравшись. У тебя при любом поиске и надо и не надо, какие-то чеки ($check), таймы ($time) ни к чему не ведущие и нигде не использующиеся... Короче, не копируй всё подряд, подумай что нужно и для чего.
-
Спасибо Oraven как я говорил дело не в игре а в принципе - сломать систему , город мертвых гляну обязательно, спасибо за совет.
Vint Сейчас буду тестить твой скрипт в игре посмотрим что получится.... я еще не до конца понимаю как он работает , рад что ты понял что нужно мне, и спасибо за помощь, сейчас отпишусь в результаты, для ускорения работы , предлагаю списаться в vk.com если можно добавлю тя в друзья, если не против....
-
я правльно понял что это скрипт для каждой отдельной картинки, всего картинок столько сколько комбанаций,
Я И САМ РАД СДЕЛАТЬ ПОИСК по одной картинке, но тут 2 но
1 как заставить программу не уликать на ту же самую картинку,
2 картинки значком похожи но отличаются ФОНОМ на котором они расположены, как исправить, задать , CURRENCY 50-40%? какой бы был код под одну картинку?
-
Что то мне подсказывает что твой скрипт под 8 картинок, но
1 картинок чуть ли не 18, да так и есть всего 18 возможных положений, , я так понял если он найдет картинку то передаст в Taking что верно , а есть не найдет ? Т как мне возвращать после Taking, ATTENTION1 или 2 интрепритатор к поиску картинок???????,
2 как воткнуть в код образцы всех 18 катринок?
-
Что то мне подсказывает что твой скрипт под 8 картинок, но
1 картинок чуть ли не 16, я так понял это реашется заменой цифр ,
2 как воткнуть в код образцы всех 16 катринок?
там где у меня написано про количество картинок, меняешь 8 на своё количество.
Делать под одну... Для этого скажи после действий над комнатой положение меняется? Если да, то важно ли посещать разные комнаты по возможности или достаточно первую попавшеюся?
-
Что то мне подсказывает что твой скрипт под 8 картинок, но
1 картинок чуть ли не 18, да так и есть всего 18 возможных положений, , я так понял если он найдет картинку то передаст в Taking что верно , а есть не найдет ? Т как мне возвращать после Taking, ATTENTION1 или 2 интрепритатор к поиску картинок???????,
2 как воткнуть в код образцы всех 18 катринок?
почитай как работает подпрограмма. Весь смысл в том что после отработки подпрограммы выполнение продолжается с места вызова.
картинки называй так, как и называл, меняй только номер.
-
положение комнат меняется только при перезгрузке карты, при тыканьи и переходе по комнатам, не меняестя, на комнату куда дошел герой наносится кровавый символ, означаюшьй присутствие в ней героя,
комнаты надо послетить по очереди, все 5.
-
вы не могли бы приветси конкретный пример как прописавются картинки в цикл, где писать именно,
и как
вот у меня есть 3 файла room1.bmp, room2.bmp, room3.bmp, как прописать их в код чтобы выполнился их последовательный поиск
-
положение комнат меняется только при перезгрузке карты, при тыканьи и переходе по комнатам, не меняестя, на комнату куда дошел герой наносится кровавый символ, означаюшьй присутствие в ней героя,
комнаты надо послетить по очереди, все 5.
Тогда вообще не вопрос. Завтра напишу, или вечером. Можешь и сам посмотреть, здесь на форуме есть.
-
Думаю не стоит, все заработало на ура тоесть,
программа ищет комнаты , и тыкает по ним, затем собирает, все ресы, но иногда происходит такое что она вновь тыкает комнату где была, а там еще на готово (8ч) интервал сбора, соответсвенно выскакиет уведомление и все портит, я придумал как это обойти,
там есть надпись "Осталось" я думаю прежде чем передавать управление в Taking Нужно написать подпрограмму проверяющую что Осталось = 0 там так и написано можно скрин сделать, и если картинка собрать = 0 найдна то тыкать а если нет то выбирать другую комнату, что скажете??????????????
-
вы не могли бы приветси конкретный пример как прописавются картинки в цикл, где писать именно,
и как
вот у меня есть 3 файла room1.bmp, room2.bmp, room3.bmp, как прописать их в код чтобы выполнился их последовательный поиск
Наделай этих румов с цифрами в имени от 1 до 18. В строке где написано 8 комнат в условии поменяй 8 на 18. Всё.
-
Так и сделал, догадался до вашего поста)))))))))))
по поводу проверки готова комната или нет, чтобы не тыкал в ту где был,
[code]Chose:
// перебор комнат
HINTPOPUP("Стадия 9", "Выполняется поиск комнат... ")
$room = 1
FOR($room, $room<19) // восемь комнат
GETSCREEN
IF_PICTURE_IN (0,0,$_xmax,$_ymax,STRCONCAT("room",$room,".bmp"))
LOGWRITE ("Стадия 9", "Найдена комната ",$room)
HINTPOPUP("Стадия 9", "Найдена комната ",$room)
LCLICK($_return1+20, $_return2+20)
wait(10)
GOSUB(Learning)
ELSE
LOGWRITE ("Стадия 9", "Не найдена комната ",$room," поиск следующей.")
HINTPOPUP ("Стадия 9", "Не найдена комната ",$room," поиск следующей.")
WAITMS(300)
END_IF
END_CYC
// Проверка готова ли комната к сбору.
SUB(Learning)
wait(10)
HINTPOPUP("Стадия 9", "Проверяем готова ли комната к сбору.")
Wait(10)
$check1 = 0
$time = $_time_t + 120 // 2 минуты
WHILE(($check1 = 0) & ($time > $_time_t))
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "ready.bmp")
HINTPOPUP("Стадия 9", "Комната готова - передаем управление в Taking")
wait(10)
gosub(Taking)
$check1 = 1
wait(10)
Else
HINTPOPUP("Стадия 9", "Комната не готова или уведомления")
goto
END_IF
END_CYC
END_SUB
//СОбирательство
SUB(Taking)
wait(10)
HINTPOPUP("Стадия 9", "Ищем клавишу взять.")
Wait(10)
$check1 = 0
$time = $_time_t + 120 // 2 минуты
WHILE(($check1 = 0) & ($time > $_time_t))
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "take.bmp")
LCLICK($_return1+5, $_return2+5)
HINTPOPUP("Стадия 9", "Собираем дела Подпрограмма проверки клавиши взять")
wait(10)
$check1 = 1
wait(10)
Else
HINTPOPUP("Стадия 9", "Взять - не найдено, видимо закрыто уведомлениями. Переход к Attention")
gosub(ATTENTION1)
END_IF
END_CYC
END_SUB
[/code]
-
работать перестало.................. :-\
Вот окончательный код - теперь делается так, ничего никуда не тыкается, просто проц на 100% и уделомление что скрипт закончил работу....
Chose:
// перебор комнат
HINTPOPUP("Стадия 9", "Выполняется поиск комнат... ")
$room = 1
FOR($room, $room<19) // восемь комнат
GETSCREEN
IF_PICTURE_IN (0,0,$_xmax,$_ymax,STRCONCAT("room",$room,".bmp"))
LOGWRITE ("Стадия 9", "Найдена комната ",$room)
HINTPOPUP("Стадия 9", "Найдена комната ",$room)
LCLICK($_return1+20, $_return2+20)
wait(10)
GOSUB(Taking)
ELSE
LOGWRITE ("Стадия 9", "Не найдена комната ",$room," поиск следующей.")
HINTPOPUP ("Стадия 9", "Не найдена комната ",$room," поиск следующей.")
WAITMS(300)
END_IF
END_CYC
//СОбирательство
SUB(Taking)
wait(10)
HINTPOPUP("Стадия 9", "Ищем клавишу взять.")
Wait(10)
$check1 = 0
$time = $_time_t + 120 // 2 минуты
WHILE(($check1 = 0) & ($time > $_time_t))
// Проверка готова ли комната к сбору.
wait(10)
HINTPOPUP("Стадия 9", "Проверяем готова ли комната к сбору.")
Wait(10)
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "ready.bmp")
HINTPOPUP("Стадия 9", "Комната готова - передаем управление")
wait(10)
Else
HINTPOPUP("Стадия 9", "Комната не готова или уведомления")
gosub(ATTENTION)
END_IF
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "take.bmp")
LCLICK($_return1+5, $_return2+5)
HINTPOPUP("Стадия 9", "Собираем дела Подпрограмма проверки клавиши взять")
wait(10)
$check1 = 1
wait(10)
Else
HINTPOPUP("Стадия 9", "Взять - не найдено, видимо закрыто уведомлениями. Переход к Attention")
gosub(ATTENTION1)
END_IF
END_CYC
END_SUB
-
В общем я переделал, много переработал , теперь есть хоть какие то сносные результаты, но картинки ищет очень долго (именно комнаты) иногда не находит хотя все 19 положений есть в базе, и это странно , предлагаю потестить вам этот скрипт в игре,
(там прописан переход к проблемному участку кода) тоесть вам надо открыть игру (разрешение 1366х768) чтобы масштаб совпадал, но это по картинке можно сверить, зайти на крту, и включить скрипт, он сразу начнет искать комнаты, и пытаться по ним кликать, в SUB Taking ghtшлось добавить предусловие с поиском картинки Отсалось = Готово. Отнадо предусловие не работает и почему то всегда говорит что комната готова, и это странно.
Просто если вы сами запустите скрипт вам не придется долго и мучительно разузнавать что мне надо, все сразу встанет на свои места, и будет понятно что куда тыкать.... вооооот.
Программу со всеми картинками и скриптами, я залил сюда - http://zalil.ru/upload/34721885, к меня стоит MSE так что проверьте на вирусы и трояны перед запуском, и переименоуйте в RAR соответсвенно.
Жду комментариев.
-
Зачем ты выложил логин и пароль?
Как ты предлагаешь запустить скрипт в разрешении 1366х768, если у меня оно дома 1920х1080, на ноуте 1680х1050, на работе 1280х1024...
Ты опять упорно делаешь по своему и занимаешься копипастом.
Зачем ты упорно везде сунешь кусок:
$check1 = 0
$time = $_time_t + 30 // 2 минуты
WHILE(($check1 = 0) & ($time > $_time_t))
Если ты его почти нигде не используешь? Почти везде ты внутри вызываешь такой же цикл и переменную перезатираешь.
Я написал $room = 0, зачем ты поменял на $room = 1?
У тебя ничего не заработает, пока не приведёшь всё в порядок.
1. Где GETSCREEN? Он то есть, то его пол скрипта нет? что где ищем?...
Давай я тебе на маленьком кусочке покажу, что неправильно точно и во многих местах.
2. wait(5)// поиск кнопки OK
$check1 = 0
$time = $_time_t + 30 // 2 минуты
WHILE(($check1 = 0) & ($time > $_time_t))
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "ok.bmp")
LCLICK($_return1+30, $_return2+10)
HINTPOPUP("Стадия 7", "Ok найдено")
wait(10)
$check1 = 1
else
HINTPOPUP("Стадия 7", "Ok не найдено")
wait(10)
$check1 = 1
goto(close)
END_IF
END_CYC
close:
$check1 = 0
.....
Зачем здесь 2, 3, 4, 9, 13 строки? Что они делают и на что влияют?
У темя прилюбом раскладе нашли/не нашли сразу происходит выход.
Зачем 14 строка? у тебя действие скрипта и так продолжается дальше. По крайней мере в этом варианте.
3. строки 324-335
GETSCREEN
$check1 = 0
$time = $_time_t + 120 // 2 минуты
WHILE(($check1 = 0) & ($time > $_time_t))
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "go.bmp") // далее появится клавиша "продолжить."
HINTPOPUP("Стадия 9", "Найдена кнопка - идти дальше.")
wait(5)
LCLICK($_return1, $_return2) // клик по этой клавише.
wait(5)
$check1 = 1
END_IF
END_CYC
Расписываю что выполняет этот кусок:
Делаем GETSCREEN с которым работает IF_PICTURE_IN.
Задаёшь $time значение текущего времени +120 секунд
Дальше идёт цикл WHILE выполняемый пока картинка не найдена или пока время не вышло.
Внутри цикла ты проверяешь ОДИН ЕДИНСТВЕННЫЙ снимок экрана, который ты сделал раньше и который у тебя НЕ МЕНЯЕТСЯ.
Как работает это чудо:
Если до самого начала нужная картинка успела вылезти и уже была. То происходит клик, ожидание 5 сек. и продолжение скрипта.
Если картинки сразу небыло, весь цикл крутится втупую 2 минуты (твои "долго ищет", ещё бы он долго не искал) не важно вылезла картинка или нет. Потом скрипт ничего не делая идёт дальше. За эти 2 мин картинка может вылезти но не найдётся - скрипт сбился.
Т.к. в ряде случаев "окно" появится не успевают, такая ситуация будет время от времени.
Это только для примера. Так у тебя почти ВЕЗДЕ. Разберись сначала как делаются условия, как пишутся циклы, как происходит анализ экрана и т.п. прочитай наконец справку внимательно.
Здесь исправлять нечего, для стороннего человека проще наверно написать заново.
-
Я человек, прямой если мне сказали - делай так- и картинка найдется, я так и делаю, я привык доверять опыту других людей потому как сам плохо разбираюсь, это модно назвать - доверия (надеюсь вы меня поняли) а можно копи паст, как помотреть.
я думал
1 цикл нужен чтобы не просто проверить наличие картинки но проверять в течении 2 минут.
2 если в цикле найдена картинка, клик сделан, то надо написать чек =1 чтобы выйти из цикла,
3 го то CLOSE нужно бля того чтобы перейти к поиску кнопки выход, то что я написал в коде ЛОГИЧНО но это посути тавтология. и тут вы конечно правы. просто я еще не настолько.... сознательный что ли... не знаю как это назвать.
НИЧЕГО ЗАНОВО ПИСАТЬ НЕ НАДО!!! ВСЕ ОТЛИЧНО РАБОТАЕТ МЕСТА ГДЕ ЦИКЛ НЕ НУЖЕН Я УБЕРУ!!
МНЕ ОДИН УЧАСТОК ОСТАЛСЯ!! ЧТО ТАМ !!! РАЗБЕРЕМСЯ!!!!!
-
ROOM = 1 я написал потому что картинки нумеровал начиная с ROOm1 тоесть room просто картинки нет. ВСЕ ПРАВИЛЬНО
-
Цикл вайл я так понял надо выключать после выполнения условий которые в нем записаны, ведь он то выполняется, пока чек =0 и пока время 120 не прошло, значит если иф выполнился неплохо было бы переписать чек=1 ааа?? или я чето не догоняю, и того половина того что вы написали отпадает,
что насчет гетч, согласен полностью, непрофессионал, косяки это - норма, где надо засунул гетсккрин в в цикл, чтобы все трульно было, где его не было - добавил.
-
Вот интересно как скрипт картинки искал если реально я забыл GETSCREEN в куче циклов прописать............. загадка, ведь находил же и кликал, жестяк какойто
-
Я человек, прямой если мне сказали - делай так- и картинка найдется, я так и делаю, я привык доверять опыту других людей потому как сам плохо разбираюсь, это модно назвать - доверия (надеюсь вы меня поняли) а можно копи паст, как помотреть.
я думал
1 цикл нужен чтобы не просто проверить наличие картинки но проверять в течении 2 минут.
2 если в цикле найдена картинка, клик сделан, то надо написать чек =1 чтобы выйти из цикла,
3 го то CLOSE нужно бля того чтобы перейти к поиску кнопки выход, то что я написал в коде ЛОГИЧНО но это посути тавтология. и тут вы конечно правы. просто я еще не настолько.... сознательный что ли... не знаю как это назвать.
НИЧЕГО ЗАНОВО ПИСАТЬ НЕ НАДО!!! ВСЕ ОТЛИЧНО РАБОТАЕТ МЕСТА ГДЕ ЦИКЛ НЕ НУЖЕН Я УБЕРУ!!
МНЕ ОДИН УЧАСТОК ОСТАЛСЯ!! ЧТО ТАМ !!! РАЗБЕРЕМСЯ!!!!!
Ты задавал конкретный вопрос по поиску, тебе давали конкретный ответ. Ты из ответа выкинул строки, после чего действие работы нарушилось. Сравни твой кусок с поиском и скрипт данный тебе в ответе.
Это нужно не везде. Тем более не нужны такие большие ожидания при поисках того, что по логике игры может появиться, а может и нет.
Если ты сделал цикл, в любых вызовах SUB из этого цикла лучше не трогать значения переменных из условия выше (если это не задумано специально). Переходы изнутри цикла по GOTO правильней совсем исключить.
$room должно быть 0
$room = 0
Прочитай в справке как работает цикл FOR. Что когда меняется.
-
Цикл вайл я так понял надо выключать после выполнения условий которые в нем записаны, ведь он то выполняется, пока чек =0 и пока время 120 не прошло, значит если иф выполнился неплохо было бы переписать чек=1 ааа?? или я чето не догоняю, и того половина того что вы написали отпадает,
...
В первом примере который дал ничего не отпадает. Думаешь я выдумываю?
Ты создал цикл WHILE с условием $check1 = 0
Внутри цикла у тебя одно действие - поиск картинки.
В обоих случаях (и картинка найдена и нет) ты пишешь $check1 = 1 для выхода из цикла. Спрашивается "Нафига цикл вообще?" Если он всегда будет выполнятся 1 раз.
-
Вот интересно как скрипт картинки искал если реально я забыл GETSCREEN в куче циклов прописать............. загадка, ведь находил же и кликал, жестяк какойто
GETSCREEN срабатывает перед любым вызовом поиска сам, если скрипт запустить прямо из открытого редактора. Такой себе "режим отладки" с капканом. При обычном запуске скрипта не из редактора начнутся косяки.
Это одно. А второе это то, что GETSCREEN в скрипте есть и не один, просто ты его не обновляешь. Это как скриншот в память. Все функции поиска ищут на этом скриншоте. В тех местах где был нужен GETSCREEN, а ты его не сделал он работает со старой не изменённой картинкой.
Пример Ты ищешь комнату. сделал GETSCREEN. Нашёл кликнул по ней. Вылезло окно. Для поиска этого окна тебе нужно сделать новый GETSCREEN. Если ищешь в цикле, делать GETSCREEN каждый раз внутри цикла.
Бывают случаи, когда изменений небыло или они были в другой области, тогда новый GETSCREEN можно не делать.
-
Слишком сложно....
Log Brains//////
Fatal Error/////
Crash.
я почти довел все до ума следуя вашим указания, там где я побоялся что то менять я оставил как есть, потому что не знаю.
скоро пришлю результат.
-
В том то и дело что для опознания надо было делать новые скрины......
Протестил код.... что сказать оргазм мозгов как бы так.
Есть пожелание...
1в вашем кусочке кода почему то никогда не вылазят уведмления
2 Я в курсе что в памяти программы хранится только одна картинка, и каждый гетскрин ее обновляет.
дело в том что перемещения по карте немного ее меняют 1 добавляются кровавые следы и пятна, и еще вылазят доп окошки (не уведомелния)
скажите можно ли как то заставить программу каждый раз перед поиском комнат, обращаться к картинке, которая была сделана,
до всех перемещений вовсе, но чтобы при каждом новом запуске скрипта (полный перезапуск) она делалась новая, в соотвествии с тем что есть на экране (до начала всех перемещений, простите что так замутно....
-
и как я понял чтобы цикл выполнялся адекватно надо так
чек = 0
тайм = таймсус+120
вайл (тайм) & (чек = 1)
ГЕТСКРИН!!!!!
иф_пикт
клик
ЧЕК= 1
елсе
попап= ненайдено
енд_иф
енд_цик
да?
++ можно ли вначале скрипта окошко как в винде типа
начать работу скрипта да\ нет, при бездействии 15 сек закрывать окно и начинать? Функция BREAK Очень подходит , но в ней нет таймера.
да и еще модно ли как то сообщить команду файр фоксу чтобы в привате работал?
-
Когда выскакивают уведомления о санитаре или больном то программа понимает что "что - то " не так и как ей и положено передает управление в подпрограмму Attention которыя в свою очередь должна разобраться с ними, но вот когда дело до этого доходит, код зацикливается. и я не могу понять почуме, выдернул саб ATTENTION отдельно в чистый файл, все равно зацикливается,
wait(5)
HINTPOPUP("Стадия 9", "Ищем сообщения о санитарах или больном..." )
$check11 = 0
$time = $_time_t + 10 // 2 минуты
WHILE(($check11 = 0) & ($time > $_time_t))
GETSCREEN
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "SAN.bmp",-1,70) // в этом уведомлении должна быть клавиша - затаиться. по ней и кликаем.
HINTPOPUP("Стадия 9", "Это уведомление о санитарах - затаимся или пройдем мимо?." )
wait(4)
$check11 = 1
ELSE
HINTPOPUP("Стадия 9", "Это не уведомление о санитарах, проверка по уведомлению о больном.")
gosub(ATTENTION2)
END_IF
end_cyc
// рандомная переменная выбарет одну из двух кнопок
$Choise=RND(1,2)
if($Choise = 1)
LCLICK($_return1+125, $_return2+260)
HINTPOPUP("Стадия 9", "Затаились")
wait(5)
gosub(GO)
else
LCLICK($_return1+125, $_return2+285)
HINTPOPUP("Стадия 9", "Прошли мимо")
wait(5)
gosub(GO)
END_IF
END_SUB
SUB(ATTENTION2)
wait(5)
$check12 = 0
$time = $_time_t + 10 // 2 минуты
WHILE(($check12 = 0) & ($time > $_time_t))
GETSCREEN
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "Seek.bmp") // Уведомление о больном.
HINTPOPUP("Стадия 9", "Это уведомление о Больном - поговрим, или пройдем мимо?.")
$check12 = 1
wait(4)
END_IF
end_cyc
// рандомная переменная выбарет одну из двух кнопок
$Choise=RND(1,2)
if($Choise = 1)
LCLICK($_return1+125, $_return2+260)
HINTPOPUP("Стадия 9", "Поговорили")
wait(5)
gosub(GO)
else
LCLICK($_return1+125, $_return2+285)
HINTPOPUP("Стадия 9", "Прошли мимо")
wait(5)
gosub(GO)
END_SUB
SUB(go)
$check2 = 0
$time = $_time_t + 10 // 2 минуты
WHILE(($check2 = 0) & ($time > $_time_t))
GETSCREEN
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "go.bmp") // далее появится клавиша "продолжить."
HINTPOPUP("Стадия 9", "Найдена кнопка - идти дальше.")
LCLICK($_return1+75, $_return2+15) // клик по этой клавише.
$Check2 = 1
else
HINTPOPUP("Стадия 9", "Кнопка идти дальше не найдена.")
END_IF
END_CYC
END_SUB
HINTPOPUP("Стадия 9", "Сообщения закрыты.")
Все вроде по человечески че ему надо?
-
Нет завершающего END_IF
Ну ты все таки страшный чел, прям маньяк, так извращаться над кликером ;D ;D ;D
-
Чуваааак ))))) это БЕЗУМИЕ )))
-
Вроде все хорошо, но зацикливается, в любом случае проц на 100% загружен .... вот интрересно, предположим он картинки не находит , что же ведет его к зацикливанию.... не понимаю.....
-
АААААЕЕЕЕЕЕ!!!!!!!!!!!! ААААА да детка это оно самое !!!! даааа)))))))))) круто))))
$Choise=RND(1,2) Вот ошибка надо так - $Choise = RND(1,2) Заработало!!!!!!!!! аеееееееее...............игра на ладони. я повелитель кароч.
-
пробелы роли не играют. У тебя надеюсь последняя версия кликера 4.7 SE 002 ????
-
Оравен, ну если я только что убедился что скрипт заработал как только я пробелы проставил и перестал когда вернул, наверное это о чем то говорит? Кстати я закончил код все работает прекласно, теперь только ресы набивать.
Остались околотемные вопросы.
1 сделать лису в привате.
2 запуск каждый день (планировщик кривой какой то) далекий....
3 Окно запуска (да\нет) на 15 сек (как когда новоре разрешение применяешь на экран ) при старте программы...
ааахаах я поржал прикинь она реально из 2 кнопок выбирает сама какую ей тыкнуть))) иногда угабывает))) блин я кажись упоролся.
-
Версия да последняя.
-
Там рандом вообще ненужен. Нажимать надо вторую кнопку, потому что на том же месте будет кнопка ЗАКРЫТЬ. Клик Клик и мы избавились от этой хрени.
-
Ты прикола не понял, смысл то в том чтобы прога выбирала а после этого саб GO сам кликне идти дальше
-
Ребятки скрипт начал тыкать в рустое пространство а не по комнатам..... в чем дело..... все работало.
Chose:
$END = 0
$_return1 = 0
$_return2 = 0
// перебор комнат
HINTPOPUP("Стадия 9", "Выполняется поиск комнат... ")
$room = 0
FOR($room, $room<19) // Девятнадцать положений комнат
GETSCREEN
IF_PICTURE_IN (0,0,$_xmax,$_ymax,STRCONCAT("room",$room,".bmp"),-1,90)
HINTPOPUP("Стадия 9", "Найдена комната " $room)
move($_return1+20, $_return2+20)
wait(2)
move($_return1+22, $_return2+17)
wait(2)
LCLICK($_return1+18, $_return2+14)
wait(4)
move($_return1, $_return2-350) // Убираем, указатель от греха подальше...
wait(10)
GOSUB(Taking)
IF(ATT = 1)
GOSUB(Taking)
ELSE
HINTPOPUP ("Стадия 9", "Не найдена комната поиск следующей.")
WAITMS(200)
END_IF
END_CYC
и еще вечно уведомление выскакиеет запарило -- shell notification error
-
Ну а сам че не видишь что ли?
Chose:
$END = 0
$_return1 = 0 - вот так вообще нельзя!!!!
$_return2 = 0 - никогда необъявляй системные переменные. Нужно удалить
// перебор комнат
HINTPOPUP("Стадия 9", "Выполняется поиск комнат... ")
$room = 0
FOR($room, $room<19) // Девятнадцать положений комнат
GETSCREEN
IF_PICTURE_IN (0,0,$_xmax,$_ymax,STRCONCAT("room",$room,".bmp"),-1,90)
HINTPOPUP("Стадия 9", "Найдена комната " $room) - так нельзя, удалить
move($_return1+20, $_return2+20)
wait(2)
move($_return1+22, $_return2+17)
wait(2)
LCLICK($_return1+18, $_return2+14)
wait(4)
move($_return1, $_return2-350) // Убираем, указатель от греха подальше...
wait(10)
GOSUB(Taking)
IF(ATT = 1) - это что???? Лишнее или где то нет END_IF ?
GOSUB(Taking)
ELSE
HINTPOPUP ("Стадия 9", "Не найдена комната поиск следующей.")
WAITMS(200)
END_IF
END_CYC
-
HINTPOPUP("Стадия 9", "Найдена комната " $room) - так нельзя, удалить
Так можно, только одним сообщением и запятую потерял:
HINTPOPUP("Стадия 9 Найдена комната ", $room)
или так
HINTPOPUP($room,"Стадия 9 Найдена комната ")
Но лучше, конечно так:
HINTPOPUP(STRCONCAT("Стадия 9 Найдена комната ",$room))