Cmd make server crashing
#1

When i using this cmd my server crashing then can you see the problem?

pawn Код:
CMD:setadminname(playerid, params[])
{
    if(PlayerInfo[playerid][pAdministrator] < 4)
        return true;

    new
        userID,
        playerNameString[MAX_PLAYER_NAME];

    if(sscanf(params, "us[24]", userID, playerNameString))
        return SendClientMessage(playerid, COLOR_GREY, "/setadminname [playerid] [adminname]");

    if(!IsPlayerConnected(userID))
        return SendClientMessage(playerid, COLOR_GREY, "The specified player ID is either not connected or has not authenticated.");

    if(PlayerInfo[userID][pAdministrator] > PlayerInfo[playerid][pAdministrator])
        return SendClientMessage(playerid, COLOR_GREY, "You can't change the admin name of a higher level administrator.");

   
    new messageString[128];
    new Query[128];
    new result[80];
    format( Query, sizeof( Query ), "SELECT * FROM `Accounts` WHERE `Adminname` = '%s'", (result) );
    mysql_query( Query );
    printf(" SQL: %s",Query);
    mysql_store_result();
    if( mysql_num_rows() >= 1 )
    {
        mysql_free_result();
        SendClientMessage( playerid, COLOR_WHITE, "This Admin Name is already taken, tell him to take another one." );
        return 1;
    }
    else
        mysql_free_result();

    format(messageString, sizeof(messageString), "You have changed %s's admin name to %s.", PlayerInfo[userID][AdminName], playerNameString);
    SendClientMessage(playerid, COLOR_WHITE, messageString);

    format(messageString, sizeof(messageString), "%s has changed your admin name to %s.", PlayerInfo[playerid][AdminName], playerNameString);
    SendClientMessage(userID, COLOR_WHITE, messageString);

    format(PlayerInfo[userID][AdminName], MAX_PLAYER_NAME, "%s", playerNameString);

    if(AdminDuty[playerid] >= 1)
        SetPlayerName(userID, playerNameString);

    // More stupid shit
    new string[128];
    new giveplayerid;
    SetPlayerName(giveplayerid,(result));
    format( string, sizeof( string ), "UPDATE `Accounts` SET `AdminName` = '%s' WHERE `UserID` = '%d'",(result),PlayerInfo[ giveplayerid ][pDatabaseID]);
    mysql_query(string);
    return 1;
}
Reply
#2

Add some prints to see if any get printed and where they stop.

EDIT: crash detect plugin may also help.
Reply
#3

I bet on this:
pawn Код:
new result[80];
format( Query, sizeof( Query ), "SELECT * FROM `Accounts` WHERE `Adminname` = '%s'", (result) );
Result is empty...
Reply
#4

You're setting the player's name to a blank name, which crashes the server.
Reply


Forum Jump:


Users browsing this thread: 3 Guest(s)