السلام عليكم
بدي حد يوضحلي الخطاء في كلاينت
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)