This commit is contained in:
Nordi98 2025-07-12 13:10:51 +02:00
parent 26ed285540
commit 4c95214808
53 changed files with 694 additions and 2507 deletions

Binary file not shown.

View file

@ -0,0 +1,34 @@
# KQ_TOWING2 INSTALLATION GUIDE

This guide will provide step-by-step instructions on how to install and set up the KQ_TOWING2 script for FiveM.

## Step 1:
After downloading the script, unzip the folder and place it in the `resources` directory on your FiveM server.

## Step 2:
Add the script to your `server.cfg` file. Make sure that it's added **after** the framework of choice if using any.

## Step 3:
Open the `config.lua` file in the script folder and make sure that the correct framework is enabled. (If using ESX or QBCore)

## Framework specific setup

### ESX
- Import the SQL file located inside the `/esx` folder to your database to add the items or change the item names in the config to match existing items.

### QBCore
- Add the items located in the `/qb` folder to your qb-core shared.lua file `qb-core/shared/items.lua` or `qb-core/shared.lua` or change the item names in the config to match existing items.

### QBOX / OX_INVENTORY (When not using ESX or QBCore)
- Add the items located in the `/ox` folder to your ox_inventory items list, and make sure that `kq_towing2` starts BEFORE ox_inventory

### Extra
- If using an anti-cheat make sure to whitelist a prop: `prop_roadpole_01a`. This prop is required for the rope to work properly

## Done
Enjoy the script


- https://kuzquality.com/
- https://discord.gg/fZsyam7Rvz
- https://www.youtube.com/@KuzQuality

View file

@ -0,0 +1,2 @@
INSERT INTO `items` (`name`, `label`, `weight`, `rare`, `can_remove`) VALUES ('kq_tow_rope', 'Towing rope', 2, 0, 1);
INSERT INTO `items` (`name`, `label`, `weight`, `rare`, `can_remove`) VALUES ('kq_winch', 'Car winch', 4, 0, 1);

Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 72 KiB

View file

@ -0,0 +1,22 @@

["kq_tow_rope"] = {
label = "Towing rope",
weight = 2000,
stack = true,
close = true,
consume = 0,
server = {
export = 'kq_towing2.UseTowRope',
},
},

["kq_winch"] = {
label = "Car winch",
weight = 4000,
stack = true,
close = true,
consume = 0,
server = {
export = 'kq_towing2.UseWinch',
},
},

View file

@ -0,0 +1,3 @@

["kq_tow_rope"] = {["name"] = "kq_tow_rope", ["label"] = "Towing rope", ["weight"] = 2000, ["type"] = "item", ["image"] = "kq_tow_rope.png", ["unique"] = false, ["useable"] = true, ["shouldClose"] = true, ["combinable"] = nil, ["description"] = "Rope used for towing vehicles"},
["kq_winch"] = {["name"] = "kq_winch", ["label"] = "Car winch", ["weight"] = 4000, ["type"] = "item", ["image"] = "kq_winch.png", ["unique"] = false, ["useable"] = true, ["shouldClose"] = true, ["combinable"] = nil, ["description"] = "Car winch made to winch heavy vehicles"},

Binary file not shown.

Binary file not shown.

View file

@ -0,0 +1,131 @@
-- This function is responsible for drawing all the 3d texts ('Press [E] to take off the wheel' e.g)
function Draw3DText(coords, textInput, scaleX)
scaleX = scaleX * Config.textScale
local px, py, pz = table.unpack(GetGameplayCamCoords())
local dist = GetDistanceBetweenCoords(px, py, pz, coords, true)
local scale = (1 / dist) * 20
local fov = (1 / GetGameplayCamFov()) * 100
scale = scale * fov
SetTextScale(scaleX * scale, scaleX * scale)
SetTextFont(Config.textFont or 4)
SetTextProportional(1)
SetTextDropshadow(1, 1, 1, 1, 255)
SetTextEdge(2, 0, 0, 0, 150)
SetTextDropShadow()
SetTextOutline()
SetTextEntry("STRING")
SetTextCentre(1)
AddTextComponentString(textInput)
SetDrawOrigin(coords, 0)
DrawText(0.0, 0.0)
ClearDrawOrigin()
end

function KeybindTip(message)
SetTextComponentFormat("STRING")
AddTextComponentString(message)
EndTextCommandDisplayHelp(0, 0, 0, 200)
end

function IsPlayerUnreachable()
local playerPed = PlayerPedId()
return IsPedInAnyVehicle(playerPed) or IsPedRagdoll(playerPed) or IsEntityDead(playerPed)
end

function RemoveHandWeapons()
SetCurrentPedWeapon(PlayerPedId(), -1569615261, true)
end

function DisableInputs()
-- https://docs.fivem.net/docs/game-references/controls/#controls
local inputs = {14, 15, 16, 17, 23, 24, 25, 44, 45, 140, 141, 142, 143, 261, 262, 263, 264}

for k, input in pairs(inputs) do
DisableControlAction(0, input, true)
end
end

function IsVehicleLocked(entity)
if not IsEntityAVehicle(entity) then
return false
end
local lockStatus = GetVehicleDoorLockStatus(entity)
return lockStatus == 2 or lockStatus == 3 or lockStatus == 4 or lockStatus == 10
end

function PlayAnim(dict, anim, flag, duration)
Citizen.CreateThread(function()
RequestAnimDict(dict)
local timeout = 0
while not HasAnimDictLoaded(dict) do
Citizen.Wait(50)
timeout = timeout + 1
if timeout > 100 then
return
end
end
TaskPlayAnim(PlayerPedId(), dict, anim, 1.5, 1.0, duration or -1, flag or 1, 0, false, false, false)
RemoveAnimDict(dict)
end)
end


function ShowTooltip(message)
SetTextComponentFormat("STRING")
AddTextComponentString(message)
EndTextCommandDisplayHelp(0, 0, 1, -1)
end


CURRENT_KEYBIND_TIP = nil

function SetKeybindTip(message)
if CURRENT_KEYBIND_TIP == message then
return
end
CURRENT_KEYBIND_TIP = message

Citizen.CreateThread(function()
while CURRENT_KEYBIND_TIP == message do
local sleep = 100
if CURRENT_KEYBIND_TIP then
sleep = 1
ShowKeybindTip(CURRENT_KEYBIND_TIP)
end
Citizen.Wait(sleep)
end
end)
end

function ResetKeybindTip()
if CURRENT_KEYBIND_TIP ~= nil then
CURRENT_KEYBIND_TIP = nil
end
end

function ShowKeybindTip(message)
SetTextComponentFormat("STRING")
AddTextComponentString(message)

EndTextCommandDisplayHelp(0, 0, 0, -1)
end

RegisterNetEvent('kq_towing:client:notify')
AddEventHandler('kq_towing:client:notify', function(message)
Notify(message)
end)

function Notify(message)
SetTextComponentFormat("STRING")
AddTextComponentString(message)
EndTextCommandDisplayHelp(0, 0, 0, 2000)
end

-- Call this event to cancel the placement of a rope
RegisterNetEvent('kq_towing:client:cancelPlacement')
AddEventHandler('kq_towing:client:cancelPlacement', function()
PLACING_ROPE = false
end)

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View file

@ -0,0 +1,176 @@
Config = {}

Config.debug = false

-------------------------------------------------
--- FRAMEWORK SETTINGS
-------------------------------------------------
Config.esxSettings = {
enabled = false,
-- Whether or not to use the new ESX export method
useNewESXExport = true,

-- Enable this if you're using a very old version of ESX
oldEsx = false,
}

Config.qbSettings = {
enabled = false,
-- Whether or not to use the new QBCore export method
useNewQBExport = true,
}

-- Only enable when NOT using ESX or QBCore
Config.oxInventory = {
enabled = false,
}

-- Item config
Config.items = {
towingRope = 'kq_tow_rope',
winch = 'kq_winch',
}

-- Commands used to trigger rope placements
Config.commands = {
towing = {
enabled = true,
command = 'towrope',
},
winch = {
enabled = true,
command = 'winch',
}
}

-- Max speed (in MPH) of vehicles which are towing or being towed (set to -1 to disable speed limiting)
Config.maxTowingSpeed = 50

-- Time between each rope refreshing
-- Time in seconds
Config.ropeRefreshTime = 10

-- Makes towing a vehicle with no player in the back easier. The car will steer and brake automatically when towed
Config.toweeAutopilot = true

-- If script is used in standalone mode. Make sure to disable all the job whitelists!
-- Job whitelist
Config.jobWhitelist = {
towing = {
enabled = false,
jobs = {
'mechanic',
'police',
'marshal',


},
},
winch = {
enabled = false,
jobs = {
'mechanic',
'police',
'marshal',
},
},
}

-- Whether to disallow attaching ropes to vehicles which are locked
Config.disallowLockedVehicles = false

-- The MAXIMUM length of a tow rope
Config.ropeLength = 10.0

-- The MAXIMUM length of a winch
Config.winchLength = 16.0


-- Props which will be visible in players hands upon usage of the rope/winch item (or command)
Config.ropeProps = {
towing = {
prop = 'prop_rope_family_3',
bone = 4089,
offset = vector3(0.26, -0.11, 0.0),
rotation = vector3(0.0, -7.0, 200.0),
},
winch = {
prop = 'prop_stag_do_rope',
bone = 4089,
offset = vector3(0.24, -0.11, 0.0),
rotation = vector3(0.0, -7.0, 200.0),
}
}

-- '3d-text', 'top-left', 'help-text'
Config.inputType = '3d-text'

-- Scale of the 3d text
Config.textScale = 1

-- Font used for the 3d text
Config.textFont = 4

-- Scale used for the 3d text
Config.textScale = 1.0

-- https://docs.fivem.net/docs/game-references/controls/
-- Use the input index for the "input" value
Config.keybinds = {
confirm = {
label = 'E',
name = 'INPUT_PICKUP',
input = 38,
},
winch = {
label = 'Left Shift',
name = 'INPUT_SPRINT',
input = 21,
},
remove = {
label = 'E',
name = 'INPUT_PICKUP',
input = 38,
duration = 3000,
},
cancel = {
label = 'X',
name = 'INPUT_VEH_DUCK',
input = 73,
},
}

-- Classes of which vehicles may not be towed or tow another vehicle
Config.blacklistedClasses = {
8, -- Motorcycles
13, -- Cycles
14, -- Boats
15, -- Helicopters
16, -- Planes
21, -- Trains
}

--[[ All vehicle classes
0: Compacts
1: Sedans
2: SUVs
3: Coupes
4: Muscle
5: Sports Classics
6: Sports
7: Super
8: Motorcycles
9: Off-road
10: Industrial
11: Utility
12: Vans
13: Cycles
14: Boats
15: Helicopters
16: Planes
17: Service
18: Emergency
19: Military
20: Commercial
21: Trains
]]

View file

@ -0,0 +1,52 @@
fx_version 'cerulean'
games { 'gta5' }
lua54 'yes'

author 'KuzQuality | Kuzkay'
description 'Towing & winching made by KuzQuality'
version '2.3.2'


--
-- Server
--

server_scripts {
'locale.lua',
'mixed/constants.lua',
'config.lua',
'server/server.lua',
'server/editable/esx.lua',
'server/editable/qb.lua',
'server/editable/ox.lua',
'server/editable/editable.lua',
}

--
-- Client
--

client_scripts {
'config.lua',
'locale.lua',
'mixed/constants.lua',
'client/editable/editable.lua',
'client/cache.lua',
'client/inputs.lua',
'client/removing.lua',
'client/functions.lua',
'client/raycast.lua',
'client/client.lua',
'client/ropes.lua',
'client/winch.lua',
'client/towing.lua',
}

escrow_ignore {
'config.lua',
'locale.lua',
'client/editable/*.lua',
'server/editable/*.lua',
}

dependency '/assetpacks'

View file

@ -0,0 +1,24 @@
-- Only edit the value on the right. Leave the value between the square brackets as is. <!>

Locale = {
['~w~Press ~g~[~w~{INPUT}~g~]~w~ to attach the rope'] = '~w~Press ~g~[~w~{INPUT}~g~]~w~ to attach the rope',
['~w~Press ~{INPUT}~ to attach the rope'] = '~w~Press ~{INPUT}~ to attach the rope',

['~w~Press ~g~[~w~{INPUT}~g~]~w~ to tie the rope'] = '~w~Press ~g~[~w~{INPUT}~g~]~w~ to tie the rope',
['~w~Press ~{INPUT}~ to tie the rope'] = '~w~Press ~{INPUT}~ to tie the rope',

['Press ~{INPUT}~ to cancel'] = 'Press ~{INPUT}~ to cancel',

['~r~Too far'] = '~r~Too far',
['~y~You can not tie the rope to the ground'] = '~y~You can not tie the rope to the ground',
['~r~This vehicle can not be towed'] = '~r~This vehicle can not be towed',

['~w~Hold ~r~[~w~{INPUT}~r~]~w~ to detach the rope'] = '~w~Hold ~r~[~w~{INPUT}~r~]~w~ to detach the rope',
['~w~Hold ~{INPUT}~ to detach the rope'] = '~w~Hold ~{INPUT}~ to detach the rope',

['~w~Hold ~{INPUT}~ to winch'] = '~w~Hold ~{INPUT}~ to winch',
['~w~Release ~{INPUT}~ to stop winching'] = '~w~Release ~{INPUT}~ to stop winching',

['~r~You may not use this item'] = '~r~You may not use this item',

}

Binary file not shown.

View file

@ -0,0 +1,22 @@

if Config.commands.towing.enabled then
RegisterCommand(Config.commands.towing.command, function(source)
if Config.jobWhitelist.towing.enabled then
if not IsPlayerJobWhitelisted(source, Config.jobWhitelist.towing.jobs) then
return TriggerClientEvent('kq_towing:client:notify', source, L('~r~You may not use this item'))
end
end
TriggerClientEvent('kq_towing:client:startRope', source, false, false)
end)
end

if Config.commands.winch.enabled then
RegisterCommand(Config.commands.winch.command, function(source)
if Config.jobWhitelist.winch.enabled then
if not IsPlayerJobWhitelisted(source, Config.jobWhitelist.winch.jobs) then
return TriggerClientEvent('kq_towing:client:notify', source, L('~r~You may not use this item'))
end
end
TriggerClientEvent('kq_towing:client:startRope', source, true, false)
end)
end

View file

@ -0,0 +1,85 @@
if Config.esxSettings.enabled then
ESX = nil
if Config.esxSettings.useNewESXExport then
ESX = exports['es_extended']:getSharedObject()
else
TriggerEvent('esx:getSharedObject', function(obj) ESX = obj end)
end
ESX.RegisterUsableItem(Config.items.towingRope, function(source)
if Config.jobWhitelist.towing.enabled then
if not IsPlayerJobWhitelisted(source, Config.jobWhitelist.towing.jobs) then
return TriggerClientEvent('kq_towing:client:notify', source, L('~r~You may not use this item'))
end
end
TriggerClientEvent('kq_towing:client:startRope', source, false, true)
end)

ESX.RegisterUsableItem(Config.items.winch, function(source)
if Config.jobWhitelist.winch.enabled then
if not IsPlayerJobWhitelisted(source, Config.jobWhitelist.winch.jobs) then
return TriggerClientEvent('kq_towing:client:notify', source, L('~r~You may not use this item'))
end
end
TriggerClientEvent('kq_towing:client:startRope', source, true, true)
end)
function IsPlayerJobWhitelisted(player, jobs)
local xPlayer = ESX.GetPlayerFromId(player)
if not xPlayer then
return false
end
local job = xPlayer.getJob()
return Contains(jobs, job.name)
end
function GetPlayerItemData(player, item)
local xPlayer = ESX.GetPlayerFromId(player)
return xPlayer.getInventoryItem(item)
end
function GetPlayerItemCount(player, item)
local data = GetPlayerItemData(player, item)
if not data then
return 0
end
return data.count or data.amount or 0
end
function RemovePlayerItem(player, item, amount)
if GetPlayerItemCount(player, item) < amount then
return false
end
local xPlayer = ESX.GetPlayerFromId(player)
xPlayer.removeInventoryItem(item, amount or 1)
return true
end

function AddPlayerItem(player, item, amount)
local xPlayer = ESX.GetPlayerFromId(tonumber(player))

-- Support for old esx which didn't use weight for inventory size but rather item limit per item type
if Config.esxSettings.oldEsx then
local esxItem = xPlayer.getInventoryItem(item)

if esxItem.limit == -1 or (esxItem.count + amount) <= esxItem.limit then
xPlayer.addInventoryItem(item, amount or 1)
return true
else
return false
end
else
if xPlayer.canCarryItem(item, amount or 1) then
xPlayer.addInventoryItem(item, amount or 1)
return true
else
return false
end
end
end
end

View file

@ -0,0 +1,35 @@
if Config.oxInventory.enabled then
-- Usable items
-- Export used for ox_inventory
exports('UseTowRope', function(event, item, inventory)
if event == 'usingItem' then
local player = inventory.id
TriggerClientEvent('kq_towing:client:startRope', player, false, true)
return true
end
end)
exports('UseWinch', function(event, item, inventory)
if event == 'usingItem' then
local player = inventory.id
TriggerClientEvent('kq_towing:client:startRope', player, true, true)
return true
end
end)
function IsPlayerJobWhitelisted(player, jobs)
return true
end
function AddPlayerItem(player, item, amount, meta)
local success, response = exports['ox_inventory']:AddItem(player, item, amount or 1, meta)
return success
end
function RemovePlayerItem(player, item, amount)
local success, response = exports['ox_inventory']:RemoveItem(player, item, amount or 1)
return success
end
end

View file

@ -0,0 +1,46 @@
if Config.qbSettings.enabled then

if Config.qbSettings.useNewQBExport then
QBCore = exports['qb-core']:GetCoreObject()
end
QBCore.Functions.CreateUseableItem(Config.items.towingRope, function(source)
if Config.jobWhitelist.towing.enabled then
if not IsPlayerJobWhitelisted(source, Config.jobWhitelist.towing.jobs) then
return TriggerClientEvent('kq_towing:client:notify', source, L('~r~You may not use this item'))
end
end
TriggerClientEvent('kq_towing:client:startRope', source, false, true)
end)

QBCore.Functions.CreateUseableItem(Config.items.winch, function(source)
if Config.jobWhitelist.winch.enabled then
if not IsPlayerJobWhitelisted(source, Config.jobWhitelist.winch.jobs) then
return TriggerClientEvent('kq_towing:client:notify', source, L('~r~You may not use this item'))
end
end
TriggerClientEvent('kq_towing:client:startRope', source, true, true)
end)

function IsPlayerJobWhitelisted(player, jobs)
local xPlayer = QBCore.Functions.GetPlayer(player)
if not xPlayer then
return false
end
local job = xPlayer.PlayerData.job
return Contains(jobs, job.name)
end

function RemovePlayerItem(player, item, amount)
local xPlayer = QBCore.Functions.GetPlayer(tonumber(player))
return xPlayer.Functions.RemoveItem(item, amount or 1)
end

function AddPlayerItem(player, item, amount)
local xPlayer = QBCore.Functions.GetPlayer(tonumber(player))
return xPlayer.Functions.AddItem(item, amount or 1)
end
end

Binary file not shown.

View file

@ -1,15 +0,0 @@
Thank you for purchasing rtx_vehiclemenu we're grateful for your support. If you'd ever have a question and / or need our help, please reach out to us by sending an email or go ahead and create a ticket on our discord: https://discord.gg/P6KdaDpgAk


Install instructions:
1. Put rtx_vehiclemenu folder to your resources
2. Open config.lua file
3. Configure your config.lua to your preferences
4. Put rtx_vehiclemenu to the server.cfg

License agreement / Terms of Service
1. Any purchase is non-refundable.
2. Each product is to be used on a singular server, with the exception of a test server.
3. Any form of redistribution of our content is considered copyright infringement.
4. If any of these rules are broken, legal actions can be taken.
© 2024 RTX Development, all rights reserved.

View file

@ -1,112 +0,0 @@
Config = {}

Config.Language = "German"

Config.VehicleMenuResetSettingsCommand = "vehiclemenureset" -- command for reset vehicle menu settings

Config.VehicleMenuOpenViaBind = true -- this will enable vehicle menu show via bind

Config.VehicleMenuOpenViaBindKey = "O" -- vehicle menu show key, only work if you enable Config.VehicleMenuOpenViaBind

Config.VehicleMenuOpenViaCommand = true -- this will enable vehicle menu show via commad

Config.VehicleMenuOpenViaCommandName = "vehiclemenu" -- vehicle menu show command, only work if you enable Config.VehicleMenuOpenViaCommand

Config.VehicleMenuOpenViaEvent = false -- this will enable vehicle menu show via event for show vehicle menu TriggerEvent("rtx_vehiclemenu:ShowVehicleMenu", true) for hide vehicle menu TriggerEvent("rtx_vehiclemenu:ShowVehicleMenu", false)

Config.VehicleMenuOpenViaEventName = "rtx_vehiclemenu:ShowVehicleMenu" -- vehicle menu show event, only work if you enable Config.VehicleMenuOpenViaEvent

Config.VehicleMenuForEveryVehicle = true -- if you enable this, vehicle menu will work on every vehicles, if its disabled, it will work only in vehicle menu which is writed in Config.VehicleMenuVehicles.

Config.VehicleMenuVehicleBlacklist = false -- if you enable this, vehicle menu will work not for vehicles which is in blacklisted config, you need put vehicles in Config.VehicleMenuBlacklistedVehicles.

Config.VehicleMenuForOnlySpecifiedTypeOfVehicle = false --- if you enable this, vehicle menu will work only for specified vehicle (Vehicle Class) you need enable class in Config.VehicleMenuVehiclesClasses

Config.VehicleMenuEnableVehicleDriveWhenPlayerIsInMenu = true -- enable this if you want to be able to still drive the vehicle while you are in the menu

Config.VehicleMenuEnableVehicleDriveWhenPlayerIsInMenuDisableCamera = true --turn this on if you want to disable camera movement when the player has the menu open

Config.DefaultVehicleMenuSettings = {color = "#ff66ff", scale = 1.0, position = {top = 50, left = 70}} --scale for default settings min is 0.5, max is 1.5

Config.VehicleMenuWaterDuration = 5000 -- duration of vehicle water

Config.VehicleMenuDisableExtrasMenu = false -- enable this feature if you don't want the player to be able to switch extras

Config.VehicleMenuDisableSeatsChangeMenu = false -- enable this feature if you don't want the player to be able to switch seats

Config.VehicleMenuVehicles = {
{
vehiclename = "bullet", -- vehicle name
},
{
vehiclename = "infernus", -- vehicle name
},
}

Config.VehicleMenuBlacklistedVehicles = {
{
vehiclename = "rhino", -- vehicle name
},
{
vehiclename = "thruster", -- vehicle name
},
}

Config.VehicleMenuVehiclesClasses = {
[0] = true,
[1] = true,
[2] = true,
[3] = true,
[4] = true,
[5] = true,
[6] = true,
[7] = true,
[8] = true,
[9] = true,
[10] = true,
[11] = true,
[12] = true,
[13] = false,
[14] = false,
[15] = false,
[16] = false,
[17] = true,
[18] = true,
[19] = true,
[20] = true,
[21] = true,
[22] = true,
}

function Notify(text)
exports["rtx_notify"]:Notify("Vehicle", text, 5000, "info") -- if you get error in this line its because you dont use our notify system buy it here https://rtx.tebex.io/package/5402098 or you can use some other notify system just replace this notify line with your notify system
--exports["mythic_notify"]:SendAlert("inform", text, 5000)
end

function VehicleBindAction(vehicle)
-- here you can insert your own action what happens when the player presses the bind button in the vehicle menu. (for close menu use CloseVehicleMenu function)
CloseVehicleMenu()
TriggerEvent("rtx_radio:ShowRadio", true)
end

function VehicleLockAction(vehicle)
-- here you can insert your own vehicle lock function if you use your own lock system.
if GetVehicleDoorLockStatus(vehicle) == 1 then
SetVehicleDoorsLocked(vehicle, 2)
Notify(Language[Config.Language]["vehiclelocked"])
else
SetVehicleDoorsLocked(vehicle, 1)
Notify(Language[Config.Language]["vehicleunlocked"])
end
end

function VehicleEngineAction(vehicle)
-- here you can insert your own vehicle engine function.
if GetIsVehicleEngineRunning(vehicle) then
SetVehicleEngineOn(vehicle, false, true, true)
Notify(Language[Config.Language]["engineonoff"])
else
SetVehicleEngineOn(vehicle, true, true, true)
Notify(Language[Config.Language]["engineon"])
end
end

View file

@ -1,38 +0,0 @@
fx_version 'cerulean'

game 'gta5'

description 'RTX VEHICLE MENU'

version '10.0'

server_scripts {
'config.lua',
'language/main.lua',
'server/main.lua'
}

client_scripts {
'config.lua',
'language/main.lua',
'client/main.lua'
}

files {
'html/ui.html',
'html/styles.css',
'html/scripts.js',
'html/BebasNeueBold.ttf',
'html/img/*.svg'
}

ui_page 'html/ui.html'


lua54 'yes'

escrow_ignore {
'config.lua',
'language/main.lua'
}
dependency '/assetpacks'

View file

@ -1,9 +0,0 @@
/*
* jQuery throttle / debounce - v1.1 - 3/7/2010
* http://benalman.com/projects/jquery-throttle-debounce-plugin/
*
* Copyright (c) 2010 "Cowboy" Ben Alman
* Dual licensed under the MIT and GPL licenses.
* http://benalman.com/about/license/
*/
(function(b,c){var $=b.jQuery||b.Cowboy||(b.Cowboy={}),a;$.throttle=a=function(e,f,j,i){var h,d=0;if(typeof f!=="boolean"){i=j;j=f;f=c}function g(){var o=this,m=+new Date()-d,n=arguments;function l(){d=+new Date();j.apply(o,n)}function k(){h=c}if(i&&!h){l()}h&&clearTimeout(h);if(i===c&&m>e){l()}else{if(f!==true){h=setTimeout(i?k:l,i===c?e-m:e)}}}if($.guid){g.guid=j.guid=j.guid||$.guid++}return g};$.debounce=function(d,e,f){return f===c?a(d,e,false):a(d,f,e!==false)}})(this);

View file

@ -1 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?><svg id="Vrstva_2" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 27.92 27.93"><defs><style>.cls-1{fill:#1d1d1b;}</style></defs><g id="Vrstva_1-2"><polygon class="cls-1" points="27.92 4.73 18.69 13.96 27.92 23.2 27.92 27.93 23.19 27.93 13.96 18.69 4.73 27.93 0 27.93 0 23.22 9.24 13.96 0 4.71 0 0 4.73 0 13.96 9.24 23.19 0 27.92 0 27.92 4.73"/></g></svg>

Before

Width:  |  Height:  |  Size: 393 B

View file

@ -1,28 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg id="Vrstva_2" data-name="Vrstva 2" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 381.16 381.17">
<defs>
<style>
.cls-1 {
stroke-linecap: round;
stroke-linejoin: round;
}

.cls-1, .cls-2 {
fill: none;
stroke: #fff;
stroke-width: 25px;
}

.cls-2 {
stroke-miterlimit: 10;
}
</style>
</defs>
<g id="Vrstva_1-2" data-name="Vrstva 1">
<g>
<path class="cls-2" d="m368.66,44.05v293.04c0,17.45-14.14,31.59-31.59,31.59H44.09c-17.45,0-31.59-14.14-31.59-31.59v-169.04c0-8.37,3.33-16.4,9.24-22.32L145.72,21.74c5.92-5.92,13.95-9.24,22.32-9.24h169.07c17.42,0,31.55,14.12,31.55,31.55Z"/>
<path class="cls-2" d="m66.5,191.38v-.95c0-8.38,3.33-16.41,9.25-22.34l92.33-92.33c5.92-5.92,13.96-9.25,22.34-9.25h92.65c17.45,0,31.59,14.14,31.59,31.59v93.29c0,17.45-14.14,31.59-31.59,31.59H98.09c-17.45,0-31.59-14.14-31.59-31.59Z"/>
<path class="cls-1" d="m250.63,311.1l17.3-17.3c5.92-5.92,13.96-9.25,22.34-9.25l.07-.07h24.33"/>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 1.1 KiB

View file

@ -1,22 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg id="Vrstva_2" data-name="Vrstva 2" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 381.17 294.88">
<defs>
<style>
.cls-1 {
fill: none;
stroke: #fff;
stroke-linecap: round;
stroke-linejoin: round;
stroke-width: 25px;
}
</style>
</defs>
<g id="Vrstva_1-2" data-name="Vrstva 1">
<g>
<path class="cls-1" d="m186.08,12.5v269.88h-38.64c-74.53,0-134.94-60.41-134.94-134.94S72.91,12.5,147.44,12.5h38.64Z"/>
<line class="cls-1" x1="236.71" y1="56.29" x2="368.67" y2="96.04"/>
<line class="cls-1" x1="236.71" y1="147.44" x2="368.67" y2="187.19"/>
<line class="cls-1" x1="236.71" y1="238.59" x2="368.67" y2="278.34"/>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 767 B

View file

@ -1,22 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg id="Vrstva_2" data-name="Vrstva 2" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 381.17 294.88">
<defs>
<style>
.cls-1 {
fill: none;
stroke: #fff;
stroke-linecap: round;
stroke-linejoin: round;
stroke-width: 25px;
}
</style>
</defs>
<g id="Vrstva_1-2" data-name="Vrstva 1">
<g>
<path class="cls-1" d="m186.08,12.5v269.88h-38.64c-74.53,0-134.94-60.41-134.94-134.94S72.91,12.5,147.44,12.5h38.64Z"/>
<line class="cls-1" x1="236.71" y1="56.29" x2="368.67" y2="56.29"/>
<line class="cls-1" x1="236.71" y1="147.44" x2="368.67" y2="147.44"/>
<line class="cls-1" x1="236.71" y1="238.59" x2="368.67" y2="238.59"/>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 767 B

View file

@ -1,19 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg id="Vrstva_2" data-name="Vrstva 2" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 293.39 392.65">
<defs>
<style>
.cls-1 {
fill: none;
stroke: #fff;
stroke-miterlimit: 10;
stroke-width: 25px;
}
</style>
</defs>
<g id="Vrstva_1-2" data-name="Vrstva 1">
<g>
<circle class="cls-1" cx="237.02" cy="56.36" r="43.86"/>
<path class="cls-1" d="m280.41,190.54l-23.61,158.31c-2.68,17.99-18.13,31.3-36.31,31.3H54.78c-23.19,0-42.05-18.68-42.28-41.86h0c-.23-23.51,18.76-42.7,42.28-42.7h83.59c17.1,0,31.93-11.8,35.78-28.46l21.37-92.68c4.52-19.62,21.99-33.52,42.13-33.52h0c26.42,0,46.66,23.48,42.76,49.61Z"/>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 734 B

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 1.2 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 3 KiB

View file

@ -1,19 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg id="Vrstva_2" data-name="Vrstva 2" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 381.17 275.66">
<defs>
<style>
.cls-1 {
fill: none;
stroke: #fff;
stroke-miterlimit: 10;
stroke-width: 25px;
}
</style>
</defs>
<g id="Vrstva_1-2" data-name="Vrstva 1">
<g>
<path class="cls-1" d="m368.67,68.01v139.64c0,30.66-23.54,55.51-52.59,55.51H65.09c-29.04,0-52.59-24.85-52.59-55.51v-46.83c0-14.72,5.54-28.84,15.4-39.25L115.83,28.76c9.86-10.41,23.24-16.26,37.18-16.26h163.07c29.04,0,52.59,24.85,52.59,55.51Z"/>
<path class="cls-1" d="m368.67,100.88h-215.66c-13.94,0-27.32,5.85-37.18,16.26L14.78,223.81c6.55,22.77,26.59,39.35,50.32,39.35h250.99c29.04,0,52.59-24.86,52.59-55.51v-106.77Z"/>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 816 B

View file

@ -1,466 +0,0 @@
var vehiclemenuresourcename = "rtx_vehiclemenu";

var ineditmenu = "false";

$(function () {
var currentscale = 1.0;
if (localStorage.default == "false") {
} else {
localStorage.scale = 1.0;
localStorage.color = "#ff66ff";
}
let defaultValues = {vehiclemenutop: "50", vehiclemenuleft: "70", scale: "1.0", color: "#ff66ff",};
var scaleslider = document.getElementById("scalesliderdata");

function closeMain() {
$("body").css("display", "none");
}

function openMain() {
$("body").css("display", "block");
}

$(".vehiclemenusettingsbuttonexit").click(function(){
if ($(".vehiclemenu-container").data('draggable')) {
ChangeVehicleMenu();
$(".vehiclemenu-container").draggable("destroy");
}
ineditmenu = "false";
$("#vehiclemenusettingsshow").hide();
$.post('https://'+vehiclemenuresourcename+'/quit', JSON.stringify({}));
});

function draggableElements() {
$(".vehiclemenu-container").draggable({
scroll: false,
axis: "x, y",
cursor: "move"
});
$(".vehiclemenu-container").css("transform", "scale(" + localStorage.scale + ")");
};
function currentsliderdata() {
if (localStorage.default === "true") {
if (defaultValues.scale == 0.5) {
return 5;
} else if (defaultValues.scale == 0.6) {
return 6;
} else if (defaultValues.scale == 0.7) {
return 7;
} else if (defaultValues.scale == 0.8) {
return 8;
} else if (defaultValues.scale == 0.9) {
return 9;
} else if (defaultValues.scale == 1.0) {
return 10;
} else if (defaultValues.scale == 1.0) {
return 10;
} else if (defaultValues.scale == 1.1) {
return 11;
} else if (defaultValues.scale == 1.2) {
return 12;
} else if (defaultValues.scale == 1.3) {
return 13;
} else if (defaultValues.scale == 1.4) {
return 14;
} else if (defaultValues.scale == 1.5) {
return 15;
}
} else {
if (localStorage.scale == 0.5) {
return 5;
} else if (localStorage.scale == 0.6) {
return 6;
} else if (localStorage.scale == 0.7) {
return 7;
} else if (localStorage.scale == 0.8) {
return 8;
} else if (localStorage.scale == 0.9) {
return 9;
} else if (localStorage.scale == 1.0) {
return 10;
} else if (localStorage.scale == 1.0) {
return 10;
} else if (localStorage.scale == 1.1) {
return 11;
} else if (localStorage.scale == 1.2) {
return 12;
} else if (localStorage.scale == 1.3) {
return 13;
} else if (localStorage.scale == 1.4) {
return 14;
} else if (localStorage.scale == 1.5) {
return 15;
}
}
}
function ChangeVehicleMenu() {
if (localStorage.default === "true") {
let root = document.documentElement;
var vehiclemenutop = defaultValues.vehiclemenutop + "%";
var vehiclemenuleft = defaultValues.vehiclemenuleft + '%';
$('.vehiclemenu-container').css({
position:'absolute',
top:vehiclemenutop,
left:vehiclemenuleft
});
localStorage.scale = defaultValues.scale;
localStorage.color = defaultValues.color;
scaleslider.value = currentsliderdata();
currentscale = defaultValues.scale;
root.style.setProperty('--color', defaultValues.color);
$("#color-picker").spectrum("set", defaultValues.color);
$(".vehiclemenu-container").css("transform", "scale(" + defaultValues.scale + ")");
} else {
let root = document.documentElement;
var vehiclemenutop = localStorage.vehiclemenutop + 'px';
var vehiclemenuleft = localStorage.vehiclemenuleft + 'px';
var scaledata = localStorage.scale;
var color = localStorage.color;
$('.vehiclemenu-container').css({
position:'absolute',
top:vehiclemenutop,
left:vehiclemenuleft
});
$("#color-picker").spectrum("set", localStorage.color);
scaleslider.value = currentsliderdata();
root.style.setProperty('--color', color);
$(".vehiclemenu-container").css("transform", "scale(" + scaledata + ")");
}
};
function ResetVehicleMenuToDefault() {
let root = document.documentElement;
var vehiclemenutop = defaultValues.vehiclemenutop + "%";
var vehiclemenuleft = defaultValues.vehiclemenuleft + '%';
$('.vehiclemenu-container').css({
position:'absolute',
top:vehiclemenutop,
left:vehiclemenuleft
});
localStorage.scale = defaultValues.scale;
localStorage.color = defaultValues.color;
scaleslider.value = currentsliderdata();
currentscale = defaultValues.scale;
root.style.setProperty('--color', defaultValues.color);
$("#color-picker").spectrum("set", defaultValues.color);
$(".vehiclemenu-container").css("transform", "scale(" + defaultValues.scale + ")");
};

window.addEventListener('message', function (event) {

var item = event.data;

if (item.message == "vehiclemenushow") {
openMain();
document.getElementsByClassName("vehiclemenusettingsbuttonvehiclename1text")[0].innerHTML = item.vehiclenametext1data;
document.getElementsByClassName("vehiclemenusettingsbuttonvehiclename2text")[0].innerHTML= item.vehiclenametext2data;
document.getElementsByClassName("vehiclemenusettingsbuttonvehicleplatetext")[0].innerHTML = item.vehicleplatedata;
$('.vehiclemenufuelmaincontainerdata').css("height", item.vehiclefueldata+"%")
$("#vehiclemenusettingsshow").hide();
$("#vehiclemenusettingswindowshow").hide();
$("#vehiclemenusettingsseatshow").hide();
$("#vehiclemenusettingsextrasshow").hide();
$("#vehiclemenusettingsdoorshow").show();
$("#vehiclemenushow").show();
}
if (item.message == "addseat"){
$( ".vehiclemenusettingsseatlist" ).append('<div class="vehicleseat" seatid="' + item.vehicleseatid + '">' +
'<div class="vehicleseattext">' + item.vehicleseattext + '</div>' +
'</div>');
}

if (item.message == "addextra"){
$( ".vehiclemenusettingsextraslist" ).append('<div class="vehicleextras" extraid="' + item.vehicleextraid + '">' +
'<div class="vehicleextrastext">' + item.vehicleextratext + '</div>' +
'</div>');
}
if (item.message == "vehiclemenusettingsloadfirst") {
vehiclemenuresourcename = item.vehiclemenuresourcenamedata;
defaultValues.vehiclemenutop = item.vehiclemenupositiontopdata;
defaultValues.vehiclemenuleft = item.vehiclemenupositionleftdata;
defaultValues.scale = item.vehiclemenuscaledata;
defaultValues.color = item.vehiclemenucolordata;
if (localStorage.default == "false") {
} else {
localStorage.default = "true";
}
ChangeVehicleMenu();
}
if (item.message == "vehiclemenusettingsload") {
vehiclemenuresourcename = item.vehiclemenuresourcenamedata;
defaultValues.vehiclemenutop = item.vehiclemenupositiontopdata;
defaultValues.vehiclemenuleft = item.vehiclemenupositionleftdata;
defaultValues.scale = item.vehiclemenuscaledata;
defaultValues.color = item.vehiclemenucolordata;
if (localStorage.default == "false") {
} else {
localStorage.default = "true";
if (ineditmenu == "false") {
ResetVehicleMenuToDefault();
}
}
}

if (item.message == "vehiclemenureset") {
localStorage.default = "true";
ChangeVehicleMenu();
}
if (item.message == "hide") {
closeMain();
}
document.onkeyup = function (data) {
if (open) {
if (data.which == 27) {
if ($(".vehiclemenu-container").data('draggable')) {
ChangeVehicleMenu();
$(".vehiclemenu-container").draggable("destroy");
}
ineditmenu = "false";
$("#vehiclemenusettingsshow").hide();
$.post('https://'+vehiclemenuresourcename+'/quit', JSON.stringify({}));
}
}
};
});

$(".vehiclemenusettingsbuttonwarning").click(function () {
$.post('https://'+vehiclemenuresourcename+'/vehiclewarning', JSON.stringify({}));
});
$(".vehiclemenusettingsbuttonlight").click(function () {
$.post('https://'+vehiclemenuresourcename+'/vehiclelightinterior', JSON.stringify({}));
});

$(".vehiclemenusettingsbuttonlighth").click(function () {
$.post('https://'+vehiclemenuresourcename+'/vehiclelight', JSON.stringify({}));
});
$(".vehiclemenusettingsbuttonengine").click(function () {
$.post('https://'+vehiclemenuresourcename+'/vehicleengine', JSON.stringify({}));
});
$(".vehiclemenusettingsbuttonbind").click(function () {
$.post('https://'+vehiclemenuresourcename+'/vehiclebind', JSON.stringify({}));
});

$(".vehiclemenusettingsbuttonlock").click(function () {
$.post('https://'+vehiclemenuresourcename+'/vehiclelock', JSON.stringify({}));
});

$(".vehiclemenusettingsbuttonwater").click(function () {
$.post('https://'+vehiclemenuresourcename+'/vehiclewater', JSON.stringify({}));
});
$(".vehiclemenusettingsbuttonselect1").click(function () {
$("#vehiclemenusettingswindowshow").hide();
$("#vehiclemenusettingsseatshow").hide();
$("#vehiclemenusettingsextrasshow").hide();
$("#vehiclemenusettingsdoorshow").show();
});

$(".vehiclemenusettingsbuttonselect2").click(function () {
$("#vehiclemenusettingsdoorshow").hide();
$("#vehiclemenusettingsseatshow").hide();
$("#vehiclemenusettingsextrasshow").hide();
$("#vehiclemenusettingswindowshow").show();
});

$(".vehiclemenusettingsbuttonselect3").click(function () {
$( ".vehiclemenusettingsseatlist" ).empty()
$("#vehiclemenusettingsdoorshow").hide();
$("#vehiclemenusettingswindowshow").hide();
$("#vehiclemenusettingsextrasshow").hide();
$("#vehiclemenusettingsseatshow").show();
$.post('https://'+vehiclemenuresourcename+'/vehicleseats', JSON.stringify({}));
});

$(".vehiclemenusettingsbuttonselect4").click(function () {
$( ".vehiclemenusettingsextraslist" ).empty()
$("#vehiclemenusettingsdoorshow").hide();
$("#vehiclemenusettingswindowshow").hide();
$("#vehiclemenusettingsseatshow").hide();
$("#vehiclemenusettingsextrasshow").show();
$.post('https://'+vehiclemenuresourcename+'/vehicleextras', JSON.stringify({}));
});
$(".vehiclemenusettingsdoormain1").click(function () {
$.post('https://'+vehiclemenuresourcename+'/changedoor', JSON.stringify({
dooriddata: 4,
}));
});

$(".vehiclemenusettingsdoormain2").click(function () {
$.post('https://'+vehiclemenuresourcename+'/changedoor', JSON.stringify({
dooriddata: 5,
}));
});
$(".vehiclemenusettingsdoormain3").click(function () {
$.post('https://'+vehiclemenuresourcename+'/changedoor', JSON.stringify({
dooriddata: 0,
}));
});
$(".vehiclemenusettingsdoormain4").click(function () {
$.post('https://'+vehiclemenuresourcename+'/changedoor', JSON.stringify({
dooriddata: 1,
}));
});

$(".vehiclemenusettingsdoormain5").click(function () {
$.post('https://'+vehiclemenuresourcename+'/changedoor', JSON.stringify({
dooriddata: 2,
}));
});

$(".vehiclemenusettingsdoormain6").click(function () {
$.post('https://'+vehiclemenuresourcename+'/changedoor', JSON.stringify({
dooriddata: 3,
}));
});
$(".vehiclemenusettingswindowmain1").click(function () {
$.post('https://'+vehiclemenuresourcename+'/changewindow', JSON.stringify({
windowiddata: 0,
}));
});
$(".vehiclemenusettingswindowmain2").click(function () {
$.post('https://'+vehiclemenuresourcename+'/changewindow', JSON.stringify({
windowiddata: 1,
}));
});

$(".vehiclemenusettingswindowmain3").click(function () {
$.post('https://'+vehiclemenuresourcename+'/changewindow', JSON.stringify({
windowiddata: 2,
}));
});

$(".vehiclemenusettingswindowmain4").click(function () {
$.post('https://'+vehiclemenuresourcename+'/changewindow', JSON.stringify({
windowiddata: 3,
}));
});

$(".vehiclemenusettingsseatlist").on("click", ".vehicleseat", function() {
var $vehicleseathandler = $(this);
var $vehicleseatiddata = $vehicleseathandler.attr('seatid')
$.post('https://'+vehiclemenuresourcename+'/changeseat', JSON.stringify({
vehicleseatiddata: $vehicleseatiddata,
}));
});
$(".vehiclemenusettingsextraslist").on("click", ".vehicleextras", function() {
var $vehicleextrahandler = $(this);
var $vehicleextraiddata = $vehicleextrahandler.attr('extraid')
$.post('https://'+vehiclemenuresourcename+'/changeextra', JSON.stringify({
vehicleextraiddata: $vehicleextraiddata,
}));
});
$(".closevehiclemenusettings").click(function(){
ChangeVehicleMenu();
ineditmenu = "false";
$(".vehiclemenu-container").draggable("destroy");
$("#vehiclemenusettingsshow").hide();
});
$(".vehiclemenusettingsbuttonsettings").click(function(){
draggableElements();
ineditmenu = "true";
$("#vehiclemenusettingsshow").show();
});
$(".buttonvehiclemenusettingsreset").click(function(){
localStorage.default = "true";
ChangeVehicleMenu();
});
$(".buttonvehiclemenusettingssave").click(function(){
$(".vehiclemenu-container").draggable("disable")
localStorage.default = "false";
var vehiclemenupos = $(".vehiclemenu-container").position();
localStorage.vehiclemenutop = vehiclemenupos.top;
localStorage.vehiclemenuleft = vehiclemenupos.left;
localStorage.scale = currentscale;
localStorage.color = $("#color-picker").spectrum("get");
ChangeVehicleMenu();
$(".vehiclemenu-container").draggable("destroy");
ineditmenu = "false";
$("#vehiclemenusettingsshow").hide();
});
$(document).ready(function() {
$(".sp-container").on({
click: function(){
let root = document.documentElement;
var value = $("#color-picker").val();
var hexstring = $("#color-picker").spectrum("get");
root.style.setProperty('--color', hexstring);
localStorage.color = hexstring;
},
change: function(){
let root = document.documentElement;
var value = $("#color-picker").val();
root.style.setProperty('--color', hexstring);
var hexstring = $("#color-picker").spectrum("get");
localStorage.color = hexstring;
}
});
});
scaleslider.oninput = function() {
if (this.value == 5) {
$(".vehiclemenu-container").css("transform", "scale(0.5)");
currentscale = 0.5;
} else if (this.value == 6) {
$(".vehiclemenu-container").css("transform", "scale(0.6)");
currentscale = 0.6;
} else if (this.value == 7) {
$(".vehiclemenu-container").css("transform", "scale(0.7)");
currentscale = 0.7;
} else if (this.value == 8) {
$(".vehiclemenu-container").css("transform", "scale(0.8)");
currentscale = 0.8;
} else if (this.value == 9) {
$(".vehiclemenu-container").css("transform", "scale(0.9)");
currentscale = 0.9;
} else if (this.value == 10) {
$(".vehiclemenu-container").css("transform", "scale(1.0)");
currentscale = 1.0;
} else if (this.value == 11) {
$(".vehiclemenu-container").css("transform", "scale(1.1)");
currentscale = 1.1;
} else if (this.value == 12) {
$(".vehiclemenu-container").css("transform", "scale(1.2)");
currentscale = 1.2;
} else if (this.value == 13) {
$(".vehiclemenu-container").css("transform", "scale(1.3)");
currentscale = 1.3;
} else if (this.value == 14) {
$(".vehiclemenu-container").css("transform", "scale(1.4)");
currentscale = 1.4;
} else if (this.value == 15) {
$(".vehiclemenu-container").css("transform", "scale(1.5)");
currentscale = 1.5;
}
}
$('#color-picker').spectrum({
preferredFormat: "rgb",
showInput: true,
showPalette: false,
allowEmpty:false,
showAlpha: false,
showButtons: false
});
})

File diff suppressed because it is too large Load diff

View file

@ -1,141 +0,0 @@
<head>
<link rel="stylesheet" href="https://kit-pro.fontawesome.com/releases/v6.2.0/css/pro.min.css">
<link rel="stylesheet" href="styles.css" type="text/css">
<script src="https://code.jquery.com/jquery-3.6.1.min.js"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
<script src="https://cdn.jsdelivr.net/npm/spectrum-colorpicker2/dist/spectrum.min.js"></script>
<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/npm/spectrum-colorpicker2/dist/spectrum.min.css">
</head>

<body>
<div class="full-screen">
<div class="vehiclemenu-container" id="vehiclemenushow">
<div class="vehiclemenumain">
<div class="vehiclemenufuelmain">
<div class="vehiclemenufuelicon"><i class="fa-solid fa-gas-pump"></i></div>
<div class="vehiclemenufuelmaincontainer">
<div class="vehiclemenufuelmaincontainerdata"></div>
</div>
</div>
<div class="vehiclemenusettingsdoor" id="vehiclemenusettingsdoorshow">
<div class="vehiclemenusettingsdoormain">
<div class="vehiclemenusettingsdoormain1">
<div class="vehiclemenusettingsdoormain1text">MOTORHAUBE</div>
</div>
<div class="vehiclemenusettingsdoormain2">
<div class="vehiclemenusettingsdoormain2text">KOFFERAUM</div>
</div>
<div class="vehiclemenusettingsdoormain3">
<div class="vehiclemenusettingsdoormain3text">TÜR 1</div>
</div>
<div class="vehiclemenusettingsdoormain4">
<div class="vehiclemenusettingsdoormain4text">TÜR 2</div>
</div>
<div class="vehiclemenusettingsdoormain5">
<div class="vehiclemenusettingsdoormain5text">TÜR 3</div>
</div>
<div class="vehiclemenusettingsdoormain6">
<div class="vehiclemenusettingsdoormain6text">TÜR 4</div>
</div>
</div>
</div>
<div class="vehiclemenusettingswindow" id="vehiclemenusettingswindowshow">
<div class="vehiclemenusettingswindowmain">
<div class="vehiclemenusettingswindowmain1">
<div class="vehiclemenusettingswindowmain1text">FENSTER 1</div>
</div>
<div class="vehiclemenusettingswindowmain2">
<div class="vehiclemenusettingswindowmain2text">FENSTER 2</div>
</div>
<div class="vehiclemenusettingswindowmain3">
<div class="vehiclemenusettingswindowmain3text">FENSTER 3</div>
</div>
<div class="vehiclemenusettingswindowmain4">
<div class="vehiclemenusettingswindowmain4text">Fenster 4</div>
</div>
</div>
</div>
<div class="vehiclemenusettingsseat" id="vehiclemenusettingsseatshow">
<div class="vehiclemenusettingsseatmain">
<div class="body vehiclemenusettingsseatlist">
<div class="vehicleseat"><div class="vehicleseattext">SITZ 1</div></div><div class="vehicleseat"><div class="vehicleseattext">SITZ 1</div></div><div class="vehicleseat"><div class="vehicleseattext">SITZ 1</div></div>
</div>
</div>
</div>
<div class="vehiclemenusettingsextras" id="vehiclemenusettingsextrasshow">
<div class="vehiclemenusettingsextrasmain">
<div class="body vehiclemenusettingsextraslist">
<div class="vehicleextras"><div class="vehicleextrastext">EXTRAS 1</div></div><div class="vehicleextras"><div class="vehicleextrastext">EXTRAS 1</div></div>
</div>
</div>
</div>
<div class="vehiclemenusettingsbuttonwarning">
<div class="vehiclemenusettingsbuttonwarningicon"><i class="fa-light fa-solid fa-exclamation"></i></div>
</div>
<div class="vehiclemenusettingsbuttonlight">
<div class="vehiclemenusettingsbuttonlighticon"><i class="fa-light fa-lightbulb"></i></div>
</div>
<div class="vehiclemenusettingsbuttonlighth">
<img class="vehiclemenusettingsbuttonlighthicon" src="img/lights.svg">
</div>
<div class="vehiclemenusettingsbuttonengine">
<div class="vehiclemenusettingsbuttonengineicon"><i class="fa-light fa-power-off"></i></div>
</div>
<div class="vehiclemenusettingsbuttonbind">
<div class="vehiclemenusettingsbuttonbindicon"><i class="fa-light fa-waveform-lines"></i></div>
</div>
<div class="vehiclemenusettingsbuttonlock">
<div class="vehiclemenusettingsbuttonlockicon"><i class="fa-light fa-key"></i></div>
</div>
<div class="vehiclemenusettingsbuttonwater">
<img class="vehiclemenusettingsbuttonwatericon" src="img/water.svg">
</div>
</div>
<div class="vehiclemenusettingsbuttonvehiclename">
<div class="vehiclemenusettingsbuttonvehiclename1">
<div class="vehiclemenusettingsbuttonvehiclename1text">Lamborghini</div>
</div>
<div class="vehiclemenusettingsbuttonvehiclename2">
<div class="vehiclemenusettingsbuttonvehiclename2text">Aventador</div>
</div>
</div>
<div class="vehiclemenusettingsbuttonvehicleplate">
<div class="vehiclemenusettingsbuttonvehicleplatetext">8T6 2456</div>
</div>
<div class="vehiclemenusettingsbuttonsettings">
<div class="vehiclemenusettingsbuttonsettingsicon"><i class="fa-solid fa-gear"></i></div>
</div>
<div class="vehiclemenusettingsbuttonexit">
<img class="vehiclemenusettingsbuttonexiticon" src="img/close.svg">
</div>
<div class="vehiclemenusettingsbuttonselect1">
<img class="vehiclemenusettingsbuttonselect1icon" src="img/doors.svg">
</div>
<div class="vehiclemenusettingsbuttonselect2">
<img class="vehiclemenusettingsbuttonselect2icon" src="img/windows.svg">
</div>
<div class="vehiclemenusettingsbuttonselect3">
<div class="vehiclemenusettingsbuttonselect3icon"><i class="fa-regular fa-person-seat"></i></div>
</div>
<div class="vehiclemenusettingsbuttonselect4">
<div class="vehiclemenusettingsbuttonselect4icon"><i class="fa-light fa-bars"></i></div>
</div>
</div>
<div class="vehiclemenusettings-container" id="vehiclemenusettingsshow">
<img class="closevehiclemenusettings" src="img/close.svg">
<div class="vehiclemenusettingsmaintext">VEHICLE MENU SETTINGS</div>
<div class="vehiclemenusettingsmainscaletext">SCALE</div>
<div class="scaleslidercontainer">
<div class="scaleslideline">
</div>
<input type="range" min="5" max="15" value="10" class="scaleslider" id="scalesliderdata">
</div>
<div class="colorchanger">
<input class="pickercolor" id="color-picker" value="#ff66ff"/>
</div>
<div class="buttonvehiclemenusettingsreset">RESET</div>
<div class="buttonvehiclemenusettingssave">SAVE</div>
</div>
</div>
<script src="scripts.js" type="text/javascript"></script>
</body>

View file

@ -1,19 +0,0 @@
Language = {
["German"] = {
["vehiclelocked"] = "Du hast das Fahrzeug abgeschlossen",
["vehicleunlocked"] = "Du hast das Fahrzeug aufgeschlossen",
["seatoccupied"] = "Dieser Sitz ist besetzt",
["novehicle"] = "Du bist nicht im Fahrzeug",
["sprinklersenabled"] = "Du hast die Scheibenwischer des Fahrzeugs eingeschaltet",
["alreadyenabled"] = "Die Scheibenwischer sind bereits eingeschaltet",
["hazardlightson"] = "Du hast die Warnblinkanlage eingeschaltet",
["hazardlightsoff"] = "Du hast die Warnblinkanlage ausgeschaltet",
["interiorlightson"] = "Du hast das Innenlicht eingeschaltet",
["interiorlightsoff"] = "Du hast das Innenlicht ausgeschaltet",
["engineon"] = "Du hast den Motor gestartet",
["engineonoff"] = "Du hast den Motor ausgeschaltet",
["vehiclemenubind"] = "Fahrzeugmenü",
["seat"] = "Sitz",
["extra"] = "Extra",
},
}