Diff
checker
テキスト
テキスト
画像
ドキュメント
Excel
フォルダ
Legal
Enterprise
デスクトップ
料金
ログイン
Diffchecker デスクトップのダウンロード
テキスト比較
2 つのテキスト ファイルの違いを見つける
ツール
履歴
ライブエディター
未変更行を折りたたむ
折り返しなし
レイアウト
分割
統合
比較精度
スマート
単語
文字
シンタックスハイライト
構文を選択
無視
テキスト変換
最初の差分へ移動
入力を編集
Diffchecker Desktop
Diffcheckerを実行する最も安全な方法。Diffchecker Desktopアプリを入手:あなたの差分はコンピューターから出ることはありません!
Desktopを入手
es_extended
作成日
7 年前
差分は期限切れになりません
クリア
エクスポート
共有
説明
6 削除
行
合計
削除
文字
合計
削除
この機能を引き続き使用するには、アップグレードしてください
Diff
checker
Pro
価格を見る
981 行
すべてコピー
9 追加
行
合計
追加
文字
合計
追加
この機能を引き続き使用するには、アップグレードしてください
Diff
checker
Pro
価格を見る
978 行
すべてコピー
ESX = {}
ESX = {}
ESX.PlayerData = {}
ESX.PlayerData = {}
ESX.PlayerLoaded = false
ESX.PlayerLoaded = false
ESX.CurrentRequestId = 0
ESX.CurrentRequestId = 0
ESX.ServerCallbacks = {}
ESX.ServerCallbacks = {}
ESX.TimeoutCallbacks = {}
ESX.TimeoutCallbacks = {}
ESX.UI = {}
ESX.UI = {}
ESX.UI.HUD = {}
ESX.UI.HUD = {}
ESX.UI.HUD.RegisteredElements = {}
ESX.UI.HUD.RegisteredElements = {}
ESX.UI.Menu = {}
ESX.UI.Menu = {}
ESX.UI.Menu.RegisteredTypes = {}
ESX.UI.Menu.RegisteredTypes = {}
ESX.UI.Menu.Opened = {}
ESX.UI.Menu.Opened = {}
ESX.Game = {}
ESX.Game = {}
ESX.Game.Utils = {}
ESX.Game.Utils = {}
ESX.Scaleform = {}
ESX.Scaleform = {}
ESX.Scaleform.Utils = {}
ESX.Scaleform.Utils = {}
ESX.Streaming = {}
ESX.Streaming = {}
ESX.SetTimeout = function(msec, cb)
ESX.SetTimeout = function(msec, cb)
table.insert(ESX.TimeoutCallbacks, {
table.insert(ESX.TimeoutCallbacks, {
time = GetGameTimer() + msec,
time = GetGameTimer() + msec,
cb = cb
cb = cb
})
})
return #ESX.TimeoutCallbacks
return #ESX.TimeoutCallbacks
end
end
ESX.ClearTimeout = function(i)
ESX.ClearTimeout = function(i)
ESX.TimeoutCallbacks[i] = nil
ESX.TimeoutCallbacks[i] = nil
end
end
ESX.IsPlayerLoaded = function()
ESX.IsPlayerLoaded = function()
return ESX.PlayerLoaded
return ESX.PlayerLoaded
end
end
ESX.GetPlayerData = function()
ESX.GetPlayerData = function()
return ESX.PlayerData
return ESX.PlayerData
end
end
ESX.SetPlayerData = function(key, val)
ESX.SetPlayerData = function(key, val)
ESX.PlayerData[key] = val
ESX.PlayerData[key] = val
end
end
ESX.ShowNotification = function(msg)
ESX.ShowNotification = function(msg)
コピー
コピー済み
コピー
コピー済み
SetNotificationTextEntry('STRING')
exports['mythic_notify']:SendAlert('inform', msg, 10000)
AddTextComponentSubstringPlayerName(msg)
--
SetNotificationTextEntry('STRING')
DrawNotification(false, true)
--
AddTextComponentSubstringPlayerName(msg)
--
DrawNotification(false, true)
end
end
ESX.ShowAdvancedNotification = function(title, subject, msg, icon, iconType)
ESX.ShowAdvancedNotification = function(title, subject, msg, icon, iconType)
コピー
コピー済み
コピー
コピー済み
SetNotificationTextEntry('STRING')
exports['mythic_notify']:SendAlert('inform', msg, 10000)
AddTextComponentSubstringPlayerName(msg)
--
SetNotificationTextEntry('STRING')
SetNotificationMessage(icon, icon, false, iconType, title, subject)
--
AddTextComponentSubstringPlayerName(msg)
DrawNotification(false, false)
--
SetNotificationMessage(icon, icon, false, iconType, title, subject)
--
DrawNotification(false, false)
end
end
ESX.ShowHelpNotification = function(msg)
ESX.ShowHelpNotification = function(msg)
--if not IsHelpMessageBeingDisplayed() then
--if not IsHelpMessageBeingDisplayed() then
BeginTextCommandDisplayHelp('STRING')
BeginTextCommandDisplayHelp('STRING')
AddTextComponentSubstringPlayerName(msg)
AddTextComponentSubstringPlayerName(msg)
EndTextCommandDisplayHelp(0, false, true, -1)
EndTextCommandDisplayHelp(0, false, true, -1)
--end
--end
end
end
ESX.TriggerServerCallback = function(name, cb, ...)
ESX.TriggerServerCallback = function(name, cb, ...)
ESX.ServerCallbacks[ESX.CurrentRequestId] = cb
ESX.ServerCallbacks[ESX.CurrentRequestId] = cb
TriggerServerEvent('esx:triggerServerCallback', name, ESX.CurrentRequestId, ...)
TriggerServerEvent('esx:triggerServerCallback', name, ESX.CurrentRequestId, ...)
if ESX.CurrentRequestId < 65535 then
if ESX.CurrentRequestId < 65535 then
ESX.CurrentRequestId = ESX.CurrentRequestId + 1
ESX.CurrentRequestId = ESX.CurrentRequestId + 1
else
else
ESX.CurrentRequestId = 0
ESX.CurrentRequestId = 0
end
end
end
end
ESX.UI.HUD.SetDisplay = function(opacity)
ESX.UI.HUD.SetDisplay = function(opacity)
SendNUIMessage({
SendNUIMessage({
action = 'setHUDDisplay',
action = 'setHUDDisplay',
opacity = opacity
opacity = opacity
})
})
end
end
ESX.UI.HUD.RegisterElement = function(name, index, priority, html, data)
ESX.UI.HUD.RegisterElement = function(name, index, priority, html, data)
local found = false
local found = false
for i=1, #ESX.UI.HUD.RegisteredElements, 1 do
for i=1, #ESX.UI.HUD.RegisteredElements, 1 do
if ESX.UI.HUD.RegisteredElements[i] == name then
if ESX.UI.HUD.RegisteredElements[i] == name then
found = true
found = true
break
break
end
end
end
end
if found then
if found then
return
return
end
end
table.insert(ESX.UI.HUD.RegisteredElements, name)
table.insert(ESX.UI.HUD.RegisteredElements, name)
SendNUIMessage({
SendNUIMessage({
action = 'insertHUDElement',
action = 'insertHUDElement',
name = name,
name = name,
index = index,
index = index,
priority = priority,
priority = priority,
html = html,
html = html,
data = data
data = data
})
})
ESX.UI.HUD.UpdateElement(name, data)
ESX.UI.HUD.UpdateElement(name, data)
end
end
ESX.UI.HUD.RemoveElement = function(name)
ESX.UI.HUD.RemoveElement = function(name)
for i=1, #ESX.UI.HUD.RegisteredElements, 1 do
for i=1, #ESX.UI.HUD.RegisteredElements, 1 do
if ESX.UI.HUD.RegisteredElements[i] == name then
if ESX.UI.HUD.RegisteredElements[i] == name then
table.remove(ESX.UI.HUD.RegisteredElements, i)
table.remove(ESX.UI.HUD.RegisteredElements, i)
break
break
end
end
end
end
SendNUIMessage({
SendNUIMessage({
action = 'deleteHUDElement',
action = 'deleteHUDElement',
name = name
name = name
})
})
end
end
ESX.UI.HUD.UpdateElement = function(name, data)
ESX.UI.HUD.UpdateElement = function(name, data)
SendNUIMessage({
SendNUIMessage({
action = 'updateHUDElement',
action = 'updateHUDElement',
name = name,
name = name,
data = data
data = data
})
})
end
end
ESX.UI.Menu.RegisterType = function(type, open, close)
ESX.UI.Menu.RegisterType = function(type, open, close)
ESX.UI.Menu.RegisteredTypes[type] = {
ESX.UI.Menu.RegisteredTypes[type] = {
open = open,
open = open,
close = close
close = close
}
}
end
end
ESX.UI.Menu.Open = function(type, namespace, name, data, submit, cancel, change, close)
ESX.UI.Menu.Open = function(type, namespace, name, data, submit, cancel, change, close)
local menu = {}
local menu = {}
menu.type = type
menu.type = type
menu.namespace = namespace
menu.namespace = namespace
menu.name = name
menu.name = name
menu.data = data
menu.data = data
menu.submit = submit
menu.submit = submit
menu.cancel = cancel
menu.cancel = cancel
menu.change = change
menu.change = change
menu.close = function()
menu.close = function()
ESX.UI.Menu.RegisteredTypes[type].close(namespace, name)
ESX.UI.Menu.RegisteredTypes[type].close(namespace, name)
for i=1, #ESX.UI.Menu.Opened, 1 do
for i=1, #ESX.UI.Menu.Opened, 1 do
if ESX.UI.Menu.Opened[i] ~= nil then
if ESX.UI.Menu.Opened[i] ~= nil then
if ESX.UI.Menu.Opened[i].type == type and ESX.UI.Menu.Opened[i].namespace == namespace and ESX.UI.Menu.Opened[i].name == name then
if ESX.UI.Menu.Opened[i].type == type and ESX.UI.Menu.Opened[i].namespace == namespace and ESX.UI.Menu.Opened[i].name == name then
ESX.UI.Menu.Opened[i] = nil
ESX.UI.Menu.Opened[i] = nil
end
end
end
end
end
end
if close ~= nil then
if close ~= nil then
close()
close()
end
end
end
end
menu.update = function(query, newData)
menu.update = function(query, newData)
for i=1, #menu.data.elements, 1 do
for i=1, #menu.data.elements, 1 do
local match = true
local match = true
for k,v in pairs(query) do
for k,v in pairs(query) do
if menu.data.elements[i][k] ~= v then
if menu.data.elements[i][k] ~= v then
match = false
match = false
end
end
end
end
if match then
if match then
for k,v in pairs(newData) do
for k,v in pairs(newData) do
menu.data.elements[i][k] = v
menu.data.elements[i][k] = v
end
end
end
end
end
end
end
end
menu.refresh = function()
menu.refresh = function()
ESX.UI.Menu.RegisteredTypes[type].open(namespace, name, menu.data)
ESX.UI.Menu.RegisteredTypes[type].open(namespace, name, menu.data)
end
end
menu.setElement = function(i, key, val)
menu.setElement = function(i, key, val)
menu.data.elements[i][key] = val
menu.data.elements[i][key] = val
end
end
menu.setTitle = function(val)
menu.setTitle = function(val)
menu.data.title = val
menu.data.title = val
end
end
menu.removeElement = function(query)
menu.removeElement = function(query)
for i=1, #menu.data.elements, 1 do
for i=1, #menu.data.elements, 1 do
for k,v in pairs(query) do
for k,v in pairs(query) do
if menu.data.elements[i] then
if menu.data.elements[i] then
if menu.data.elements[i][k] == v then
if menu.data.elements[i][k] == v then
table.remove(menu.data.elements, i)
table.remove(menu.data.elements, i)
break
break
end
end
end
end
end
end
end
end
end
end
table.insert(ESX.UI.Menu.Opened, menu)
table.insert(ESX.UI.Menu.Opened, menu)
ESX.UI.Menu.RegisteredTypes[type].open(namespace, name, data)
ESX.UI.Menu.RegisteredTypes[type].open(namespace, name, data)
return menu
return menu
end
end
ESX.UI.Menu.Close = function(type, namespace, name)
ESX.UI.Menu.Close = function(type, namespace, name)
for i=1, #ESX.UI.Menu.Opened, 1 do
for i=1, #ESX.UI.Menu.Opened, 1 do
if ESX.UI.Menu.Opened[i] ~= nil then
if ESX.UI.Menu.Opened[i] ~= nil then
if ESX.UI.Menu.Opened[i].type == type and ESX.UI.Menu.Opened[i].namespace == namespace and ESX.UI.Menu.Opened[i].name == name then
if ESX.UI.Menu.Opened[i].type == type and ESX.UI.Menu.Opened[i].namespace == namespace and ESX.UI.Menu.Opened[i].name == name then
ESX.UI.Menu.Opened[i].close()
ESX.UI.Menu.Opened[i].close()
ESX.UI.Menu.Opened[i] = nil
ESX.UI.Menu.Opened[i] = nil
end
end
end
end
end
end
end
end
ESX.UI.Menu.CloseAll = function()
ESX.UI.Menu.CloseAll = function()
for i=1, #ESX.UI.Menu.Opened, 1 do
for i=1, #ESX.UI.Menu.Opened, 1 do
if ESX.UI.Menu.Opened[i] ~= nil then
if ESX.UI.Menu.Opened[i] ~= nil then
ESX.UI.Menu.Opened[i].close()
ESX.UI.Menu.Opened[i].close()
ESX.UI.Menu.Opened[i] = nil
ESX.UI.Menu.Opened[i] = nil
end
end
end
end
end
end
ESX.UI.Menu.GetOpened = function(type, namespace, name)
ESX.UI.Menu.GetOpened = function(type, namespace, name)
for i=1, #ESX.UI.Menu.Opened, 1 do
for i=1, #ESX.UI.Menu.Opened, 1 do
if ESX.UI.Menu.Opened[i] ~= nil then
if ESX.UI.Menu.Opened[i] ~= nil then
if ESX.UI.Menu.Opened[i].type == type and ESX.UI.Menu.Opened[i].namespace == namespace and ESX.UI.Menu.Opened[i].name == name then
if ESX.UI.Menu.Opened[i].type == type and ESX.UI.Menu.Opened[i].namespace == namespace and ESX.UI.Menu.Opened[i].name == name then
return ESX.UI.Menu.Opened[i]
return ESX.UI.Menu.Opened[i]
end
end
end
end
end
end
end
end
ESX.UI.Menu.GetOpenedMenus = function()
ESX.UI.Menu.GetOpenedMenus = function()
return ESX.UI.Menu.Opened
return ESX.UI.Menu.Opened
end
end
ESX.UI.Menu.IsOpen = function(type, namespace, name)
ESX.UI.Menu.IsOpen = function(type, namespace, name)
return ESX.UI.Menu.GetOpened(type, namespace, name) ~= nil
return ESX.UI.Menu.GetOpened(type, namespace, name) ~= nil
end
end
ESX.UI.ShowInventoryItemNotification = function(add, item, count)
ESX.UI.ShowInventoryItemNotification = function(add, item, count)
SendNUIMessage({
SendNUIMessage({
action = 'inventoryNotification',
action = 'inventoryNotification',
add = add,
add = add,
item = item,
item = item,
count = count
count = count
})
})
end
end
ESX.Game.GetPedMugshot = function(ped)
ESX.Game.GetPedMugshot = function(ped)
local mugshot = RegisterPedheadshot(ped)
local mugshot = RegisterPedheadshot(ped)
while not IsPedheadshotReady(mugshot) do
while not IsPedheadshotReady(mugshot) do
Citizen.Wait(0)
Citizen.Wait(0)
end
end
return mugshot, GetPedheadshotTxdString(mugshot)
return mugshot, GetPedheadshotTxdString(mugshot)
end
end
ESX.Game.Teleport = function(entity, coords, cb)
ESX.Game.Teleport = function(entity, coords, cb)
RequestCollisionAtCoord(coords.x, coords.y, coords.z)
RequestCollisionAtCoord(coords.x, coords.y, coords.z)
while not HasCollisionLoadedAroundEntity(entity) do
while not HasCollisionLoadedAroundEntity(entity) do
RequestCollisionAtCoord(coords.x, coords.y, coords.z)
RequestCollisionAtCoord(coords.x, coords.y, coords.z)
Citizen.Wait(0)
Citizen.Wait(0)
end
end
SetEntityCoords(entity, coords.x, coords.y, coords.z)
SetEntityCoords(entity, coords.x, coords.y, coords.z)
if cb ~= nil then
if cb ~= nil then
cb()
cb()
end
end
end
end
ESX.Game.SpawnObject = function(model, coords, cb)
ESX.Game.SpawnObject = function(model, coords, cb)
local model = (type(model) == 'number' and model or GetHashKey(model))
local model = (type(model) == 'number' and model or GetHashKey(model))
Citizen.CreateThread(function()
Citizen.CreateThread(function()
ESX.Streaming.RequestModel(model)
ESX.Streaming.RequestModel(model)
local obj = CreateObject(model, coords.x, coords.y, coords.z, true, false, true)
local obj = CreateObject(model, coords.x, coords.y, coords.z, true, false, true)
if cb ~= nil then
if cb ~= nil then
cb(obj)
cb(obj)
end
end
end)
end)
end
end
ESX.Game.SpawnLocalObject = function(model, coords, cb)
ESX.Game.SpawnLocalObject = function(model, coords, cb)
local model = (type(model) == 'number' and model or GetHashKey(model))
local model = (type(model) == 'number' and model or GetHashKey(model))
Citizen.CreateThread(function()
Citizen.CreateThread(function()
ESX.Streaming.RequestModel(model)
ESX.Streaming.RequestModel(model)
local obj = CreateObject(model, coords.x, coords.y, coords.z, false, false, true)
local obj = CreateObject(model, coords.x, coords.y, coords.z, false, false, true)
if cb ~= nil then
if cb ~= nil then
cb(obj)
cb(obj)
end
end
end)
end)
end
end
ESX.Game.DeleteVehicle = function(vehicle)
ESX.Game.DeleteVehicle = function(vehicle)
SetEntityAsMissionEntity(vehicle, false, true)
SetEntityAsMissionEntity(vehicle, false, true)
DeleteVehicle(vehicle)
DeleteVehicle(vehicle)
end
end
ESX.Game.DeleteObject = function(object)
ESX.Game.DeleteObject = function(object)
SetEntityAsMissionEntity(object, false, true)
SetEntityAsMissionEntity(object, false, true)
DeleteObject(object)
DeleteObject(object)
end
end
ESX.Game.SpawnVehicle = function(modelName, coords, heading, cb)
ESX.Game.SpawnVehicle = function(modelName, coords, heading, cb)
local model = (type(modelName) == 'number' and modelName or GetHashKey(modelName))
local model = (type(modelName) == 'number' and modelName or GetHashKey(modelName))
Citizen.CreateThread(function()
Citizen.CreateThread(function()
ESX.Streaming.RequestModel(model)
ESX.Streaming.RequestModel(model)
local vehicle = CreateVehicle(model, coords.x, coords.y, coords.z, heading, true, false)
local vehicle = CreateVehicle(model, coords.x, coords.y, coords.z, heading, true, false)
local id = NetworkGetNetworkIdFromEntity(vehicle)
local id = NetworkGetNetworkIdFromEntity(vehicle)
SetNetworkIdCanMigrate(id, true)
SetNetworkIdCanMigrate(id, true)
SetEntityAsMissionEntity(vehicle, true, false)
SetEntityAsMissionEntity(vehicle, true, false)
SetVehicleHasBeenOwnedByPlayer(vehicle, true)
SetVehicleHasBeenOwnedByPlayer(vehicle, true)
SetVehicleNeedsToBeHotwired(vehicle, false)
SetVehicleNeedsToBeHotwired(vehicle, false)
SetModelAsNoLongerNeeded(model)
SetModelAsNoLongerNeeded(model)
RequestCollisionAtCoord(coords.x, coords.y, coords.z)
RequestCollisionAtCoord(coords.x, coords.y, coords.z)
while not HasCollisionLoadedAroundEntity(vehicle) do
while not HasCollisionLoadedAroundEntity(vehicle) do
RequestCollisionAtCoord(coords.x, coords.y, coords.z)
RequestCollisionAtCoord(coords.x, coords.y, coords.z)
Citizen.Wait(0)
Citizen.Wait(0)
end
end
SetVehRadioStation(vehicle, 'OFF')
SetVehRadioStation(vehicle, 'OFF')
if cb ~= nil then
if cb ~= nil then
cb(vehicle)
cb(vehicle)
end
end
end)
end)
end
end
ESX.Game.SpawnLocalVehicle = function(modelName, coords, heading, cb)
ESX.Game.SpawnLocalVehicle = function(modelName, coords, heading, cb)
local model = (type(modelName) == 'number' and modelName or GetHashKey(modelName))
local model = (type(modelName) == 'number' and modelName or GetHashKey(modelName))
Citizen.CreateThread(function()
Citizen.CreateThread(function()
ESX.Streaming.RequestModel(model)
ESX.Streaming.RequestModel(model)
local vehicle = CreateVehicle(model, coords.x, coords.y, coords.z, heading, false, false)
local vehicle = CreateVehicle(model, coords.x, coords.y, coords.z, heading, false, false)
SetEntityAsMissionEntity(vehicle, true, false)
SetEntityAsMissionEntity(vehicle, true, false)
SetVehicleHasBeenOwnedByPlayer(vehicle, true)
SetVehicleHasBeenOwnedByPlayer(vehicle, true)
SetVehicleNeedsToBeHotwired(vehicle, false)
SetVehicleNeedsToBeHotwired(vehicle, false)
SetModelAsNoLongerNeeded(model)
SetModelAsNoLongerNeeded(model)
RequestCollisionAtCoord(coords.x, coords.y, coords.z)
RequestCollisionAtCoord(coords.x, coords.y, coords.z)
while not HasCollisionLoadedAroundEntity(vehicle) do
while not HasCollisionLoadedAroundEntity(vehicle) do
RequestCollisionAtCoord(coords.x, coords.y, coords.z)
RequestCollisionAtCoord(coords.x, coords.y, coords.z)
Citizen.Wait(0)
Citizen.Wait(0)
end
end
SetVehRadioStation(vehicle, 'OFF')
SetVehRadioStation(vehicle, 'OFF')
if cb ~= nil then
if cb ~= nil then
cb(vehicle)
cb(vehicle)
end
end
end)
end)
end
end
ESX.Game.IsVehicleEmpty = function(vehicle)
ESX.Game.IsVehicleEmpty = function(vehicle)
local passengers = GetVehicleNumberOfPassengers(vehicle)
local passengers = GetVehicleNumberOfPassengers(vehicle)
local driverSeatFree = IsVehicleSeatFree(vehicle, -1)
local driverSeatFree = IsVehicleSeatFree(vehicle, -1)
return passengers == 0 and driverSeatFree
return passengers == 0 and driverSeatFree
end
end
ESX.Game.GetObjects = function()
ESX.Game.GetObjects = function()
local objects = {}
local objects = {}
for object in EnumerateObjects() do
for object in EnumerateObjects() do
table.insert(objects, object)
table.insert(objects, object)
end
end
return objects
return objects
end
end
ESX.Game.GetClosestObject = function(filter, coords)
ESX.Game.GetClosestObject = function(filter, coords)
local objects = ESX.Game.GetObjects()
local objects = ESX.Game.GetObjects()
local closestDistance = -1
local closestDistance = -1
local closestObject = -1
local closestObject = -1
local filter = filter
local filter = filter
local coords = coords
local coords = coords
if type(filter) == 'string' then
if type(filter) == 'string' then
if filter ~= '' then
if filter ~= '' then
filter = {filter}
filter = {filter}
end
end
end
end
if coords == nil then
if coords == nil then
local playerPed = PlayerPedId()
local playerPed = PlayerPedId()
coords = GetEntityCoords(playerPed)
coords = GetEntityCoords(playerPed)
end
end
for i=1, #objects, 1 do
for i=1, #objects, 1 do
local foundObject = false
local foundObject = false
if filter == nil or (type(filter) == 'table' and #filter == 0) then
if filter == nil or (type(filter) == 'table' and #filter == 0) then
foundObject = true
foundObject = true
else
else
local objectModel = GetEntityModel(objects[i])
local objectModel = GetEntityModel(objects[i])
for j=1, #filter, 1 do
for j=1, #filter, 1 do
if objectModel == GetHashKey(filter[j]) then
if objectModel == GetHashKey(filter[j]) then
foundObject = true
foundObject = true
end
end
end
end
end
end
if foundObject then
if foundObject then
local objectCoords = GetEntityCoords(objects[i])
local objectCoords = GetEntityCoords(objects[i])
local distance = GetDistanceBetweenCoords(objectCoords, coords.x, coords.y, coords.z, true)
local distance = GetDistanceBetweenCoords(objectCoords, coords.x, coords.y, coords.z, true)
if closestDistance == -1 or closestDistance > distance then
if closestDistance == -1 or closestDistance > distance then
closestObject = objects[i]
closestObject = objects[i]
closestDistance = distance
closestDistance = distance
end
end
end
end
end
end
return closestObject, closestDistance
return closestObject, closestDistance
end
end
ESX.Game.GetPlayers = function()
ESX.Game.GetPlayers = function()
local players = {}
local players = {}
for _,player in ipairs(GetActivePlayers()) do
for _,player in ipairs(GetActivePlayers()) do
local ped = GetPlayerPed(player)
local ped = GetPlayerPed(player)
if DoesEntityExist(ped) then
if DoesEntityExist(ped) then
table.insert(players, player)
table.insert(players, player)
end
end
end
end
return players
return players
end
end
ESX.Game.GetClosestPlayer = function(coords)
ESX.Game.GetClosestPlayer = function(coords)
local players = ESX.Game.GetPlayers()
local players = ESX.Game.GetPlayers()
local closestDistance = -1
local closestDistance = -1
local closestPlayer = -1
local closestPlayer = -1
local coords = coords
local coords = coords
local usePlayerPed = false
local usePlayerPed = false
local playerPed = PlayerPedId()
local playerPed = PlayerPedId()
local playerId = PlayerId()
local playerId = PlayerId()
if coords == nil then
if coords == nil then
usePlayerPed = true
usePlayerPed = true
coords = GetEntityCoords(playerPed)
coords = GetEntityCoords(playerPed)
end
end
for i=1, #players, 1 do
for i=1, #players, 1 do
local target = GetPlayerPed(players[i])
local target = GetPlayerPed(players[i])
if not usePlayerPed or (usePlayerPed and players[i] ~= playerId) then
if not usePlayerPed or (usePlayerPed and players[i] ~= playerId) then
local targetCoords = GetEntityCoords(target)
local targetCoords = GetEntityCoords(target)
local distance = GetDistanceBetweenCoords(targetCoords, coords.x, coords.y, coords.z, true)
local distance = GetDistanceBetweenCoords(targetCoords, coords.x, coords.y, coords.z, true)
if closestDistance == -1 or closestDistance > distance then
if closestDistance == -1 or closestDistance > distance then
closestPlayer = players[i]
closestPlayer = players[i]
closestDistance = distance
closestDistance = distance
end
end
end
end
end
end
return closestPlayer, closestDistance
return closestPlayer, closestDistance
end
end
ESX.Game.GetPlayersInArea = function(coords, area)
ESX.Game.GetPlayersInArea = function(coords, area)
local players = ESX.Game.GetPlayers()
local players = ESX.Game.GetPlayers()
local playersInArea = {}
local playersInArea = {}
for i=1, #players, 1 do
for i=1, #players, 1 do
local target = GetPlayerPed(players[i])
local target = GetPlayerPed(players[i])
local targetCoords = GetEntityCoords(target)
local targetCoords = GetEntityCoords(target)
local distance = GetDistanceBetweenCoords(targetCoords, coords.x, coords.y, coords.z, true)
local distance = GetDistanceBetweenCoords(targetCoords, coords.x, coords.y, coords.z, true)
if distance <= area then
if distance <= area then
table.insert(playersInArea, players[i])
table.insert(playersInArea, players[i])
end
end
end
end
return playersInArea
return playersInArea
end
end
ESX.Game.GetVehicles = function()
ESX.Game.GetVehicles = function()
local vehicles = {}
local vehicles = {}
for vehicle in EnumerateVehicles() do
for vehicle in EnumerateVehicles() do
table.insert(vehicles, vehicle)
table.insert(vehicles, vehicle)
end
end
return vehicles
return vehicles
end
end
ESX.Game.GetClosestVehicle = function(coords)
ESX.Game.GetClosestVehicle = function(coords)
local vehicles = ESX.Game.GetVehicles()
local vehicles = ESX.Game.GetVehicles()
local closestDistance = -1
local closestDistance = -1
local closestVehicle = -1
local closestVehicle = -1
local coords = coords
local coords = coords
if coords == nil then
if coords == nil then
local playerPed = PlayerPedId()
local playerPed = PlayerPedId()
coords = GetEntityCoords(playerPed)
coords = GetEntityCoords(playerPed)
end
end
for i=1, #vehicles, 1 do
for i=1, #vehicles, 1 do
local vehicleCoords = GetEntityCoords(vehicles[i])
local vehicleCoords = GetEntityCoords(vehicles[i])
local distance = GetDistanceBetweenCoords(vehicleCoords, coords.x, coords.y, coords.z, true)
local distance = GetDistanceBetweenCoords(vehicleCoords, coords.x, coords.y, coords.z, true)
if closestDistance == -1 or closestDistance > distance then
if closestDistance == -1 or closestDistance > distance then
closestVehicle = vehicles[i]
closestVehicle = vehicles[i]
closestDistance = distance
closestDistance = distance
end
end
end
end
return closestVehicle, closestDistance
return closestVehicle, closestDistance
end
end
ESX.Game.GetVehiclesInArea = function(coords, area)
ESX.Game.GetVehiclesInArea = function(coords, area)
local vehicles = ESX.Game.GetVehicles()
local vehicles = ESX.Game.GetVehicles()
local vehiclesInArea = {}
local vehiclesInArea = {}
for i=1, #vehicles, 1 do
for i=1, #vehicles, 1 do
local vehicleCoords = GetEntityCoords(vehicles[i])
local vehicleCoords = GetEntityCoords(vehicles[i])
local distance = GetDistanceBetweenCoords(vehicleCoords, coords.x, coords.y, coords.z, true)
local distance = GetDistanceBetweenCoords(vehicleCoords, coords.x, coords.y, coords.z, true)
if distance <= area then
if distance <= area then
table.insert(vehiclesInArea, vehicles[i])
table.insert(vehiclesInArea, vehicles[i])
end
end
end
end
return vehiclesInArea
return vehiclesInArea
end
end
ESX.Game.GetVehicleInDirection = function()
ESX.Game.GetVehicleInDirection = function()
local playerPed = PlayerPedId()
local playerPed = PlayerPedId()
local playerCoords = GetEntityCoords(playerPed)
local playerCoords = GetEntityCoords(playerPed)
local inDirection = GetOffsetFromEntityInWorldCoords(playerPed, 0.0, 5.0, 0.0)
local inDirection = GetOffsetFromEntityInWorldCoords(playerPed, 0.0, 5.0, 0.0)
local rayHandle = StartShapeTestRay(playerCoords, inDirection, 10, playerPed, 0)
local rayHandle = StartShapeTestRay(playerCoords, inDirection, 10, playerPed, 0)
local numRayHandle, hit, endCoords, surfaceNormal, entityHit = GetShapeTestResult(rayHandle)
local numRayHandle, hit, endCoords, surfaceNormal, entityHit = GetShapeTestResult(rayHandle)
if hit == 1 and GetEntityType(entityHit) == 2 then
if hit == 1 and GetEntityType(entityHit) == 2 then
return entityHit
return entityHit
end
end
return nil
return nil
end
end
ESX.Game.IsSpawnPointClear = function(coords, radius)
ESX.Game.IsSpawnPointClear = function(coords, radius)
local vehicles = ESX.Game.GetVehiclesInArea(coords, radius)
local vehicles = ESX.Game.GetVehiclesInArea(coords, radius)
return #vehicles == 0
return #vehicles == 0
end
end
ESX.Game.GetPeds = function(ignoreList)
ESX.Game.GetPeds = function(ignoreList)
local ignoreList = ignoreList or {}
local ignoreList = ignoreList or {}
local peds = {}
local peds = {}
for ped in EnumeratePeds() do
for ped in EnumeratePeds() do
local found = false
local found = false
for j=1, #ignoreList, 1 do
for j=1, #ignoreList, 1 do
if ignoreList[j] == ped then
if ignoreList[j] == ped then
found = true
found = true
end
end
end
end
if not found then
if not found then
table.insert(peds, ped)
table.insert(peds, ped)
end
end
end
end
return peds
return peds
end
end
ESX.Game.GetClosestPed = function(coords, ignoreList)
ESX.Game.GetClosestPed = function(coords, ignoreList)
local ignoreList = ignoreList or {}
local ignoreList = ignoreList or {}
local peds = ESX.Game.GetPeds(ignoreList)
local peds = ESX.Game.GetPeds(ignoreList)
local closestDistance = -1
local closestDistance = -1
local closestPed = -1
local closestPed = -1
for i=1, #peds, 1 do
for i=1, #peds, 1 do
local pedCoords = GetEntityCoords(peds[i])
local pedCoords = GetEntityCoords(peds[i])
local distance = GetDistanceBetweenCoords(pedCoords, coords.x, coords.y, coords.z, true)
local distance = GetDistanceBetweenCoords(pedCoords, coords.x, coords.y, coords.z, true)
if closestDistance == -1 or closestDistance > distance then
if closestDistance == -1 or closestDistance > distance then
closestPed = peds[i]
closestPed = peds[i]
closestDistance = distance
closestDistance = distance
end
end
end
end
return closestPed, closestDistance
return closestPed, closestDistance
end
end
ESX.Game.GetVehicleProperties = function(vehicle)
ESX.Game.GetVehicleProperties = function(vehicle)
local color1, color2 = GetVehicleColours(vehicle)
local color1, color2 = GetVehicleColours(vehicle)
local pearlescentColor, wheelColor = GetVehicleExtraColours(vehicle)
local pearlescentColor, wheelColor = GetVehicleExtraColours(vehicle)
local extras = {}
local extras = {}
for id=0, 12 do
for id=0, 12 do
if DoesExtraExist(vehicle, id) then
if DoesExtraExist(vehicle, id) then
local state = IsVehicleExtraTurnedOn(vehicle, id) == 1
local state = IsVehicleExtraTurnedOn(vehicle, id) == 1
extras[tostring(id)] = state
extras[tostring(id)] = state
end
end
end
end
return {
return {
model = GetEntityModel(vehicle),
model = GetEntityModel(vehicle),
plate = ESX.Math.Trim(GetVehicleNumberPlateText(vehicle)),
plate = ESX.Math.Trim(GetVehicleNumberPlateText(vehicle)),
plateIndex = GetVehicleNumberPlateTextIndex(vehicle),
plateIndex = GetVehicleNumberPlateTextIndex(vehicle),
bodyHealth = ESX.Math.Round(GetVehicleBodyHealth(vehicle), 1),
bodyHealth = ESX.Math.Round(GetVehicleBodyHealth(vehicle), 1),
engineHealth = ESX.Math.Round(GetVehicleEngineHealth(vehicle), 1),
engineHealth = ESX.Math.Round(GetVehicleEngineHealth(vehicle), 1),
fuelLevel = ESX.Math.Round(GetVehicleFuelLevel(vehicle), 1),
fuelLevel = ESX.Math.Round(GetVehicleFuelLevel(vehicle), 1),
dirtLevel = ESX.Math.Round(GetVehicleDirtLevel(vehicle), 1),
dirtLevel = ESX.Math.Round(GetVehicleDirtLevel(vehicle), 1),
color1 = color1,
color1 = color1,
color2 = color2,
color2 = color2,
pearlescentColor = pearlescentColor,
pearlescentColor = pearlescentColor,
wheelColor = wheelColor,
wheelColor = wheelColor,
wheels = GetVehicleWheelType(vehicle),
wheels = GetVehicleWheelType(vehicle),
windowTint = GetVehicleWindowTint(vehicle),
windowTint = GetVehicleWindowTint(vehicle),
neonEnabled = {
neonEnabled = {
IsVehicleNeonLightEnabled(vehicle, 0),
IsVehicleNeonLightEnabled(vehicle, 0),
IsVehicleNeonLightEnabled(vehicle, 1),
IsVehicleNeonLightEnabled(vehicle, 1),
IsVehicleNeonLightEnabled(vehicle, 2),
IsVehicleNeonLightEnabled(vehicle, 2),
IsVehicleNeonLightEnabled(vehicle, 3)
IsVehicleNeonLightEnabled(vehicle, 3)
},
},
extras = extras,
extras = extras,
neonColor = table.pack(GetVehicleNeonLightsColour(vehicle)),
neonColor = table.pack(GetVehicleNeonLightsColour(vehicle)),
tyreSmokeColor = table.pack(GetVehicleTyreSmokeColor(vehicle)),
tyreSmokeColor = table.pack(GetVehicleTyreSmokeColor(vehicle)),
modSpoilers = GetVehicleMod(vehicle, 0),
modSpoilers = GetVehicleMod(vehicle, 0),
modFrontBumper = GetVehicleMod(vehicle, 1),
modFrontBumper = GetVehicleMod(vehicle, 1),
modRearBumper = GetVehicleMod(vehicle, 2),
modRearBumper = GetVehicleMod(vehicle, 2),
modSideSkirt = GetVehicleMod(vehicle, 3),
modSideSkirt = GetVehicleMod(vehicle, 3),
modExhaust = GetVehicleMod(vehicle, 4),
modExhaust = GetVehicleMod(vehicle, 4),
modFrame = GetVehicleMod(vehicle, 5),
modFrame = GetVehicleMod(vehicle, 5),
modGrille = GetVehicleMod(vehicle, 6),
modGrille = GetVehicleMod(vehicle, 6),
modHood = GetVehicleMod(vehicle, 7),
modHood = GetVehicleMod(vehicle, 7),
modFender = GetVehicleMod(vehicle, 8),
modFender = GetVehicleMod(vehicle, 8),
modRightFender = GetVehicleMod(vehicle, 9),
modRightFender = GetVehicleMod(vehicle, 9),
modRoof = GetVehicleMod(vehicle, 10),
modRoof = GetVehicleMod(vehicle, 10),
modEngine = GetVehicleMod(vehicle, 11),
modEngine = GetVehicleMod(vehicle, 11),
modBrakes = GetVehicleMod(vehicle, 12),
modBrakes = GetVehicleMod(vehicle, 12),
modTransmission = GetVehicleMod(vehicle, 13),
modTransmission = GetVehicleMod(vehicle, 13),
modHorns = GetVehicleMod(vehicle, 14),
modHorns = GetVehicleMod(vehicle, 14),
modSuspension = GetVehicleMod(vehicle, 15),
modSuspension = GetVehicleMod(vehicle, 15),
modArmor = GetVehicleMod(vehicle, 16),
modArmor = GetVehicleMod(vehicle, 16),
modTurbo = IsToggleModOn(vehicle, 18),
modTurbo = IsToggleModOn(vehicle, 18),
modSmokeEnabled = IsToggleModOn(vehicle, 20),
modSmokeEnabled = IsToggleModOn(vehicle, 20),
modXenon = IsToggleModOn(vehicle, 22),
modXenon = IsToggleModOn(vehicle, 22),
modFrontWheels = GetVehicleMod(vehicle, 23),
modFrontWheels = GetVehicleMod(vehicle, 23),
modBackWheels = GetVehicleMod(vehicle, 24),
modBackWheels = GetVehicleMod(vehicle, 24),
modPlateHolder = GetVehicleMod(vehicle, 25),
modPlateHolder = GetVehicleMod(vehicle, 25),
modVanityPlate = GetVehicleMod(vehicle, 26),
modVanityPlate = GetVehicleMod(vehicle, 26),
modTrimA = GetVehicleMod(vehicle, 27),
modTrimA = GetVehicleMod(vehicle, 27),
modOrnaments = GetVehicleMod(vehicle, 28),
modOrnaments = GetVehicleMod(vehicle, 28),
modDashboard = GetVehicleMod(vehicle, 29),
modDashboard = GetVehicleMod(vehicle, 29),
modDial = GetVehicleMod(vehicle, 30),
modDial = GetVehicleMod(vehicle, 30),
modDoorSpeaker = GetVehicleMod(vehicle, 31),
modDoorSpeaker = GetVehicleMod(vehicle, 31),
modSeats = GetVehicleMod(vehicle, 32),
modSeats = GetVehicleMod(vehicle, 32),
modSteeringWheel = GetVehicleMod(vehicle, 33),
modSteeringWheel = GetVehicleMod(vehicle, 33),
modShifterLeavers = GetVehicleMod(vehicle, 34),
modShifterLeavers = GetVehicleMod(vehicle, 34),
modAPlate = GetVehicleMod(vehicle, 35),
modAPlate = GetVehicleMod(vehicle, 35),
modSpeakers = GetVehicleMod(vehicle, 36),
modSpeakers = GetVehicleMod(vehicle, 36),
modTrunk = GetVehicleMod(vehicle, 37),
modTrunk = GetVehicleMod(vehicle, 37),
modHydrolic = GetVehicleMod(vehicle, 38),
modHydrolic = GetVehicleMod(vehicle, 38),
modEngineBlock = GetVehicleMod(vehicle, 39),
modEngineBlock = GetVehicleMod(vehicle, 39),
modAirFilter = GetVehicleMod(vehicle, 40),
modAirFilter = GetVehicleMod(vehicle, 40),
modStruts = GetVehicleMod(vehicle, 41),
modStruts = GetVehicleMod(vehicle, 41),
modArchCover = GetVehicleMod(vehicle, 42),
modArchCover = GetVehicleMod(vehicle, 42),
modAerials = GetVehicleMod(vehicle, 43),
modAerials = GetVehicleMod(vehicle, 43),
modTrimB = GetVehicleMod(vehicle, 44),
modTrimB = GetVehicleMod(vehicle, 44),
modTank = GetVehicleMod(vehicle, 45),
modTank = GetVehicleMod(vehicle, 45),
modWindows = GetVehicleMod(vehicle, 46),
modWindows = GetVehicleMod(vehicle, 46),
modLivery = GetVehicleLivery(vehicle)
modLivery = GetVehicleLivery(vehicle)
}
}
end
end
ESX.Game.SetVehicleProperties = function(vehicle, props)
ESX.Game.SetVehicleProperties = function(vehicle, props)
SetVehicleModKit(vehicle, 0)
SetVehicleModKit(vehicle, 0)
if props.plate ~= nil then
if props.plate ~= nil then
SetVehicleNumberPlateText(vehicle, props.plate)
SetVehicleNumberPlateText(vehicle, props.plate)
end
end
if props.plateIndex ~= nil then
if props.plateIndex ~= nil then
SetVehicleNumberPlateTextIndex(vehicle, props.plateIndex)
SetVehicleNumberPlateTextIndex(vehicle, props.plateIndex)
end
end
if props.bodyHealth ~= nil then
if props.bodyHealth ~= nil then
SetVehicleBodyHealth(vehicle, props.bodyHealth + 0.0)
SetVehicleBodyHealth(vehicle, props.bodyHealth + 0.0)
end
end
if props.engineHealth ~= nil then
if props.engineHealth ~= nil then
SetVehicleEngineHealth(vehicle, props.engineHealth + 0.0)
SetVehicleEngineHealth(vehicle, props.engineHealth + 0.0)
end
end
if props.fuelLevel ~= nil then
if props.fuelLevel ~= nil then
SetVehicleFuelLevel(vehicle, props.fuelLevel + 0.0)
SetVehicleFuelLevel(vehicle, props.fuelLevel + 0.0)
end
end
if props.dirtLevel ~= nil then
if props.dirtLevel ~= nil then
SetVehicleDirtLevel(vehicle, props.dirtLevel + 0.0)
SetVehicleDirtLevel(vehicle, props.dirtLevel + 0.0)
end
end
if props.color1 ~= nil then
if props.color1 ~= nil then
local color1, color2 = GetVehicleColours(vehicle)
local color1, color2 = GetVehicleColours(vehicle)
SetVehicleColours(vehicle, props.color1, color2)
SetVehicleColours(vehicle, props.color1, color2)
end
end
if props.color2 ~= nil then
if props.color2 ~= nil then
local color1, color2 = GetVehicleColours(vehicle)
local color1, color2 = GetVehicleColours(vehicle)
SetVehicleColours(vehicle, color1, props.color2)
SetVehicleColours(vehicle, color1, props.color2)
end
end
if props.pearlescentColor ~= nil then
if props.pearlescentColor ~= nil then
local pearlescentColor, wheelColor = GetVehicleExtraColours(vehicle)
local pearlescentColor, wheelColor = GetVehicleExtraColours(vehicle)
SetVehicleExtraColours(vehicle, props.pearlescentColor, wheelColor)
SetVehicleExtraColours(vehicle, props.pearlescentColor, wheelColor)
end
end
if props.wheelColor ~= nil then
if props.wheelColor ~= nil then
local pearlescentColor, wheelColor = GetVehicleExtraColours(vehicle)
local pearlescentColor, wheelColor = GetVehicleExtraColours(vehicle)
SetVehicleExtraColours(vehicle, pearlescentColor, props.wheelColor)
SetVehicleExtraColours(vehicle, pearlescentColor, props.wheelColor)
end
end
if props.wheels ~= nil then
if props.wheels ~= nil then
SetVehicleWheelType(vehicle, props.wheels)
SetVehicleWheelType(vehicle, props.wheels)
end
end
if props.windowTint ~= nil then
if props.windowTint ~= nil then
SetVehicleWindowTint(vehicle, props.windowTint)
SetVehicleWindowTint(vehicle, props.windowTint)
end
end
if props.neonEnabled ~= nil then
if props.neonEnabled ~= nil then
SetVehicleNeonLightEnabled(vehicle, 0, props.neonEnabled[1])
SetVehicleNeonLightEnabled(vehicle, 0, props.neonEnabled[1])
SetVehicleNeonLightEnabled(vehicle, 1, props.neonEnabled[2])
SetVehicleNeonLightEnabled(vehicle, 1, props.neonEnabled[2])
SetVehicleNeonLightEnabled(vehicle, 2, props.neonEnabled[3])
SetVehicleNeonLightEnabled(vehicle, 2, props.neonEnabled[3])
SetVehicleNeonLightEnabled(vehicle, 3, props.neonEnabled[4])
SetVehicleNeonLightEnabled(vehicle, 3, props.neonEnabled[4])
end
end
if props.extras ~= nil then
if props.extras ~= nil then
for id,enabled in pairs(props.extras) do
for id,enabled in pairs(props.extras) do
if enabled then
if enabled then
SetVehicleExtra(vehicle, tonumber(id), 0)
SetVehicleExtra(vehicle, tonumber(id), 0)
else
else
SetVehicleExtra(vehicle, tonumber(id), 1)
SetVehicleExtra(vehicle, tonumber(id), 1)
end
end
end
end
end
end
if props.neonColor ~= nil then
if props.neonColor ~= nil then
SetVehicleNeonLightsColour(vehicle, props.neonColor[1], props.neonColor[2], props.neonColor[3])
SetVehicleNeonLightsColour(vehicle, props.neonColor[1], props.neonColor[2], props.neonColor[3])
end
end
if props.modSmokeEnabled ~= nil then
if props.modSmokeEnabled ~= nil then
ToggleVehicleMod(vehicle, 20, true)
ToggleVehicleMod(vehicle, 20, true)
end
end
if props.tyreSmokeColor ~= nil then
if props.tyreSmokeColor ~= nil then
SetVehicleTyreSmokeColor(vehicle, props.tyreSmokeColor[1], props.tyreSmokeColor[2], props.tyreSmokeColor[3])
SetVehicleTyreSmokeColor(vehicle, props.tyreSmokeColor[1], props.tyreSmokeColor[2], props.tyreSmokeColor[3])
end
end
if props.modSpoilers ~= nil then
if props.modSpoilers ~= nil then
SetVehicleMod(vehicle, 0, props.modSpoilers, false)
SetVehicleMod(vehicle, 0, props.modSpoilers, false)
end
end
if props.modFrontBumper ~= nil then
if props.modFrontBumper ~= nil then
SetVehicleMod(vehicle, 1, props.modFrontBumper, false)
SetVehicleMod(vehicle, 1, props.modFrontBumper, false)
end
end
if props.modRearBumper ~= nil then
if props.modRearBumper ~= nil then
SetVehicleMod(vehicle, 2, props.modRearBumper, false)
SetVehicleMod(vehicle, 2, props.modRearBumper, false)
end
end
if props.modSideSkirt ~= nil then
if props.modSideSkirt ~= nil then
SetVehicleMod(vehicle, 3, props.modSideSkirt, false)
SetVehicleMod(vehicle, 3, props.modSideSkirt, false)
end
end
if props.modExhaust ~= nil then
if props.modExhaust ~= nil then
SetVehicleMod(vehicle, 4, props.modExhaust, false)
SetVehicleMod(vehicle, 4, props.modExhaust, false)
end
end
if props.modFrame ~= nil then
if props.modFrame ~= nil then
SetVehicleMod(vehicle, 5, props.modFrame, false)
SetVehicleMod(vehicle, 5, props.modFrame, false)
end
end
if props.modGrille ~= nil then
if props.modGrille ~= nil then
SetVehicleMod(vehicle, 6, props.modGrille, false)
SetVehicleMod(vehicle, 6, props.modGrille, false)
end
end
if props.modHood ~= nil then
if props.modHood ~= nil then
SetVehicleMod(vehicle, 7, props.modHood, false)
SetVehicleMod(vehicle, 7, props.modHood, false)
end
end
if props.modFender ~= nil then
if props.modFender ~= nil then
SetVehicleMod(vehicle, 8, props.modFender, false)
SetVehicleMod(vehicle, 8, props.modFender, false)
end
end
if props.modRightFender ~= nil then
if props.modRightFender ~= nil then
SetVehicleMod(vehicle, 9, props.modRightFender, false)
SetVehicleMod(vehicle, 9, props.modRightFender, false)
end
end
if props.modRoof ~= nil then
if props.modRoof ~= nil then
SetVehicleMod(vehicle, 10, props.modRoof, false)
SetVehicleMod(vehicle, 10, props.modRoof, false)
end
end
if props.modEngine ~= nil then
if props.modEngine ~= nil then
SetVehicleMod(vehicle, 11, props.modEngine, false)
SetVehicleMod(vehicle, 11, props.modEngine, false)
end
end
if props.modBrakes ~= nil then
if props.modBrakes ~= nil then
SetVehicleMod(vehicle, 12, props.modBrakes, false)
SetVehicleMod(vehicle, 12, props.modBrakes, false)
end
end
if props.modTransmission ~= nil then
if props.modTransmission ~= nil then
SetVehicleMod(vehicle, 13, props.modTransmission, false)
SetVehicleMod(vehicle, 13, props.modTransmission, false)
end
end
if props.modHorns ~= nil then
if props.modHorns ~= nil then
SetVehicleMod(vehicle, 14, props.modHorns, false)
SetVehicleMod(vehicle, 14, props.modHorns, false)
end
end
if props.modSuspension ~= nil then
if props.modSuspension ~= nil then
SetVehicleMod(vehicle, 15, props.modSuspension, false)
SetVehicleMod(vehicle, 15, props.modSuspension, false)
end
end
if props.modArmor ~= nil then
if props.modArmor ~= nil then
SetVehicleMod(vehicle, 16, props.modArmor, false)
SetVehicleMod(vehicle, 16, props.modArmor, false)
end
end
if props.modTurbo ~= nil then
if props.modTurbo ~= nil then
ToggleVehicleMod(vehicle, 18, props.modTurbo)
ToggleVehicleMod(vehicle, 18, props.modTurbo)
end
end
if props.modXenon ~= nil then
if props.modXenon ~= nil then
ToggleVehicleMod(vehicle, 22, props.modXenon)
ToggleVehicleMod(vehicle, 22, props.modXenon)
end
end
if props.modFrontWheels ~= nil then
if props.modFrontWheels ~= nil then
SetVehicleMod(vehicle, 23, props.modFrontWheels, false)
SetVehicleMod(vehicle, 23, props.modFrontWheels, false)
end
end
if props.modBackWheels ~= nil then
if props.modBackWheels ~= nil then
SetVehicleMod(vehicle, 24, props.modBackWheels, false)
SetVehicleMod(vehicle, 24, props.modBackWheels, false)
end
end
if props.modPlateHolder ~= nil then
if props.modPlateHolder ~= nil then
SetVehicleMod(vehicle, 25, props.modPlateHolder, false)
SetVehicleMod(vehicle, 25, props.modPlateHolder, false)
end
end
if props.modVanityPlate ~= nil then
if props.modVanityPlate ~= nil then
SetVehicleMod(vehicle, 26, props.modVanityPlate, false)
SetVehicleMod(vehicle, 26, props.modVanityPlate, false)
end
end
if props.modTrimA ~= nil then
if props.modTrimA ~= nil then
SetVehicleMod(vehicle, 27, props.modTrimA, false)
SetVehicleMod(vehicle, 27, props.modTrimA, false)
end
end
if props.modOrnaments ~= nil then
if props.modOrnaments ~= nil then
SetVehicleMod(vehicle, 28, props.modOrnaments, false)
SetVehicleMod(vehicle, 28, props.modOrnaments, false)
end
end
if props.modDashboard ~= nil then
if props.modDashboard ~= nil then
SetVehicleMod(vehicle, 29, props.modDashboard, false)
SetVehicleMod(vehicle, 29, props.modDashboard, false)
end
end
if props.modDial ~= nil then
if props.modDial ~= nil then
SetVehicleMod(vehicle, 30, props.modDial, false)
SetVehicleMod(vehicle, 30, props.modDial, false)
end
end
if props.modDoorSpeaker ~= nil then
if props.modDoorSpeaker ~= nil then
SetVehicleMod(vehicle, 31, props.modDoorSpeaker, false)
SetVehicleMod(vehicle, 31, props.modDoorSpeaker, false)
end
end
if props.modSeats ~= nil then
if props.modSeats ~= nil then
SetVehicleMod(vehicle, 32, props.modSeats, false)
SetVehicleMod(vehicle, 32, props.modSeats, false)
end
end
if props.modSteeringWheel ~= nil then
if props.modSteeringWheel ~= nil then
SetVehicleMod(vehicle, 33, props.modSteeringWheel, false)
SetVehicleMod(vehicle, 33, props.modSteeringWheel, false)
end
end
if props.modShifterLeavers ~= nil then
if props.modShifterLeavers ~= nil then
SetVehicleMod(vehicle, 34, props.modShifterLeavers, false)
SetVehicleMod(vehicle, 34, props.modShifterLeavers, false)
end
end
if props.modAPlate ~= nil then
if props.modAPlate ~= nil then
SetVehicleMod(vehicle, 35, props.modAPlate, false)
SetVehicleMod(vehicle, 35, props.modAPlate, false)
end
end
if props.modSpeakers ~= nil then
if props.modSpeakers ~= nil then
SetVehicleMod(vehicle, 36, props.modSpeakers, false)
SetVehicleMod(vehicle, 36, props.modSpeakers, false)
end
end
if props.modTrunk ~= nil then
if props.modTrunk ~= nil then
SetVehicleMod(vehicle, 37, props.modTrunk, false)
SetVehicleMod(vehicle, 37, props.modTrunk, false)
end
end
if props.modHydrolic ~= nil then
if props.modHydrolic ~= nil then
SetVehicleMod(vehicle, 38, props.modHydrolic, false)
SetVehicleMod(vehicle, 38, props.modHydrolic, false)
end
end
if props.modEngineBlock ~= nil then
if props.modEngineBlock ~= nil then
SetVehicleMod(vehicle, 39, props.modEngineBlock, false)
SetVehicleMod(vehicle, 39, props.modEngineBlock, false)
end
end
if props.modAirFilter ~= nil then
if props.modAirFilter ~= nil then
SetVehicleMod(vehicle, 40, props.modAirFilter, false)
SetVehicleMod(vehicle, 40, props.modAirFilter, false)
end
end
if props.modStruts ~= nil then
if props.modStruts ~= nil then
SetVehicleMod(vehicle, 41, props.modStruts, false)
SetVehicleMod(vehicle, 41, props.modStruts, false)
end
end
if props.modArchCover ~= nil then
if props.modArchCover ~= nil then
SetVehicleMod(vehicle, 42, props.modArchCover, false)
SetVehicleMod(vehicle, 42, props.modArchCover, false)
end
end
if props.modAerials ~= nil then
if props.modAerials ~= nil then
SetVehicleMod(vehicle, 43, props.modAerials, false)
SetVehicleMod(vehicle, 43, props.modAerials, false)
end
end
if props.modTrimB ~= nil then
if props.modTrimB ~= nil then
SetVehicleMod(vehicle, 44, props.modTrimB, false)
SetVehicleMod(vehicle, 44, props.modTrimB, false)
end
end
if props.modTank ~= nil then
if props.modTank ~= nil then
SetVehicleMod(vehicle, 45, props.modTank, false)
SetVehicleMod(vehicle, 45, props.modTank, false)
end
end
コピー
コピー済み
コピー
コピー済み
if props.modWindows ~= nil th
en
if props.modWindows ~= nil th
SetVehicleMod(vehicle, 46, props.modWindows, false)
end
if props.modLivery ~= nil then
SetVehicleMod(vehicle, 48, props.modLive
保存された差分
原文
ファイルを開く
ESX = {} ESX.PlayerData = {} ESX.PlayerLoaded = false ESX.CurrentRequestId = 0 ESX.ServerCallbacks = {} ESX.TimeoutCallbacks = {} ESX.UI = {} ESX.UI.HUD = {} ESX.UI.HUD.RegisteredElements = {} ESX.UI.Menu = {} ESX.UI.Menu.RegisteredTypes = {} ESX.UI.Menu.Opened = {} ESX.Game = {} ESX.Game.Utils = {} ESX.Scaleform = {} ESX.Scaleform.Utils = {} ESX.Streaming = {} ESX.SetTimeout = function(msec, cb) table.insert(ESX.TimeoutCallbacks, { time = GetGameTimer() + msec, cb = cb }) return #ESX.TimeoutCallbacks end ESX.ClearTimeout = function(i) ESX.TimeoutCallbacks[i] = nil end ESX.IsPlayerLoaded = function() return ESX.PlayerLoaded end ESX.GetPlayerData = function() return ESX.PlayerData end ESX.SetPlayerData = function(key, val) ESX.PlayerData[key] = val end ESX.ShowNotification = function(msg) SetNotificationTextEntry('STRING') AddTextComponentSubstringPlayerName(msg) DrawNotification(false, true) end ESX.ShowAdvancedNotification = function(title, subject, msg, icon, iconType) SetNotificationTextEntry('STRING') AddTextComponentSubstringPlayerName(msg) SetNotificationMessage(icon, icon, false, iconType, title, subject) DrawNotification(false, false) end ESX.ShowHelpNotification = function(msg) --if not IsHelpMessageBeingDisplayed() then BeginTextCommandDisplayHelp('STRING') AddTextComponentSubstringPlayerName(msg) EndTextCommandDisplayHelp(0, false, true, -1) --end end ESX.TriggerServerCallback = function(name, cb, ...) ESX.ServerCallbacks[ESX.CurrentRequestId] = cb TriggerServerEvent('esx:triggerServerCallback', name, ESX.CurrentRequestId, ...) if ESX.CurrentRequestId < 65535 then ESX.CurrentRequestId = ESX.CurrentRequestId + 1 else ESX.CurrentRequestId = 0 end end ESX.UI.HUD.SetDisplay = function(opacity) SendNUIMessage({ action = 'setHUDDisplay', opacity = opacity }) end ESX.UI.HUD.RegisterElement = function(name, index, priority, html, data) local found = false for i=1, #ESX.UI.HUD.RegisteredElements, 1 do if ESX.UI.HUD.RegisteredElements[i] == name then found = true break end end if found then return end table.insert(ESX.UI.HUD.RegisteredElements, name) SendNUIMessage({ action = 'insertHUDElement', name = name, index = index, priority = priority, html = html, data = data }) ESX.UI.HUD.UpdateElement(name, data) end ESX.UI.HUD.RemoveElement = function(name) for i=1, #ESX.UI.HUD.RegisteredElements, 1 do if ESX.UI.HUD.RegisteredElements[i] == name then table.remove(ESX.UI.HUD.RegisteredElements, i) break end end SendNUIMessage({ action = 'deleteHUDElement', name = name }) end ESX.UI.HUD.UpdateElement = function(name, data) SendNUIMessage({ action = 'updateHUDElement', name = name, data = data }) end ESX.UI.Menu.RegisterType = function(type, open, close) ESX.UI.Menu.RegisteredTypes[type] = { open = open, close = close } end ESX.UI.Menu.Open = function(type, namespace, name, data, submit, cancel, change, close) local menu = {} menu.type = type menu.namespace = namespace menu.name = name menu.data = data menu.submit = submit menu.cancel = cancel menu.change = change menu.close = function() ESX.UI.Menu.RegisteredTypes[type].close(namespace, name) for i=1, #ESX.UI.Menu.Opened, 1 do if ESX.UI.Menu.Opened[i] ~= nil then if ESX.UI.Menu.Opened[i].type == type and ESX.UI.Menu.Opened[i].namespace == namespace and ESX.UI.Menu.Opened[i].name == name then ESX.UI.Menu.Opened[i] = nil end end end if close ~= nil then close() end end menu.update = function(query, newData) for i=1, #menu.data.elements, 1 do local match = true for k,v in pairs(query) do if menu.data.elements[i][k] ~= v then match = false end end if match then for k,v in pairs(newData) do menu.data.elements[i][k] = v end end end end menu.refresh = function() ESX.UI.Menu.RegisteredTypes[type].open(namespace, name, menu.data) end menu.setElement = function(i, key, val) menu.data.elements[i][key] = val end menu.setTitle = function(val) menu.data.title = val end menu.removeElement = function(query) for i=1, #menu.data.elements, 1 do for k,v in pairs(query) do if menu.data.elements[i] then if menu.data.elements[i][k] == v then table.remove(menu.data.elements, i) break end end end end end table.insert(ESX.UI.Menu.Opened, menu) ESX.UI.Menu.RegisteredTypes[type].open(namespace, name, data) return menu end ESX.UI.Menu.Close = function(type, namespace, name) for i=1, #ESX.UI.Menu.Opened, 1 do if ESX.UI.Menu.Opened[i] ~= nil then if ESX.UI.Menu.Opened[i].type == type and ESX.UI.Menu.Opened[i].namespace == namespace and ESX.UI.Menu.Opened[i].name == name then ESX.UI.Menu.Opened[i].close() ESX.UI.Menu.Opened[i] = nil end end end end ESX.UI.Menu.CloseAll = function() for i=1, #ESX.UI.Menu.Opened, 1 do if ESX.UI.Menu.Opened[i] ~= nil then ESX.UI.Menu.Opened[i].close() ESX.UI.Menu.Opened[i] = nil end end end ESX.UI.Menu.GetOpened = function(type, namespace, name) for i=1, #ESX.UI.Menu.Opened, 1 do if ESX.UI.Menu.Opened[i] ~= nil then if ESX.UI.Menu.Opened[i].type == type and ESX.UI.Menu.Opened[i].namespace == namespace and ESX.UI.Menu.Opened[i].name == name then return ESX.UI.Menu.Opened[i] end end end end ESX.UI.Menu.GetOpenedMenus = function() return ESX.UI.Menu.Opened end ESX.UI.Menu.IsOpen = function(type, namespace, name) return ESX.UI.Menu.GetOpened(type, namespace, name) ~= nil end ESX.UI.ShowInventoryItemNotification = function(add, item, count) SendNUIMessage({ action = 'inventoryNotification', add = add, item = item, count = count }) end ESX.Game.GetPedMugshot = function(ped) local mugshot = RegisterPedheadshot(ped) while not IsPedheadshotReady(mugshot) do Citizen.Wait(0) end return mugshot, GetPedheadshotTxdString(mugshot) end ESX.Game.Teleport = function(entity, coords, cb) RequestCollisionAtCoord(coords.x, coords.y, coords.z) while not HasCollisionLoadedAroundEntity(entity) do RequestCollisionAtCoord(coords.x, coords.y, coords.z) Citizen.Wait(0) end SetEntityCoords(entity, coords.x, coords.y, coords.z) if cb ~= nil then cb() end end ESX.Game.SpawnObject = function(model, coords, cb) local model = (type(model) == 'number' and model or GetHashKey(model)) Citizen.CreateThread(function() ESX.Streaming.RequestModel(model) local obj = CreateObject(model, coords.x, coords.y, coords.z, true, false, true) if cb ~= nil then cb(obj) end end) end ESX.Game.SpawnLocalObject = function(model, coords, cb) local model = (type(model) == 'number' and model or GetHashKey(model)) Citizen.CreateThread(function() ESX.Streaming.RequestModel(model) local obj = CreateObject(model, coords.x, coords.y, coords.z, false, false, true) if cb ~= nil then cb(obj) end end) end ESX.Game.DeleteVehicle = function(vehicle) SetEntityAsMissionEntity(vehicle, false, true) DeleteVehicle(vehicle) end ESX.Game.DeleteObject = function(object) SetEntityAsMissionEntity(object, false, true) DeleteObject(object) end ESX.Game.SpawnVehicle = function(modelName, coords, heading, cb) local model = (type(modelName) == 'number' and modelName or GetHashKey(modelName)) Citizen.CreateThread(function() ESX.Streaming.RequestModel(model) local vehicle = CreateVehicle(model, coords.x, coords.y, coords.z, heading, true, false) local id = NetworkGetNetworkIdFromEntity(vehicle) SetNetworkIdCanMigrate(id, true) SetEntityAsMissionEntity(vehicle, true, false) SetVehicleHasBeenOwnedByPlayer(vehicle, true) SetVehicleNeedsToBeHotwired(vehicle, false) SetModelAsNoLongerNeeded(model) RequestCollisionAtCoord(coords.x, coords.y, coords.z) while not HasCollisionLoadedAroundEntity(vehicle) do RequestCollisionAtCoord(coords.x, coords.y, coords.z) Citizen.Wait(0) end SetVehRadioStation(vehicle, 'OFF') if cb ~= nil then cb(vehicle) end end) end ESX.Game.SpawnLocalVehicle = function(modelName, coords, heading, cb) local model = (type(modelName) == 'number' and modelName or GetHashKey(modelName)) Citizen.CreateThread(function() ESX.Streaming.RequestModel(model) local vehicle = CreateVehicle(model, coords.x, coords.y, coords.z, heading, false, false) SetEntityAsMissionEntity(vehicle, true, false) SetVehicleHasBeenOwnedByPlayer(vehicle, true) SetVehicleNeedsToBeHotwired(vehicle, false) SetModelAsNoLongerNeeded(model) RequestCollisionAtCoord(coords.x, coords.y, coords.z) while not HasCollisionLoadedAroundEntity(vehicle) do RequestCollisionAtCoord(coords.x, coords.y, coords.z) Citizen.Wait(0) end SetVehRadioStation(vehicle, 'OFF') if cb ~= nil then cb(vehicle) end end) end ESX.Game.IsVehicleEmpty = function(vehicle) local passengers = GetVehicleNumberOfPassengers(vehicle) local driverSeatFree = IsVehicleSeatFree(vehicle, -1) return passengers == 0 and driverSeatFree end ESX.Game.GetObjects = function() local objects = {} for object in EnumerateObjects() do table.insert(objects, object) end return objects end ESX.Game.GetClosestObject = function(filter, coords) local objects = ESX.Game.GetObjects() local closestDistance = -1 local closestObject = -1 local filter = filter local coords = coords if type(filter) == 'string' then if filter ~= '' then filter = {filter} end end if coords == nil then local playerPed = PlayerPedId() coords = GetEntityCoords(playerPed) end for i=1, #objects, 1 do local foundObject = false if filter == nil or (type(filter) == 'table' and #filter == 0) then foundObject = true else local objectModel = GetEntityModel(objects[i]) for j=1, #filter, 1 do if objectModel == GetHashKey(filter[j]) then foundObject = true end end end if foundObject then local objectCoords = GetEntityCoords(objects[i]) local distance = GetDistanceBetweenCoords(objectCoords, coords.x, coords.y, coords.z, true) if closestDistance == -1 or closestDistance > distance then closestObject = objects[i] closestDistance = distance end end end return closestObject, closestDistance end ESX.Game.GetPlayers = function() local players = {} for _,player in ipairs(GetActivePlayers()) do local ped = GetPlayerPed(player) if DoesEntityExist(ped) then table.insert(players, player) end end return players end ESX.Game.GetClosestPlayer = function(coords) local players = ESX.Game.GetPlayers() local closestDistance = -1 local closestPlayer = -1 local coords = coords local usePlayerPed = false local playerPed = PlayerPedId() local playerId = PlayerId() if coords == nil then usePlayerPed = true coords = GetEntityCoords(playerPed) end for i=1, #players, 1 do local target = GetPlayerPed(players[i]) if not usePlayerPed or (usePlayerPed and players[i] ~= playerId) then local targetCoords = GetEntityCoords(target) local distance = GetDistanceBetweenCoords(targetCoords, coords.x, coords.y, coords.z, true) if closestDistance == -1 or closestDistance > distance then closestPlayer = players[i] closestDistance = distance end end end return closestPlayer, closestDistance end ESX.Game.GetPlayersInArea = function(coords, area) local players = ESX.Game.GetPlayers() local playersInArea = {} for i=1, #players, 1 do local target = GetPlayerPed(players[i]) local targetCoords = GetEntityCoords(target) local distance = GetDistanceBetweenCoords(targetCoords, coords.x, coords.y, coords.z, true) if distance <= area then table.insert(playersInArea, players[i]) end end return playersInArea end ESX.Game.GetVehicles = function() local vehicles = {} for vehicle in EnumerateVehicles() do table.insert(vehicles, vehicle) end return vehicles end ESX.Game.GetClosestVehicle = function(coords) local vehicles = ESX.Game.GetVehicles() local closestDistance = -1 local closestVehicle = -1 local coords = coords if coords == nil then local playerPed = PlayerPedId() coords = GetEntityCoords(playerPed) end for i=1, #vehicles, 1 do local vehicleCoords = GetEntityCoords(vehicles[i]) local distance = GetDistanceBetweenCoords(vehicleCoords, coords.x, coords.y, coords.z, true) if closestDistance == -1 or closestDistance > distance then closestVehicle = vehicles[i] closestDistance = distance end end return closestVehicle, closestDistance end ESX.Game.GetVehiclesInArea = function(coords, area) local vehicles = ESX.Game.GetVehicles() local vehiclesInArea = {} for i=1, #vehicles, 1 do local vehicleCoords = GetEntityCoords(vehicles[i]) local distance = GetDistanceBetweenCoords(vehicleCoords, coords.x, coords.y, coords.z, true) if distance <= area then table.insert(vehiclesInArea, vehicles[i]) end end return vehiclesInArea end ESX.Game.GetVehicleInDirection = function() local playerPed = PlayerPedId() local playerCoords = GetEntityCoords(playerPed) local inDirection = GetOffsetFromEntityInWorldCoords(playerPed, 0.0, 5.0, 0.0) local rayHandle = StartShapeTestRay(playerCoords, inDirection, 10, playerPed, 0) local numRayHandle, hit, endCoords, surfaceNormal, entityHit = GetShapeTestResult(rayHandle) if hit == 1 and GetEntityType(entityHit) == 2 then return entityHit end return nil end ESX.Game.IsSpawnPointClear = function(coords, radius) local vehicles = ESX.Game.GetVehiclesInArea(coords, radius) return #vehicles == 0 end ESX.Game.GetPeds = function(ignoreList) local ignoreList = ignoreList or {} local peds = {} for ped in EnumeratePeds() do local found = false for j=1, #ignoreList, 1 do if ignoreList[j] == ped then found = true end end if not found then table.insert(peds, ped) end end return peds end ESX.Game.GetClosestPed = function(coords, ignoreList) local ignoreList = ignoreList or {} local peds = ESX.Game.GetPeds(ignoreList) local closestDistance = -1 local closestPed = -1 for i=1, #peds, 1 do local pedCoords = GetEntityCoords(peds[i]) local distance = GetDistanceBetweenCoords(pedCoords, coords.x, coords.y, coords.z, true) if closestDistance == -1 or closestDistance > distance then closestPed = peds[i] closestDistance = distance end end return closestPed, closestDistance end ESX.Game.GetVehicleProperties = function(vehicle) local color1, color2 = GetVehicleColours(vehicle) local pearlescentColor, wheelColor = GetVehicleExtraColours(vehicle) local extras = {} for id=0, 12 do if DoesExtraExist(vehicle, id) then local state = IsVehicleExtraTurnedOn(vehicle, id) == 1 extras[tostring(id)] = state end end return { model = GetEntityModel(vehicle), plate = ESX.Math.Trim(GetVehicleNumberPlateText(vehicle)), plateIndex = GetVehicleNumberPlateTextIndex(vehicle), bodyHealth = ESX.Math.Round(GetVehicleBodyHealth(vehicle), 1), engineHealth = ESX.Math.Round(GetVehicleEngineHealth(vehicle), 1), fuelLevel = ESX.Math.Round(GetVehicleFuelLevel(vehicle), 1), dirtLevel = ESX.Math.Round(GetVehicleDirtLevel(vehicle), 1), color1 = color1, color2 = color2, pearlescentColor = pearlescentColor, wheelColor = wheelColor, wheels = GetVehicleWheelType(vehicle), windowTint = GetVehicleWindowTint(vehicle), neonEnabled = { IsVehicleNeonLightEnabled(vehicle, 0), IsVehicleNeonLightEnabled(vehicle, 1), IsVehicleNeonLightEnabled(vehicle, 2), IsVehicleNeonLightEnabled(vehicle, 3) }, extras = extras, neonColor = table.pack(GetVehicleNeonLightsColour(vehicle)), tyreSmokeColor = table.pack(GetVehicleTyreSmokeColor(vehicle)), modSpoilers = GetVehicleMod(vehicle, 0), modFrontBumper = GetVehicleMod(vehicle, 1), modRearBumper = GetVehicleMod(vehicle, 2), modSideSkirt = GetVehicleMod(vehicle, 3), modExhaust = GetVehicleMod(vehicle, 4), modFrame = GetVehicleMod(vehicle, 5), modGrille = GetVehicleMod(vehicle, 6), modHood = GetVehicleMod(vehicle, 7), modFender = GetVehicleMod(vehicle, 8), modRightFender = GetVehicleMod(vehicle, 9), modRoof = GetVehicleMod(vehicle, 10), modEngine = GetVehicleMod(vehicle, 11), modBrakes = GetVehicleMod(vehicle, 12), modTransmission = GetVehicleMod(vehicle, 13), modHorns = GetVehicleMod(vehicle, 14), modSuspension = GetVehicleMod(vehicle, 15), modArmor = GetVehicleMod(vehicle, 16), modTurbo = IsToggleModOn(vehicle, 18), modSmokeEnabled = IsToggleModOn(vehicle, 20), modXenon = IsToggleModOn(vehicle, 22), modFrontWheels = GetVehicleMod(vehicle, 23), modBackWheels = GetVehicleMod(vehicle, 24), modPlateHolder = GetVehicleMod(vehicle, 25), modVanityPlate = GetVehicleMod(vehicle, 26), modTrimA = GetVehicleMod(vehicle, 27), modOrnaments = GetVehicleMod(vehicle, 28), modDashboard = GetVehicleMod(vehicle, 29), modDial = GetVehicleMod(vehicle, 30), modDoorSpeaker = GetVehicleMod(vehicle, 31), modSeats = GetVehicleMod(vehicle, 32), modSteeringWheel = GetVehicleMod(vehicle, 33), modShifterLeavers = GetVehicleMod(vehicle, 34), modAPlate = GetVehicleMod(vehicle, 35), modSpeakers = GetVehicleMod(vehicle, 36), modTrunk = GetVehicleMod(vehicle, 37), modHydrolic = GetVehicleMod(vehicle, 38), modEngineBlock = GetVehicleMod(vehicle, 39), modAirFilter = GetVehicleMod(vehicle, 40), modStruts = GetVehicleMod(vehicle, 41), modArchCover = GetVehicleMod(vehicle, 42), modAerials = GetVehicleMod(vehicle, 43), modTrimB = GetVehicleMod(vehicle, 44), modTank = GetVehicleMod(vehicle, 45), modWindows = GetVehicleMod(vehicle, 46), modLivery = GetVehicleLivery(vehicle) } end ESX.Game.SetVehicleProperties = function(vehicle, props) SetVehicleModKit(vehicle, 0) if props.plate ~= nil then SetVehicleNumberPlateText(vehicle, props.plate) end if props.plateIndex ~= nil then SetVehicleNumberPlateTextIndex(vehicle, props.plateIndex) end if props.bodyHealth ~= nil then SetVehicleBodyHealth(vehicle, props.bodyHealth + 0.0) end if props.engineHealth ~= nil then SetVehicleEngineHealth(vehicle, props.engineHealth + 0.0) end if props.fuelLevel ~= nil then SetVehicleFuelLevel(vehicle, props.fuelLevel + 0.0) end if props.dirtLevel ~= nil then SetVehicleDirtLevel(vehicle, props.dirtLevel + 0.0) end if props.color1 ~= nil then local color1, color2 = GetVehicleColours(vehicle) SetVehicleColours(vehicle, props.color1, color2) end if props.color2 ~= nil then local color1, color2 = GetVehicleColours(vehicle) SetVehicleColours(vehicle, color1, props.color2) end if props.pearlescentColor ~= nil then local pearlescentColor, wheelColor = GetVehicleExtraColours(vehicle) SetVehicleExtraColours(vehicle, props.pearlescentColor, wheelColor) end if props.wheelColor ~= nil then local pearlescentColor, wheelColor = GetVehicleExtraColours(vehicle) SetVehicleExtraColours(vehicle, pearlescentColor, props.wheelColor) end if props.wheels ~= nil then SetVehicleWheelType(vehicle, props.wheels) end if props.windowTint ~= nil then SetVehicleWindowTint(vehicle, props.windowTint) end if props.neonEnabled ~= nil then SetVehicleNeonLightEnabled(vehicle, 0, props.neonEnabled[1]) SetVehicleNeonLightEnabled(vehicle, 1, props.neonEnabled[2]) SetVehicleNeonLightEnabled(vehicle, 2, props.neonEnabled[3]) SetVehicleNeonLightEnabled(vehicle, 3, props.neonEnabled[4]) end if props.extras ~= nil then for id,enabled in pairs(props.extras) do if enabled then SetVehicleExtra(vehicle, tonumber(id), 0) else SetVehicleExtra(vehicle, tonumber(id), 1) end end end if props.neonColor ~= nil then SetVehicleNeonLightsColour(vehicle, props.neonColor[1], props.neonColor[2], props.neonColor[3]) end if props.modSmokeEnabled ~= nil then ToggleVehicleMod(vehicle, 20, true) end if props.tyreSmokeColor ~= nil then SetVehicleTyreSmokeColor(vehicle, props.tyreSmokeColor[1], props.tyreSmokeColor[2], props.tyreSmokeColor[3]) end if props.modSpoilers ~= nil then SetVehicleMod(vehicle, 0, props.modSpoilers, false) end if props.modFrontBumper ~= nil then SetVehicleMod(vehicle, 1, props.modFrontBumper, false) end if props.modRearBumper ~= nil then SetVehicleMod(vehicle, 2, props.modRearBumper, false) end if props.modSideSkirt ~= nil then SetVehicleMod(vehicle, 3, props.modSideSkirt, false) end if props.modExhaust ~= nil then SetVehicleMod(vehicle, 4, props.modExhaust, false) end if props.modFrame ~= nil then SetVehicleMod(vehicle, 5, props.modFrame, false) end if props.modGrille ~= nil then SetVehicleMod(vehicle, 6, props.modGrille, false) end if props.modHood ~= nil then SetVehicleMod(vehicle, 7, props.modHood, false) end if props.modFender ~= nil then SetVehicleMod(vehicle, 8, props.modFender, false) end if props.modRightFender ~= nil then SetVehicleMod(vehicle, 9, props.modRightFender, false) end if props.modRoof ~= nil then SetVehicleMod(vehicle, 10, props.modRoof, false) end if props.modEngine ~= nil then SetVehicleMod(vehicle, 11, props.modEngine, false) end if props.modBrakes ~= nil then SetVehicleMod(vehicle, 12, props.modBrakes, false) end if props.modTransmission ~= nil then SetVehicleMod(vehicle, 13, props.modTransmission, false) end if props.modHorns ~= nil then SetVehicleMod(vehicle, 14, props.modHorns, false) end if props.modSuspension ~= nil then SetVehicleMod(vehicle, 15, props.modSuspension, false) end if props.modArmor ~= nil then SetVehicleMod(vehicle, 16, props.modArmor, false) end if props.modTurbo ~= nil then ToggleVehicleMod(vehicle, 18, props.modTurbo) end if props.modXenon ~= nil then ToggleVehicleMod(vehicle, 22, props.modXenon) end if props.modFrontWheels ~= nil then SetVehicleMod(vehicle, 23, props.modFrontWheels, false) end if props.modBackWheels ~= nil then SetVehicleMod(vehicle, 24, props.modBackWheels, false) end if props.modPlateHolder ~= nil then SetVehicleMod(vehicle, 25, props.modPlateHolder, false) end if props.modVanityPlate ~= nil then SetVehicleMod(vehicle, 26, props.modVanityPlate, false) end if props.modTrimA ~= nil then SetVehicleMod(vehicle, 27, props.modTrimA, false) end if props.modOrnaments ~= nil then SetVehicleMod(vehicle, 28, props.modOrnaments, false) end if props.modDashboard ~= nil then SetVehicleMod(vehicle, 29, props.modDashboard, false) end if props.modDial ~= nil then SetVehicleMod(vehicle, 30, props.modDial, false) end if props.modDoorSpeaker ~= nil then SetVehicleMod(vehicle, 31, props.modDoorSpeaker, false) end if props.modSeats ~= nil then SetVehicleMod(vehicle, 32, props.modSeats, false) end if props.modSteeringWheel ~= nil then SetVehicleMod(vehicle, 33, props.modSteeringWheel, false) end if props.modShifterLeavers ~= nil then SetVehicleMod(vehicle, 34, props.modShifterLeavers, false) end if props.modAPlate ~= nil then SetVehicleMod(vehicle, 35, props.modAPlate, false) end if props.modSpeakers ~= nil then SetVehicleMod(vehicle, 36, props.modSpeakers, false) end if props.modTrunk ~= nil then SetVehicleMod(vehicle, 37, props.modTrunk, false) end if props.modHydrolic ~= nil then SetVehicleMod(vehicle, 38, props.modHydrolic, false) end if props.modEngineBlock ~= nil then SetVehicleMod(vehicle, 39, props.modEngineBlock, false) end if props.modAirFilter ~= nil then SetVehicleMod(vehicle, 40, props.modAirFilter, false) end if props.modStruts ~= nil then SetVehicleMod(vehicle, 41, props.modStruts, false) end if props.modArchCover ~= nil then SetVehicleMod(vehicle, 42, props.modArchCover, false) end if props.modAerials ~= nil then SetVehicleMod(vehicle, 43, props.modAerials, false) end if props.modTrimB ~= nil then SetVehicleMod(vehicle, 44, props.modTrimB, false) end if props.modTank ~= nil then SetVehicleMod(vehicle, 45, props.modTank, false) end if props.modWindows ~= nil then SetVehicleMod(vehicle, 46, props.modWindows, false) end if props.modLivery ~= nil then SetVehicleMod(vehicle, 48, props.modLivery, false) SetVehicleLivery(vehicle, props.modLivery) end end ESX.Game.Utils.DrawText3D = function(coords, text, size) local onScreen, x, y = World3dToScreen2d(coords.x, coords.y, coords.z) local camCoords = GetGameplayCamCoords() local dist = GetDistanceBetweenCoords(camCoords, coords.x, coords.y, coords.z, true) local size = size if size == nil then size = 1 end local scale = (size / dist) * 2 local fov = (1 / GetGameplayCamFov()) * 100 local scale = scale * fov if onScreen then SetTextScale(0.0 * scale, 0.55 * scale) SetTextFont(0) SetTextColour(255, 255, 255, 255) SetTextDropshadow(0, 0, 0, 0, 255) SetTextDropShadow() SetTextOutline() SetTextEntry('STRING') SetTextCentre(1) AddTextComponentString(text) DrawText(x, y) end end ESX.ShowInventory = function() local playerPed = PlayerPedId() local elements = {} if ESX.PlayerData.money > 0 then local formattedMoney = _U('locale_currency', ESX.Math.GroupDigits(ESX.PlayerData.money)) table.insert(elements, { label = ('%s: <span style="color:green;">%s</span>'):format(_U('cash'), formattedMoney), count = ESX.PlayerData.money, type = 'item_money', value = 'money', usable = false, rare = false, canRemove = true }) end for i=1, #ESX.PlayerData.accounts, 1 do if ESX.PlayerData.accounts[i].money > 0 then local formattedMoney = _U('locale_currency', ESX.Math.GroupDigits(ESX.PlayerData.accounts[i].money)) local canDrop = ESX.PlayerData.accounts[i].name ~= 'bank' table.insert(elements, { label = ('%s: <span style="color:green;">%s</span>'):format(ESX.PlayerData.accounts[i].label, formattedMoney), count = ESX.PlayerData.accounts[i].money, type = 'item_account', value = ESX.PlayerData.accounts[i].name, usable = false, rare = false, canRemove = canDrop }) end end for i=1, #ESX.PlayerData.inventory, 1 do if ESX.PlayerData.inventory[i].count > 0 then table.insert(elements, { label = ESX.PlayerData.inventory[i].label .. ' x' .. ESX.PlayerData.inventory[i].count, count = ESX.PlayerData.inventory[i].count, type = 'item_standard', value = ESX.PlayerData.inventory[i].name, usable = ESX.PlayerData.inventory[i].usable, rare = ESX.PlayerData.inventory[i].rare, canRemove = ESX.PlayerData.inventory[i].canRemove }) end end for i=1, #Config.Weapons, 1 do local weaponHash = GetHashKey(Config.Weapons[i].name) if HasPedGotWeapon(playerPed, weaponHash, false) and Config.Weapons[i].name ~= 'WEAPON_UNARMED' then local ammo = GetAmmoInPedWeapon(playerPed, weaponHash) table.insert(elements, { label = Config.Weapons[i].label .. ' [' .. ammo .. ']', count = 1, type = 'item_weapon', value = Config.Weapons[i].name, ammo = ammo, usable = false, rare = false, canRemove = true }) end end ESX.UI.Menu.CloseAll() ESX.UI.Menu.Open('default', GetCurrentResourceName(), 'inventory', { title = _U('inventory'), align = 'bottom-right', elements = elements, }, function(data, menu) menu.close() local player, distance = ESX.Game.GetClosestPlayer() local elements = {} if data.current.usable then table.insert(elements, {label = _U('use'), action = 'use', type = data.current.type, value = data.current.value}) end if data.current.canRemove then if player ~= -1 and distance <= 3.0 then table.insert(elements, {label = _U('give'), action = 'give', type = data.current.type, value = data.current.value}) end table.insert(elements, {label = _U('remove'), action = 'remove', type = data.current.type, value = data.current.value}) end if data.current.type == 'item_weapon' and data.current.ammo > 0 and player ~= -1 and distance <= 3.0 then table.insert(elements, {label = _U('giveammo'), action = 'giveammo', type = data.current.type, value = data.current.value}) end table.insert(elements, {label = _U('return'), action = 'return'}) ESX.UI.Menu.Open('default', GetCurrentResourceName(), 'inventory_item', { title = data.current.label, align = 'bottom-right', elements = elements, }, function(data1, menu1) local item = data1.current.value local type = data1.current.type local playerPed = PlayerPedId() if data1.current.action == 'give' then local players = ESX.Game.GetPlayersInArea(GetEntityCoords(playerPed), 3.0) local foundPlayers = false local elements = {} for i=1, #players, 1 do if players[i] ~= PlayerId() then foundPlayers = true table.insert(elements, { label = GetPlayerName(players[i]), player = players[i] }) end end if not foundPlayers then ESX.ShowNotification(_U('players_nearby')) return end foundPlayers = false ESX.UI.Menu.Open('default', GetCurrentResourceName(), 'give_item_to', { title = _U('give_to'), align = 'bottom-right', elements = elements }, function(data2, menu2) local players, nearbyPlayer = ESX.Game.GetPlayersInArea(GetEntityCoords(playerPed), 3.0) for i=1, #players, 1 do if players[i] ~= PlayerId() then if players[i] == data2.current.player then foundPlayers = true nearbyPlayer = players[i] break end end end if not foundPlayers then ESX.ShowNotification(_U('players_nearby')) menu2.close() return end if type == 'item_weapon' then local closestPed = GetPlayerPed(nearbyPlayer) local sourceAmmo = GetAmmoInPedWeapon(PlayerPedId(), GetHashKey(item)) if IsPedSittingInAnyVehicle(closestPed) then ESX.ShowNotification(_U('in_vehicle')) return end TriggerServerEvent('esx:giveInventoryItem', GetPlayerServerId(nearbyPlayer), type, item, sourceAmmo) menu2.close() menu1.close() else ESX.UI.Menu.Open('dialog', GetCurrentResourceName(), 'inventory_item_count_give', { title = _U('amount') }, function(data3, menu3) local quantity = tonumber(data3.value) local closestPed = GetPlayerPed(nearbyPlayer) if IsPedSittingInAnyVehicle(closestPed) then ESX.ShowNotification(_U('in_vehicle')) return end if quantity ~= nil then TriggerServerEvent('esx:giveInventoryItem', GetPlayerServerId(nearbyPlayer), type, item, quantity) menu3.close() menu2.close() menu1.close() else ESX.ShowNotification(_U('amount_invalid')) end end, function(data3, menu3) menu3.close() end) end end, function(data2, menu2) menu2.close() end) -- give end elseif data1.current.action == 'remove' then if IsPedSittingInAnyVehicle(playerPed) then return end if type == 'item_weapon' then TriggerServerEvent('esx:removeInventoryItem', type, item) menu1.close() else -- type: item_standard ESX.UI.Menu.Open('dialog', GetCurrentResourceName(), 'inventory_item_count_remove', { title = _U('amount') }, function(data2, menu2) local quantity = tonumber(data2.value) if quantity == nil then ESX.ShowNotification(_U('amount_invalid')) else TriggerServerEvent('esx:removeInventoryItem', type, item, quantity) menu2.close() menu1.close() end end, function(data2, menu2) menu2.close() end) end elseif data1.current.action == 'use' then TriggerServerEvent('esx:useItem', item) elseif data1.current.action == 'return' then ESX.UI.Menu.CloseAll() ESX.ShowInventory() elseif data1.current.action == 'giveammo' then local closestPlayer, closestDistance = ESX.Game.GetClosestPlayer() local closestPed = GetPlayerPed(closestPlayer) local pedAmmo = GetAmmoInPedWeapon(playerPed, GetHashKey(item)) if IsPedSittingInAnyVehicle(closestPed) then ESX.ShowNotification(_U('in_vehicle')) return end if closestPlayer ~= -1 and closestDistance < 3.0 then if pedAmmo > 0 then ESX.UI.Menu.Open('dialog', GetCurrentResourceName(), 'inventory_item_count_give', { title = _U('amountammo') }, function(data2, menu2) local quantity = tonumber(data2.value) if quantity ~= nil then if quantity <= pedAmmo and quantity >= 0 then local finalAmmoSource = math.floor(pedAmmo - quantity) SetPedAmmo(playerPed, item, finalAmmoSource) AddAmmoToPed(closestPed, item, quantity) ESX.ShowNotification(_U('gave_ammo', quantity, GetPlayerName(closestPlayer))) -- todo notify target that he received ammo menu2.close() menu1.close() else ESX.ShowNotification(_U('noammo')) end else ESX.ShowNotification(_U('amount_invalid')) end end, function(data2, menu2) menu2.close() end) else ESX.ShowNotification(_U('noammo')) end else ESX.ShowNotification(_U('players_nearby')) end end end, function(data1, menu1) ESX.UI.Menu.CloseAll() ESX.ShowInventory() end) end, function(data, menu) menu.close() end) end RegisterNetEvent('esx:serverCallback') AddEventHandler('esx:serverCallback', function(requestId, ...) ESX.ServerCallbacks[requestId](...) ESX.ServerCallbacks[requestId] = nil end) RegisterNetEvent('esx:showNotification') AddEventHandler('esx:showNotification', function(msg) ESX.ShowNotification(msg) end) RegisterNetEvent('esx:showAdvancedNotification') AddEventHandler('esx:showAdvancedNotification', function(title, subject, msg, icon, iconType) ESX.ShowAdvancedNotification(title, subject, msg, icon, iconType) end) RegisterNetEvent('esx:showHelpNotification') AddEventHandler('esx:showHelpNotification', function(msg) ESX.ShowHelpNotification(msg) end) -- SetTimeout Citizen.CreateThread(function() while true do Citizen.Wait(0) local currTime = GetGameTimer() for i=1, #ESX.TimeoutCallbacks, 1 do if ESX.TimeoutCallbacks[i] then if currTime >= ESX.TimeoutCallbacks[i].time then ESX.TimeoutCallbacks[i].cb() ESX.TimeoutCallbacks[i] = nil end end end end end)
変更されたテキスト
ファイルを開く
ESX = {} ESX.PlayerData = {} ESX.PlayerLoaded = false ESX.CurrentRequestId = 0 ESX.ServerCallbacks = {} ESX.TimeoutCallbacks = {} ESX.UI = {} ESX.UI.HUD = {} ESX.UI.HUD.RegisteredElements = {} ESX.UI.Menu = {} ESX.UI.Menu.RegisteredTypes = {} ESX.UI.Menu.Opened = {} ESX.Game = {} ESX.Game.Utils = {} ESX.Scaleform = {} ESX.Scaleform.Utils = {} ESX.Streaming = {} ESX.SetTimeout = function(msec, cb) table.insert(ESX.TimeoutCallbacks, { time = GetGameTimer() + msec, cb = cb }) return #ESX.TimeoutCallbacks end ESX.ClearTimeout = function(i) ESX.TimeoutCallbacks[i] = nil end ESX.IsPlayerLoaded = function() return ESX.PlayerLoaded end ESX.GetPlayerData = function() return ESX.PlayerData end ESX.SetPlayerData = function(key, val) ESX.PlayerData[key] = val end ESX.ShowNotification = function(msg) exports['mythic_notify']:SendAlert('inform', msg, 10000) -- SetNotificationTextEntry('STRING') -- AddTextComponentSubstringPlayerName(msg) -- DrawNotification(false, true) end ESX.ShowAdvancedNotification = function(title, subject, msg, icon, iconType) exports['mythic_notify']:SendAlert('inform', msg, 10000) -- SetNotificationTextEntry('STRING') -- AddTextComponentSubstringPlayerName(msg) -- SetNotificationMessage(icon, icon, false, iconType, title, subject) -- DrawNotification(false, false) end ESX.ShowHelpNotification = function(msg) --if not IsHelpMessageBeingDisplayed() then BeginTextCommandDisplayHelp('STRING') AddTextComponentSubstringPlayerName(msg) EndTextCommandDisplayHelp(0, false, true, -1) --end end ESX.TriggerServerCallback = function(name, cb, ...) ESX.ServerCallbacks[ESX.CurrentRequestId] = cb TriggerServerEvent('esx:triggerServerCallback', name, ESX.CurrentRequestId, ...) if ESX.CurrentRequestId < 65535 then ESX.CurrentRequestId = ESX.CurrentRequestId + 1 else ESX.CurrentRequestId = 0 end end ESX.UI.HUD.SetDisplay = function(opacity) SendNUIMessage({ action = 'setHUDDisplay', opacity = opacity }) end ESX.UI.HUD.RegisterElement = function(name, index, priority, html, data) local found = false for i=1, #ESX.UI.HUD.RegisteredElements, 1 do if ESX.UI.HUD.RegisteredElements[i] == name then found = true break end end if found then return end table.insert(ESX.UI.HUD.RegisteredElements, name) SendNUIMessage({ action = 'insertHUDElement', name = name, index = index, priority = priority, html = html, data = data }) ESX.UI.HUD.UpdateElement(name, data) end ESX.UI.HUD.RemoveElement = function(name) for i=1, #ESX.UI.HUD.RegisteredElements, 1 do if ESX.UI.HUD.RegisteredElements[i] == name then table.remove(ESX.UI.HUD.RegisteredElements, i) break end end SendNUIMessage({ action = 'deleteHUDElement', name = name }) end ESX.UI.HUD.UpdateElement = function(name, data) SendNUIMessage({ action = 'updateHUDElement', name = name, data = data }) end ESX.UI.Menu.RegisterType = function(type, open, close) ESX.UI.Menu.RegisteredTypes[type] = { open = open, close = close } end ESX.UI.Menu.Open = function(type, namespace, name, data, submit, cancel, change, close) local menu = {} menu.type = type menu.namespace = namespace menu.name = name menu.data = data menu.submit = submit menu.cancel = cancel menu.change = change menu.close = function() ESX.UI.Menu.RegisteredTypes[type].close(namespace, name) for i=1, #ESX.UI.Menu.Opened, 1 do if ESX.UI.Menu.Opened[i] ~= nil then if ESX.UI.Menu.Opened[i].type == type and ESX.UI.Menu.Opened[i].namespace == namespace and ESX.UI.Menu.Opened[i].name == name then ESX.UI.Menu.Opened[i] = nil end end end if close ~= nil then close() end end menu.update = function(query, newData) for i=1, #menu.data.elements, 1 do local match = true for k,v in pairs(query) do if menu.data.elements[i][k] ~= v then match = false end end if match then for k,v in pairs(newData) do menu.data.elements[i][k] = v end end end end menu.refresh = function() ESX.UI.Menu.RegisteredTypes[type].open(namespace, name, menu.data) end menu.setElement = function(i, key, val) menu.data.elements[i][key] = val end menu.setTitle = function(val) menu.data.title = val end menu.removeElement = function(query) for i=1, #menu.data.elements, 1 do for k,v in pairs(query) do if menu.data.elements[i] then if menu.data.elements[i][k] == v then table.remove(menu.data.elements, i) break end end end end end table.insert(ESX.UI.Menu.Opened, menu) ESX.UI.Menu.RegisteredTypes[type].open(namespace, name, data) return menu end ESX.UI.Menu.Close = function(type, namespace, name) for i=1, #ESX.UI.Menu.Opened, 1 do if ESX.UI.Menu.Opened[i] ~= nil then if ESX.UI.Menu.Opened[i].type == type and ESX.UI.Menu.Opened[i].namespace == namespace and ESX.UI.Menu.Opened[i].name == name then ESX.UI.Menu.Opened[i].close() ESX.UI.Menu.Opened[i] = nil end end end end ESX.UI.Menu.CloseAll = function() for i=1, #ESX.UI.Menu.Opened, 1 do if ESX.UI.Menu.Opened[i] ~= nil then ESX.UI.Menu.Opened[i].close() ESX.UI.Menu.Opened[i] = nil end end end ESX.UI.Menu.GetOpened = function(type, namespace, name) for i=1, #ESX.UI.Menu.Opened, 1 do if ESX.UI.Menu.Opened[i] ~= nil then if ESX.UI.Menu.Opened[i].type == type and ESX.UI.Menu.Opened[i].namespace == namespace and ESX.UI.Menu.Opened[i].name == name then return ESX.UI.Menu.Opened[i] end end end end ESX.UI.Menu.GetOpenedMenus = function() return ESX.UI.Menu.Opened end ESX.UI.Menu.IsOpen = function(type, namespace, name) return ESX.UI.Menu.GetOpened(type, namespace, name) ~= nil end ESX.UI.ShowInventoryItemNotification = function(add, item, count) SendNUIMessage({ action = 'inventoryNotification', add = add, item = item, count = count }) end ESX.Game.GetPedMugshot = function(ped) local mugshot = RegisterPedheadshot(ped) while not IsPedheadshotReady(mugshot) do Citizen.Wait(0) end return mugshot, GetPedheadshotTxdString(mugshot) end ESX.Game.Teleport = function(entity, coords, cb) RequestCollisionAtCoord(coords.x, coords.y, coords.z) while not HasCollisionLoadedAroundEntity(entity) do RequestCollisionAtCoord(coords.x, coords.y, coords.z) Citizen.Wait(0) end SetEntityCoords(entity, coords.x, coords.y, coords.z) if cb ~= nil then cb() end end ESX.Game.SpawnObject = function(model, coords, cb) local model = (type(model) == 'number' and model or GetHashKey(model)) Citizen.CreateThread(function() ESX.Streaming.RequestModel(model) local obj = CreateObject(model, coords.x, coords.y, coords.z, true, false, true) if cb ~= nil then cb(obj) end end) end ESX.Game.SpawnLocalObject = function(model, coords, cb) local model = (type(model) == 'number' and model or GetHashKey(model)) Citizen.CreateThread(function() ESX.Streaming.RequestModel(model) local obj = CreateObject(model, coords.x, coords.y, coords.z, false, false, true) if cb ~= nil then cb(obj) end end) end ESX.Game.DeleteVehicle = function(vehicle) SetEntityAsMissionEntity(vehicle, false, true) DeleteVehicle(vehicle) end ESX.Game.DeleteObject = function(object) SetEntityAsMissionEntity(object, false, true) DeleteObject(object) end ESX.Game.SpawnVehicle = function(modelName, coords, heading, cb) local model = (type(modelName) == 'number' and modelName or GetHashKey(modelName)) Citizen.CreateThread(function() ESX.Streaming.RequestModel(model) local vehicle = CreateVehicle(model, coords.x, coords.y, coords.z, heading, true, false) local id = NetworkGetNetworkIdFromEntity(vehicle) SetNetworkIdCanMigrate(id, true) SetEntityAsMissionEntity(vehicle, true, false) SetVehicleHasBeenOwnedByPlayer(vehicle, true) SetVehicleNeedsToBeHotwired(vehicle, false) SetModelAsNoLongerNeeded(model) RequestCollisionAtCoord(coords.x, coords.y, coords.z) while not HasCollisionLoadedAroundEntity(vehicle) do RequestCollisionAtCoord(coords.x, coords.y, coords.z) Citizen.Wait(0) end SetVehRadioStation(vehicle, 'OFF') if cb ~= nil then cb(vehicle) end end) end ESX.Game.SpawnLocalVehicle = function(modelName, coords, heading, cb) local model = (type(modelName) == 'number' and modelName or GetHashKey(modelName)) Citizen.CreateThread(function() ESX.Streaming.RequestModel(model) local vehicle = CreateVehicle(model, coords.x, coords.y, coords.z, heading, false, false) SetEntityAsMissionEntity(vehicle, true, false) SetVehicleHasBeenOwnedByPlayer(vehicle, true) SetVehicleNeedsToBeHotwired(vehicle, false) SetModelAsNoLongerNeeded(model) RequestCollisionAtCoord(coords.x, coords.y, coords.z) while not HasCollisionLoadedAroundEntity(vehicle) do RequestCollisionAtCoord(coords.x, coords.y, coords.z) Citizen.Wait(0) end SetVehRadioStation(vehicle, 'OFF') if cb ~= nil then cb(vehicle) end end) end ESX.Game.IsVehicleEmpty = function(vehicle) local passengers = GetVehicleNumberOfPassengers(vehicle) local driverSeatFree = IsVehicleSeatFree(vehicle, -1) return passengers == 0 and driverSeatFree end ESX.Game.GetObjects = function() local objects = {} for object in EnumerateObjects() do table.insert(objects, object) end return objects end ESX.Game.GetClosestObject = function(filter, coords) local objects = ESX.Game.GetObjects() local closestDistance = -1 local closestObject = -1 local filter = filter local coords = coords if type(filter) == 'string' then if filter ~= '' then filter = {filter} end end if coords == nil then local playerPed = PlayerPedId() coords = GetEntityCoords(playerPed) end for i=1, #objects, 1 do local foundObject = false if filter == nil or (type(filter) == 'table' and #filter == 0) then foundObject = true else local objectModel = GetEntityModel(objects[i]) for j=1, #filter, 1 do if objectModel == GetHashKey(filter[j]) then foundObject = true end end end if foundObject then local objectCoords = GetEntityCoords(objects[i]) local distance = GetDistanceBetweenCoords(objectCoords, coords.x, coords.y, coords.z, true) if closestDistance == -1 or closestDistance > distance then closestObject = objects[i] closestDistance = distance end end end return closestObject, closestDistance end ESX.Game.GetPlayers = function() local players = {} for _,player in ipairs(GetActivePlayers()) do local ped = GetPlayerPed(player) if DoesEntityExist(ped) then table.insert(players, player) end end return players end ESX.Game.GetClosestPlayer = function(coords) local players = ESX.Game.GetPlayers() local closestDistance = -1 local closestPlayer = -1 local coords = coords local usePlayerPed = false local playerPed = PlayerPedId() local playerId = PlayerId() if coords == nil then usePlayerPed = true coords = GetEntityCoords(playerPed) end for i=1, #players, 1 do local target = GetPlayerPed(players[i]) if not usePlayerPed or (usePlayerPed and players[i] ~= playerId) then local targetCoords = GetEntityCoords(target) local distance = GetDistanceBetweenCoords(targetCoords, coords.x, coords.y, coords.z, true) if closestDistance == -1 or closestDistance > distance then closestPlayer = players[i] closestDistance = distance end end end return closestPlayer, closestDistance end ESX.Game.GetPlayersInArea = function(coords, area) local players = ESX.Game.GetPlayers() local playersInArea = {} for i=1, #players, 1 do local target = GetPlayerPed(players[i]) local targetCoords = GetEntityCoords(target) local distance = GetDistanceBetweenCoords(targetCoords, coords.x, coords.y, coords.z, true) if distance <= area then table.insert(playersInArea, players[i]) end end return playersInArea end ESX.Game.GetVehicles = function() local vehicles = {} for vehicle in EnumerateVehicles() do table.insert(vehicles, vehicle) end return vehicles end ESX.Game.GetClosestVehicle = function(coords) local vehicles = ESX.Game.GetVehicles() local closestDistance = -1 local closestVehicle = -1 local coords = coords if coords == nil then local playerPed = PlayerPedId() coords = GetEntityCoords(playerPed) end for i=1, #vehicles, 1 do local vehicleCoords = GetEntityCoords(vehicles[i]) local distance = GetDistanceBetweenCoords(vehicleCoords, coords.x, coords.y, coords.z, true) if closestDistance == -1 or closestDistance > distance then closestVehicle = vehicles[i] closestDistance = distance end end return closestVehicle, closestDistance end ESX.Game.GetVehiclesInArea = function(coords, area) local vehicles = ESX.Game.GetVehicles() local vehiclesInArea = {} for i=1, #vehicles, 1 do local vehicleCoords = GetEntityCoords(vehicles[i]) local distance = GetDistanceBetweenCoords(vehicleCoords, coords.x, coords.y, coords.z, true) if distance <= area then table.insert(vehiclesInArea, vehicles[i]) end end return vehiclesInArea end ESX.Game.GetVehicleInDirection = function() local playerPed = PlayerPedId() local playerCoords = GetEntityCoords(playerPed) local inDirection = GetOffsetFromEntityInWorldCoords(playerPed, 0.0, 5.0, 0.0) local rayHandle = StartShapeTestRay(playerCoords, inDirection, 10, playerPed, 0) local numRayHandle, hit, endCoords, surfaceNormal, entityHit = GetShapeTestResult(rayHandle) if hit == 1 and GetEntityType(entityHit) == 2 then return entityHit end return nil end ESX.Game.IsSpawnPointClear = function(coords, radius) local vehicles = ESX.Game.GetVehiclesInArea(coords, radius) return #vehicles == 0 end ESX.Game.GetPeds = function(ignoreList) local ignoreList = ignoreList or {} local peds = {} for ped in EnumeratePeds() do local found = false for j=1, #ignoreList, 1 do if ignoreList[j] == ped then found = true end end if not found then table.insert(peds, ped) end end return peds end ESX.Game.GetClosestPed = function(coords, ignoreList) local ignoreList = ignoreList or {} local peds = ESX.Game.GetPeds(ignoreList) local closestDistance = -1 local closestPed = -1 for i=1, #peds, 1 do local pedCoords = GetEntityCoords(peds[i]) local distance = GetDistanceBetweenCoords(pedCoords, coords.x, coords.y, coords.z, true) if closestDistance == -1 or closestDistance > distance then closestPed = peds[i] closestDistance = distance end end return closestPed, closestDistance end ESX.Game.GetVehicleProperties = function(vehicle) local color1, color2 = GetVehicleColours(vehicle) local pearlescentColor, wheelColor = GetVehicleExtraColours(vehicle) local extras = {} for id=0, 12 do if DoesExtraExist(vehicle, id) then local state = IsVehicleExtraTurnedOn(vehicle, id) == 1 extras[tostring(id)] = state end end return { model = GetEntityModel(vehicle), plate = ESX.Math.Trim(GetVehicleNumberPlateText(vehicle)), plateIndex = GetVehicleNumberPlateTextIndex(vehicle), bodyHealth = ESX.Math.Round(GetVehicleBodyHealth(vehicle), 1), engineHealth = ESX.Math.Round(GetVehicleEngineHealth(vehicle), 1), fuelLevel = ESX.Math.Round(GetVehicleFuelLevel(vehicle), 1), dirtLevel = ESX.Math.Round(GetVehicleDirtLevel(vehicle), 1), color1 = color1, color2 = color2, pearlescentColor = pearlescentColor, wheelColor = wheelColor, wheels = GetVehicleWheelType(vehicle), windowTint = GetVehicleWindowTint(vehicle), neonEnabled = { IsVehicleNeonLightEnabled(vehicle, 0), IsVehicleNeonLightEnabled(vehicle, 1), IsVehicleNeonLightEnabled(vehicle, 2), IsVehicleNeonLightEnabled(vehicle, 3) }, extras = extras, neonColor = table.pack(GetVehicleNeonLightsColour(vehicle)), tyreSmokeColor = table.pack(GetVehicleTyreSmokeColor(vehicle)), modSpoilers = GetVehicleMod(vehicle, 0), modFrontBumper = GetVehicleMod(vehicle, 1), modRearBumper = GetVehicleMod(vehicle, 2), modSideSkirt = GetVehicleMod(vehicle, 3), modExhaust = GetVehicleMod(vehicle, 4), modFrame = GetVehicleMod(vehicle, 5), modGrille = GetVehicleMod(vehicle, 6), modHood = GetVehicleMod(vehicle, 7), modFender = GetVehicleMod(vehicle, 8), modRightFender = GetVehicleMod(vehicle, 9), modRoof = GetVehicleMod(vehicle, 10), modEngine = GetVehicleMod(vehicle, 11), modBrakes = GetVehicleMod(vehicle, 12), modTransmission = GetVehicleMod(vehicle, 13), modHorns = GetVehicleMod(vehicle, 14), modSuspension = GetVehicleMod(vehicle, 15), modArmor = GetVehicleMod(vehicle, 16), modTurbo = IsToggleModOn(vehicle, 18), modSmokeEnabled = IsToggleModOn(vehicle, 20), modXenon = IsToggleModOn(vehicle, 22), modFrontWheels = GetVehicleMod(vehicle, 23), modBackWheels = GetVehicleMod(vehicle, 24), modPlateHolder = GetVehicleMod(vehicle, 25), modVanityPlate = GetVehicleMod(vehicle, 26), modTrimA = GetVehicleMod(vehicle, 27), modOrnaments = GetVehicleMod(vehicle, 28), modDashboard = GetVehicleMod(vehicle, 29), modDial = GetVehicleMod(vehicle, 30), modDoorSpeaker = GetVehicleMod(vehicle, 31), modSeats = GetVehicleMod(vehicle, 32), modSteeringWheel = GetVehicleMod(vehicle, 33), modShifterLeavers = GetVehicleMod(vehicle, 34), modAPlate = GetVehicleMod(vehicle, 35), modSpeakers = GetVehicleMod(vehicle, 36), modTrunk = GetVehicleMod(vehicle, 37), modHydrolic = GetVehicleMod(vehicle, 38), modEngineBlock = GetVehicleMod(vehicle, 39), modAirFilter = GetVehicleMod(vehicle, 40), modStruts = GetVehicleMod(vehicle, 41), modArchCover = GetVehicleMod(vehicle, 42), modAerials = GetVehicleMod(vehicle, 43), modTrimB = GetVehicleMod(vehicle, 44), modTank = GetVehicleMod(vehicle, 45), modWindows = GetVehicleMod(vehicle, 46), modLivery = GetVehicleLivery(vehicle) } end ESX.Game.SetVehicleProperties = function(vehicle, props) SetVehicleModKit(vehicle, 0) if props.plate ~= nil then SetVehicleNumberPlateText(vehicle, props.plate) end if props.plateIndex ~= nil then SetVehicleNumberPlateTextIndex(vehicle, props.plateIndex) end if props.bodyHealth ~= nil then SetVehicleBodyHealth(vehicle, props.bodyHealth + 0.0) end if props.engineHealth ~= nil then SetVehicleEngineHealth(vehicle, props.engineHealth + 0.0) end if props.fuelLevel ~= nil then SetVehicleFuelLevel(vehicle, props.fuelLevel + 0.0) end if props.dirtLevel ~= nil then SetVehicleDirtLevel(vehicle, props.dirtLevel + 0.0) end if props.color1 ~= nil then local color1, color2 = GetVehicleColours(vehicle) SetVehicleColours(vehicle, props.color1, color2) end if props.color2 ~= nil then local color1, color2 = GetVehicleColours(vehicle) SetVehicleColours(vehicle, color1, props.color2) end if props.pearlescentColor ~= nil then local pearlescentColor, wheelColor = GetVehicleExtraColours(vehicle) SetVehicleExtraColours(vehicle, props.pearlescentColor, wheelColor) end if props.wheelColor ~= nil then local pearlescentColor, wheelColor = GetVehicleExtraColours(vehicle) SetVehicleExtraColours(vehicle, pearlescentColor, props.wheelColor) end if props.wheels ~= nil then SetVehicleWheelType(vehicle, props.wheels) end if props.windowTint ~= nil then SetVehicleWindowTint(vehicle, props.windowTint) end if props.neonEnabled ~= nil then SetVehicleNeonLightEnabled(vehicle, 0, props.neonEnabled[1]) SetVehicleNeonLightEnabled(vehicle, 1, props.neonEnabled[2]) SetVehicleNeonLightEnabled(vehicle, 2, props.neonEnabled[3]) SetVehicleNeonLightEnabled(vehicle, 3, props.neonEnabled[4]) end if props.extras ~= nil then for id,enabled in pairs(props.extras) do if enabled then SetVehicleExtra(vehicle, tonumber(id), 0) else SetVehicleExtra(vehicle, tonumber(id), 1) end end end if props.neonColor ~= nil then SetVehicleNeonLightsColour(vehicle, props.neonColor[1], props.neonColor[2], props.neonColor[3]) end if props.modSmokeEnabled ~= nil then ToggleVehicleMod(vehicle, 20, true) end if props.tyreSmokeColor ~= nil then SetVehicleTyreSmokeColor(vehicle, props.tyreSmokeColor[1], props.tyreSmokeColor[2], props.tyreSmokeColor[3]) end if props.modSpoilers ~= nil then SetVehicleMod(vehicle, 0, props.modSpoilers, false) end if props.modFrontBumper ~= nil then SetVehicleMod(vehicle, 1, props.modFrontBumper, false) end if props.modRearBumper ~= nil then SetVehicleMod(vehicle, 2, props.modRearBumper, false) end if props.modSideSkirt ~= nil then SetVehicleMod(vehicle, 3, props.modSideSkirt, false) end if props.modExhaust ~= nil then SetVehicleMod(vehicle, 4, props.modExhaust, false) end if props.modFrame ~= nil then SetVehicleMod(vehicle, 5, props.modFrame, false) end if props.modGrille ~= nil then SetVehicleMod(vehicle, 6, props.modGrille, false) end if props.modHood ~= nil then SetVehicleMod(vehicle, 7, props.modHood, false) end if props.modFender ~= nil then SetVehicleMod(vehicle, 8, props.modFender, false) end if props.modRightFender ~= nil then SetVehicleMod(vehicle, 9, props.modRightFender, false) end if props.modRoof ~= nil then SetVehicleMod(vehicle, 10, props.modRoof, false) end if props.modEngine ~= nil then SetVehicleMod(vehicle, 11, props.modEngine, false) end if props.modBrakes ~= nil then SetVehicleMod(vehicle, 12, props.modBrakes, false) end if props.modTransmission ~= nil then SetVehicleMod(vehicle, 13, props.modTransmission, false) end if props.modHorns ~= nil then SetVehicleMod(vehicle, 14, props.modHorns, false) end if props.modSuspension ~= nil then SetVehicleMod(vehicle, 15, props.modSuspension, false) end if props.modArmor ~= nil then SetVehicleMod(vehicle, 16, props.modArmor, false) end if props.modTurbo ~= nil then ToggleVehicleMod(vehicle, 18, props.modTurbo) end if props.modXenon ~= nil then ToggleVehicleMod(vehicle, 22, props.modXenon) end if props.modFrontWheels ~= nil then SetVehicleMod(vehicle, 23, props.modFrontWheels, false) end if props.modBackWheels ~= nil then SetVehicleMod(vehicle, 24, props.modBackWheels, false) end if props.modPlateHolder ~= nil then SetVehicleMod(vehicle, 25, props.modPlateHolder, false) end if props.modVanityPlate ~= nil then SetVehicleMod(vehicle, 26, props.modVanityPlate, false) end if props.modTrimA ~= nil then SetVehicleMod(vehicle, 27, props.modTrimA, false) end if props.modOrnaments ~= nil then SetVehicleMod(vehicle, 28, props.modOrnaments, false) end if props.modDashboard ~= nil then SetVehicleMod(vehicle, 29, props.modDashboard, false) end if props.modDial ~= nil then SetVehicleMod(vehicle, 30, props.modDial, false) end if props.modDoorSpeaker ~= nil then SetVehicleMod(vehicle, 31, props.modDoorSpeaker, false) end if props.modSeats ~= nil then SetVehicleMod(vehicle, 32, props.modSeats, false) end if props.modSteeringWheel ~= nil then SetVehicleMod(vehicle, 33, props.modSteeringWheel, false) end if props.modShifterLeavers ~= nil then SetVehicleMod(vehicle, 34, props.modShifterLeavers, false) end if props.modAPlate ~= nil then SetVehicleMod(vehicle, 35, props.modAPlate, false) end if props.modSpeakers ~= nil then SetVehicleMod(vehicle, 36, props.modSpeakers, false) end if props.modTrunk ~= nil then SetVehicleMod(vehicle, 37, props.modTrunk, false) end if props.modHydrolic ~= nil then SetVehicleMod(vehicle, 38, props.modHydrolic, false) end if props.modEngineBlock ~= nil then SetVehicleMod(vehicle, 39, props.modEngineBlock, false) end if props.modAirFilter ~= nil then SetVehicleMod(vehicle, 40, props.modAirFilter, false) end if props.modStruts ~= nil then SetVehicleMod(vehicle, 41, props.modStruts, false) end if props.modArchCover ~= nil then SetVehicleMod(vehicle, 42, props.modArchCover, false) end if props.modAerials ~= nil then SetVehicleMod(vehicle, 43, props.modAerials, false) end if props.modTrimB ~= nil then SetVehicleMod(vehicle, 44, props.modTrimB, false) end if props.modTank ~= nil then SetVehicleMod(vehicle, 45, props.modTank, false) end if props.modWindows ~= nil then SetVehicleMod(vehicle, 46, props.modWindows, false) end if props.modLivery ~= nil then SetVehicleMod(vehicle, 48, props.modLivery, false) SetVehicleLivery(vehicle, props.modLivery) end end ESX.Game.Utils.DrawText3D = function(coords, text, size) local onScreen, x, y = World3dToScreen2d(coords.x, coords.y, coords.z) local camCoords = GetGameplayCamCoords() local dist = GetDistanceBetweenCoords(camCoords, coords.x, coords.y, coords.z, true) local size = size if size == nil then size = 1 end local scale = (size / dist) * 2 local fov = (1 / GetGameplayCamFov()) * 100 local scale = scale * fov if onScreen then SetTextScale(0.0 * scale, 0.55 * scale) SetTextFont(0) SetTextColour(255, 255, 255, 255) SetTextDropshadow(0, 0, 0, 0, 255) SetTextDropShadow() SetTextOutline() SetTextEntry('STRING') SetTextCentre(1) AddTextComponentString(text) DrawText(x, y) end end ESX.ShowInventory = function() local playerPed = PlayerPedId() local elements = {} if ESX.PlayerData.money > 0 then local formattedMoney = _U('locale_currency', ESX.Math.GroupDigits(ESX.PlayerData.money)) table.insert(elements, { label = ('%s: <span style="color:green;">%s</span>'):format(_U('cash'), formattedMoney), count = ESX.PlayerData.money, type = 'item_money', value = 'money', usable = false, rare = false, canRemove = true }) end for i=1, #ESX.PlayerData.accounts, 1 do if ESX.PlayerData.accounts[i].money > 0 then local formattedMoney = _U('locale_currency', ESX.Math.GroupDigits(ESX.PlayerData.accounts[i].money)) local canDrop = ESX.PlayerData.accounts[i].name ~= 'bank' table.insert(elements, { label = ('%s: <span style="color:green;">%s</span>'):format(ESX.PlayerData.accounts[i].label, formattedMoney), count = ESX.PlayerData.accounts[i].money, type = 'item_account', value = ESX.PlayerData.accounts[i].name, usable = false, rare = false, canRemove = canDrop }) end end for i=1, #ESX.PlayerData.inventory, 1 do if ESX.PlayerData.inventory[i].count > 0 then table.insert(elements, { label = ESX.PlayerData.inventory[i].label .. ' x' .. ESX.PlayerData.inventory[i].count, count = ESX.PlayerData.inventory[i].count, type = 'item_standard', value = ESX.PlayerData.inventory[i].name, usable = ESX.PlayerData.inventory[i].usable, rare = ESX.PlayerData.inventory[i].rare, canRemove = ESX.PlayerData.inventory[i].canRemove }) end end for i=1, #Config.Weapons, 1 do local weaponHash = GetHashKey(Config.Weapons[i].name) if HasPedGotWeapon(playerPed, weaponHash, false) and Config.Weapons[i].name ~= 'WEAPON_UNARMED' then local ammo = GetAmmoInPedWeapon(playerPed, weaponHash) table.insert(elements, { label = Config.Weapons[i].label .. ' [' .. ammo .. ']', count = 1, type = 'item_weapon', value = Config.Weapons[i].name, ammo = ammo, usable = false, rare = false, canRemove = true }) end end ESX.UI.Menu.CloseAll() ESX.UI.Menu.Open('default', GetCurrentResourceName(), 'inventory', { title = _U('inventory'), align = 'bottom-right', elements = elements, }, function(data, menu) menu.close() local player, distance = ESX.Game.GetClosestPlayer() local elements = {} if data.current.usable then table.insert(elements, {label = _U('use'), action = 'use', type = data.current.type, value = data.current.value}) end if data.current.canRemove then if player ~= -1 and distance <= 3.0 then table.insert(elements, {label = _U('give'), action = 'give', type = data.current.type, value = data.current.value}) end table.insert(elements, {label = _U('remove'), action = 'remove', type = data.current.type, value = data.current.value}) end if data.current.type == 'item_weapon' and data.current.ammo > 0 and player ~= -1 and distance <= 3.0 then table.insert(elements, {label = _U('giveammo'), action = 'giveammo', type = data.current.type, value = data.current.value}) end table.insert(elements, {label = _U('return'), action = 'return'}) ESX.UI.Menu.Open('default', GetCurrentResourceName(), 'inventory_item', { title = data.current.label, align = 'bottom-right', elements = elements, }, function(data1, menu1) local item = data1.current.value local type = data1.current.type local playerPed = PlayerPedId() if data1.current.action == 'give' then local players = ESX.Game.GetPlayersInArea(GetEntityCoords(playerPed), 3.0) local foundPlayers = false local elements = {} for i=1, #players, 1 do if players[i] ~= PlayerId() then foundPlayers = true table.insert(elements, { label = GetPlayerName(players[i]), player = players[i] }) end end if not foundPlayers then ESX.ShowNotification(_U('players_nearby')) return end foundPlayers = false ESX.UI.Menu.Open('default', GetCurrentResourceName(), 'give_item_to', { title = _U('give_to'), align = 'bottom-right', elements = elements }, function(data2, menu2) local players, nearbyPlayer = ESX.Game.GetPlayersInArea(GetEntityCoords(playerPed), 3.0) for i=1, #players, 1 do if players[i] ~= PlayerId() then if players[i] == data2.current.player then foundPlayers = true nearbyPlayer = players[i] break end end end if not foundPlayers then ESX.ShowNotification(_U('players_nearby')) menu2.close() return end if type == 'item_weapon' then local closestPed = GetPlayerPed(nearbyPlayer) local sourceAmmo = GetAmmoInPedWeapon(PlayerPedId(), GetHashKey(item)) if IsPedSittingInAnyVehicle(closestPed) then ESX.ShowNotification(_U('in_vehicle')) return end TriggerServerEvent('esx:giveInventoryItem', GetPlayerServerId(nearbyPlayer), type, item, sourceAmmo) menu2.close() menu1.close() else ESX.UI.Menu.Open('dialog', GetCurrentResourceName(), 'inventory_item_count_give', { title = _U('amount') }, function(data3, menu3) local quantity = tonumber(data3.value) local closestPed = GetPlayerPed(nearbyPlayer) if IsPedSittingInAnyVehicle(closestPed) then ESX.ShowNotification(_U('in_vehicle')) return end if quantity ~= nil then TriggerServerEvent('esx:giveInventoryItem', GetPlayerServerId(nearbyPlayer), type, item, quantity) menu3.close() menu2.close() menu1.close() else ESX.ShowNotification(_U('amount_invalid')) end end, function(data3, menu3) menu3.close() end) end end, function(data2, menu2) menu2.close() end) -- give end elseif data1.current.action == 'remove' then if IsPedSittingInAnyVehicle(playerPed) then return end if type == 'item_weapon' then TriggerServerEvent('esx:removeInventoryItem', type, item) menu1.close() else -- type: item_standard ESX.UI.Menu.Open('dialog', GetCurrentResourceName(), 'inventory_item_count_remove', { title = _U('amount') }, function(data2, menu2) local quantity = tonumber(data2.value) if quantity == nil then ESX.ShowNotification(_U('amount_invalid')) else TriggerServerEvent('esx:removeInventoryItem', type, item, quantity) menu2.close() menu1.close() end end, function(data2, menu2) menu2.close() end) end elseif data1.current.action == 'use' then TriggerServerEvent('esx:useItem', item) elseif data1.current.action == 'return' then ESX.UI.Menu.CloseAll() ESX.ShowInventory() elseif data1.current.action == 'giveammo' then local closestPlayer, closestDistance = ESX.Game.GetClosestPlayer() local closestPed = GetPlayerPed(closestPlayer) local pedAmmo = GetAmmoInPedWeapon(playerPed, GetHashKey(item)) if IsPedSittingInAnyVehicle(closestPed) then ESX.ShowNotification(_U('in_vehicle')) return end if closestPlayer ~= -1 and closestDistance < 3.0 then if pedAmmo > 0 then ESX.UI.Menu.Open('dialog', GetCurrentResourceName(), 'inventory_item_count_give', { title = _U('amountammo') }, function(data2, menu2) local quantity = tonumber(data2.value) if quantity ~= nil then if quantity <= pedAmmo and quantity >= 0 then local finalAmmoSource = math.floor(pedAmmo - quantity) SetPedAmmo(playerPed, item, finalAmmoSource) AddAmmoToPed(closestPed, item, quantity) ESX.ShowNotification(_U('gave_ammo', quantity, GetPlayerName(closestPlayer))) -- todo notify target that he received ammo menu2.close() menu1.close() else ESX.ShowNotification(_U('noammo')) end else ESX.ShowNotification(_U('amount_invalid')) end end, function(data2, menu2) menu2.close() end) else ESX.ShowNotification(_U('noammo')) end else ESX.ShowNotification(_U('players_nearby')) end end end, function(data1, menu1) ESX.UI.Menu.CloseAll() ESX.ShowInventory() end) end, function(data, menu) menu.close() end) end RegisterNetEvent('esx:serverCallback') AddEventHandler('esx:serverCallback', function(requestId, ...) ESX.ServerCallbacks[requestId](...) ESX.ServerCallbacks[requestId] = nil end) RegisterNetEvent('esx:showNotification') AddEventHandler('esx:showNotification', function(msg) ESX.ShowNotification(msg) end) RegisterNetEvent('esx:showAdvancedNotification') AddEventHandler('esx:showAdvancedNotification', function(title, subject, msg, icon, iconType) ESX.ShowAdvancedNotification(title, subject, msg, icon, iconType) end) RegisterNetEvent('esx:showHelpNotification') AddEventHandler('esx:showHelpNotification', function(msg) ESX.ShowHelpNotification(msg) end) -- SetTimeout Citizen.CreateThread(function() while true do Citizen.Wait(0) local currTime = GetGameTimer() for i=1, #ESX.TimeoutCallbacks, 1 do if ESX.TimeoutCallbacks[i] then if currTime >= ESX.TimeoutCallbacks[i].time then ESX.TimeoutCallbacks[i].cb() ESX.TimeoutCallbacks[i] = nil end end end end end) ESX.Game.GetPedsInArea = function(coords, area, ignorelist) local peds = ESX.Game.GetPeds() local pedsInArea = {} for i=1, #peds, 1 do local pedCoords = GetEntityCoords(peds[i]) local distance = GetDistanceBetweenCoords(pedCoords, coords.x, coords.y, coords.z, true) if distance <= area then table.insert(pedsInArea, peds[i]) end end return pedsInArea end function openInventory() if not ESX.UI.Menu.IsOpen('default', 'es_extended', 'inventory') then ESX.ShowInventory() end end
違いを見つける