Duda, y_stringhash...
#1

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.
Reply
#2

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..
Reply
#3

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.
Reply
#4

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.
Reply
#5

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;
}
Reply
#6

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.
Reply
#7

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.
Reply
#8

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.
Reply
#9

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")
Reply
#10

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;
}
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)