348 lines
		
	
	
	
		
			19 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
			
		
		
	
	
			348 lines
		
	
	
	
		
			19 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
Nabla.LogLevel = Nabla.LogLevels.WARN -- Log levels are ALL, TRACE, DEBUG, INFO, WARN, ERROR, FATAL, OFF (default is WARN)
 | 
						|
 | 
						|
Config = {
 | 
						|
 | 
						|
  -- Please check our FAQ if you have any question : https://fivem.nabla.sh/faq
 | 
						|
 | 
						|
  -- List of players who have access to the actions, set WhiteListEnabled = true/false to enable/disable the whitelist
 | 
						|
  WhiteListEnabled = true,
 | 
						|
  WhiteList = {
 | 
						|
    'ip:192.168.168.35',
 | 
						|
    'steam:12345',
 | 
						|
    'mechanic',
 | 
						|
    'mechanic:5',
 | 
						|
    'nabla.evc', -- To use with ACE, add this to your server.cfg : add_ace identifier.YOURIDENTIFIER nabla.evc allow
 | 
						|
  },
 | 
						|
 | 
						|
  -- If true only whitelisted player can control the lights / sirens
 | 
						|
  WhiteListedControl = false,
 | 
						|
 | 
						|
  -- Keybinds, you can choose from here : https://docs.fivem.net/docs/game-references/input-mapper-parameter-ids/
 | 
						|
  DefaultControls = function()
 | 
						|
    RegisterKeyMapping('+evc_menu',         'EVC - Menu (Hold for trailer)', 'KEYBOARD',    'F6') -- Open placement menu
 | 
						|
    RegisterKeyMapping('+evc_lights',       'EVC - Lights',                  'KEYBOARD', 'Q') -- Enable lights
 | 
						|
    RegisterKeyMapping('+evc_siren',        'EVC - Siren',                   'KEYBOARD',     'E') -- Enable sirens (holding with sirens on will trigger alternative siren, holding with sirens off will trigger horn)
 | 
						|
    RegisterKeyMapping('+evc_siren_tone',   'EVC - Siren Tone',              'KEYBOARD',     'G') -- Change the siren tone
 | 
						|
    RegisterKeyMapping('+evc_spawn_toggle', 'EVC - Spawn Toggle',            'KEYBOARD',    'F11') -- Put / Remove lights, objects and sirens
 | 
						|
  end,
 | 
						|
 | 
						|
  -- Handle entityCreated / entityRemoved automatically, if you set this to false make sure to add :
 | 
						|
  -- TriggerServerEvent('EVC:entityCreated', NetworkGetNetworkIdFromEntity(veh)) -- When you create a vehicle and after you set it's plate
 | 
						|
  -- TriggerServerEvent('EVC:entityRemoved', NetworkGetNetworkIdFromEntity(veh)) -- When you delete a vehicle
 | 
						|
  -- Otherwise the script will not work
 | 
						|
  HandleEntityCreatedRemoved = true,
 | 
						|
 | 
						|
  -- Allow the keybind and the menu option to toggle lights, objects and sirens from the vehicle
 | 
						|
  AllowToggle = true,
 | 
						|
 | 
						|
  -- Should be loaded from a separate resource
 | 
						|
  Models = {
 | 
						|
    Lights = {
 | 
						|
      ["FakeItemToShowOptions"]        = {  -- This is a fake item to show available options per light/object
 | 
						|
        WhiteList = {"mechanic"},           -- You can also set the whitelist at the object level, if nothing is specified, the global whitelist will be used. Syntax is same as global
 | 
						|
        Extras = true,                      -- Does this object has extras ? Default to false
 | 
						|
        Doors = true,                       -- Does this object has doors ? Default to false
 | 
						|
        Offset = vector3(-0.45, -0.1, 0.9), -- Offset between center of object and 3D object (for displaying 3D marker)
 | 
						|
        Collision = false,                  -- You can also set the collision at the object level, if nothing is specified, the global collision setting will be used
 | 
						|
      },
 | 
						|
      ["D3sAmberBeacon"]               = {},
 | 
						|
      ["D3sAntennaAmberStr"]           = {},
 | 
						|
      ["D3sAntennaBlueStr"]            = {},
 | 
						|
      ["D3sAntennaGreenStr"]           = {},
 | 
						|
      ["D3sAntennaPurpleStr"]          = {},
 | 
						|
      ["D3sAntennaRedStr"]             = {},
 | 
						|
      ["D3sAntennaWhiteStr"]           = {},
 | 
						|
      ["D3sBBFedSigArjent"]            = {},
 | 
						|
      ["D3sBlueBeacon"]                = {},
 | 
						|
      ["D3sEdge9000A"]                 = {Extras = true},
 | 
						|
      ["D3sEdge9000A_L"]               = {Extras = true},
 | 
						|
      ["D3sEdge9000B"]                 = {Extras = true},
 | 
						|
      ["D3sEdge9000B_L"]               = {Extras = true},
 | 
						|
      ["D3sEdge9000G"]                 = {Extras = true},
 | 
						|
      ["D3sEdge9000G_L"]               = {Extras = true},
 | 
						|
      ["D3sEdge9000P"]                 = {Extras = true},
 | 
						|
      ["D3sEdge9000P_L"]               = {Extras = true},
 | 
						|
      ["D3sEdge9000R"]                 = {Extras = true},
 | 
						|
      ["D3sEdge9000RB"]                = {Extras = true},
 | 
						|
      ["D3sEdge9000RB_L"]              = {Extras = true},
 | 
						|
      ["D3sEdge9000R_L"]               = {Extras = true},
 | 
						|
      ["D3sRBFedSigArjent"]            = {},
 | 
						|
      ["D3sRRFedSigArjent"]            = {},
 | 
						|
      ["D3sRedBeacon"]                 = {},
 | 
						|
      ["D3s_DotBoard"]           	     = {Doors = true, Extras = true},
 | 
						|
      ["D3s_MiniP_A"]                  = {Extras = true},
 | 
						|
      ["D3s_MiniP_B"]                  = {Extras = true},
 | 
						|
      ["D3s_MiniP_G"]                  = {Extras = true},
 | 
						|
      ["D3s_MiniP_P"]                  = {Extras = true},
 | 
						|
      ["D3s_MiniP_R"]                  = {Extras = true},
 | 
						|
      ["D3s_OneGuard_A"]               = {Extras = true},
 | 
						|
      ["D3s_OneGuard_AA"]              = {Extras = true},
 | 
						|
      ["D3s_OneGuard_AW"]              = {Extras = true},
 | 
						|
      ["D3s_OneGuard_B"]               = {Extras = true},
 | 
						|
      ["D3s_OneGuard_BB"]              = {Extras = true},
 | 
						|
      ["D3s_OneGuard_BW"]              = {Extras = true},
 | 
						|
      ["D3s_OneGuard_G"]               = {Extras = true},
 | 
						|
      ["D3s_OneGuard_GG"]              = {Extras = true},
 | 
						|
      ["D3s_OneGuard_GW"]              = {Extras = true},
 | 
						|
      ["D3s_OneGuard_P"]               = {Extras = true},
 | 
						|
      ["D3s_OneGuard_PP"]              = {Extras = true},
 | 
						|
      ["D3s_OneGuard_PW"]              = {Extras = true},
 | 
						|
      ["D3s_OneGuard_R"]               = {Extras = true},
 | 
						|
      ["D3s_OneGuard_RB"]              = {Extras = true},
 | 
						|
      ["D3s_OneGuard_RW"]              = {Extras = true},
 | 
						|
      ["D3s_OneGuard_W"]               = {Extras = true},
 | 
						|
      ["D3s_RetroHighwayRiser"]        = {Animation = true},
 | 
						|
      ["D3s_S_Series_BB"]              = {Extras = true},
 | 
						|
      ["D3s_S_Series_RB"]              = {Extras = true},
 | 
						|
      ["D3s_S_Series_RR"]              = {Extras = true},
 | 
						|
      ["D3s_SideRunners_A"]            = {Extras = true},
 | 
						|
      ["D3s_SideRunners_B"]            = {Extras = true},
 | 
						|
      ["D3s_SideRunners_G"]            = {Extras = true},
 | 
						|
      ["D3s_SideRunners_P"]            = {Extras = true},
 | 
						|
      ["D3s_SideRunners_R"]            = {Extras = true},
 | 
						|
      ["D3s_SideRunners_RB"]           = {Extras = true},
 | 
						|
      ["D3s_XR2000_AA"]                = {Extras = true},
 | 
						|
      ["D3s_XR2000_BB"]                = {Extras = true},
 | 
						|
      ["D3s_XR2000_GG"]                = {Extras = true},
 | 
						|
      ["D3s_XR2000_PP"]                = {Extras = true},
 | 
						|
      ["D3s_XR2000_RB"]                = {Extras = true},
 | 
						|
      ["D3s_XR2000_RR"]                = {Extras = true},
 | 
						|
      ["WhelenAmberBeacon"]            = {},
 | 
						|
      ["WhelenBlueBeacon"]             = {},
 | 
						|
      ["WhelenGreenBeacon"]            = {},
 | 
						|
      ["WhelenRedBeacon"]              = {},
 | 
						|
      ["fbiold"]                       = {Offset = vector3(-0.45, -0.1, 0.9)},
 | 
						|
      ["lightbarTwoSticks"]            = {Offset = vector3(0.0, 0.45, 0.65)},
 | 
						|
      ["longLightbar"]                 = {Offset = vector3(0.35, -1.15, 0.75)},
 | 
						|
      ["longLightbarRed"]              = {Offset = vector3(0.35, -1.15, 0.75)},
 | 
						|
    },
 | 
						|
 | 
						|
    Objects = {
 | 
						|
      ["D3sConeStackV1"]        	= {},
 | 
						|
      ["D3sConeStackV2"]        	= {},
 | 
						|
      ["D3sLadderRack"]         	= {},
 | 
						|
      ["D3sToolboxV1"]          	= {},
 | 
						|
      ["D3sWinchV1"]            	= {},
 | 
						|
      ["D3s_AntennaBlack"]     		= {},
 | 
						|
      ["D3s_AntennaLowProfile"] 	= {},
 | 
						|
      ["D3s_AntennaSLVBLK"]     	= {},
 | 
						|
      ["D3s_BedRack"]           	= {Extras = true},
 | 
						|
      ["D3s_PartitionCage"]     	= {},
 | 
						|
      ["D3s_PlateReaderV1"]     	= {},
 | 
						|
      ["D3s_PushGuard_S"]       	= {},
 | 
						|
      ["D3s_Pushbar_L"]         	= {},
 | 
						|
      ["D3s_SirenV1"]           	= {},
 | 
						|
      ["D3s_TruckRack"]         	= {},
 | 
						|
    },
 | 
						|
  },
 | 
						|
 | 
						|
  -- List of native vehicles on which lights are controled using EVC
 | 
						|
  -- Has less priority than configs saved by model, plate ...
 | 
						|
  -- Remove from list to disable control by EVC
 | 
						|
  NativeVehiclesHash = {
 | 
						|
    ["ambulance"]  = {lights = {}, objects = {}, sirens = {AlternativeTones = {"VEHICLES_HORNS_AMBULANCE_WARNING"}, Tones = {"RESIDENT_VEHICLES_SIREN_WAIL_02"}}},
 | 
						|
    ["fbi"]        = {lights = {}, objects = {}, sirens = {AlternativeTones = {"VEHICLES_HORNS_POLICE_WARNING"},    Tones = {"RESIDENT_VEHICLES_SIREN_WAIL_02"}}},
 | 
						|
    ["fbi2"]       = {lights = {}, objects = {}, sirens = {AlternativeTones = {"VEHICLES_HORNS_POLICE_WARNING"},    Tones = {"RESIDENT_VEHICLES_SIREN_WAIL_02"}}},
 | 
						|
    ["firetruk"]   = {lights = {}, objects = {}, sirens = {AlternativeTones = {"VEHICLES_HORNS_FIRETRUCK_WARNING"}, Tones = {"RESIDENT_VEHICLES_SIREN_FIRETRUCK_WAIL_01"}}},
 | 
						|
    ["lguard"]     = {lights = {}, objects = {}, sirens = {AlternativeTones = {"VEHICLES_HORNS_POLICE_WARNING"},    Tones = {"VEHICLES_HORNS_SIREN_1"}}},
 | 
						|
    ["police"]     = {lights = {}, objects = {}, sirens = {AlternativeTones = {"VEHICLES_HORNS_POLICE_WARNING"},    Tones = {"VEHICLES_HORNS_SIREN_1"}}},
 | 
						|
    ["police2"]    = {lights = {}, objects = {}, sirens = {AlternativeTones = {"VEHICLES_HORNS_POLICE_WARNING"},    Tones = {"VEHICLES_HORNS_SIREN_1"}}},
 | 
						|
    ["police3"]    = {lights = {}, objects = {}, sirens = {AlternativeTones = {"VEHICLES_HORNS_POLICE_WARNING"},    Tones = {"VEHICLES_HORNS_SIREN_1"}}},
 | 
						|
    ["police4"]    = {lights = {}, objects = {}, sirens = {AlternativeTones = {"VEHICLES_HORNS_POLICE_WARNING"},    Tones = {"VEHICLES_HORNS_SIREN_1"}}},
 | 
						|
    ["policeb"]    = {lights = {}, objects = {}, sirens = {AlternativeTones = {"VEHICLES_HORNS_POLICE_WARNING"},    Tones = {"RESIDENT_VEHICLES_SIREN_QUICK_03"}}},
 | 
						|
    ["policeold1"] = {lights = {}, objects = {}, sirens = {AlternativeTones = {"VEHICLES_HORNS_POLICE_WARNING"},    Tones = {"VEHICLES_HORNS_SIREN_1"}}},
 | 
						|
    ["policeold2"] = {lights = {}, objects = {}, sirens = {AlternativeTones = {"VEHICLES_HORNS_POLICE_WARNING"},    Tones = {"VEHICLES_HORNS_SIREN_1"}}},
 | 
						|
    ["policet"]    = {lights = {}, objects = {}, sirens = {AlternativeTones = {"VEHICLES_HORNS_POLICE_WARNING"},    Tones = {"VEHICLES_HORNS_SIREN_1"}}},
 | 
						|
    ["pranger"]    = {lights = {}, objects = {}, sirens = {AlternativeTones = {"VEHICLES_HORNS_POLICE_WARNING"},    Tones = {"VEHICLES_HORNS_SIREN_1"}}},
 | 
						|
    ["riot"]       = {lights = {}, objects = {}, sirens = {AlternativeTones = {"VEHICLES_HORNS_POLICE_WARNING"},    Tones = {"VEHICLES_HORNS_SIREN_1"}}},
 | 
						|
    ["riot2"]      = {lights = {}, objects = {}, sirens = {AlternativeTones = {"VEHICLES_HORNS_POLICE_WARNING"},    Tones = {"VEHICLES_HORNS_SIREN_1"}}},
 | 
						|
    ["sheriff"]    = {lights = {}, objects = {}, sirens = {AlternativeTones = {"VEHICLES_HORNS_POLICE_WARNING"},    Tones = {"VEHICLES_HORNS_SIREN_1"}}},
 | 
						|
    ["sheriff2"]   = {lights = {}, objects = {}, sirens = {AlternativeTones = {"VEHICLES_HORNS_POLICE_WARNING"},    Tones = {"RESIDENT_VEHICLES_SIREN_WAIL_03"}}},
 | 
						|
  },
 | 
						|
 | 
						|
  -- Maximum number of lights / objects per vehicle
 | 
						|
  Max = {
 | 
						|
    Lights = 10,
 | 
						|
    Objects = 10,
 | 
						|
  },
 | 
						|
 | 
						|
  -- Enable or disable collsions on spawned objects / lights (turning this on can lead to weird behavior)
 | 
						|
  EnableCollision = false,
 | 
						|
 | 
						|
  -- Spawned object are invicible
 | 
						|
  Invincible = false,
 | 
						|
 | 
						|
  -- If true lights must be on for sirens to work
 | 
						|
  SirenNeedLights = false,
 | 
						|
 | 
						|
  -- Audio banks
 | 
						|
  AudioBanks = {
 | 
						|
    "DLC_WMSIRENS\\SIRENPACK_ONE",
 | 
						|
  },
 | 
						|
 | 
						|
  -- Range of the sirens
 | 
						|
  SirenRange = 200.0,
 | 
						|
 | 
						|
  -- Anything can be added / removed to your likings
 | 
						|
  SirenTones = {
 | 
						|
    -- { -- This is a fake siren to show available options per siren
 | 
						|
    --   label = "label",                     -- Label for checkbox item
 | 
						|
    --   description = "description",         -- Description for checkbox item
 | 
						|
    --   hash = "FAKE_SIREN_TO_SHOW_OPTIONS", -- API Hash of siren for PlaySoundFromEntity
 | 
						|
    --   ref = 0,                             -- API ref of siren for PlaySoundFromEntity
 | 
						|
    --   WhiteList = {},                      -- You can also set the whitelist at the object level, if nothing is specified, the global whitelist will be used. Syntax is same as global
 | 
						|
    -- },
 | 
						|
    {hash = "SIRENS_AIRHORN",                             label = "AirHorn",          description = "Add this siren", ref = 0},
 | 
						|
    {hash = "VEHICLES_HORNS_SIREN_1",                     label = "Horns 1",          description = "Add this siren", ref = 0},
 | 
						|
    {hash = "VEHICLES_HORNS_SIREN_2",                     label = "Horns 2",          description = "Add this siren", ref = 0},
 | 
						|
    {hash = "VEHICLES_HORNS_POLICE_WARNING",              label = "Police Warning",   description = "Add this siren", ref = 0},
 | 
						|
    {hash = "RESIDENT_VEHICLES_SIREN_WAIL_01",            label = "Wail 1",           description = "Add this siren", ref = 0},
 | 
						|
    {hash = "RESIDENT_VEHICLES_SIREN_WAIL_02",            label = "Wail 2",           description = "Add this siren", ref = 0},
 | 
						|
    {hash = "RESIDENT_VEHICLES_SIREN_WAIL_03",            label = "Wail 3",           description = "Add this siren", ref = 0},
 | 
						|
    {hash = "RESIDENT_VEHICLES_SIREN_QUICK_01",           label = "Quick 1",          description = "Add this siren", ref = 0},
 | 
						|
    {hash = "RESIDENT_VEHICLES_SIREN_QUICK_02",           label = "Quick 2",          description = "Add this siren", ref = 0},
 | 
						|
    {hash = "RESIDENT_VEHICLES_SIREN_QUICK_03",           label = "Quick 3",          description = "Add this siren", ref = 0},
 | 
						|
    {hash = "VEHICLES_HORNS_AMBULANCE_WARNING",           label = "Ambulance",        description = "Add this siren", ref = 0},
 | 
						|
    {hash = "VEHICLES_HORNS_FIRETRUCK_WARNING",           label = "Firetruck",        description = "Add this siren", ref = 0},
 | 
						|
    {hash = "RESIDENT_VEHICLES_SIREN_FIRETRUCK_WAIL_01",  label = "Firetruck wail 1", description = "Add this siren", ref = 0},
 | 
						|
    {hash = "RESIDENT_VEHICLES_SIREN_FIRETRUCK_QUICK_01", label = "Firetruck wail 2", description = "Add this siren", ref = 0},
 | 
						|
 | 
						|
    -- Custom sirens (from https://github.com/Walsheyy/WMServerSirens)
 | 
						|
    {hash = "SIREN_ALPHA",                                label = "Custom Alpha",     description = "Add this siren", ref = "DLC_WMSIRENS_SOUNDSET"},
 | 
						|
    {hash = "SIREN_BRAVO",                                label = "Custom Bravo",     description = "Add this siren", ref = "DLC_WMSIRENS_SOUNDSET"},
 | 
						|
    {hash = "SIREN_CHARLIE",                              label = "Custom Charlie",   description = "Add this siren", ref = "DLC_WMSIRENS_SOUNDSET"},
 | 
						|
    {hash = "SIREN_DELTA",                                label = "Custom Delta",     description = "Add this siren", ref = "DLC_WMSIRENS_SOUNDSET"},
 | 
						|
    {hash = "SIREN_ECHO",                                 label = "Custom Echo",      description = "Add this siren", ref = "DLC_WMSIRENS_SOUNDSET"},
 | 
						|
    {hash = "SIREN_FOXTROT",                              label = "Custom Foxtrot",   description = "Add this siren", ref = "DLC_WMSIRENS_SOUNDSET"},
 | 
						|
    {hash = "SIREN_GOLF",                                 label = "Custom Golf",      description = "Add this siren", ref = "DLC_WMSIRENS_SOUNDSET"},
 | 
						|
    {hash = "SIREN_HOTEL",                                label = "Custom Hotel",     description = "Add this siren", ref = "DLC_WMSIRENS_SOUNDSET"},
 | 
						|
  },
 | 
						|
 | 
						|
  -- Placement sensitivity (step)
 | 
						|
  Sensitivity = {
 | 
						|
    Tx = {0.01, 0.1,  1.0}, -- Translation
 | 
						|
    Rx = {1.0, 10.0, 45.0}, -- Rotation
 | 
						|
  },
 | 
						|
 | 
						|
  -- Range during placement
 | 
						|
  Range = {
 | 
						|
    Tx =  10.0, -- Translation
 | 
						|
    Rx = 180.0, -- Rotation
 | 
						|
  },
 | 
						|
 | 
						|
  -- Function to customize the menus
 | 
						|
  Customize = function(menu)
 | 
						|
    menu:SetBannerRectangle(NativeUI.CreateRectangle(0, 0, 0, 0, 122,	32,	20, 255.0))
 | 
						|
  end,
 | 
						|
 | 
						|
  -- Disable lights / siren when leaving the vehicle, will NOT turn back on when entering
 | 
						|
  TurnOffOnExit = {
 | 
						|
    Sirens = false,
 | 
						|
    Lights = false,
 | 
						|
  },
 | 
						|
 | 
						|
  -- Should a notif be sent if a user press a keybind but no vehicle is in range ?
 | 
						|
  NoVehNotif = false,
 | 
						|
 | 
						|
  -- Save per model, per plate, per user+plate or per name ?
 | 
						|
  -- Per name is not loaded automatically, you have to go in the menu and enter the template name you want to load
 | 
						|
  -- Tip 1 : To disable server save, set all to false
 | 
						|
  -- Tip 2 : Priority is : UUID > Plate > Model, meaning you can override the model settings by saving per plate
 | 
						|
  SavePerModel = true,
 | 
						|
  SavePerPlate = true,
 | 
						|
  SavePerUUID  = true,
 | 
						|
  GenerateUUID = function(identifier, vehicle)
 | 
						|
    return identifier..":"..GetVehicleNumberPlateText(vehicle)
 | 
						|
  end,
 | 
						|
  SavePerName  = true,
 | 
						|
 | 
						|
  -- Spawn objects / lights only if player is whitelisted
 | 
						|
  SpawnOnlyIfWhiteListed = false,
 | 
						|
 | 
						|
  -- Translations
 | 
						|
  Strings = {
 | 
						|
    ['no_veh'] = 'No vehicle nearby',
 | 
						|
    ['open_veh'] = 'Open menu for this vehicle',
 | 
						|
    ['saved']  = '~g~Saved !~w~',
 | 
						|
    ['clear']  = '~g~Config cleared !~w~',
 | 
						|
    ['error']  = '~r~Error !~w~',
 | 
						|
 | 
						|
    -- Main menu
 | 
						|
    ['open'] = {'Press your keybind to open the Nabla\'s Emergency Vehicle Creator'},
 | 
						|
    ['toggle'] = {'Toggle lights, objects and sirens', 'Toggle the spawn of entities and siren, can also be toggled with the "EVC - Spawn Toggle" button'},
 | 
						|
    ['passenger_control'] = {'Passenger control', 'Allow passengers to control the lights / sirens'},
 | 
						|
    ['save'] = {'Save config by', 'Choose how the config will be saved and loaded to the car'},
 | 
						|
    ['save_model'] = 'Model',
 | 
						|
    ['save_plate'] = 'Plate',
 | 
						|
    ['save_uuid'] = 'UUID',
 | 
						|
    ['save_name'] = 'Name',
 | 
						|
    ['load_name'] = {'Load by name', 'Load a config by using a custom name'},
 | 
						|
 | 
						|
    -- Lights / Objects
 | 
						|
    ['add_edit'] = {
 | 
						|
      ["Objects"] = "Add, edit and remove equipements on this vehicle",
 | 
						|
      ["Lights"] = "Add, edit and remove lights on this vehicle",
 | 
						|
    },
 | 
						|
    ["Lights"] = "Lights",
 | 
						|
    ["Objects"] = "Equipements",
 | 
						|
    ["spawn"] = {"Spawn", "Select the model you wish to spawn"},
 | 
						|
    ["select"] = {"Selected", "Select the element you wish to move"},
 | 
						|
    ["mirror"] = {"Mirror from", "Will copy the position and orientation from this element onto the selected one"},
 | 
						|
    ["tspeed"] = {"Translation Speed", "Select translation speed"},
 | 
						|
    ["rspeed"] = {"Rotation Speed", "Select rotation speed"},
 | 
						|
    ["tx"] = {"X", "Move left / right"},
 | 
						|
    ["ty"] = {"Y", "Move front / rear"},
 | 
						|
    ["tz"] = {"Z", "Move up / down"},
 | 
						|
    ["rx"] = {"Pitch", "Rotate around X"},
 | 
						|
    ["ry"] = {"Roll", "Rotate around Y"},
 | 
						|
    ["rz"] = {"Yaw", "Rotate around Z"},
 | 
						|
    ["del"] = {"Delete", "Remove this element (remember to save)"},
 | 
						|
    ["ext"] = {"Extras", "Enable / disable extras"},
 | 
						|
    ["doors"] = {"Doors", "Open / close doors"},
 | 
						|
    ["livery"] = {"Livery", "Select the livery"},
 | 
						|
 | 
						|
    -- Sirens
 | 
						|
    ["sirens"] = {"Sirens", "Add and remove sirens on this vehicle"},
 | 
						|
    ["altsiren"] = {"Alternative Siren", "Choose the siren that will be played when holding the siren button"},
 | 
						|
  },
 | 
						|
 | 
						|
 | 
						|
  -- Can the menu be opened from anywhere ? If set to false, add markers below
 | 
						|
  MenuOpenAnyWhere = true,
 | 
						|
  Markers = {
 | 
						|
    vector3(-2097.81, 2655.79, 2.44),
 | 
						|
  },
 | 
						|
 | 
						|
  -- Distance to show markers, help text...
 | 
						|
  DrawMarkerDistance = 50.0,
 | 
						|
  DrawTextDistance   =  2.0,
 | 
						|
 | 
						|
  -- Function for drawing markers
 | 
						|
  DrawMarker = function(pos)
 | 
						|
    DrawMarker(2, pos.x, pos.y, pos.z, 0.0, 0.0, 0.0, 0, 0.0, 0.0, 1.5, 1.5, 1.5, 255, 176, 39, 100, false, true, 2, true, false, false, false)
 | 
						|
  end,
 | 
						|
}
 | 
						|
 | 
						|
table.sort(Config.SirenTones, function(a,b) return a.label < b.label end)
 | 
						|
 | 
						|
local prev = nil
 | 
						|
function ShowNotification(message)
 | 
						|
  if prev ~= nil then
 | 
						|
    RemoveNotification(prev)
 | 
						|
  end
 | 
						|
  AddTextEntry(GetCurrentResourceName().."Notif", Config.Strings[message])
 | 
						|
  BeginTextCommandThefeedPost(GetCurrentResourceName().."Notif")
 | 
						|
  prev = EndTextCommandThefeedPostTicker(false, false)
 | 
						|
end
 | 
						|
 | 
						|
function DisplayHelpText(lineOne, lineTwo, lineThree)
 | 
						|
  BeginTextCommandDisplayHelp("THREESTRINGS")
 | 
						|
  AddTextComponentSubstringPlayerName(lineOne)
 | 
						|
  AddTextComponentSubstringPlayerName(lineTwo or "")
 | 
						|
  AddTextComponentSubstringPlayerName(lineThree or "")
 | 
						|
  EndTextCommandDisplayHelp(0, 0, 0, -1)
 | 
						|
end
 | 
						|
Config.NativeVehicles = {}
 | 
						|
for k,v in pairs(Config.NativeVehiclesHash) do
 | 
						|
  Config.NativeVehicles[tostring(GetHashKey(k))] = v
 | 
						|
end
 |