From 80b8285db132b7a3bddd9e1a423a31109af6c76b Mon Sep 17 00:00:00 2001 From: Gellipapa Date: Sat, 8 Jul 2023 21:02:07 +0200 Subject: [PATCH 1/2] :package: Added lot of new stuff GetVehicle,SetVehicle properties :package: Change extra ID range to 20 :package: RollupWindow in GetVehicleprops :package: Add bulletprof tyres option :package: Add vehicle roof livery :fix: fix modWindows props :package: replace SmashVehicleWindow to RemoveVehicleWindow --- [core]/es_extended/client/functions.lua | 130 ++++++++++++++---------- 1 file changed, 74 insertions(+), 56 deletions(-) diff --git a/[core]/es_extended/client/functions.lua b/[core]/es_extended/client/functions.lua index da7ae46e..47466708 100644 --- a/[core]/es_extended/client/functions.lua +++ b/[core]/es_extended/client/functions.lua @@ -26,7 +26,7 @@ end function ESX.SearchInventory(items, count) if type(items) == 'string' then - items = { items } + items = {items} end local returnData = {} @@ -154,7 +154,7 @@ if GetResourceState("esx_context") ~= "missing" then end function ESX.RefreshContext(...) - exports["esx_context"]:Refresh(...) + exports["esx_context"]:Refresh(...) end else function ESX.OpenContext() @@ -203,6 +203,7 @@ function ESX.UI.Menu.Open(type, namespace, name, data, submit, cancel, change, c menu.change = change menu.close = function() + ESX.UI.Menu.RegisteredTypes[type].close(namespace, name) for i = 1, #ESX.UI.Menu.Opened, 1 do @@ -217,9 +218,11 @@ function ESX.UI.Menu.Open(type, namespace, name, data, submit, cancel, change, c if close then close() end + end menu.update = function(query, newData) + for i = 1, #menu.data.elements, 1 do local match = true @@ -235,6 +238,7 @@ function ESX.UI.Menu.Open(type, namespace, name, data, submit, cancel, change, c end end end + end menu.refresh = function() @@ -262,6 +266,7 @@ function ESX.UI.Menu.Open(type, namespace, name, data, submit, cancel, change, c break end end + end end end @@ -491,6 +496,7 @@ function ESX.Game.GetPlayers(onlyOtherPlayers, returnKeyValue, returnPeds) return players end + function ESX.Game.GetClosestObject(coords, modelFilter) return ESX.Game.GetClosestEntity(ESX.Game.GetObjects(), false, coords, modelFilter) end @@ -598,23 +604,23 @@ function ESX.Game.GetVehicleProperties(vehicle) local interiorColor = GetVehicleInteriorColour(vehicle) local customPrimaryColor = nil if hasCustomPrimaryColor then - customPrimaryColor = { GetVehicleCustomPrimaryColour(vehicle) } + customPrimaryColor = {GetVehicleCustomPrimaryColour(vehicle)} end local hasCustomXenonColor, customXenonColorR, customXenonColorG, customXenonColorB = GetVehicleXenonLightsCustomColor(vehicle) local customXenonColor = nil if hasCustomXenonColor then - customXenonColor = { customXenonColorR, customXenonColorG, customXenonColorB } + customXenonColor = {customXenonColorR, customXenonColorG, customXenonColorB} end local hasCustomSecondaryColor = GetIsVehicleSecondaryColourCustom(vehicle) local customSecondaryColor = nil if hasCustomSecondaryColor then - customSecondaryColor = { GetVehicleCustomSecondaryColour(vehicle) } + customSecondaryColor = {GetVehicleCustomSecondaryColour(vehicle)} end local extras = {} - for extraId = 0, 12 do + for extraId = 0, 20 do if DoesExtraExist(vehicle, extraId) then extras[tostring(extraId)] = IsVehicleExtraTurnedOn(vehicle, extraId) end @@ -628,11 +634,11 @@ function ESX.Game.GetVehicleProperties(vehicle) local doorsBroken, windowsBroken, tyreBurst = {}, {}, {} local numWheels = tostring(GetVehicleNumberOfWheels(vehicle)) - local TyresIndex = { -- Wheel index list according to the number of vehicle wheels. - ['2'] = { 0, 4 }, -- Bike and cycle. - ['3'] = { 0, 1, 4, 5 }, -- Vehicle with 3 wheels (get for wheels because some 3 wheels vehicles have 2 wheels on front and one rear or the reverse). - ['4'] = { 0, 1, 4, 5 }, -- Vehicle with 4 wheels. - ['6'] = { 0, 1, 2, 3, 4, 5 } -- Vehicle with 6 wheels. + local TyresIndex = { -- Wheel index list according to the number of vehicle wheels. + ['2'] = {0, 4}, -- Bike and cycle. + ['3'] = {0, 1, 4, 5}, -- Vehicle with 3 wheels (get for wheels because some 3 wheels vehicles have 2 wheels on front and one rear or the reverse). + ['4'] = {0, 1, 4, 5}, -- Vehicle with 4 wheels. + ['6'] = {0, 1, 2, 3, 4, 5} -- Vehicle with 6 wheels. } if TyresIndex[numWheels] then @@ -642,6 +648,7 @@ function ESX.Game.GetVehicleProperties(vehicle) end for windowId = 0, 7 do -- 13 + RollUpWindow(vehicle, windowId) --fix when you put the car away with the window down windowsBroken[tostring(windowId)] = not IsVehicleWindowIntact(vehicle, windowId) end @@ -657,6 +664,7 @@ function ESX.Game.GetVehicleProperties(vehicle) doorsBroken = doorsBroken, windowsBroken = windowsBroken, tyreBurst = tyreBurst, + tyresCanBurst = GetVehicleTyresCanBurst(vehicle), plate = ESX.Math.Trim(GetVehicleNumberPlateText(vehicle)), plateIndex = GetVehicleNumberPlateTextIndex(vehicle), @@ -682,8 +690,8 @@ function ESX.Game.GetVehicleProperties(vehicle) xenonColor = GetVehicleXenonLightsColor(vehicle), customXenonColor = customXenonColor, - neonEnabled = { IsVehicleNeonLightEnabled(vehicle, 0), IsVehicleNeonLightEnabled(vehicle, 1), - IsVehicleNeonLightEnabled(vehicle, 2), IsVehicleNeonLightEnabled(vehicle, 3) }, + neonEnabled = {IsVehicleNeonLightEnabled(vehicle, 0), IsVehicleNeonLightEnabled(vehicle, 1), + IsVehicleNeonLightEnabled(vehicle, 2), IsVehicleNeonLightEnabled(vehicle, 3)}, neonColor = table.pack(GetVehicleNeonLightsColour(vehicle)), extras = extras, @@ -701,6 +709,7 @@ function ESX.Game.GetVehicleProperties(vehicle) modFender = GetVehicleMod(vehicle, 8), modRightFender = GetVehicleMod(vehicle, 9), modRoof = GetVehicleMod(vehicle, 10), + modRoofLivery = GetVehicleRoofLivery(vehicle), modEngine = GetVehicleMod(vehicle, 11), modBrakes = GetVehicleMod(vehicle, 12), @@ -714,7 +723,7 @@ function ESX.Game.GetVehicleProperties(vehicle) modXenon = IsToggleModOn(vehicle, 22), modFrontWheels = GetVehicleMod(vehicle, 23), - modCustomFrontWheels = GetVehicleModVariation(vehicle, 23), + modCustomFrontWheels = GetVehicleModVariation(vehicle, 23), modBackWheels = GetVehicleMod(vehicle, 24), modCustomBackWheels = GetVehicleModVariation(vehicle, 24), @@ -739,7 +748,7 @@ function ESX.Game.GetVehicleProperties(vehicle) modAerials = GetVehicleMod(vehicle, 43), modTrimB = GetVehicleMod(vehicle, 44), modTank = GetVehicleMod(vehicle, 45), - modDoorR = GetVehicleMod(vehicle, 47), + modWindows = GetVehicleMod(vehicle, 46), modLivery = GetVehicleMod(vehicle, 48) == -1 and GetVehicleLivery(vehicle) or GetVehicleMod(vehicle, 48), modLightbar = GetVehicleMod(vehicle, 49) } @@ -753,6 +762,10 @@ function ESX.Game.SetVehicleProperties(vehicle, props) local pearlescentColor, wheelColor = GetVehicleExtraColours(vehicle) SetVehicleModKit(vehicle, 0) + if props.tyresCanBurst ~= nil then + SetVehicleTyresCanBurst(vehicle, props.tyresCanBurst) + end + if props.plate ~= nil then SetVehicleNumberPlateText(vehicle, props.plate) end @@ -823,7 +836,7 @@ function ESX.Game.SetVehicleProperties(vehicle, props) end end - if props.driftTyresEnabled then + if props.driftTyresEnabled then SetDriftTyresEnabled(vehicle, true) end @@ -876,6 +889,11 @@ function ESX.Game.SetVehicleProperties(vehicle, props) if props.modRoof ~= nil then SetVehicleMod(vehicle, 10, props.modRoof, false) end + + if props.modRoofLivery ~= nil then + SetVehicleRoofLivery(vehicle, props.modRoofLivery) + end + if props.modEngine ~= nil then SetVehicleMod(vehicle, 11, props.modEngine, false) end @@ -903,8 +921,8 @@ function ESX.Game.SetVehicleProperties(vehicle, props) if props.modFrontWheels ~= nil then SetVehicleMod(vehicle, 23, props.modFrontWheels, false) end - if props.modCustomFrontWheels ~= nil then - SetVehicleMod(vehicle, 23, props.modCustomFrontWheels, false) + if props.modCustomFrontWheels ~= nil then + SetVehicleMod(vehicle, 23, props.modCustomFrontWheels, false) end if props.modBackWheels ~= nil then SetVehicleMod(vehicle, 24, props.modBackWheels, false) @@ -987,7 +1005,7 @@ function ESX.Game.SetVehicleProperties(vehicle, props) if props.windowsBroken ~= nil then for k, v in pairs(props.windowsBroken) do if v then - SmashVehicleWindow(vehicle, tonumber(k)) + RemoveVehicleWindow(vehicle, tonumber(k)) end end end @@ -1056,7 +1074,7 @@ function ESX.ShowInventory() local playerPed = ESX.PlayerData.ped local elements = { - { unselectable = true, icon = 'fas fa-box', title = 'Player Inventory' } + {unselectable = true, icon = 'fas fa-box', title = 'Player Inventory'} } local currentWeight = 0 @@ -1065,7 +1083,7 @@ function ESX.ShowInventory() local formattedMoney = TranslateCap('locale_currency', ESX.Math.GroupDigits(ESX.PlayerData.accounts[i].money)) local canDrop = ESX.PlayerData.accounts[i].name ~= 'bank' - elements[#elements + 1] = { + elements[#elements+1] = { icon = 'fas fa-money-bill-wave', title = ('%s: %s'):format(ESX.PlayerData.accounts[i].label, formattedMoney), count = ESX.PlayerData.accounts[i].money, @@ -1082,7 +1100,7 @@ function ESX.ShowInventory() if v.count > 0 then currentWeight = currentWeight + (v.weight * v.count) - elements[#elements + 1] = { + elements[#elements+1] = { icon = 'fas fa-box', title = ('%s x%s'):format(v.label, v.count), count = v.count, @@ -1101,7 +1119,7 @@ function ESX.ShowInventory() if HasPedGotWeapon(playerPed, weaponHash, false) then local ammo = GetAmmoInPedWeapon(playerPed, weaponHash) - elements[#elements + 1] = { + elements[#elements+1] = { icon = 'fas fa-gun', title = v.ammo and ('%s - %s %s'):format(v.label, ammo, v.ammo.label) or v.label, count = 1, @@ -1116,10 +1134,10 @@ function ESX.ShowInventory() end end - elements[#elements + 1] = { + elements[#elements+1] = { unselectable = true, icon = "fas fa-weight", - title = "Current Weight: " .. currentWeight + title = "Current Weight: "..currentWeight } ESX.CloseContext() @@ -1130,7 +1148,7 @@ function ESX.ShowInventory() local elements2 = {} if element.usable then - elements2[#elements2 + 1] = { + elements2[#elements2+1] = { icon = "fas fa-utensils", title = TranslateCap('use'), action = 'use', @@ -1141,7 +1159,7 @@ function ESX.ShowInventory() if element.canRemove then if player ~= -1 and distance <= 3.0 then - elements2[#elements2 + 1] = { + elements2[#elements2+1] = { icon = "fas fa-hands", title = TranslateCap('give'), action = 'give', @@ -1150,7 +1168,7 @@ function ESX.ShowInventory() } end - elements2[#elements2 + 1] = { + elements2[#elements2+1] = { icon = "fas fa-trash", title = TranslateCap('remove'), action = 'remove', @@ -1160,7 +1178,7 @@ function ESX.ShowInventory() end if element.type == 'item_weapon' and element.canGiveAmmo and element.ammo > 0 and player ~= -1 and distance <= 3.0 then - elements2[#elements2 + 1] = { + elements2[#elements2+1] = { icon = "fas fa-gun", title = TranslateCap('giveammo'), action = 'give_ammo', @@ -1169,7 +1187,7 @@ function ESX.ShowInventory() } end - elements2[#elements2 + 1] = { + elements2[#elements2+1] = { icon = "fas fa-arrow-left", title = TranslateCap('return'), action = 'return' @@ -1184,7 +1202,7 @@ function ESX.ShowInventory() if #playersNearby > 0 then local players = {} local elements3 = { - { unselectable = true, icon = "fas fa-users", title = "Nearby Players" } + {unselectable = true, icon = "fas fa-users", title = "Nearby Players"} } for _, playerNearby in ipairs(playersNearby) do @@ -1193,7 +1211,7 @@ function ESX.ShowInventory() ESX.TriggerServerCallback('esx:getPlayerNames', function(returnedPlayers) for playerId, playerName in pairs(returnedPlayers) do - elements3[#elements3 + 1] = { + elements3[#elements3+1] = { icon = "fas fa-user", title = playerName, playerId = playerId @@ -1214,12 +1232,12 @@ function ESX.ShowInventory() ESX.CloseContext() else local elementsG = { - { unselectable = true, icon = "fas fa-trash", title = element.title }, - { icon = "fas fa-tally", title = "Amount.", input = true, inputType = "number", inputPlaceholder = "Amount to give..", inputMin = 1, inputMax = 1000 }, - { icon = "fas fa-check-double", title = "Confirm", val = "confirm" } + {unselectable = true, icon = "fas fa-trash", title = element.title}, + {icon = "fas fa-tally", title = "Amount.", input = true, inputType = "number", inputPlaceholder = "Amount to give..", inputMin = 1, inputMax = 1000}, + {icon = "fas fa-check-double", title = "Confirm", val = "confirm"} } - ESX.OpenContext("right", elementsG, function(menuG) + ESX.OpenContext("right", elementsG, function(menuG, _) local quantity = tonumber(menuG.eles[2].inputValue) if quantity and quantity > 0 and element.count >= quantity then @@ -1253,12 +1271,12 @@ function ESX.ShowInventory() TriggerServerEvent('esx:removeInventoryItem', type, item) else local elementsR = { - { unselectable = true, icon = "fas fa-trash", title = element.title }, - { icon = "fas fa-tally", title = "Amount.", input = true, inputType = "number", inputPlaceholder = "Amount to remove..", inputMin = 1, inputMax = 1000 }, - { icon = "fas fa-check-double", title = "Confirm", val = "confirm" } + {unselectable = true, icon = "fas fa-trash", title = element.title}, + {icon = "fas fa-tally", title = "Amount.", input = true, inputType = "number", inputPlaceholder = "Amount to remove..", inputMin = 1, inputMax = 1000}, + {icon = "fas fa-check-double", title = "Confirm", val = "confirm"} } - ESX.OpenContext("right", elementsR, function(menuR) + ESX.OpenContext("right", elementsR, function(menuR, _) local quantity = tonumber(menuR.eles[2].inputValue) if quantity and quantity > 0 and element.count >= quantity then @@ -1288,12 +1306,12 @@ function ESX.ShowInventory() if closestPlayer ~= -1 and closestDistance < 3.0 then if pedAmmo > 0 then local elementsGA = { - { unselectable = true, icon = "fas fa-trash", title = element.title }, - { icon = "fas fa-tally", title = "Amount.", input = true, inputType = "number", inputPlaceholder = "Amount to give..", inputMin = 1, inputMax = 1000 }, - { icon = "fas fa-check-double", title = "Confirm", val = "confirm" } + {unselectable = true, icon = "fas fa-trash", title = element.title}, + {icon = "fas fa-tally", title = "Amount.", input = true, inputType = "number", inputPlaceholder = "Amount to give..", inputMin = 1, inputMax = 1000}, + {icon = "fas fa-check-double", title = "Confirm", val = "confirm"} } - ESX.OpenContext("right", elementsGA, function(menuGA) + ESX.OpenContext("right", elementsGA, function(menuGA, _) local quantity = tonumber(menuGA.eles[2].inputValue) if quantity and quantity > 0 then @@ -1342,20 +1360,20 @@ end) function ESX.GetVehicleType(model) model = type(model) == 'string' and joaat(model) or model - if model == `submersible` or model == `submersible2` then + if model == `submersible` or model == `submersible2` then return 'submarine' - end + end - local vehicleType = GetVehicleClassFromName(model) - local types = { - [8] = "bike", - [11] = "trailer", - [13] = "bike", - [14] = "boat", - [15] = "heli", - [16] = "plane", - [21] = "train", - } + local vehicleType = GetVehicleClassFromName(model) + local types = { + [8] = "bike", + [11] = "trailer", + [13] = "bike", + [14] = "boat", + [15] = "heli", + [16] = "plane", + [21] = "train", + } return types[vehicleType] or "automobile" end From 332fa8a3d8fd1a5aafb95e8f3142d638ab365f46 Mon Sep 17 00:00:00 2001 From: Gellipapa Date: Sat, 8 Jul 2023 21:04:30 +0200 Subject: [PATCH 2/2] :coffin: Remove ShowInventory method in add,remove inventory trigger --- [core]/es_extended/client/main.lua | 4 ---- 1 file changed, 4 deletions(-) diff --git a/[core]/es_extended/client/main.lua b/[core]/es_extended/client/main.lua index 34a0f3e2..93c95429 100644 --- a/[core]/es_extended/client/main.lua +++ b/[core]/es_extended/client/main.lua @@ -293,8 +293,6 @@ if not Config.OxInventory then if showNotification then ESX.UI.ShowInventoryItemNotification(true, item, count) end - - ESX.ShowInventory() end) RegisterNetEvent('esx:removeInventoryItem') @@ -310,8 +308,6 @@ if not Config.OxInventory then if showNotification then ESX.UI.ShowInventoryItemNotification(false, item, count) end - - ESX.ShowInventory() end) RegisterNetEvent('esx:addWeapon')