Portal SAMP
[Ajuda] Sistema de Salvamento De Tunagens - 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] Sistema de Salvamento De Tunagens (/showthread.php?tid=2412)



Sistema de Salvamento De Tunagens - Jamis2002 - 24/05/2022

Boa Tarde, Eu Tenho Um Sistema Que Salva E Carrega A Tunagem Dos Veículos Tranquilamente, So Que Tem Um Pequeno Problema, 
Toda vez Que Eu Conecto Um Veículo ( Nesse Caso, Eu Crio Ele Em Um Conjunto de Posições), ele Vem Com Todas As Modificações Exceto o
Mod10 Que Esta Como Left Side Skirt, Fiz Alguns Testes E Constatei que:

1 - Quando vc Desconecta (Destroi) e Conecta (Cria) Dnv Ele Volta Com Os Mods Normalmente, Se RE-Spawnar Tbm, ele volta Normal.

2 - Ja Tentei Trocar A Ordem De Funções Mas o Veículo Volta Stock (Sem Nenhum Mod Instalado) e Se Caso Vc RE-Spawne Ele, ele volta Sem o Mod10.

3 - Ja Tentei Tbm Adicionar o Componente á Parte, Mas Sem Sucesso... 

Como Posso Fazer Pra Toda Vez Que Eu Puxa-lo Ele Voltar Sem Faltar Nenhuma Modificação?

Trecho Do Código + Funções De Tunagem:

Código PHP:
                    if(pInfo[playerid][VehConetado] == true) return SendClientMessage(playeridCOR_ERRO"| ERRO | Seu Veiculo Já Está Conectado");
                    new Float:Pos[4], VehPlate[11], Float:KMsFloat:VehLife;
                    format(Stringsizeof(String), "Contas/%s.ini"pName(playerid));
                    new pVeh DOF2::GetInt(String"Veiculo");
                    Cor1[playerid] = DOF2::GetInt(String"Cor1");
                    Cor2[playerid] = DOF2::GetInt(String"Cor2");
                    new Fuel DOF2::GetInt(String"Combustivel");
                    KMs DOF2_GetFloat(String"KM Rodados");
                    VehLife DOF2_GetFloat(String"VidaVeh");
                    Pos[0] = DOF2_GetFloat(String"XVeh");
                    Pos[1] = DOF2_GetFloat(String"YVeh");
                    Pos[2] = DOF2_GetFloat(String"ZVeh");
                    Pos[3] = DOF2_GetFloat(String"RotVeh");
                    format(VehPlatesizeof(VehPlate), "%s"DOF2::GetString(String"PlacaVeh"));
                    pInfo[playerid][VeiculoPessoal] = CreateVehicle(pVehPos[0], Pos[1], Pos[2], Pos[3], Cor1[playerid], Cor2[playerid], -1);
                    LoadMods(playeridpInfo[playerid][VeiculoPessoal]);
                    TunningVeh(playeridpInfo[playerid][VeiculoPessoal]);
                    Combustivel[pInfo[playerid][VeiculoPessoal]] = Fuel;
                    SetVehicleHealth(pInfo[playerid][VeiculoPessoal], VehLife);
                    SetVehicleNumberPlate(pInfo[playerid][VeiculoPessoal], VehPlate);
                    MetrosRODADOS[pInfo[playerid][VeiculoPessoal]] = 0;
                    KmRODADOS2[pInfo[playerid][VeiculoPessoal]] = KMs;
                    pInfo[playerid][VehConetado] = true;
                    SendClientMessage(playeridCOR_VERDE"| INFO | Veiculo Conectado Com Sucesso!"); 
Código PHP:
// Salvamento / Carregamento Dos Mods
stock SaveMods(playeridvehicleid)
{
    format(Stringsizeof(String), "Contas/%s.ini"pName(playerid));
    if(DOF2_FileExists(String))
    {
       DOF2_SetInt(String,"Mod1",TunningCar[vehicleid][mod1]);
       DOF2_SetInt(String,"Mod2",TunningCar[vehicleid][mod2]);
       DOF2_SetInt(String,"Mod3",TunningCar[vehicleid][mod3]);
       DOF2_SetInt(String,"Mod4",TunningCar[vehicleid][mod4]);
       DOF2_SetInt(String,"Mod5",TunningCar[vehicleid][mod5]);
       DOF2_SetInt(String,"Mod6",TunningCar[vehicleid][mod6]);
       DOF2_SetInt(String,"Mod7",TunningCar[vehicleid][mod7]);
       DOF2_SetInt(String,"Mod8",TunningCar[vehicleid][mod8]);
       DOF2_SetInt(String,"Mod9",TunningCar[vehicleid][mod9]);
       DOF2_SetInt(String,"Mod10",TunningCar[vehicleid][mod10]);
       DOF2_SetInt(String,"Mod11",TunningCar[vehicleid][mod11]);
       DOF2_SetInt(String,"Mod12",TunningCar[vehicleid][mod12]);
       DOF2_SetInt(String,"Mod13",TunningCar[vehicleid][mod13]);
       DOF2_SetInt(String,"Mod14",TunningCar[vehicleid][mod14]);
       DOF2_SetInt(String,"Mod15",TunningCar[vehicleid][mod15]);
       DOF2_SetInt(String,"Mod16",TunningCar[vehicleid][mod16]);
       DOF2_SetInt(String,"Mod17",TunningCar[vehicleid][mod17]);
       DOF2_SetInt(String,"PaintJob",TunningCar[vehicleid][PaintJob]);
       DOF2_SaveFile();
    }
    else
    {
        DOF2_SetInt(String,"Mod1",TunningCar[vehicleid][mod1]);
        DOF2_SetInt(String,"Mod2",TunningCar[vehicleid][mod2]);
        DOF2_SetInt(String,"Mod3",TunningCar[vehicleid][mod3]);
        DOF2_SetInt(String,"Mod4",TunningCar[vehicleid][mod4]);
        DOF2_SetInt(String,"Mod5",TunningCar[vehicleid][mod5]);
        DOF2_SetInt(String,"Mod6",TunningCar[vehicleid][mod6]);
        DOF2_SetInt(String,"Mod7",TunningCar[vehicleid][mod7]);
        DOF2_SetInt(String,"Mod8",TunningCar[vehicleid][mod8]);
        DOF2_SetInt(String,"Mod9",TunningCar[vehicleid][mod9]);
        DOF2_SetInt(String,"Mod10",TunningCar[vehicleid][mod10]);
        DOF2_SetInt(String,"Mod11",TunningCar[vehicleid][mod11]);
        DOF2_SetInt(String,"Mod12",TunningCar[vehicleid][mod12]);
        DOF2_SetInt(String,"Mod13",TunningCar[vehicleid][mod13]);
        DOF2_SetInt(String,"Mod14",TunningCar[vehicleid][mod14]);
        DOF2_SetInt(String,"Mod15",TunningCar[vehicleid][mod15]);
        DOF2_SetInt(String,"Mod16",TunningCar[vehicleid][mod16]);
        DOF2_SetInt(String,"Mod17",TunningCar[vehicleid][mod17]);
        DOF2_SetInt(String,"PaintJob",TunningCar[vehicleid][PaintJob]);
        DOF2_SaveFile(); 
    
    return 0;
}

stock LoadMods(playeridvehicleid)
{
    format(Stringsizeof(String), "Contas/%s.ini"pName(playerid));
    if(DOF2_FileExists(String))
    {
        TunningCar[vehicleid][mod1] = DOF2_GetInt(String"Mod1");
        TunningCar[vehicleid][mod2] = DOF2_GetInt(String"Mod2");
        TunningCar[vehicleid][mod3] = DOF2_GetInt(String"Mod3");
        TunningCar[vehicleid][mod4] = DOF2_GetInt(String"Mod4");
        TunningCar[vehicleid][mod5] = DOF2_GetInt(String"Mod5");
        TunningCar[vehicleid][mod6] = DOF2_GetInt(String"Mod6");
        TunningCar[vehicleid][mod7] = DOF2_GetInt(String"Mod7");
        TunningCar[vehicleid][mod8] = DOF2_GetInt(String"Mod8");
        TunningCar[vehicleid][mod9] = DOF2_GetInt(String"Mod9");
        TunningCar[vehicleid][mod10] = DOF2_GetInt(String"Mod10");
        TunningCar[vehicleid][mod11] = DOF2_GetInt(String"Mod11");
        TunningCar[vehicleid][mod12] = DOF2_GetInt(String"Mod12");
        TunningCar[vehicleid][mod13] = DOF2_GetInt(String"Mod13");
        TunningCar[vehicleid][mod14] = DOF2_GetInt(String"Mod14");
        TunningCar[vehicleid][mod15] = DOF2_GetInt(String"Mod15");
        TunningCar[vehicleid][mod16] = DOF2_GetInt(String"Mod16");
        TunningCar[vehicleid][mod17] = DOF2_GetInt(String"Mod17");
        TunningCar[vehicleid][PaintJob] = DOF2_GetInt(String"PaintJob");
    }
    return 0;
}

stock TunningVeh(playeridvehicleid)
{
    new Account[60];
    format(Accountsizeof(Account), "Contas/%s.ini"pName(playerid));
    if(DOF2_FileExists(Account))
    {
        if(TunningCar[vehicleid][mod1] != 0) { AddVehicleComponent(vehicleid,TunningCar[vehicleid][mod1]); }
        if(TunningCar[vehicleid][mod2] != 0) { AddVehicleComponent(vehicleid,TunningCar[vehicleid][mod2]); }
        if(TunningCar[vehicleid][mod3] != 0) { AddVehicleComponent(vehicleid,TunningCar[vehicleid][mod3]); }
        if(TunningCar[vehicleid][mod4] != 0) { AddVehicleComponent(vehicleid,TunningCar[vehicleid][mod4]); }
        if(TunningCar[vehicleid][mod5] != 0) { AddVehicleComponent(vehicleid,TunningCar[vehicleid][mod5]); }
        if(TunningCar[vehicleid][mod6] != 0) { AddVehicleComponent(vehicleid,TunningCar[vehicleid][mod6]); }
        if(TunningCar[vehicleid][mod7] != 0) { AddVehicleComponent(vehicleid,TunningCar[vehicleid][mod7]); }
        if(TunningCar[vehicleid][mod8] != 0) { AddVehicleComponent(vehicleid,TunningCar[vehicleid][mod8]); }
        if(TunningCar[vehicleid][mod9] != 0) { AddVehicleComponent(vehicleid,TunningCar[vehicleid][mod9]); }
        if(TunningCar[vehicleid][mod10] != 0) { AddVehicleComponent(vehicleid,TunningCar[vehicleid][mod10]); }
        if(TunningCar[vehicleid][mod11] != 0) { AddVehicleComponent(vehicleid,TunningCar[vehicleid][mod11]); }
        if(TunningCar[vehicleid][mod12] != 0) { AddVehicleComponent(vehicleid,TunningCar[vehicleid][mod12]); }
        if(TunningCar[vehicleid][mod13] != 0) { AddVehicleComponent(vehicleid,TunningCar[vehicleid][mod13]); }
        if(TunningCar[vehicleid][mod14] != 0) { AddVehicleComponent(vehicleid,TunningCar[vehicleid][mod14]); }
        if(TunningCar[vehicleid][mod15] != 0) { AddVehicleComponent(vehicleid,TunningCar[vehicleid][mod15]); }
        if(TunningCar[vehicleid][mod16] != 0) { AddVehicleComponent(vehicleid,TunningCar[vehicleid][mod16]); }
        if(TunningCar[vehicleid][mod17] != 0) { AddVehicleComponent(vehicleid,TunningCar[vehicleid][mod17]); }
        if(TunningCar[vehicleid][PaintJob] != 0)
        {
            ChangeVehiclePaintjob(vehicleidTunningCar[vehicleid][PaintJob]);
        }
    }
    return 1;




RE: Sistema de Salvamento De Tunagens - ZiringueJhonsom - 26/05/2022

Aonde vc esta chamando a stock TunningVeh?, provavelmente vc não esta limpando as variáveis e quando o veiculo respawna ou e destruído ele volta da mesma forma,
limpar as variáveis TunningCar na OnVehicleSpawn e OnVehicleDeath, podem resolver o problema e não esquece de salvar de novo dps.


RE: Sistema de Salvamento De Tunagens - Jamis2002 - 28/05/2022

(26/05/2022 13:30)ZiringueJhonsom Escreveu: Aonde vc esta chamando a stock TunningVeh?, provavelmente vc não esta limpando as variáveis e quando o veiculo respawna ou e destruído ele volta da mesma forma,
limpar as variáveis  TunningCar na OnVehicleSpawn e OnVehicleDeath, podem resolver o problema e não esquece de salvar de novo dps.

Ok, Eu chamo Essa Stock Quando Eu Conecto (Crio) Um Veículo e tbm em OnVehicleSpawn qnd ele é Re-spawnado.
Como Posso Limpar As Variáveis, Igualando Todas A Zero?


RE: Sistema de Salvamento De Tunagens - Carlos Victor - 29/05/2022

(28/05/2022 09:56)Jamis2002 Escreveu:
(26/05/2022 13:30)ZiringueJhonsom Escreveu: Aonde vc esta chamando a stock TunningVeh?, provavelmente vc não esta limpando as variáveis e quando o veiculo respawna ou e destruído ele volta da mesma forma,
limpar as variáveis  TunningCar na OnVehicleSpawn e OnVehicleDeath, podem resolver o problema e não esquece de salvar de novo dps.

Ok, Eu chamo Essa Stock Quando Eu Conecto (Crio) Um Veículo e tbm em OnVehicleSpawn qnd ele é Re-spawnado.
Como Posso Limpar As Variáveis, Igualando Todas A Zero?

Use algo relacionado a dummy reset, é basicamente você setar uma variável para os valores padrões de uma enum.

Código:
enum E_PLAYER
{
    E_PASSWORD[16],
    E_MONEY,
    E_SCORE
};
new playerData[MAX_PLAYERS][E_PLAYER];

resetAccount(playerid)
{
    new dummy[E_PLAYER];
    playerData[playerid] = dummy;
    //Todos os valores padrões da enum 'E_PLAYER' são setadas em 'dummy' e logo em seguida eu seto a variável 'dummy' na variável que armazena a num 'E_PLAYER' assim resetando toda enum pros valores padrões.
    return 1;
}