SA-MP Forums Archive
duda - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: Non-English (https://sampforum.blast.hk/forumdisplay.php?fid=9)
+--- Forum: Languages (https://sampforum.blast.hk/forumdisplay.php?fid=33)
+---- Forum: Español/Spanish (https://sampforum.blast.hk/forumdisplay.php?fid=29)
+---- Thread: duda (/showthread.php?tid=441269)



duda - Ruiz_Daniel - 02.06.2013

hola gente queria saber soy nuevo en esto de script y queria saber como cambiar un procezador de comandos.

uso strmp algo asi xD , y lo quiero cambiar a zcmd como lo cambio? alguien me puede decir se lo agradesco de ante mano ya que no entiendo en eso espero respuesta


Respuesta: duda - OTACON - 02.06.2013

[INC] zcmd 0.3.1 | Fast & Simple Command Processor
[Plugin] sscanf 2.8.1
[Tutorial] STRCMP and ZCMD



Re: duda - Ruiz_Daniel - 02.06.2013

amigo esperaba tutoriales en espaсol gracias de toda forma pero tengo una pregunta se puede cambiar el strcmp por zcmd osea solo remplazar el strcmp a zcmd y andaria? osea sol

#include <zcmd>

Luego los comandos que dicen strcmp le cambio el strcmp por zcmd nose si me explico


Respuesta: duda - TheChaoz - 03.06.2013

Brebe introducciуn a ZCMD:

pawn Код:
CMD:nombre_del_comando(playerid, params[])
{
    return 1;
}
El ej anterior es la estructura minima que todo comando ZCMD debe tener. Para evitar marearte
digamos lo basico: Algo basico sin parametros:
pawn Код:
//strcmp:
if(!strcmp(cmdtext, "/micomando", true))
{
    SetPlayerHealth(playerid, 100.0);
    SendClientMessage(playerid, -1, "Has sido curado");
    return 1;
}

//zcmd:
CMD:micomando(playerid, params[])
{
    SetPlayerHealth(playerid, 100.0);
    SendClientMessage(playeridn -1, "Has sido curado");
    return 1;
}
Algun comando con parametros:
pawn Код:
//strcmp
if(!strcmp(cmd, "/micomando", true))
{
    //No abalo el uso de 256 cells en casos innecesarios, solo me baso en los estandares utilizados comunmente por los scripters que utilizan strtok

    //---------Esta es la seccion de codigo que cambiaremos al utilizar ZCMD o casi cualquier otro procesador decomandos
    new player, dinero, str[128], tmp[256], tmp2[256];
    tmp = strtok(cmdtext, idx);
    tmp2 = strtok(cmdtext, idx);

    if(strlen(tmp) == 0 || strlen(tmp2) == 0 || !IsNumeric(tmp) || !IsNumeric(tmp2))
        SendClientMessage(playerid, -1, "USO: /micomando <playerid> <dinero>");

    player = strval(tmp);
    dinero = strval(tmp2);
    //---------
   
    if(!IsPlayerConnected(player))
        return SendClientMessage(playerid, -1, "Error: Jugador no conectado");

    if(dinero < 0)
        return SendClientMessage(playerid, -1, "No puedes sacarle dinero a un jugador");

    GivePlayerMoney(player, dinero);

    format(str, 128, "El jugador %d te dio %d dinero.", playerid, dinero);
    SendClientMessage(player, -1, str);
    format(str, 128, "Le enviaste %d pesos al jugador %d", dinero, player);
    SendClientMessage(playerid, -1, str);

    return 1;
}

//zcmd
CMD:micomando(playerid, params[])
{
    new player, dinero, str[128];
    /*la funcion sscanf retorna 0 si el formato del string y el indicados fueron correctos o 1 si no lo es/hubo algun error
    El formato "dd" indica que se espera algo asi "[numero] [numero]" (sin los []".
    Existen muchos demas caracteres para indicar formatos mucho mas complejos, pero eso te lo dejo a ti.*/

    if(sscanf(params, "dd", player, dinero))
        return SendClientMessage(playerid, -1, "USO: /micomando <playerid> <dinero>");

    //A partir de este punto, el codigo es completamente identico
    if(!IsPlayerConnected(player))
        return SendClientMessage(playerid, -1, "Error: Jugador no conectado");

    if(dinero < 0)
        return SendClientMessage(playerid, -1, "No puedes sacarle dinero a un jugador");

    GivePlayerMoney(player, dinero);

    format(str, 128, "El jugador %d te dio %d dinero.", playerid, dinero);
    SendClientMessage(player, -1, str);
    format(str, 128, "Le enviaste %d pesos al jugador %d", dinero, player);
    SendClientMessage(playerid, -1, str);

    return 1;
}
Como puedes ver sscanf hace la mayor parte del trabajo. Un tutorial sobre este tema podria a llegar a ser muy extenso, pero con estos 2 ejemplos intente resumirlo a lo mas basico para que tu luego puedas ir aprendiendo lo demas si es que lo necesitas, ya que sscanf no tiene como unico uso escanear un string de un comando.

Nota: strcmp no es un procesador de comandos, solo es una funcion que compara 2 cadenas de texto (tambien llamadas strings del ingles)


Respuesta: duda - BecksLennon - 03.06.2013

Como te dijo Chaoz, solo tienes que hacer eso pero si usas un GM ya creado no te sera fбcil cambiar todo.