Portal SAMP
[Ajuda] Troca de nick - 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] Troca de nick (/showthread.php?tid=4626)



Troca de nick - Clawzkkj - 15/03/2024

Bom, quando um player vai trocar o nick no servidor, a senha não salva, e a conta fica sem senha, irei deixar o comando e a função de trocar nick abaixo

Código:
CMD:amudarnick(playerid, params[])
{
    if(PlayerInfo[playerid][pAdmin] < 5000) return SendClientMessage(playerid, COLOR_GRAD2, "Você não pode usar este comando");

    new giveid;
    if(sscanf(params, "r", giveid)) return SendClientMessage(playerid, COLOR_GRAD2, "USE: /amudarnick [ID do player]");

    new NovoNick[MAX_PLAYER_NAME], NickAntigo[MAX_PLAYER_NAME];
    GetPVarString(giveid, "VarNewNick", NovoNick, sizeof NovoNick);
    format(NickAntigo, sizeof NickAntigo, NomePlayer(giveid));

    if(isnull(NovoNick)) return SendClientMessage(playerid, -1, "O jogador não escolheu nenhum nick.");

    new file[80];
    format(file, sizeof file, "Pasta_Contas/%s.ini", NovoNick);
    if(DOF2_FileExists(file)) return SendClientMessage(playerid, -1, "Já existe alguém com esse mesmo nick no servidor.");

    if(TrocarNick(giveid, NickAntigo, NovoNick))
    {
        new file_antigo[80], file_novo[80];
        getdate(year, month, day);
        gettime(hour,minute);
        new string[128];
        format(string, sizeof(string), "%s Mudou o Nick para %s (%d/%d/%d - %d:%d)", NomePlayer(giveid), NovoNick, day, month, year, hour, minute);
        SendClientMessageToAll(COLOR_LIGHTRED, string);
        BPHLogs("mudarnick", string);
        format(file_antigo, sizeof file_antigo, "Pasta_Contas/%s.ini", NickAntigo);
        format(file_novo, sizeof file_novo, "Pasta_Contas/%s.ini", NovoNick);
        DOF2_RenameFile(file_antigo, file_novo);
    }
    else
        SendClientMessage(playerid, -1, "Já existe alguém com esse mesmo nick no servidor.");

    return 1;
}


Código:
TrocarNick(playerid, antigo[], novo[])
{
    new file_antigo[80], file_novo[80];

    //Pasta - Contas
    format(file_antigo, sizeof file_antigo, Pasta_Contas, antigo);
    format(file_novo, sizeof file_novo, Pasta_Contas, novo);
    DOF2_CreateFile(file_novo);
    DOF2_RemoveFile(file_antigo);
    SetPlayerName(playerid, novo);
    OnPlayerSave(playerid);
    

    //Pasta - Invent�rio
    format(file_antigo, sizeof file_antigo, Pasta_Inventario, antigo);
    format(file_novo, sizeof file_novo, Pasta_Inventario, novo);
    DOF2_RenameFile(file_antigo, file_novo);

    //Pasta - Acess�rios
    format(file_antigo, sizeof file_antigo, "Acessorios/%s.ini", antigo);
    format(file_novo, sizeof file_novo, "Acessorios/%s.ini", novo);
    DOF2_RenameFile(file_antigo, file_novo);

    //Pasta - CharAttach
    format(file_antigo, sizeof file_antigo, "CharAttach/%s.ini", antigo);
    format(file_novo, sizeof file_novo, "CharAttach/%s.ini", novo);
    DOF2_RenameFile(file_antigo, file_novo);

    //Casa
    if(PlayerInfo[playerid][pPHousekey] < 500)
    {
        format(HouseInfo[PlayerInfo[playerid][pPHousekey]][hOwner], MAX_PLAYER_NAME, novo);
    }

    //Empresa
    if(PlayerInfo[playerid][pPbiskey] != 255 && PlayerInfo[playerid][pPbiskey] >= 100)
    {
        new id = PlayerInfo[playerid][pPbiskey];
        format(SBizzInfo[id][sbOwner], MAX_PLAYER_NAME, novo);
        SalvarSEmpresa(id);
    }
    else if(PlayerInfo[playerid][pPbiskey] != 255)
    {
        new id = PlayerInfo[playerid][pPbiskey];
        format(BizzInfo[id][bOwner], MAX_PLAYER_NAME, novo);
        SalvarEmpresa(id);
    }

    //Fazenda
    if(PlayerInfo[playerid][pPFazkey] != 255)
    {
        new id = PlayerInfo[playerid][pPFazkey];
        format(FBizzInfo[id][fbOwner], MAX_PLAYER_NAME, novo);
        SalvarFEmpresa(id);
    }

    //An�ncios
    for(new i; i < MAX_ANUNCIOS; i ++)
    {
        if(!isnull(AnuncioItens[i][anitens_anunciante]) && strcmp(AnuncioItens[i][anitens_anunciante], antigo) == 0)
            format(AnuncioItens[i][anitens_anunciante], MAX_PLAYER_NAME, novo), SalvarAnuncioItem(i);
        if(!isnull(AnuncioCash[i][ancash_anunciante]) && strcmp(AnuncioCash[i][ancash_anunciante], antigo) == 0)
            format(AnuncioCash[i][ancash_anunciante], MAX_PLAYER_NAME, novo), SalvarAnuncioCash(i);
    }

    //Port�es
    for(new i; i < 1000; i ++)
    {
        if(strcmp(SistemaPortao[i][PortaoDono], antigo) == 0)
        {
            format(SistemaPortao[i][PortaoDono], MAX_PLAYER_NAME, novo);
            if(IsValidDynamic3DTextLabel(SistemaPortao[i][Portao3d]))
                DestroyDynamic3DTextLabel(SistemaPortao[i][Portao3d]);
            SistemaPortao[i][Portao3d] = CreateDynamic3DTextLabel(SistemaPortao[i][PortaoText], -1, SistemaPortao[i][PortaoX],SistemaPortao[i][PortaoY], SistemaPortao[i][PortaoZ], 30, INVALID_PLAYER_ID, INVALID_VEHICLE_ID,  0, SistemaPortao[i][PortaoMundo], SistemaPortao[i][PortaoInterior], -1, 100.0);
        }
    }
    SalvarPortoes();
    Atualizar3Dtexts();

    //Organiza��o
    if(PlayerInfo[playerid][pMembro] > 0 || PlayerInfo[playerid][pLider] > 0)
      {
        new i = GetPlayerOrg(playerid);
        new gstring[128];
        if(strcmp(antigo,InfoOrg[i][Lider],true)==0)
        {
            format(InfoOrg[i][Lider], MAX_PLAYER_NAME, novo);
            format(gstring, 128, Pasta_MembrosOrg, i);
            DOF2_SetString(gstring,"L�der",novo);
        }
        else if(strcmp(antigo,InfoOrg[i][SubLider],true)==0)
        {
            format(InfoOrg[i][SubLider], MAX_PLAYER_NAME, novo);
            DOF2_SetString(gstring,"SubL�der",novo);
        }
        else if(strcmp(antigo,InfoOrg[i][Membro1],true)==0)
        {
            format(InfoOrg[i][Membro1], MAX_PLAYER_NAME, novo);
            DOF2_SetString(gstring,"Membro1",novo);
        }
        else if(strcmp(antigo,InfoOrg[i][Membro2],true)==0)
        {
            format(InfoOrg[i][Membro2], MAX_PLAYER_NAME, novo);
            DOF2_SetString(gstring,"Membro2",novo);
        }
        else if(strcmp(antigo,InfoOrg[i][Membro3],true)==0)
        {
            format(InfoOrg[i][Membro3], MAX_PLAYER_NAME, novo);
            DOF2_SetString(gstring,"Membro3",novo);
        }
        else if(strcmp(antigo,InfoOrg[i][Membro4],true)==0)
        {
            format(InfoOrg[i][Membro4], MAX_PLAYER_NAME, novo);
            DOF2_SetString(gstring,"Membro4",novo);
        }
        else if(strcmp(antigo,InfoOrg[i][Membro5],true)==0)
        {
            format(InfoOrg[i][Membro5], MAX_PLAYER_NAME, novo);
            DOF2_SetString(gstring,"Membro5",novo);
        }
        else if(strcmp(antigo,InfoOrg[i][Membro6],true)==0)
        {
            format(InfoOrg[i][Membro6], MAX_PLAYER_NAME, novo);
            DOF2_SetString(gstring,"Membro6",novo);
        }
        else if(strcmp(antigo,InfoOrg[i][Membro7],true)==0)
        {
            format(InfoOrg[i][Membro7], MAX_PLAYER_NAME, novo);
            DOF2_SetString(gstring,"Membro7",novo);
        }
        else if(strcmp(antigo,InfoOrg[i][Membro8],true)==0)
        {
            format(InfoOrg[i][Membro8], MAX_PLAYER_NAME, novo);
            DOF2_SetString(gstring,"Membro8",novo);
        }
        else if(strcmp(antigo,InfoOrg[i][Membro9],true)==0)
        {
            format(InfoOrg[i][Membro9], MAX_PLAYER_NAME, novo);
            DOF2_SetString(gstring,"Membro9",novo);
        }
        else if(strcmp(antigo,InfoOrg[i][Membro10],true)==0)
        {
            format(InfoOrg[i][Membro10], MAX_PLAYER_NAME, novo);
            DOF2_SetString(gstring,"Membro10",novo);
        }
        else if(strcmp(antigo,InfoOrg[i][Membro11],true)==0)
        {
            format(InfoOrg[i][Membro11], MAX_PLAYER_NAME, novo);
            DOF2_SetString(gstring,"Membro11",novo);
        }

        else if(strcmp(antigo,InfoOrg[i][Membro12],true)==0)
        {
            format(InfoOrg[i][Membro12], MAX_PLAYER_NAME, novo);
            DOF2_SetString(gstring,"Membro12",novo);
        }
        else if(strcmp(antigo,InfoOrg[i][Membro13],true)==0)
        {
            format(InfoOrg[i][Membro13], MAX_PLAYER_NAME, novo);
            DOF2_SetString(gstring,"Membro13",novo);
        }
        else if(strcmp(antigo,InfoOrg[i][Membro14],true)==0)
        {
            format(InfoOrg[i][Membro14], MAX_PLAYER_NAME, novo);
            DOF2_SetString(gstring,"Membro14",novo);
        }
        else if(strcmp(antigo,InfoOrg[i][Membro15],true)==0)
        {
            format(InfoOrg[i][Membro15], MAX_PLAYER_NAME, novo);
            DOF2_SetString(gstring,"Membro15",novo);
        }
        else if(strcmp(antigo,InfoOrg[i][Membro16],true)==0)
        {
            format(InfoOrg[i][Membro16], MAX_PLAYER_NAME, novo);
            DOF2_SetString(gstring,"Membro16",novo);
        }
        else if(strcmp(antigo,InfoOrg[i][Membro17],true)==0)
        {
            format(InfoOrg[i][Membro17], MAX_PLAYER_NAME, novo);
            DOF2_SetString(gstring,"Membro17",novo);
        }
        else if(strcmp(antigo,InfoOrg[i][Membro18],true)==0)
        {
            format(InfoOrg[i][Membro18], MAX_PLAYER_NAME, novo);
            DOF2_SetString(gstring,"Membro18",novo);
        }
        else if(strcmp(antigo,InfoOrg[i][Membro19],true)==0)
        {
            format(InfoOrg[i][Membro19], MAX_PLAYER_NAME, novo);
            DOF2_SetString(gstring,"Membro19",novo);
        }
        else if(strcmp(antigo,InfoOrg[i][Membro20],true)==0)
        {
            format(InfoOrg[i][Membro20], MAX_PLAYER_NAME, novo);
            DOF2_SetString(gstring,"Membro20",novo);
        }
        else if(strcmp(antigo,InfoOrg[i][Membro21],true)==0)
        {
            format(InfoOrg[i][Membro21], MAX_PLAYER_NAME, novo);
            DOF2_SetString(gstring,"Membro21",novo);
        }
        else if(strcmp(antigo,InfoOrg[i][Membro22],true)==0)
        {
            format(InfoOrg[i][Membro22], MAX_PLAYER_NAME, novo);
            DOF2_SetString(gstring,"Membro22",novo);
        }
        else if(strcmp(antigo,InfoOrg[i][Membro23],true)==0)
        {
            format(InfoOrg[i][Membro23], MAX_PLAYER_NAME, novo);
            DOF2_SetString(gstring,"Membro23",novo);
        }
        else if(strcmp(antigo,InfoOrg[i][Membro24],true)==0)
        {
            format(InfoOrg[i][Membro24], MAX_PLAYER_NAME, novo);
            DOF2_SetString(gstring,"Membro24",novo);
        }
        else if(strcmp(antigo,InfoOrg[i][Membro25],true)==0)
        {
            format(InfoOrg[i][Membro25], MAX_PLAYER_NAME, novo);
            DOF2_SetString(gstring,"Membro25",novo);
        }
        else if(strcmp(antigo,InfoOrg[i][Membro26],true)==0)
        {
            format(InfoOrg[i][Membro26], MAX_PLAYER_NAME, novo);
            DOF2_SetString(gstring,"Membro26",novo);
        }
        else if(strcmp(antigo,InfoOrg[i][Membro27],true)==0)
        {
            format(InfoOrg[i][Membro27], MAX_PLAYER_NAME, novo);
            DOF2_SetString(gstring,"Membro27",novo);
        }
        else if(strcmp(antigo,InfoOrg[i][Membro28],true)==0)
        {
            format(InfoOrg[i][Membro28], MAX_PLAYER_NAME, novo);
            DOF2_SetString(gstring,"Membro28",novo);
        }
        else if(strcmp(antigo,InfoOrg[i][Membro29],true)==0)
        {
            format(InfoOrg[i][Membro29], MAX_PLAYER_NAME, novo);
            DOF2_SetString(gstring,"Membro29",novo);
        }
        else if(strcmp(antigo,InfoOrg[i][Membro30],true)==0)
        {
            format(InfoOrg[i][Membro30], MAX_PLAYER_NAME, novo);
            DOF2_SetString(gstring,"Membro30",novo);
        }
           DOF2_SaveFile();
    }

    //admins
    if(PlayerInfo[playerid][pAdmin] > 0)
    {
        AddAdmin(novo, PlayerInfo[playerid][pAdmin]);
        RemoverAdmin(antigo);
    }
    else if(PlayerInfo[playerid][pAdminTemp] > 0)
    {
        AddAdminTemp(novo, PlayerInfo[playerid][pAdminTemp]);
        RemoverAdminTemp(antigo);
    }
    //Maconhas
    for(new i = 0; i < MAX_MACONHA; i++)
    {
        if(strcmp(MaconhaInfo[i][Dono], antigo, true) == 0)
            format(MaconhaInfo[i][Dono], MAX_PLAYER_NAME, novo);
    }

    new string[128];
    format(string, sizeof string, "Seu nick foi trocado de %s para %s!", antigo, novo);
    SendClientMessage(playerid, COLOR_YELLOW, string);
    SetTimerEx("OnKick", 200, false, "i", playerid);
    return 1;
}


Estou uns meses preso nisso, se alguem puder ajudar...


RE: Troca de nick - Ryzen_ - 16/03/2024

Cara, você está utilizando o nick do player como nome do arquivo? Se sim, o mais correto seria ao invés de deletar todo o arquivo, apenas renomear o mesmo com a função DOF2_RenameFile(). Talvez não seja uma boa prática você criar diferentes pastas para objetos que serão atribuidos ao jogador (acessórios, portões, etc), mas sim utilizar o próprio arquivo do mesmo, para manter as informações referentes ao mesmo. Isso evitaria ter que alterar cada arquivo que possa ter o nick do player associado.