FS problem
#1

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;
}
Reply
#2

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.
Reply
#3

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

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

Look in the console, does it fail to load?
Reply
#6

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

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

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

How?
You can give me the code?
Reply
#9

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.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)