Мастер
Покинул форум
Сообщений всего: 202
Дата рег-ции: Июль 2022
Репутация: 0
|
Dantes3000 пишет: можно добавить таймер который отсеживает что таймеры работают. Но потом придется добавлять таймер чтобы проверять таймер который отслеживает работу таймеров.
а можно просто показать код, чтобы этой фигнёй не заниматься. Десятки вариантов есть почему так просходит
не думаю, что это что то даст
CODE:
CREATE_TIMER (1,500) -HIDE25>
{
// Переменная статус, 0 меню, 1 фарм, 2 город.
// +++
if (StatusInGame==0) { goto timer1exit; } // в меню
// +++
// Настройка таймера при запуске
int timer1check;
if (timer1check<0) {
int ScreenIND[24][61]; // 150
timer1check=0;
int ControlPortalTime=0;
int limit=7+(44/100)*45; // 45% от пула хп и маны
}
// +++
if (StatusInGame==1) { // в процессе фарма в локации
// +++
// Проверка наличия индикатора, Настройка действий - исключений
screen (#ScreenIND[0][0], 1, 1, 24, 61, W_Kib);
if (sumcolor(-1, 22,3,23,7, 0, #ScreenIND[0][0])!=2) {
mouse_move(x0+645+rand(0,1), y0+355+rand(0,1)); _key(KEY_MOVE); // интерапт
// Выход, если экран загрузки локации
if (WhatPlaceForInd("LOAD")==1) { pause(1000); goto timer1exit; }
// Проверка, если герой в городе, значит зашел в чужой портал
if (regexsearch(1, #trash, WhatLocationForInd(STATUS), "ACT")==1) {
_key(KEY_LEFT_ALT); // Выключить подсветку предметов
FindObjControlPortal=1; // Включить доп. проверку имени объектов, для исключения захода в чужой портал
TryExitTown (INTERACTION); // Выйти из города
goto timer1exit;
}
// Если не в городе, значит остался в локации, если индикатора нет, значит дисконнект сервера.
else {
screen (#ScreenIND[0][0], 1, 1, 24, 61, W_Kib);
if (sumcolor(-1, 22,3,23,7, 0, #ScreenIND[0][0])!=2) goto EndSession; // global
}
}
// Дополнительная проверка имени объекта, работает не более 6 секунд
if (FindObjControlPortal==1) {
ControlPortalTime++;
if (ControlPortalTime>=12) {
FindObjControlPortal=0;
ControlPortalTime=0;
}
}
// HP
if (scanpixel(10,limit,0,0,0,0,0,0,0,#ScreenIND[0][0])==1) { DrinkPotion(0,0,0); }
// MP
if (scanpixel(16,limit,0,0,0,0,0,0,0,#ScreenIND[0][0])==1) { DrinkPotion(0,1,0); }
}
// +++
if (StatusInGame!=0) // В городе и в локации
// +++
{
// раз в 5 сек, проверять статус игроков // 10
if (timer1check!=6)
{ timer1check++; goto timer1exit; }
else { timer1check=0; }
// пропустить повторное считывание
if (StatusInGame==2) {
screen (#ScreenIND[0][0], 1, 1, 24, 61, W_Kib);
if (sumcolor(-1, 22,3,23,7, 0, #ScreenIND[0][0])!=2) { goto timer1exit; } // Проверка наличия индикатора, Фаст выход, метка
}
// Анализ кол-ва людей в игре
int People=46-sumcolor(-1, 2, 6, 3, 51, 0, #ScreenIND[0][0]); // максимум пикселей 45
if (People>MAXPPLGAME) MAXPPLGAME=People;
if (SessionItsFindGame==1) {
if ((FASTGAME==1) && (MAXPPLGAME>=7) && (People<5)) { EXITWITHOUTTOWN=1; goto EndSession; }
if (People<3) { EXITWITHOUTTOWN=1; goto EndSession; }
}
// Анализ PK Killing
if (scanpixel(2,59,0,0,0,0,0,0,0,#ScreenIND[0][0])==0) { EXITWITHOUTTOWN=1; LastGameName="ERROR"; LastGamePass="NONE"; goto EndSession; } // global, Фаст выход, метка
// Проверка хп у наемника
if ((StatusInGame==1) && (ALWAYSMERC==1)) {
int mercind=scanpixel(1,1,0,0,0,0,0,0,0,#ScreenIND[0][0]);
if ((mercind==0) && (scanpixel(10,1,0,0,0,0,0,0,0,#ScreenIND[0][0])==1)) DrinkPotion(1,0,0);
if (mercind==1) { DoRessurect=1; EXITWITHOUTTOWN=1; goto EndSession; }
}
}
timer1exit:;
}
|