[Include] mcmd 2.0 - Procesador de comandos - Mas rapido que dcmd
#1

[Include] mcmd 2.2 - Procesador de comandos!
> por MrDeath!



Descripciуn:
Nueva versiуn, se ha removido el mcmd_init y se han agregado mуdulos.



Funciones:
Код:
mcmd(funciуn, fuente, longitud comando, jugador)
funcion  - Nombre de la funciуn
fuente   - Fuente de la cuбl usaremos el comando (cmdtext...)
longitud - Cantidad de caracteres del comando (EJ: kick = 4)
jugador  - El jugador que usу el comando


♦ mcmd2(funciуn, fuente, jugador)
funcion - Nombre de la funciуn
fuente  - Fuente de la cuбl usaremos el comando (cmdtext...)
jugador - El jugador que usу el comando


♦ mcmd_modulo(letra1, letra2, fuente)
letra1 - Primera letra a checkear (las letras van con formato 'letra')
letra2 - Para las letras en la primera va minuscula y en la segunda mayuscula, esta funciona igual que letra1, esto funciona para evitar confuciones por mayusculas/minusculas
fuente - El comando que usу el jugador

Uso:
Код:
mcmd
Se usa para los comandos con parбmetros (EJ: /kick <Id>)


♦ mcmd2
Se usa para los comandos sin parбmetros, pero querйs comandos con parбmetros y sin parбmetros al mismo estilo, usб mcmd2.


♦ mcmd_modulo
Estos funcionan creando un mуdulo, pero, їPara quй sirve?:
El mуdulo se basa en la primera letra, para hacer mбs rбpido el procesamiento, es decir, creamos un mуdulo para la letra "a", entonces si la primera letra del comando es la letra 'a', se procede a checkear los comandos. Esto sirve para hacer mбs rбpido el procesamiento.


♦ Cуmo definir los comandos
Una vez que los pusimos en OnPlayerCommandText ahora tenemos que crear la funciуn que se llamarб con los datos del comando. Tiene que ser asн mcmd_comando(playerid, parametros[]), el "comando" lo remplazamos por el nombre del comando.
Si es un comando CON parбmetros dejamos el "parametros[]", de lo contrario se lo sacamos.

їPor quй usarlo?
Es mбs rбpido para scriptear y mбs rбpido que el dcmd que usan muchos, y quizб mбs ordenado para algunas personas.



Ejemplos:
pawn Код:
public OnPlayerCommandText(playerid, cmdtext[])
{
    // Comandos CON parametros
    mcmd_modulo('a', 'A', cmdtext)
    {
        mcmd(kick, cmdtext, 4, playerid);
    }
    mcmd_modulo('m', 'M', cmdtext)
    {
        mcmd(me, cmdtext, 2, playerid);
    }


    // Comando SIN parametros
    mcmd_modulo('a', 'A', cmdtext)
    {
        mcmd2(ayuda, cmdtext, playerid);
    }
    return 0;
}


mcmd_kick(playerid, parametros[])
{
    new kickid = strval(parametros);
    if (!IsPlayerConnected(kickid))
    {
        SendClientMessage(playerid, 0xFFFFFFFF, "El jugador no estб conectado");
        return 0;
    }

    new String[30];
    format(String, sizeof(String), "%i kickeado exitosamente", kickid);
    SendClientMessage(playerid, 0xFFFFFFFF, String);
    Kick(kickid);
    return 1;
}

mcmd_me(playerid, parametros[])
{
    new String[128];
    format(String, sizeof(String), "%i %s", playerid, parametros);
    SendClientMessageToAll(0xFFFFFFFF, String);
    return 1;
}


mcmd_ayuda(playerid)
{
    SendClientMessage(playerid, 0xFFFFFFFF, "Has usado el comando /ayuda");
    return 1;
}


Descarga:
Descargar!
Reply
#2

Wow, vas mejorando !
Me lo bajare al tiro.

P.D: Primero =P
Reply
#3

Gracias, para la siguiente versiуn estoy haciendo algo parecido a lo que dijiste (creo que fuiste tъ), para mбs parбmetros.
Reply
#4

Fuн yo el que lo dijo xD.
En esta versiуn lo ъnico que hiciste fue hacerlo mбs rбpido que dcmd, їno?
Reply
#5

No fue sуlo eso. Removн el mcmd_init, y eso hizo que mcmd sea mбs rбpido que dcmd.
Reply
#6

їY para quй servнa el mcmd_init?
Otra pregunta, їcuбndo harбs lo de los nuevos parбmetros?
Reply
#7

mcmd_init eliminaba el "/" de cmdtext, para luego compararlos mбs fбcil, usй eso porque me daba un error raro que en la 2.0 lo pude corregir y por eso saquй mcmd_init.

Lo estoy trabajando quizб lo suba hoy como 2.2, pero tambiйn podes usar sscanf o strtok.
Reply
#8

Hola Mr.Death, esta bueno tu macro. Pero te recomiendo que utilizies el "CallRemoteFunction". Todo va a ser mas rapido.

Yo hice un script como el zcmd, pero en 10 lineas. Esta casi en el misma velocidad que zcmd.
(Bueno, no vine hablar de mi script, pero te recomiendo usar CallRemoveFunction para mas velocidad)
Reply
#9

Gracias Lethal, el problema de hacer una macro como esa, es que las personas dirнa que es copia del zcmd.
Reply
#10

Bueno si dirian que es una 'copia' pero mira. En el codigo que yo hice, yo use sscanf para processar las commands, i el codigo de "CallRemoteFunction" esta muy differente. Usando sscanf y CallRemoteFunction te daria la ultima velocidad.
Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)