Jump to content
  • 0

ajutor va rog !!


cr3azy

Question

deci am un sistem de masini personale... cand dau /dealervehicle pun idu .. pretul imi apare masina... intru in masina dau /buy ... mi se respawneaza masina... totul e bine,,,, dar cand dau /restart ma duc la masina si cand urc in ea imi apare sa cumpar o masina din nou ... acelas dealership... ajutor va rog

enum vDealerData
{
	vModel,
	Float:vX,
	Float:vY,
	Float:vZ,
	Float:vRot,
	vForSale,
	vPrice,
	Text3D:vLabel,
	vID,
	vSQL_ID
};

enum pDealerData
{
	pCarModel,
	Float:pCarX,
	Float:pCarY,
	Float:pCarZ,
	Float:pCarRot,
	pCarColor1,
	pCarColor2,
	pCarPaintjob,
	pCarMod1,
	pCarMod2,
	pCarMod3,
	pCarMod4,
	pCarMod5,
	pCarMod6,
	pCarMod7,
	pCarMod8,
	pCarMod9,
	pCarMod10,
	pCarMod11,
	pCarMod12,
	pCarMod13,
	pCarMod14,
	pCarMod15,
	pCarMod16,
	pCarMod17,
	pCarHasLock,
	pCarLocked,
	pCarTrunkCash,
	pCarTrunkGun1,
	pCarTrunkGun2,
	pCarTrunkGun3,
	pCarTrunkGun4,
	pCarTrunkAmmo1,
	pCarTrunkAmmo2,
	pCarTrunkAmmo3,
	pCarTrunkAmmo4,
	pCarSpawned,
	pCarOwned,
	pCarID
};
new PlayerVehicles[MAX_PLAYERS][MAX_PLAYER_CARS + 1][pDealerData];
new DealershipVehicles[MAX_VEHICLES][vDealerData];
new VehicleLocked[MAX_VEHICLES];
new VehicleListitem[MAX_PLAYERS][MAX_PLAYER_CARS + 1];
new DB:VehicleDatabase[MAX_PLAYERS];
new DB:DealerVehicleDatabase;
new dealershipCars;
stock PlayerName(playerid, bool:show_underscore = true)
{
	new pName[24];
	GetPlayerName(playerid, pName, MAX_PLAYER_NAME);
	if (show_underscore == false)
	{
		for (new i = 0; i < strlen(pName); i += 1)
		{
		    if (pName[i] == '_') pName[i] = ' ';
		}
	}
	return pName;
}

stock sscanf(string[], format[], {Float,_}:...)
{
	#if defined isnull
		if (isnull(string))
	#else
		if (string[0] == 0 || (string[0] == 1 && string[1] == 0))
	#endif
		{
			return format[0];
		}
	#pragma tabsize 4
	new
		formatPos = 0,
		stringPos = 0,
		paramPos = 2,
		paramCount = numargs(),
		delim = ' ';
	while (string[stringPos] && string[stringPos] <= ' ')
	{
		stringPos++;
	}
	while (paramPos < paramCount && string[stringPos])
	{
		switch (format[formatPos++])
		{
			case '\0':
			{
				return 0;
			}
			case 'i', 'd':
			{
				new
					neg = 1,
					num = 0,
					ch = string[stringPos];
				if (ch == '-')
				{
					neg = -1;
					ch = string[++stringPos];
				}
				do
				{
					stringPos++;
					if ('0' <= ch <= '9')
					{
						num = (num * 10) + (ch - '0');
					}
					else
					{
						return -1;
					}
				}
				while ((ch = string[stringPos]) > ' ' && ch != delim);
				setarg(paramPos, 0, num * neg);
			}
			case 'h', 'x':
			{
				new
					num = 0,
					ch = string[stringPos];
				do
				{
					stringPos++;
					switch (ch)
					{
						case 'x', 'X':
						{
							num = 0;
							continue;
						}
						case '0' .. '9':
						{
							num = (num << 4) | (ch - '0');
						}
						case 'a' .. 'f':
						{
							num = (num << 4) | (ch - ('a' - 10));
						}
						case 'A' .. 'F':
						{
							num = (num << 4) | (ch - ('A' - 10));
						}
						default:
						{
							return -1;
						}
					}
				}
				while ((ch = string[stringPos]) > ' ' && ch != delim);
				setarg(paramPos, 0, num);
			}
			case 'c':
			{
				setarg(paramPos, 0, string[stringPos++]);
			}
			case 'f':
			{

				new changestr[16], changepos = 0, strpos = stringPos;
				while(changepos < 16 && string[strpos] && string[strpos] != delim)
				{
					changestr[changepos++] = string[strpos++];
    				}
				changestr[changepos] = '\0';
				setarg(paramPos,0,_:floatstr(changestr));
			}
			case 'p':
			{
				delim = format[formatPos++];
				continue;
			}
			case '\'':
			{
				new
					end = formatPos - 1,
					ch;
				while ((ch = format[++end]) && ch != '\'') {}
				if (!ch)
				{
					return -1;
				}
				format[end] = '\0';
				if ((ch = strfind(string, format[formatPos], false, stringPos)) == -1)
				{
					if (format[end + 1])
					{
						return -1;
					}
					return 0;
				}
				format[end] = '\'';
				stringPos = ch + (end - formatPos);
				formatPos = end + 1;
			}
			case 'u':
			{
				new
					end = stringPos - 1,
					id = 0,
					bool:num = true,
					ch;
				while ((ch = string[++end]) && ch != delim)
				{
					if (num)
					{
						if ('0' <= ch <= '9')
						{
							id = (id * 10) + (ch - '0');
						}
						else
						{
							num = false;
						}
					}
				}
				if (num && IsPlayerConnected(id))
				{
					setarg(paramPos, 0, id);
				}
				else
				{
					#if !defined foreach
						#define foreach(%1,%2) for (new %2 = 0; %2 < MAX_PLAYERS; %2++) if (IsPlayerConnected(%2))
						#define __SSCANF_FOREACH__
					#endif
					string[end] = '\0';
					num = false;
					new
						name[MAX_PLAYER_NAME];
					id = end - stringPos;
					foreach (Player, playerid)
					{
						GetPlayerName(playerid, name, sizeof (name));
						if (!strcmp(name, string[stringPos], true, id))
						{
							setarg(paramPos, 0, playerid);
							num = true;
							break;
						}
					}
					if (!num)
					{
						setarg(paramPos, 0, INVALID_PLAYER_ID);
					}
					string[end] = ch;
					#if defined __SSCANF_FOREACH__
						#undef foreach
						#undef __SSCANF_FOREACH__
					#endif
				}
				stringPos = end;
			}
			case 's', 'z':
			{
				new
					i = 0,
					ch;
				if (format[formatPos])
				{
					while ((ch = string[stringPos++]) && ch != delim)
					{
						setarg(paramPos, i++, ch);
					}
					if (!i)
					{
						return -1;
					}
				}
				else
				{
					while ((ch = string[stringPos++]))
					{
						setarg(paramPos, i++, ch);
					}
				}
				stringPos--;
				setarg(paramPos, i, '\0');
			}
			default:
			{
				continue;
			}
		}
		while (string[stringPos] && string[stringPos] != delim && string[stringPos] > ' ')
		{
			stringPos++;
		}
		while (string[stringPos] && (string[stringPos] == delim || string[stringPos] <= ' '))
		{
			stringPos++;
		}
		paramPos++;
	}
	do
	{
		if ((delim = format[formatPos++]) > ' ')
		{
			if (delim == '\'')
			{
				while ((delim = format[formatPos++]) && delim != '\'') {}
			}
			else if (delim != 'z')
			{
				return delim;
			}
		}
	}
	while (delim > ' ');
	return 0;
}

stock DB_Escape(text[])
{
    new
        ret[80 * 2],
        ch,
        i,
        j;
    while ((ch = text[i++]) && j < sizeof (ret))
    {
        if (ch == '\'')
        {
            if (j < sizeof (ret) - 2)
            {
                ret[j++] = '\'';
                ret[j++] = '\'';
            }
        }
        else if (j < sizeof (ret))
        {
            ret[j++] = ch;
        }
        else
        {
            j++;
        }
    }
    ret[sizeof (ret) - 1] = '\0';
    return ret;
}

stock ReturnComponentSlot(componentid)
{
	new i = 0;
	for(i = 0; i < 20; i ++) { if(spoiler[i][0] == componentid) { return 1; } }
	for(i = 0; i < 3; i ++) { if(nitro[i][0] == componentid) { return 2; } }
	for(i = 0; i < 23; i ++) { if(front_bumper[i][0] == componentid) { return 3; } }
	for(i = 0; i < 22; i ++) { if(rear_bumper[i][0] == componentid) { return 4; } }
	for(i = 0; i < 28; i ++) { if(exhaust[i][0] == componentid) { return 5; } }
	for(i = 0; i < 2; i ++) { if(bventr[i][0] == componentid) { return 6; } }
	for(i = 0; i < 2; i ++) { if(bventl[i][0] == componentid) { return 7; } }
	for(i = 0; i < 4; i ++) { if(bscoop[i][0] == componentid) { return 8; } }
	for(i = 0; i < 13; i ++) { if(rscoop[i][0] == componentid) { return 9; } }
	for(i = 0; i < 21; i ++) { if(left_sideskirt[i][0] == componentid) { return 10; } }
	for(i = 0; i < 21; i ++) { if(right_sideskirt[i][0] == componentid) { return 11; } }
	if(hydraulics[0][0] == componentid) { return 12; }
	if(bass[0][0] == componentid) { return 13; }
	for(i = 0; i < 2; i ++) { if(rbbars[i][0] == componentid) { return 14; } }
	for(i = 0; i < 2; i ++) { if(fbbars[i][0] == componentid) { return 15; } }
	for(i = 0; i < 17; i ++) { if(wheels[i][0] == componentid) { return 16; } }
	for(i = 0; i < 2; i ++) { if(lights[i][0] == componentid) { return 17; } }
	return 0;
}
stock CreateVehicleTables(playerid)
{
	if (IsPlayerConnected(playerid))
	{
	    new query[1536];
     	format(query, sizeof(query), "CREATE TABLE IF NOT EXISTS `VEHICLES` ");
	    strcat(query, "(`Name`, `Model`, `X`, `Y`, `Z`, `Rot`, `Color1`, `Color2`, `Paintjob`, `Mod1`, `Mod2`, `Mod3`, ");
	    strcat(query, "`Mod4`, `Mod5`, `Mod6`, `Mod7`, `Mod8`, `Mod9`, `Mod10`, `Mod11`, `Mod12`, `Mod13`, ");
	    strcat(query, "`Mod14`, `Mod15`, `Mod16`, `Mod17`, `HasLock`, `Locked`, `TrunkCash`, ");
	    strcat(query, "`TrunkGun1`, `TrunkGun2`, `TrunkGun3`, `TrunkGun4`, `TrunkAmmo1`, `TrunkAmmo2`, `TrunkAmmo3`, ");
		strcat(query, "`TrunkAmmo4`, `Spawned`, `Owned`, `Slot`)");
		db_query(VehicleDatabase[playerid], query);
	}
	return 1;
}

stock DeleteDealershipVehicle(vehicleid)
{
	new query[128];
	if (DealershipVehicles[vehicleid][vForSale])
	{
		format(query, sizeof(query), "DELETE FROM `DEALERCARS` WHERE `vID` = '%d'", DealershipVehicles[vehicleid][vSQL_ID]);
		db_query(DealerVehicleDatabase, query);
        DealershipVehicles[vehicleid][vModel] = 0;
		DealershipVehicles[vehicleid][vX] = 0.0;
		DealershipVehicles[vehicleid][vY] = 0.0;
		DealershipVehicles[vehicleid][vZ] = 0.0;
		DealershipVehicles[vehicleid][vRot] = 0.0;
		DealershipVehicles[vehicleid][vForSale] = 0;
		DealershipVehicles[vehicleid][vPrice] = 0;
		Delete3DTextLabel(DealershipVehicles[vehicleid][vLabel]);
		DestroyVehicle(DealershipVehicles[vehicleid][vID]);
		DealershipVehicles[vehicleid][vID] = 0;
		DealershipVehicles[vehicleid][vSQL_ID] = 0;
		dealershipCars -= 1;
		return 1;
	}
	return 0;
}

stock DeletePlayerVehicle(playerid, slot)
{
	new query[128];
	if (PlayerVehicles[playerid][slot][pCarOwned])
	{
		format(query, sizeof(query), "DELETE FROM `VEHICLES` WHERE `Name` = '%s' AND `Slot` = '%d'", PlayerName(playerid), slot);
		db_query(VehicleDatabase[playerid], query);
		PlayerVehicles[playerid][slot][pCarModel] = 0;
		PlayerVehicles[playerid][slot][pCarX] = 0.0;
		PlayerVehicles[playerid][slot][pCarY] = 0.0;
		PlayerVehicles[playerid][slot][pCarZ] = 0.0;
		PlayerVehicles[playerid][slot][pCarRot] = 0.0;
		PlayerVehicles[playerid][slot][pCarColor1] = 0;
		PlayerVehicles[playerid][slot][pCarColor2] = 0;
		PlayerVehicles[playerid][slot][pCarPaintjob] = -1;
		PlayerVehicles[playerid][slot][pCarMod1] = 0;
		PlayerVehicles[playerid][slot][pCarMod2] = 0;
		PlayerVehicles[playerid][slot][pCarMod3] = 0;
		PlayerVehicles[playerid][slot][pCarMod4] = 0;
		PlayerVehicles[playerid][slot][pCarMod5] = 0;
		PlayerVehicles[playerid][slot][pCarMod6] = 0;
		PlayerVehicles[playerid][slot][pCarMod7] = 0;
		PlayerVehicles[playerid][slot][pCarMod8] = 0;
		PlayerVehicles[playerid][slot][pCarMod9] = 0;
		PlayerVehicles[playerid][slot][pCarMod10] = 0;
		PlayerVehicles[playerid][slot][pCarMod11] = 0;
		PlayerVehicles[playerid][slot][pCarMod12] = 0;
		PlayerVehicles[playerid][slot][pCarMod13] = 0;
		PlayerVehicles[playerid][slot][pCarMod14] = 0;
		PlayerVehicles[playerid][slot][pCarMod15] = 0;
		PlayerVehicles[playerid][slot][pCarMod16] = 0;
		PlayerVehicles[playerid][slot][pCarMod17] = 0;
		PlayerVehicles[playerid][slot][pCarHasLock] = 0;
		PlayerVehicles[playerid][slot][pCarLocked] = 0;
		PlayerVehicles[playerid][slot][pCarTrunkCash] = 0;
		PlayerVehicles[playerid][slot][pCarTrunkGun1] = 0;
		PlayerVehicles[playerid][slot][pCarTrunkGun2] = 0;
		PlayerVehicles[playerid][slot][pCarTrunkGun3] = 0;
		PlayerVehicles[playerid][slot][pCarTrunkGun4] = 0;
		PlayerVehicles[playerid][slot][pCarTrunkAmmo1] = 0;
		PlayerVehicles[playerid][slot][pCarTrunkAmmo2] = 0;
		PlayerVehicles[playerid][slot][pCarTrunkAmmo3] = 0;
		PlayerVehicles[playerid][slot][pCarTrunkAmmo4] = 0;
		PlayerVehicles[playerid][slot][pCarSpawned] = 0;
		PlayerVehicles[playerid][slot][pCarOwned] = 0;
		if (PlayerVehicles[playerid][slot][pCarID] != 0)
		{
		    UnlockVehicle(PlayerVehicles[playerid][slot][pCarID]);
			DestroyVehicle(PlayerVehicles[playerid][slot][pCarID]);
			PlayerVehicles[playerid][slot][pCarID] = 0;
		}
		return 1;
	}
	return 0;
}

stock CreateDealershipVehicle(model, price, Float:x, Float:y, Float:z, Float:rotation)
{
	if (model < 400 || model > 611)
		return 0;

	new
	    vehicleid,
	    string[256],
		query[1536];
	    
	vehicleid = CreateVehicle(model, x, y, z, rotation, 1, 1, 5);
	if (vehicleid == INVALID_VEHICLE_ID)
	    return 0;
	    
    DealershipVehicles[vehicleid][vModel] = model;
	DealershipVehicles[vehicleid][vX] = x;
	DealershipVehicles[vehicleid][vY] = y;
	DealershipVehicles[vehicleid][vZ] = z;
	DealershipVehicles[vehicleid][vRot] = rotation;
	DealershipVehicles[vehicleid][vForSale] = 1;
	DealershipVehicles[vehicleid][vPrice] = price;
	DealershipVehicles[vehicleid][vID] = vehicleid;
	DealershipVehicles[vehicleid][vSQL_ID] = dealershipCars + 1;
	format(string, sizeof(string), "This {FFFFFF}%s {F5DEB3}is for sale.\nThe cost of this vehicle is {FFFFFF}$%d.\n{F5DEB3}For more information, enter the vehicle.", GetVehicleName(vehicleid), price);
	DealershipVehicles[vehicleid][vLabel] = Create3DTextLabel(string, YELLOW2, x, y, z, 10.0, 0);
	dealershipCars += 1;

	format(query, sizeof(query), "INSERT INTO `DEALERCARS` (`vID`, `vModel`, `vX`, `vY`, `vZ`, `vRot`, `vForSale`, `vPrice`) VALUES('%d', '%d', '%f', '%f', '%f', '%f', '%d', '%d')", dealershipCars, model, x, y, z, rotation, 1, price);
	db_query(DealerVehicleDatabase, query);
	return vehicleid;
}

stock CreatePlayerVehicle(playerid, model, Float:x, Float:y, Float:z, Float:rotation)
{
	new slot = -1;
	for (new i = 1; i < MAX_PLAYER_CARS + 1; i += 1)
	{
		if (PlayerVehicles[playerid][i][pCarOwned] == 0)
		{
			slot = i;
			break;
		}
	}
	if (slot == -1) return 0;
	new vehicleid = CreateVehicle(model, x, y, z, rotation, 1, 1, -1);
	if (vehicleid == INVALID_VEHICLE_ID) return -1;
    PlayerVehicles[playerid][slot][pCarModel] = model;
	PlayerVehicles[playerid][slot][pCarX] = x;
	PlayerVehicles[playerid][slot][pCarY] = y;
	PlayerVehicles[playerid][slot][pCarZ] = z;
	PlayerVehicles[playerid][slot][pCarRot] = rotation;
	PlayerVehicles[playerid][slot][pCarColor1] = 1;
	PlayerVehicles[playerid][slot][pCarColor2] = 1;
	PlayerVehicles[playerid][slot][pCarPaintjob] = -1;
	PlayerVehicles[playerid][slot][pCarMod1] = 0;
	PlayerVehicles[playerid][slot][pCarMod2] = 0;
	PlayerVehicles[playerid][slot][pCarMod3] = 0;
	PlayerVehicles[playerid][slot][pCarMod4] = 0;
	PlayerVehicles[playerid][slot][pCarMod5] = 0;
	PlayerVehicles[playerid][slot][pCarMod6] = 0;
	PlayerVehicles[playerid][slot][pCarMod7] = 0;
	PlayerVehicles[playerid][slot][pCarMod8] = 0;
	PlayerVehicles[playerid][slot][pCarMod9] = 0;
	PlayerVehicles[playerid][slot][pCarMod10] = 0;
	PlayerVehicles[playerid][slot][pCarMod11] = 0;
	PlayerVehicles[playerid][slot][pCarMod12] = 0;
	PlayerVehicles[playerid][slot][pCarMod13] = 0;
	PlayerVehicles[playerid][slot][pCarMod14] = 0;
	PlayerVehicles[playerid][slot][pCarMod15] = 0;
	PlayerVehicles[playerid][slot][pCarMod16] = 0;
	PlayerVehicles[playerid][slot][pCarMod17] = 0;
	PlayerVehicles[playerid][slot][pCarHasLock] = 0;
	PlayerVehicles[playerid][slot][pCarLocked] = 0;
	PlayerVehicles[playerid][slot][pCarTrunkCash] = 0;
	PlayerVehicles[playerid][slot][pCarTrunkGun1] = 0;
	PlayerVehicles[playerid][slot][pCarTrunkGun2] = 0;
	PlayerVehicles[playerid][slot][pCarTrunkGun3] = 0;
	PlayerVehicles[playerid][slot][pCarTrunkGun4] = 0;
	PlayerVehicles[playerid][slot][pCarTrunkAmmo1] = 0;
	PlayerVehicles[playerid][slot][pCarTrunkAmmo2] = 0;
	PlayerVehicles[playerid][slot][pCarTrunkAmmo3] = 0;
	PlayerVehicles[playerid][slot][pCarTrunkAmmo4] = 0;
	PlayerVehicles[playerid][slot][pCarSpawned] = 1;
	PlayerVehicles[playerid][slot][pCarOwned] = 1;
	PlayerVehicles[playerid][slot][pCarID] = vehicleid;

	new query[1536], query2[1536];
	format(query, sizeof(query), "INSERT INTO `VEHICLES` ");
	strcat(query, "(`Name`, `Model`, `X`, `Y`, `Z`, `Rot`, `Color1`, `Color2`, `Paintjob`, `Mod1`, `Mod2`, `Mod3`, ");
 	strcat(query, "`Mod4`, `Mod5`, `Mod6`, `Mod7`, `Mod8`, `Mod9`, `Mod10`, `Mod11`, `Mod12`, `Mod13`, ");
 	strcat(query, "`Mod14`, `Mod15`, `Mod16`, `Mod17`, `HasLock`, `Locked`, `TrunkCash`, ");
 	strcat(query, "`TrunkGun1`, `TrunkGun2`, `TrunkGun3`, `TrunkGun4`, `TrunkAmmo1`, `TrunkAmmo2`, `TrunkAmmo3`, ");
	strcat(query, "`TrunkAmmo4`, `Spawned`, `Owned`, `Slot`) ");

	format(query2, sizeof(query2), "VALUES('%s', '%d', '%f', '%f', '%f', '%f', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d')",
	    DB_Escape(PlayerName(playerid)),
        PlayerVehicles[playerid][slot][pCarModel],
		PlayerVehicles[playerid][slot][pCarX],
		PlayerVehicles[playerid][slot][pCarY],
		PlayerVehicles[playerid][slot][pCarZ],
		PlayerVehicles[playerid][slot][pCarRot],
		PlayerVehicles[playerid][slot][pCarColor1],
		PlayerVehicles[playerid][slot][pCarColor2],
		PlayerVehicles[playerid][slot][pCarPaintjob],
		PlayerVehicles[playerid][slot][pCarMod1],
		PlayerVehicles[playerid][slot][pCarMod2],
		PlayerVehicles[playerid][slot][pCarMod3],
		PlayerVehicles[playerid][slot][pCarMod4],
		PlayerVehicles[playerid][slot][pCarMod5],
		PlayerVehicles[playerid][slot][pCarMod6],
		PlayerVehicles[playerid][slot][pCarMod7],
		PlayerVehicles[playerid][slot][pCarMod8],
		PlayerVehicles[playerid][slot][pCarMod9],
		PlayerVehicles[playerid][slot][pCarMod10],
		PlayerVehicles[playerid][slot][pCarMod11],
		PlayerVehicles[playerid][slot][pCarMod12],
		PlayerVehicles[playerid][slot][pCarMod13],
		PlayerVehicles[playerid][slot][pCarMod14],
		PlayerVehicles[playerid][slot][pCarMod15],
		PlayerVehicles[playerid][slot][pCarMod16],
		PlayerVehicles[playerid][slot][pCarMod17],
		PlayerVehicles[playerid][slot][pCarHasLock],
		PlayerVehicles[playerid][slot][pCarLocked],
		PlayerVehicles[playerid][slot][pCarTrunkCash],
		PlayerVehicles[playerid][slot][pCarTrunkGun1],
		PlayerVehicles[playerid][slot][pCarTrunkGun2],
		PlayerVehicles[playerid][slot][pCarTrunkGun3],
		PlayerVehicles[playerid][slot][pCarTrunkGun4],
		PlayerVehicles[playerid][slot][pCarTrunkAmmo1],
		PlayerVehicles[playerid][slot][pCarTrunkAmmo2],
		PlayerVehicles[playerid][slot][pCarTrunkAmmo3],
		PlayerVehicles[playerid][slot][pCarTrunkAmmo4],
		PlayerVehicles[playerid][slot][pCarSpawned],
		PlayerVehicles[playerid][slot][pCarOwned],
		slot);
	strcat(query, query2);
	db_query(VehicleDatabase[playerid], query);
	SavePlayerVehicle(playerid, slot);
	return 1;
}

stock SavePlayerVehicle(playerid, slot)
{
	if (PlayerVehicles[playerid][slot][pCarOwned])
	{
        new query[1536], query2[1536];
 		format(query, sizeof(query), "UPDATE `VEHICLES` SET ");
		format(query2, sizeof(query2), "Name = '%s', Model = '%d', X = '%f', Y = '%f', Z = '%f', Rot = '%f', Color1 = '%d', Color2 = '%d', Paintjob = '%d', Mod1 = '%d', Mod2 = '%d', Mod3 = '%d', ",
		    DB_Escape(PlayerName(playerid)),
		    PlayerVehicles[playerid][slot][pCarModel],
		    PlayerVehicles[playerid][slot][pCarX],
		    PlayerVehicles[playerid][slot][pCarY],
		    PlayerVehicles[playerid][slot][pCarZ],
		    PlayerVehicles[playerid][slot][pCarRot],
		    PlayerVehicles[playerid][slot][pCarColor1],
		    PlayerVehicles[playerid][slot][pCarColor2],
		    PlayerVehicles[playerid][slot][pCarPaintjob],
		    PlayerVehicles[playerid][slot][pCarMod1],
		    PlayerVehicles[playerid][slot][pCarMod2],
		    PlayerVehicles[playerid][slot][pCarMod3]);
		strcat(query, query2);

		format(query2, sizeof(query2), "Mod4 = '%d', Mod5 = '%d', Mod6 = '%d', Mod7 = '%d', Mod8 = '%d', Mod9 = '%d', Mod10 = '%d', Mod11 = '%d', Mod12 = '%d', Mod13 = '%d', Mod14 = '%d', Mod15 = '%d', ",
            PlayerVehicles[playerid][slot][pCarMod4],
		    PlayerVehicles[playerid][slot][pCarMod5],
		    PlayerVehicles[playerid][slot][pCarMod6],
		    PlayerVehicles[playerid][slot][pCarMod7],
		    PlayerVehicles[playerid][slot][pCarMod8],
		    PlayerVehicles[playerid][slot][pCarMod9],
		    PlayerVehicles[playerid][slot][pCarMod10],
		    PlayerVehicles[playerid][slot][pCarMod11],
		    PlayerVehicles[playerid][slot][pCarMod12],
		    PlayerVehicles[playerid][slot][pCarMod13],
		    PlayerVehicles[playerid][slot][pCarMod14],
		    PlayerVehicles[playerid][slot][pCarMod15]);
        strcat(query, query2);

		format(query2, sizeof(query2), "Mod16 = '%d', Mod17 = '%d', HasLock = '%d', Locked = '%d', TrunkCash = '%d', TrunkGun1 = '%d', TrunkGun2 = '%d', TrunkGun3 = '%d', TrunkGun4 = '%d', TrunkAmmo1 = '%d', TrunkAmmo2 = '%d', TrunkAmmo3 = '%d', ",
			PlayerVehicles[playerid][slot][pCarMod16],
   			PlayerVehicles[playerid][slot][pCarMod17],
		    PlayerVehicles[playerid][slot][pCarHasLock],
		    PlayerVehicles[playerid][slot][pCarLocked],
		    PlayerVehicles[playerid][slot][pCarTrunkCash],
		    PlayerVehicles[playerid][slot][pCarTrunkGun1],
		    PlayerVehicles[playerid][slot][pCarTrunkGun2],
		    PlayerVehicles[playerid][slot][pCarTrunkGun3],
		    PlayerVehicles[playerid][slot][pCarTrunkGun4],
		    PlayerVehicles[playerid][slot][pCarTrunkAmmo1],
		    PlayerVehicles[playerid][slot][pCarTrunkAmmo2],
		    PlayerVehicles[playerid][slot][pCarTrunkAmmo3]);
		strcat(query, query2);

		format(query2, sizeof(query2), "TrunkAmmo4 = '%d', Spawned = '%d', Owned = '%d', Slot = '%d' WHERE Name = '%s' AND Slot = '%d'",
			PlayerVehicles[playerid][slot][pCarTrunkAmmo4],
		    PlayerVehicles[playerid][slot][pCarSpawned],
		    PlayerVehicles[playerid][slot][pCarOwned],
		    slot,
			DB_Escape(PlayerName(playerid)),
			slot);
	    strcat(query, query2);
		db_query(VehicleDatabase[playerid], query);
	}
	return 1;
}

stock LoadPlayerVehicles(playerid)
{
	new DBResult:result;
	new query[192], field[64];
	for (new i = 1; i < MAX_PLAYER_CARS + 1; i += 1)
	{
		format(query, sizeof(query), "SELECT * FROM `VEHICLES` WHERE `Name` = '%s' COLLATE NOCASE AND `Slot` = '%d'", PlayerName(playerid), i);
		result = db_query(VehicleDatabase[playerid], query);
		if (db_num_rows(result))
		{
            db_get_field_assoc(result, "Model", field, sizeof(field)); PlayerVehicles[playerid][i][pCarModel] = strval(field);
			db_get_field_assoc(result, "X", field, sizeof(field)); PlayerVehicles[playerid][i][pCarX] = floatstr(field);
			db_get_field_assoc(result, "Y", field, sizeof(field)); PlayerVehicles[playerid][i][pCarY] = floatstr(field);
			db_get_field_assoc(result, "Z", field, sizeof(field)); PlayerVehicles[playerid][i][pCarZ] = floatstr(field);
			db_get_field_assoc(result, "Rot", field, sizeof(field)); PlayerVehicles[playerid][i][pCarRot] = floatstr(field);
			db_get_field_assoc(result, "Color1", field, sizeof(field)); PlayerVehicles[playerid][i][pCarColor1] = strval(field);
			db_get_field_assoc(result, "Color2", field, sizeof(field)); PlayerVehicles[playerid][i][pCarColor2] = strval(field);
			db_get_field_assoc(result, "Paintjob", field, sizeof(field)); PlayerVehicles[playerid][i][pCarPaintjob] = strval(field);
			db_get_field_assoc(result, "Mod1", field, sizeof(field)); PlayerVehicles[playerid][i][pCarMod1] = strval(field);
			db_get_field_assoc(result, "Mod2", field, sizeof(field)); PlayerVehicles[playerid][i][pCarMod2] = strval(field);
			db_get_field_assoc(result, "Mod3", field, sizeof(field)); PlayerVehicles[playerid][i][pCarMod3] = strval(field);
			db_get_field_assoc(result, "Mod4", field, sizeof(field)); PlayerVehicles[playerid][i][pCarMod4] = strval(field);
			db_get_field_assoc(result, "Mod5", field, sizeof(field)); PlayerVehicles[playerid][i][pCarMod5] = strval(field);
			db_get_field_assoc(result, "Mod6", field, sizeof(field)); PlayerVehicles[playerid][i][pCarMod6] = strval(field);
			db_get_field_assoc(result, "Mod7", field, sizeof(field)); PlayerVehicles[playerid][i][pCarMod7] = strval(field);
			db_get_field_assoc(result, "Mod8", field, sizeof(field)); PlayerVehicles[playerid][i][pCarMod8] = strval(field);
			db_get_field_assoc(result, "Mod9", field, sizeof(field)); PlayerVehicles[playerid][i][pCarMod9] = strval(field);
			db_get_field_assoc(result, "Mod10", field, sizeof(field)); PlayerVehicles[playerid][i][pCarMod10] = strval(field);
			db_get_field_assoc(result, "Mod11", field, sizeof(field)); PlayerVehicles[playerid][i][pCarMod11] = strval(field);
			db_get_field_assoc(result, "Mod12", field, sizeof(field)); PlayerVehicles[playerid][i][pCarMod12] = strval(field);
			db_get_field_assoc(result, "Mod13", field, sizeof(field)); PlayerVehicles[playerid][i][pCarMod13] = strval(field);
			db_get_field_assoc(result, "Mod14", field, sizeof(field)); PlayerVehicles[playerid][i][pCarMod14] = strval(field);
			db_get_field_assoc(result, "Mod15", field, sizeof(field)); PlayerVehicles[playerid][i][pCarMod15] = strval(field);
			db_get_field_assoc(result, "Mod16", field, sizeof(field)); PlayerVehicles[playerid][i][pCarMod16] = strval(field);
			db_get_field_assoc(result, "Mod17", field, sizeof(field)); PlayerVehicles[playerid][i][pCarMod17] = strval(field);
			db_get_field_assoc(result, "HasLock", field, sizeof(field)); PlayerVehicles[playerid][i][pCarHasLock] = strval(field);
			db_get_field_assoc(result, "Locked", field, sizeof(field)); PlayerVehicles[playerid][i][pCarLocked] = strval(field);
			db_get_field_assoc(result, "TrunkCash", field, sizeof(field)); PlayerVehicles[playerid][i][pCarTrunkCash] = strval(field);
			db_get_field_assoc(result, "TrunkGun1", field, sizeof(field)); PlayerVehicles[playerid][i][pCarTrunkGun1] = strval(field);
			db_get_field_assoc(result, "TrunkGun2", field, sizeof(field)); PlayerVehicles[playerid][i][pCarTrunkGun2] = strval(field);
			db_get_field_assoc(result, "TrunkGun3", field, sizeof(field)); PlayerVehicles[playerid][i][pCarTrunkGun3] = strval(field);
			db_get_field_assoc(result, "TrunkGun4", field, sizeof(field)); PlayerVehicles[playerid][i][pCarTrunkGun4] = strval(field);
			db_get_field_assoc(result, "TrunkAmmo1", field, sizeof(field)); PlayerVehicles[playerid][i][pCarTrunkAmmo1] = strval(field);
			db_get_field_assoc(result, "TrunkAmmo2", field, sizeof(field)); PlayerVehicles[playerid][i][pCarTrunkAmmo2] = strval(field);
			db_get_field_assoc(result, "TrunkAmmo3", field, sizeof(field)); PlayerVehicles[playerid][i][pCarTrunkAmmo3] = strval(field);
			db_get_field_assoc(result, "TrunkAmmo4", field, sizeof(field)); PlayerVehicles[playerid][i][pCarTrunkAmmo4] = strval(field);
			db_get_field_assoc(result, "Spawned", field, sizeof(field)); PlayerVehicles[playerid][i][pCarSpawned] = strval(field);
			db_get_field_assoc(result, "Owned", field, sizeof(field)); PlayerVehicles[playerid][i][pCarOwned] = strval(field);
		}
		if (PlayerVehicles[playerid][i][pCarOwned])
		{
		    if (PlayerVehicles[playerid][i][pCarSpawned])
		    {
		    	PlayerVehicles[playerid][i][pCarID] = CreateVehicle(PlayerVehicles[playerid][i][pCarModel], PlayerVehicles[playerid][i][pCarX], PlayerVehicles[playerid][i][pCarY], PlayerVehicles[playerid][i][pCarZ], PlayerVehicles[playerid][i][pCarRot], PlayerVehicles[playerid][i][pCarColor1], PlayerVehicles[playerid][i][pCarColor2], -1);
		    	ModifyVehicle(playerid, i);
			}
		}
		db_free_result(result);
	}
	return 1;
}

stock SaveDealershipVehicles()
{
	new query[512], query2[512];
	for (new i = 1; i < MAX_VEHICLES; i += 1)
	{
		if (!DealershipVehicles[i][vForSale]) continue;

		format(query, sizeof(query), "UPDATE `DEALERCARS` SET ");
		format(query2, sizeof(query2), "vID = '%d', vModel = '%d', vX = '%f', vY = '%f', vZ = '%f', vRot = '%f', vForSale = '%d', vPrice = '%d' WHERE `vID` = '%d'",
		    DealershipVehicles[i][vSQL_ID],
			DealershipVehicles[i][vModel],
			DealershipVehicles[i][vX],
			DealershipVehicles[i][vY],
			DealershipVehicles[i][vZ],
			DealershipVehicles[i][vRot],
			DealershipVehicles[i][vForSale],
			DealershipVehicles[i][vPrice],
			DealershipVehicles[i][vSQL_ID]);
		    
		strcat(query, query2);
		db_query(DealerVehicleDatabase, query);
	}
	return 1;
}

stock LoadDealershipVehicles()
{
	new DBResult:result;
    new query[128], field[64], string[256];
	for (new i = 1; i < MAX_VEHICLES; i += 1)
	{
	    format(query, sizeof(query), "SELECT * FROM `DEALERCARS` WHERE vID = '%d'", i);
		result = db_query(DealerVehicleDatabase, query);
		if (db_num_rows(result))
		{
		    new model, Float:x, Float:y, Float:z, Float:rot, forsale, price, vehicleid;
			db_get_field_assoc(result, "vModel", field, sizeof(field)); model = strval(field);
			db_get_field_assoc(result, "vX", field, sizeof(field)); x = strval(field);
			db_get_field_assoc(result, "vY", field, sizeof(field)); y = strval(field);
			db_get_field_assoc(result, "vZ", field, sizeof(field)); z = strval(field);
			db_get_field_assoc(result, "vRot", field, sizeof(field)); rot = strval(field);
			db_get_field_assoc(result, "vForSale", field, sizeof(field)); forsale = strval(field);
			db_get_field_assoc(result, "vPrice", field, sizeof(field)); price = strval(field);
			vehicleid = CreateVehicle(model, x, y, z, rot, 1, 1, 5);

			DealershipVehicles[vehicleid][vModel] = model;
			DealershipVehicles[vehicleid][vX] = x;
			DealershipVehicles[vehicleid][vY] = y;
			DealershipVehicles[vehicleid][vZ] = z;
			DealershipVehicles[vehicleid][vRot] = rot;
			DealershipVehicles[vehicleid][vForSale] = forsale;
			DealershipVehicles[vehicleid][vPrice] = price;
			DealershipVehicles[vehicleid][vID] = vehicleid;
			format(string, sizeof(string), "This {FFFFFF}%s {F5DEB3}is for sale.\nThe cost of this vehicle is {FFFFFF}$%d.\n{F5DEB3}For more information, enter the vehicle.", GetVehicleName(vehicleid), price);
			DealershipVehicles[vehicleid][vLabel] = Create3DTextLabel(string, YELLOW2, x, y, z, 10.0, 0);
			DealershipVehicles[vehicleid][vSQL_ID] = dealershipCars + 1;
			dealershipCars += 1;
		}
		db_free_result(result);
	}
	return 1;
}

stock ModifyVehicle(playerid, slot)
{
    if (!PlayerVehicles[playerid][slot][pCarOwned]) return 1;
    if (!PlayerVehicles[playerid][slot][pCarSpawned]) return 1;
    new vehicleid = PlayerVehicles[playerid][slot][pCarID];
	new comp1 = PlayerVehicles[playerid][slot][pCarMod1];
	new comp2 = PlayerVehicles[playerid][slot][pCarMod2];
	new comp3 = PlayerVehicles[playerid][slot][pCarMod3];
	new comp4 = PlayerVehicles[playerid][slot][pCarMod4];
	new comp5 = PlayerVehicles[playerid][slot][pCarMod5];
	new comp6 = PlayerVehicles[playerid][slot][pCarMod6];
	new comp7 = PlayerVehicles[playerid][slot][pCarMod7];
	new comp8 = PlayerVehicles[playerid][slot][pCarMod8];
	new comp9 = PlayerVehicles[playerid][slot][pCarMod9];
	new comp10 = PlayerVehicles[playerid][slot][pCarMod10];
	new comp11 = PlayerVehicles[playerid][slot][pCarMod11];
	new comp12 = PlayerVehicles[playerid][slot][pCarMod12];
	new comp13 = PlayerVehicles[playerid][slot][pCarMod13];
	new comp14 = PlayerVehicles[playerid][slot][pCarMod14];
	new comp15 = PlayerVehicles[playerid][slot][pCarMod15];
	new comp16 = PlayerVehicles[playerid][slot][pCarMod16];
	new comp17 = PlayerVehicles[playerid][slot][pCarMod17];
	new color1 = PlayerVehicles[playerid][slot][pCarColor1];
	new color2 = PlayerVehicles[playerid][slot][pCarColor2];
	new paintjob = PlayerVehicles[playerid][slot][pCarPaintjob];

	if (comp1 != 0) AddVehicleComponent(vehicleid, comp1);
	if (comp2 != 0) AddVehicleComponent(vehicleid, comp2);
	if (comp3 != 0) AddVehicleComponent(vehicleid, comp3);
	if (comp4 != 0) AddVehicleComponent(vehicleid, comp4);
	if (comp5 != 0) AddVehicleComponent(vehicleid, comp5);
	if (comp6 != 0) AddVehicleComponent(vehicleid, comp6);
	if (comp7 != 0) AddVehicleComponent(vehicleid, comp7);
	if (comp8 != 0) AddVehicleComponent(vehicleid, comp8);
	if (comp9 != 0) AddVehicleComponent(vehicleid, comp9);
	if (comp10 != 0) AddVehicleComponent(vehicleid, comp10);
	if (comp11 != 0) AddVehicleComponent(vehicleid, comp11);
	if (comp12 != 0) AddVehicleComponent(vehicleid, comp12);
	if (comp13 != 0) AddVehicleComponent(vehicleid, comp13);
	if (comp14 != 0) AddVehicleComponent(vehicleid, comp14);
	if (comp15 != 0) AddVehicleComponent(vehicleid, comp15);
	if (comp16 != 0) AddVehicleComponent(vehicleid, comp16);
	if (comp17 != 0) AddVehicleComponent(vehicleid, comp17);
	ChangeVehicleColor(vehicleid, color1, color2);
	if (paintjob != -1) ChangeVehiclePaintjob(vehicleid, paintjob);

	switch (PlayerVehicles[playerid][slot][pCarLocked])
	{
	    case 0: UnlockVehicle(PlayerVehicles[playerid][slot][pCarID]);
	    case 1: LockVehicle(PlayerVehicles[playerid][slot][pCarID]);
	}
	return 1;
}
stock PlayerOwnsVehicle(playerid, vehicleid)
{
    for (new i = 1; i < MAX_PLAYER_CARS + 1; i += 1)
    {
    	if (PlayerVehicles[playerid][i][pCarID] == vehicleid && PlayerVehicles[playerid][i][pCarSpawned]) return 1;
	}
	return 0;
}

stock GetPlayerVehicleSlot(playerid)
{
	if (IsPlayerInAnyVehicle(playerid))
	{
	    for (new i = 1; i < MAX_PLAYER_CARS + 1; i += 1)
	    {
	        if (PlayerVehicles[playerid][i][pCarID] == GetPlayerVehicleID(playerid) && PlayerVehicles[playerid][i][pCarSpawned])
	        {
	            return i;
			}
		}
	}
	return 0;
}

stock GetPlayerVehicleAmount(playerid)
{
	new iCars;
	for (new i = 1; i < MAX_PLAYER_CARS + 1; i += 1)
	{
	    if (PlayerVehicles[playerid][i][pCarOwned]) ++iCars;
	}
	return iCars;
}

stock ParkVehicle(playerid, slot)
{
	if (IsPlayerInVehicle(playerid, PlayerVehicles[playerid][slot][pCarID]))
	{
		if (GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
		{
		    new Float:x, Float:y, Float:z, Float:angle;
		    GetVehiclePos(GetPlayerVehicleID(playerid), x, y, z);
		    GetVehicleZAngle(GetPlayerVehicleID(playerid), angle);
			PlayerVehicles[playerid][slot][pCarX] = x;
			PlayerVehicles[playerid][slot][pCarY] = y;
			PlayerVehicles[playerid][slot][pCarZ] = z;
			PlayerVehicles[playerid][slot][pCarRot] = angle;
			foreach(Player, i)
			{
			    if (i == playerid) continue;
			    if (IsPlayerInVehicle(i, PlayerVehicles[playerid][slot][pCarID]))
			    {
			        SetPVarInt(i, "CarID", PlayerVehicles[playerid][slot][pCarID]);
			        SetPVarInt(i, "CarSeat", GetPlayerVehicleSeat(playerid));
				}
			}
			VehicleLocked[GetPlayerVehicleID(playerid)] = 0;
			UnlockVehicle(GetPlayerVehicleID(playerid));
			DestroyVehicle(GetPlayerVehicleID(playerid));
			PlayerVehicles[playerid][slot][pCarID] = CreateVehicle(PlayerVehicles[playerid][slot][pCarModel], x, y, z, angle, PlayerVehicles[playerid][slot][pCarColor1], PlayerVehicles[playerid][slot][pCarColor2], -1);
			PutPlayerInVehicle(playerid, PlayerVehicles[playerid][slot][pCarID], 0);
			foreach(Player, i)
			{
			    if (GetPVarInt(i, "CarID") == PlayerVehicles[playerid][slot][pCarID])
			    {
			        PutPlayerInVehicle(i, PlayerVehicles[playerid][slot][pCarID], GetPVarInt(i, "CarSeat"));
			        DeletePVar(i, "CarID");
			        DeletePVar(i, "CarSeat");
			    }
			}
			ModifyVehicle(playerid, slot);
			return 1;
		}
		return 0;
	}
	return -1;
}
stock VehicleDisconnect(playerid)
{
    for (new i = 1; i < MAX_PLAYER_CARS + 1; i += 1)
	{
	    if (PlayerVehicles[playerid][i][pCarOwned])
	    {
			SavePlayerVehicle(playerid, i);
			if (PlayerVehicles[playerid][i][pCarSpawned]) DestroyVehicle(PlayerVehicles[playerid][i][pCarID]);
		}
	}
	db_close(VehicleDatabase[playerid]);
	return 1;
}

Link to comment
Share on other sites

1 answer to this question

Recommended Posts

Guest
This topic is now closed to further replies.
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. For more details you can also review our Terms of Use and Privacy Policy.