[COD] Save & Load de admins [ONs/OFFs]
#1

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:
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
Reply
#2

Caraca !!!
Parabйns !!!
Vocкs paraзe que adivinham o que eu penso em fazer
Reply
#3

Quote:
Originally Posted by DJLoko
Caraca !!!
Parabйns !!!
Vocкs paraзe que adivinham o que eu penso em fazer
Nгo foi fбcil fazer isso, mas pra mim valeu a pena no final. xD
Reply
#4

Й bem bixa!

Entгo, jб percebeste como funciona aquela cena?
Reply
#5

Quote:
Originally Posted by russooooo
Й bem bixa!

Entгo, jб percebeste como funciona aquela cena?
O quк queria dizer com "bixa"?
Cena seria o Fread, nгo й? O save sу utiliza 1 linha.
Reply
#6

Quote:
Originally Posted by SuB_ZeRo0_
Quote:
Originally Posted by russooooo
Й bem bixa!

Entгo, jб percebeste como funciona aquela cena?
O quк queria dizer com "bixa"?
Cena seria o Fread, nгo й? O save sу utiliza 1 linha.
Queria dizer mesmo bixa.

Sim o fread. O quк? Guardar tudo numa linha? Isso sucks xD
Reply
#7

Quote:
Originally Posted by russooooo
Quote:
Originally Posted by SuB_ZeRo0_
Quote:
Originally Posted by russooooo
Й bem bixa!

Entгo, jб percebeste como funciona aquela cena?
O quк queria dizer com "bixa"?
Cena seria o Fread, nгo й? O save sу utiliza 1 linha.
Queria dizer mesmo bixa.

Sim o fread. O quк? Guardar tudo numa linha? Isso sucks xD
Ele ta como "default" no mбximo ter 50 admins. Mas acho que ninguem tem isso!
Alйm do mais tem comando pra apagar e tem aquele "search" do Bloco de Notas, ou seja, isso nгo serб um problema.

E eu nгo sou 'bixa'. Mas estou percebendo que vocк estб comeзando a ir pro lado DraKoN Negro da forзa. rs
Reply
#8

Que se passa contigo? Perdeste o sentido de humor. Lado do DraKoN? Achas, lol.

Eu nгo disse que era problema xD, eu apenas acho uma confusгo.
Reply
#9

Quote:
Originally Posted by russooooo
Que se passa contigo? Perdeste o sentido de humor. Lado do DraKoN? Achas, lol.

Eu nгo disse que era problema xD, eu apenas acho uma confusгo.
Vou parar de falar assim, se nгo vira flood. =/
Vocк deve ter entendido com o lado DraKoN Negro, nгo?
rs
Reply
#10

Gostei
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)