A que se debe este error de crashdetect
#1

Код:
[16:48:15] [debug] AMX backtrace:
[16:48:15] [debug] #0 00000036 in ?? (52, 0, 2992620) from gamemode.amx
[16:48:15] [debug] #1 0000e350 in ?? (52, 0, 1783793664, 0, 2992712, 320916, 4, 2, 0, 0, ... <3 arguments>) from gamemode.amx
[16:48:15] [debug] #2 00000036 in public cmd_setscore () from gamemode.amx
[16:48:15] [debug] #3 native CallLocalFunction () from samp03svr
[16:48:15] [debug] #4 0001167c in ?? (2, 2976556) from gamemode.amx
[16:48:15] [debug] #5 00006260 in public OnPlayerCommandText (2, 2976556) from gamemode.amx
este es el comando:
Код:
CMD:setscore(playerid, params[])
{
    if(IsPlayerAdmin(playerid))
    {
		if(sscanf(params, "ud", params[0], params[1])) return SendClientMessage(playerid, COLOR_ROJO, "Usa: /setscore [id] [score]");
		if(params[0] == INVALID_PLAYER_ID) return SendClientMessage(playerid, COLOR_ROJO, "Ese jugador no esta conectado");
		
		PlayerInfo[params[0]][Score] = params[1];
		SetPlayerScore(params[0], PlayerInfo[params[0]][Score]);
		SaveAccount(params[0]);
 	}
	else SendClientMessage(playerid, COLOR_ROJO, "Comando solo para administradores RCON!");
 	return 1;
}
gracias
Reply
#2

cuбnto score le diste al probarlo?
Reply
#3

Creo que la funciуn SaveAccount esta haciendo crashear el servidor por alguna razуn.
Reply
#4

pasa cuando se da mucho score, tambien con comandos como setcash, pero solo cuando se da mucho
Reply
#5

Sн.. es por que sobrepasas enteros que sobrepasan los 32 bit.
Reply
#6

Bueno entonces no hay error en ese cmd??
Reply
#7

sн, al sobrepasar el mбximo de enteros si no me equivoco pasa el nъmero a negativo, por lo que bastaria con lo siguiente:

pawn Код:
if(params[1] < 1) return 1;
Tambiйn deberнas de usar IsPlayerConnected para comprobar si el params[0] estб conectado, asн no podrнa causar bugs.
Reply
#8

Quote:
Originally Posted by _Zume
Посмотреть сообщение
sн, al sobrepasar el mбximo de enteros si no me equivoco pasa el nъmero a negativo, por lo que bastaria con lo siguiente:

pawn Код:
if(params[1] < 1) return 1;
Tambiйn deberнas de usar IsPlayerConnected para comprobar si el params[0] estб conectado, asн no podrнa causar bugs.
No, porque ya usa sscanf para comprobar eso.
Reply
#9

pawn Код:
CMD:setscore(playerid, params[])
{
    if(IsPlayerAdmin(playerid))
    {
        if(sscanf(params, "ud", params[0], params[1])) return SendClientMessage(playerid, COLOR_ROJO, "Usa: /setscore [id] [score]");
        if(params[0] == INVALID_PLAYER_ID) return SendClientMessage(playerid, COLOR_ROJO, "Ese jugador no esta conectado");
//______------¬--------¬¬¬¬¬¬¬¬---¬¬¬¬¬¬¬¬¬---¬------------------------
        if(params[1] > 9000000 || params[1] < 1) return SendClientMessage(playerid, COLOR_ROJO, "[score] nomas de 9kk y no menos de 1");

        PlayerInfo[params[0]][Score] = params[1];
        SetPlayerScore(params[0], PlayerInfo[params[0]][Score]);
        SaveAccount(params[0]);
    }
    else SendClientMessage(playerid, COLOR_ROJO, "Comando solo para administradores RCON!");
    return 1;
}
Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)