sms string error
#1

PHP код:
CMD:sms(playeridparams[])
{
    new 
str[256], str2[256], idName1[MAX_PLAYER_NAME], Name2[MAX_PLAYER_NAME];
    if(
sscanf(params"us"idstr2))
    {
        
SendClientMessage(playerid0xFF0000FF"USAR: /sms <id> <mensaje>");
        return 
1;
    }
    if(!
IsPlayerConnected(id)) return SendClientMessage(playerid0xFF0000FF"ERROR: Usuario no conectado");
    if(
playerid == id) return SendClientMessage(playerid0xFF0000FF"ERROR: No podes enviarte a ti mismo!");
    {
        
GetPlayerName(playeridName1sizeof(Name1));
        
GetPlayerName(idName2sizeof(Name2));
        
format(strsizeof(str), "SMS a %s(ID %d) enviado con exito!"Name2id);
        
SendClientMessage(playeridCOLOR_GREENstr);
        
format(strsizeof(str), "SMS de %s(ID %d): %s"Name1playeridstr2);
        
SendClientMessage(idCOLOR_GREENstr);
    }
    return 
1;

Al usar este comando aparece esto en el log.

Код:
[04:44:09] sscanf warning: Strings without a length are deprecated, please add a destination size.
[04:44:09] sscanf warning: String buffer overflow.
Reply
#2

pawn Код:
if(sscanf(params, "us[256]", id, str2))
Reply
#3

fijate asi

Код:
CMD:sms(playerid, params[])
{
    new str[256], str2[256], id, Name1[MAX_PLAYER_NAME], Name2[MAX_PLAYER_NAME];
    if(sscanf(params, "us[128]", id, str2))  return SendClientMessage(playerid, 0xFF0000FF, "USAR: /sms <id> <mensaje>");
    if(!IsPlayerConnected(id)) return SendClientMessage(playerid, 0xFF0000FF, "ERROR: Usuario no conectado");
    if(playerid == id) return SendClientMessage(playerid, 0xFF0000FF, "ERROR: No podes enviarte a ti mismo!");
    {
        GetPlayerName(playerid, Name1, sizeof(Name1));
        GetPlayerName(id, Name2, sizeof(Name2));
        format(str, sizeof(str), "SMS a %s(ID %d) enviado con exito!", Name2, id);
        SendClientMessage(playerid, COLOR_GREEN, str);
        format(str, sizeof(str), "SMS de %s(ID %d): %s", Name1, playerid, str2);
        SendClientMessage(id, COLOR_GREEN, str);
    }
    return 1;
}
te falto definir que string va a tener 128 celdas
Reply
#4

Listo, gracias
Reply
#5

Quote:
Originally Posted by sonnkz
Посмотреть сообщение
fijate asi

Код:
CMD:sms(playerid, params[])
{
    new str[256], str2[256], id, Name1[MAX_PLAYER_NAME], Name2[MAX_PLAYER_NAME];
    if(sscanf(params, "us[128]", id, str2))  return SendClientMessage(playerid, 0xFF0000FF, "USAR: /sms <id> <mensaje>");
    if(!IsPlayerConnected(id)) return SendClientMessage(playerid, 0xFF0000FF, "ERROR: Usuario no conectado");
    if(playerid == id) return SendClientMessage(playerid, 0xFF0000FF, "ERROR: No podes enviarte a ti mismo!");
    {
        GetPlayerName(playerid, Name1, sizeof(Name1));
        GetPlayerName(id, Name2, sizeof(Name2));
        format(str, sizeof(str), "SMS a %s(ID %d) enviado con exito!", Name2, id);
        SendClientMessage(playerid, COLOR_GREEN, str);
        format(str, sizeof(str), "SMS de %s(ID %d): %s", Name1, playerid, str2);
        SendClientMessage(id, COLOR_GREEN, str);
    }
    return 1;
}
te falto definir que string va a tener 128 celdas
Serнa estupido hacer eso, ya que la variable de destino tiene mas de 128 celdas.
Reply
#6

Quote:
Originally Posted by DesingMyCry
Посмотреть сообщение
Serнa estupido hacer eso, ya que la variable de destino tiene mas de 128 celdas.
No seas tan cruel muchacho, mejor explicales que debe ser str[128]
Reply
#7

Quote:
Originally Posted by xSDx
Посмотреть сообщение
No seas tan cruel muchacho, mejor explicales que debe ser str[128]
Incluso, hacer eso tambiйn seria una perdida de memoria. Ya que la funciуn "SendClientMessage" tiene un lнmite de 144 carбcteres, y si a eso le restamos los que se gastan informando al jugador que le llegу un mensaje:

Код:
        format(str, sizeof(str), "SMS a %s(ID %d) enviado con exito!", Name2, id); //34 + 24 (mбxima cantidad de carбcteres en el nick): 58
        SendClientMessage(playerid, COLOR_GREEN, str);
        format(str, sizeof(str), "SMS de %s(ID %d): %s", Name1, playerid, str2);
        SendClientMessage(id, COLOR_GREEN, str);
Entonces, 144-58 = 86

Por lo que lo correcto seria usar "str[86];" y en la funciуn del plugin "us[86]".
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)