[Ayuda] Espacio en un parametro con string
#1

Bueno, hace bastante tengo este problema en la cual es que si yo pongo ejemplo

/crearlabel bienvenido a casa , lo que hace es mandarme el mensaje de como un comando erroneo, y si lo pongo todo junto si me funciona, me explico ? por ejemplo aqui un simple comando de ejmplo

pawn Код:
new Text:label[MAX_PLAYERS];

CMD:crearlabel(playerid, params[])
{
new Float:x, Float:y, Float:z, str[128];
GetPlayerPos(playerid, x, y, z);
if(sscanf(params, "s[128]", params[0])) return SendClientMessage(playerid, -1, "Uso :/crearlabel [Texto]");
format(str, sizeof(str), "%s\n Utiliza Entrar!", params[0]);
label[playerid] = Create3DTextLabel(str, COLOR_ROJO, x, y, z, 10);
}
ahora, por ejemplo si yo pongo /crearlabel bienvenido a la verduleria me retorna el mensage de que puse mal un parametro, entonces, si pongo bievenidoalaverduleria si me lo toma, como lo soluciono?

Gracias
Reply
#2

Cambia el params[0] del sscanf por "str", e igualmente en la siguiente linea has lo mismo.
Reply
#3

pero si pongo str, no tengo forma de ejecutar la cadena de texto, si con params[0] es lo mismo....

Alguna otra solucion ?
Reply
#4

Tranquilo la cadena de texto se esta guardando pero no hasta que se termina de formatear por lo que no tendras ningun fallo, prueba y me dices.
Reply
#5

їPara que empleas nuevos array con sscanf sн ese comando se puede estructurar sin ellos?
pawn Код:
new Text:label[MAX_PLAYERS];

CMD:crearlabel(playerid, params[])
{
      new Float:x, Float:y, Float:z;
      GetPlayerPos(playerid, x, y, z);
      if(isnull(params)) return SendClientMessage(playerid, -1, "Uso :/crearlabel [Texto]");
      format(params, 128, "%s\n Utiliza Entrar!", params);
      label[playerid] = Create3DTextLabel(params, COLOR_ROJO, x, y, z, 10);
      return 1;
}
Reply
#6

Quote:
Originally Posted by WCrimson
Посмотреть сообщение
їPara que empleas nuevos array con sscanf sн ese comando se puede estructurar sin ellos?
se debe utilizar otro array porque si no se produce una violaciуn de acceso de memoria.

por ejemplo tenйs.
pawn Код:
public OnPlayerCommandText(playerid, cmdtext[]) {
     if(!strcmp("/comando",cmdtext)) {
        format(cmdtext,128,"Comando Ingresado: %s",cmdtext);
        print(cmdtext);
       
        cmdtext[strlen("/comando")+1] = 1; //estй espacio ya no existe.
     }
}
//cmdtext tendrнa un tamaсo de 8 y al meterle mбs letras al mismo array se crea un overflow
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)