[Ajuda] Criando um arquivo Novo no DOF2
#1

Boa noite galera.

Entao, comecei a criar um sistema de concessionaria basico por inquanto, mas me deparei com o seguinte problema,
quando o player compra um veiculo novo, em vez de ser criado um arquivo novo, ele sobrescreve o antigo.
Ou seja, na pasta scriptfiles ele tem apenas um arquivo e toda vez que o player compra um veiculo ele sobrescreve o mesmo arquivo. Fazendo com que perca as informaзхes do player antigo.

Irei postar o codigo principal do assunto ( o que cria o arquivo quando o player seta ).
O codigo й bastante grande mas se precisar eu coloco o script interio aqui.

Код:
	if(dialogid == VENDAVEICULOS)
	{
	    if(response == 1)
	    {
    		new vehicleid = GetPlayerVehicleID(playerid);
	        DOF2_CreateFile(StringVeh);
	        DOF2_SetString(StringVeh, "Dono", Nome(playerid));
	        DOF2_SetInt(StringVeh, "Preco", 0);
	        DOF2_SetInt(StringVeh, "Nivel", 0);
	        DOF2_SetInt(StringVeh, "Modelo", 411);
		DOF2_SetFloat(StringVeh, "pVX", 1479.8016);
		DOF2_SetFloat(StringVeh, "pVY", -1600.4646);
		DOF2_SetFloat(StringVeh, "pVZ", 13.3747);
		DOF2_SetFloat(StringVeh, "pVROT", 175.3977);
	        DOF2_SetInt(StringVeh, "Cor1", 0);
	        DOF2_SetInt(StringVeh, "Cor2", 0);
	        DOF2_SetInt(StringVeh, "Tranca", 0);
	        DOF2_SetInt(StringVeh, "Vip", 0);
	        CreateVehicle(Veiculo[vehicleid][pVModelo],Veiculo[vehicleid][pVX],Veiculo[vehicleid][pVY],Veiculo[vehicleid][pVZ],Veiculo[vehicleid][pVROT],Veiculo[vehicleid][pVCor1],Veiculo[vehicleid][pVCor2],false);
		SendClientMessage(playerid, BRANCO, "{32CD32}Veiculo Criado:{FFFAFA}.");
		return 1;
		}
		if(response == 0)
		{
			RemovePlayerFromVehicle(playerid);
			return 1;
		}
	}
Obs: O Sistema й Em DOF2
Aguardo ajudas (:
Reply
#2

Deleta o arquivo , iguala tudo a zero e re-faz.
( Vocк fez o 'format' na 'StringVeh' ? o.o )
Reply
#3

Pior que ja fiz isso e da no mesmo
ele so trabalha com aquele mesmo arquivo

Aqui esta o codigo inteiro:

Topo:
Quote:

enum VeiculoInfo
{
pVDono[MAX_PLAYER_NAME],
pVPreco,
pVNivel,
pVModelo,
FloatVX,
FloatVY,
FloatVZ,
FloatVROT,
pVCor1,
pVCor2,
pVTranca,
pVVip
};
new Veiculo[MAX_VEHICLES][VeiculoInfo];

Este й em uma public save que eu criei porem esta salvando *Certinho mas sempre no mesmo arquivo:
Quote:

for(new i = 0; i < MAX_PLAYERS; i++)
{
new vehicleid = GetPlayerVehicleID(i);
format(StringVeh, sizeof(StringVeh), "Veiculos/%d.ini", vehicleid);
if(DOF2_FileExists(StringVeh))
{
DOF2_SetString(StringVeh, "Dono", Veiculo[vehicleid][pVDono]);
DOF2_SetInt(StringVeh, "Preco", Veiculo[vehicleid][pVPreco]);
DOF2_SetInt(StringVeh, "Nivel", Veiculo[vehicleid][pVNivel]);
DOF2_SetInt(StringVeh, "Modelo", Veiculo[vehicleid][pVModelo]);
DOF2_SetFloat(StringVeh, "pVX", Veiculo[vehicleid][pVX]);
DOF2_SetFloat(StringVeh, "pVY", Veiculo[vehicleid][pVY]);
DOF2_SetFloat(StringVeh, "pVZ", Veiculo[vehicleid][pVZ]);
DOF2_SetFloat(StringVeh, "pVROT", Veiculo[vehicleid][pVROT]);
DOF2_SetInt(StringVeh, "Cor1", Veiculo[vehicleid][pVCor1]);
DOF2_SetInt(StringVeh, "Cor2", Veiculo[vehicleid][pVCor2]);
DOF2_SetInt(StringVeh, "Tranca", Veiculo[vehicleid][pVTranca]);
DOF2_SetInt(StringVeh, "Vip", Veiculo[vehicleid][pVVip]);
DOF2_SaveFile();
}
}

E Aqui й onde carrega os arquivos:
Quote:

for(new i = 0; i < MAX_PLAYERS; i++)
{
new vehicleid = GetPlayerVehicleID(i);
format(StringVeh, sizeof(StringVeh), "Veiculos/%d.ini", vehicleid);
if(DOF2_FileExists(StringVeh))
{
strmid(Veiculo[vehicleid][pVDono], DOF2_GetString(StringVeh, "Dono"), 0, strlen(DOF2_GetString(StringVeh, "Dono")), 255);
Veiculo[vehicleid][pVPreco] = DOF2_GetInt(StringVeh, "Preco");
Veiculo[vehicleid][pVNivel] = DOF2_GetInt(StringVeh, "Nivel");
Veiculo[vehicleid][pVModelo] = DOF2_GetInt(StringVeh, "Modelo");
Veiculo[vehicleid][pVX] = DOF2_GetFloat(StringVeh, "pVX");
Veiculo[vehicleid][pVY] = DOF2_GetFloat(StringVeh, "pVY");
Veiculo[vehicleid][pVZ] = DOF2_GetFloat(StringVeh, "pVZ");
Veiculo[vehicleid][pVROT] = DOF2_GetFloat(StringVeh, "pVROT");
Veiculo[vehicleid][pVCor1] = DOF2_GetInt(StringVeh, "Cor1");
Veiculo[vehicleid][pVCor2] = DOF2_GetInt(StringVeh, "Cor2");
Veiculo[vehicleid][pVTranca] = DOF2_GetInt(StringVeh, "Tranca");
Veiculo[vehicleid][pVVip] = DOF2_GetInt(StringVeh, "VIP");
}
}

O codigo que esta ai, esta funcionando certinho como eu esperava, mas porem ele nao cria um arquivo novo quando um player compra um carro novo, e sim ele sobrescreve o arquivo de um veiculo que outro player ja tinha comprado ;/
Reply
#4

Entendi o seu cуdigo. Faz diferente , faz uma definiзгo para os veнculos do jogador. Por exemplo :
pawn Код:
#define MAX_CARS_PLAYERS 2

// Na hora do Loop
for ( new car; car < MAX_CARS_PLAYERS; ++car )
{
...
}
Se vocк ficar usando o 'GetPlayerVehicleID' ele vai ficar verificando o ID do veнculo do jogador que estб dentro nele ou que estava.
Faзa uma variбvel que dк pra ter 2 ou mais veнculos para o prуprio jogador.
Ou faзa um format diferenciado.
pawn Код:
for(new i; i <  MAX_CARS_PLAYERS ; ++ i )
{
    format(StringVeh, sizeof ( StringVeh ) , "Carros/%s%d.ini" , PlayerName ( playerid ) , i ) ;
}
Nгo faзa pelo id do veнculo o format , porque se for fazer pelo 'id' , ele vai ficar re-criando veiculos iguais sу que em posiзхes diferentes. Quando eu digo o ID , й de 400 a 611.
Reply
#5

um ja entendi, e neste sistema ele pode ter mais de 1 veiculo (: que era o q eu queria preservar.

Mas eu ja fiz teste com este sistema, e o veiculo so respawnava se o player logasse ;/

Mas mesmo assim agradeзo pela ajuda e pela ideia rs'

Vou estudar no esquema (:
Reply
#6

Dб pra fazer sem logar tambйm. Й super simples kkkk , se precisar de uma ajuda mais avanзada , sу chamar na MP ou me adicionar no ******** ou msn
Reply


Forum Jump:


Users browsing this thread: 3 Guest(s)