mirror of
https://github.com/jimathy/jim_bridge.git
synced 2026-08-17 05:56:02 +01:00
(Beta) Fixes for multiframework support
This commit is contained in:
@@ -1,116 +1,116 @@
|
||||
CountdownHandler = {}
|
||||
CountdownHandler.__index = CountdownHandler
|
||||
|
||||
function CountdownHandler:new()
|
||||
local self = setmetatable({}, CountdownHandler)
|
||||
self.scaleform = nil
|
||||
self.renderCountdown = false
|
||||
self.colour = { r = 255, g = 255, b = 255, a = 255 }
|
||||
return self
|
||||
end
|
||||
|
||||
function CountdownHandler:Load()
|
||||
if self.scaleform then return end
|
||||
self.scaleform = RequestScaleformMovie("COUNTDOWN")
|
||||
while not HasScaleformMovieLoaded(self.scaleform) do
|
||||
Wait(0)
|
||||
end
|
||||
end
|
||||
|
||||
function CountdownHandler:Dispose()
|
||||
if self.scaleform then
|
||||
SetScaleformMovieAsNoLongerNeeded(self.scaleform)
|
||||
self.scaleform = nil
|
||||
end
|
||||
end
|
||||
|
||||
function CountdownHandler:Update()
|
||||
if self.scaleform then
|
||||
DrawScaleformMovieFullscreen(self.scaleform, 255, 255, 255, 255, 0)
|
||||
end
|
||||
end
|
||||
|
||||
function CountdownHandler:ShowMessage(message)
|
||||
local r, g, b, a = self.colour.r, self.colour.g, self.colour.b, self.colour.a
|
||||
|
||||
BeginScaleformMovieMethod(self.scaleform, "SET_MESSAGE")
|
||||
ScaleformMovieMethodAddParamPlayerNameString(message)
|
||||
ScaleformMovieMethodAddParamInt(r)
|
||||
ScaleformMovieMethodAddParamInt(g)
|
||||
ScaleformMovieMethodAddParamInt(b)
|
||||
ScaleformMovieMethodAddParamBool(true)
|
||||
EndScaleformMovieMethod()
|
||||
|
||||
BeginScaleformMovieMethod(self.scaleform, "FADE_MP")
|
||||
ScaleformMovieMethodAddParamPlayerNameString(message)
|
||||
ScaleformMovieMethodAddParamInt(r)
|
||||
ScaleformMovieMethodAddParamInt(g)
|
||||
ScaleformMovieMethodAddParamInt(b)
|
||||
EndScaleformMovieMethod()
|
||||
end
|
||||
|
||||
--- Starts the countdown with the specified number and HUD color.
|
||||
---
|
||||
--- @param number number|nil The starting number for the countdown. Defaults to 3.
|
||||
--- @param hudColour number|nil The HUD color index. Defaults to 18.
|
||||
---
|
||||
--- @return boolean `true` when the countdown has finished.
|
||||
---
|
||||
--- @usage
|
||||
--- ```lua
|
||||
--- -- Start a countdown of 5 seconds with HUD color 25
|
||||
--- if CountdownHandler:Start(5, 25) then
|
||||
--- print("Countdown Complete")
|
||||
--- end
|
||||
--- ```
|
||||
function CountdownHandler:Start(number, hudColour)
|
||||
local finished = false
|
||||
number = number or 3
|
||||
hudColour = hudColour or 18
|
||||
|
||||
local r, g, b, a = GetHudColour(hudColour)
|
||||
self.colour = { r = r, g = g, b = b, a = a }
|
||||
|
||||
self:Load()
|
||||
|
||||
self.renderCountdown = true
|
||||
CreateThread(function()
|
||||
while self.renderCountdown do
|
||||
Wait(0)
|
||||
self:Update()
|
||||
end
|
||||
end)
|
||||
|
||||
-- Begin the countdown
|
||||
CreateThread(function()
|
||||
local currentNumber = number
|
||||
while currentNumber > 0 do
|
||||
-- Play countdown sound
|
||||
playSound("Count")
|
||||
self:ShowMessage(tostring(currentNumber))
|
||||
Wait(1000)
|
||||
currentNumber = currentNumber - 1
|
||||
end
|
||||
playSound("Go")
|
||||
|
||||
self:ShowMessage("GO")
|
||||
finished = true
|
||||
|
||||
Wait(1000)
|
||||
self.renderCountdown = false
|
||||
self:Dispose()
|
||||
finished = true
|
||||
end)
|
||||
while not finished do Wait(10) end
|
||||
return true
|
||||
end
|
||||
|
||||
-- Create an instance of CountdownHandler
|
||||
CountdownHandler = CountdownHandler:new()
|
||||
|
||||
-- Optional: Register an event to start the countdown
|
||||
RegisterNetEvent(getScript()..":startCountdown", function(number, hudColour)
|
||||
CountdownHandler:Start(number, hudColour)
|
||||
end)
|
||||
|
||||
CountdownHandler = {}
|
||||
CountdownHandler.__index = CountdownHandler
|
||||
|
||||
function CountdownHandler:new()
|
||||
local self = setmetatable({}, CountdownHandler)
|
||||
self.scaleform = nil
|
||||
self.renderCountdown = false
|
||||
self.colour = { r = 255, g = 255, b = 255, a = 255 }
|
||||
return self
|
||||
end
|
||||
|
||||
function CountdownHandler:Load()
|
||||
if self.scaleform then return end
|
||||
self.scaleform = RequestScaleformMovie("COUNTDOWN")
|
||||
while not HasScaleformMovieLoaded(self.scaleform) do
|
||||
Wait(0)
|
||||
end
|
||||
end
|
||||
|
||||
function CountdownHandler:Dispose()
|
||||
if self.scaleform then
|
||||
SetScaleformMovieAsNoLongerNeeded(self.scaleform)
|
||||
self.scaleform = nil
|
||||
end
|
||||
end
|
||||
|
||||
function CountdownHandler:Update()
|
||||
if self.scaleform then
|
||||
DrawScaleformMovieFullscreen(self.scaleform, 255, 255, 255, 255, 0)
|
||||
end
|
||||
end
|
||||
|
||||
function CountdownHandler:ShowMessage(message)
|
||||
local r, g, b, a = self.colour.r, self.colour.g, self.colour.b, self.colour.a
|
||||
|
||||
BeginScaleformMovieMethod(self.scaleform, "SET_MESSAGE")
|
||||
ScaleformMovieMethodAddParamPlayerNameString(message)
|
||||
ScaleformMovieMethodAddParamInt(r)
|
||||
ScaleformMovieMethodAddParamInt(g)
|
||||
ScaleformMovieMethodAddParamInt(b)
|
||||
ScaleformMovieMethodAddParamBool(true)
|
||||
EndScaleformMovieMethod()
|
||||
|
||||
BeginScaleformMovieMethod(self.scaleform, "FADE_MP")
|
||||
ScaleformMovieMethodAddParamPlayerNameString(message)
|
||||
ScaleformMovieMethodAddParamInt(r)
|
||||
ScaleformMovieMethodAddParamInt(g)
|
||||
ScaleformMovieMethodAddParamInt(b)
|
||||
EndScaleformMovieMethod()
|
||||
end
|
||||
|
||||
--- Starts the countdown with the specified number and HUD color.
|
||||
---
|
||||
--- @param number number|nil The starting number for the countdown. Defaults to 3.
|
||||
--- @param hudColour number|nil The HUD color index. Defaults to 18.
|
||||
---
|
||||
--- @return boolean `true` when the countdown has finished.
|
||||
---
|
||||
--- @usage
|
||||
--- ```lua
|
||||
--- -- Start a countdown of 5 seconds with HUD color 25
|
||||
--- if CountdownHandler:Start(5, 25) then
|
||||
--- print("Countdown Complete")
|
||||
--- end
|
||||
--- ```
|
||||
function CountdownHandler:Start(number, hudColour)
|
||||
local finished = false
|
||||
number = number or 3
|
||||
hudColour = hudColour or 18
|
||||
|
||||
local r, g, b, a = GetHudColour(hudColour)
|
||||
self.colour = { r = r, g = g, b = b, a = a }
|
||||
|
||||
self:Load()
|
||||
|
||||
self.renderCountdown = true
|
||||
CreateThread(function()
|
||||
while self.renderCountdown do
|
||||
Wait(0)
|
||||
self:Update()
|
||||
end
|
||||
end)
|
||||
|
||||
-- Begin the countdown
|
||||
CreateThread(function()
|
||||
local currentNumber = number
|
||||
while currentNumber > 0 do
|
||||
-- Play countdown sound
|
||||
playSound("Count")
|
||||
self:ShowMessage(tostring(currentNumber))
|
||||
Wait(1000)
|
||||
currentNumber = currentNumber - 1
|
||||
end
|
||||
playSound("Go")
|
||||
|
||||
self:ShowMessage("GO")
|
||||
finished = true
|
||||
|
||||
Wait(1000)
|
||||
self.renderCountdown = false
|
||||
self:Dispose()
|
||||
finished = true
|
||||
end)
|
||||
while not finished do Wait(10) end
|
||||
return true
|
||||
end
|
||||
|
||||
-- Create an instance of CountdownHandler
|
||||
CountdownHandler = CountdownHandler:new()
|
||||
|
||||
-- Optional: Register an event to start the countdown
|
||||
RegisterNetEvent(getScript()..":startCountdown", function(number, hudColour)
|
||||
CountdownHandler:Start(number, hudColour)
|
||||
end)
|
||||
|
||||
return CountdownHandler
|
||||
Reference in New Issue
Block a user