22.05.2010, 08:12
Pessoal, percebi que estavam prescisando de um Save e Load de admins, sem ser apenas ON.
Entгo resolvi facilitar a vocкs e postarei o MEU code. (Se usarem, coloquem crйditos por favor)
A unica coisa que nгo fiz, foi o split que encontrei em um FS no forum (nгo lembro qual).
Aqui vai o CODE:
No topo:
OnPlayerConnect(Para sistema fixo) || Obs: Caso use RCON, acho melhor usar um SetTimer!:
Comando:
Comando para apagar o arquivo:
Stock's: (Entre as public's)
SPLIT:
Stock's necessбrias:
Espero que gostem e faзam um bom uso!
Expliacaзгo: Ao entrar o servidor, ele vк se vocк jб estб registrado no arquivo, caso nгo, ele o registrarб!
Quando alguem fizer o /adml, vai ler todos os nomes registrados.
Usando /reloadadm vocк irб zerar o arquivo, caso prescise tirar alguem da lista e nгo possa retirar manualmente.
Bom proveito e nгo esqueзa os crйditos!
Qualquer BUG, avise-me.
OBSERVAЗХES!:
Para mudar o mбxima de admins que poderгo ser salvos mude: MAX_ADMINS
Para mudar o mбximo do tamanho da linha dos admins no arquivo: MAX_ADMIN_STR
Onde se encontra a pasta? Em: scriptfiles/admins.ini
Entгo resolvi facilitar a vocкs e postarei o MEU code. (Se usarem, coloquem crйditos por favor)
A unica coisa que nгo fiz, foi o split que encontrei em um FS no forum (nгo lembro qual).
Aqui vai o CODE:
No topo:
pawn Код:
#define MAX_ADMINS 50
#define MAX_ADMIN_STR 512
#define amarelo 0xFFFF00AA
#define vermelhoescuro 0xAA3333AA
#define branco 0xFFFFFFAA
#define vermelho 0xFF0000AA
OnPlayerConnect(Para sistema fixo) || Obs: Caso use RCON, acho melhor usar um SetTimer!:
pawn Код:
if(IsPlayerAdmin(playerid)) {SaveAdminSZ(playerid);}
Comando:
pawn Код:
if(strcmp("/adml", cmdtext, true, 10) == 0)
{
if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid,vermelhoescuro,"Comando apenas para Admins RCON!");
LoadShowAdminsSZ(playerid);
return 1;
}
Comando para apagar o arquivo:
pawn Код:
if(strcmp("/reloadadm", cmdtext, true, 10) == 0)
{
if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid,vermelhoescuro,"Comando apenas para Admins RCON!");
fremove("admins.ini");
SendClientMessage(playerid,amarelo,"SERVER: Lista de admins apagada! [By: SuB_ZeRo0_]");
new File:fhandle = fopen("admins.ini",io_write);
fclose(fhandle);
return 1;
}
Stock's: (Entre as public's)
SPLIT:
pawn Код:
stock split(const strsrc[], strdest[][], delimiter)
{
new i, li;
new aNum;
new len;
while(i <= strlen(strsrc)){
if(strsrc[i]==delimiter || i==strlen(strsrc)){
len = strmid(strdest[aNum], strsrc, li, i, 128);
strdest[aNum][len] = 0;
li = i+1;
aNum++;
}
i++;
}
return 1;
}
Stock's necessбrias:
pawn Код:
stock SaveAdminSZ(playerid) {
if(!fexist("admins.ini")) {new File:New=fopen("admins.ini",io_write);fclose(New);}
if(fexist("admins.ini")) {
new strsave[30],strload[MAX_ADMIN_STR],nameadm[25];
new File:New=fopen("admins.ini",io_read);
fread(New,strload);
fclose(New);
GetPlayerName(playerid,nameadm,25);
if(strfind(strload,nameadm)==-1) {
new File:Neww=fopen("admins.ini",io_append);
format(strsave,30,"%s|",nameadm);
fwrite(Neww,strsave);
fclose(Neww);}}
else {SendClientMessage(playerid,vermelho,"SERVER: Erro ao salvar seu nome a lista de admins!");}
return 1;
}
pawn Код:
stock LoadShowAdminsSZ(playerid) {
if(!fexist("admins.ini")) {new File:New=fopen("admins.ini",io_write);fclose(New);}
if(fexist("admins.ini")) {
new load[MAX_ADMINS][32],str[MAX_ADMIN_STR],nick[25],stradm[90];
SendClientMessage(playerid,vermelhoescuro,"Lista de admins no servidor: [By: SuB_ZeRo0_]");
new File:file = fopen("admins.ini",io_read);
if (file)
{
while (fread(file, str, sizeof(str)))
{
for(new e=0;e<MAX_ADMINS;e++) {
split(str, load, '|');
strmid(nick, load[e], 0, strlen(load[e]), 25);
format(stradm,sizeof(stradm),"Admin %s [RCON]",nick);
SendClientMessage(playerid,branco,stradm);
}}}
fclose(file);}
else {SendClientMessage(playerid,vermelho,"SERVER: Erro ao carregar a lista de admins!");}
return 1;
}
Espero que gostem e faзam um bom uso!
Expliacaзгo: Ao entrar o servidor, ele vк se vocк jб estб registrado no arquivo, caso nгo, ele o registrarб!
Quando alguem fizer o /adml, vai ler todos os nomes registrados.
Usando /reloadadm vocк irб zerar o arquivo, caso prescise tirar alguem da lista e nгo possa retirar manualmente.
Bom proveito e nгo esqueзa os crйditos!
Qualquer BUG, avise-me.
OBSERVAЗХES!:
Para mudar o mбxima de admins que poderгo ser salvos mude: MAX_ADMINS
Para mudar o mбximo do tamanho da linha dos admins no arquivo: MAX_ADMIN_STR
Onde se encontra a pasta? Em: scriptfiles/admins.ini