Portal SAMP
[Ajuda] não esta salvando o admin na conta do player - Versão de Impressão

+- Portal SAMP (https://portalsamp.com)
+-- Fórum: SA-MP (https://portalsamp.com/forumdisplay.php?fid=5)
+--- Fórum: Área de suporte (https://portalsamp.com/forumdisplay.php?fid=6)
+--- Tópico: [Ajuda] não esta salvando o admin na conta do player (/showthread.php?tid=2473)



não esta salvando o admin na conta do player - jnXX - 13/06/2022

Derrepente começou a não salvar os administradores do servidor, oq eu posso fazer pra solucionar? eu entendo bem pouco de pawno.

Código:
    CMD:daradmin(playerid, params[])
    {
        if (gPlayerLogged[playerid] == 0)
        {
            SendClientMessage(playerid, COR_GREY, "Você não está logado!");
            return 1;
        }
        if (PlayerInfo[playerid][pAdmin] < 1)
        {
            SendClientMessage(playerid, COR_GRAD1, "Você não tem autorização para usar esse comando.");
            return true;
        }
        else
        {
            if (PlayerInfo[playerid][pAdmin] >= 1342)
            {
                new para1;
                new level;
                if(sscanf(params, "ud", para1, level))
                {
                    SendClientMessage(playerid, COR_GRAD2, "{0099ff}×{ffffff} USE: /daradmin [ id ] [Level 0 á 1342]");
                    return true;
                }
                VagaAdmins();
                if(VagasLivresAdm == 0)
                {
                    SendClientMessage(playerid, COR_GRAD1, "Não há mais vagas na lista use /limparadmin primeiro.");
                    return 1;
                }
                if (level == 0)
                {
                    SendClientMessage(playerid, COR_GRAD2, "{0099ff}×{ffffff} USE: /limparadmin para limpar uma vaga");
                    return 1;
                }
                GetPlayerName(para1, giveplayerZCMD, sizeof(giveplayerZCMD));
                GetPlayerName(playerid, sendername, sizeof(sendername));
                if (IsPlayerConnected(para1))
                {
                    if (para1 != INVALID_PLAYER_ID)
                    {
                        if (PlayerInfo[para1][pAdmin] >= 1342)
                        {
                            SendClientMessage(playerid, COR_GRAD1, "Você não pode promover um admin Dono/Scripter!");
                            format(stringZCMD, sizeof(stringZCMD), "O admin %s tentou te promover a nivel %d", sendername, level);
                            SendClientMessage(para1, COR_SONS, stringZCMD);
                            return 1;
                        }
                        if (PlayerInfo[playerid][pAdmin] == 1341)
                        {
                            if (level < 0 || level > 1339)
                            {
                                SendClientMessage(playerid, COR_GRAD1, "Você só pode promover até cargo 4 por enquanto");
                                return 1;
                            }
                        }
                        format(stringZCMD, sizeof(stringZCMD), " Você foi promovido para level %d de Admin - pelo dono %s.", level, sendername);
                        SendClientMessage(para1, COR_LIGHTBLUE, stringZCMD);
                        format(stringZCMD, sizeof(stringZCMD), "   Você promoveu o(a) %s para o level %d de Admin.", giveplayerZCMD, level);
                        SendClientMessage(playerid, COR_LIGHTBLUE, stringZCMD);
                        getdate(year, month, day);
                        gettime(hour, minute, second);
                        format(stringZCMD, sizeof(stringZCMD), "%s deu admin nivel %d para %s [%d/%d/%d] ás [%d:%d:%d].", sendername, level, giveplayerZCMD, day, month, year, hour, minute, second);
                        PAdminsLog(stringZCMD);
                        PlayerInfo[para1][pAvaliacoes] += 1;
                        PlayerInfo[para1][pAFinal] += 10;
                        for (new i = 0; i < sizeof(AdmInfo); i++)
                        {
                            if (PlayerInfo[para1][pAdmin] >= 0)
                            {
                                PlayerInfo[para1][pAdmin] = level;
                                break;
                            }
                            else if (AdmInfo[i][AdminVaga] == 0)
                            {
                                PlayerInfo[para1][pAdmin] = level;
                                AdmInfo[i][AdminNick] = giveplayerZCMD;
                                AdmInfo[i][AdminVaga] = 1;
                                SalvarAdmins();
                                break;
                            }
                        }
                    }
                }
            }
        }
        return 1;
    }



RE: não esta salvando o admin na conta do player - k2bi_YT - 13/06/2022

Mande esse VagaAdmins() para ver se a utilização dela esta sendo correta


RE: não esta salvando o admin na conta do player - jnXX - 13/06/2022

(13/06/2022 14:29)jnXX Escreveu: Derrepente começou a não salvar os administradores do servidor, oq eu posso fazer pra solucionar? eu entendo bem pouco de pawno.

Código:
    CMD:daradmin(playerid, params[])
    {
        if (gPlayerLogged[playerid] == 0)
        {
            SendClientMessage(playerid, COR_GREY, "Você não está logado!");
            return 1;
        }
        if (PlayerInfo[playerid][pAdmin] < 1)
        {
            SendClientMessage(playerid, COR_GRAD1, "Você não tem autorização para usar esse comando.");
            return true;
        }
        else
        {
            if (PlayerInfo[playerid][pAdmin] >= 1342)
            {
                new para1;
                new level;
                if(sscanf(params, "ud", para1, level))
                {
                    SendClientMessage(playerid, COR_GRAD2, "{0099ff}×{ffffff} USE: /daradmin [ id ] [Level 0 á 1342]");
                    return true;
                }
                VagaAdmins();
                if(VagasLivresAdm == 0)
                {
                    SendClientMessage(playerid, COR_GRAD1, "Não há mais vagas na lista use /limparadmin primeiro.");
                    return 1;
                }
                if (level == 0)
                {
                    SendClientMessage(playerid, COR_GRAD2, "{0099ff}×{ffffff} USE: /limparadmin para limpar uma vaga");
                    return 1;
                }
                GetPlayerName(para1, giveplayerZCMD, sizeof(giveplayerZCMD));
                GetPlayerName(playerid, sendername, sizeof(sendername));
                if (IsPlayerConnected(para1))
                {
                    if (para1 != INVALID_PLAYER_ID)
                    {
                        if (PlayerInfo[para1][pAdmin] >= 1342)
                        {
                            SendClientMessage(playerid, COR_GRAD1, "Você não pode promover um admin Dono/Scripter!");
                            format(stringZCMD, sizeof(stringZCMD), "O admin %s tentou te promover a nivel %d", sendername, level);
                            SendClientMessage(para1, COR_SONS, stringZCMD);
                            return 1;
                        }
                        if (PlayerInfo[playerid][pAdmin] == 1341)
                        {
                            if (level < 0 || level > 1339)
                            {
                                SendClientMessage(playerid, COR_GRAD1, "Você só pode promover até cargo 4 por enquanto");
                                return 1;
                            }
                        }
                        format(stringZCMD, sizeof(stringZCMD), " Você foi promovido para level %d de Admin - pelo dono %s.", level, sendername);
                        SendClientMessage(para1, COR_LIGHTBLUE, stringZCMD);
                        format(stringZCMD, sizeof(stringZCMD), "   Você promoveu o(a) %s para o level %d de Admin.", giveplayerZCMD, level);
                        SendClientMessage(playerid, COR_LIGHTBLUE, stringZCMD);
                        getdate(year, month, day);
                        gettime(hour, minute, second);
                        format(stringZCMD, sizeof(stringZCMD), "%s deu admin nivel %d para %s [%d/%d/%d] ás [%d:%d:%d].", sendername, level, giveplayerZCMD, day, month, year, hour, minute, second);
                        PAdminsLog(stringZCMD);
                        PlayerInfo[para1][pAvaliacoes] += 1;
                        PlayerInfo[para1][pAFinal] += 10;
                        for (new i = 0; i < sizeof(AdmInfo); i++)
                        {
                            if (PlayerInfo[para1][pAdmin] >= 0)
                            {
                                PlayerInfo[para1][pAdmin] = level;
                                break;
                            }
                            else if (AdmInfo[i][AdminVaga] == 0)
                            {
                                PlayerInfo[para1][pAdmin] = level;
                                AdmInfo[i][AdminNick] = giveplayerZCMD;
                                AdmInfo[i][AdminVaga] = 1;
                                SalvarAdmins();
                                break;
                            }
                        }
                    }
                }
            }
        }
        return 1;
    }

Código:
FLRP::VagaAdmins()
{
    for(new idx=0; idx<sizeof(AdmInfo); idx++)
    {
        if(strcmp(AdmInfo[idx][AdminNick],"Vazio", true ) == 0 )
        {
            VagasLivresAdm = 1;
            return 1;
        }
    }
    VagasLivresAdm = 0;
    return 0;
}
FLRP:: SalvarAdmins()
{
    new idx;
    new File: file2;
    while (idx < sizeof(AdmInfo))
    {
        new coordsstring[256];
        format(coordsstring, sizeof(coordsstring), "%s,%d\n", AdmInfo[idx][AdminNick], AdmInfo[idx][AdminVaga]);
        if (idx == 0)
        {
            file2 = fopen("Configs/Admins.cfg", io_write);
        }
        else
        {
            file2 = fopen("Configs/Admins.cfg", io_append);
        }
        fwrite(file2, coordsstring);
        idx++;
        fclose(file2);
    }
    return true;
}
FLRP::CarregarAdmins()
{
    new arrCoords[2][64];
    new strFromFile2[254];
    new File: file = fopen("Configs/Admins.cfg", io_read);
    if (file)
    {
        new idx = 0;
        while (idx < sizeof(AdmInfo))
        {
            fread(file, strFromFile2);
            split(strFromFile2, arrCoords, ',');
            strmid(AdmInfo[idx][AdminNick], arrCoords[0], 0, strlen(arrCoords[0]), 255);
            AdmInfo[idx][AdminVaga] = strval(arrCoords[1]);
            idx++;
        }
    }
    fclose(file);
    return true;
}
Coloquei esses outros 2 pra ver se ajuda também.


RE: não esta salvando o admin na conta do player - xbruno1000x - 13/06/2022

Pode ser o sistema de vagas, quando você seta um, acaba removendo outro admin que estava na vaga anteriormente. Faça o teste sozinho no servidor, sete sua conta como admin e relogue. Se ainda estiver salvo, provavelmente é o sistema de vagas.


RE: não esta salvando o admin na conta do player - jnXX - 14/06/2022

Alguem poderia ajudar? ainda não consegui resolver isso, ta foda kk


RE: não esta salvando o admin na conta do player - Maycon_Felipe - 14/06/2022

Seguinte, você vai ter que colocar esses printf na hora de salvar, e setar os admins..

printf("[%d] checando admin: %d", 0, coloca a variavel admin aqui);
printf("[%d] checando admin: %d", 1, coloca a variavel admin aqui);

E vai olhando o CMD do server e analisando, em qual número a variável de admin perdeu o valor..