Автокликер Clickermann :: Форум
Основной раздел => Использование => Topic started by: Andrey_Zloy_Bok on April 18, 2017, 10:44:10 AM
-
Всем добрый день! На форуме тут нашел не большой скрипт для рыбалке в одной игре. Дописал его для себя, все работает, ловит как надо. Но есть проблема. В игре предусмотрено, что если ты не делаешь никаких действий, то через 15 мин тебя выкидывает из игры. Так вот с некоторой периодичностью игра перестает видеть действия кликера. Когда это происходит - я не знаю. Может и через час, может и через 3 часа случиться. Подхожу к компьютеру, вижу что кликер все еще работает, мышку возвращает на исходную позицию и т.д.. Но в игре скорее всего перестаю выполняться действия и по этому выкидывает из игры. Выкидывает точно из-за простоя, потому что когда к компьютеру подходишь, висит это окошко что через 15 мин вы будете отключены. Сам скрипт чуть ниже. Посмотрите пожалуйста, в чем может быть причина? Привязка к окну не работает. Когда её включаешь, кликер привязывается к окну, но когда кликер запускаешь - только экран начинает моргать и все, никаких действий в игре не происходит.
//Проверяем, активна ли левая кнопка мыши и если да, то
//нажимаем ее
WAITMS(1000)
new:
$check=0
WHILE($check=0)
GETSCREEN
IF(PXL(991,1015) = 16739801)
LCLICK($_return1, $_return2)
$check=1
WAITMS(1500)
ELSE
WAITMS(1000)
END_IF
END_CYC
WAITMS(5)
//Проверяем правую кнопку мыши
$check=0
WHILE($check=0)
GETSCREEN
IF(PXL(991,1015) = 16739801)
WAITMS(1000)
GOTO(new)
END_IF
IF(PXL(1030,1008) = 16735702)
$check=1
WAITMS(2000)
ELSE
WAITMS(1500)
END_IF
END_CYC
WAITMS(500)
//Если поймалась необходимая рыба, то подсекаем, иначе ждем когда рыба отцепится и начинаем скрипт сначала
$check=0
WHILE($check=0)
GETSCREEN
IF(PXL(795,981) = 3289650)
RCLICK($_return1, $_return2)
$check=1
WAITMS(500)
ELSE
WAITMS(10000)
GOTO(new)
END_IF
END_CYC
WAITMS(2000)
//Тащим рыбу, пока не загорится кнопка вытаскивания
$check=0
KEYDOWN(#Q)
WHILE($check=0)
GETSCREEN
IF(PXL(918,936) = 8902946)
WAITMS(1000)
KEYUP(#Q)
WAITMS(50)
KEYPRESS(#1)
$check=1
ELSE
WAITMS(1000)
END_IF
END_CYC
WAITMS(3000)
GOTO(new)
WAITMS(1000)
-
Выпрыгивать из циклов через GOTO нельзя, это приводит к глюкам.
Где у тебя функция которая возвращает в $_return1, $_return2 координаты? PXL этого конечно не делает.
-
Вот исправленный скрипт
//Проверяем, активна ли левая кнопка мыши и если да, то
//нажимаем ее
WAITMS(1000)
new:
$check=0
WHILE($check=0)
GETSCREEN
IF(PXL(991,1015) = 16739801)
LCLICK(991,1015)
$check=1
WAITMS(1500)
ELSE
WAITMS(1000)
END_IF
END_CYC
//Проверяем правую кнопку мыши
$check=0
WHILE($check=0)
GETSCREEN
IF(PXL(991,1015) = 16739801)
WAITMS(1000)
$check=2
ELSE
IF(PXL(1030,1008) = 16735702)
$check=1
WAITMS(2000)
ELSE
WAITMS(1500)
END_IF
END_IF
END_CYC
IF($check=2)
GOTO(new)
END_IF
WAITMS(500)
//Если поймалась необходимая рыба, то подсекаем, иначе ждем когда рыба отцепится и начинаем скрипт сначала
GETSCREEN
IF(PXL(795,981) = 3289650)
RCLICK(795,981)
WAITMS(500)
ELSE
WAITMS(10000)
GOTO(new)
END_IF
WAITMS(2000)
//Тащим рыбу, пока не загорится кнопка вытаскивания
$check=0
KEYDOWN(#Q)
WHILE($check=0)
GETSCREEN
IF(PXL(918,936) = 8902946)
WAITMS(1000)
KEYUP(#Q)
WAITMS(50)
KEYPRESS(#1)
$check=1
ELSE
WAITMS(1000)
END_IF
END_CYC
WAITMS(2000)
-
Хм, но без координат оно работало.. Но я попробую этот вариант, посмотрим что выйдет из этого. А как тогда правильно выйти из скрипта, если не GOTO ?
аааа, все ,увидел! Спасибо большое! Я попробую!
-
В общем проблема все равно осталась. В какой-то момент скрипт просто перестал щелкать по кнопкам в игре и в итоге выкинуло из игры.. В чем может быть проблема еще?
-
Очевидно застревает в каком то из циклов. Чтобы понять что происходит перед условиями напиши запись в лог чтобы понять какой цикл или условие в данный момент началось.
-
А может причина в другом?
Не буду называть игру, но там тоже выбрасывает за бездействие и (внезапно) действия связанные с забросом-выловом не считаются.
Сделали просто, после каждого цикла ловли двигаем персонажем пару секунд, хватает поворотов туда-сюда.
-
А может причина в другом?
Не буду называть игру, но там тоже выбрасывает за бездействие и (внезапно) действия связанные с забросом-выловом не считаются.
Сделали просто, после каждого цикла ловли двигаем персонажем пару секунд, хватает поворотов туда-сюда.
Очень похоже что мы об одной игре говорим..)
А как правильно заставить двигаться персонажа?
KEYPRESS(#A)
WAITMS(3000)
KEYPRESS(#D)
WAITMS(3000)
Так оно как-то криво работает и иногда он раза 3-4 подвигается прежде чем закинуть
-
В общем сделал вот так - не помогло.. //Ïðîâåðÿåì, àêòèâíà ëè ëåâàÿ êíîïêà ìûøè è åñëè äà, òî
//íàæèìàåì åå
WAITMS(1000)
new:
KEYDOWN(#A)
WAITMS(1500)
KEYUP(#A)
WAITMS(50)
KEYDOWN(#D)
WAITMS(1500)
KEYUP(#D)
WAITMS(50)
Заметил сегодня вот такую штуку. В общем поставил кликер на 2ух компах. На обоих в итоге вылетело, но на одно пропаботало часа 4, а на другом всего час. Еще заметил на 1 компе. В общем подошел к компу, там окно что меня выкинуло. Есть окно в котором можно вводить символы. Скрипт по идее должен бы был вводить там A,D периодически. Но ничего не происходило. Не останавливая скрипт я залогинился в игру - опять ничего не происходит, потом я сам щелкнул мышкой, что бы закинуть удочку и о чудо, скрипт снова сам начал работать и персонаж начал двигаться.
Получается, что кликер просто отваливается от окна и по этому в итоге персонажа выкидывает из игры за бездействие.
Как можно решить эту проблему? Попробовать режим PS\2 ?
-
Получается, что кликер просто отваливается от окна и по этому в итоге персонажа выкидывает из игры за бездействие.
Скрипт же не работает в привязке, поэтому он отваливаться ни от куда не может.
...Не останавливая скрипт я залогинился в игру - опять ничего не происходит, потом я сам щелкнул мышкой, что бы закинуть удочку и о чудо, скрипт снова сам начал работать и персонаж начал двигаться.
Скорее всего скрипт написан примитивно. Не учтены все нюансы и не предусмотрена обработка нештатных ситуаций.
Твоей полной версии кода тоже не видно. Что комментировать?
Скажу только что вон там, в местах бесконечных ожиданий в цикле, не предусмотрен момент когда преведущее действие не произошло - кнопка не прожалась. Точнее прожалась, но не вовремя или из-за лагов игра не отреагировала. И всё. Мы ждём бесконечно цвет, который никогда не появится.
Нужно или проверять действие или ограничивать циклы ожидания по времени. Примеры таких циклов есть в шаблонах.
-
Кнопка "Шаблоны" в редакторе.
Вот пример первого цикла из поста Андрея. (Твоего кода нет до сих пор).
$time = $_ms + 30000 // ждём не более 30 сек
WHILE($time > $_ms)
GETSCREEN
IF(PXL(991,1015) = 16739801)
$time = 0
LCLICK(991, 1015)
WAITMS(500)
END_IF
WAITMS(1000)
END_CYC
// если нужно действие когда время вышло, а не нашлось
IF($time ! 0)
// время истекло, картинка не найдена
END_IF
-
//Проверяем, активна ли левая кнопка мыши и если да, то
//нажимаем ее
WAITMS(1000)
LOGWRITE ("начало")
LOGSHOW (1, 100,100)
new:
KEYDOWN(#A)
WAITMS(1500)
KEYUP(#A)
WAITMS(50)
KEYDOWN(#D)
WAITMS(1500)
KEYUP(#D)
WAITMS(50)
$check=0
$time = $_time_t + 30
print("Время1=", $time)
WHILE(($check=0) & ($time > $_time_t))
print("Время реальное=", $_time_t)
GETSCREEN
LOGWRITE ("ищем левую кнопку")
IF(PXL(991,1015) = 16739801)
WAITMS(500)
LOGWRITE ("нашли левую")
LCLICK(991,1015)
WAITMS(500)
LCLICK(991,1015)
$check=1
WAITMS(1500)
ELSE
WAITMS(1000)
END_IF
END_CYC
//Проверяем правую кнопку мыши
$check=0
$time = $_time_t + 40
WHILE(($check=0) & ($time > $_time_t))
GETSCREEN
LOGWRITE ("ищем правую кнопку")
IF(PXL(991,1015) = 16739801)
LOGWRITE ("горит левая, переходим на верх")
WAITMS(1000)
$check=2
ELSE
IF(PXL(1030,1008) = 16735702)
$check=1
LOGWRITE ("нашли правую кнопку")
WAITMS(2000)
ELSE
WAITMS(1500)
END_IF
END_IF
END_CYC
IF($check=2)
GOTO(new)
END_IF
WAITMS(500)
//Если поймалась необходимая рыба, то подсекаем, иначе ждем когда рыба отцепится и начинаем скрипт сначала
GETSCREEN
IF((PXL(795,981) = 3289650) & (PXL(1030,1008) = 16735702))
LOGWRITE ("Поймалась необходимая рыба")
RCLICK(795,981)
WAITMS(500)
ELSE
WAITMS(10000)
LOGWRITE ("Поймалась рыба, ждем и переходим на верх")
GOTO(new)
END_IF
WAITMS(2000)
//Тащим рыбу, пока не загорится кнопка вытаскивания
$check=0
$time = $_time_t + 50
KEYDOWN(#Q)
WHILE(($check=0) & ($time > $_time_t))
GETSCREEN
LOGWRITE ("Тащим рыбу, пока не загорится 1")
IF(PXL(918,936) = 8902946)
WAITMS(1000)
LOGWRITE ("Скил загорелся, вытаскиваем")
KEYUP(#Q)
WAITMS(50)
KEYPRESS(#1)
$check=1
ELSE
WAITMS(1000)
END_IF
END_CYC
IF($check=0)
LOGWRITE ("Просто отжимаем Q, цикл подвис")
KEYUP(#Q)
WAITMS(50)
END_IF
WAITMS(3000)
GOTO(new)
WAITMS(2000)
Вот весь мой код. Я вроде со всем разобрался уже. Везде добавил эти условия по времени и т.д.. Буду тестировать.
Но еще хочу сделать так, что бы если что - утром я смог увидеть лог и где что и когда застряло.
Отсюда вопрос. Можно ли как-то сделать так, что бы скрипт сам создавал новый txt (имя файла будет время в данную секунду) каждый раз, когда он начинается заного. Куда этот код вставить я знаю, как записать необходимые данные в этот файл я тоже знаю. У меня только вопрос как создать файл?
Я бы мог создать всего 1 файл и туда записывать, но боюсь что к утру там будет очень много текста и не подвиснет ли из-за этого кликер? По этому хочу разбить каждый проход скрипта на разные файлы, пусть их лучше будет 2к, но я точно смогу увидеть где была проблема
P.S. И это... Это как бы я и есть, Андрей))))
P.P.S Я вижу, что можно записать в лог, сохранить в лог, очистить лог. А нет ли команды создать файл и сохранить туда лог?
-
Конечно есть, но это не команда а директива. Пишем в верхней части скрипта
#logfile
И лог будет писаться в файл рядом со скриптом.
С записью в определенный файл сложнее
// Это в начале скрипта должно выполняться 1 раз
// Формируем имя файла с текущей датой
$th = $_time_h
$tm = $_time_m
$ts = $_time_s
$dd = $_date_d
$dm = $_date_m
IF(STRLEN($th)<2)
$th = STRCONCAT ("0", $th)
END_IF
IF(STRLEN($tm)<2)
$tm = STRCONCAT ("0", $tm)
END_IF
IF(STRLEN($ts)<2)
$ts = STRCONCAT ("0", $ts)
END_IF
IF(STRLEN($dd)<2)
$dd = STRCONCAT ("0", $dd)
END_IF
IF(STRLEN($dm)<2)
$dm = STRCONCAT ("0", $dm)
END_IF
$filename = STRCONCAT($_date_y,$dm,$dd,"_",$th,$tm,$ts,"_Log.txt")
// Пишем строку записи в файл где нужно
TFWRITE($filename, "Текст в лог")
-
P.S. И это... Это как бы я и есть, Андрей))))
Oraven тоже Андрей.