1
0
Fork 0
forked from Simnation/Main
This commit is contained in:
Nordi98 2025-08-04 20:26:15 +02:00
parent 5a5b4b855d
commit f57a27b8df
152 changed files with 1554 additions and 0 deletions

Binary file not shown.

View file

@ -0,0 +1,24 @@
# JG HUD
Hey there! Thanks so much for purchasing, it really means a lot to me. I've spent a lot of time on this script, and I hope you love it. This document has a bunch of the essential information that should help you out:
## Installation
Full instruction installations can be found in the docs here: https://docs.jgscripts.com/hud/installation
## Dependencies
You MUST have the following set up and ensured BEFORE JG HUD in order for the script to work:
- OneSync Infinity
- [ox_lib](https://github.com/overextended/ox_lib/releases)
## Optional Dependencies
- QBCore, Qbox or ESX Legacy (1.3+)
- [jg-vehiclemileage](https://github.com/jgscripts/jg-vehiclemileage/releases) (for displaying mileage in the odometer)
- [jg-stress-addon](https://github.com/jgscripts/jg-stress-addon) (for a stress system)
## Support
Join Discord https://discord.gg/jgscripts for personalised support and guidance with using JG HUD! We will do whatever it takes to help you out and get you up and running!

Binary file not shown.

Binary file not shown.

Binary file not shown.

View file

@ -0,0 +1,94 @@
-- This is a heavily modified & highly simplified version of nearest postal from @DevBlocky: https://github.com/DevBlocky/nearest-postal
-- just for the purposes of displaying it in the HUD, as the exports for getting distance to nearest postal wasn't available.
-- This IS NOT designed to be a replacement for nearest-postal, as it does not include commands for waypoints etc. I recommend still
-- using nearest-postal alongside JG HUD!
---- ORIGINAL LICENSE ----
-- Copyright (c) 2019 BlockBa5her
-- 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.
---@type boolean
local postalsLoaded = false
CreateThread(function()
if not Config.ShowNearestPostal then return end
local jsonData = LoadResourceFile(GetCurrentResourceName(), Config.NearestPostalsData)
if not jsonData then
return DebugPrint(("[ERROR] Could not find postals data file: %s"):format(Config.NearestPostalsData))
end
local postals = json.decode(jsonData)
if not postals then
return DebugPrint("[ERROR] Failed to decode postals JSON data")
end
for i = 1, #postals do
local postal = postals[i]
lib.grid.addEntry({
coords = vec(postal.x, postal.y),
code = postal.code,
radius = 1
})
end
postalsLoaded = true
DebugPrint(("Loaded %d postal codes into ox_lib grid system"):format(#postals))
end)
---@param pos vector
---@return {code: string, dist: number} | false
function GetNearestPostal(pos)
if not Config.ShowNearestPostal or not postalsLoaded then
return false
end
local nearbyEntries = lib.grid.getNearbyEntries(pos)
if not nearbyEntries or #nearbyEntries == 0 then
return false
end
local closestEntry, minDist
-- Check only nearby entries from grid
for i = 1, #nearbyEntries do
local entry = nearbyEntries[i]
local dx = pos.x - entry.coords.x
local dy = pos.y - entry.coords.y
local dist = math.sqrt(dx * dx + dy * dy)
if not minDist or dist < minDist then
closestEntry = entry
minDist = dist
end
end
if not closestEntry then
return false
end
return {
code = closestEntry.code,
dist = math.round(Framework.Client.ConvertDistance(minDist, UserSettingsData?.distanceMeasurement))
}
end

Binary file not shown.

Binary file not shown.

View file

@ -0,0 +1,149 @@
IsSeatbeltOn = true
local seatbeltThreadCreated = false
---Can vehicle class have a seatbelt? Disabled for bikes, motorcycles boats etc by default
---@param vehicle integer
---@return boolean canHaveSeatbelt
local function canVehicleClassHaveSeatbelt(vehicle)
if not Config.EnableSeatbelt then return false end
if not vehicle or not DoesEntityExist(vehicle) then
return false
end
local vehicleClass = GetVehicleClass(vehicle)
local seatbeltCompatibleClasses = {
[0] = true, -- Compacts
[1] = true, -- Sedans
[2] = true, -- SUVs
[3] = true, -- Coupes
[4] = true, -- Muscle
[5] = true, -- Sports Classics
[6] = true, -- Sports
[7] = true, -- Super
[9] = true, -- Off-road
[10] = true, -- Industrial
[11] = true, -- Utility
[12] = true, -- Vans
[17] = true, -- Service
[18] = true, -- Emergency
[19] = true, -- Military
[20] = true, -- Commercial
}
-- Excluded veh classes
-- [8] = Motorcycles
-- [13] = Cycles/Bicycles
-- [14] = Boats
-- [15] = Helicopters
-- [16] = Planes
-- [21] = Trains
return seatbeltCompatibleClasses[vehicleClass] or false
end
---Is a seatbelt allowed in this particular vehicle? Checks emergency vehicles, passenger seats etc
---@param vehicle integer
---@return boolean isSeatbeltAllowed
local function isSeatbeltAllowed(vehicle)
if not Config.EnableSeatbelt then return false end
if not vehicle then return false end
if not canVehicleClassHaveSeatbelt(vehicle) then
return false
end
if Config.DisablePassengerSeatbelts and cache.seat ~= -1 then
return false
end
if Config.DisableSeatbeltInEmergencyVehicles then
local vehicleClass = GetVehicleClass(vehicle)
if vehicleClass == 18 then -- Emergency vehicles
return false
end
end
return true
end
---Simple built in seatbelt system using "fly through windscreen" natives
---@param willBeYeeted boolean
local function setWhetherPedWillFlyThroughWindscreen(willBeYeeted)
SetFlyThroughWindscreenParams(
((not willBeYeeted) and Config.MinSpeedMphEjectionSeatbeltOn or Config.MinSpeedMphEjectionSeatbeltOff) / 2.237,
1.0, 17.0, 10.0
)
SetPedConfigFlag(cache.ped, 32, willBeYeeted)
end
---Toggle seatbelt main function
---@param vehicle integer
---@param toggle boolean
function ToggleSeatbelt(vehicle, toggle)
if not vehicle or not isSeatbeltAllowed(vehicle) then
return
end
IsSeatbeltOn = toggle
LocalPlayer.state:set("seatbelt", toggle) -- for integrations with other scripts, like jg-stress-addon
if Config.UseCustomSeatbeltIntegration then
Framework.Client.ToggleSeatbelt(vehicle, toggle)
else
setWhetherPedWillFlyThroughWindscreen(not toggle)
end
end
---Thread to disable exiting vehicle when seatbelt is on
local function startSeatbeltExitPreventionThread()
if not Config.PreventExitWhileBuckled then return end
if seatbeltThreadCreated then return end
seatbeltThreadCreated = true
CreateThread(function()
while cache.vehicle do
if IsSeatbeltOn then
DisableControlAction(0, 75, true)
DisableControlAction(27, 75, true)
end
Wait(1)
end
seatbeltThreadCreated = false
end)
end
---When entering vehicle
---@param vehicle integer
local function onEnterVehicle(vehicle)
if not isSeatbeltAllowed(vehicle) then
setWhetherPedWillFlyThroughWindscreen(false)
IsSeatbeltOn = true
return
end
ToggleSeatbelt(vehicle, false) -- Seatbelt is off when entering vehicle
startSeatbeltExitPreventionThread()
end
if Config.EnableSeatbelt then
lib.onCache("vehicle", onEnterVehicle)
CreateThread(function()
if cache.vehicle then
onEnterVehicle(cache.vehicle)
end
end)
end
-- Key mapping
if Config.EnableSeatbelt and Config.SeatbeltKeybind then
RegisterCommand("toggle_seatbelt", function()
ToggleSeatbelt(cache.vehicle, not IsSeatbeltOn)
end, false)
RegisterKeyMapping("toggle_seatbelt", "Toggle vehicle seatbelt", "keyboard", Config.SeatbeltKeybind or "B")
end

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View file

@ -0,0 +1,391 @@
--
-- Just loads of data that you want need/want to tweak
-- You don't need to change anything here, unless you really want to
--
Config.SpeedLimits = {
["Abattoir Ave"] = 35,
["Abe Milton Pkwy"] = 35,
["Ace Jones Dr"] = 35,
["Adam's Apple Blvd"] = 40,
["Aguja St"] = 25,
["Algonquin Blvd"] = 35,
["Alhambra Dr"] = 35,
["Alta Pl"] = 30,
["Alta St"] = 40,
["Amarillo Vista"] = 25,
["Amarillo Way"] = 35,
["Americano Way"] = 25,
["Armadillo Ave"] = 35,
["Atlee St"] = 30,
["Autopia Pkwy"] = 35,
["Banham Canyon Dr"] = 40,
["Barbareno Rd"] = 30,
["Bay City Ave"] = 30,
["Bay City Incline"] = 40,
["Baytree Canyon Rd"] = 40,
["Boulevard Del Perro"] = 35,
["Bridge St"] = 35,
["Brouge Ave"] = 30,
["Buccaneer Way"] = 45,
["Buen Vino Rd"] = 40,
["Caesars Place"] = 25,
["Calafia Rd"] = 30,
["Calais Ave"] = 35,
["Capital Blvd"] = 30,
["Carcer Way"] = 40,
["Carson Ave"] = 35,
["Cascabel Ave"] = 30,
["Cassidy Trail"] = 25,
["Cat-Claw Ave"] = 35,
["Catfish View"] = 35,
["Cavalry Blvd"] = 35,
["Chianski Passage"] = 30,
["Cholla Rd"] = 35,
["Cholla Springs Ave"] = 35,
["Chum St"] = 40,
["Chupacabra St"] = 30,
["Clinton Ave"] = 35,
["Cockingend Dr"] = 35,
["Conquistador St"] = 25,
["Cortes St"] = 25,
["Cougar Ave"] = 30,
["Covenant Ave"] = 30,
["Cox Way"] = 35,
["Crusade Rd"] = 30,
["Davis Ave"] = 40,
["Decker St"] = 35,
["Del Perro Fwy"] = 65,
["Didion Dr"] = 35,
["Dorset Dr"] = 40,
["Duluoz Ave"] = 35,
["Dunstable Dr"] = 35,
["Dunstable Ln"] = 35,
["Dutch London St"] = 40,
["East Eclipse Blvd"] = 35,
["East Galileo Ave"] = 35,
["East Joshua Road"] = 50,
["East Mirror Dr"] = 35,
["Eastbourne Way"] = 30,
["Edwood Way"] = 25,
["El Burro Blvd"] = 35,
["El Rancho Blvd"] = 40,
["Elgin Ave"] = 40,
["Elysian Fields Fwy"] = 50,
["Equality Way"] = 30,
["Exceptionalists Way"] = 35,
["Fenwell Pl"] = 35,
["Fort Zancudo Approach Rd"] = 25,
["Forum Dr"] = 35,
["Fudge Ln"] = 25,
["Galileo Park"] = 35,
["Galileo Rd"] = 40,
["Gentry Lane"] = 30,
["Ginger St"] = 30,
["Glory Way"] = 35,
["Goma St"] = 25,
["Grapeseed Ave"] = 35,
["Grapeseed Main St"] = 35,
["Great Ocean Hwy"] = 60,
["Greenwich Pkwy"] = 35,
["Greenwich Pl"] = 35,
["Greenwich Way"] = 35,
["Grove St"] = 30,
["Hangman Ave"] = 35,
["Hanger Way"] = 30,
["Hardy Way"] = 35,
["Hawick Ave"] = 35,
["Heritage Way"] = 35,
["Hillcrest Ave"] = 35,
["Hillcrest Ridge Access Rd"] = 35,
["Imagination Ct"] = 25,
["Ineseno Road"] = 30,
["Innocence Blvd"] = 40,
["Integrity Way"] = 30,
["Invention Ct"] = 25,
["Jamestown St"] = 30,
["Joad Ln"] = 35,
["Joshua Rd"] = 50,
["Kimble Hill Dr"] = 35,
["Kortz Dr"] = 30,
["Labor Pl"] = 35,
["Lake Vinewood Dr"] = 35,
["Lake Vinewood Est"] = 35,
["La Puerta Fwy"] = 60,
["Laguna Pl"] = 30,
["Las Lagunas Blvd"] = 40,
["Lesbos Ln"] = 35,
["Liberty St"] = 30,
["Lindsay Circus"] = 30,
["Little Bighorn Ave"] = 35,
["Lolita Ave"] = 35,
["Los Santos Freeway"] = 65,
["Low Power St"] = 35,
["Macdonald St"] = 35,
["Mad Wayne Thunder Dr"] = 35,
["Magellan Ave"] = 25,
["Marathon Ave"] = 30,
["Marina Dr"] = 35,
["Marlowe Dr"] = 40,
["Melanoma St"] = 25,
["Meringue Ln"] = 35,
["Meteor St"] = 30,
["Milton Rd"] = 35,
["Mirror Park Blvd"] = 35,
["Mirror Pl"] = 35,
["Miriam Turner Overpass"] = 30,
["Morningwood Blvd"] = 35,
["Mountain View Dr"] = 35,
["Movie Star Way"] = 35,
["Mt Haan Rd"] = 40,
["Mt Vinewood Dr"] = 40,
["Mutiny Rd"] = 35,
["New Empire Way"] = 30,
["Nikola Ave"] = 35,
["Nikola Pl"] = 25,
["Niland Ave"] = 35,
["North Calafia Way"] = 30,
["North Conker Ave"] = 35,
["North Rockford Dr"] = 35,
["North Sheldon Ave"] = 35,
["Nowhere Rd"] = 25,
["O'Neil Way"] = 25,
["Occupation Ave"] = 35,
["Olympic Fwy"] = 60,
["Orchardville Ave"] = 30,
["Paleto Blvd"] = 35,
["Palomino Ave"] = 35,
["Palomino Fwy"] = 60,
["Panorama Dr"] = 40,
["Perth St"] = 25,
["Picture Perfect Drive"] = 35,
["Plaice Pl"] = 30,
["Playa Vista"] = 30,
["Popular St"] = 40,
["Portola Dr"] = 30,
["Power St"] = 40,
["Procopio Dr"] = 35,
["Procopio Promenade"] = 25,
["Prosperity St"] = 30,
["Pyrite Ave"] = 30,
["Red Desert Ave"] = 30,
["Richman St"] = 35,
["Rockford Dr"] = 35,
["Route 68"] = 55,
["Route 68 Approach"] = 55,
["Roy Lowenstein Blvd"] = 35,
["Rub St"] = 25,
["Sam Austin Dr"] = 25,
["San Andreas Ave"] = 40,
["San Vitus Blvd"] = 40,
["Sandcastle Way"] = 30,
["Seaview Rd"] = 35,
["Senora Fwy"] = 65,
["Senora Rd"] = 40,
["Senora Way"] = 40,
["Shank St"] = 25,
["Signal St"] = 30,
["Sinners Passage"] = 30,
["Sinner St"] = 30,
["Smoke Tree Rd"] = 35,
["South Arsenal St"] = 35,
["South Boulevard Del Perro"] = 35,
["South Mo Milton Dr"] = 35,
["South Rockford Dr"] = 35,
["South Shambles St"] = 30,
["Spanish Ave"] = 30,
["Strangeways Dr"] = 30,
["Strawberry Ave"] = 40,
["Supply St"] = 30,
["Sustancia Rd"] = 45,
["Swiss St"] = 30,
["Tackle St"] = 25,
["Tongva Dr"] = 40,
["Tower Way"] = 35,
["Tug St"] = 25,
["Union Rd"] = 40,
["Utopia Gardens"] = 25,
["Vespucci Blvd"] = 40,
["Vinewood Blvd"] = 40,
["Vinewood Park Dr"] = 35,
["Vitus St"] = 25,
["Voodoo Place"] = 30,
["West Eclipse Blvd"] = 35,
["West Galileo Ave"] = 35,
["West Mirror Drive"] = 35,
["Wild Oats Dr"] = 35,
["Whispymound Dr"] = 25,
["Zancudo Ave"] = 35,
["Zancudo Barranca"] = 40,
["Zancudo Grande Valley"] = 40,
["Zancudo Rd"] = 35
}
-- NOTE: This may already have been done in your framework: to avoid an unncessary thread
-- you can set this to false, delete it comment it out, whatever is easier for you :)
Config.HideBaseGameHudComponents = {
1, -- WANTED_STARS,
2, -- WEAPON_ICON
3, -- CASH
4, -- MP_CASH
5, -- MP_MESSAGE
6, -- VEHICLE_NAME
7, -- AREA_NAME
8, -- VEHICLE_CLASS
9, -- STREET_NAME
-- 10, --HELP_TEXT
-- 11, --FLOATING_HELP_TEXT_1
-- 12, --FLOATING_HELP_TEXT_2
13, --CASH_CHANGE
-- 14, --RETICLE
-- 15, --SUBTITLE_TEXT
-- 16, --RADIO_STATIONS
-- 17, --SAVING_GAME,
-- 18, --GAME_STREAM
-- 19, --WEAPON_WHEEL
-- 20, --WEAPON_WHEEL_STATS
-- 21, --HUD_COMPONENTS
-- 22, --HUD_WEAPONS
}
-- Use custom street or zone names
-- Tutorial: https://docs.jgscripts.com/hud/custom-street-zone-names
Config.CustomStreetNames = {
-- [0xF5BF6BDD] = "Runway",
}
Config.CustomZoneNames = {
-- AIRP = "Los Santos International Airport",
}
Config.CustomNamesShouldUpdateGameTextEntries = false
Config.WeaponNames = {
WEAPON_KNIFE = "Knife",
WEAPON_NIGHTSTICK = "Nightstick",
WEAPON_HAMMER = "Hammer",
WEAPON_BAT = "Baseball Bat",
WEAPON_GOLFCLUB = "Golf Club",
WEAPON_CROWBAR = "Crowbar",
WEAPON_PISTOL = "Pistol",
WEAPON_COMBATPISTOL = "Combat Pistol",
WEAPON_APPISTOL = "AP Pistol",
WEAPON_PISTOL50 = "Pistol .50",
WEAPON_MICROSMG = "Micro SMG",
WEAPON_SMG = "SMG",
WEAPON_ASSAULTSMG = "Assault SMG",
WEAPON_ASSAULTRIFLE = "Assault Rifle",
WEAPON_CARBINERIFLE = "Carbine Rifle",
WEAPON_ADVANCEDRIFLE = "Advanced Rifle",
WEAPON_MG = "MG",
WEAPON_COMBATMG = "Combat MG",
WEAPON_PUMPSHOTGUN = "Pump Shotgun",
WEAPON_SAWNOFFSHOTGUN = "Sawed-Off Shotgun",
WEAPON_ASSAULTSHOTGUN = "Assault Shotgun",
WEAPON_BULLPUPSHOTGUN = "Bullpup Shotgun",
WEAPON_STUNGUN = "Stun Gun",
WEAPON_SNIPERRIFLE = "Sniper Rifle",
WEAPON_HEAVYSNIPER = "Heavy Sniper",
WEAPON_GRENADELAUNCHER = "Grenade Launcher",
WEAPON_RPG = "RPG",
WEAPON_MINIGUN = "Minigun",
WEAPON_GRENADE = "Grenade",
WEAPON_STICKYBOMB = "Sticky Bomb",
WEAPON_SMOKEGRENADE = "Smoke Grenade",
WEAPON_BZGAS = "BZ Gas",
WEAPON_MOLOTOV = "Molotov",
WEAPON_FIREEXTINGUISHER = "Fire Extinguisher",
WEAPON_PETROLCAN = "Petrol Can",
WEAPON_BALL = "Ball",
WEAPON_FLARE = "Flare",
WEAPON_SNOWBALL = "Snowball",
WEAPON_FLAREGUN = "Flare Gun",
WEAPON_GARBAGEBAG = "Garbage Bag",
WEAPON_HANDCUFFS = "Handcuffs",
WEAPON_BATTLEAXE = "Battle Axe",
WEAPON_COMPACTLAUNCHER = "Compact Grenade Launcher",
WEAPON_MINISMG = "Mini SMG",
WEAPON_PIPEBOMB = "Pipe Bomb",
WEAPON_POOLCUE = "Pool Cue",
WEAPON_WRENCH = "Wrench",
WEAPON_FLASHLIGHT = "Flashlight",
WEAPON_DAGGER = "Antique Cavalry Dagger",
WEAPON_VINTAGEPISTOL = "Vintage Pistol",
WEAPON_MUSKET = "Musket",
WEAPON_FIREWORK = "Firework Launcher",
WEAPON_MARKSMANRIFLE = "Marksman Rifle",
WEAPON_HEAVYSHOTGUN = "Heavy Shotgun",
WEAPON_PROXMINE = "Proximity Mine",
WEAPON_HOMINGLAUNCHER = "Homing Launcher",
WEAPON_COMPACTRIFLE = "Compact Rifle",
WEAPON_MACHINEPISTOL = "Machine Pistol",
WEAPON_SWITCHBLADE = "Switchblade",
WEAPON_REVOLVER = "Heavy Revolver",
WEAPON_DOUBLEACTION = "Double-Action Revolver",
WEAPON_MARKSMANPISTOL = "Marksman Pistol",
WEAPON_RAYPISTOL = "Up-n-Atomizer",
WEAPON_RAYCARBINE = "Unholy Hellbringer",
WEAPON_RAYMINIGUN = "Widowmaker",
WEAPON_NAVYREVOLVER = "Navy Revolver",
WEAPON_CERAMICPISTOL = "Ceramic Pistol",
WEAPON_STONE_HATCHET = "Stone Hatchet",
WEAPON_PIPEWRENCH = "Pipe Wrench",
WEAPON_PISTOL_MK2 = "Pistol Mk II",
WEAPON_SNSPISTOL_MK2 = "SNS Pistol Mk II",
WEAPON_REVOLVER_MK2 = "Heavy Revolver Mk II",
WEAPON_SMG_MK2 = "SMG Mk II",
WEAPON_PUMPSHOTGUN_MK2 = "Pump Shotgun Mk II",
WEAPON_SPECIALCARBINE_MK2 = "Special Carbine Mk II",
WEAPON_BULLPUPRIFLE_MK2 = "Bullpup Rifle Mk II",
WEAPON_COMBATMG_MK2 = "Combat MG Mk II",
WEAPON_HEAVYSNIPER_MK2 = "Heavy Sniper Mk II",
WEAPON_ASSAULTRIFLE_MK2 = "Assault Rifle Mk II",
WEAPON_CARBINERIFLE_MK2 = "Carbine Rifle Mk II",
WEAPON_MILITARYRIFLE = "Military Rifle",
WEAPON_COMBATSHOTGUN = "Combat Shotgun",
WEAPON_GADGETPISTOL = "Perico Pistol",
WEAPON_EMPLAUNCHER = "Compact EMP Launcher",
WEAPON_HEAVYRIFLE = "Heavy Rifle",
WEAPON_PRECISIONRIFLE = "Precision Rifle",
WEAPON_TACTICALRIFLE = "Service Carbine"
}
Config.TrainMetroStations = {
[1] = { name = "LSIA Terminal 4", coords = vec(-1083.3578, -2716.4917, -7.4101), nextStation = { Northbound = { h = 316, s = 2 }, Southbound = { h = 137, s = false } } },
[2] = { name = "LSIA Parking", coords = vec(-873.6451, -2313.1482, -12.6264), nextStation = { Northbound = { h = 333, s = 3 }, Southbound = { h = 151, s = 1 } } },
[3] = { name = "Puerto Del Sol", coords = vec(-538.3027, -1289.2268, 25.9013), nextStation = { Northbound = { h = 333, s = 4 }, Southbound = { h = 151, s = 2 } } },
[4] = { name = "Strawberry", coords = vec(260.8647, -1210.0208, 38.0746), nextStation = { Northbound = { h = 267, s = 6 }, Southbound = { h = 86, s = 3 } } },
-- [5] = { name = "Pillbox North (Under Construction)", coords = vec(140.9126, -599.2263, 17.7564), nextStation = { { h = 64, s = 6 }, { h = 258, s = 4 } } },
[6] = { name = "Burton", coords = vec(-294.8436, -336.0311, 10.0631), nextStation = { Northbound = { h = 349, s = 7 }, Southbound = { h = 172, s = 4 } } },
[7] = { name = "Portola Drive", coords = vec(-813.0384, -136.0313, 19.9503), nextStation = { Northbound = { h = 117, s = 8 }, Southbound = { h = 292, s = 6 } } },
[8] = { name = "Del Perro", coords = vec(-1350.6287, -467.3718, 15.0454), nextStation = { Northbound = { h = 208, s = 9 }, Southbound = { h = 28, s = 7 } } },
[9] = { name = "Little Seoul", coords = vec(-497.0356, -673.1466, 11.8090), nextStation = { Northbound = { h = 276, s = 10 }, Southbound = { h = 83, s = 8 } } },
[10] = { name = "Pillbox South", coords = vec(-211.6538, -1028.5626, 30.5675), nextStation = { Northbound = { h = 151, s = 11 }, Southbound = { h = 335, s = 9 } } },
[11] = { name = "Davis", coords = vec(112.2249, -1723.0388, 30.5415), nextStation = { Northbound = { h = 230, s = false }, Southbound = { h = 45, s = 10 } } },
}
-- Add electric vehicles to disable combustion engine features
-----------------------------------------------------------------------
-- PLEASE NOTE: In b3258 (Bottom Dollar Bounties) and newer, electric
-- vehicles are detected automatically, so this list is not used!
Config.ElectricVehicles = {
"Airtug", "buffalo5", "caddy",
"Caddy2", "caddy3", "coureur",
"cyclone", "cyclone2", "imorgon",
"inductor", "iwagen", "khamelion",
"metrotrain", "minitank", "neon",
"omnisegt", "powersurge", "raiden",
"rcbandito", "surge", "tezeract",
"virtue", "vivanite", "voltic",
"voltic2",
}
---------------------------------------------
-- Register custom street/zone names globally
if Config.CustomNamesShouldUpdateGameTextEntries then
for hash, val in pairs(Config.CustomStreetNames) do
AddTextEntryByHash(hash, val)
end
for name, val in pairs(Config.CustomZoneNames) do
AddTextEntryByHash(joaat(name), val)
end
end

View file

@ -0,0 +1,77 @@
Config = {}
Config.Locale = "en"
Config.Currency = "$"
Config.NumberFormat = "en-US" -- follows [language]-[country code]
-- Integrations
Config.Framework = "auto" -- or "QBCore", "Qbox", "ESX"
Config.FuelSystem = "lc_fuel" -- or "LegacyFuel", "lc_fuel", "ps-fuel", "lj-fuel", "ox_fuel", "cdn-fuel", "hyon_gas_station", "okokGasStation", "nd_fuel", "myFuel", "ti_fuel", "Renewed-Fuel", "rcore_fuel", "none"
-- Measurements
Config.SpeedMeasurement = "kph" -- or "kph"
Config.DistanceMeasurement = "meters" -- or "meters"
-- Cruise Control
Config.EnableCruiseControl = true
Config.CruiseControlKeybind = "J"
-- Seatbelt
Config.EnableSeatbelt = true
Config.UseCustomSeatbeltIntegration = false -- Enable to use a third-party seatbelt script via Framework.Client.ToggleSeatbelt (in framework/cl-functions.lua)
Config.SeatbeltKeybind = "B"
Config.PreventExitWhileBuckled = true
Config.DisablePassengerSeatbelts = false
Config.MinSpeedMphEjectionSeatbeltOff = 20.0
Config.MinSpeedMphEjectionSeatbeltOn = 100.0
Config.DisableSeatbeltInEmergencyVehicles = true
-- Default component displays
Config.ShowMinimapOnFoot = true
Config.ShowCompassOnFoot = true
Config.ShowComponents = {
pedAvatar = false, -- Seems to be unstable with some clients, best to leave disabled for now
voiceOrRadio = true,
serverId = true,
time = true,
job = true,
gang = false,
bankBalance = true,
cashBalance = true,
dirtyMoneyBalance = false,
weapon = true,
serverLogo = false -- You can enable this and then change the server-logo.png in the root folder
}
-- If ShowComponents.serverLogo & Config.AllowUsersToEditLayout are enabled, should players be able to edit the logo's visibility/position?
Config.AllowServerLogoEditing = true
-- Vehicle Control
Config.VehicleControlKeybind = "F6"
Config.AllowPassengersToUseVehicleControl = true -- Passengers are only able to toggle their own window, door or change seats
-- Other keybinds; set them to false to disable
Config.EngineToggleKeybind = false
Config.BoatAnchorKeybind = "J"
Config.IndicatorLeftKeybind = "LEFT"
Config.IndicatorRightKeybind = "RIGHT"
Config.IndicatorHazardsKeybind = "UP"
-- Commands
Config.OpenSettingsCommand = "settings"
Config.ToggleHudCommand = "togglehud"
-- Nearest postal
-- Credit to https://github.com/DevBlocky/nearest-postal - see license in data/nearest-postal/LICENSE
Config.ShowNearestPostal = false
Config.NearestPostalsData = "data/nearest-postal/ocrp-postals.json"
-- Learn more about configuring default settings: https://docs.jgscripts.com/hud/default-settings
Config.DefaultSettingsData = "data/default-settings.json"
Config.DefaultSettingsKvpPrefix = "hud-" -- This is really useful for essentially "resetting" everyone's currently saved settings, especially if you've added a new default-settings.json profile. You can set this to like "hud-v2-" for example so that everyone's existing data starts fresh with your new profile.
Config.AllowPlayersToEditSettings = true
Config.AllowUsersToEditLayout = true
-- Dev/debug settings
Config.UpdateRadarZoom = true -- Enable this if radar is flicking/disappearing
Config.DevDeleteAllUserSettingsOnStart = false -- Delete player existing KVP when they log in?
Config.Debug = false

View file

@ -0,0 +1,23 @@
Thank you to https://github.com/DevBlocky/nearest-postal for these files!
-- LICENSE --
Copyright (c) 2019 BlockBa5her
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.

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 982 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 546 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 916 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 856 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 658 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1 KiB

Some files were not shown because too many files have changed in this diff Show more