Еugene
Дебютант
Есть скрипт (Кик за afk)
Как сделать чтобы администрацию не кикало за afk?
---------- Post added at 19:13 ---------- Previous post was at 19:11 ----------
Мод: Les Global-RP
PHP:
// [FS] AFK система by OFFREAL
// [FS] AFK систему вырезал из мода by Mr.Хав4ик
#include <a_samp>
#define MAX_AFK_TIME 1200 // максимально время AFK до кика
#define FIRST_CHECK 1000 // первое предупреждение
#define SECOND_CHECK 1100 // второе предупреждение
#define AFK_TEXT_SET 120000 // время до появления надписи AFK над головой
#define CHECK1 200
#define CHECK2 100
#define T_COLOR 0xffffff // цвет 3Д текста
#define M1_COLOR 0xffff00 // цвет текста первого предупреждения
#define M2_COLOR 0xffff00 // цвет текста второго предупреждения
#define MK_COLOR 0xffff00 // цвет текста оповещения о кике
#define T_DIST 20.0 // расстояние с которого видно 3Д текст
enum afk_info {
AFK_Time, // время AFK
Float:AFK_Coord, // последняя координата
AFK_Stat // статус 3Д текста
}
new PlayerAFK[MAX_PLAYERS][afk_info]; // данные AFK игроков
new AFK_Timer; // таймер фильтрскрипта для работы функции
new Text3D:AFK_3DT[MAX_PLAYERS]; // 3Д тексты над головами игроков
forward AFKCheck();
public AFKCheck()
{
new Float:AFKCoords[3];
for(new i = 0;i<MAX_PLAYERS;i++)
{
if(!IsPlayerConnected(i)){continue;}
if(IsPlayerNPC(i)){continue;}
GetPlayerPos(i,AFKCoords[0],AFKCoords[1],AFKCoords[2]);
if(AFKCoords[0] == PlayerAFK[i][AFK_Coord])
{
PlayerAFK[i][AFK_Time]++;
}
else
{
PlayerAFK[i][AFK_Time] = 0;
if(PlayerAFK[i][AFK_Stat] != 0) { Delete3DTextLabel(AFK_3DT[i]); PlayerAFK[i][AFK_Stat] = 0; }
}
PlayerAFK[i][AFK_Coord] = AFKCoords[0];
if(PlayerAFK[i][AFK_Time] == AFK_TEXT_SET && PlayerAFK[i][AFK_Stat] == 0)
{
AFK_3DT[i] = Create3DTextLabel("{ff8800}[AFK: {ffffff}0/600 {ff8800}секунд]", T_COLOR, 0.00, 0.00, 10000.0, T_DIST, 0);
Attach3DTextLabelToPlayer(AFK_3DT[i], i, 0.0, 0.0, 0.5);
PlayerAFK[i][AFK_Stat] = 1;
}
if(PlayerAFK[i][AFK_Stat] == 1)
{
new str[16]; format(str,16,"AFK %d sec",PlayerAFK[i][AFK_Time]);
Update3DTextLabelText(AFK_3DT[i], T_COLOR, str);
}
if(IsPlayerAdmin(i)){continue;}
if(PlayerAFK[i][AFK_Time] > MAX_AFK_TIME)
{
SendClientMessage(i, MK_COLOR,"AFK: Вы были кикнуты за состояние AFK более " #MAX_AFK_TIME " секунд");
Kick(i);
continue;
}
if(PlayerAFK[i][AFK_Time] == FIRST_CHECK)
{
SendClientMessage(i, M1_COLOR,
"AFK: Вы будете кикнуты через " #CHECK1 " секунд если не начнете двигаться!");
continue;
}
if(PlayerAFK[i][AFK_Time] == SECOND_CHECK)
{
SendClientMessage(i, M2_COLOR,
"AFK: Вы будете кикнуты через " #CHECK2 " секунд если не начнете двигаться!");
continue;
}
}
return 1;
}
public OnFilterScriptInit()
{
AFK_Timer = SetTimer("AFKCheck",1000,1);
return 1;
}
public OnFilterScriptExit()
{
for(new i=0;i<MAX_PLAYERS;i++)
{
Delete3DTextLabel(AFK_3DT[i]);
}
KillTimer(AFK_Timer);
return 1;
}
public OnPlayerConnect(playerid)
{
PlayerAFK[playerid][AFK_Time] = 0;
PlayerAFK[playerid][AFK_Stat] = 0;
return 1;
}
public OnPlayerDisconnect(playerid, reason)
{
PlayerAFK[playerid][AFK_Time] = 0;
if(PlayerAFK[playerid][AFK_Stat] != 0) { Delete3DTextLabel(AFK_3DT[playerid]); PlayerAFK[playerid][AFK_Stat] = 0; }
return 1;
}
Как сделать чтобы администрацию не кикало за afk?
---------- Post added at 19:13 ---------- Previous post was at 19:11 ----------
Мод: Les Global-RP
