SA-MP Forums Archive
Не работает не одна АФК система - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: Non-English (https://sampforum.blast.hk/forumdisplay.php?fid=9)
+--- Forum: Languages (https://sampforum.blast.hk/forumdisplay.php?fid=33)
+---- Forum: Русский/Russian (https://sampforum.blast.hk/forumdisplay.php?fid=32)
+---- Thread: Не работает не одна АФК система (/showthread.php?tid=491259)

Pages: 1 2


Не работает не одна АФК система - Size - 29.01.2014

В чем может быть проблема? не работает не одна АФК система, таймер объявляю - все равно не работает.
Говорили проблема со стримером, пробовал разные версии - не помогло.
Кто что знает отпишите пожалуйста!

Написал даже систему с 0 - все равно не работает.


Re: Не работает не одна АФК система - Romz - 29.01.2014

В каком смысле? Ты можешь нормально описать что и как не работает? 3d тексты не отображаются или секунды не считаются?


Re: Не работает не одна АФК система - sampsvr - 30.01.2014

ответ: 42


Re: Не работает не одна АФК система - Urukhay - 30.01.2014

Дам мысль, от неё будешь плясать..
Паблик OnPlayerUpdate вызывается только тогда, когда игрок не на паузе.


Re: Не работает не одна АФК система - Size - 30.01.2014

Quote:
Originally Posted by Kolstin
Посмотреть сообщение
В каком смысле? Ты можешь нормально описать что и как не работает? 3d тексты не отображаются или секунды не считаются?
И то и другое


Re: Не работает не одна АФК система - Optimus_Sprite - 30.01.2014

https://sampforum.blast.hk/showthread.php?tid=490436
Emmet_ сделал отличные события и функции, там есть функции для AFK


Re: Не работает не одна АФК система - Size - 30.01.2014

Quote:
Originally Posted by Optimus_Sprite
Посмотреть сообщение
https://sampforum.blast.hk/showthread.php?tid=490436
Emmet_ сделал отличные события и функции, там есть функции для AFK
Данный инклуд не помог.


Re: Не работает не одна АФК система - Slava[LSW] - 30.01.2014

Тогда выложи весь код, посмотрим.


Re: Не работает не одна АФК система - k3dr - 30.01.2014

НУ КАК ОНА МОЖЕТ НЕ РАБОТАТЬ!!!!
ЧТО ЗНАЧИТ ДАЖЕ С НУЛЯ НЕ РАБОТАЕТ, ДНО.

PHP код:
new boolafk[MAX_PLAYERS];

OnPlayerUpdate afk false;
TimerSec afk true 
ВСЁ, ЧТО ТТ ДЕЛАТЬ ТО!


Re: Не работает не одна АФК система - DEMON91052 - 30.01.2014

Quote:
Originally Posted by k3dr
Посмотреть сообщение
НУ КАК ОНА МОЖЕТ НЕ РАБОТАТЬ!!!!
ЧТО ЗНАЧИТ ДАЖЕ С НУЛЯ НЕ РАБОТАЕТ, ДНО.

PHP код:
new boolafk[MAX_PLAYERS];
OnPlayerUpdate afk false;
TimerSec afk true 
ВСЁ, ЧТО ТТ ДЕЛАТЬ ТО!
Напиши полным кодом, а то многим будет не понятно!


Re: Не работает не одна АФК система - Slava[LSW] - 30.01.2014

Вот, написал по-быстрому:


pawn Code:
//Глобальные
new AfkTick[MAX_PLAYERS];
new bool:IsAFK[MAX_PLAYERS];


public OnGameModeInit()
{
    SetTimer("AfkTimer", 950, true);//Секундный таймер
}

public OnPlayerConnect(playerid)
{
    IsAFK[playerid] = false;//Обнуляем
    return true;
}

public OnPlayerUpdate(playerid)
{
    AfkTick[playerid] = GetTickCount();//Обновляем время
    return true;
}

forward AfkTimer();
public AfkTimer()
{
    for(new i=0;i<MAX_PLAYERS;i++)
    {
        if(IsPlayerConnected(i))
        {
            if((GetTickCount() - AfkTick[i]) >= 1000)//Проверяем, если данные не обновлялись больше секунды
            {
                if(!IsAFK[i])
                {
                    SendClientMessage(i, -1, "Вы вышли на паузу.");
                    IsAFK[i] = true;
                }
            }
            else if(IsAFK[i])
            {
                SendClientMessage(i, -1, "Вы вышли из паузы.");
                IsAFK[i] = false;
            }
        }
    }
    return true;
}



Re: Не работает не одна АФК система - Stepashka - 30.01.2014

Есть мысля что автору просто нужен готовый код, а у него на самом деле ничего нет.


Re: Не работает не одна АФК система - Size - 30.01.2014

Quote:
Originally Posted by k3dr
View Post
НУ КАК ОНА МОЖЕТ НЕ РАБОТАТЬ!!!!
ЧТО ЗНАЧИТ ДАЖЕ С НУЛЯ НЕ РАБОТАЕТ, ДНО.

PHP Code:
new boolafk[MAX_PLAYERS];
OnPlayerUpdate afk false;
TimerSec afk true 
ВСЁ, ЧТО ТТ ДЕЛАТЬ ТО!
Не строй из себя профессионала.

Код:

PHP Code:
public AFKSystem(playerid)
{
    if(
PlayerEx[playerid][ChekEx] < PlayerEx[playerid][TickEx])
    {
        if(
PlayerEx[playerid][AFKEx] == true)
        {
            
PlayerEx[playerid][VarEx] = 0;
            
PlayerEx[playerid][AFKEx] = false;
        }
    }
    if(
PlayerEx[playerid][AFKEx] == true)
    {
        
PlayerEx[playerid][VarEx]++;
    }
    if(
PlayerInfo[playerid][pAdmin] < 1)
    {
        if(
PlayerEx[playerid][VarEx] > 1800)
        {
            
SCM(playerid,COLOR_LIGHTRED,"Вы были отсоеденены от сервера (AFK)");
            
PlayerEx[playerid][VarEx] = 0;
            
Kicked(playerid);
        }
    }
    if(
PlayerEx[playerid][VarEx] > 0)
    {
        new 
stringF[50];
        
format(stringF,sizeof(stringF),"Игрок на паузе: %s",Convert(PlayerEx[playerid][VarEx]));
        
SetPlayerChatBubble(playeridstringFCOLOR_ORANGE15.01200);
        
format(stringF,sizeof(stringF),"~r~AFK: ~w~%s sec",Convert(PlayerEx[playerid][VarEx]));
        
GameTextForPlayer(playeridstringF3000,3);
    }
    return 
true;

PHP Code:
stock Convert(number)
{
    new 
hours 0mins 0secs 0string[100];
    
hours floatround(number 3600);
    
mins floatround((number 60) - (hours 60));
    
secs floatround(number - ((hours 3600) + (mins 60)));
    if(
hours 0) { format(string100"%i:%02dì:%02dñ"hoursminssecs); }
    else { 
format(string100"%i:%02d"minssecs); }
    return 
string;




Re: Не работает не одна АФК система - Size - 30.01.2014

Quote:
Originally Posted by Stepashka
View Post
Есть мысля что автору просто нужен готовый код, а у него на самом деле ничего нет.



Re: Не работает не одна АФК система - Slava[LSW] - 30.01.2014

Я так понял, у тебя там отдельный таймер для каждого игрока?

pawn Code:
//Глобальные
new AfkTick[MAX_PLAYERS];
new AfkTime[MAX_PLAYERS];

#define IsPlayerInAFK(%0) (AfkTime[%0]!=0)


public OnGameModeInit()
{
    SetTimer("AfkTimer", 950, true);//Секундный таймер
}

public OnPlayerConnect(playerid)
{
    AfkTime[playerid] = 0;//Обнуляем
    return true;
}

public OnPlayerUpdate(playerid)
{
    AfkTick[playerid] = GetTickCount();//Обновляем время
    return true;
}

forward AfkTimer();
public AfkTimer()
{
    new stringF[50];
    for(new i=0;i<MAX_PLAYERS;i++)
    {
        if(IsPlayerConnected(i))
        {
            if((GetTickCount() - AfkTick[i]) >= 1000)//Проверяем, если данные не обновлялись больше секунды
            {
                if(++AfkTime[i] == 1)
                {
                    SendClientMessage(i, -1, "Вы вышли на паузу.");
                }

                format(stringF,50,"Игрок на паузе: %s", Convert(AfkTime[i]));
                SetPlayerChatBubble(i, stringF, COLOR_ORANGE, 15.0, 1010);

                if(PlayerInfo[i][pAdmin] < 1 && AfkTime[i] > 1800)
                {
                    SCM(i,COLOR_LIGHTRED,"Вы были отсоединены от сервера (AFK)");
                    Kicked(i);
                    continue;
                }
            }
            else if(AfkTime[i] != 0)
            {
                SendClientMessage(i, -1, "Вы вышли из паузы.");
                format(stringF,50,"~r~AFK: ~w~%s sec",Convert(AfkTime[i]));
                GameTextForPlayer(i, stringF, 3000,3);
                AfkTime[i] = 0;
            }
        }
    }
    return true;
}



Re: Не работает не одна АФК система - Jon_De - 30.01.2014

Code:
new AFK_Time[MAX_PLAYERS];

public OneSecond()
{
	for(new i; i < MAX_PLAYERS; i++)
	{
	    if(!IsPlayerConnected(i)) continue;

	    if(++AFK_Time[i] > 4)
	    {
		SendClientMessage(i, -1, "Вы в АФК");
	    }
	}
	return 1;
}


public OnPlayerUpdate(playerid)
{
    AFK_Time[playerid] = 0;
    return 1;
}



Re: Не работает не одна АФК система - Size - 30.01.2014

Quote:
Originally Posted by Slava[LSW]
View Post
Я так понял, у тебя там отдельный таймер для каждого игрока?

pawn Code:
//Глобальные
new AfkTick[MAX_PLAYERS];
new AfkTime[MAX_PLAYERS];

#define IsPlayerInAFK(%0) (AfkTime[%0]!=0)


public OnGameModeInit()
{
    SetTimer("AfkTimer", 950, true);//Секундный таймер
}

public OnPlayerConnect(playerid)
{
    AfkTime[playerid] = 0;//Обнуляем
    return true;
}

public OnPlayerUpdate(playerid)
{
    AfkTick[playerid] = GetTickCount();//Обновляем время
    return true;
}

forward AfkTimer();
public AfkTimer()
{
    new stringF[50];
    for(new i=0;i<MAX_PLAYERS;i++)
    {
        if(IsPlayerConnected(i))
        {
            if((GetTickCount() - AfkTick[i]) >= 1000)//Проверяем, если данные не обновлялись больше секунды
            {
                if(++AfkTime[i] == 1)
                {
                    SendClientMessage(i, -1, "Вы вышли на паузу.");
                }

                format(stringF,50,"Игрок на паузе: %s", Convert(AfkTime[i]));
                SetPlayerChatBubble(i, stringF, COLOR_ORANGE, 15.0, 1010);

                if(PlayerInfo[i][pAdmin] < 1 && AfkTime[i] > 1800)
                {
                    SCM(i,COLOR_LIGHTRED,"Вы были отсоединены от сервера (AFK)");
                    Kicked(i);
                    continue;
                }
            }
            else if(AfkTime[i] != 0)
            {
                SendClientMessage(i, -1, "Вы вышли из паузы.");
                format(stringF,50,"~r~AFK: ~w~%s sec",Convert(AfkTime[i]));
                GameTextForPlayer(i, stringF, 3000,3);
                AfkTime[i] = 0;
            }
        }
    }
    return true;
}
Спасибо!!! Заработало!!!
Система вижу твоя, молодец, помог очень, не мог бы сделать проверку что бы при входе в игру (вводе пароля) не срабатывала она.


Re: Не работает не одна АФК система - Slava[LSW] - 30.01.2014

Замени IsPlayerConnected(i) в цикле на GetPlayerState(i) != PLAYER_STATE_NONE

PLAYER_STATE_NONE возвращается в том случае, если игрок не подключен, либо он только что зашел на сервер и выбирает скин.


Re: Не работает не одна АФК система - Size - 30.01.2014

Quote:
Originally Posted by Slava[LSW]
View Post
Замени IsPlayerConnected(i) в цикле на GetPlayerState(i) != PLAYER_STATE_NONE

PLAYER_STATE_NONE возвращается в том случае, если игрок не подключен, либо он только что зашел на сервер и выбирает скин.
Благодарю, теска .
И еще, например когда телепортируешь игрока к себе, нужна проверка что игрок АФК, какую функцию в данной системе можно использовать в качестве проверки? AfkTime? AfkTick?


Re: Не работает не одна АФК система - Slava[LSW] - 30.01.2014

Вверху же макрос есть #define IsPlayerInAFK(%0) (AfkTime[%0]!=0)

например

pawn Code:
if(IsPlayerInAFK(playerid))
{
    //AFK
}