Scripts/resources/[qb]/[qb_casino]/casino-walls/client/casino-interior.lua
2024-12-29 21:03:28 +01:00

216 lines
5.9 KiB
Lua

local inCasino = false
local videoWallRenderTarget = nil
local showBigWin = false
local spinningObject = nil
local spinningCar = nil
--
-- Threads
--
function startCasinoThreads()
RequestStreamedTextureDict('Prop_Screen_Vinewood')
while not HasStreamedTextureDictLoaded('Prop_Screen_Vinewood') do
Wait(100)
end
RegisterNamedRendertarget('casinoscreen_01')
LinkNamedRendertarget(`vw_vwint01_video_overlay`)
videoWallRenderTarget = GetNamedRendertargetRenderId('casinoscreen_01')
CreateThread(function()
local lastUpdatedTvChannel = 0
while true do
Wait(0)
if not inCasino then
ReleaseNamedRendertarget('casinoscreen_01')
videoWallRenderTarget = nil
showBigWin = false
break
end
if videoWallRenderTarget then
local currentTime = GetGameTimer()
if showBigWin then
setVideoWallTvChannelWin()
lastUpdatedTvChannel = GetGameTimer() - 33666
showBigWin = false
else
if (currentTime - lastUpdatedTvChannel) >= 42666 then
setVideoWallTvChannel()
lastUpdatedTvChannel = currentTime
end
end
SetTextRenderId(videoWallRenderTarget)
SetScriptGfxDrawOrder(4)
SetScriptGfxDrawBehindPausemenu(true)
DrawInteractiveSprite('Prop_Screen_Vinewood', 'BG_Wall_Colour_4x4', 0.25, 0.5, 0.5, 1.0, 0.0, 255, 255, 255, 255)
DrawTvChannel(0.5, 0.5, 1.0, 1.0, 0.0, 255, 255, 255, 255)
SetTextRenderId(GetDefaultScriptRendertargetRenderId())
end
end
end)
end
function setVideoWallTvChannel()
SetTvChannelPlaylist(0, Config.AnimatedWallNormal, true)
SetTvAudioFrontend(true)
SetTvVolume(-100.0)
SetTvChannel(0)
end
function setVideoWallTvChannelWin()
SetTvChannelPlaylist(0, Config.AnimatedWallWin, true)
SetTvAudioFrontend(true)
SetTvVolume(-100.0)
SetTvChannel(-1)
SetTvChannel(0)
end
--
-- Events
--
AddEventHandler("chCasinoWall:enteredCasino", function()
inCasino = true
if Config.SetAnimatedWalls then
startCasinoThreads()
end
if Config.SetShowCarOnDisplay then
spinMeRightRoundBaby()
end
if Config.PlayCasinoAmbientNoise then
playSomeBackgroundAudioBaby()
end
end)
AddEventHandler("chCasinoWall:exitedCasino", function()
inCasino = false
end)
RegisterNetEvent('chCasinoWall:bigWin')
AddEventHandler('chCasinoWall:bigWin', function()
if not inCasino then
return
end
showBigWin = true
end)
function enterCasino()
InCasino = true
TriggerEvent("chCasinoWall:enteredCasino")
print("Entered Casino area")
if Config.SendWelcomeMail then
TriggerServerEvent('qb-phone:server:sendNewMail', {
sender = Config.WelcomeMailsender,
subject = Config.WelcomeMailsubject,
message = Config.WelcomeMailmessage,
button = {}
})
end
end
function exitCasino()
TriggerEvent("chCasinoWall:exitedCasino")
print("Exited Casino area")
InCasino = false
StopAudioScene("DLC_VW_Casino_General")
Wait(5000)
startCasinoThreads()
end
CreateThread(function()
local CasinoZone = CircleZone:Create(vector3(945.85, 41.58, -170.50), 250.0, {
name="CasinoZone",
heading=0.0,
debugPoly=false,
useZ=true,
})
CasinoZone:onPlayerInOut(function(inCasino)
if inCasino then
enterCasino()
else
exitCasino()
end
end)
end)
function spinMeRightRoundBaby()
CreateThread(function()
while inCasino do
if not spinningObject or spinningObject == 0 or not DoesEntityExist(spinningObject) then
spinningObject = GetClosestObjectOfType(935.432, 42.5611, 72.14, 10.0, -1561087446, 0, 0, 0)
drawCarForWins()
end
if spinningObject ~= nil and spinningObject ~= 0 then
local curHeading = GetEntityHeading(spinningObject)
local curHeadingCar = GetEntityHeading(spinningCar)
if curHeading >= 360 then
curHeading = 0.0
curHeadingCar = 0.0
elseif curHeading ~= curHeadingCar then
curHeadingCar = curHeading
end
SetEntityHeading(spinningObject, curHeading + 0.075)
SetEntityHeading(spinningCar, curHeadingCar + 0.075)
end
Wait(0)
end
spinningObject = nil
end)
end
function drawCarForWins()
if DoesEntityExist(spinningCar) then
DeleteEntity(spinningCar)
end
RequestModel(Config.VehicleOnDisplay)
while not HasModelLoaded(Config.VehicleOnDisplay) do
Wait(0)
end
SetModelAsNoLongerNeeded(Config.VehicleOnDisplay)
spinningCar = CreateVehicle(Config.VehicleOnDisplay, 935.432, 42.5611, 72.34, 0.0, 0, 0)
Wait(0)
SetVehicleDirtLevel(spinningCar, 0.0)
SetVehicleOnGroundProperly(spinningCar)
Wait(0)
FreezeEntityPosition(spinningCar, 1)
end
function playSomeBackgroundAudioBaby()
CreateThread(function()
local function audioBanks()
while not RequestScriptAudioBank("DLC_VINEWOOD/CASINO_GENERAL", false, -1) do
Wait(0)
end
while not RequestScriptAudioBank("DLC_VINEWOOD/CASINO_SLOT_MACHINES_01", false, -1) do
Wait(0)
end
while not RequestScriptAudioBank("DLC_VINEWOOD/CASINO_SLOT_MACHINES_02", false, -1) do
Wait(0)
end
while not RequestScriptAudioBank("DLC_VINEWOOD/CASINO_SLOT_MACHINES_03", false, -1) do
Wait(0)
end
end
audioBanks()
while inCasino do
if not IsStreamPlaying() and LoadStream("casino_walla", "DLC_VW_Casino_Interior_Sounds") then
PlayStreamFromPosition(945.85, 41.58, 75.82)
end
if IsStreamPlaying() and not IsAudioSceneActive("DLC_VW_Casino_General") then
StartAudioScene("DLC_VW_Casino_General")
end
Wait(1000)
end
if IsStreamPlaying() then
StopStream()
end
if IsAudioSceneActive("DLC_VW_Casino_General") then
StopAudioScene("DLC_VW_Casino_General")
end
end)
end