From 6a721819925f99a5f76e179686b62645684dd9a1 Mon Sep 17 00:00:00 2001 From: ASTROWwwW Date: Tue, 16 Jun 2026 21:03:41 +0200 Subject: [PATCH] feat(esx_lib/scaleform): move scaleform helpers to xLib --- [core]/es_extended/client/compat.lua | 11 +++ [core]/es_extended/fxmanifest.lua | 1 - .../imports/scaleform/client.lua} | 70 ++++++++++++------- 3 files changed, 56 insertions(+), 26 deletions(-) rename [core]/{es_extended/client/modules/scaleform.lua => esx_lib/imports/scaleform/client.lua} (61%) diff --git a/[core]/es_extended/client/compat.lua b/[core]/es_extended/client/compat.lua index c92dd193..51f8b986 100644 --- a/[core]/es_extended/client/compat.lua +++ b/[core]/es_extended/client/compat.lua @@ -46,3 +46,14 @@ ESX.Streaming = { RequestAnimDict = xLib.streaming.requestAnimDict, RequestWeaponAsset = xLib.streaming.requestWeaponAsset, } + +ESX.Scaleform = { + ShowFreemodeMessage = xLib.scaleform.showFreemodeMessage, + ShowBreakingNews = xLib.scaleform.showBreakingNews, + ShowPopupWarning = xLib.scaleform.showPopupWarning, + ShowTrafficMovie = xLib.scaleform.showTrafficMovie, + Utils = { + RequestScaleformMovie = xLib.scaleform.utils.requestScaleformMovie, + RunMethod = xLib.scaleform.utils.runMethod, + }, +} diff --git a/[core]/es_extended/fxmanifest.lua b/[core]/es_extended/fxmanifest.lua index d8c2112b..3d2e9e2c 100644 --- a/[core]/es_extended/fxmanifest.lua +++ b/[core]/es_extended/fxmanifest.lua @@ -57,7 +57,6 @@ client_scripts { 'client/modules/death.lua', 'client/modules/npwd.lua', 'client/modules/interactions.lua', - 'client/modules/scaleform.lua', } ui_page { diff --git a/[core]/es_extended/client/modules/scaleform.lua b/[core]/esx_lib/imports/scaleform/client.lua similarity index 61% rename from [core]/es_extended/client/modules/scaleform.lua rename to [core]/esx_lib/imports/scaleform/client.lua index 0662f9c3..e5729ced 100644 --- a/[core]/es_extended/client/modules/scaleform.lua +++ b/[core]/esx_lib/imports/scaleform/client.lua @@ -1,22 +1,12 @@ -ESX.Scaleform = {} -ESX.Scaleform.Utils = {} +---@class scaleformlib +xLib.scaleform = {} +xLib.scaleform.utils = {} -function ESX.Scaleform.ShowFreemodeMessage(title, msg, sec) - local scaleform = ESX.Scaleform.Utils.RunMethod("MP_BIG_MESSAGE_FREEMODE", "SHOW_SHARD_WASTED_MP_MESSAGE", false, title, msg) - - local endTime = GetGameTimer() + (sec * 1000) - while GetGameTimer() < endTime do - Wait(0) - DrawScaleformMovieFullscreen(scaleform, 255, 255, 255, 255, 0) - end - - SetScaleformMovieAsNoLongerNeeded(scaleform) -end - -function ESX.Scaleform.ShowBreakingNews(title, msg, bottom, sec) - local scaleform = ESX.Scaleform.Utils.RunMethod("BREAKING_NEWS", "SET_TEXT", false, msg, bottom) - ESX.Scaleform.Utils.RunMethod(scaleform, "SET_SCROLL_TEXT", false, 0, 0, title) - ESX.Scaleform.Utils.RunMethod(scaleform, "DISPLAY_SCROLL_TEXT", false, 0, 0) +---@param title string +---@param msg string +---@param sec number +function xLib.scaleform.showFreemodeMessage(title, msg, sec) + local scaleform = xLib.scaleform.utils.runMethod("MP_BIG_MESSAGE_FREEMODE", "SHOW_SHARD_WASTED_MP_MESSAGE", false, title, msg) local endTime = GetGameTimer() + (sec * 1000) while GetGameTimer() < endTime do @@ -27,8 +17,14 @@ function ESX.Scaleform.ShowBreakingNews(title, msg, bottom, sec) SetScaleformMovieAsNoLongerNeeded(scaleform) end -function ESX.Scaleform.ShowPopupWarning(title, msg, bottom, sec) - local scaleform = ESX.Scaleform.Utils.RunMethod("POPUP_WARNING", "SHOW_POPUP_WARNING", false, 500.0, title, msg, bottom, true) +---@param title string +---@param msg string +---@param bottom string +---@param sec number +function xLib.scaleform.showBreakingNews(title, msg, bottom, sec) + local scaleform = xLib.scaleform.utils.runMethod("BREAKING_NEWS", "SET_TEXT", false, msg, bottom) + xLib.scaleform.utils.runMethod(scaleform, "SET_SCROLL_TEXT", false, 0, 0, title) + xLib.scaleform.utils.runMethod(scaleform, "DISPLAY_SCROLL_TEXT", false, 0, 0) local endTime = GetGameTimer() + (sec * 1000) while GetGameTimer() < endTime do @@ -39,8 +35,12 @@ function ESX.Scaleform.ShowPopupWarning(title, msg, bottom, sec) SetScaleformMovieAsNoLongerNeeded(scaleform) end -function ESX.Scaleform.ShowTrafficMovie(sec) - local scaleform = ESX.Scaleform.Utils.RunMethod("TRAFFIC_CAM", "PLAY_CAM_MOVIE", false) +---@param title string +---@param msg string +---@param bottom string +---@param sec number +function xLib.scaleform.showPopupWarning(title, msg, bottom, sec) + local scaleform = xLib.scaleform.utils.runMethod("POPUP_WARNING", "SHOW_POPUP_WARNING", false, 500.0, title, msg, bottom, true) local endTime = GetGameTimer() + (sec * 1000) while GetGameTimer() < endTime do @@ -51,7 +51,22 @@ function ESX.Scaleform.ShowTrafficMovie(sec) SetScaleformMovieAsNoLongerNeeded(scaleform) end -function ESX.Scaleform.Utils.RequestScaleformMovie(movie) +---@param sec number +function xLib.scaleform.showTrafficMovie(sec) + local scaleform = xLib.scaleform.utils.runMethod("TRAFFIC_CAM", "PLAY_CAM_MOVIE", false) + + local endTime = GetGameTimer() + (sec * 1000) + while GetGameTimer() < endTime do + Wait(0) + DrawScaleformMovieFullscreen(scaleform, 255, 255, 255, 255, 0) + end + + SetScaleformMovieAsNoLongerNeeded(scaleform) +end + +---@param movie string +---@return number +function xLib.scaleform.utils.requestScaleformMovie(movie) local scaleform = RequestScaleformMovie(movie) while not HasScaleformMovieLoaded(scaleform) do @@ -68,8 +83,11 @@ end ---@param returnValue? boolean # Whether to return the value from the method ---@param ... number|string|boolean # Arguments to pass to the method ---@return number, number? # The scaleform handle, and the return value if `returnValue` is true -function ESX.Scaleform.Utils.RunMethod(scaleform, methodName, returnValue, ...) - scaleform = type(scaleform) == "number" and scaleform or ESX.Scaleform.Utils.RequestScaleformMovie(scaleform) +function xLib.scaleform.utils.runMethod(scaleform, methodName, returnValue, ...) + if type(scaleform) ~= "number" then + scaleform = xLib.scaleform.utils.requestScaleformMovie(scaleform) + end + BeginScaleformMovieMethod(scaleform, methodName) local args = { ... } @@ -97,3 +115,5 @@ function ESX.Scaleform.Utils.RunMethod(scaleform, methodName, returnValue, ...) return scaleform end + +return xLib.scaleform