Need help with a huge command
#1

Hey everyone. I'm using one of the filterscripts of car ownership systems. However, after a car has been crashed/destroyed, it just respawns in the same position it was destroyed at. So I got rid of it and now trying to create a command which would respawn the car with all the tune when a player types in a command and pays amount of money for it. However, something doesn't work out for me and what happens after I type in the command - the car spawns but in the farm (Blueberry). Please help?

OnVehicleDeath
Код:
    new string[32], playername[MAX_PLAYER_NAME];
	GetPlayerName(killerid, playername, sizeof(playername));
	format(string, sizeof(string), "Trunk/%s.ini", playername);
	new File: hFile = fopen(string, io_write);
	if(hFile)
	{
	    // Vehicle destroyed, too bad...
	    fclose(hFile);
		fremove(string);
	}
//	Destroyed[vehicleid] = true;
	new file[256], remontas[256], name[24];
    GetPlayerName(killerid, name, 24);
	format(file,sizeof(file),"TransportoPr/%s.ini",name);
	GetPlayerName(killerid, name, 24);
	format(remontas,sizeof(remontas),"Remontas/%s.ini",name);
	if(dini_Exists(file))
	{
	    dini_IntSet(file, "Model", GetVehicleModel(Vehicle[killerid]));
		dini_IntSet(file, "Price", VehicleInfo[killerid][Price]);
		dini_FloatSet(file, "X", VehicleInfo[killerid][CarX]);
		dini_FloatSet(file, "Y", VehicleInfo[killerid][CarY]);
		dini_FloatSet(file, "Z", VehicleInfo[killerid][CarZ]);
		dini_FloatSet(file, "Rot", VehicleInfo[killerid][CarRot]);
		dini_IntSet(file, "Locked", VehicleInfo[killerid][Locked]);
		dini_Set(file, "Plate", VehPlate[Vehicle[killerid]]);
		dini_IntSet(file, "mod1", VehicleInfo[killerid][mod1]);
		dini_IntSet(file, "mod2", VehicleInfo[killerid][mod2]);
		dini_IntSet(file, "mod3", VehicleInfo[killerid][mod3]);
		dini_IntSet(file, "mod4", VehicleInfo[killerid][mod4]);
		dini_IntSet(file, "mod5", VehicleInfo[killerid][mod5]);
		dini_IntSet(file, "mod6", VehicleInfo[killerid][mod6]);
		dini_IntSet(file, "mod7", VehicleInfo[killerid][mod7]);
		dini_IntSet(file, "mod8", VehicleInfo[killerid][mod8]);
		dini_IntSet(file, "mod9", VehicleInfo[killerid][mod9]);
		dini_IntSet(file, "mod10", VehicleInfo[killerid][mod10]);
		dini_IntSet(file, "mod11", VehicleInfo[killerid][mod11]);
		dini_IntSet(file, "mod12", VehicleInfo[killerid][mod12]);
		dini_IntSet(file, "mod13", VehicleInfo[killerid][mod13]);
		dini_IntSet(file, "mod14", VehicleInfo[killerid][mod14]);
		dini_IntSet(file, "mod15", VehicleInfo[killerid][mod15]);
		dini_IntSet(file, "mod16", VehicleInfo[killerid][mod16]);
		dini_IntSet(file, "mod17", VehicleInfo[killerid][mod17]);
		dini_IntSet(file, "paintjob", VehicleInfo[killerid][paintjob]);
		dini_IntSet(file, "color1", VehicleInfo[killerid][colora]);
		dini_IntSet(file, "color2", VehicleInfo[killerid][colorb]);
  // Kuriame remontaaa
		dini_Create(remontas);
		dini_IntSet(remontas, "Model", GetVehicleModel(Vehicle[killerid]));
		dini_IntSet(remontas, "Price", VehicleInfo[killerid][Price]);
		dini_FloatSet(remontas, "X", VehicleInfo[killerid][CarX]);
		dini_FloatSet(remontas, "Y", VehicleInfo[killerid][CarY]);
		dini_FloatSet(remontas, "Z", VehicleInfo[killerid][CarZ]);
		dini_FloatSet(remontas, "Rot", VehicleInfo[killerid][CarRot]);
		dini_IntSet(remontas, "Locked", VehicleInfo[killerid][Locked]);
		dini_Set(remontas, "Plate", VehPlate[Vehicle[killerid]]);
		dini_IntSet(remontas, "mod1", VehicleInfo[killerid][mod1]);
		dini_IntSet(remontas, "mod2", VehicleInfo[killerid][mod2]);
		dini_IntSet(remontas, "mod3", VehicleInfo[killerid][mod3]);
		dini_IntSet(remontas, "mod4", VehicleInfo[killerid][mod4]);
		dini_IntSet(remontas, "mod5", VehicleInfo[killerid][mod5]);
		dini_IntSet(remontas, "mod6", VehicleInfo[killerid][mod6]);
		dini_IntSet(remontas, "mod7", VehicleInfo[killerid][mod7]);
		dini_IntSet(remontas, "mod8", VehicleInfo[killerid][mod8]);
		dini_IntSet(remontas, "mod9", VehicleInfo[killerid][mod9]);
		dini_IntSet(remontas, "mod10", VehicleInfo[killerid][mod10]);
		dini_IntSet(remontas, "mod11", VehicleInfo[killerid][mod11]);
		dini_IntSet(remontas, "mod12", VehicleInfo[killerid][mod12]);
		dini_IntSet(remontas, "mod13", VehicleInfo[killerid][mod13]);
		dini_IntSet(remontas, "mod14", VehicleInfo[killerid][mod14]);
		dini_IntSet(remontas, "mod15", VehicleInfo[killerid][mod15]);
		dini_IntSet(remontas, "mod16", VehicleInfo[killerid][mod16]);
		dini_IntSet(remontas, "mod17", VehicleInfo[killerid][mod17]);
		dini_IntSet(remontas, "paintjob", VehicleInfo[killerid][paintjob]);
		dini_IntSet(remontas, "color1", VehicleInfo[killerid][colora]);
		dini_IntSet(remontas, "color2", VehicleInfo[killerid][colorb]);
		DestroyVehicle(Vehicle[killerid]);
		dini_Remove(file);
	}
The command
Код:
	if(strcmp(cmdtext,"/remont", true) == 0)
	{
		new file[256],remontas[256],vardas[MAX_PLAYER_NAME];
		GetPlayerName(playerid, vardas, sizeof(vardas));
		format(remontas,sizeof(remontas),"Remontas/%s.ini",vardas);
		format(file,sizeof(file),"TransportoPr/%s.ini",vardas);
	    if(dini_Exists(remontas))
	    {
			if(GetPlayerMoney(playerid) > 1000)
			{
			GivePlayerMoney(playerid,-1000);
			SendClientMessage(playerid,ZALIA,"Jыsш transporto priemonл sutaisyta ir pristatyta (/rasti)");
			dini_Create(file);
			dini_IntSet(file, "Model", GetVehicleModel(Vehicle[playerid]));
			dini_IntSet(file, "Price", VehicleInfo[playerid][Price]);
			dini_FloatSet(file, "X", VehicleInfo[playerid][CarX]);
			dini_FloatSet(file, "Y", VehicleInfo[playerid][CarY]);
			dini_FloatSet(file, "Z", VehicleInfo[playerid][CarZ]);
			dini_FloatSet(file, "Rot", VehicleInfo[playerid][CarRot]);
			dini_IntSet(file, "Locked", VehicleInfo[playerid][Locked]);
			dini_Set(file, "Plate", VehPlate[Vehicle[playerid]]);
			dini_IntSet(file, "mod1", VehicleInfo[playerid][mod1]);
			dini_IntSet(file, "mod2", VehicleInfo[playerid][mod2]);
			dini_IntSet(file, "mod3", VehicleInfo[playerid][mod3]);
			dini_IntSet(file, "mod4", VehicleInfo[playerid][mod4]);
			dini_IntSet(file, "mod5", VehicleInfo[playerid][mod5]);
			dini_IntSet(file, "mod6", VehicleInfo[playerid][mod6]);
			dini_IntSet(file, "mod7", VehicleInfo[playerid][mod7]);
			dini_IntSet(file, "mod8", VehicleInfo[playerid][mod8]);
			dini_IntSet(file, "mod9", VehicleInfo[playerid][mod9]);
			dini_IntSet(file, "mod10", VehicleInfo[playerid][mod10]);
			dini_IntSet(file, "mod11", VehicleInfo[playerid][mod11]);
			dini_IntSet(file, "mod12", VehicleInfo[playerid][mod12]);
			dini_IntSet(file, "mod13", VehicleInfo[playerid][mod13]);
			dini_IntSet(file, "mod14", VehicleInfo[playerid][mod14]);
			dini_IntSet(file, "mod15", VehicleInfo[playerid][mod15]);
			dini_IntSet(file, "mod16", VehicleInfo[playerid][mod16]);
			dini_IntSet(file, "mod17", VehicleInfo[playerid][mod17]);
			dini_IntSet(file, "paintjob", VehicleInfo[playerid][paintjob]);
			dini_IntSet(file, "color1", VehicleInfo[playerid][colora]);
			dini_IntSet(file, "color2", VehicleInfo[playerid][colorb]);

      		VehicleInfo[playerid][Model] = dini_Int(file, "Model");
		    VehicleInfo[playerid][Price] = dini_Int(file, "Price");
		    VehicleInfo[playerid][CarX] = dini_Float(file, "X");
		    VehicleInfo[playerid][CarY] = dini_Float(file, "Y");
		    VehicleInfo[playerid][CarZ] = dini_Float(file, "Z");
		    VehicleInfo[playerid][CarRot] = dini_Float(file, "Rot");
		    VehicleInfo[playerid][Locked] = dini_Int(file, "Locked");
			VehicleInfo[playerid][mod1] = dini_Int(file, "mod1");
			VehicleInfo[playerid][mod2] = dini_Int(file, "mod2");
			VehicleInfo[playerid][mod3] = dini_Int(file, "mod3");
			VehicleInfo[playerid][mod4] = dini_Int(file, "mod4");
			VehicleInfo[playerid][mod5] = dini_Int(file, "mod5");
			VehicleInfo[playerid][mod6] = dini_Int(file, "mod6");
			VehicleInfo[playerid][mod7] = dini_Int(file, "mod7");
			VehicleInfo[playerid][mod8] = dini_Int(file, "mod8");
			VehicleInfo[playerid][mod9] = dini_Int(file, "mod9");
			VehicleInfo[playerid][mod10] = dini_Int(file, "mod10");
			VehicleInfo[playerid][mod11] = dini_Int(file, "mod11");
			VehicleInfo[playerid][mod12] = dini_Int(file, "mod12");
			VehicleInfo[playerid][mod13] = dini_Int(file, "mod13");
			VehicleInfo[playerid][mod14] = dini_Int(file, "mod14");
			VehicleInfo[playerid][mod15] = dini_Int(file, "mod15");
			VehicleInfo[playerid][mod16] = dini_Int(file, "mod16");
			VehicleInfo[playerid][mod17] = dini_Int(file, "mod17");
			VehicleInfo[playerid][paintjob] = dini_Int(file, "paintjob");
			VehicleInfo[playerid][colora] = dini_Int(file, "color1");
			VehicleInfo[playerid][colorb] = dini_Int(file, "color2");
			Vehicle[playerid] = CreateVehicle(VehicleInfo[playerid][Model], 1369.7883, 460.0056, 20.0077, 244.3673, VehicleInfo[playerid][colora], VehicleInfo[playerid][colorb], 3600000);
	    	if(VehicleInfo[playerid][mod1]!=0) { AddVehicleComponent(Vehicle[playerid],VehicleInfo[playerid][mod1]); }
			if(VehicleInfo[playerid][mod2]!=0) { AddVehicleComponent(Vehicle[playerid],VehicleInfo[playerid][mod2]); }
			if(VehicleInfo[playerid][mod3]!=0) { AddVehicleComponent(Vehicle[playerid],VehicleInfo[playerid][mod3]); }
			if(VehicleInfo[playerid][mod4]!=0) { AddVehicleComponent(Vehicle[playerid],VehicleInfo[playerid][mod4]); }
			if(VehicleInfo[playerid][mod5]!=0) { AddVehicleComponent(Vehicle[playerid],VehicleInfo[playerid][mod5]); }
			if(VehicleInfo[playerid][mod6]!=0) { AddVehicleComponent(Vehicle[playerid],VehicleInfo[playerid][mod6]); }
			if(VehicleInfo[playerid][mod7]!=0) { AddVehicleComponent(Vehicle[playerid],VehicleInfo[playerid][mod7]); }
			if(VehicleInfo[playerid][mod8]!=0) { AddVehicleComponent(Vehicle[playerid],VehicleInfo[playerid][mod8]); }
			if(VehicleInfo[playerid][mod9]!=0) { AddVehicleComponent(Vehicle[playerid],VehicleInfo[playerid][mod9]); }
			if(VehicleInfo[playerid][mod10]!=0) { AddVehicleComponent(Vehicle[playerid],VehicleInfo[playerid][mod10]); }
			if(VehicleInfo[playerid][mod11]!=0) { AddVehicleComponent(Vehicle[playerid],VehicleInfo[playerid][mod11]); }
			if(VehicleInfo[playerid][mod12]!=0) { AddVehicleComponent(Vehicle[playerid],VehicleInfo[playerid][mod12]); }
			if(VehicleInfo[playerid][mod13]!=0) { AddVehicleComponent(Vehicle[playerid],VehicleInfo[playerid][mod13]); }
			if(VehicleInfo[playerid][mod14]!=0) { AddVehicleComponent(Vehicle[playerid],VehicleInfo[playerid][mod14]); }
			if(VehicleInfo[playerid][mod15]!=0) { AddVehicleComponent(Vehicle[playerid],VehicleInfo[playerid][mod15]); }
			if(VehicleInfo[playerid][mod16]!=0) { AddVehicleComponent(Vehicle[playerid],VehicleInfo[playerid][mod16]); }
			if(VehicleInfo[playerid][mod17]!=0) { AddVehicleComponent(Vehicle[playerid],VehicleInfo[playerid][mod17]); }
			if(VehicleInfo[playerid][colora]!=0 || VehicleInfo[playerid][colorb]!=0)
			{
				ChangeVehicleColor(Vehicle[playerid],VehicleInfo[playerid][colora],VehicleInfo[playerid][colorb]);
			}
			if(VehicleInfo[playerid][paintjob]!=0)
			{
			    ChangeVehiclePaintjob(Vehicle[playerid],VehicleInfo[playerid][paintjob]);
	  		}
			new tmp[256]; tmp = dini_Get(file, "Plate");
			gPlayerHasCar[playerid] = 1;
			VehOwned[Vehicle[playerid]] = 1;
			OwnerID[Vehicle[playerid]] = playerid;
			SetVehicleParamsForPlayer(Vehicle[playerid], playerid, 0, VehicleInfo[playerid][Locked]);
			gVehLocked[Vehicle[playerid]] = VehicleInfo[playerid][Locked];
			SetVehicleNumberPlate(Vehicle[playerid], tmp);
			VehPlate[Vehicle[playerid]] = tmp;
			}
			else
			{
			SendClientMessage(playerid,RAUDONA,"Neturite pakankamai pinigш! (1000LT)");
			}
	    }
	    dini_Remove(remontas);
	    return 1;
	}
What I did was: After the vehicle gets destroyed the FILE with the car information gets destroyed too and a new file is created in different folder with the same information. On the command after the car has been repaired, the new file gets destroyed and the one which was created originally gets back (gets created again).

I'm not a PRO at the car ownership systems at all, actually opposite and trying to learn something useful. Please tell me if some parts don't make sense at all or are not needed and also what I should change to make this work? Sorry for different language "error messages" with SendClientMessage used in the codes, but they are just notices right? So yeah, I would appreciate any help!
Reply
#2

Quote:
Originally Posted by Endis
Посмотреть сообщение
Hey everyone. I'm using one of the filterscripts of car ownership systems. However, after a car has been crashed/destroyed, it just respawns in the same position it was destroyed at. So I got rid of it and now trying to create a command which would respawn the car with all the tune when a player types in a command and pays amount of money for it. However, something doesn't work out for me and what happens after I type in the command - the car spawns but in the farm (Blueberry). Please help?
Without looking at the code, this is one thing that stands out and could really help solve your problem. The Blueberry Farm (aka Blueberry Acres) is located at 0,0,0 and I am sure this is where you are finding your vehicles. The reason this would happen, is because it is either:
  • Not loading position data
  • Not saving position data
  • Not retrieving position data correctly
When it saves the data, does it save the x,y,z of the car? If it does, does it show the correct co-ordinates in the file?
If it does save and the co-ords are correct, check if the loading is working. Maybe make a quick command that loads it and when you use the command it returns a string with the location of the car after loading. If that is correct, you may need to check that the data is being applied to OnVehicleSpawn().
Reply
#3

Actually I found and solved out the problem. It was quite stupid - /remont command didn't get any values to set the "file"'s information to e.g.
Код:
dini_IntSet(file, "mod3", VehicleInfo[playerid][mod3]);
VehicleInfo hasn't been specified and no value has been given to it. To give it something I added this in front:
Код:
VehicleInfo[playerid][mod3] = dini_Int(remontas, "mod3");
Anyway thanks for your time and help!
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)