Здравствуйте опять!
Опытным путем выяснил, что таймер перестаeт работать, если его вызов по счетчику таймера совпадет с вызовом функций key, keydown, keyup. Что в общем-то мешает автономной работе бота. Я пока вижу один выход - прерывать работу таймера и запускать вновь, но появляется тонкий момент, если оборвал таймер перед его активацией, то он начнет счет с нуля.
Пока проблему решаю тем, что дублирую функцию таймера обычной функцией. Есть что-то, что может помочь решить проблему?
Можно ли получить значение внутреннего счетчика таймера при его прерывании?
71. lavpochta - 14 Марта, 2021 - 14:11:55 - перейти к сообщению
72. Kibor - 14 Марта, 2021 - 14:13:28 - перейти к сообщению
lavpochta пишет:
таймер перестаeт работать, если его вызов по счетчику таймера совпадет с вызовом функций key, keydown, keyup
Странно.
73. lavpochta - 14 Марта, 2021 - 14:46:01 - перейти к сообщению
Я выделил отдельный кусок кода с виснущим таймером, прописал в него не саму функцию лечения персонажа, а только "флаг"лечение=1 каждые 3с, саму функцию лечения вызывал без таймера. Лечение происходило в ней по "флаг"=1, и сбрасывал после "флаг"=0,
записывал видео движения бота, отображая на экране точки таймера и нажатия клавиатуры по движению персонажем и таким образом вышел на этот вывод, при совпадении вызова нажатия клавиши с ожидаемым временем таймера - таймер так и не отобразил контрольное сообщение, перестал отображаться и "флаг"=1, он так и остался =0. Это произошло после 6-ти кратного успешного выполнения самой функции лечения.
(Добавление)
Кстати а может ничего странного и нет, пишу для Lineage2 для Оффа, а там "Frost", влючаю Анти-Антикликер, пускаю прямо из под оболочки "Кибора" - вот оно глючит?
записывал видео движения бота, отображая на экране точки таймера и нажатия клавиатуры по движению персонажем и таким образом вышел на этот вывод, при совпадении вызова нажатия клавиши с ожидаемым временем таймера - таймер так и не отобразил контрольное сообщение, перестал отображаться и "флаг"=1, он так и остался =0. Это произошло после 6-ти кратного успешного выполнения самой функции лечения.
(Добавление)
Kibor пишет:
Странно.
Кстати а может ничего странного и нет, пишу для Lineage2 для Оффа, а там "Frost", влючаю Анти-Антикликер, пускаю прямо из под оболочки "Кибора" - вот оно глючит?
74. Dantes3000 - 21 Марта, 2021 - 15:58:57 - перейти к сообщению
тоже заметил что таймер отключается самопроизвольно. в коде disabletimer нет вообще
75. Budni - 22 Марта, 2021 - 01:27:14 - перейти к сообщению
Добавлю и свои 5 копеек, когда в таймере вызываю функцию после нее не выполняется код что был в таймере.
Код с ошибкой (Отобразить)
76. Kibor - 22 Марта, 2021 - 01:41:19 - перейти к сообщению
Budni пишет:
Добавлю и свои 5 копеек, когда в таймере вызываю функцию после нее не выполняется код что был в таймере.
Запускаемый пример тут:
Все отрабатывает.
CODE:
enabletimer(0);
loop()sleep(10);
function klik(int kor1, int kor2, int kor3, int kor4) {
if (finde()==0) ing();
return 1;
}
function ing() {
}
function waitin(){
if (scanpixel(199, 60, colorgame, R__HP, R__HP, R__HP, R__HP, R__HP, R__HP, -1)==0)
{
return 1;
}
}
function finde() {
int k=1;
if(k>=1) {
return 1;
}
return 0;
}
CREATE_TIMER(0, 1700)
{
beep(2000, 100);
loop(10) {
if(klik(0, 0, 800, 600)==1){sleep(rand(10,300))};
}
//После лупов код дальше не выполняется ?????
beep(1000, 100);
}
loop()sleep(10);
function klik(int kor1, int kor2, int kor3, int kor4) {
if (finde()==0) ing();
return 1;
}
function ing() {
}
function waitin(){
if (scanpixel(199, 60, colorgame, R__HP, R__HP, R__HP, R__HP, R__HP, R__HP, -1)==0)
{
return 1;
}
}
function finde() {
int k=1;
if(k>=1) {
return 1;
}
return 0;
}
CREATE_TIMER(0, 1700)
{
beep(2000, 100);
loop(10) {
if(klik(0, 0, 800, 600)==1){sleep(rand(10,300))};
}
//После лупов код дальше не выполняется ?????
beep(1000, 100);
}
77. Budni - 22 Марта, 2021 - 01:43:30 - перейти к сообщению
Kibor , Да если так то конечно всё работает, поэтому выложил весь код где ошибка.
78. Kibor - 22 Марта, 2021 - 01:46:25 - перейти к сообщению
Budni , Ваш код не запускаем. Выкладывать надо код который будет работать просто скопировав его в Кибор.
Мой код по логике идентичный. Просто убрал действия, которые на таймер не влияют.
Для проверки нужен запускаемый, простой сценарий.
(Добавление)
Budni , Проблема в вызове одной функции в таймере и коде:
loop()
{
for (int a1=0; a1<19; a1++)
{
if(klik(0, 0, 800, 600)==1){sleep(rand(10,30))};
}
a1=0;
ing();
}
============
CREATE_TIMER(0, 1000)
{
loop(10) {
if(klik(0, 0, 800, 600)==1){sleep(rand(10,300))};
}
Не используйте в таймере функции которые используете в коде.
Мой код по логике идентичный. Просто убрал действия, которые на таймер не влияют.
Для проверки нужен запускаемый, простой сценарий.
(Добавление)
Budni , Проблема в вызове одной функции в таймере и коде:
loop()
{
for (int a1=0; a1<19; a1++)
{
if(klik(0, 0, 800, 600)==1){sleep(rand(10,30))};
}
a1=0;
ing();
}
============
CREATE_TIMER(0, 1000)
{
loop(10) {
if(klik(0, 0, 800, 600)==1){sleep(rand(10,300))};
}
Не используйте в таймере функции которые используете в коде.
79. Budni - 22 Марта, 2021 - 02:29:27 - перейти к сообщению
Kibor , Понял, думал можно, спасибо.
80. Kibor - 23 Марта, 2021 - 09:39:11 - перейти к сообщению
Поправил алгоритм. Теперь не должно обрезать выполнение таймера.