forked from Simnation/Main
172 lines
No EOL
7.3 KiB
Lua
172 lines
No EOL
7.3 KiB
Lua
print'Pug Sling 2.1.3'
|
|
|
|
CreateThread(function()
|
|
local InVehicle
|
|
while true do
|
|
Wait(100)
|
|
local entering = GetVehiclePedIsTryingToEnter(PlayerPedId())
|
|
if entering ~= 0 then
|
|
TriggerEvent("Pug:ReloadGuns:sling", true)
|
|
Wait(2000)
|
|
end
|
|
if IsPedInAnyVehicle(PlayerPedId()) then
|
|
if not InVehicle then
|
|
InVehicle = true
|
|
TriggerEvent("Pug:ReloadGuns:sling", true)
|
|
Wait(2000)
|
|
end
|
|
else
|
|
InVehicle = false
|
|
end
|
|
end
|
|
end)
|
|
|
|
|
|
if not Config.UseOldSlingScript then
|
|
RegisterNetEvent('Pug:ReloadGuns:sling', function(bool)
|
|
ResetAllWeaponsOnBack(bool)
|
|
for _, v in pairs(GetGamePool('CObject')) do
|
|
if IsEntityAttachedToEntity(PlayerPedId(), v) then
|
|
SetEntityAsMissionEntity(v, true, true)
|
|
DeleteObject(v)
|
|
DeleteEntity(v)
|
|
end
|
|
end
|
|
end)
|
|
|
|
RegisterNetEvent('QBCore:Client:OnPlayerLoaded')
|
|
AddEventHandler('QBCore:Client:OnPlayerLoaded', function()
|
|
Wait(3000)
|
|
TriggerEvent("Pug:client:RegisterAllBackWeapons")
|
|
end)
|
|
RegisterNetEvent('esx:playerLoaded')
|
|
AddEventHandler('esx:playerLoaded', function()
|
|
Wait(3000)
|
|
TriggerEvent("Pug:client:RegisterAllBackWeapons")
|
|
end)
|
|
|
|
-- Change this to your notification script if needed
|
|
function SlingNotify(msg, type, length)
|
|
if Framework == "ESX" then
|
|
FWork.ShowNotification(msg)
|
|
elseif Framework == "QBCore" then
|
|
FWork.Functions.Notify(msg, type, length)
|
|
end
|
|
end
|
|
|
|
-- INVENTORY HAS ITEM CHECK
|
|
function CheckHasWeapon(Weapon)
|
|
if GetResourceState("qs-inventory") == 'started' then
|
|
local count = exports['qs-inventory']:Search(Weapon)
|
|
if count > 0 then
|
|
return true
|
|
else
|
|
return false
|
|
end
|
|
elseif GetResourceState("qb-inventory") == 'started' then
|
|
return exports['qb-inventory']:HasItem(Weapon)
|
|
elseif GetResourceState("ps-inventory") == 'started' then
|
|
return exports['ps-inventory']:HasItem(Weapon)
|
|
elseif GetResourceState("ox_inventory") == 'started' then
|
|
local count = exports.ox_inventory:GetItemCount(Weapon)
|
|
if count > 0 then
|
|
return true
|
|
else
|
|
return false
|
|
end
|
|
elseif GetResourceState("core_inventory") == 'started' then
|
|
if Framework == "QBCore" then
|
|
local citizenid = FWork.Functions.GetPlayerData().citizenid
|
|
local Primary = exports['core_inventory']:getItems('primary-' .. citizenid, Weapon)
|
|
local Secondry = exports['core_inventory']:getItems('secondry-' .. citizenid, Weapon)
|
|
if Primary > 0 or Secondry > 0 then
|
|
return true
|
|
else
|
|
return false
|
|
end
|
|
else
|
|
return false
|
|
end
|
|
elseif Framework == "QBCore" then
|
|
local FinalValue = false
|
|
local items = FWork.Functions.GetPlayerData().items
|
|
for _, v in pairs(items) do
|
|
if v.name ~= nil then
|
|
if tostring(v.name) == tostring(Weapon) then
|
|
FinalValue = true
|
|
end
|
|
end
|
|
end
|
|
return FinalValue
|
|
end
|
|
end
|
|
|
|
local function CheckJobVerified()
|
|
local PlayerJob = Config.FrameworkFunctions.GetPlayer().PlayerData.job.name
|
|
for _,v in pairs(Config.RackCapableJobs) do
|
|
if tostring(v) == tostring(PlayerJob) then
|
|
return true
|
|
end
|
|
end
|
|
return false
|
|
end
|
|
|
|
RegisterCommand(Config.WeaponRackCommand, function()
|
|
if CheckJobVerified() then
|
|
--IS IN VEHICLE
|
|
if IsPedInAnyVehicle(PlayerPedId()) then
|
|
local veh = GetVehiclePedIsUsing(PlayerPedId())
|
|
local plate = GetVehicleNumberPlateText(veh)
|
|
--IS EMERGENCY VEHICLE
|
|
if GetVehicleClass(veh) == 18 then
|
|
if Framework == "ESX" then
|
|
if GetResourceState("qb-inventory") == 'started' or GetResourceState("ps-inventory") == 'started' then
|
|
TriggerEvent("inventory:client:SetCurrentStash", "Rack".. plate)
|
|
TriggerServerEvent("inventory:server:OpenInventory", "stash", "Rack" .. plate, {
|
|
maxweight = Config.RackMaxWeight,
|
|
slots = Config.RackSlots,
|
|
})
|
|
elseif GetResourceState("qs-inventory") == 'started' then
|
|
exports['qs-inventory']:RegisterStash("Rack".. plate, Config.RackSlots, Config.RackMaxWeight)
|
|
elseif GetResourceState("ox_inventory") == 'started' then
|
|
TriggerServerEvent("Pug:server:SlingOpenOxInvRack", "Rack".. plate, Config.RackSlots, Config.RackMaxWeight)
|
|
exports.ox_inventory:openInventory('stash', "Rack".. plate)
|
|
end
|
|
else
|
|
FWork.Functions.Progressbar("reaching_rack", "Reaching for rack", 4000, false, true, {
|
|
disableMovement = false,
|
|
disableCarMovement = false,
|
|
disableMouse = false,
|
|
disableCombat = true,
|
|
}, {
|
|
animDict = "move_m@intimidation@cop@unarmed",
|
|
anim = "idle",
|
|
flags = 49,
|
|
}, {}, {}, function()
|
|
if GetResourceState("qb-inventory") == 'started' or GetResourceState("ps-inventory") == 'started' then
|
|
TriggerEvent("inventory:client:SetCurrentStash", "Rack".. plate)
|
|
TriggerServerEvent("inventory:server:OpenInventory", "stash", "Rack" .. plate, {
|
|
maxweight = Config.RackMaxWeight,
|
|
slots = Config.RackSlots,
|
|
})
|
|
elseif GetResourceState("qs-inventory") == 'started' then
|
|
exports['qs-inventory']:RegisterStash("Rack".. plate, Config.RackSlots, Config.RackMaxWeight)
|
|
elseif GetResourceState("ox_inventory") == 'started' then
|
|
TriggerServerEvent("Pug:server:SlingOpenOxInvRack", "Rack".. plate, Config.RackSlots, Config.RackMaxWeight)
|
|
exports.ox_inventory:openInventory('stash', "Rack".. plate)
|
|
end
|
|
end, function() -- Cancel
|
|
SlingNotify("Canceled", "error", 4500)
|
|
end)
|
|
end
|
|
else
|
|
SlingNotify(Config.LangT.EmergencyServiceVehicle, "error")
|
|
end
|
|
else
|
|
SlingNotify(Config.LangT.MustBeInVehicle, "error")
|
|
end
|
|
else
|
|
SlingNotify(Config.LangT.NotPolice, "error")
|
|
end
|
|
end)
|
|
end |