|
|
|
@@ -17,6 +17,10 @@ local function IsResourceFound(resource)
|
|
|
|
|
return addonResourcesState[resource] or error(('Resource [^5%s^1] is Missing!'):format(resource))
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
---@param items string | table The item(s) to search for
|
|
|
|
|
---@param count? boolean Whether to return the count of the item as well
|
|
|
|
|
---@return table | number
|
|
|
|
|
function ESX.SearchInventory(items, count)
|
|
|
|
|
local item
|
|
|
|
|
if type(items) == 'string' then
|
|
|
|
@@ -40,6 +44,9 @@ function ESX.SearchInventory(items, count)
|
|
|
|
|
return not item and data or data[item]
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
---@param key string Table key to set
|
|
|
|
|
---@param val any Value to set
|
|
|
|
|
---@return nil
|
|
|
|
|
function ESX.SetPlayerData(key, val)
|
|
|
|
|
local current = ESX.PlayerData[key]
|
|
|
|
|
ESX.PlayerData[key] = val
|
|
|
|
@@ -50,6 +57,8 @@ function ESX.SetPlayerData(key, val)
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
---@param freeze boolean Whether to freeze the player
|
|
|
|
|
---@return nil
|
|
|
|
|
function Core.FreezePlayer(freeze)
|
|
|
|
|
local player = PlayerId()
|
|
|
|
|
local ped = PlayerPedId()
|
|
|
|
@@ -64,7 +73,10 @@ function Core.FreezePlayer(freeze)
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
---@param skin table Skin data to set
|
|
|
|
|
---@param coords table Coords to spawn the player at
|
|
|
|
|
---@param cb function Callback function
|
|
|
|
|
---@return nil
|
|
|
|
|
function ESX.SpawnPlayer(skin, coords, cb)
|
|
|
|
|
local p = promise.new()
|
|
|
|
|
TriggerEvent("skinchanger:loadSkin", skin, function()
|
|
|
|
@@ -91,11 +103,14 @@ function ESX.SpawnPlayer(skin, coords, cb)
|
|
|
|
|
cb()
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
function ESX.Progressbar(...)
|
|
|
|
|
return IsResourceFound('esx_progressbar') and exports['esx_progressbar']:Progressbar(...)
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
---@param message string The message to show
|
|
|
|
|
---@param notifyType? string The type of notification to show
|
|
|
|
|
---@param length? number The length of the notification
|
|
|
|
|
---@return nil
|
|
|
|
|
function ESX.ShowNotification(message, notifyType, length)
|
|
|
|
|
return IsResourceFound('esx_notify') and exports['esx_notify']:Notify(notifyType, length, message)
|
|
|
|
|
end
|
|
|
|
@@ -104,10 +119,20 @@ function ESX.TextUI(...)
|
|
|
|
|
return IsResourceFound('esx_textui') and exports['esx_textui']:TextUI(...)
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
---@return nil
|
|
|
|
|
function ESX.HideUI()
|
|
|
|
|
return IsResourceFound('esx_textui') and exports['esx_textui']:HideUI()
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
---@param sender string
|
|
|
|
|
---@param subject string
|
|
|
|
|
---@param msg string
|
|
|
|
|
---@param textureDict string
|
|
|
|
|
---@param iconType integer
|
|
|
|
|
---@param flash boolean
|
|
|
|
|
---@param saveToBrief? boolean
|
|
|
|
|
---@param hudColorIndex? integer
|
|
|
|
|
---@return nil
|
|
|
|
|
function ESX.ShowAdvancedNotification(sender, subject, msg, textureDict, iconType, flash, saveToBrief, hudColorIndex)
|
|
|
|
|
AddTextEntry("esxAdvancedNotification", msg)
|
|
|
|
|
BeginTextCommandThefeedPost("esxAdvancedNotification")
|
|
|
|
@@ -118,6 +143,11 @@ function ESX.ShowAdvancedNotification(sender, subject, msg, textureDict, iconTyp
|
|
|
|
|
EndTextCommandThefeedPostTicker(flash, saveToBrief == nil or saveToBrief)
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
---@param msg string The message to show
|
|
|
|
|
---@param thisFrame? boolean Whether to show the message this frame
|
|
|
|
|
---@param beep? boolean Whether to beep
|
|
|
|
|
---@param duration? number The duration of the message
|
|
|
|
|
---@return nil
|
|
|
|
|
function ESX.ShowHelpNotification(msg, thisFrame, beep, duration)
|
|
|
|
|
AddTextEntry("esxHelpNotification", msg)
|
|
|
|
|
if thisFrame then
|
|
|
|
@@ -128,6 +158,9 @@ function ESX.ShowHelpNotification(msg, thisFrame, beep, duration)
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
---@param msg string The message to show
|
|
|
|
|
---@param coords table The coords to show the message at
|
|
|
|
|
---@return nil
|
|
|
|
|
function ESX.ShowFloatingHelpNotification(msg, coords)
|
|
|
|
|
AddTextEntry("esxFloatingHelpNotification", msg)
|
|
|
|
|
SetFloatingHelpTextWorldPosition(1, coords.x, coords.y, coords.z)
|
|
|
|
@@ -136,6 +169,9 @@ function ESX.ShowFloatingHelpNotification(msg, coords)
|
|
|
|
|
EndTextCommandDisplayHelp(2, false, false, -1)
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
---@param msg string The message to show
|
|
|
|
|
---@param time number The duration of the message
|
|
|
|
|
---@return nil
|
|
|
|
|
function ESX.DrawMissionText(msg, time)
|
|
|
|
|
ClearPrints()
|
|
|
|
|
BeginTextCommandPrint('STRING')
|
|
|
|
@@ -143,6 +179,8 @@ function ESX.DrawMissionText(msg, time)
|
|
|
|
|
EndTextCommandPrint(time, true)
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
---@param str string The string to hash
|
|
|
|
|
---@return string The hashed string
|
|
|
|
|
function ESX.HashString(str)
|
|
|
|
|
return ('~INPUT_%s~'):format(('%x'):format(joaat(str) & 0x7fffffff + 2 ^ 31):upper())
|
|
|
|
|
end
|
|
|
|
@@ -163,6 +201,12 @@ function ESX.RefreshContext(...)
|
|
|
|
|
return IsResourceFound('esx_context') and exports['esx_context']:Refresh(...)
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
---@param command_name string The command name
|
|
|
|
|
---@param label string The label to show
|
|
|
|
|
---@param input_group string The input group
|
|
|
|
|
---@param key string The key to bind
|
|
|
|
|
---@param on_press function The function to call on press
|
|
|
|
|
---@param on_release? function The function to call on release
|
|
|
|
|
function ESX.RegisterInput(command_name, label, input_group, key, on_press, on_release)
|
|
|
|
|
local command = on_release and '+' .. command_name or command_name
|
|
|
|
|
RegisterCommand(command, on_press, false)
|
|
|
|
@@ -173,6 +217,9 @@ function ESX.RegisterInput(command_name, label, input_group, key, on_press, on_r
|
|
|
|
|
RegisterKeyMapping(command, label or '', input_group or 'keyboard', key or '')
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
---@param menuType string
|
|
|
|
|
---@param open function The function to call on open
|
|
|
|
|
---@param close function The function to call on close
|
|
|
|
|
function ESX.UI.Menu.RegisterType(menuType, open, close)
|
|
|
|
|
ESX.UI.Menu.RegisteredTypes[menuType] = {
|
|
|
|
|
open = open,
|
|
|
|
@@ -180,7 +227,34 @@ function ESX.UI.Menu.RegisterType(menuType, open, close)
|
|
|
|
|
}
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
---@class ESXMenu
|
|
|
|
|
---@field type string
|
|
|
|
|
---@field namespace string
|
|
|
|
|
---@field resourceName string
|
|
|
|
|
---@field name string
|
|
|
|
|
---@field data table
|
|
|
|
|
---@field submit? function
|
|
|
|
|
---@field cancel? function
|
|
|
|
|
---@field change? function
|
|
|
|
|
---@field close function
|
|
|
|
|
---@field update function
|
|
|
|
|
---@field refresh function
|
|
|
|
|
---@field setElement function
|
|
|
|
|
---@field setElements function
|
|
|
|
|
---@field setTitle function
|
|
|
|
|
---@field removeElement function
|
|
|
|
|
|
|
|
|
|
---@param menuType string
|
|
|
|
|
---@param namespace string
|
|
|
|
|
---@param name string
|
|
|
|
|
---@param data table
|
|
|
|
|
---@param submit? function
|
|
|
|
|
---@param cancel? function
|
|
|
|
|
---@param change? function
|
|
|
|
|
---@param close? function
|
|
|
|
|
---@return ESXMenu
|
|
|
|
|
function ESX.UI.Menu.Open(menuType, namespace, name, data, submit, cancel, change, close)
|
|
|
|
|
---@class ESXMenu
|
|
|
|
|
local menu = {}
|
|
|
|
|
|
|
|
|
|
menu.type = menuType
|
|
|
|
@@ -261,6 +335,11 @@ function ESX.UI.Menu.Open(menuType, namespace, name, data, submit, cancel, chang
|
|
|
|
|
return menu
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
---@param menuType string
|
|
|
|
|
---@param namespace string
|
|
|
|
|
---@param name string
|
|
|
|
|
---@param cancel? boolean Should the close be classified as a cancel
|
|
|
|
|
---@return nil
|
|
|
|
|
function ESX.UI.Menu.Close(menuType, namespace, name, cancel)
|
|
|
|
|
for i = 1, #ESX.UI.Menu.Opened, 1 do
|
|
|
|
|
if ESX.UI.Menu.Opened[i] then
|
|
|
|
@@ -276,6 +355,8 @@ function ESX.UI.Menu.Close(menuType, namespace, name, cancel)
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
---@param cancel? boolean Should the close be classified as a cancel
|
|
|
|
|
---@return nil
|
|
|
|
|
function ESX.UI.Menu.CloseAll(cancel)
|
|
|
|
|
for i = 1, #ESX.UI.Menu.Opened, 1 do
|
|
|
|
|
if ESX.UI.Menu.Opened[i] then
|
|
|
|
@@ -289,6 +370,10 @@ function ESX.UI.Menu.CloseAll(cancel)
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
---@param menuType string
|
|
|
|
|
---@param namespace string
|
|
|
|
|
---@param name string
|
|
|
|
|
---@return ESXMenu | nil
|
|
|
|
|
function ESX.UI.Menu.GetOpened(menuType, namespace, name)
|
|
|
|
|
for i = 1, #ESX.UI.Menu.Opened, 1 do
|
|
|
|
|
if ESX.UI.Menu.Opened[i] then
|
|
|
|
@@ -299,12 +384,17 @@ function ESX.UI.Menu.GetOpened(menuType, namespace, name)
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
---@return ESXMenu[]
|
|
|
|
|
function ESX.UI.Menu.GetOpenedMenus()
|
|
|
|
|
return ESX.UI.Menu.Opened
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
ESX.UI.Menu.IsOpen = ESX.UI.Menu.GetOpened
|
|
|
|
|
|
|
|
|
|
---@param add boolean Whether the item is being added or removed
|
|
|
|
|
---@param item string The item to show
|
|
|
|
|
---@param count number How many of the item to show
|
|
|
|
|
---@return nil
|
|
|
|
|
function ESX.UI.ShowInventoryItemNotification(add, item, count)
|
|
|
|
|
SendNUIMessage({
|
|
|
|
|
action = "inventoryNotification",
|
|
|
|
@@ -314,6 +404,8 @@ function ESX.UI.ShowInventoryItemNotification(add, item, count)
|
|
|
|
|
})
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
---@param ped integer The ped to get the mugshot of
|
|
|
|
|
---@param transparent? boolean Whether the mugshot should be transparent
|
|
|
|
|
function ESX.Game.GetPedMugshot(ped, transparent)
|
|
|
|
|
if not DoesEntityExist(ped) then
|
|
|
|
|
return
|
|
|
|
@@ -327,17 +419,19 @@ function ESX.Game.GetPedMugshot(ped, transparent)
|
|
|
|
|
return mugshot, GetPedheadshotTxdString(mugshot)
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
---@param entity integer The entity to get the coords of
|
|
|
|
|
---@param coords table | vector3 | vector4 The coords to teleport the entity to
|
|
|
|
|
---@param cb? function The callback function
|
|
|
|
|
function ESX.Game.Teleport(entity, coords, cb)
|
|
|
|
|
local vector = type(coords) == "vector4" and coords or type(coords) == "vector3" and vector4(coords, 0.0) or vec(coords.x, coords.y, coords.z, coords.heading or 0.0)
|
|
|
|
|
|
|
|
|
|
if DoesEntityExist(entity) then
|
|
|
|
|
RequestCollisionAtCoord(vector.x, vector.y, vector.z)
|
|
|
|
|
RequestCollisionAtCoord(coords.x, coords.y, coords.z)
|
|
|
|
|
while not HasCollisionLoadedAroundEntity(entity) do
|
|
|
|
|
Wait(0)
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
SetEntityCoords(entity, vector.x, vector.y, vector.z, false, false, false, false)
|
|
|
|
|
SetEntityHeading(entity, vector.w)
|
|
|
|
|
SetEntityCoords(entity, coords.x, coords.y, coords.z, false, false, false, false)
|
|
|
|
|
SetEntityHeading(entity, coords.w or coords.heading or 0.0)
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
if cb then
|
|
|
|
@@ -345,6 +439,11 @@ function ESX.Game.Teleport(entity, coords, cb)
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
---@param object integer | string The object to spawn
|
|
|
|
|
---@param coords table | vector3 The coords to spawn the object at
|
|
|
|
|
---@param cb? function The callback function
|
|
|
|
|
---@param networked? boolean Whether the object should be networked
|
|
|
|
|
---@return integer | nil
|
|
|
|
|
function ESX.Game.SpawnObject(object, coords, cb, networked)
|
|
|
|
|
local model = type(object) == "number" and object or joaat(object)
|
|
|
|
|
|
|
|
|
@@ -354,24 +453,38 @@ function ESX.Game.SpawnObject(object, coords, cb, networked)
|
|
|
|
|
return cb and cb(obj) or obj
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
---@param object integer | string The object to spawn
|
|
|
|
|
---@param coords table | vector3 The coords to spawn the object at
|
|
|
|
|
---@param cb? function The callback function
|
|
|
|
|
---@return nil
|
|
|
|
|
function ESX.Game.SpawnLocalObject(object, coords, cb)
|
|
|
|
|
ESX.Game.SpawnObject(object, coords, cb, false)
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
---@param vehicle integer The vehicle to delete
|
|
|
|
|
---@return nil
|
|
|
|
|
function ESX.Game.DeleteVehicle(vehicle)
|
|
|
|
|
SetEntityAsMissionEntity(vehicle, true, true)
|
|
|
|
|
DeleteVehicle(vehicle)
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
---@param object integer The object to delete
|
|
|
|
|
---@return nil
|
|
|
|
|
function ESX.Game.DeleteObject(object)
|
|
|
|
|
SetEntityAsMissionEntity(object, false, true)
|
|
|
|
|
DeleteObject(object)
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
---@param vehicleModel integer | string The vehicle to spawn
|
|
|
|
|
---@param coords table | vector3 The coords to spawn the vehicle at
|
|
|
|
|
---@param heading number The heading of the vehicle
|
|
|
|
|
---@param cb? function The callback function
|
|
|
|
|
---@param networked? boolean Whether the vehicle should be networked
|
|
|
|
|
---@return nil
|
|
|
|
|
function ESX.Game.SpawnVehicle(vehicleModel, coords, heading, cb, networked)
|
|
|
|
|
local model = type(vehicleModel) == "number" and vehicleModel or joaat(vehicleModel)
|
|
|
|
|
local vector = type(coords) == "vector3" and coords or vec(coords.x, coords.y, coords.z)
|
|
|
|
|
networked = networked == nil and true or networked
|
|
|
|
|
local isNetworked = networked == nil or networked
|
|
|
|
|
|
|
|
|
|
local playerCoords = GetEntityCoords(ESX.PlayerData.ped)
|
|
|
|
|
if not vector or not playerCoords then
|
|
|
|
@@ -387,7 +500,7 @@ function ESX.Game.SpawnVehicle(vehicleModel, coords, heading, cb, networked)
|
|
|
|
|
CreateThread(function()
|
|
|
|
|
ESX.Streaming.RequestModel(model)
|
|
|
|
|
|
|
|
|
|
local vehicle = CreateVehicle(model, vector.x, vector.y, vector.z, heading, networked, true)
|
|
|
|
|
local vehicle = CreateVehicle(model, vector.x, vector.y, vector.z, heading, isNetworked, true)
|
|
|
|
|
|
|
|
|
|
if networked then
|
|
|
|
|
local id = NetworkGetNetworkIdFromEntity(vehicle)
|
|
|
|
@@ -410,18 +523,28 @@ function ESX.Game.SpawnVehicle(vehicleModel, coords, heading, cb, networked)
|
|
|
|
|
end)
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
---@param vehicle integer The vehicle to spawn
|
|
|
|
|
---@param coords table | vector3 The coords to spawn the vehicle at
|
|
|
|
|
---@param heading number The heading of the vehicle
|
|
|
|
|
---@param cb? function The callback function
|
|
|
|
|
---@return nil
|
|
|
|
|
function ESX.Game.SpawnLocalVehicle(vehicle, coords, heading, cb)
|
|
|
|
|
ESX.Game.SpawnVehicle(vehicle, coords, heading, cb, false)
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
---@param vehicle integer The vehicle to check
|
|
|
|
|
---@return boolean
|
|
|
|
|
function ESX.Game.IsVehicleEmpty(vehicle)
|
|
|
|
|
return GetVehicleNumberOfPassengers(vehicle) == 0 and IsVehicleSeatFree(vehicle, -1)
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
---@return table
|
|
|
|
|
function ESX.Game.GetObjects() -- Leave the function for compatibility
|
|
|
|
|
return GetGamePool("CObject")
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
---@param onlyOtherPeds? boolean Whether to exlude the player ped
|
|
|
|
|
---@return table
|
|
|
|
|
function ESX.Game.GetPeds(onlyOtherPeds)
|
|
|
|
|
local pool = GetGamePool("CPed")
|
|
|
|
|
|
|
|
|
@@ -438,10 +561,15 @@ function ESX.Game.GetPeds(onlyOtherPeds)
|
|
|
|
|
return pool
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
---@return table
|
|
|
|
|
function ESX.Game.GetVehicles() -- Leave the function for compatibility
|
|
|
|
|
return GetGamePool("CVehicle")
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
---@param onlyOtherPlayers? boolean Whether to exclude the player
|
|
|
|
|
---@param returnKeyValue? boolean Whether to return the key value pair
|
|
|
|
|
---@param returnPeds? boolean Whether to return the peds
|
|
|
|
|
---@return table
|
|
|
|
|
function ESX.Game.GetPlayers(onlyOtherPlayers, returnKeyValue, returnPeds)
|
|
|
|
|
local players, myPlayer = {}, PlayerId()
|
|
|
|
|
local active = GetActivePlayers()
|
|
|
|
@@ -462,22 +590,38 @@ function ESX.Game.GetPlayers(onlyOtherPlayers, returnKeyValue, returnPeds)
|
|
|
|
|
return players
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
---@param coords? table | vector3 The coords to get the closest object to
|
|
|
|
|
---@param modelFilter? table The model filter
|
|
|
|
|
---@return integer, integer
|
|
|
|
|
function ESX.Game.GetClosestObject(coords, modelFilter)
|
|
|
|
|
return ESX.Game.GetClosestEntity(ESX.Game.GetObjects(), false, coords, modelFilter)
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
---@param coords? table | vector3 The coords to get the closest ped to
|
|
|
|
|
---@param modelFilter? table The model filter
|
|
|
|
|
---@return integer, integer
|
|
|
|
|
function ESX.Game.GetClosestPed(coords, modelFilter)
|
|
|
|
|
return ESX.Game.GetClosestEntity(ESX.Game.GetPeds(true), false, coords, modelFilter)
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
---@param coords? table | vector3 The coords to get the closest player to
|
|
|
|
|
---@return integer, integer
|
|
|
|
|
function ESX.Game.GetClosestPlayer(coords)
|
|
|
|
|
return ESX.Game.GetClosestEntity(ESX.Game.GetPlayers(true, true), true, coords, nil)
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
---@param coords? table | vector3 The coords to get the closest vehicle to
|
|
|
|
|
---@param modelFilter? table The model filter
|
|
|
|
|
---@return integer, integer
|
|
|
|
|
function ESX.Game.GetClosestVehicle(coords, modelFilter)
|
|
|
|
|
return ESX.Game.GetClosestEntity(ESX.Game.GetVehicles(), false, coords, modelFilter)
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
---@param entities table The entities to search through
|
|
|
|
|
---@param isPlayerEntities boolean Whether the entities are players
|
|
|
|
|
---@param coords table | vector3 The coords to search from
|
|
|
|
|
---@param maxDistance number The max distance to search within
|
|
|
|
|
---@return table
|
|
|
|
|
local function EnumerateEntitiesWithinDistance(entities, isPlayerEntities, coords, maxDistance)
|
|
|
|
|
local nearbyEntities = {}
|
|
|
|
|
|
|
|
|
@@ -499,18 +643,29 @@ local function EnumerateEntitiesWithinDistance(entities, isPlayerEntities, coord
|
|
|
|
|
return nearbyEntities
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
---@param coords table | vector3 The coords to search from
|
|
|
|
|
---@param maxDistance number The max distance to search within
|
|
|
|
|
---@return table
|
|
|
|
|
function ESX.Game.GetPlayersInArea(coords, maxDistance)
|
|
|
|
|
return EnumerateEntitiesWithinDistance(ESX.Game.GetPlayers(true, true), true, coords, maxDistance)
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
---@param coords table | vector3 The coords to search from
|
|
|
|
|
---@param maxDistance number The max distance to search within
|
|
|
|
|
---@return table
|
|
|
|
|
function ESX.Game.GetVehiclesInArea(coords, maxDistance)
|
|
|
|
|
return EnumerateEntitiesWithinDistance(ESX.Game.GetVehicles(), false, coords, maxDistance)
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
---@param coords table | vector3 The coords to search from
|
|
|
|
|
---@param maxDistance number The max distance to search within
|
|
|
|
|
---@return boolean
|
|
|
|
|
function ESX.Game.IsSpawnPointClear(coords, maxDistance)
|
|
|
|
|
return #ESX.Game.GetVehiclesInArea(coords, maxDistance) == 0
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
---@param shape integer The shape to get the test result from
|
|
|
|
|
---@return boolean, table, table, integer, integer
|
|
|
|
|
function ESX.Game.GetShapeTestResultSync(shape)
|
|
|
|
|
local handle, hit, coords, normal, material, entity
|
|
|
|
|
repeat
|
|
|
|
@@ -520,6 +675,9 @@ function ESX.Game.GetShapeTestResultSync(shape)
|
|
|
|
|
return hit, coords, normal, material, entity
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
---@param depth number The depth to raycast
|
|
|
|
|
---@vararg any The arguments to pass to the shape test
|
|
|
|
|
---@return table, boolean, table, table, integer, integer
|
|
|
|
|
function ESX.Game.RaycastScreen(depth, ...)
|
|
|
|
|
local world, normal = GetWorldCoordFromScreenCoord(.5, .5)
|
|
|
|
|
local origin = world + normal
|
|
|
|
@@ -527,6 +685,11 @@ function ESX.Game.RaycastScreen(depth, ...)
|
|
|
|
|
return target, ESX.Game.GetShapeTestResultSync(StartShapeTestLosProbe(origin.x, origin.y, origin.z, target.x, target.y, target.z, ...))
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
---@param entities table The entities to search through
|
|
|
|
|
---@param isPlayerEntities boolean Whether the entities are players
|
|
|
|
|
---@param coords? table | vector3 The coords to search from
|
|
|
|
|
---@param modelFilter? table The model filter
|
|
|
|
|
---@return integer, integer
|
|
|
|
|
function ESX.Game.GetClosestEntity(entities, isPlayerEntities, coords, modelFilter)
|
|
|
|
|
local closestEntity, closestEntityDistance, filteredEntities = -1, -1, nil
|
|
|
|
|
|
|
|
|
@@ -558,6 +721,7 @@ function ESX.Game.GetClosestEntity(entities, isPlayerEntities, coords, modelFilt
|
|
|
|
|
return closestEntity, closestEntityDistance
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
---@return integer | nil, vector3 | nil
|
|
|
|
|
function ESX.Game.GetVehicleInDirection()
|
|
|
|
|
local _, hit, coords, _, _, entity = ESX.Game.RaycastScreen(5, 10, ESX.PlayerData.ped)
|
|
|
|
|
if hit and IsEntityAVehicle(entity) then
|
|
|
|
@@ -565,6 +729,8 @@ function ESX.Game.GetVehicleInDirection()
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
---@param vehicle integer The vehicle to get the properties of
|
|
|
|
|
---@return table | nil
|
|
|
|
|
function ESX.Game.GetVehicleProperties(vehicle)
|
|
|
|
|
if not DoesEntityExist(vehicle) then
|
|
|
|
|
return
|
|
|
|
@@ -720,6 +886,9 @@ function ESX.Game.GetVehicleProperties(vehicle)
|
|
|
|
|
}
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
---@param vehicle integer The vehicle to set the properties of
|
|
|
|
|
---@param props table The properties to set
|
|
|
|
|
---@return nil
|
|
|
|
|
function ESX.Game.SetVehicleProperties(vehicle, props)
|
|
|
|
|
if not DoesEntityExist(vehicle) then
|
|
|
|
|
return
|
|
|
|
@@ -992,6 +1161,11 @@ function ESX.Game.SetVehicleProperties(vehicle, props)
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
---@param coords vector3 | table coords to get the closest pickup to
|
|
|
|
|
---@param text string The text to display
|
|
|
|
|
---@param size? number The size of the text
|
|
|
|
|
---@param font? number The font of the text
|
|
|
|
|
---@return nil
|
|
|
|
|
function ESX.Game.Utils.DrawText3D(coords, text, size, font)
|
|
|
|
|
local vector = type(coords) == "vector3" and coords or vec(coords.x, coords.y, coords.z)
|
|
|
|
|
|
|
|
|
@@ -1028,6 +1202,7 @@ function ESX.GetAccount(account)
|
|
|
|
|
return nil
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
---@return nil
|
|
|
|
|
function ESX.ShowInventory()
|
|
|
|
|
if not Config.EnableDefaultInventory then
|
|
|
|
|
return
|
|
|
|
|