[HELP] AFK Problems (May be related to the new foreach)
#1

Hi guys,
recently I updated my foreach to the version with kick ability, though I don't know if that caused it.
Code:
pawn Код:
#define IsPlayerAfk(%0) (PlayerTick[%0]+5000 < GetTickCount())
public OnPlayerUpdate(playerid)
{
    PlayerTick[playerid]=GetTickCount();
    return 1;
}
public Check() // runs every second
{
    foreach (Player, playerid)
    {
                if(!IsPlayerAfk(playerid))
                {
                    // SOME ANTI-CHEAT CODE HERE WITH KICKS'N'BANS
                    if(PlayerAfk[playerid])
                    {
                        DestroyDynamic3DTextLabel(PlayerLabel[playerid]);
                        PlayerAfk[playerid]=false;
                    }
                }
                else
                {
                    if(!PlayerAfk[playerid])
                    {
                        PlayerLabel[playerid] = CreateDynamic3DTextLabel("AFK", COLOR_INDIGO, 0.0,0.0,0.0, 10.0, playerid);
                        PlayerAfk[playerid]=true;
                    }
                }
    }
}
This code worked perfectly before, but now the dynamic3dtextlabel doesn't disappear.
Another thing is that I don't restart my VPS server, and it has been running for 19 days now, maybe that could affect the tick count being wrong?
Reply
#2

if(!IsPlayerAfk[playerid])

Does that mean the player IS or ISN'T AFK?
Reply
#3

Ain't this

PHP код:
#define IsPlayerAfk(%0) (PlayerTick[%0]+5000 < GetTickCount())
public OnPlayerUpdate(playerid)
{
    
PlayerTick[playerid]=GetTickCount();
    return 
1;
}
public 
Check() // runs every second
{
    foreach (
Playerplayerid)
    {
                if(!
IsPlayerAfk(playerid))
                {
                    
// SOME ANTI-CHEAT CODE HERE WITH KICKS'N'BANS
                    
if(PlayerAfk[playerid])
                    {
                        
DestroyDynamic3DTextLabel(PlayerLabel[playerid]);
                        
PlayerAfk[playerid]=false;
                    }
                }
                else
                {
                    if(!
PlayerAfk[playerid])
                    {
                        
PlayerLabel[playerid] = CreateDynamic3DTextLabel("AFK"COLOR_INDIGO0.0,0.0,0.010.0playerid);
                        
PlayerAfk[playerid]=true;
                    }
                }
    }

should be this?

PHP код:
#define IsPlayerAfk(%0) (PlayerTick[%0]+5000 < GetTickCount())
public OnPlayerUpdate(playerid)
{
    
PlayerTick[playerid]=GetTickCount();
    return 
1;
}
public 
Check() // runs every second
{
    foreach (
Playerplayerid)
    {
                if(!
IsPlayerAfk(playerid))
                {
                    
// SOME ANTI-CHEAT CODE HERE WITH KICKS'N'BANS
                    
if(PlayerAfk[playerid])
                    {
                        
DestroyDynamic3DTextLabel(PlayerLabel[playerid]);
                        
PlayerAfk[playerid]=false;
                    }
                }
                else
                {
                    if(
PlayerAfk[playerid])// This line
                    
{
                        
PlayerLabel[playerid] = CreateDynamic3DTextLabel("AFK"COLOR_INDIGO0.0,0.0,0.010.0playerid);
                        
PlayerAfk[playerid]=true;
                    }
                }
    }

Reply
#4

If that's true, then it should be this:
pawn Код:
#define IsPlayerAfk(%0) (PlayerTick[%0]+5000 < GetTickCount())
public OnPlayerUpdate(playerid)
{
    PlayerTick[playerid]=GetTickCount();
    return 1;
}
public Check() // runs every second
{
    foreach (Player, playerid)
    {
                if(!IsPlayerAfk(playerid))
                {
                    // SOME ANTI-CHEAT CODE HERE WITH KICKS'N'BANS
                    if(!PlayerAfk[playerid])
                    {
                        DestroyDynamic3DTextLabel(PlayerLabel[playerid]);
                        PlayerAfk[playerid]=false;
                    }
                }
                else
                {
                    if(PlayerAfk[playerid])// This line
                    {
                        PlayerLabel[playerid] = CreateDynamic3DTextLabel("AFK", COLOR_INDIGO, 0.0,0.0,0.0, 10.0, playerid);
                        PlayerAfk[playerid]=true;
                    }
                }
    }
    return 1;
}
Reply
#5

People, You're missing the point. Recheck the code. Both of you are incorrect.
Reply
#6

Sorry for bumping.
Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)