diff --git a/resources/SmartHose/config.lua b/resources/SmartHose/config.lua index 7d6906f52..067118746 100644 --- a/resources/SmartHose/config.lua +++ b/resources/SmartHose/config.lua @@ -546,6 +546,15 @@ ConfigHose = { }, maxRopes = 1, }, + [`lafdengine`] = { + useBone = false, + bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" + offsets = { + { x = -1.14, y = 0.92, z = -0.1 }, + { x = 1.11, y = 0.93, z = -0.09 }, + }, + maxRopes = 1, + }, [`lafdcab`] = { useBone = false, bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" diff --git a/resources/Supply-Line/config.lua b/resources/Supply-Line/config.lua index 73bee30ff..5d41485f2 100644 --- a/resources/Supply-Line/config.lua +++ b/resources/Supply-Line/config.lua @@ -6,35 +6,372 @@ Config = { -- if useBone = true, "offsets" field will be ignored; otherwise custom offsets are enabled. VehicleSettings = { - [`britishladder`] = { + [`16ramcsquad`] = { useBone = false, bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" offsets = { { x = 0.8710, y = 0.1550, z = 0.0140 }, }, }, - [`britishladderels`] = { + [`20Maxfdramsquad`] = { useBone = false, bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" offsets = { { x = 0.8710, y = 0.1550, z = 0.0140 }, }, }, - [`rearmount`] = { + [`20ramcsquad`] = { useBone = false, bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" offsets = { { x = -1.07, y = 0.9, z = -0.1 }, }, }, - [`rearmountels`] = { + [`23sierrafire`] = { + useBone = false, + bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" + offsets = { + { x = 0.8710, y = 0.1550, z = 0.0140 }, + }, + }, + [`24rampumper`] = { + useBone = false, + bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" + offsets = { + { x = 0.8710, y = 0.1550, z = 0.0140 }, + }, + }, + [`heavypump`] = { useBone = false, bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" offsets = { { x = -1.07, y = 0.9, z = -0.1 }, }, }, - [`ldfoam`] = { + [`heavyrescue`] = { + useBone = false, + bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" + offsets = { + { x = 0.8710, y = 0.1550, z = 0.0140 }, + }, + }, + [`heavytank`] = { + useBone = false, + bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" + offsets = { + { x = 0.8710, y = 0.1550, z = 0.0140 }, + }, + }, + [`heavywild`] = { + useBone = false, + bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" + offsets = { + { x = -1.07, y = 0.9, z = -0.1 }, + }, + }, + [`2025MAXcat`] = { + useBone = false, + bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" + offsets = { + { x = 0.8710, y = 0.1550, z = 0.0140 }, + }, + }, + [`f550csquad`] = { + useBone = false, + bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" + offsets = { + { x = 0.8710, y = 0.1550, z = 0.0140 }, + }, + }, + [`f550super6`] = { + useBone = false, + bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" + offsets = { + { x = -1.07, y = 0.9, z = -0.1 }, + }, + }, + [`ftanker`] = { + useBone = false, + bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" + offsets = { + { x = 0.8710, y = 0.1550, z = 0.0140 }, + }, + }, + [`lacofddztrk`] = { + useBone = false, + bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" + offsets = { + { x = 0.8710, y = 0.1550, z = 0.0140 }, + }, + }, + [`lacofdeng`] = { + useBone = false, + bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" + offsets = { + { x = -1.07, y = 0.9, z = -0.1 }, + }, + }, + [`lacofdfoam`] = { + useBone = false, + bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" + offsets = { + { x = 0.8710, y = 0.1550, z = 0.0140 }, + }, + }, + [`lacofdpat`] = { + useBone = false, + bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" + offsets = { + { x = 0.8710, y = 0.1550, z = 0.0140 }, + }, + }, + [`lacofdrs`] = { + useBone = false, + bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" + offsets = { + { x = -1.07, y = 0.9, z = -0.1 }, + }, + }, + [`lacofdsup`] = { + useBone = false, + bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" + offsets = { + { x = 0.8710, y = 0.1550, z = 0.0140 }, + }, + }, + [`lacofdt3`] = { + useBone = false, + bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" + offsets = { + { x = 0.8710, y = 0.1550, z = 0.0140 }, + }, + }, + [`lacofdusartrk`] = { + useBone = false, + bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" + offsets = { + { x = -1.07, y = 0.9, z = -0.1 }, + }, + }, + [`lacofdusartrlr`] = { + useBone = false, + bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" + offsets = { + { x = 0.8710, y = 0.1550, z = 0.0140 }, + }, + }, + [`lacofdutil`] = { + useBone = false, + bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" + offsets = { + { x = 0.8710, y = 0.1550, z = 0.0140 }, + }, + }, + [`lafdcab`] = { + useBone = false, + bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" + offsets = { + { x = -1.07, y = 0.9, z = -0.1 }, + }, + }, + [`lafdtiller`] = { + useBone = false, + bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" + offsets = { + { x = 0.8710, y = 0.1550, z = 0.0140 }, + }, + }, + [`lafdengine`] = { + useBone = false, + bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" + offsets = { + { x = 0.8710, y = 0.1550, z = 0.0140 }, + }, + }, + [`max12gladLASD`] = { + useBone = false, + bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" + offsets = { + { x = -1.07, y = 0.9, z = -0.1 }, + }, + }, + [` `] = { + useBone = false, + bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" + offsets = { + { x = 0.8710, y = 0.1550, z = 0.0140 }, + }, + }, + [`mmech`] = { + useBone = false, + bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" + offsets = { + { x = 0.8710, y = 0.1550, z = 0.0140 }, + }, + }, + [`redf350brush21`] = { + useBone = false, + bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" + offsets = { + { x = -1.07, y = 0.9, z = -0.1 }, + }, + }, + [`Staff-EGRPf350su`] = { + useBone = false, + bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" + offsets = { + { x = 0.8710, y = 0.1550, z = 0.0140 }, + }, + }, + [`velocity`] = { + useBone = false, + bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" + offsets = { + { x = 0.8710, y = 0.1550, z = 0.0140 }, + }, + }, + [`x3bearcat`] = { + useBone = false, + bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" + offsets = { + { x = -1.07, y = 0.9, z = -0.1 }, + }, + }, + [`23smallboatfd`] = { + useBone = false, + bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" + offsets = { + { x = 0.8710, y = 0.1550, z = 0.0140 }, + }, + }, + [` `] = { + useBone = false, + bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" + offsets = { + { x = 0.8710, y = 0.1550, z = 0.0140 }, + }, + }, + [`brush`] = { + useBone = false, + bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" + offsets = { + { x = -1.07, y = 0.9, z = -0.1 }, + }, + }, + [`brushram`] = { + useBone = false, + bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" + offsets = { + { x = 0.8710, y = 0.1550, z = 0.0140 }, + }, + }, + [`bulldog`] = { + useBone = false, + bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" + offsets = { + { x = 0.8710, y = 0.1550, z = 0.0140 }, + }, + }, + [`enforcer`] = { + useBone = false, + bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" + offsets = { + { x = -1.07, y = 0.9, z = -0.1 }, + }, + }, + + [`EnforcerEng`] = { + useBone = false, + bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" + offsets = { + { x = 0.8710, y = 0.1550, z = 0.0140 }, + }, + }, + [`enforcerf`] = { + useBone = false, + bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" + offsets = { + { x = 0.8710, y = 0.1550, z = 0.0140 }, + }, + }, + [`enforcerta`] = { + useBone = false, + bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" + offsets = { + { x = -1.07, y = 0.9, z = -0.1 }, + }, + }, + [`engine`] = { + useBone = false, + bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" + offsets = { + { x = 0.8710, y = 0.1550, z = 0.0140 }, + }, + }, + [`enladder`] = { + useBone = false, + bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" + offsets = { + { x = 0.8710, y = 0.1550, z = 0.0140 }, + }, + }, + [`fdgator`] = { + useBone = false, + bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" + offsets = { + { x = -1.07, y = 0.9, z = -0.1 }, + }, + }, + [`firef350`] = { + useBone = false, + bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" + offsets = { + { x = 0.8710, y = 0.1550, z = 0.0140 }, + }, + }, + [`firetruk13`] = { + useBone = false, + bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" + offsets = { + { x = 0.8710, y = 0.1550, z = 0.0140 }, + }, + }, + [`foam1`] = { + useBone = false, + bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" + offsets = { + { x = -1.07, y = 0.9, z = -0.1 }, + }, + }, + [`hazf350tec`] = { + useBone = false, + bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" + offsets = { + { x = 0.8710, y = 0.1550, z = 0.0140 }, + }, + }, + [`ladder6a`] = { + useBone = false, + bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" + offsets = { + { x = 0.8710, y = 0.1550, z = 0.0140 }, + }, + }, + [`rescue6`] = { + useBone = false, + bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" + offsets = { + { x = -1.07, y = 0.9, z = -0.1 }, + }, + }, + [`rescue6a`] = { + useBone = false, + bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" + offsets = { + { x = -1.07, y = 0.9, z = -0.1 }, + }, + }, + [`rescue9e`] = { useBone = false, bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" offsets = { @@ -42,7 +379,95 @@ Config = { { x = -0.93, y = 0.1, z = -0.52 }, }, }, - [`ldfoamels`] = { + [`tender6`] = { + useBone = false, + bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" + offsets = { + { x = 1.03, y = 0.1, z = -0.02 }, + { x = -0.93, y = 0.1, z = -0.52 }, + }, + }, + [`tender9b`] = { + useBone = false, + bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" + offsets = { + { x = 1.03, y = 0.1, z = -0.02 }, + { x = -0.93, y = 0.1, z = -0.52 }, + }, + }, + [`tower6`] = { + useBone = false, + bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" + offsets = { + { x = 1.03, y = 0.1, z = -0.02 }, + { x = -0.93, y = 0.1, z = -0.52 }, + }, + }, + [`mmladder`] = { + useBone = false, + bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" + offsets = { + { x = 1.03, y = 0.1, z = -0.02 }, + { x = -0.93, y = 0.1, z = -0.52 }, + }, + }, + [`prescue`] = { + useBone = false, + bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" + offsets = { + { x = 1.03, y = 0.1, z = -0.02 }, + { x = -0.93, y = 0.1, z = -0.52 }, + }, + }, + [`ram20pov`] = { + useBone = false, + bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" + offsets = { + { x = 1.03, y = 0.1, z = -0.02 }, + { x = -0.93, y = 0.1, z = -0.52 }, + }, + }, + [`rescue1`] = { + useBone = false, + bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" + offsets = { + { x = 1.03, y = 0.1, z = -0.02 }, + { x = -0.93, y = 0.1, z = -0.52 }, + }, + }, + [`walkin`] = { + useBone = false, + bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" + offsets = { + { x = 1.03, y = 0.1, z = -0.02 }, + { x = -0.93, y = 0.1, z = -0.52 }, + }, + }, + [`walkinarrow`] = { + useBone = false, + bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" + offsets = { + { x = 1.03, y = 0.1, z = -0.02 }, + { x = -0.93, y = 0.1, z = -0.52 }, + }, + }, + [`fireboat`] = { + useBone = false, + bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" + offsets = { + { x = 1.03, y = 0.1, z = -0.02 }, + { x = -0.93, y = 0.1, z = -0.52 }, + }, + }, + [`GC21F250`] = { + useBone = false, + bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" + offsets = { + { x = 1.03, y = 0.1, z = -0.02 }, + { x = -0.93, y = 0.1, z = -0.52 }, + }, + }, + [`Staff-Buggy`] = { useBone = false, bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" offsets = { diff --git a/resources/VehicleTrustSystem-master/LICENSE b/resources/VehicleTrustSystem-master/LICENSE new file mode 100644 index 000000000..9595491de --- /dev/null +++ b/resources/VehicleTrustSystem-master/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2019 Jared + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/resources/VehicleTrustSystem-master/README.md b/resources/VehicleTrustSystem-master/README.md new file mode 100644 index 000000000..f6e80fa79 --- /dev/null +++ b/resources/VehicleTrustSystem-master/README.md @@ -0,0 +1,5 @@ +# VehicleTrustSystem +## Continued Documentation +https://docs.badger.store/fivem-misc.-scripts/vehicletrustsystem +## Discontinued Documentation +All information: https://forum.fivem.net/t/release-vehicletrustsystem/674066 diff --git a/resources/VehicleTrustSystem-master/__resource.lua b/resources/VehicleTrustSystem-master/__resource.lua new file mode 100644 index 000000000..40ac33348 --- /dev/null +++ b/resources/VehicleTrustSystem-master/__resource.lua @@ -0,0 +1,8 @@ +resource_manifest_version '44febabe-d386-4d18-afbe-5e627f4af937' + +client_script "client.lua" +client_script "config.lua" + +server_script "server.lua" + +file "whitelist.json" \ No newline at end of file diff --git a/resources/VehicleTrustSystem-master/client.lua b/resources/VehicleTrustSystem-master/client.lua new file mode 100644 index 000000000..5222e81e5 --- /dev/null +++ b/resources/VehicleTrustSystem-master/client.lua @@ -0,0 +1,90 @@ +local identifiers = {} +function ShowInfo(text) + SetNotificationTextEntry("STRING") + AddTextComponentSubstringPlayerName(text) + DrawNotification(false, false) +end +Citizen.CreateThread(function() + local myIdss = getIdentifiers() + print(myIdss) + while true do + Citizen.Wait(10000) + TriggerServerEvent('primerp_vehwl:reloadwl') + TriggerServerEvent('primerp_vehwl:Server:Check') + end +end) +function getConfig() + return LoadResourceFile(GetCurrentResourceName(), "whitelist.json") +end +AddEventHandler("playerSpawned", function() + TriggerServerEvent("primerp_vehwl:reloadwl") +end) + +function getIdentifiers() + return identifiers +end + +RegisterNetEvent('primerp_vehwl:RunCode:Client') +AddEventHandler('primerp_vehwl:RunCode:Client', function(cfg) + -- + local ped = GetPlayerPed(-1) + local inVeh = IsPedInAnyVehicle(ped, false) + local veh = GetVehiclePedIsUsing(ped) + local driver = GetPedInVehicleSeat(veh, -1) + local spawncode = GetEntityModel(veh) + local allowed = false + local exists = false + local myIds = {} + myIds = getIdentifiers() + if (inVeh) and (driver == ped) then + for pair,_ in pairs(cfg) do + -- Pair + for _,vehic in ipairs(cfg[pair]) do + --print("Checking if exists with vehic.spawncode == " .. string.upper(vehic.spawncode) .. " and spawncode == " + --.. string.upper(spawncode)) + if (GetHashKey(vehic.spawncode) == spawncode) then + exists = true + end + end + if (pair == myIds[1]) then + for _,v in ipairs(cfg[pair]) do + --print(v.allowed) + --print("The vehicle is " .. v.spawncode .. " and allowed = " .. tostring(v.allowed) .. " with ID as " .. tostring(pair)) + if (spawncode == GetHashKey(v.spawncode)) and (v.allowed) then + allowed = true + print("Allowed was set to true with vehicle == " .. v.spawncode) + end + end + end + end + end + --print("Value of exists == " .. tostring(exists) .. " and value of allowed == " .. tostring(allowed)) + if (exists and not allowed) then + --print("It should delete the vehicle for " .. GetPlayerName(source)) + DeleteEntity(veh) + ClearPedTasksImmediately(ped) + TriggerEvent('primerp_vehwl:RunCode:Success', source) + end +end) + +RegisterNetEvent('primerp_vehwl:RunCode:Success') +AddEventHandler('primerp_vehwl:RunCode:Success', function() + ShowInfo('~r~ERROR: You do not have access to this personal vehicle') +end) + +RegisterNetEvent("primerp_vehwl:loadIdentifiers") +AddEventHandler("primerp_vehwl:loadIdentifiers", function(id) + identifiers = id +end) + +RegisterCommand("reloadwl", function(source) + TriggerServerEvent("primerp_vehwl:reloadwl") +end) + +--[[ + Commands: + /setOwner + /trust + /untrust + /vehicle list +--]]-- \ No newline at end of file diff --git a/resources/VehicleTrustSystem-master/server.lua b/resources/VehicleTrustSystem-master/server.lua new file mode 100644 index 000000000..cad6578cc --- /dev/null +++ b/resources/VehicleTrustSystem-master/server.lua @@ -0,0 +1,325 @@ + +prefix = '^0[^6VehicleTrustSystem^0] ' + +-- Code -- +RegisterServerEvent("primerp_vehwl:reloadwl") +AddEventHandler("primerp_vehwl:reloadwl", function() + local _source = source + local identifiers = GetPlayerIdentifiers(_source) + TriggerClientEvent("primerp_vehwl:loadIdentifiers", _source, identifiers) +end) + +AddEventHandler("playerSpawned", function() + TriggerEvent("primerp_vehwl:getIdentifiers") +end) + +RegisterServerEvent("primerp_vehwl:saveFile") +AddEventHandler("primerp_vehwl:saveFile", function(data) + SaveResourceFile(GetCurrentResourceName(), "whitelist.json", json.encode(data, { indent = true }), -1) +end) +function has_value (tab, val) + for index, value in ipairs(tab) do + if value == val then + return true + end + end + + return false +end +function get_index (tab, val) + local counter = 1 + for index, value in ipairs(tab) do + if value == val then + return counter + end + counter = counter + 1 + end + + return nil +end +RegisterNetEvent('primerp_vehwl:Server:Check') +AddEventHandler('primerp_vehwl:Server:Check', function() + local config = LoadResourceFile(GetCurrentResourceName(), "whitelist.json") + local cfg = json.decode(config) + TriggerClientEvent('primerp_vehwl:RunCode:Client', source, cfg) +end) + +--- COMMANDS --- +RegisterCommand("vehicles", function(source, args, rawCommand) + -- Get the vehicles they can drive + local al = LoadResourceFile(GetCurrentResourceName(), "whitelist.json") + local cfg = json.decode(al) + local allowed = {} + local myIds = GetPlayerIdentifiers(source) + for pair,_ in pairs(cfg) do + -- Pair + if (pair == myIds[1]) then + for _,v in ipairs(cfg[pair]) do + --print(v.allowed) + --print("The vehicle is " .. v.spawncode .. " and allowed = " .. tostring(v.allowed) .. " with ID as " .. tostring(pair)) + if (v.allowed) then + table.insert(allowed, v.spawncode) + end + end + end + end + if #allowed > 0 then + TriggerClientEvent('chatMessage', source, prefix .. "^2You are allowed access to drive the following vehicles:") + TriggerClientEvent('chatMessage', source, "^0" .. table.concat(allowed, ', ')) + else + TriggerClientEvent('chatMessage', source, prefix .. "^1Sadly no one has gave you access to drive a personal vehicle :(") + end +end) +RegisterCommand("clear", function(source, args, rawCommand) + -- /clear == Basically reset a vehicle's data (owners and allowed to drive) + if IsPlayerAceAllowed(source, "VehwlCommands.Access") then + -- Check args + if #args < 1 then + TriggerClientEvent('chatMessage', source, prefix .. "^1ERROR: Not enough arguments... ^1Valid: /clear ") + return; + end + local vehicle = string.upper(args[1]) + local al = LoadResourceFile(GetCurrentResourceName(), "whitelist.json") + local cfg = json.decode(al) + for pair,_ in pairs(cfg) do + -- Pair + local ind = 0 + for _,veh in ipairs(cfg[pair]) do + ind = ind + 1 + if string.upper(veh.spawncode) == string.upper(vehicle) then + table.remove(cfg[pair], ind) + end + end + end + TriggerClientEvent('chatMessage', source, prefix .. "^2Success: Removed all data of vehicle ^5" .. vehicle .. "^2") + TriggerClientEvent('vehwl:Cache:Update:ClearVeh', -1, vehicle) + TriggerEvent("primerp_vehwl:saveFile", cfg) + end +end) +RegisterCommand("setOwner", function(source, args, rawCommand) + -- Needs a staff Ace perm to do this + if IsPlayerAceAllowed(source, "VehwlCommands.Access") then + if #args < 2 then + -- Too low args + TriggerClientEvent('chatMessage', source, prefix .. "^1ERROR: Not enough arguments... ^1Valid: /setOwner ") + return; + end + local id = tonumber(args[1]) + --print(GetPlayerIdentifiers(id)[1]) + if GetPlayerIdentifiers(id)[1] == nil then + TriggerClientEvent('chatMessage', source, prefix .. "^1ERROR: That is not a valid server ID of a player...") + return; + end + -- /setOwner + local vehicle = string.upper(args[2]) + local identifiers = GetPlayerIdentifiers(id) + local steam = identifiers[1] + local al = LoadResourceFile(GetCurrentResourceName(), "whitelist.json") + local cfg = json.decode(al) + -- Check that no one owns this vehicle before setting it: + local vehicledOwned = false + -- Check below: + for pair,_ in pairs(cfg) do + -- Pair + for _,veh in ipairs(cfg[pair]) do + if string.upper(veh.spawncode) == string.upper(vehicle) then + if veh.owner == true then + vehicledOwned = true + end + end + end + end + -- Is it owned already? + if not vehicledOwned then + local vehiclesList = cfg[steam] + if vehiclesList == nil then + cfg[steam] = {} + vehiclesList = {} + end + local hasValue = false + local index = nil + for i = 1, #vehiclesList do + if string.upper(vehicle) == string.upper(vehiclesList[i].spawncode) then + hasValue = true + index = i + end + end + if not hasValue then + -- Doesn't have it, add it + table.insert(vehiclesList, { + owner=true, + allowed=true, + spawncode=vehicle, + }) + else + -- It does have it, set it + vehiclesList[index].owner = true + vehiclesList[index].allowed = true + end + cfg[steam] = vehiclesList + TriggerEvent("primerp_vehwl:saveFile", cfg) + TriggerClientEvent('chatMessage', source, prefix .. "^2Success: You have set ^5" + .. GetPlayerName(id) .. "^2 as the owner to the vehicle ^5" .. vehicle) + TriggerClientEvent('chatMessage', id, prefix .. "^2You have been set " + .. " to the owner of vehicle ^5" .. vehicle .. "^2 by ^5" .. GetPlayerName(source)) + else + -- Vehicle is owned, need to /clear it first + TriggerClientEvent('chatMessage', source, prefix .. + "^1ERROR: That vehicle is owned by someone already... Use /clear to clear it's data") + end + end -- Can't use it if not allowed +end) +function isOwner(src) + -- Check if they own the vehicle +end +RegisterCommand("trust", function(source, args, rawCommand) + local al = LoadResourceFile(GetCurrentResourceName(), "whitelist.json") + local cfg = json.decode(al) + -- /trust + local vehicle = string.upper(args[2]) + local id = tonumber(args[1]) + -- Check args + if #args < 2 then + TriggerClientEvent('chatMessage', source, prefix .. "^1ERROR: Not enough arguments... ^1Valid: /trust ") + return; + end + -- Check if valid id + if id == source then + TriggerClientEvent('chatMessage', source, prefix .. "^1ERROR: You cannot trust yourself...") + return; + end + if GetPlayerIdentifiers(id)[1] == nil then + -- It's invalid + TriggerClientEvent('chatMessage', source, prefix .. "^1ERROR: That is not a valid server ID of a player...") + return; + end + local steam = GetPlayerIdentifiers(id)[1] + -- Check if has vehicle ownership and can do this command + local vehicledOwned = false + -- Check below: + for pair,_ in pairs(cfg) do + -- Pair + if tostring(GetPlayerIdentifiers(source)[1]) == tostring(pair) then + for _,veh in ipairs(cfg[pair]) do + if string.upper(veh.spawncode) == string.upper(vehicle) then + if veh.owner == true then + vehicledOwned = true + end + end + end + end + end + if not vehicledOwned then + -- They do not own it, end this + TriggerClientEvent('chatMessage', source, prefix .. "^1ERROR: You do not own this vehicle...") + return; + end + local vehiclesList = cfg[steam] + if vehiclesList == nil then + cfg[steam] = {} + vehiclesList = {} + end + local hasValue = false + local index = nil + for i = 1, #vehiclesList do + if string.upper(vehicle) == string.upper(vehiclesList[i].spawncode) then + hasValue = true + index = i + end + end + if not hasValue then + -- Doesn't have it, add it + table.insert(vehiclesList, { + owner=false, + allowed=true, + spawncode=vehicle, + }) + else + -- It does have it, set it + vehiclesList[index].owner = false + vehiclesList[index].allowed = true + end + cfg[steam] = vehiclesList + TriggerEvent("primerp_vehwl:saveFile", cfg) + TriggerClientEvent('chatMessage', source, prefix .. "^2Success: You have given player ^5" + .. GetPlayerName(id) .. "^2 permission to drive your vehicle ^5" + .. vehicle) + TriggerClientEvent('chatMessage', id, prefix .. "^2You have been trusted " + .. " to use the vehicle, ^5" .. vehicle .. "^2 by owner ^5" .. GetPlayerName(source)) +end) + +RegisterCommand("untrust", function(source, args, rawCommand) + local al = LoadResourceFile(GetCurrentResourceName(), "whitelist.json") + local cfg = json.decode(al) + -- /untrust + local vehicle = string.upper(args[2]) + local id = tonumber(args[1]) + -- Check args + if #args < 2 then + TriggerClientEvent('chatMessage', source, prefix .. "^1ERROR: Not enough arguments... ^1Valid: /untrust ") + return; + end + -- Check if valid id + if id == source then + TriggerClientEvent('chatMessage', source, prefix .. "^1ERROR: You cannot untrust yourself...") + return; + end + if GetPlayerIdentifiers(id)[1] == nil then + -- It's invalid + TriggerClientEvent('chatMessage', source, prefix .. "^1ERROR: That is not a valid server ID of a player...") + return; + end + local steam = GetPlayerIdentifiers(id)[1] + -- Check if has vehicle ownership and can do this command + local vehicledOwned = false + -- Check below: + for pair,_ in pairs(cfg) do + -- Pair + if tostring(GetPlayerIdentifiers(source)[1]) == tostring(pair) then + for _,veh in ipairs(cfg[pair]) do + if string.upper(veh.spawncode) == string.upper(vehicle) then + if veh.owner == true then + vehicledOwned = true + end + end + end + end + end + if not vehicledOwned then + -- They do not own it, end this + TriggerClientEvent('chatMessage', source, prefix .. "^1ERROR: You do not own this vehicle...") + return; + end + local vehiclesList = cfg[steam] + if vehiclesList == nil then + cfg[steam] = {} + vehiclesList = {} + end + local hasValue = false + local index = nil + for i = 1, #vehiclesList do + if string.upper(vehicle) == string.upper(vehiclesList[i].spawncode) then + hasValue = true + index = i + end + end + if not hasValue then + -- Doesn't have it, add it + table.insert(vehiclesList, { + owner=false, + allowed=false, + spawncode=vehicle, + }) + else + -- It does have it, set it + vehiclesList[index].owner = false + vehiclesList[index].allowed = false + end + cfg[steam] = vehiclesList + TriggerEvent("primerp_vehwl:saveFile", cfg) + TriggerClientEvent('chatMessage', source, prefix .. "^2Success: ^1Player " + .. GetPlayerName(id) .. "^1 no longer has permission to drive your vehicle ^5" + .. vehicle) + TriggerClientEvent('chatMessage', id, prefix .. "^1Your " + .. " trust to use the vehicle ^5" .. vehicle .. " ^1has been revoked by owner ^5" .. GetPlayerName(source)) +end) \ No newline at end of file diff --git a/resources/VehicleTrustSystem-master/whitelist.json b/resources/VehicleTrustSystem-master/whitelist.json new file mode 100644 index 000000000..9e26dfeeb --- /dev/null +++ b/resources/VehicleTrustSystem-master/whitelist.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/resources/cooldown/__resource.lua b/resources/cooldown/__resource.lua new file mode 100644 index 000000000..eefb60921 --- /dev/null +++ b/resources/cooldown/__resource.lua @@ -0,0 +1,5 @@ +resource_manifest_version '77731fab-63ca-442c-a67b-abc70f28dfa5' + +client_script 'client.lua' + +server_script 'server.lua' \ No newline at end of file diff --git a/resources/cooldown/client.lua b/resources/cooldown/client.lua new file mode 100644 index 000000000..6a6ace1ca --- /dev/null +++ b/resources/cooldown/client.lua @@ -0,0 +1,48 @@ +local cooldown = 0 +local ispriority = false +local ishold = false + +RegisterCommand("resetpcd", function() + TriggerServerEvent("cancelcooldown") +end, false) + +RegisterNetEvent('UpdateCooldown') +AddEventHandler('UpdateCooldown', function(newCooldown) + cooldown = newCooldown +end) + +RegisterNetEvent('UpdatePriority') +AddEventHandler('UpdatePriority', function(newispriority) + ispriority = newispriority +end) + +RegisterNetEvent('UpdateHold') +AddEventHandler('UpdateHold', function(newishold) + ishold = newishold +end) + +Citizen.CreateThread(function() + while true do + Citizen.Wait(0) + if ishold == true then + DrawText2("Priority Cooldown: ~b~Priorities Are On Hold") + elseif ispriority == false then + DrawText2("Priority Cooldown: ~r~".. cooldown .." ~w~Mins") + elseif ispriority == true then + DrawText2("Priority Cooldown: ~g~Priority In Progress") + end + end +end) + + function DrawText2(text) + SetTextFont(0) + SetTextProportional(1) + SetTextScale(0.0, 0.45) + SetTextDropshadow(1, 0, 0, 0, 255) + SetTextEdge(1, 0, 0, 0, 255) + SetTextDropShadow() + SetTextOutline() + SetTextEntry("STRING") + AddTextComponentString(text) + DrawText(0.40, 0.10) + end \ No newline at end of file diff --git a/resources/cooldown/server.lua b/resources/cooldown/server.lua new file mode 100644 index 000000000..33814bbd2 --- /dev/null +++ b/resources/cooldown/server.lua @@ -0,0 +1,71 @@ +-- Config +timermax = 10 -- In minutes. Must be one bigger than the max timer you want (Eg if you want 20 it must be 21) + +-- Do not touch +cooldown = 0 +ispriority = false +ishold = false + +RegisterCommand("priority", function() + TriggerEvent("cooldownt") +end, false) + +RegisterCommand("inprogress", function() + TriggerEvent('isPriority') +end, false) + +RegisterCommand("onhold", function() + TriggerEvent('isOnHold') +end, false) + +RegisterNetEvent('isPriority') +AddEventHandler('isPriority', function() + ispriority = true + Citizen.Wait(1) + TriggerClientEvent('UpdatePriority', -1, ispriority) + TriggerClientEvent('chatMessage', -1, "WARNING", {255, 0, 0}, "^1A priority call is in progress. Please do not interfere, otherwise you will be ^1kicked. ^7All calls are on ^3hold ^7until this one concludes.") +end) + +RegisterNetEvent('isOnHold') +AddEventHandler('isOnHold', function() + ishold = true + Citizen.Wait(1) + TriggerClientEvent('UpdateHold', -1, ishold) +end) + +RegisterNetEvent("cooldownt") +AddEventHandler("cooldownt", function() + if ispriority == true then + ispriority = false + TriggerClientEvent('UpdatePriority', -1, ispriority) + end + Citizen.Wait(1) + if ishold == true then + ishold = false + TriggerClientEvent('UpdateHold', -1, ishold) + end + Citizen.Wait(1) + if cooldown == 0 then + cooldown = 0 + cooldown = cooldown + timermax + TriggerClientEvent('chatMessage', -1, "WARNING", {255, 0, 0}, "^1A priority call was just conducted. ^3All civilians must wait 20 minutes before conducting another one. ^7Failure to abide by this rule will lead to you being ^1kicked.") + while cooldown > 0 do + cooldown = cooldown - 1 + TriggerClientEvent('UpdateCooldown', -1, cooldown) + Citizen.Wait(60000) + end + elseif cooldown ~= 0 then + CancelEvent() + end +end) + +RegisterNetEvent("cancelcooldown") +AddEventHandler("cancelcooldown", function() + Citizen.Wait(1) + while cooldown > 0 do + cooldown = cooldown - 1 + TriggerClientEvent('UpdateCooldown', -1, cooldown) + Citizen.Wait(100) + end + +end) \ No newline at end of file diff --git a/resources/scully_lawenforcement/.fxap b/resources/scully_lawenforcement/.fxap new file mode 100644 index 000000000..1b4c8a43a Binary files /dev/null and b/resources/scully_lawenforcement/.fxap differ diff --git a/resources/scully_lawenforcement/.vscode/settings.json b/resources/scully_lawenforcement/.vscode/settings.json new file mode 100644 index 000000000..e7d76b538 --- /dev/null +++ b/resources/scully_lawenforcement/.vscode/settings.json @@ -0,0 +1,8 @@ +{ + "Lua.diagnostics.disable": [ + "undefined-field", + "need-check-nil", + "param-type-mismatch", + "missing-parameter" + ] +} \ No newline at end of file diff --git a/resources/scully_lawenforcement/audiodirectory/scully_lawenforcement_sounds.awc b/resources/scully_lawenforcement/audiodirectory/scully_lawenforcement_sounds.awc new file mode 100644 index 000000000..0ed6f93f3 Binary files /dev/null and b/resources/scully_lawenforcement/audiodirectory/scully_lawenforcement_sounds.awc differ diff --git a/resources/scully_lawenforcement/audiodirectory/scully_lawenforcement_sounds.dat54.rel b/resources/scully_lawenforcement/audiodirectory/scully_lawenforcement_sounds.dat54.rel new file mode 100644 index 000000000..43adc2834 Binary files /dev/null and b/resources/scully_lawenforcement/audiodirectory/scully_lawenforcement_sounds.dat54.rel differ diff --git a/resources/scully_lawenforcement/audiodirectory/source/scully_lawenforcement_sounds.awc.xml b/resources/scully_lawenforcement/audiodirectory/source/scully_lawenforcement_sounds.awc.xml new file mode 100644 index 000000000..e001a32f5 --- /dev/null +++ b/resources/scully_lawenforcement/audiodirectory/source/scully_lawenforcement_sounds.awc.xml @@ -0,0 +1,107 @@ + + + + + + + celldoor + celldoor.wav + + + peak + + + data + + + format + ADPCM + + + + + + + + + + + + + + cuff + cuff.wav + + + peak + + + data + + + format + ADPCM + + + + + + + + + + + + + + uncuff + uncuff.wav + + + peak + + + data + + + format + ADPCM + + + + + + + + + + + + + + panicbutton + panicbutton.wav + + + peak + + + data + + + format + ADPCM + + + + + + + + + + + + + + \ No newline at end of file diff --git a/resources/scully_lawenforcement/audiodirectory/source/scully_lawenforcement_sounds.dat54.rel.xml b/resources/scully_lawenforcement/audiodirectory/source/scully_lawenforcement_sounds.dat54.rel.xml new file mode 100644 index 000000000..3cb2d017e --- /dev/null +++ b/resources/scully_lawenforcement/audiodirectory/source/scully_lawenforcement_sounds.dat54.rel.xml @@ -0,0 +1,77 @@ + + + + + audiodirectory\scully_lawenforcement_sounds + + + + celldoor_sp +
+ + + scripted +
+ audiodirectory/scully_lawenforcement_sounds + celldoor + +
+ + cuff_sp +
+ + + scripted +
+ audiodirectory/scully_lawenforcement_sounds + cuff + +
+ + uncuff_sp +
+ + + scripted +
+ audiodirectory/scully_lawenforcement_sounds + uncuff + +
+ + panicbutton_sp +
+ + + scripted +
+ audiodirectory/scully_lawenforcement_sounds + panicbutton + +
+ + scully_lawenforcement_soundset +
+ +
+ + + celldoor + celldoor_sp + + + cuff + cuff_sp + + + uncuff + uncuff_sp + + + panicbutton + panicbutton_sp + + +
+
+
\ No newline at end of file diff --git a/resources/scully_lawenforcement/audiodirectory/source/scully_lawenforcement_sounds/celldoor.wav b/resources/scully_lawenforcement/audiodirectory/source/scully_lawenforcement_sounds/celldoor.wav new file mode 100644 index 000000000..be32bba53 Binary files /dev/null and b/resources/scully_lawenforcement/audiodirectory/source/scully_lawenforcement_sounds/celldoor.wav differ diff --git a/resources/scully_lawenforcement/audiodirectory/source/scully_lawenforcement_sounds/cuff.wav b/resources/scully_lawenforcement/audiodirectory/source/scully_lawenforcement_sounds/cuff.wav new file mode 100644 index 000000000..d7a0e3ff2 Binary files /dev/null and b/resources/scully_lawenforcement/audiodirectory/source/scully_lawenforcement_sounds/cuff.wav differ diff --git a/resources/scully_lawenforcement/audiodirectory/source/scully_lawenforcement_sounds/panicbutton.wav b/resources/scully_lawenforcement/audiodirectory/source/scully_lawenforcement_sounds/panicbutton.wav new file mode 100644 index 000000000..82858d549 Binary files /dev/null and b/resources/scully_lawenforcement/audiodirectory/source/scully_lawenforcement_sounds/panicbutton.wav differ diff --git a/resources/scully_lawenforcement/audiodirectory/source/scully_lawenforcement_sounds/uncuff.wav b/resources/scully_lawenforcement/audiodirectory/source/scully_lawenforcement_sounds/uncuff.wav new file mode 100644 index 000000000..119d0c4ae Binary files /dev/null and b/resources/scully_lawenforcement/audiodirectory/source/scully_lawenforcement_sounds/uncuff.wav differ diff --git a/resources/scully_lawenforcement/client/alerts.lua b/resources/scully_lawenforcement/client/alerts.lua new file mode 100644 index 000000000..eec3dc484 Binary files /dev/null and b/resources/scully_lawenforcement/client/alerts.lua differ diff --git a/resources/scully_lawenforcement/client/blockers.lua b/resources/scully_lawenforcement/client/blockers.lua new file mode 100644 index 000000000..bff38a5ad Binary files /dev/null and b/resources/scully_lawenforcement/client/blockers.lua differ diff --git a/resources/scully_lawenforcement/client/events.lua b/resources/scully_lawenforcement/client/events.lua new file mode 100644 index 000000000..c3f7c03f8 Binary files /dev/null and b/resources/scully_lawenforcement/client/events.lua differ diff --git a/resources/scully_lawenforcement/client/exports.lua b/resources/scully_lawenforcement/client/exports.lua new file mode 100644 index 000000000..1026f152a Binary files /dev/null and b/resources/scully_lawenforcement/client/exports.lua differ diff --git a/resources/scully_lawenforcement/client/functions.lua b/resources/scully_lawenforcement/client/functions.lua new file mode 100644 index 000000000..9fb3a73d0 Binary files /dev/null and b/resources/scully_lawenforcement/client/functions.lua differ diff --git a/resources/scully_lawenforcement/client/main.lua b/resources/scully_lawenforcement/client/main.lua new file mode 100644 index 000000000..80d3eb7dd Binary files /dev/null and b/resources/scully_lawenforcement/client/main.lua differ diff --git a/resources/scully_lawenforcement/client/menu.lua b/resources/scully_lawenforcement/client/menu.lua new file mode 100644 index 000000000..9a121f610 Binary files /dev/null and b/resources/scully_lawenforcement/client/menu.lua differ diff --git a/resources/scully_lawenforcement/client/quickbinds.lua b/resources/scully_lawenforcement/client/quickbinds.lua new file mode 100644 index 000000000..315f25b94 Binary files /dev/null and b/resources/scully_lawenforcement/client/quickbinds.lua differ diff --git a/resources/scully_lawenforcement/data/blockers.lua b/resources/scully_lawenforcement/data/blockers.lua new file mode 100644 index 000000000..7974ec0ac --- /dev/null +++ b/resources/scully_lawenforcement/data/blockers.lua @@ -0,0 +1,17 @@ +return { + scenarios = { + 'WORLD_VEHICLE_AMBULANCE', + 'WORLD_VEHICLE_FIRE_TRUCK', + 'WORLD_VEHICLE_POLICE_BIKE', + 'WORLD_VEHICLE_POLICE_CAR', + 'WORLD_VEHICLE_POLICE', + 'WORLD_VEHICLE_POLICE_NEXT_TO_CAR' + }, + + scenarioTypes = { + 'WORLD_VEHICLE_AMBULANCE', + 'WORLD_VEHICLE_POLICE_NEXT_TO_CAR', + 'WORLD_VEHICLE_POLICE_CAR', + 'WORLD_VEHICLE_POLICE_BIKE' + } +} \ No newline at end of file diff --git a/resources/scully_lawenforcement/data/cad.lua b/resources/scully_lawenforcement/data/cad.lua new file mode 100644 index 000000000..2209fbd40 --- /dev/null +++ b/resources/scully_lawenforcement/data/cad.lua @@ -0,0 +1,21 @@ +return { + statusColors = { + Valid = '~g~Valid~w~', + Canceled = '~r~Canceled~w~', + Expired = '~r~Expired~w~', + Suspended = '~r~Suspended~w~', + Invalid = '~r~Invalid~w~', + Revoked = '~r~Revoked~w~', + Unobtained = '~w~Unobtained~w~', + Unknown = '~w~Unknown~w~', + Wanted = '~r~Wanted~w~', + Stolen = '~r~Stolen~w~', + ['Suspended Reg'] = '~r~Suspended Reg~w~', + ['Cancelled Reg'] = '~r~Canceled Reg~w~', + ['Driver Flag'] = '~y~Driver Flag~w~', + ['Expired Reg'] = '~r~Expired Reg~w~', + ['Insurance Flag'] = '~y~Insurance Flag~w~', + ['No Insurance'] = '~r~No Insurance~w~', + None = '~w~None~w~' + } +} \ No newline at end of file diff --git a/resources/scully_lawenforcement/data/codes.lua b/resources/scully_lawenforcement/data/codes.lua new file mode 100644 index 000000000..17c64aea9 --- /dev/null +++ b/resources/scully_lawenforcement/data/codes.lua @@ -0,0 +1,5 @@ +return { + shotsFired = {'^110-13', 'Shots fired on %s'}, + panicAlert = {'^110-99', '%s | A panic button has been pressed!'}, + _911Alert = {'^1911', 'Caller: %s | Location: %s | Information: %s'} +} \ No newline at end of file diff --git a/resources/scully_lawenforcement/data/departments.lua b/resources/scully_lawenforcement/data/departments.lua new file mode 100644 index 000000000..eaf118c13 --- /dev/null +++ b/resources/scully_lawenforcement/data/departments.lua @@ -0,0 +1,40 @@ +return { + ['lspd'] = { + label = 'Los Santos Police Department', + allowOtherDepartments = true, + blip = { + enable = true, + sprite = 60, + color = 38, + scale = 0.8 + }, + dutyBlip = { + sprite = 1, + color = 57, + scale = 0.8, + showCone = true + }, + locations = { + vec3(440.46, -975.71, 30.68) + } + }, + ['bcso'] = { + label = 'Blaine County Sheriff\'s Office', + allowOtherDepartments = true, + blip = { + enable = true, + sprite = 60, + color = 31, + scale = 0.8 + }, + dutyBlip = { + sprite = 1, + color = 57, + scale = 0.8, + showCone = true + }, + locations = { + vec3(1834.00, 3678.01, 34.18) + } + }, +} \ No newline at end of file diff --git a/resources/scully_lawenforcement/data/jail.lua b/resources/scully_lawenforcement/data/jail.lua new file mode 100644 index 000000000..1275eacdb --- /dev/null +++ b/resources/scully_lawenforcement/data/jail.lua @@ -0,0 +1,155 @@ +return { + prison = vec3(1682.8621, 2541.8115, 45.5648), -- Used for distance check. + maxDistance = 125, -- How far can the player go before being teleported back. + spawn = vec4(1761.5021, 2497.3845, 44.7408, 209.9614), -- Where you spawn when jailed. + unjailSpawn = vec4(1848.3793, 2585.8940, 44.6727, 271.0469), -- Only used if scenes are disabled. + mugshot = { + title = 'Bolingbroke Penitentiary', + center = 'Inmate #' .. math.random(11, 99), + footer = '', + header = '', + location = vec4(402.82, -996.64, -100.0, 269.64), + camera = { + location = vec3(403.0, -998.05, -98.5), + rotation = vec3(0.0, 0.0, 359.65) + } + }, + jobs = { + { + location = vec3(1750.2993, 2476.0803, 45.7407), + reduceTime = 1, + action = function() + local coords = GetEntityCoords(cache.ped) + local propId = InitPropSpawn({ + model = `prop_tool_broom`, + coords = coords, + attach = { + player = cache.serverId, + bone = 28422, + position = vector3(-0.01, 0.04, -0.03), + rotation = vector3(0.0, 0.0, 0.0), + rotationOrder = 1 + } + }) + + utils.requestAnimDict('anim@amb@drug_field_workers@rake@male_a@base') + + TaskPlayAnim(cache.ped, 'anim@amb@drug_field_workers@rake@male_a@base', 'base', 8.0, 8.0, -1, 1, 0, false, false, false) + Wait(10000) + DeleteProp(propId) + ClearPedTasks(cache.ped) + RemoveAnimDict('anim@amb@drug_field_workers@rake@male_a@base') + end + }, + { + location = vec3(1771.9421, 2492.01, 45.7407), + reduceTime = 1, + action = function() + local coords = GetEntityCoords(cache.ped) + local propId = InitPropSpawn({ + model = `prop_tool_broom`, + coords = coords, + attach = { + player = cache.serverId, + bone = 28422, + position = vector3(-0.01, 0.04, -0.03), + rotation = vector3(0.0, 0.0, 0.0), + rotationOrder = 1 + } + }) + + utils.requestAnimDict('anim@amb@drug_field_workers@rake@male_b@base') + + TaskPlayAnim(cache.ped, 'anim@amb@drug_field_workers@rake@male_b@base', 'base', 8.0, 8.0, -1, 1, 0, false, false, false) + Wait(10000) + DeleteProp(propId) + ClearPedTasks(cache.ped) + RemoveAnimDict('anim@amb@drug_field_workers@rake@male_b@base') + end + }, + { + location = vec3(1718.5072, 2527.9028, 45.5649), + reduceTime = 1, + action = function() + utils.requestAnimDict('anim@gangops@facility@servers@') + + TaskPlayAnim(cache.ped, 'anim@gangops@facility@servers@', 'hotwire', 8.0, 8.0, -1, 16, 0, false, false, false) + Wait(10000) + ClearPedTasks(cache.ped) + RemoveAnimDict('anim@gangops@facility@servers@') + end + }, + { + location = vec3(1621.6362, 2509.3232, 45.5649), + reduceTime = 1, + action = function() + utils.requestAnimDict('anim@gangops@facility@servers@') + + TaskPlayAnim(cache.ped, 'anim@gangops@facility@servers@', 'hotwire', 8.0, 8.0, -1, 16, 0, false, false, false) + Wait(10000) + ClearPedTasks(cache.ped) + RemoveAnimDict('anim@gangops@facility@servers@') + end + }, + { + location = vec3(1642.2651, 2490.1475, 45.5649), + reduceTime = 1, + action = function() + utils.requestAnimDict('anim@gangops@facility@servers@') + + TaskPlayAnim(cache.ped, 'anim@gangops@facility@servers@', 'hotwire', 8.0, 8.0, -1, 16, 0, false, false, false) + Wait(10000) + ClearPedTasks(cache.ped) + RemoveAnimDict('anim@gangops@facility@servers@') + end + }, + { + location = vec3(1706.2852, 2479.4575, 45.5649), + reduceTime = 1, + action = function() + utils.requestAnimDict('anim@gangops@facility@servers@') + + TaskPlayAnim(cache.ped, 'anim@gangops@facility@servers@', 'hotwire', 8.0, 8.0, -1, 16, 0, false, false, false) + Wait(10000) + ClearPedTasks(cache.ped) + RemoveAnimDict('anim@gangops@facility@servers@') + end + }, + { + location = vec3(1735.6125, 2504.4041, 45.5650), + reduceTime = 1, + action = function() + utils.requestAnimDict('anim@gangops@facility@servers@') + + TaskPlayAnim(cache.ped, 'anim@gangops@facility@servers@', 'hotwire', 8.0, 8.0, -1, 16, 0, false, false, false) + Wait(10000) + ClearPedTasks(cache.ped) + RemoveAnimDict('anim@gangops@facility@servers@') + end + }, + { + location = vec3(1760.7550, 2517.3601, 45.5650), + reduceTime = 1, + action = function() + utils.requestAnimDict('anim@gangops@facility@servers@') + + TaskPlayAnim(cache.ped, 'anim@gangops@facility@servers@', 'hotwire', 8.0, 8.0, -1, 16, 0, false, false, false) + Wait(10000) + ClearPedTasks(cache.ped) + RemoveAnimDict('anim@gangops@facility@servers@') + end + }, + { + location = vec3(1761.5339, 2540.4810, 45.5651), + reduceTime = 1, + action = function() + utils.requestAnimDict('anim@gangops@facility@servers@') + + TaskPlayAnim(cache.ped, 'anim@gangops@facility@servers@', 'hotwire', 8.0, 8.0, -1, 16, 0, false, false, false) + Wait(10000) + ClearPedTasks(cache.ped) + RemoveAnimDict('anim@gangops@facility@servers@') + end + } + } +} \ No newline at end of file diff --git a/resources/scully_lawenforcement/data/loadouts.lua b/resources/scully_lawenforcement/data/loadouts.lua new file mode 100644 index 000000000..5e57a50b3 --- /dev/null +++ b/resources/scully_lawenforcement/data/loadouts.lua @@ -0,0 +1,182 @@ +return { + ['lspd'] = { + ballisticShield = { + enabled = true, + model = `prop_ballistic_shield`, + backPosition = { + bone = 23553, + position = vector3(0.10, -0.20, 0.0), + rotation = vector3(0.0, 90.0, 0.0), + rotationOrder = 0 + }, + holdPosition = { + bone = 36029, + position = vector3(0.0, -0.05, -0.10), + rotation = vector3(-30.0, 180.0, 40.0), + rotationOrder = 0 + } + }, + weapons = { + ['Patrol'] = { + { + weapon = `WEAPON_COMBATPISTOL`, + components = { + `COMPONENT_AT_PI_FLSH` + } + }, + { + weapon = `WEAPON_STUNGUN`, + components = {} + }, + { + weapon = `WEAPON_FLASHLIGHT`, + components = {} + }, + { + weapon = `WEAPON_NIGHTSTICK`, + components = {} + }, + { + weapon = `WEAPON_FLAREGUN`, + components = {} + }, + { + weapon = `WEAPON_PUMPSHOTGUN`, + components = { + `COMPONENT_AT_AR_FLSH` + } + } + }, + ['SWAT'] = { + { + weapon = `WEAPON_COMBATPISTOL`, + components = { + `COMPONENT_AT_PI_FLSH` + } + }, + { + weapon = `WEAPON_SMG`, + components = { + `COMPONENT_AT_AR_FLSH`, + `COMPONENT_SMG_CLIP_02`, + `COMPONENT_AT_SCOPE_MACRO_02`, + } + }, + { + weapon = `WEAPON_CARBINERIFLE`, + components = { + `COMPONENT_AT_AR_FLSH`, + `COMPONENT_CARBINERIFLE_CLIP_02`, + `COMPONENT_AT_SCOPE_MEDIUM` + } + }, + { + weapon = `WEAPON_SNIPERRIFLE`, + components = {} + } + }, + ['Detective'] = { + { + weapon = `WEAPON_COMBATPISTOL`, + components = { + `COMPONENT_AT_PI_FLSH` + } + }, + { + weapon = `WEAPON_FLASHLIGHT`, + components = {} + } + } + } + }, + ['bcso'] = { + ballisticShield = { + enabled = true, + model = `prop_ballistic_shield`, + backPosition = { + bone = 23553, + position = vector3(0.10, -0.20, 0.0), + rotation = vector3(0.0, 90.0, 0.0), + rotationOrder = 0 + }, + holdPosition = { + bone = 36029, + position = vector3(0.0, -0.05, -0.10), + rotation = vector3(-30.0, 180.0, 40.0), + rotationOrder = 0 + } + }, + weapons = { + ['Patrol'] = { + { + weapon = `WEAPON_COMBATPISTOL`, + components = { + `COMPONENT_AT_PI_FLSH` + } + }, + { + weapon = `WEAPON_STUNGUN`, + components = {} + }, + { + weapon = `WEAPON_FLASHLIGHT`, + components = {} + }, + { + weapon = `WEAPON_NIGHTSTICK`, + components = {} + }, + { + weapon = `WEAPON_FLAREGUN`, + components = {} + }, + { + weapon = `WEAPON_PUMPSHOTGUN`, + components = { + `COMPONENT_AT_AR_FLSH` + } + } + }, + ['SWAT'] = { + { + weapon = `WEAPON_COMBATPISTOL`, + components = { + `COMPONENT_AT_PI_FLSH` + } + }, + { + weapon = `WEAPON_SMG`, + components = { + `COMPONENT_AT_AR_FLSH`, + `COMPONENT_SMG_CLIP_02`, + `COMPONENT_AT_SCOPE_MACRO_02`, + } + }, + { + weapon = `WEAPON_CARBINERIFLE`, + components = { + `COMPONENT_AT_AR_FLSH`, + `COMPONENT_CARBINERIFLE_CLIP_02`, + `COMPONENT_AT_SCOPE_MEDIUM` + } + }, + { + weapon = `WEAPON_SNIPERRIFLE`, + components = {} + } + }, + ['Detective'] = { + { + weapon = `WEAPON_COMBATPISTOL`, + components = { + `COMPONENT_AT_PI_FLSH` + } + }, + { + weapon = `WEAPON_FLASHLIGHT`, + components = {} + } + } + } + }, +} \ No newline at end of file diff --git a/resources/scully_lawenforcement/data/misc.lua b/resources/scully_lawenforcement/data/misc.lua new file mode 100644 index 000000000..68bfba152 --- /dev/null +++ b/resources/scully_lawenforcement/data/misc.lua @@ -0,0 +1,8 @@ +return { + breakCuffsWeapons = { + `WEAPON_PLIERS` + }, + startingSeatIndex = { + [`lssdvan`] = 3 + } +} \ No newline at end of file diff --git a/resources/scully_lawenforcement/data/outfits.lua b/resources/scully_lawenforcement/data/outfits.lua new file mode 100644 index 000000000..be7a6ae18 --- /dev/null +++ b/resources/scully_lawenforcement/data/outfits.lua @@ -0,0 +1,140 @@ +return { + ['lspd'] = { + Male = {}, + Female = {} + }, + ['bcso'] = { + Male = { + ['Patrol Uniform 1'] = { + neck_1 = 0, + neck_2 = 0, + hat_1 = 0, + hat_2 = 0, + mask_1 = 0, + mask_2 = 0, + ear_1 = 0, + ear_2 = 0, + glasses_1 = 0, + glasses_2 = 0, + tshirt_1 = 15, + tshirt_2 = 0, + torso_1 = 15, + torso_2 = 0, + arms_1 = 15, + arms_2 = 0, + decals_1 = 0, + decals_2 = 0, + pants_1 = 61, + pants_2 = 0, + shoes_1 = 34, + shoes_2 = 0, + bproof_1 = 0, + bproof_2 = 0, + bags_1 = 0, + bags_2 = 0, + lefthand_1 = 0, + lefthand_2 = 0, + righthand_1 = 0, + righthand_2 = 0 + }, + ['Patrol Uniform 2'] = { + neck_1 = 0, + neck_2 = 0, + hat_1 = 0, + hat_2 = 0, + mask_1 = 0, + mask_2 = 0, + ear_1 = 0, + ear_2 = 0, + glasses_1 = 0, + glasses_2 = 0, + tshirt_1 = 15, + tshirt_2 = 0, + torso_1 = 15, + torso_2 = 0, + arms_1 = 15, + arms_2 = 0, + decals_1 = 0, + decals_2 = 0, + pants_1 = 61, + pants_2 = 0, + shoes_1 = 34, + shoes_2 = 0, + bproof_1 = 0, + bproof_2 = 0, + bags_1 = 0, + bags_2 = 0, + lefthand_1 = 0, + lefthand_2 = 0, + righthand_1 = 0, + righthand_2 = 0 + } + }, + Female = { + ['Patrol Uniform 1'] = { + neck_1 = 0, + neck_2 = 0, + hat_1 = 0, + hat_2 = 0, + mask_1 = 0, + mask_2 = 0, + ear_1 = 0, + ear_2 = 0, + glasses_1 = 0, + glasses_2 = 0, + tshirt_1 = 15, + tshirt_2 = 0, + torso_1 = 15, + torso_2 = 0, + arms_1 = 15, + arms_2 = 0, + decals_1 = 0, + decals_2 = 0, + pants_1 = 61, + pants_2 = 0, + shoes_1 = 34, + shoes_2 = 0, + bproof_1 = 0, + bproof_2 = 0, + bags_1 = 0, + bags_2 = 0, + lefthand_1 = 0, + lefthand_2 = 0, + righthand_1 = 0, + righthand_2 = 0 + }, + ['Patrol Uniform 2'] = { + neck_1 = 0, + neck_2 = 0, + hat_1 = 0, + hat_2 = 0, + mask_1 = 0, + mask_2 = 0, + ear_1 = 0, + ear_2 = 0, + glasses_1 = 0, + glasses_2 = 0, + tshirt_1 = 15, + tshirt_2 = 0, + torso_1 = 15, + torso_2 = 0, + arms_1 = 15, + arms_2 = 0, + decals_1 = 0, + decals_2 = 0, + pants_1 = 61, + pants_2 = 0, + shoes_1 = 34, + shoes_2 = 0, + bproof_1 = 0, + bproof_2 = 0, + bags_1 = 0, + bags_2 = 0, + lefthand_1 = 0, + lefthand_2 = 0, + righthand_1 = 0, + righthand_2 = 0 + } + } + } +} \ No newline at end of file diff --git a/resources/scully_lawenforcement/data/props.lua b/resources/scully_lawenforcement/data/props.lua new file mode 100644 index 000000000..45789e47d --- /dev/null +++ b/resources/scully_lawenforcement/data/props.lua @@ -0,0 +1,5 @@ +return { + ['Barrier'] = `prop_barrier_work05`, + ['Cone'] = `prop_roadcone02a`, + ['Spike Strip'] = `p_ld_stinger_s` +} \ No newline at end of file diff --git a/resources/scully_lawenforcement/data/vehicles.lua b/resources/scully_lawenforcement/data/vehicles.lua new file mode 100644 index 000000000..17d3b36fb --- /dev/null +++ b/resources/scully_lawenforcement/data/vehicles.lua @@ -0,0 +1,54 @@ +return { + ['lspd'] = { + ['Declasse Alamo'] = { + model = `bcsdnalamo`, + upgrade = true, + livery = 1, + extras = {} + }, + ['Vapid Stanier'] = { + model = `bcsdstanier`, + upgrade = true, + livery = 1, + extras = {} + }, + ['Bravado Buffalo'] = { + model = `bcsdbuffalo`, + upgrade = true, + livery = 1, + extras = {} + }, + ['Vapid Scout'] = { + model = `bcsdnscout`, + upgrade = true, + livery = 1, + extras = {} + }, + }, + ['bcso'] = { + ['Declasse Alamo'] = { + model = `bcsdnalamo`, + upgrade = true, + livery = 0, + extras = {} + }, + ['Vapid Stanier'] = { + model = `bcsdstanier`, + upgrade = true, + livery = 0, + extras = {} + }, + ['Bravado Buffalo'] = { + model = `bcsdbuffalo`, + upgrade = true, + livery = 0, + extras = {} + }, + ['Vapid Scout'] = { + model = `bcsdnscout`, + upgrade = true, + livery = 0, + extras = {} + }, + } +} \ No newline at end of file diff --git a/resources/scully_lawenforcement/data/weapons.lua b/resources/scully_lawenforcement/data/weapons.lua new file mode 100644 index 000000000..e507f83f4 --- /dev/null +++ b/resources/scully_lawenforcement/data/weapons.lua @@ -0,0 +1,122 @@ +return { + shotSpotterIgnore = { + [`WEAPON_BZGAS`] = true, + [`WEAPON_FLARE`] = true, + [`WEAPON_STUNGUN`] = true, + [`WEAPON_SNOWBALL`] = true, + [`WEAPON_PETROLCAN`] = true, + [`WEAPON_SMOKEGRENADE`] = true, + [`WEAPON_FIREEXTINGUISHER`] = true + }, + labels = { + [`WEAPON_TEARGAS`] = 'Tear Gas', + [`WEAPON_VINTAGEPISTOL`] = 'Vintage Pistol', + [`WEAPON_MICROSMG`] = 'Micro SMG', + [`WEAPON_EMPLAUNCHER`] = 'Compact EMP Launcher', + [`WEAPON_TECPISTOL`] = 'Tactical SMG', + [`WEAPON_BZGAS`] = 'BZ Gas', + [`WEAPON_CERAMICPISTOL`] = 'Ceramic Pistol', + [`WEAPON_REVOLVER_MK2`] = 'Revolver MK2', + [`WEAPON_ASSAULTRIFLE`] = 'Assault Rifle', + [`WEAPON_BULLPUPSHOTGUN`] = 'Bullpup Shotgun', + [`WEAPON_SMG_MK2`] = 'SMG Mk2', + [`WEAPON_SPECIALCARBINE`] = 'Special Carbine', + [`WEAPON_MACHINEPISTOL`] = 'Machine Pistol', + [`WEAPON_NIGHTSTICK`] = 'Nightstick', + [`WEAPON_BULLPUPRIFLE`] = 'Bullpup Rifle', + [`WEAPON_RAYPISTOL`] = 'Up-n-Atomizer', + [`WEAPON_COMPACTRIFLE`] = 'Compact Rifle', + [`WEAPON_GOLFCLUB`] = 'Golf Club', + [`WEAPON_METALDETECTOR`] = 'Metal Detector', + [`WEAPON_ASSAULTRIFLE_MK2`] = 'Assault Rifle MK2', + [`WEAPON_GRENADELAUNCHER`] = 'Grenade Launcher', + [`WEAPON_PISTOLXM3`] = 'WM 29 Pistol', + [`WEAPON_COMBATPDW`] = 'Combat PDW', + [`WEAPON_KNUCKLE`] = 'Knuckle Dusters', + [`WEAPON_MARKSMANRIFLE`] = 'Marksman Rifle', + [`WEAPON_BULLPUPRIFLE_MK2`] = 'Bullpup Rifle MK2', + [`WEAPON_HEAVYPISTOL`] = 'Heavy Pistol', + [`WEAPON_PROXMINE`] = 'Proximity Mine', + [`WEAPON_CARBINERIFLE`] = 'Carbine Rifle', + [`WEAPON_MILITARYRIFLE`] = 'Military Rifle', + [`WEAPON_RAILGUN`] = 'Railgun', + [`WEAPON_NAVYREVOLVER`] = 'Navy Revolver', + [`WEAPON_DBSHOTGUN`] = 'Double Barrel Shotgun', + [`WEAPON_FIREEXTINGUISHER`] = 'Fire Extinguisher', + [`WEAPON_FLARE`] = 'Flare', + [`WEAPON_GADGETPISTOL`] = 'Perico Pistol', + [`WEAPON_WRENCH`] = 'Wrench', + [`WEAPON_PIPEBOMB`] = 'Pipe Bomb', + [`WEAPON_ADVANCEDRIFLE`] = 'Advanced Rifle', + [`WEAPON_SMOKEGRENADE`] = 'Smoke Grenade', + [`WEAPON_SNSPISTOL`] = 'SNS Pistol', + [`WEAPON_AUTOSHOTGUN`] = 'Sweeper Shotgun', + [`WEAPON_RAYMINIGUN`] = 'Widowmaker', + [`WEAPON_HATCHET`] = 'Hatchet', + [`WEAPON_DAGGER`] = 'Dagger', + [`WEAPON_BATTLEAXE`] = 'Battle Axe', + [`WEAPON_COMBATPISTOL`] = 'Combat Pistol', + [`WEAPON_HOMINGLAUNCHER`] = 'Homing Launcher', + [`WEAPON_SNOWBALL`] = 'Snow Ball', + [`WEAPON_FIREWORK`] = 'Firework Launcher', + [`WEAPON_COMPACTLAUNCHER`] = 'Compact Grenade Launcher', + [`WEAPON_RAILGUNXM3`] = 'Railgun XM3', + [`WEAPON_SNOWLAUNCHER`] = 'Snowball Launcher', + [`WEAPON_CROWBAR`] = 'Crowbar', + [`WEAPON_PRECISIONRIFLE`] = 'Precision Rifle', + [`WEAPON_ASSAULTSMG`] = 'Assault SMG', + [`WEAPON_PETROLCAN`] = 'Gas Can', + [`WEAPON_MG`] = 'Machine Gun', + [`WEAPON_CARBINERIFLE_MK2`] = 'Carbine Rifle MK2', + [`WEAPON_BOTTLE`] = 'Bottle', + [`WEAPON_REVOLVER`] = 'Revolver', + [`WEAPON_FERTILIZERCAN`] = 'Fertilizer Can', + [`WEAPON_APPISTOL`] = 'AP Pistol', + [`WEAPON_GUSENBERG`] = 'Gusenberg', + [`WEAPON_FLAREGUN`] = 'Flare Gun', + [`WEAPON_ASSAULTSHOTGUN`] = 'Assault Shotgun', + [`WEAPON_COMBATSHOTGUN`] = 'Combat Shotgun', + [`WEAPON_MARKSMANPISTOL`] = 'Marksman Pistol', + [`WEAPON_GRENADE`] = 'Grenade', + [`WEAPON_MUSKET`] = 'Musket', + [`WEAPON_RPG`] = 'RPG', + [`WEAPON_RAYCARBINE`] = 'Unholy Hellbringer', + [`WEAPON_SMG`] = 'SMG', + [`WEAPON_HEAVYRIFLE`] = 'Heavy Rifle', + [`WEAPON_STONE_HATCHET`] = 'Stone Hatchet', + [`WEAPON_HEAVYSHOTGUN`] = 'Heavy Shotgun', + [`WEAPON_MACHETE`] = 'Machete', + [`WEAPON_MINIGUN`] = 'Minigun', + [`WEAPON_SPECIALCARBINE_MK2`] = 'Special Carbine MK2', + [`WEAPON_FLASHLIGHT`] = 'Flashlight', + [`WEAPON_SWITCHBLADE`] = 'Switchblade', + [`WEAPON_BATTLERIFLE`] = 'Battle Rifle', + [`WEAPON_HEAVYSNIPER`] = 'Heavy Sniper', + [`WEAPON_DOUBLEACTION`] = 'Double Action Revolver', + [`WEAPON_SAWNOFFSHOTGUN`] = 'Sawn Off Shotgun', + [`WEAPON_SNSPISTOL_MK2`] = 'SNS Pistol MK2', + [`WEAPON_PISTOL50`] = 'Pistol .50', + [`WEAPON_MARKSMANRIFLE_MK2`] = 'Marksman Rifle MK2', + [`WEAPON_PISTOL`] = 'Pistol', + [`WEAPON_MOLOTOV`] = 'Molotov', + [`WEAPON_PISTOL_MK2`] = 'Pistol MK2', + [`WEAPON_BALL`] = 'Ball', + [`WEAPON_PUMPSHOTGUN`] = 'Pump Shotgun', + [`WEAPON_MINISMG`] = 'Mini SMG', + [`WEAPON_PUMPSHOTGUN_MK2`] = 'Pump Shotgun MK2', + [`WEAPON_COMBATMG`] = 'Combat MG', + [`WEAPON_STICKYBOMB`] = 'Sticky Bomb', + [`WEAPON_HAMMER`] = 'Hammer', + [`WEAPON_CANDYCANE`] = 'Candy Cane', + [`WEAPON_KNIFE`] = 'Knife', + [`WEAPON_HEAVYSNIPER_MK2`] = 'Heavy Sniper MK2', + [`WEAPON_BAT`] = 'Bat', + [`WEAPON_COMBATMG_MK2`] = 'Combat MG MK2', + [`WEAPON_POOLCUE`] = 'Pool Cue', + [`WEAPON_STUNGUN`] = 'Tazer', + [`WEAPON_TACTICALRIFLE`] = 'Tactical Rifle', + [`WEAPON_HAZARDCAN`] = 'Hazard Can', + [`WEAPON_SNIPERRIFLE`] = 'Sniper Rifle', + [`WEAPON_STUNROD`] = 'The Shocker' + } +} \ No newline at end of file diff --git a/resources/scully_lawenforcement/fxmanifest.lua b/resources/scully_lawenforcement/fxmanifest.lua new file mode 100644 index 000000000..efeccfacd --- /dev/null +++ b/resources/scully_lawenforcement/fxmanifest.lua @@ -0,0 +1,68 @@ +fx_version 'cerulean' +game 'gta5' +lua54 'yes' +use_experimental_fxv2_oal 'yes' + +name 'scully_lawenforcement' +author 'https://discord.gg/scully' +version '1.2.5' + +dependencies { + '/server:7290', + '/onesync', + '/assetpacks' +} + +shared_scripts { + 'modules/cache.lua', + 'modules/utils.lua', + 'modules/db.lua', + 'modules/sync.lua' +} + +client_scripts { + 'modules/ui.lua', + 'modules/menubuilder.lua', + 'client/main.lua', + 'client/blockers.lua', + 'client/functions.lua', + 'client/events.lua', + 'client/alerts.lua', + 'client/menu.lua', + 'client/exports.lua', + 'client/quickbinds.lua' +} + +server_scripts { + 'modules/logger.lua', + 'server/main.lua', + 'server/cad.lua', + 'server/exports.lua', + 'server/version_check.lua' +} + +files { + 'locales/*.lua', + 'data/*.lua', + 'metas/weaponarchetypes.meta', + 'metas/weaponanimations.meta', + 'metas/pedpersonality.meta', + 'metas/weapons.meta', + 'audiodirectory/scully_lawenforcement_sounds.dat54.rel', + 'audiodirectory/scully_lawenforcement_sounds.awc' +} + +data_file 'WEAPON_METADATA_FILE' 'metas/weaponarchetypes.meta' +data_file 'WEAPON_ANIMATIONS_FILE' 'metas/weaponanimations.meta' +data_file 'PED_PERSONALITY_FILE' 'metas/pedpersonality.meta' +data_file 'WEAPONINFO_FILE' 'metas/weapons.meta' + +data_file 'AUDIO_WAVEPACK' 'audiodirectory' +data_file 'AUDIO_SOUNDDATA' 'audiodirectory/scully_lawenforcement_sounds.dat' + +escrow_ignore { + 'locales/*.lua', + 'data/*.lua' +} + +dependency '/assetpacks' \ No newline at end of file diff --git a/resources/scully_lawenforcement/locales/en.lua b/resources/scully_lawenforcement/locales/en.lua new file mode 100644 index 000000000..f98f322d2 --- /dev/null +++ b/resources/scully_lawenforcement/locales/en.lua @@ -0,0 +1,197 @@ +return { + weaponPliers = 'Cutting Pliers', + breakCuffsCommand = 'breakcuffs', + breakCuffsInfo = 'Use cutting pliers to break off cuffs', + + dutyCommand = 'duty', + dutyInfo = 'Toggle your duty status', + dutyAlert = 'Press ~INPUT_PICKUP~ to go %s', + onduty = '~g~on duty~w~', + offduty = '~r~off duty~w~', + + bacCommand = 'setBAC', + bacInfo = 'Set your blood alcohol content', + bacCommandParam = 'percentage', + bacParamInfo = 'Number between 0.00 - 0.40', + bacInvalid = 'Invalid BAC value. Please enter a number between 0.00 and 0.40.', + bacValueSet = 'BAC value set to %.2f!', + + menuCommand = 'leomenu', + keybindLabel = 'LEO Menu', + + departmentCommand = 'department', + departmentInfo = 'Change your current department', + departmentCommandParam = 'department', + departmentParamInfo = 'Department name: %s', + departmentInvalid = 'Invalid or missing department name', + departmentInvalidPermissions = 'You do not have permission to join this department', + departmentOffDutyFirst = 'You must go off-duty before changing your department!', + departmentChanged = 'You changed your department', + + mainMenuTitle = 'LEO Menu', + mainMenuDescription = 'Department:~w~ ~italic~%s', + + checkInfoTitle = 'Check Information', + nameCheck = 'Name Check', + nameCheckDescription = 'Run a name check in the CAD', + nameCheckInputTitle = 'What name would you like to check?', + nameCheckResult = 'Name check result:', + nameLabel = 'Name: %s', + dobLabel = 'Date of Birth: %s', + genderLabel = 'Gender: %s', + addressLabel = 'Address: %s', + hairColorLabel = 'Hair Color: %s', + raceLabel = 'Race: %s', + buildLabel = 'Build: %s', + occupationLabel = 'Occupation: %s', + statusLabel = 'Status: %s', + warrantLabel = 'Warrant: %s', + permitInformationTitle = 'Permit Information', + driversLicenseLabel = 'Drivers License: %s', + weaponsLicenseLabel = 'Weapons License: %s', + huntingLicenseLabel = 'Hunting License: %s', + fishingLicenseLabel = 'Fishing License: %s', + commercialLicenseLabel = 'Commercial License: %s', + boatingLicenseLabel = 'Boating License: %s', + aviationLicenseLabel = 'Aviation License: %s', + medicalInformationTitle = 'Medical Information', + bloodTypeLabel = 'Blood Type: %s', + emergencyContactLabel = 'Emergency Contact: %s', + allergiesLabel = 'Allergies: %s', + medicationLabel = 'Medication: %s', + plateCheck = 'Plate Check', + plateCheckDescription = 'Run a plate check in the CAD', + plateCheckInputTitle = 'What plate would you like to check?', + plateCheckResult = 'Plate check result:', + plateLabel = 'Plate: %s', + ownerLabel = 'Owner: %s', + makemodelLabel = 'Make/Model: %s', + vehcolorLabel = 'Color: %s', + insuranceLabel = 'Insurance: %s', + regstateLabel = 'Registration State: %s', + flagsLabel = 'Flags: %s', + noResultsFound = 'No results found!', + + playerOptionsTitle = 'Player Options', + playerOptionsDescription = 'Interact with the closest player', + searchForWeapons = 'Search For Weapons', + searchForWeaponsDescription = 'Check if the player has any weapons', + weaponsFound = 'Weapons found:', + gsrTest = 'GSR Test', + gsrTestDescription = 'Check for gunshot residue', + gsrResults = 'Test results were %s for gunshot residue!', + gsrPositive = '~g~positive~w~', + gsrNegative = '~r~negative~w~', + bacTest = 'BAC Test', + bacTestDescription = 'Blood alcohol content test', + bacResults = 'Blood alcohol content test results were %s', + bacLow = '~g~%.2f%%~w~', + bacMedium = '~o~%.2f%%~w~', + bacHigh = '~r~%.2f%%~w~', + cuffOptions = 'Cuff Options', + cuffOptionsDescription = 'Soft cuff - Can Move\nHard cuff - Can\'t Move', + removeCuffs = 'Remove Cuffs', + softCuff = 'Soft Cuff', + hardCuff = 'Hard Cuff', + revive = 'Revive', + reviveDescription = 'Bring them back to the world of the living', + drag = 'Drag', + dragDescription = 'Escort them pesky players who don\'t listen', + forceSit = 'Force Sit', + forceSitDescription = 'Make them sit down', + placeInOutVehicle = 'Place In/Out of Vehicle', + placeInOutVehicleDescription = 'Place them in / remove them from a vehicle', + + jailOptionsTitle = 'Jail Options', + jail = 'Jail', + jailDescription = 'Jail the closest player', + jailInputTitleMins = 'How long would you like to jail in minutes', + jailInputTitleSecs = 'How long would you like to jail in seconds', + unjail = 'Unjail', + unjailDescription = 'Unjail a player by ID', + unjailInputTitle = 'What is the ID of the player to unjail?', + + propSpawnerTitle = 'Prop Spawner', + propControls = '~INPUT_FRONTEND_ACCEPT~ Place\n~INPUT_FRONTEND_LEFT~ Rotate Left\n~INPUT_FRONTEND_RIGHT~ Rotate Right\n~INPUT_FRONTEND_RRIGHT~ Cancel', + deleteProp = 'Delete Prop', + deletePropDescription = 'Delete a nearby spawned prop', + + vehicleSpawnerTitle = 'Vehicle Spawner', + deleteVehicle = 'Delete Vehicle', + deleteVehicleDescription = 'Delete the vehicle you are sitting in', + + loadoutOptionsTitle = 'Loadout Options', + removeAllWeapons = 'Remove All Weapons', + ballisticShield = 'Ballistic Shield', + ballisticShieldDescription = 'An extra layer of protection', + ballisticShieldOff = 'Off', + ballisticShieldOnBack = 'On Back', + ballisticShieldEquipped = 'Equipped', + + outfitOptionsTitle = 'Outfit Options', + + miscTitle = 'Misc', + miscDescription = 'Miscellaneous options such as menu settings', + rightAlignment = 'Right Alignment', + rightAlignmentDescription = 'Toggle to switch your menu between left and right alignment', + + clickToSpawn = 'Click to spawn: %s', + clickToSwitchOutfit = 'Click to switch outfit: %s', + shotsFired = 'Shots Fired', + washGSR = 'Press ~INPUT_PICKUP~ to wash off gunshot residue', + washedGSR = 'You washed off the gunshot residue', + noPlayersNearby = 'No players nearby!', + noVehiclesNearby = 'No vehicles nearby!', + noPropsNearby = 'No props nearby!', + unknown = 'Unknown', + needToCuffFirst = 'You need to cuff them first!', + cantReviveRightNow = 'You can\'t revive right now!', + cuffEscape = '~w~Press ~b~[%s]~w~ to escape', + + jailedForMins = 'You have been jailed for %s minute(s)!', + jailedForSecs = 'You have been jailed for %s second(s)!', + jailTimeRemaining = '~b~Time Remaining: ~w~%s %s', + jailMins = 'minute(s)', + jailSecs = 'second(s)', + jailReleased = 'You have been released, don\'t be getting into anymore trouble out there!', + jailNoEscape = 'You have been sent back to jail, do not try to escape again!', + jailNoVehicles = 'You are not allowed vehicles inside prison!', + jailJob = 'Press ~INPUT_PICKUP~ to work', + jailJobCooldown = 'Please wait before doing this again', + jailWork = 'Jail Work', + + quickBindSoftCuffCommand = 'quickbind-softcuff', + quickBindHardCuffCommand = 'quickbind-hardcuff', + quickBindDragCommand = 'quickbind-drag', + + tackleCommand = 'tackle', + tackleInfo = 'Tackle (LEO)', + + panicCommand = 'panic', + panicInfo = 'Send a distress signal', + panicButton = 'Panic Button', + + send911Command = '911', + send911Info = 'Send an alert to available law enforcement', + send911Param = 'message', + send911ParamInfo = 'Why do you require law enforcement?', + send911Call = '911 Call', + waitBeforeSending = 'Please wait before trying to send another 911 call!', + + logTitle = 'Law Enforcement Logs', + logOnDuty = '**Player:** %s | %s\n**Status: 10-41**', + logOffDuty = '**Player:** %s | %s\n**Status: 10-42**\n**Duration:** %s', + logActionTackle = '**Player:** %s | %s\n**Target:** %s | %s\n**Action:** Tackled Player', + logActionCuffed = '**Player:** %s | %s\n**Target:** %s | %s\n**Action:** Cuffed / Uncuffed Player', + logActionVehicle = '**Player:** %s | %s\n**Target:** %s | %s\n**Action:** Placed Player In / Out Vehicle', + logActionDrag = '**Player:** %s | %s\n**Target:** %s | %s\n**Action:** Dragged / Undragged Player', + logActionJailed = '**Player:** %s | %s\n**Target:** %s | %s\n**Action:** Jailed Player', + logActionUnjailed = '**Player:** %s | %s\n**Target:** %s | %s\n**Action:** Unjailed Player', + logActionRevive = '**Player:** %s | %s\n**Target:** %s | %s\n**Action:** Revived', + + forcedOffDutyForAFKWarning = 'If you do not move soon you will be forced off-duty due to being AFK!', + forcedOffDutyForAFK = 'You are not off-duty due to being AFK!', + + cheaterChangedStatebag = 'Attempted to change a restricted statebag.', + cheaterTriggeredEvent = 'Attempted to trigger a restricted event.' +} \ No newline at end of file diff --git a/resources/scully_lawenforcement/metas/pedpersonality.meta b/resources/scully_lawenforcement/metas/pedpersonality.meta new file mode 100644 index 000000000..0d33eb403 --- /dev/null +++ b/resources/scully_lawenforcement/metas/pedpersonality.meta @@ -0,0 +1,383 @@ + + + + + + UNHOLSTER_UNARMED + + + + WEAPON_PLIERS + + unarmed_holster_unarmed + + + + + UNHOLSTER_2H_MELEE + + + + WEAPON_PLIERS + + 2h_melee_holster_unarmed + + + + + UNHOLSTER_1H + + + + WEAPON_PLIERS + + 1h_holster_unarmed + + + + + UNHOLSTER_2H + + + + WEAPON_PLIERS + + 2h_holster_unarmed + + + + + UNHOLSTER_MINIGUN + + + + WEAPON_PLIERS + + mini_holster_2h_unarmed + + + + + UNHOLSTER_UNARMED_STEALTH + + + + WEAPON_PLIERS + + unarmed_holster_unarmed + + + + + UNHOLSTER_2H_MELEE_STEALTH + + + + WEAPON_PLIERS + + unarmed_holster_unarmed + + + + + UNHOLSTER_1H_STEALTH + + + + WEAPON_PLIERS + + 1h_holster_unarmed + + + + + UNHOLSTER_2H_STEALTH + + + + WEAPON_PLIERS + + 2h_holster_unarmed + + + + + + + DEFAULT_ACTION + + + + + WEAPON_PLIERS + + + + MOVE_ACTION@P_M_ZERO@UNARMED@CORE + + + + + + + + + MOVE_ACTION@GENERIC@TRANS@UNARMED + + MOVE_ACTION@P_M_ZERO@HOLSTER + UNHOLSTER_UNARMED + + + + + + + + WEAPON_PLIERS + + + + MOVE_STEALTH@P_M_ZERO@UNARMED@CORE + WEAPONS@MELEE_STEALTH_1H + UpperbodyAndIk_filter + + + + + + + MOVE_STEALTH@GENERIC@TRANS@UNARMED + + MOVE_STEALTH@P_M_ZERO@HOLSTER + UNHOLSTER_UNARMED_STEALTH + + + + + + + + + + MP_FEMALE_ACTION + + + + + WEAPON_PLIERS + + + + MOVE_ACTION@MP_FEMALE@UNARMED@CORE + + + + + + + + + MOVE_ACTION@MP_FEMALE@UNARMED@TRANS@ + + MOVE_ACTION@P_M_ZERO@HOLSTER + UNHOLSTER_UNARMED + + + + + + + + WEAPON_PLIERS + + + + MOVE_STEALTH@P_M_ZERO@UNARMED@CORE + WEAPONS@MELEE_STEALTH_1H + UpperbodyAndIk_filter + + + + + + + MOVE_STEALTH@MP_FEMALE@UNARMED@TRANS + + MOVE_STEALTH@P_M_ZERO@HOLSTER + UNHOLSTER_UNARMED_STEALTH + + + + + + + + + + MICHAEL_ACTION + + + + + WEAPON_PLIERS + + + + MOVE_ACTION@P_M_ZERO@UNARMED@CORE + + + + + + + + + MOVE_ACTION@P_M_ZERO@UNARMED@TRANS@A + + MOVE_ACTION@P_M_ZERO@HOLSTER + UNHOLSTER_UNARMED + + + + + + + + WEAPON_PLIERS + + + + MOVE_STEALTH@P_M_ZERO@UNARMED@CORE + WEAPONS@MELEE_STEALTH_1H + UpperbodyAndIk_filter + + + + + + + MOVE_STEALTH@P_M_ZERO@UNARMED@TRANS@A + + MOVE_STEALTH@P_M_ZERO@HOLSTER + UNHOLSTER_UNARMED_STEALTH + + + + + + + + + + FRANKLIN_ACTION + + + + + WEAPON_PLIERS + + + + MOVE_ACTION@P_M_ONE@UNARMED@CORE + + + + + + + + + MOVE_ACTION@P_M_ONE@UNARMED@TRANS@A + + MOVE_ACTION@P_M_ONE@HOLSTER + UNHOLSTER_UNARMED + + + + + + + + WEAPON_PLIERS + + + + MOVE_STEALTH@P_M_ONE@UNARMED@CORE + WEAPONS@MELEE_STEALTH_1H@P_M_ONE + UpperbodyAndIk_filter + + + + + + + MOVE_STEALTH@P_M_ONE@UNARMED@TRANS@A + + MOVE_STEALTH@P_M_ONE@HOLSTER + UNHOLSTER_UNARMED_STEALTH + + + + + + + + + + TREVOR_ACTION + + + + + WEAPON_PLIERS + + + + MOVE_ACTION@P_M_TWO@UNARMED@CORE + + + + + + + + + MOVE_ACTION@P_M_TWO@UNARMED@TRANS@A + + MOVE_ACTION@P_M_TWO@HOLSTER + UNHOLSTER_UNARMED + + + + + + + + WEAPON_PLIERS + + + + MOVE_STEALTH@P_M_TWO@UNARMED@CORE + WEAPONS@MELEE_STEALTH_1H@P_M_TWO + UpperbodyAndIk_filter + + + + + + + MOVE_STEALTH@P_M_TWO@UNARMED@TRANS@A + + MOVE_STEALTH@P_M_TWO@HOLSTER + UNHOLSTER_UNARMED_STEALTH + + + + + + + + + + + diff --git a/resources/scully_lawenforcement/metas/weaponanimations.meta b/resources/scully_lawenforcement/metas/weaponanimations.meta new file mode 100644 index 000000000..20b7ff6dd --- /dev/null +++ b/resources/scully_lawenforcement/metas/weaponanimations.meta @@ -0,0 +1,112 @@ + + + + + + + + + + + Cover_Wpn_Melee1h + weapons@melee_1h + BothArms_filter + + move_strafe_melee_unarmed + move_ped_strafing_stealth + move_strafe@knife + melee@holster + + + + + + + + + + + + + melee@knife@streamed_core + melee@knife@streamed_variations + + + + reaction@shellshock@unarmed + + + + RightArm_NoSpine_filter + RightArm_NoSpine_filter + + + + + + + + + + + + + Default + + + move_m@generic + + + + Cover_Wpn_Melee1h + weapons@first_person@aim_idle@generic@melee@knife@shared@core + BothArms_filter + + move_strafe_melee_unarmed_fps + move_ped_strafing_stealth + move_strafe@melee_knife_fps + weapons@first_person@aim_idle@generic@melee@knife@shared@core + weapons@first_person@aim_rng@generic@pistol@pistol_str + + + + + + + + + + + + melee@knife@streamed_core_fps + melee@knife@streamed_variations + + + + reaction@shellshock@unarmed + + + + RightArm_NoSpine_filter + RightArm_NoSpine_filter + + + + + + + + + weapons@first_person@aim_idle@p_m_zero@melee@knife@aim_trans@unholster_to_idle + weapons@first_person@aim_idle@remote_clone@melee@one_handed@shared@core + + weapons@first_person@aim_idle@p_m_zero@melee@knife@fidgets@a + weapons@first_person@aim_idle@p_m_zero@melee@knife@fidgets@b + weapons@first_person@aim_idle@p_m_zero@melee@knife@fidgets@c + + + + + + + diff --git a/resources/scully_lawenforcement/metas/weaponarchetypes.meta b/resources/scully_lawenforcement/metas/weaponarchetypes.meta new file mode 100644 index 000000000..d2510d763 --- /dev/null +++ b/resources/scully_lawenforcement/metas/weaponarchetypes.meta @@ -0,0 +1,13 @@ + + + + + + w_me_pliers_01 + w_me_pliers_01 + NULL + + + + + diff --git a/resources/scully_lawenforcement/metas/weapons.meta b/resources/scully_lawenforcement/metas/weapons.meta new file mode 100644 index 000000000..f4e8b4a04 --- /dev/null +++ b/resources/scully_lawenforcement/metas/weapons.meta @@ -0,0 +1,240 @@ + + + + + + + + SLOT_WEAPON_PLIERS + + + + + + + + + AMMO_PLIERS + + + + + + + + WEAPON_PLIERS + w_me_pliers_01 + + + + + Melee + \ No newline at end of file diff --git a/resources/scully_lawenforcement/modules/cache.lua b/resources/scully_lawenforcement/modules/cache.lua new file mode 100644 index 000000000..3329880df Binary files /dev/null and b/resources/scully_lawenforcement/modules/cache.lua differ diff --git a/resources/scully_lawenforcement/modules/db.lua b/resources/scully_lawenforcement/modules/db.lua new file mode 100644 index 000000000..9d0b32d09 Binary files /dev/null and b/resources/scully_lawenforcement/modules/db.lua differ diff --git a/resources/scully_lawenforcement/modules/logger.lua b/resources/scully_lawenforcement/modules/logger.lua new file mode 100644 index 000000000..4313872fb Binary files /dev/null and b/resources/scully_lawenforcement/modules/logger.lua differ diff --git a/resources/scully_lawenforcement/modules/menubuilder.lua b/resources/scully_lawenforcement/modules/menubuilder.lua new file mode 100644 index 000000000..37aa9b781 Binary files /dev/null and b/resources/scully_lawenforcement/modules/menubuilder.lua differ diff --git a/resources/scully_lawenforcement/modules/sync.lua b/resources/scully_lawenforcement/modules/sync.lua new file mode 100644 index 000000000..7c80bc10c Binary files /dev/null and b/resources/scully_lawenforcement/modules/sync.lua differ diff --git a/resources/scully_lawenforcement/modules/ui.lua b/resources/scully_lawenforcement/modules/ui.lua new file mode 100644 index 000000000..db450b48d Binary files /dev/null and b/resources/scully_lawenforcement/modules/ui.lua differ diff --git a/resources/scully_lawenforcement/modules/utils.lua b/resources/scully_lawenforcement/modules/utils.lua new file mode 100644 index 000000000..84881dcdd Binary files /dev/null and b/resources/scully_lawenforcement/modules/utils.lua differ diff --git a/resources/scully_lawenforcement/scully_lawenforcement.cfg b/resources/scully_lawenforcement/scully_lawenforcement.cfg new file mode 100644 index 000000000..07045401d --- /dev/null +++ b/resources/scully_lawenforcement/scully_lawenforcement.cfg @@ -0,0 +1,46 @@ +setr scully:uniqueKvpId "change-me" # Set to something unique. + +set scully:webhook:duty "false" # To enable this log replace "false" with "webhook url" +set scully:webhook:action "false" # To enable this log replace "false" with "webhook url" +set scully:webhook:jail "false" # To enable this log replace "false" with "webhook url" + +set scully_lawenforcement:enablePermissions "true" # Set to "false" to allow anyone to use the menu. +set scully_lawenforcement:enableDutyBlips "true" # Set to "false" to disable the duty blips. +set scully_lawenforcement:cadUrl "https://example.com/cad" # The url for your CAD website. +set scully_lawenforcement:reviveEvent "scully_lawenforcement:revivePlayer" # Change the client event if you wish to use a different revive system. + +setr scully_lawenforcement:menuKeybind "F5" # The keybind to open the LEO Menu. (https://docs.fivem.net/docs/game-references/input-mapper-parameter-ids/keyboard/) +setr scully_lawenforcement:menuKeybindController "" # Same as above but with a controller. (https://docs.fivem.net/docs/game-references/input-mapper-parameter-ids/pad_digitalbutton/) +setr scully_lawenforcement:locale "en" # The language you wish to display the menu in. +setr scully_lawenforcement:enablePanicButtonCommand "true" # Set to "false" to disable the panic button command. +setr scully_lawenforcement:enable911Command "true" # Set to "false" to disable the 911 command. +setr scully_lawenforcement:enableDepartmentCommand "true" # Set to "false" to disable the department command. +setr scully_lawenforcement:enableDutyLocations "true" # Set to "false" if you want to go on-duty using a command instead. +setr scully_lawenforcement:enableForceInactiveOffDuty "false" # Set to "true" if you want AFK players to automatically go off-duty after 10 minutes. +setr scully_lawenforcement:enableCad "true" # Set to "false" if you don't wish to use the integrated Hamz CAD support. +setr scully_lawenforcement:enableJailSystem "true" # Set to "false" to disable the jail system. +setr scully_lawenforcement:enableJailEnterScene "true" # Set to "false" to disable the bus scene. +setr scully_lawenforcement:enableJailExitScene "true" # Set to "false" to disable the walk out scene. +setr scully_lawenforcement:enableJailMugshotScene "true" # Set to "false" to disable the mugshot scene. +setr scully_lawenforcement:enableJailJobs "true" # Set to "false" to disable the jail jobs. +setr scully_lawenforcement:jailInMinutes "true" # Set to "false" if you wish to jail in seconds instead. +setr scully_lawenforcement:enableWeaponSearch "true" # Set to "false" to disable the weapon search option. +setr scully_lawenforcement:enableSearchCuffRequirement "false" # Set to "true" to require players to be cuffed before searching. +setr scully_lawenforcement:enableGSR "true" # Set to "false" to disable the GSR system. +setr scully_lawenforcement:enableBAC "true" # Set to "false" to disable the BAC system. +setr scully_lawenforcement:gsrWashTime 10000 # Change to adjust how long it takes to wash gunshot residue off. Default is 10 seconds. +setr scully_lawenforcement:enablePropSpawner "true" # Set to "false" to disable the prop system. +setr scully_lawenforcement:enableVehicleSpawner "true" # Set to "false" to disable the vehicle spawner. +setr scully_lawenforcement:enableLoadoutOptions "true" # Set to "false" to disable the loadout options. +setr scully_lawenforcement:enableOutfitOptions "true" # Set to "false" to disable the outfit menu. +setr scully_lawenforcement:enableGunshotAlerts "true" # Set to "false" to disable the gunshot / shotspotter alerts. +setr scully_lawenforcement:enableCuffProps "true" # Set to "false" if you don't want players to have visible handcuffs while cuffed. +setr scully_lawenforcement:cuffClothingIds [7, 41, 25] # Drawable ID, Male variation ID, Female variation ID. +setr scully_lawenforcement:enableCuffKeys [1, 2, 38, 47, 245, 249] # Keybinds that are enabled while cuffed. +setr scully_lawenforcement:enableBreakOutCuffs "true" # Set to "false" if you don't want to allow players to break out of cuffs. +setr scully_lawenforcement:enableEscapeCuffs "true" # Set to "false" if you don't want to allow players to escape from being cuffed. +setr scully_lawenforcement:enableRevive "true" # Set to "false" to disable the revive option. +setr scully_lawenforcement:enableQuickBinds "true" # Set to "false" to disable the quick bind system. +setr scully_lawenforcement:quickBinds ['NUMPAD7', 'NUMPAD4', 'NUMPAD1'] # First keybind = Soft Cuff, Second keybind = Hard Cuff, Third keybind = Drag +setr scully_lawenforcement:enableTackle "true" # Set to "false" to disable the tackle system. +setr scully_lawenforcement:tackleKeybind "G" # The keybind to tackle another player. \ No newline at end of file diff --git a/resources/scully_lawenforcement/server/cad.lua b/resources/scully_lawenforcement/server/cad.lua new file mode 100644 index 000000000..5306648fc Binary files /dev/null and b/resources/scully_lawenforcement/server/cad.lua differ diff --git a/resources/scully_lawenforcement/server/exports.lua b/resources/scully_lawenforcement/server/exports.lua new file mode 100644 index 000000000..3de60fcdb Binary files /dev/null and b/resources/scully_lawenforcement/server/exports.lua differ diff --git a/resources/scully_lawenforcement/server/main.lua b/resources/scully_lawenforcement/server/main.lua new file mode 100644 index 000000000..efbe9661a Binary files /dev/null and b/resources/scully_lawenforcement/server/main.lua differ diff --git a/resources/scully_lawenforcement/server/version_check.lua b/resources/scully_lawenforcement/server/version_check.lua new file mode 100644 index 000000000..ff7f16f17 Binary files /dev/null and b/resources/scully_lawenforcement/server/version_check.lua differ diff --git a/resources/scully_lawenforcement/stream/[animations]/scully_lawenforcement@arrest.ycd b/resources/scully_lawenforcement/stream/[animations]/scully_lawenforcement@arrest.ycd new file mode 100644 index 000000000..41a92731e Binary files /dev/null and b/resources/scully_lawenforcement/stream/[animations]/scully_lawenforcement@arrest.ycd differ diff --git a/resources/scully_lawenforcement/stream/[weapons]/w_me_pliers_01.ydr b/resources/scully_lawenforcement/stream/[weapons]/w_me_pliers_01.ydr new file mode 100644 index 000000000..1c53ca6e3 --- /dev/null +++ b/resources/scully_lawenforcement/stream/[weapons]/w_me_pliers_01.ydr @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ea05f6a9e99f89e59b4b5ef16be7fbf2dae22ffcd41f27e79f100ddeb2391cc5 +size 123656 diff --git a/resources/scully_lawenforcement/stream/hud.gfx b/resources/scully_lawenforcement/stream/hud.gfx new file mode 100644 index 000000000..359bc4c56 Binary files /dev/null and b/resources/scully_lawenforcement/stream/hud.gfx differ diff --git a/resources/scully_lawenforcement/stream/menubuilder.ytd b/resources/scully_lawenforcement/stream/menubuilder.ytd new file mode 100644 index 000000000..36f9243cb --- /dev/null +++ b/resources/scully_lawenforcement/stream/menubuilder.ytd @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f9b5db5e6bb2386fb062ef4265c83225ea5549ef34714a4bb22b2d6aeacd303d +size 1109 diff --git a/resources/um23tahoe/__resource.lua b/resources/um23tahoe/__resource.lua new file mode 100644 index 000000000..e85b41837 --- /dev/null +++ b/resources/um23tahoe/__resource.lua @@ -0,0 +1,20 @@ +resource_manifest_version '77731fab-63ca-442c-a67b-abc70f28dfa5' + +files { + 'vehicles.meta', + 'carvariations.meta', + 'carcols.meta', + 'handling.meta', + 'vehiclelayouts.meta', -- Not Required +} + +data_file 'HANDLING_FILE' 'handling.meta' +data_file 'VEHICLE_METADATA_FILE' 'vehicles.meta' +data_file 'CARCOLS_FILE' 'carcols.meta' +data_file 'VEHICLE_VARIATION_FILE' 'carvariations.meta' +data_file 'VEHICLE_LAYOUTS_FILE' 'vehiclelayouts.meta' -- Not Required + + +client_script { + 'vehicle_names.lua' -- Not Required +} \ No newline at end of file diff --git a/resources/um23tahoe/carcols.meta b/resources/um23tahoe/carcols.meta new file mode 100644 index 000000000..c99c982ad --- /dev/null +++ b/resources/um23tahoe/carcols.meta @@ -0,0 +1,517 @@ + + + + + + um23tahoe + + + + + + + VehicleLight_sirenlight + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/resources/um23tahoe/carvariations.meta b/resources/um23tahoe/carvariations.meta new file mode 100644 index 000000000..fe29e05c1 --- /dev/null +++ b/resources/um23tahoe/carvariations.meta @@ -0,0 +1,63 @@ + + + + + + um23tahoe + + + + 0 + 134 + 0 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 801_18CHARG_modkit + + + + + + + + + + \ No newline at end of file diff --git a/resources/um23tahoe/handling.meta b/resources/um23tahoe/handling.meta new file mode 100644 index 000000000..dbcb517ba --- /dev/null +++ b/resources/um23tahoe/handling.meta @@ -0,0 +1,67 @@ + + + + + + 23TAHOEPPV + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 440010 + 0 + 0 + AVERAGE + + + + + + + + + + + + \ No newline at end of file diff --git a/resources/um23tahoe/stream/um23tahoe.yft b/resources/um23tahoe/stream/um23tahoe.yft new file mode 100644 index 000000000..fa2a2f00f --- /dev/null +++ b/resources/um23tahoe/stream/um23tahoe.yft @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d3e8770a7d50b16a2ab11ed691d7274705cb5e02399448d6c4d5a6f8d4e3c667 +size 12706217 diff --git a/resources/um23tahoe/stream/um23tahoe.ytd b/resources/um23tahoe/stream/um23tahoe.ytd new file mode 100644 index 000000000..eaa4051d7 --- /dev/null +++ b/resources/um23tahoe/stream/um23tahoe.ytd @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:370654f56e93534f4002b424f202696c4a474443d03af079f5d0c68c8fb2b935 +size 12059250 diff --git a/resources/um23tahoe/stream/um23tahoe_hi.yft b/resources/um23tahoe/stream/um23tahoe_hi.yft new file mode 100644 index 000000000..73ed21c15 --- /dev/null +++ b/resources/um23tahoe/stream/um23tahoe_hi.yft @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ce084eaa361b9d846ec6b0ba5b184ab405d000be16e1b5eeda2ade069fa5471a +size 12706097 diff --git a/resources/um23tahoe/ulc.lua b/resources/um23tahoe/ulc.lua new file mode 100644 index 000000000..fe5d85179 --- /dev/null +++ b/resources/um23tahoe/ulc.lua @@ -0,0 +1,50 @@ +return {names = {"um23tahoe"}, + steadyBurnConfig = { + forceOn = false, useTime = false, + disableWithLights = false, + sbExtras = {} + }, + parkConfig = { + usePark = false, + useSync = false, + syncWith = {}, + pExtras = {}, + dExtras = {} + }, + hornConfig = { + useHorn = false, + hornExtras = {}, + disableExtras = {} + }, + brakeConfig = { + useBrakes = false, + speedThreshold = 3, + brakeExtras = {}, + disableExtras = {} + }, + reverseConfig = { + useReverse = false, + reverseExtras = {}, + disableExtras = {} + }, + doorConfig = { + useDoors = true, + driverSide = {enable = {}, disable = {}}, + passSide = {enable = {}, disable = {}}, + trunk = {enable ={4}, disable = {}} + }, + buttons = { + {label = "Stage 2", key = 1, color = "green", extra = 2, linkedExtras = {}, oppositeExtras = {}, offExtras = {}, repair = false}, + {label = "Stage 3", key = 2, color = "green", extra = 1, linkedExtras = {}, oppositeExtras = {}, offExtras = {}, repair = false}, + {label = "TKD", key = 3, color = "green", extra = 3, linkedExtras = {}, oppositeExtras = {}, offExtras = {}, repair = false} + }, + stages = { + useStages = true, + stageKeys = {1,2}, + }, + defaultStages = { + useDefaults = true, + enableKeys = {1}, + disableKeys = {} + } +} \ No newline at end of file diff --git a/resources/um23tahoe/vehicles.meta b/resources/um23tahoe/vehicles.meta new file mode 100644 index 000000000..5c4153e69 --- /dev/null +++ b/resources/um23tahoe/vehicles.meta @@ -0,0 +1,143 @@ + + + vehshare + + + + um23tahoe + um23tahoe + 23TAHOEPPV + um23tahoe + + null + null + null + null + + null + POLICE + LAYOUT_STD_EXITFIXUP + POLICE3_COVER_OFFSET_INFO + EXPLOSION_INFO_DEFAULT + + DEFAULT_FOLLOW_VEHICLE_CAMERA + MID_BOX_VEHICLE_AIM_CAMERA + VEHICLE_BONNET_CAMERA_MID_NEAR + DEFAULT_POV_CAMERA + + + + + + + + + + + + + + + + + + + + + + + + + + + + VFXVEHICLEINFO_CAR_GENERIC + + + + + + + + + + + + + + + + + + + + + + 500.000000 + 500.000000 + 500.000000 + 500.000000 + 500.000000 + 500.000000 + + + + + + + + + + + SWANKNESS_0 + + FLAG_FORCE_ENABLE_CHASSIS_COLLISION FLAG_EXTRAS_STRONG FLAG_HAS_LIVERY FLAG_EXTRAS_ALL FLAG_LAW_ENFORCEMENT FLAG_EMERGENCY_SERVICE FLAG_NO_RESPRAY FLAG_DONT_SPAWN_IN_CARGEN FLAG_HAS_INTERIOR_EXTRAS FLAG_REPORT_CRIME_IF_STANDING_ON + VEHICLE_TYPE_CAR + VPT_BACK_PLATES + VDT_FEROCI + VC_EMERGENCY + VWT_OFFROAD + + + + + S_M_Y_Cop_01 + + + + + + + + + + + REWARD_WEAPON_PUMPSHOTGUN + REWARD_AMMO_PUMPSHOTGUN_ENTER_VEHICLE + REWARD_STAT_WEAPON + + + WHEEL_FRONT_RIGHT_CAMERA + WHEEL_FRONT_LEFT_CAMERA + WHEEL_REAR_RIGHT_CAMERA + WHEEL_REAR_LEFT_CAMERA + + + + + + + STD_POLICE3_FRONT_LEFT + STD_POLICE3_FRONT_RIGHT + STD_POLICE2_REAR_LEFT + STD_POLICE2_REAR_RIGHT + + + + + + vehicles_feroci_interior + um23tahoe + + + \ No newline at end of file diff --git a/resources/umimpala/__resource.lua b/resources/umimpala/__resource.lua new file mode 100644 index 000000000..e85b41837 --- /dev/null +++ b/resources/umimpala/__resource.lua @@ -0,0 +1,20 @@ +resource_manifest_version '77731fab-63ca-442c-a67b-abc70f28dfa5' + +files { + 'vehicles.meta', + 'carvariations.meta', + 'carcols.meta', + 'handling.meta', + 'vehiclelayouts.meta', -- Not Required +} + +data_file 'HANDLING_FILE' 'handling.meta' +data_file 'VEHICLE_METADATA_FILE' 'vehicles.meta' +data_file 'CARCOLS_FILE' 'carcols.meta' +data_file 'VEHICLE_VARIATION_FILE' 'carvariations.meta' +data_file 'VEHICLE_LAYOUTS_FILE' 'vehiclelayouts.meta' -- Not Required + + +client_script { + 'vehicle_names.lua' -- Not Required +} \ No newline at end of file diff --git a/resources/umimpala/carcols.meta b/resources/umimpala/carcols.meta new file mode 100644 index 000000000..e6a822b7e --- /dev/null +++ b/resources/umimpala/carcols.meta @@ -0,0 +1,332 @@ + + + + + + umimpala + + + + + + + VehicleLight_sirenlight + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/resources/umimpala/carvariations.meta b/resources/umimpala/carvariations.meta new file mode 100644 index 000000000..660c42f42 --- /dev/null +++ b/resources/umimpala/carvariations.meta @@ -0,0 +1,63 @@ + + + + + + umimpala + + + + 0 + 134 + 0 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + 64 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 801_18CHARG_modkit + + + + + + + + + + \ No newline at end of file diff --git a/resources/umimpala/handling.meta b/resources/umimpala/handling.meta new file mode 100644 index 000000000..4ba620803 --- /dev/null +++ b/resources/umimpala/handling.meta @@ -0,0 +1,67 @@ + + + + + + CHARGER + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 440010 + 0 + 0 + AVERAGE + + + + + + + + + + + + \ No newline at end of file diff --git a/resources/umimpala/stream/umimpala.yft b/resources/umimpala/stream/umimpala.yft new file mode 100644 index 000000000..1e32bee46 --- /dev/null +++ b/resources/umimpala/stream/umimpala.yft @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fe1859e40cee6a2a41ac9b98ef73c0fdc5bdff0597e22ff3329a9aa05c7129cd +size 4384297 diff --git a/resources/umimpala/stream/umimpala.ytd b/resources/umimpala/stream/umimpala.ytd new file mode 100644 index 000000000..1b340972b --- /dev/null +++ b/resources/umimpala/stream/umimpala.ytd @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b20ea6b245f70b060ecf32a85b3273a36d96e443aa880cfa589867dabafff0d9 +size 6382283 diff --git a/resources/umimpala/stream/umimpala_hi.yft b/resources/umimpala/stream/umimpala_hi.yft new file mode 100644 index 000000000..0fb2b28a9 --- /dev/null +++ b/resources/umimpala/stream/umimpala_hi.yft @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c6908e9ea152ec5dea4145a6398fbf267d59dfc3025c94f180f4686387b7a025 +size 4384208 diff --git a/resources/umimpala/vehicles.meta b/resources/umimpala/vehicles.meta new file mode 100644 index 000000000..2d225585b --- /dev/null +++ b/resources/umimpala/vehicles.meta @@ -0,0 +1,143 @@ + + + vehshare + + + + umimpala + umimpala + CHARGER + umimpala + + null + null + null + null + + null + POLICE + LAYOUT_STD_EXITFIXUP + POLICE3_COVER_OFFSET_INFO + EXPLOSION_INFO_DEFAULT + + DEFAULT_FOLLOW_VEHICLE_CAMERA + MID_BOX_VEHICLE_AIM_CAMERA + VEHICLE_BONNET_CAMERA_MID_NEAR + DEFAULT_POV_CAMERA + + + + + + + + + + + + + + + + + + + + + + + + + + + + VFXVEHICLEINFO_CAR_GENERIC + + + + + + + + + + + + + + + + + + + + + + 500.000000 + 500.000000 + 500.000000 + 500.000000 + 500.000000 + 500.000000 + + + + + + + + + + + SWANKNESS_0 + + FLAG_FORCE_ENABLE_CHASSIS_COLLISION FLAG_EXTRAS_STRONG FLAG_HAS_LIVERY FLAG_EXTRAS_ALL FLAG_LAW_ENFORCEMENT FLAG_EMERGENCY_SERVICE FLAG_NO_RESPRAY FLAG_DONT_SPAWN_IN_CARGEN FLAG_HAS_INTERIOR_EXTRAS FLAG_REPORT_CRIME_IF_STANDING_ON + VEHICLE_TYPE_CAR + VPT_BACK_PLATES + VDT_FEROCI + VC_EMERGENCY + VWT_OFFROAD + + + + + S_M_Y_Cop_01 + + + + + + + + + + + REWARD_WEAPON_PUMPSHOTGUN + REWARD_AMMO_PUMPSHOTGUN_ENTER_VEHICLE + REWARD_STAT_WEAPON + + + WHEEL_FRONT_RIGHT_CAMERA + WHEEL_FRONT_LEFT_CAMERA + WHEEL_REAR_RIGHT_CAMERA + WHEEL_REAR_LEFT_CAMERA + + + + + + + STD_POLICE3_FRONT_LEFT + STD_POLICE3_FRONT_RIGHT + STD_POLICE2_REAR_LEFT + STD_POLICE2_REAR_RIGHT + + + + + + vehicles_feroci_interior + umimpala + + + \ No newline at end of file diff --git a/server.cfg b/server.cfg index b215eacb0..c221bc724 100644 --- a/server.cfg +++ b/server.cfg @@ -222,10 +222,10 @@ ensure security_cameras_V2 ensure Highway_cameras_style_2 ensure Supply-Line ensure SmartHose -ensure -ensure -ensure -ensure +ensure SimplePriorities +ensure cooldown +ensure scully_lawenforcement +ensure VehicleTrustSystem-master ensure ensure ensure @@ -485,8 +485,8 @@ ensure lafdtahoe ensure redf350brush21 ensure schp16piu ensure schp16piust -ensure -ensure +ensure um23tahoe +ensure umimpala ensure ensure ensure