[Tutorial]Crear Comando /reportar [dcmd]
#1

Hola vengo a mostrarles como crear el importante sistema de reportar para servers de DM y mas

Comensemos:

Primero ay qe definir lo qe sera DCMD y lo haremos con esto (ARRIVA DEL TODO)

pawn Код:
#define dcmd(%1,%2,%3) if (!strcmp((%3)[1], #%1, true, (%2)) && ((((%3)[(%2) + 1] == '\0') && (dcmd_%1(playerid, ""))) || (((%3)[(%2) + 1] == ' ') && (dcmd_%1(playerid, (%3)[(%2) + 2]))))) return 1
Luego iremos a public OnPlayerCommandText(playerid, cmdtext[]){ Y definiremos lo qe sera el comando "DCMD"

pawn Код:
dcmd(reportar , 8,cmdtext);
//"reportar" sera lo qe definira el comando en este caso /reportar , el "8" es la cantidad de letras qe tiene el comando en este caso "8" // R-1 e-2 p-3 o-4 r-5 t-6 a-7 r-8

AHORA a definir el Comando y sus funciones

Primero tendremos qe ir fuera de OnPlayerCommandText(playerid, cmdtext[]){ para definir el comando y sus funciones

Ahora si comensemos

Para definir lo qe sea el comando usamos

pawn Код:
dcmd_reportar(playerid,params[]) //"Es la definicion del comando definida en OnPlayerCommandText" (dcmd(reportar , 8,cmdtext);)
{
Luego para poder definir algunas cosas necesitaremos definir los qe es la funcion params qe sera asi:

pawn Код:
#pragma unused params
Ahora los New:

pawn Код:
new razon[250], //Esto definira la razon de cual en jugador reporte a OTRO... Ejemplo: as reportar do a blalsd Razon: Cheat/Bug/Insultar Etc
     string[250], //Esto ayudara a qe le llege los mensajes al jugador...Ejemplo: Jugador no Conectado
     giveplayerid, //Esto definira el nombre de la persona kien reporto del admin y de la persona reportada...Ejemplo... Angel reporto a Angel
     giveplayer[MAX_PLAYER_NAME],// Esto seria lo mismo qe la de arriva
     idx, //Esto ayudara a definir los strtok y los strrest Ejemplo: cmd = strtok(params, idx);
     cmd[256]; //Ayudara a definir algunas funciones como: strval u otras
Ahora definiremos lo que saldra si el jugador no a puesto correctamente el comando lo le falto ID o razon

pawn Код:
cmd = strtok(params, idx); //Esto es importante para qe salga el mensaje de error :D
        if(!strlen(cmd))//Esto define si puso o no bien el comando
        {
            SendClientMessage(playerid, Naranja, "Usa: /reportar [ID] [Razon]"); //El Mensaje qe saldra
            return 1;
        } /*Y cerramos la definicion del mensaje*/

        giveplayerid = strval(cmd);
        razon = strrest(params,idx);
        if(!strlen(razon)) //esto definira si no puso la razon del reporte ejemplo qe solo puso /reportar 4
        {
            SendClientMessage(playerid,Naranja,"Usa: /reportar [ID] [Razon]"); //Mensaje qe saldra por si solo puso /reportar ID
            return 1;
        }/*Y cerramos la definicion del mensaje*/
Ahora lo importante el envio de mensajes al enviar reportes y el mensaje qe le saldra al admin al resivir el reporte y jugador no conectado

pawn Код:
if (IsPlayerConnected(giveplayerid))//Lo qe vera si el jugador esta conectado
        {
            GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));//Definira los nombres o las ID del reportador y el reportado
            GetPlayerName(playerid, sendername, sizeof(sendername));//Lo mismo qe arriva xD
            SendClientMessage(playerid,Amarillo,"Tu reporte ha sido enviado con Exito a los Administradores en Linea."); //Mensaje qe saldra al jugador qe envio el reporte
            SendClientMessage(playerid,Amarillo,"Si reportaste al ID incorrecto Avisa.");//Un mensaje mas
             //Para poner mas mensajes solo pon ""SendClientMessage,playerid,color,"Tu mensaje");
            format(string,sizeof(string),"* [Reporte:] %s [ID: %d] reportу a [%s] [ID: %d]. [Razуn: %s]",sendername,playerid,giveplayer,giveplayerid,razon); //Aqui se
            //definira el mensaje qe le llegara al adminstrador en este caso a los admins conectados o logeados
              MensajeParaAdmins(Azul,string,1);//Aqui el strok qe ara qe le llege los mensajes al admin mas abajo les pondre el strok
            } else {//Esto ara qe el sever vea qe ay mas :D
            format(string, sizeof(string), "[[Info]] Jugador no Conectado"); //Este mensaje le llegara al reportador en caso de qe ponga alguna ID incorrecta
            SendClientMessage(playerid, Rojo, string);//Definira el color :D
        }
Y cerramos el comando

pawn Код:
return 1;
}

Y aqui la definicion para qe le llege el mensaje a los admins

pawn Код:
forward MensajeParaAdmins(color,const string[],level); //definicion del public - callback
public MensajeParaAdmins(color,const string[],level)//y el public - callback
{
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
        if(IsPlayerConnected(i))
        {
            if (PlayerInfo[i][Nivel] >= level) //Nivel cambialo por como lo tengas en el FS o en GM como sea u caso
            {
                SendClientMessage(i, color, string); //color no es necesario cambiar nada
            }
        }
    }
    return 1;
} /*cerramos*/
Bueno compaсeros estodo no es la gran cosa per lo ise con las explicaciones mas detalladas posibles

Si algo me falto aganmelo saver por favor :S todos tenemos errores D:

Bie Cuidense y echenle galleta


Y como dice xenowort

Ponganle huevos
Reply
#2

Buen tutorial. Por cierto, їquй quieres decir con 'йchenle galleta'?
Reply
#3

Quote:
Originally Posted by CristianTdj
Buen tutorial. Por cierto, їquй quieres decir con 'йchenle galleta'?
Echalea ganas
echale esfuerso
Reply
#4

Buen tuto men gracias bro


PD: jaja echale galleta te rifaste we
Reply
#5

Quote:
Originally Posted by Dark_Oz
Buen tuto men gracias bro


PD: jaja echale galleta te rifaste we

Gracias
Reply
#6

Yo diria pone huevos! xDDDD

Al estilo argentino jajaja, buen tuto
Reply
#7

Quote:
Originally Posted by xenowort
Yo diria pone huevos! xDDDD
JAJA BUENA XD
y
Gracias
Reply
#8

en que parte va esto

dcmd_reportar(playerid,params[]) //"Es la definicion del comando definida en OnPlayerCommandText" (dcmd(reportar , 8,cmdtext)
{
Reply
#9

pawn Код:
dcmd_reportar(playerid,params[]) //"Es la definicion del comando definida en OnPlayerCommandText" (dcmd(reportar , 8,cmdtext);)
{

public OnPlayerCommandText
{
dcmd(reportar , 8,cmdtext);
return 1;
}
Reply
#10

tambien me podes decir donde va esto

cmd = strtok(params, idx); //Esto es importante para qe salga el mensaje de error
if(!strlen(cmd))//Esto define si puso o no bien el comando
{
SendClientMessage(playerid, Naranja, "Usa: /reportar [ID] [Razon]"); //El Mensaje qe saldra
return 1;
} /*Y cerramos la definicion del mensaje*/

giveplayerid = strval(cmd);
razon = strrest(params,idx);
if(!strlen(razon)) //esto definira si no puso la razon del reporte ejemplo qe solo puso /reportar 4
{
SendClientMessage(playerid,Naranja,"Usa: /reportar [ID] [Razon]"); //Mensaje qe saldra por si solo puso /reportar ID
return 1;
}/*Y cerramos la definicion del mensaje*/
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)