mirror of
https://github.com/jimathy/jim_bridge.git
synced 2026-08-17 05:56:02 +01:00
110 lines
3.9 KiB
Lua
110 lines
3.9 KiB
Lua
|
|
--- Executes a function when the player character is loaded into the game.
|
||
|
|
---
|
||
|
|
--- This function sets up event listeners for player loading based on the game framework detected (e.g., QB, ESX, OX).
|
||
|
|
---
|
||
|
|
--- If `onStart` is `true`, it will also attempt to execute the function on resource start after ensuring the player is logged in. (Helpful for debugging)
|
||
|
|
---
|
||
|
|
--- @param func function The function to execute when the player is loaded.
|
||
|
|
--- @param onStart boolean (optional) If `true`, the function will also execute on resource start. Default is `false`.
|
||
|
|
---
|
||
|
|
--- @usage
|
||
|
|
--- ```lua
|
||
|
|
--- onPlayerLoaded(function()
|
||
|
|
--- -- Your code here
|
||
|
|
--- end, true)
|
||
|
|
--- ```
|
||
|
|
function onPlayerLoaded(func, onStart)
|
||
|
|
local onPlayerName = ""
|
||
|
|
local loaded = false
|
||
|
|
if onStart then
|
||
|
|
onResourceStart(function()
|
||
|
|
if not LocalPlayer.state.isLoggedIn then
|
||
|
|
Wait(3000)
|
||
|
|
if not LocalPlayer.state.isLoggedIn then -- If the player is not logged in after waiting, skip execution
|
||
|
|
return
|
||
|
|
end
|
||
|
|
end
|
||
|
|
loaded = true -- Mark as already loaded
|
||
|
|
debugPrint("^6Bridge^7: ^2Loading ^3onResourceStart^7() ^2through ^3onPlayerLoaded^7()")
|
||
|
|
Wait(2000)
|
||
|
|
func()
|
||
|
|
end, true)
|
||
|
|
end
|
||
|
|
if not loaded then
|
||
|
|
local tempFunc = function()
|
||
|
|
debugPrint("^6Bridge^7: ^2Executing ^3onPlayerLoaded^7()")
|
||
|
|
func()
|
||
|
|
end
|
||
|
|
if isStarted(QBExport) or isStarted(QBXExport) then onPlayerName = QBExport
|
||
|
|
AddEventHandler('QBCore:Client:OnPlayerLoaded', tempFunc)
|
||
|
|
elseif isStarted(ESXExport) then onPlayerName = ESXExport
|
||
|
|
AddEventHandler('esx:playerLoaded', tempFunc)
|
||
|
|
elseif isStarted(OXCoreExport) then onPlayerName = OXCoreExport
|
||
|
|
AddEventHandler('ox:playerLoaded', tempFunc)
|
||
|
|
end
|
||
|
|
if onPlayerName ~= "" then
|
||
|
|
debugPrint("^6Bridge^7: ^2Registering ^3onPlayerLoaded^2 with ^7"..onPlayerName)
|
||
|
|
else
|
||
|
|
print("^4ERROR^7: ^2No Core detected for onPlayerLoaded ^7- ^2Check ^3exports^1.^2lua^7")
|
||
|
|
end
|
||
|
|
end
|
||
|
|
end
|
||
|
|
|
||
|
|
--- Executes a function when the resource starts.
|
||
|
|
---
|
||
|
|
--- This function wraps the `onResourceStart` event, allowing you to execute code when the resource starts.
|
||
|
|
---
|
||
|
|
--- @param func function The function to execute on resource start.
|
||
|
|
--- @param thisScript boolean (optional) If `true`, only runs the function when this resource starts. Default is `true`.
|
||
|
|
---
|
||
|
|
--- @usage
|
||
|
|
--- ```lua
|
||
|
|
--- onResourceStart(function()
|
||
|
|
--- -- Your code here
|
||
|
|
--- end, true)
|
||
|
|
--- ```
|
||
|
|
function onResourceStart(func, thisScript)
|
||
|
|
debugPrint("^6Bridge^7: ^2Registering ^3onResourceStart^2")
|
||
|
|
AddEventHandler('onResourceStart', function(resourceName)
|
||
|
|
if getScript() == resourceName and (thisScript or true) then
|
||
|
|
func()
|
||
|
|
end
|
||
|
|
end)
|
||
|
|
end
|
||
|
|
|
||
|
|
--- Executes a function when the resource stops.
|
||
|
|
---
|
||
|
|
--- This function wraps the `onResourceStop` event, allowing you to execute code when the resource stops.
|
||
|
|
---
|
||
|
|
--- @param func function The function to execute on resource stop.
|
||
|
|
--- @param thisScript boolean (optional) If `true`, only runs the function when this resource stops. Default is `true`.
|
||
|
|
---
|
||
|
|
--- @usage
|
||
|
|
--- ```lua
|
||
|
|
--- onResourceStop(function()
|
||
|
|
--- -- Cleanup code here
|
||
|
|
--- end, true)
|
||
|
|
--- ```
|
||
|
|
function onResourceStop(func, thisScript)
|
||
|
|
debugPrint("^6Bridge^7: ^2Registering ^3onResourceStop^2")
|
||
|
|
AddEventHandler('onResourceStop', function(resourceName)
|
||
|
|
if getScript() == resourceName and (thisScript or true) then
|
||
|
|
func()
|
||
|
|
end
|
||
|
|
end)
|
||
|
|
end
|
||
|
|
|
||
|
|
--- Waits until the player is logged in before continuing execution.
|
||
|
|
---
|
||
|
|
--- This function blocks execution until `LocalPlayer.state.isLoggedIn` is `true`.
|
||
|
|
---
|
||
|
|
---@usage
|
||
|
|
--- ```lua
|
||
|
|
--- waitForLogin()
|
||
|
|
--- ```
|
||
|
|
function waitForLogin()
|
||
|
|
while not LocalPlayer.state.isLoggedIn do
|
||
|
|
debugPrint("Waiting")
|
||
|
|
Wait(100)
|
||
|
|
end
|
||
|
|
end
|