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

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

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

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

нужна помощь с afk системой. срочно!

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

Consuelo_Delite

Новичок
Всем привет. Наткнулся на такую проблему. Поставил к себе на сервере AFK систему.
Ну она багнутая. =(
Вроде все норм работает, но.. Бывает так, что игроки не в АФК, а надпись не пропадает. Прошу помощь, вот весь код скрипта.

PHP:
#include <a_samp>

enum p_info
{
Tick,
Chek,
Var,
bool:pSpawn,
}

new Player[MAX_PLAYERS][p_info];

main()
{
print("************************************************** *");
print(" AFK System ");
print("************************************************** *");
}

new Time;

public OnFilterScriptInit()
{
Time = SetTimer("AFK", 1100,1);
return 1;
}

public OnFilterScriptExit()
{
KillTimer(Time);
return 1;
}


public OnPlayerConnect(playerid)
{
Player[playerid][Tick] = 0;
Player[playerid][pSpawn] = false;
return 1;
}

public OnPlayerDeath(playerid,killerid, reason)
{
Player[playerid][pSpawn] = false;
return 1;
}


forward AFK();
public AFK()
{
for(new x = 0; x < MAX_PLAYERS; x++)
{
if(IsPlayerConnected(x))
{
if(Player[x][Chek] < Player[x][Tick])
{
Player[x][Var] = 0;
}
if(Player[x][Chek] == Player[x][Tick])
{
if(Player[x][pSpawn] == true)
{
Player[x][Var]++;
}
}
if(Player[x][Var] > 600)
{
SendClientMessage(x,COLOR_REDD,"[AFK]: Вы были отсоедены от сервера за AFK");
Player[x][Var] = 0;
Kick(x);
}
if(Player[x][Var] > 4)
{
new stringF[20];
format(stringF,sizeof(stringF),"АФК [%s]",Convert(Player[x][Var]));
SetPlayerChatBubble(x, stringF, 0x34c924FF, 70.0, 1200);
}
Player[x][Chek] = Player[x][Tick];
}
}
return 1;
}

public OnPlayerSpawn(playerid)
{
Player[playerid][pSpawn] = true;
return 1;
}

public OnPlayerUpdate(playerid)
{
if(!IsPlayerConnected(playerid)) return 0;
Player[playerid][Tick]++;
return 1;
}

Convert(number)
{
new hours = 0, mins = 0, secs = 0, string[100];
hours = floatround(number / 3600);
mins = floatround((number / 60) - (hours * 60));
secs = floatround(number - ((hours * 3600) + (mins * 60)));
if(hours > 0)
{
format(string, 100, "%d:%02dm:%02ds", hours, mins, secs);
}
else
{
format(string, 100, "%d:%02d", mins, secs);
}
return string;
}
Заранее спасибо!
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу