07.04.2018, 20:46
Gente, eu criei uma stock para facilitar minha vida, ela faz um for que passa por todos os veнculos e salva 1 por 1, para eu nгo precisar a cada sistema que eu fizer colocar um DOF2_SetInt(blabla), й sу eu tipo guardar as informaзхes no VeiculoDados[X][Cor1(sу um exemplo)] e quando eu fecho o servidor a stock faz o serviзo de guardar essa array no .ini, e eu fiz um sistema de /meuveiculo onde salvei os dados somente na array VeiculoDados, para testar essa stock de salvar os dados, mas nгo salvou, nгo sei se o problema estб no /meuveiculo ou na stock SalvarVeiculos()
Cуdigos:
Essa й a stock que eu estava falando:
Essa aqui й a que carrega os veнculos:
Esse aqui й o comando /meuveiculo:
Aqui as Dialogs que utilizei:
E por fim, caso sua dъvida for se eu jб chamei as 2 stocks no OnGMInit e OnGMExit, a resposta й:
Cуdigos:
Essa й a stock que eu estava falando:
PHP Code:
tock SalvarVeiculos()
{
new Contador[50];
for(new i = 0; i < MAX_VEICULOS; i++)
{
format(Contador, sizeof(Contador), PASTA_VEICULOS, i);
if(DOF2_FileExists(Contador))
{
DOF2_SetString(Contador, "Dono", VeiculoDados[i][Dono]);
DOF2_SetInt(Contador, "Modelo", VeiculoDados[i][Modelo]);
DOF2_SetFloat(Contador, "VeiculoX", VeiculoDados[i][VeiculoX]);
DOF2_SetFloat(Contador, "VeiculoY", VeiculoDados[i][VeiculoY]);
DOF2_SetFloat(Contador, "VeiculoZ", VeiculoDados[i][VeiculoZ]);
DOF2_SetFloat(Contador, "VeiculoA", VeiculoDados[i][VeiculoA]);
DOF2_SetInt(Contador, "Cor1", VeiculoDados[i][Cor1]);
DOF2_SetInt(Contador, "Cor2", VeiculoDados[i][Cor2]);
DOF2_SetInt(Contador, "Trancado", VeiculoDados[i][Trancado]);
DOF2_SetString(Contador, "Placa", VeiculoDados[i][Placa]);
DOF2_SaveFile();
}
}
return 1;
}
PHP Code:
stock CarregarVeiculos()
{
new Contador[50];
for(new i = 0; i < MAX_VEICULOS; i++)
{
format(Contador, sizeof(Contador), PASTA_VEICULOS, i);
if(DOF2_FileExists(Contador))
{
strmid(VeiculoDados[i][Dono], DOF2_GetString(Contador, "Dono"), 0, strlen(DOF2_GetString(Contador, "Dono")), MAX_PLAYER_NAME);
VeiculoDados[i][Modelo] = DOF2_GetInt(Contador, "Modelo");
VeiculoDados[i][VeiculoX] = DOF2_GetFloat(Contador, "VeiculoX");
VeiculoDados[i][VeiculoY] = DOF2_GetFloat(Contador, "VeiculoY");
VeiculoDados[i][VeiculoZ] = DOF2_GetFloat(Contador, "VeiculoZ");
VeiculoDados[i][VeiculoA] = DOF2_GetFloat(Contador, "VeiculoA");
VeiculoDados[i][Cor1] = DOF2_GetInt(Contador, "Cor1");
VeiculoDados[i][Cor2] = DOF2_GetInt(Contador, "Cor2");
VeiculoDados[i][Trancado] = DOF2_GetInt(Contador, "Trancado");
strmid(VeiculoDados[i][Placa], DOF2_GetString(Contador, "Placa"), 0, strlen(DOF2_GetString(Contador, "Placa")), 10);
}
}
return 1;
}
PHP Code:
CMD:meuveiculo(playerid, params[])
{
#pragma unused params
new NomeV[60], Tranca[20], str[500], VeiculoEDele;
if(Player[playerid][Logado] != 1) return SendClientMessage(playerid, -1, "[BCR] |Erro| Vocк precisa estar logado para usar um comando.");
if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, -1, "[BCR] |Erro| Vocк precisar estar em um veнculo para usar esse comando.");
for(new i = 0; i < MAX_VEICULOS; i++)
{
if(VeiculoDados[i][TempID] == GetPlayerVehicleID(playerid) && strcmp(VeiculoDados[i][Dono], PlayerName(playerid), false) == 0)
{
VeiculoEDele = 1;
if(VeiculoDados[i][Trancado] == 1)
{
format(Tranca, sizeof(Tranca), "Destrancar");
}
else
{
format(Tranca, sizeof(Tranca), "Trancar");
}
format(str, sizeof(str), "%s\nSalvar aqui\nAlterar pintura\nAbrir capф\nAbrir porta-malas", Tranca);
format(NomeV, sizeof(NomeV), "Meu {01A011}%s", NomeVeiculo[VeiculoDados[i][Modelo]-400][0]);
ShowPlayerDialog(playerid, DIALOG_MEUVEICULO, DIALOG_STYLE_LIST, NomeV, str, "Selecionar", "Cancelar");
}
}
if(VeiculoEDele == 0) return SendClientMessage(playerid, -1, "[BCR] |Erro| Este veнculo nгo pertence a vocк.");
return 1;
}
PHP Code:
hook OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
if(dialogid == DIALOG_MEUVEICULO)
{
if(response)
{
new mot, lu, alar, por, cap, porma, ob;
if(listitem == 0)
{
for(new z; z < MAX_VEICULOS; z++)
{
if(GetPlayerVehicleID(playerid) == VeiculoDados[z][TempID])
{
if(VeiculoDados[z][Trancado] == 1)
{
VeiculoDados[z][Trancado] = 0;
}
else
{
VeiculoDados[z][Trancado] = 1;
}
}
}
}
else if(listitem == 1)
{
new Float:X, Float:Y, Float:Z, Float:A;
for(new z1; z1 < MAX_VEICULOS; z1++)
{
if(GetPlayerVehicleID(playerid) == VeiculoDados[z1][TempID])
{
GetVehiclePos(GetPlayerVehicleID(playerid), X, Y, Z);
GetVehicleZAngle(GetPlayerVehicleID(playerid), A);
VeiculoDados[z1][VeiculoX] = X;
VeiculoDados[z1][VeiculoY] = Y;
VeiculoDados[z1][VeiculoZ] = Z;
VeiculoDados[z1][VeiculoA] = A;
SendClientMessage(playerid, -1, "[BCR] |Meu veнculo| Vocк salvou o seu veнculo nesse local.");
}
}
}
else if(listitem == 2)
{
ShowPlayerDialog(playerid, DIALOG_COR1, DIALOG_STYLE_INPUT, "Alterar pintura", "Digite o ID da cor 1:", "Confirmar", "Cancelar");
}
else if(listitem == 3)
{
for(new z3; z3 < MAX_VEICULOS; z3++)
{
if(GetPlayerVehicleID(playerid) == VeiculoDados[z3][TempID])
{
if(VeiculoDados[z3][Capo] == 0)
{
VeiculoDados[z3][Capo] = 1;
GetVehicleParamsEx(GetPlayerVehicleID(playerid), mot, lu, alar, por, cap, porma, ob);
SetVehicleParamsEx(GetPlayerVehicleID(playerid), mot, lu, alar, por, VEHICLE_PARAMS_ON, porma, ob);
}
else
{
VeiculoDados[z3][Capo] = 0;
GetVehicleParamsEx(GetPlayerVehicleID(playerid), mot, lu, alar, por, cap, porma, ob);
SetVehicleParamsEx(GetPlayerVehicleID(playerid), mot, lu, alar, por, VEHICLE_PARAMS_OFF, porma, ob);
}
}
}
}
else if(listitem == 4)
{
for(new z4; z4 < MAX_VEICULOS; z4++)
{
if(GetPlayerVehicleID(playerid) == VeiculoDados[z4][TempID])
{
if(VeiculoDados[z4][PortaMalas] == 0)
{
VeiculoDados[z4][PortaMalas] = 1;
GetVehicleParamsEx(GetPlayerVehicleID(playerid), mot, lu, alar, por, cap, porma, ob);
SetVehicleParamsEx(GetPlayerVehicleID(playerid), mot, lu, alar, por, cap, VEHICLE_PARAMS_ON, ob);
}
else
{
VeiculoDados[z4][PortaMalas] = 0;
GetVehicleParamsEx(GetPlayerVehicleID(playerid), mot, lu, alar, por, cap, porma, ob);
SetVehicleParamsEx(GetPlayerVehicleID(playerid), mot, lu, alar, por, cap, VEHICLE_PARAMS_OFF, ob);
}
}
}
}
}
}
if(dialogid == DIALOG_COR1)
{
if(response)
{
if(strlen(inputtext) < 1)
{
SendClientMessage(playerid, -1, "[BCR] |Erro| Digite um ID de 1 a 255.");
ShowPlayerDialog(playerid, DIALOG_COR1, DIALOG_STYLE_INPUT, "Alterar pintura", "Digite o ID da cor 1:", "Confirmar", "Cancelar");
}
if(strval(inputtext) < 0 || strval(inputtext) > 255)
{
SendClientMessage(playerid, -1, "[BCR] |Erro| Digite um ID de 1 a 255.");
}
else
{
SetPVarInt(playerid, "TempCor1Pvar", strval(inputtext));
ShowPlayerDialog(playerid, DIALOG_COR2, DIALOG_STYLE_INPUT, "Alterar pintura", "Digite o ID da cor 2:", "Confirmar", "Cancelar");
}
}
}
if(dialogid == DIALOG_COR2)
{
if(response)
{
if(strlen(inputtext) < 1)
{
SendClientMessage(playerid, -1, "[BCR] |Erro| Digite um ID de 1 a 255.");
ShowPlayerDialog(playerid, DIALOG_COR2, DIALOG_STYLE_INPUT, "Alterar pintura", "Digite o ID da cor 2:", "Confirmar", "Cancelar");
}
if(strval(inputtext) < 0 || strval(inputtext) > 255)
{
SendClientMessage(playerid, -1, "[BCR] |Erro| Digite um ID de 1 a 255.");
}
else
{
for(new z5; z5 < MAX_VEICULOS; z5++)
{
if(GetPlayerVehicleID(playerid) == VeiculoDados[z5][TempID])
{
VeiculoDados[z5][Cor1] = GetPVarInt(playerid, "TempCor1Pvar");
VeiculoDados[z5][Cor2] = strval(inputtext);
}
}
ChangeVehicleColor(GetPlayerVehicleID(playerid), GetPVarInt(playerid, "TempCor1Pvar"), strval(inputtext));
SendClientMessage(playerid, -1, "[BCR] |Meu veнculo| Vocк alterou a pintura do seu veнculo.");
DeletePVar(playerid, "TempCor1Pvar");
}
}
}
return 1;
}
PHP Code:
hook OnGameModeInit()
{
CarregarVeiculos();
return 1;
}
hook OnGameModeExit()
{
SalvarVeiculos();
return 1;
}