Pedido de Tutorial de sscanf y Zcmd
#1

Verбn, necesito un tutorial de como descargar y usar sscanf y zcmd, de lo que es y sus ventajas. Ahora mismo hay muchos que usan sscanf y Zcmd, pero yo aъn no se. He buscado pero solo vi un tutorial, en portugues. Perdonen si he escrito algo mal o estб poco detallado, pero estoy en un movil.
Reply
#2

Adhiero.
Reply
#3

No es muy complicado, les dejo lo bбsico.

Comando /me <accion>
pawn Код:
new str[128], pname[MAX_PLAYER_NAME];

CMD:me(playerid, params[]) // Creamos el comando
{
    new acc[128]; // Definimos "acc" con un valor de 128 cells
    if(!sscanf(params, "s[128]", acc)) // Si los parametros (params) son correctos (string con maximo 128 caracteres)
    {
        GetPlayerName(playerid, pname, sizeof(pname)); // Obtenemos el nombre del jugador
        format(str, sizeof(str), "*%s %s", pname, acc); // Damos formato a "str"
        SendClientMessageToAll(COLOR_YELLOW, str); // Enviamos "str" a todos en color amarillo
    } else return SendClientMessage(playerid, COLOR_RED, "Uso: /me <accion>"); // En caso de que los parametros sean nulos / mayores a 128 caracteres...
    return 1;
}
Comando /pm <id> <mensaje> & /r <mensaje>
pawn Код:
CMD:pm(playerid, params[])
{
    new msje[80], playerid2; // Definimos "acc" con un valor de 128 cells
    if(!sscanf(params, "rs[80]", playerid2, msje)) // Primero se busca un playerid ®, luego un string (s[80]). 80 indica la longitud maxima.
    {
        if(!IsPlayerConnected(playerid2)) return SendClientMessage(playerid, COLOR_RED, "Este jugador no esta conectado."); // Si el jugador se desconecto
        GetPlayerName(playerid, pname, sizeof(pname)); // Obtenemos el nombre del jugador que ENVIA el pm
       
        format(str, sizeof(str), "PM de %s: %s", pname, msje); // Damos formato a "str" (PM de Juan: Fuck it all!)
        SendClientMessage(playerid2, COLOR_GREEN, str); // Enviamos "str" a "playerid2" en color verde.
       
        SetPVarInt(playerid2, "Received", 1); // Indicamos que playerid2 recibio un mensaje.
        SetPVarInt(playerid2, "LastPmFrom", playerid); // Indicamos que playerid2 recibio el ultimo mensaje de parte de playerid.
       
    } else return SendClientMessage(playerid, COLOR_RED, "Uso: /pm <mensaje>"); // En caso de que falte un parametro/el mensaje sea mayor a 80 caraceteres
    return 1;
}

CMD:r(playerid, params[])
{
    new msje[80]; // Definimos "acc" con un valor de 128 cells
    if(GetPVarInt(playerid, "Received") == 0) return SendClientMessage(playerid, COLOR_RED, "No has recibido ningun PM.");
    if(!sscanf(params, "s[80]", msje)) // Primero se busca un playerid ®, luego un string (s[80]). 80 indica la longitud maxima.
    {
        new playerid2; // Definimos "playerid2".
        playerid2 = GetPVarInt(playerid, "LastPmFrom"); // Indicamos que "playerid2" es el valor de LastPmFrom
       
        if(!IsPlayerConnected(playerid2)) return SendClientMessage(playerid, COLOR_RED, "Este jugador no esta conectado."); // Si el jugador se desconecto
        GetPlayerName(playerid, pname, sizeof(pname)); // Obtenemos el nombre del jugador que ENVIA el pm
       
        format(str, sizeof(str), "PM de %s: %s", pname, msje); // Damos formato a "str" (PM de Juan: Fuck it all!)
        SendClientMessage(playerid2, COLOR_GREEN, str); // Enviamos "str" a "playerid2" en color verde.
       
        SetPVarInt(playerid2, "Received", 1); // Indicamos que playerid2 recibio un mensaje.
        SetPVarInt(playerid2, "LastPmFrom", playerid); // Indicamos que playerid2 recibio el ultimo mensaje de parte de playerid.
       
        SetPVarInt(playerid, "Received", 0); // Indicamos que playerid ya contesto el mensaje.
        DeletePVar(playerid, "LastPmFrom"); // Eliminamos la variable LastPmFrom para este player.
       
    } else return SendClientMessage(playerid, COLOR_RED, "Uso: /pm <mensaje>"); // En caso de que falte un parametro/el mensaje sea mayor a 80 caraceteres
    return 1;
}
Estos ultimos 2 no los probe, pero deberнan funcionar.

Esto es lo bбsico de sscanf, yo use comandos de este tipo para crear mi sistema de Administraciуn ^^;
Espero que les sirva de algo, si tienen alguna duda, comenten!

PD: Necesitan los includes sscanf2, zcmd, y tener definido COLOR_GREEN, COLOR_RED, y COLOR_YELLOW.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)