#define AdminSalva "BrasilRolePlay/Admin/%d.ini" // Local onde sera salvo os arquivos numericos
#define MAX_VAGAS 5 // Quandtidade de admins permitida no servidor
enum pAdm{// Nome da Enum
Name[24], // Ira guardar o nome do admin
Nivel// Ira guardar o nivel do admin
}
new AdminInfo[MAX_VAGAS][pAdm];// Chamaremos todas as fuctions acima com esta variavel.
forward AdmCarrega();
public AdmCarrega()// sera chamada em OnGameModeInit
{
new string2[80];
for(new vagads = 0; vagads < MAX_VAGAS; vagads++) // Loop utilizado para verificar todas as vagas "MAX_VAGAS"
{
format(string2, sizeof(string2), AdminSalva, vagads);// Local onde definimos para ser salvo "AdminSalva"
if(!DOF2_FileExists(string2))// Verifica se existe os arquivos
{
DOF2_CreateFile(string2); // Cria o arquivo
format(AdminInfo[vagads][Name], 24,"Slot"); //Seta a variavel para Slot como se fosse o nome do jogador
AdminInfo[vagads][Nivel] = 0; // seta o nivel a 0
DOF2_SetString(string2,"Nome",AdminInfo[vagads][Name]);// Salva o que esta na variavel para o arquivo
DOF2_SetInt(string2,"Nivel", AdminInfo[vagads][Nivel]);// Salva o que esta na variavel para o arquivo
DOF2_SaveFile();// Salva o arquivo
}
else
{
format(AdminInfo[vagads][Name], 24, DOF2_GetString(string2,"Nome")); // Efetua o carregamento do nome que esta no arquivo passando para a variavel
AdminInfo[vagads][Nivel] = DOF2_GetInt(string2,"Nivel");// Carrega o nivel enviando para a variavel
}
}
return true;
}
forward AdmSalva();
public AdmSalva() // Colocar em GameModeExit
{
new string2[180];
for(new vagads = 0; vagads < MAX_VAGAS; vagads++)
{
format(string2, sizeof(string2), AdminSalva, vagads);
if(DOF2_FileExists(string2))
{
DOF2_SetString(string2,"Nome",AdminInfo[vagads][Name]);
DOF2_SetInt(string2,"Nivel", AdminInfo[vagads][Nivel]);
DOF2_SaveFile();
}
}
return true;
}
public OnPlayerSpawn(playerid)
{
new name[MAX_PLAYER_NAME];// Variavel string
GetPlayerName(playerid, name, sizeof(name));// Geta nome
for(new vagads = 0; vagads < MAX_VAGAS; vagads++)// loop para verificar todas as variaveis
{
if(!strcmp(AdminInfo[vagads][Name],name,true))// Ira verificar se o q ta guardado na variavel Name e igual a Name
{
// Se estiver aqui colocaras o que deseja
}
}
return true;
}
command(admins, playerid, params[])
{
new corda[500], wiki[500];
for(new vagads = 0; vagads < MAX_VAGAS; vagads++)
{
format(wiki, sizeof wiki,"{FFFFFF}(VAGA %d)%s | Nivel : %s(%d) \n", vagads, AdminInfo[vagads][Name], NomeNivel[AdminInfo[vagads][Nivel]], AdminInfo[vagads][Nivel]);
strcat(corda, wiki);
}
ShowPlayerDialog(playerid, 1000, DIALOG_STYLE_LIST, "Administradores do servidor", corda,"Sair", #);
return true;
}
for(new vaga = 0; vaga < MAX_VAGAS; vaga++)// loop para verificar em todas
{
if(!strcmp(AdminInfo[vaga][Name],"Slot",true))// Verifica se Name e igual a Slot | Slot referente a vaga vazia
{
}
}
/*APENAS SLOT 1 POR EXEMPLO*/
if(!strcmp(AdminInfo[1][Name],"Slot",true))// Verifica se Name e igual a Slot | Slot referente a vaga vazia
{
}
CallBacK::OnPlayerSpawn[playerid]
{
if(PlayerInfo[playerid][Login] == true)
{
for(new vagads = 0; vagads < MAX_VAGAS; vagads++)
{
if(!strcmp(AdminInfo[vagads][Name],DonPegaNome(playerid),true))
{
new donstring[80];
format(donstring, sizeof donstring, "Vocк tem administrador nivel %d(%s)",AdminInfo[vagads][Nivel], NomeNivel[AdminInfo[vagads][Nivel]]);
SendClientMessage(playerid, -1, donstring);
PlayerInfo[playerid][Admin] = AdminInfo[vagads][Nivel];
}
}
}
else
{
/*Respawn hospital ou ate msm direto a org / emprego*/
}
return 1;
}
command(admins, playerid, params[])
{
new corda[500], id, wiki[500];
for(new vagads = 0; vagads < MAX_VAGAS; vagads++)
{
id = ReturnUser(AdminInfo[vagads][Name]);
if(IsPlayerConnected(id))
{
format(wiki, sizeof wiki,"{FFFFFF}(VAGA %d)%s | Nivel : %s(%d) - {00FF00}Online\n", vagads, AdminInfo[vagads][Name], NomeNivel[AdminInfo[vagads][Nivel]], AdminInfo[vagads][Nivel]);
strcat(corda, wiki);
}
else
{
format(wiki, sizeof wiki,"{FFFFFF}(VAGA %d)%s | Nivel : %s(%d) - {FF0000}Offiline\n", vagads, AdminInfo[vagads][Name], NomeNivel[AdminInfo[vagads][Nivel]], AdminInfo[vagads][Nivel]);
strcat(corda, wiki);
}
}
ShowPlayerDialog(playerid, 1000, DIALOG_STYLE_LIST, "Administradores do servidor", corda,"Sair", #);
return true;
}
command(admconvidar, playerid, params[])
{
new DSNome[24], id, paramandarmensagem[150];
if(PlayerInfo[playerid][Admin] < 4)return SendClientMessage(playerid, -1 , "Erro vocк nao e admin nivel 4");
if(sscanf(params, "s", DSNome))return SendClientMessage(playerid, -1, "Uso correto: /admconvidar [nome completo EX: Don_Speed]");
format(EmGeral, sizeof(EmGeral), ContaSalva , DSNome);
if(!DOF2_FileExists(EmGeral))return SendClientMessage(playerid, -1, "Conta inexistente");
id = ReturnUser(DSNome);
if(IsPlayerConnected(id))
{
if(PlayerInfo[id][Admin] > 0) return SendClientMessage(playerid,-1,"Jogador ja possui administrador");
for(new vaga = 0; vaga < MAX_VAGAS; vaga++)
{
if(!strcmp(AdminInfo[vaga][Name],"Slot",true))
{
format(paramandarmensagem, sizeof paramandarmensagem, "Jogador %s(%d) esta conectado e recebeu seu administrador.", DSNome, id);
SendClientMessage(playerid, -1,paramandarmensagem);
format(paramandarmensagem, sizeof paramandarmensagem, "Vocк acabou de ser convocado para a staff do servidor.");
SendClientMessage(id, -1,paramandarmensagem);
PlayerInfo[id][Admin] = 1;
format(AdminInfo[vaga][Name], 80, DSNome);
AdminInfo[vaga][Nivel] = 1;
AdmSalva();
return true;
}
}
}
else
{
for(new vaga = 0; vaga < MAX_VAGAS; vaga++)
{
if(!strcmp(AdminInfo[vaga][Name],DSNome,true))return SendClientMessage(playerid, -1 , "Jogador ja e administrador.");
if(!strcmp(AdminInfo[vaga][Name],"Slot",true))
{
format(paramandarmensagem, sizeof paramandarmensagem, "Jogador %s recebeu seu convite para ser administrador.", DSNome, id);
SendClientMessage(playerid, -1,paramandarmensagem);
format(AdminInfo[vaga][Name], 80, DSNome);
AdminInfo[vaga][Nivel] = 1;
AdmSalva();
return true;
}
}
}
return true;
}
command(admexpulsar, playerid, params[])
{
new id, paramandarmensagem[150], sujeito[24];
if(PlayerInfo[playerid][Admin] < 4)return SendClientMessage(playerid, -1 , "Erro vocк nao e admin nivel 4");
if(sscanf(params, "s", sujeito))return SendClientMessage(playerid, -1, "Uso correto: /admexpulsar [nome completo EX: Don_Speed]");
format(EmGeral, sizeof(EmGeral), ContaSalva , sujeito);
if(!DOF2_FileExists(EmGeral))return SendClientMessage(playerid, -1, "Conta inexistente");
for(new vaga = 0; vaga < MAX_VAGAS; vaga++){
id = ReturnUser(params);
if(IsPlayerConnected(id))
{
if(!strcmp(AdminInfo[vaga][Name],sujeito,true))
{
format(paramandarmensagem, sizeof paramandarmensagem, "Jogador %s(%d) esta conectado e recebeu seu aviso de expulsгo.", sujeito, id);
SendClientMessage(playerid, -1,paramandarmensagem);
format(paramandarmensagem, sizeof paramandarmensagem, "Vocк acabou de ser expulso da staff do servidor.");
SendClientMessage(id, -1,paramandarmensagem);
PlayerInfo[id][Admin] = 0;
format(AdminInfo[vaga][Name], 80, "Slot");
AdminInfo[vaga][Nivel] = 0;
AdmSalva();
return true;
}
}
else
{
if(!strcmp(AdminInfo[vaga][Name],sujeito,true))
{
format(paramandarmensagem, sizeof paramandarmensagem, "Jogador %s nгo e mais adimiistrador.", sujeito);
SendClientMessage(playerid, -1,paramandarmensagem);
format(AdminInfo[vaga][Name], 80, "Slot");
AdminInfo[vaga][Nivel] = 0;
AdmSalva();
return true;
}
}}
return true;
}
command(admpromover, playerid, params[])
{
new DSNome, id;
if(PlayerInfo[playerid][Admin] < 4)return SendClientMessage(playerid, -1 , "Erro vocк nao e admin nivel 4");
if(sscanf(params, "d", DSNome))return SendClientMessage(playerid, -1, "Uso correto: /admpromover [id da vaga (/admins)]");
id = ReturnUser(AdminInfo[DSNome][Name]);
if(IsPlayerConnected(id))
{
if(!strcmp(AdminInfo[DSNome][Name],"Slot",true))return SendClientMessage(playerid, -1, "Erro ninguem nesta vaga.");
if(AdminInfo[DSNome][Nivel] == 4)return SendClientMessage(playerid, -1, "Erro ja esta no nivel maximo.");
AdminInfo[DSNome][Nivel] ++;
PlayerInfo[id][Admin] ++;
SendClientMessage(playerid, -1,"Vocк promoveu o jogador.");
SendClientMessage(id, -1,"AVISO: Vocк foi promovido na administraзгo.");
AdmSalva();
}
else
{
if(!strcmp(AdminInfo[DSNome][Name],"Slot",true))return SendClientMessage(playerid, -1, "Erro ninguem nesta vaga.");
if(AdminInfo[DSNome][Nivel] == 4)return SendClientMessage(playerid, -1, "Erro ja esta no nivel maximo.");
AdminInfo[DSNome][Nivel] ++;
SendClientMessage(playerid, -1,"Vocк promoveu o jogador.");
AdmSalva();
}
return true;
}
Tem algumas coisas que melhorar, nгo verifiquei todo o cуdigo e vou voltar a postar se necessбrio. Bem, entгo vamos comeзar:
PHP код:
|
Name[80]
new corda[500], wiki[500];
for(new vagads = 0; vagads < MAX_VAGAS; vagads++)
{
format(wiki, sizeof wiki,"(VAGA %d)%s | Nivel : %s(%d) \n", vagads, AdminInfo[vagads][Name], NomeNivel[AdminInfo[vagads][Nivel]], AdminInfo[vagads][Nivel]);
strcat(corda, wiki);
}
new wiki[500];
for(new vagads = 0; vagads < MAX_VAGAS; vagads++)
{
format(wiki, sizeof wiki,"%s(VAGA %d)%s | Nivel : %s(%d) \n", wiki,vagads, AdminInfo[vagads][Name],NomeNivel[AdminInfo[vagads][Nivel]], AdminInfo[vagads][Nivel]);
}