mirror of
https://github.com/jimathy/jim_bridge.git
synced 2026-08-17 05:56:02 +01:00
Upload beta 1.2
This commit is contained in:
277
shared/scaleforms/bigMessageInstance.lua
Normal file
277
shared/scaleforms/bigMessageInstance.lua
Normal file
@@ -0,0 +1,277 @@
|
||||
BigMessage = {}
|
||||
BigMessage.__index = BigMessage
|
||||
|
||||
function BigMessage:new()
|
||||
local self = setmetatable({}, BigMessage)
|
||||
self.scaleform = nil
|
||||
self.startTime = 0
|
||||
self.duration = 0
|
||||
self.transition = "TRANSITION_OUT"
|
||||
self.transitionDuration = 0.15
|
||||
self.transitionPreventAutoExpansion = false
|
||||
self.transitionExecuted = false
|
||||
self.manualDispose = false
|
||||
self.isDisplaying = false
|
||||
return self
|
||||
end
|
||||
|
||||
function BigMessage:Load()
|
||||
if self.scaleform then return end
|
||||
self.scaleform = RequestScaleformMovie("MP_BIG_MESSAGE_FREEMODE")
|
||||
while not HasScaleformMovieLoaded(self.scaleform) do
|
||||
Wait(0)
|
||||
end
|
||||
end
|
||||
|
||||
-- Dispose of the scaleform
|
||||
function BigMessage:Dispose()
|
||||
if not self.scaleform then return end
|
||||
|
||||
if self.manualDispose then
|
||||
BeginScaleformMovieMethod(self.scaleform, self.transition)
|
||||
ScaleformMovieMethodAddParamBool(false)
|
||||
ScaleformMovieMethodAddParamFloat(self.transitionDuration)
|
||||
ScaleformMovieMethodAddParamBool(self.transitionPreventAutoExpansion)
|
||||
EndScaleformMovieMethod()
|
||||
|
||||
Wait((self.transitionDuration * 0.5) * 1000)
|
||||
|
||||
self.manualDispose = false
|
||||
end
|
||||
|
||||
self.startTime = 0
|
||||
self.transitionExecuted = false
|
||||
SetScaleformMovieAsNoLongerNeeded(self.scaleform)
|
||||
self.scaleform = nil
|
||||
self.isDisplaying = false
|
||||
end
|
||||
|
||||
function BigMessage:Update()
|
||||
if not self.scaleform then return end
|
||||
DrawScaleformMovieFullscreen(self.scaleform, 255, 255, 255, 255, 0)
|
||||
|
||||
if self.manualDispose then return end
|
||||
|
||||
if self.startTime ~= 0 and (GetGameTimer() - self.startTime) > self.duration then
|
||||
if not self.transitionExecuted then
|
||||
BeginScaleformMovieMethod(self.scaleform, self.transition)
|
||||
ScaleformMovieMethodAddParamBool(false)
|
||||
ScaleformMovieMethodAddParamFloat(self.transitionDuration)
|
||||
ScaleformMovieMethodAddParamBool(self.transitionPreventAutoExpansion)
|
||||
EndScaleformMovieMethod()
|
||||
self.transitionExecuted = true
|
||||
self.duration = self.duration + ((self.transitionDuration * 0.5) * 1000)
|
||||
else
|
||||
self:Dispose()
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function BigMessage:SetTransition(transition, duration, preventAutoExpansion)
|
||||
self.transition = transition or "TRANSITION_OUT"
|
||||
self.transitionDuration = duration or 0.4
|
||||
self.transitionPreventAutoExpansion = preventAutoExpansion or true
|
||||
end
|
||||
|
||||
function BigMessage:StartUpdate()
|
||||
if self.isDisplaying then return end
|
||||
self.isDisplaying = true
|
||||
CreateThread(function()
|
||||
while self.isDisplaying do
|
||||
Wait(0)
|
||||
self:Update()
|
||||
end
|
||||
end)
|
||||
end
|
||||
|
||||
--- Displays a mission passed message.
|
||||
---
|
||||
--- @param msg string The main message to display.
|
||||
--- @param duration number|nil The duration in milliseconds the message should be displayed. Defaults to 5000.
|
||||
--- @param manualDispose boolean|nil Whether to manually dispose of the scaleform after the message. Defaults to false.
|
||||
function BigMessage:ShowMissionPassedMessage(msg, duration, manualDispose)
|
||||
duration = duration or 5000
|
||||
self:Load()
|
||||
self.startTime = GetGameTimer()
|
||||
self.manualDispose = manualDispose or false
|
||||
|
||||
BeginScaleformMovieMethod(self.scaleform, "SHOW_MISSION_PASSED_MESSAGE")
|
||||
ScaleformMovieMethodAddParamPlayerNameString(msg)
|
||||
ScaleformMovieMethodAddParamPlayerNameString("")
|
||||
ScaleformMovieMethodAddParamInt(100)
|
||||
ScaleformMovieMethodAddParamBool(true)
|
||||
ScaleformMovieMethodAddParamInt(0)
|
||||
ScaleformMovieMethodAddParamBool(true)
|
||||
EndScaleformMovieMethod()
|
||||
|
||||
self.duration = duration
|
||||
self:StartUpdate()
|
||||
end
|
||||
|
||||
--- Displays a colored shard message.
|
||||
---
|
||||
--- @param msg string The main message to display.
|
||||
--- @param desc string The description text.
|
||||
--- @param textColor number The color index for the text.
|
||||
--- @param bgColor number The color index for the background.
|
||||
--- @param duration number|nil The duration in milliseconds the message should be displayed. Defaults to 5000.
|
||||
--- @param manualDispose boolean|nil Whether to manually dispose of the scaleform after the message. Defaults to false.
|
||||
function BigMessage:ShowColoredShard(msg, desc, textColor, bgColor, duration, manualDispose)
|
||||
duration = duration or 5000
|
||||
self:Load()
|
||||
self.startTime = GetGameTimer()
|
||||
self.manualDispose = manualDispose or false
|
||||
|
||||
BeginScaleformMovieMethod(self.scaleform, "SHOW_SHARD_CENTERED_MP_MESSAGE")
|
||||
ScaleformMovieMethodAddParamPlayerNameString(msg)
|
||||
ScaleformMovieMethodAddParamPlayerNameString(desc)
|
||||
ScaleformMovieMethodAddParamInt(bgColor)
|
||||
ScaleformMovieMethodAddParamInt(textColor)
|
||||
EndScaleformMovieMethod()
|
||||
|
||||
self.duration = duration
|
||||
self:StartUpdate()
|
||||
end
|
||||
|
||||
--- Displays an old-style mission passed message.
|
||||
---
|
||||
--- @param msg string The main message to display.
|
||||
--- @param duration number|nil The duration in milliseconds the message should be displayed. Defaults to 5000.
|
||||
--- @param manualDispose boolean|nil Whether to manually dispose of the scaleform after the message. Defaults to false.
|
||||
---
|
||||
--- @return void
|
||||
function BigMessage:ShowOldMessage(msg, duration, manualDispose)
|
||||
duration = duration or 5000
|
||||
self:Load()
|
||||
self.startTime = GetGameTimer()
|
||||
self.manualDispose = manualDispose or false
|
||||
|
||||
BeginScaleformMovieMethod(self.scaleform, "SHOW_MISSION_PASSED_MESSAGE")
|
||||
ScaleformMovieMethodAddParamPlayerNameString(msg)
|
||||
EndScaleformMovieMethod()
|
||||
|
||||
self.duration = duration
|
||||
self:StartUpdate()
|
||||
end
|
||||
|
||||
--- Displays a simple shard message.
|
||||
---
|
||||
--- @param msg string The main message to display.
|
||||
--- @param subtitle string The subtitle text.
|
||||
--- @param duration number|nil The duration in milliseconds the message should be displayed. Defaults to 5000.
|
||||
--- @param manualDispose boolean|nil Whether to manually dispose of the scaleform after the message. Defaults to false.
|
||||
---
|
||||
--- @return void
|
||||
function BigMessage:ShowSimpleShard(msg, subtitle, duration, manualDispose)
|
||||
duration = duration or 5000
|
||||
self:Load()
|
||||
self.startTime = GetGameTimer()
|
||||
self.manualDispose = manualDispose or false
|
||||
|
||||
BeginScaleformMovieMethod(self.scaleform, "SHOW_SHARD_CREW_RANKUP_MP_MESSAGE")
|
||||
ScaleformMovieMethodAddParamPlayerNameString(msg)
|
||||
ScaleformMovieMethodAddParamPlayerNameString(subtitle)
|
||||
EndScaleformMovieMethod()
|
||||
|
||||
self.duration = duration
|
||||
self:StartUpdate()
|
||||
end
|
||||
|
||||
--- Displays a rank-up message.
|
||||
---
|
||||
--- @param msg string The main message to display.
|
||||
--- @param subtitle string The subtitle text.
|
||||
--- @param rank number The rank level achieved.
|
||||
--- @param duration number|nil The duration in milliseconds the message should be displayed. Defaults to 5000.
|
||||
--- @param manualDispose boolean|nil Whether to manually dispose of the scaleform after the message. Defaults to false.
|
||||
function BigMessage:ShowRankupMessage(msg, subtitle, rank, duration, manualDispose)
|
||||
duration = duration or 5000
|
||||
self:Load()
|
||||
self.startTime = GetGameTimer()
|
||||
self.manualDispose = manualDispose or false
|
||||
|
||||
BeginScaleformMovieMethod(self.scaleform, "SHOW_BIG_MP_MESSAGE")
|
||||
ScaleformMovieMethodAddParamPlayerNameString(msg)
|
||||
ScaleformMovieMethodAddParamPlayerNameString(subtitle)
|
||||
ScaleformMovieMethodAddParamInt(rank)
|
||||
ScaleformMovieMethodAddParamPlayerNameString("")
|
||||
ScaleformMovieMethodAddParamPlayerNameString("")
|
||||
EndScaleformMovieMethod()
|
||||
|
||||
self.duration = duration
|
||||
self:StartUpdate()
|
||||
end
|
||||
|
||||
--- Displays a weapon purchased message.
|
||||
---
|
||||
--- @param bigMessage string The main message to display.
|
||||
--- @param weaponName string The name of the weapon purchased.
|
||||
--- @param weaponHash number The hash identifier of the weapon.
|
||||
--- @param duration number|nil The duration in milliseconds the message should be displayed. Defaults to 5000.
|
||||
--- @param manualDispose boolean|nil Whether to manually dispose of the scaleform after the message. Defaults to false.
|
||||
function BigMessage:ShowWeaponPurchasedMessage(bigMessage, weaponName, weaponHash, duration, manualDispose)
|
||||
duration = duration or 5000
|
||||
self:Load()
|
||||
self.startTime = GetGameTimer()
|
||||
self.manualDispose = manualDispose or false
|
||||
|
||||
BeginScaleformMovieMethod(self.scaleform, "SHOW_WEAPON_PURCHASED")
|
||||
ScaleformMovieMethodAddParamPlayerNameString(bigMessage)
|
||||
ScaleformMovieMethodAddParamPlayerNameString(weaponName)
|
||||
ScaleformMovieMethodAddParamInt(weaponHash)
|
||||
ScaleformMovieMethodAddParamPlayerNameString("")
|
||||
ScaleformMovieMethodAddParamInt(100)
|
||||
EndScaleformMovieMethod()
|
||||
|
||||
self.duration = duration
|
||||
self:StartUpdate()
|
||||
end
|
||||
|
||||
--- Displays a large multiplayer message.
|
||||
---
|
||||
--- @param msg string The main message to display.
|
||||
--- @param duration number|nil The duration in milliseconds the message should be displayed. Defaults to 5000.
|
||||
--- @param manualDispose boolean|nil Whether to manually dispose of the scaleform after the message. Defaults to false.
|
||||
function BigMessage:ShowMpMessageLarge(msg, duration, manualDispose)
|
||||
duration = duration or 5000
|
||||
self:Load()
|
||||
self.startTime = GetGameTimer()
|
||||
self.manualDispose = manualDispose or false
|
||||
|
||||
BeginScaleformMovieMethod(self.scaleform, "SHOW_CENTERED_MP_MESSAGE_LARGE")
|
||||
ScaleformMovieMethodAddParamPlayerNameString(msg)
|
||||
ScaleformMovieMethodAddParamPlayerNameString("")
|
||||
ScaleformMovieMethodAddParamInt(100)
|
||||
ScaleformMovieMethodAddParamBool(true)
|
||||
ScaleformMovieMethodAddParamInt(100)
|
||||
EndScaleformMovieMethod()
|
||||
|
||||
BeginScaleformMovieMethod(self.scaleform, "TRANSITION_IN")
|
||||
EndScaleformMovieMethod()
|
||||
|
||||
self.duration = duration
|
||||
self:StartUpdate()
|
||||
end
|
||||
|
||||
--- Displays a "Wasted" multiplayer message.
|
||||
---
|
||||
--- @param msg string The main message to display.
|
||||
--- @param subtitle string The subtitle text.
|
||||
--- @param duration number|nil The duration in milliseconds the message should be displayed. Defaults to 5000.
|
||||
--- @param manualDispose boolean|nil Whether to manually dispose of the scaleform after the message. Defaults to false.
|
||||
function BigMessage:ShowMpWastedMessage(msg, subtitle, duration, manualDispose)
|
||||
duration = duration or 5000
|
||||
self:Load()
|
||||
self.startTime = GetGameTimer()
|
||||
self.manualDispose = manualDispose or false
|
||||
|
||||
BeginScaleformMovieMethod(self.scaleform, "SHOW_SHARD_WASTED_MP_MESSAGE")
|
||||
ScaleformMovieMethodAddParamPlayerNameString(msg)
|
||||
ScaleformMovieMethodAddParamPlayerNameString(subtitle)
|
||||
EndScaleformMovieMethod()
|
||||
|
||||
self.duration = duration
|
||||
self:StartUpdate()
|
||||
end
|
||||
|
||||
return BigMessage
|
||||
116
shared/scaleforms/countDownHandler.lua
Normal file
116
shared/scaleforms/countDownHandler.lua
Normal file
@@ -0,0 +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)
|
||||
|
||||
return CountdownHandler
|
||||
41
shared/scaleforms/debugScaleform.lua
Normal file
41
shared/scaleforms/debugScaleform.lua
Normal file
@@ -0,0 +1,41 @@
|
||||
|
||||
--- Displays debug information on the player's screen.
|
||||
---
|
||||
--- This function renders a semi-transparent box with multiple lines of text for debugging purposes.
|
||||
--- It is controlled by the `debugMode` flag and can be positioned dynamically on the screen.
|
||||
---
|
||||
--- @param textTable table A table containing strings to display.
|
||||
--- @param loc vector2|nil Optional. The screen position to display the debug box. Defaults to `vec2(0.05, 0.65)`.
|
||||
---
|
||||
--- @usage
|
||||
--- ```lua
|
||||
--- debugScaleForm({
|
||||
--- "Player Position: X=123.45 Y=678.90 Z=12.34",
|
||||
--- "Current Action: Running",
|
||||
--- })
|
||||
--- ```
|
||||
function debugScaleForm(textTable, loc)
|
||||
if debugMode then
|
||||
-- Define the display position (top left corner)
|
||||
local loc = loc or vec2(0.05, 0.65)
|
||||
|
||||
-- Calculate dynamic height based on the number of lines in the textTable
|
||||
local lineHeight = 0.025 -- Height of each line of text
|
||||
local totalHeight = #textTable * lineHeight -- Dynamic height based on number of lines
|
||||
local boxPadding = 0.01 -- Padding to add around the text inside the box
|
||||
local size = vec2(0.18, totalHeight + boxPadding * 2) -- Width remains fixed, height is dynamic
|
||||
|
||||
DrawRect(loc.x + size.x / 2, loc.y + size.y / 2, size.x, size.y, 0, 0, 0, 255)
|
||||
|
||||
for i = 1, #textTable do
|
||||
local textLine = textTable[i]
|
||||
|
||||
SetTextScale(0.30, 0.30)
|
||||
|
||||
BeginTextCommandDisplayText("STRING")
|
||||
AddTextComponentSubstringKeyboardDisplay(textLine)
|
||||
|
||||
EndTextCommandDisplayText(loc.x + 0.005, loc.y + (i - 1) * lineHeight + 0.01)
|
||||
end
|
||||
end
|
||||
end
|
||||
50
shared/scaleforms/instructionalButtons.lua
Normal file
50
shared/scaleforms/instructionalButtons.lua
Normal file
@@ -0,0 +1,50 @@
|
||||
--- Creates instructional buttons using the detected polyzone library (ox_lib or PolyZone).
|
||||
---
|
||||
--- This function generates instructional buttons on the player's screen based on the provided information.
|
||||
--- It supports different polyzone libraries by automatically detecting which one is active.
|
||||
---
|
||||
---@param info table A table containing the instructional buttons configuration.
|
||||
--- - **keys** (`table`): A list of control keys to display.
|
||||
--- - **text** (`string`): The description text for the buttons.
|
||||
---
|
||||
---@usage
|
||||
--- ```lua
|
||||
--- makeInstructionalButtons({
|
||||
--- { keys = { 38 }, text = "Interact" },
|
||||
--- { keys = { 47 }, text = "Pick Up" },
|
||||
--- })
|
||||
--- ```
|
||||
function makeInstructionalButtons(info)
|
||||
local build = RequestScaleformMovie("instructional_buttons")
|
||||
while not HasScaleformMovieLoaded(build) do Wait(0) end
|
||||
|
||||
DrawScaleformMovieFullscreen(build, 255, 255, 255, 0, 0)
|
||||
BeginScaleformMovieMethod(build, "CLEAR_ALL")
|
||||
EndScaleformMovieMethod()
|
||||
BeginScaleformMovieMethod(build, "SET_CLEAR_SPACE")
|
||||
ScaleformMovieMethodAddParamInt(200)
|
||||
EndScaleformMovieMethod()
|
||||
|
||||
for i = 1, #info do
|
||||
BeginScaleformMovieMethod(build, "SET_DATA_SLOT")
|
||||
ScaleformMovieMethodAddParamInt(i - 1)
|
||||
for k = 1, #info[i].keys do
|
||||
ScaleformMovieMethodAddParamPlayerNameString(GetControlInstructionalButton(2, info[i].keys[k], true))
|
||||
end
|
||||
BeginTextCommandScaleformString("STRING")
|
||||
AddTextComponentSubstringKeyboardDisplay(info[i].text)
|
||||
EndTextCommandScaleformString()
|
||||
EndScaleformMovieMethod()
|
||||
end
|
||||
|
||||
BeginScaleformMovieMethod(build, "DRAW_INSTRUCTIONAL_BUTTONS")
|
||||
EndScaleformMovieMethod()
|
||||
BeginScaleformMovieMethod(build, "SET_BACKGROUND_COLOUR")
|
||||
ScaleformMovieMethodAddParamInt(0)
|
||||
ScaleformMovieMethodAddParamInt(0)
|
||||
ScaleformMovieMethodAddParamInt(0)
|
||||
ScaleformMovieMethodAddParamInt(80)
|
||||
EndScaleformMovieMethod()
|
||||
|
||||
DrawScaleformMovieFullscreen(build, 255, 255, 255, 255, 0)
|
||||
end
|
||||
60
shared/scaleforms/timerBars.lua
Normal file
60
shared/scaleforms/timerBars.lua
Normal file
@@ -0,0 +1,60 @@
|
||||
function createTimerHud(title, data, alpha)
|
||||
loadTextureDict("timerbars")
|
||||
|
||||
local loc = vec2(0.89, 0.90)
|
||||
alpha = alpha or 255 -- Default to fully opaque if alpha is not provided
|
||||
|
||||
if title then
|
||||
local x = loc.x+0.037
|
||||
local y = 0.1
|
||||
|
||||
DrawSprite("timerbars", "all_black_bg", x, y, 0.12, 0.05, 0.0, 255, 255, 255, alpha)
|
||||
SetTextScale(0.80, 0.80)
|
||||
SetTextWrap(0.75, 0.985)
|
||||
SetTextJustification(2)
|
||||
SetTextFont(4)
|
||||
SetTextColour(255, 255, 255, alpha)
|
||||
BeginTextCommandDisplayText("STRING")
|
||||
AddTextComponentSubstringKeyboardDisplay("~y~"..title)
|
||||
EndTextCommandDisplayText(x+0.06, y - 0.026)
|
||||
end
|
||||
|
||||
local displayIndex = 0
|
||||
for i = #data, 1, -1 do
|
||||
local space = 0.044 * displayIndex
|
||||
|
||||
DrawSprite("timerbars", "all_black_bg", loc.x+0.02, loc.y - space, 0.15, 0.04, 0.0, 255, 255, 255, alpha)
|
||||
SetTextScale(0.0, 0.35)
|
||||
SetTextWrap(0.5, 0.92)
|
||||
SetTextJustification(2)
|
||||
SetTextColour(255, 255, 255, alpha)
|
||||
BeginTextCommandDisplayText("STRING")
|
||||
AddTextComponentSubstringKeyboardDisplay(data[i].stat:upper())
|
||||
EndTextCommandDisplayText(loc.x-0.05, (loc.y - space) - 0.0125)
|
||||
|
||||
SetTextScale(0.55, 0.55)
|
||||
SetTextWrap(0.85, 0.98 - (data[i].multi and 0.026 or 0.0))
|
||||
SetTextFont(4)
|
||||
SetTextJustification(2)
|
||||
SetTextColour(255, 255, 255, alpha)
|
||||
if data[i].multi then
|
||||
local startX = 0.071
|
||||
DrawSprite("timerbars", "circle_checkpoints",
|
||||
loc.x + startX, (loc.y - space)+0.005,
|
||||
0.011, 0.018, 0.0, 255, 191, 0, 200)
|
||||
|
||||
DrawSprite("timerbars", "circle_checkpoints",
|
||||
loc.x + (startX + 0.008), (loc.y - space)+0.005,
|
||||
0.011, 0.018, 0.0, 255, 191, 0, data[i].multi > 1 and 200 or 75)
|
||||
|
||||
DrawSprite("timerbars", "circle_checkpoints",
|
||||
loc.x + (startX + 0.016), (loc.y - space)+0.005,
|
||||
0.011, 0.018, 0.0, 255, 191, 0, data[i].multi > 2 and 200 or 75)
|
||||
end
|
||||
BeginTextCommandDisplayText("STRING")
|
||||
AddTextComponentSubstringKeyboardDisplay(data[i].value)
|
||||
EndTextCommandDisplayText(loc.x - 0.02, (loc.y - space) - 0.017)
|
||||
displayIndex += 1
|
||||
end
|
||||
makeInstructionalButtons({ { text = "Exit", keys = { 194 }}})
|
||||
end
|
||||
Reference in New Issue
Block a user