Scripts/resources/[qb]/[qb_jobs]/qb-djbooth/client.lua

161 lines
4.0 KiB
Lua
Raw Normal View History

2024-12-29 20:06:22 +00:00
-- Variables
local QBCore = exports['qb-core']:GetCoreObject()
local currentZone = nil
local PlayerData = {}
-- Handlers
AddEventHandler('onResourceStart', function(resourceName)
if (GetCurrentResourceName() ~= resourceName) then return end
PlayerData = QBCore.Functions.GetPlayerData()
end)
AddEventHandler('QBCore:Client:OnPlayerLoaded', function()
PlayerData = QBCore.Functions.GetPlayerData()
end)
RegisterNetEvent('QBCore:Client:OnJobUpdate', function(JobInfo)
PlayerData.job = JobInfo
end)
RegisterNetEvent('QBCore:Client:OnPlayerUnload', function()
PlayerData = {}
end)
-- Static Header
local musicHeader = {
{
header = 'Spil musik!',
params = {
event = 'qb-djbooth:client:playMusic'
}
}
}
-- Main Menu
function createMusicMenu()
musicMenu = {
{
isHeader = true,
header = '💿 | DJ bås'
},
{
header = '🎶 | Spil en sang',
txt = 'Youtube URL',
params = {
event = 'qb-djbooth:client:musicMenu',
args = {
zoneName = currentZone
}
}
},
{
header = '⏸️ | Pause Musik',
txt = 'Pause musikken',
params = {
isServer = true,
event = 'qb-djbooth:server:pauseMusic',
args = {
zoneName = currentZone
}
}
},
{
header = '▶️ | Start musik',
txt = 'Start musikken',
params = {
isServer = true,
event = 'qb-djbooth:server:resumeMusic',
args = {
zoneName = currentZone
}
}
},
{
header = '🔈 | Skift Volume',
txt = 'Skift musik volumen',
params = {
event = 'qb-djbooth:client:changeVolume',
args = {
zoneName = currentZone
}
}
},
{
header = '❌ | Sluk musik',
txt = 'Sluk musikken',
params = {
isServer = true,
event = 'qb-djbooth:server:stopMusic',
args = {
zoneName = currentZone
}
}
}
}
end
-- DJ Booths
local vanilla = BoxZone:Create(Config.Locations['vanilla'].coords, 1, 1, {
name="vanilla",
heading=0
})
vanilla:onPlayerInOut(function(isPointInside)
if isPointInside and PlayerData.job.name == Config.Locations['vanilla'].job then
currentZone = 'vanilla'
exports['qb-menu']:showHeader(musicHeader)
else
currentZone = nil
exports['qb-menu']:closeMenu()
end
end)
-- Events
RegisterNetEvent('qb-djbooth:client:playMusic', function()
createMusicMenu()
exports['qb-menu']:openMenu(musicMenu)
end)
RegisterNetEvent('qb-djbooth:client:musicMenu', function()
local dialog = exports['qb-input']:ShowInput({
header = 'Sang valg',
submitText = "Send",
inputs = {
{
type = 'text',
isRequired = true,
name = 'sang',
text = 'YouTube URL'
}
}
})
if dialog then
if not dialog.song then return end
TriggerServerEvent('qb-djbooth:server:playMusic', dialog.song, currentZone)
end
end)
RegisterNetEvent('qb-djbooth:client:changeVolume', function()
local dialog = exports['qb-input']:ShowInput({
header = 'Musik Volume',
submitText = "Gen",
inputs = {
{
type = 'text', -- number doesn't accept decimals??
isRequired = true,
name = 'Volume',
text = 'Min: 0.01 - Max: 1'
}
}
})
if dialog then
if not dialog.volume then return end
TriggerServerEvent('qb-djbooth:server:changeVolume', dialog.volume, currentZone)
end
end)