ed
This commit is contained in:
parent
453b25b260
commit
59951edece
9 changed files with 901 additions and 1 deletions
108
resources/[carscripts]/sg-boatanchor/client/client.lua
Normal file
108
resources/[carscripts]/sg-boatanchor/client/client.lua
Normal file
|
@ -0,0 +1,108 @@
|
|||
local QBCore = exports['qb-core']:GetCoreObject()
|
||||
|
||||
local anchoredBoats = {}
|
||||
local radial = Config.RadialMenu
|
||||
local command = Config.Command
|
||||
local progress = Config.Progressbar
|
||||
local notify = Config.Notify
|
||||
local xsound = false
|
||||
local radialMenu = false
|
||||
local anchorMenu = {
|
||||
id = 'toggle_anchor',
|
||||
title = radial.dropAnchorText,
|
||||
icon = radial.dropAnchorIcon,
|
||||
type = 'client',
|
||||
event = 'sg-boatanchor:client:ToggleAnchor',
|
||||
shouldClose = true,
|
||||
}
|
||||
|
||||
local function rebuildMenu(anchored)
|
||||
exports['qb-radialmenu']:RemoveOption(23)
|
||||
anchorMenu.icon = anchored and radial.raiseAnchorIcon or radial.dropAnchorIcon
|
||||
anchorMenu.title = anchored and radial.raiseAnchorText or radial.dropAnchorText
|
||||
Wait(500)
|
||||
exports['qb-radialmenu']:AddOption(anchorMenu, 23)
|
||||
end
|
||||
|
||||
-- Register Key
|
||||
RegisterKeyMapping(command.name, command.label, 'keyboard', command.key)
|
||||
RegisterCommand(command.name, function()
|
||||
if IsPedInAnyBoat(PlayerPedId(), false) then
|
||||
TriggerEvent("sg-boatanchor:client:ToggleAnchor")
|
||||
end
|
||||
end, false)
|
||||
|
||||
-- Events
|
||||
RegisterNetEvent('sg-boatanchor:client:setAnchoredBoats', function(serverAnchoredBoats)
|
||||
anchoredBoats = serverAnchoredBoats
|
||||
end)
|
||||
|
||||
RegisterNetEvent('sg-boatanchor:client:ToggleAnchor', function()
|
||||
local ped = PlayerPedId()
|
||||
local boat = GetVehiclePedIsIn(ped)
|
||||
if boat then
|
||||
local boatNetId = VehToNet(boat)
|
||||
-- Get current anchored status
|
||||
local boatAnchored = anchoredBoats[boatNetId]
|
||||
local currentAnchored = boatAnchored and boatAnchored.anchored
|
||||
-- Toggle to get new status
|
||||
local newAnchored = not currentAnchored
|
||||
-- Messages based on new status
|
||||
local pMessage = newAnchored and progress.dropLabel or progress.raiseLabel
|
||||
local nMessage = newAnchored and notify.droppedAnchor or notify.raisedAnchor
|
||||
local sound = newAnchored and "anchordown" or "anchorup"
|
||||
-- Anchor toggle logic
|
||||
if xsound then
|
||||
TriggerServerEvent("InteractSound_SV:PlayWithinDistance", 10, sound, 0.6)
|
||||
end
|
||||
QBCore.Functions.Progressbar("toggleanchor", pMessage, progress.time, false, true, {
|
||||
disableMovement = false,
|
||||
disableCarMovement = true,
|
||||
disableMouse = false,
|
||||
disableCombat = true
|
||||
}, {}, {}, {}, function() -- Done
|
||||
QBCore.Functions.Notify(nMessage, "success")
|
||||
if radial.enable then
|
||||
rebuildMenu(newAnchored)
|
||||
end
|
||||
SetBoatAnchor(boat, newAnchored)
|
||||
SetBoatFrozenWhenAnchored(boat, newAnchored)
|
||||
TriggerServerEvent('sg-boatanchor:server:setAnchor', boatNetId, newAnchored)
|
||||
end, function() -- Cancel
|
||||
QBCore.Functions.Notify(notify.cancel, "error", 5000)
|
||||
end)
|
||||
end
|
||||
end)
|
||||
|
||||
RegisterNetEvent('QBCore:Client:EnteredVehicle', function()
|
||||
local ped = PlayerPedId()
|
||||
local boat = GetVehiclePedIsIn(ped)
|
||||
if IsPedInAnyBoat(ped) then
|
||||
local boatNetId = VehToNet(boat)
|
||||
if anchoredBoats[boatNetId] and anchoredBoats[boatNetId].anchored then
|
||||
local anchored = anchoredBoats[boatNetId].anchored
|
||||
if radial.enable then
|
||||
rebuildMenu(anchored)
|
||||
end
|
||||
SetBoatAnchor(boat, anchored)
|
||||
SetBoatFrozenWhenAnchored(boat, anchored)
|
||||
end
|
||||
exports['qb-radialmenu']:AddOption(anchorMenu, 23)
|
||||
radialMenu = true
|
||||
end
|
||||
end)
|
||||
|
||||
RegisterNetEvent('QBCore:Client:LeftVehicle', function()
|
||||
if radial.enable then
|
||||
if radialMenu then
|
||||
exports['qb-radialmenu']:RemoveOption(23)
|
||||
radialMenu = false
|
||||
end
|
||||
end
|
||||
end)
|
||||
|
||||
RegisterNetEvent('QBCore:Client:OnPlayerLoaded', function()
|
||||
if GetResourceState('xsound') == 'started' then
|
||||
xsound = true
|
||||
end
|
||||
end)
|
Loading…
Add table
Add a link
Reference in a new issue