Someone shudown my server with bug
#1

Hello I am new in this forum and I want to ask how to do so when someone write in chat {cc00cc} ban him automatically because someone off my server with this bug.
P.S sorry for my bad English I'm Russian
Reply
#2

fix the bug & rangeban the hacker.

Does he have a reason to keep doing it?
Reply
#3

@****** - I don't know how to fix this bug.
@rapidhost - He made this because he have too server
Reply
#4

so.. just wrote this up..
pawn Код:
public OnPlayerText(playerid, text[])
{
    if(strfind(text, "{cc00cc}", true) != -1)
    {
        new p = strfind(text, "{cc00cc}", true);
        strdel(text, p, p+8);
        Ban(playerid);
    }
    return 1;
}
Reply
#5

Quote:
Originally Posted by Sascha
Посмотреть сообщение
so.. just wrote this up..
pawn Код:
public OnPlayerText(playerid, text[])
{
    if(strfind(text, "{cc00cc}", true) != -1)
    {
        new p = strfind(text, "{cc00cc}", true);
        strdel(text, p, p+8);
        Ban(playerid);
    }
    return 1;
}
AFAIK you can't detect if a player has input that string like this, since it is a embedded colour code in chat which is automatically ignored by SA-MP. Thus you can't find the string in the text[] parameter.

The only way to solve this problem is to find the cause of the bug and fix it, just like ****** said.
Reply
#6

alright^^
Reply
#7

The Pawn crash when I try to compline with this code
Reply
#8

Post your OnPlayerText, he can't type {cc00cc} because { is replaced with a ( and } with a ), it's from SA:MP this replace, so I don't think that your server crashes from this.
Reply
#9

pawn Код:
public OnPlayerText(playerid, text[])
{
    new string[256];
    new tmp[256];
    if(PlayerInfo[playerid][pMuted] != 0)
    {
        SendClientMessage(playerid, COLOR_ADMINCMD, " Ти си заглушен и неможеш да пишеш.");
        return 0;
    }
    if(CalculateStarted == 1)
    {
        switch (CalculateEvent)
        {
            case 1:
            {
                new idx;
                tmp = strtok(text, idx);
                if ((strcmp("38", tmp, true, strlen(tmp)) == 0) && (strlen(tmp) == strlen("38")))
                {
                    CalculateStarted = 0;
                    CalculateEvent = 0;
                    for(new i = 0; i < MAX_PLAYERS; i++)
                    {
                        KillTimer(reactiontimer[i]);
                    }
                    PlayerInfo[playerid][pCWons] ++;
                    GivePlayerCash(playerid, 100000);
                    format(string, sizeof(string), "* %s отговори най-бързо за %.1f секунди. %s е печелил %d пъти преди.", PlayerName(playerid), PlayerInfo[playerid][pCalcSec], PlayerName(playerid), PlayerInfo[playerid][pCWons]);
                    SendClientMessageToAll(0xFF8000FF, string);
                    PlayerInfo[playerid][pCalcSec] = 0.0;
                }
            }
            case 2:
            {
                new idx;
                tmp = strtok(text, idx);
                if ((strcmp("sweetjohnson", tmp, true, strlen(tmp)) == 0) && (strlen(tmp) == strlen("sweetjohnson")))
                {
                    CalculateStarted = 0;
                    CalculateEvent = 0;
                    for(new i = 0; i < MAX_PLAYERS; i++)
                    {
                        KillTimer(reactiontimer[i]);
                    }
                    PlayerInfo[playerid][pCWons] ++;
                    GivePlayerCash(playerid, 100000);
                    format(string, sizeof(string), "* %s отговори най-бързо за %.1f секунди. %s е печелил %d пъти преди.", PlayerName(playerid), PlayerInfo[playerid][pCalcSec], PlayerName(playerid), PlayerInfo[playerid][pCWons]);
                    SendClientMessageToAll(0xFF8000FF, string); //4ek da zema cvqt ;dd
                    PlayerInfo[playerid][pCalcSec] = 0.0;
                }
            }
            case 3:
            {
                new idx;
                tmp = strtok(text, idx);
                if ((strcmp("LasVenturas", tmp, true, strlen(tmp)) == 0) && (strlen(tmp) == strlen("LasVenturas")))
                {
                    CalculateStarted = 0;
                    CalculateEvent = 0;
                    for(new i = 0; i < MAX_PLAYERS; i++)
                    {
                        KillTimer(reactiontimer[i]);
                    }
                    PlayerInfo[playerid][pCWons] ++;
                    GivePlayerCash(playerid, 100000);
                    format(string, sizeof(string), "* %s отговори най-бързо за %.1f секунди. %s е печелил %d пъти преди.", PlayerName(playerid), PlayerInfo[playerid][pCalcSec], PlayerName(playerid), PlayerInfo[playerid][pCWons]);
                    SendClientMessageToAll(0xFF8000FF, string);
                    PlayerInfo[playerid][pCalcSec] = 0.0;
                }
            }
            case 4:
            {
                new idx;
                tmp = strtok(text, idx);
                if ((strcmp("sofia", tmp, true, strlen(tmp)) == 0) && (strlen(tmp) == strlen("sofia")))
                {
                    CalculateStarted = 0;
                    CalculateEvent = 0;
                    for(new i = 0; i < MAX_PLAYERS; i++)
                    {
                        KillTimer(reactiontimer[i]);
                    }
                    PlayerInfo[playerid][pCWons] ++;
                    GivePlayerCash(playerid, 100000);
                    format(string, sizeof(string), "* %s отговори най-бързо за %.1f секунди. %s е печелил %d пъти преди.", PlayerName(playerid), PlayerInfo[playerid][pCalcSec], PlayerName(playerid), PlayerInfo[playerid][pCWons]);
                    SendClientMessageToAll(0xFF8000FF, string);
                    PlayerInfo[playerid][pCalcSec] = 0.0;
                }
            }
            case 5:
            {
                new idx;
                tmp = strtok(text, idx);
                if ((strcmp("cherno", tmp, true, strlen(tmp)) == 0) && (strlen(tmp) == strlen("cherno")))
                {
                    CalculateStarted = 0;
                    CalculateEvent = 0;
                    for(new i = 0; i < MAX_PLAYERS; i++)
                    {
                        KillTimer(reactiontimer[i]);
                    }
                    PlayerInfo[playerid][pCWons] ++;
                    GivePlayerCash(playerid, 100000);
                    format(string, sizeof(string), "* %s отговори най-бързо за %.1f секунди. %s е печелил %d пъти преди.", PlayerName(playerid), PlayerInfo[playerid][pCalcSec], PlayerName(playerid), PlayerInfo[playerid][pCWons]);
                    SendClientMessageToAll(0xFF8000FF, string);
                    PlayerInfo[playerid][pCalcSec] = 0.0;
                }
            }
        }
    }
    if(realchat)
    {
        format(string, sizeof(string), "(%d): %s", playerid, text[0]);
        SendPlayerMessageToAll(playerid, string);
        return 0;
    }
    return 1;
}
    if(strfind(text, "{cc00cc}", true) != -1)
    {
        new p = strfind(text, "{cc00cc}", true);
        strdel(text, p, p+8);
        Ban(playerid);
    }
    return 1;
}
Reply
#10

You're placing that part of code outside the callback !

pawn Код:
public OnPlayerText(playerid, text[])
{
    new string[256];
    new tmp[256];
    if(PlayerInfo[playerid][pMuted] != 0)
    {
        SendClientMessage(playerid, COLOR_ADMINCMD, " Ти си заглушен и неможеш да пишеш.");
        return 0;
    }
    if(CalculateStarted == 1)
    {
        switch (CalculateEvent)
        {
            case 1:
            {
                new idx;
                tmp = strtok(text, idx);
                if ((strcmp("38", tmp, true, strlen(tmp)) == 0) && (strlen(tmp) == strlen("38")))
                {
                    CalculateStarted = 0;
                    CalculateEvent = 0;
                    for(new i = 0; i < MAX_PLAYERS; i++)
                    {
                        KillTimer(reactiontimer[i]);
                    }
                    PlayerInfo[playerid][pCWons] ++;
                    GivePlayerCash(playerid, 100000);
                    format(string, sizeof(string), "* %s отговори най-бързо за %.1f секунди. %s е печелил %d пъти преди.", PlayerName(playerid), PlayerInfo[playerid][pCalcSec], PlayerName(playerid), PlayerInfo[playerid][pCWons]);
                    SendClientMessageToAll(0xFF8000FF, string);
                    PlayerInfo[playerid][pCalcSec] = 0.0;
                }
            }
            case 2:
            {
                new idx;
                tmp = strtok(text, idx);
                if ((strcmp("sweetjohnson", tmp, true, strlen(tmp)) == 0) && (strlen(tmp) == strlen("sweetjohnson")))
                {
                    CalculateStarted = 0;
                    CalculateEvent = 0;
                    for(new i = 0; i < MAX_PLAYERS; i++)
                    {
                        KillTimer(reactiontimer[i]);
                    }
                    PlayerInfo[playerid][pCWons] ++;
                    GivePlayerCash(playerid, 100000);
                    format(string, sizeof(string), "* %s отговори най-бързо за %.1f секунди. %s е печелил %d пъти преди.", PlayerName(playerid), PlayerInfo[playerid][pCalcSec], PlayerName(playerid), PlayerInfo[playerid][pCWons]);
                    SendClientMessageToAll(0xFF8000FF, string); //4ek da zema cvqt ;dd
                    PlayerInfo[playerid][pCalcSec] = 0.0;
                }
            }
            case 3:
            {
                new idx;
                tmp = strtok(text, idx);
                if ((strcmp("LasVenturas", tmp, true, strlen(tmp)) == 0) && (strlen(tmp) == strlen("LasVenturas")))
                {
                    CalculateStarted = 0;
                    CalculateEvent = 0;
                    for(new i = 0; i < MAX_PLAYERS; i++)
                    {
                        KillTimer(reactiontimer[i]);
                    }
                    PlayerInfo[playerid][pCWons] ++;
                    GivePlayerCash(playerid, 100000);
                    format(string, sizeof(string), "* %s отговори най-бързо за %.1f секунди. %s е печелил %d пъти преди.", PlayerName(playerid), PlayerInfo[playerid][pCalcSec], PlayerName(playerid), PlayerInfo[playerid][pCWons]);
                    SendClientMessageToAll(0xFF8000FF, string);
                    PlayerInfo[playerid][pCalcSec] = 0.0;
                }
            }
            case 4:
            {
                new idx;
                tmp = strtok(text, idx);
                if ((strcmp("sofia", tmp, true, strlen(tmp)) == 0) && (strlen(tmp) == strlen("sofia")))
                {
                    CalculateStarted = 0;
                    CalculateEvent = 0;
                    for(new i = 0; i < MAX_PLAYERS; i++)
                    {
                        KillTimer(reactiontimer[i]);
                    }
                    PlayerInfo[playerid][pCWons] ++;
                    GivePlayerCash(playerid, 100000);
                    format(string, sizeof(string), "* %s отговори най-бързо за %.1f секунди. %s е печелил %d пъти преди.", PlayerName(playerid), PlayerInfo[playerid][pCalcSec], PlayerName(playerid), PlayerInfo[playerid][pCWons]);
                    SendClientMessageToAll(0xFF8000FF, string);
                    PlayerInfo[playerid][pCalcSec] = 0.0;
                }
            }
            case 5:
            {
                new idx;
                tmp = strtok(text, idx);
                if ((strcmp("cherno", tmp, true, strlen(tmp)) == 0) && (strlen(tmp) == strlen("cherno")))
                {
                    CalculateStarted = 0;
                    CalculateEvent = 0;
                    for(new i = 0; i < MAX_PLAYERS; i++)
                    {
                        KillTimer(reactiontimer[i]);
                    }
                    PlayerInfo[playerid][pCWons] ++;
                    GivePlayerCash(playerid, 100000);
                    format(string, sizeof(string), "* %s отговори най-бързо за %.1f секунди. %s е печелил %d пъти преди.", PlayerName(playerid), PlayerInfo[playerid][pCalcSec], PlayerName(playerid), PlayerInfo[playerid][pCWons]);
                    SendClientMessageToAll(0xFF8000FF, string);
                    PlayerInfo[playerid][pCalcSec] = 0.0;
                }
            }
        }
    }
    if(realchat)
    {
        format(string, sizeof(string), "(%d): %s", playerid, text[0]);
        SendPlayerMessageToAll(playerid, string);
        return 0;
    }
    if(strfind(text, "{cc00cc}", true) != -1)
    {
        new p = strfind(text, "{cc00cc}", true);
        strdel(text, p, p+8);
        Ban(playerid);
    }
    return 1;
}
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)