Duda, y_stringhash... -
OTACON - 16.02.2014
Buenas a todos, como puedo hacerl osiguiente con y_stringhash?.
pawn Код:
COMMAND:comando(playerid, params[]){
if(!sscanf(params,"s[20]",params[0])){
SendClientMessage(playerid,-1,"INFO: Utilizar el comando /comando [opciones]");
return true;
}
switch(YHash(params[0])){
case _H<opcion1>:{} // /comando [opcion1]
case _H<opcion2>:{} // /comando [opcion2]
case _H<opcion3>:{} // /comando [opcion3]
case _H<opcion4>:{} // /comando [opcion4]
case _H<opcion5>:{} // /comando [opcion5] [opcion1] [opcion2]
//aca dentro de la opcion 5 quiero colocarle 2 opciones mas o mas.
}
return true;
}
desde ya muchas gracias.
Respuesta: Duda, y_stringhash... -
JustBored - 16.02.2014
Quote:
Originally Posted by OTACON
Buenas a todos, como puedo hacerl osiguiente con y_stringhash?.
pawn Код:
COMMAND:comando(playerid, params[]){
if(!sscanf(params,"s[20]",params[0])){ SendClientMessage(playerid,-1,"INFO: Utilizar el comando /comando [opciones]"); return true; }
switch(YHash(params[0])){ case _H<opcion1>:{} // /comando [opcion1] case _H<opcion2>:{} // /comando [opcion2] case _H<opcion3>:{} // /comando [opcion3] case _H<opcion4>:{} // /comando [opcion4] case _H<opcion5>:{} // /comando [opcion5] [opcion1] [opcion2] //aca dentro de la opcion 5 quiero colocarle 2 opciones mas o mas. } return true; }
desde ya muchas gracias.
|
No entendн, їvos queres agregarle 2 opciones mбs a la opciуn 5? para eso necesitaras hacer algo masomenos parecido a esto:
pawn Код:
//blabla
case _H<opcion5>:
{
sscanf(params, "%s%s", params[1], params[2]);
//seguir el cуdigo..
Re: Duda, y_stringhash... -
Daniel-92 - 16.02.2014
Se hace igual, con otro switch dentro de la opcion 5, pero tu problema seria mбs bien de sscanf tenes que buscar el especificador que te permite meter strings opcionales y utilzar tus propias variables en vez de params.
Respuesta: Duda, y_stringhash... -
DesingMyCry - 16.02.2014
Usa sscanf sin la condiciуn, y en el mismo agregale los 3 marcadores.
Daniel, si lo hace como tu dices no funcionarб, ya que "opcion5" no tiene espacios, ni puede usarlos.
Re: Respuesta: Duda, y_stringhash... -
Daniel-92 - 16.02.2014
Quote:
Originally Posted by DesingMyCry
Daniel, si lo hace como tu dices no funcionarб, ya que "opcion5" no tiene espacios, ni puede usarlos.
|
Si funcionaria porque serian dos strings opcionales.
pawn Код:
if(sscanf(params,"s[20]S[20]S[64]",opcion1,opcion2,string)){
SendClientMessage(playerid,-1,"INFO: Utilizar el comando /comando [opciones]");
return true;
}
Respuesta: Duda, y_stringhash... -
DesingMyCry - 16.02.2014
El "especificador S" no existe.
No seria mas fбcil, simplemente sin utilizar la condiciуn en sscanf?
pawn Код:
new opciones[3][20];
sscanf(params, "s[20]s[20]s[20]", opciones[0], opciones[1], opciones[2]);
De esta forma no estas atado a que el cуdigo se detenga por una condiciуn.
Respuesta: Duda, y_stringhash... -
TheChaoz - 16.02.2014
Quote:
Originally Posted by DesingMyCry
El "especificador S" no existe.
No seria mas fбcil, simplemente sin utilizar la condiciуn en sscanf?
pawn Код:
new opciones[3][20];
sscanf(params, "s[20]s[20]s[20]", opciones[0], opciones[1], opciones[2]);
De esta forma no estas atado a que el cуdigo se detenga por una condiciуn.
|
El especificador 'S' si existe y se utiliza para strings opcionales; su sintaxis es: "S(string)[length]" donde 'string' es el string por defecto y 'length' es la longitud mбxima.
Respuesta: Duda, y_stringhash... -
DesingMyCry - 17.02.2014
Eh? http://prntscr.com/2t7sgq
Edito: vale, ya me leн el tуpico completo... si aparece. Vendria a ser lo mismo, obtener el mismo resultado a como yo dije.
Re: Duda, y_stringhash... -
Daniel-92 - 17.02.2014
Vendria siendo un poco mejor, porque se manda el mensaje de error si no pone la primera opcion y me imagino que el ultimo string es un texto con espacios y con el 'S' si no me equivoco el que esta de ultimo abarcaria todo el texto sobrante (funcionaria bien para comandos tipo "/clan slogan Solo los mejores")
Respuesta: Duda, y_stringhash... -
OTACON - 17.02.2014
no funciona, o no entiendo :/
..
hice lo siguiente, asi como esta llega hasta el if de la opcion5 pero al poner /test opcio5 opcion1 me retorna el default de primer if, y si coloco s[20]S[20]S[20] me retorna el default del if de la opcion5 y me itra el siguiente error el log.
Код:
[09:21:37] sscanf warning: No default value found.
[09:21:37] sscanf warning: Unknown format specifier '[', skipping.
[09:21:37] sscanf warning: Unknown format specifier '2', skipping.
[09:21:37] sscanf warning: Unknown format specifier '0', skipping.
[09:21:37] sscanf warning: Unknown format specifier ']', skipping.
pawn Код:
COMMAND:test(playerid, params[]){
if(sscanf(params,"s[20]",params[0])){
SendClientMessage(playerid,-1,"INFO: Utilizar el comando /test [opciones(opcion1-opcion2-opcion3-opcion4-opcion5)]");
return true;
}
switch(YHash(params[0])){
case _H<opcion1>:{ SendClientMessage(playerid,-1,"INFO: opcion 1 correcta!."); }
case _H<opcion2>:{ SendClientMessage(playerid,-1,"INFO: opcion 2 correcta!."); }
case _H<opcion3>:{ SendClientMessage(playerid,-1,"INFO: opcion 3 correcta!."); }
case _H<opcion4>:{ SendClientMessage(playerid,-1,"INFO: opcion 4 correcta!."); }
case _H<opcion5>:{
new opciones[3][20];
if(sscanf(params,"s[20]s[20]s[20]", opciones[0], opciones[1], opciones[2])){
SendClientMessage(playerid,-1,"INFO: Utilizar el comando /test opcion5 [opciones(opcion1-opcion2-opcion3)]");
return true;
}
switch(YHash(opciones[0])){
case _H<opcion1>:{ SendClientMessage(playerid,-1,"INFO: opcion 1 de opcion5 correcta!."); }
case _H<opcion2>:{ SendClientMessage(playerid,-1,"INFO: opcion 2 de opcion5 correcta!."); }
case _H<opcion3>:{ SendClientMessage(playerid,-1,"INFO: opcion 3 de opcion5 correcta!."); }
default:{ SendClientMessage(playerid,-1,"INFO: opcion de opcion5 incorrecta!."); }
}
}
default:{ SendClientMessage(playerid,-1,"INFO: opcion incorrecta!."); }
}
return true;
}