Comando não respondendo - L10motos - 06/02/2024
Citar:Código PHP: CMD:infoadmins(playerid, const params[]) { if(!IsPlayerLogged(playerid)) return 1;
if(PlayerInfo[playerid][pAdmin] == 0) return SendClientMessage(playerid, COLOR_GREY, "Você não está autorizado a usar este comando."); if(IsPlayerConnected(playerid)) { new megastring[3000]; for(new i = 1; i <= MAX_ADMIN; i++) { format(sstring, sizeof(sstring), "%02d - %s Cargo: %d", i, InfoAdmin[i], LevelAdmin[i]); strcat(megastring, sstring); } ShowPlayerDialog(playerid, 1361, DIALOG_STYLE_LIST, "Administração", megastring, "Confirmar", "Fechar"); } return 1; }
Fiz esse comando mais ele não mostra nada, o que fiz de errado?
Citar:Código PHP: #define MAX_ADMIN 20 new InfoAdmin[MAX_ADMIN][MAX_PLAYER_NAME]; new LevelAdmin[MAX_ADMIN];
RE: Comando não respondendo - pushline - 06/02/2024
Tente isso:
Coloquei alguns prints de debug pra voce saber aonde que "para" o comando
Código PHP: CMD:infoadmins(playerid, const params[]) { print("debug 1");
if(!IsPlayerLogged(playerid) || !IsPlayerConnected(playerid)) return false;
print("debug 2");
if(PlayerInfo[playerid][pAdmin] == 0) return SendClientMessage(playerid, COLOR_GREY, "Você não está autorizado a usar este comando."); print("debug 3");
new megastring[3000]; for(new i = 1; i <= MAX_ADMIN; i++) { format(sstring, sizeof(sstring), "%s%02d - %s Cargo: %d\n", megastring i, InfoAdmin[i], LevelAdmin[i]); }
ShowPlayerDialog(playerid, 1361, DIALOG_STYLE_LIST, "Administração", megastring, "Confirmar", "Fechar"); print("debug 4");
return true; }
RE: Comando não respondendo - L10motos - 06/02/2024
(06/02/2024 15:56)pushline Escreveu: Tente isso:
Coloquei alguns prints de debug pra voce saber aonde que "para" o comando
Código PHP: CMD:infoadmins(playerid, const params[]) { print("debug 1");
if(!IsPlayerLogged(playerid) || !IsPlayerConnected(playerid)) return false;
print("debug 2");
if(PlayerInfo[playerid][pAdmin] == 0) return SendClientMessage(playerid, COLOR_GREY, "Você não está autorizado a usar este comando."); print("debug 3");
new megastring[3000]; for(new i = 1; i <= MAX_ADMIN; i++) { format(sstring, sizeof(sstring), "%s%02d - %s Cargo: %d\n", megastring i, InfoAdmin[i], LevelAdmin[i]); }
ShowPlayerDialog(playerid, 1361, DIALOG_STYLE_LIST, "Administração", megastring, "Confirmar", "Fechar"); print("debug 4");
return true; }
Cara, o que pode ser, tah crashando quando digito o comando, vou te mostrar todo o sistema
Código PHP: #define MAX_ADMIN 20 new InfoAdmin[MAX_ADMIN][MAX_PLAYER_NAME]; new LevelAdmin[MAX_ADMIN];
forward LoadAdmins(); public LoadAdmins() { new file[64]; for(new i = 1; i < MAX_ADMIN; i++) { format(file, sizeof(file), "general/admins/admin-%02d.ini", i); if(DOF2_FileExists(file)) { format(InfoAdmin[i], MAX_PLAYER_NAME, "%s", DOF2_GetString(file, "Name")); LevelAdmin[i] = DOF2_GetInt(file, "Level"); } else { format(InfoAdmin[i], MAX_PLAYER_NAME, "Vazio"); LevelAdmin[i] = 0; } } return 1; }
forward SaveAdmins(); public SaveAdmins() { new file[64]; for(new i = 1; i < MAX_ADMIN; i++) { format(file, sizeof(file), "general/admins/admin-%02d.ini", i); if(!DOF2_FileExists(file)) DOF2_CreateFile(file); DOF2_SetString(file, "Name", InfoAdmin[i]); DOF2_SetInt(file, "Level", LevelAdmin[i]); DOF2_SaveFile(); } return 1; }
forward UpdateAdmin(playerid); public UpdateAdmin(playerid) { for(new i = 1; i < MAX_ADMIN; i++) { if(!strcmp(InfoAdmin[i], Name(playerid), false)) { LevelAdmin[i] = PlayerInfo[playerid][pAdmin];
printf("%s set to admin %s.", Name(playerid), PlayerInfo[playerid][pAdmin]); return 1; } } if(PlayerInfo[playerid][pAdmin] >= 1) { PlayerInfo[playerid][pAdmin] = 0; printf("%s was taken from the administrator.", Name(playerid)); } return 1; }
Estranho com mensagens funciona:
Código PHP: if(IsPlayerConnected(playerid)) { new megastring[3000]; for(new i = 1; i < MAX_ADMIN; i++) { format(sstring, sizeof(sstring), "%02d - %s Cargo: %d", i, InfoAdmin[i], LevelAdmin[i]); SendClientMessage(playerid, -1, sstring);
//format(sstring, sizeof(sstring), "%02d - %s Cargo: %d", i, InfoAdmin[i], LevelAdmin[i]); //strcat(megastring, sstring); } //ShowPlayerDialog(playerid, 1361, DIALOG_STYLE_LIST, "Administração", megastring, "Fechar", ""); }
RE: Comando não respondendo - pushline - 06/02/2024
Usa crashdetect (https://github.com/Zeex/samp-plugin-crashdetect), compile com -d3 nos argumentos e teste novamente o código, pode ser que retorne o que causa o erro.
RE: Comando não respondendo - L10motos - 06/02/2024
(06/02/2024 20:29)pushline Escreveu: Usa crashdetect (https://github.com/Zeex/samp-plugin-crashdetect), compile com -d3 nos argumentos e teste novamente o código, pode ser que retorne o que causa o erro.
Agora esta funcionando, só tem um problema, em vez de mostrar todas as vagas de 1 a 19 (MAX_ADMIN) , tah mostrando no dialogo apenas a 19:
Imagem: https://imgur.com/CqiJQE2
Código PHP: if(IsPlayerConnected(playerid)) { new string[256];
for(new i = 1; i < MAX_ADMIN; i++) format(string, sizeof(string), "%02d - %s Cargo: %d\n", i, InfoAdmin[i], LevelAdmin[i]);
ShowPlayerDialog(playerid, 1361, DIALOG_STYLE_LIST, "Administração", string, "Fechar", ""); }
RE: Comando não respondendo - xbruno1000x - 06/02/2024
Tenta concatenando dessa forma aqui:
Código: if(IsPlayerConnected(playerid))
{
new Dialog[1500], string[256];
for(new i = 1; i < MAX_ADMIN; i++)
{
format(string, sizeof(string), "%02d - %s Cargo: %d\n", i, InfoAdmin[i], LevelAdmin[i]);
strcat(Dialog, string);
//Caso não funcione, adicione printf("%s", Dialog); e envie o que apareceu na log aqui no tópico.
}
ShowPlayerDialog(playerid, 1361, DIALOG_STYLE_LIST, "Administração", Dialog, "Fechar", "");
}
RE: Comando não respondendo - pushline - 06/02/2024
nem eh necessario o strcat ou aquele if do player connected ja que podia retornar falso junto do isplayerlogged
tenta o do bruno, ou esse:
Código PHP: CMD:infoadmins(playerid, const params[]) { if(!IsPlayerLogged(playerid) || !IsPlayerConnected(playerid)) return false;
if(PlayerInfo[playerid][pAdmin] == 0) return SendClientMessage(playerid, COLOR_GREY, "Você não está autorizado a usar este comando."); new megastring[3000]; for(new i = 1; i <= MAX_ADMIN; i++) { format(megastring, sizeof(megastring), "%s%02d - %s Cargo: %d\n", megastring i, InfoAdmin[i], LevelAdmin[i]); }
ShowPlayerDialog(playerid, 1361, DIALOG_STYLE_LIST, "Administração", megastring, "Confirmar", "Fechar"); return true; }
|