mirror of
https://github.com/jimathy/jim_bridge.git
synced 2026-08-18 06:26:01 +01:00
Move GTA notify, target, skillcheck to /ui_modules
I've separated the built-in custom native GTA Notifications, skillcheck and draw text targets to separate files to be loaded along side `jim_bridge`
This now makes it so they only load once instead of with every single script, and each one can call on it
This change also makes these systems able to be called outside of `jim_bridge`
For example in my test server I'm currently using:
```lua
function QBCore.Functions.Notify(text, texttype, length, icon)
CreateThread(function()
exports.jim_bridge:Notify(nil, text, icon)
end)
end
```
This commit is contained in:
@@ -30,127 +30,10 @@ function skillCheck(data)
|
||||
result = false
|
||||
end
|
||||
elseif Config.System.skillCheck == "gta" then
|
||||
loadTextureDict("timerbars")
|
||||
local successes = 0
|
||||
local barsRequired = 3
|
||||
exports.jim_bridge:skillCheck()
|
||||
|
||||
for bar = 1, barsRequired do
|
||||
debugPrint("^6Bridge^7: ^2Starting Bar ^3"..bar.."^7/^3"..barsRequired.."^7")
|
||||
activeSkillCheck = true
|
||||
local width, height = 0.2, 0.01
|
||||
local x, y = 0.5, 0.8
|
||||
|
||||
-- Random highlighted zone
|
||||
local highlightSize = math.random(10, 20) / 100
|
||||
local highlightStart = math.random(10, 50) / 100
|
||||
local highlightEnd = highlightStart + highlightSize
|
||||
local highlightAlpha = 0
|
||||
local cursorPos = 0.0
|
||||
local cursorSpeed = 0.025
|
||||
local movingRight = true
|
||||
|
||||
while activeSkillCheck do
|
||||
Wait(0)
|
||||
makeInstructionalButtons({
|
||||
{ keys = { 177 }, text = "Exit" },
|
||||
{ keys = { 38 }, text = "Confirm" },
|
||||
})
|
||||
|
||||
createScaleBars(x, y, width, height)
|
||||
|
||||
local pulse = (math.sin(GetGameTimer() / 250) + 1) / 2 -- Creates a pulsing effect
|
||||
highlightAlpha = math.floor(150 + (pulse * 105)) -- Pulsing between 150 and 255 alpha
|
||||
|
||||
-- Draw highlighted zone (success area) with pulsing effect
|
||||
DrawRect(x - width / 2 + (highlightStart + highlightSize / 2) * width, y, highlightSize * width, height+0.001, 93, 182, 229, highlightAlpha )
|
||||
-- Draw moving cursor
|
||||
DrawRect(x - width / 2 + cursorPos * width, y, 0.002, height + 0.01, 255, 255, 255, 255)
|
||||
|
||||
-- Move cursor
|
||||
if movingRight then
|
||||
cursorPos += cursorSpeed
|
||||
if cursorPos >= 1.0 then movingRight = false end
|
||||
else
|
||||
cursorPos -= cursorSpeed
|
||||
if cursorPos <= 0.0 then movingRight = true end
|
||||
end
|
||||
|
||||
if IsControlJustPressed(0, 177) then -- Backspace to cancel
|
||||
local displayTime = GetGameTimer() + 2000
|
||||
PlaySoundFrontend(-1, 'Highlight_Cancel', 'DLC_HEIST_PLANNING_BOARD_SOUNDS', 1)
|
||||
while GetGameTimer() < displayTime do
|
||||
Wait(0)
|
||||
|
||||
createScaleBars(x, y, width, height)
|
||||
|
||||
DrawRect(x - width / 2 + (highlightStart + highlightSize / 2) * width, y, highlightSize * width, height+0.001, 228, 52, 52, 255)
|
||||
DrawRect(x - width / 2 + cursorPos * width, y, 0.002, height + 0.01, 255, 255, 255, 255)
|
||||
|
||||
drawSuccessText(x, y, "Failed", 228, 52, 52)
|
||||
end
|
||||
return false
|
||||
end
|
||||
|
||||
-- Check for keypress (E)
|
||||
if IsControlJustPressed(0, 38) then
|
||||
activeSkillCheck = false
|
||||
result = cursorPos >= highlightStart and cursorPos <= highlightEnd
|
||||
if result then
|
||||
PlaySoundFrontend(-1, "YES", "HUD_FRONTEND_DEFAULT_SOUNDSET", true)
|
||||
else
|
||||
PlaySoundFrontend(-1, 'Highlight_Cancel', 'DLC_HEIST_PLANNING_BOARD_SOUNDS', 1)
|
||||
end
|
||||
local displayTime = GetGameTimer() + 2000
|
||||
while GetGameTimer() < displayTime do
|
||||
Wait(0)
|
||||
|
||||
createScaleBars(x, y, width, height)
|
||||
|
||||
-- Draw highlighted zone
|
||||
DrawRect(x - width / 2 + (highlightStart + highlightSize / 2) * width, y, highlightSize * width, height+0.001, result and 93 or 228, result and 182 or 52, result and 229 or 52, 180)
|
||||
|
||||
-- Draw stationary cursor at result position
|
||||
DrawRect(x - width / 2 + cursorPos * width, y, 0.002, height + 0.01, 255, 255, 255, 255)
|
||||
-- Display result text
|
||||
drawSuccessText(x, y, result and "Success" or "Failed", result and 114 or 228, result and 204 or 52, result and 144 or 52)
|
||||
end
|
||||
if result then
|
||||
successes += 1
|
||||
else
|
||||
return false
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
activeSkillCheck = false
|
||||
debugPrint("^6Bridge^7: ^2Skill Check Result^7: ^3" .. successes .. "^7/^3" .. barsRequired.."^7")
|
||||
return successes == barsRequired
|
||||
else
|
||||
result = true
|
||||
end
|
||||
return result
|
||||
end
|
||||
|
||||
function drawSuccessText(x, y, text, r, g, b)
|
||||
SetTextFont(8)
|
||||
SetTextScale(0.45, 0.45)
|
||||
SetTextColour(r, g, b, 255)
|
||||
SetTextDropshadow(0, 0, 0, 0, 255)
|
||||
SetTextEdge(2, 0, 0, 0, 150)
|
||||
SetTextDropShadow()
|
||||
SetTextOutline()
|
||||
SetTextCentre(true)
|
||||
SetTextEntry("STRING")
|
||||
SetTextCentre(true)
|
||||
SetTextEntry("STRING")
|
||||
AddTextComponentString(text)
|
||||
DrawText(x, y + 0.03)
|
||||
end
|
||||
|
||||
function createScaleBars(x, y, width, height)
|
||||
-- Draw background box
|
||||
DrawSprite("timerbars", "all_black_bg", x - (width / 4) - 0.006, y, (width / 2) + 0.08, height + 0.04, 0.0, 255, 255, 255, 255)
|
||||
DrawSprite("timerbars", "all_black_bg", x + (width / 4) + 0.006, y, (width / 2) + 0.08, height + 0.04, 180.0, 255, 255, 255, 255)
|
||||
-- Draw full bar (dark background)
|
||||
DrawRect(x, y, width, height, 100, 100, 100, 255)
|
||||
end
|
||||
Reference in New Issue
Block a user