Duda Comando ZCMD
#1

Estoy creando un Sistema de clanes, y me complico al hacer los comandos con varios parametros. por ejemplo

PHP код:
CMD:clan(playeridparams[])
{
    if(!
strcmp(params"aceptar"true))
    {
     
//funciones
    
}
    if(!
strcmp(params"rechazar"true))
    {
     
//funciones
    
}
    if(!
strcmp(params"invitar"true))
    {
     
//Aqui me complico al tener que darle una variable que detecte el id del jugador
     //ya que seria /clan invitar id
     //Yo le hice asi
    
new id;
    if(
sscanf(params"u"id))SendClientMessage(playerid, -1"Uso correcto /clan invitar [ID jugador].");
    if(
id==playerid)SendClientMessage(playerid,-1,"No puedes invitarte a ti mismo");
    if(!
IsPlayerConnected(id)) return SendClientMessage(playerid, -1"Jugador no conectado.");
   
//con tan solo poner /clan invitar (sin la id) me sale jugador no conectado
    

Reply
#2

Yo lo harнa asн: compararнa todos los sub-comandos que solo son una palabra (aceptar, rechazar) y luego, en caso de no ser ninguno de ellos usarнa sscanf para ver si ingresу el comando con ID, por ejemplo /clan invitar ivan23. Vamos a ver si sirve.
pawn Код:
CMD:clan(playerid, params[])
{
    new subcmd[32], targetid;
   
    if (!strcmp(params, "aceptar", true))
    {
        // Si escribe "aceptar" ъnicamente.
    }
    else if (!strcmp(params, "rechazar", true))
    {
        // Si escribe "rechazar" ъnicamente.
    }
    else if (!sscanf("s[30]u", subcmd, targetid))
    {
        if (targetid == INVALID_PLAYER_ID)
            SendClientMessage(playerid, ROJO, "El jugador no se encuentra conectado.");
           
        else if (!strcmp(subcmd, "invitar", true))
        {
            // Comando de invitar.
        }
        else if (!strcmp(subcmd, "otro comando", true))
        {
            // Otro comando.
        }
    }
    return 1;
}
Prueba y nos dices cуmo te fue.
Reply
#3

Disculpa mi ignorancia, їpero ZCMD y strcmp son incompatibles entre sн?
Reply
#4

Quote:
Originally Posted by Miguel
Посмотреть сообщение
Yo lo harнa asн: compararнa todos los sub-comandos que solo son una palabra (aceptar, rechazar) y luego, en caso de no ser ninguno de ellos usarнa sscanf para ver si ingresу el comando con ID, por ejemplo /clan invitar ivan23. Vamos a ver si sirve.
pawn Код:
CMD:clan(playerid, params[])
{
    new subcmd[32], targetid;
   
    if (!strcmp(params, "aceptar", true))
    {
        // Si escribe "aceptar" ъnicamente.
    }
    else if (!strcmp(params, "rechazar", true))
    {
        // Si escribe "rechazar" ъnicamente.
    }
    else if (!sscanf("s[30]u", subcmd, targetid))
    {
        if (targetid == INVALID_PLAYER_ID)
            SendClientMessage(playerid, ROJO, "El jugador no se encuentra conectado.");
           
        else if (!strcmp(subcmd, "invitar", true))
        {
            // Comando de invitar.
        }
        else if (!strcmp(subcmd, "otro comando", true))
        {
            // Otro comando.
        }
    }
    return 1;
}
Prueba y nos dices cуmo te fue.
Con tal solo poner /clan se ejecuta lo de invitar. por mas q ponga /clan aceptar. se ejecuta lo de invitar XD.
asdasd veo algunas letras en ruso en el foro XD
Reply
#5

strcmp solo compara 2 strings, creo que te refieres a OnPlayerCommandText.
Reply
#6

Quote:
Originally Posted by adri1
Посмотреть сообщение
strcmp solo compara 2 strings, creo que te refieres a OnPlayerCommandText.
Estoy usando ZCMD
Reply
#7

Le decнa al de arriba
Reply
#8

No se por quй siempre va hacia invitar, si pudieras investigar y descubrir cуmo funciona estarнa agradecido. Otra idea serнa comparar params hasta "invitar ", y ver si luego de ese caracter escribiу un ID. Te muestro.

http://paste.kde.org/pfxfenjj7
Reply
#9

Usa sscanf.

pawn Код:
CMD:clan(playerid,params[])
{

    new jugador,opcion[10];
    if(sscanf(params,"s[10]d",opcion,jugador)) return SendClientMessage(playerid,-1,"USO: /clan [Aceptar|Rechazar|Invitar] [IDJugador/Nombre]");
    if(strcmp(opcion, "aceptar", true, 8) == 0)
    {
        //Funciones
    }
    if(strcmp(opcion, "rechazar", true, 8) == 0)
    {
        //Funciones
    }
    if(strcmp(opcion, "invitar", true, 8) == 0)
    {
        //Funciones
    }
    return 1;
}
Reply
#10

Gracias Miguel, Adei1 y Juance.

Miguel el q me pasaste por pastebin, funciona perfecto. Gracias. Hace mucho q queria aprender a meter un parametro mas en un comando asi. Suerte
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)