Boa tarde pessoal! Estou com um erro onde ao tentar pegar os dados de alguns arquivos (CLANS) utilizando DOF2_Get, e tentar salvar os mesmos dentro de uma variável, simplesmente não funciona. Irei deixar o código e explicar melhor abaixo do mesmo.
clans.inc
/darlider
Meu objetivo era colocar o LoadClans() no OnGameModeInit, para que ele fosse carregado sempre que o server fosse reiniciado, e os valores ficarem sempre salvos nas variáveis (Pra não precisar ficar mudando diretamente), mas simplesmente não funciona. Já tentei alterar o format, utilizar uma nova variável, mudar o tamanho, utilizar strcat, setar diretamente, nenhuma deu certo. Apenas funciona caso eu deixe o loop "for" ativo, e insira os valores diretamente utilizando o "DOF2_Set" para alterar para "true" por exemplo. O que poderia estar ocasionando isso? Ah, e caso tenha algum erro no meu código que não tenha a ver com o problema em si, podem me corrigir também.
clans.inc
Código PHP:
enum Clans {
cNome[30],
cMembros,
bool:cLider
}
new ClanInfo[MAX_CLANS][Clans];
stock CreateClan(playerid, const nomeclan[]) {
new id = GenerateClanID();
if (id > MAX_CLANS) return SendClientMessage(playerid, Vermelho, "O número máximo de clans foi atingido!");
format(File, sizeof(File), PASTA_CLANS, id);
DOF2_CreateFile(File);
DOF2_SetString(File, "Organizacao", nomeclan);
DOF2_SetInt(File, "Membros", 0);
DOF2_SetBool(File, "Lider", false);
DOF2_SaveFile();
return 1;
}
stock GenerateClanID() {
for (new i = 0; i < MAX_CLANS; i++) {
format(File, sizeof(File), PASTA_CLANS, i);
if (!DOF2_FileExists(File)) return i;
}
return 0;
}
stock LoadClans() {
for (new i = 0; i < MAX_CLANS; i++) {
format(File, sizeof(File), PASTA_CONTAS, i);
if (!DOF2_FileExists(File)) continue;
format(STRX, sizeof(STRX), "%s", DOF2_GetString(File, "Organizacao"));
strcat(ClanInfo[i][cNome], STRX, sizeof(STRX));
// ClanInfo[i][cNome] = DOF2_GetString(File, "Organizacao");
ClanInfo[i][cMembros] = DOF2_GetInt(File, "Membros");
ClanInfo[i][cLider] = DOF2_GetBool(File, "Lider");
}
return 1;
}
/darlider
Código PHP:
CMD:darlider(playerid, params[]) {
new targetid, idclan, bool:lider;
if (GetPlayerAdminLevel(playerid) < 5) return 1;
if (sscanf(params, "ui", targetid, idclan)) return SendClientMessage(playerid, Vermelho, "Use: /darlider [id] [organização]");
// for (new i = 0; i < MAX_CLANS; i++) {
// format(File, sizeof(File), PASTA_CLANS, i);
// if (DOF2_FileExists(File) && idclan == i) break;
// }
lider = ClanInfo[idclan][cLider];
// lider = DOF2_GetBool(File, "Lider");
if (!IsPlayerConnected(targetid)) return SendClientMessage(playerid, Vermelho, "Jogador não conectado!");
if (PlayerInfo[targetid][pCargo] == 5) return SendClientMessage(playerid, Vermelho, "Esse player já é líder de uma organização!");
if (lider == true) return SendClientMessage(playerid, Vermelho, "Essa organização já possui um líder!");
PlayerInfo[targetid][pOrganizacao] = idclan;
PlayerInfo[targetid][pCargo] = 5;
ClanInfo[idclan][cLider] = true;
// DOF2_SetBool(File, "Lider", true);
SendClientMessage(playerid, azul_claro, "Você colocou %s como líder da organização {FF0000}%s{40AEFF}!", GetPlayerNameEx(targetid), ClanInfo[idclan][cNome]);
SendClientMessage(targetid, azul_claro, "Parabéns! Você foi nomeado como líder da organização {FF0000}%s{40AEFF}!", ClanInfo[idclan][cNome]);
DOF2_SaveFile();
return 1;
}
Meu objetivo era colocar o LoadClans() no OnGameModeInit, para que ele fosse carregado sempre que o server fosse reiniciado, e os valores ficarem sempre salvos nas variáveis (Pra não precisar ficar mudando diretamente), mas simplesmente não funciona. Já tentei alterar o format, utilizar uma nova variável, mudar o tamanho, utilizar strcat, setar diretamente, nenhuma deu certo. Apenas funciona caso eu deixe o loop "for" ativo, e insira os valores diretamente utilizando o "DOF2_Set" para alterar para "true" por exemplo. O que poderia estar ocasionando isso? Ah, e caso tenha algum erro no meu código que não tenha a ver com o problema em si, podem me corrigir também.