1
0
Fork 0
forked from Simnation/Main
This commit is contained in:
Nordi98 2025-07-11 21:43:30 +02:00
parent 528d397851
commit 01bdabc7ed
7 changed files with 594 additions and 4 deletions

View file

@ -1,6 +1,3 @@
-----------------For support, scripts, and more----------------
--------------- https://discord.gg/wasabiscripts -------------
---------------------------------------------------------------
Strings = { Strings = {
intro_instruction = 'Drücke ~INPUT_ATTACK~ zum Auswerfen, ~INPUT_FRONTEND_RRIGHT~ zum Abbrechen.', intro_instruction = 'Drücke ~INPUT_ATTACK~ zum Auswerfen, ~INPUT_FRONTEND_RRIGHT~ zum Abbrechen.',
rope_broke = 'Kaputt.', rope_broke = 'Kaputt.',
@ -19,7 +16,7 @@ Strings = {
find_success_desc = 'Du hast eine/n %s gefunden!', find_success_desc = 'Du hast eine/n %s gefunden!',
sell_shop_blip = 'Schrotthändler', sell_shop_blip = 'Schrotthändler',
sell_finds = '[E] - Funde verkaufen', sell_finds = '[E] - Funde verkaufen',
kicked = 'Du kannst's versuchen, aber das klappt hier nicht.', kicked = 'Du kannst\'s versuchen, aber das klappt hier nicht.',
sold_for = 'Fund verkauft.', sold_for = 'Fund verkauft.',
sold_for_desc = 'Du hast %sx %s für $%s verkauft.', sold_for_desc = 'Du hast %sx %s für $%s verkauft.',
got_pull = 'Achtung, da zieht was!', got_pull = 'Achtung, da zieht was!',

View file

@ -0,0 +1,40 @@
--------------------EXTRA INTEGRATION SETTINGS---------------------
ei_masterswitch = false
-- Determines if extra_integration plugin can be activated.
ei_run_out_of_vehicle = false
-- Continue running state checks when player is out of vehicle, only after EI vehicle was last driven. (this is necessary for proper seat / door check)
-- Disable this to improve runtime efficiency. (Default: Disabled / False)
brakes_ei_enabled = true
-- Enables brake pressure integration.
reverse_ei_enabled = true
-- Enables reverse gear integration.
indicators_ei_enabled = true
-- Enables indicator integration. Requires extras to be mapped to indicator light_id. Flashes are not synced without this.
takedown_ei_enabled = true
-- Enables takedown integration.
seat_ei_enabled = true
-- Enabled driver seat detection.
door_ei_enabled = true
-- Enables driver & passenger door triggers.
siren_controller_ei_enabled = true
-- Enables air horn, siren, aux siren, and manual tone state triggers.
auto_brake_lights = true
-- Enables auto-set client side brake lights on stop (speed = 0) for both emergency and non-emergency vehicles.
auto_park = true
-- Turns off brake lights after being stopped for auto_park_time.
default_blackout_control = ''
-- Toggles vehicles headlights, brakelights controls: https://pastebin.com/u9ewvWWZ (Default: None/Disabled)
--[[ Documentation / Wiki: https://docs.luxartengineering.com/shared-plugins/extra-integrations ]]
EXTRA_ASSIGNMENTS = {
['LAPD'] = {
--[<extra_id>] = { repair = <true/false>, toggle = {<string(s)>}, reverse = <true/false>}
[3] = { toggle = { "Reverse" } },
[4] = { toggle = { "PDoor" } },
[5] = { toggle = { "Trunk" } },
[6] = { toggle = { "DDoor" } },
[7] = { toggle = { "Takedowns", "AirHorn" } },
[8] = { toggle = { "DSeat" } },
[9] = { toggle = { "DSeat" } , reverse = true},
},
}

View file

@ -0,0 +1,58 @@
--[[
---------------------------------------------------
LUXART VEHICLE CONTROL V3 (FOR FIVEM)
---------------------------------------------------
Coded by Lt.Caine
ELS Clicks by Faction
Additional Modification by TrevorBarns
---------------------------------------------------
FILE: cl_ragemenu.lua
PURPOSE: Handle RageUI
---------------------------------------------------
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
---------------------------------------------------
]]
if ei_masterswitch then
RMenu.Add('lvc', 'extrasettings', RageUI.CreateSubMenu(RMenu:Get('lvc', 'plugins'),' ', Lang:t('plugins.menu_ei'), 0, 0, "lvc", "lvc_plugin_logo"))
RMenu:Get('lvc', 'extrasettings'):DisplayGlare(false)
CreateThread(function()
while true do
RageUI.IsVisible(RMenu:Get('lvc', 'extrasettings'), function()
RageUI.Checkbox(Lang:t('plugins.ei_blackout'), Lang:t('plugins.ei_blackout_desc'), EI:GetBlackOutState(), {Enabled = auto_brake_lights}, {
onChecked = function()
EI:SetBlackoutState(true)
end,
onUnChecked = function()
EI:SetBlackoutState(false)
end
})
RageUI.List(Lang:t('plugins.ei_auto_park'), {'Off', '1/4', '1/2', '1', '5'}, EI:GetParkTimeIndex(), Lang:t('plugins.ei_auto_park_desc', {timer = ("%1.0f"):format((EI:GetStoppedTimer() / 1000) or 0)}), {}, auto_brake_lights and not EI:GetBlackOutState(), {
onListChange = function(Index, Item)
if Index > 1 then
EI:SetParkTimeIndex(Index)
EI:SetAutoPark(true)
else
EI:SetParkTimeIndex(Index)
EI:SetAutoPark(false)
end
end,
})
end)
Wait(0)
end
end)
end

View file

@ -0,0 +1,38 @@
--[[
PORTIONS OF THE CODE BELOW WAS CREATED BY WolfKnight IN THE WIDELY POPULAR BRRAKELIGHTS RESOURCE.
THANKS FOR HIS PERMISSION TO ADAPT FOR USE AND DISTRIBUTION WITH LVC FOR EXTRA INTEGRATION SUPPORT.
https://forum.cfx.re/t/release-vehicle-brake-lights-1-0-2-client-sync-updated-2019/15322
Copyright (c) 2022 TrevorBarns
Copyright (c) 2017-2022 WolfKnight
]]
if auto_brake_lights then
local ped = nil
local vehicle = nil
CreateThread( function()
while true do
ped = GetPlayerPed( -1 )
if DoesEntityExist( ped ) and not IsEntityDead( ped ) and IsPedSittingInAnyVehicle( ped ) then
vehicle = GetVehiclePedIsIn( ped, false )
if GetPedInVehicleSeat( vehicle, -1 ) == ped then
if not EI.blackout and not EI.auto_park_state then
if GetVehicleClass( veh ) ~= 14 and GetVehicleClass( veh ) ~= 15 and GetVehicleClass( veh ) ~= 16 and GetVehicleClass( veh ) ~= 21 then
if ( GetEntitySpeed( vehicle ) < 0.1 and GetIsVehicleEngineRunning( vehicle ) ) then
SetVehicleBrakeLights( vehicle, true )
end
end
else
SetVehicleBrakeLights(vehicle, false)
end
else
Wait(500)
end
else
Wait(500)
end
Wait(1)
end
end )
end

View file

@ -0,0 +1,423 @@
--[[
---------------------------------------------------
LUXART VEHICLE CONTROL V3 (FOR FIVEM)
---------------------------------------------------
Coded by Lt.Caine
ELS Clicks by Faction
Additional Modification by TrevorBarns
---------------------------------------------------
FILE: cl_extras.lua
PURPOSE: Contains threads, functions to toggle
extras based on vehicle states / inputs.
---------------------------------------------------
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
---------------------------------------------------
]]
EI = { }
EI.blackout = false
EI.auto_park_state = false
if ei_masterswitch then
-- Local variable to be set, do not edit.
local enabled_triggers = {
['Brake'] = false,
['Reverse'] = false,
['RIndicator'] = false,
['LIndicator'] = false,
['Stopped'] = false,
['Takedowns'] = false,
['DSeat'] = false,
['DDoor'] = false,
['PDoor'] = false,
['Trunk'] = false,
['MainSiren'] = false,
['AuxSiren'] = false,
['AirHorn'] = false,
['Manu'] = false
}
local auto_park_time_lookup = { [1] = 0, [2] = 15000, [3] = 30000, [4] = 60000, [5] = 300000 }
local auto_park_time_index = 2
local accel_pedal = 0
local stopped_timer = 0
local extras = { }
local profile = false
local previous_brake_ei_enabled = false
----------------REGISTERED COMMANDS---------------
--Toggles blackout mode
RegisterCommand('lvcblackout', function(source, args, rawCommand)
if player_is_emerg_driver then
EI:SetBlackoutState(not EI.blackout)
end
end)
RegisterKeyMapping('lvcblackout', Lang:t('plugins.ei_control_desc'), 'keyboard', default_blackout_control)
TriggerEvent('chat:addSuggestion', '/lvcblackout', Lang:t('plugins.ei_command_desc'))
----------------THREADED FUNCTIONS----------------
--[[Startup Initialization]]
CreateThread(function()
Wait(500)
UTIL:FixOversizeKeys(EXTRA_ASSIGNMENTS)
end)
--[[Function caller for extra state checking.]]
-- If driver then call RefreshExtras ever 50ms to toggle states.
CreateThread( function()
while true do
if veh ~= nil and profile ~= false then
EI:RefreshExtras()
else
Wait(500)
end
Wait(50)
end
end)
--[[Extra State Trigger Control]]
-- Determines vehicles state and sets Triggers
CreateThread( function()
while true do
if veh ~= nil and profile ~= false then
if player_is_emerg_driver or run_when_out_of_vehicle then
for _, trigger_table in pairs(extras) do
if trigger_table.toggle ~= nil then
------------------------------------------------------------
--BRAKE LIGHTS
if brakes_ei_enabled and enabled_triggers['Brake'] then
accel_pedal = GetVehicleThrottleOffset(veh)
if ( not auto_park or stopped_timer < auto_park_time_lookup[auto_park_time_index] ) and -- Auto Park Check
( GetControlNormal(1, 72) > 0.1 or -- Brake (LTrigger) 0.0-1.0
( GetControlNormal(1, 72) > 0.0 and GetControlNormal(1, 71) > 0.0 ) or -- Brake & Gas at same time
( GetEntitySpeed(veh) < 0.2 and GetIsVehicleEngineRunning(veh) )) and -- Vehicle is stopped
( not ( accel_pedal < 0.0 or tostring(accel_pedal) == '-0.0')) then -- Is vehicle not reversing or at max reverse speed
EI:SetState('Brake', true)
elseif trigger_table.active['Brake'] == true then
EI:SetState('Brake', false)
end
end
------------------------------------------------------------
--REVERSE LIGHTS
if reverse_ei_enabled and enabled_triggers['Reverse'] then
accel_pedal = GetVehicleThrottleOffset(veh)
if accel_pedal < 0 or tostring(accel_pedal) == '-0.0' then
EI:SetState('Reverse', true)
elseif trigger_table.active['Reverse'] == true then
EI:SetState('Reverse', false)
end
end
------------------------------------------------------------
--INDICATORS
if indicators_ei_enabled and enabled_triggers['LIndicator'] or enabled_triggers['RIndicator'] then
if state_indic[veh] == 1 then
EI:SetState('LIndicator', true)
elseif state_indic[veh] == 2 then
EI:SetState('RIndicator', true)
elseif state_indic[veh] == 3 then
EI:SetState('LIndicator', true)
EI:SetState('RIndicator', true)
elseif trigger_table.active['LIndicator'] or trigger_table.active['RIndicator'] then
EI:SetState('LIndicator', false)
EI:SetState('RIndicator', false)
end
end
------------------------------------------------------------
--STOPPED--
if enabled_triggers['Stopped'] then
if GetEntitySpeed(veh) < 0.1 then
EI:SetState('Stopped', true)
elseif trigger_table.active['Stopped'] then
EI:SetState('Stopped', false)
end
end
------------------------------------------------------------
--TAKEDOWNS--
if takedown_ei_enabled and tkd_masterswitch and enabled_triggers['Takedowns'] then
if state_tkd[veh] ~= nil and state_tkd[veh] then
EI:SetState('Takedowns', true)
elseif trigger_table.active['Takedowns'] == true then
EI:SetState('Takedowns', false)
end
end
------------------------------------------------------------
--DOORS--
if door_ei_enabled then
if enabled_triggers['DDoor'] then
if GetVehicleDoorAngleRatio(veh, 0) > 0.0 then
EI:SetState('DDoor', true)
Wait(100)
elseif trigger_table.active['DDoor'] == true then
EI:SetState('DDoor', false)
end
end
if enabled_triggers['PDoor'] then
if GetVehicleDoorAngleRatio(veh, 1) > 0.0 then
EI:SetState('PDoor', true)
Wait(100)
elseif trigger_table.active['PDoor'] == true then
EI:SetState('PDoor', false)
end
end
if enabled_triggers['Trunk'] then
if GetVehicleDoorAngleRatio(veh, 5) > 0.0 then
EI:SetState('Trunk', true)
Wait(100)
elseif trigger_table.active['Trunk'] == true then
EI:SetState('Trunk', false)
end
end
end
------------------------------------------------------------
-- SEAT DETECTION (deactivate)
if seat_ei_enabled then
if enabled_triggers['DSeat'] then
if trigger_table.active['DSeat'] == true then
Wait(1000)
EI:SetState('DSeat', false)
end
end
end
------------------------------------------------------------
--MAIN SIREN
if siren_controller_ei_enabled then
if enabled_triggers['MainSiren'] then
if state_lxsiren[veh] ~= nil and state_lxsiren[veh] > 0 then
EI:SetState('MainSiren', true)
elseif trigger_table.active['MainSiren'] == true then
EI:SetState('MainSiren', false)
end
end
--AUXILARY SIREN
if enabled_triggers['AuxSiren'] then
if state_pwrcall[veh] ~= nil and state_pwrcall[veh] > 0 then
EI:SetState('AuxSiren', true)
elseif trigger_table.active['AuxSiren'] == true then
EI:SetState('AuxSiren', false)
end
end
--AIRHORN
if enabled_triggers['AirHorn'] then
if actv_horn ~= nil and actv_horn and not actv_manu then
EI:SetState('AirHorn', true)
elseif trigger_table.active['AirHorn'] == true then
EI:SetState('AirHorn', false)
end
end
--MANUAL TONE
if enabled_triggers['Manu'] then
if actv_manu ~= nil and actv_manu then
EI:SetState('Manu', true)
elseif trigger_table.active['Manu'] == true then
EI:SetState('Manu', false)
end
end
end
------------------------------------------------------------
end
end
Wait(50)
else
Wait(50)
end
else
Wait(500)
end
end
end)
--[[Auto Park Control]]
-- Turns off brakelights after being stopped for extended period of time, only for LVC menu enabled vehicles (emergency class)
CreateThread(function()
while true do
if veh ~= nil and profile ~= false then
if auto_brake_lights and auto_park and not EI.blackout then
if player_is_emerg_driver then
while GetEntitySpeed(veh) < 0.1 and GetIsVehicleEngineRunning(veh) and auto_park and not EI.blackout do
if stopped_timer < auto_park_time_lookup[auto_park_time_index] then
Wait(1000)
stopped_timer = stopped_timer + 1000
end
Wait(0)
end
stopped_timer = 0
EI.auto_park_state = false
else
Wait(500)
end
else
Wait(500)
end
else
Wait(500)
end
Wait(0)
end
end)
CreateThread(function()
while true do
if stopped_timer > 0 and not EI.auto_park_state then
if stopped_timer >= auto_park_time_lookup[auto_park_time_index] then
EI.auto_park_state = true
end
else
Wait(1000)
end
Wait(0)
end
end)
---------------------FUNCTIONS--------------------
--[Toggles blackout mode]
-- Disabled vehicles headlights,
function EI:SetBlackoutState(state)
EI.blackout = state
stopped_timer = 0
if EI.blackout then
SetVehicleLights(veh, 1)
previous_brake_ei_enabled = brakes_ei_enabled
brakes_ei_enabled = false
AUDIO:Play('Upgrade', AUDIO.upgrade_volume)
else
SetVehicleLights(veh, 0)
brakes_ei_enabled = previous_brake_ei_enabled
AUDIO:Play('Downgrade', AUDIO.downgrade_volume)
end
end
--[[Set state table]]
function EI:SetState(trigger_to_set, state)
for extra_id, trigger_table in pairs(extras) do
if trigger_table.toggle ~= nil then
for i, trigger in ipairs(trigger_table.toggle) do
if trigger == trigger_to_set then
if state then
trigger_table.active[trigger_to_set] = true
else
trigger_table.active[trigger_to_set] = nil
end
end
end
end
end
end
--[[Set extras state based on state table]]
function EI:RefreshExtras()
for extra_id, trigger_table in pairs(extras) do
local count = 0
for i,v in pairs(trigger_table.active) do
count = count + 1
end
local active = true
if trigger_table.reverse then
active = false
end
if count > 0 then
UTIL:TogVehicleExtras(veh, extra_id, active, trigger_table.repair or false)
else
UTIL:TogVehicleExtras(veh, extra_id, not active, trigger_table.repair or false)
end
end
end
--[[RageUI Menu Getter/Setters]]
function EI:GetStoppedTimer()
return stopped_timer
end
function EI:GetParkTimeIndex()
return auto_park_time_index
end
function EI:SetParkTimeIndex(index)
if index ~= nil and auto_park_time_lookup[index] ~= nil then
auto_park_time_index = index
end
end
function EI:SetAutoPark(state)
auto_park = state
end
function EI:GetBlackOutState()
return EI.blackout
end
---------------------------------------------------------------------
--Clear brakelights and handle exit vehicle state
RegisterNetEvent('lvc:onVehicleExit')
AddEventHandler('lvc:onVehicleExit', function()
if veh ~= nil and profile ~= false then
-- SEAT DETECTION (activation)
if seat_ei_enabled then
if enabled_triggers['DSeat'] then
if not IsVehicleSeatFree(veh, -1) then
EI:SetState('DSeat', true)
end
end
end
end
end)
--Triggered when vehicle changes (cl_lvc.lua)
RegisterNetEvent('lvc:onVehicleChange')
AddEventHandler('lvc:onVehicleChange', function()
--disable (reset) all triggers to off before setting assigned triggers
for trigger, state in ipairs(enabled_triggers) do
state = false
end
extras, profile = UTIL:GetProfileFromTable('EXTRA INTEGRATIONS', EXTRA_ASSIGNMENTS, veh, true)
if profile then
for extra_id, trigger_table in pairs(extras) do
--Initialize active tables
trigger_table.active = { }
--Alert if extra table found that does not align with vehicle configuration.
if not DoesExtraExist(veh, extra_id) then
UTIL:Print(Lang:t('plugins.ei_invalid_exta', { extra = extra_id, profile = profile}), true)
end
--Enable triggers for extras that exist
if trigger_table.toggle ~= nil then
for _, trigger in pairs(trigger_table.toggle) do
if enabled_triggers[trigger] == false then
enabled_triggers[trigger] = true
end
end
end
if trigger_table.add ~= nil then
for _, trigger in pairs(trigger_table.add) do
if enabled_triggers[trigger] == false then
enabled_triggers[trigger] = true
end
end
end
if trigger_table.remove ~= nil then
for _, trigger in pairs(trigger_table.remove) do
if enabled_triggers[trigger] == false then
enabled_triggers[trigger] = true
end
end
end
end
end
end)
end

View file

@ -0,0 +1,33 @@
--[[
---------------------------------------------------
LUXART VEHICLE CONTROL V3 (FOR FIVEM)
---------------------------------------------------
Coded by Lt.Caine
ELS Clicks by Faction
Additional Modification by TrevorBarns
---------------------------------------------------
FILE: sv_version.lua
PURPOSE: Handle plugin version checking.
---------------------------------------------------
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
---------------------------------------------------
]]
local plugin_name = 'extra_integration'
local plugin_version = '1.2.1'
RegisterServerEvent('lvc:plugins_getVersions')
AddEventHandler('lvc:plugins_getVersions', function()
TriggerEvent('lvc:plugins_storePluginVersion', plugin_name, plugin_version)
end)

View file

@ -0,0 +1 @@
1.2.1