Advertisement
ejay_

Untitled

May 26th, 2020
53
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 204.83 KB | None | 0 0
  1. --[[
  2. Made by Nertigel & Flacko
  3. ]]
  4.  
  5. local oldPrint = print
  6. print = function(trash)
  7. oldPrint('[dopamine] '..trash)
  8. end
  9.  
  10. TriggerCustomEvent = function(server, event, ...)
  11. local payload = msgpack.pack({...})
  12. if server then
  13. TriggerServerEventInternal(event, payload, payload:len())
  14. else
  15. TriggerEventInternal(event, payload, payload:len())
  16. end
  17. end
  18.  
  19. NetworkIsInSpectatorMode = function()
  20. return false
  21. end
  22.  
  23. _G.NetworkIsInSpectatorMode = function()
  24. return false
  25. end
  26.  
  27. --[[
  28. vRP Shit
  29. ]]
  30. --[[ PROXY CLIENT-SIDE VERSION (https://github.com/ImagicTheCat/vRP)]]
  31. --[[ Proxy interface system, used to add/call functions between resources]]
  32. Proxy = {} local proxy_rdata = {} local function proxy_callback(rvalues) --[[ save returned values, TriggerEvent is synchronous]] proxy_rdata = rvalues end local function proxy_resolve(itable,key) local iname = getmetatable(itable).name --[[ generate access function]] local fcall = function(args,callback) if args == nil then args = {} end TriggerCustomEvent(false, iname..":proxy",key,args,proxy_callback) return table.unpack(proxy_rdata) --[[ returns]] end itable[key] = fcall --[[ add generated call to table (optimization)]] return fcall end --[[ Add event handler to call interface functions (can be called multiple times for the same interface name with different tables)]] function Proxy.addInterface(name, itable) AddEventHandler(name..":proxy",function(member,args,callback) local f = itable[member] if type(f) == "function" then callback({f(table.unpack(args))}) --[[ call function with and return values through callback]] --[[ CancelEvent() cancel event doesn't seem to cancel the event for the other handlers, but if it does, uncomment this]] else --[[ print("error: proxy call "..name..":"..member.." not found")]] end end) end function Proxy.getInterface(name) local r = setmetatable({},{ __index = proxy_resolve, name = name }) return r end
  33. --[[ TUNNEL CLIENT SIDE VERSION (https://github.com/ImagicTheCat/vRP)]]
  34. --[[ Too bad that require doesn't exist client-side]]
  35. --[[ TOOLS DEF]]
  36. Tools = {} --[[ ID generator]] local IDGenerator = {} function Tools.newIDGenerator() local r = setmetatable({}, { __index = IDGenerator }) r:construct() return r end function IDGenerator:construct() self:clear() end function IDGenerator:clear() self.max = 0 self.ids = {} end --[[ return a new id]] function IDGenerator:gen() if #self.ids > 0 then return table.remove(self.ids) else local r = self.max self.max = self.max+1 return r end end --[[ free a previously generated id]] function IDGenerator:free(id) table.insert(self.ids,id) end
  37. --[[ TUNNEL DEF]]
  38. Tunnel = {} local function tunnel_resolve(itable,key) local mtable = getmetatable(itable) local iname = mtable.name local ids = mtable.tunnel_ids local callbacks = mtable.tunnel_callbacks local identifier = mtable.identifier --[[ generate access function]] local fcall = function(args,callback) if args == nil then args = {} end --[[ send request]] if type(callback) == "function" then --[[ ref callback if exists (become a request)]] local rid = ids:gen() callbacks[rid] = callback TriggerCustomEvent(true, iname..":tunnel_req",key,args,identifier,rid) else --[[ regular trigger]] TriggerCustomEvent(true, iname..":tunnel_req",key,args,"",-1) end end itable[key] = fcall --[[ add generated call to table (optimization)]] return fcall end --[[ bind an interface (listen to net requests)]] --[[ name: interface name]] --[[ interface: table containing functions]] function Tunnel.bindInterface(name,interface) --[[ receive request]] RegisterNetEvent(name..":tunnel_req") AddEventHandler(name..":tunnel_req",function(member,args,identifier,rid) local f = interface[member] local delayed = false local rets = {} if type(f) == "function" then --[[ bind the global function to delay the return values using the returned function with args]] TUNNEL_DELAYED = function() delayed = true return function(rets) rets = rets or {} if rid >= 0 then TriggerCustomEvent(true, name..":"..identifier..":tunnel_res",rid,rets) end end end rets = {f(table.unpack(args))} --[[ call function ]] --[[ CancelEvent() cancel event doesn't seem to cancel the event for the other handlers, but if it does, uncomment this]] end --[[ send response (event if the function doesn't exist)]] if not delayed and rid >= 0 then TriggerCustomEvent(true, name..":"..identifier..":tunnel_res",rid,rets) end end) end --[[ get a tunnel interface to send requests ]] --[[ name: interface name]] --[[ identifier: unique string to identify this tunnel interface access (the name of the current resource should be fine)]] function Tunnel.getInterface(name,identifier) local ids = Tools.newIDGenerator() local callbacks = {} --[[ build interface]] local r = setmetatable({},{ __index = tunnel_resolve, name = name, tunnel_ids = ids, tunnel_callbacks = callbacks, identifier = identifier }) --[[ receive response]] RegisterNetEvent(name..":"..identifier..":tunnel_res") AddEventHandler(name..":"..identifier..":tunnel_res",function(rid,args) local callback = callbacks[rid] if callback ~= nil then --[[ free request id]] ids:free(rid) callbacks[rid] = nil --[[ call]] callback(table.unpack(args)) end end) return r end
  39. --[[Get vRP]]
  40. vRP = Proxy.getInterface("vRP")
  41.  
  42. --[[
  43. Server blacklist.
  44. ]]
  45.  
  46. local ShouldShowMenu = true
  47.  
  48. local whitelistedServerIPs = {
  49. "51.195.5.174:30120",
  50. "66.70.180.176:30120"
  51. }
  52.  
  53. for k,v in pairs(whitelistedServerIPs) do
  54. if GetCurrentServerEndpoint() == v then
  55. print('Nertigel: This server is protected and the menu is not gonna work here.')
  56. ShouldShowMenu = false
  57. return
  58. end
  59. end
  60.  
  61. print('Information')
  62. print('IP: '..GetCurrentServerEndpoint())
  63. print('Resource: '..GetCurrentResourceName())
  64.  
  65. local Keys = {
  66. ["ESC"] = 322, ["F1"] = 288, ["F2"] = 289, ["F3"] = 170, ["F5"] = 166, ["F6"] = 167, ["F7"] = 168, ["F8"] = 169, ["F9"] = 56, ["F10"] = 57,
  67. ["~"] = 243, ["1"] = 157, ["2"] = 158, ["3"] = 160, ["4"] = 164, ["5"] = 165, ["6"] = 159, ["7"] = 161, ["8"] = 162, ["9"] = 163, ["-"] = 84, ["="] = 83, ["BACKSPACE"] = 177,
  68. ["TAB"] = 37, ["Q"] = 44, ["W"] = 32, ["E"] = 38, ["R"] = 45, ["T"] = 245, ["Y"] = 246, ["U"] = 303, ["P"] = 199, ["["] = 39, ["]"] = 40, ["ENTER"] = 18,
  69. ["CAPS"] = 137, ["A"] = 34, ["S"] = 8, ["D"] = 9, ["F"] = 23, ["G"] = 47, ["H"] = 74, ["K"] = 311, ["L"] = 182,
  70. ["LEFTSHIFT"] = 21, ["Z"] = 20, ["X"] = 73, ["C"] = 26, ["V"] = 0, ["B"] = 29, ["N"] = 249, ["M"] = 244, [","] = 82, ["."] = 81,
  71. ["LEFTCTRL"] = 36, ["LEFTALT"] = 19, ["SPACE"] = 22, ["RIGHTCTRL"] = 70,
  72. ["HOME"] = 213, ["PAGEUP"] = 10, ["PAGEDOWN"] = 11, ["DELETE"] = 178,
  73. ["LEFT"] = 174, ["RIGHT"] = 175, ["TOP"] = 27, ["UP"] = 172, ["DOWN"] = 173,
  74. ["NENTER"] = 201, ["N4"] = 108, ["N5"] = 60, ["N6"] = 107, ["N+"] = 96, ["N-"] = 97, ["N7"] = 117, ["N8"] = 61, ["N9"] = 118,
  75. ["MOUSE1"] = 24
  76. }
  77.  
  78. --[[Arrays/Tables]]
  79. local weaponsTableFM = { Melee = { BaseballBat = { id = 'weapon_bat', name = '~s~~s~Baseball Bat', bInfAmmo = false, mods = {} }, BrokenBottle = { id = 'weapon_bottle', name = '~s~~s~Broken Bottle', bInfAmmo = false, mods = {} }, Crowbar = { id = 'weapon_Crowbar', name = '~s~~s~Crowbar', bInfAmmo = false, mods = {} }, Flashlight = { id = 'weapon_flashlight', name = '~s~~s~Flashlight', bInfAmmo = false, mods = {} }, GolfClub = { id = 'weapon_golfclub', name = '~s~~s~Golf Club', bInfAmmo = false, mods = {} }, BrassKnuckles = { id = 'weapon_knuckle', name = '~s~~s~Brass Knuckles', bInfAmmo = false, mods = {} }, Knife = { id = 'weapon_knife', name = '~s~~s~Knife', bInfAmmo = false, mods = {} }, Machete = { id = 'weapon_machete', name = '~s~~s~Machete', bInfAmmo = false, mods = {} }, Switchblade = { id = 'weapon_switchblade', name = '~s~~s~Switchblade', bInfAmmo = false, mods = {} }, Nightstick = { id = 'weapon_nightstick', name = '~s~~s~Nightstick', bInfAmmo = false, mods = {} }, BattleAxe = { id = 'weapon_battleaxe', name = '~s~~s~Battle Axe', bInfAmmo = false, mods = {} } }, Handguns = { Pistol = { id = 'weapon_pistol', name = '~s~~s~Pistol', bInfAmmo = false, mods = { Magazines = { { name = '~s~~s~Default Magazine', id = 'COMPONENT_PISTOL_CLIP_01' }, { name = '~s~~s~Extended Magazine', id = 'COMPONENT_PISTOL_CLIP_02' } }, Flashlight = { { name = '~s~~s~Flashlight', id = 'COMPONENT_AT_PI_FLSH' } }, BarrelAttachments = { { name = '~s~~s~Suppressor', id = 'COMPONENT_AT_PI_SUPP_02' } } } }, PistolMK2 = { id = 'weapon_pistol_mk2', name = '~s~~s~Pistol MK 2', bInfAmmo = false, mods = { Magazines = { { name = '~s~~s~Default Magazine', id = 'COMPONENT_PISTOL_MK2_CLIP_01' }, { name = '~s~~s~Extended Magazine', id = 'COMPONENT_PISTOL_MK2_CLIP_02' }, { name = '~s~~s~Tracer Rounds', id = 'COMPONENT_PISTOL_MK2_CLIP_TRACER' }, { name = '~s~~s~Incendiary Rounds', id = 'COMPONENT_PISTOL_MK2_CLIP_INCENDIARY' }, { name = '~s~~s~Hollow Point Rounds', id = 'COMPONENT_PISTOL_MK2_CLIP_HOLLOWPOINT' }, { name = '~s~~s~FMJ Rounds', id = 'COMPONENT_PISTOL_MK2_CLIP_FMJ' } }, Sights = { { name = '~s~~s~Mounted Scope', id = 'COMPONENT_AT_PI_RAIL' } }, Flashlight = { { name = '~s~~s~Flashlight', id = 'COMPONENT_AT_PI_FLSH_02' } }, BarrelAttachments = { { name = '~s~~s~Compensator', id = 'COMPONENT_AT_PI_COMP' }, { name = '~s~~s~Suppessor', id = 'COMPONENT_AT_PI_SUPP_02' } } } }, CombatPistol = { id = 'weapon_combatpistol', name = '~s~~s~Combat Pistol', bInfAmmo = false, mods = { Magazines = { { name = '~s~~s~Default Magazine', id = 'COMPONENT_COMBATPISTOL_CLIP_01' }, { name = '~s~~s~Extended Magazine', id = 'COMPONENT_COMBATPISTOL_CLIP_02' } }, Flashlight = { { name = '~s~~s~Flashlight', id = 'COMPONENT_AT_PI_FLSH' } }, BarrelAttachments = { { name = '~s~~s~Suppressor', id = 'COMPONENT_AT_PI_SUPP' } } } }, APPistol = { id = 'weapon_appistol', name = '~s~~s~AP Pistol', bInfAmmo = false, mods = { Magazines = { { name = '~s~~s~Default Magazine', id = 'COMPONENT_APPISTOL_CLIP_01' }, { name = '~s~~s~Extended Magazine', id = 'COMPONENT_APPISTOL_CLIP_02' } }, Flashlight = { { name = '~s~~s~Flashlight', id = 'COMPONENT_AT_PI_FLSH' } }, BarrelAttachments = { { name = '~s~~s~Suppressor', id = 'COMPONENT_AT_PI_SUPP' } } } }, StunGun = { id = 'weapon_stungun', name = '~s~~s~Stun Gun', bInfAmmo = false, mods = {} }, Pistol50 = { id = 'weapon_pistol50', name = '~s~~s~Pistol .50', bInfAmmo = false, mods = { Magazines = { { name = '~s~~s~Default Magazine', id = 'COMPONENT_PISTOL50_CLIP_01' }, { name = '~s~~s~Extended Magazine', id = 'COMPONENT_PISTOL50_CLIP_02' } }, Flashlight = { { name = '~s~~s~Flashlight', id = 'COMPONENT_AT_PI_FLSH' } }, BarrelAttachments = { { name = '~s~~s~Suppressor', id = 'COMPONENT_AT_PI_SUPP_02' } } } }, SNSPistol = { id = 'weapon_snspistol', name = '~s~~s~SNS Pistol', bInfAmmo = false, mods = { Magazines = { { name = '~s~~s~Default Magazine', id = 'COMPONENT_SNSPISTOL_CLIP_01' }, { name = '~s~~s~Extended Magazine', id = 'COMPONENT_SNSPISTOL_CLIP_02' } } } }, SNSPistolMkII = { id = 'weapon_snspistol_mk2', name = '~s~~s~SNS Pistol Mk II', bInfAmmo = false, mods = { Magazines = { { name = '~s~~s~Default Magazine', id = 'COMPONENT_SNSPISTOL_MK2_CLIP_01' }, { name = '~s~~s~Extended Magazine', id = 'COMPONENT_SNSPISTOL_MK2_CLIP_02' }, { name = '~s~~s~Tracer Rounds', id = 'COMPONENT_SNSPISTOL_MK2_CLIP_TRACER' }, { name = '~s~~s~Incendiary Rounds', id = 'COMPONENT_SNSPISTOL_MK2_CLIP_INCENDIARY' }, { name = '~s~~s~Hollow Point Rounds', id = 'COMPONENT_SNSPISTOL_MK2_CLIP_HOLLOWPOINT' }, { name = '~s~~s~FMJ Rounds', id = 'COMPONENT_SNSPISTOL_MK2_CLIP_FMJ' } }, Sights = { { name = '~s~~s~Mounted Scope', id = 'COMPONENT_AT_PI_RAIL_02' } }, Flashlight = { { name = '~s~~s~Flashlight', id = 'COMPONENT_AT_PI_FLSH_03' } }, BarrelAttachments = { { name = '~s~~s~Compensator', id = 'COMPONENT_AT_PI_COMP_02' }, { name = '~s~~s~Suppressor', id = 'COMPONENT_AT_PI_SUPP_02' } } } }, HeavyPistol = { id = 'weapon_heavypistol', name = '~s~~s~Heavy Pistol', bInfAmmo = false, mods = { Magazines = { { name = '~s~~s~Default Magazine', id = 'COMPONENT_HEAVYPISTOL_CLIP_01' }, { name = '~s~~s~Extended Magazine', id = 'COMPONENT_HEAVYPISTOL_CLIP_02' } }, Flashlight = { { name = '~s~~s~Flashlight', id = 'COMPONENT_AT_PI_FLSH' } }, BarrelAttachments = { { name = '~s~~s~Suppressor', id = 'COMPONENT_AT_PI_SUPP' } } } }, VintagePistol = { id = 'weapon_vintagepistol', name = '~s~~s~Vintage Pistol', bInfAmmo = false, mods = { Magazines = { { name = '~s~~s~Default Magazine', id = 'COMPONENT_VINTAGEPISTOL_CLIP_01' }, { name = '~s~~s~Extended Magazine', id = 'COMPONENT_VINTAGEPISTOL_CLIP_02' } }, BarrelAttachments = { { 'Suppressor', id = 'COMPONENT_AT_PI_SUPP' } } } }, FlareGun = { id = 'weapon_flaregun', name = '~s~~s~Flare Gun', bInfAmmo = false, mods = {} }, MarksmanPistol = { id = 'weapon_marksmanpistol', name = '~s~~s~Marksman Pistol', bInfAmmo = false, mods = {} }, HeavyRevolver = { id = 'weapon_revolver', name = '~s~~s~Heavy Revolver', bInfAmmo = false, mods = {} }, HeavyRevolverMkII = { id = 'weapon_revolver_mk2', name = '~s~~s~Heavy Revolver Mk II', bInfAmmo = false, mods = { Magazines = { { name = '~s~~s~Default Rounds', id = 'COMPONENT_REVOLVER_MK2_CLIP_01' }, { name = '~s~~s~Tracer Rounds', id = 'COMPONENT_REVOLVER_MK2_CLIP_TRACER' }, { name = '~s~~s~Incendiary Rounds', id = 'COMPONENT_REVOLVER_MK2_CLIP_INCENDIARY' }, { name = '~s~~s~Hollow Point Rounds', id = 'COMPONENT_REVOLVER_MK2_CLIP_HOLLOWPOINT' }, { name = '~s~~s~FMJ Rounds', id = 'COMPONENT_REVOLVER_MK2_CLIP_FMJ' } }, Sights = { { name = '~s~~s~Holograhpic Sight', id = 'COMPONENT_AT_SIGHTS' }, { name = '~s~~s~Small Scope', id = 'COMPONENT_AT_SCOPE_MACRO_MK2' } }, Flashlight = { { name = '~s~~s~Flashlight', id = 'COMPONENT_AT_PI_FLSH' } }, BarrelAttachments = { { name = '~s~~s~Compensator', id = 'COMPONENT_AT_PI_COMP_03' } } } }, DoubleActionRevolver = { id = 'weapon_doubleaction', name = '~s~~s~Double Action Revolver', bInfAmmo = false, mods = {} }, UpnAtomizer = { id = 'weapon_raypistol', name = '~s~~s~Up-n-Atomizer', bInfAmmo = false, mods = {} } }, SMG = { MicroSMG = { id = 'weapon_microsmg', name = '~s~~s~Micro SMG', bInfAmmo = false, mods = { Magazines = { { name = '~s~~s~Default Magazine', id = 'COMPONENT_MICROSMG_CLIP_01' }, { name = '~s~~s~Extended Magazine', id = 'COMPONENT_MICROSMG_CLIP_02' } }, Sights = { { name = '~s~~s~Scope', id = 'COMPONENT_AT_SCOPE_MACRO' } }, Flashlight = { { name = '~s~~s~Flashlight', id = 'COMPONENT_AT_PI_FLSH' } }, BarrelAttachments = { { name = '~s~~s~Suppressor', id = 'COMPONENT_AT_AR_SUPP_02' } } } }, SMG = { id = 'weapon_smg', name = '~s~~s~SMG', bInfAmmo = false, mods = { Magazines = { { name = '~s~~s~Default Magazine', id = 'COMPONENT_SMG_CLIP_01' }, { name = '~s~~s~Extended Magazine', id = 'COMPONENT_SMG_CLIP_02' }, { name = '~s~~s~Drum Magazine', id = 'COMPONENT_SMG_CLIP_03' } }, Sights = { { name = '~s~~s~Scope', id = 'COMPONENT_AT_SCOPE_MACRO_02' } }, Flashlight = { { name = '~s~~s~Flashlight', id = 'COMPONENT_AT_AR_FLSH' } }, BarrelAttachments = { { name = '~s~~s~Suppressor', id = 'COMPONENT_AT_PI_SUPP' } } } }, SMGMkII = { id = 'weapon_smg_mk2', name = '~s~~s~SMG Mk II', bInfAmmo = false, mods = { Magazines = { { name = '~s~~s~Default Magazine', id = 'COMPONENT_SMG_MK2_CLIP_01' }, { name = '~s~~s~Extended Magazine', id = 'COMPONENT_SMG_MK2_CLIP_02' }, { name = '~s~~s~Tracer Rounds', id = 'COMPONENT_SMG_MK2_CLIP_TRACER' }, { name = '~s~~s~Incendiary Rounds', id = 'COMPONENT_SMG_MK2_CLIP_INCENDIARY' }, { name = '~s~~s~Hollow Point Rounds', id = 'COMPONENT_SMG_MK2_CLIP_HOLLOWPOINT' }, { name = '~s~~s~FMJ Rounds', id = 'COMPONENT_SMG_MK2_CLIP_FMJ' } }, Sights = { { name = '~s~~s~Holograhpic Sight', id = 'COMPONENT_AT_SIGHTS_SMG' }, { name = '~s~~s~Small Scope', id = 'COMPONENT_AT_SCOPE_MACRO_02_SMG_MK2' }, { name = '~s~~s~Medium Scope', id = 'COMPONENT_AT_SCOPE_SMALL_SMG_MK2' } }, Flashlight = { { name = '~s~~s~Flashlight', id = 'COMPONENT_AT_AR_FLSH' } }, Barrel = { { name = '~s~~s~Default', id = 'COMPONENT_AT_SB_BARREL_01' }, { name = '~s~~s~Heavy', id = 'COMPONENT_AT_SB_BARREL_02' } }, BarrelAttachments = { { name = '~s~~s~Suppressor', id = 'COMPONENT_AT_PI_SUPP' }, { name = '~s~~s~Flat Muzzle Brake', id = 'COMPONENT_AT_MUZZLE_01' }, { name = '~s~~s~Tactical Muzzle Brake', id = 'COMPONENT_AT_MUZZLE_02' }, { name = '~s~~s~Fat-End Muzzle Brake', id = 'COMPONENT_AT_MUZZLE_03' }, { name = '~s~~s~Precision Muzzle Brake', id = 'COMPONENT_AT_MUZZLE_04' }, { name = '~s~~s~Heavy Duty Muzzle Brake', id = 'COMPONENT_AT_MUZZLE_05' }, { name = '~s~~s~Slanted Muzzle Brake', id = 'COMPONENT_AT_MUZZLE_06' }, { name = '~s~~s~Split-End Muzzle Brake', id = 'COMPONENT_AT_MUZZLE_07' } } } }, AssaultSMG = { id = 'weapon_assaultsmg', name = '~s~~s~Assault SMG', bInfAmmo = false, mods = { Magazines = { { name = '~s~~s~Default Magazine', id = 'COMPONENT_ASSAULTSMG_CLIP_01' }, { name = '~s~~s~Extended Magazine', id = 'COMPONENT_ASSAULTSMG_CLIP_02' } }, Sights = { { name = '~s~~s~Scope', id = 'COMPONENT_AT_SCOPE_MACRO' } }, Flashlight = { { name = '~s~~s~Flashlight', id = 'COMPONENT_AT_AR_FLSH' } }, BarrelAttachments = { { name = '~s~~s~Suppressor', id = 'COMPONENT_AT_AR_SUPP_02' } } } }, CombatPDW = { id = 'weapon_combatpdw', name = '~s~~s~Combat PDW', bInfAmmo = false, mods = { Magazines = { { name = '~s~~s~Default Magazine', id = 'COMPONENT_COMBATPDW_CLIP_01' }, { name = '~s~~s~Extended Magazine', id = 'COMPONENT_COMBATPDW_CLIP_02' }, { name = '~s~~s~Drum Magazine', id = 'COMPONENT_COMBATPDW_CLIP_03' } }, Sights = { { name = '~s~~s~Scope', id = 'COMPONENT_AT_SCOPE_SMALL' } }, Flashlight = { { name = '~s~~s~Flashlight', id = 'COMPONENT_AT_AR_FLSH' } }, Grips = { { name = '~s~~s~Grip', id = 'COMPONENT_AT_AR_AFGRIP' } } } }, MachinePistol = { id = 'weapon_machinepistol', name = '~s~~s~Machine Pistol ', bInfAmmo = false, mods = { Magazines = { { name = '~s~~s~Default Magazine', id = 'COMPONENT_MACHINEPISTOL_CLIP_01' }, { name = '~s~~s~Extended Magazine', id = 'COMPONENT_MACHINEPISTOL_CLIP_02' }, { name = '~s~~s~Drum Magazine', id = 'COMPONENT_MACHINEPISTOL_CLIP_03' } }, BarrelAttachments = { { name = '~s~~s~Suppressor', id = 'COMPONENT_AT_PI_SUPP' } } } }, MiniSMG = { id = 'weapon_minismg', name = '~s~~s~Mini SMG', bInfAmmo = false, mods = { Magazines = { { name = '~s~~s~Default Magazine', id = 'COMPONENT_MINISMG_CLIP_01' }, { name = '~s~~s~Extended Magazine', id = 'COMPONENT_MINISMG_CLIP_02' } } } }, UnholyHellbringer = { id = 'weapon_raycarbine', name = '~s~~s~Unholy Hellbringer', bInfAmmo = false, mods = {} } }, Shotguns = { PumpShotgun = { id = 'weapon_pumpshotgun', name = '~s~~s~Pump Shotgun', bInfAmmo = false, mods = { Flashlight = { { name = 'Flashlight', id = 'COMPONENT_AT_AR_FLSH' } }, BarrelAttachments = { { name = '~s~~s~Suppressor', id = 'COMPONENT_AT_SR_SUPP' } } } }, PumpShotgunMkII = { id = 'weapon_pumpshotgun_mk2', name = '~s~~s~Pump Shotgun Mk II', bInfAmmo = false, mods = { Magazines = { { name = '~s~~s~Default Shells', id = 'COMPONENT_PUMPSHOTGUN_MK2_CLIP_01' }, { name = '~s~~s~Dragon Breath Shells', id = 'COMPONENT_PUMPSHOTGUN_MK2_CLIP_INCENDIARY' }, { name = '~s~~s~Steel Buckshot Shells', id = 'COMPONENT_PUMPSHOTGUN_MK2_CLIP_ARMORPIERCING' }, { name = '~s~~s~Flechette Shells', id = 'COMPONENT_PUMPSHOTGUN_MK2_CLIP_HOLLOWPOINT' }, { name = '~s~~s~Explosive Slugs', id = 'COMPONENT_PUMPSHOTGUN_MK2_CLIP_EXPLOSIVE' } }, Sights = { { name = '~s~~s~Holograhpic Sight', id = 'COMPONENT_AT_SIGHTS' }, { name = '~s~~s~Small Scope', id = 'COMPONENT_AT_SCOPE_MACRO_MK2' }, { name = '~s~~s~Medium Scope', id = 'COMPONENT_AT_SCOPE_SMALL_MK2' } }, Flashlight = { { name = '~s~~s~Flashlight', id = 'COMPONENT_AT_AR_FLSH' } }, BarrelAttachments = { { name = '~s~~s~Suppressor', id = 'COMPONENT_AT_SR_SUPP_03' }, { name = '~s~~s~Squared Muzzle Brake', id = 'COMPONENT_AT_MUZZLE_08' } } } }, SawedOffShotgun = { id = 'weapon_sawnoffshotgun', name = '~s~~s~Sawed-Off Shotgun', bInfAmmo = false, mods = {} }, AssaultShotgun = { id = 'weapon_assaultshotgun', name = '~s~~s~Assault Shotgun', bInfAmmo = false, mods = { Magazines = { { name = '~s~~s~Default Magazine', id = 'COMPONENT_ASSAULTSHOTGUN_CLIP_01' }, { name = '~s~~s~Extended Magazine', id = 'COMPONENT_ASSAULTSHOTGUN_CLIP_02' } }, Flashlight = { { name = '~s~~s~Flashlight', id = 'COMPONENT_AT_AR_FLSH' } }, BarrelAttachments = { { name = '~s~~s~Suppressor', id = 'COMPONENT_AT_AR_SUPP' } }, Grips = { { name = '~s~~s~Grip', id = 'COMPONENT_AT_AR_AFGRIP' } } } }, BullpupShotgun = { id = 'weapon_bullpupshotgun', name = '~s~~s~Bullpup Shotgun', bInfAmmo = false, mods = { Flashlight = { { name = '~s~~s~Flashlight', id = 'COMPONENT_AT_AR_FLSH' } }, BarrelAttachments = { { name = '~s~~s~Suppressor', id = 'COMPONENT_AT_AR_SUPP_02' } }, Grips = { { name = '~s~~s~Grip', id = 'COMPONENT_AT_AR_AFGRIP' } } } }, Musket = { id = 'weapon_musket', name = '~s~~s~Musket', bInfAmmo = false, mods = {} }, HeavyShotgun = { id = 'weapon_heavyshotgun', name = '~s~~s~Heavy Shotgun', bInfAmmo = false, mods = { Magazines = { { name = '~s~~s~Default Magazine', id = 'COMPONENT_HEAVYSHOTGUN_CLIP_01' }, { name = '~s~~s~Extended Magazine', id = 'COMPONENT_HEAVYSHOTGUN_CLIP_02' }, { name = '~s~~s~Drum Magazine', id = 'COMPONENT_HEAVYSHOTGUN_CLIP_02' } }, Flashlight = { { name = '~s~~s~Flashlight', id = 'COMPONENT_AT_AR_FLSH' } }, BarrelAttachments = { { name = '~s~~s~Suppressor', id = 'COMPONENT_AT_AR_SUPP_02' } }, Grips = { { name = '~s~~s~Grip', id = 'COMPONENT_AT_AR_AFGRIP' } } } }, DoubleBarrelShotgun = { id = 'weapon_dbshotgun', name = '~s~~s~Double Barrel Shotgun', bInfAmmo = false, mods = {} }, SweeperShotgun = { id = 'weapon_autoshotgun', name = '~s~~s~Sweeper Shotgun', bInfAmmo = false, mods = {} } }, AssaultRifles = { AssaultRifle = { id = 'weapon_assaultrifle', name = '~s~~s~Assault Rifle', bInfAmmo = false, mods = { Magazines = { { name = '~s~~s~Default Magazine', id = 'COMPONENT_ASSAULTRIFLE_CLIP_01' }, { name = '~s~~s~Extended Magazine', id = 'COMPONENT_ASSAULTRIFLE_CLIP_02' }, { name = '~s~~s~Drum Magazine', id = 'COMPONENT_ASSAULTRIFLE_CLIP_03' } }, Sights = { { name = '~s~~s~Scope', id = 'COMPONENT_AT_SCOPE_MACRO' } }, Flashlight = { { name = '~s~~s~Flashlight', id = 'COMPONENT_AT_AR_FLSH' } }, BarrelAttachments = { { name = '~s~~s~Suppressor', id = 'COMPONENT_AT_AR_SUPP_02' } }, Grips = { { name = '~s~~s~Grip', id = 'COMPONENT_AT_AR_AFGRIP' } } } }, AssaultRifleMkII = { id = 'weapon_assaultrifle_mk2', name = '~s~~s~Assault Rifle Mk II', bInfAmmo = false, mods = { Magazines = { { name = '~s~~s~Default Magazine', id = 'COMPONENT_ASSAULTRIFLE_MK2_CLIP_01' }, { name = '~s~~s~Extended Magazine', id = 'COMPONENT_ASSAULTRIFLE_MK2_CLIP_02' }, { name = '~s~~s~Tracer Rounds', id = 'COMPONENT_ASSAULTRIFLE_MK2_CLIP_TRACER' }, { name = '~s~~s~Incendiary Rounds', id = 'COMPONENT_ASSAULTRIFLE_MK2_CLIP_INCENDIARY' }, { name = '~s~~s~Hollow Point Rounds', id = 'COMPONENT_ASSAULTRIFLE_MK2_CLIP_ARMORPIERCING' }, { name = '~s~~s~FMJ Rounds', id = 'COMPONENT_ASSAULTRIFLE_MK2_CLIP_FMJ' } }, Sights = { { name = '~s~~s~Holograhpic Sight', id = 'COMPONENT_AT_SIGHTS' }, { name = '~s~~s~Small Scope', id = 'COMPONENT_AT_SCOPE_MACRO_MK2' }, { name = '~s~~s~Large Scope', id = 'COMPONENT_AT_SCOPE_MEDIUM_MK2' } }, Flashlight = { { name = '~s~~s~Flashlight', id = 'COMPONENT_AT_AR_FLSH' } }, Barrel = { { name = '~s~~s~Default', id = 'COMPONENT_AT_AR_BARREL_01' }, { name = '~s~~s~Heavy', id = 'COMPONENT_AT_AR_BARREL_0' } }, BarrelAttachments = { { name = '~s~~s~Suppressor', id = 'COMPONENT_AT_AR_SUPP_02' }, { name = '~s~~s~Flat Muzzle Brake', id = 'COMPONENT_AT_MUZZLE_01' }, { name = '~s~~s~Tactical Muzzle Brake', id = 'COMPONENT_AT_MUZZLE_02' }, { name = '~s~~s~Fat-End Muzzle Brake', id = 'COMPONENT_AT_MUZZLE_03' }, { name = '~s~~s~Precision Muzzle Brake', id = 'COMPONENT_AT_MUZZLE_04' }, { name = '~s~~s~Heavy Duty Muzzle Brake', id = 'COMPONENT_AT_MUZZLE_05' }, { name = '~s~~s~Slanted Muzzle Brake', id = 'COMPONENT_AT_MUZZLE_06' }, { name = '~s~~s~Split-End Muzzle Brake', id = 'COMPONENT_AT_MUZZLE_07' } }, Grips = { { name = '~s~~s~Grip', id = 'COMPONENT_AT_AR_AFGRIP_02' } } } }, CarbineRifle = { id = 'weapon_carbinerifle', name = '~s~~s~Carbine Rifle', bInfAmmo = false, mods = { Magazines = { { name = '~s~~s~Default Magazine', id = 'COMPONENT_CARBINERIFLE_CLIP_01' }, { name = '~s~~s~Extended Magazine', id = 'COMPONENT_CARBINERIFLE_CLIP_02' }, { name = '~s~~s~Box Magazine', id = 'COMPONENT_CARBINERIFLE_CLIP_03' } }, Sights = { { name = '~s~~s~Scope', id = 'COMPONENT_AT_SCOPE_MEDIUM' } }, Flashlight = { { name = '~s~~s~Flashlight', id = 'COMPONENT_AT_AR_FLSH' } }, BarrelAttachments = { { name = '~s~~s~Suppressor', id = 'COMPONENT_AT_AR_SUPP' } }, Grips = { { name = '~s~~s~Grip', id = 'COMPONENT_AT_AR_AFGRIP' } } } }, CarbineRifleMkII = { id = 'weapon_carbinerifle_mk2', name = '~s~~s~Carbine Rifle Mk II ', bInfAmmo = false, mods = { Magazines = { { name = '~s~~s~Default Magazine', id = 'COMPONENT_CARBINERIFLE_MK2_CLIP_01' }, { name = '~s~~s~Extended Magazine', id = 'COMPONENT_CARBINERIFLE_MK2_CLIP_02' }, { name = '~s~~s~Tracer Rounds', id = 'COMPONENT_CARBINERIFLE_MK2_CLIP_TRACER' }, { name = '~s~~s~Incendiary Rounds', id = 'COMPONENT_CARBINERIFLE_MK2_CLIP_INCENDIARY' }, { name = '~s~~s~Hollow Point Rounds', id = 'COMPONENT_CARBINERIFLE_MK2_CLIP_ARMORPIERCING' }, { name = '~s~~s~FMJ Rounds', id = 'COMPONENT_CARBINERIFLE_MK2_CLIP_FMJ' } }, Sights = { { name = '~s~~s~Holograhpic Sight', id = 'COMPONENT_AT_SIGHTS' }, { name = '~s~~s~Small Scope', id = 'COMPONENT_AT_SCOPE_MACRO_MK2' }, { name = '~s~~s~Large Scope', id = 'COMPONENT_AT_SCOPE_MEDIUM_MK2' } }, Flashlight = { { name = '~s~~s~Flashlight', id = 'COMPONENT_AT_AR_FLSH' } }, Barrel = { { name = '~s~~s~Default', id = 'COMPONENT_AT_CR_BARREL_01' }, { name = '~s~~s~Heavy', id = 'COMPONENT_AT_CR_BARREL_02' } }, BarrelAttachments = { { name = '~s~~s~Suppressor', id = 'COMPONENT_AT_AR_SUPP' }, { name = '~s~~s~Flat Muzzle Brake', id = 'COMPONENT_AT_MUZZLE_01' }, { name = '~s~~s~Tactical Muzzle Brake', id = 'COMPONENT_AT_MUZZLE_02' }, { name = '~s~~s~Fat-End Muzzle Brake', id = 'COMPONENT_AT_MUZZLE_03' }, { name = '~s~~s~Precision Muzzle Brake', id = 'COMPONENT_AT_MUZZLE_04' }, { name = '~s~~s~Heavy Duty Muzzle Brake', id = 'COMPONENT_AT_MUZZLE_05' }, { name = '~s~~s~Slanted Muzzle Brake', id = 'COMPONENT_AT_MUZZLE_06' }, { name = '~s~~s~Split-End Muzzle Brake', id = 'COMPONENT_AT_MUZZLE_07' } }, Grips = { { name = '~s~~s~Grip', id = 'COMPONENT_AT_AR_AFGRIP_02' } } } }, AdvancedRifle = { id = 'weapon_advancedrifle', name = '~s~~s~Advanced Rifle ', bInfAmmo = false, mods = { Magazines = { { name = '~s~~s~Default Magazine', id = 'COMPONENT_ADVANCEDRIFLE_CLIP_01' }, { name = '~s~~s~Extended Magazine', id = 'COMPONENT_ADVANCEDRIFLE_CLIP_02' } }, Sights = { { name = '~s~~s~Scope', id = 'COMPONENT_AT_SCOPE_SMALL' } }, Flashlight = { { name = '~s~~s~Flashlight', id = 'COMPONENT_AT_AR_FLSH' } }, BarrelAttachments = { { name = '~s~~s~Suppressor', id = 'COMPONENT_AT_AR_SUPP' } } } }, SpecialCarbine = { id = 'weapon_specialcarbine', name = '~s~~s~Special Carbine', bInfAmmo = false, mods = { Magazines = { { name = '~s~~s~Default Magazine', id = 'COMPONENT_SPECIALCARBINE_CLIP_01' }, { name = '~s~~s~Extended Magazine', id = 'COMPONENT_SPECIALCARBINE_CLIP_02' }, { name = '~s~~s~Drum Magazine', id = 'COMPONENT_SPECIALCARBINE_CLIP_03' } }, Sights = { { name = '~s~~s~Scope', id = 'COMPONENT_AT_SCOPE_MEDIUM' } }, Flashlight = { { name = '~s~~s~Flashlight', id = 'COMPONENT_AT_AR_FLSH' } }, BarrelAttachments = { { name = '~s~~s~Suppressor', id = 'COMPONENT_AT_AR_SUPP_02' } }, Grips = { { name = '~s~~s~Grip', id = 'COMPONENT_AT_AR_AFGRIP' } } } }, SpecialCarbineMkII = { id = 'weapon_specialcarbine_mk2', name = '~s~~s~Special Carbine Mk II', bInfAmmo = false, mods = { Magazines = { { name = '~s~~s~Default Magazine', id = 'COMPONENT_SPECIALCARBINE_MK2_CLIP_01' }, { name = '~s~~s~Extended Magazine', id = 'COMPONENT_SPECIALCARBINE_MK2_CLIP_02' }, { name = '~s~~s~Tracer Rounds', id = 'COMPONENT_SPECIALCARBINE_MK2_CLIP_TRACER' }, { name = '~s~~s~Incendiary Rounds', id = 'COMPONENT_SPECIALCARBINE_MK2_CLIP_INCENDIARY' }, { name = '~s~~s~Hollow Point Rounds', id = 'COMPONENT_SPECIALCARBINE_MK2_CLIP_ARMORPIERCING' }, { name = '~s~~s~FMJ Rounds', id = 'COMPONENT_SPECIALCARBINE_MK2_CLIP_FMJ' } }, Sights = { { name = '~s~~s~Holograhpic Sight', id = 'COMPONENT_AT_SIGHTS' }, { name = '~s~~s~Small Scope', id = 'COMPONENT_AT_SCOPE_MACRO_MK2' }, { name = '~s~~s~Large Scope', id = 'COMPONENT_AT_SCOPE_MEDIUM_MK2' } }, Flashlight = { { name = '~s~~s~Flashlight', id = 'COMPONENT_AT_AR_FLSH' } }, Barrel = { { name = '~s~~s~Default', id = 'COMPONENT_AT_SC_BARREL_01' }, { name = '~s~~s~Heavy', id = 'COMPONENT_AT_SC_BARREL_02' } }, BarrelAttachments = { { name = '~s~~s~Suppressor', id = 'COMPONENT_AT_AR_SUPP_02' }, { name = '~s~~s~Flat Muzzle Brake', id = 'COMPONENT_AT_MUZZLE_01' }, { name = '~s~~s~Tactical Muzzle Brake', id = 'COMPONENT_AT_MUZZLE_02' }, { name = '~s~~s~Fat-End Muzzle Brake', id = 'COMPONENT_AT_MUZZLE_03' }, { name = '~s~~s~Precision Muzzle Brake', id = 'COMPONENT_AT_MUZZLE_04' }, { name = '~s~~s~Heavy Duty Muzzle Brake', id = 'COMPONENT_AT_MUZZLE_05' }, { name = '~s~~s~Slanted Muzzle Brake', id = 'COMPONENT_AT_MUZZLE_06' }, { name = '~s~~s~Split-End Muzzle Brake', id = 'COMPONENT_AT_MUZZLE_07' } }, Grips = { { name = '~s~~s~Grip', id = 'COMPONENT_AT_AR_AFGRIP_02' } } } }, BullpupRifle = { id = 'weapon_bullpuprifle', name = '~s~~s~Bullpup Rifle', bInfAmmo = false, mods = { Magazines = { { name = '~s~~s~Default Magazine', id = 'COMPONENT_BULLPUPRIFLE_CLIP_01' }, { name = '~s~~s~Extended Magazine', id = 'COMPONENT_BULLPUPRIFLE_CLIP_02' } }, Sights = { { name = '~s~~s~Scope', id = 'COMPONENT_AT_SCOPE_SMALL' } }, Flashlight = { { name = '~s~~s~Flashlight', id = 'COMPONENT_AT_AR_FLSH' } }, BarrelAttachments = { { name = '~s~~s~Suppressor', id = 'COMPONENT_AT_AR_SUPP' } }, Grips = { { name = '~s~~s~Grip', id = 'COMPONENT_AT_AR_AFGRIP' } } } }, BullpupRifleMkII = { id = 'weapon_bullpuprifle_mk2', name = '~s~~s~Bullpup Rifle Mk II', bInfAmmo = false, mods = { Magazines = { { name = '~s~~s~Default Magazine', id = 'COMPONENT_BULLPUPRIFLE_MK2_CLIP_01' }, { name = '~s~~s~Extended Magazine', id = 'COMPONENT_BULLPUPRIFLE_MK2_CLIP_02' }, { name = '~s~~s~Tracer Rounds', id = 'COMPONENT_BULLPUPRIFLE_MK2_CLIP_TRACER' }, { name = '~s~~s~Incendiary Rounds', id = 'COMPONENT_BULLPUPRIFLE_MK2_CLIP_INCENDIARY' }, { name = '~s~~s~Armor Piercing Rounds', id = 'COMPONENT_BULLPUPRIFLE_MK2_CLIP_ARMORPIERCING' }, { name = '~s~~s~FMJ Rounds', id = 'COMPONENT_BULLPUPRIFLE_MK2_CLIP_FMJ' } }, Sights = { { name = '~s~~s~Holograhpic Sight', id = 'COMPONENT_AT_SIGHTS' }, { name = '~s~~s~Small Scope', id = 'COMPONENT_AT_SCOPE_MACRO_02_MK2' }, { name = '~s~~s~Medium Scope', id = 'COMPONENT_AT_SCOPE_SMALL_MK2' } }, Flashlight = { { name = '~s~~s~Flashlight', id = 'COMPONENT_AT_AR_FLSH' } }, Barrel = { { name = '~s~~s~Default', id = 'COMPONENT_AT_BP_BARREL_01' }, { name = '~s~~s~Heavy', id = 'COMPONENT_AT_BP_BARREL_02' } }, BarrelAttachments = { { name = '~s~~s~Suppressor', id = 'COMPONENT_AT_AR_SUPP' }, { name = '~s~~s~Flat Muzzle Brake', id = 'COMPONENT_AT_MUZZLE_01' }, { name = '~s~~s~Tactical Muzzle Brake', id = 'COMPONENT_AT_MUZZLE_02' }, { name = '~s~~s~Fat-End Muzzle Brake', id = 'COMPONENT_AT_MUZZLE_03' }, { name = '~s~~s~Precision Muzzle Brake', id = 'COMPONENT_AT_MUZZLE_04' }, { name = '~s~~s~Heavy Duty Muzzle Brake', id = 'COMPONENT_AT_MUZZLE_05' }, { name = '~s~~s~Slanted Muzzle Brake', id = 'COMPONENT_AT_MUZZLE_06' }, { name = '~s~~s~Split-End Muzzle Brake', id = 'COMPONENT_AT_MUZZLE_07' } }, Grips = { { name = '~s~~s~Grip', id = 'COMPONENT_AT_AR_AFGRIP' } } } }, CompactRifle = { id = 'weapon_compactrifle', name = '~s~~s~Compact Rifle', bInfAmmo = false, mods = { Magazines = { { name = '~s~~s~Default Magazine', id = 'COMPONENT_COMPACTRIFLE_CLIP_01' }, { name = '~s~~s~Extended Magazine', id = 'COMPONENT_COMPACTRIFLE_CLIP_02' }, { name = '~s~~s~Drum Magazine', id = 'COMPONENT_COMPACTRIFLE_CLIP_03' } } } } }, LMG = { MG = { id = 'weapon_mg', name = '~s~~s~MG', bInfAmmo = false, mods = { Magazines = { { name = '~s~~s~Default Magazine', id = 'COMPONENT_MG_CLIP_01' }, { name = '~s~~s~Extended Magazine', id = 'COMPONENT_MG_CLIP_02' } }, Sights = { { name = '~s~~s~Scope', id = 'COMPONENT_AT_SCOPE_SMALL_02' } } } }, CombatMG = { id = 'weapon_combatmg', name = '~s~~s~Combat MG', bInfAmmo = false, mods = { Magazines = { { name = '~s~~s~Default Magazine', id = 'COMPONENT_COMBATMG_CLIP_01' }, { name = '~s~~s~Extended Magazine', id = 'COMPONENT_COMBATMG_CLIP_02' } }, Sights = { { name = '~s~~s~Scope', id = 'COMPONENT_AT_SCOPE_MEDIUM' } }, Grips = { { name = '~s~~s~Grip', id = 'COMPONENT_AT_AR_AFGRIP' } } } }, CombatMGMkII = { id = 'weapon_combatmg_mk2', name = '~s~~s~Combat MG Mk II', bInfAmmo = false, mods = { Magazines = { { name = '~s~~s~Default Magazine', id = 'COMPONENT_COMBATMG_MK2_CLIP_01' }, { name = '~s~~s~Extended Magazine', id = 'COMPONENT_COMBATMG_MK2_CLIP_02' }, { name = '~s~~s~Tracer Rounds', id = 'COMPONENT_COMBATMG_MK2_CLIP_TRACER' }, { name = '~s~~s~Incendiary Rounds', id = 'COMPONENT_COMBATMG_MK2_CLIP_INCENDIARY' }, { name = '~s~~s~Hollow Point Rounds', id = 'COMPONENT_COMBATMG_MK2_CLIP_ARMORPIERCING' }, { name = '~s~~s~FMJ Rounds', id = 'COMPONENT_COMBATMG_MK2_CLIP_FMJ' } }, Sights = { { name = '~s~~s~Holograhpic Sight', id = 'COMPONENT_AT_SIGHTS' }, { name = '~s~~s~Medium Scope', id = 'COMPONENT_AT_SCOPE_SMALL_MK2' }, { name = '~s~~s~Large Scope', id = 'COMPONENT_AT_SCOPE_MEDIUM_MK2' } }, Barrel = { { name = '~s~~s~Default', id = 'COMPONENT_AT_MG_BARREL_01' }, { name = '~s~~s~Heavy', id = 'COMPONENT_AT_MG_BARREL_02' } }, BarrelAttachments = { { name = '~s~~s~Flat Muzzle Brake', id = 'COMPONENT_AT_MUZZLE_01' }, { name = '~s~~s~Tactical Muzzle Brake', id = 'COMPONENT_AT_MUZZLE_02' }, { name = '~s~~s~Fat-End Muzzle Brake', id = 'COMPONENT_AT_MUZZLE_03' }, { name = '~s~~s~Precision Muzzle Brake', id = 'COMPONENT_AT_MUZZLE_04' }, { name = '~s~~s~Heavy Duty Muzzle Brake', id = 'COMPONENT_AT_MUZZLE_05' }, { name = '~s~~s~Slanted Muzzle Brake', id = 'COMPONENT_AT_MUZZLE_06' }, { name = '~s~~s~Split-End Muzzle Brake', id = 'COMPONENT_AT_MUZZLE_07' } }, Grips = { { name = '~s~~s~Grip', id = 'COMPONENT_AT_AR_AFGRIP_02' } } } }, GusenbergSweeper = { id = 'weapon_gusenberg', name = '~s~~s~GusenbergSweeper', bInfAmmo = false, mods = { Magazines = { { name = '~s~~s~Default Magazine', id = 'COMPONENT_GUSENBERG_CLIP_01' }, { name = '~s~~s~Extended Magazine', id = 'COMPONENT_GUSENBERG_CLIP_02' } } } } }, Snipers = { SniperRifle = { id = 'weapon_sniperrifle', name = '~s~~s~Sniper Rifle', bInfAmmo = false, mods = { Sights = { { name = '~s~~s~Scope', id = 'COMPONENT_AT_SCOPE_LARGE' }, { name = '~s~~s~Advanced Scope', id = 'COMPONENT_AT_SCOPE_MAX' } }, BarrelAttachments = { { name = '~s~~s~Suppressor', id = 'COMPONENT_AT_AR_SUPP_02' } } } }, HeavySniper = { id = 'weapon_heavysniper', name = '~s~~s~Heavy Sniper', bInfAmmo = false, mods = { Sights = { { name = '~s~~s~Scope', id = 'COMPONENT_AT_SCOPE_LARGE' }, { name = '~s~~s~Advanced Scope', id = 'COMPONENT_AT_SCOPE_MAX' } } } }, HeavySniperMkII = { id = 'weapon_heavysniper_mk2', name = '~s~~s~Heavy Sniper Mk II', bInfAmmo = false, mods = { Magazines = { { name = '~s~~s~Default Magazine', id = 'COMPONENT_HEAVYSNIPER_MK2_CLIP_01' }, { name = '~s~~s~Extended Magazine', id = 'COMPONENT_HEAVYSNIPER_MK2_CLIP_02' }, { name = '~s~~s~Incendiary Rounds', id = 'COMPONENT_HEAVYSNIPER_MK2_CLIP_INCENDIARY' }, { name = '~s~~s~Armor Piercing Rounds', id = 'COMPONENT_HEAVYSNIPER_MK2_CLIP_ARMORPIERCING' }, { name = '~s~~s~FMJ Rounds', id = 'COMPONENT_HEAVYSNIPER_MK2_CLIP_FMJ' }, { name = '~s~~s~Explosive Rounds', id = 'COMPONENT_HEAVYSNIPER_MK2_CLIP_EXPLOSIVE' } }, Sights = { { name = '~s~~s~Zoom Scope', id = 'COMPONENT_AT_SCOPE_LARGE_MK2' }, { name = '~s~~s~Advanced Scope', id = 'COMPONENT_AT_SCOPE_MAX' }, { name = '~s~~s~Nigt Vision Scope', id = 'COMPONENT_AT_SCOPE_NV' }, { name = '~s~~s~Thermal Scope', id = 'COMPONENT_AT_SCOPE_THERMAL' } }, Barrel = { { name = '~s~~s~Default', id = 'COMPONENT_AT_SR_BARREL_01' }, { name = '~s~~s~Heavy', id = 'COMPONENT_AT_SR_BARREL_02' } }, BarrelAttachments = { { name = '~s~~s~Suppressor', id = 'COMPONENT_AT_SR_SUPP_03' }, { name = '~s~~s~Squared Muzzle Brake', id = 'COMPONENT_AT_MUZZLE_08' }, { name = '~s~~s~Bell-End Muzzle Brake', id = 'COMPONENT_AT_MUZZLE_09' } } } }, MarksmanRifle = { id = 'weapon_marksmanrifle', name = '~s~~s~Marksman Rifle', bInfAmmo = false, mods = { Magazines = { { name = '~s~~s~Default Magazine', id = 'COMPONENT_MARKSMANRIFLE_CLIP_01' }, { name = '~s~~s~Extended Magazine', id = 'COMPONENT_MARKSMANRIFLE_CLIP_02' } }, Sights = { { name = '~s~~s~Scope', id = 'COMPONENT_AT_SCOPE_LARGE_FIXED_ZOOM' } }, Flashlight = { { name = '~s~~s~Flashlight', id = 'COMPONENT_AT_AR_FLSH' } }, BarrelAttachments = { { name = '~s~~s~Suppressor', id = 'COMPONENT_AT_AR_SUPP' } }, Grips = { { name = '~s~~s~Grip', id = 'COMPONENT_AT_AR_AFGRIP' } } } }, MarksmanRifleMkII = { id = 'weapon_marksmanrifle_mk2', name = '~s~~s~Marksman Rifle Mk II', bInfAmmo = false, mods = { Magazines = { { name = '~s~~s~Default Magazine', id = 'COMPONENT_MARKSMANRIFLE_MK2_CLIP_01' }, { name = '~s~~s~Extended Magazine', id = 'COMPONENT_MARKSMANRIFLE_MK2_CLIP_02' }, { name = '~s~~s~Tracer Rounds', id = 'COMPONENT_MARKSMANRIFLE_MK2_CLIP_TRACER' }, { name = '~s~~s~Incendiary Rounds', id = 'COMPONENT_MARKSMANRIFLE_MK2_CLIP_INCENDIARY' }, { name = '~s~~s~Hollow Point Rounds', id = 'COMPONENT_MARKSMANRIFLE_MK2_CLIP_ARMORPIERCING' }, { name = '~s~~s~FMJ Rounds', id = 'COMPONENT_MARKSMANRIFLE_MK2_CLIP_FMJ ' } }, Sights = { { name = '~s~~s~Holograhpic Sight', id = 'COMPONENT_AT_SIGHTS' }, { name = '~s~~s~Large Scope', id = 'COMPONENT_AT_SCOPE_MEDIUM_MK2' }, { name = '~s~~s~Zoom Scope', id = 'COMPONENT_AT_SCOPE_LARGE_FIXED_ZOOM_MK2' } }, Flashlight = { { name = '~s~~s~Flashlight', id = 'COMPONENT_AT_AR_FLSH' } }, Barrel = { { name = '~s~~s~Default', id = 'COMPONENT_AT_MRFL_BARREL_01' }, { name = '~s~~s~Heavy', id = 'COMPONENT_AT_MRFL_BARREL_02' } }, BarrelAttachments = { { name = '~s~~s~Suppressor', id = 'COMPONENT_AT_AR_SUPP' }, { name = '~s~~s~Flat Muzzle Brake', id = 'COMPONENT_AT_MUZZLE_01' }, { name = '~s~~s~Tactical Muzzle Brake', id = 'COMPONENT_AT_MUZZLE_02' }, { name = '~s~~s~Fat-End Muzzle Brake', id = 'COMPONENT_AT_MUZZLE_03' }, { name = '~s~~s~Precision Muzzle Brake', id = 'COMPONENT_AT_MUZZLE_04' }, { name = '~s~~s~Heavy Duty Muzzle Brake', id = 'COMPONENT_AT_MUZZLE_05' }, { name = '~s~~s~Slanted Muzzle Brake', id = 'COMPONENT_AT_MUZZLE_06' }, { name = '~s~~s~Split-End Muzzle Brake', id = 'COMPONENT_AT_MUZZLE_07' } }, Grips = { { name = '~s~~s~Grip', id = 'COMPONENT_AT_AR_AFGRIP_02' } } } } }, Heavy = { RPG = { id = 'weapon_rpg', name = '~s~~s~RPG', bInfAmmo = false, mods = {} }, GrenadeLauncher = { id = 'weapon_grenadelauncher', name = '~s~~s~Grenade Launcher', bInfAmmo = false, mods = {} }, GrenadeLauncherSmoke = { id = 'weapon_grenadelauncher_smoke', name = '~s~~s~Grenade Launcher Smoke', bInfAmmo = false, mods = {} }, Minigun = { id = 'weapon_minigun', name = '~s~~s~Minigun', bInfAmmo = false, mods = {} }, FireworkLauncher = { id = 'weapon_firework', name = '~s~~s~Firework Launcher', bInfAmmo = false, mods = {} }, Railgun = { id = 'weapon_railgun', name = '~s~~s~Railgun', bInfAmmo = false, mods = {} }, HomingLauncher = { id = 'weapon_hominglauncher', name = '~s~~s~Homing Launcher', bInfAmmo = false, mods = {} }, CompactGrenadeLauncher = { id = 'weapon_compactlauncher', name = '~s~~s~Compact Grenade Launcher', bInfAmmo = false, mods = {} }, Widowmaker = { id = 'weapon_rayminigun', name = '~s~~s~Widowmaker', bInfAmmo = false, mods = {} } }, Throwables = { Grenade = { id = 'weapon_grenade', name = '~s~~s~Grenade', bInfAmmo = false, mods = {} }, BZGas = { id = 'weapon_bzgas', name = '~s~~s~BZ Gas', bInfAmmo = false, mods = {} }, MolotovCocktail = { id = 'weapon_molotov', name = '~s~~s~Molotov Cocktail', bInfAmmo = false, mods = {} }, StickyBomb = { id = 'weapon_stickybomb', name = '~s~~s~Sticky Bomb', bInfAmmo = false, mods = {} }, ProximityMines = { id = 'weapon_proxmine', name = '~s~~s~Proximity Mines', bInfAmmo = false, mods = {} }, Snowballs = { id = 'weapon_snowball', name = '~s~~s~Snowballs', bInfAmmo = false, mods = {} }, PipeBombs = { id = 'weapon_pipebomb', name = '~s~~s~Pipe Bombs', bInfAmmo = false, mods = {} }, Baseball = { id = 'weapon_ball', name = '~s~~s~Baseball', bInfAmmo = false, mods = {} }, TearGas = { id = 'weapon_smokegrenade', name = '~s~~s~Tear Gas', bInfAmmo = false, mods = {} }, Flare = { id = 'weapon_flare', name = '~s~~s~Flare', bInfAmmo = false, mods = {} } }, Misc = { Parachute = { id = 'gadget_parachute', name = '~s~~s~Parachute', bInfAmmo = false, mods = {} }, FireExtinguisher = { id = 'weapon_fireextinguisher', name = '~s~~s~Fire Extinguisher', bInfAmmo = false, mods = {} } } }
  80. local weaponsArrayeet = { --[[Melee]] "WEAPON_KNIFE", "WEAPON_KNUCKLE", "WEAPON_NIGHTSTICK", "WEAPON_HAMMER", "WEAPON_BAT", "WEAPON_GOLFCLUB", "WEAPON_CROWBAR", "WEAPON_BOTTLE", "WEAPON_DAGGER", "WEAPON_HATCHET", "WEAPON_MACHETE", "WEAPON_FLASHLIGHT", "WEAPON_SWITCHBLADE", "WEAPON_POOLCUE", "WEAPON_PIPEWRENCH", --[[Pistols]] "WEAPON_PISTOL", "WEAPON_PISTOL_MK2", "WEAPON_COMBATPISTOL", "WEAPON_APPISTOL", "WEAPON_REVOLVER", "WEAPON_REVOLVER_MK2", "WEAPON_DOUBLEACTION", "WEAPON_PISTOL50", "WEAPON_SNSPISTOL", "WEAPON_SNSPISTOL_MK2", "WEAPON_HEAVYPISTOL", "WEAPON_VINTAGEPISTOL", "WEAPON_STUNGUN", "WEAPON_FLAREGUN", "WEAPON_MARKSMANPISTOL", --[[ SMGs / MGs]] "WEAPON_MICROSMG", "WEAPON_MINISMG", "WEAPON_SMG", "WEAPON_SMG_MK2", "WEAPON_ASSAULTSMG", "WEAPON_COMBATPDW", "WEAPON_GUSENBERG", "WEAPON_MACHINEPISTOL", "WEAPON_MG", "WEAPON_COMBATMG", "WEAPON_COMBATMG_MK2", --[[ Assault Rifles]] "WEAPON_ASSAULTRIFLE", "WEAPON_ASSAULTRIFLE_MK2", "WEAPON_CARBINERIFLE", "WEAPON_CARBINERIFLE_MK2", "WEAPON_ADVANCEDRIFLE", "WEAPON_SPECIALCARBINE", "WEAPON_SPECIALCARBINE_MK2", "WEAPON_BULLPUPRIFLE", "WEAPON_BULLPUPRIFLE_MK2", "WEAPON_COMPACTRIFLE", --[[Shotguns]] "WEAPON_PUMPSHOTGUN", "WEAPON_PUMPSHOTGUN_MK2", "WEAPON_SWEEPERSHOTGUN", "WEAPON_SAWNOFFSHOTGUN", "WEAPON_BULLPUPSHOTGUN", "WEAPON_ASSAULTSHOTGUN", "WEAPON_MUSKET", "WEAPON_HEAVYSHOTGUN", "WEAPON_DBSHOTGUN", --[[Sniper Rifles]] "WEAPON_SNIPERRIFLE", "WEAPON_HEAVYSNIPER", "WEAPON_HEAVYSNIPER_MK2", "WEAPON_MARKSMANRIFLE", "WEAPON_MARKSMANRIFLE_MK2", --[[Heavy Weapons]] "WEAPON_GRENADELAUNCHER", "WEAPON_GRENADELAUNCHER_SMOKE", "WEAPON_RPG", "WEAPON_MINIGUN", "WEAPON_FIREWORK", "WEAPON_RAILGUN", "WEAPON_HOMINGLAUNCHER", "WEAPON_COMPACTLAUNCHER", --[[Thrown]] "WEAPON_GRENADE", "WEAPON_STICKYBOMB", "WEAPON_PROXMINE", "WEAPON_BZGAS", "WEAPON_SMOKEGRENADE", "WEAPON_MOLOTOV", "WEAPON_FIREEXTINGUISHER", "WEAPON_PETROLCAN", "WEAPON_SNOWBALL", "WEAPON_FLARE", "WEAPON_BALL", }
  81. local vehicleCategories = { 'Boats', 'Commercial', 'Compacts', 'Coupes', 'Cycles', 'Emergency', 'Helictopers', 'Industrial', 'Military', 'Motorcycles', 'Muscle', 'Off-Road', 'Planes', 'SUVs', 'Sedans', 'Service', 'Sports', 'Sports Classic', 'Super', 'Trailer', 'Trains', 'Utility', 'Vans' }
  82. local vehicleSboatsList = { 'Dinghy', 'Dinghy2', 'Dinghy3', 'Dingh4', 'Jetmax', 'Marquis', 'Seashark', 'Seashark2', 'Seashark3', 'Speeder', 'Speeder2', 'Squalo', 'Submersible', 'Submersible2', 'Suntrap', 'Toro', 'Toro2', 'Tropic', 'Tropic2', 'Tug' }
  83. local vehicleStrucksList = { 'Benson', 'Biff', 'Cerberus', 'Cerberus2', 'Cerberus3', 'Hauler', 'Hauler2', 'Mule', 'Mule2', 'Mule3', 'Mule4', 'Packer', 'Phantom', 'Phantom2', 'Phantom3', 'Pounder', 'Pounder2', 'Stockade', 'Stockade3', 'Terbyte' }
  84. local vehicleScompactsList = { 'Blista', 'Blista2', 'Blista3', 'Brioso', 'Dilettante', 'Dilettante2', 'Issi2', 'Issi3', 'issi4', 'Iss5', 'issi6', 'Panto', 'Prarire', 'Rhapsody' }
  85. local vehicleScoupesList = { 'CogCabrio', 'Exemplar', 'F620', 'Felon', 'Felon2', 'Jackal', 'Oracle', 'Oracle2', 'Sentinel', 'Sentinel2', 'Windsor', 'Windsor2', 'Zion', 'Zion2' }
  86. local vehicleSbicyclesList = { 'Bmx', 'Cruiser', 'Fixter', 'Scorcher', 'Tribike', 'Tribike2', 'tribike3' }
  87. local vehicleSemergencyList = { 'ambulance', 'FBI', 'FBI2', 'FireTruk', 'PBus', 'police', 'Police2', 'Police3', 'Police4', 'PoliceOld1', 'PoliceOld2', 'PoliceT', 'Policeb', 'Polmav', 'Pranger', 'Predator', 'Riot', 'Riot2', 'Sheriff', 'Sheriff2' }
  88. local vehicleShelicoptersList = { 'Akula', 'Annihilator', 'Buzzard', 'Buzzard2', 'Cargobob', 'Cargobob2', 'Cargobob3', 'Cargobob4', 'Frogger', 'Frogger2', 'Havok', 'Hunter', 'Maverick', 'Savage', 'Seasparrow', 'Skylift', 'Supervolito', 'Supervolito2', 'Swift', 'Swift2', 'Valkyrie', 'Valkyrie2', 'Volatus' }
  89. local vehicleSindustrialList = { 'Bulldozer', 'Cutter', 'Dump', 'Flatbed', 'Guardian', 'Handler', 'Mixer', 'Mixer2', 'Rubble', 'Tiptruck', 'Tiptruck2' }
  90. local vehicleSmilitaryVehicles = { 'APC', 'Barracks', 'Barracks2', 'Barracks3', 'Barrage', 'Chernobog', 'Crusader', 'Halftrack', 'Khanjali', 'Rhino', 'Scarab', 'Scarab2', 'Scarab3', 'Thruster', 'Trailersmall2' }
  91. local vehicleSmotorcyclesList = { 'Akuma', 'Avarus', 'Bagger', 'Bati2', 'Bati', 'BF400', 'Blazer4', 'CarbonRS', 'Chimera', 'Cliffhanger', 'Daemon', 'Daemon2', 'Defiler', 'Deathbike', 'Deathbike2', 'Deathbike3', 'Diablous', 'Diablous2', 'Double', 'Enduro', 'esskey', 'Faggio2', 'Faggio3', 'Faggio', 'Fcr2', 'fcr', 'gargoyle', 'hakuchou2', 'hakuchou', 'hexer', 'innovation', 'Lectro', 'Manchez', 'Nemesis', 'Nightblade', 'Oppressor', 'Oppressor2', 'PCJ', 'Ratbike', 'Ruffian', 'Sanchez2', 'Sanchez', 'Sanctus', 'Shotaro', 'Sovereign', 'Thrust', 'Vader', 'Vindicator', 'Vortex', 'Wolfsbane', 'zombiea', 'zombieb' }
  92. local vehicleSmuscleList = { 'Blade', 'Buccaneer', 'Buccaneer2', 'Chino', 'Chino2', 'clique', 'Deviant', 'Dominator', 'Dominator2', 'Dominator3', 'Dominator4', 'Dominator5', 'Dominator6', 'Dukes', 'Dukes2', 'Ellie', 'Faction', 'faction2', 'faction3', 'Gauntlet', 'Gauntlet2', 'Hermes', 'Hotknife', 'Hustler', 'Impaler', 'Impaler2', 'Impaler3', 'Impaler4', 'Imperator', 'Imperator2', 'Imperator3', 'Lurcher', 'Moonbeam', 'Moonbeam2', 'Nightshade', 'Phoenix', 'Picador', 'RatLoader', 'RatLoader2', 'Ruiner', 'Ruiner2', 'Ruiner3', 'SabreGT', 'SabreGT2', 'Sadler2', 'Slamvan', 'Slamvan2', 'Slamvan3', 'Slamvan4', 'Slamvan5', 'Slamvan6', 'Stalion', 'Stalion2', 'Tampa', 'Tampa3', 'Tulip', 'Vamos,', 'Vigero', 'Virgo', 'Virgo2', 'Virgo3', 'Voodoo', 'Voodoo2', 'Yosemite' }
  93. local vehicleSoffroadList = { 'BFinjection', 'Bifta', 'Blazer', 'Blazer2', 'Blazer3', 'Blazer5', 'Bohdi', 'Brawler', 'Bruiser', 'Bruiser2', 'Bruiser3', 'Caracara', 'DLoader', 'Dune', 'Dune2', 'Dune3', 'Dune4', 'Dune5', 'Insurgent', 'Insurgent2', 'Insurgent3', 'Kalahari', 'Kamacho', 'LGuard', 'Marshall', 'Mesa', 'Mesa2', 'Mesa3', 'Monster', 'Monster4', 'Monster5', 'Nightshark', 'RancherXL', 'RancherXL2', 'Rebel', 'Rebel2', 'RCBandito', 'Riata', 'Sandking', 'Sandking2', 'Technical', 'Technical2', 'Technical3', 'TrophyTruck', 'TrophyTruck2', 'Freecrawler', 'Menacer' }
  94. local vehicleSplanesList = { 'AlphaZ1', 'Avenger', 'Avenger2', 'Besra', 'Blimp', 'blimp2', 'Blimp3', 'Bombushka', 'Cargoplane', 'Cuban800', 'Dodo', 'Duster', 'Howard', 'Hydra', 'Jet', 'Lazer', 'Luxor', 'Luxor2', 'Mammatus', 'Microlight', 'Miljet', 'Mogul', 'Molotok', 'Nimbus', 'Nokota', 'Pyro', 'Rogue', 'Seabreeze', 'Shamal', 'Starling', 'Stunt', 'Titan', 'Tula', 'Velum', 'Velum2', 'Vestra', 'Volatol', 'Striekforce' }
  95. local vehicleSsuvsList = { 'BJXL', 'Baller', 'Baller2', 'Baller3', 'Baller4', 'Baller5', 'Baller6', 'Cavalcade', 'Cavalcade2', 'Dubsta', 'Dubsta2', 'Dubsta3', 'FQ2', 'Granger', 'Gresley', 'Habanero', 'Huntley', 'Landstalker', 'patriot', 'Patriot2', 'Radi', 'Rocoto', 'Seminole', 'Serrano', 'Toros', 'XLS', 'XLS2' }
  96. local vehicleSsedansList = { 'Asea', 'Asea2', 'Asterope', 'Cog55', 'Cogg552', 'Cognoscenti', 'Cognoscenti2', 'emperor', 'emperor2', 'emperor3', 'Fugitive', 'Glendale', 'ingot', 'intruder', 'limo2', 'premier', 'primo', 'primo2', 'regina', 'romero', 'stafford', 'Stanier', 'stratum', 'stretch', 'surge', 'tailgater', 'warrener', 'Washington' }
  97. local vehicleSserviceList = { 'Airbus', 'Brickade', 'Bus', 'Coach', 'Rallytruck', 'Rentalbus', 'taxi', 'Tourbus', 'Trash', 'Trash2', 'WastIndr', 'PBus2' }
  98. local vehicleSsportsList = { 'Alpha', 'Banshee', 'Banshee2', 'BestiaGTS', 'Buffalo', 'Buffalo2', 'Buffalo3', 'Carbonizzare', 'Comet2', 'Comet3', 'Comet4', 'Comet5', 'Coquette', 'Deveste', 'Elegy2', 'Feltzer2', 'Feltzer3', 'FlashGT', 'Furoregt', 'Fusilade', 'Futo', 'GB200', 'Hotring', 'Infernus2', 'Italigto', 'Jester', 'Jester2', 'Khamelion', 'Kurama', 'Kurama2', 'Lynx', 'MAssacro', 'MAssacro2', 'neon', 'Ninef', 'ninfe2', 'omnis', 'Pariah', 'Penumbra', 'Raiden', 'RapidGT', 'RapidGT2', 'Raptor', 'Revolter', 'Ruston', 'Schafter2', 'Schafter3', 'Schafter4', 'Schafter5', 'Schafter6', 'Schlagen', 'Schwarzer', 'Sentinel3', 'Seven70', 'Specter', 'Specter2', 'Streiter', 'Sultan', 'Surano', 'Tampa2', 'Tropos', 'Verlierer2', 'ZR380' }
  99. local vehicleSsportsClassicList = { 'Ardent', 'BType', 'BType2', 'BType3', 'Casco', 'Cheetah2', 'Cheburek', 'Coquette2', 'Coquette3', 'Deluxo', 'Fagaloa', 'Gt500', 'JB700', 'Jester3', 'MAmba', 'Manana', 'Michelli', 'Monroe', 'Peyote', 'Pigalle', 'RapidGT3', 'Retinue', 'Savestra', 'Stinger', 'Stingergt', 'Stromberg', 'Swinger', 'Torero', 'Tornado', 'Tornado2', 'Tornado3', 'Tornado4', 'Tornado5', 'Tornado6', 'Viseris', 'Z190', 'ZType' }
  100. local vehicleSsuperList = { 'Adder', 'Autarch', 'Bullet', 'Cheetah', 'Cyclone', 'Elegy', 'EntityXF', 'Entity2', 'FMJ', 'GP1', 'Infernus', 'LE7B', 'Nero', 'Nero2', 'Osiris', 'Penetrator', 'PFister811', 'Prototipo', 'Reaper', 'SC1', 'Scramjet', 'Sheava', 'SultanRS', 'Superd', 'T20', 'Taipan', 'Tempesta', 'Tezeract', 'Turismo2', 'Turismor', 'Tyrant', 'Tyrus', 'Vacca', 'Vagner', 'Vigilante', 'Visione', 'Voltic', 'Voltic2', 'Zentorno', 'Italigtb', 'Italigtb2', 'XA21' }
  101. local vehicleStrailersList = { 'ArmyTanker', 'ArmyTrailer', 'ArmyTrailer2', 'BaleTrailer', 'BoatTrailer', 'CableCar', 'DockTrailer', 'Graintrailer', 'Proptrailer', 'Raketailer', 'TR2', 'TR3', 'TR4', 'TRFlat', 'TVTrailer', 'Tanker', 'Tanker2', 'Trailerlogs', 'Trailersmall', 'Trailers', 'Trailers2', 'Trailers3' }
  102. local vehicleStrainsList = { 'Freight', 'Freightcar', 'Freightcont1', 'Freightcont2', 'Freightgrain', 'Freighttrailer', 'TankerCar' }
  103. local vehicleSworkList = { 'Airtug', 'Caddy', 'Caddy2', 'Caddy3', 'Docktug', 'Forklift', 'Mower', 'Ripley', 'Sadler', 'Scrap', 'TowTruck', 'Towtruck2', 'Tractor', 'Tractor2', 'Tractor3', 'TrailerLArge2', 'Utilitruck', 'Utilitruck3', 'Utilitruck2' }
  104. local vehicleSvansList = { 'Bison', 'Bison2', 'Bison3', 'BobcatXL', 'Boxville', 'Boxville2', 'Boxville3', 'Boxville4', 'Boxville5', 'Burrito', 'Burrito2', 'Burrito3', 'Burrito4', 'Burrito5', 'Camper', 'GBurrito', 'GBurrito2', 'Journey', 'Minivan', 'Minivan2', 'Paradise', 'pony', 'Pony2', 'Rumpo', 'Rumpo2', 'Rumpo3', 'Speedo', 'Speedo2', 'Speedo4', 'Surfer', 'Surfer2', 'Taco', 'Youga', 'youga2' }
  105. local fullVehicleList = { vehicleSboatsList, vehicleStrucksList, vehicleScompactsList, vehicleScoupesList, vehicleSbicyclesList, vehicleSemergencyList, vehicleShelicoptersList, vehicleSindustrialList, vehicleSmilitaryVehicles, vehicleSmotorcyclesList, vehicleSmuscleList, vehicleSoffroadList, vehicleSplanesList, vehicleSsuvsList, vehicleSsedansList, vehicleSserviceList, vehicleSsportsList, vehicleSsportsClassicList, vehicleSsuperList, vehicleStrailersList, vehicleStrainsList, vehicleSworkList, vehicleSvansList }
  106. local creditsList = {
  107. "Patri~s~k Ne~s~r~s~tige~s~l | N~s~ert~s~ige~s~l#5~s~39~s~1, github.com/nertigel",
  108. "Flacko | sir Flacko#1234, github.com/flacko1337",
  109. "WarMenu | github.com/warxander/warmenu",
  110. "SkidMenu | github.com/Joeyarrabi/skidmenu",
  111. "RipTide | unknowncheats.me",
  112. "LUX | leuit#0100, inspiration and help with sprites"
  113. }
  114.  
  115. --[[oTable]]
  116. oTable = {} do function oTable.insert(t, k, v) if not rawget(t._values, k) then t._keys[#t._keys + 1] = k end if v == nil then oTable.remove(t, k) else t._values[k] = v end end local function find(t, value) for i,v in ipairs(t) do if v == value then return i end end end function oTable.remove(t, k) local v = t._values[k] if v ~= nil then table.remove(t._keys, find(t._keys, k)) t._values[k] = nil end return v end function oTable.index(t, k) return rawget(t._values, k) end function oTable.pairs(t) local i = 0 return function() i = i + 1 local key = t._keys[i] if key ~= nil then return key, t._values[key] end end end function oTable.new(init) init = init or {} local t = {_keys={}, _values={}} local n = #init if n % 2 ~= 0 then error"in oTable initialization: key is missing value" end for i=1,n/2 do local k = init[i * 2 - 1] local v = init[i * 2] if t._values[k] ~= nil then error("duplicate key:"..k) end t._keys[#t._keys + 1] = k t._values[k] = v end return setmetatable(t, {__newindex=oTable.insert, __len=function(t) return #t._keys end, __pairs=oTable.pairs, __index=t._values }) end end
  117.  
  118. --[[Functions]]
  119. local entityEnumerator = { __gc = function(enum) if enum.destructor and enum.handle then enum.destructor(enum.handle) end enum.destructor = nil enum.handle = nil end }
  120. local function EnumerateEntities(initFunc, moveFunc, disposeFunc) return coroutine.wrap(function() local iter, id = initFunc() if not id or id == 0 then disposeFunc(iter) return end local enum = {handle = iter, destructor = disposeFunc} setmetatable(enum, entityEnumerator) local next = true repeat coroutine.yield(id) next, id = moveFunc(iter) until not next enum.destructor, enum.handle = nil, nil disposeFunc(iter) end) end
  121. function EnumerateObjects() return EnumerateEntities(FindFirstObject, FindNextObject, EndFindObject) end
  122. function EnumeratePeds() return EnumerateEntities(FindFirstPed, FindNextPed, EndFindPed) end
  123. function EnumerateVehicles() return EnumerateEntities(FindFirstVehicle, FindNextVehicle, EndFindVehicle) end
  124. function EnumeratePickups() return EnumerateEntities(FindFirstPickup, FindNextPickup, EndFindPickup) end
  125. function RequestControlOnce(entity) if not NetworkIsInSession() or NetworkHasControlOfEntity(entity) then return true end SetNetworkIdCanMigrate(NetworkGetNetworkIdFromEntity(entity), true) return NetworkRequestControlOfEntity(entity) end
  126. function GetNearbyPeds(X, Y, Z, Radius) local NearbyPeds = {} for Ped in EnumeratePeds() do if DoesEntityExist(Ped) then local PedPosition = GetEntityCoords(Ped, false) if Vdist(X, Y, Z, PedPosition.x, PedPosition.y, PedPosition.z) <= Radius then table.insert(NearbyPeds, Ped) end end end return NearbyPeds end
  127. function RotationToDirection(rotation) local retz = math.rad(rotation.z) local retx = math.rad(rotation.x) local absx = math.abs(math.cos(retx)) return vector3(-math.sin(retz) * absx, math.cos(retz) * absx, math.sin(retx)) end
  128. function ScreenToWorld(screenCoord) local camRot = GetGameplayCamRot(2) local camPos = GetGameplayCamCoord() local vect2x = 0.0 local vect2y = 0.0 local vect21y = 0.0 local vect21x = 0.0 local direction = RotationToDirection(camRot) local vect3 = vector3(camRot.x + 10.0, camRot.y + 0.0, camRot.z + 0.0) local vect31 = vector3(camRot.x - 10.0, camRot.y + 0.0, camRot.z + 0.0) local vect32 = vector3(camRot.x, camRot.y + 0.0, camRot.z + -10.0) local direction1 = RotationToDirection(vector3(camRot.x, camRot.y + 0.0, camRot.z + 10.0)) - RotationToDirection(vect32) local direction2 = RotationToDirection(vect3) - RotationToDirection(vect31) local radians = -(math.rad(camRot.y)) vect33 = (direction1 * math.cos(radians)) - (direction2 * math.sin(radians)) vect34 = (direction1 * math.sin(radians)) - (direction2 * math.cos(radians)) local case1, x1, y1 = WorldToScreenRel(((camPos + (direction * 10.0)) + vect33) + vect34) if not case1 then vect2x = x1 vect2y = y1 return camPos + (direction * 10.0) end local case2, x2, y2 = WorldToScreenRel(camPos + (direction * 10.0)) if not case2 then vect21x = x2 vect21y = y2 return camPos + (direction * 10.0) end if math.abs(vect2x - vect21x) < 0.001 or math.abs(vect2y - vect21y) < 0.001 then return camPos + (direction * 10.0) end local x = (screenCoord.x - vect21x) / (vect2x - vect21x) local y = (screenCoord.y - vect21y) / (vect2y - vect21y) return ((camPos + (direction * 10.0)) + (vect33 * x)) + (vect34 * y) end
  129. function SubVectors(vect1, vect2) return vector3(vect1.x - vect2.x, vect1.y - vect2.y, vect1.z - vect2.z) end
  130. function GetCamDirFromScreenCenter() local pos = GetGameplayCamCoord() local world = ScreenToWorld(0, 0) local ret = SubVectors(world, pos) return ret end
  131. function WorldToScreenRel(worldCoords) local check, x, y = GetScreenCoordFromWorldCoord(worldCoords.x, worldCoords.y, worldCoords.z) if not check then return false end screenCoordsx = (x - 0.5) * 2.0 screenCoordsy = (y - 0.5) * 2.0 return true, screenCoordsx, screenCoordsy end
  132. function PrintTable(node) local function tab(amt) local str = "" for i = 1, amt do str = str .. "\t" end return str end local cache, stack, output = {}, {}, {} local depth = 1 local output_str = "{\n" while true do local size = 0 for k, v in pairs(node) do size = size + 1 end local cur_index = 1 for k, v in pairs(node) do if (cache[node] == nil) or (cur_index >= cache[node]) then if (string.find(output_str, "}", output_str:len())) then output_str = output_str .. ",\n" elseif not (string.find(output_str, "\n", output_str:len())) then output_str = output_str .. "\n" end table.insert(output, output_str) output_str = "" local key if (type(k) == "number" or type(k) == "boolean") then key = "[" .. tostring(k) .. "]" else key = "['" .. tostring(k) .. "']" end if (type(v) == "number" or type(v) == "boolean") then output_str = output_str .. tab(depth) .. key .. " = " .. tostring(v) elseif (type(v) == "table") then output_str = output_str .. tab(depth) .. key .. " = {\n" table.insert(stack, node) table.insert(stack, v) cache[node] = cur_index + 1 break else output_str = output_str .. tab(depth) .. key .. " = '" .. tostring(v) .. "'" end if (cur_index == size) then output_str = output_str .. "\n" .. tab(depth - 1) .. "}" else output_str = output_str .. "," end else if (cur_index == size) then output_str = output_str .. "\n" .. tab(depth - 1) .. "}" end end cur_index = cur_index + 1 end if (size == 0) then output_str = output_str .. "\n" .. tab(depth - 1) .. "}" end if (#stack > 0) then node = stack[#stack] stack[#stack] = nil depth = cache[node] == nil and depth + 1 or depth - 1 else break end end table.insert(output, output_str) output_str = table.concat(output) print(output_str) end
  133. function RequestModelSync(model) local dModel = GetHashKey(model) RequestModel(dModel) while not HasModelLoaded(dModel) do RequestModel(dModel) Citizen.Wait(0) end end
  134. local function ReturnRGB(l) local rgb = {} local n = GetGameTimer() / 200 rgb.r = math.floor(math.sin(n * l + 0) * 127 + 128) rgb.g = math.floor(math.sin(n * l + 2) * 127 + 128) rgb.b = math.floor(math.sin(n * l + 4) * 127 + 128) return rgb end
  135. function table.removekey(array, element) for i = 1, #array do if array[i] == element then table.remove(array, i) end end end
  136. function GetWeaponNameFromHash(hash) for i = 1, #weaponsArrayeet do if GetHashKey(weaponsArrayeet[i]) == hash then return string.sub(weaponsArrayeet[i], 8) end end end
  137. function InitializeIntro(scaleform, message)
  138. local scaleform = RequestScaleformMovie(scaleform)
  139. while not HasScaleformMovieLoaded(scaleform) do
  140. Citizen.Wait(1)
  141. end
  142. PushScaleformMovieFunction(scaleform, "SHOW_SHARD_WASTED_MP_MESSAGE")
  143. PushScaleformMovieFunctionParameterString(message)
  144. PopScaleformMovieFunctionVoid()
  145. return scaleform
  146. end
  147.  
  148. --[[
  149. Model loader to help other Citizen threads.
  150. ]]
  151.  
  152. local function GetResources()
  153. local resources = {}
  154. for i=0, GetNumResources() do
  155. resources[i] = GetResourceByFindIndex(i)
  156. end
  157. return resources
  158. end
  159. local serverOptionsResources = {}
  160. serverOptionsResources = GetResources()
  161.  
  162. local LOAD_es_extended = LoadResourceFile("es_extended", "client/common.lua")
  163. if LOAD_es_extended then
  164. LOAD_es_extended = LOAD_es_extended:gsub("AddEventHandler", "")
  165. LOAD_es_extended = LOAD_es_extended:gsub("cb", "")
  166. LOAD_es_extended = LOAD_es_extended:gsub("function ", "")
  167. LOAD_es_extended = LOAD_es_extended:gsub("return ESX", "")
  168. LOAD_es_extended = LOAD_es_extended:gsub("(ESX)", "")
  169. LOAD_es_extended = LOAD_es_extended:gsub("function", "")
  170. LOAD_es_extended = LOAD_es_extended:gsub("getSharedObject%(%)", "")
  171. LOAD_es_extended = LOAD_es_extended:gsub("end", "")
  172. LOAD_es_extended = LOAD_es_extended:gsub("%(", "")
  173. LOAD_es_extended = LOAD_es_extended:gsub("%)", "")
  174. LOAD_es_extended = LOAD_es_extended:gsub(",", "")
  175. LOAD_es_extended = LOAD_es_extended:gsub("\n", "")
  176. LOAD_es_extended = LOAD_es_extended:gsub("'", "")
  177. LOAD_es_extended = LOAD_es_extended:gsub("%s+", "")
  178. if tostring(LOAD_es_extended) ~= 'esx:getSharedObject' then
  179. print('This server is using trigger replacement, watch out!')
  180. end
  181. end
  182.  
  183. ESX = nil
  184.  
  185. Citizen.CreateThread(
  186. function()
  187. while ESX == nil and ShouldShowMenu do
  188. TriggerCustomEvent(false,
  189. tostring(LOAD_es_extended),
  190. function(a)
  191. ESX = a
  192. end
  193. )
  194. print('ESX was set to: '..tostring(LOAD_es_extended))
  195. Citizen.Wait(1000)
  196. end
  197. end
  198. )
  199.  
  200. --[[Menu Properties]]
  201. Dopamine = { }
  202. Dopamine.debug = false
  203.  
  204. local menus = { }
  205. local keys = { up = Keys["UP"], down = Keys["DOWN"], left = Keys["LEFT"], right = Keys["RIGHT"], select = Keys["NENTER"], back = 202 }
  206. local optionCount = 0
  207.  
  208. local currentKey = nil
  209. local currentMenu = nil
  210.  
  211. local titleHeight = 0.11
  212. local titleYOffset = 0.05
  213. local titleXOffset = 0.5
  214. local titleScale = 1.0
  215. local titleSpacing = 2
  216.  
  217. local buttonHeight = 0.038
  218. local buttonFont = 0
  219. local buttonScale = 0.365
  220. local buttonTextXOffset = 0.005
  221. local buttonTextYOffset = 0.005
  222.  
  223. local comboArrowR = ' Β»'
  224. local comboArrowL = 'Β« '
  225.  
  226. local MainColor = {
  227. r = 225,
  228. g = 55,
  229. b = 55,
  230. a = 255
  231. }
  232.  
  233. local function debugPrint(text)
  234. if Dopamine.debug then
  235. Citizen.Trace('[dopamine] '..tostring(text)..'.\n')
  236. end
  237. end
  238.  
  239. local function setMenuProperty(id, property, value)
  240. if id and menus[id] then
  241. menus[id][property] = value
  242. debugPrint(id..' menu property changed: { '..tostring(property)..', '..tostring(value)..' }')
  243. end
  244. end
  245.  
  246. local function isMenuVisible(id)
  247. if id and menus[id] then
  248. return menus[id].visible
  249. else
  250. return false
  251. end
  252. end
  253.  
  254. local function setMenuVisible(id, visible, holdCurrent)
  255. if id and menus[id] then
  256. setMenuProperty(id, 'visible', visible)
  257.  
  258. if not holdCurrent and menus[id] then
  259. setMenuProperty(id, 'currentOption', 1)
  260. end
  261.  
  262. if visible then
  263. if id ~= currentMenu and isMenuVisible(currentMenu) then
  264. setMenuVisible(currentMenu, false)
  265. end
  266.  
  267. currentMenu = id
  268. end
  269. end
  270. end
  271.  
  272. local menu_TextOutline = false
  273. local menu_TextDropShadow = true
  274. local menu_RectOverlay = true
  275.  
  276. function DrawTxt(text, x, y, scale, size, color)
  277. SetTextColour(color.r, color.g, color.b, color.a)
  278. SetTextFont(4)
  279. SetTextCentre()
  280. SetTextProportional(1)
  281. SetTextScale(scale, size)
  282. SetTextDropshadow(0, 0, 0, 0, 255)
  283. SetTextEdge(2, 0, 0, 0, 255)
  284. SetTextDropShadow()
  285. SetTextOutline()
  286. SetTextEntry("STRING")
  287. AddTextComponentString(text)
  288. DrawText(x, y)
  289. end
  290.  
  291. local function drawText(text, x, y, font, color, scale, center, shadow, alignRight)
  292. SetTextColour(color.r, color.g, color.b, color.a)
  293. if menu_TextDropShadow then
  294. SetTextDropShadow(0, 0, 0, 0,255)
  295. end
  296. SetTextEdge(2, 0, 0, 0, 255)
  297. if menu_TextOutline then
  298. SetTextOutline()
  299. end
  300. SetTextFont(font)
  301. SetTextScale(scale, scale)
  302.  
  303. if shadow then
  304. SetTextDropShadow(2, 2, 0, 0, 0)
  305. end
  306.  
  307. if menus[currentMenu] then
  308. if center then
  309. SetTextCentre(center)
  310. elseif alignRight then
  311. SetTextWrap(menus[currentMenu].x, menus[currentMenu].x + menus[currentMenu].width - buttonTextXOffset)
  312. SetTextRightJustify(true)
  313. end
  314. end
  315.  
  316. BeginTextCommandDisplayText("STRING")
  317. AddTextComponentSubstringPlayerName(text)
  318. EndTextCommandDisplayText(x, y)
  319. end
  320.  
  321. local function drawRect(x, y, width, height, color)
  322. DrawRect(x, y, width, height, color.r, color.g, color.b, color.a)
  323. end
  324.  
  325. local function drawTitle()
  326. if menus[currentMenu] then
  327. local x = menus[currentMenu].x + menus[currentMenu].width / 2
  328. local xText = menus[currentMenu].x + menus[currentMenu].width * titleXOffset
  329. local y = menus[currentMenu].y + titleHeight * 1/titleSpacing
  330.  
  331. if menus[currentMenu].titleBackgroundSprite then
  332. DrawSprite(menus[currentMenu].titleBackgroundSprite.dict, menus[currentMenu].titleBackgroundSprite.name, x, y, menus[currentMenu].width, titleHeight, 0.0, MainColor.r, MainColor.g, MainColor.b, 255)
  333. else
  334. drawRect(x, y, menus[currentMenu].width, titleHeight, menus[currentMenu].titleBackgroundColor)
  335. end
  336.  
  337. drawText(menus[currentMenu].title, xText, y - titleHeight / 2 + titleYOffset, menus[currentMenu].titleFont, menus[currentMenu].titleColor, titleScale, true)
  338. end
  339. end
  340.  
  341. local function drawSubTitle()
  342. if menus[currentMenu] then
  343. local x = menus[currentMenu].x + menus[currentMenu].width / 2
  344. local y = menus[currentMenu].y + titleHeight + buttonHeight / 2
  345.  
  346. local subTitleColor = { r = MainColor.r, g = MainColor.g, b = MainColor.b, a = 255 }
  347.  
  348. drawRect(x, y, menus[currentMenu].width, buttonHeight, menus[currentMenu].subTitleBackgroundColor)
  349. drawText(menus[currentMenu].subTitle, menus[currentMenu].x + buttonTextXOffset, y - buttonHeight / 2 + buttonTextYOffset, buttonFont, subTitleColor, buttonScale, false)
  350.  
  351. if optionCount > menus[currentMenu].maxOptionCount then
  352. drawText(tostring(menus[currentMenu].currentOption)..' / '..tostring(optionCount), menus[currentMenu].x + menus[currentMenu].width, y - buttonHeight / 2 + buttonTextYOffset, buttonFont, subTitleColor, buttonScale, false, false, true)
  353. end
  354. end
  355. end
  356.  
  357. local function drawButton(arrowsprite, text, subText, spriteData)
  358. local x = menus[currentMenu].x + menus[currentMenu].width / 2
  359. local multiplier = nil
  360.  
  361. if menus[currentMenu].currentOption <= menus[currentMenu].maxOptionCount and optionCount <= menus[currentMenu].maxOptionCount then
  362. multiplier = optionCount
  363. elseif optionCount > menus[currentMenu].currentOption - menus[currentMenu].maxOptionCount and optionCount <= menus[currentMenu].currentOption then
  364. multiplier = optionCount - (menus[currentMenu].currentOption - menus[currentMenu].maxOptionCount)
  365. end
  366.  
  367. if multiplier then
  368. local y = menus[currentMenu].y + titleHeight + buttonHeight + (buttonHeight * multiplier) - buttonHeight / 2
  369. local backgroundColor = nil
  370. local textColor = nil
  371. local subTextColor = nil
  372. local shadow = false
  373.  
  374. if menus[currentMenu].currentOption == optionCount then
  375. backgroundColor = menus[currentMenu].menuFocusBackgroundColor
  376. textColor = menus[currentMenu].menuFocusTextColor
  377. subTextColor = {r = MainColor.r, g = MainColor.g, b = MainColor.b, a = 255}
  378. else
  379. backgroundColor = menus[currentMenu].menuBackgroundColor
  380. textColor = menus[currentMenu].menuTextColor
  381. subTextColor = menus[currentMenu].menuSubTextColor
  382. shadow = true
  383. end
  384.  
  385. drawRect(x, y, menus[currentMenu].width, buttonHeight, backgroundColor)
  386.  
  387. if spriteData then
  388. if not HasStreamedTextureDictLoaded(spriteData.dict) then RequestStreamedTextureDict(spriteData.dict, true) end
  389. if menu_TextOutline then
  390. DrawSprite(spriteData.dict, spriteData.text, menus[currentMenu].x + buttonTextXOffset + 0.008, y - (buttonHeight / 2) + buttonTextYOffset + 0.0125, 0.0275, 0.0375, 0.0, 0, 0, 0, 255)
  391. end
  392. DrawSprite(spriteData.dict, spriteData.text, menus[currentMenu].x + buttonTextXOffset + 0.008, y - (buttonHeight / 2) + buttonTextYOffset + 0.0125, 0.0255, 0.0355, 0.0, MainColor.r, MainColor.g, MainColor.b, 155)
  393. DrawSprite(spriteData.dict, spriteData.text, menus[currentMenu].x + buttonTextXOffset + 0.008, y - (buttonHeight / 2) + buttonTextYOffset + 0.0125, 0.0225, 0.0325, 0.0, spriteData.color.r, spriteData.color.g, spriteData.color.b, 255)
  394. drawText(text, menus[currentMenu].x + buttonTextXOffset + 0.018, y - (buttonHeight / 2) + buttonTextYOffset, buttonFont, textColor, buttonScale, false, shadow)
  395. else
  396. drawText(text, menus[currentMenu].x + buttonTextXOffset, y - (buttonHeight / 2) + buttonTextYOffset, buttonFont, textColor, buttonScale, false, shadow)
  397. end
  398.  
  399. if subText then
  400. drawText(subText, menus[currentMenu].x + buttonTextXOffset, y - buttonHeight / 2 + buttonTextYOffset, buttonFont, subTextColor, buttonScale, false, shadow, true)
  401. end
  402.  
  403. if menus[currentMenu].currentOption == optionCount and arrowsprite then
  404. if not HasStreamedTextureDictLoaded('commonmenu') then RequestStreamedTextureDict('commonmenu', true) end
  405. if menu_TextOutline then
  406. DrawSprite('commonmenu', 'arrowright', menus[currentMenu].x + buttonTextXOffset + 0.240, y - (buttonHeight / 2) + buttonTextYOffset + 0.0125, 0.0245, 0.0365, 0.0, 0, 0, 0, 255)
  407. end
  408. DrawSprite('commonmenu', 'arrowright', menus[currentMenu].x + buttonTextXOffset + 0.240, y - (buttonHeight / 2) + buttonTextYOffset + 0.0125, 0.0225, 0.0325, 0.0, MainColor.r, MainColor.g, MainColor.b, 255)
  409. elseif arrowsprite then
  410. if not HasStreamedTextureDictLoaded('commonmenu') then RequestStreamedTextureDict('commonmenu', true) end
  411. if menu_TextOutline then
  412. DrawSprite('commonmenu', 'arrowright', menus[currentMenu].x + buttonTextXOffset + 0.240, y - (buttonHeight / 2) + buttonTextYOffset + 0.0125, 0.0245, 0.0365, 0.0, 0, 0, 0, 255)
  413. end
  414. DrawSprite('commonmenu', 'arrowright', menus[currentMenu].x + buttonTextXOffset + 0.240, y - (buttonHeight / 2) + buttonTextYOffset + 0.0125, 0.0225, 0.0325, 0.0, 175, 175, 175, 155)
  415. end
  416.  
  417. if menus[currentMenu].currentOption == optionCount and menu_RectOverlay then
  418. if not HasStreamedTextureDictLoaded('deadline') then RequestStreamedTextureDict('deadline', true) end
  419. DrawSprite('deadline', 'deadline_trail_01', x, y, menus[currentMenu].width, buttonHeight, 0.0, MainColor.r, MainColor.g, MainColor.b, 55)
  420. end
  421. end
  422. end
  423.  
  424. local function drawCheckbox(text, state)
  425. local x = menus[currentMenu].x + menus[currentMenu].width / 2
  426. local multiplier = nil
  427.  
  428. if menus[currentMenu].currentOption <= menus[currentMenu].maxOptionCount and optionCount <= menus[currentMenu].maxOptionCount then
  429. multiplier = optionCount
  430. elseif optionCount > menus[currentMenu].currentOption - menus[currentMenu].maxOptionCount and optionCount <= menus[currentMenu].currentOption then
  431. multiplier = optionCount - (menus[currentMenu].currentOption - menus[currentMenu].maxOptionCount)
  432. end
  433.  
  434. if multiplier then
  435. local y = menus[currentMenu].y + titleHeight + buttonHeight + (buttonHeight * multiplier) - buttonHeight / 2
  436. local backgroundColor = nil
  437. local textColor = nil
  438. local shadow = false
  439.  
  440. if menus[currentMenu].currentOption == optionCount then
  441. backgroundColor = menus[currentMenu].menuFocusBackgroundColor
  442. textColor = menus[currentMenu].menuFocusTextColor
  443. else
  444. backgroundColor = menus[currentMenu].menuBackgroundColor
  445. textColor = menus[currentMenu].menuTextColor
  446. shadow = true
  447. end
  448.  
  449. drawRect(x, y, menus[currentMenu].width, buttonHeight, backgroundColor)
  450.  
  451. drawText(text, menus[currentMenu].x + buttonTextXOffset, y - (buttonHeight / 2) + buttonTextYOffset, buttonFont, textColor, buttonScale, false, shadow)
  452.  
  453. if not HasStreamedTextureDictLoaded('helicopterhud') then RequestStreamedTextureDict('helicopterhud', true) end
  454. if not HasStreamedTextureDictLoaded('commonmenu') then RequestStreamedTextureDict('commonmenu', true) end
  455.  
  456. if menus[currentMenu].currentOption == optionCount then
  457. if state then
  458. DrawSprite('helicopterhud', 'hud_outline', menus[currentMenu].x + buttonTextXOffset + 0.235, y - (buttonHeight / 2) + buttonTextYOffset + 0.01375, 0.0225, 0.0325, 0.0, MainColor.r, MainColor.g, MainColor.b, 255)
  459. DrawSprite('commonmenu', 'shop_tick_icon', menus[currentMenu].x + buttonTextXOffset + 0.235, y - (buttonHeight / 2) + buttonTextYOffset + 0.0125, 0.0325, 0.0425, 0.0, MainColor.r, MainColor.g, MainColor.b, 255)
  460. else
  461. DrawSprite('helicopterhud', 'hud_lock', menus[currentMenu].x + buttonTextXOffset + 0.235, y - (buttonHeight / 2) + buttonTextYOffset + 0.01375, 0.0225, 0.0325, 0.0, MainColor.r, MainColor.g, MainColor.b, 255)
  462. end
  463. else
  464. if state then
  465. DrawSprite('helicopterhud', 'hud_outline', menus[currentMenu].x + buttonTextXOffset + 0.235, y - (buttonHeight / 2) + buttonTextYOffset + 0.01375, 0.0225, 0.0325, 0.0, 155, 155, 155, 255)
  466. DrawSprite('commonmenu', 'shop_tick_icon', menus[currentMenu].x + buttonTextXOffset + 0.235, y - (buttonHeight / 2) + buttonTextYOffset + 0.0125, 0.0325, 0.0425, 0.0, 155, 155, 155, 255)
  467. else
  468. DrawSprite('helicopterhud', 'hud_lock', menus[currentMenu].x + buttonTextXOffset + 0.235, y - (buttonHeight / 2) + buttonTextYOffset + 0.01375, 0.0225, 0.0325, 0.0, 155, 155, 155, 255)
  469. end
  470. end
  471.  
  472. if menus[currentMenu].currentOption == optionCount and menu_RectOverlay then
  473. if not HasStreamedTextureDictLoaded('deadline') then RequestStreamedTextureDict('deadline', true) end
  474. DrawSprite('deadline', 'deadline_trail_01', x, y, menus[currentMenu].width, buttonHeight, 0.0, MainColor.r, MainColor.g, MainColor.b, 55)
  475. end
  476. end
  477. end
  478.  
  479. menus_list = { }
  480.  
  481. function Dopamine.CreateMenu(id, title)
  482. --[[Default settings]]
  483. table.insert(menus_list, id)
  484. menus[id] = { }
  485. menus[id].title = title
  486. menus[id].subTitle = 'by N~s~er~s~t~s~ig~s~el'
  487.  
  488. menus[id].visible = false
  489.  
  490. menus[id].previousMenu = nil
  491.  
  492. menus[id].aboutToBeClosed = false
  493.  
  494. menus[id].x = 0.0175
  495. menus[id].y = 0.025
  496. menus[id].width = 0.23
  497.  
  498. menus[id].currentOption = 1
  499. menus[id].maxOptionCount = 10
  500.  
  501. menus[id].titleFont = 1
  502. menus[id].titleColor = { r = 0, g = 0, b = 0, a = 255 }
  503. menus[id].titleBackgroundColor = { r = 0, g = 0, b = 0, a = 255 }
  504. menus[id].titleBackgroundSprite = nil
  505.  
  506. menus[id].menuTextColor = { r = 150, g = 150, b = 150, a = 255 }
  507. menus[id].menuSubTextColor = { r = 0, g = 0, b = 0, a = 255 }
  508. menus[id].menuFocusTextColor = { r = 155, g = 155, b = 155, a = 255 }
  509. menus[id].menuFocusBackgroundColor = { r = 0, g = 0, b = 0, a = 255 }
  510. menus[id].menuBackgroundColor = { r = 55, g = 55, b = 55, a = 255 }
  511.  
  512. menus[id].subTitleBackgroundColor = { r = 35, g = 35, b = 35, a = 255 }
  513. menus[id].subTitleTextColor = { r = MainColor.r, g = MainColor.g, b = MainColor.b, a = 255 }
  514.  
  515. menus[id].buttonPressedSound = { name = "SELECT", set = "HUD_FRONTEND_DEFAULT_SOUNDSET" } --[[https://pastebin.com/0neZdsZ5]]
  516.  
  517. debugPrint(tostring(id)..' menu created')
  518. end
  519.  
  520. function Dopamine.CreateSubMenu(id, parent, subTitle)
  521. if menus[parent] then
  522. Dopamine.CreateMenu(id, menus[parent].title)
  523.  
  524. if subTitle then
  525. setMenuProperty(id, 'subTitle', subTitle)
  526. else
  527. setMenuProperty(id, 'subTitle', menus[parent].subTitle)
  528. end
  529.  
  530. setMenuProperty(id, 'previousMenu', parent)
  531.  
  532. setMenuProperty(id, 'x', menus[parent].x)
  533. setMenuProperty(id, 'y', menus[parent].y)
  534. setMenuProperty(id, 'maxOptionCount', menus[parent].maxOptionCount)
  535. setMenuProperty(id, 'titleFont', menus[parent].titleFont)
  536. setMenuProperty(id, 'titleColor', menus[parent].titleColor)
  537. setMenuProperty(id, 'titleBackgroundColor', menus[parent].titleBackgroundColor)
  538. setMenuProperty(id, 'titleBackgroundSprite', menus[parent].titleBackgroundSprite)
  539. setMenuProperty(id, 'menuTextColor', menus[parent].menuTextColor)
  540. setMenuProperty(id, 'menuSubTextColor', menus[parent].menuSubTextColor)
  541. setMenuProperty(id, 'menuFocusTextColor', menus[parent].menuFocusTextColor)
  542. setMenuProperty(id, 'menuFocusBackgroundColor', menus[parent].menuFocusBackgroundColor)
  543. setMenuProperty(id, 'menuBackgroundColor', menus[parent].menuBackgroundColor)
  544. setMenuProperty(id, 'subTitleBackgroundColor', menus[parent].subTitleBackgroundColor)
  545. else
  546. debugPrint('Failed to create '..tostring(id)..' submenu: '..tostring(parent)..' parent menu doesn\'t exist')
  547. end
  548. end
  549.  
  550. function Dopamine.CurrentMenu()
  551. return currentMenu
  552. end
  553.  
  554. function Dopamine.OpenMenu(id)
  555. if id and menus[id] then
  556. PlaySoundFrontend(-1, "SELECT", "HUD_FRONTEND_DEFAULT_SOUNDSET", true)
  557. setMenuVisible(id, true)
  558. debugPrint(tostring(id)..' menu opened')
  559. else
  560. debugPrint('Failed to open '..tostring(id)..' menu: it doesn\'t exist')
  561. end
  562. end
  563.  
  564. function Dopamine.IsMenuOpened(id)
  565. return isMenuVisible(id)
  566. end
  567.  
  568. function Dopamine.IsAnyMenuOpened()
  569. for id, _ in pairs(menus) do
  570. if isMenuVisible(id) then return true end
  571. end
  572.  
  573. return false
  574. end
  575.  
  576. function Dopamine.IsMenuAboutToBeClosed()
  577. if menus[currentMenu] then
  578. return menus[currentMenu].aboutToBeClosed
  579. else
  580. return false
  581. end
  582. end
  583.  
  584. function Dopamine.CloseMenu()
  585. if menus[currentMenu] then
  586. if menus[currentMenu].aboutToBeClosed then
  587. menus[currentMenu].aboutToBeClosed = false
  588. setMenuVisible(currentMenu, false)
  589. debugPrint(tostring(currentMenu)..' menu closed')
  590. PlaySoundFrontend(-1, "QUIT", "HUD_FRONTEND_DEFAULT_SOUNDSET", true)
  591. optionCount = 0
  592. currentMenu = nil
  593. currentKey = nil
  594. else
  595. menus[currentMenu].aboutToBeClosed = true
  596. debugPrint(tostring(currentMenu)..' menu about to be closed')
  597. end
  598. end
  599. end
  600.  
  601. function Dopamine.Button(text, subText, spriteData)
  602. local buttonText = text
  603. if subText then
  604. buttonText = '{ '..tostring(buttonText)..', '..tostring(subText)..' }'
  605. end
  606.  
  607. if menus[currentMenu] then
  608. optionCount = optionCount + 1
  609.  
  610. local isCurrent = menus[currentMenu].currentOption == optionCount
  611. if subText == 'Native' then
  612. actualSubText = '~g~'..subText
  613. elseif subText == 'Client' then
  614. actualSubText = '~y~'..subText
  615. elseif subText == 'Server' then
  616. actualSubText = '~r~'..subText
  617. else
  618. actualSubText = subText
  619. end
  620. drawButton(false, text, actualSubText, spriteData)
  621.  
  622. if isCurrent then
  623. if currentKey == keys.select then
  624. PlaySoundFrontend(-1, menus[currentMenu].buttonPressedSound.name, menus[currentMenu].buttonPressedSound.set, true)
  625. debugPrint(buttonText..' button pressed')
  626. return true
  627. elseif currentKey == keys.left or currentKey == keys.right then
  628. PlaySoundFrontend(-1, "NAV_UP_DOWN", "HUD_FRONTEND_DEFAULT_SOUNDSET", true)
  629. end
  630. end
  631.  
  632. return false
  633. else
  634. debugPrint('Failed to create '..buttonText..' button: '..tostring(currentMenu)..' menu doesn\'t exist')
  635.  
  636. return false
  637. end
  638. end
  639.  
  640. function Dopamine.CheckboxButton(text, state)
  641. local buttonText = text
  642.  
  643. if menus[currentMenu] then
  644. optionCount = optionCount + 1
  645.  
  646. local isCurrent = menus[currentMenu].currentOption == optionCount
  647.  
  648. drawCheckbox(text, state)
  649.  
  650. if isCurrent then
  651. if currentKey == keys.select then
  652. PlaySoundFrontend(-1, menus[currentMenu].buttonPressedSound.name, menus[currentMenu].buttonPressedSound.set, true)
  653. debugPrint(buttonText..' button pressed')
  654. return true
  655. elseif currentKey == keys.left or currentKey == keys.right then
  656. PlaySoundFrontend(-1, "NAV_UP_DOWN", "HUD_FRONTEND_DEFAULT_SOUNDSET", true)
  657. end
  658. end
  659.  
  660. return false
  661. else
  662. debugPrint('Failed to create '..buttonText..' button: '..tostring(currentMenu)..' menu doesn\'t exist')
  663.  
  664. return false
  665. end
  666. end
  667.  
  668. function Dopamine.Button2(text, subText, spriteData)
  669. local buttonText = text
  670. if subText then
  671. buttonText = '{ '..tostring(buttonText)..', '..tostring(subText)..' }'
  672. end
  673.  
  674. if menus[currentMenu] then
  675. optionCount = optionCount + 1
  676.  
  677. local isCurrent = menus[currentMenu].currentOption == optionCount
  678.  
  679. drawButton(true, text, subText, spriteData)
  680.  
  681. if isCurrent then
  682. if currentKey == keys.select then
  683. PlaySoundFrontend(-1, menus[currentMenu].buttonPressedSound.name, menus[currentMenu].buttonPressedSound.set, true)
  684. debugPrint(buttonText..' button pressed')
  685. return true
  686. elseif currentKey == keys.left or currentKey == keys.right then
  687. PlaySoundFrontend(-1, "NAV_UP_DOWN", "HUD_FRONTEND_DEFAULT_SOUNDSET", true)
  688. end
  689. end
  690.  
  691. return false
  692. else
  693. debugPrint('Failed to create '..buttonText..' button: '..tostring(currentMenu)..' menu doesn\'t exist')
  694.  
  695. return false
  696. end
  697. end
  698.  
  699. function Dopamine.MenuButton(text, id, subText, spriteData)
  700. if menus[id] then
  701. if Dopamine.Button2(text, subText, spriteData) then
  702. setMenuVisible(currentMenu, false)
  703. setMenuVisible(id, true, true)
  704.  
  705. return true
  706. end
  707. else
  708. debugPrint('Failed to create '..tostring(text)..' menu button: '..tostring(id)..' submenu doesn\'t exist')
  709. end
  710.  
  711. return false
  712. end
  713.  
  714. function Dopamine.CheckBox(text, checked, callback)
  715. --[[if Dopamine.Button(text, checked and '~g~Enabled' or '~r~Disabled') then]]
  716. if Dopamine.CheckboxButton(text, checked) then
  717. checked = not checked
  718. debugPrint(tostring(text)..' checkbox changed to '..tostring(checked))
  719. if callback then callback(checked) end
  720.  
  721. return true
  722. end
  723.  
  724. return false
  725. end
  726.  
  727. function Dopamine.ComboBox(text, items, currentIndex, selectedIndex, callback)
  728. local itemsCount = #items
  729. local selectedItem = items[currentIndex]
  730. local isCurrent = menus[currentMenu].currentOption == (optionCount + 1)
  731.  
  732. if itemsCount > 1 and isCurrent then
  733. selectedItem = comboArrowL..tostring(selectedItem)..comboArrowR
  734. end
  735.  
  736. if Dopamine.Button(text, selectedItem) then
  737. selectedIndex = currentIndex
  738. callback(currentIndex, selectedIndex)
  739. return true
  740. elseif isCurrent then
  741. if currentKey == keys.left then
  742. if currentIndex > 1 then currentIndex = currentIndex - 1 else currentIndex = itemsCount end
  743. elseif currentKey == keys.right then
  744. if currentIndex < itemsCount then currentIndex = currentIndex + 1 else currentIndex = 1 end
  745. end
  746. else
  747. currentIndex = selectedIndex
  748. end
  749.  
  750. callback(currentIndex, selectedIndex)
  751. return false
  752. end
  753.  
  754. function Dopamine.ComboBoxSlider(text, items, currentIndex, selectedIndex, callback)
  755. local itemsCount = #items
  756. local selectedItem = items[currentIndex]
  757. local isCurrent = menus[currentMenu].currentOption == (optionCount + 1)
  758.  
  759. if itemsCount > 1 and isCurrent then
  760. selectedItem = tostring(selectedItem)
  761. end
  762.  
  763. if Dopamine.Button3(text, items, itemsCount, currentIndex) then
  764. selectedIndex = currentIndex
  765. callback(currentIndex, selectedIndex)
  766. return true
  767. elseif isCurrent then
  768. if currentKey == keys.left then
  769. if currentIndex > 1 then currentIndex = currentIndex - 1
  770. elseif currentIndex == 1 then currentIndex = 1 end
  771. elseif currentKey == keys.right then
  772. if currentIndex < itemsCount then currentIndex = currentIndex + 1
  773. elseif currentIndex == itemsCount then currentIndex = itemsCount end
  774. end
  775. else
  776. currentIndex = selectedIndex
  777. end
  778. callback(currentIndex, selectedIndex)
  779. return false
  780. end
  781.  
  782. local function drawButton3(text, items, itemsCount, currentIndex)
  783. local x = menus[currentMenu].x + menus[currentMenu].width / 2
  784. local multiplier = nil
  785.  
  786. if menus[currentMenu].currentOption <= menus[currentMenu].maxOptionCount and optionCount <= menus[currentMenu].maxOptionCount then
  787. multiplier = optionCount
  788. elseif optionCount > menus[currentMenu].currentOption - menus[currentMenu].maxOptionCount and optionCount <= menus[currentMenu].currentOption then
  789. multiplier = optionCount - (menus[currentMenu].currentOption - menus[currentMenu].maxOptionCount)
  790. end
  791.  
  792. if multiplier then
  793. local y = menus[currentMenu].y + titleHeight + buttonHeight + (buttonHeight * multiplier) - buttonHeight / 2
  794. local backgroundColor = nil
  795. local textColor = nil
  796. local subTextColor = nil
  797. local rectBackgroundColor = nil
  798. local rectBackgroundLine = nil
  799. local shadow = false
  800.  
  801. if menus[currentMenu].currentOption == optionCount then
  802. backgroundColor = menus[currentMenu].menuFocusBackgroundColor
  803. textColor = menus[currentMenu].menuFocusTextColor
  804. subTextColor = menus[currentMenu].menuFocusTextColor
  805. rectBackgroundColor = { r = MainColor.r, g = MainColor.g, b = MainColor.b, a = 255 }
  806. rectBackgroundLine = { r = MainColor.r, g = MainColor.g, b = MainColor.b, a = 255 }
  807. else
  808. backgroundColor = menus[currentMenu].menuBackgroundColor
  809. textColor = menus[currentMenu].menuTextColor
  810. subTextColor = menus[currentMenu].menuSubTextColor
  811. rectBackgroundColor = menus[currentMenu].menuTextColor
  812. rectBackgroundLine = {r = 155, g = 155, b = 155, a = 150}
  813. shadow = true
  814. end
  815.  
  816. local sliderWidth = ((menus[currentMenu].width / 3) / itemsCount)
  817. local subtractionToX = ((sliderWidth * (currentIndex + 1)) - (sliderWidth * currentIndex)) / 2
  818.  
  819. local XOffset = 0.16
  820. local stabilizer = 1
  821.  
  822. --[[ Draw order from top to bottom]]
  823. if itemsCount >= 40 then
  824. stabilizer = 1.005
  825. end
  826.  
  827. drawRect(x, y, menus[currentMenu].width, buttonHeight, backgroundColor) --[[ Button Rectangle -2.15]]
  828. drawRect(((menus[currentMenu].x + 0.1675) + (subtractionToX * itemsCount)) / stabilizer, y, sliderWidth * (itemsCount - 1) + 0.001, buttonHeight / 2 + 0.002, rectBackgroundLine)
  829. drawRect(((menus[currentMenu].x + 0.1675) + (subtractionToX * itemsCount)) / stabilizer, y, sliderWidth * (itemsCount - 1), buttonHeight / 2, {r = 10, g = 10, b = 10, a = 150})
  830. drawRect(((menus[currentMenu].x + 0.1675) + (subtractionToX * currentIndex)) / stabilizer, y, sliderWidth * (currentIndex - 1), buttonHeight / 2, rectBackgroundColor)
  831. drawText(text, menus[currentMenu].x + buttonTextXOffset, y - (buttonHeight / 2) + buttonTextYOffset, buttonFont, textColor, buttonScale, false, shadow)
  832.  
  833. local CurrentItem = tostring(items[currentIndex])
  834. if string.len(CurrentItem) == 1 then XOffset = 0.1650
  835. elseif string.len(CurrentItem) == 2 then XOffset = 0.1625
  836. elseif string.len(CurrentItem) == 3 then XOffset = 0.16015
  837. elseif string.len(CurrentItem) == 4 then XOffset = 0.1585
  838. elseif string.len(CurrentItem) == 5 then XOffset = 0.1570
  839. elseif string.len(CurrentItem) >= 6 then XOffset = 0.1555
  840. end
  841.  
  842. drawText(items[currentIndex], ((menus[currentMenu].x + XOffset) + 0.04) / stabilizer, y - (buttonHeight / 2.15) + buttonTextYOffset, buttonFont, {r = 255, g = 255, b = 255, a = 255}, buttonScale, false, shadow) --[[ Current Item Text]]
  843.  
  844. if menus[currentMenu].currentOption == optionCount and menu_RectOverlay then
  845. if not HasStreamedTextureDictLoaded('deadline') then RequestStreamedTextureDict('deadline', true) end
  846. DrawSprite('deadline', 'deadline_trail_01', x, y, menus[currentMenu].width, buttonHeight, 0.0, MainColor.r, MainColor.g, MainColor.b, 55)
  847. end
  848. end
  849. end
  850.  
  851. function Dopamine.Button3(text, items, itemsCount, currentIndex)
  852. local buttonText = text
  853.  
  854. if menus[currentMenu] then
  855. optionCount = optionCount + 1
  856.  
  857. local isCurrent = menus[currentMenu].currentOption == optionCount
  858.  
  859. drawButton3(text, items, itemsCount, currentIndex)
  860.  
  861. if isCurrent then
  862. if currentKey == keys.select then
  863. PlaySoundFrontend(-1, menus[currentMenu].buttonPressedSound.name, menus[currentMenu].buttonPressedSound.set, true)
  864. debugPrint(buttonText..' button pressed')
  865. return true
  866. elseif currentKey == keys.left or currentKey == keys.right then
  867. PlaySoundFrontend(-1, "NAV_UP_DOWN", "HUD_FRONTEND_DEFAULT_SOUNDSET", true)
  868. end
  869. end
  870.  
  871. return false
  872. else
  873. debugPrint('Failed to create '..buttonText..' button: '..tostring(currentMenu)..' menu doesn\'t exist')
  874.  
  875. return false
  876. end
  877. end
  878.  
  879. function Dopamine.Display()
  880. if isMenuVisible(currentMenu) then
  881. if menus[currentMenu].aboutToBeClosed then
  882. Dopamine.CloseMenu()
  883. else
  884. ClearAllHelpMessages()
  885.  
  886. drawTitle()
  887. drawSubTitle()
  888.  
  889. currentKey = nil
  890.  
  891. if IsDisabledControlJustReleased(1, keys.down) then
  892. PlaySoundFrontend(-1, "NAV_UP_DOWN", "HUD_FRONTEND_DEFAULT_SOUNDSET", true)
  893.  
  894. if menus[currentMenu].currentOption < optionCount then
  895. menus[currentMenu].currentOption = menus[currentMenu].currentOption + 1
  896. else
  897. menus[currentMenu].currentOption = 1
  898. end
  899. elseif IsDisabledControlJustReleased(1, keys.up) then
  900. PlaySoundFrontend(-1, "NAV_UP_DOWN", "HUD_FRONTEND_DEFAULT_SOUNDSET", true)
  901.  
  902. if menus[currentMenu].currentOption > 1 then
  903. menus[currentMenu].currentOption = menus[currentMenu].currentOption - 1
  904. else
  905. menus[currentMenu].currentOption = optionCount
  906. end
  907. elseif IsDisabledControlJustReleased(1, keys.left) then
  908. currentKey = keys.left
  909. elseif IsDisabledControlJustReleased(1, keys.right) then
  910. currentKey = keys.right
  911. elseif IsDisabledControlJustReleased(1, keys.select) then
  912. currentKey = keys.select
  913. elseif IsDisabledControlJustReleased(1, keys.back) then
  914. if menus[menus[currentMenu].previousMenu] then
  915. PlaySoundFrontend(-1, "BACK", "HUD_FRONTEND_DEFAULT_SOUNDSET", true)
  916. setMenuVisible(menus[currentMenu].previousMenu, true)
  917. else
  918. Dopamine.CloseMenu()
  919. end
  920. end
  921.  
  922. optionCount = 0
  923. end
  924. end
  925. end
  926.  
  927. function Dopamine.SetMenuWidth(id, width)
  928. setMenuProperty(id, 'width', width)
  929. end
  930.  
  931. function Dopamine.SetMenuX(id, x)
  932. setMenuProperty(id, 'x', x)
  933. end
  934.  
  935. function Dopamine.SetMenuY(id, y)
  936. setMenuProperty(id, 'y', y)
  937. end
  938.  
  939. function Dopamine.SetMenuMaxOptionCountOnScreen(id, count)
  940. setMenuProperty(id, 'maxOptionCount', count)
  941. end
  942.  
  943. function Dopamine.SetTitle(id, title)
  944. setMenuProperty(id, 'title', title)
  945. end
  946.  
  947. function Dopamine.SetTitleColor(id, r, g, b, a)
  948. setMenuProperty(id, 'titleColor', { ['r'] = r, ['g'] = g, ['b'] = b, ['a'] = a or menus[id].titleColor.a })
  949. end
  950.  
  951. function Dopamine.SetTitleBackgroundColor(id, r, g, b, a)
  952. setMenuProperty(id, 'titleBackgroundColor', { ['r'] = r, ['g'] = g, ['b'] = b, ['a'] = a or menus[id].titleBackgroundColor.a })
  953. end
  954.  
  955. function Dopamine.SetTitleBackgroundSprite(id, textureDict, textureName)
  956. RequestStreamedTextureDict(textureDict)
  957. setMenuProperty(id, 'titleBackgroundSprite', { dict = textureDict, name = textureName })
  958. end
  959.  
  960. function Dopamine.SetTitleBackgroundSpriteNil(id)
  961. setMenuProperty(id, 'titleBackgroundSprite', nil)
  962. end
  963.  
  964. function Dopamine.SetSubTitle(id, text)
  965. setMenuProperty(id, 'subTitle', text)
  966. end
  967.  
  968. function Dopamine.SetMenuBackgroundColor(id, r, g, b, a)
  969. setMenuProperty(id, 'menuBackgroundColor', { ['r'] = r, ['g'] = g, ['b'] = b, ['a'] = a or menus[id].menuBackgroundColor.a })
  970. end
  971. function Dopamine.SetMenuSubTitleBackgroundColor(id, r, g, b, a)
  972. setMenuProperty(id, 'subTitleBackgroundColor', { ['r'] = r, ['g'] = g, ['b'] = b, ['a'] = a or menus[id].subTitleBackgroundColor.a })
  973. end
  974.  
  975. function Dopamine.SetMenuTextColor(id, r, g, b, a)
  976. setMenuProperty(id, 'menuTextColor', { ['r'] = r, ['g'] = g, ['b'] = b, ['a'] = a or menus[id].menuTextColor.a })
  977. end
  978.  
  979. function Dopamine.SetMenuSubTextColor(id, r, g, b, a)
  980. setMenuProperty(id, 'menuSubTextColor', { ['r'] = r, ['g'] = g, ['b'] = b, ['a'] = a or menus[id].menuSubTextColor.a })
  981. end
  982.  
  983. function Dopamine.SetMenuFocusTextColor(id, r, g, b, a)
  984. setMenuProperty(id, 'menuFocusTextColor', { ['r'] = r, ['g'] = g, ['b'] = b, ['a'] = a or menus[id].menuFocusTextColor.a })
  985. end
  986.  
  987. function Dopamine.SetMenuFocusColor(id, r, g, b, a)
  988. setMenuProperty(id, 'menuFocusColor', { ['r'] = r, ['g'] = g, ['b'] = b, ['a'] = a or menus[id].menuFocusColor.a })
  989. end
  990.  
  991. function Dopamine.SetMenuButtonPressedSound(id, name, set)
  992. setMenuProperty(id, 'buttonPressedSound', { ['name'] = name, ['set'] = set })
  993. end
  994.  
  995. function Dopamine.SetFont(id, font)
  996. buttonFont = font
  997. menus[id].titleFont = font
  998. end
  999.  
  1000. function Dopamine.SetMaxOptionCount(id, count)
  1001. setMenuProperty(id, 'maxOptionCount', count)
  1002. end
  1003.  
  1004. function Dopamine.SetMenuFocusBackgroundColor(id, r, g, b, a)
  1005. setMenuProperty(id, "menuFocusBackgroundColor", {["r"] = r, ["g"] = g, ["b"] = b, ["a"] = a or menus[id].menuFocusBackgroundColor.a})
  1006. end
  1007.  
  1008. local selectedTheme = 'dark'
  1009. local availableThemes = {'dark', 'light'}
  1010. local rainbowInt = 0
  1011. Citizen.CreateThread(function()
  1012. while ShouldShowMenu do Citizen.Wait(0)
  1013. rainbowInt = ReturnRGB(1.0)
  1014. if selectedThemeRainbow then
  1015. MainColor = {
  1016. r = rainbowInt.r,
  1017. g = rainbowInt.g,
  1018. b = rainbowInt.b,
  1019. a = 255
  1020. }
  1021. end
  1022. end
  1023. end)
  1024.  
  1025. function Dopamine.SetTheme(id)
  1026. if selectedTheme == 'light' then
  1027. MainColor = {
  1028. r = 89,
  1029. g = 173,
  1030. b = 218,
  1031. a = 255
  1032. }
  1033. Dopamine.SetTitleBackgroundSprite(id, 'commonmenu', 'interaction_bgd')
  1034. Dopamine.SetMenuBackgroundColor(id, 45, 45, 45, 225)
  1035. Dopamine.SetMenuFocusBackgroundColor(id, 25, 25, 25, 225)
  1036. Dopamine.SetMenuSubTitleBackgroundColor(id, 0, 0, 0, 255)
  1037. Dopamine.SetTitleBackgroundColor(id, MainColor.r, MainColor.g, MainColor.b, 255)
  1038. Dopamine.SetTitleColor(id, 255, 255, 255, 255)
  1039. Dopamine.SetMenuTextColor(id, 150, 150, 150)
  1040. Dopamine.SetMenuFocusTextColor(id, 175, 175, 175, 255)
  1041. Dopamine.SetMenuSubTextColor(id, 155, 155, 155, 225)
  1042. Dopamine.SetFont(id, 4)
  1043. Dopamine.SetMenuX(id, 0.025)
  1044. Dopamine.SetMenuY(id, 0.3)
  1045. Dopamine.SetMenuWidth(id, 0.25)
  1046. Dopamine.SetMaxOptionCount(id, 12)
  1047.  
  1048. titleHeight = 0.0525
  1049. titleXOffset = 0.15
  1050. titleYOffset = 0.00485
  1051. titleScale = 0.7
  1052. titleSpacing = 2.0
  1053. buttonHeight = 0.035
  1054. buttonScale = 0.360
  1055. buttonTextXOffset = 0.003
  1056. buttonTextYOffset = 0.0025
  1057.  
  1058. comboArrowR = ' Β»'
  1059. comboArrowL = 'Β« '
  1060. elseif selectedTheme == 'dark' then
  1061. MainColor = {
  1062. r = 225,
  1063. g = 55,
  1064. b = 55,
  1065. a = 255
  1066. }
  1067. Dopamine.SetTitleBackgroundSprite(id, 'shopui_title_sm_hangar', 'shopui_title_sm_hangar')
  1068. --[[Dopamine.SetTitleBackgroundSpriteNil(id)]]
  1069. Dopamine.SetMenuBackgroundColor(id, 25, 25, 25, 225)
  1070. Dopamine.SetMenuFocusBackgroundColor(id, 50, 50, 50, 230)
  1071. Dopamine.SetMenuSubTitleBackgroundColor(id, 35, 35, 35, 255)
  1072. Dopamine.SetTitleBackgroundColor(id, 15, 15, 15, 255)
  1073. Dopamine.SetTitleColor(id, 135, 135, 135, 255)
  1074. Dopamine.SetMenuTextColor(id, 150, 150, 150)
  1075. Dopamine.SetMenuFocusTextColor(id, 155, 155, 155, 255)
  1076. Dopamine.SetMenuSubTextColor(id, 70, 70, 70, 255)
  1077. Dopamine.SetFont(id, 4)
  1078. Dopamine.SetMenuX(id, 0.025)
  1079. Dopamine.SetMenuY(id, 0.3)
  1080. Dopamine.SetMenuWidth(id, 0.25)
  1081. Dopamine.SetMaxOptionCount(id, 12)
  1082.  
  1083. titleHeight = 0.0525
  1084. titleXOffset = 0.15
  1085. titleYOffset = 0.00485
  1086. titleScale = 0.7
  1087. titleSpacing = 2.0
  1088. buttonHeight = 0.035
  1089. buttonScale = 0.360
  1090. buttonTextXOffset = 0.003
  1091. buttonTextYOffset = 0.0025
  1092.  
  1093. comboArrowR = ' Β»'
  1094. comboArrowL = 'Β« '
  1095. end
  1096. end
  1097.  
  1098. function Dopamine.InitializeTheme()
  1099. for i = 1, #menus_list do
  1100. Dopamine.SetTheme(menus_list[i], selectedTheme)
  1101. end
  1102. end
  1103.  
  1104. --[[
  1105. Notifications system
  1106. ]]
  1107.  
  1108. cachedNotifications = {}
  1109.  
  1110. Dopamine.AddNotification = function(text, ms)
  1111. table.insert(cachedNotifications, { ["text"] = text, ["time"] = ms, ["startTime"] = GetGameTimer() })
  1112. end
  1113.  
  1114. Dopamine.RemoveNotification = function(id)
  1115. table.remove(cachedNotifications, id)
  1116. end
  1117.  
  1118. Dopamine.Draw3D = function(x, y, text, opacity)
  1119. if opacity > 255 then
  1120. opacity = 255
  1121. elseif opacity < 0 then
  1122. opacity = 0
  1123. end
  1124.  
  1125. SetTextScale(0.35, 0.35)
  1126. if menu_TextDropShadow then
  1127. SetTextDropShadow(0, 0, 0, 0,255)
  1128. end
  1129. SetTextEdge(2, 0, 0, 0, 255)
  1130. if menu_TextOutline then
  1131. SetTextOutline()
  1132. end
  1133. SetTextFont(4)
  1134. SetTextProportional(1)
  1135. SetTextColour(255, 255, 255, math.floor(opacity))
  1136. SetTextEntry("STRING")
  1137. SetTextCentre(1)
  1138. AddTextComponentString(text)
  1139. DrawText(x, y)
  1140.  
  1141. local factor = string.len(text) / 300
  1142.  
  1143. DrawRect(x, y + 0.0135, 0.0155 + factor, 0.03, 25, 25, 25, opacity)
  1144. DrawRect(x, y + 0.0125, 0.015 + factor, 0.03, MainColor.r, MainColor.g, MainColor.b, opacity)
  1145. end
  1146.  
  1147. Dopamine.PushNotification = function(text, ms)
  1148. if text then
  1149. if not ms then ms = 5000 end
  1150. Dopamine.AddNotification(text, ms)
  1151. end
  1152. end
  1153.  
  1154. Dopamine.PushNotification('Dopamine injected successfully', 5000)
  1155. Dopamine.PushNotification('www.d0pamine.xyz', 10000)
  1156.  
  1157. --[[
  1158. Add variables here for magic.
  1159. ]]
  1160.  
  1161. local selfInfiniteStamina = false
  1162. local selfGodmode = false
  1163. local selfSemigodmode = false
  1164. local selfNeverWanted = false
  1165. local selfSuperJump = false
  1166. local isSpectatingTarget = false
  1167. local spectatedPlayer = nil
  1168. local vehiclesGodmode = false
  1169. local vehicleOptions2Step = false
  1170. local vehiclesRainbow = false
  1171. local vehiclesLower = false
  1172. local vehiclesWallride = false
  1173. local vehiclesSpawnUpgraded = false
  1174. local vehiclesSpawnInside = true
  1175. local vehiclesAlwaysWheelie = false
  1176. local vehiclesDriftSmoke = false
  1177. local weaponsDamageMultiplierCurrent = 1
  1178. local weaponsDamageMultiplierSelected = 1
  1179. local weaponsDamageMultiplierSet = 1
  1180. local visualsBlackout = false
  1181. local visualsESPEnable = false
  1182. local visualsESPShowSelf = false
  1183. local visualsESPShowLine = false
  1184. local visualsESPShowBox = false
  1185. local visualsESPShowID = false
  1186. local visualsESPShowName = false
  1187. local visualsESPShowDistance = false
  1188. local visualsESPShowWeapon = false
  1189. local visualsESPShowVehicle = false
  1190. local visualsESPRefreshRate = 0
  1191. local visualsESPRefreshRates = {"0ms", "50ms", "150ms", "250ms", "500ms", "1s", "2s", "5s"}
  1192. local visualsESPDistanceOps = {50.0, 100.0, 500.0, 1000.0, 2000.0, 5000.0}
  1193. local visualsESPDistance = 500.0
  1194. local currentVisualsESPDistance = 1
  1195. local selectedVisualsESPDistance = 1
  1196. local currentESPRefreshIndex = 1
  1197. local selectedESPRefreshIndex = 1
  1198. local teleportShowCoords = false
  1199. local currentTeleportToOptions = 1
  1200. local selectedTeleportToOptions = 1
  1201. local allPlayersFreeze = false
  1202. local allPlayersDisableDrivingCars = false
  1203. local allPlayersNoisyVehicles = false
  1204. local weaponsExplosiveAmmo = false
  1205. local weaponsTeleportGun = false
  1206. local weaponsAimbotT = false
  1207. local weaponsRapidFire = false
  1208. local allPlayersIncludeSelf = true
  1209.  
  1210. local currentCustomCrosshair = 1
  1211. local selectedCustomCrosshair = 1
  1212. customCrosshairOpts = {
  1213. "Off",
  1214. "Default",
  1215. "Custom"
  1216. }
  1217.  
  1218. Jobs = {
  1219. "Unemployed",
  1220. "Mechanic",
  1221. "Police",
  1222. "Ambulance",
  1223. "Taxi",
  1224. "Real Estate Agent",
  1225. "Car Dealer",
  1226. "Banker",
  1227. "Gang",
  1228. "Mafia",
  1229. }
  1230. Jobs.Item = {
  1231. "Butcher", "Tailor", "Miner", "Fueler", "Lumberjack", "Fisher", "Hunting", "Weed", "Meth", "Coke", "Opium"
  1232. }
  1233. Jobs.ItemDatabase = {
  1234. ["Butcher"] = oTable.new{ "Alive Chicken", "alive_chicken", "Slaughtered Chicken", "slaughtered_chicken", "Packaged Chicken", "packaged_chicken" },
  1235. ["Tailor"] = oTable.new{ "Wool", "wool", "Fabric", "fabric", "Clothes", "clothe" },
  1236. ["Fueler"] = oTable.new{ "Petrol", "petrol", "Refined Petrol", "petrol_raffin", "Essence", "essence" },
  1237. ["Miner"] = oTable.new{ "Stone", "stone", "Washed Stone", "washed_stone", "Diamond", "diamond" },
  1238. ["Lumberjack"] = oTable.new{ "Wood", "wood", "Cutted Wood", "cutted_wood", "Packed Plank", "packaged_plank" },
  1239. ["Fisher"] = oTable.new{ "Fish", "fish" },
  1240. ["Hunting"] = oTable.new{ "Meat", "meat"},
  1241. ["Coke"] = oTable.new{ "Coke", "coke", "Coke Bag", "coke_pooch" },
  1242. ["Weed"] = oTable.new{ "Weed", "weed", "Weed Bag", "weed_pooch" },
  1243. ["Meth"] = oTable.new{ "Meth", "meth", "Meth Bag", "meth_pooch" },
  1244. ["Opium"] = oTable.new{ "Opium", "opium", "Opium Bag", "opium_pooch" },
  1245. }
  1246. Jobs.ItemRequires = {
  1247. ["Fabric"] = "Wool",
  1248. ["Clothes"] = "Fabric",
  1249. ["Washed Stone"] = "Stone",
  1250. ["Diamond"] = "Washed Stone",
  1251. ["Coke Bag"] = "coke",
  1252. ["Weed Bag"] = "weed",
  1253. ["Meth Bag"] = "meth",
  1254. ["Opium Bag"] = "opium"
  1255. }
  1256.  
  1257. local currentESXItemSpawn = 1
  1258. local selectedESXItemSpawn = 1
  1259. local currentESXDrugSpawn = 1
  1260. local selectedESXDrugSpawn = 1
  1261.  
  1262. --[[
  1263. Menu settings.
  1264. ]]
  1265.  
  1266. local currentMenuX = 1
  1267. local selectedMenuX = 1
  1268. local currentMenuY = 4
  1269. local selectedMenuY = 4
  1270. local menuX = { 0.025, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.75 }
  1271. local menuY = { 0.025, 0.1, 0.2, 0.3, 0.425 }
  1272.  
  1273. TesticleFunction = function()
  1274.  
  1275. end
  1276.  
  1277. local TesticleTest = false
  1278.  
  1279. Citizen.CreateThread(function()
  1280. --[[themes]]
  1281. local currentThemeIndex = 1
  1282. local selectedThemeIndex = 1
  1283.  
  1284. --[[selfOptions]]
  1285. local FastCB = {1.0, 1.09, 1.19, 1.29, 1.39, 1.49}
  1286. local FastCBWords = {"+0%", "+20%", "+40%", "+60%", "+80%", "+100%"}
  1287. local currentFastRunIndex = 1
  1288. local selectedFastRunIndex = 1
  1289. local currentFastSwimIndex = 1
  1290. local selectedFastSwimIndex = 1
  1291.  
  1292. --[[allPlayersOptions]]
  1293. local pedDensityX = {1.0, 0.8, 0.6, 0.4, 0.2, 0.1, 0.0}
  1294. local pedDensityXCurrent = 1
  1295. local pedDensityXSelectedf = 1
  1296. local pedDensityXWords = {'Default', '-20%', '-40%', '-60%', '-80%', '-100%'}
  1297. local pedDensityXSelected = 1
  1298. local aPOPropOptionsCurrent = 1
  1299. local aPOPropOptionsSelected = 1
  1300.  
  1301. --[[selectedPlayerOptions]]
  1302. local sPORamVehicleCurrent = 1
  1303. local sPORamVehicleSelected = 1
  1304. local sPORamVehicleX = 'bus'
  1305. local sPORamVehicleWords = {'bus', 'monster', 'freight', 'bulldozer'}
  1306. local sPOPropOptionsCurrent = 1
  1307. local sPOPropOptionsSelected = 1
  1308.  
  1309. --[[vehicleOptions]]
  1310. local vehiclesMultiplierX = {1.0, 2.0, 4.0, 8.0, 16.0, 32.0, 64.0, 128.0, 256.0, 512.0}
  1311. local vehiclesMultiplierXWords = {'+1%', '+2%', '+4%', '+8%', '+16%', '+32%', '+64%', '+128%', '+256%', '+512%'}
  1312. local vehiclesEnginePowerBoostCurrent = 1
  1313. local vehiclesEnginePowerBoostSelected = 1
  1314. local enginePowerBoost = 1
  1315. local vehiclesEngineTorqueBoostCurrent = 1
  1316. local vehiclesEngineTorqueBoostSelected = 1
  1317. local engineTorqueBoost = 1
  1318. local vehiclesCustomSoundCurrent = 1
  1319. local vehiclesCustomSoundSelected = 1
  1320. local vehiclesCustomSound = 1
  1321. local vehiclesCustomSounds = {'jester3', 'elegy', 'sultanrs', 'coquette3', 'monster', 'banshee2', 'specter'}
  1322.  
  1323. --[[weaponOptions]]
  1324. local weaponsDamageMultiplier = {1.0, 2.0, 3.0, 5.0, 10.0, 25.0, 50.0, 250.0, 1000.0}
  1325. local weaponOptionsSelected = nil
  1326. local weaponOptionsSelectedWeapon = nil
  1327. local weaponOptionsSelectedMod = nil
  1328.  
  1329. --[[keybindSettings]]
  1330. local currentKeybindMenu = 37
  1331.  
  1332. Dopamine.CreateMenu('dopamine', 'Dopamine')
  1333. Dopamine.SetSubTitle('dopamine', 'd0pamine v1.1 by Nertigel')
  1334. Dopamine.CreateSubMenu('selfOptions', 'dopamine', 'Self Options')
  1335. Dopamine.CreateSubMenu('onlinePlayersOptions', 'dopamine', 'Online Players')
  1336. Dopamine.CreateSubMenu('visualOptions', 'dopamine', 'Visual Options')
  1337. Dopamine.CreateSubMenu('teleportOptions', 'dopamine', 'Teleport Options')
  1338. Dopamine.CreateSubMenu('vehicleOptions', 'dopamine', 'Vehicle Options')
  1339. Dopamine.CreateSubMenu('weaponOptions', 'dopamine', 'Weapon Options')
  1340. Dopamine.CreateSubMenu('serverOptions', 'dopamine', 'Server Options')
  1341. Dopamine.CreateSubMenu('menuSettings', 'dopamine', 'Menu Options')
  1342.  
  1343. Dopamine.CreateSubMenu('selfSuperPowers', 'selfOptions', 'Super Powers')
  1344.  
  1345. Dopamine.CreateSubMenu('allPlayersOptions', 'onlinePlayersOptions', 'All Online Players')
  1346. Dopamine.CreateSubMenu('selectedPlayerOptions', 'onlinePlayersOptions', 'Selected Player Options')
  1347. Dopamine.CreateSubMenu('selectedPlayerOptionsTriggers', 'selectedPlayerOptions', 'Selected Player Trigger Options')
  1348. Dopamine.CreateSubMenu('selectedPlayerOptionsTroll', 'selectedPlayerOptions', 'Selected Player Troll Options')
  1349.  
  1350. Dopamine.CreateSubMenu('visualOptionsESP', 'visualOptions', 'Visual ESP Options')
  1351.  
  1352. Dopamine.CreateSubMenu('vehicleLosSantosCustoms', 'vehicleOptions', 'Los Santos Customs')
  1353. Dopamine.CreateSubMenu('vehicleLosSantosCustomsCosmetics', 'vehicleLosSantosCustoms', 'Los Santos Customs | Cosmetics')
  1354. Dopamine.CreateSubMenu('vehicleLosSantosCustomsPerformance', 'vehicleLosSantosCustoms', 'Los Santos Customs | Performance')
  1355. Dopamine.CreateSubMenu('vehicleSpawnList', 'vehicleOptions', 'Vehicle Spawn Options')
  1356. Dopamine.CreateSubMenu('vehicleSpawnSelected', 'vehicleSpawnList', 'Select A Vehicle')
  1357. Dopamine.CreateSubMenu('vehicleSpawnSelectedOptions', 'vehicleSpawnSelected', 'Vehicle Spawn Selected')
  1358.  
  1359. Dopamine.CreateSubMenu('weaponOptionsTypes', 'weaponOptions', 'Weapon Type Selection')
  1360. Dopamine.CreateSubMenu('weaponOptionsTypeSelection', 'weaponOptionsTypes', 'Weapon Selection')
  1361. Dopamine.CreateSubMenu('weaponModOptionsOptions', 'weaponOptionsTypeSelection', 'Weapon Options')
  1362. Dopamine.CreateSubMenu('weaponsModSelect', 'weaponModOptionsOptions', 'Weapon Mod Options')
  1363.  
  1364. Dopamine.CreateSubMenu('serverOptionsResources', 'serverOptions', 'Server Resources')
  1365. Dopamine.CreateSubMenu('serverOptionsTriggerEvents', 'serverOptions', 'Trigger Events')
  1366. Dopamine.CreateSubMenu('serverOptionsTriggerEventsESX', 'serverOptionsTriggerEvents', 'ESX Trigger Events')
  1367. Dopamine.CreateSubMenu('serverOptionsTriggerEventsVRP', 'serverOptionsTriggerEvents', 'vRP Trigger Events')
  1368. Dopamine.CreateSubMenu('serverOptionsTriggerEventsESXProperty', 'serverOptionsTriggerEventsESX', 'ESX Property Stealer')
  1369.  
  1370. if ESX ~= nil then
  1371. ESX.TriggerServerCallback('esx_society:getOnlinePlayers', function(players)
  1372. for i = 1, #players do
  1373. Dopamine.CreateSubMenu("esx_property"..players[i].source, 'serverOptionsTriggerEventsESXProperty', 'ESX Property Stealer')
  1374. end
  1375. end)
  1376. end
  1377.  
  1378. Dopamine.CreateSubMenu('credits', 'menuSettings', 'Menu Credits')
  1379. Dopamine.CreateSubMenu('keybindSettings', 'menuSettings', 'Keybind Settings')
  1380.  
  1381. Dopamine.InitializeTheme(1)
  1382.  
  1383. local introInteger = 0
  1384. while ShouldShowMenu do
  1385.  
  1386. if introInteger == 0 then
  1387. introScaleform = InitializeIntro("mp_big_message_freemode", "~r~d0pamine | Press TAB")
  1388. DrawScaleformMovieFullscreen(introScaleform, 80, 80, 80, 80, 0)
  1389. Citizen.CreateThread(function()
  1390. while ShouldShowMenu do
  1391. Wait(2000)
  1392. introInteger = introInteger + 1
  1393. end
  1394. end)
  1395. elseif introInteger == 300 then
  1396. end
  1397.  
  1398. if Dopamine.IsMenuOpened('dopamine') then
  1399. if Dopamine.MenuButton('Self Options', 'selfOptions', '', {dict = 'mpleaderboard', text = 'leaderboard_deaths_icon', color = {r=255, g=255, b=255}}) then
  1400. elseif Dopamine.MenuButton('Online Players', 'onlinePlayersOptions', '', {dict = 'mpleaderboard', text = 'leaderboard_friends_icon', color = {r=255, g=255, b=255}}) then
  1401. elseif Dopamine.MenuButton('Visual Options', 'visualOptions', '', {dict = 'mpleaderboard', text = 'leaderboard_bikers_icon', color = {r=255, g=255, b=255}}) then
  1402. elseif Dopamine.MenuButton('Teleport Options', 'teleportOptions', '', {dict = 'mpleaderboard', text = 'leaderboard_star_icon', color = {r=255, g=255, b=255}}) then
  1403. elseif Dopamine.MenuButton('Vehicle Options', 'vehicleOptions', '', {dict = 'mpleaderboard', text = 'leaderboard_steeringwheel_icon', color = {r=255, g=255, b=255}}) then
  1404. elseif Dopamine.MenuButton('Weapon Options', 'weaponOptions', '', {dict = 'mpleaderboard', text = 'leaderboard_kd_icon', color = {r=255, g=255, b=255}}) then
  1405. elseif Dopamine.MenuButton('Server Options', 'serverOptions', '', {dict = 'mpleaderboard', text = 'leaderboard_globe_icon', color = {r=255, g=255, b=255}}) then
  1406. elseif Dopamine.MenuButton('Menu Options', 'menuSettings', '', {dict = 'mpleaderboard', text = 'leaderboard_position_icon', color = {r=255, g=255, b=255}}) then
  1407.  
  1408. elseif Dopamine.Button('Testicle') then
  1409. TesticleFunction()
  1410. elseif Dopamine.CheckBox('TESTICLE', TesticleTest) then
  1411. TesticleTest = not TesticleTest
  1412. end
  1413.  
  1414. Dopamine.Display()
  1415. elseif Dopamine.IsMenuOpened('selfOptions') then
  1416. if Dopamine.MenuButton('Super Powers', 'selfSuperPowers') then
  1417. elseif Dopamine.CheckBox('Godmode', selfGodmode) then
  1418. selfGodmode = not selfGodmode
  1419. elseif Dopamine.CheckBox('Semi Godmode', selfSemigodmode) then
  1420. selfSemigodmode = not selfSemigodmode
  1421. elseif Dopamine.CheckBox('Infinite Stamina', selfInfiniteStamina) then
  1422. selfInfiniteStamina = not selfInfiniteStamina
  1423. elseif Dopamine.CheckBox('Never Wanted', selfNeverWanted) then
  1424. selfNeverWanted = not selfNeverWanted
  1425. elseif Dopamine.Button('Suicide', 'Native') then
  1426. SetEntityHealth(PlayerPedId(-1), 0)
  1427. elseif Dopamine.Button('Refill Health', 'Native') then
  1428. SetEntityHealth(PlayerPedId(-1), 200)
  1429. Dopamine.PushNotification('Health refilled', 5000)
  1430. elseif Dopamine.Button('Refill Armour', 'Native') then
  1431. SetPedArmour(PlayerPedId(-1), 200)
  1432. Dopamine.PushNotification('Armour refilled', 5000)
  1433. elseif Dopamine.Button('Refill Stamina', 'Native') then
  1434. ResetPlayerStamina(PlayerPedId(-1))
  1435. elseif Dopamine.Button('Revive', 'Native') then
  1436. NertigelFunc.nativeRevive()
  1437. elseif Dopamine.Button('Clear Wanted Levels', 'Native') then
  1438. NertigelFunc.clearSelfWanted()
  1439. elseif Dopamine.Button('Disappear From Chase', 'Native') then
  1440. NertigelFunc.disappearFromChase()
  1441. end
  1442.  
  1443. Dopamine.Display()
  1444. elseif Dopamine.IsMenuOpened('selfSuperPowers') then
  1445. if Dopamine.CheckBox('Super Jump', selfSuperJump) then
  1446. selfSuperJump = not selfSuperJump
  1447. elseif Dopamine.ComboBoxSlider("Fast Run", FastCBWords, currentFastRunIndex, selectedFastRunIndex,
  1448. function(currentIndex, selectedIndex)
  1449. currentFastRunIndex = currentIndex
  1450. selectedFastRunIndex = currentIndex
  1451. FastRunMultiplier = FastCB[currentIndex]
  1452. SetRunSprintMultiplierForPlayer(PlayerId(), FastRunMultiplier)
  1453. end) then
  1454. elseif Dopamine.ComboBoxSlider("Fast Swim", FastCBWords, currentFastSwimIndex, selectedFastSwimIndex,
  1455. function(currentIndex, selectedIndex)
  1456. currentFastSwimIndex = currentIndex
  1457. selectedFastSwimIndex = currentIndex
  1458. FastSwimMultiplier = FastCB[currentIndex]
  1459. SetSwimMultiplierForPlayer(PlayerId(), FastSwimMultiplier)
  1460. end) then
  1461. end
  1462.  
  1463. Dopamine.Display()
  1464. elseif Dopamine.IsMenuOpened('onlinePlayersOptions') then
  1465. Dopamine.SetSubTitle('onlinePlayersOptions', #GetActivePlayers()..' Player(s) Online')
  1466. if Dopamine.MenuButton('All Players / World', 'allPlayersOptions') then
  1467. else
  1468. local playerlist = GetActivePlayers()
  1469. for i = 1, #playerlist do
  1470. local currentPlayer = playerlist[i]
  1471.  
  1472. if Dopamine.MenuButton("~b~["..GetPlayerServerId(currentPlayer).."]~s~ "..GetPlayerName(currentPlayer)..' ['..(IsEntityDead(GetPlayerPed(i), 1) and '~r~Dead~s~]' or '~g~Alive~s~]'), 'selectedPlayerOptions') then
  1473. selectedPlayer = currentPlayer
  1474. end
  1475. end
  1476. end
  1477.  
  1478. Dopamine.Display()
  1479. elseif Dopamine.IsMenuOpened('allPlayersOptions') then
  1480. if Dopamine.CheckBox('Include Self', allPlayersIncludeSelf) then
  1481. allPlayersIncludeSelf = not allPlayersIncludeSelf
  1482. elseif Dopamine.Button('Rape Vehicles', 'Native') then
  1483. NertigelFunc.aPO.rapeVehicles()
  1484. elseif Dopamine.Button('Explode Vehicles', 'Native') then
  1485. NertigelFunc.aPO.explodeCars()
  1486. elseif Dopamine.Button("Clone Peds", "Native") then
  1487. NertigelFunc.aPO.clonePeds()
  1488. elseif Dopamine.ComboBox('Spawn Props', {'Gas Pump', 'Beach Fire', 'Gas Tank', 'UFO', 'Dildo', 'Toilet', 'Missile', 'Couch', 'Washing Machine'}, sPOPropOptionsCurrent, sPOPropOptionsSelected,
  1489. function(currentIndex, selectedIndex)
  1490. sPOPropOptionsCurrent = currentIndex
  1491. sPOPropOptionsSelected = currentIndex
  1492. end) then
  1493. if sPOPropOptionsSelected == 1 then
  1494. NertigelFunc.aPO.gasPump()
  1495. elseif sPOPropOptionsSelected == 2 then
  1496. NertigelFunc.aPO.beachFire()
  1497. elseif sPOPropOptionsSelected == 3 then
  1498. NertigelFunc.aPO.spawnTrollProp('prop_gas_tank_01a')
  1499. NertigelFunc.aPO.spawnTrollProp('prop_gascyl_01a')
  1500. elseif sPOPropOptionsSelected == 4 then
  1501. NertigelFunc.aPO.spawnTrollProp('p_spinning_anus_s')
  1502. elseif sPOPropOptionsSelected == 5 then
  1503. NertigelFunc.aPO.spawnTrollProp('prop_cs_dildo_01')
  1504. elseif sPOPropOptionsSelected == 6 then
  1505. NertigelFunc.aPO.spawnTrollProp('prop_ld_toilet_01')
  1506. elseif sPOPropOptionsSelected == 7 then
  1507. NertigelFunc.aPO.spawnTrollProp('prop_ld_bomb_anim')
  1508. elseif sPOPropOptionsSelected == 8 then
  1509. NertigelFunc.aPO.spawnTrollProp('prop_ld_farm_couch01')
  1510. elseif sPOPropOptionsSelected == 9 then
  1511. NertigelFunc.sPO.spawnTrollProp('prop_washer_02')
  1512. end
  1513. elseif Dopamine.Button("Vehicles Into Ramps", "Native") then
  1514. NertigelFunc.aPO.vehiclesIntoRamps()
  1515. elseif Dopamine.CheckBox('Freeze', allPlayersFreeze) then
  1516. allPlayersFreeze = not allPlayersFreeze
  1517. elseif Dopamine.CheckBox('Disable Driving Vehicles', allPlayersDisableDrivingCars) then
  1518. allPlayersDisableDrivingCars = not allPlayersDisableDrivingCars
  1519. elseif Dopamine.CheckBox('Noisy Vehicles', allPlayersNoisyVehicles) then
  1520. allPlayersNoisyVehicles = not allPlayersNoisyVehicles
  1521. elseif Dopamine.Button("Run Everything ~r~(!)", 'Native') then
  1522. NertigelFunc.aPO.beachFire()
  1523. NertigelFunc.aPO.gasPump()
  1524. NertigelFunc.aPO.clonePeds()
  1525. NertigelFunc.aPO.rapeVehicles()
  1526. NertigelFunc.aPO.vehiclesIntoRamps()
  1527. NertigelFunc.aPO.explodeCars()
  1528. NertigelFunc.aPO.freezeAll()
  1529. NertigelFunc.aPO.disableDrivingCars()
  1530. NertigelFunc.aPO.spawnTrollProp('prop_gas_tank_01a')
  1531. NertigelFunc.aPO.spawnTrollProp('prop_gascyl_01a')
  1532. NertigelFunc.aPO.spawnTrollProp('p_spinning_anus_s')
  1533. NertigelFunc.aPO.spawnTrollProp('prop_cs_dildo_01')
  1534. NertigelFunc.aPO.spawnTrollProp('prop_ld_toilet_01')
  1535. NertigelFunc.aPO.spawnTrollProp('prop_ld_bomb_anim')
  1536. NertigelFunc.aPO.spawnTrollProp('prop_ld_farm_couch01')
  1537. end
  1538.  
  1539. Dopamine.Display()
  1540. elseif Dopamine.IsMenuOpened('selectedPlayerOptions') then
  1541. Dopamine.SetSubTitle('selectedPlayerOptions', '~b~['..GetPlayerServerId(selectedPlayer)..']~s~ '..GetPlayerName(selectedPlayer))
  1542. if Dopamine.MenuButton('Troll Options', 'selectedPlayerOptionsTroll') then
  1543. elseif Dopamine.MenuButton('Trigger Options', 'selectedPlayerOptionsTriggers') then
  1544. elseif Dopamine.Button("Spectate", isSpectatingTarget and '~w~Spectating: ~s~['..GetPlayerServerId(spectatedPlayer)..']') then
  1545. spectatedPlayer = selectedPlayer
  1546. NertigelFunc.sPO.spectatePlayer(spectatedPlayer)
  1547. elseif Dopamine.Button("Teleport To", "Native") then
  1548. NertigelFunc.sPO.teleportToPlayer(selectedPlayer)
  1549. elseif Dopamine.Button("Clone Vehicle", "Native") then
  1550. NertigelFunc.sPO.cloneVehicle(selectedPlayer)
  1551. elseif Dopamine.Button("Clone Outfit", "Native") then
  1552. NertigelFunc.sPO.clonePedOutfit(PlayerPedId(), GetPlayerPed(selectedPlayer))
  1553. elseif Dopamine.Button("Give All Weapons", "Native") then
  1554. NertigelFunc.sPO.giveAllWeapons(GetPlayerPed(selectedPlayer))
  1555. end
  1556.  
  1557. Dopamine.Display()
  1558. elseif Dopamine.IsMenuOpened('selectedPlayerOptionsTriggers') then
  1559. if Dopamine.Button("Open Inventory", 'ESX | Client') then
  1560. TriggerCustomEvent(false, "esx_inventoryhud:openPlayerInventory", GetPlayerServerId(selectedPlayer), GetPlayerName(selectedPlayer))
  1561. end
  1562.  
  1563. Dopamine.Display()
  1564. elseif Dopamine.IsMenuOpened('selectedPlayerOptionsTroll') then
  1565. if Dopamine.Button("Clear Animation/Tasks", "Native") then
  1566. ClearPedTasksImmediately(GetPlayerPed(selectedPlayer))
  1567. elseif Dopamine.Button("Disable Vehicle Engine", "Native") then
  1568. if IsPedInAnyVehicle(GetPlayerPed(selectedPlayer), false) then
  1569. RequestControlOnce(GetVehiclePedIsIn(GetPlayerPed(selectedPlayer), false))
  1570. SetVehicleEngineOn(GetVehiclePedIsIn(GetPlayerPed(selectedPlayer), false), false, true, true)
  1571. BringVehicleToHalt(GetVehiclePedIsIn(GetPlayerPed(selectedPlayer), false), 3.0, 5, true)
  1572. end
  1573. elseif Dopamine.Button("Spawn Weapon Pickups", "Native") then
  1574. NertigelFunc.sPO.spawnPickupsOn(GetPlayerPed(selectedPlayer))
  1575. elseif Dopamine.Button("Spawn Enemies", "Native") then
  1576. NertigelFunc.sPO.spawnEnemies(GetPlayerPed(selectedPlayer), 'a_m_y_skater_01')
  1577. elseif Dopamine.Button("Spawn Mountain Lions", "Native") then
  1578. NertigelFunc.sPO.spawnAnimals(GetPlayerPed(selectedPlayer), 'a_c_mtlion')
  1579. elseif Dopamine.Button('Spawn Heli Enemies', "Native") then
  1580. NertigelFunc.sPO.spawnHeliEnemies(GetPlayerPed(selectedPlayer))
  1581. elseif Dopamine.Button('Spawn Tank Enemy', "Native") then
  1582. NertigelFunc.sPO.spawnTankEnemy(GetPlayerPed(selectedPlayer))
  1583. elseif Dopamine.Button("Explode ~r~(!)", "Native") then
  1584. local coords = GetEntityCoords(GetPlayerPed(selectedPlayer))
  1585. AddExplosion(coords.x+1, coords.y+1, coords.z+1, 4, 100.0, true, false, 0.0)
  1586. elseif Dopamine.ComboBox('Spawn Props', {'Gas Pump', 'Beach Fire', 'Gas Tank', 'UFO', 'Dildo', 'Toilet', 'Missile', 'Couch', 'Washing Machine'}, aPOPropOptionsCurrent, aPOPropOptionsSelected,
  1587. function(currentIndex, selectedIndex)
  1588. aPOPropOptionsCurrent = currentIndex
  1589. aPOPropOptionsSelected = currentIndex
  1590. end) then
  1591. if aPOPropOptionsSelected == 1 then
  1592. NertigelFunc.aPO.gasPump()
  1593. elseif aPOPropOptionsSelected == 2 then
  1594. NertigelFunc.aPO.beachFire()
  1595. elseif aPOPropOptionsSelected == 3 then
  1596. NertigelFunc.sPO.spawnTrollProp(GetPlayerPed(selectedPlayer), 'prop_gas_tank_01a')
  1597. NertigelFunc.sPO.spawnTrollProp(GetPlayerPed(selectedPlayer), 'prop_gascyl_01a')
  1598. elseif aPOPropOptionsSelected == 4 then
  1599. NertigelFunc.sPO.spawnTrollProp(GetPlayerPed(selectedPlayer), 'p_spinning_anus_s')
  1600. elseif aPOPropOptionsSelected == 5 then
  1601. NertigelFunc.sPO.spawnTrollProp(GetPlayerPed(selectedPlayer), 'prop_cs_dildo_01')
  1602. elseif aPOPropOptionsSelected == 6 then
  1603. NertigelFunc.sPO.spawnTrollProp(GetPlayerPed(selectedPlayer), 'prop_ld_toilet_01')
  1604. elseif aPOPropOptionsSelected == 7 then
  1605. NertigelFunc.sPO.spawnTrollProp(GetPlayerPed(selectedPlayer), 'prop_ld_bomb_anim')
  1606. elseif aPOPropOptionsSelected == 8 then
  1607. NertigelFunc.sPO.spawnTrollProp(GetPlayerPed(selectedPlayer), 'prop_ld_farm_couch01')
  1608. elseif aPOPropOptionsSelected == 9 then
  1609. NertigelFunc.sPO.spawnTrollProp(GetPlayerPed(selectedPlayer), 'prop_washer_02')
  1610. end
  1611. elseif Dopamine.ComboBox("Ram Vehicle", sPORamVehicleWords, sPORamVehicleCurrent, sPORamVehicleSelected,
  1612. function(currentIndex, selectedIndex)
  1613. sPORamVehicleCurrent = currentIndex
  1614. sPORamVehicleSelected = currentIndex
  1615. sPORamVehicleX = sPORamVehicleWords[currentIndex]
  1616. end) then
  1617. NertigelFunc.sPO.ramVehicle(GetPlayerPed(selectedPlayer), sPORamVehicleX)
  1618. end
  1619.  
  1620. Dopamine.Display()
  1621. elseif Dopamine.IsMenuOpened('visualOptions') then
  1622. if Dopamine.MenuButton('Extra Sensory Perception', 'visualOptionsESP', '', {dict = 'mphud', text = 'spectating', color = {r=255, g=255, b=255}}) then
  1623. elseif Dopamine.ComboBox('Crosshair', customCrosshairOpts, currentCustomCrosshair, selectedCustomCrosshair,
  1624. function(currentIndex, selectedIndex)
  1625. currentCustomCrosshair = currentIndex
  1626. selectedCustomCrosshair = currentIndex
  1627. end)
  1628. then
  1629. elseif Dopamine.Button('Optimize FPS', 'Native') then
  1630. NertigelFunc.optimizeFPS()
  1631. elseif Dopamine.CheckBox('Blackout', visualsBlackout) then
  1632. visualsBlackout = not visualsBlackout
  1633. end
  1634.  
  1635. Dopamine.Display()
  1636. elseif Dopamine.IsMenuOpened('visualOptionsESP') then
  1637. if Dopamine.CheckBox('Enable', visualsESPEnable) then
  1638. visualsESPEnable = not visualsESPEnable
  1639. NertigelFunc.toggleESP()
  1640. elseif Dopamine.CheckBox('Self', visualsESPShowSelf) then
  1641. visualsESPShowSelf = not visualsESPShowSelf
  1642. elseif Dopamine.CheckBox('Line', visualsESPShowLine) then
  1643. visualsESPShowLine = not visualsESPShowLine
  1644. elseif Dopamine.CheckBox('Box', visualsESPShowBox) then
  1645. visualsESPShowBox = not visualsESPShowBox
  1646. elseif Dopamine.CheckBox('ID', visualsESPShowID) then
  1647. visualsESPShowID = not visualsESPShowID
  1648. elseif Dopamine.CheckBox('Name', visualsESPShowName) then
  1649. visualsESPShowName = not visualsESPShowName
  1650. elseif Dopamine.CheckBox('Distance', visualsESPShowDistance) then
  1651. visualsESPShowDistance = not visualsESPShowDistance
  1652. elseif Dopamine.CheckBox('Weapon', visualsESPShowWeapon) then
  1653. visualsESPShowWeapon = not visualsESPShowWeapon
  1654. elseif Dopamine.CheckBox('Vehicle', visualsESPShowVehicle) then
  1655. visualsESPShowVehicle = not visualsESPShowVehicle
  1656. elseif Dopamine.ComboBoxSlider("ESP Refresh Rate", visualsESPRefreshRates, currentESPRefreshIndex, selectedESPRefreshIndex,
  1657. function(currentIndex, selectedIndex)
  1658. currentESPRefreshIndex = currentIndex
  1659. selectedESPRefreshIndex = currentIndex
  1660. if currentIndex == 1 then
  1661. visualsESPRefreshRate = 0
  1662. elseif currentIndex == 2 then
  1663. visualsESPRefreshRate = 50
  1664. elseif currentIndex == 3 then
  1665. visualsESPRefreshRate = 150
  1666. elseif currentIndex == 4 then
  1667. visualsESPRefreshRate = 250
  1668. elseif currentIndex == 5 then
  1669. visualsESPRefreshRate = 500
  1670. elseif currentIndex == 6 then
  1671. visualsESPRefreshRate = 1000
  1672. elseif currentIndex == 7 then
  1673. visualsESPRefreshRate = 2000
  1674. elseif currentIndex == 8 then
  1675. visualsESPRefreshRate = 5000
  1676. end
  1677. end) then
  1678. elseif Dopamine.ComboBoxSlider("ESP Distance", visualsESPDistanceOps, currentVisualsESPDistance, selectedVisualsESPDistance,
  1679. function(currentIndex, selectedIndex)
  1680. currentVisualsESPDistance = currentIndex
  1681. selectedVisualsESPDistance = currentIndex
  1682. visualsESPDistance = visualsESPDistanceOps[currentVisualsESPDistance]
  1683. end) then
  1684. end
  1685.  
  1686. Dopamine.Display()
  1687. elseif Dopamine.IsMenuOpened('teleportOptions') then
  1688. if Dopamine.Button('Teleport To Waypoint', 'Native') then
  1689. NertigelFunc.teleportToWaypoint()
  1690. elseif Dopamine.ComboBox('Teleport To', {'Legion Square', 'Weed Farm', 'Meth Farm', 'Coke Farm', 'Money Wash', 'Mission Row PD'}, currentTeleportToOptions, selectedTeleportToOptions,
  1691. function(currentIndex, selectedIndex)
  1692. currentTeleportToOptions = currentIndex
  1693. selectedTeleportToOptions = currentIndex
  1694. end)
  1695. then
  1696. if selectedTeleportToOptions == 1 then
  1697. SetEntityCoords(PlayerPedId(), 195.23, -934.04, 30.69)
  1698. elseif selectedTeleportToOptions == 2 then
  1699. SetEntityCoords(PlayerPedId(), 1066.009, -3183.386, -39.164)
  1700. elseif selectedTeleportToOptions == 3 then
  1701. SetEntityCoords(PlayerPedId(), 998.629, -3199.545, -36.394)
  1702. elseif selectedTeleportToOptions == 4 then
  1703. SetEntityCoords(PlayerPedId(), 1088.636, -3188.551, -38.993)
  1704. elseif selectedTeleportToOptions == 5 then
  1705. SetEntityCoords(PlayerPedId(), 1118.405, -3193.687, -40.394)
  1706. elseif selectedTeleportToOptions == 6 then
  1707. SetEntityCoords(PlayerPedId(), 441.56, -982.9, 30.69)
  1708. end
  1709. elseif Dopamine.CheckBox('Show Coords', teleportShowCoords) then
  1710. teleportShowCoords = not teleportShowCoords
  1711. end
  1712.  
  1713. Dopamine.Display()
  1714. elseif Dopamine.IsMenuOpened('vehicleOptions') then
  1715. if Dopamine.MenuButton('Los Santos Customs', 'vehicleLosSantosCustoms') then
  1716. elseif Dopamine.MenuButton('Vehicle Spawn List', 'vehicleSpawnList') then
  1717. elseif Dopamine.CheckBox('Godmode', vehiclesGodmode) then
  1718. vehiclesGodmode = not vehiclesGodmode
  1719. elseif Dopamine.Button('Repair Vehicle', 'Native') then
  1720. NertigelFunc.repairVehicle(GetVehiclePedIsIn(PlayerPedId(), 0))
  1721. elseif Dopamine.Button('Clean Vehicle', 'Native') then
  1722. SetVehicleDirtLevel(GetVehiclePedIsIn(PlayerPedId(), 0), 0.0)
  1723. elseif Dopamine.Button('Dirty Vehicle', 'Native') then
  1724. SetVehicleDirtLevel(GetVehiclePedIsIn(PlayerPedId(), 0), 15.0)
  1725. elseif Dopamine.Button('Flip Vehicle', 'Native') then
  1726. SetVehicleOnGroundProperly(GetVehiclePedIsIn(PlayerPedId(), 0))
  1727. elseif Dopamine.Button('Delete Vehicle', 'Native') then
  1728. NertigelFunc.deleteVehicle(GetVehiclePedIsIn(PlayerPedId(), 0))
  1729. elseif Dopamine.Button('Delete Vehicles Within Radius', 'Native') then
  1730. NertigelFunc.deleteVehicle(GetVehiclePedIsIn(PlayerPedId(), 0), 100)
  1731. elseif Dopamine.ComboBoxSlider("Engine Power Boost", vehiclesMultiplierXWords, vehiclesEnginePowerBoostCurrent, vehiclesEnginePowerBoostSelected,
  1732. function(currentIndex, selectedIndex)
  1733. vehiclesEnginePowerBoostCurrent = currentIndex
  1734. vehiclesEnginePowerBoostSelected = currentIndex
  1735. enginePowerBoost = vehiclesMultiplierX[currentIndex]
  1736. end) then
  1737. elseif Dopamine.ComboBoxSlider("Engine Torque Boost", vehiclesMultiplierXWords, vehiclesEngineTorqueBoostCurrent, vehiclesEngineTorqueBoostSelected,
  1738. function(currentIndex, selectedIndex)
  1739. vehiclesEngineTorqueBoostCurrent = currentIndex
  1740. vehiclesEngineTorqueBoostSelected = currentIndex
  1741. engineTorqueBoost = vehiclesMultiplierX[currentIndex]
  1742. end) then
  1743. elseif Dopamine.ComboBox('Change sound', vehiclesCustomSounds, vehiclesCustomSoundCurrent, vehiclesCustomSoundSelected,
  1744. function(currentIndex, selectedIndex)
  1745. vehiclesCustomSoundCurrent = currentIndex
  1746. vehiclesCustomSoundSelected = selectedIndex
  1747. end) then
  1748. ForceVehicleEngineAudio(GetVehiclePedIsIn(GetPlayerPed(-1), false), vehiclesCustomSounds[vehiclesCustomSoundSelected])
  1749. elseif Dopamine.CheckBox('Rainbow Paintjob', vehiclesRainbow) then
  1750. vehiclesRainbow = not vehiclesRainbow
  1751. elseif Dopamine.CheckBox('Lower Vehicle', vehiclesLower) then
  1752. vehiclesLower = not vehiclesLower
  1753. elseif Dopamine.CheckBox('Wallride', vehiclesWallride) then
  1754. vehiclesWallride = not vehiclesWallride
  1755. elseif Dopamine.CheckBox('2-Step Vehicle', vehicleOptions2Step) then
  1756. vehicleOptions2Step = not vehicleOptions2Step
  1757. elseif Dopamine.CheckBox('Always Wheelie', vehiclesAlwaysWheelie) then
  1758. vehiclesAlwaysWheelie = not vehiclesAlwaysWheelie
  1759. elseif Dopamine.CheckBox('Drift Smoke', vehiclesDriftSmoke) then
  1760. vehiclesDriftSmoke = not vehiclesDriftSmoke
  1761. end
  1762.  
  1763. Dopamine.Display()
  1764. elseif Dopamine.IsMenuOpened('weaponOptions') then
  1765. if Dopamine.MenuButton('Give Single Weapon', 'weaponOptionsTypes') then
  1766. elseif Dopamine.Button('Give All Weapons') then
  1767. NertigelFunc.sPO.giveAllWeapons(PlayerId())
  1768. elseif Dopamine.Button('Remove All Weapons') then
  1769. RemoveAllPedWeapons(PlayerPedId(-1), true)
  1770. elseif Dopamine.ComboBox('Damage Multiplier', weaponsDamageMultiplier, weaponsDamageMultiplierCurrent, weaponsDamageMultiplierSelected,
  1771. function(currentIndex, selectedIndex)
  1772. weaponsDamageMultiplierCurrent = currentIndex
  1773. weaponsDamageMultiplierSelected = currentIndex
  1774. weaponsDamageMultiplierSet = weaponsDamageMultiplier[weaponsDamageMultiplierSelected]
  1775. end) then
  1776. elseif Dopamine.CheckBox('Explosive Impact', weaponsExplosiveAmmo) then
  1777. weaponsExplosiveAmmo = not weaponsExplosiveAmmo
  1778. elseif Dopamine.CheckBox('Teleport To Impact', weaponsTeleportGun) then
  1779. weaponsTeleportGun = not weaponsTeleportGun
  1780. elseif Dopamine.CheckBox('Rapid Fire', weaponsRapidFire) then
  1781. weaponsRapidFire = not weaponsRapidFire
  1782. elseif Dopamine.CheckBox('Aimbot ~r~(!)', weaponsAimbotT) then
  1783. weaponsAimbotT = not weaponsAimbotT
  1784. end
  1785.  
  1786. Dopamine.Display()
  1787. elseif Dopamine.IsMenuOpened('serverOptions') then
  1788. Dopamine.SetSubTitle('serverOptions', 'Server IP: '..GetCurrentServerEndpoint())
  1789. if Dopamine.MenuButton('Server Resources', 'serverOptionsResources') then
  1790. elseif Dopamine.MenuButton('Trigger Events', 'serverOptionsTriggerEvents') then
  1791. elseif Dopamine.ComboBoxSlider("Ped Density", pedDensityXWords, pedDensityXCurrent, pedDensityXSelectedf,
  1792. function(currentIndex, selectedIndex)
  1793. pedDensityXCurrent = currentIndex
  1794. pedDensityXSelectedf = currentIndex
  1795. pedDensityXSelected = pedDensityX[currentIndex]
  1796. end) then
  1797. end
  1798. if NertigelFunc.doesResourceExist('es_extended') then
  1799. if Dopamine.Button('Print getSharedObject', 'Client') then
  1800. local LOAD_es_extended = LoadResourceFile("es_extended", "client/common.lua")
  1801. if LOAD_es_extended then
  1802. LOAD_es_extended = LOAD_es_extended:gsub("AddEventHandler", "")
  1803. LOAD_es_extended = LOAD_es_extended:gsub("cb", "")
  1804. LOAD_es_extended = LOAD_es_extended:gsub("function ", "")
  1805. LOAD_es_extended = LOAD_es_extended:gsub("return ESX", "")
  1806. LOAD_es_extended = LOAD_es_extended:gsub("(ESX)", "")
  1807. LOAD_es_extended = LOAD_es_extended:gsub("function", "")
  1808. LOAD_es_extended = LOAD_es_extended:gsub("getSharedObject%(%)", "")
  1809. LOAD_es_extended = LOAD_es_extended:gsub("end", "")
  1810. LOAD_es_extended = LOAD_es_extended:gsub("%(", "")
  1811. LOAD_es_extended = LOAD_es_extended:gsub("%)", "")
  1812. LOAD_es_extended = LOAD_es_extended:gsub(",", "")
  1813. LOAD_es_extended = LOAD_es_extended:gsub("\n", "")
  1814. LOAD_es_extended = LOAD_es_extended:gsub("'", "")
  1815. LOAD_es_extended = LOAD_es_extended:gsub("%s+", "")
  1816. print(tostring(LOAD_es_extended))
  1817. end
  1818. end
  1819. end
  1820.  
  1821. Dopamine.Display()
  1822. elseif Dopamine.IsMenuOpened('serverOptionsResources') then
  1823. for i=0, #serverOptionsResources do
  1824. if Dopamine.Button(serverOptionsResources[i]) then
  1825. end
  1826. end
  1827.  
  1828. Dopamine.Display()
  1829. elseif Dopamine.IsMenuOpened('menuSettings') then
  1830. if Dopamine.MenuButton('Credits', 'credits') then
  1831. elseif Dopamine.MenuButton('Keybinds', 'keybindSettings') then
  1832. elseif Dopamine.ComboBox('Menu X', menuX, currentMenuX, selectedMenuX,
  1833. function(currentIndex, selectedIndex)
  1834. currentMenuX = currentIndex
  1835. selectedMenuX = selectedIndex
  1836. for i = 1, #menus_list do
  1837. Dopamine.SetMenuX(menus_list[i], menuX[currentMenuX])
  1838. end
  1839. end)
  1840. then
  1841. elseif Dopamine.ComboBox('Menu Y', menuY, currentMenuY, selectedMenuY,
  1842. function(currentIndex, selectedIndex)
  1843. currentMenuY = currentIndex
  1844. selectedMenuY = selectedIndex
  1845. for i = 1, #menus_list do
  1846. Dopamine.SetMenuY(menus_list[i], menuY[currentMenuY])
  1847. end
  1848. end)
  1849. then
  1850. elseif Dopamine.ComboBox('Theme', availableThemes, currentThemeIndex, selectedThemeIndex,
  1851. function(currentIndex, selectedIndex)
  1852. currentThemeIndex = currentIndex
  1853. selectedThemeIndex = currentIndex
  1854. end) then
  1855. selectedTheme = availableThemes[selectedThemeIndex]Dopamine.InitializeTheme()
  1856. elseif Dopamine.CheckBox('Rainbow', selectedThemeRainbow) then
  1857. selectedThemeRainbow = not selectedThemeRainbow
  1858. elseif Dopamine.CheckBox('Text Outline', menu_TextOutline) then
  1859. menu_TextOutline = not menu_TextOutline
  1860. elseif Dopamine.CheckBox('Text Drop Shadow', menu_TextDropShadow) then
  1861. menu_TextDropShadow = not menu_TextDropShadow
  1862. elseif Dopamine.CheckBox('Selection Rect', menu_RectOverlay) then
  1863. menu_RectOverlay = not menu_RectOverlay
  1864. elseif Dopamine.Button('~r~Close Menu') then
  1865. Dopamine.CloseMenu()
  1866. ShouldShowMenu = false
  1867. end
  1868.  
  1869. Dopamine.Display()
  1870. elseif Dopamine.IsMenuOpened('credits') then
  1871. for i = 1, #creditsList do
  1872. if Dopamine.Button(creditsList[i]) then
  1873. end
  1874. end
  1875.  
  1876. Dopamine.Display()
  1877. elseif Dopamine.IsMenuOpened('keybindSettings') then
  1878. if Dopamine.Button('Menu', '['..currentKeybindMenu..']') then
  1879. print(json.encode(Keys))
  1880. local key = string.upper(NertigelFunc.Game.KeyboardInput("Input New Key Name (check console)"))
  1881.  
  1882. if Keys[key] then
  1883. currentKeybindMenu = key
  1884. Dopamine.PushNotification("Menu bind has been set to ~g~"..key, 5000)
  1885. else
  1886. Dopamine.PushNotification("Key ~r~"..key.."~s~ is not valid!", 5000)
  1887. end
  1888. end
  1889.  
  1890. Dopamine.Display()
  1891. elseif Dopamine.IsMenuOpened('weaponOptionsTypes') then
  1892. for yeet, ayy in pairs(weaponsTableFM) do
  1893. if Dopamine.MenuButton(yeet, 'weaponOptionsTypeSelection') then
  1894. weaponOptionsSelected = ayy
  1895. end
  1896. end
  1897.  
  1898. Dopamine.Display()
  1899. elseif Dopamine.IsMenuOpened('weaponOptionsTypeSelection') then
  1900. for _, ayy in pairs(weaponOptionsSelected) do
  1901. if Dopamine.MenuButton(ayy.name, 'weaponModOptionsOptions') then
  1902. weaponOptionsSelectedWeapon = ayy
  1903. end
  1904. end
  1905.  
  1906. Dopamine.Display()
  1907. elseif Dopamine.IsMenuOpened('weaponModOptionsOptions') then
  1908. if Dopamine.Button('Spawn Weapon') then
  1909. GiveWeaponToPed(GetPlayerPed(-1), GetHashKey(weaponOptionsSelectedWeapon.id), 1000, false)
  1910. elseif Dopamine.Button('Add Ammo') then
  1911. SetPedAmmo(GetPlayerPed(-1), GetHashKey(weaponOptionsSelectedWeapon.id), 250)
  1912. elseif Dopamine.CheckBox('Infinite Ammo', weaponOptionsSelectedWeapon.bInfAmmo) then
  1913. weaponOptionsSelectedWeapon.bInfAmmo = not weaponOptionsSelectedWeapon.bInfAmmo
  1914. SetPedInfiniteAmmo(GetPlayerPed(-1), weaponOptionsSelectedWeapon.bInfAmmo, GetHashKey(weaponOptionsSelectedWeapon.id))
  1915. SetPedInfiniteAmmoClip(GetPlayerPed(-1), true)
  1916. PedSkipNextReloading(GetPlayerPed(-1))
  1917. end
  1918. for yeet, ayy in pairs(weaponOptionsSelectedWeapon.mods) do
  1919. if Dopamine.MenuButton(yeet, 'weaponsModSelect') then
  1920. weaponOptionsSelectedMod = ayy
  1921. end
  1922. end
  1923.  
  1924. Dopamine.Display()
  1925. elseif Dopamine.IsMenuOpened('weaponsModSelect') then
  1926. for _, ev in pairs(weaponOptionsSelectedMod) do
  1927. if Dopamine.Button(ev.name) then
  1928. GiveWeaponComponentToPed(GetPlayerPed(-1), GetHashKey(weaponOptionsSelectedWeapon.id), GetHashKey(ev.id))
  1929. end
  1930. end
  1931.  
  1932. Dopamine.Display()
  1933. elseif Dopamine.IsMenuOpened('vehicleLosSantosCustoms') then
  1934. if Dopamine.MenuButton('Cosmetic Upgrades', 'vehicleLosSantosCustomsCosmetics') then
  1935. elseif Dopamine.MenuButton('Performance Upgrades', 'vehicleLosSantosCustomsPerformance') then
  1936. elseif Dopamine.Button('Max Peformance Upgrades', 'Native') then
  1937. NertigelFunc.maxPerformanceUpgrades(GetVehiclePedIsIn(PlayerPedId()))
  1938. elseif Dopamine.Button('Max All Upgrades', 'Native') then
  1939. NertigelFunc.maxUpgrades(GetVehiclePedIsIn(PlayerPedId()))
  1940. end
  1941.  
  1942. Dopamine.Display()
  1943. elseif Dopamine.IsMenuOpened('vehicleLosSantosCustomsCosmetics') then
  1944.  
  1945. Dopamine.Display()
  1946. elseif Dopamine.IsMenuOpened('vehicleLosSantosCustomsPerformance') then
  1947. if IsToggleModOn(GetVehiclePedIsUsing(PlayerPedId()), 18) then
  1948. turboStatus = '~g~Installed'
  1949. else
  1950. turboStatus = '~r~Not Installed'
  1951. end
  1952. if Dopamine.Button('Turbo', turboStatus) then
  1953. if not IsToggleModOn(GetVehiclePedIsUsing(PlayerPedId()), 18) then
  1954. ToggleVehicleMod(GetVehiclePedIsUsing(PlayerPedId()), 18, not IsToggleModOn(GetVehiclePedIsUsing(PlayerPedId()), 18))
  1955. else
  1956. ToggleVehicleMod(GetVehiclePedIsUsing(PlayerPedId()), 18, not IsToggleModOn(GetVehiclePedIsUsing(PlayerPedId()), 18))
  1957. end
  1958. end
  1959.  
  1960. Dopamine.Display()
  1961. elseif Dopamine.IsMenuOpened('vehicleSpawnList') then
  1962. if Dopamine.CheckBox('Spawn Upgraded', vehiclesSpawnUpgraded) then
  1963. vehiclesSpawnUpgraded = not vehiclesSpawnUpgraded
  1964. elseif Dopamine.CheckBox('Spawn Inside', vehiclesSpawnInside) then
  1965. vehiclesSpawnInside = not vehiclesSpawnInside
  1966. elseif Dopamine.Button('Spawn Custom Vehicle', 'Native') then
  1967. local ModelName = NertigelFunc.Game.KeyboardInput("Enter Vehicle Spawn Name", "", 100)
  1968. if ModelName and IsModelValid(ModelName) and IsModelAVehicle(ModelName) then
  1969. NertigelFunc.spawnCustomVehicle(ModelName)
  1970. else
  1971. Dopamine.PushNotification('Model is not valid!', 5000)
  1972. end
  1973. elseif Dopamine.Button('Spawn & Ride Train', 'Native') then
  1974. NertigelFunc.spawnRandomTrain()
  1975. end
  1976. for yeet, ayy in ipairs(vehicleCategories) do
  1977. if Dopamine.MenuButton(ayy, 'vehicleSpawnSelected') then
  1978. selectedCarTypeIdx = yeet
  1979. end
  1980. end
  1981.  
  1982. Dopamine.Display()
  1983. elseif Dopamine.IsMenuOpened('vehicleSpawnSelected') then
  1984. for yeet, ayy in ipairs(fullVehicleList[selectedCarTypeIdx]) do
  1985. local vehname = GetLabelText(ayy)
  1986. if vehname == "NULL" then vehname = ayy end
  1987. if Dopamine.MenuButton(vehname, 'vehicleSpawnSelectedOptions') then
  1988. selectedCarToSpawn = yeet
  1989. end
  1990. end
  1991. Dopamine.Display()
  1992. elseif Dopamine.IsMenuOpened('vehicleSpawnSelectedOptions') then
  1993. if Dopamine.Button('Spawn Car') then
  1994. NertigelFunc.spawnVehicle(fullVehicleList[selectedCarTypeIdx][selectedCarToSpawn])
  1995. end
  1996.  
  1997. Dopamine.Display()
  1998. elseif Dopamine.IsMenuOpened('serverOptionsTriggerEvents') then
  1999. if Dopamine.MenuButton('ESX Triggers', 'serverOptionsTriggerEventsESX') then
  2000. elseif Dopamine.MenuButton('vRP Triggers', 'serverOptionsTriggerEventsVRP') then
  2001. elseif Dopamine.Button('Spam Chat', 'Server') then
  2002. for colorLoop=0,9 do
  2003. TriggerCustomEvent(true, '_chat:messageEntered','d0pamine',{MainColor.r,MainColor.g,MainColor.b},'^'..colorLoop..' d0pamine | Nertigel#5391')
  2004. end
  2005. end
  2006.  
  2007. Dopamine.Display()
  2008. elseif Dopamine.IsMenuOpened('serverOptionsTriggerEventsESX') then
  2009. if Dopamine.MenuButton('Property Stealer', 'serverOptionsTriggerEventsESXProperty') then
  2010. elseif Dopamine.Button('Skin Changer', 'Client') then
  2011. if NertigelFunc.doesResourceExist('esx_skin') then
  2012. Dopamine.CloseMenu()
  2013. TriggerCustomEvent(false, 'esx_skin:openRestrictedMenu', function(data, menu) end)
  2014. else Dopamine.PushNotification("Resource was not found!", 5000) end
  2015. elseif Dopamine.Button('Full Hunger', 'Client') then
  2016. if NertigelFunc.doesResourceExist('esx_status') then
  2017. TriggerCustomEvent(false, 'esx_status:set', "hunger", 1000000)
  2018. else Dopamine.PushNotification("Resource was not found!", 5000) end
  2019. elseif Dopamine.Button('Full Thirst', 'Client') then
  2020. if NertigelFunc.doesResourceExist('esx_status') then
  2021. TriggerCustomEvent(false, 'esx_status:set', "thirst", 1000000)
  2022. else Dopamine.PushNotification("Resource was not found!", 5000) end
  2023. elseif Dopamine.ComboBox('Spawn Jobs Items', Jobs.Item, currentESXItemSpawn, selectedESXItemSpawn,
  2024. function(currentIndex, selectedIndex)
  2025. currentESXItemSpawn = currentIndex
  2026. selectedESXItemSpawn = currentIndex
  2027. end)
  2028. then
  2029. if NertigelFunc.doesResourceExist('esx_jobs') then
  2030. local item = Jobs.Item[selectedESXItemSpawn]
  2031. local JobDB = Jobs.ItemDatabase[item]
  2032. if type(JobDB) == "table" then
  2033. Citizen.CreateThread(function()
  2034. for key, value in pairs(JobDB) do
  2035. local ItemRequired = Jobs.ItemRequires[key]
  2036. local ItemData =
  2037. {
  2038. {
  2039. name = key, db_name = value, time = 100, max = 100, add = 10, remove = 10, drop = 100,
  2040. requires = ItemRequired and JobDB[ItemRequired] or "nothing",
  2041. requires_name = ItemRequired and ItemRequired or "Nothing"
  2042. }
  2043. }
  2044. Citizen.CreateThread(function()
  2045. TriggerCustomEvent(true, 'esx_jobs:startWork', ItemData)
  2046. Wait(1000)
  2047. TriggerCustomEvent(true, 'esx_jobs:stopWork', ItemData)
  2048. end)
  2049. Wait(3000)
  2050. end
  2051. end)
  2052. else
  2053. local ItemRequired = Jobs.ItemRequires[item];
  2054. local ItemData = {
  2055. {
  2056. name = item, db_name = JobDB, time = 100, max = 100, add = 10, remove = 10, drop = 100,
  2057. requires = ItemRequired and Jobs.ItemDatabase[ItemRequired] or "nothing",
  2058. requires_name = ItemRequired and ItemRequired or "Nothing"
  2059. }
  2060. }
  2061. Citizen.CreateThread(function()
  2062. TriggerCustomEvent(true, 'esx_jobs:startWork', ItemData)
  2063. Wait(100)
  2064. TriggerCustomEvent(true, 'esx_jobs:stopWork', ItemData)
  2065. end)
  2066. end
  2067. else Dopamine.PushNotification("Resource was not found!", 5000) end
  2068. elseif Dopamine.ComboBox('Harvest Drugs', {'Weed', 'Opium', 'Meth', 'Coke'}, currentESXDrugSpawn, selectedESXDrugSpawn,
  2069. function(currentIndex, selectedIndex)
  2070. currentESXDrugSpawn = currentIndex
  2071. selectedESXDrugSpawn = currentIndex
  2072. end)
  2073. then
  2074. if NertigelFunc.doesResourceExist('esx_drugs') or NertigelFunc.doesResourceExist('esx_illegal_drugs') then
  2075. if selectedESXDrugSpawn == 1 then
  2076. TriggerCustomEvent(true, 'esx_drugs:startHarvestWeed')
  2077. TriggerCustomEvent(true, 'esx_illegal_drugs:startHarvestWeed')
  2078. TriggerCustomEvent(true, 'esx_drugs:pickedUpCannabis')
  2079.  
  2080. TriggerCustomEvent(true, 'esx_drugs:startTransformWeed')
  2081. TriggerCustomEvent(true, 'esx_illegal_drugs:startTransformWeed')
  2082. TriggerCustomEvent(true, 'esx_drugs:processCannabis')
  2083. elseif selectedESXDrugSpawn == 2 then
  2084. TriggerCustomEvent(true, 'esx_drugs:startHarvestOpium')
  2085. TriggerCustomEvent(true, 'esx_illegal_drugs:startHarvestOpium')
  2086.  
  2087. TriggerCustomEvent(true, 'esx_drugs:startTransformOpium')
  2088. TriggerCustomEvent(true, 'esx_illegal_drugs:startTransformOpium')
  2089. elseif selectedESXDrugSpawn == 3 then
  2090. TriggerCustomEvent(true, 'esx_drugs:startHarvestMeth')
  2091. TriggerCustomEvent(true, 'esx_illegal_drugs:startHarvestMeth')
  2092.  
  2093. TriggerCustomEvent(true, 'esx_drugs:startTransformMeth')
  2094. TriggerCustomEvent(true, 'esx_illegal_drugs:startTransformMeth')
  2095. elseif selectedESXDrugSpawn == 4 then
  2096. TriggerCustomEvent(true, 'esx_drugs:startHarvestCoke')
  2097. TriggerCustomEvent(true, 'esx_illegal_drugs:startHarvestCoke')
  2098.  
  2099. TriggerCustomEvent(true, 'esx_drugs:startTransformCoke')
  2100. TriggerCustomEvent(true, 'esx_illegal_drugs:startTransformCoke')
  2101. end
  2102. else Dopamine.PushNotification("Resource was not found!", 5000) end
  2103. elseif Dopamine.Button('GCPhone Earrape', 'Server') then
  2104. NertigelFunc.exploits.gcphoneTwitter()
  2105. elseif Dopamine.Button('Licenses SQL Exploit', 'Server') then
  2106. NertigelFunc.exploits.esx_license()
  2107. elseif Dopamine.Button('Kashacters SQL Exploit', 'Server') then
  2108. NertigelFunc.exploits.esx_kashacters()
  2109. elseif Dopamine.Button('InteractSound Earrape', 'Server') then
  2110. NertigelFunc.exploits.interactSound()
  2111. elseif Dopamine.Button('Phone Jobs Spam', 'Server') then
  2112. NertigelFunc.exploits.phoneSpam()
  2113. elseif Dopamine.Button('Spam Server Console', 'Server') then
  2114. if ESX ~= nil then
  2115. for i = 1, 50 do
  2116. ESX.TriggerServerCallback('d0pamine_xyz:getFuckedNigger', function(players)
  2117. end)
  2118. end
  2119. else Dopamine.PushNotification("ESX was not found!", 5000) end
  2120. end
  2121.  
  2122. Dopamine.Display()
  2123. elseif Dopamine.IsMenuOpened('serverOptionsTriggerEventsVRP') then
  2124. if Dopamine.Button('Toggle Handcuffs', 'Client') then
  2125. vRP.toggleHandcuff()
  2126. elseif Dopamine.Button('Clear Wanted Level', 'Client') then
  2127. vRP.applyWantedLevel(0)
  2128. elseif Dopamine.Button('Trucker Job Money', 'Client') then
  2129. local money = NertigelFunc.Game.KeyboardInput("Enter $ Amount:", '', 12)
  2130. if money ~= '' then
  2131. local distance = money / 3.80 --[[ money is distance*3.80]]
  2132. vRPtruckS = Tunnel.getInterface("vRP_trucker", "vRP_trucker")
  2133. vRPtruckS.finishTruckingDelivery({distance})
  2134. end
  2135. elseif Dopamine.Button('Casino Chips', 'Client') then
  2136. local amount = NertigelFunc.Game.KeyboardInput("Enter Chips Amount:", '', 12)
  2137. if amount ~= '' then
  2138. vRPcasinoS = Tunnel.getInterface("vRP_casino","vRP_casino")
  2139. vRPcasinoS.payRouletteWinnings({amount, 2})
  2140. end
  2141. elseif Dopamine.Button('Los Santos Customs', 'Server') then
  2142. local m = NertigelFunc.Game.KeyboardInput('Enter amount of money', '', 12)
  2143. if m ~= '' then
  2144. TriggerCustomEvent(true, 'lscustoms:payGarage', { costs = -m })
  2145. end
  2146. elseif Dopamine.Button('Slot Machine', 'Server') then
  2147. local m = NertigelFunc.Game.KeyboardInput('Enter amount of money', '', 12)
  2148. if m ~= '' then
  2149. TriggerCustomEvent(true, 'vrp_slotmachine:server:2', m)
  2150. end
  2151. elseif Dopamine.Button('Legacy Fuel', 'Server') then
  2152. local m = NertigelFunc.Game.KeyboardInput('Enter amount of money', '', 12)
  2153. if m ~= '' then
  2154. TriggerCustomEvent(true, 'LegacyFuel:PayFuel', { costs = -m })
  2155. end
  2156. elseif Dopamine.Button('Get Driving License', 'Server') then
  2157. TriggerCustomEvent(true, 'dmv:success')
  2158. elseif Dopamine.Button('Bank Deposit', 'Server') then
  2159. local m = NertigelFunc.Game.KeyboardInput('Enter amount of money', '', 12)
  2160. if m ~= '' then
  2161. TriggerCustomEvent(true, 'Banca:deposit', m)
  2162. TriggerCustomEvent(true, 'bank:deposit', m)
  2163. end
  2164. elseif Dopamine.Button('Bank Withdraw', 'Server') then
  2165. local m = NertigelFunc.Game.KeyboardInput('Enter amount of money', '', 12)
  2166. if m ~= '' then
  2167. TriggerCustomEvent(true, 'bank:withdraw', m)
  2168. TriggerCustomEvent(true, 'Banca:withdraw', m)
  2169. end
  2170. end
  2171.  
  2172. Dopamine.Display()
  2173. elseif Dopamine.IsMenuOpened('serverOptionsTriggerEventsESXProperty') then
  2174. Citizen.CreateThread(function()
  2175. if ESX ~= nil then
  2176. ESX.TriggerServerCallback('esx_society:getOnlinePlayers', function(players)
  2177. for i = 1, #players do
  2178. --[[print(players[i].identifier)]]
  2179. local t = players[i].identifier
  2180. ESX.TriggerServerCallback("esx_property:getPropertyInventory", function(inventory)
  2181. if inventory.items[1] == nil and inventory.weapons[1] == nil and inventory.blackMoney == 0 then
  2182. local sdf = nil
  2183. elseif inventory.items[1].count > 0 or inventory.weapons[1].ammo > 0 then
  2184. if Dopamine.MenuButton('Open ' .. GetPlayerName(GetPlayerFromServerId(players[i].source)) .."'s Inventory", "esx_property"..players[i].source) then
  2185. end
  2186. if Dopamine.IsMenuOpened("esx_property"..players[i].source) then
  2187. print(players[i].source)
  2188. PrintTable(inventory)
  2189. if inventory.items == {} or inventory.items == nil then
  2190. Dopamine.PushNotification("No Items In Property", 5000)
  2191. end
  2192. if inventory.weapons == {} or inventory.weapons == nil then
  2193. Dopamine.PushNotification("No Weapons In Property", 5000)
  2194. end
  2195. if inventory.blackMoney > 0 then
  2196. if Dopamine.Button("Grab All Black Money | A : " .. inventory.blackMoney) then
  2197. TriggerCustomEvent(true, "esx_property:getItem", t, "item_account", "black_money", inventory.blackMoney)
  2198. end
  2199. end
  2200. for i = 1, #inventory.items do
  2201. local item = inventory.items[i].label
  2202. if inventory.items[i].count > 0 then
  2203. local NumberAmount = 1
  2204.  
  2205. if Dopamine.ComboBox('Amount To Grab', {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20, inventory.items[i].count}, 1, 1,
  2206. function(currentIndex, selectedIndex)
  2207. if currentIndex <= 20 then
  2208. NumberAmount = selectedIndex
  2209. else
  2210. NumberAmount = inventory.items[i].count
  2211. end
  2212. end) then
  2213. end
  2214.  
  2215. if Dopamine.Button("Label | " .. inventory.items[i].label) then
  2216. end
  2217.  
  2218. if Dopamine.Button("Name | " .. inventory.items[i].name) then
  2219. end
  2220.  
  2221. if Dopamine.Button("Amount | " .. inventory.items[i].count) then
  2222. end
  2223.  
  2224. if Dopamine.Button("Grab | " .. inventory.items[i].count) then
  2225. local idv = players[i].identifier
  2226. local vst = inventory.items[i]
  2227. TriggerCustomEvent(true, "esx_property:getItem", t, "item_standard", vst.name, NumberAmount)
  2228. end
  2229. end
  2230. end
  2231.  
  2232. for i = 1, #inventory.weapons do
  2233. local item = inventory.weapons[i].name
  2234. local NumberAmount = 1
  2235.  
  2236. if Dopamine.ComboBox('Amount To Grab', {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20}, 1, 1,
  2237. function(currentIndex, selectedIndex)
  2238. NumberAmount = selectedIndex
  2239. print(selectedIndex, NumberAmount)
  2240. end) then
  2241. end
  2242.  
  2243. if Dopamine.Button('Ammo | ' .. inventory.weapons[i].ammo) then
  2244. end
  2245.  
  2246. if Dopamine.Button('Grab | ' .. item) then
  2247. local idv = t
  2248. local vst = inventory.weapons[i]
  2249. TriggerCustomEvent(true, "esx_property:getItem", idv, "item_weapon", vst.name, NumberAmount)
  2250. end
  2251. end
  2252.  
  2253. Dopamine.Display()
  2254. end
  2255. end
  2256. end, t)
  2257. end
  2258. end)
  2259. else
  2260. print('es_extended not found')
  2261. end
  2262. end)
  2263.  
  2264. Dopamine.Display()
  2265. elseif IsDisabledControlJustPressed(0, Keys["TAB"]) then
  2266. Dopamine.OpenMenu('dopamine')
  2267. end
  2268.  
  2269. --[[
  2270. Notifications
  2271. ]]
  2272.  
  2273. if #cachedNotifications > 0 then
  2274. for notificationIndex = 1, #cachedNotifications do
  2275. local notification = cachedNotifications[notificationIndex]
  2276.  
  2277. if notification then
  2278. notification["opacity"] = (notification["opacity"] or (notification["time"] / 1000) * 60) - 1
  2279.  
  2280. local offset = 0.005 + (notificationIndex * .05)
  2281. local notificationTimer = (GetGameTimer() - notification["startTime"]) / notification["time"] * 100
  2282.  
  2283. Dopamine.Draw3D(0.5, 0.8 * offset, notification["text"], notification["opacity"])
  2284.  
  2285. if notificationTimer >= 100 then
  2286. Dopamine.RemoveNotification(notificationIndex)
  2287. end
  2288. end
  2289. end
  2290. end
  2291.  
  2292. --[[
  2293. Run every frame/tick | Make sure that functions don't use Wait
  2294. ]]
  2295.  
  2296. SetPlayerInvincible(PlayerId(), selfGodmode)
  2297. SetEntityInvincible(PlayerPedId(-1), selfGodmode)
  2298.  
  2299. if selfSemigodmode then
  2300. if GetEntityHealth(PlayerPedId()) < 200 then
  2301. SetEntityHealth(PlayerPedId(), 200)
  2302. end
  2303. end
  2304.  
  2305. if selfNeverWanted then
  2306. ClearPlayerWantedLevel(PlayerId())
  2307. end
  2308.  
  2309. if selfInfiniteStamina then
  2310. ResetPlayerStamina(PlayerId())
  2311. end
  2312.  
  2313. if selfSuperJump then
  2314. SetSuperJumpThisFrame(PlayerId())
  2315. end
  2316.  
  2317. if allPlayersFreeze then
  2318. NertigelFunc.aPO.freezeAll()
  2319. end
  2320.  
  2321. if allPlayersDisableDrivingCars then
  2322. NertigelFunc.aPO.disableDrivingCars()
  2323. end
  2324.  
  2325. if allPlayersNoisyVehicles then
  2326. NertigelFunc.aPO.noisyVehicles()
  2327. end
  2328.  
  2329. if selectedCustomCrosshair == 2 then
  2330. ShowHudComponentThisFrame(14)
  2331. elseif selectedCustomCrosshair == 3 then
  2332. NertigelFunc.drawTextCrosshairs('+', 0.495, 0.484, 1.0, 0.3, MainColor)
  2333. end
  2334.  
  2335. SetArtificialLightsState(visualsBlackout)
  2336.  
  2337. if pedDensityXSelected < 1 then
  2338. SetVehicleDensityMultiplierThisFrame(pedDensityXSelected)
  2339. SetRandomVehicleDensityMultiplierThisFrame(pedDensityXSelected)
  2340. SetParkedVehicleDensityMultiplierThisFrame(pedDensityXSelected)
  2341. SetAmbientVehicleRangeMultiplierThisFrame(1.0)
  2342. SetPedDensityMultiplierThisFrame(pedDensityXSelected)
  2343. SetScenarioPedDensityMultiplierThisFrame(pedDensityXSelected, pedDensityXSelected)
  2344. DistantCopCarSirens(false)
  2345. SetGarbageTrucks(false)
  2346. SetRandomBoats(false)
  2347. SetCreateRandomCops(false)
  2348. SetCreateRandomCopsNotOnScenarios(false)
  2349. SetCreateRandomCopsOnScenarios(false)
  2350.  
  2351. local x,y,z = table.unpack(GetEntityCoords(PlayerPedId()))
  2352. ClearAreaOfVehicles(x, y, z, 1000, false, false, false, false, false)
  2353. RemoveVehiclesFromGeneratorsInArea(x - 500.0, y - 500.0, z - 500.0, x + 500.0, y + 500.0, z + 500.0);
  2354. end
  2355.  
  2356. if engineTorqueBoost > 1 then
  2357. SetVehicleEngineTorqueMultiplier(GetVehiclePedIsIn(GetPlayerPed(-1), false), engineTorqueBoost + 0.0)
  2358. end
  2359.  
  2360. if enginePowerBoost > 1 then
  2361. SetVehicleEnginePowerMultiplier(GetVehiclePedIsIn(GetPlayerPed(-1), false), enginePowerBoost + 1.0)
  2362. end
  2363.  
  2364. if vehiclesGodmode and IsPedInAnyVehicle(PlayerPedId(-1), true) then
  2365. SetEntityInvincible(GetVehiclePedIsUsing(PlayerPedId(-1)), true)
  2366. end
  2367.  
  2368. if vehiclesAlwaysWheelie then
  2369. if IsPedInAnyVehicle(GetPlayerPed(-1)) and GetPedInVehicleSeat(GetVehiclePedIsIn(GetPlayerPed(-1)), -1) == GetPlayerPed(-1) then
  2370. SetVehicleWheelieState(GetVehiclePedIsIn(GetPlayerPed(-1)), 129)
  2371. end
  2372. end
  2373.  
  2374. if vehiclesRainbow then
  2375. local rgb = ReturnRGB(1.0)
  2376. RequestControlOnce(GetVehiclePedIsIn(PlayerPedId(), 0))
  2377. SetVehicleCustomPrimaryColour(GetVehiclePedIsIn(PlayerPedId(), 0), rgb.r, rgb.g, rgb.b)
  2378. SetVehicleCustomSecondaryColour(GetVehiclePedIsIn(PlayerPedId(), 0), rgb.r, rgb.g, rgb.b)
  2379. end
  2380.  
  2381. if vehiclesLower then
  2382. if (IsPedInVehicle(PlayerPedId(), GetVehiclePedIsIn(PlayerPedId(), true), true)) then
  2383. ApplyForceToEntity(GetVehiclePedIsIn(PlayerPedId(), true), 1, 0, 0, -0.1, 0, 0, 0, 1, false, true, true, true, true)
  2384. end
  2385. end
  2386.  
  2387. if vehiclesWallride then
  2388. if (IsPedInVehicle(PlayerPedId(), GetVehiclePedIsIn(PlayerPedId(), true), true)) then
  2389. ApplyForceToEntity(GetVehiclePedIsIn(PlayerPedId(), true), 1, 0, 0, -0.4, 0, 0, 0, 1, true, true, true, true, true)
  2390. end
  2391. end
  2392.  
  2393. if teleportShowCoords then
  2394. x, y, z = table.unpack(GetEntityCoords(GetPlayerPed(-1), true))
  2395. roundx = tonumber(string.format('%.2f', x))
  2396. roundy = tonumber(string.format('%.2f', y))
  2397. roundz = tonumber(string.format('%.2f', z))
  2398. NertigelFunc.drawTextCrosshairs('~w~X: ~s~' .. roundx, 0.05, 0.0, MainColor)
  2399. NertigelFunc.drawTextCrosshairs('~w~Y: ~s~' .. roundy, 0.11, 0.0, MainColor)
  2400. NertigelFunc.drawTextCrosshairs('~w~Z: ~s~' .. roundz, 0.17, 0.0, MainColor)
  2401. end
  2402.  
  2403. SetPlayerWeaponDamageModifier(PlayerId(), weaponsDamageMultiplierSet)
  2404. SetPlayerMeleeWeaponDamageModifier(PlayerId(), weaponsDamageMultiplierSet)
  2405.  
  2406. if weaponsExplosiveAmmo then
  2407. local impact, coords = GetPedLastWeaponImpactCoord(PlayerPedId())
  2408. if impact then
  2409. AddExplosion(coords.x, coords.y, coords.z, 2, 100000.0, true, false, 0)
  2410. end
  2411. SetExplosiveMeleeThisFrame(PlayerId())
  2412. end
  2413.  
  2414. if weaponsTeleportGun then
  2415. local impact, coords = GetPedLastWeaponImpactCoord(PlayerPedId())
  2416. if impact then
  2417. SetEntityCoords(PlayerPedId(), coords.x, coords.y, coords.z + 3)
  2418. end
  2419. end
  2420.  
  2421. if weaponsAimbotT then
  2422. NertigelFunc.runAimbot()
  2423. end
  2424.  
  2425. if weaponsRapidFire then
  2426. NertigelFunc.rapidFireTick()
  2427. end
  2428.  
  2429. --[[Dopamine.Draw3D(0.5, 0.5, 'test', 255)]]
  2430.  
  2431. Citizen.Wait(0)
  2432. end
  2433. end)
  2434.  
  2435. --[[
  2436. Run 2 step separately because of Wait usage
  2437. ]]
  2438.  
  2439. Citizen.CreateThread(function()
  2440. while ShouldShowMenu do
  2441. if vehicleOptions2Step then
  2442. NertigelFunc.vehicle2Step()
  2443. end
  2444.  
  2445. if vehiclesDriftSmoke then
  2446. RequestNamedPtfxAsset("scr_recartheft")
  2447. while not HasNamedPtfxAssetLoaded("scr_recartheft") do
  2448. Wait(1)
  2449. end
  2450. RequestNamedPtfxAsset("core")
  2451. while not HasNamedPtfxAssetLoaded("core") do
  2452. Wait(1)
  2453. end
  2454. ang,speed = NertigelFunc.Game.vehicleAngle(GetVehiclePedIsUsing(GetPlayerPed(-1)))
  2455. local _SIZE = 0.25
  2456. local _DENS = 25
  2457. local _BURNOUT_SIZE = 1.5
  2458. if IsPedInAnyVehicle(GetPlayerPed(-1), false) then
  2459. if speed >= 1.0 and ang ~= 0 then
  2460. NertigelFunc.Game.driftSmoke("scr_recartheft","scr_wheel_burnout", GetVehiclePedIsUsing(GetPlayerPed(-1)), _DENS, _SIZE)
  2461. elseif --[[speed < 1.0 and]] IsVehicleInBurnout(GetVehiclePedIsUsing(GetPlayerPed(-1))) then
  2462. NertigelFunc.Game.driftSmoke("core" ,"exp_grd_bzgas_smoke", GetVehiclePedIsUsing(GetPlayerPed(-1)), 3, _BURNOUT_SIZE)
  2463. end
  2464. end
  2465. end
  2466.  
  2467. Citizen.Wait(0)
  2468. end
  2469. end)
  2470.  
  2471. --[[
  2472. Functions here to keep menu clean
  2473. ]]
  2474.  
  2475. NertigelFunc = {}
  2476.  
  2477. NertigelFunc.doesResourceExist = function(resource_name)
  2478. if GetResourceState(resource_name) == "started" or
  2479. string.upper(GetResourceState(resource_name)) == "started" or
  2480. string.lower(GetResourceState(resource_name)) == "started" then
  2481. return true
  2482. else
  2483. return false
  2484. end
  2485. end
  2486.  
  2487. NertigelFunc.drawTextCrosshairs = function(C,x,y)
  2488. SetTextColour(MainColor.r, MainColor.g, MainColor.b, 255)
  2489. SetTextFont(0)
  2490. SetTextProportional(1)
  2491. SetTextScale(0.0,0.4)
  2492. SetTextDropshadow(1,0,0,0,255)
  2493. SetTextEdge(1,0,0,0,255)
  2494. SetTextDropShadow()
  2495. SetTextOutline()
  2496. SetTextEntry("STRING")
  2497. AddTextComponentString(C)
  2498. DrawText(x,y)
  2499. end
  2500.  
  2501. NertigelFunc.teleportToWaypoint = function()
  2502. local entity = PlayerPedId()
  2503. if IsPedInAnyVehicle(entity, false) then
  2504. entity = GetVehiclePedIsUsing(entity)
  2505. end
  2506. local success = false
  2507. local blipFound = false
  2508. local blipIterator = GetBlipInfoIdIterator()
  2509. local blip = GetFirstBlipInfoId(8)
  2510.  
  2511. while DoesBlipExist(blip) do
  2512. if GetBlipInfoIdType(blip) == 4 then
  2513. cx, cy, cz = table.unpack(GetBlipInfoIdCoord(blip, Citizen.ReturnResultAnyway(), Citizen.ResultAsVector()))
  2514. blipFound = true
  2515. break
  2516. end
  2517. blip = GetNextBlipInfoId(blipIterator)
  2518. Wait(0)
  2519. end
  2520.  
  2521. if blipFound then
  2522. local groundFound = false
  2523. local yaw = GetEntityHeading(entity)
  2524.  
  2525. for i = 0, 1000, 1 do
  2526. SetEntityCoordsNoOffset(entity, cx, cy, ToFloat(i), false, false, false)
  2527. SetEntityRotation(entity, 0, 0, 0, 0, 0)
  2528. SetEntityHeading(entity, yaw)
  2529. SetGameplayCamRelativeHeading(0)
  2530. Wait(0)
  2531. if GetGroundZFor_3dCoord(cx, cy, ToFloat(i), cz, false) then
  2532. cz = ToFloat(i)
  2533. groundFound = true
  2534. break
  2535. end
  2536. end
  2537. if not groundFound then
  2538. cz = -300.0
  2539. end
  2540. success = true
  2541. end
  2542.  
  2543. if success then
  2544. SetEntityCoordsNoOffset(entity, cx, cy, cz, false, false, true)
  2545. SetGameplayCamRelativeHeading(0)
  2546. if IsPedSittingInAnyVehicle(PlayerPedId()) then
  2547. if GetPedInVehicleSeat(GetVehiclePedIsUsing(PlayerPedId()), -1) == PlayerPedId() then
  2548. SetVehicleOnGroundProperly(GetVehiclePedIsUsing(PlayerPedId()))
  2549. end
  2550. end
  2551. end
  2552. end
  2553.  
  2554. NertigelFunc.runParticle = function()
  2555. RequestNamedPtfxAsset("proj_xmas_firework")
  2556. UseParticleFxAssetNextCall("proj_xmas_firework")
  2557. StartNetworkedParticleFxNonLoopedOnEntity("scr_firework_xmas_burst_rgw", PlayerPedId(), 0.0, 0.0, -0.5, 0.0, 0.0, 0.0, 1.0, false, false, false)
  2558. end
  2559.  
  2560. NertigelFunc.runInjectParticle = function()
  2561. RequestNamedPtfxAsset("proj_xmas_firework")
  2562. UseParticleFxAssetNextCall("proj_xmas_firework")
  2563. StartNetworkedParticleFxNonLoopedOnEntity("scr_firework_xmas_burst_rgw", PlayerPedId(), 0.0, 0.0, -0.5, 0.0, 0.0, 0.0, 1.0, false, false, false)
  2564. StartNetworkedParticleFxNonLoopedOnEntity("scr_firework_xmas_spiral_burst_rgw", PlayerPedId(), 0.0, 0.0, -0.5, 0.0, 0.0, 0.0, 1.0, false, false, false)
  2565. StartNetworkedParticleFxNonLoopedOnEntity("scr_xmas_firework_sparkle_spawn", PlayerPedId(), 0.0, 0.0, -0.5, 0.0, 0.0, 0.0, 1.0, false, false, false)
  2566. end
  2567. NertigelFunc.runInjectParticle()
  2568.  
  2569. NertigelFunc.respawnPed = function(ped, coords, heading)
  2570. SetEntityCoordsNoOffset(ped, coords.x, coords.y, coords.z, false, false, false, true)
  2571. NetworkResurrectLocalPlayer(coords.x, coords.y, coords.z, heading, true, false)
  2572. SetPlayerInvincible(ped, false)
  2573. TriggerCustomEvent(false, 'playerSpawned', coords.x, coords.y, coords.z)
  2574. ClearPedBloodDamage(ped)
  2575. end
  2576.  
  2577. NertigelFunc.nativeRevive = function()
  2578. local coords = GetEntityCoords(PlayerPedId())
  2579.  
  2580. local formattedCoords = {
  2581. x = NertigelFunc.Math.Round(coords.x, 1),
  2582. y = NertigelFunc.Math.Round(coords.y, 1),
  2583. z = NertigelFunc.Math.Round(coords.z, 1)
  2584. }
  2585.  
  2586. NertigelFunc.respawnPed(PlayerPedId(), formattedCoords, 0.0)
  2587. StopScreenEffect('DeathFailOut')
  2588. Dopamine.PushNotification('Revived', 5000)
  2589. end
  2590.  
  2591. NertigelFunc.repairVehicle = function(pvehicle)
  2592. SetVehicleEngineHealth(pvehicle, 1000)
  2593. SetVehicleFixed(pvehicle)
  2594. SetVehicleEngineOn(pvehicle, 1, 1)
  2595. SetVehicleBurnout(pvehicle, false)
  2596. end
  2597.  
  2598. NertigelFunc.deleteVehicle = function(pvehicle, radius)
  2599. if radius then
  2600. local playerPed = PlayerPedId()
  2601. radius = tonumber(radius) + 0.01
  2602. local vehicles = NertigelFunc.Game.GetVehiclesInArea(GetEntityCoords(playerPed), radius)
  2603.  
  2604. for k,entity in ipairs(vehicles) do
  2605. local attempt = 0
  2606.  
  2607. while not NetworkHasControlOfEntity(entity) and attempt < 50 and DoesEntityExist(entity) do
  2608. NetworkRequestControlOfEntity(entity)
  2609. attempt = attempt + 1
  2610. end
  2611.  
  2612. if DoesEntityExist(entity) and NetworkHasControlOfEntity(entity) then
  2613. SetEntityAsMissionEntity(entity, false, true)
  2614. DeleteVehicle(entity)
  2615. end
  2616. end
  2617. else
  2618. SetEntityAsMissionEntity(pvehicle, false, true)
  2619. DeleteVehicle(pvehicle)
  2620. end
  2621. end
  2622.  
  2623. NertigelFunc.optimizeFPS = function()
  2624. ClearAllBrokenGlass()
  2625. ClearAllHelpMessages()
  2626. LeaderboardsReadClearAll()
  2627. ClearBrief()
  2628. ClearGpsFlags()
  2629. ClearPrints()
  2630. ClearSmallPrints()
  2631. ClearReplayStats()
  2632. LeaderboardsClearCacheData()
  2633. ClearFocus()
  2634. ClearHdArea()
  2635. ClearPedBloodDamage(PlayerPedId())
  2636. ClearPedWetness(PlayerPedId())
  2637. ClearPedEnvDirt(PlayerPedId())
  2638. ResetPedVisibleDamage(PlayerPedId())
  2639. end
  2640.  
  2641. NertigelFunc.clearSelfWanted = function()
  2642. SetMaxWantedLevel(0)
  2643. SetPoliceIgnorePlayer(GetPlayerPed(), true)
  2644. SetEveryoneIgnorePlayer(GetPlayerPed(), true)
  2645. SetPlayerCanBeHassledByGangs(GetPlayerPed(), false)
  2646. SetIgnoreLowPriorityShockingEvents(GetPlayerPed(), true)
  2647. end
  2648.  
  2649. NertigelFunc.disappearFromChase = function()
  2650. if IsPedInAnyVehicle(GetPlayerPed(-1)) then
  2651. --[[setupModel(GetHashKey("s_m_m_security_01"))]]
  2652.  
  2653. local vehicle = GetVehiclePedIsIn(PlayerPedId(), true)
  2654. if DoesEntityExist(vehicle) then
  2655. local targetx, targety, targetz = table.unpack(GetEntityCoords(PlayerPedId()))
  2656. SetEntityCoords(PlayerPedId(), targetx + 1, targety + 2, targetz + 10)
  2657. --[[SetEntityCoords(PlayerPedId(), -1729.98, -724.68, 9.84)]]
  2658.  
  2659. local newDriver = CreatePedInsideVehicle(vehicle, 4, GetEntityModel(PlayerPedId()), -1, true, false)
  2660. NertigelFunc.sPO.clonePedOutfit(newDriver, PlayerPedId())
  2661. SetEntityAsMissionEntity(newDriver, 0, 0)
  2662. TaskVehicleDriveToCoordLongrange(newDriver, vehicle, -34.552, -673.060, 31.944, 100.0, 537657916, 1.0)
  2663. SetDriveTaskDrivingStyle(newDriver, 6)
  2664.  
  2665. local vehicleModel = GetEntityModel(vehicle)
  2666. local spawnedVehicle = SpawnVehicleToPlayer(vehicleModel, PlayerId())
  2667. local vehicleProperties = NertigelFunc.Game.GetVehicleProperties(vehicle)
  2668. vehicleProperties.plate = nil
  2669.  
  2670. NertigelFunc.Game.SetVehicleProperties(spawnedVehicle, vehicleProperties)
  2671. else
  2672. print('vehicle entity doesnt exist')
  2673. end
  2674. else
  2675. print('youre not in a vehicle')
  2676. end
  2677. end
  2678.  
  2679. local v2sShould2sStep = false
  2680. NertigelFunc.vehicle2Step = function()
  2681. p_flame_location = {
  2682. "exhaust",
  2683. "exhaust_2",
  2684. "exhaust_3",
  2685. "exhaust_4",
  2686. "exhaust_5",
  2687. "exhaust_6",
  2688. "exhaust_7",
  2689. "exhaust_8",
  2690. "exhaust_9",
  2691. "exhaust_10",
  2692. "exhaust_11",
  2693. "exhaust_12",
  2694. "exhaust_13",
  2695. "exhaust_14",
  2696. "exhaust_15",
  2697. "exhaust_16"
  2698. }
  2699. p_flame_particle = "veh_backfire"
  2700. p_flame_particle_asset = "core"
  2701. p_flame_size = 2.0
  2702.  
  2703. if IsPedInAnyVehicle(GetPlayerPed(-1)) then
  2704. local pedVehicle = GetVehiclePedIsIn(GetPlayerPed(-1))
  2705. local pedPos = GetEntityCoords(GetPlayerPed(-1))
  2706. local vehiclePos = GetEntityCoords(pedVehicle)
  2707. local RPM = GetVehicleCurrentRpm(GetVehiclePedIsIn(GetPlayerPed(-1)))
  2708.  
  2709. if GetPedInVehicleSeat(pedVehicle, -1) == GetPlayerPed(-1) then
  2710. local BackFireDelay = (math.random(250, 750))
  2711. local backFireSize = (math.random(2, 6) / 1.5)
  2712. if RPM > 0.3 and RPM < 0.6 then
  2713. for _,bones in pairs(p_flame_location) do
  2714. if GetEntityBoneIndexByName(pedVehicle, bones) >= 0 then
  2715. UseParticleFxAssetNextCall(p_flame_particle_asset)
  2716. createdPart = StartParticleFxLoopedOnEntityBone(p_flame_particle, NetToVeh(VehToNet(pedVehicle)), 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, GetEntityBoneIndexByName(NetToVeh(VehToNet(pedVehicle)), bones), backFireSize--[[p_flame_size]], 0.0, 0.0, 0.0)
  2717. StopParticleFxLooped(createdPart, 1)
  2718. end
  2719. end
  2720. --[[PlaySoundFrontend(-1, "Jet_Explosions", "exile_1", true)]]
  2721. AddExplosion(vehiclePos.x, vehiclePos.y, vehiclePos.z, 61, 0.0, true, true, 0.0, true)
  2722. v2sShould2sStep = true
  2723. Citizen.Wait(BackFireDelay)
  2724. else
  2725. v2sShould2sStep = false
  2726. end
  2727. end
  2728. end
  2729. end
  2730.  
  2731. NertigelFunc.maxUpgrades = function(veh)
  2732. SetVehicleModKit(veh, 0)
  2733. SetVehicleCustomPrimaryColour(GetVehiclePedIsIn(PlayerPedId(), 0), 0, 0, 0)
  2734. SetVehicleCustomSecondaryColour(GetVehiclePedIsIn(PlayerPedId(), 0), 0, 0, 0)
  2735. SetVehicleColours(veh, 12, 12)
  2736. SetVehicleModColor_1(veh, 3, 0)
  2737. SetVehicleExtraColours(veh, 3, 0)
  2738. ToggleVehicleMod(veh, 18, 1)
  2739. ToggleVehicleMod(veh, 22, 1)
  2740. SetVehicleMod(veh, 16, 5, 0)
  2741. SetVehicleMod(veh, 12, 2, 0)
  2742. SetVehicleMod(veh, 11, 3, 0)
  2743. SetVehicleMod(veh, 14, 14, 0)
  2744. SetVehicleMod(veh, 15, 3, 0)
  2745. SetVehicleMod(veh, 13, 2, 0)
  2746. SetVehicleWindowTint(veh, 5)
  2747. SetVehicleWheelType(veh, 0)
  2748. SetVehicleMod(veh, 23, 21, 1)
  2749. SetVehicleMod(veh, 0, 1, 0)
  2750. SetVehicleMod(veh, 1, 1, 0)
  2751. SetVehicleMod(veh, 2, 1, 0)
  2752. SetVehicleMod(veh, 3, 1, 0)
  2753. SetVehicleMod(veh, 4, 1, 0)
  2754. SetVehicleMod(veh, 5, 1, 0)
  2755. SetVehicleMod(veh, 6, 1, 0)
  2756. SetVehicleMod(veh, 7, 1, 0)
  2757. SetVehicleMod(veh, 8, 1, 0)
  2758. SetVehicleMod(veh, 9, 1, 0)
  2759. SetVehicleMod(veh, 10, 1, 0)
  2760. IsVehicleNeonLightEnabled(veh, 1)
  2761. SetVehicleNeonLightEnabled(veh, 0, 1)
  2762. SetVehicleNeonLightEnabled(veh, 1, 1)
  2763. SetVehicleNeonLightEnabled(veh, 2, 1)
  2764. SetVehicleNeonLightEnabled(veh, 3, 1)
  2765. SetVehicleNeonLightEnabled(veh, 4, 1)
  2766. SetVehicleNeonLightEnabled(veh, 5, 1)
  2767. SetVehicleNeonLightEnabled(veh, 6, 1)
  2768. SetVehicleNeonLightEnabled(veh, 7, 1)
  2769. SetVehicleNeonLightsColour(veh, MainColor.r, MainColor.g, MainColor.b)
  2770. SetVehicleModKit(veh, 0)
  2771. ToggleVehicleMod(veh, 20, 1)
  2772. SetVehicleModKit(veh, 0)
  2773. SetVehicleTyreSmokeColor(veh, MainColor.r, MainColor.g, MainColor.b)
  2774. NertigelFunc.runParticle()
  2775. end
  2776.  
  2777. NertigelFunc.maxPerformanceUpgrades = function(pVehicle)
  2778. SetVehicleModKit(pVehicle, 0)
  2779. SetVehicleMod(pVehicle, 11, GetNumVehicleMods(pVehicle, 11) - 1, false)
  2780. SetVehicleMod(pVehicle, 12, GetNumVehicleMods(pVehicle, 12) - 1, false)
  2781. SetVehicleMod(pVehicle, 13, GetNumVehicleMods(pVehicle, 13) - 1, false)
  2782. SetVehicleMod(pVehicle, 15, GetNumVehicleMods(pVehicle, 15) - 2, false)
  2783. SetVehicleMod(pVehicle, 16, GetNumVehicleMods(pVehicle, 16) - 1, false)
  2784. ToggleVehicleMod(pVehicle, 17, true)
  2785. ToggleVehicleMod(pVehicle, 18, true)
  2786. ToggleVehicleMod(pVehicle, 19, true)
  2787. ToggleVehicleMod(pVehicle, 21, true)
  2788. end
  2789.  
  2790. NertigelFunc.spawnVehicle = function(vehicle_model)
  2791. local x, y, z = table.unpack(GetOffsetFromEntityInWorldCoords(PlayerPedId(-1), 0.0, 8.0, 0.5))
  2792. local veh = vehicle_model
  2793. if veh == nil then
  2794. veh = 'elegy'
  2795. end
  2796. vehiclehash = GetHashKey(veh)
  2797. RequestModel(vehiclehash)
  2798. Citizen.CreateThread(function()
  2799. local timeout = 0
  2800. while not HasModelLoaded(vehiclehash) do
  2801. timeout = timeout + 100
  2802. Citizen.Wait(100)
  2803. if timeout > 5000 then
  2804. Dopamine.PushNotification('Could not spawn this vehicle!', 5000)
  2805. break
  2806. end
  2807. end
  2808. SpawnedCar = CreateVehicle(vehiclehash, x, y, z, GetEntityHeading(PlayerPedId(-1)) + 90, 1, 0)
  2809.  
  2810. SetVehicleStrong(SpawnedCar, true)
  2811. SetVehicleEngineOn(SpawnedCar, true, true, false)
  2812. SetVehicleEngineCanDegrade(SpawnedCar, false)
  2813.  
  2814. if vehiclesSpawnUpgraded then
  2815. NertigelFunc.maxUpgrades(SpawnedCar)
  2816. end
  2817.  
  2818. if vehiclesSpawnInside then
  2819. SetPedIntoVehicle(PlayerPedId(), SpawnedCar, -1)
  2820. end
  2821.  
  2822. NertigelFunc.runParticle()
  2823. end)
  2824. end
  2825.  
  2826. NertigelFunc.spawnCustomVehicle = function(vehicle_model)
  2827. RequestModel(vehicle_model)
  2828. Citizen.CreateThread(function()
  2829. local timeout = 0
  2830. if vehicle_model == nil then
  2831. vehicle_model = 'elegy'
  2832. end
  2833. while not HasModelLoaded(GetHashKey(vehicle_model)) do
  2834. timeout = timeout + 100
  2835. Citizen.Wait(10)
  2836. if timeout > 5000 then
  2837. Dopamine.PushNotification('Could not spawn this vehicle!', 5000)
  2838. break
  2839. end
  2840. end
  2841.  
  2842. SpawnedCar = CreateVehicle(GetHashKey(vehicle_model), GetEntityCoords(PlayerPedId()), GetEntityHeading(PlayerPedId()), true, true)
  2843.  
  2844. SetVehicleStrong(SpawnedCar, true)
  2845. SetVehicleEngineOn(SpawnedCar, true, true, false)
  2846. SetVehicleEngineCanDegrade(SpawnedCar, false)
  2847.  
  2848. if vehiclesSpawnUpgraded then
  2849. NertigelFunc.maxUpgrades(SpawnedCar)
  2850. end
  2851.  
  2852. if vehiclesSpawnInside then
  2853. SetPedIntoVehicle(PlayerPedId(), SpawnedCar, -1)
  2854. end
  2855.  
  2856. NertigelFunc.runParticle()
  2857. end)
  2858. end
  2859.  
  2860. NertigelFunc.runAimbot = function()
  2861. --[[Lock on players]]
  2862. for ped in EnumeratePeds() do
  2863. if IsEntityOnScreen(ped) and HasEntityClearLosToEntityInFront(PlayerPedId(), ped) and not IsPedDeadOrDying(ped) then
  2864. local bone = GetPedBoneCoords(ped, GetEntityBoneIndexByName(ped, "SKEL_HEAD"), 0.0, 0.0, 0.0)
  2865. if IsPlayerFreeAiming(PlayerId()) then
  2866. SetPedShootsAtCoord(PlayerPedId(), bone, true)
  2867. end
  2868. end
  2869. end
  2870. end
  2871.  
  2872. NertigelFunc.rapidFireTick = function()
  2873. if IsDisabledControlPressed(0, Keys["MOUSE1"]) then
  2874. local _, weapon = GetCurrentPedWeapon(PlayerPedId())
  2875. local launchPos = GetEntityCoords(GetCurrentPedWeaponEntityIndex(PlayerPedId()))
  2876. local targetPos = GetGameplayCamCoord() + (GetCamDirFromScreenCenter() * 200.0)
  2877.  
  2878. ClearAreaOfProjectiles(launchPos, 0.0, 1)
  2879.  
  2880. ShootSingleBulletBetweenCoords(launchPos, targetPos, 5, 1, weapon, PlayerPedId(), true, true, 24000.0)
  2881.  
  2882. if weaponsExplosiveAmmo then
  2883. ShootSingleBulletBetweenCoords(launchPos, targetPos, 5, 1, "WEAPON_GRENADE", PlayerPedId(), true, true, 24000.0)
  2884. end
  2885. end
  2886. end
  2887.  
  2888. NertigelFunc.toggleESP = function()
  2889.  
  2890. local _,x,y = false, 0.0, 0.0
  2891.  
  2892. Citizen.CreateThread(function()
  2893. while visualsESPEnable do
  2894. local plist = GetActivePlayers()
  2895. if not visualsESPShowSelf then
  2896. table.removekey(plist, PlayerId())
  2897. end
  2898. for i = 1, #plist do
  2899. local targetCoords = GetEntityCoords(GetPlayerPed(plist[i]))
  2900. _, x, y = GetScreenCoordFromWorldCoord(targetCoords.x, targetCoords.y, targetCoords.z)
  2901. end
  2902. Wait(visualsESPRefreshRate)
  2903. end
  2904. end)
  2905.  
  2906. Citizen.CreateThread(function()
  2907. while visualsESPEnable do
  2908. local plist = GetActivePlayers()
  2909. if not visualsESPShowSelf then
  2910. table.removekey(plist, PlayerId())
  2911. end
  2912. for i = 1, #plist do
  2913. local targetCoords = GetEntityCoords(GetPlayerPed(plist[i]))
  2914. local distance = GetDistanceBetweenCoords(GetEntityCoords(PlayerPedId()), targetCoords)
  2915. if distance <= visualsESPDistance then
  2916. local _, wephash = GetCurrentPedWeapon(GetPlayerPed(plist[i]), 1)
  2917. local wepname = GetWeaponNameFromHash(wephash)
  2918. local vehname = "On Foot"..'~s~ |'
  2919. if IsPedInAnyVehicle(GetPlayerPed(plist[i]), 0) then
  2920. vehname = GetLabelText(GetDisplayNameFromVehicleModel(GetEntityModel(GetVehiclePedIsUsing(GetPlayerPed(plist[i])))))..'~s~ |'
  2921. end
  2922. if wepname == nil then wepname = "Unknown" end
  2923. if visualsESPShowBox then
  2924. DrawRect(x, y, 0.008, 0.01, 0, 0, 255, 255)
  2925. DrawRect(x, y, 0.003, 0.005, 255, 0, 0, 255)
  2926. end
  2927. local espstring1 = ''
  2928. local espstring2 = ''
  2929. if visualsESPShowID then
  2930. espstring1 = espstring1.."~s~ | ~w~ID: ~s~" .. GetPlayerServerId(plist[i])
  2931. end
  2932. if visualsESPShowName then
  2933. espstring1 = espstring1.."~s~ | ~w~Name: ~s~" .. GetPlayerName(plist[i])
  2934. end
  2935. if visualsESPShowDistance then
  2936. espstring1 = espstring1.."~s~ | ~w~Distance: ~s~" .. math.floor(distance)..'~s~ |'
  2937. end
  2938. if visualsESPShowWeapon then
  2939. espstring2 = espstring2.."~s~ | ~w~Weapon: ~s~" .. wepname
  2940. end
  2941. if visualsESPShowVehicle then
  2942. espstring2 = espstring2.."~s~ | ~w~Vehicle: ~s~" .. vehname
  2943. end
  2944. DrawTxt(espstring1, x - 0.055, y - 0.250, 0.0, 0.25, MainColor)
  2945. DrawTxt(espstring2, x - 0.055, y - 0.225, 0.0, 0.25, MainColor)
  2946.  
  2947. if visualsESPShowLine then
  2948. local x1, y1, z1 = table.unpack(GetEntityCoords(PlayerPedId(-1)))
  2949. local x2, y2, z2 = table.unpack(GetEntityCoords(GetPlayerPed(i)))
  2950. DrawLine(x1, y1, z1, x2, y2, z2, MainColor.r, MainColor.g, MainColor.b, 255)
  2951. end
  2952. end
  2953. end
  2954. Citizen.Wait(visualsESPRefreshRate)
  2955. end
  2956. end)
  2957.  
  2958. end
  2959.  
  2960. local testicleTrainHasLoaded = true
  2961. local testicleTrain = nil
  2962. local testicleTrainSpeed = 5.0
  2963. NertigelFunc.spawnRandomTrain = function()
  2964. if testicleTrain then
  2965. DeleteMissionTrain(testicleTrain)
  2966. trainSpeed = 5.0
  2967. print("Deleted train")
  2968. testicleTrain = nil
  2969. testicleTrainHasLoaded = false
  2970. else
  2971. local cablecar = GetHashKey("cablecar")
  2972. local metrotrain = GetHashKey("metrotrain")
  2973. local freight = GetHashKey("freight")
  2974. local freightcar = GetHashKey("freightcar")
  2975. local freightgrain = GetHashKey("freightgrain")
  2976. local freightcont1 = GetHashKey("freightcont1")
  2977. local freightcont2 = GetHashKey("freightcont2")
  2978. local freighttrailer = GetHashKey("freighttrailer")
  2979.  
  2980. RequestModel(cablecar)
  2981. RequestModel(metrotrain)
  2982. RequestModel(freight)
  2983. RequestModel(freightcar)
  2984. RequestModel(freightgrain)
  2985. RequestModel(freightcont1)
  2986. RequestModel(freightcont2)
  2987. RequestModel(freighttrailer)
  2988.  
  2989. while (not HasModelLoaded(cablecar)) do Wait(0) end
  2990. while (not HasModelLoaded(metrotrain)) do Wait(0) end
  2991. while (not HasModelLoaded(freight)) do Wait(0) end
  2992. while (not HasModelLoaded(freightcar)) do Wait(0) end
  2993. while (not HasModelLoaded(freightgrain)) do Wait(0) end
  2994. while (not HasModelLoaded(freightcont1)) do Wait(0) end
  2995. while (not HasModelLoaded(freightcont2)) do Wait(0) end
  2996. while (not HasModelLoaded(freighttrailer)) do Wait(0) end
  2997.  
  2998. local c = GetEntityCoords(PlayerPedId(), false)
  2999. testicleTrain = CreateMissionTrain(24, c.x, c.y, c.z, 1)
  3000. SetVehicleUndriveable(testicleTrain, false)
  3001. TaskWarpPedIntoVehicle(PlayerPedId(), testicleTrain, -1)
  3002. print("Spawned train")
  3003. testicleTrainHasLoaded = true
  3004. end
  3005.  
  3006. if testicleTrainHasLoaded then
  3007. if (GetVehiclePedIsIn(PlayerPedId(), false) == testicleTrain) then
  3008. local message = "Train speed: ~b~" .. tostring(trainSpeed)
  3009. print(message)
  3010.  
  3011. if (GetGameTimer() >= timer) then
  3012. SetTrainSpeed(testicleTrain, trainSpeed)
  3013. timer = GetGameTimer() + 10
  3014. end
  3015.  
  3016. if (IsDisabledControlJustReleased(1, Keys["UP"])) then
  3017. trainSpeed = trainSpeed + 0.1
  3018. print('trainSpeed'..trainSpeed)
  3019. elseif (IsDisabledControlJustReleased(1, Keys["DOWN"])) then
  3020. if (trainSpeed - 0.1 >= 0.0) then
  3021. trainSpeed = trainSpeed - 0.1
  3022. end
  3023. print('trainSpeed'..trainSpeed)
  3024. end
  3025. end
  3026. end
  3027. end
  3028.  
  3029. --[[allPlayersOptions]]
  3030. NertigelFunc.aPO = {}
  3031.  
  3032. NertigelFunc.aPO.template = function()
  3033. local plist = GetActivePlayers()
  3034. for i = 0, #plist do
  3035. if not allPlayersIncludeSelf and i == PlayerId() then i = i + 1 end
  3036. --[[do shit here]]
  3037. end
  3038. end
  3039.  
  3040. NertigelFunc.aPO.freezeAll = function()
  3041. local plist = GetActivePlayers()
  3042. for i = 0, #plist do
  3043. if not allPlayersIncludeSelf and i == PlayerId() then i = i + 1 end
  3044.  
  3045. ClearPedTasksImmediately(GetPlayerPed(i))
  3046. ClearPedSecondaryTask(GetPlayerPed(i))
  3047. end
  3048. end
  3049.  
  3050. NertigelFunc.aPO.disableDrivingCars = function()
  3051. local plist = GetActivePlayers()
  3052. for i = 0, #plist do
  3053. if not allPlayersIncludeSelf and i == PlayerId() then i = i + 1 end
  3054.  
  3055. if IsPedInAnyVehicle(GetPlayerPed(i), true) then
  3056. ClearPedTasksImmediately(GetPlayerPed(i))
  3057. end
  3058. end
  3059. end
  3060.  
  3061. NertigelFunc.aPO.noisyVehicles = function()
  3062. for k in EnumerateVehicles() do
  3063. SetVehicleAlarmTimeLeft(k, 60)
  3064. end
  3065. end
  3066.  
  3067. NertigelFunc.aPO.explodeCars = function()
  3068. for vehicle in EnumerateVehicles() do
  3069. if (vehicle ~= GetVehiclePedIsIn(GetPlayerPed(-1), false)) and (not GotTrailer or (GotTrailer and vehicle ~= TrailerHandle)) then
  3070. RequestControlOnce(vehicle)
  3071. NetworkExplodeVehicle(vehicle, true, true, false)
  3072. end
  3073. end
  3074. end
  3075.  
  3076. NertigelFunc.aPO.rapeVehicles = function()
  3077. for enumeratedVs in EnumerateVehicles() do
  3078. if not IsPedAPlayer(GetPedInVehicleSeat(enumeratedVs, -1)) then
  3079. RequestControlOnce(enumeratedVs)
  3080. SetEntityAsMissionEntity(enumeratedVs, false, false)
  3081. StartVehicleAlarm(enumeratedVs)
  3082. DetachVehicleWindscreen(enumeratedVs)
  3083. SmashVehicleWindow(enumeratedVs, 0)
  3084. SmashVehicleWindow(enumeratedVs, 1)
  3085. SmashVehicleWindow(enumeratedVs, 2)
  3086. SmashVehicleWindow(enumeratedVs, 3)
  3087. SetVehicleTyreBurst(enumeratedVs, 0, true, 1000.0)
  3088. SetVehicleTyreBurst(enumeratedVs, 1, true, 1000.0)
  3089. SetVehicleTyreBurst(enumeratedVs, 2, true, 1000.0)
  3090. SetVehicleTyreBurst(enumeratedVs, 3, true, 1000.0)
  3091. SetVehicleTyreBurst(enumeratedVs, 4, true, 1000.0)
  3092. SetVehicleTyreBurst(enumeratedVs, 5, true, 1000.0)
  3093. SetVehicleTyreBurst(enumeratedVs, 4, true, 1000.0)
  3094. SetVehicleTyreBurst(enumeratedVs, 7, true, 1000.0)
  3095. SetVehicleDoorBroken(enumeratedVs, 0, true)
  3096. SetVehicleDoorBroken(enumeratedVs, 1, true)
  3097. SetVehicleDoorBroken(enumeratedVs, 2, true)
  3098. SetVehicleDoorBroken(enumeratedVs, 3, true)
  3099. SetVehicleDoorBroken(enumeratedVs, 4, true)
  3100. SetVehicleDoorBroken(enumeratedVs, 5, true)
  3101. SetVehicleDoorBroken(enumeratedVs, 6, true)
  3102. SetVehicleDoorBroken(enumeratedVs, 7, true)
  3103. SetVehicleLights(enumeratedVs, 1)
  3104. SetVehicleLightsMode(enumeratedVs, 1)
  3105. --[[SetVehicleNumberPlateTextIndex(enumeratedVs, 5)
  3106. SetVehicleNumberPlateText(enumeratedVs, 'dopamine')]]
  3107. SetVehicleDirtLevel(enumeratedVs, 10.0)
  3108. SetVehicleModColor_1(enumeratedVs, 1)
  3109. SetVehicleModColor_2(enumeratedVs, 1)
  3110. SetVehicleCustomPrimaryColour(enumeratedVs, 255, 51, 255)
  3111. SetVehicleCustomSecondaryColour(enumeratedVs, 255, 51, 255)
  3112. SetVehicleBurnout(enumeratedVs, true)
  3113. ForceVehicleEngineAudio(enumeratedVs, 'faggio')
  3114. SetVehicleLightsMode(enumeratedVs, 1)
  3115. SetVehicleHandlingFloat(enumeratedVs, "CHandlingData", "fDriveBiasFront", 0.9)
  3116. end
  3117. end
  3118. end
  3119.  
  3120. NertigelFunc.aPO.vehiclesIntoRamps = function()
  3121. for vehicle in EnumerateVehicles() do
  3122. local ramp = CreateObject(-145066854, 0, 0, 0, true, true, true)
  3123. NetworkRequestControlOfEntity(vehicle)
  3124. RequestControlOnce(vehicle)
  3125. RequestControlOnce(ramp)
  3126. if DoesEntityExist(vehicle) then
  3127. AttachEntityToEntity(ramp, vehicle, 0, 0, -1.0, 0.0, 0.0, 0, true, true, false, true, 1, true)
  3128. end
  3129. NetworkRequestControlOfEntity(ramp)
  3130. SetEntityAsMissionEntity(ramp, true, true)
  3131. end
  3132. end
  3133.  
  3134. NertigelFunc.aPO.beachFire = function()
  3135. local plist = GetActivePlayers()
  3136. for i = 0, #plist do
  3137. if not allPlayersIncludeSelf and i == PlayerId() then i = i + 1 end
  3138. NertigelFunc.sPO.beachFire(GetPlayerPed(plist[i]))
  3139. end
  3140. end
  3141.  
  3142. NertigelFunc.aPO.gasPump = function()
  3143. local plist = GetActivePlayers()
  3144. for i = 0, #plist do
  3145. if not allPlayersIncludeSelf and i == PlayerId() then i = i + 1 end
  3146. NertigelFunc.sPO.gasPump(GetPlayerPed(plist[i]))
  3147. end
  3148. end
  3149.  
  3150. NertigelFunc.aPO.clonePeds = function()
  3151. local plist = GetActivePlayers()
  3152. for i = 0, #plist do
  3153. if not allPlayersIncludeSelf and i == PlayerId() then i = i + 1 end
  3154. local Handle = GetPlayerPedScriptIndex(GetPlayerPed(i))
  3155. --[[local Handle = GetPlayerPedScriptIndex(plist[i])]]
  3156. ClonePed(Handle, 1, 1, 1)
  3157. end
  3158. end
  3159.  
  3160. NertigelFunc.aPO.spawnTrollProp = function(prop)
  3161. local plist = GetActivePlayers()
  3162. for i = 0, #plist do
  3163. NertigelFunc.sPO.spawnTrollProp(GetPlayerPed(i), prop)
  3164. end
  3165. end
  3166.  
  3167. --[[selectedPlayerOptions]]
  3168. NertigelFunc.sPO = {}
  3169.  
  3170. NertigelFunc.sPO.beachFire = function(target)
  3171. local beach_fire = GetHashKey("prop_beach_fire")
  3172. RequestModel(beach_fire)
  3173. Citizen.CreateThread(function()
  3174. local timeout = 0
  3175. while not HasModelLoaded(beach_fire) do
  3176. timeout = timeout + 100
  3177. Citizen.Wait(100)
  3178. if timeout > 5000 then
  3179. Dopamine.PushNotification('Could not load model!', 5000)
  3180. break
  3181. end
  3182. end
  3183. local object = CreateObject(beach_fire, 0, 0, 0, true, true, false)
  3184. AttachEntityToEntity(object, target, GetPedBoneIndex(target, SKEL_Spine_Root), 0.0, 0.0, 0.0, 0.0, 90.0, 0, false, false, false, false, 2, true)
  3185. SetModelAsNoLongerNeeded(beach_fire)
  3186. end)
  3187. end
  3188.  
  3189. NertigelFunc.sPO.gasPump = function(target)
  3190. local gasPumpModels = {
  3191. -2007231801, 1339433404,
  3192. 1694452750, 1933174915,
  3193. -462817101, -469694731,
  3194. -164877493
  3195. }
  3196. local playerPos = GetEntityCoords(target, false)
  3197. for i = 1, #gasPumpModels do
  3198. obj = CreateObject(gasPumpModels[i], playerPos.x, playerPos.y, playerPos.z, true, true, true)
  3199. RequestControlOnce(obj)
  3200. if DoesEntityExist(obj) then
  3201. AttachEntityToEntity(obj, target, GetPedBoneIndex(target, SKEL_Spine_Root), 0.0, 0.0, 0.0, 0.0, 90.0, 0, false, false, false, false, 2, true)
  3202. end
  3203. end
  3204. end
  3205.  
  3206. NertigelFunc.sPO.spectatePlayer = function(target)
  3207. isSpectatingTarget = not isSpectatingTarget
  3208. local targetPed = GetPlayerPed(target)
  3209. if isSpectatingTarget then
  3210. local targetx, targety, targetz = table.unpack(GetEntityCoords(targetPed, false))
  3211. RequestCollisionAtCoord(targetx, targety, targetz)
  3212. NetworkSetInSpectatorMode(true, targetPed)
  3213. RequestCollisionAtCoord(GetEntityCoords(targetPed))
  3214. NetworkSetInSpectatorMode(true, targetPed)
  3215. NertigelFunc.Game.Subtitle("Started spectating ~b~" .. GetPlayerName(target))
  3216. else
  3217. local targetx, targety, targetz = table.unpack(GetEntityCoords(targetPed, false))
  3218. RequestCollisionAtCoord(targetx, targety, targetz)
  3219. NetworkSetInSpectatorMode(false, targetPed)
  3220. NertigelFunc.Game.Subtitle("Stopped spectating ~b~" .. GetPlayerName(target))
  3221. end
  3222. end
  3223.  
  3224. NertigelFunc.sPO.teleportToPlayer = function(target)
  3225. SetEntityCoords(PlayerPedId(), GetEntityCoords(GetPlayerPed(target)))
  3226. end
  3227.  
  3228. function SpawnVehicleToPlayer(modelName, playerIdx)
  3229. if modelName and IsModelValid(modelName) and IsModelAVehicle(modelName) then
  3230. RequestModel(modelName)
  3231. while not HasModelLoaded(modelName) do Citizen.Wait(0) end
  3232. local model = (type(modelName) == 'number' and modelName or GetHashKey(modelName))
  3233. local playerPed = GetPlayerPed(playerIdx)
  3234. local SpawnedVehicle = CreateVehicle(model, GetEntityCoords(playerPed), GetEntityHeading(playerPed), true, true)
  3235. local SpawnedVehicleIdx = NetworkGetNetworkIdFromEntity(SpawnedVehicle)
  3236. SetNetworkIdCanMigrate(SpawnedVehicleIdx, true)
  3237. SetEntityAsMissionEntity(SpawnedVehicle, true, false)
  3238. SetVehicleHasBeenOwnedByPlayer(SpawnedVehicle, true)
  3239. SetVehicleNeedsToBeHotwired(SpawnedVehicle, false)
  3240. SetModelAsNoLongerNeeded(model)
  3241.  
  3242. SetPedIntoVehicle(playerPed, SpawnedVehicle, -1)
  3243. SetVehicleEngineOn(SpawnedVehicle, true, false, false)
  3244. SetVehRadioStation(SpawnedVehicle, 'OFF')
  3245. return SpawnedVehicle
  3246. else
  3247. FiveM.Notify("Invalid Vehicle Model!", NotificationType.Error)
  3248. return nil
  3249. end
  3250. end
  3251.  
  3252. NertigelFunc.sPO.cloneVehicle = function(target)
  3253. local selectedPlayerVehicle = nil
  3254. if IsPedInAnyVehicle(GetPlayerPed(target)) then selectedPlayerVehicle = GetVehiclePedIsIn(GetPlayerPed(target), false)
  3255. else selectedPlayerVehicle = GetVehiclePedIsIn(GetPlayerPed(target), true) end
  3256.  
  3257. if DoesEntityExist(selectedPlayerVehicle) then
  3258. local vehicleModel = GetEntityModel(selectedPlayerVehicle)
  3259. local spawnedVehicle = SpawnVehicleToPlayer(vehicleModel, PlayerId())
  3260.  
  3261. local vehicleProperties = NertigelFunc.Game.GetVehicleProperties(selectedPlayerVehicle)
  3262. vehicleProperties.plate = nil
  3263.  
  3264. NertigelFunc.Game.SetVehicleProperties(spawnedVehicle, vehicleProperties)
  3265.  
  3266. SetVehicleEngineOn(spawnedVehicle, true, false, false)
  3267. SetVehRadioStation(spawnedVehicle, 'OFF')
  3268. end
  3269. end
  3270.  
  3271. NertigelFunc.sPO.clonePedOutfit = function(me, ped)
  3272.  
  3273. hat = GetPedPropIndex(ped, 0)
  3274. hat_texture = GetPedPropTextureIndex(ped, 0)
  3275.  
  3276. glasses = GetPedPropIndex(ped, 1)
  3277. glasses_texture = GetPedPropTextureIndex(ped, 1)
  3278.  
  3279. ear = GetPedPropIndex(ped, 2)
  3280. ear_texture = GetPedPropTextureIndex(ped, 2)
  3281.  
  3282. watch = GetPedPropIndex(ped, 6)
  3283. watch_texture = GetPedPropTextureIndex(ped, 6)
  3284.  
  3285. wrist = GetPedPropIndex(ped, 7)
  3286. wrist_texture = GetPedPropTextureIndex(ped, 7)
  3287.  
  3288. head_drawable = GetPedDrawableVariation(ped, 0)
  3289. head_palette = GetPedPaletteVariation(ped, 0)
  3290. head_texture = GetPedTextureVariation(ped, 0)
  3291.  
  3292. beard_drawable = GetPedDrawableVariation(ped, 1)
  3293. beard_palette = GetPedPaletteVariation(ped, 1)
  3294. beard_texture = GetPedTextureVariation(ped, 1)
  3295.  
  3296. hair_drawable = GetPedDrawableVariation(ped, 2)
  3297. hair_palette = GetPedPaletteVariation(ped, 2)
  3298. hair_texture = GetPedTextureVariation(ped, 2)
  3299.  
  3300. torso_drawable = GetPedDrawableVariation(ped, 3)
  3301. torso_palette = GetPedPaletteVariation(ped, 3)
  3302. torso_texture = GetPedTextureVariation(ped, 3)
  3303.  
  3304. legs_drawable = GetPedDrawableVariation(ped, 4)
  3305. legs_palette = GetPedPaletteVariation(ped, 4)
  3306. legs_texture = GetPedTextureVariation(ped, 4)
  3307.  
  3308. hands_drawable = GetPedDrawableVariation(ped, 5)
  3309. hands_palette = GetPedPaletteVariation(ped, 5)
  3310. hands_texture = GetPedTextureVariation(ped, 5)
  3311.  
  3312. foot_drawable = GetPedDrawableVariation(ped, 6)
  3313. foot_palette = GetPedPaletteVariation(ped, 6)
  3314. foot_texture = GetPedTextureVariation(ped, 6)
  3315.  
  3316. acc1_drawable = GetPedDrawableVariation(ped, 7)
  3317. acc1_palette = GetPedPaletteVariation(ped, 7)
  3318. acc1_texture = GetPedTextureVariation(ped, 7)
  3319.  
  3320. acc2_drawable = GetPedDrawableVariation(ped, 8)
  3321. acc2_palette = GetPedPaletteVariation(ped, 8)
  3322. acc2_texture = GetPedTextureVariation(ped, 8)
  3323.  
  3324. acc3_drawable = GetPedDrawableVariation(ped, 9)
  3325. acc3_palette = GetPedPaletteVariation(ped, 9)
  3326. acc3_texture = GetPedTextureVariation(ped, 9)
  3327.  
  3328. mask_drawable = GetPedDrawableVariation(ped, 10)
  3329. mask_palette = GetPedPaletteVariation(ped, 10)
  3330. mask_texture = GetPedTextureVariation(ped, 10)
  3331.  
  3332. aux_drawable = GetPedDrawableVariation(ped, 11)
  3333. aux_palette = GetPedPaletteVariation(ped, 11)
  3334. aux_texture = GetPedTextureVariation(ped, 11)
  3335.  
  3336. SetPedPropIndex(me, 0, hat, hat_texture, 1)
  3337. SetPedPropIndex(me, 1, glasses, glasses_texture, 1)
  3338. SetPedPropIndex(me, 2, ear, ear_texture, 1)
  3339. SetPedPropIndex(me, 6, watch, watch_texture, 1)
  3340. SetPedPropIndex(me, 7, wrist, wrist_texture, 1)
  3341.  
  3342. SetPedComponentVariation(me, 0, head_drawable, head_texture, head_palette)
  3343. SetPedComponentVariation(me, 1, beard_drawable, beard_texture, beard_palette)
  3344. SetPedComponentVariation(me, 2, hair_drawable, hair_texture, hair_palette)
  3345. SetPedComponentVariation(me, 3, torso_drawable, torso_texture, torso_palette)
  3346. SetPedComponentVariation(me, 4, legs_drawable, legs_texture, legs_palette)
  3347. SetPedComponentVariation(me, 5, hands_drawable, hands_texture, hands_palette)
  3348. SetPedComponentVariation(me, 6, foot_drawable, foot_texture, foot_palette)
  3349. SetPedComponentVariation(me, 7, acc1_drawable, acc1_texture, acc1_palette)
  3350. SetPedComponentVariation(me, 8, acc2_drawable, acc2_texture, acc2_palette)
  3351. SetPedComponentVariation(me, 9, acc3_drawable, acc3_texture, acc3_palette)
  3352. SetPedComponentVariation(me, 10, mask_drawable, mask_texture, mask_palette)
  3353. SetPedComponentVariation(me, 11, aux_drawable, aux_texture, aux_palette)
  3354. end
  3355.  
  3356. NertigelFunc.sPO.spawnEnemies = function(target, model)
  3357. local wep = "WEAPON_ASSAULTRIFLE"
  3358. for i = 0, 5 do
  3359. local coords = GetEntityCoords(target)
  3360. RequestModel(GetHashKey(model))
  3361. Citizen.Wait(50)
  3362. if HasModelLoaded(GetHashKey(model)) then
  3363. local ped = CreatePed(21, GetHashKey(model),coords.x + i, coords.y - i, coords.z, 0, true, true) and CreatePed(21, GetHashKey(model),coords.x - i, coords.y + i, coords.z, 0, true, true)
  3364. NetworkRegisterEntityAsNetworked(ped)
  3365. Citizen.CreateThread(function()
  3366. if DoesEntityExist(ped) and not IsEntityDead(target) then
  3367. local netped = PedToNet(ped)
  3368. NetworkSetNetworkIdDynamic(netped, false)
  3369. SetNetworkIdCanMigrate(netped, true)
  3370. SetNetworkIdExistsOnAllMachines(netped, true)
  3371. Citizen.Wait(100)
  3372. NetToPed(netped)
  3373. GiveWeaponToPed(ped, GetHashKey(wep), 9999, 1, 1)
  3374. SetEntityInvincible(ped, true)
  3375. SetPedCanSwitchWeapon(ped, true)
  3376. TaskCombatPed(ped, target, 0,16)
  3377. elseif IsEntityDead(target) then
  3378. TaskCombatHatedTargetsInArea(ped, coords.x,coords.y, coords.z, 500)
  3379. else
  3380. Citizen.Wait(0)
  3381. end
  3382. end)
  3383. end
  3384. end
  3385. end
  3386.  
  3387.  
  3388.  
  3389. NertigelFunc.sPO.spawnAnimals = function(target, model)
  3390. for i = 0, 5 do
  3391. local coords = GetEntityCoords(target)
  3392. RequestModel(GetHashKey(model))
  3393. Citizen.Wait(50)
  3394. if HasModelLoaded(GetHashKey(model)) then
  3395. local ped = CreatePed(21, GetHashKey(model),coords.x + i, coords.y - i, coords.z, 0, true, true)
  3396. NetworkRegisterEntityAsNetworked(ped)
  3397. Citizen.CreateThread(function()
  3398. local netped = PedToNet(ped)
  3399. NetworkSetNetworkIdDynamic(netped, false)
  3400. SetNetworkIdCanMigrate(netped, true)
  3401. SetNetworkIdExistsOnAllMachines(netped, true)
  3402. Citizen.Wait(100)
  3403. NetToPed(netped)
  3404. SetEntityInvincible(ped, true)
  3405. SetPedRelationshipGroupHash(ped, GetHashKey('PLAYER'))
  3406. SetPedRelationshipGroupHash(target, GetHashKey('WILD_ANIMAL'))
  3407. SetRelationshipBetweenGroups(5, GetPedRelationshipGroupHash(ped), GetPedRelationshipGroupHash(target))
  3408. SetRelationshipBetweenGroups(5, GetPedRelationshipGroupHash(target), GetPedRelationshipGroupHash(ped))
  3409. print('Hate level: '..GetRelationshipBetweenPeds(ped, target))
  3410. local dead = IsEntityDead(target)
  3411. print('dead: '..dead)
  3412. TaskCombatPed(ped, target, 0,16)
  3413. end)
  3414. end
  3415. end
  3416. end
  3417.  
  3418. NertigelFunc.sPO.spawnHeliEnemies = function(target)
  3419. local x, y, z = table.unpack(GetEntityCoords(target))
  3420. local flacko_veri_cool = 'buzzard'
  3421. local nertigel_flighter = 'ig_claypain'
  3422. RequestModelSync(flacko_veri_cool)
  3423. RequestModelSync(nertigel_flighter)
  3424. RequestModel(flacko_veri_cool)
  3425. RequestModel(nertigel_flighter)
  3426. Citizen.CreateThread(function()
  3427. local timeout = 0
  3428. while not HasModelLoaded(nertigel_flighter) do
  3429. timeout = timeout + 100
  3430. Citizen.Wait(100)
  3431. if timeout > 5000 then
  3432. Dopamine.PushNotification('Could not load model!', 5000)
  3433. break
  3434. end
  3435. end
  3436. while not HasModelLoaded(flacko_veri_cool) do
  3437. timeout = timeout + 100
  3438. Citizen.Wait(100)
  3439. if timeout > 5000 then
  3440. Dopamine.PushNotification('Could not load model!', 5000)
  3441. break
  3442. end
  3443. end
  3444. local flacko_dream_heli = CreateVehicle(GetHashKey(flacko_veri_cool),x,y,z + 100, GetEntityHeading(target), true, true)
  3445. local newDriver = CreatePedInsideVehicle(flacko_dream_heli, 4, nertigel_flighter, -1, true, false)
  3446. SetHeliBladesFullSpeed(flacko_dream_heli)
  3447.  
  3448. SetCurrentPedVehicleWeapon(newDriver, GetHashKey("VEHICLE_WEAPON_PLANE_ROCKET"))
  3449. SetVehicleShootAtTarget(newDriver, target, x, y, z)
  3450.  
  3451. local netped = PedToNet(newDriver)
  3452. NetworkSetNetworkIdDynamic(netped, false)
  3453. SetNetworkIdCanMigrate(netped, true)
  3454. SetNetworkIdExistsOnAllMachines(netped, true)
  3455. Citizen.Wait(30)
  3456. NetToPed(netped)
  3457. SetEntityInvincible(netped, true)
  3458.  
  3459. SetPedCanSwitchWeapon(newDriver, true)
  3460. TaskCombatPed(newDriver, target, 0, 16)
  3461.  
  3462. local model = 'a_m_y_skater_01'
  3463. local wep = "WEAPON_ASSAULTRIFLE"
  3464. for i = 1, 3 do
  3465. local coords = GetEntityCoords(target)
  3466. RequestModel(GetHashKey(model))
  3467. Citizen.Wait(50)
  3468. if HasModelLoaded(GetHashKey(model)) then
  3469. local ped = CreatePedInsideVehicle(flacko_dream_heli, 4, nertigel_flighter, i, true, false)
  3470. NetworkRegisterEntityAsNetworked(ped)
  3471. Citizen.CreateThread(function()
  3472. if DoesEntityExist(ped) and not IsEntityDead(target) then
  3473. local netped = PedToNet(ped)
  3474. NetworkSetNetworkIdDynamic(netped, false)
  3475. SetNetworkIdCanMigrate(netped, true)
  3476. SetNetworkIdExistsOnAllMachines(netped, true)
  3477. Citizen.Wait(100)
  3478. NetToPed(netped)
  3479. GiveWeaponToPed(ped, GetHashKey(wep), 9999, 1, 1)
  3480. SetEntityInvincible(ped, true)
  3481. SetPedCanSwitchWeapon(ped, true)
  3482. TaskCombatPed(ped, target, 0,16)
  3483. else
  3484. Citizen.Wait(0)
  3485. end
  3486. end)
  3487. end
  3488. end
  3489. end)
  3490. end
  3491.  
  3492. NertigelFunc.sPO.spawnTankEnemy = function(target)
  3493. local theTank = 'rhino'
  3494. RequestModel(theTank)
  3495. while not HasModelLoaded(theTank) do
  3496. Citizen.Wait(50)
  3497. end
  3498. local lVehicle = GetVehiclePedIsIn(target, false)
  3499. local x,y,z = table.unpack(GetEntityCoords(target))
  3500. local tank = CreateVehicle(GetHashKey(theTank), x + 20,y + 20,z + 5,GetEntityCoords(target),true,false)
  3501. RequestControlOnce(tank)
  3502. local pPed = 's_m_y_swat_01'
  3503. RequestModel(pPed)
  3504. while not HasModelLoaded(pPed) do
  3505. RequestModel(pPed)
  3506. Citizen.Wait(50)
  3507. end
  3508. local NerdTigel = CreatePedInsideVehicle(tank, 4, GetEntityModel(PlayerPedId()), -1, true, false)
  3509. RequestControlOnce(NerdTigel)
  3510. SetDriverAbility(NerdTigel, 10.0)
  3511. SetDriverAggressiveness(NerdTigel, 10.0)
  3512. TaskCombatPed(NerdTigel, target, 0, 16)
  3513. end
  3514.  
  3515. NertigelFunc.sPO.giveAllWeapons = function(target)
  3516. for i = 1, #weaponsArrayeet do
  3517. GiveWeaponToPed(target, GetHashKey(weaponsArrayeet[i]), 250, false, false)
  3518. end
  3519. end
  3520.  
  3521. NertigelFunc.sPO.spawnPickupsOn = function(target)
  3522. CreatePickup(GetHashKey("PICKUP_WEAPON_COMPACTLAUNCHER"), GetEntityCoords(target))
  3523. CreatePickup(GetHashKey("PICKUP_WEAPON_RAYMINIGUN"), GetEntityCoords(target))
  3524. CreatePickup(GetHashKey("PICKUP_WEAPON_MINIGUN"), GetEntityCoords(target))
  3525. CreatePickup(GetHashKey("PICKUP_WEAPON_RAYPISTOL"), GetEntityCoords(target))
  3526. end
  3527.  
  3528. NertigelFunc.sPO.ramVehicle = function(target, m_vehicle)
  3529. local model = GetHashKey(m_vehicle)
  3530. RequestModel(model)
  3531. while not HasModelLoaded(model) do
  3532. Citizen.Wait(0)
  3533. end
  3534. local offset = GetOffsetFromEntityInWorldCoords(target, 0, -10.0, 0)
  3535. if HasModelLoaded(model) then
  3536. local veh = CreateVehicle(model, offset.x, offset.y, offset.z, GetEntityHeading(target), true, true)
  3537. SetVehicleForwardSpeed(veh, 120.0)
  3538. end
  3539. end
  3540.  
  3541. NertigelFunc.sPO.spawnTrollProp = function(target, prop)
  3542. local ec = GetHashKey(prop)
  3543. local ed = CreateObject(ec, 0, 0, 0, true, true, true)
  3544. if prop == 'prop_cs_dildo_01' then
  3545. AttachEntityToEntity(ed, target, GetPedBoneIndex(target, 24818), -0.425, 0.185, 0.0, 270.0, 0.0, -25.0, true, true, false, true, 1, true)
  3546. else
  3547. AttachEntityToEntity(ed, target, GetPedBoneIndex(target, 57005), 0.4, 0.0, 0.0, 0.0, 270.0, 60.0, true, true, false, true, 1, true)
  3548. end
  3549. end
  3550.  
  3551. --[[
  3552. Some nice exploits yes?
  3553. ]]
  3554.  
  3555. NertigelFunc.exploits = {}
  3556.  
  3557. NertigelFunc.exploits.gcphoneTwitter = function()
  3558. print('deleted due to u being a nigger')
  3559. end
  3560.  
  3561. NertigelFunc.exploits.esx_license = function()
  3562. print('deleted due to u being a nigger')
  3563. end
  3564.  
  3565. NertigelFunc.exploits.esx_kashacters = function()
  3566. print('deleted due to u being a nigger')
  3567. end
  3568.  
  3569. NertigelFunc.exploits.interactSound = function()
  3570. if NertigelFunc.doesResourceExist('interactSound') or
  3571. NertigelFunc.doesResourceExist('InteractSound') or
  3572. NertigelFunc.doesResourceExist('interact-sound') then
  3573. TriggerCustomEvent(true, 'InteractSound_SV:PlayOnAll', 'demo', 10.0)
  3574. TriggerCustomEvent(true, 'InteractSound_SV:PlayWithinDistance', 500.0, 'demo', 10.0)
  3575. else Dopamine.PushNotification("Resource was not found!", 5000) end
  3576. end
  3577.  
  3578. NertigelFunc.exploits.phoneSpam = function()
  3579. print('deleted due to u being a nigger')
  3580. end
  3581.  
  3582. --[[
  3583. Math functions here instead of using frameworks from servers.
  3584. ]]
  3585.  
  3586. NertigelFunc.Math = {}
  3587.  
  3588. NertigelFunc.Math.Round = function(value, numDecimalPlaces)
  3589. if numDecimalPlaces then
  3590. local power = 10^numDecimalPlaces
  3591. return math.floor((value * power) + 0.5) / (power)
  3592. else
  3593. return math.floor(value + 0.5)
  3594. end
  3595. end
  3596.  
  3597. NertigelFunc.Math.GroupDigits = function(value)
  3598. local left,num,right = string.match(value,'^([^%d]*%d)(%d*)(.-)$')
  3599.  
  3600. return left..(num:reverse():gsub('(%d%d%d)','%1' .. _U('locale_digit_grouping_symbol')):reverse())..right
  3601. end
  3602.  
  3603. NertigelFunc.Math.Trim = function(value)
  3604. if value then
  3605. return (string.gsub(value, "^%s*(.-)%s*$", "%1"))
  3606. else
  3607. return nil
  3608. end
  3609. end
  3610.  
  3611. --[[
  3612. Game functions(text, math, etc).
  3613. ]]
  3614.  
  3615. NertigelFunc.Game = {}
  3616.  
  3617. NertigelFunc.Game.Subtitle = function(message, duration, drawImmediately)
  3618. if duration == nil then
  3619. duration = 2500
  3620. end
  3621. if drawImmediately == nil then
  3622. drawImmediately = true
  3623. end
  3624. ClearPrints()
  3625. SetTextEntry_2("STRING")
  3626. for i = 1, message:len(), 99 do
  3627. AddTextComponentString(string.sub(message, i, i + 99))
  3628. end
  3629. DrawSubtitleTimed(duration, drawImmediately)
  3630. end
  3631.  
  3632. NertigelFunc.Game.GetVehicles = function()
  3633. local vehicles = {}
  3634.  
  3635. for vehicle in EnumerateVehicles() do
  3636. table.insert(vehicles, vehicle)
  3637. end
  3638.  
  3639. return vehicles
  3640. end
  3641.  
  3642. NertigelFunc.Game.GetVehiclesInArea = function(coords, area)
  3643. local vehicles = NertigelFunc.Game.GetVehicles()
  3644. local vehiclesInArea = {}
  3645.  
  3646. for i = 1, #vehicles, 1 do
  3647. local vehicleCoords = GetEntityCoords(vehicles[i])
  3648. local distance = GetDistanceBetweenCoords(vehicleCoords, coords.x, coords.y, coords.z, true)
  3649.  
  3650. if distance <= area then
  3651. table.insert(vehiclesInArea, vehicles[i])
  3652. end
  3653. end
  3654.  
  3655. return vehiclesInArea
  3656. end
  3657.  
  3658. NertigelFunc.Game.KeyboardInput = function(TextEntry, ExampleText, MaxStringLength)
  3659. AddTextEntry("FMMC_KEY_TIP1", TextEntry .. ":")
  3660. DisplayOnscreenKeyboard(1, "FMMC_KEY_TIP1", "", ExampleText, "", "", "", MaxStringLength)
  3661. blockinput = true
  3662.  
  3663. while UpdateOnscreenKeyboard() ~= 1 and UpdateOnscreenKeyboard() ~= 2 do
  3664. Citizen.Wait(0)
  3665. end
  3666.  
  3667. if UpdateOnscreenKeyboard() ~= 2 then
  3668. local result = GetOnscreenKeyboardResult()
  3669. Citizen.Wait(500)
  3670. blockinput = false
  3671. return result
  3672. else
  3673. Citizen.Wait(500)
  3674. blockinput = false
  3675. return nil
  3676. end
  3677. end
  3678.  
  3679. NertigelFunc.Game.driftSmoke = function(base, sub, car, dens, size)
  3680. all_part = {}
  3681.  
  3682. for i = 0,dens do
  3683. UseParticleFxAssetNextCall(base)
  3684. W1 = StartParticleFxLoopedOnEntityBone(sub, car, 0.05, 0, 0, 0, 0, 0, GetEntityBoneIndexByName(car, "wheel_lr"), size, 0, 0, 0)
  3685.  
  3686. UseParticleFxAssetNextCall(base)
  3687. W2 = StartParticleFxLoopedOnEntityBone(sub, car, 0.05, 0, 0, 0, 0, 0, GetEntityBoneIndexByName(car, "wheel_rr"), size, 0, 0, 0)
  3688.  
  3689. table.insert(all_part, 1, W1)
  3690. table.insert(all_part, 2, W2)
  3691. end
  3692.  
  3693. Citizen.Wait(1000)
  3694.  
  3695. for _,W1 in pairs(all_part) do
  3696. StopParticleFxLooped(W1, true)
  3697. end
  3698. end
  3699.  
  3700. NertigelFunc.Game.vehicleAngle = function(veh)
  3701. if not veh then return false end
  3702. local vx,vy,vz = table.unpack(GetEntityVelocity(veh))
  3703. local modV = math.sqrt(vx*vx + vy*vy)
  3704.  
  3705.  
  3706. local rx,ry,rz = table.unpack(GetEntityRotation(veh,0))
  3707. local sn,cs = -math.sin(math.rad(rz)), math.cos(math.rad(rz))
  3708.  
  3709. if GetEntitySpeed(veh)* 3.6 < 5 or GetVehicleCurrentGear(veh) == 0 then return 0,modV end --[[speed over 30 km/h]]
  3710.  
  3711. local cosX = (sn*vx + cs*vy)/modV
  3712. if cosX > 0.966 or cosX < 0 then return 0,modV end
  3713. return math.deg(math.acos(cosX))*0.5, modV
  3714. end
  3715.  
  3716. NertigelFunc.Game.GetVehicleProperties = function(vehicle)
  3717. if DoesEntityExist(vehicle) then
  3718. local colorPrimary, colorSecondary = GetVehicleColours(vehicle)
  3719. local pearlescentColor, wheelColor = GetVehicleExtraColours(vehicle)
  3720. local extras = {}
  3721.  
  3722. for id=0, 12 do
  3723. if DoesExtraExist(vehicle, id) then
  3724. local state = IsVehicleExtraTurnedOn(vehicle, id) == 1
  3725. extras[tostring(id)] = state
  3726. end
  3727. end
  3728.  
  3729. return {
  3730. model = GetEntityModel(vehicle),
  3731.  
  3732. plate = NertigelFunc.Math.Trim(GetVehicleNumberPlateText(vehicle)),
  3733. plateIndex = GetVehicleNumberPlateTextIndex(vehicle),
  3734.  
  3735. bodyHealth = NertigelFunc.Math.Round(GetVehicleBodyHealth(vehicle), 1),
  3736. engineHealth = NertigelFunc.Math.Round(GetVehicleEngineHealth(vehicle), 1),
  3737.  
  3738. fuelLevel = NertigelFunc.Math.Round(GetVehicleFuelLevel(vehicle), 1),
  3739. dirtLevel = NertigelFunc.Math.Round(GetVehicleDirtLevel(vehicle), 1),
  3740. color1 = colorPrimary,
  3741. color2 = colorSecondary,
  3742.  
  3743. pearlescentColor = pearlescentColor,
  3744. wheelColor = wheelColor,
  3745.  
  3746. wheels = GetVehicleWheelType(vehicle),
  3747. windowTint = GetVehicleWindowTint(vehicle),
  3748. xenonColor = GetVehicleXenonLightsColour(vehicle),
  3749.  
  3750. neonEnabled = {
  3751. IsVehicleNeonLightEnabled(vehicle, 0),
  3752. IsVehicleNeonLightEnabled(vehicle, 1),
  3753. IsVehicleNeonLightEnabled(vehicle, 2),
  3754. IsVehicleNeonLightEnabled(vehicle, 3)
  3755. },
  3756.  
  3757. neonColor = table.pack(GetVehicleNeonLightsColour(vehicle)),
  3758. extras = extras,
  3759. tyreSmokeColor = table.pack(GetVehicleTyreSmokeColor(vehicle)),
  3760.  
  3761. modSpoilers = GetVehicleMod(vehicle, 0),
  3762. modFrontBumper = GetVehicleMod(vehicle, 1),
  3763. modRearBumper = GetVehicleMod(vehicle, 2),
  3764. modSideSkirt = GetVehicleMod(vehicle, 3),
  3765. modExhaust = GetVehicleMod(vehicle, 4),
  3766. modFrame = GetVehicleMod(vehicle, 5),
  3767. modGrille = GetVehicleMod(vehicle, 6),
  3768. modHood = GetVehicleMod(vehicle, 7),
  3769. modFender = GetVehicleMod(vehicle, 8),
  3770. modRightFender = GetVehicleMod(vehicle, 9),
  3771. modRoof = GetVehicleMod(vehicle, 10),
  3772.  
  3773. modEngine = GetVehicleMod(vehicle, 11),
  3774. modBrakes = GetVehicleMod(vehicle, 12),
  3775. modTransmission = GetVehicleMod(vehicle, 13),
  3776. modHorns = GetVehicleMod(vehicle, 14),
  3777. modSuspension = GetVehicleMod(vehicle, 15),
  3778. modArmor = GetVehicleMod(vehicle, 16),
  3779.  
  3780. modTurbo = IsToggleModOn(vehicle, 18),
  3781. modSmokeEnabled = IsToggleModOn(vehicle, 20),
  3782. modXenon = IsToggleModOn(vehicle, 22),
  3783.  
  3784. modFrontWheels = GetVehicleMod(vehicle, 23),
  3785. modBackWheels = GetVehicleMod(vehicle, 24),
  3786.  
  3787. modPlateHolder = GetVehicleMod(vehicle, 25),
  3788. modVanityPlate = GetVehicleMod(vehicle, 26),
  3789. modTrimA = GetVehicleMod(vehicle, 27),
  3790. modOrnaments = GetVehicleMod(vehicle, 28),
  3791. modDashboard = GetVehicleMod(vehicle, 29),
  3792. modDial = GetVehicleMod(vehicle, 30),
  3793. modDoorSpeaker = GetVehicleMod(vehicle, 31),
  3794. modSeats = GetVehicleMod(vehicle, 32),
  3795. modSteeringWheel = GetVehicleMod(vehicle, 33),
  3796. modShifterLeavers = GetVehicleMod(vehicle, 34),
  3797. modAPlate = GetVehicleMod(vehicle, 35),
  3798. modSpeakers = GetVehicleMod(vehicle, 36),
  3799. modTrunk = GetVehicleMod(vehicle, 37),
  3800. modHydrolic = GetVehicleMod(vehicle, 38),
  3801. modEngineBlock = GetVehicleMod(vehicle, 39),
  3802. modAirFilter = GetVehicleMod(vehicle, 40),
  3803. modStruts = GetVehicleMod(vehicle, 41),
  3804. modArchCover = GetVehicleMod(vehicle, 42),
  3805. modAerials = GetVehicleMod(vehicle, 43),
  3806. modTrimB = GetVehicleMod(vehicle, 44),
  3807. modTank = GetVehicleMod(vehicle, 45),
  3808. modWindows = GetVehicleMod(vehicle, 46),
  3809. modLivery = GetVehicleLivery(vehicle)
  3810. }
  3811. else
  3812. return
  3813. end
  3814. end
  3815.  
  3816. NertigelFunc.Game.SetVehicleProperties = function(vehicle, props)
  3817. if DoesEntityExist(vehicle) then
  3818. local colorPrimary, colorSecondary = GetVehicleColours(vehicle)
  3819. local pearlescentColor, wheelColor = GetVehicleExtraColours(vehicle)
  3820. SetVehicleModKit(vehicle, 0)
  3821.  
  3822. if props.plate then SetVehicleNumberPlateText(vehicle, props.plate) end
  3823. if props.plateIndex then SetVehicleNumberPlateTextIndex(vehicle, props.plateIndex) end
  3824. if props.bodyHealth then SetVehicleBodyHealth(vehicle, props.bodyHealth + 0.0) end
  3825. if props.engineHealth then SetVehicleEngineHealth(vehicle, props.engineHealth + 0.0) end
  3826. if props.fuelLevel then SetVehicleFuelLevel(vehicle, props.fuelLevel + 0.0) end
  3827. if props.dirtLevel then SetVehicleDirtLevel(vehicle, props.dirtLevel + 0.0) end
  3828. if props.color1 then SetVehicleColours(vehicle, props.color1, colorSecondary) end
  3829. if props.color2 then SetVehicleColours(vehicle, props.color1 or colorPrimary, props.color2) end
  3830. if props.pearlescentColor then SetVehicleExtraColours(vehicle, props.pearlescentColor, wheelColor) end
  3831. if props.wheelColor then SetVehicleExtraColours(vehicle, props.pearlescentColor or pearlescentColor, props.wheelColor) end
  3832. if props.wheels then SetVehicleWheelType(vehicle, props.wheels) end
  3833. if props.windowTint then SetVehicleWindowTint(vehicle, props.windowTint) end
  3834.  
  3835. if props.neonEnabled then
  3836. SetVehicleNeonLightEnabled(vehicle, 0, props.neonEnabled[1])
  3837. SetVehicleNeonLightEnabled(vehicle, 1, props.neonEnabled[2])
  3838. SetVehicleNeonLightEnabled(vehicle, 2, props.neonEnabled[3])
  3839. SetVehicleNeonLightEnabled(vehicle, 3, props.neonEnabled[4])
  3840. end
  3841.  
  3842. if props.extras then
  3843. for id,enabled in pairs(props.extras) do
  3844. if enabled then
  3845. SetVehicleExtra(vehicle, tonumber(id), 0)
  3846. else
  3847. SetVehicleExtra(vehicle, tonumber(id), 1)
  3848. end
  3849. end
  3850. end
  3851.  
  3852. if props.neonColor then SetVehicleNeonLightsColour(vehicle, props.neonColor[1], props.neonColor[2], props.neonColor[3]) end
  3853. if props.xenonColor then SetVehicleXenonLightsColour(vehicle, props.xenonColor) end
  3854. if props.modSmokeEnabled then ToggleVehicleMod(vehicle, 20, true) end
  3855. if props.tyreSmokeColor then SetVehicleTyreSmokeColor(vehicle, props.tyreSmokeColor[1], props.tyreSmokeColor[2], props.tyreSmokeColor[3]) end
  3856. if props.modSpoilers then SetVehicleMod(vehicle, 0, props.modSpoilers, false) end
  3857. if props.modFrontBumper then SetVehicleMod(vehicle, 1, props.modFrontBumper, false) end
  3858. if props.modRearBumper then SetVehicleMod(vehicle, 2, props.modRearBumper, false) end
  3859. if props.modSideSkirt then SetVehicleMod(vehicle, 3, props.modSideSkirt, false) end
  3860. if props.modExhaust then SetVehicleMod(vehicle, 4, props.modExhaust, false) end
  3861. if props.modFrame then SetVehicleMod(vehicle, 5, props.modFrame, false) end
  3862. if props.modGrille then SetVehicleMod(vehicle, 6, props.modGrille, false) end
  3863. if props.modHood then SetVehicleMod(vehicle, 7, props.modHood, false) end
  3864. if props.modFender then SetVehicleMod(vehicle, 8, props.modFender, false) end
  3865. if props.modRightFender then SetVehicleMod(vehicle, 9, props.modRightFender, false) end
  3866. if props.modRoof then SetVehicleMod(vehicle, 10, props.modRoof, false) end
  3867. if props.modEngine then SetVehicleMod(vehicle, 11, props.modEngine, false) end
  3868. if props.modBrakes then SetVehicleMod(vehicle, 12, props.modBrakes, false) end
  3869. if props.modTransmission then SetVehicleMod(vehicle, 13, props.modTransmission, false) end
  3870. if props.modHorns then SetVehicleMod(vehicle, 14, props.modHorns, false) end
  3871. if props.modSuspension then SetVehicleMod(vehicle, 15, props.modSuspension, false) end
  3872. if props.modArmor then SetVehicleMod(vehicle, 16, props.modArmor, false) end
  3873. if props.modTurbo then ToggleVehicleMod(vehicle, 18, props.modTurbo) end
  3874. if props.modXenon then ToggleVehicleMod(vehicle, 22, props.modXenon) end
  3875. if props.modFrontWheels then SetVehicleMod(vehicle, 23, props.modFrontWheels, false) end
  3876. if props.modBackWheels then SetVehicleMod(vehicle, 24, props.modBackWheels, false) end
  3877. if props.modPlateHolder then SetVehicleMod(vehicle, 25, props.modPlateHolder, false) end
  3878. if props.modVanityPlate then SetVehicleMod(vehicle, 26, props.modVanityPlate, false) end
  3879. if props.modTrimA then SetVehicleMod(vehicle, 27, props.modTrimA, false) end
  3880. if props.modOrnaments then SetVehicleMod(vehicle, 28, props.modOrnaments, false) end
  3881. if props.modDashboard then SetVehicleMod(vehicle, 29, props.modDashboard, false) end
  3882. if props.modDial then SetVehicleMod(vehicle, 30, props.modDial, false) end
  3883. if props.modDoorSpeaker then SetVehicleMod(vehicle, 31, props.modDoorSpeaker, false) end
  3884. if props.modSeats then SetVehicleMod(vehicle, 32, props.modSeats, false) end
  3885. if props.modSteeringWheel then SetVehicleMod(vehicle, 33, props.modSteeringWheel, false) end
  3886. if props.modShifterLeavers then SetVehicleMod(vehicle, 34, props.modShifterLeavers, false) end
  3887. if props.modAPlate then SetVehicleMod(vehicle, 35, props.modAPlate, false) end
  3888. if props.modSpeakers then SetVehicleMod(vehicle, 36, props.modSpeakers, false) end
  3889. if props.modTrunk then SetVehicleMod(vehicle, 37, props.modTrunk, false) end
  3890. if props.modHydrolic then SetVehicleMod(vehicle, 38, props.modHydrolic, false) end
  3891. if props.modEngineBlock then SetVehicleMod(vehicle, 39, props.modEngineBlock, false) end
  3892. if props.modAirFilter then SetVehicleMod(vehicle, 40, props.modAirFilter, false) end
  3893. if props.modStruts then SetVehicleMod(vehicle, 41, props.modStruts, false) end
  3894. if props.modArchCover then SetVehicleMod(vehicle, 42, props.modArchCover, false) end
  3895. if props.modAerials then SetVehicleMod(vehicle, 43, props.modAerials, false) end
  3896. if props.modTrimB then SetVehicleMod(vehicle, 44, props.modTrimB, false) end
  3897. if props.modTank then SetVehicleMod(vehicle, 45, props.modTank, false) end
  3898. if props.modWindows then SetVehicleMod(vehicle, 46, props.modWindows, false) end
  3899.  
  3900. if props.modLivery then
  3901. SetVehicleMod(vehicle, 48, props.modLivery, false)
  3902. SetVehicleLivery(vehicle, props.modLivery)
  3903. end
  3904. end
  3905. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement