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.