Доступ к архиву

Переход в группу "Пользователь"

300.00 ₽
Одноразовый платёж
Быстрый переход в группу "Пользователи", без надобности написания постов и ожидания.

Покупка дает возможность:
Быть полноправным участником форума
Нормальное копирование кода
Создавать темы
Скачивать файлы
Доступ к архиву Pawno-Info

Afk kicker

Статус
В этой теме нельзя размещать новые ответы.

Еugene

Дебютант
Есть скрипт (Кик за afk)


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
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу