From 50c5deff5feee4a360d2f9d62b6585eb0c729301 Mon Sep 17 00:00:00 2001 From: ElPumpo Date: Sun, 15 Jul 2018 13:38:46 +0200 Subject: [PATCH] Implemented experimental Scaleform API --- __resource.lua | 2 + client/functions.lua | 3 ++ client/modules/scaleform.lua | 93 ++++++++++++++++++++++++++++++++++++ 3 files changed, 98 insertions(+) create mode 100644 client/modules/scaleform.lua diff --git a/__resource.lua b/__resource.lua index a68ee339..f3cbb740 100644 --- a/__resource.lua +++ b/__resource.lua @@ -47,6 +47,8 @@ client_scripts { 'client/wrapper.lua', 'client/main.lua', + 'client/modules/scaleform.lua', + 'shared/functions.lua' } diff --git a/client/functions.lua b/client/functions.lua index f77dd4f8..fd1fa693 100644 --- a/client/functions.lua +++ b/client/functions.lua @@ -15,6 +15,9 @@ ESX.UI.Menu.Opened = {} ESX.Game = {} ESX.Game.Utils = {} +ESX.Scaleform = {} +ESX.Scaleform.Utils = {} + ESX.GetConfig = function() return Config end diff --git a/client/modules/scaleform.lua b/client/modules/scaleform.lua new file mode 100644 index 00000000..eca6ba16 --- /dev/null +++ b/client/modules/scaleform.lua @@ -0,0 +1,93 @@ +ESX.Scaleform.ShowFreemodeMessage = function(title, msg, sec) + local scaleform = ESX.Scaleform.Utils.RequestScaleformMovie('MP_BIG_MESSAGE_FREEMODE') + + PushScaleformMovieFunction(scaleform, 'SHOW_SHARD_WASTED_MP_MESSAGE') + PushScaleformMovieFunctionParameterString(title) + PushScaleformMovieFunctionParameterString(msg) + PopScaleformMovieFunctionVoid() + + while sec > 0 do + Citizen.Wait(1) + sec = sec - 0.01 + + DrawScaleformMovieFullscreen(scaleform, 255, 255, 255, 255) + end + + SetScaleformMovieAsNoLongerNeeded(scaleform) +end + +ESX.Scaleform.ShowBreakingNews = function(title, msg, bottom, sec) + local scaleform = ESX.Scaleform.Utils.RequestScaleformMovie('BREAKING_NEWS') + + PushScaleformMovieFunction(scaleform, 'SET_TEXT') + PushScaleformMovieFunctionParameterString(msg) + PushScaleformMovieFunctionParameterString(bottom) + PopScaleformMovieFunctionVoid() + + PushScaleformMovieFunction(scaleform, 'SET_SCROLL_TEXT') + PushScaleformMovieFunctionParameterInt(0) -- top ticker + PushScaleformMovieFunctionParameterInt(0) -- Since this is the first string, start at 0 + PushScaleformMovieFunctionParameterString(title) + PopScaleformMovieFunctionVoid() + + PushScaleformMovieFunction(scaleform, 'DISPLAY_SCROLL_TEXT') + PushScaleformMovieFunctionParameterInt(0) -- Top ticker + PushScaleformMovieFunctionParameterInt(0) -- Index of string + PopScaleformMovieFunctionVoid() + + while sec > 0 do + Citizen.Wait(1) + sec = sec - 0.01 + + DrawScaleformMovieFullscreen(scaleform, 255, 255, 255, 255) + end + + SetScaleformMovieAsNoLongerNeeded(scaleform) +end + +ESX.Scaleform.ShowPopupWarning = function(title, msg, bottom, sec) + local scaleform = ESX.Scaleform.Utils.RequestScaleformMovie('POPUP_WARNING') + + PushScaleformMovieFunction(scaleform, 'SHOW_POPUP_WARNING') + PushScaleformMovieFunctionParameterFloat(500.0) -- black background + PushScaleformMovieFunctionParameterString(title) + PushScaleformMovieFunctionParameterString(msg) + PushScaleformMovieFunctionParameterString(bottom) + PushScaleformMovieFunctionParameterBool(true) + PopScaleformMovieFunctionVoid() + + while sec > 0 do + Citizen.Wait(1) + sec = sec - 0.01 + + DrawScaleformMovieFullscreen(scaleform, 255, 255, 255, 255) + end + + SetScaleformMovieAsNoLongerNeeded(scaleform) +end + +ESX.Scaleform.ShowTrafficMovie = function(sec) + local scaleform = ESX.Scaleform.Utils.RequestScaleformMovie('TRAFFIC_CAM') + + PushScaleformMovieFunction(scaleform, 'PLAY_CAM_MOVIE') + PopScaleformMovieFunctionVoid() + + while sec > 0 do + Citizen.Wait(1) + sec = sec - 0.01 + + DrawScaleformMovieFullscreen(scaleform, 255, 255, 255, 255) + end + + SetScaleformMovieAsNoLongerNeeded(scaleform) +end + +ESX.Scaleform.Utils.RequestScaleformMovie = function(movie) + local scaleform = RequestScaleformMovie(movie) + + while not HasScaleformMovieLoaded(scaleform) do + Citizen.Wait(0) + end + + return scaleform +end \ No newline at end of file