Jump to content
  • 0

pomoc Save Tuning


Guyy

Dotaz

Ahoj :)

Našiel som Vehicle Dynamic Systém ale problém je že mi nechce uložiť Tuning, zakládal som Topicy na iných fórach no odpovede som sa nedočkal, tak aspoň dúfam že tu sa dočkám. Prosím upravte mi tento Kód :) Ďakujem.

 

 

 

public OnVehicleMod(playerid, vehicleid, componentid)
{
	new id = GetVehicleID(vehicleid);
	if(IsValidVehicle(id))


	{
		VehicleMods[vehicleid][GetVehicleComponentType(componentid)] = componentid;
		SaveVehicle(vehicleid);
	}
	return 1;
}

public OnVehicleSpawn(vehicleid)
{
	VehicleSecurity[vehicleid] = 0;
	new id = GetVehicleID(vehicleid);
	if(IsValidVehicle(id))
	{
		if(VehicleColor[id][0] >= 0 && VehicleColor[id][1] >= 0)
			ChangeVehicleColor(vehicleid, VehicleColor[id][0], VehicleColor[id][1]);
		LinkVehicleToInterior(vehicleid, VehicleInterior[id]);
		SetVehicleVirtualWorld(vehicleid, VehicleWorld[id]);
		for(new i=0; i < sizeof(VehicleMods[]); i++)
		{
			AddVehicleComponent(vehicleid, VehicleMods[vehicleid][i]);
		}
		ChangeVehiclePaintjob(vehicleid, VehiclePaintjob[id]);
		if(VehicleLock[id]) ToggleDoors(vehicleid, VEHICLE_PARAMS_ON);
		if(VehicleAlarm[id]) VehicleSecurity[vehicleid] = 1;
	}
	return 1;
}

SaveVehicle(vehicleid)
{
	new filename[64], line[256];
	format(filename, sizeof(filename), VEHICLE_FILE_PATH "v%d.ini", vehicleid);
	new File:handle = fopen(filename, io_append);
	format(line, sizeof(line), "Created=%d\r\n", VehicleCreated[vehicleid]); fwrite(handle, line);
	format(line, sizeof(line), "Model=%d\r\n", VehicleModel[vehicleid]); fwrite(handle, line);
	format(line, sizeof(line), "Pos=%.3f,%.3f,%.3f,%.3f\r\n", VehiclePos[vehicleid][0], VehiclePos[vehicleid][1],
		VehiclePos[vehicleid][2], VehiclePos[vehicleid][3]);
	fwrite(handle, line);
	format(line, sizeof(line), "Colors=%d,%d\r\n", VehicleColor[vehicleid][0], VehicleColor[vehicleid][1]); fwrite(handle, line);
	format(line, sizeof(line), "Interior=%d\r\n", VehicleInterior[vehicleid]); fwrite(handle, line);
	format(line, sizeof(line), "VirtualWorld=%d\r\n", VehicleWorld[vehicleid]); fwrite(handle, line);
	format(line, sizeof(line), "Owner=%s\r\n", VehicleOwner[vehicleid]); fwrite(handle, line);
	format(line, sizeof(line), "NumberPlate=%s\r\n", VehicleNumberPlate[vehicleid]); fwrite(handle, line);
	format(line, sizeof(line), "Value=%d\r\n", VehicleValue[vehicleid]); fwrite(handle, line);
	format(line, sizeof(line), "Lock=%d\r\n", VehicleLock[vehicleid]); fwrite(handle, line);
	format(line, sizeof(line), "Alarm=%d\r\n", VehicleAlarm[vehicleid]); fwrite(handle, line);
	format(line, sizeof(line), "Paintjob=%d\r\n", VehiclePaintjob[vehicleid]); fwrite(handle, line);
	for(new t=0; t < sizeof(VehicleTrunk[]); t++)
	{
		format(line, sizeof(line), "Trunk%d=%d,%d\r\n", t+1, VehicleTrunk[vehicleid][t][0], VehicleTrunk[vehicleid][t][1]);
		fwrite(handle, line);
	}
	for(new m=0; m < sizeof(VehicleMods[]); m++)
	{
		format(line, sizeof(line), "Mod%d=%d\r\n", m, VehicleMods[vehicleid][m]);
		fwrite(handle, line);
	}
	fclose(handle);
}

 

 

Link to comment
Share on other sites

13 odpovědí na tuto otázku

Recommended Posts

  • 0

:d Súbory mám vytvorené do predu.. pri vytvorení vozidla sa mi tam zapíše všetko aj Mod%d=%d vo všetkých riadkoch je Mod0=0 a toto sa nechce prepísať :d

Link to comment
Share on other sites

  • 0

:d Súbory mám vytvorené do predu.. pri vytvorení vozidla sa mi tam zapíše všetko aj Mod%d=%d vo všetkých riadkoch je Mod0=0 a toto sa nechce prepísať :d

když máš všude 0 tak v proměnné nemáš nic. zkus si to nějak fixnout

Link to comment
Share on other sites

  • 0

Lenže to že jak.. Všade je 0 lebo nema žiadny Component, Ked do vozidla pridám nejaky Component mal by sa dať VehicleMods v zložke na Mods(GetVehicleComponentType(componentid))=componentid lenže to sa neurobí.. :(

Link to comment
Share on other sites

  • 0

ATomas, toto io_append mi napísali na fore.. pôvodne tam bolo io_write ale nič nepomože :(


Zistil som, že problém je v zapisovaní nie loadovaní, takže problém je iba v SaveVehicle abo OnVehicleMod.. :)

Edited by Carlosoo
Link to comment
Share on other sites

  • 0

ATomas, toto io_append mi napísali na fore.. pôvodne tam bolo io_write ale nič nepomože :(

Zistil som, že problém je v zapisovaní nie loadovaní, takže problém je iba v SaveVehicle abo OnVehicleMod.. :)

To ze ti to poradili na sa-mp fore neni svatost :) Si vsichni mysli ze to ma uroven a ne jsou tam blbci stejne jako tady. Vicemene nalo kdo mi dokaze odpovedet na muj dotaz a to jeste kdyz mi ho rovnou nesmazou :d

 

Kazdopadne io_append pridava text na konec souboru a io_write smaze obsah souboru a prepise ho novym obsahem. Vzhledem k tomu ze ty hodnoty nejspis ctes vzdy od vrchu je pro tebe lepsi io_write

Link to comment
Share on other sites

  • 0

:d Ale jak viriešiť ten Save pls ?? Mne neuloží, alebo dá to zle..

 

 

    new id = GetVehicleID(vehicleid);
    if(IsValidVehicle(id))
    {
        for(new i=0; i < sizeof(VehicleMods[]); i++)
        {
            VehicleMods[id][i] = componentid;
        }
        SaveVehicle(id);
    }

alebo

 

    for(new m=0; m < sizeof(VehicleMods[]); m++)
    {
        format(line, sizeof(line), "Mod%d=%d\r\n", m, VehicleMods[vehicleid][m]);
        fwrite(handle, line);
    }
Edited by Carlosoo
Link to comment
Share on other sites

  • 0

Hmm, no môžeš počkať 2-3 dni kým prídu kódy zo súťaže Pawn...

Ja som síce svoj kód ešte neposlal ale chystám sa to spraviť... Už tam mám dynamické vozidlá ktoré ukladajú tuning, farbu aj paintjob. Skript na to ti zatial nedám, ale ak po súťaži môžeš použiť môj systém (alebo mne napísať a ja ti ten skript pošlem)

 

*EDIT*

Toto si daj medzi príkazy (neviem aký systém používaš, toto je ZCMD)

CMD:savecar(playerid, params[])
{
	if(!IsPlayerInAnyVehicle(playerid))return SCM(playerid, "[ ERR ] {CC0000}Musíš byť vo vozidle!");
	new model, Float:pos[4], col[2], comp[14], vw, inter, vehicleid = GetPlayerVehicleID(playerid);
	model = GetVehicleModel(vehicleid);
	GetVehiclePos(vehicleid, pos[0], pos[1], pos[2]);
	GetVehicleZAngle(vehicleid, pos[3]);
	vw = GetVehicleVirtualWorld(vehicleid);
	inter = GetPlayerInterior(playerid);
	GetVehicleColor(vehicleid, col[0], col[1]);
	for(new i=0;i<14;i++) comp[i] = GetVehicleComponentInSlot(vehicleid, i);
	new str[128];
	format(str, sizeof(str), "%d %.2f %.2f %.2f %.2f %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d\r\n", model, pos[0], pos[1], pos[2], pos[3], col[0], col[1], vw, inter,
	comp[0], comp[1], comp[2], comp[3], comp[4], comp[5], comp[6], comp[7], comp[8], comp[9], comp[10], comp[11], comp[12], comp[13], PJ[vehicleid]);
	new File:cars = fopen("vehicles.cfg", io_append);
	if(cars)
	{
		fwrite(cars, str);
		fclose(cars);
	}
	SCM(playerid, "[ INF ] {33FFFF}Vozidlo uložené. Pri opätovnom načítaní FS G-Admin sa vozidlo samo načíta.");
	return true;
}

Toto vlož do OnFilterScriptInit:

new File:cars = fopen("vehicles.cfg", io_read);
	if(cars)
	{
	    new par[128];
	    new model, Float:pos[4], col[2], comp[14], vw, inter, pj;
		while(fread(cars, par))
		{
			if(!sscanf(par, "iffffiiiiiiiiiiiiiiiiiii",model, pos[0], pos[1], pos[2], pos[3], col[0], col[1], vw, inter,
			comp[0], comp[1], comp[2], comp[3], comp[4], comp[5], comp[6], comp[7], comp[8], comp[9], comp[10], comp[11], comp[12], comp[13], pj))
			{
				new vehicleid = CreateVehicle(model, pos[0], pos[1], pos[2], pos[3], col[0], col[1], 180);
				LinkVehicleToInterior(vehicleid, inter);
				SetVehicleVirtualWorld(vehicleid, vw);
				for(new i=0;i<14;i++)
				{
					AddVehicleComponent(vehicleid, comp[i]);
				}
				ChangeVehiclePaintjob(vehicleid, pj);
				PJ[vehicleid] = pj;
				GCars[vehicleid] = 2;
			}
		}
		fclose(cars);
	}
public OnVehiclePaintjob(playerid, vehicleid, paintjobid)
{
    PJ[vehicleid] = paintjobid;
    return 1;
}

Posledné dolaďovanie:

stiahni si SSCANF - hladaj na googli :d

stianni si getvehiclecolors - hladaj na googli

hore si deklaruj new PJ[MAX_VEHICLES];

 

Ak to budeš dávať do GameMode-u tak zmaž premennú GCars

Ak to bude vo FilterScript-e tak hore k premenným deklaruj new GCars[MAX_VEHICLES];

 

 

Toto použi len ak to bude vo FilterScript-e (v GM je to zbytočnosť)

public OnFilterScriptExit()
{
	for(new i=0;i<MAX_VEHICLES;i++)
	{
        if(GCars[i] > 0)
		{
			DestroyVehicle(i);
  		}
	}
	return true;
}

(PS: môj FS si vyžaduje rozdelenie GCars na 1,2... tebe však stačí boolova premenná Gcars tak si to môžeš upraviť... Ak nevieš o čom hovorím tak to radšej nerieš)

Edited by Quiter
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...