Crash al usar valores muy largos en parametros -
Pipe98 - 08.01.2015
Me ha pasado ultimamente que el servidor se apaga, y es que cuando por ejemplo usan /setmoney, o setscore y dan una cantidad en negativa o muy lata como 7127821871872 el servidor se crahea, sera que el el arvhivo y_ini no puede guardar todo eso? es muy molesto pues llega apagar el servidor... muchas gracias
Код:
CMD:setmoney(playerid, params[])
{
if(sscanf(params, "ud", params[0], params[1])) return SendClientMessage(playerid, -1, "USAGE: /setmoney [id] [money]");
if(params[0] == INVALID_PLAYER_ID) return SendClientMessage(playerid, -1, "Jugador no conectado");
PlayerData[params[0]][pCash] = params[1];
SetPlayerMoney(params[0], PlayerData[params[0]][pCash]);
GuardarCuenta(params[0]);
SendClientMessageEx(params[0], -1 ,"||- administrador %s te puso el cash en %d", GetPlayerNameEx(playerid), params[1]);
return 1;
}
no se que pasa, y este no es el ъnico comando, serб problema del sscanf?? o estarб mal actualizado?? porque tendria que andar poniendo restricciones en todos los comandos del sscanf D:
el error que me tira el crashdetect:
Код:
[21:48:26] [debug] Run time error 6: "Invalid instruction"
[21:48:26] [debug] Unknown opcode 0x203 at address 0x00000033
[21:48:26] [debug] AMX backtrace:
[21:48:26] [debug] #0 00000033 in public cmd_setmoney () from gamemode.amx
[21:48:26] [debug] #1 native CallLocalFunction () from samp-server.exe
[21:48:26] [debug] #2 00011e68 in ?? (0, 18608080) from fr.amx
[21:48:26] [debug] #3 00006334 in public OnPlayerCommandText (0, 18608080) from gamemode.amx
Respuesta: Crash al usar valores muy largos en parametros -
jotajeda - 09.01.2015
pawn Код:
CMD:setmoney(playerid, params[])
{
if(sscanf(params, "ud", params[0], params[1])) return SendClientMessage(playerid, -1, "USAGE: /setmoney [id] [money]");
if(params[0] == INVALID_PLAYER_ID) return SendClientMessage(playerid, -1, "Jugador no conectado");
if(params[1] < 10000000 || params[1] > 1)//10 caka
{
PlayerData[params[0]][pCash] = params[1];
SetPlayerMoney(params[0], PlayerData[params[0]][pCash]);
GuardarCuenta(params[0]);
SendClientMessageEx(params[0], -1 ,"||- administrador %s te puso el cash en %d", GetPlayerNameEx(playerid), params[1]);
}else SendClientMessage(playerid, -1 ,"Mucho dinero, no puedes mandar mas de 10 caca");
return 1;
}
edit: if(params[1] < 10000000 || params[1] > 1)//10 caka
Respuesta: Crash al usar valores muy largos en parametros -
Zume - 09.01.2015
http://es.wikipedia.org/wiki/32_bits Pawn es en 32 bit, ninguna variable en Pawn puede contener mayor valor de 2.147.483.647 es posible que sea eso.
Respuesta: Crash al usar valores muy largos en parametros -
Pipe98 - 09.01.2015
entonces poniendo una condicion como lo hizo jotajeda soluciono?
entonces cualquier comando que tenga sscanf y se use un parametro largo en un comando dentro del servidor puede dar crash??