السلام عليكم
 
	بدي حد يوضحلي الخطاء في كلاينت
 
local Font1 = guiCreateFont( "font.ttf", 7 )
setTimer ( function ()
local theCol = getElementData(root, "BlockExportCol")
	
function isInColExport ()
	if isElement(theCol) and isElementWithinColShape(localPlayer,theCol) then
		return true else return false
	end
end
function ClientExplosionCFunction()
 if isInColExport ()  then
  cancelEvent ()
 end
end
addEventHandler("onClientExplosion", root, ClientExplosionCFunction)
end , 1000, 1 )
local screX, screY = guiGetScreenSize()
local screenW, screenH = guiGetScreenSize()
Window_VS = guiCreateWindow((screenW - 501) / 2, (screenH - 593) / 2, 501, 593, "# - | Control Vehicle | - #", false)
guiWindowSetSizable(Window_VS, false)guiSetProperty(Window_VS, "CaptionColour", "FFFE0000")
Grid_VS = guiCreateGridList(9, 28, 482, 253, false, Window_VS)
guiGridListAddColumn(Grid_VS, "#Vehicle", 0.3)
guiGridListAddColumn(Grid_VS, "$Price", 0.3)
guiGridListAddColumn(Grid_VS, "#Health", 0.3)
asdasd = guiCreateLabel(0, 297, 495, 25, "________________________________________________________________________", false, Window_VS)guiLabelSetColor(asdasd, 255, 0, 0)
asdas = guiCreateLabel(9, 326, 129, 24, "# Options Vehicle", false, Window_VS)guiSetFont(asdas, "default-bold-small")
Button_VS_sn = guiCreateButton(9, 355, 169, 35, "* Spawn Vehicle", false, Window_VS)guiSetProperty(Button_VS_sn, "NormalTextColour", "FFFE0000")
Button_VS_dy = guiCreateButton(322, 355, 169, 35, "* Destroy Vehicle", false, Window_VS)guiSetProperty(Button_VS_dy, "NormalTextColour", "FFFE0000")
Button_VS_Fix = guiCreateButton(322, 415, 169, 35, "* Repair Vehicle", false, Window_VS)guiSetProperty(Button_VS_Fix, "NormalTextColour", "FFFE0000")
Button_VS_lk = guiCreateButton(322, 472, 169, 35, "*Lock/Unlock Vehicle", false, Window_VS)guiSetProperty(Button_VS_lk, "NormalTextColour", "FFFE0000")
Button_VS_Warp = guiCreateButton(10, 415, 169, 35, "* Warp Vehicle", false, Window_VS)guiSetProperty(Button_VS_Warp, "NormalTextColour", "FFFE0000")
Button_VS_bp = guiCreateButton(9, 472, 169, 35, "* Bilip / unBilip", false, Window_VS)guiSetProperty(Button_VS_bp, "NormalTextColour", "FFFE0000")
sadasd = guiCreateLabel(6, 517, 495, 25, "________________________________________________________________________", false, Window_VS)guiLabelSetColor(sadasd, 255, 0, 0)
Button_VS_sl = guiCreateButton(9, 548, 169, 35, "* Sell Vehicle", false, Window_VS)guiSetProperty(Button_VS_sl, "NormalTextColour", "FFFE0000")
Button_VS_close = guiCreateButton(322, 548, 169, 35, "* Close Window", false, Window_VS) guiSetProperty(Button_VS_close, "NormalTextColour", "FFFE0000")  
Window_CHK = guiCreateWindow(screX/2-155,screY/2-60,310,120,"!!! WARNING !!!",false)
guiSetVisible(Window_CHK, false)
guiSetProperty(Window_CHK, "AlwaysOnTop", "true")
guiWindowSetSizable(Window_CHK, false)
Label_CHK = guiCreateLabel(21,28,266,36,"",false,Window_CHK)
guiLabelSetColor(Label_CHK, 255, 255, 0)
guiLabelSetHorizontalAlign(Label_CHK,"center",true)
Button_CHK_Y = guiCreateButton(17,73,129,36,"Yes",false,Window_CHK)
Button_CHK_N = guiCreateButton(161,73,129,36,"No",false,Window_CHK)
--------------------------------------------
guiSetFont(Window_VS, Font1)
guiSetFont(Grid_VS, Font1)
guiSetVisible(Window_VS, false)
guiSetFont(Button_VS_sn, Font1)
guiSetFont(Button_VS_dy, Font1)
guiSetFont(Button_VS_lk, Font1)
guiSetFont(Button_VS_bp, Font1)
guiSetFont(Button_VS_Fix, Font1)
guiSetFont(Button_VS_Warp, Font1)
guiSetFont(Button_VS_sl, Font1)
guiSetFont(Button_VS_close, Font1)
guiSetFont(Window_CHK, Font1)
guiSetFont(Label_CHK, Font1)
guiSetFont(Button_CHK_Y, Font1)
guiSetFont(Button_CHK_N, Font1)
-----------------
function updateGridList()
	local data = getElementData(localPlayer, "VehicleInfo")
	if data then
		local rw, cl = guiGridListGetSelectedItem(Grid_VS)
		guiGridListClear(Grid_VS)
		for i, data in ipairs (data) do
			local carName = getVehicleNameFromModel(data["Model"])
			local ID = data["ID"]
			local Cost = data["Cost"]
			local HP = math.floor(data["HP"])
			local PreCost = math.ceil(Cost*.9*HP/100/10)
			local row = guiGridListAddRow(Grid_VS)
			guiGridListSetItemText(Grid_VS, row, 1, carName, false, true)
			guiGridListSetItemData(Grid_VS, row, 1, ID)
			guiGridListSetItemText(Grid_VS, row, 2, "$"..convertNumber(PreCost).."", false, true)
			guiGridListSetItemData(Grid_VS, row, 2, PreCost, false, true)
			guiGridListSetItemText(Grid_VS, row, 3, HP.." HP", false, true)
		end
		guiGridListSetSelectedItem(Grid_VS, rw, cl)
	end
end
outputChatBox("Press F3 For [Vehicle System]", 255, 125, 0)
bindKey("F3", "down",
function()
if getElementInterior(localPlayer) == 0 and getElementDimension(localPlayer) == 0 then
             if not isInColExport () then
                guiSetVisible(Window_VS, not guiGetVisible(Window_VS))
	guiSetVisible (Window_CHK, false)
	showCursor(guiGetVisible(Window_VS))
            end
end
end)
triggerServerEvent("onOpenGui", localPlayer)
addEventHandler("onClientElementDataChange", root,
function(dd)
	if getElementType(source) == "player" and source == localPlayer and dd == "VehicleInfo" then
		local data = getElementData(source, dd)
		if data then
			updateGridList()
		end
	end
end)
function WINDOW_CLICK_VEHICLE (button, state, absoluteX, absoluteY)
	local id = guiGridListGetSelectedItem(Grid_VS)
	local ID = guiGridListGetItemData(Grid_VS, id, 1)
	if source == Button_VS_close then
		guiSetVisible(Window_VS, false)
		showCursor(false)
	end
	if (source == Grid_VS) then
		if id == -1 and idd then
			guiGridListSetSelectedItem(Grid_VS, idd, 1)
			return false
		else
			idd = guiGridListGetSelectedItem(Grid_VS)
		end
	elseif id == -1 then
	elseif (source == Button_VS_sn) then
	if not isInColExport () then
		triggerServerEvent("SpawnMyVehicle", localPlayer, ID)
                end
	elseif (source == Button_VS_dy) then 
		triggerServerEvent("DestroyMyVehicle", localPlayer, ID)
	elseif (source == Button_VS_lt) then 
		triggerServerEvent("LightsMyVehicle", localPlayer, ID)
	elseif (source == Button_VS_bp) then 
		triggerServerEvent("BlipMyVehicle", localPlayer, ID)
	elseif (source == Button_VS_lk) then 
		triggerServerEvent("LockMyVehicle", localPlayer, ID)
	elseif (source == Button_VS_sl) then 
		guiSetVisible(Window_CHK, true)
		local carName = guiGridListGetItemText(Grid_VS, guiGridListGetSelectedItem(Grid_VS), 1)
		local carprice = guiGridListGetItemData(Grid_VS, guiGridListGetSelectedItem(Grid_VS), 2)
		guiSetText(Label_CHK, 'Are you sure you want to sell this Vehicle "'..carName..'" for $'..convertNumber(carprice))
	elseif source == Button_CHK_Y then
		triggerServerEvent("SellMyVehicle", localPlayer, ID)
		guiSetVisible(Window_VS, false)
		guiSetVisible(Window_CHK, false)
		showCursor(false)
	elseif source == Button_CHK_N then
		guiSetVisible (Window_CHK, false)
	elseif source == Button_VS_Spc then
      if getElementInterior(localPlayer) == 0 then
		SpecVehicle(ID)
end
	elseif source == Button_VS_Fix then
		triggerServerEvent("FixMyVehicle", localPlayer, ID)
	elseif source == Button_VS_Warp then
	       if not isInColExport () then
		triggerServerEvent("WarpMyVehicle", localPlayer, ID)
                      end
	end
end
addEventHandler("onClientGUIClick", resourceRoot, WINDOW_CLICK_VEHICLE)
function SpecVehicle(id)
	if spc then 
		removeEventHandler("onClientPreRender", root, Sp)
		setCameraTarget(localPlayer)
		if isTimer(freezTimer) then killTimer(freezTimer) end
		freezTimer = setTimer(function() setElementFrozen(localPlayer, false) end, 2500, 1)
		spc = false
	return end
	for i, vehicle in ipairs(getElementsByType("vehicle")) do
		if getElementData(vehicle, "Owner") == localPlayer and getElementData(vehicle, "ID") == id then
			cVeh = vehicle
			spc = true
			addEventHandler("onClientPreRender", root, Sp)
			guiSetVisible(Window_VS, false)
			showCursor(false)
			break
		  end
                        
	end
end
function Sp()
	if isElement(cVeh) then
		local x, y, z = getElementPosition(cVeh)
		setElementFrozen(localPlayer, true)
		setCameraMatrix(x, y-1, z+15, x, y, z)
	else
		removeEventHandler("onClientPreRender", root, Sp)
		setCameraTarget(localPlayer)
		if isTimer(freezTimer) then killTimer(freezTimer) end
		freezTimer = setTimer(function() setElementFrozen(localPlayer, false) end, 2500, 1)
		spc = false
      end
end
ShopMarkersTable = {}	
local ShopTable = {
	[1] = {ID = {{491, 1441400}
		,{540, 1436800}
		,{401, 1430000}
		,{546, 1527700}
		,{505, 1414000}
		,{500, 1402600}
		,{463, 1659300}
		,{492, 1459300}
		,{547, 1429600}
		,{586, 1629600}
		,{467, 1354300}
		,{479, 1244800}
		,{404, 1059900}
		,{410, 946200}
		,{471, 593600}
		,{418, 300000}
		}, vPosX = 2134, vPosY = -1170, vPosZ = 28.15, PosX = 2133, PosY = -1149, PosZ = 23.4, CamX = 2134.1, CamY = -1160, CamZ = 35, lookAtX = 2133.3, lookAtY = -1168, lookAtZ = 28},
	[2] = {ID = {{516, 1819800}
		,{458, 1815300}
		,{580, 1801600}
		,{421, 1801600}
		,{527, 1667300}
		,{581, 2151400}
		,{409, 1744500}
		,{585, 1696600}
		,{474, 1573800}
		,{419, 1539500}
		,{436, 1539500}
		,{545, 1530400}
		,{466, 1616700}
		,{529, 1580200}
		,{550, 1473400}
		,{468, 1966500}
		}, vPosX = 552, vPosY = -1288, vPosZ = 18, PosX = 562, PosY = -1270, PosZ = 16, CamX = 552, CamY = -1275.82, CamZ = 21.61, lookAtX = 552, lookAtY = -1276.77, lookAtZ = 21.29},
	[3] = {ID = {{533, 1973100}
		,{555, 1943400}
		,{507, 2041200}
		,{521, 2427500}
		,{461, 2427500}
		,{566, 1995500}
		,{551, 1972700}
		,{400, 1970400}
		,{558, 1863600}
		,{549, 1824800}
		,{579, 1902000}
		,{576, 1797400}
		,{526, 1781400}
		,{517, 1772300}
		,{575, 1763200}
		,{561, 1822100}
		}, vPosX = 1942.5, vPosY = 2052, vPosZ = 11, PosX = 1946, PosY = 2068, PosZ = 10, CamX = 1930.36, CamY = 2052.78, CamZ = 14.71, lookAtX = 1931.36, lookAtY = 2052.78, lookAtZ = 14.43},
	[4] = {ID = {{536, 2201300}
		,{567, 2258000}
		,{602, 2135100}
		,{534, 2128300}
		,{426, 2214600}
		,{439, 2114600}
		,{412, 2114600}
		,{587, 2087200}
		,{565, 2084900}
		,{589, 2082600}
		,{542, 2071200}
		,{496, 2043900}
		,{535, 2043900}
		,{405, 2127900}
		,{445, 2107300}
		,{518, 1980000}
		}, vPosX = -1950, vPosY = 266, vPosZ = 36.2, PosX = -1954, PosY = 299, PosZ = 34, CamX = -1960.18, CamY = 266.06, CamZ = 37.94, lookAtX = -1959.2, lookAtY = 266.06, lookAtZ = 37.73},
	[5] = {ID = {{411, 3000000}
		,{429, 2765000}
		,{541, 2746700}
		,{451, 2739900}
		,{415, 2593800}
		,{480, 2536800}
		,{402, 2525400}
		,{477, 2484300}
		,{562, 2456900}
		,{506, 2365600}
		,{522, 2856500}
		,{559, 2354200}
		,{560, 2358400}
		,{603, 2253800}
		,{475, 2215000}
		}, vPosX = -1660, vPosY = 1213, vPosZ = 7, PosX = -1634, PosY = 1199, PosZ = 6, CamX = -1648.9, CamY = 1212.27, CamZ = 10.16, lookAtX = -1649.88, lookAtY = 1212.27, lookAtZ = 9.94},
	[6] = {ID = {{411, 3000000}
		,{429, 2765000}
		,{541, 2746700}
		,{451, 2739900}
		,{415, 2593800}
		,{480, 2536800}
		,{402, 2525400}
		,{477, 2484300}
		,{562, 2456900}
		,{506, 2365600}
		,{522, 2856500}
		,{559, 2354200}
		,{560, 2358400}
		,{603, 2253800}
		,{475, 2215000}
		}, vPosX = 1037.81201, vPosY = -333.06729, vPosZ = 75, PosX = 1039.82397, PosY = -306.68729, PosZ = 73.99308-1, CamX = 1029, CamY = -333, CamZ = 78, lookAtX = 1119, lookAtY = -333, lookAtZ = 34}
}
 local Url = dxCreateTexture("icon.png")
 --[[
 vPosX = 1037.81201, vPosY = -333.06729, vPosZ = 75, (((((((((((PosX = 1039.82397 PosY = -306.68729, PosZ = 73.99308-1)))))))))),, CamX = 1029, CamY = -333, CamZ = 78, lookAtX = 1119, lookAtY = -333, lookAtZ = 34}
 عشان تعدل احداثيات الماركر عدل الاحداثيات الي داخل القوس في اخر سطر بالجدول كذا
 PosX = احداثيات الاكس للماركر
 PosY = احداثيات الواي للماركر
 PosZ = احداثيات الزد للماركر
 --]]
addEventHandler( "onClientRender", root, function (  )
for i, M in ipairs(ShopTable) do
dxDrawMaterialLine3D(M["PosX"], M["PosY"], M["PosZ"]+2.5, M["PosX"], M["PosY"], M["PosZ"]+1.5, Url, 1.2, tocolor(255,255,255,255))
end
end )
VehicleShop_Window = guiCreateWindow(898, 330, 468, 438, "# - | Shop Vehicle | - #", false)
guiWindowSetSizable(VehicleShop_Window, false)
guiSetProperty(VehicleShop_Window, "CaptionColour", "FFFF0000")
asdasd = guiCreateLabel(4, 28, 547, 18, "___________________________________________________________________________________", false, VehicleShop_Window)
guiLabelSetColor(asdasd, 255, 0, 0)
carGrid = guiCreateGridList(9, 56, 532, 280, false, VehicleShop_Window)
guiGridListAddColumn(carGrid, "# ID", 0.3)
guiGridListAddColumn(carGrid, "# VehicleName", 0.3)
guiGridListAddColumn(carGrid, "# Price $", 0.3)
asda = guiCreateLabel(4, 346, 547, 18, "___________________________________________________________________________________", false, VehicleShop_Window)
guiLabelSetColor(asda, 255, 0, 0)
carButton = guiCreateButton(9, 370, 133, 39, "* Buy Vehicle", false, VehicleShop_Window)
guiSetProperty(carButton, "NormalTextColour", "FFFF0000")
closeButton = guiCreateButton(306, 370, 133, 39, "* Close", false, VehicleShop_Window)
guiSetProperty(closeButton, "NormalTextColour", "FFFF0000")
carColorButton = guiCreateButton(157, 370, 133, 39, "* Set Color", false, VehicleShop_Window)
        guiSetProperty(carColorButton, "NormalTextColour", "FFFF0000")    
-----
guiSetVisible(VehicleShop_Window,false)
guiSetFont(VehicleShop_Window, Font1)
guiSetFont(carGrid, Font1)
guiSetFont(carButton, Font1)
guiSetFont(carColorButton, Font1)
guiSetFont(closeButton, Font1)
-----------------
for i, M in ipairs(ShopTable) do
	ShopMarker = createMarker(M["PosX"], M["PosY"], M["PosZ"], "cylinder", 1.3, 150, 0, 255, 127)
	ShopMarkerShader = createMarker(M["PosX"], M["PosY"], M["PosZ"], "cylinder", 1.3, 200, 150, 0, 127)
	ShopMarkersTable[ShopMarker] = true
	setElementID(ShopMarker, tostring(i))
	createBlipAttachedTo(ShopMarker, 55, 2, 255, 255, 255, 255, 0, 400)
end
addEventHandler("onClientGUIClick", resourceRoot,
function()
	if (source == carGrid) then
		local carName = guiGridListGetItemText(carGrid, guiGridListGetSelectedItem(carGrid), 2)
		local carprice = guiGridListGetItemText(carGrid, guiGridListGetSelectedItem(carGrid), 3)
		if guiGridListGetSelectedItem(carGrid) ~= -1 then
			local carID = getVehicleModelFromName(carName)
			if isElement(veh) then
				setElementModel(veh, carID)
			return end
			veh = createVehicle(carID, ShopTable[i]["vPosX"], ShopTable[i]["vPosY"], ShopTable[i]["vPosZ"])
			setVehicleDamageProof(veh, true)
			setElementFrozen(veh, true)
			setVehicleColor(veh, r1, g1, b1, r2, g2, b2)
			timer = setTimer(function() local x, y, z = getElementRotation(veh) setElementRotation(veh, x, y, z+3) end, 50, 0)
		else
			r1, g1, b1, r2, g2, b2 = math.random(0, 255), math.random(0, 255), math.random(0, 255), math.random(0, 255), math.random(0, 255), math.random(0, 255)
			if isElement(veh) then
				destroyElement(veh)
			end
			if isTimer(timer) then
				killTimer(timer)
			end
		end
		elseif (source == carColorButton) then
		openColorPicker()
	elseif (source == carButton) then
		if guiGridListGetSelectedItem(carGrid) then
			local carName = guiGridListGetItemText(carGrid, guiGridListGetSelectedItem(carGrid), 2)
			local carID = getVehicleModelFromName(carName)
			local carCost = guiGridListGetItemData (carGrid, guiGridListGetSelectedItem(carGrid), 3)
			local r1, g1, b1, r2, g2, b2 = getVehicleColor(veh, true)
			triggerServerEvent("onBuyNewVehicle", localPlayer, carID, carCost, r1, g1, b1, r2, g2, b2)
			guiSetVisible(VehicleShop_Window, false)
			showCursor(false)
			setElementFrozen(localPlayer, false)
			fadeCamera(false, 1.0)
			setTimer(function() fadeCamera(true, 0.5) setCameraTarget(localPlayer) end, 1000, 1)
			if isElement(veh) then
				destroyElement(veh)
			end
			if isTimer(timer) then
				killTimer(timer)
			end
		end
	elseif (source == closeButton) then
		if guiGetVisible(VehicleShop_Window) then 
			guiSetVisible(VehicleShop_Window, false)
			showCursor(false)
			setElementFrozen(localPlayer, false)
			fadeCamera(false, 1.0)
			setTimer(function() fadeCamera(true, 0.5) setCameraTarget(localPlayer) end, 1000, 1)
			if isElement(veh) then
				destroyElement(veh)
			end
			if isTimer(timer) then
				killTimer(timer)
			end
		end
	end
end)
function openColorPicker()
	if (colorPicker.isSelectOpen) or not isElement(veh) then return end
	colorPicker.openSelect(colors)
end
function closedColorPicker()
end
function updateColor()
	if (not colorPicker.isSelectOpen) then return end
	local r, g, b = colorPicker.updateTempColors()
	if (veh and isElement(veh)) then
		r1, g1, b1, r2, g2, b2 = getVehicleColor(veh, true)
		if (guiCheckBoxGetSelected(checkColor1)) then
			r1, g1, b1 = r, g, b
		end
		if (guiCheckBoxGetSelected(checkColor2)) then
			r2, g2, b2 = r, g, b
		end
		setVehicleColor(veh, r1, g1, b1, r2, g2, b2)
	end
end
addEventHandler("onClientRender", root, updateColor)
--[[addCommandHandler("xx", function()
	local x, y, z, lx, ly, lz = getCameraMatrix()
	setCameraMatrix(x, y, z, lx, ly, lz)
	outputChatBox(x..", "..y..", "..z..", "..lx..", "..ly..", "..z)
end)]]
function convertNumber ( number )  
	local formatted = number  
	while true do      
		formatted, k = string.gsub(formatted, "^(-?%d+)(%d%d%d)", '%1,%2')    
		if ( k==0 ) then      
			break   
		end  
	end  
	return formatted
end	
addEventHandler("onClientMarkerHit", resourceRoot,
function(player)
	if getElementType(player) ~= "player" or player ~= localPlayer or isPedInVehicle(player) then return end
	if ShopMarkersTable[source] then
		i = tonumber(getElementID(source))
		guiGridListClear(carGrid)
		for i, v in ipairs(ShopTable[i]["ID"]) do
			local carName = getVehicleNameFromModel(v[1])
			local row = guiGridListAddRow(carGrid)
			guiGridListSetItemText(carGrid, row, 1, v[1], false, true)
			guiGridListSetItemText(carGrid, row, 2, carName, false, true)
			guiGridListSetItemText(carGrid, row, 3, "$"..convertNumber(tostring(v[2])).."", false, true)
			guiGridListSetItemData(carGrid, row, 3, tostring(v[2]), false, true)
		end
		setCameraMatrix(ShopTable[i]["CamX"], ShopTable[i]["CamY"], ShopTable[i]["CamZ"], ShopTable[i]["lookAtX"], ShopTable[i]["lookAtY"], ShopTable[i]["lookAtZ"])
		guiSetVisible(VehicleShop_Window, true)
		showCursor(true)
		guiGridListSetSelectedItem(carGrid, 0, 1)
		setTimer(function()
			setElementFrozen(localPlayer, true)
			local carName = guiGridListGetItemText(carGrid, 0, 2)
			local carID = getVehicleModelFromName(carName)
			local x, y, z = ShopTable[i]["vPosX"], ShopTable[i]["vPosY"], ShopTable[i]["vPosZ"]
			if isElement(veh) then
				destroyElement(veh)
			end
			if isTimer(timer) then
				killTimer(timer)
			end
			r1, g1, b1, r2, g2, b2 = math.random(0, 255), math.random(0, 255), math.random(0, 255), math.random(0, 255), math.random(0, 255), math.random(0, 255)
			veh = createVehicle(carID, x, y, z)
			setVehicleDamageProof(veh, true)
			setElementFrozen(veh, true)
			setVehicleColor(veh, r1, g1, b1, r2, g2, b2)
			timer = setTimer(function() local x, y, z = getElementRotation(veh) setElementRotation(veh, x, y, z) end, 50, 0)
		end, 100, 1)
	end
end)