Server crash after using this CMD
#1

PHP код:
CMD:aduty(playeridparams[])
{
    new 
string[128];
       if(!
IsPlayerLoggedIn(playerid)) return SendClientMessage(playeridCOLOR_GREY"You need to login first before using any command.");
    if(
PlayerInfo[playerid][pAdmin] < 1) return SendClientMessage(playeridCOLOR_GREY"You are not authorized to use this command.");
    if(!
aDuty[playerid])
    {
        
format(stringsizeof(string), "AdmWarn: %s has went on admin duty."RPN(playerid));
        
SendAdminMessage(COLOR_YELLOW1string);
        
aDuty[playerid] = 1;
         
SetPlayerName(playeridPlayerInfo[playerid][pAdminName]);
        
SetPlayerHealth(playerid999999999);
        
format(stringsizeof(string), "%s"RPALN(playerid));
        if(
IsValidDynamic3DTextLabel(aDutyText[playerid]))  DestroyDynamic3DTextLabel(aDutyText[playerid]);
     if(
PlayerInfo[playerid][pAdmin] == 1aDutyText[playerid] = CreateDynamic3DTextLabel(stringCOLOR_LIGHTGREEN00, -2025playerid);
     if(
PlayerInfo[playerid][pAdmin] == 2aDutyText[playerid] = CreateDynamic3DTextLabel(stringCOLOR_LIME00, -2025playerid);
     if(
PlayerInfo[playerid][pAdmin] == 3aDutyText[playerid] = CreateDynamic3DTextLabel(stringCOLOR_YELLOW00, -2025playerid);
     if(
PlayerInfo[playerid][pAdmin] == 4aDutyText[playerid] = CreateDynamic3DTextLabel(stringCOLOR_ORANGE00, -2025playerid);
     if(
PlayerInfo[playerid][pAdmin] == 5aDutyText[playerid] = CreateDynamic3DTextLabel(stringCOLOR_RED00, -2025playerid);
     if(
PlayerInfo[playerid][pAdmin] == 6aDutyText[playerid] = CreateDynamic3DTextLabel(stringCOLOR_DARKRED00, -2025playerid);
     if(
PlayerInfo[playerid][pAdmin] == 7aDutyText[playerid] = CreateDynamic3DTextLabel(stringCOLOR_DARKRED00, -2025playerid);
        if(
PlayerInfo[playerid][pAdmin] == 8aDutyText[playerid] = CreateDynamic3DTextLabel(stringCOLOR_LIGHTRED00, -2025playerid);
        
Streamer_SetFloatData(STREAMER_TYPE_3D_TEXT_LABELaDutyText[playerid] , E_STREAMER_ATTACH_OFFSET_Z0.25);
    }
    else
    {
   if(
Spec[playerid]) return SendClientMessage(playeridCOLOR_GREY"You can't go off admin duty while spectating someone.");
        
aDuty[playerid] = 0;
        
SetPlayerHealth(playerid100);
        
format(stringsizeof(string), "AdmWarn: %s has went off admin duty."RPN(playerid));
        
SendAdminMessage(COLOR_YELLOW1string);
        
DestroyDynamic3DTextLabel(aDutyText[playerid]);
    }
    return 
1;

When the player AdminName is for example:Bart the server crashes, if it is 123 the server dont crash
Reply
#2

pawn Код:
CMD:aduty(playerid, params[])
{
    new string[128];
       if(!IsPlayerLoggedIn(playerid)) return SendClientMessage(playerid, COLOR_GREY, "You need to login first before using any command.");
    if(PlayerInfo[playerid][pAdmin] < 1) return SendClientMessage(playerid, COLOR_GREY, "You are not authorized to use this command.");
    if(!aDuty[playerid])
    {
        format(string, sizeof(string), "AdmWarn: %s has went on admin duty.", RPN(playerid));
        SendAdminMessage(COLOR_YELLOW, 1, string);
        aDuty[playerid] = 1;
         SetPlayerName(playerid, PlayerInfo[playerid][pAdminName]);
        SetPlayerHealth(playerid, 999999999);
        format(string, sizeof(string), "%s", RPALN(playerid));
        if(IsValidDynamic3DTextLabel(aDutyText[playerid]))  DestroyDynamic3DTextLabel(aDutyText[playerid]);
     if(PlayerInfo[playerid][pAdmin] == 1) aDutyText[playerid] = CreateDynamic3DTextLabel(string, COLOR_LIGHTGREEN, 0, 0, -20, 25, playerid);
     else if(PlayerInfo[playerid][pAdmin] == 2) aDutyText[playerid] = CreateDynamic3DTextLabel(string, COLOR_LIME, 0, 0, -20, 25, playerid);
     else if(PlayerInfo[playerid][pAdmin] == 3) aDutyText[playerid] = CreateDynamic3DTextLabel(string, COLOR_YELLOW, 0, 0, -20, 25, playerid);
     else if(PlayerInfo[playerid][pAdmin] == 4) aDutyText[playerid] = CreateDynamic3DTextLabel(string, COLOR_ORANGE, 0, 0, -20, 25, playerid);
     else if(PlayerInfo[playerid][pAdmin] == 5) aDutyText[playerid] = CreateDynamic3DTextLabel(string, COLOR_RED, 0, 0, -20, 25, playerid);
     else  if(PlayerInfo[playerid][pAdmin] == 6) aDutyText[playerid] = CreateDynamic3DTextLabel(string, COLOR_DARKRED, 0, 0, -20, 25, playerid);
     else if(PlayerInfo[playerid][pAdmin] == 7) aDutyText[playerid] = CreateDynamic3DTextLabel(string, COLOR_DARKRED, 0, 0, -20, 25, playerid);
      else if(PlayerInfo[playerid][pAdmin] == 8) aDutyText[playerid] = CreateDynamic3DTextLabel(string, COLOR_LIGHTRED, 0, 0, -20, 25, playerid);
        Streamer_SetFloatData(STREAMER_TYPE_3D_TEXT_LABEL, aDutyText[playerid] , E_STREAMER_ATTACH_OFFSET_Z, 0.25);
    }
    else
    {
   if(Spec[playerid]) return SendClientMessage(playerid, COLOR_GREY, "You can't go off admin duty while spectating someone.");
        aDuty[playerid] = 0;
        SetPlayerHealth(playerid, 100);
        format(string, sizeof(string), "AdmWarn: %s has went off admin duty.", RPN(playerid));
        SendAdminMessage(COLOR_YELLOW, 1, string);
        DestroyDynamic3DTextLabel(aDutyText[playerid]);
    }
    return 1;
}
Reply
#3

Its the same code
Reply
#4

no , check the "else " try it , it may work
Reply
#5

dont work.
Reply
#6

Can you put some printf statements between every line?
Then you can see which line is printed last and where it crashes exactly.
Reply
#7

I am newb scripter....
Reply
#8

So what?
Reply
#9

Load crashdetect plugin.
Compile with debug info: https://github.com/Zeex/samp-plugin-...ith-debug-info

Re-compile your scripts, run the server and execute that command. If it prints anything in the server log, then post it here.

My guess is that the native SetPlayerName crashes the server:
pawn Код:
SetPlayerName(playerid, PlayerInfo[playerid][pAdminName]);
because PlayerInfo[playerid][pAdminName] is NULL but let's wait for the results of crashdetect to be sure.
Reply
#10

I think that the error line is
SetPlayerName(playerid, PlayerInfo[playerid][pAdminName]);
Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)