11.06.2010, 13:36
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)
Luego iremos a public OnPlayerCommandText(playerid, cmdtext[]){ Y definiremos lo qe sera el comando "DCMD"
//"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
Luego para poder definir algunas cosas necesitaremos definir los qe es la funcion params qe sera asi:
Ahora los New:
Ahora definiremos lo que saldra si el jugador no a puesto correctamente el comando lo le falto ID o razon
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
Y cerramos el comando
Y aqui la definicion para qe le llege el mensaje a los admins
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
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
pawn Код:
dcmd(reportar , 8,cmdtext);
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);)
{
pawn Код:
#pragma unused params
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
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*/
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
}
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*/
Si algo me falto aganmelo saver por favor :S todos tenemos errores D:
Bie Cuidense y echenle galleta
Y como dice xenowort
Ponganle huevos