Posts: 4,930
Threads: 467
Joined: Dec 2010
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.
Posts: 836
Threads: 0
Joined: Dec 2010
Reputation:
0
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.
Posts: 1,198
Threads: 9
Joined: Dec 2010
Reputation:
0
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.
Posts: 836
Threads: 0
Joined: Dec 2010
Reputation:
0
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")
Posts: 4,930
Threads: 467
Joined: Dec 2010
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;
}