fixes
|
@ -1 +0,0 @@
|
|||
Please follow the instructions: https://docs.brutalscripts.com
|
|
@ -1,384 +0,0 @@
|
|||
ESX = Core
|
||||
QBCore = Core
|
||||
|
||||
-- Buy here: (4€+VAT) https://store.brutalscripts.com
|
||||
function notification(title, text, time, type)
|
||||
if Config.BrutalNotify then
|
||||
exports['brutal_notify']:SendAlert(title, text, time, type)
|
||||
else
|
||||
-- Put here your own notify and set the Config.BrutalNotify to false
|
||||
SetNotificationTextEntry("STRING")
|
||||
AddTextComponentString(text)
|
||||
DrawNotification(0,1)
|
||||
|
||||
-- Default ESX Notify:
|
||||
--TriggerEvent('esx:showNotification', text)
|
||||
|
||||
-- Default QB Notify:
|
||||
--TriggerEvent('QBCore:Notify', text, 'info', 5000)
|
||||
|
||||
-- OKOK Notify:
|
||||
-- exports['okokNotify']:Alert(title, text, time, type, false)
|
||||
|
||||
end
|
||||
end
|
||||
|
||||
function TextUIFunction(type, text)
|
||||
if Config.TextUI ~= false then
|
||||
if type == 'open' then
|
||||
if Config.TextUI:lower() == 'ox_lib' then
|
||||
lib.showTextUI(text)
|
||||
elseif Config.TextUI:lower() == 'okoktextui' then
|
||||
exports['okokTextUI']:Open(text, 'darkblue', 'right')
|
||||
elseif Config.TextUI:lower() == 'esxtextui' then
|
||||
ESX.TextUI(text)
|
||||
elseif Config.TextUI:lower() == 'qbdrawtext' then
|
||||
exports['qb-core']:DrawText(text,'left')
|
||||
elseif Config.TextUI:lower() == 'brutal_textui' then
|
||||
exports['brutal_textui']:Open(text, "blue")
|
||||
end
|
||||
elseif type == 'hide' then
|
||||
if Config.TextUI:lower() == 'ox_lib' then
|
||||
lib.hideTextUI()
|
||||
elseif Config.TextUI:lower() == 'okoktextui' then
|
||||
exports['okokTextUI']:Close()
|
||||
elseif Config.TextUI:lower() == 'esxtextui' then
|
||||
ESX.HideUI()
|
||||
elseif Config.TextUI:lower() == 'qbdrawtext' then
|
||||
exports['qb-core']:HideText()
|
||||
elseif Config.TextUI:lower() == 'brutal_textui' then
|
||||
exports['brutal_textui']:Close()
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function InventoryOpenFunction(type, data)
|
||||
if type == 'society' then
|
||||
local job = data
|
||||
local label = job:sub(1, 1):upper() .. job:sub(2):lower().." Stash"
|
||||
|
||||
if Config.Inventory:lower() == 'ox_inventory' then
|
||||
exports.ox_inventory:openInventory('stash', {id = "stash_"..job})
|
||||
elseif Config.Inventory:lower() == 'qb_inventory' then
|
||||
if GetResourceState('qb-inventory') == "started" then
|
||||
TriggerServerEvent("qb-inventory:server:OpenInventory", "stash_"..job, {label = label, maxweight = 100000, slots = 100})
|
||||
else
|
||||
TriggerServerEvent("inventory:server:OpenInventory", "stash", "stash_"..job, {label = label, maxweight = 100000, slots = 100})
|
||||
TriggerEvent("inventory:client:SetCurrentStash", "stash_"..job)
|
||||
end
|
||||
elseif Config.Inventory:lower() == 'quasar_inventory' then
|
||||
TriggerServerEvent("inventory:server:OpenInventory", "stash", "stash_"..job, {label = label, maxweight = 100000, slots = 100})
|
||||
TriggerEvent("inventory:client:SetCurrentStash", "stash_"..job)
|
||||
elseif Config.Inventory:lower() == 'chezza_inventory' then
|
||||
TriggerEvent("inventory:openInventory", {type = "stash", id = "stash_"..job, title = label, weight = 100000, delay = 100, save = true})
|
||||
elseif Config.Inventory:lower() == 'core_inventory' then
|
||||
TriggerServerEvent("core_inventory:server:openInventory", "stash_"..job, "big_storage")
|
||||
elseif Config.Inventory:lower() == 'codem_inventory' then
|
||||
TriggerServerEvent("inventory:server:OpenInventory", "stash", "stash_"..job, {label = label, maxweight = 100000, slots = 100})
|
||||
elseif Config.Inventory:lower() == 'origen_inventory' then
|
||||
exports.origen_inventory:openInventory("stash", "stash_"..job, {label = label, maxweight = 100000, slots = 100})
|
||||
elseif Config.Inventory:lower() == 'ps-inventory' then
|
||||
if GetResourceState('ps-inventory') == "started" then
|
||||
TriggerServerEvent("ps-inventory:server:OpenInventory", "stash_"..job, {label = label, maxweight = 100000, slots = 100})
|
||||
TriggerEvent("ps-inventory:client:SetCurrentStash", "stash_"..job)
|
||||
else
|
||||
TriggerServerEvent("inventory:server:OpenInventory", "stash", "stash_"..job, {label = label, maxweight = 100000, slots = 100})
|
||||
TriggerEvent("inventory:client:SetCurrentStash", "stash_"..job)
|
||||
end
|
||||
end
|
||||
elseif type == 'search_player' then
|
||||
local target = data
|
||||
|
||||
if Config.Inventory:lower() == 'ox_inventory' then
|
||||
exports.ox_inventory:openInventory('player', target)
|
||||
elseif Config.Inventory:lower() == 'qb_inventory' then
|
||||
if GetResourceState('qb-inventory') == "started" then
|
||||
TriggerServerEvent("qb-inventory:server:OpenPlayerInventory", target)
|
||||
else
|
||||
TriggerServerEvent("inventory:server:OpenInventory", "otherplayer", target)
|
||||
end
|
||||
elseif Config.Inventory:lower() == 'quasar_inventory' then
|
||||
TriggerServerEvent("inventory:server:OpenInventory", "otherplayer", target)
|
||||
elseif Config.Inventory:lower() == 'chezza_inventory' then
|
||||
TriggerEvent("inventory:openPlayerInventory", target, true)
|
||||
elseif Config.Inventory:lower() == 'core_inventory' then
|
||||
TriggerServerEvent('core_inventory:server:openInventory', target, 'otherplayer', nil, nil, false)
|
||||
elseif Config.Inventory:lower() == 'codem_inventory' then
|
||||
TriggerServerEvent('codem-inventory:server:robplayer', target)
|
||||
elseif Config.Inventory:lower() == 'origen_inventory' then
|
||||
exports.origen_inventory:openInventory('player', target)
|
||||
elseif Config.Inventory:lower() == 'ps-inventory' then
|
||||
if GetResourceState('ps-inventory') == "started" then
|
||||
TriggerServerEvent('ps-inventory:server:OpenInventory', 'otherplayer', target)
|
||||
else
|
||||
TriggerServerEvent('inventory:server:OpenInventory', 'otherplayer', target)
|
||||
end
|
||||
end
|
||||
elseif type == 'search_vehicle_trunk' then
|
||||
local vehicle = data
|
||||
local plate = GetVehicleNumberPlateText(vehicle)
|
||||
|
||||
if Config.Inventory:lower() == 'ox_inventory' then
|
||||
exports.ox_inventory:openInventory('trunk', {id='trunk'..plate, netid = NetworkGetNetworkIdFromEntity(vehicle)})
|
||||
elseif Config.Inventory:lower() == 'qb_inventory' then
|
||||
if GetResourceState('qb-inventory') == "started" then
|
||||
TriggerServerEvent("qb-inventory:server:OpenInventory", nil, 'trunk-'..plate)
|
||||
else
|
||||
TriggerServerEvent("inventory:server:OpenInventory", "trunk", plate, {maxweight = 1000000, slots = 50})
|
||||
end
|
||||
elseif Config.Inventory:lower() == 'quasar_inventory' then
|
||||
TriggerServerEvent("inventory:server:OpenInventory", "trunk", plate, {maxweight = 1000000, slots = 50})
|
||||
elseif Config.Inventory:lower() == 'chezza_inventory' then
|
||||
TriggerEvent('inventory:openInventory', {type = "trunk", id = plate, title = "Vehicle Trunk", weight = false, delay = 300, save = true})
|
||||
elseif Config.Inventory:lower() == 'core_inventory' then
|
||||
-- no data
|
||||
elseif Config.Inventory:lower() == 'codem_inventory' then
|
||||
TriggerEvent('codem-inventory:openInventory', 'trunk', plate)
|
||||
elseif Config.Inventory:lower() == 'origen_inventory' then
|
||||
exports.origen_inventory:openInventory('trunk', plate, {maxweight = 1000000, slots = 50})
|
||||
elseif Config.Inventory:lower() == 'ps-inventory' then
|
||||
if GetResourceState('ps-inventory') == "started" then
|
||||
TriggerServerEvent("ps-inventory:server:OpenInventory", "trunk", plate, {maxweight = 1000000, slots = 50})
|
||||
else
|
||||
TriggerServerEvent("inventory:server:OpenInventory", "trunk", plate, {maxweight = 1000000, slots = 50})
|
||||
end
|
||||
end
|
||||
elseif type == 'search_vehicle_glovebox' then
|
||||
local vehicle = data
|
||||
local plate = GetVehicleNumberPlateText(vehicle)
|
||||
|
||||
if Config.Inventory:lower() == 'ox_inventory' then
|
||||
exports.ox_inventory:openInventory('glovebox', {id='glovebox'..plate, netid = NetworkGetNetworkIdFromEntity(vehicle)})
|
||||
elseif Config.Inventory:lower() == 'qb_inventory' then
|
||||
if GetResourceState('qb-inventory') == "started" then
|
||||
TriggerServerEvent("qb-inventory:server:OpenInventory", nil, 'glovebox-'..plate)
|
||||
else
|
||||
TriggerServerEvent("inventory:server:OpenInventory", "glovebox", plate)
|
||||
end
|
||||
elseif Config.Inventory:lower() == 'quasar_inventory' then
|
||||
TriggerServerEvent("inventory:server:OpenInventory", "glovebox", plate)
|
||||
elseif Config.Inventory:lower() == 'chezza_inventory' then
|
||||
TriggerEvent('inventory:openInventory', {type = "glovebox", id = plate, title = "Vehicle Glove Box", weight = false, delay = 300, save = true})
|
||||
elseif Config.Inventory:lower() == 'core_inventory' then
|
||||
-- no data
|
||||
elseif Config.Inventory:lower() == 'codem_inventory' then
|
||||
TriggerEvent('codem-inventory:openInventory', 'glovebox', plate)
|
||||
elseif Config.Inventory:lower() == 'origen_inventory' then
|
||||
exports.origen_inventory:openInventory('glovebox', plate, {maxweight = 1000000, slots = 50})
|
||||
elseif Config.Inventory:lower() == 'ps-inventory' then
|
||||
if GetResourceState('ps-inventory') == "started" then
|
||||
TriggerServerEvent("ps-inventory:server:OpenInventory", "glovebox", plate)
|
||||
else
|
||||
TriggerServerEvent("inventory:server:OpenInventory", "glovebox", plate)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function ProgressBarFunction(time, text)
|
||||
if Config.ProgressBar:lower() == 'progressbars' then --LINK: https://github.com/EthanPeacock/progressBars/releases/tag/1.0
|
||||
exports['progressBars']:startUI(time, text)
|
||||
elseif Config.ProgressBar:lower() == 'mythic_progbar' then -- LINK: https://github.com/HarryElSuzio/mythic_progbar
|
||||
TriggerEvent("mythic_progbar:client:progress", {name = "policejobduty", duration = time, label = text, useWhileDead = false, canCancel = false})
|
||||
elseif Config.ProgressBar:lower() == 'pogressbar' then -- LINK: https://github.com/SWRP-PUBLIC/pogressBar
|
||||
exports['pogressBar']:drawBar(time, text)
|
||||
end
|
||||
end
|
||||
|
||||
function BossMenuFunction(job)
|
||||
if Config['Core']:upper() == 'ESX' then
|
||||
TriggerEvent('esx_society:openBossMenu', job, function(data) end, { wash = false })
|
||||
elseif Config['Core']:upper() == 'QBCORE' then
|
||||
TriggerEvent('qb-bossmenu:client:OpenMenu')
|
||||
end
|
||||
end
|
||||
|
||||
function PlayerReviveFunction()
|
||||
if Config['Core']:upper() == 'ESX' then
|
||||
TriggerEvent('esx_ambulancejob:revive')
|
||||
elseif Config['Core']:upper() == 'QBCORE' then
|
||||
TriggerEvent('hospital:client:Revive')
|
||||
end
|
||||
end
|
||||
|
||||
function ImpoundDeleteVehicle(vehicle)
|
||||
local plate = GetVehicleNumberPlateText(vehicle)
|
||||
DeleteEntity(vehicle)
|
||||
end
|
||||
|
||||
function HandCuffedEvent(cuffed)
|
||||
if cuffed then
|
||||
--exports['qs-smartphone']:canUsePhone(false)
|
||||
--exports["lb-phone"]:ToggleDisabled(true)
|
||||
else
|
||||
--exports['qs-smartphone']:canUsePhone(true)
|
||||
--exports["lb-phone"]:ToggleDisabled(false)
|
||||
end
|
||||
end
|
||||
|
||||
function CustomMDT()
|
||||
-- You can open another MDT here
|
||||
end
|
||||
|
||||
function BulletProofVest()
|
||||
local playerPed = PlayerPedId()
|
||||
|
||||
AddArmourToPed(playerPed, 100)
|
||||
SetPedArmour(playerPed, 100)
|
||||
SetPedComponentVariation(playerPed, 9, 27, 9, 2)
|
||||
end
|
||||
|
||||
function OpenCloakroomMenuEvent()
|
||||
TriggerEvent('qb-clothing:client:openOutfitMenu')
|
||||
end
|
||||
|
||||
function CitizenWear()
|
||||
if Config['Core']:upper() == 'ESX' then
|
||||
Core.TriggerServerCallback('esx_skin:getPlayerSkin', function(skin)
|
||||
TriggerEvent('skinchanger:loadSkin', skin)
|
||||
end)
|
||||
elseif Config['Core']:upper() == 'QBCORE' then
|
||||
TriggerServerEvent('qb-clothes:loadPlayerSkin')
|
||||
end
|
||||
end
|
||||
|
||||
function setUniform(uniformTable)
|
||||
if Config['Core']:upper() == 'ESX' then
|
||||
TriggerEvent('skinchanger:getSkin', function(skin)
|
||||
local uniform
|
||||
if skin.sex == 0 then
|
||||
uniform = uniformTable.male
|
||||
else
|
||||
uniform = uniformTable.female
|
||||
end
|
||||
|
||||
local table = {}
|
||||
|
||||
for k,v in pairs(uniform) do
|
||||
if k == 't-shirt' then
|
||||
table.tshirt_1 = uniform['t-shirt'].item
|
||||
table.tshirt_2 = uniform['t-shirt'].texture
|
||||
elseif k == 'torso2' then
|
||||
table.torso_1 = uniform['torso2'].item
|
||||
table.torso_2 = uniform['torso2'].texture
|
||||
elseif k == 'decals' then
|
||||
table.decals_1 = uniform['decals'].item
|
||||
table.decals_2 = uniform['decals'].texture
|
||||
elseif k == 'arms' then
|
||||
table.arms = uniform['arms'].item
|
||||
elseif k == 'pants' then
|
||||
table.pants_1 = uniform['pants'].item
|
||||
table.pants_2 = uniform['pants'].texture
|
||||
elseif k == 'shoes' then
|
||||
table.shoes_1 = uniform['shoes'].item
|
||||
table.shoes_2 = uniform['shoes'].texture
|
||||
elseif k == 'hat' then
|
||||
table.helmet_1 = uniform['hat'].item
|
||||
table.helmet_2 = uniform['hat'].texture
|
||||
elseif k == 'accessory' then
|
||||
table.chain_1 = uniform['accessory'].item
|
||||
table.chain_2 = uniform['accessory'].texture
|
||||
elseif k == 'ear' then
|
||||
table.ears_1 = uniform['ear'].item
|
||||
table.ears_2 = uniform['ear'].texture
|
||||
elseif k == 'mask' then
|
||||
table.mask_1 = uniform['mask'].item
|
||||
table.mask_2 = uniform['mask'].texture
|
||||
end
|
||||
end
|
||||
|
||||
TriggerEvent('skinchanger:loadClothes', skin, table)
|
||||
end)
|
||||
elseif Config['Core']:upper() == 'QBCORE' then
|
||||
local table = {}
|
||||
local gender = QBCore.Functions.GetPlayerData().charinfo.gender
|
||||
if gender == 0 then
|
||||
table.outfitData = uniformTable.male
|
||||
else
|
||||
table.outfitData = uniformTable.female
|
||||
end
|
||||
|
||||
TriggerEvent('qb-clothing:client:loadOutfit', table)
|
||||
end
|
||||
end
|
||||
|
||||
function LockPick(vehicle)
|
||||
if Config['Core']:upper() == 'ESX' then
|
||||
local playerPed = PlayerPedId()
|
||||
TaskStartScenarioInPlace(playerPed, 'WORLD_HUMAN_WELDING', 0, true)
|
||||
Wait(1000*10)
|
||||
ClearPedTasksImmediately(playerPed)
|
||||
|
||||
NetworkRegisterEntityAsNetworked(vehicle)
|
||||
NetworkRequestControlOfEntity(vehicle)
|
||||
SetEntityAsMissionEntity(vehicle)
|
||||
|
||||
SetVehicleDoorsLocked(vehicle, 1)
|
||||
SetVehicleDoorsLockedForAllPlayers(vehicle, false)
|
||||
elseif Config['Core']:upper() == 'QBCORE' then
|
||||
TriggerEvent('lockpicks:UseLockpick')
|
||||
end
|
||||
end
|
||||
|
||||
function DisableMinimap()
|
||||
DisplayRadar(false)
|
||||
end
|
||||
|
||||
function EnableMinimap()
|
||||
DisplayRadar(true)
|
||||
end
|
||||
|
||||
function OpenMenuUtil()
|
||||
InMenu = true
|
||||
SetNuiFocus(true, true)
|
||||
|
||||
Citizen.CreateThread(function()
|
||||
while InMenu do
|
||||
N_0xf4f2c0d4ee209e20() -- it's disable the AFK camera zoom
|
||||
Citizen.Wait(15000)
|
||||
end
|
||||
end)
|
||||
|
||||
DisplayRadar(false)
|
||||
end
|
||||
|
||||
function CloseMenuUtil()
|
||||
Citizen.CreateThread(function()
|
||||
Citizen.Wait(1000)
|
||||
InMenu = false
|
||||
end)
|
||||
|
||||
SetNuiFocus(false, false)
|
||||
|
||||
DisplayRadar(true)
|
||||
end
|
||||
|
||||
function GeneratePolicePlace()
|
||||
return string.sub(PlayerData.job.label, 1, 4)..''..math.random(0001, 9999)
|
||||
end
|
||||
|
||||
function IsTargetDead(playerPed)
|
||||
local dead = false
|
||||
if IsEntityPlayingAnim(playerPed, 'dead', 'dead_a', 3) or IsEntityPlayingAnim(playerPed, 'combat@damage@writhe', 'writhe_loop', 3) then
|
||||
dead = true
|
||||
end
|
||||
return dead
|
||||
end
|
||||
|
||||
-----------------------| UTILS TRIGGERS |-----------------------
|
||||
|
||||
RegisterNetEvent('brutal_policejob:client:utils:CreateVehicle')
|
||||
AddEventHandler('brutal_policejob:client:utils:CreateVehicle', function(Vehicle)
|
||||
SetVehicleFuelLevel(Vehicle, 100.0)
|
||||
DecorSetFloat(Vehicle, "_FUEL_LEVEL", GetVehicleFuelLevel(Vehicle))
|
||||
|
||||
if Config['Core']:upper() == 'QBCORE' then
|
||||
TriggerEvent("vehiclekeys:client:SetOwner", GetVehicleNumberPlateText(Vehicle))
|
||||
end
|
||||
end)
|
||||
|
||||
RegisterNetEvent('brutal_policejob:client:utils:DeleteVehicle')
|
||||
AddEventHandler('brutal_policejob:client:utils:DeleteVehicle', function(Vehicle)
|
||||
|
||||
end)
|
|
@ -1,587 +0,0 @@
|
|||
----------------------------------------------------------------------------------------------
|
||||
-----------------------------------| BRUTAL POLICE JOB :) |-----------------------------------
|
||||
----------------------------------------------------------------------------------------------
|
||||
|
||||
--[[
|
||||
Hi, thank you for buying our script, We are very grateful!
|
||||
|
||||
For help join our Discord server: https://discord.gg/85u2u5c8q9
|
||||
More informations about the script: https://docs.brutalscripts.com
|
||||
--]]
|
||||
|
||||
Config = {
|
||||
Core = 'QBCORE', -- 'ESX' / 'QBCORE' | Other core setting on the 'core' folder.
|
||||
Inventory = 'qs-inventory', -- 'ox_inventory' / 'qb_inventory' / 'quasar_inventory' / 'chezza_inventory' / 'codem_inventory' / 'core_inventory' / 'origen_inventory' / 'ps-inventory' // Custom can be add in the cl_utils.lua!!!
|
||||
Billing = 'brutal_billing', -- 'brutal_billing' / 'esx_billing' / 'okokBilling' / 'jaksam_billing' / 'codem_billing' / 'quasar_billing' | false = immediate deduction from the player's bank account
|
||||
TextUI = 'ox_lib', -- false / 'brutal_textui' / 'ox_lib' / 'okokTextUI' / 'ESXTextUI' / 'QBDrawText' // Custom can be add in the cl_utils.lua!!!
|
||||
Target = 'qb-target', -- 'oxtarget' / 'qb-target' // if the TextUI is set to false target will step its place. | The Target cannot be false.
|
||||
ProgressBar = 'pogressBar', -- 'progressBars' / 'pogressBar' / 'mythic_progbar' // Custom can be add in the cl_utils.lua!!!
|
||||
Metric = 'kmh', -- 'kmh' / 'mph'
|
||||
BrutalNotify = true, -- Buy here: (4€+VAT) https://store.brutalscripts.com | Or set up your own notify >> cl_utils.lua
|
||||
SteamName = false, -- true = Steam name | false = character name
|
||||
DateFormat = '%d/%m/%Y', -- Date format
|
||||
CustomOutfitMenu = false, -- If it's true, it will open a custom outfit menu, what you can edit in the cl_utils.lua line 103.
|
||||
ClosestDistanceIssue = false, -- DO NOT EDIT IT.
|
||||
DutyOffOnDeath = true, -- If you are on duty and die, you will be taken off duty. (does nothing if DutySystem = false)
|
||||
DutySystem = true, -- Do you want to use the Duty System? true / false
|
||||
|
||||
PoliceStations = {
|
||||
['Police Department'] = {
|
||||
Job = 'police',
|
||||
MenuColors = {'rgb(15, 100, 210)', 'rgb(9, 43, 88)'},
|
||||
Blip = {use = false, color = 38, sprite = 60, size = 1.0},
|
||||
Marker = {use = false, marker = 20, rgb = {15, 100, 210}, bobUpAndDown = true, rotate = false},
|
||||
Duty = vector3(450.7325, -972.9617, 30.6547),
|
||||
DutyBlips = {
|
||||
use = true,
|
||||
updatetime = 5000,
|
||||
},
|
||||
NoteDeleteRank = 2,
|
||||
GiveLicenseRank = 2,
|
||||
CitizenCallDeleteRank = 2,
|
||||
Licenses = {},
|
||||
Cloakrooms = {
|
||||
vector3(472.7700, -1013.5255, 32.9868),
|
||||
vector3(478.0511, -1011.7962, 32.9868),
|
||||
},
|
||||
BossMenu = {
|
||||
grades = {7},
|
||||
coords = {
|
||||
vector3(430.7693, -989.8458, 35.8398),
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
['Marshals'] = {
|
||||
Job = 'marshal',
|
||||
MenuColors = {'rgb(235, 164, 52)', 'rgb(181, 116, 13)'},
|
||||
Blip = {use = true, color = 22, sprite = 60, size = 1.0},
|
||||
Marker = {use = true, marker = 20, rgb = {15, 100, 210}, bobUpAndDown = true, rotate = false},
|
||||
Duty = vector3(-446.5832, 6012.8979, 32.2887),
|
||||
DutyBlips = {
|
||||
use = true,
|
||||
updatetime = 5000,
|
||||
},
|
||||
NoteDeleteRank = 2,
|
||||
GiveLicenseRank = 2,
|
||||
CitizenCallDeleteRank = 2,
|
||||
Licenses = {},
|
||||
Cloakrooms = {
|
||||
vector3(-440.2871, 6010.4814, 36.9957),
|
||||
},
|
||||
Armorys = {
|
||||
vector3(-449.4388, 6015.1021, 36.9956),
|
||||
},
|
||||
BossMenu = {
|
||||
grades = {3},
|
||||
coords = {
|
||||
vector3(-432.8335, 6005.9185, 36.9957),
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
Commands = {
|
||||
-- For cops
|
||||
|
||||
Duty = {
|
||||
Use = true,
|
||||
Command = 'pduty',
|
||||
Suggestion = 'Entering/Exiting duty'
|
||||
},
|
||||
|
||||
JobMenu = {
|
||||
Command = 'jobmenu',
|
||||
Control = '', -- Controls list: https://docs.fivem.net/docs/game-references/input-mapper-parameter-ids/keyboard/
|
||||
Suggestion = 'Open Job Menu'
|
||||
},
|
||||
|
||||
MDT = {
|
||||
Use = true, -- if false here you can add your custom MDT >> cl_utils
|
||||
Command = 'mdt',
|
||||
Control = '', -- Controls list: https://docs.fivem.net/docs/game-references/input-mapper-parameter-ids/keyboard/
|
||||
Suggestion = 'Open MDT Menu'
|
||||
},
|
||||
|
||||
VehiclePanel = {
|
||||
Use = true,
|
||||
Command = 'vehiclepanel',
|
||||
Control = '', -- Controls list: https://docs.fivem.net/docs/game-references/input-mapper-parameter-ids/keyboard/
|
||||
Suggestion = 'Vehicle Panel Position edit'
|
||||
},
|
||||
|
||||
PlateReader = {
|
||||
Use = true, -- If true, VehiclePanel also needs to be set to true.
|
||||
WhitelistedVehicles = {'police', 'police2', 'police3', 'police4', 'fbi', 'fbi2', 'sheriff', 'sheriff2'}, -- false = not in use
|
||||
Command = 'platereader',
|
||||
Control = '', -- Controls list: https://docs.fivem.net/docs/game-references/input-mapper-parameter-ids/keyboard/
|
||||
Suggestion = 'Plate Reader Menu'
|
||||
},
|
||||
|
||||
AreaLock = {
|
||||
Use = true,
|
||||
DeleteNPC = false,
|
||||
Command = 'arealock',
|
||||
Control = '', -- Controls list: https://docs.fivem.net/docs/game-references/input-mapper-parameter-ids/keyboard/
|
||||
Suggestion = 'Area Lock Menu'
|
||||
},
|
||||
|
||||
CameraRepair = {
|
||||
Command = 'camera_repair',
|
||||
Suggestion = 'Repair the Camera'
|
||||
},
|
||||
|
||||
Drag = {
|
||||
Command = 'drag',
|
||||
Suggestion = 'Drag Animation'
|
||||
},
|
||||
|
||||
RemoveObjects = {
|
||||
Command = 'removeobjects',
|
||||
Suggestion = 'Remove Objects',
|
||||
Objects = {
|
||||
-- prop = objects props/models, icon = objects icons in the jobmenu. (for example use icons from here: https://fontawesome.com/search?m=free&o=r), freeze = freeze the objects position: true / false
|
||||
[1] = {prop = 'prop_roadcone02a', icon = 'fa-solid fa-play fa-rotate-270', freeze = false},
|
||||
[2] = {prop = 'prop_barrier_work06a', icon = 'fa-solid fa-road-barrier', freeze = false},
|
||||
[3] = {prop = 'p_ld_stinger_s', icon = 'fa-solid fa-road-spikes', freeze = false},
|
||||
[4] = {prop = 'prop_gazebo_03', icon = 'fa-solid fa-tent', freeze = false},
|
||||
[5] = {prop = 'prop_worklight_03b', icon = 'fa-solid fa-lightbulb', freeze = false},
|
||||
-- You can't add more or use less!!!
|
||||
}
|
||||
},
|
||||
|
||||
RobPlayer = {
|
||||
Use = true,
|
||||
HandUpAnimation = {use = true, animDictionary = 'missminuteman_1ig_2', animName = 'handsup_base'}, -- If you use a different hands up animation on your server change these | Anim Dict, Anim Name
|
||||
CanRobDeadPlayer = true, -- You can rob dead players? true / false
|
||||
Command = 'rob',
|
||||
Suggestion = 'Rob Player'
|
||||
},
|
||||
|
||||
-- For Civils
|
||||
|
||||
CitizenCall = {
|
||||
Use = true,
|
||||
Command = 'citizencall',
|
||||
Control = '', -- Controls list: https://docs.fivem.net/docs/game-references/input-mapper-parameter-ids/keyboard/
|
||||
Suggestion = 'Citizen Call Menu',
|
||||
Cooldown = 0, -- in minutes while a player can not send a citizencall again
|
||||
},
|
||||
},
|
||||
|
||||
HandCuff = {
|
||||
Freeze = false, -- Do you want to freeze the player while he is cuffed? true / false
|
||||
CuffObject = true, -- Do you want to use Cuff Object on the player's hand? true / false
|
||||
FastCuff = {Command = 'cuff', Control = '', Suggestion = 'To cuff a player faster'},
|
||||
-- More controls: https://docs.fivem.net/docs/game-references/controls/
|
||||
DisableControls = {24,257,25,263,32,34,31,30,45,22,44,37,23,288,289,170,167,73,199,59,71,72,36,47,264,257,140,141,142,143,75}, -- Disabled controls while the player is cuffed.
|
||||
|
||||
HandcuffItem = 'handcuff', -- Usable item, what everyone can use to cuff someone.
|
||||
RemoveHandcuffItem = false, -- Wether the script should remove the cuff item after the player used it once or not
|
||||
HandcuffKeyItem = 'handcuff_key', -- Usable item, what everyone can use to open the handcuff.
|
||||
RemoveHandcuffKeyItem = false, -- Wether the script should remove the key item after the player used it once or not
|
||||
DragBlacklistedVehicles = {'bf400', 'sanchez'},
|
||||
VehicleEnterType = 'walk', -- walk / teleport | the way how people will get in the vehicle when you put them into one with the jobmenu
|
||||
},
|
||||
|
||||
BulletProofs = {
|
||||
Use = false, -- true = false
|
||||
Items = {
|
||||
-- Job = who can use, onlyjob = Only the job members can use? true / fase, item = ITEM
|
||||
{job = 'police', onlyjob = true, item = 'police_bulletproof'},
|
||||
{job = 'sheriff', onlyjob = true, item = 'sheriff_bulletproof'},
|
||||
}
|
||||
},
|
||||
|
||||
SpeedCameras = {
|
||||
Use = false, -- Do you want to use Speedcameras? true / false
|
||||
Blips = {sprite = 184, color = 82, size = 0.5}, -- Speedcameras Blips
|
||||
OtherWhitelistedJobs = {'ambulance', 'sheriff', ''}, -- Other Whitelisted jobs
|
||||
Flash = true, -- Do you want a flash effect for Speedcameras? true / false
|
||||
FlashSound = true, -- Do you want a flash sound for Speedcameras? true / false
|
||||
Positions = {
|
||||
-- Coords, job = which job will get the money from the speedcameras, limit = speed limit, price = price (Proportional fine value), radius = radius, blip = true / false
|
||||
{coords = vector3(2076.3738, 2718.7109, 47.6280), job = 'police', limit = 50, price = 1000, radius = 5.0, blip = true},
|
||||
{coords = vector3(1320.0201, 610.4359, 80.1452), job = 'police', limit = 130, price = 3000, radius = 15.0, blip = true},
|
||||
{coords = vector3(-2686.5913, 2442.6104, 16.6781), job = 'police', limit = 130, price = 3000, radius = 15.0, blip = true},
|
||||
{coords = vector3(-1057.4922, -607.0911, 17.9110), job = 'police', limit = 110, price = 2000, radius = 25.0, blip = true},
|
||||
{coords = vector3(229.3872, -662.6493, 38.2247), job = 'police', limit = 50, price = 1000, radius = 15.0, blip = true},
|
||||
{coords = vector3(120.5341, -1378.1332, 28.8197), job = 'police', limit = 50, price = 1000, radius = 25.0, blip = true},
|
||||
}
|
||||
},
|
||||
|
||||
CityAlarms = { -- When shooting or car jacking happens the script can place a blip for some time or send a citizencall to the mdt
|
||||
Shooting = {
|
||||
Use = true,
|
||||
SendCitizenCall = false,
|
||||
|
||||
Blips = {sprite = 110, sprite2 = 229, size = 0.70, color = 1, label = 'Shooting'},
|
||||
RemoveTime = 15, -- in second | Remove the blip after this time
|
||||
JobWhitelist = {"fbi"}, -- if someone from these jobs shoot it wont be triggered
|
||||
ZoneWhitelists = { -- in this zone it wont be triggered
|
||||
{size = 30.0, coords = vector3(133.8319, -481.2803, 43.1305)},
|
||||
},
|
||||
WeaponWhitelist = { -- these weapons wont trigger the script
|
||||
'WEAPON_GRENADE',
|
||||
'WEAPON_BZGAS',
|
||||
'WEAPON_MOLOTOV',
|
||||
'WEAPON_STICKYBOMB',
|
||||
'WEAPON_PROXMINE',
|
||||
'WEAPON_SNOWBALL',
|
||||
'WEAPON_PIPEBOMB',
|
||||
'WEAPON_BALL',
|
||||
'WEAPON_SMOKEGRENADE',
|
||||
'WEAPON_FLARE',
|
||||
'WEAPON_PETROLCAN',
|
||||
'WEAPON_FIREEXTINGUISHER',
|
||||
'WEAPON_HAZARDCAN',
|
||||
'WEAPON_RAYCARBINE',
|
||||
'WEAPON_STUNGUN'
|
||||
}
|
||||
},
|
||||
|
||||
CarJack = {
|
||||
Use = true,
|
||||
|
||||
Blips = {sprite = 326, size = 0.70, color = 43, label = 'Car Jacking'},
|
||||
RemoveTime = 15, -- in second | Remove the blip after this time
|
||||
SendCitizenCall = true,
|
||||
UseShockingCarAlarm = true,
|
||||
|
||||
ZoneWhitelists = {
|
||||
{size = 30.0, coords = vector3(133.8319, -481.2803, 43.1305)},
|
||||
},
|
||||
},
|
||||
},
|
||||
|
||||
Prison = {
|
||||
Use = true, -- Do you want to use the Prison? true / false
|
||||
SaveInventory = true, -- true / false | If set to true, the player's inventory is saved to the database when jailed. (Cannot be true if ClearInventory is also true.)
|
||||
ClearInventory = false, -- true / false | If set to true, the player's inventory is cleared when jailed. (Cannot be true if SaveInventory is also true.)
|
||||
SaveFrequency = 5,
|
||||
Blip = {use = true, label = 'Prison', color = 3, sprite = 188, size = 1.25},
|
||||
Marker = {use = true, marker = 20, rgb = {15, 100, 210}, bobUpAndDown = true, rotate = false},
|
||||
Coords = vector3(1765.2253, 2560.2373, 45.5651),
|
||||
SendPlayerToJail = vector3(1840.3468, 2579.6252, 46.0143),
|
||||
FinishCoords = vector4(1847.0192, 2585.8787, 45.6726, 267.4373),
|
||||
|
||||
Hospital = {
|
||||
Blip = {label = 'Prison Hospital', coords = vector3(1767.7861, 2570.3118, 45.7299), color = 2, sprite = 61, size = 0.8},
|
||||
ReviveTime = 15, -- in sec
|
||||
ClearInventory = true, -- true / false
|
||||
Beds = {
|
||||
{coords = vector3(1772.00, 2597.9272, 45.6585), heading = 90.0},
|
||||
{coords = vector3(1772.00, 2594.9656, 45.6586), heading = 90.0},
|
||||
{coords = vector3(1772.00, 2591.8428, 45.6586), heading = 90.0},
|
||||
},
|
||||
},
|
||||
|
||||
Escape = {
|
||||
CanEscape = true, -- Do you want to let the players to escape from the Prison? true / false
|
||||
EscapeDistance = 500.0, -- Escape Distance
|
||||
|
||||
EscapeByTunnel = {
|
||||
Use = true, -- If it's true, you have to have this required mlo: https://ed-johnsonscripts.tebex.io/package/5303552
|
||||
Price = 5000, -- Price to can use
|
||||
TimeToEscape = 30000, -- Escaping time
|
||||
|
||||
Model = 's_m_y_prismuscl_01',
|
||||
Coords = vector4(1628.2682, 2584.9957, 44.5652, 1.0618),
|
||||
DoorCoords = vector4(1628.185, 2584.76, 45.5583, 1.0618),
|
||||
WalkCoords = vector4(1626.5833, 2585.4402, 45.5648, 2.9932),
|
||||
DoorObject = -904036698,
|
||||
},
|
||||
},
|
||||
|
||||
Shop = {
|
||||
Blip = {label = 'Prison Shop', color = 69, sprite = 59, size = 0.8},
|
||||
Coords = vector3(1770.1625, 2551.2397, 45.5650),
|
||||
Items = {
|
||||
-- In ESX
|
||||
{item = 'burger', label = 'Burger', price = 1},
|
||||
{item = 'water', label = 'Water', price = 1},
|
||||
|
||||
-- In QB
|
||||
--{item = 'sandwich', label = 'Sandwich', price = 1},
|
||||
--{item = 'water_bottle', label = 'Water', price = 1},
|
||||
}
|
||||
},
|
||||
|
||||
Jobs = {
|
||||
Use = true,
|
||||
Blip = {label = 'Prison Job', color = 17, sprite = 66, size = 0.7},
|
||||
StartJob = vector3(1616.6893, 2576.9800, 45.8556),
|
||||
|
||||
Works = {
|
||||
-- Welding
|
||||
{
|
||||
Time = 10, -- Time in sec
|
||||
Money = {min = 100, max = 200}, -- Mimimum, Maximum random money amount
|
||||
Blip = {label = 'Work Possition', color = 26, sprite = 354, size = 0.8},
|
||||
Animation = 'WORLD_HUMAN_WELDING',
|
||||
RemoveProp = 'prop_weld_torch',
|
||||
Positions = {
|
||||
{Coords = vector3(1624.7623, 2575.7261, 45.5649), Heading = 270.0},
|
||||
{Coords = vector3(1610.1010, 2568.1750, 45.5649), Heading = 45.0},
|
||||
},
|
||||
},
|
||||
|
||||
-- Hammering
|
||||
{
|
||||
Time = 10,
|
||||
Money = {min = 100, max = 200},
|
||||
Blip = {label = 'Work Possition', color = 26, sprite = 402, size = 1.0},
|
||||
Animation = 'WORLD_HUMAN_HAMMERING',
|
||||
RemoveProp = 'prop_tool_hammer',
|
||||
Positions = {
|
||||
{Coords = vector3(1630.2081, 2527.3784, 45.5649), Heading = 235.0},
|
||||
{Coords = vector3(1624.8821, 2513.2861, 45.5648), Heading = 100.0},
|
||||
},
|
||||
},
|
||||
|
||||
-- Planting
|
||||
{
|
||||
Time = 10,
|
||||
Money = {min = 100, max = 200},
|
||||
Blip = {label = 'Work Possition', color = 2, sprite = 1, size = 0.75},
|
||||
Animation = 'WORLD_HUMAN_GARDENER_PLANT',
|
||||
RemoveProp = 'prop_cs_trowel',
|
||||
Positions = {
|
||||
{Coords = vector3(1771.3270, 2546.0410, 45.5871), Heading = 275.0},
|
||||
{Coords = vector3(1757.6355, 2550.0220, 45.5651), Heading = 130.0},
|
||||
{Coords = vector3(1700.1659, 2536.5183, 45.5595), Heading = 150.0},
|
||||
},
|
||||
},
|
||||
|
||||
-- Cleaning
|
||||
{
|
||||
Time = 10,
|
||||
Money = {min = 100, max = 200},
|
||||
Blip = {label = 'Work Possition', color = 5, sprite = 1, size = 0.75},
|
||||
Animation = 'WORLD_HUMAN_MAID_CLEAN',
|
||||
RemoveProp = 'prop_rag_01',
|
||||
Positions = {
|
||||
{Coords = vector3(1781.9982, 2558.9646, 45.6732), Heading = 0.0},
|
||||
{Coords = vector3(1784.3669, 2563.7920, 45.6731), Heading = 0.0},
|
||||
{Coords = vector3(1784.2422, 2552.7314, 45.6731), Heading = 0.0},
|
||||
},
|
||||
},
|
||||
|
||||
-- You can add more...
|
||||
},
|
||||
},
|
||||
|
||||
PrisonGuards = {
|
||||
{Model = 'mp_m_securoguard_01', Coords = vector4(1759.9581, 2413.7534, 45.3684, 28.3456), Distance = 10.0},
|
||||
{Model = 'mp_m_securoguard_01', Coords = vector4(1820.5490, 2477.2603, 45.3775, 58.4353), Distance = 10.0},
|
||||
{Model = 'mp_m_securoguard_01', Coords = vector4(1659.2534, 2398.5969, 45.4038, 1.3208), Distance = 10.0},
|
||||
{Model = 'mp_m_securoguard_01', Coords = vector4(1544.2542, 2470.9983, 45.3487, 291.0606), Distance = 10.0},
|
||||
{Model = 'mp_m_securoguard_01', Coords = vector4(1538.5869, 2585.3689, 45.3398, 276.2064), Distance = 10.0},
|
||||
{Model = 'mp_m_securoguard_01', Coords = vector4(1572.9132, 2678.1006, 45.3943, 241.9367), Distance = 10.0},
|
||||
{Model = 'mp_m_securoguard_01', Coords = vector4(1650.8765, 2754.4700, 45.4991, 204.2366), Distance = 10.0},
|
||||
{Model = 'mp_m_securoguard_01', Coords = vector4(1772.0437, 2758.9846, 45.5022, 158.1188), Distance = 10.0},
|
||||
{Model = 'mp_m_securoguard_01', Coords = vector4(1844.9613, 2699.1370, 45.5318, 91.8540), Distance = 10.0},
|
||||
{Model = 'mp_m_securoguard_01', Coords = vector4(1819.9763, 2621.6011, 45.5227, 84.6645), Distance = 10.0},
|
||||
{Model = 'mp_m_securoguard_01', Coords = vector4(1796.1647, 2620.0349, 45.5651, 357.4224), Distance = 10.0},
|
||||
{Model = 'mp_m_securoguard_01', Coords = vector4(1797.2832, 2590.6509, 45.6206, 190.7684), Distance = 10.0},
|
||||
{Model = 'mp_m_securoguard_01', Coords = vector4(1822.2632, 2608.7876, 45.5931, 92.6341), Distance = 20.0},
|
||||
},
|
||||
},
|
||||
|
||||
SecurityCameras = {
|
||||
hack = {
|
||||
enable = true, -- Camera Hacking | true = false
|
||||
time = 30, -- Hacking time
|
||||
removeItem = false, -- Remove the item? | true = false
|
||||
item = 'cam_hacking', -- Camera Hacking item
|
||||
distance = 15.0 -- The player should be at this distance from camera object
|
||||
},
|
||||
|
||||
cameras = {
|
||||
[1] = {label = "Prison CAM#1", coords = vector3(1768.84, 2530.96, 50.06), r = {x = -15.0, y = 0.0, z = 42.78}, img = 'https://i.ibb.co/L1V2ypj/image.png'},
|
||||
[2] = {label = "Prison CAM#2", coords = vector3(1616.35, 2522.01, 50.12), r = {x = -15.0, y = 0.0, z = 300.78}, img = 'https://i.ibb.co/ggPmDzF/image.png'},
|
||||
[3] = {label = "Prison CAM#3", coords = vector3(1694.99, 2529.18, 59.00), r = {x = -15.0, y = 0.0, z = 300.78}, img = 'https://i.ibb.co/ZfQ8Rbk/image.png'},
|
||||
[4] = {label = "Pacific Bank CAM#1", coords = vector3(235.35, 227.76, 113.83), r = {x = -35.0, y = 0.0, z = 220.05}, img = 'https://i.ibb.co/RzW3BG6/image.png'},
|
||||
[5] = {label = "Pacific Bank CAM#2", coords = vector3(232.64, 221.82, 108.47), r = {x = -25.0, y = 0.0, z = -140.91}, img = 'https://i.ibb.co/YZZ5BXG/image.png'},
|
||||
[6] = {label = "Pacific Bank CAM#3", coords = vector3(251.83, 225.38, 104.50), r = {x = -35.0, y = 0.0, z = -74.87}, img = 'https://i.ibb.co/bW8qhqx/image.png'},
|
||||
[7] = {label = "Jewelery CAM#1", coords = vector3(-620.28, -224.15, 40.32), r = {x = -25.0, y = 0.0, z = 165.78}, img = 'https://i.ibb.co/WgSKLwZ/image.png'},
|
||||
[8] = {label = "Jewelery CAM#2", coords = vector3(-627.47, -239.98, 40.30), r = {x = -25.0, y = 0.0, z = -10.78}, img = 'https://i.ibb.co/dtZzrWp/image.png'},
|
||||
[9] = {label = "Paleto Bank #1", coords = vector3(-115.40, 6472.91, 33.00), r = {x = -25.0, y = 0.0, z = 200.1595}, img = 'https://i.ibb.co/8ryd2wF/image.png'},
|
||||
[10] = {label = "Paleto Bank #2", coords = vector3(-108.02, 6462.61, 33.40), r = {x = -25.0, y = 0.0, z = 360.00}, img = 'https://i.ibb.co/SRtZtBx/image.png'},
|
||||
[11] = {label = "Paleto Bank #3", coords = vector3(-104.62, 6479.42, 33.38), r = {x = -25.0, y = 0.0, z = 182.00}, img = 'https://i.ibb.co/J2XSjT4/image.png'},
|
||||
[12] = {label = "Paleto Bank #4", coords = vector3(-107.89, 6468.54, 33.90), r = {x = -25.0, y = 0.0, z = 216.00}, img = 'https://i.ibb.co/1QvW9GD/image.png'},
|
||||
[13] = {label = "Fleeca Bank #1", coords = vector3(146.52, -1038.20, 30.72), r = {x = -25.0, y = 0.0, z = 250.1595}, img = 'https://i.ibb.co/Z2M2x5N/image.png'},
|
||||
[14] = {label = "Fleeca Bank #1", coords = vector3(150.01, -1051.31, 31.10), r = {x = -25.0, y = 0.0, z = 25.1595}, img = 'https://i.ibb.co/0nDx3P5/image.png'},
|
||||
[15] = {label = "Fleeca Bank #2", coords = vector3(1179.08, 2705.60, 39.40), r = {x = -25.0, y = 0.0, z = 90.1595}, img = 'https://i.ibb.co/Z2M2x5N/image.png'},
|
||||
[16] = {label = "Fleeca Bank #2", coords = vector3(1171.28, 2716.70, 39.82), r = {x = -25.0, y = 0.0, z = 225.1595}, img = 'https://i.ibb.co/0nDx3P5/image.png'},
|
||||
[17] = {label = "Fleeca Bank #3", coords = vector3(-1216.80, -331.46, 39.0), r = {x = -25.0, y = 0.0, z = 290.1595}, img = 'https://i.ibb.co/Z2M2x5N/image.png'},
|
||||
[18] = {label = "Fleeca Bank #3", coords = vector3(-1204.83, -337.83, 39.51), r = {x = -25.0, y = 0.0, z = 80.1595}, img = 'https://i.ibb.co/0nDx3P5/image.png'},
|
||||
[19] = {label = "Fleeca Bank #4", coords = vector3(-2963.95, 478.96, 17.06), r = {x = -25.0, y = 0.0, z = 350.1595}, img = 'https://i.ibb.co/Z2M2x5N/image.png'},
|
||||
[20] = {label = "Fleeca Bank #4", coords = vector3(-2952.67, 486.13, 17.47), r = {x = -25.0, y = 0.0, z = 140.1595}, img = 'https://i.ibb.co/0nDx3P5/image.png'},
|
||||
[21] = {label = "Fleeca Bank #5", coords = vector3(310.85, -276.56, 55.47), r = {x = -25.0, y = 0.0, z = 250.1595}, img = 'https://i.ibb.co/Z2M2x5N/image.png'},
|
||||
[22] = {label = "Fleeca Bank #5", coords = vector3(314.34, -289.67, 56.23), r = {x = -25.0, y = 0.0, z = 25.1595}, img = 'https://i.ibb.co/0nDx3P5/image.png'},
|
||||
[23] = {label = "Fleeca Bank #6", coords = vector3(-354.35, -47.43, 50.69), r = {x = -25.0, y = 0.0, z = 250.1595}, img = 'https://i.ibb.co/Z2M2x5N/image.png'},
|
||||
[24] = {label = "Fleeca Bank #6", coords = vector3(-350.62, -60.48, 50.76), r = {x = -25.0, y = 0.0, z = 25.1595}, img = 'https://i.ibb.co/0nDx3P5/image.png'},
|
||||
},
|
||||
},
|
||||
|
||||
-----------------------------------------------------------
|
||||
-----------------------| TRANSLATE |-----------------------
|
||||
-----------------------------------------------------------
|
||||
|
||||
MoneyForm = '$', -- Money form
|
||||
|
||||
-- All Licences Label
|
||||
Licences = {
|
||||
['weapon'] = 'Weapon Licence',
|
||||
['dmv'] = 'DMV Licence',
|
||||
['drive'] = 'Drive Licence',
|
||||
['driver'] = 'Drive Licence',
|
||||
['bike'] = 'Bike Licence',
|
||||
['hunting'] = 'Hunting Licence',
|
||||
['business'] = 'Business Licence',
|
||||
},
|
||||
|
||||
Locales = {
|
||||
CameraLabel = 'Left ~INPUT_CELLPHONE_LEFT~ Right ~INPUT_CELLPHONE_RIGHT~\nUp ~INPUT_CELLPHONE_UP~ Down ~INPUT_CELLPHONE_DOWN~\n~r~Cancel ~INPUT_CELLPHONE_CANCEL~',
|
||||
ObjectLabel = 'Rotate Object ~INPUT_CELLPHONE_LEFT~ & ~INPUT_CELLPHONE_RIGHT~\n~b~Place Object~w~ ~INPUT_FRONTEND_RDOWN~',
|
||||
Male = 'Male',
|
||||
Female = 'Female',
|
||||
SpeedCameraFine = 'Speed Camera - Speed:',
|
||||
SpeedCameraBlipLabel = 'Speed Camera',
|
||||
None = 'None',
|
||||
Jail = 'Jail',
|
||||
Reason = 'Reason',
|
||||
Time = 'Time',
|
||||
VehicleJacking = 'Vehicle Jacking',
|
||||
Shooting = 'Shooting',
|
||||
|
||||
-- Job Menu Locales
|
||||
|
||||
CitizenInteractions = 'Citizen Interactions',
|
||||
Search = 'Search',
|
||||
Cuff = 'Cuff',
|
||||
Uncuff = 'Uncuff',
|
||||
Drag = 'Drag',
|
||||
InOutOfVehicle = 'In/out of vehicle',
|
||||
|
||||
VehicleInteractions = 'Vehicle Interactions',
|
||||
Lockpick = 'Lockpick',
|
||||
WheelClamp = 'Wheel clamp',
|
||||
Impound = 'Impound',
|
||||
VehicleSearch = 'Search',
|
||||
|
||||
Objects = 'Objects',
|
||||
Cone = 'Cone',
|
||||
Barrier = 'Barrier',
|
||||
Spikestrips = 'Spikestrips',
|
||||
Tent = 'Tent',
|
||||
Light = 'Light',
|
||||
|
||||
MDT = 'MDT',
|
||||
Colleague = 'Colleague',
|
||||
},
|
||||
|
||||
Texts = {
|
||||
[1] = {'[E] - To open the dress menu', 38, 'Open the dress menu', 'fa-solid fa-person-half-dress'},
|
||||
[2] = {'[E] - To open the armory menu', 38, 'Open the armory menu', 'fa-solid fa-shield-halved'},
|
||||
[3] = {'[E] - To open the garage menu', 38, 'Open the garage menu', 'fa-solid fa-warehouse'},
|
||||
[4] = {'[E] - To deposit the vehicle', 38, 'Deposit the vehicle', 'fa-solid fa-car'},
|
||||
[5] = {'[E] - To Duty ON', '[E] - To Duty OFF', 38, 'To Duty', 'fa-solid fa-newspaper'},
|
||||
[6] = {'[E] - Search Vehicle Trunk', 38},
|
||||
[7] = {'[E] - Search Vehicle Glovebox', 38},
|
||||
[8] = {'[E] - To remove Object', 38, 'Remove Object', 'fa-solid fa-trash'},
|
||||
[9] = {'[E] - To start job', 38, 'Start job', 'fa-solid fa-play'},
|
||||
[10] = {'[E] - To finish job', 38, 'Finish job', 'fa-solid fa-stop'},
|
||||
[11] = {'[E] - To start working', 38, 'Start working', 'fa-solid fa-hammer'},
|
||||
[12] = {'[E] - To escape By Tunnel', 38, 'Escape By Tunnel', 'fa-solid fa-archway'},
|
||||
[13] = {'[E] - To open shop', 38, 'Open shop', 'fa-solid fa-shop'},
|
||||
[14] = {'[E] - To send Player To Jail', 38, 'Send Player To Jail', 'fa-solid fa-handcuffs'},
|
||||
[15] = {'[E] - To open the boss menu', 38, 'Open the boss menu', 'fa-solid fa-users-gear'},
|
||||
},
|
||||
|
||||
-- Notify function EDITABLE >> cl_utils.lua
|
||||
Notify = {
|
||||
[1] = {"POLICE JOB", "No vehicle available for your rank.", 5000, "error"},
|
||||
[2] = {"POLICE JOB", "You can't deposit this Vehicle.", 5000, "error"},
|
||||
[3] = {"POLICE JOB", "Duty status: <b>ON", 5000, "info"},
|
||||
[4] = {"POLICE JOB", "Duty status: <b>OFF", 5000, "info"},
|
||||
[5] = {"POLICE JOB", "Something is in the way!", 5000, "error"},
|
||||
[6] = {"POLICE JOB", "There isn't free seat in the Vehicle!", 5000, "error"},
|
||||
[7] = {"POLICE JOB", "You got:", 5000, "info"},
|
||||
[8] = {"POLICE JOB", "<br>You spent:<b>", 5000, "info"},
|
||||
[9] = {"POLICE JOB", "You can't use it.", 5000, "error"},
|
||||
[10] = {"POLICE JOB", "You don't have enough money!", 5000, "error"},
|
||||
[11] = {"POLICE JOB", "<b>You have started Work!</b> Go to the Point, marked on the map! You will receive Money when you finish the Job.", 10000, "info"},
|
||||
[12] = {"POLICE JOB", "Go to the Next Point, marked on the map!", 5000, "info"},
|
||||
[13] = {"POLICE JOB", "The Prison Guard bringed you back!", 5000, "info"},
|
||||
[14] = {"POLICE JOB", "You do not have enough cash:", 5000, "error"},
|
||||
[15] = {"POLICE JOB", "The door is opening, escape!", 5000, "success"},
|
||||
[16] = {"POLICE JOB", "Please DO NOT SPAM!", 8000, "error"},
|
||||
[17] = {"POLICE JOB", "You aren't near to a Camera Object!", 5000, "error"},
|
||||
[18] = {"POLICE JOB", "Hack FAILED!", 5000, "error"},
|
||||
[19] = {"POLICE JOB", "Hack SUCCESS! The camera has been deactivated.", 5000, "success"},
|
||||
[20] = {"POLICE JOB", "You have successfully repaired the Camera!", 6000, "success"},
|
||||
[21] = {"POLICE JOB", "You have successfully submitted!", 6000, "success"},
|
||||
[22] = {"POLICE JOB", "You have successfully created a fine!", 6000, "success"},
|
||||
[23] = {"POLICE JOB", "There are no players near you!", 6000, "error"},
|
||||
[24] = {"POLICE JOB", "Jail time is over!", 6000, "success"},
|
||||
[25] = {"POLICE JOB", "You have successfully escaped!", 6000, "success"},
|
||||
[26] = {"POLICE JOB", "You can't escape!", 6000, "error"},
|
||||
[27] = {"POLICE JOB", "Citizen Call <br>Street: ", 6000, "info"},
|
||||
[28] = {"POLICE JOB", "No one nearby to drag!", 6000, "error"},
|
||||
[29] = {"POLICE JOB", "Someone is in the Vehicle!", 6000, "error"},
|
||||
[30] = {"POLICE JOB", "You have to put a Wheel Clamp to the Wheel first.", 6000, "error"},
|
||||
[31] = {"POLICE JOB", "You paid a police fine:", 5000, "info"},
|
||||
[32] = {"POLICE JOB", "The player isn't available!", 5000, "info"},
|
||||
[33] = {"POLICE JOB", "The player have to put up their hands!", 5000, "error"},
|
||||
[34] = {"POLICE JOB", "You have to wait to send again.", 5000, "error"},
|
||||
[35] = {"POLICE JOB", "You have to duty in!", 5000, "error"},
|
||||
},
|
||||
|
||||
Progressbar = {
|
||||
DutyOFF = 'Duty OFF...',
|
||||
DutyON = 'Duty ON...',
|
||||
Working = 'Working...',
|
||||
WheelClampPlacing = 'Placing Wheel Clamp...',
|
||||
Impound = 'Impound...',
|
||||
Rob = 'Player Robbing...'
|
||||
},
|
||||
|
||||
Webhooks = {
|
||||
Use = true, -- Use webhooks? true / false
|
||||
Locale = {
|
||||
['ItemBought'] = 'Item Bought',
|
||||
['CitizenCallOpen'] = 'Citizen Call - Open',
|
||||
['CitizenCallClose'] = 'Citizen Call - Close',
|
||||
['CitizenCallDelete'] = 'Citizen Call - Delete',
|
||||
['FineCreated'] = 'Fine Created',
|
||||
['Jail'] = 'Jail',
|
||||
['Unjail'] = 'Unjail',
|
||||
|
||||
['PlayerName'] = 'Player Name',
|
||||
['Identifier'] = 'Identifier',
|
||||
['Items'] = 'Items',
|
||||
['Text'] = 'Text',
|
||||
['Callid'] = 'Call ID',
|
||||
['Coords'] = 'Coords',
|
||||
['Assistant'] = 'Assistant',
|
||||
['CloseReason'] = 'Close Reason',
|
||||
['Receiver'] = 'Receiver',
|
||||
['Amount'] = 'Amount',
|
||||
['Job'] = 'Job',
|
||||
['Reason'] = 'Reason',
|
||||
|
||||
['Time'] = 'Time ⏲️'
|
||||
},
|
||||
|
||||
-- To change a webhook color you need to set the decimal value of a color, you can use this website to do that - https://www.mathsisfun.com/hexadecimal-decimal-colors.html
|
||||
Colors = {
|
||||
['FineCreated'] = 3145631,
|
||||
['CitizenCallOpen'] = 3145631,
|
||||
['CitizenCallClose'] = 3145631,
|
||||
['ItemBought'] = 3145631,
|
||||
['Jail'] = 3145631,
|
||||
['Unjail'] = 3145631,
|
||||
}
|
||||
}
|
||||
} --
|
|
@ -1,73 +0,0 @@
|
|||
Core = nil
|
||||
|
||||
if Config['Core']:upper() == 'ESX' then
|
||||
local _esx_ = 'new' -- 'new' / 'old'
|
||||
|
||||
if _esx_ then
|
||||
Core = exports['es_extended']:getSharedObject()
|
||||
else
|
||||
while Core == nil do
|
||||
TriggerEvent('esx:getSharedObject', function(obj) Core = obj end)
|
||||
Citizen.Wait(0)
|
||||
end
|
||||
end
|
||||
|
||||
LoadedEvent = 'esx:playerLoaded'
|
||||
onPlayerDeath = 'esx:onPlayerDeath'
|
||||
JobUpdateEvent = 'esx:setJob'
|
||||
TSCB = Core.TriggerServerCallback
|
||||
|
||||
function GetPlayerJobDatas()
|
||||
return Core.GetPlayerData().job
|
||||
end
|
||||
|
||||
function GetClosestPlayerFunction()
|
||||
if not Config.ClosestDistanceIssue then
|
||||
return Core.Game.GetClosestPlayer()
|
||||
else
|
||||
local pedCoords = GetEntityCoords(PlayerPedId())
|
||||
local closestPlayer, _, targetCoords = lib.getClosestPlayer(pedCoords, 100.0)
|
||||
local distance = 100.0
|
||||
if closestPlayer ~= nil then
|
||||
distance = #(pedCoords - targetCoords)
|
||||
end
|
||||
|
||||
return closestPlayer, distance
|
||||
end
|
||||
end
|
||||
|
||||
function GetClosestVehicleFunction(coords, modelFilter)
|
||||
if not Config.ClosestDistanceIssue then
|
||||
return Core.Game.GetClosestVehicle(coords, modelFilter)
|
||||
else
|
||||
local pedCoords = GetEntityCoords(PlayerPedId())
|
||||
local closestVehicle, targetCoords = lib.getClosestVehicle(pedCoords, 100.0, false)
|
||||
local distance = 100.0
|
||||
if closestVehicle ~= nil then
|
||||
distance = #(pedCoords - targetCoords)
|
||||
end
|
||||
|
||||
return closestVehicle, distance
|
||||
end
|
||||
end
|
||||
|
||||
elseif Config['Core']:upper() == 'QBCORE' then
|
||||
Core = exports['qb-core']:GetCoreObject()
|
||||
|
||||
LoadedEvent = 'QBCore:Client:OnPlayerLoaded'
|
||||
JobUpdateEvent = 'QBCore:Client:OnJobUpdate'
|
||||
TSCB = Core.Functions.TriggerCallback
|
||||
|
||||
function GetPlayerJobDatas()
|
||||
return Core.Functions.GetPlayerData().job
|
||||
end
|
||||
|
||||
function GetClosestPlayerFunction()
|
||||
return Core.Functions.GetClosestPlayer()
|
||||
end
|
||||
|
||||
function GetClosestVehicleFunction(coords, modelFilter)
|
||||
return Core.Functions.GetClosestVehicle(coords, modelFilter)
|
||||
end
|
||||
|
||||
end
|
|
@ -1,317 +0,0 @@
|
|||
Core = nil
|
||||
|
||||
if Config['Core']:upper() == 'ESX' then
|
||||
local _esx_ = 'new' -- 'new' / 'old'
|
||||
|
||||
if _esx_ == 'new' then
|
||||
Core = exports['es_extended']:getSharedObject()
|
||||
else
|
||||
Core = nil
|
||||
TriggerEvent('esx:getSharedObject', function(obj) Core = obj end)
|
||||
while Core == nil do
|
||||
Citizen.Wait(0)
|
||||
end
|
||||
end
|
||||
|
||||
RESCB = Core.RegisterServerCallback
|
||||
GETPFI = Core.GetPlayerFromId
|
||||
RUI = Core.RegisterUsableItem
|
||||
UsersDataTable = 'users'
|
||||
UserIdentifierValue = 'identifier'
|
||||
VehiclesDataTable = 'owned_vehicles'
|
||||
|
||||
function GetIdentifier(source)
|
||||
local xPlayer = GETPFI(source)
|
||||
while xPlayer == nil do
|
||||
Citizen.Wait(1000)
|
||||
xPlayer = GETPFI(source)
|
||||
end
|
||||
return xPlayer.identifier
|
||||
end
|
||||
|
||||
function GetPlayersFunction()
|
||||
return Core.GetPlayers()
|
||||
end
|
||||
|
||||
function GetPlayerJobFunction(source)
|
||||
if source ~= nil then
|
||||
local xPlayer = GETPFI(source)
|
||||
PlayerJob = xPlayer.job.name
|
||||
return PlayerJob
|
||||
else
|
||||
return ""
|
||||
end
|
||||
end
|
||||
|
||||
function GetPlayerByIdentifier(identifier)
|
||||
return Core.GetPlayerFromIdentifier(identifier)
|
||||
end
|
||||
|
||||
function GetAccountMoney(source,account)
|
||||
local xPlayer = GETPFI(source)
|
||||
if account == 'bank' then
|
||||
return xPlayer.getAccount(account).money
|
||||
elseif account == 'money' then
|
||||
return xPlayer.getMoney()
|
||||
end
|
||||
end
|
||||
|
||||
function AddMoneyFunction(source, account, amount)
|
||||
local xPlayer = GETPFI(source)
|
||||
if account == 'bank' then
|
||||
xPlayer.addAccountMoney('bank', amount)
|
||||
elseif account == 'money' then
|
||||
xPlayer.addMoney(amount)
|
||||
end
|
||||
end
|
||||
|
||||
function RemoveAccountMoney(source, account, amount)
|
||||
local xPlayer = GETPFI(source)
|
||||
if account == 'bank' then
|
||||
xPlayer.removeAccountMoney('bank', amount)
|
||||
elseif account == 'money' then
|
||||
xPlayer.removeMoney(amount)
|
||||
end
|
||||
end
|
||||
|
||||
function GetItemCount(source, item)
|
||||
local xPlayer = GETPFI(source)
|
||||
|
||||
if xPlayer.getInventoryItem(item) ~= nil then
|
||||
if _esx_ == 'new' then
|
||||
return xPlayer.getInventoryItem(item).count
|
||||
else
|
||||
if string.sub(item, 0, 6):lower() == 'weapon' then
|
||||
local loadoutNum, weapon = xPlayer.getWeapon(item:upper())
|
||||
|
||||
if weapon then
|
||||
return true
|
||||
else
|
||||
return false
|
||||
end
|
||||
else
|
||||
return xPlayer.getInventoryItem(item).count
|
||||
end
|
||||
end
|
||||
else
|
||||
print("^1PROBLEM!^3 The ^7items ^3are not created. Create them from our documentation. https://docs.brutalscripts.com/site/scripts/police-job/installation-guide")
|
||||
end
|
||||
end
|
||||
|
||||
function RemoveItem(source, item, amount)
|
||||
local xPlayer = GETPFI(source)
|
||||
if _esx_ == 'new' then
|
||||
xPlayer.removeInventoryItem(item, amount)
|
||||
else
|
||||
if string.sub(item, 0, 6):lower() == 'weapon' then
|
||||
xPlayer.removeWeapon(item)
|
||||
else
|
||||
xPlayer.removeInventoryItem(item, amount)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function AddItem(source, item, count)
|
||||
local xPlayer = GETPFI(source)
|
||||
if _esx_ == 'new' then
|
||||
xPlayer.addInventoryItem(item, count)
|
||||
else
|
||||
if string.sub(item, 0, 6):lower() == 'weapon' then
|
||||
xPlayer.addWeapon(item, 90)
|
||||
else
|
||||
xPlayer.addInventoryItem(item, count)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function GetPlayerNameFunction(source)
|
||||
local name
|
||||
if Config.SteamName then
|
||||
name = GetPlayerName(source)
|
||||
else
|
||||
local xPlayer = GETPFI(source)
|
||||
name = xPlayer.getName() or 'No Data'
|
||||
end
|
||||
return name
|
||||
end
|
||||
|
||||
function GetPlayerSex(source)
|
||||
local xPlayer = GETPFI(source)
|
||||
return xPlayer.get("sex")
|
||||
end
|
||||
|
||||
function ClearInventory(source)
|
||||
local xPlayer = GETPFI(source)
|
||||
local src = source
|
||||
|
||||
if InventorySaves[src] == nil then
|
||||
InventorySaves[src] = {}
|
||||
end
|
||||
|
||||
for i=1, #xPlayer.inventory, 1 do
|
||||
if xPlayer.inventory[i] ~= nil and xPlayer.inventory[i].name ~= nil then
|
||||
|
||||
local amount = 0
|
||||
if xPlayer.inventory[i].count ~= nil then
|
||||
amount = xPlayer.inventory[i].count
|
||||
elseif xPlayer.inventory[i].amount ~= nil then
|
||||
amount = xPlayer.inventory[i].amount
|
||||
end
|
||||
|
||||
table.insert(InventorySaves[src], {item = xPlayer.inventory[i].name, amount = amount})
|
||||
xPlayer.setInventoryItem(xPlayer.inventory[i].name, 0)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
elseif Config['Core']:upper() == 'QBCORE' then
|
||||
|
||||
Core = exports['qb-core']:GetCoreObject()
|
||||
|
||||
RESCB = Core.Functions.CreateCallback
|
||||
GETPFI = Core.Functions.GetPlayer
|
||||
RUI = Core.Functions.CreateUseableItem
|
||||
UsersDataTable = 'players'
|
||||
UserIdentifierValue = 'citizenid'
|
||||
VehiclesDataTable = 'player_vehicles'
|
||||
|
||||
function GetIdentifier(source)
|
||||
local xPlayer = GETPFI(source)
|
||||
while xPlayer == nil do
|
||||
Citizen.Wait(1000)
|
||||
xPlayer = GETPFI(source)
|
||||
end
|
||||
return xPlayer.PlayerData.citizenid
|
||||
end
|
||||
|
||||
function GetPlayerByIdentifier(identifier)
|
||||
return Core.Functions.GetPlayerByCitizenId(identifier)
|
||||
end
|
||||
|
||||
function GetPlayersFunction()
|
||||
return Core.Functions.GetPlayers()
|
||||
end
|
||||
|
||||
function GetPlayerJobFunction(source)
|
||||
local xPlayer = GETPFI(source)
|
||||
PlayerJob = xPlayer.PlayerData.job.name
|
||||
return PlayerJob
|
||||
end
|
||||
|
||||
function GetAccountMoney(source, account)
|
||||
local xPlayer = GETPFI(source)
|
||||
if account == 'bank' then
|
||||
return xPlayer.PlayerData.money.bank
|
||||
elseif account == 'money' then
|
||||
return xPlayer.PlayerData.money.cash
|
||||
end
|
||||
end
|
||||
|
||||
function AddMoneyFunction(source, account, amount)
|
||||
local xPlayer = GETPFI(source)
|
||||
if account == 'bank' then
|
||||
xPlayer.Functions.AddMoney('bank', amount)
|
||||
elseif account == 'money' then
|
||||
xPlayer.Functions.AddMoney('cash', amount)
|
||||
end
|
||||
end
|
||||
|
||||
function GetItemCount(source, item)
|
||||
local xPlayer = GETPFI(source)
|
||||
local items = xPlayer.Functions.GetItemByName(item)
|
||||
local item_count = 0
|
||||
if items ~= nil then
|
||||
item_count = items.amount
|
||||
else
|
||||
item_count = 0
|
||||
end
|
||||
return item_count
|
||||
end
|
||||
|
||||
function RemoveAccountMoney(source, account, amount)
|
||||
local xPlayer = GETPFI(source)
|
||||
if account == 'bank' then
|
||||
xPlayer.Functions.RemoveMoney('bank', amount)
|
||||
elseif account == 'money' then
|
||||
xPlayer.Functions.RemoveMoney('cash', amount)
|
||||
end
|
||||
end
|
||||
|
||||
function RemoveItem(source, item, amount)
|
||||
local xPlayer = GETPFI(source)
|
||||
xPlayer.Functions.RemoveItem(item, amount)
|
||||
end
|
||||
|
||||
function AddItem(source, item, count, info)
|
||||
local xPlayer = GETPFI(source)
|
||||
info = info or nil
|
||||
|
||||
xPlayer.Functions.AddItem(item, count, nil, info)
|
||||
end
|
||||
|
||||
function GetPlayerNameFunction(source)
|
||||
local name
|
||||
if Config.SteamName then
|
||||
name = GetPlayerName(source)
|
||||
else
|
||||
local xPlayer = GETPFI(source)
|
||||
name = xPlayer.PlayerData.charinfo.firstname..' '..xPlayer.PlayerData.charinfo.lastname
|
||||
end
|
||||
return name
|
||||
end
|
||||
|
||||
function GetPlayerSex(source)
|
||||
local xPlayer = GETPFI(source)
|
||||
local sex = xPlayer.PlayerData.charinfo.gender
|
||||
|
||||
if sex == 0 then
|
||||
sex = 'm'
|
||||
else
|
||||
sex = 'f'
|
||||
end
|
||||
|
||||
return sex
|
||||
end
|
||||
|
||||
function SetHandCuffMetadata(source, isHandcuffed)
|
||||
local xPlayer = GETPFI(source)
|
||||
xPlayer.Functions.SetMetaData('ishandcuffed', isHandcuffed)
|
||||
end
|
||||
|
||||
function GetPlayerDeathMetaData(source)
|
||||
local xPlayer = GETPFI(source)
|
||||
return xPlayer.PlayerData.metadata['isdead']
|
||||
end
|
||||
|
||||
function ClearInventory(source)
|
||||
local xPlayer = GETPFI(source)
|
||||
local src = source
|
||||
|
||||
if InventorySaves[src] == nil then
|
||||
InventorySaves[src] = {}
|
||||
end
|
||||
|
||||
local playerItems = xPlayer.PlayerData.items
|
||||
for _, item in pairs(playerItems) do
|
||||
if item ~= nil and item.name ~= nil then
|
||||
|
||||
local amount = 0
|
||||
if item.amount ~= nil then
|
||||
amount = item.amount
|
||||
elseif item.count ~= nil then
|
||||
amount = item.count
|
||||
end
|
||||
|
||||
local info = nil
|
||||
if item.info ~= nil then
|
||||
info = item.info
|
||||
elseif item.metadata ~= nil then
|
||||
info = item.metadata
|
||||
end
|
||||
|
||||
table.insert(InventorySaves[src], {item = item.name, amount = amount, info = info})
|
||||
xPlayer.Functions.RemoveItem(item.name, amount)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
|
@ -1,77 +0,0 @@
|
|||
fx_version 'cerulean'
|
||||
games { 'gta5' }
|
||||
lua54 'yes'
|
||||
|
||||
author 'Keres & Dév'
|
||||
description 'Brutal Police Job - store.brutalscripts.com'
|
||||
version '1.5.6'
|
||||
|
||||
data_file 'DLC_ITYP_REQUEST' 'stream/clamp.ytyp'
|
||||
|
||||
client_scripts {
|
||||
'config.lua',
|
||||
'core/client-core.lua',
|
||||
'cl_utils.lua',
|
||||
'client/*.lua'
|
||||
}
|
||||
|
||||
server_scripts {
|
||||
'@mysql-async/lib/MySQL.lua',
|
||||
'config.lua',
|
||||
'core/server-core.lua',
|
||||
'sv_utils.lua',
|
||||
'server/*.lua'
|
||||
}
|
||||
|
||||
shared_script {
|
||||
'@ox_lib/init.lua'
|
||||
}
|
||||
|
||||
export 'getAvailableCopsCount'
|
||||
export 'IsHandcuffed'
|
||||
|
||||
ui_page "html/index.html"
|
||||
files {
|
||||
"html/index.html",
|
||||
"html/style.css",
|
||||
"html/script.js",
|
||||
"html/assets/*.png",
|
||||
}
|
||||
|
||||
provides { 'esx_policejob', 'qb-policejob' }
|
||||
|
||||
dependencies {
|
||||
'/server:5181', -- ⚠️PLEASE READ⚠️; Requires at least SERVER build 5181
|
||||
'/gameBuild:2189', -- ⚠️PLEASE READ⚠️; Requires at least GAME build 2189.
|
||||
}
|
||||
|
||||
escrow_ignore {
|
||||
'config.lua',
|
||||
'sv_utils.lua',
|
||||
'cl_utils.lua',
|
||||
'core/client-core.lua',
|
||||
'core/server-core.lua',
|
||||
}
|
||||
|
||||
--[[
|
||||
-- locked
|
||||
escrow_ignore {
|
||||
'config.lua',
|
||||
'sv_utils.lua',
|
||||
'cl_utils.lua',
|
||||
'core/client-core.lua',
|
||||
'core/server-core.lua',
|
||||
}
|
||||
|
||||
-- open
|
||||
escrow_ignore {
|
||||
'config.lua',
|
||||
'sv_utils.lua',
|
||||
'cl_utils.lua',
|
||||
'core/client-core.lua',
|
||||
'core/server-core.lua',
|
||||
'client/client.lua',
|
||||
'server/server.lua',
|
||||
}
|
||||
--]]
|
||||
dependency '/assetpacks'
|
Before Width: | Height: | Size: 298 KiB |
Before Width: | Height: | Size: 3.6 KiB |
Before Width: | Height: | Size: 6.1 KiB |
Before Width: | Height: | Size: 7.9 KiB |
Before Width: | Height: | Size: 1.2 KiB |
Before Width: | Height: | Size: 850 B |
Before Width: | Height: | Size: 880 B |
Before Width: | Height: | Size: 11 KiB |
Before Width: | Height: | Size: 5.5 KiB |
Before Width: | Height: | Size: 61 KiB |
Before Width: | Height: | Size: 32 KiB |
Before Width: | Height: | Size: 7.6 KiB |
Before Width: | Height: | Size: 4.3 KiB |
Before Width: | Height: | Size: 16 KiB |
Before Width: | Height: | Size: 110 KiB |
Before Width: | Height: | Size: 32 KiB |
Before Width: | Height: | Size: 5.5 KiB |
Before Width: | Height: | Size: 5.9 KiB |
Before Width: | Height: | Size: 7.9 KiB |
Before Width: | Height: | Size: 10 KiB |
Before Width: | Height: | Size: 50 KiB |
Before Width: | Height: | Size: 10 KiB |
Before Width: | Height: | Size: 7.2 KiB |
Before Width: | Height: | Size: 7 KiB |
Before Width: | Height: | Size: 12 KiB |
Before Width: | Height: | Size: 3.4 KiB |
Before Width: | Height: | Size: 7.2 KiB |
|
@ -1,456 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<link rel="stylesheet" href="style.css">
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.2.0/css/all.css"></link>
|
||||
<script src="https://code.jquery.com/jquery-3.6.0.min.js" integrity="sha256-/xUj+3OJU5yExlq6GSYGSHk7tPXikynS7ogEvDej/m4=" crossorigin="anonymous"></script>
|
||||
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.min.js" integrity="sha256-VazP97ZCwtekAsvgPBSUwPFKdrwD3unUfSGVYrahUqU=" crossorigin="anonymous"></script>
|
||||
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha3/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-KK94CHFLLe+nY2dmCWGMq91rCGa5gtU4mk92HdvYe+M/SXH301p5ILy+dN9+nJOZ" crossorigin="anonymous">
|
||||
<script src="https://cdn.jsdelivr.net/npm/quill@2.0.0-rc.2/dist/quill.js"></script>
|
||||
<link href="https://cdn.jsdelivr.net/npm/quill@2.0.0-rc.2/dist/quill.snow.css" rel="stylesheet">
|
||||
<title>Brutal Police Job</title>
|
||||
</head>
|
||||
|
||||
<body style="background: none;">
|
||||
|
||||
<div class="police_menu" id="police_menu">
|
||||
<div class="circle_container">
|
||||
</div>
|
||||
<div class="circles_label"></div>
|
||||
</div>
|
||||
|
||||
<div class="interactions" id="interactions">
|
||||
<div class="label mx-auto d-block mt-3">
|
||||
<h2>Interactions</h2>
|
||||
<div class="background_effect"></div>
|
||||
</div>
|
||||
<div class="int_con mt-3">
|
||||
<div class="row row-cols-1">
|
||||
<div class="int_con_sec">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="shop">
|
||||
<button class="details_btn px-3 m-3 float-end" id="shop_back" onclick="CloseShop(), CreateArmoryMenu()">back <i class="fa-solid fa-chevron-right"></i></button>
|
||||
<h2 class="mt-3">SHOP</h2>
|
||||
<div class="shop_elements_container row row-cols-3">
|
||||
</div>
|
||||
<div class="checkout_container">
|
||||
<hr>
|
||||
<h3>TOTAL: 0<money>$</money></h3>
|
||||
<button class="buy_btn" onclick="BuyInShop()">BUY</button>
|
||||
</div>
|
||||
<div class="slider_btn" id="shop_slider" onclick="ChangeSliderbtn(id)">
|
||||
<div class="slider" id="slider_shop"></div>
|
||||
<div class="row button_container">
|
||||
<div class="col"><i class="fa-solid fa-wallet"></i></div>
|
||||
<div class="col"><i class="fa-solid fa-building-columns"></i></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="MDT" id="MDT">
|
||||
<img class="LSDP_logo_img" src="assets/LSPD.png"></img>
|
||||
<div class="control_btn_container">
|
||||
<div class="row row-cols-1">
|
||||
<div class="col">
|
||||
<button class="control_btn mt-2 mx-auto d-block" id="home" onclick="SwitchPage(id)">
|
||||
<i class="fa-solid fa-house"></i>
|
||||
<div class="background_effect"></div>
|
||||
</button>
|
||||
<hr class="mt-3 mb-0">
|
||||
</div>
|
||||
<div class="col">
|
||||
<button class="control_btn mt-3 mx-auto d-block" id="search" onclick="SwitchPage(id)">
|
||||
<i class="fa-solid fa-magnifying-glass"></i>
|
||||
<div class="background_effect"></div>
|
||||
</button>
|
||||
</div>
|
||||
<div class="col">
|
||||
<button class="control_btn mt-3 mx-auto d-block" id="camera" onclick="SwitchPage(id)">
|
||||
<i class="fa-solid fa-video"></i>
|
||||
<div class="background_effect"></div>
|
||||
</button>
|
||||
</div>
|
||||
<div class="col">
|
||||
<button class="control_btn mt-3 mx-auto d-block" id="sos_alert" onclick="SwitchPage(id)">
|
||||
<i class="fa-solid fa-bell"></i>
|
||||
<div class="background_effect"></div>
|
||||
</button>
|
||||
</div>
|
||||
<div class="col">
|
||||
<button class="control_btn mt-3 mx-auto d-block" id="incidents" onclick="SwitchPage(id)">
|
||||
<i class="fa-solid fa-newspaper"></i>
|
||||
<div class="background_effect"></div>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div style="margin-left: 100px; padding: 10px;">
|
||||
<div class="page_data_container">
|
||||
<div class="home_label mt-3">
|
||||
<div class="row">
|
||||
<div class="col ms-3 mt-1" id="job_name"></div>
|
||||
<div class="col-2 mt-1" id="home_date">date 213 23</div>
|
||||
<div class="col me-3 mt-1 text-end" id="street"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row mt-3 mx-2">
|
||||
<div class="col">
|
||||
<div class="home_stat_con mx-auto d-block">
|
||||
<div class="label">Cops</div>
|
||||
<div class="main" id="available_cops">0</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col">
|
||||
<div class="home_stat_con mx-auto d-block">
|
||||
<div class="label">Rank</div>
|
||||
<div class="main small" id="player_rang"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col">
|
||||
<div class="home_stat_con mx-auto d-block">
|
||||
<div class="label">Salary</div>
|
||||
<div class="main" id="salary">100$</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="welcome_text mt-3">Welcome,<br> <span class="hand_written">Name</span></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="cam_menu">
|
||||
<div class="cam_online px-3"><i class="fa-solid fa-circle fa-fade my-2"></i> online</div>
|
||||
<div class="cam_label px-3">Cam name</div>
|
||||
</div>
|
||||
|
||||
<div class="vehicle_menu">
|
||||
<div class="vehicle_control" id="vehicle_control">
|
||||
<div class="row mx-1">
|
||||
<div class="col p-0">
|
||||
<div class="vehicle_btn mx-auto d-block" id="plate">
|
||||
<i class="fa-solid fa-mattress-pillow"></i>
|
||||
<h4>PLT</h4>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col p-0">
|
||||
<div class="vehicle_btn mx-auto d-block" id="siren">
|
||||
<i class="fa-solid fa-volume-high"></i>
|
||||
<h4>SRN</h4>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col p-0">
|
||||
<div class="vehicle_btn mx-auto d-block" id="horn">
|
||||
<i class="fa-solid fa-bullhorn"></i>
|
||||
<h4>HORN</h4>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col p-0">
|
||||
<div class="vehicle_btn mx-auto d-block" id="light">
|
||||
<i class="fa-solid fa-lightbulb"></i>
|
||||
<h4>LGHT</h4>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="plate_reader" id="plate_reader">
|
||||
<div class="indicator" id="top"></div>
|
||||
<div class="indicator" id="bottom"></div>
|
||||
<h4>FRONT</h4>
|
||||
<div class="row mx-1 mb-2">
|
||||
<div class="col">
|
||||
<div class="veh_speed mx-auto d-block" id="front_speed">0</div>
|
||||
</div>
|
||||
<div class="col">
|
||||
<div class="veh_plate mx-auto d-block" id="front_plate">None</div>
|
||||
</div>
|
||||
</div>
|
||||
<h4>REAR</h4>
|
||||
<div class="row mx-1">
|
||||
<div class="col">
|
||||
<div class="veh_speed mx-auto d-block" id="rear_speed">0</div>
|
||||
</div>
|
||||
<div class="col">
|
||||
<div class="veh_plate mx-auto d-block" id="rear_plate">None</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="speeding_notify" id="speeding_notify">
|
||||
<div class="title">SPEEDING</div>
|
||||
<div class="main_text"><span class="your_speed"></span><span class="speed_limit"></span></div>
|
||||
<div class="fine"></div>
|
||||
</div>
|
||||
|
||||
<div class="jail_hud">
|
||||
<h3>Remained time: <span class="minutes"></span></h3>
|
||||
</div>
|
||||
|
||||
<div class="basic_container" id="create_citizen_call">
|
||||
<div class="label">Citizen Call
|
||||
<div class="background_effect"></div>
|
||||
</div>
|
||||
<div class="input-group mt-3 px-3 h-50">
|
||||
<textarea class="form-control" id="in_citizen_call_reason" placeholder="Type your problem..." oninput="RefreshCreateCallBTN()"></textarea>
|
||||
</div>
|
||||
<button class="submenu_btn px-3 mt-3 mx-auto d-block" id="create_call_btn" disabled onclick="CreateCall()">Create</button>
|
||||
</div>
|
||||
|
||||
<div class="basic_container" id="area_lock">
|
||||
<div class="label">Lock Area
|
||||
<div class="background_effect"></div>
|
||||
</div>
|
||||
<div class="input-group input-group-lg mt-3 px-3">
|
||||
<input type="text" id="area_lock_label" class="form-control text-center" placeholder="Label..." oninput="RefreshCreateLockBTN()" style="background-color: rgb(61, 61, 61);">
|
||||
</div>
|
||||
|
||||
<div class="item_con mt-3 mx-auto d-block">
|
||||
<h4>Minutes</h4>
|
||||
<input type="range" class="range mx-auto d-block" value="1" min="1" max="30" id="min_area_lock" oninput="SyncDataMin(id)">
|
||||
<h6 class="range_number" id="range_min_number">1min</h6>
|
||||
</div>
|
||||
|
||||
<div class="item_con mt-3 mx-auto d-block">
|
||||
<h4>Range</h4>
|
||||
<input type="range" class="range mx-auto d-block" value="20" min="20" max="150" id="range_area_lock" oninput="SyncDataRange(id)">
|
||||
<h6 class="range_number" id="range_number">20m</h6>
|
||||
</div>
|
||||
|
||||
<div class="item_con mt-3 mx-auto d-block">
|
||||
<h4>Blip</h4>
|
||||
<div class="row">
|
||||
<div class="col"><button class="blip_btn active_btn mx-auto d-block" id="456" onclick="ChangeBlipBTN(id)"><img src="assets/blip_1.png"></button></div>
|
||||
<div class="col"><button class="blip_btn mx-auto d-block" id="163" onclick="ChangeBlipBTN(id)"><img src="assets/blip_2.png"></button></div>
|
||||
<div class="col"><button class="blip_btn mx-auto d-block" id="364" onclick="ChangeBlipBTN(id)"><img src="assets/blip_3.png"></button></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<button class="submenu_btn px-3 mt-3 mx-auto d-block" id="create_lock_btn" disabled onclick="CreateLock()">Create</button>
|
||||
</div>
|
||||
|
||||
<div class="vehicle_livery" id="vehicle_livery">
|
||||
<div class="val_con mx-auto d-block px-3" id="livery"></div>
|
||||
<h5>You can change the livery with the ⬅️ and ➡️</h5>
|
||||
</div>
|
||||
|
||||
<div class="delete_object px-3 py-2" id="delete_object">
|
||||
<h5>Deleting objects</h5>
|
||||
<div class="background_effect"></div>
|
||||
</div>
|
||||
|
||||
<div class="modal fade" id="details_modal">
|
||||
<div class="modal-dialog modal-dialog-centered modal-lg">
|
||||
<div class="modal-content pb-2" style="background: var(--secondary_color); border-radius: 13px; color: var(--text_color);">
|
||||
<div class="modal-body">
|
||||
<div class="row">
|
||||
<div class="col"><button class="details_btn float-start px-3" data-bs-dismiss="modal"><i class="fa-solid fa-chevron-left"></i> Back</button></div>
|
||||
<div class="col"><h2 class="modal-title me-3 text-end" id="title_text">Person details</h2></div>
|
||||
</div>
|
||||
<div class="datas_container">
|
||||
|
||||
</div>
|
||||
<div class="mt-2">
|
||||
<div class="notes_label">
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<h3 class="mt-1"><b>Notes</b></h3>
|
||||
</div>
|
||||
<div class="col">
|
||||
<button class="details_btn px-3 me-2 float-end" id="none" data-bs-dismiss="modal" data-bs-toggle="modal" data-bs-target="#note_modal">New note</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="notes_container mt-3">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="modal fade" id="jail_reason_modal" data-bs-backdrop="static" data-bs-keyboard="false" tabindex="-1" aria-labelledby="staticBackdropLabel" aria-hidden="true">
|
||||
<div class="modal-dialog modal-dialog-centered modal-md" style="width: 400px;">
|
||||
<div class="modal-content pb-2" style="background: var(--secondary_color); border-radius: 13px; color: var(--text_color);">
|
||||
<div class="modal-body">
|
||||
<div class="modal_header">
|
||||
<button class="details_btn m-1 float-start px-3" id="jail_back_btn" data-bs-dismiss="modal" data-bs-toggle="modal" data-bs-target="#details_modal"><i class="fa-solid fa-chevron-left"></i> Back</button>
|
||||
<h2 class="modal-title float-end me-3 text-center" id="title_text">Jail</h2>
|
||||
<div class="background_effect"></div>
|
||||
</div>
|
||||
|
||||
<div class="input-group input-group-lg mt-3">
|
||||
<input type="text" id="in_jail_time" class="form-control mx-3" placeholder="Time..." oninput="RefreshJailBTN()" onkeypress="return isNumber(event)" style="background-color: rgb(72, 72, 72);">
|
||||
</div>
|
||||
|
||||
<div class="input-group mt-3">
|
||||
<textarea class="form-control mx-3" id="in_jail_reason" placeholder="Reason..." oninput="RefreshJailBTN()"></textarea>
|
||||
</div>
|
||||
<button class="submenu_btn px-3 mt-3 mx-auto d-block" id="jail_btn" disabled data-bs-dismiss="modal" onclick="SendJail()">Jail</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="modal fade" id="fine_modal">
|
||||
<div class="modal-dialog modal-dialog-centered modal-md" style="width: 400px;">
|
||||
<div class="modal-content pb-2" style="background: var(--secondary_color); border-radius: 13px; color: var(--text_color);">
|
||||
<div class="modal-body">
|
||||
<div class="modal_header mx-auto d-block">
|
||||
<button class="details_btn m-1 float-start px-3" data-bs-dismiss="modal" data-bs-toggle="modal" data-bs-target="#details_modal"><i class="fa-solid fa-chevron-left"></i> Back</button>
|
||||
<h2 class="modal-title float-end me-3 text-center" id="title_text">Create fine</h2>
|
||||
<div class="background_effect"></div>
|
||||
</div>
|
||||
|
||||
<div class="input-group input-group-lg mt-3">
|
||||
<input type="text" id="in_fine_name" placeholder="Label..." class="form-control mx-3" oninput="RefreshFineBTN()" style="background-color: rgb(72, 72, 72);">
|
||||
</div>
|
||||
|
||||
<div class="input-group input-group-lg mt-3">
|
||||
<input type="text" id="in_fine_amount" placeholder="Amount..." class="form-control mx-3" oninput="RefreshFineBTN()" onkeypress="return isNumber(event)" style="background-color: rgb(72, 72, 72);">
|
||||
</div>
|
||||
|
||||
<button class="submenu_btn px-3 mt-3 mx-auto d-block" id="fine_btn" disabled data-bs-dismiss="modal" onclick="SendFine()">Create</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="modal fade" id="player_fines_modal">
|
||||
<div class="modal-dialog modal-dialog-centered modal-md">
|
||||
<div class="modal-content pb-2" style="background: var(--secondary_color); border-radius: 13px; color: var(--text_color);">
|
||||
<div class="modal-body">
|
||||
<div class="modal_header mx-auto d-block">
|
||||
<button class="details_btn m-1 float-start px-3" data-bs-dismiss="modal" data-bs-toggle="modal" data-bs-target="#details_modal"><i class="fa-solid fa-chevron-left"></i> Back</button>
|
||||
<h2 class="modal-title float-end me-3 text-center" id="title_text">Fines</h2>
|
||||
<div class="background_effect"></div>
|
||||
</div>
|
||||
|
||||
<div class="fine_title_container mt-3">
|
||||
<div class="row">
|
||||
<div class="col d-flex align-items-center justify-content-center">
|
||||
<h2 class="my-1" id="fines_all">All: -</h2>
|
||||
</div>
|
||||
<div class="col d-flex align-items-center justify-content-center">
|
||||
<h2 class="my-1" id="fines_count">Count: -</h2>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="fines_container">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="modal fade" id="player_incidents_modal">
|
||||
<div class="modal-dialog modal-dialog-centered modal-md">
|
||||
<div class="modal-content pb-2" style="background: var(--secondary_color); border-radius: 13px; color: var(--text_color);">
|
||||
<div class="modal-body">
|
||||
<div class="modal_header mx-auto d-block">
|
||||
<button class="details_btn m-1 float-start px-3" data-bs-dismiss="modal" data-bs-toggle="modal" data-bs-target="#details_modal"><i class="fa-solid fa-chevron-left"></i> Back</button>
|
||||
<h2 class="modal-title float-end me-3 text-center" id="title_text">Incidents</h2>
|
||||
<div class="background_effect"></div>
|
||||
</div>
|
||||
|
||||
<div class="incidents_container mt-3">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="modal fade" id="call_modal">
|
||||
<div class="modal-dialog modal-dialog-centered modal-md">
|
||||
<div class="modal-content pb-2" style="background: var(--secondary_color); border-radius: 13px; color: var(--text_color);">
|
||||
<div class="modal-body">
|
||||
<div class="modal_header mx-auto d-block">
|
||||
<div class="background_effect"></div>
|
||||
<div class="row">
|
||||
<div class="col"><button class="details_btn m-1 float-start px-3" data-bs-dismiss="modal"><i class="fa-solid fa-chevron-left"></i> Back</button></div>
|
||||
<div class="col-5"><h2 class="modal-title mx-auto d-block text-center" id="title_text">Citizen call</h2></div>
|
||||
<div class="col"><button class="details_btn px-3 m-1 float-end" onclick="SendPinOnMap()"><i class="fa-solid fa-location-dot"></i> Pin</button></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="call_actions_container">
|
||||
<div class="item_con mt-3 mx-auto d-block">
|
||||
<button class="submenu_btn px-3 my-3 mx-auto d-block" onclick="SendPinOnMap()">Pin on map</button>
|
||||
</div>
|
||||
|
||||
<div class="input-group mt-3 call_reason_con">
|
||||
<textarea class="form-control" id="in_call_reason" oninput="RefreshCloseCallBTN()" placeholder="Reason to close"></textarea>
|
||||
</div>
|
||||
<button class="submenu_btn px-3 my-3 mx-auto d-block" id="close_call" onclick="CloseCall()" disabled>Close</button>
|
||||
</div>
|
||||
|
||||
<h3 class="text-white text-center mt-3" id="involved">Policemans involved</h3>
|
||||
<div class="involved_container mx-auto d-block">
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="modal fade" id="note_modal">
|
||||
<div class="modal-dialog modal-dialog-centered modal-md" style="width: 400px;">
|
||||
<div class="modal-content pb-2" style="background: var(--secondary_color); border-radius: 13px; color: var(--text_color);">
|
||||
<div class="modal-body">
|
||||
<div class="modal_header mx-auto d-block">
|
||||
<button class="details_btn m-1 float-start px-3" data-bs-dismiss="modal" data-bs-toggle="modal" data-bs-target="#details_modal"><i class="fa-solid fa-chevron-left"></i> Back</button>
|
||||
<h2 class="modal-title float-end me-3 text-center" id="title_text">Create note</h2>
|
||||
<div class="background_effect"></div>
|
||||
</div>
|
||||
|
||||
<div class="input-group mt-3">
|
||||
<textarea class="form-control mx-3" id="in_note" placeholder="Write something..." oninput="RefreshNoteBTN()"></textarea>
|
||||
</div>
|
||||
|
||||
<button class="submenu_btn px-3 mt-3 mx-auto d-block" id="note_btn" disabled data-bs-dismiss="modal" data-bs-toggle="modal" data-bs-target="#details_modal" onclick="CreateNote()">Create</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="modal fade" id="add_img_modal">
|
||||
<div class="modal-dialog modal-dialog-centered modal-md" style="width: 400px;">
|
||||
<div class="modal-content pb-2" style="background: var(--secondary_color); border-radius: 13px; color: var(--text_color);">
|
||||
<div class="modal-body">
|
||||
<div class="modal_header mx-auto d-block">
|
||||
<button class="details_btn m-1 float-start px-3" data-bs-dismiss="modal" data-bs-toggle="modal" data-bs-target="#details_modal"><i class="fa-solid fa-chevron-left"></i> Back</button>
|
||||
<h2 class="modal-title float-end me-3 text-center" id="title_text">Edit IMG</h2>
|
||||
<div class="background_effect"></div>
|
||||
</div>
|
||||
|
||||
<div class="input-group mt-3">
|
||||
<textarea class="form-control" placeholder="Add the URL.." id="in_add_img"></textarea>
|
||||
</div>
|
||||
|
||||
<button class="submenu_btn px-3 mt-3 mx-auto d-block" id="note_btn" data-bs-dismiss="modal" data-bs-toggle="modal" data-bs-target="#details_modal" onclick="AddIMG()">Add</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</body>
|
||||
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js" integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM" crossorigin="anonymous"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-3-typeahead/4.0.2/bootstrap3-typeahead.min.js">
|
||||
</script>
|
||||
<script src="script.js"></script>
|
||||
</html>
|
|
@ -1,61 +0,0 @@
|
|||
local YourWebhook = 'WEBHOOK-HERE' -- help: https://docs.brutalscripts.com/site/others/discord-webhook
|
||||
|
||||
function GetWebhook()
|
||||
return YourWebhook
|
||||
end
|
||||
|
||||
-- Buy here: (4€+VAT) https://store.brutalscripts.com
|
||||
function notification(source, title, text, time, type)
|
||||
if Config.BrutalNotify then
|
||||
TriggerClientEvent('brutal_notify:SendAlert', source, title, text, time, type)
|
||||
else
|
||||
TriggerClientEvent('brutal_policejob:client:DefaultNotify', text)
|
||||
end
|
||||
end
|
||||
|
||||
function ClearPlayerInventory(source)
|
||||
if Config.Inventory:lower() == 'ox_inventory' then
|
||||
exports.ox_inventory:ClearInventory(source)
|
||||
elseif Config.Inventory:lower() == 'quasar_inventory' then
|
||||
local saveItems = {
|
||||
'id_card', -- Add here the items that you do NOT want to be deleted
|
||||
'phone',
|
||||
}
|
||||
exports['qs-inventory']:ClearInventory(source, saveItems)
|
||||
local weapons = exports['qs-inventory']:GetWeaponList()
|
||||
for k,v in pairs(weapons) do
|
||||
RemoveItem(source, v.name, 1)
|
||||
end
|
||||
elseif Config.Inventory:lower() == 'chezza_inventory' then
|
||||
local ESX = Core
|
||||
local xPlayer = ESX.GetPlayerFromId(source)
|
||||
exports.inventory:clearInventory(xPlayer, true)
|
||||
elseif Config.Inventory:lower() == 'codem_inventory' then
|
||||
exports['codem-inventory']:ClearInventory(source)
|
||||
elseif Config.Inventory:lower() == 'qb_inventory' then
|
||||
exports['qb-inventory']:ClearInventory(source)
|
||||
elseif Config.Inventory:lower() == 'origen_inventory' then
|
||||
exports.origen_inventory:ClearInventory(source)
|
||||
elseif Config.Inventory:lower() == 'ps-inventory' then
|
||||
exports['ps-inventory']:ClearInventory(source)
|
||||
elseif Config['Core']:upper() == 'ESX' then
|
||||
local ESX = Core
|
||||
local xPlayer = ESX.GetPlayerFromId(source)
|
||||
for i=1, #xPlayer.inventory, 1 do
|
||||
if xPlayer.inventory[i].count > 0 then
|
||||
xPlayer.setInventoryItem(xPlayer.inventory[i].name, 0)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function SocietyAddMoney(job, price)
|
||||
if Config['Core']:upper() == 'ESX' then
|
||||
local society = exports['esx_society']:GetSociety(job)
|
||||
TriggerEvent('esx_addonaccount:getSharedAccount', society.account, function(account)
|
||||
account.addMoney(price)
|
||||
end)
|
||||
else
|
||||
exports['qb-management']:AddMoney(job, price)
|
||||
end
|
||||
end
|
|
@ -15,7 +15,7 @@
|
|||
<animConvRoofName>null</animConvRoofName>
|
||||
<animConvRoofWindowsAffected />
|
||||
<ptfxAssetName>null</ptfxAssetName>
|
||||
<audioNameHash>POLICE</audioNameHash>
|
||||
<audioNameHash>rebla</audioNameHash>
|
||||
<layout>LAYOUT_STD_EXITFIXUP</layout>
|
||||
<coverBoundOffsets>POLICE3_COVER_OFFSET_INFO</coverBoundOffsets>
|
||||
<explosionInfo>EXPLOSION_INFO_DEFAULT</explosionInfo>
|
||||
|
|
|
@ -1224,12 +1224,6 @@ CodeStudio.Products = {
|
|||
itemPrice = 0,
|
||||
itemInfo = "Submachine gun for rapid fire",
|
||||
},
|
||||
['weapon_sniperrifle'] = {
|
||||
itemName = "Sniper Rifle",
|
||||
itemStock = 50,
|
||||
itemPrice = 0,
|
||||
itemInfo = "Sniper for Long Range",
|
||||
},
|
||||
['weapon_appistol'] = {
|
||||
itemName = "Klog 19 A",
|
||||
itemStock = 50,
|
||||
|
|
Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 157 KiB |
|
@ -409,7 +409,7 @@
|
|||
"disallowJobs": []
|
||||
},
|
||||
{
|
||||
"name": "Kleinanzeigen",
|
||||
"name": "StreetList",
|
||||
"icon": "/public/img/Apps/advertising.png",
|
||||
"default": true,
|
||||
"category": "apps",
|
||||
|
@ -626,7 +626,7 @@
|
|||
"redirect": "darkchat"
|
||||
},
|
||||
{
|
||||
"name": "Kleinanzeigen",
|
||||
"name": "StreetList",
|
||||
"icon": "/public/img/Apps/advertising.png",
|
||||
"description": "Erstellen Sie Werbung",
|
||||
"stars": 4.7,
|
||||
|
|