SA-MP Forums Archive
FS problem - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: SA-MP Scripting and Plugins (https://sampforum.blast.hk/forumdisplay.php?fid=8)
+--- Forum: Scripting Help (https://sampforum.blast.hk/forumdisplay.php?fid=12)
+--- Thread: FS problem (/showthread.php?tid=605830)



FS problem - MRM - 25.04.2016

This filterscript not work for me !
pawn Код:
//--------------------------------ESC Time Counter FilterScript by [_FFG_]BuLLeT----------------------------------------------------
#include <a_samp>
#define MAX_ESC_TIME 60 //1 minute
#define COLOR_WHITE 0xFFFFFFAA
new UpdateCount[MAX_PLAYERS], OldUpdateCount[MAX_PLAYERS], Spawned[MAX_PLAYERS],ESCWarns[MAX_PLAYERS];
new PlayerUpTimer[MAX_PLAYERS],IsPaused[MAX_PLAYERS],ESCSeconds[MAX_PLAYERS],ESCMinutes[MAX_PLAYERS];
new ESCTime[MAX_PLAYERS];
new Text3D:ESCLabel[MAX_PLAYERS];
forward UpdatePlayer(playerid);
public OnFilterScriptInit()
{
    print("\n|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|");
    print("      ESC Time Counter [FS] by [_FFG_]BuLLeT");
    print("|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|\n");
    return 1;
}

public OnFilterScriptExit()
{
    return 1;
}

public OnPlayerConnect(playerid)
{
    ESCTime[playerid] = 0;
    UpdateCount[playerid] = 0;
    OldUpdateCount[playerid] = 0;
    ESCSeconds[playerid] = 0;
    ESCMinutes[playerid] = 0;
    IsPaused[playerid] = 0;
    ESCWarns[playerid] = 0;
    PlayerUpTimer[playerid] = SetTimerEx("UpdatePlayer",1000,1,"d",playerid);
    Spawned[playerid] = 0;
    return 1;
}

public OnPlayerDisconnect(playerid, reason)
{
    Spawned[playerid] = 0;
    ESCTime[playerid] = 0;
    UpdateCount[playerid] = 0;
    OldUpdateCount[playerid] = 0;
    ESCWarns[playerid] = 0;
    KillTimer(PlayerUpTimer[playerid]);
    if(IsPaused[playerid] == 1)
    {
        IsPaused[playerid] = 0;
        Delete3DTextLabel(ESCLabel[playerid]);
        ESCSeconds[playerid] = 0;
        ESCMinutes[playerid] = 0;
    }
    return 1;
}

public OnPlayerSpawn(playerid)
{
    Spawned[playerid] = 1;
    return 1;
}

public OnPlayerDeath(playerid, killerid, reason)
{
    Spawned[playerid] = 0;
    return 1;
}

public OnPlayerUpdate(playerid)
{
    UpdateCount[playerid] ++;
    if(UpdateCount[playerid] >= 999999)
    {
        UpdateCount[playerid] = 0;
    }
    if(IsPaused[playerid] == 1)
    {
        IsPaused[playerid] = 0;
        Delete3DTextLabel(ESCLabel[playerid]);
        ESCSeconds[playerid] = 0;
        ESCMinutes[playerid] = 0;
        ESCTime[playerid] = 0;
    }
    return 1;
}

public UpdatePlayer(playerid)
{
    if(IsPlayerConnected(playerid) && Spawned[playerid] == 1)
    {
        if(IsPaused[playerid] == 0)
        {
            if(UpdateCount[playerid] == OldUpdateCount[playerid])
            {
                ESCWarns[playerid]++;
                switch (ESCWarns[playerid])
                {
                    case 10:
                    {
                        IsPaused[playerid] = 1;
                        ESCSeconds[playerid] = 10;
                        ESCLabel[playerid] = Create3DTextLabel("ESC    0:10",0xFF0000AA,0.0,0.0,0.6,30,0,0);
                        Attach3DTextLabelToPlayer(ESCLabel[playerid],playerid,0.0,0.0,0.0);
                    }
                }
            }
            else
            {
                ESCTime[playerid] = 0;
                IsPaused[playerid] = 0;
                ESCWarns[playerid] = 0;
                OldUpdateCount[playerid] = UpdateCount[playerid];
            }
        }
        else
        {
            ESCSeconds[playerid]++;
            if(ESCSeconds[playerid] >= 60)
            {
                ESCSeconds[playerid] = 0;
                ESCMinutes[playerid] ++;
            }
            new str[30];
            format(str,sizeof(str),"ESC    %d:%02d",ESCMinutes[playerid],ESCSeconds[playerid]);
            Update3DTextLabelText(ESCLabel[playerid],COLOR_WHITE,str);
            ESCTime[playerid] ++;
            if(ESCTime[playerid] >= MAX_ESC_TIME)
            {
                Kick(playerid);//kick for ESC
            }
        }
    }
    return 1;
}



Re: FS problem - iKevin - 25.04.2016

Quote:
Originally Posted by MRM
Посмотреть сообщение
This filterscript not work for me !
pawn Код:
//--------------------------------ESC Time Counter FilterScript by [_FFG_]BuLLeT----------------------------------------------------
#include <a_samp>
#define MAX_ESC_TIME 60 //1 minute
#define COLOR_WHITE 0xFFFFFFAA
new UpdateCount[MAX_PLAYERS], OldUpdateCount[MAX_PLAYERS], Spawned[MAX_PLAYERS],ESCWarns[MAX_PLAYERS];
new PlayerUpTimer[MAX_PLAYERS],IsPaused[MAX_PLAYERS],ESCSeconds[MAX_PLAYERS],ESCMinutes[MAX_PLAYERS];
new ESCTime[MAX_PLAYERS];
new Text3D:ESCLabel[MAX_PLAYERS];
forward UpdatePlayer(playerid);
public OnFilterScriptInit()
{
    print("\n|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|");
    print("      ESC Time Counter [FS] by [_FFG_]BuLLeT");
    print("|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|\n");
    return 1;
}

public OnFilterScriptExit()
{
    return 1;
}

public OnPlayerConnect(playerid)
{
    ESCTime[playerid] = 0;
    UpdateCount[playerid] = 0;
    OldUpdateCount[playerid] = 0;
    ESCSeconds[playerid] = 0;
    ESCMinutes[playerid] = 0;
    IsPaused[playerid] = 0;
    ESCWarns[playerid] = 0;
    PlayerUpTimer[playerid] = SetTimerEx("UpdatePlayer",1000,1,"d",playerid);
    Spawned[playerid] = 0;
    return 1;
}

public OnPlayerDisconnect(playerid, reason)
{
    Spawned[playerid] = 0;
    ESCTime[playerid] = 0;
    UpdateCount[playerid] = 0;
    OldUpdateCount[playerid] = 0;
    ESCWarns[playerid] = 0;
    KillTimer(PlayerUpTimer[playerid]);
    if(IsPaused[playerid] == 1)
    {
        IsPaused[playerid] = 0;
        Delete3DTextLabel(ESCLabel[playerid]);
        ESCSeconds[playerid] = 0;
        ESCMinutes[playerid] = 0;
    }
    return 1;
}

public OnPlayerSpawn(playerid)
{
    Spawned[playerid] = 1;
    return 1;
}

public OnPlayerDeath(playerid, killerid, reason)
{
    Spawned[playerid] = 0;
    return 1;
}

public OnPlayerUpdate(playerid)
{
    UpdateCount[playerid] ++;
    if(UpdateCount[playerid] >= 999999)
    {
        UpdateCount[playerid] = 0;
    }
    if(IsPaused[playerid] == 1)
    {
        IsPaused[playerid] = 0;
        Delete3DTextLabel(ESCLabel[playerid]);
        ESCSeconds[playerid] = 0;
        ESCMinutes[playerid] = 0;
        ESCTime[playerid] = 0;
    }
    return 1;
}

public UpdatePlayer(playerid)
{
    if(IsPlayerConnected(playerid) && Spawned[playerid] == 1)
    {
        if(IsPaused[playerid] == 0)
        {
            if(UpdateCount[playerid] == OldUpdateCount[playerid])
            {
                ESCWarns[playerid]++;
                switch (ESCWarns[playerid])
                {
                    case 10:
                    {
                        IsPaused[playerid] = 1;
                        ESCSeconds[playerid] = 10;
                        ESCLabel[playerid] = Create3DTextLabel("ESC    0:10",0xFF0000AA,0.0,0.0,0.6,30,0,0);
                        Attach3DTextLabelToPlayer(ESCLabel[playerid],playerid,0.0,0.0,0.0);
                    }
                }
            }
            else
            {
                ESCTime[playerid] = 0;
                IsPaused[playerid] = 0;
                ESCWarns[playerid] = 0;
                OldUpdateCount[playerid] = UpdateCount[playerid];
            }
        }
        else
        {
            ESCSeconds[playerid]++;
            if(ESCSeconds[playerid] >= 60)
            {
                ESCSeconds[playerid] = 0;
                ESCMinutes[playerid] ++;
            }
            new str[30];
            format(str,sizeof(str),"ESC    %d:%02d",ESCMinutes[playerid],ESCSeconds[playerid]);
            Update3DTextLabelText(ESCLabel[playerid],COLOR_WHITE,str);
            ESCTime[playerid] ++;
            if(ESCTime[playerid] >= MAX_ESC_TIME)
            {
                Kick(playerid);//kick for ESC
            }
        }
    }
    return 1;
}
Explain a bit more.


Re: FS problem - MRM - 25.04.2016

It shows how much the player is AFK.
But when I run, it does not work.


Re: FS problem - oMa37 - 25.04.2016

Try re-compiling it, and if there is errors show it to us.


Re: FS problem - CalvinC - 25.04.2016

Look in the console, does it fail to load?


Re: FS problem - MRM - 25.04.2016

I re-compile that, not problem and error .
---------------------
No, it was loaded correctly.


Re: FS problem - Sew_Sumi - 25.04.2016

Should try a single timer, rather than one for each player.

Using foreach to cycle through all players, checking for which have paused.


Re: FS problem - MRM - 25.04.2016

How?
You can give me the code?


Re: FS problem - Sew_Sumi - 25.04.2016

In http://forum.sa-mp.com/showpost.php?...60&postcount=8 use the Tick, and in there use a foreach checking what players are paused.

Rather than having 20-30 timers checking if 1-5 players are paused, if you have one, checking all the players it'll work out lighter.

Even though the task for that timer is something else, it's going through, every second. Rather than having 20-30 timers, where 1 can do the task.

Seeing as it's just checking for the Tabbed players, it could also check for idle players by checking if they are moving by adding in a check against their position changes.