Código para pegar reporte do player. - xxxjhonatan_wi - 30/10/2021
Bom galera, fiz um código para o player poder reportar outro jogador, fiz o esquema da mensagem aparecer pros admins e para ele mesmo, Mas estou com dificuldade
de criar a parte onde o Admin usa um cmd para pegar o reporte e aparecer uma mensagem pro player.
Ex: /pegarreporte [id] e aparecer a seguinte mensagem pro player que reportou: O Administrador: %s[%d] pegou o seu reporte contra o jogador X.
O código até o momento:
CMD:reportar(playerid, params [])
{
new ID, Texto[300], String[300], string2[300];
if(sscanf(params, "us", ID, Texto)) return SendClientMessage(playerid, -1, "{B22222}[Breaking Peace] > {FFFFFF}Comando correto: /reportar [ID] [MOTIVO]");
if(!IsPlayerConnected(ID)) return SendClientMessage(playerid, -1, "{B22222}[Breaking Peace] > {FFFFFF}ID nao conectado.");
format(String, sizeof(String), "{B22222}[{FFFFFF}REPORTE{B22222}] > O player: {FFFFFF}%s[%d]{B22222} reportou o player: {FFFFFF}%s[%d]{B22222} | motivo: {FFFFFF}%s", pName(playerid), playerid, pName(ID), ID, Texto);
format(string2, sizeof(string2), "{20B2AA}[ AVISO ] > O seu reporte contra o player: {FFFFFF}%s[%d] foi enviado aos{20B2AA} Administradores", pName(ID), ID);
SendClientMessage(playerid, -1, string2);
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(PlayerInfo[i][Admin] > 0)
{
SendClientMessage(i, Notificacoes, String);
}
}
return 1;
}
RE: Código para pegar reporte do player. - ipsLuan - 31/10/2021
Tem que usar uma variável para atribuir o ID do reporte. De preferência, use o ID do jogador que reportou.
RE: Código para pegar reporte do player. - xxxjhonatan_wi - 31/10/2021
(31/10/2021 11:11)ipsLuan Escreveu: Tem que usar uma variável para atribuir o ID do reporte. De preferência, use o ID do jogador que reportou.
Como eu faço isso?
RE: Código para pegar reporte do player. - MrThúúG - 31/10/2021
(31/10/2021 14:55)xxxjhonatan_wi Escreveu: (31/10/2021 11:11)ipsLuan Escreveu: Tem que usar uma variável para atribuir o ID do reporte. De preferência, use o ID do jogador que reportou.
Como eu faço isso? Esse teu report funciona? com todas essas cores usando todos esses caracteres?
RE: Código para pegar reporte do player. - xxxjhonatan_wi - 31/10/2021
(31/10/2021 18:59)MrThúúG Escreveu: (31/10/2021 14:55)xxxjhonatan_wi Escreveu: (31/10/2021 11:11)ipsLuan Escreveu: Tem que usar uma variável para atribuir o ID do reporte. De preferência, use o ID do jogador que reportou.
Como eu faço isso? Esse teu report funciona? com todas essas cores usando todos esses caracteres? Não! As vezes o reporte não aparece pros admins
RE: Código para pegar reporte do player. - MrThúúG - 31/10/2021
Poderia me passar a stock do seu pName ?
RE: Código para pegar reporte do player. - xxxjhonatan_wi - 31/10/2021
(31/10/2021 19:55)MrThúúG Escreveu: Poderia me passar a stock do seu pName ?
stock pName(playerid)
{
new Nome[24];
GetPlayerName(playerid, Nome, sizeof Nome);
return Nome;
}
RE: Código para pegar reporte do player. - MrThúúG - 02/11/2021
Fiz para mim, e adaptei para as suas variáveis.
Topo do GM
Código PHP: new Reportou [MAX_PLAYERS]; new Relatou [MAX_PLAYERS]; new USOUCMD[MAX_PLAYERS];
OnPlayerConnect ou em OnplayerSpawn
Código PHP: Reportou[playerid] = 0; Relatou[playerid] = 0; USOUCMD[playerid] = 0;
OnPlayerDisconnect
Código PHP: Reportou[playerid] = 0; Relatou[playerid] = 0; USOUCMD[playerid] = 0;
Código PHP: CMD:reportar(playerid, params[]) { new ID,motivo[256],Str[256],Str2[256]; if(USOUCMD[playerid] > gettime())return SendClientMessage(playerid, -1, "Você precisa esperar 20 segundos para fazer outro report!"); if(sscanf(params, "us[256]", ID, motivo))return SendClientMessage(playerid, 0xB4B5B7FF, "USE: /reportar [id] [motivo]"); if(!IsPlayerConnected(ID))return SendClientMessage(playerid, 0xB4B5B7FF, " Este player está off-line !"); if(playerid == ID) return SendClientMessage(playerid, -1, "[ERRO] > Você não pode se reportar."); if(strlen(motivo) > 30 )return SendClientMessage( playerid, 0xAA3333AA, "[ x ] Report muito grande !" ); SetPVarString(playerid, "NomeReport",pName(ID)); SetPVarInt(playerid, "ID",ID); SetPVarString(playerid, "Motivo",motivo); format(Str, sizeof(Str), "| INFO | > {00FF00}%s(%d) {FFFFFF}reportou {FF0000}%s:(%d) {FFFFFF}motivo: {20B2AA}%s", pName(playerid),playerid, pName(ID),ID,motivo); MSGADM(-1, Str, 1); SetPVarString(playerid, "Report",Str); format(Str2, sizeof(Str2), "| INFO | > O seu reporte: {20B2AA}%s {FFFFFF}contra: {FF0000}%s(%d) {FFFFFF}foi enviado.",motivo,pName(ID),ID); SendClientMessage(playerid,-1, Str2); Reportou[playerid] = 1; USOUCMD[playerid] = gettime() + 20; return 1; } CMD:pegarreport(playerid, params []) { if(PlayerInfo[playerid][Admin] < 1) return SendClientMessage(playerid, COLOR_GRAD1, " Você não está autorizado a usar este comando !"); new ID,Str[256],Motivo[256],Motivo2[256],Nome[30],Report[256]; if(sscanf(params, "u", ID)) return SendClientMessage(playerid, -1, "[ERRO] > Comando correto: /pegarreport [ID]"); if(!IsPlayerConnected(ID)) return SendClientMessage(playerid, -1, "[ERRO] > ID nao conectado."); if(Reportou[ID] == 1) { GetPVarString(ID, "NomeReport", Nome, sizeof(Nome)); GetPVarString(ID, "Report", Motivo, sizeof(Motivo)); GetPVarString(ID, "Motivo", Motivo2, sizeof(Motivo2)); format(Str, sizeof(Str), "{20B2AA} o Admin: %s(%d) {FFFFFF}leu o seu report: {20B2AA}%s. {FFFFFF}contra: {FF0000}%s(%d).",pName(playerid),playerid,Motivo2,Nome,GetPVarInt(playerid, "ID")); SendClientMessage(ID,-1, Str); SendClientMessage(playerid, 0xB4B5B7FF, "==================================================== REPORT ===================================================="); format(Report,sizeof(Report), "%s",Motivo); SendClientMessage(playerid, -1, Report); SendClientMessage(playerid, 0xB4B5B7FF, "==================================================== REPORT ===================================================="); Reportou[ID] = 0; DeletePVar(ID, "NomeReport"); DeletePVar(ID, "Report"); DeletePVar(ID, "Motivo"); DeletePVar(ID, "ID"); }else{ new NReport[50]; format(NReport, sizeof(NReport), "|INFO| > %s:(%d) Não fez nenhum report.", pName(ID),ID); SendClientMessage(ID, -1, NReport); } return 1; }
CMD:relatorio(playerid, params[]) { new Relatorio[128],Str[128],Str2[128]; if(Relatou[playerid] > gettime())return SendClientMessage(playerid, -1, "Você precisa esperar 20 segundos para fazer outro relatorio!"); if(sscanf(params, "s[256]", Relatorio))return SendClientMessage(playerid, 0xB4B5B7FF, "USE: /relatorio [msg]"); if(strlen(Relatorio) > 70 )return SendClientMessage( playerid, 0xAA3333AA, "[ x ] Relatorio muito grande !" ); format(Str, sizeof(Str), "| INFO | >{FF0000}%s:(%d) {FFFFFF}Relatou: {20B2AA}%s.",pName(playerid),playerid,Relatorio); MSGADM(-1, Str, 1); SetPVarString(playerid, "Relatorio",Str); format(Str2, sizeof(Str2), "| INFO | > Relatorio: {20B2AA}%s {FFFFFF}Enviado.",Relatorio); SendClientMessage(playerid,-1, Str2); Relatou[playerid] = 1; USOUCMD[playerid] = gettime() + 20; return 1; } CMD:pegarrelatorio(playerid, params []) { if(PlayerInfo[playerid][Admin] < 1) return SendClientMessage(playerid, COLOR_GRAD1, " Você não está autorizado a usar este comando !"); new ID,Str[256],Str2[256],Relatorio[256]; if(sscanf(params, "u", ID)) return SendClientMessage(playerid, -1, "[ERRO] > Comando correto: /pegarrelatorio [ID]"); if(!IsPlayerConnected(ID)) return SendClientMessage(playerid, -1, "[ERRO] > ID nao conectado."); if(Relatou[ID] == 1) { GetPVarString(ID,"Relatorio",Relatorio,sizeof(Relatorio)); format(Str, sizeof(Str), "{20B2AA} o Admin: %s(%d) {FFFFFF}leu o seu relatorio: {20B2AA}%s.",pName(playerid),playerid,Relatorio); SendClientMessage(ID,-1, Str); SendClientMessage(playerid, 0xB4B5B7FF, "==================================================== RELATORIO ===================================================="); format(Str2,sizeof(Str2), "%s",Relatorio); SendClientMessage(playerid, -1, Str2); SendClientMessage(playerid, 0xB4B5B7FF, "==================================================== RELATORIO ===================================================="); Relatou[ID] = 0; DeletePVar(ID, "Relatorio"); }else{ new NRelatou[50]; format(NRelatou, sizeof(NRelatou), "|INFO| > %s:(%d) Não fez nenhum relatorio.", pName(ID),ID); SendClientMessage(ID, -1, NRelatou); } return 1; }
static stock MSGADM(COLOR,const striing[],level) { foreach(Player, i) { if (PlayerInfo[i][Admin] >= level) { SendClientMessage(i, COLOR, striing); } } printf("%s", striing); return true; }
RE: Código para pegar reporte do player. - xxxjhonatan_wi - 02/11/2021
(02/11/2021 15:55)MrThúúG Escreveu: Fiz para mim, e adaptei para as suas variáveis.
Topo do GM
Código PHP: new Reportou [MAX_PLAYERS]; new Relatou [MAX_PLAYERS]; new USOUCMD[MAX_PLAYERS];
OnPlayerConnect ou em OnplayerSpawn
Código PHP: Reportou[playerid] = 0; Reportou[playerid] = 0; USOUCMD[playerid] = 0;
OnPlayerDisconnect
Código PHP: Reportou[playerid] = 0; Reportou[playerid] = 0; USOUCMD[playerid] = 0;
Código PHP: CMD:reportar(playerid, params[]) { new ID,motivo[256],Str[256],Str2[256]; if(USOUCMD[playerid] > gettime())return SendClientMessage(playerid, -1, "Você precisa esperar 20 segundos para fazer outro report!"); if(sscanf(params, "us[256]", ID, motivo))return SendClientMessage(playerid, 0xB4B5B7FF, "USE: /reportar [id] [motivo]"); if(!IsPlayerConnected(ID))return SendClientMessage(playerid, 0xB4B5B7FF, " Este player está off-line !"); if(playerid == ID) return SendClientMessage(playerid, -1, "[ERRO] > Você não pode se reportar."); if(strlen(motivo) > 30 )return SendClientMessage( playerid, 0xAA3333AA, "[ x ] Report muito grande !" ); SetPVarString(playerid, "NomeReport",pName(ID)); SetPVarInt(playerid, "ID",ID); SetPVarString(playerid, "Motivo",motivo); format(Str, sizeof(Str), "| INFO | > {00FF00}%s(%d) {FFFFFF}reportou {FF0000}%s:(%d) {FFFFFF}motivo: {20B2AA}%s", pName(playerid),playerid, pName(ID),ID,motivo); MSGADM(-1, Str, 1); SetPVarString(playerid, "Report",Str); format(Str2, sizeof(Str2), "| INFO | > O seu reporte: {20B2AA}%s {FFFFFF}contra: {FF0000}%s(%d) {FFFFFF}foi enviado.",motivo,pName(ID),ID); SendClientMessage(playerid,-1, Str2); Reportou[playerid] = 1; USOUCMD[playerid] = gettime() + 20; return 1; } CMD:pegarreport(playerid, params []) { if(PlayerInfo[playerid][Admin] < 1) return SendClientMessage(playerid, COLOR_GRAD1, " Você não está autorizado a usar este comando !"); new ID,Str[256],Motivo[256],Motivo2[256],Nome[30],Report[256]; if(sscanf(params, "u", ID)) return SendClientMessage(playerid, -1, "[ERRO] > Comando correto: /pegarreport [ID]"); if(!IsPlayerConnected(ID)) return SendClientMessage(playerid, -1, "[ERRO] > ID nao conectado."); if(Reportou[ID] == 1) { GetPVarString(ID, "NomeReport", Nome, sizeof(Nome)); GetPVarString(ID, "Report", Motivo, sizeof(Motivo)); GetPVarString(ID, "Motivo", Motivo2, sizeof(Motivo2)); format(Str, sizeof(Str), "{20B2AA} o Admin: %s(%d) {FFFFFF}leu o seu report: {20B2AA}%s. {FFFFFF}contra: {FF0000}%s(%d).",pName(playerid),playerid,Motivo2,Nome,GetPVarInt(playerid, "ID")); SendClientMessage(ID,-1, Str); SendClientMessage(playerid, 0xB4B5B7FF, "==================================================== REPORT ===================================================="); format(Report,sizeof(Report), "%s",Motivo); SendClientMessage(playerid, -1, Report); SendClientMessage(playerid, 0xB4B5B7FF, "==================================================== REPORT ===================================================="); Reportou[ID] = 0; DeletePVar(ID, "NomeReport"); DeletePVar(ID, "Report"); DeletePVar(ID, "Motivo"); DeletePVar(ID, "ID"); }else{ new NReport[50]; format(NReport, sizeof(NReport), "|INFO| > %s:(%d) Não fez nenhum report.", pName(ID),ID); SendClientMessage(ID, -1, NReport); } return 1; }
CMD:relatorio(playerid, params[]) { new Relatorio[128],Str[128],Str2[128]; if(Relatou[playerid] > gettime())return SendClientMessage(playerid, -1, "Você precisa esperar 20 segundos para fazer outro relatorio!"); if(sscanf(params, "s[256]", Relatorio))return SendClientMessage(playerid, 0xB4B5B7FF, "USE: /relatorio [msg]"); if(strlen(Relatorio) > 70 )return SendClientMessage( playerid, 0xAA3333AA, "[ x ] Relatorio muito grande !" ); format(Str, sizeof(Str), "| INFO | >{FF0000}%s:(%d) {FFFFFF}Relatou: {20B2AA}%s.",pName(playerid),playerid,Relatorio); MSGADM(-1, Str, 1); SetPVarString(playerid, "Relatorio",Str); format(Str2, sizeof(Str2), "| INFO | > Relatorio: {20B2AA}%s {FFFFFF}Enviado.",Relatorio); SendClientMessage(playerid,-1, Str2); Relatou[playerid] = 1; USOUCMD[playerid] = gettime() + 20; return 1; } CMD:pegarrelatorio(playerid, params []) { if(PlayerInfo[playerid][Admin] < 1) return SendClientMessage(playerid, COLOR_GRAD1, " Você não está autorizado a usar este comando !"); new ID,Str[256],Str2[256],Relatorio[256]; if(sscanf(params, "u", ID)) return SendClientMessage(playerid, -1, "[ERRO] > Comando correto: /pegarrelatorio [ID]"); if(!IsPlayerConnected(ID)) return SendClientMessage(playerid, -1, "[ERRO] > ID nao conectado."); if(Relatou[ID] == 1) { GetPVarString(ID,"Relatorio",Relatorio,sizeof(Relatorio)); format(Str, sizeof(Str), "{20B2AA} o Admin: %s(%d) {FFFFFF}leu o seu relatorio: {20B2AA}%s.",pName(playerid),playerid,Relatorio); SendClientMessage(ID,-1, Str); SendClientMessage(playerid, 0xB4B5B7FF, "==================================================== RELATORIO ===================================================="); format(Str2,sizeof(Str2), "%s",Relatorio); SendClientMessage(playerid, -1, Str2); SendClientMessage(playerid, 0xB4B5B7FF, "==================================================== RELATORIO ===================================================="); Relatou[ID] = 0; DeletePVar(ID, "Relatorio"); }else{ new NRelatou[50]; format(NRelatou, sizeof(NRelatou), "|INFO| > %s:(%d) Não fez nenhum relatorio.", pName(ID),ID); SendClientMessage(ID, -1, NRelatou); } return 1; }
static stock MSGADM(COLOR,const striing[],level) { foreach(Player, i) { if (PlayerInfo[i][Admin] >= level) { SendClientMessage(i, COLOR, striing); } } printf("%s", striing); return true; }
deu esse erro: undefined symbol "MSGADM"
RE: Código para pegar reporte do player. - MrThúúG - 02/11/2021
Você copiou a stock?
Código PHP: static stock MSGADM(COLOR,const striing[],level) { foreach(Player, i) { if (PlayerInfo[i][Admin] >= level) { SendClientMessage(i, COLOR, striing); } } printf("%s", striing); return true; }
Sem Erro \/
Código PHP: Topo do GM
new Reportou [MAX_PLAYERS]; new Relatou [MAX_PLAYERS]; new USOUCMD[MAX_PLAYERS];
OnPlayerConnect ou em OnplayerSpawn
Código PHP: Reportou[playerid] = 0; Relatou[playerid] = 0; USOUCMD[playerid] = 0;
OnPlayerDisconnect
Código PHP: Reportou[playerid] = 0; Relatou[playerid] = 0; USOUCMD[playerid] = 0;
Código PHP: CMD:reportar(playerid, params[]) { new ID,motivo[256],Str[256],Str2[256]; if(USOUCMD[playerid] > gettime())return SendClientMessage(playerid, -1, "Você precisa esperar 20 segundos para fazer outro report!"); if(sscanf(params, "us[256]", ID, motivo))return SendClientMessage(playerid, 0xB4B5B7FF, "USE: /reportar [id] [motivo]"); if(!IsPlayerConnected(ID))return SendClientMessage(playerid, 0xB4B5B7FF, " Este player está off-line !"); if(playerid == ID) return SendClientMessage(playerid, -1, "[ERRO] > Você não pode se reportar."); if(strlen(motivo) > 30 )return SendClientMessage( playerid, 0xAA3333AA, "[ x ] Report muito grande !" ); SetPVarString(playerid, "NomeReport",pName(ID)); SetPVarInt(playerid, "ID",ID); SetPVarString(playerid, "Motivo",motivo); format(Str, sizeof(Str), "| INFO | > {00FF00}%s(%d) {FFFFFF}reportou {FF0000}%s:(%d) {FFFFFF}motivo: {20B2AA}%s", pName(playerid),playerid, pName(ID),ID,motivo); MSGADM(-1, Str, 1); SetPVarString(playerid, "Report",Str); format(Str2, sizeof(Str2), "| INFO | > O seu reporte: {20B2AA}%s {FFFFFF}contra: {FF0000}%s(%d) {FFFFFF}foi enviado.",motivo,pName(ID),ID); SendClientMessage(playerid,-1, Str2); Reportou[playerid] = 1; USOUCMD[playerid] = gettime() + 20; return 1; } CMD:pegarreport(playerid, params []) { if(PlayerInfo[playerid][Admin] < 1) return SendClientMessage(playerid, COLOR_GRAD1, " Você não está autorizado a usar este comando !"); new ID,Str[256],Motivo[256],Motivo2[256],Nome[30],Report[256]; if(sscanf(params, "u", ID)) return SendClientMessage(playerid, -1, "[ERRO] > Comando correto: /pegarreport [ID]"); if(!IsPlayerConnected(ID)) return SendClientMessage(playerid, -1, "[ERRO] > ID nao conectado."); if(Reportou[ID] == 1) { GetPVarString(ID, "NomeReport", Nome, sizeof(Nome)); GetPVarString(ID, "Report", Motivo, sizeof(Motivo)); GetPVarString(ID, "Motivo", Motivo2, sizeof(Motivo2)); format(Str, sizeof(Str), "{20B2AA} o Admin: %s(%d) {FFFFFF}leu o seu report: {20B2AA}%s. {FFFFFF}contra: {FF0000}%s(%d).",pName(playerid),playerid,Motivo2,Nome,GetPVarInt(playerid, "ID")); SendClientMessage(ID,-1, Str); SendClientMessage(playerid, 0xB4B5B7FF, "==================================================== REPORT ===================================================="); format(Report,sizeof(Report), "%s",Motivo); SendClientMessage(playerid, -1, Report); SendClientMessage(playerid, 0xB4B5B7FF, "==================================================== REPORT ===================================================="); Reportou[ID] = 0; DeletePVar(ID, "NomeReport"); DeletePVar(ID, "Report"); DeletePVar(ID, "Motivo"); DeletePVar(ID, "ID"); }else{ new NReport[50]; format(NReport, sizeof(NReport), "|INFO| > %s:(%d) Não fez nenhum report.", pName(ID),ID); SendClientMessage(ID, -1, NReport); } return 1; }
CMD:relatorio(playerid, params[]) { new Relatorio[256],Str[256],Str2[256]; if(USOUCMD[playerid] > gettime())return SendClientMessage(playerid, -1, "Você precisa esperar 20 segundos para fazer outro relatorio!"); if(sscanf(params, "s[256]", Relatorio))return SendClientMessage(playerid, 0xB4B5B7FF, "USE: /relatorio [msg]"); if(strlen(Relatorio) > 70 )return SendClientMessage( playerid, 0xAA3333AA, "[ x ] Relatorio muito grande !" ); format(Str, sizeof(Str), "| INFO | >{FF0000}%s:(%d) {FFFFFF}Relatou: {20B2AA}%s.",pName(playerid),playerid,Relatorio); MSGADM(-1, Str, 1); SetPVarString(playerid, "Relatorio",Str); format(Str2, sizeof(Str2), "| INFO | > Relatorio: {20B2AA}%s {FFFFFF}Enviado.",Relatorio); SendClientMessage(playerid,-1, Str2); Relatou[playerid] = 1; USOUCMD[playerid] = gettime() + 20; return 1; } CMD:pegarrelatorio(playerid, params []) { if(PlayerInfo[playerid][Admin] < 1) return SendClientMessage(playerid, COLOR_GRAD1, " Você não está autorizado a usar este comando !"); new ID,Str[256],Str2[256],Relatorio[256]; if(sscanf(params, "u", ID)) return SendClientMessage(playerid, -1, "[ERRO] > Comando correto: /pegarrelatorio [ID]"); if(!IsPlayerConnected(ID)) return SendClientMessage(playerid, -1, "[ERRO] > ID nao conectado."); if(Relatou[ID] == 1) { GetPVarString(ID,"Relatorio",Relatorio,sizeof(Relatorio)); format(Str, sizeof(Str), "{20B2AA} o Admin: %s(%d) {FFFFFF}leu o seu relatorio: {20B2AA}%s.",pName(playerid),playerid,Relatorio); SendClientMessage(ID,-1, Str); SendClientMessage(playerid, 0xB4B5B7FF, "==================================================== RELATORIO ===================================================="); format(Str2,sizeof(Str2), "%s",Relatorio); SendClientMessage(playerid, -1, Str2); SendClientMessage(playerid, 0xB4B5B7FF, "==================================================== RELATORIO ===================================================="); Relatou[ID] = 0; DeletePVar(ID, "Relatorio"); }else{ new NRelatou[50]; format(NRelatou, sizeof(NRelatou), "|INFO| > %s:(%d) Não fez nenhum relatorio.", pName(ID),ID); SendClientMessage(ID, -1, NRelatou); } return 1; }
static stock MSGADM(COLOR,const striing[],level) { foreach(Player, i) { if (PlayerInfo[i][Admin] >= level) { SendClientMessage(i, COLOR, striing); } } printf("%s", striing); return true; }
|