161 lines
4.0 KiB
Lua
161 lines
4.0 KiB
Lua
|
-- 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)
|