Jump to content
  • 0

pomoc SA-MP MySQL Car


Anonimus24

Dotaz

Ahoj chtěl bych se zeptat kde bude problém?
Jelikož vozidla se mi vytvoří v Databázi všechno ale mám problém při Load... 
Načtou se mi vozidla ale na serveru pokuď dám /dl tak neodpovídájí ID to samé při ukládání kde by mohl být problém?
Předem děkuji za odpověd.

 

Spoiler

stock CreateVServer(VehType, Float:Veh_x, Float:Veh_y, Float:Veh_z, Float:Veh_a, color1, color2, respawn = -1, dbcar)
{
	VehiclesCount ++;

	if(VehiclesCount < MAX_VEHICLE_EX)
	{
	    if(!IsVehiclesCreate(VehiclesCount))
	    {
	        //--
	        
	        Vehicles[VehiclesCount][CarID] = CreateVehicle(VehType, Float:Veh_x, Float:Veh_y, Float:Veh_z, Float:Veh_a, color1, color2, respawn);
		    SetVehicleHealth(VehiclesCount,999);

		    ZamekCar[VehiclesCount] = 0;
		    format(VehicleLocName[VehiclesCount],24,"");
		    //--
		    DestroyObject(Vehicles[VehiclesCount][Neon]);
			DestroyObject(Vehicles[VehiclesCount][Neon2]);
			DestroyObject(Vehicles[VehiclesCount][VehText]);
			DestroyObject(Vehicles[VehiclesCount][VehText2]);

			VehicleTextTuningColor[VehiclesCount] = -1;
			VehicleTuningColorLast[VehiclesCount] = -1;
			Vehicles[VehiclesCount][VehicleText] = 0;
			format(Vehicles[VehiclesCount][VehicleTextTuningSTR], 100, "");
			format(VehicleTuningSTRLast[VehiclesCount], 100, "");
			Vehicles[VehiclesCount][VehicleTextTuningSize] = 140;
			Vehicles[VehiclesCount][VehicleTuningSizeLast] = 140;
		    //--
		    Vehicles[VehiclesCount][UjeteKM] = 0;
		    //--
		 	Vehicles[VehiclesCount][VehiclePosX] = Veh_x;
		    Vehicles[VehiclesCount][VehiclePosY] = Veh_y;
		    Vehicles[VehiclesCount][VehiclePosZ] = Veh_z;
		    Vehicles[VehiclesCount][VehiclePosA] = Veh_a;

		 	Vehicles[VehiclesCount][VehicleColor1] = color1;
			Vehicles[VehiclesCount][VehicleColor2] = color2;
			VehiclePaint[VehiclesCount] = -1;
		 	//--
		 	for(new i; i < 17; i ++) VehicleTune[i][VehiclesCount] = 0;
		    //--
		    //--
		    DisableSipka(VehiclesCount);
		    //--
		    new engine,lights,alarm,doors,bonnet,boot,objective;
			GetVehicleParamsEx(VehiclesCount,engine,lights,alarm,doors,bonnet,boot,objective);
			SetVehicleParamsEx(VehiclesCount,0,0,0,0,0,0,objective);

			new string[128];
			new ab[][26]=
			{"A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"};

			format(string, sizeof(string), "%d%s%d • %d%d%d%d", random(10), ab[random(26)], random(10), random(10),random(10),random(10),random(10));
			SetVehicleNumberPlate(VehiclesCount, string);
			if(dbcar == 1)
			{
				new query[500];
				mysql_format(g_SQL, query, sizeof(query), "INSERT INTO `Vehicles`(`ID`,`VehType`,`Vehx`, `Vehy`, `Vehz`, `Veha`, `color1`, `color2`, `respawn`, `Benzin`, `SPZ`) VALUES (%d, %d, %f, %f, %f, %f, %d, %d, %d, %d, '%e')",VehiclesCount,VehType, Veh_x, Veh_y, Veh_z, Veh_a,color1,color2,respawn,GetVehicleMaxBenzinMax(Vehicles[VehiclesCount][CarID]),string);
				mysql_tquery(g_SQL, query);
   			}
		    //--
		    ForMaxPlayer(i) SetVehicleParamsForPlayer( VehiclesCount, i, 0, 0);
		}
	}else print("Prekrocen Vozidla");
	return Vehicles[VehiclesCount][CarID];
}

forward LoadCar();
public LoadCar()
{
    if(!cache_num_rows())	return printf("\n[Cars]: 0 Vozidel bylo nacteno.\n");

	new rows;
	cache_get_row_count(rows);

	VehiclesCount = rows;
	for(new i=0;i<rows;i++)
	{
	    cache_get_value_name_int(i, "ID", Vehicles[i][CarID]);

		cache_get_value_name_int(i, "VehType", Vehicles[i][VehTyp]);

		cache_get_value_float(i, "Vehx", Vehicles[i][VehiclePosX]);
		cache_get_value_float(i, "Vehy", Vehicles[i][VehiclePosY]);
		cache_get_value_float(i, "Vehz", Vehicles[i][VehiclePosZ]);
		cache_get_value_float(i, "Veha", Vehicles[i][VehiclePosA]);

		cache_get_value_name_int(i, "UjetoKMS", Vehicles[i][UjeteKM]);

		cache_get_value_name_int(i, "color1", Vehicles[i][VehicleColor1]);
		cache_get_value_name_int(i, "color2", Vehicles[i][VehicleColor2]);

		cache_get_value_name_int(i, "respawn", Vehicles[i][CarSpawn]);
		cache_get_value_name_int(i, "Benzin", Vehicles[i][Car_Gas]);
 		cache_get_value(i, "SPZ", Vehicles[i][SPZ], MAX_SPZ_NAME);

		new IDP;
        IDP = CreateVehicle(Vehicles[i][VehTyp], Vehicles[i][VehiclePosX], Vehicles[i][VehiclePosY], Vehicles[i][VehiclePosZ], Vehicles[i][VehiclePosA], Vehicles[i][VehicleColor1], Vehicles[i][VehicleColor2], -1);
        xVeh[IDP] = i;
		if(GetVehicleTypePalivo(IDP) != TYPE_BENZIN_NENI)
		{
			new engine,lights,alarm,doors,bonnet,boot,objective;
			GetVehicleParamsEx(IDP,engine,lights,alarm,doors,bonnet,boot,objective);
			SetVehicleParamsEx(IDP,0,0,0,0,0,0,objective);
	 		SetVehicleNumberPlate(IDP, Vehicles[i][SPZ]);

			ZamekCar[IDP] = 0;
		 	format(VehicleLocName[IDP],24,"");
		  	//--
		   	DestroyObject(Vehicles[IDP][Neon]);
			DestroyObject(Vehicles[IDP][Neon2]);
			DestroyObject(Vehicles[IDP][VehText]);
			DestroyObject(Vehicles[IDP][VehText2]);

			VehicleTextTuningColor[IDP] = -1;
			VehicleTuningColorLast[IDP] = -1;
			Vehicles[IDP][VehicleText] = 0;
			format(Vehicles[IDP][VehicleTextTuningSTR], 100, "");
			format(VehicleTuningSTRLast[IDP], 100, "");
			Vehicles[IDP][VehicleTextTuningSize] = 140;
			Vehicles[IDP][VehicleTuningSizeLast] = 140;
		 	//--
		  	Vehicles[IDP][UjeteKM] = Vehicles[i][UjeteKM];
		   	Vehicles[IDP][Car_Gas] = Vehicles[i][Car_Gas];
		   	//--
		 	Vehicles[IDP][VehiclePosX] = Vehicles[i][VehiclePosX];
		  	Vehicles[IDP][VehiclePosY] = Vehicles[i][VehiclePosY];
		   	Vehicles[IDP][VehiclePosZ] = Vehicles[i][VehiclePosZ];
		   	Vehicles[IDP][VehiclePosA] = Vehicles[i][VehiclePosA];

			Vehicles[IDP][VehicleColor1] = Vehicles[i][VehicleColor1];
			Vehicles[IDP][VehicleColor2] = Vehicles[i][VehicleColor2];
			VehiclePaint[IDP] = -1;
			//--
			for(new x; x < 17; x ++) VehicleTune[x][IDP] = 0;
		 	//--
		  	DisableSipka(IDP);
		 	//--
		  	ForMaxPlayer(p) SetVehicleParamsForPlayer( IDP, p, 0, 0);
	 	}
	 	else
	 	{
			new engine,lights,alarm,doors,bonnet,boot,objective;
			GetVehicleParamsEx(IDP,engine,lights,alarm,doors,bonnet,boot,objective);
			SetVehicleParamsEx(IDP,1,0,0,0,0,0,objective);
	 		SetVehicleNumberPlate(IDP, Vehicles[i][SPZ]);

	 		ZamekCar[IDP] = 0;
		 	format(VehicleLocName[IDP],24,"");
		  	//--
		   	DestroyObject(Vehicles[IDP][Neon]);
			DestroyObject(Vehicles[IDP][Neon2]);
			DestroyObject(Vehicles[IDP][VehText]);
			DestroyObject(Vehicles[IDP][VehText2]);

			VehicleTextTuningColor[IDP] = -1;
			VehicleTuningColorLast[IDP] = -1;
			Vehicles[IDP][VehicleText] = 0;
			format(Vehicles[IDP][VehicleTextTuningSTR], 100, "");
			format(VehicleTuningSTRLast[IDP], 100, "");
			Vehicles[IDP][VehicleTextTuningSize] = 140;
			Vehicles[IDP][VehicleTuningSizeLast] = 140;
		 	//--
		  	Vehicles[IDP][UjeteKM] = Vehicles[i][UjeteKM];
		   	Vehicles[IDP][Car_Gas] = Vehicles[i][Car_Gas];
		   	//--
		 	Vehicles[IDP][VehiclePosX] = Vehicles[i][VehiclePosX];
		  	Vehicles[IDP][VehiclePosY] = Vehicles[i][VehiclePosY];
		   	Vehicles[IDP][VehiclePosZ] = Vehicles[i][VehiclePosZ];
		   	Vehicles[IDP][VehiclePosA] = Vehicles[i][VehiclePosA];

			Vehicles[IDP][VehicleColor1] = Vehicles[i][VehicleColor1];
			Vehicles[IDP][VehicleColor2] = Vehicles[i][VehicleColor2];
			VehiclePaint[IDP] = -1;
			//--
			for(new x; x < 17; x ++) VehicleTune[x][IDP] = 0;
		 	//--
		  	DisableSipka(IDP);
		 	//--
		  	ForMaxPlayer(p) SetVehicleParamsForPlayer( IDP, p, 0, 0);
		}
	}
	printf("[Cars]: %d Vozidel bylo nacteno.",rows);
	return 1;
}

 

 

Link to comment
Share on other sites

6 odpovědí na tuto otázku

Recommended Posts

  • 0
  • Administrátor

No vehicleID neni to samé jako iD z vdatabáze ty můžeš mít v db auto s ID 1 ale po vytvoření to může být uplně jiné vehicleID udelej si command ktery ti vypíše 

Vehicles[i][CarID]

vozidla ve kterém sedíš a to bude sedět stím z DB

 

PS: zkus udržovat nějakej stejnej stringCase u všech názvů sloupců z db protože se z toho jednou posereš až to budeš řešit po paměti a a mas VehX, pak Benzin a SPZ atp.  Jen takovej hint do budoucna..

  • Líbí se mi to! (+1) 1
Link to comment
Share on other sites

  • 0
před 1hodinou, Ewwe said:

No vehicleID neni to samé jako iD z vdatabáze ty můžeš mít v db auto s ID 1 ale po vytvoření to může být uplně jiné vehicleID udelej si command ktery ti vypíše 


Vehicles[i][CarID]

vozidla ve kterém sedíš a to bude sedět stím z DB

 

PS: zkus udržovat nějakej stejnej stringCase u všech názvů sloupců z db protože se z toho jednou posereš až to budeš řešit po paměti a a mas VehX, pak Benzin a SPZ atp.  Jen takovej hint do budoucna..

To mám právě tady "xVeh[IDP] = i;" poté vlastně dosazuji vozidlo pro uložení: 

 

public OnPlayerExitVehicle(playerid, vehicleid)
{
    new xid = xVeh[vehicleid];
 	SavexVehicle(xid);
	return 1;
}


forward SavexVehicle(xvehid);
public SavexVehicle(xvehid)
{
	new query[1500];
    format(query,sizeof(query),"UPDATE `Vehicles` SET ");
    // ??? ???????
    acf("`Benzin` = %d,",Vehicles[xvehid][Car_Gas]);
    acf("`UjetoKMS` = %d",Vehicles[xvehid][UjeteKM]);
    acf(" WHERE `ID` = %d LIMIT 1",xvehid);
    mysql_query(g_SQL, query);
	return 1;
}
      


 

Link to comment
Share on other sites

  • 0
On 21. 3. 2022 at 17:33, Anonimus24 said:

To mám právě tady "xVeh[IDP] = i;" poté vlastně dosazuji vozidlo pro uložení: 

 


public OnPlayerExitVehicle(playerid, vehicleid)
{
    new xid = xVeh[vehicleid];
 	SavexVehicle(xid);
	return 1;
}


forward SavexVehicle(xvehid);
public SavexVehicle(xvehid)
{
	new query[1500];
    format(query,sizeof(query),"UPDATE `Vehicles` SET ");
    // ??? ???????
    acf("`Benzin` = %d,",Vehicles[xvehid][Car_Gas]);
    acf("`UjetoKMS` = %d",Vehicles[xvehid][UjeteKM]);
    acf(" WHERE `ID` = %d LIMIT 1",xvehid);
    mysql_query(g_SQL, query);
	return 1;
}
      


 

Jako v MySQL se moc nevyznám, ale v databázi se pohybuju každý den. Přijde mi kravina přepisovat ID záznamu ID auta. Jak psal Ewwe, ID záznamu v tabulce a ID vozidla dle mého nemůže být stejný. Radši bych to ukládal separe přes vehID a ne ID záznamu. To samé i se čtením.

//A prosím, měj v  tom nějakou štábní kulturu. Název tabulky anglicky a údaje česky. Se v tom časem pak ztratíš až ti bude databáze růst :D

Edited by Paulee
Link to comment
Share on other sites

  • 0

vehicleid ti nikdy sedet nebudou. vehicleid se vzdy vytvori uple nove (prvni volne) pri CreateVehicle. Tj nesmis si fixovat vehicleid na serveru s id v databazove tabulce. To je cely problem

Citace

Jako v MySQL se moc nevyznám, ale v databázi se pohybuju každý den

A jake databazi se pohybujes kdyz se nevyznas v MySQL? Vsak vsechny DB systemy maji 90% zakladu stejne :) Hlavne mi nerikej ze v excelu, to neni db :D

Edited by ATomas
Link to comment
Share on other sites

  • 0

Už to mám vyřešené děkuji musel jsem i trochu opravit loadcar již vše dobře funguje nějak mě nenapadlo že ID v DB nebudou sedět s vozily z DL.

 

Spoiler

forward LoadCar();
public LoadCar()
{
	new rows = cache_num_rows();
	new id, loaded;
 	if(rows)
  	{
		while(loaded < rows)
		{
		    cache_get_value_name_int(loaded, "ID", id);

			cache_get_value_name_int(loaded, "VehType", Vehicles[id][VehTyp]);

			cache_get_value_float(loaded, "Vehx", Vehicles[id][VehiclePosX]);
			cache_get_value_float(loaded, "Vehy", Vehicles[id][VehiclePosY]);
			cache_get_value_float(loaded, "Vehz", Vehicles[id][VehiclePosZ]);
			cache_get_value_float(loaded, "Veha", Vehicles[id][VehiclePosA]);

			cache_get_value_name_int(loaded, "UjetoKMS", Vehicles[id][UjeteKM]);

			cache_get_value_name_int(loaded, "color1", Vehicles[id][VehicleColor1]);
			cache_get_value_name_int(loaded, "color2", Vehicles[id][VehicleColor2]);

			cache_get_value_name_int(loaded, "respawn", Vehicles[id][CarSpawn]);
			cache_get_value_name_int(loaded, "Benzin", Vehicles[id][Car_Gas]);
	 		cache_get_value(loaded, "SPZ", Vehicles[id][SPZ], MAX_SPZ_NAME);

			if(GetVehicleTypePalivo(Vehicles[id][CarID]) != TYPE_BENZIN_NENI)
			{
			    Vehicles[id][CarID] = CreateVehicle(Vehicles[id][VehTyp], Vehicles[id][VehiclePosX], Vehicles[id][VehiclePosY], Vehicles[id][VehiclePosZ], Vehicles[id][VehiclePosA], Vehicles[id][VehicleColor1], Vehicles[id][VehicleColor2], -1);
			    
    			xVeh[Vehicles[id][CarID]] = id;

				new engine,lights,alarm,doors,bonnet,boot,objective;
				GetVehicleParamsEx(Vehicles[id][CarID],engine,lights,alarm,doors,bonnet,boot,objective);
				SetVehicleParamsEx(Vehicles[id][CarID],0,0,0,0,0,0,objective);
		 		SetVehicleNumberPlate(Vehicles[id][CarID], Vehicles[id][SPZ]);

				ZamekCar[Vehicles[id][CarID]] = 0;
			 	format(VehicleLocName[Vehicles[id][CarID]],24,"");
			  	//--
			   	DestroyObject(Vehicles[Vehicles[id][CarID]][Neon]);
				DestroyObject(Vehicles[Vehicles[id][CarID]][Neon2]);
				DestroyObject(Vehicles[Vehicles[id][CarID]][VehText]);
				DestroyObject(Vehicles[Vehicles[id][CarID]][VehText2]);

				VehicleTextTuningColor[Vehicles[id][CarID]] = -1;
				VehicleTuningColorLast[Vehicles[id][CarID]] = -1;
				Vehicles[Vehicles[id][CarID]][VehicleText] = 0;
				format(Vehicles[Vehicles[id][CarID]][VehicleTextTuningSTR], 100, "");
				format(VehicleTuningSTRLast[Vehicles[id][CarID]], 100, "");
				Vehicles[Vehicles[id][CarID]][VehicleTextTuningSize] = 140;
				Vehicles[Vehicles[id][CarID]][VehicleTuningSizeLast] = 140;
			 	//--
			  	Vehicles[Vehicles[id][CarID]][UjeteKM] = Vehicles[id][UjeteKM];
			   	Vehicles[Vehicles[id][CarID]][Car_Gas] = Vehicles[id][Car_Gas];
			   	//--
			 	Vehicles[Vehicles[id][CarID]][VehiclePosX] = Vehicles[id][VehiclePosX];
			  	Vehicles[Vehicles[id][CarID]][VehiclePosY] = Vehicles[id][VehiclePosY];
			   	Vehicles[Vehicles[id][CarID]][VehiclePosZ] = Vehicles[id][VehiclePosZ];
			   	Vehicles[Vehicles[id][CarID]][VehiclePosA] = Vehicles[id][VehiclePosA];

				Vehicles[Vehicles[id][CarID]][VehicleColor1] = Vehicles[id][VehicleColor1];
				Vehicles[Vehicles[id][CarID]][VehicleColor2] = Vehicles[id][VehicleColor2];
				VehiclePaint[Vehicles[id][CarID]] = -1;
				//--
				for(new x; x < 17; x ++) VehicleTune[x][Vehicles[id][CarID]] = 0;
			 	//--
			  	DisableSipka(Vehicles[id][CarID]);
			 	//--
			  	ForMaxPlayer(p) SetVehicleParamsForPlayer( Vehicles[id][CarID], p, 0, 0);
	 		}
	 		else
	 		{
	 			Vehicles[id][CarID] = CreateVehicle(Vehicles[id][VehTyp], Vehicles[id][VehiclePosX], Vehicles[id][VehiclePosY], Vehicles[id][VehiclePosZ], Vehicles[id][VehiclePosA], Vehicles[id][VehicleColor1], Vehicles[id][VehicleColor2], -1);

    			xVeh[Vehicles[id][CarID]] = id;

				new engine,lights,alarm,doors,bonnet,boot,objective;
				GetVehicleParamsEx(Vehicles[id][CarID],engine,lights,alarm,doors,bonnet,boot,objective);
				SetVehicleParamsEx(Vehicles[id][CarID],1,0,0,0,0,0,objective);
		 		SetVehicleNumberPlate(Vehicles[id][CarID], Vehicles[id][SPZ]);

				ZamekCar[Vehicles[id][CarID]] = 0;
			 	format(VehicleLocName[Vehicles[id][CarID]],24,"");
			  	//--
			   	DestroyObject(Vehicles[Vehicles[id][CarID]][Neon]);
				DestroyObject(Vehicles[Vehicles[id][CarID]][Neon2]);
				DestroyObject(Vehicles[Vehicles[id][CarID]][VehText]);
				DestroyObject(Vehicles[Vehicles[id][CarID]][VehText2]);

				VehicleTextTuningColor[Vehicles[id][CarID]] = -1;
				VehicleTuningColorLast[Vehicles[id][CarID]] = -1;
				Vehicles[Vehicles[id][CarID]][VehicleText] = 0;
				format(Vehicles[Vehicles[id][CarID]][VehicleTextTuningSTR], 100, "");
				format(VehicleTuningSTRLast[Vehicles[id][CarID]], 100, "");
				Vehicles[Vehicles[id][CarID]][VehicleTextTuningSize] = 140;
				Vehicles[Vehicles[id][CarID]][VehicleTuningSizeLast] = 140;
			 	//--
			  	Vehicles[Vehicles[id][CarID]][UjeteKM] = Vehicles[id][UjeteKM];
			   	Vehicles[Vehicles[id][CarID]][Car_Gas] = Vehicles[id][Car_Gas];
			   	//--
			 	Vehicles[Vehicles[id][CarID]][VehiclePosX] = Vehicles[id][VehiclePosX];
			  	Vehicles[Vehicles[id][CarID]][VehiclePosY] = Vehicles[id][VehiclePosY];
			   	Vehicles[Vehicles[id][CarID]][VehiclePosZ] = Vehicles[id][VehiclePosZ];
			   	Vehicles[Vehicles[id][CarID]][VehiclePosA] = Vehicles[id][VehiclePosA];

				Vehicles[Vehicles[id][CarID]][VehicleColor1] = Vehicles[id][VehicleColor1];
				Vehicles[Vehicles[id][CarID]][VehicleColor2] = Vehicles[id][VehicleColor2];
				VehiclePaint[Vehicles[id][CarID]] = -1;
				//--
				for(new x; x < 17; x ++) VehicleTune[x][Vehicles[id][CarID]] = 0;
			 	//--
			  	DisableSipka(Vehicles[id][CarID]);
			 	//--
			  	ForMaxPlayer(p) SetVehicleParamsForPlayer( Vehicles[id][CarID], p, 0, 0);
			}
			loaded++;
	    }
	}
	printf("[Cars]: %d Vozidel bylo nacteno.",loaded);
	return 1;
}

 

 

Link to comment
Share on other sites

  • 0
před 11hodinami, ATomas said:

A jake databazi se pohybujes kdyz se nevyznas v MySQL? Vsak vsechny DB systemy maji 90% zakladu stejne :) Hlavne mi nerikej ze v excelu, to neni db :D

To ano, ale netušil jsem, zda MySQL má nějakou zvláštnost, proto jsem nechtěl tvrdit, že mé tvrzení je stoprocentně správně. Každopádně v MSSQL.

Nakonec udělal správně to, co tu všichni radili. ID v tabulce se prostě nepřepisuje.

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...