Comando ycmd
#1

Hola como se sabe para retornar con las funciones de un determinado comando se hace esto por ejemplo(zcmd) :
cmd_salir(playerid, params);

Esto como se hace en ycmd?
Reply
#2

no entendi, tu kieres retornar un comando en una funcion? o ke? o_O

pawn Код:
CallLocalFunction("OnPlayerCommandText", "is", playerid, "/tu_comando");
Reply
#3

No mira yo tengo esto en zcmd:
pawn Код:
if(newkeys & KEY_SECONDARY_ATTACK)
    {
        new params[1];
        cmd_entrar(playerid, params);
        cmd_salir(playerid, params);
    }
Hace lo mismo que el comando entrar y salir al presionar enter con esa funciуn de "cmd_comando(...)"
peor quiero saber como se hace esto en ycmd
Reply
#4

entonce es lo que te dije, con la funcion CallLocalFunction lo puedes hacer.

pawn Код:
if(newkeys & KEY_SECONDARY_ATTACK)
    {
        CallLocalFunction("OnPlayerCommandText", "is", playerid, "/entrar");
    }
pawn Код:
if(newkeys & KEY_SECONDARY_ATTACK)
    {
        CallLocalFunction("OnPlayerCommandText", "is", playerid, "/salir");
    }
Reply
#5

no hay una funciуn por defecto en y_commands para hacerlo tal como en zcmd?
Reply
#6

Sн, pero tienen una estructura muy compleja y gastarнas mucho tiempo en hacerlo.

Lo mejor serнa hacerlo como ****** ha dicho anteriormente:
Quote:
Originally Posted by ******, traducido
Посмотреть сообщение
...Pon tu cуdigo en una funciуn separada y llama esa funciуn desde el comando y otros lugares donde la necesites.
Supongamos que tienes este comando:
pawn Код:
YCMD:salir(playerid, params[], help)
{
    #pragma unused params, help
    if(!MiVariable[playerid]) return SendClientMessage(playerid, 0xFF0000FF, "ЎError!");
    SpawnPlayer(playerid);
    MiVariable[playerid]=false;
    return 1;
}
Haciendo lo que ****** dijo, lo cambiarнamos a esto:

pawn Код:
forward Salir(playerid);
public Salir(playerid)
{
    //Cualquier cambio que hagas aquн afectarб a otros comandos/funciones que utilicen esta funciуn.
    if(!MiVariable[playerid]) return SendClientMessage(playerid, 0xFF0000FF, "ЎError!");
    SpawnPlayer(playerid);
    MiVariable[playerid]=false;
}

YCMD:salir(playerid, params[], help)
{
    #pragma unused params, help
    Salir(playerid);
    return 1;
}

Y ahora un ejemplo:
Iniciar un evento y al agotarse el tiempo del evento, forzar a todos los jugadores a salir.
pawn Код:
YCMD:iniciarevento(playerid, params[], help)
{
    #pragma unused params, help
    SetTimer("TerminarEvento", 20000, false);
    foreach(new i : Player)
    {
        MiVariable[i] = true;
    }
    return 1;
}

forward TerminarEvento();
public TerminarEvento()
{
    SendClientMessageToAll(-1, "ЎSe ha agotado el tiempo, el evento ha terminado!");
    foreach(new i : Player)
    {
        Salir(i);
    }
    return 1;
}      

forward Salir(playerid);
public Salir(playerid)
{
    if(!MiVariable[playerid]) return SendClientMessage(playerid, 0xFF0000FF, "ЎError!");
    SpawnPlayer(playerid);
    MiVariable[playerid]=false;
}
Reply
#7

Vale muchas gracias lo entendн perfecto +rep
Reply
#8

Quote:
Originally Posted by LuiisRubio
Посмотреть сообщение
Sн, pero tienen una estructura muy compleja y gastarнas mucho tiempo en hacerlo.

Lo mejor serнa hacerlo como ****** ha dicho anteriormente
Totalmente de acuerdo con tu respuesta, sin embargo difiero en la complejidad de llamar un comando. En y_commands existe una funciуn llamada Command_ReProcess la cual hace exactamente lo que necesitamos (acepta tres parametros: playerid, cmdtext[], help).

Bastarнa con poner...
pawn Код:
Command_ReProcess(playerid, "/entrar", false)
Command_ReProcess(playerid, "/salir", false)
en donde lo necesitemos. Sin embargo apoyo la idea de que es mejor usar funciones separadas en vez de comandos para lo que se propone.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)