Flood, big flood
#1

pawn Код:
public OnPlayerUpdate(playerid)
{
    if(GetPlayerPing(playerid) > MAX_PING)
    {
        new name[MAX_PLAYER_NAME],msg[150];
        GetPlayerName(playerid, name, sizeof(name));
        format(msg, sizeof(msg), "[Kick] Ћaidėjas %s buvo iљmestas uћ per didelį ping'ą. [Max - 400]", name);
        SendClientMessageToAll(Raudona, msg);
        SendClientMessage(playerid, Raudona, "Jūs iљmestas uћ per didelį pingą");
        SetTimerEx("KickPublic", 10, 0, "i", playerid);
        return 0;
    }
after player gets kicked it's showing not one message but 7-8 messages, sometimes just one sometimes two or three
Reply
#2

Please post the content of your "public KickPublic()".
Reply
#3

pawn Код:
forward KickPublic(playerid);
public KickPublic(playerid)
{
Kick(playerid);

}
Reply
#4

I'm not really sure as to why this happens, but I'm assuming it's because of you checking player's ping in OnPlayerUpdate.

I might have a fix for you:

Somewhere below the #include <a_samp> and other includes, place this line.
pawn Код:
new once[MAX_PLAYERS];
pawn Код:
public OnPlayerUpdate(playerid)
{
    if(GetPlayerPing(playerid) > MAX_PING && once[playerid] == 0)
    {
        new name[MAX_PLAYER_NAME],msg[150];
        GetPlayerName(playerid, name, sizeof(name));
        format(msg, sizeof(msg), "[Kick] Ћaidėjas %s buvo iљmestas uћ per didelį ping'ą. [Max - 400]", name);
        SendClientMessageToAll(Raudona, msg);
        SendClientMessage(playerid, Raudona, "Jūs iљmestas uћ per didelį pingą");
        SetTimerEx("KickPublic", 10, 0, "i", playerid);
        once[playerid]=1;
        return 0;
    }
Inside the timer.
pawn Код:
forward KickPublic(playerid);
public KickPublic(playerid)
{
once[playerid]=0;
Kick(playerid);

}
Reply
#5

Quote:
Originally Posted by Roperr
Посмотреть сообщение
I'm not really sure as to why this happens, but I'm assuming it's because of you checking player's ping in OnPlayerUpdate.

I might have a fix for you:

Somewhere below the #include <a_samp> and other includes, place this line.
pawn Код:
new once[MAX_PLAYERS];
pawn Код:
public OnPlayerUpdate(playerid)
{
    if(GetPlayerPing(playerid) > MAX_PING && once[playerid] == 0)
    {
        new name[MAX_PLAYER_NAME],msg[150];
        GetPlayerName(playerid, name, sizeof(name));
        format(msg, sizeof(msg), "[Kick] Ћaidėjas %s buvo iљmestas uћ per didelį ping'ą. [Max - 400]", name);
        SendClientMessageToAll(Raudona, msg);
        SendClientMessage(playerid, Raudona, "Jūs iљmestas uћ per didelį pingą");
        SetTimerEx("KickPublic", 10, 0, "i", playerid);
        once[playerid]=1;
        return 0;
    }
Inside the timer.
pawn Код:
forward KickPublic(playerid);
public KickPublic(playerid)
{
once[playerid]=0;
Kick(playerid);

}
i'm gona try it, looks like it gona work
Reply
#6

To check it easily, create a command that manipulates the function for checking a player's ping & set it above the limit.
Reply
#7

Why do you use OnPlayerUpdate in the first place? Use a 5 second timer and make it so that after 3 or more failed MAX_PING checks the player gets kicked.
Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)