SA-MP Forums Archive
[Ajuda] Salvar administrador ~ - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: Non-English (https://sampforum.blast.hk/forumdisplay.php?fid=9)
+--- Forum: Languages (https://sampforum.blast.hk/forumdisplay.php?fid=33)
+---- Forum: Português/Portuguese (https://sampforum.blast.hk/forumdisplay.php?fid=34)
+---- Thread: [Ajuda] Salvar administrador ~ (/showthread.php?tid=398322)



Salvar administrador ~ - StarAway - 09.12.2012

Bom, eu dou admin para alguem, e ela reloga as vezes ainda estб com adm, e as vezes nгo '-' .

sabe o que pode ser ? os codes abaixo ...

pawn Код:
forward AdmsVaga();
forward LoadAdm();
forward SaveAdm();
pawn Код:
enum Admin
{
gMembro[MAX_PLAYER_NAME],AdminVaga,
};
pawn Код:
new AdmInfo[31][Admin];
pawn Код:
public AdmCheck(playerid){new idx = 0;while(idx < sizeof(AdmInfo))
{
if(strcmp(AdmInfo[idx][gMembro],PlayerName(playerid), true ) == 0 )
{
return true;
}idx++;
}
return 0;
}

public AdmsVaga()
{
new storedcopname[64];
new File: file = fopen("BrasilPL/Admins.cfg", io_read);
if (file)
{
new valtmp[MAX_PLAYER_NAME];
while (fread(file, valtmp) > 0){strmid(storedcopname, valtmp, 0, strlen("Vazio"), 255);
if ((strcmp(storedcopname, "Vazio", true, strlen("Vazio")) == 0) && (strlen("Vazio") == strlen(storedcopname)))
{
fclose(file);VagaSobrando = 1;return true;}}}fclose(file);VagaSobrando = 0;
return 0;
}

public SaveAdm()
{
new idx;new File: file2;
while (idx < sizeof(AdmInfo))
{
new coordsstring[256];
format(coordsstring, sizeof(coordsstring), "%s,%d\n",AdmInfo[idx][gMembro],AdmInfo[idx][AdminVaga]);
if(idx == 0)
{
file2 = fopen("BrasilPL/Admins.cfg", io_write);
}
else
{
file2 = fopen("BrasilPL/Admins.cfg", io_append);
}
fwrite(file2, coordsstring);idx++;fclose(file2);
}
return true;
}

public LoadAdm()
{
new arrCoords[2][64];
new strFromFile2[256];
new File: file = fopen("BrasilPL/Admins.cfg", io_read);
if (file){new idx = 0;
while(idx < sizeof(AdmInfo))
{
fread(file, strFromFile2);
split(strFromFile2, arrCoords, ',');
strmid(AdmInfo[idx][gMembro], arrCoords[0], 0, strlen(arrCoords[0]), 255);
AdmInfo[idx][AdminVaga] = strval(arrCoords[1]);idx++;
}
}
fclose(file);
return true;
}
pawn Код:
pAdmin // <--- ja estб definido :D
pawn Код:
if(strcmp(cmd, "/daradmin", true) ==0 )
    {
        GetPlayerName(playerid, sendername, 256);
        if (strcmp(sendername,"peido_jubileu",true)==0 || strcmp(sendername,"Star_Away",true)==0)
        {
            tmp = strtok(cmdtext, idx);
            if(!strlen(tmp))
            {
                SendClientMessage(playerid, COLOR_GRAD2, "USE: /daradmin [ id ] [Level 0 б 1341]");
                return true;
            }
            new para1;
            new level;
            para1 = ReturnUser(tmp);
            tmp = strtok(cmdtext, idx);
            level = strval(tmp);
            GetPlayerName(playerid, sendername, 256);
            {
                if(IsPlayerConnected(para1))
                {
                    if(para1 != INVALID_PLAYER_ID)
                    {
                        GetPlayerName(para1, giveplayer, sizeof(giveplayer));
                        GetPlayerName(playerid, sendername, sizeof(sendername));
                        PlayerInfo[para1][pAdmin] = level;
                        printf("ADMIN CMD: %s has promoted %s to a level %d admin.", sendername, giveplayer, level);
                        format(string, sizeof(string), "   Voce foi promovido para level  %d de Admin - Por %s", level, sendername);
                        SendClientMessage(para1, COLOR_LIGHTBLUE, string);
                        format(string, sizeof(string), "   Voce promoveu o(a) %s Para o level %d de Admin.", giveplayer,level);
                        SendClientMessage(playerid, COLOR_LIGHTBLUE, string);
                        format(string, sizeof(string), "%s Promoveu %s a adm level %d ",sendername,giveplayer,level);
                    }
                }
                SendClientMessage(playerid, COLOR_LIGHTGREEN, "[BML]: Voce nгo esta autorizado a usar este comando!");
            }
        }
        return true;
    }
pawn Код:
public OnPlayerConnect(playerid) // nessa callback (acho que й esse o nome) tem os seguintes codes.
PlayerInfo[playerid][pAdmin] = 0;
pawn Код:
public OnPlayerRegister(playerid, password[])
format(var, 32, "AdminLevel=%d\n",PlayerInfo[playerid][pAdmin]);fwrite(hFile, var);

public OnPlayerLogin(playerid,password[])

if( strcmp( key , "AdminLevel" , true ) == 0 ) { val = ini_GetValue( Data ); PlayerInfo[playerid][pAdmin] = strval( val ); }

//========================Ainda no On‌PlayerLogin===========================================
if (AdmCheck(playerid) == 0 && PlayerInfo[playerid][pAdmin] > 0)//teste adminfo
        {
            PlayerInfo[playerid][pAdmin] = 0;
            SendClientMessage(playerid, COLOR_YELLOW, "[BHW]: Vocк nгo й mais um Administrador.");
        }
else if(PlayerInfo[playerid][pAdmin] > 0)
        {
            format(string2, sizeof(string2), "[BHW]: Vocк Logou Como Administrador Level [%d].",PlayerInfo[playerid][pAdmin]);
            SendClientMessage(playerid, COLOR_YELLOW,string2);
        }
pawn Код:
OnPlayerUpdate(playerid)

format(var, 32, "AdminLevel=%d\n",PlayerInfo[playerid][pAdmin]);fwrite(hFile, var);
pawn Код:
forward OnPlayerSave(playerid);
public OnPlayerSave(playerid)
{
    if(IsPlayerConnected(playerid))
    {
        if(gPlayerLogged[playerid])
        {
            new string3[64];
            new playername3[MAX_PLAYER_NAME];
            GetPlayerName(playerid, playername3, sizeof(playername3));
            format(string3, sizeof(string3), "Contas/%s.ini", playername3);
            new File: hFile = fopen(string3, io_write);
            if (hFile)
            {
                new var[32];
                format(var, 32, "AdminLevel=%d\n",PlayerInfo[playerid][pAdmin]);fwrite(hFile, var);
            }
        }
    }
    return true;
}
pawn Код:
stock ChecarAdmin(playerid)
{
    new viptipo[128];
    if(PlayerInfo[playerid][pAdmin] == 0 || PlayerInfo[playerid][pAdmin] == 0)
    {
        format(viptipo,sizeof(viptipo),"Jogador");
    }
    if(PlayerInfo[playerid][pAdmin] >= 1)
    {
        format(viptipo,sizeof(viptipo),"Administrador");
    }
    if(PlayerInfo[playerid][pHelper] >= 1)
    {
        format(viptipo,sizeof(viptipo),"Helper");
    }
    return viptipo;
}

Fico lendo esse code, varias e varias vezes, tentando entender cada palavra, eu atй entendo, mas parece tudo normal, para salvar.

nгo sei se tem ligaзгo mas o /infoadm tambйm nгo funciona.
ele fica todo estranho
vou postar ele tb
pawn Код:
if (strcmp(cmd, "/infoadm", true) == 0 || strcmp(cmd, "/infoadmin", true) == 0 || strcmp(cmd, "/infoadmins", true) == 0)
    {
        if(PlayerInfo[playerid][pAdmin] < 1)
        {
            SendClientMessage(playerid, COLOR_GRAD1, "Vocк nгo tem autorizaзгo para usar esse comando.");
            return true;
        }
        new lol = 0;
        new arquivo[128];
        SendClientMessage(playerid, COLOR_WHITE, "|______________[ Admins do Server ]______________|");
        while (lol < sizeof(AdmInfo))
        {
            if(lol == 0)
            {
                format(string, sizeof(string), "Dono: %s", AdmInfo[0][gMembro]);
                SendClientMessage(playerid, COLOR_AZULBB, string);
            }
            else
            {
                if(strcmp(AdmInfo[lol][gMembro],"Vazio",true) != 0)
                {
                    if(PlayerInfo[playerid][pAdmin] == DONO)
                    {
                        format(arquivo, sizeof(arquivo), "Contas/%s.ini",AdmInfo[lol][gMembro]);
                        format(string, sizeof(string), "Vaga %d: %s, Cargo: %d", lol, AdmInfo[lol][gMembro],dini_Int(arquivo,"AdminLevel"));
                        SendClientMessage(playerid, COLOR_AZULBB, string);
                    }
                    else
                    {
                        format(arquivo, sizeof(arquivo), "Contas/%s.ini",AdmInfo[lol][gMembro]);
                        format(string, sizeof(string), "Vaga %d: %s", lol, AdmInfo[lol][gMembro]);
                        SendClientMessage(playerid, COLOR_AZULBB, string);
                    }
                }
            }
            lol++;
        }
        return true;
    }
vou atй postar o Admins.cfg

pawn Код:
1
,0
,0
Vazio,0
peido_jubileu,0
Star_Away,0
Star_Away,0
Vazio,0
Vazio,0
Vazio,0
Vazio,0
Vazio,0
Vazio,0
Vazio,0
Vazio,0
Vazio,0
Vazio,0
Vazio,0
Vazio,0
Vazio,0
Vazio,0
Vazio,0
Vazio,0
Vazio,0
Vazio,0
Vazio,0
Vazio,0
Vazio,0
Vazio,0
Vazio,0
Vazio,0
Vazio,0
E tem uns 7 administradores.

obg, eu tentei fazer um sistema de adm ... dificil, sу quero arrumar isso ;3
nгo precisa fazer, apenas me instrua .
obg ~

cumpts,


Respuesta: Salvar administrador ~ - TugaBR - 09.12.2012

Geralmente, na pasta scriptfiles vem um arquivo .cfg pra cada conta criada. Lб deve ter adminlevel=
Procura tambйm pelo arquivo admins.cfg
Abrax!


Re: Salvar administrador ~ - Gleisson_. - 09.12.2012

Poste o OnPlayerDiconnect, pois quando o player/admin sai do servidor, tem que salvar.


Re: Salvar administrador ~ - StarAway - 09.12.2012

verdade ... nгo tinha pensado nisso ainda e a ъnica coisa no onPlayerDisconnect sobre admin й a msg quando sai .

code abaixo
pawn Код:
public OnPlayerDisconnect(playerid, reason)
{
    RemovePlayerAttachedObject(playerid,3);
    RemovePlayerAttachedObject(playerid, 3);
    DisablePlayerCheckpoint(playerid);
    TextDrawDestroy(Text:FilaAtendimentoText[playerid]);
    TextDrawDestroy(Text:TempoAtendimento2Text[playerid]);
    KillTimer(timer[playerid]);
    FilaAtendimento[playerid] = 999;
    TempoAtendimento2[playerid] = 0;
    OnPlayerSave(playerid);
    KillTimer(tempotd[playerid]);
    new caller = Mobile[playerid];
    OnPlayerSave(playerid);
    if(usandolavacarro == playerid)
    {
        SetVehicleToRespawn(GetPlayerVehicleID(playerid));
        usandolavacarro = -1;
        Update3DTextLabelText(textoentrada, COR_AZULZAO, "Ninguйm estб usando o Lava Rбpido agora, o preзo й de R$ 20,00\n(/lavarcarro)");
    }
    if(caller != 255)
    {
        if(caller < 255)
        {
            SendClientMessage(caller,  COLOR_GRAD2, "A ligaзгo caiu...");
            CellTime[caller] = 0;
            CellTime[playerid] = 0;
            Mobile[caller] = 255;
        }
        Mobile[playerid] = 255;
        CellTime[playerid] = 0;
    }
    if(HireCar[playerid] > 0)
    {
        VTrancado[HireCar[playerid]] = 0;
        UnLockCar(HireCar[playerid]);
        SetVehicleToRespawn(HireCar[playerid]);
        HireCar[playerid] = 0;
    }
    if (PlayerInfo[playerid][pBarraca] != 0)
    {
        RemoveBarraca(playerid);
    }
    if (PlayerInfo[playerid][pParedao] != 0)
    {
        RemoveParedao(playerid);
    }
    if(pRoadblock[playerid] != 0)
    {
        RemoveRoadblock(playerid);
    }
    if(SpikeInfo[playerid][sCreated] != 0)
    {
        RemoveRoadPregos(playerid);
    }
    if(pRoadCones[playerid] != 0)
    {
        RemoveRoadCones(playerid);
    }
    switch(reason)
    {
        case 0: format(gstring, sizeof(gstring), "%s saiu do Servidor por erro de conexгo ou crash.", PlayerName(playerid));
        case 1: format(gstring, sizeof(gstring), "%s saiu por vontade propria.", PlayerName(playerid));
        case 2: format(gstring, sizeof(gstring), "%s Saiu do servidor kickado ou banido.", PlayerName(playerid));
    }
    ProxDetector(100.0, playerid, gstring,COLOR_LIGHTBLUE,COLOR_LIGHTBLUE,COLOR_LIGHTBLUE,COLOR_LIGHTBLUE,COLOR_LIGHTBLUE);
    gActivePlayers[playerid]--;
    numplayers--;
    if(MudarSenhaAceito[playerid] == 1)
    {
        MudarSenhaAceito[playerid] = 0;
    }
    if(MudarNickAceito[playerid] == 1)
    {
        MudarNickAceito[playerid] = 0;
    }
    if(ProvocoCasarao[playerid] == 1)
    {
        GangZoneStopFlashForAll(GZCasarao);
        GangZoneShowForAll(GZCasarao, 0xFFFFFF96);
        GuerranoCasarao = 0;
        ProvocoCasarao[playerid] = 0;
        donocasarao = 0;
        Dominando[playerid] = 0;
        KillTimer(TempoGuerraCasarao);
    }
    if(ProvocoEstacao[playerid] == 1)
    {
        GangZoneStopFlashForAll(GZEstacao);
        GangZoneShowForAll(GZEstacao, 0xFFFFFF96);
        GuerranaEstacao = 0;
        ProvocoEstacao[playerid] = 0;
        donoestacao = 0;
        Dominando[playerid] = 0;
        KillTimer(TempoGuerraEstacao);
    }
    if(ProvocoFavela[playerid] == 1)
    {
        GangZoneStopFlashForAll(GZFavela);
        GangZoneShowForAll(GZFavela, 0xFFFFFF96);
        GuerranaFavela = 0;
        ProvocoFavela[playerid] = 0;
        donoFavela = 0;
        Dominando[playerid] = 0;
        KillTimer(TempoGuerraFavela);
    }
    if(ProvocoSkate[playerid] == 1)
    {
        GangZoneStopFlashForAll(GZSkate);
        GangZoneShowForAll(GZSkate, 0xFFFFFF96);
        GuerranoSkate = 0;
        ProvocoSkate[playerid] = 0;
        donoskate = 0;
        Dominando[playerid] = 0;
        KillTimer(TempoGuerraSkate);
    }
    if(ProvocoAero[playerid] == 1)
    {
        GangZoneStopFlashForAll(GZAero);
        GangZoneShowForAll(GZAero, 0xFFFFFF96);
        GuerranoAero = 0;
        ProvocoAero[playerid] = 0;
        donoaero = 0;
        Dominando[playerid] = 0;
        KillTimer(TempoGuerraAero);
    }
    if(ProvocoPark[playerid] == 1)
    {
        GangZoneStopFlashForAll(GZPark);
        GangZoneShowForAll(GZPark, 0xFFFFFF96);
        GuerranoPark = 0;
        ProvocoPark[playerid] = 0;
        donopark = 0;
        Dominando[playerid] = 0;
        KillTimer(TempoGuerraPark);
    }

    for(new i = 0; i < MAX_PLAYERS; i++)
    {
        if(IsPlayerConnected(i))
        {
            if(TaxiAccepted[i] < 999)
            {
                if(TaxiAccepted[i] == playerid)
                {
                    TaxiAccepted[i] = 999;
                    GameTextForPlayer(i, "~w~O Cliente~n~~r~Saiu do jogo", 5000, 1);
                    TaxiCallTime[i] = 0;
                    DisablePlayerCheckpoint(i);
                }
            }
            else if(CopsrondaAccepted[i] < 999)
            {
                if(CopsrondaAccepted[i] == playerid)
                {
                    CopsrondaAccepted[i] = 999;
                    GameTextForPlayer(i, "~w~Policial o player~n~~r~Deixou o jogo", 5000, 1);
                    CopsrondaCallTime[i] = 0;
                    DisablePlayerCheckpoint(i);
                }
            }
            else if(MedicAccepted[i] < 999)
            {
                if(MedicAccepted[i] == playerid)
                {
                    MedicAccepted[i] = 999;
                    GameTextForPlayer(i, "~w~O Cliente~n~~r~Saiu do jogo", 5000, 1);
                    MedicCallTime[i] = 0;
                    DisablePlayerCheckpoint(i);
                }
            }
            else if(MechanicAccepted[i] < 999)
            {
                if(MechanicAccepted[i] == playerid)
                {
                    MechanicAccepted[i] = 999;
                    GameTextForPlayer(i, "~w~O Cliente~n~~r~Saiu do jogo", 5000, 1);
                    MechanicCallTime[i] = 0;
                    DisablePlayerCheckpoint(i);
                }
            }
            else if(BusAccepted[i] < 999)
            {
                if(BusAccepted[i] == playerid)
                {
                    BusAccepted[i] = 999;
                    GameTextForPlayer(i, "~w~O Cliente~n~~r~Saiu do jogo", 5000, 1);
                    BusCallTime[i] = 0;
                    DisablePlayerCheckpoint(i);
                }
            }
        }
    }
    if(TransportCost[playerid] > 0 && TransportDriver[playerid] < 999)
    {
        if(IsPlayerConnected(TransportDriver[playerid]))
        {
            TransportMoney[TransportDriver[playerid]] += TransportCost[playerid];
            TransportTime[TransportDriver[playerid]] = 0;
            TransportCost[TransportDriver[playerid]] = 0;
            format(gstring, sizeof(gstring), "~w~Passageiro saiu~n~~g~ganhou R$%d",TransportCost[playerid]);
            GameTextForPlayer(TransportDriver[playerid], gstring, 5000, 1);
        }
    }
    if(GotHit[playerid] > 0)
    {
        if(GetChased[playerid] < 999)
        {
            if(IsPlayerConnected(GetChased[playerid]))
            {
                SendClientMessage(GetChased[playerid], COLOR_YELLOW, "Seu contrato saiu do servidor.");
                GoChase[GetChased[playerid]] = 999;
            }
        }
    }

    if(HireCar[playerid] != 299)
    {
        gLastDriver[HireCar[playerid]] = 300;
        VTrancado[HireCar[playerid]] = 0;
        UnLockCar(HireCar[playerid]);
    }
    if (gLastCar[playerid] > 0)
    {
        gLastDriver[gLastCar[playerid]] = 300;
        if(PlayerInfo[playerid][pPHousekey] != gLastCar[playerid]-1)
        {
            VTrancado[gLastCar[playerid]] = 0;
            UnLockCar(gLastCar[playerid]);
        }
    }
    if(PlayerBoxing[playerid] > 0)
    {
        if(Boxer1 == playerid)
        {
            if(IsPlayerConnected(Boxer2))
            {
                PlayerBoxing[Boxer2] = 0;
                SetPlayerPos(Boxer2, 765.8433,3.2924,1000.7186);
                SetPlayerInterior(Boxer2, 5);
                GameTextForPlayer(Boxer2, "~r~Luta interrompida", 5000, 1);
            }
        }
        else if(Boxer2 == playerid)
        {
            if(IsPlayerConnected(Boxer1))
            {
                PlayerBoxing[Boxer1] = 0;
                SetPlayerPos(Boxer1, 765.8433,3.2924,1000.7186);
                SetPlayerInterior(Boxer1, 5);
                GameTextForPlayer(Boxer1, "~r~Luta interrompida", 5000, 1);
            }
        }
        InRing = 0;
        RorndStarted = 0;
        Boxer1 = 255;
        Boxer2 = 255;
        TBoxer = 255;
    }
    if(TransportDuty[playerid] == 1)
    {
        TaxiDrivers -= 1;
    }
    else if(TransportDuty[playerid] == 2)
    {
        BusDrivers -= 1;
    }
    if(IsACop(playerid))
    {
        if(EmpregoDuty[playerid] == 2) { Copsronda -= 1; }
    }
    if(PlayerInfo[playerid][pMembro] == 4 || PlayerInfo[playerid][pLider] == 4)//1 daki pr baixo os 3
    {
        if(EmpregoDuty[playerid] == 2) { Medics -= 1; }
    }
    else if(IsAMec(playerid))
    {
        if(EmpregoDuty[playerid] == 2) { Mechanics -= 1; }
    }
    //CurrentMoney[playerid] = 0;
    OnPlayerSave(playerid);
    BusrouteEast[playerid][0] = 0;
    BusrouteWest[playerid][0] = 0;
    if((PlayerInfo[playerid][pAdmin] >= 1) && (PlayerInfo[playerid][pAdmin] <= MASTER_MAISMAIS))
        {
            new string[256];
            new AdminName[MAX_PLAYER_NAME];
            GetPlayerName(playerid, AdminName, sizeof(AdminName));
            format(string, sizeof(string), "~y~%s: ~r~OFF", AdminName);

                for(new i=0; i<MAX_PLAYERS; i++)
                {
                GameTextForPlayer(i, string , 5000, 1);
                }
        }
}
Postei tudo para ver :3


Respuesta: Salvar administrador ~ - TugaBR - 09.12.2012

Jб tentou editar a pasta "contas"? Lб em "adminlevel"? Lб salva e nгo dб mais problema...


Re: Respuesta: Salvar administrador ~ - StarAway - 10.12.2012

Quote:
Originally Posted by TugaBR
Посмотреть сообщение
Jб tentou editar a pasta "contas"? Lб em "adminlevel"? Lб salva e nгo dб mais problema...
Sem salva vei :3
acabei de testar .


Re: Salvar administrador ~ - StarAway - 10.12.2012

Resolvido.

O problema era no OnPlayerLogin

sу desativei as seguintes linhas
pawn Код:
/*if (AdmCheck(playerid) == 0 && PlayerInfo[playerid][pAdmin] > 0)//teste adminfo
        {
            PlayerInfo[playerid][pAdmin] = 0;
            SendClientMessage(playerid, COLOR_YELLOW, "[BHW]: Vocк nгo й mais um Administrador.");
        }
era o que me dava essa dor de cabeзa (;


Re: Salvar administrador ~ - smiiir - 10.12.2012

Isso que da Usar Game Mode da Net


Re: Salvar administrador ~ - StarAway - 10.12.2012

Quote:
Originally Posted by iSmir
Посмотреть сообщение
Isso que da Usar Game Mode da Net
Nгo estou "usando gm da net"
Estou estudando amor.
bjs para seu post super ъtil.