Skip to content

Commit cef19a5

Browse files
committed
Update v4.1.2
* Fixed Hotwire Feature * Fixed that you can still drive with motocycles if engine is off
1 parent 871a084 commit cef19a5

File tree

5 files changed

+72
-53
lines changed

5 files changed

+72
-53
lines changed

VERSION

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
4.1.1
1+
4.1.2

client/client.lua

Lines changed: 65 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -44,13 +44,11 @@ toggleEngine = function(bypass)
4444
return Config.Notification(nil, Translation[Config.Locale]['key_nokey'], 'error')
4545
end
4646

47-
if getVehicleDamaged(currVehicle) then return end
47+
if GetVehicleDamaged(currVehicle) then return end
4848
local isEngineOn = GetIsVehicleEngineRunning(currVehicle)
4949

50-
SetVehicleEngineOn(currVehicle, not isEngineOn, false, true)
50+
SetEngineState(currVehicle, not isEngineOn, true)
5151
SetVehicleKeepEngineOnWhenAbandoned(currVehicle, not isEngineOn)
52-
SetVehicleUndriveable(currVehicle, isEngineOn)
53-
setEngineState(currVehicle, not isEngineOn)
5452

5553
if isEngineOn then
5654
CreateThread(disableDrive)
@@ -72,12 +70,11 @@ AddEventHandler('msk_enginetoggle:enteringVehicle', function(vehicle, plate, sea
7270
logging('SetVehicleUndriveable')
7371

7472
if not Config.EngineOnAtEnter then
75-
SetVehicleUndriveable(vehicle, true)
76-
SetVehicleEngineOn(vehicle, false, false, true)
73+
SetEngineState(vehicle, false, true)
7774
SetVehicleKeepEngineOnWhenAbandoned(vehicle, false)
7875
end
7976
elseif seat == -1 and isEngineOn and (IsThisModelAHeli(vehicleModel) or IsThisModelAPlane(vehicleModel)) then
80-
SetVehicleEngineOn(vehicle, true, false, true)
77+
SetEngineState(vehicle, true, true)
8178
SetVehicleKeepEngineOnWhenAbandoned(vehicle, true)
8279
SetHeliBladesFullSpeed(vehicle)
8380
end
@@ -92,17 +89,15 @@ AddEventHandler('msk_enginetoggle:enteredVehicle', function(vehicle, plate, seat
9289
logging('SetVehicleUndriveable')
9390

9491
if not Config.EngineOnAtEnter then
95-
CreateThread(disableDrive)
96-
SetVehicleUndriveable(vehicle, true)
97-
SetVehicleEngineOn(vehicle, false, false, true)
92+
SetEngineState(vehicle, false, true)
9893
SetVehicleKeepEngineOnWhenAbandoned(vehicle, false)
94+
CreateThread(disableDrive)
9995
else
100-
SetVehicleUndriveable(vehicle, false)
101-
SetVehicleEngineOn(vehicle, true, false, true)
96+
SetEngineState(vehicle, true, true)
10297
SetVehicleKeepEngineOnWhenAbandoned(vehicle, true)
10398
end
10499
elseif seat == -1 and isEngineOn and (IsThisModelAHeli(vehicleModel) or IsThisModelAPlane(vehicleModel)) then
105-
SetVehicleEngineOn(vehicle, true, false, true)
100+
SetEngineState(vehicle, true, true)
106101
SetVehicleKeepEngineOnWhenAbandoned(vehicle, true)
107102
SetHeliBladesFullSpeed(vehicle)
108103
end
@@ -115,8 +110,7 @@ AddEventHandler('msk_enginetoggle:exitedVehicle', function(vehicle, plate, seat,
115110

116111
if seat == -1 and not isEngineOn then
117112
logging('SetVehicleUndriveable')
118-
SetVehicleUndriveable(vehicle, true)
119-
SetVehicleEngineOn(vehicle, false, false, true)
113+
SetEngineState(vehicle, false, true)
120114
SetVehicleKeepEngineOnWhenAbandoned(vehicle, false)
121115
end
122116
end)
@@ -130,12 +124,12 @@ CreateThread(function()
130124
for i = 1, #vehiclePool do
131125
local vehicle = vehiclePool[i]
132126

133-
if DoesEntityExist(vehicle) and not getVehicleDamaged(vehicle) and IsVehicleSeatFree(vehicle, -1) and (not IsPedInAnyVehicle(playerPed, false) or (IsPedInAnyVehicle(playerPed, false) and vehicle ~= GetVehiclePedIsIn(playerPed, false))) then
127+
if DoesEntityExist(vehicle) and not GetVehicleDamaged(vehicle) and IsVehicleSeatFree(vehicle, -1) and (not IsPedInAnyVehicle(playerPed, false) or (IsPedInAnyVehicle(playerPed, false) and vehicle ~= GetVehiclePedIsIn(playerPed, false))) then
134128
local vehicleModel = GetEntityModel(vehicle)
135129

136130
if (IsThisModelAHeli(vehicleModel) or IsThisModelAPlane(vehicleModel)) then
137-
if getEngineState(vehicle) then
138-
SetVehicleEngineOn(vehicle, true, false, true)
131+
if GetEngineState(vehicle) then
132+
SetEngineState(vehicle, true, true)
139133
SetVehicleKeepEngineOnWhenAbandoned(vehicle, true)
140134
SetHeliBladesFullSpeed(vehicle)
141135
end
@@ -159,8 +153,8 @@ CreateThread(function()
159153
local plate = GetVehicleNumberPlateText(vehicle)
160154
local seat = GetSeatPedIsTryingToEnter(playerPed)
161155
local netId = VehToNet(vehicle)
162-
local isEngineOn = getEngineState(vehicle)
163-
local isDamaged = getVehicleDamaged(vehicle)
156+
local isEngineOn = GetEngineState(vehicle)
157+
local isDamaged = GetVehicleDamaged(vehicle)
164158
isEnteringVehicle = true
165159
TriggerEvent('msk_enginetoggle:enteringVehicle', vehicle, plate, seat, netId, isEngineOn, isDamaged)
166160
TriggerServerEvent('msk_enginetoggle:enteringVehicle', plate, seat, netId, isEngineOn, isDamaged)
@@ -175,8 +169,8 @@ CreateThread(function()
175169
currentVehicle.plate = GetVehicleNumberPlateText(currentVehicle.vehicle)
176170
currentVehicle.seat = GetPedVehicleSeat(playerPed, currentVehicle.vehicle)
177171
currentVehicle.netId = VehToNet(currentVehicle.vehicle)
178-
currentVehicle.isEngineOn = getEngineState(currentVehicle.vehicle)
179-
currentVehicle.isDamaged = getVehicleDamaged(currentVehicle.vehicle)
172+
currentVehicle.isEngineOn = GetEngineState(currentVehicle.vehicle)
173+
currentVehicle.isDamaged = GetVehicleDamaged(currentVehicle.vehicle)
180174
TriggerEvent('msk_enginetoggle:enteredVehicle', currentVehicle.vehicle, currentVehicle.plate, currentVehicle.seat, currentVehicle.netId, currentVehicle.isEngineOn, currentVehicle.isDamaged)
181175
TriggerServerEvent('msk_enginetoggle:enteredVehicle', currentVehicle.plate, currentVehicle.seat, currentVehicle.netId,currentVehicle.isEngineOn, currentVehicle.isDamaged)
182176
end
@@ -193,59 +187,84 @@ CreateThread(function()
193187
end
194188
end)
195189

196-
setEngineState = function(vehicle, state)
197-
logging('setEngineState', vehicle, state)
190+
SetEngineState = function(vehicle, state, engine)
191+
if not DoesEntityExist(vehicle) then return end
192+
logging('SetEngineState', vehicle, state)
193+
198194
currentVehicle.isEngineOn = state
199-
Entity(vehicle).state.isEngineOn = state
195+
Entity(vehicle).state:set('isEngineOn', state, true)
196+
197+
if not engine then return end
198+
SetVehicleEngineOn(vehicle, state, false, true)
199+
SetVehicleUndriveable(vehicle, not state)
200200
end
201+
exports('SetEngineState', SetEngineState)
202+
203+
GetEngineState = function(vehicle)
204+
if not vehicle then vehicle = GetVehiclePedIsIn(PlayerPedId()) end
205+
if not DoesEntityExist(vehicle) then return end
201206

202-
getEngineState = function(vehicle)
203207
if Entity(vehicle).state.isEngineOn == nil then
204-
Entity(vehicle).state.isEngineOn = GetIsVehicleEngineRunning(vehicle)
208+
SetEngineState(vehicle, GetIsVehicleEngineRunning(vehicle), false)
205209
end
206210
return Entity(vehicle).state.isEngineOn
207211
end
208-
exports('getEngineState', getEngineState)
212+
exports('GetEngineState', GetEngineState)
213+
exports('getEngineState', GetEngineState) -- Support for old versions
214+
215+
SetVehicleDamaged = function(vehicle, state)
216+
if not DoesEntityExist(vehicle) then return end
217+
logging('SetVehicleDamaged', vehicle, state)
209218

210-
setVehicleDamaged = function(vehicle, state)
211-
logging('setVehicleDamaged', vehicle, state)
212219
currentVehicle.isDamaged = state
213-
Entity(vehicle).state.isDamaged = state
220+
Entity(vehicle).state:set('isDamaged', state, true)
214221
end
215-
exports('setVehicleDamaged', setVehicleDamaged)
216-
RegisterNetEvent('msk_enginetoggle:setVehicleDamaged', setVehicleDamaged)
222+
exports('SetVehicleDamaged', SetVehicleDamaged)
223+
exports('setVehicleDamaged', SetVehicleDamaged) -- Support for old versions
224+
RegisterNetEvent('msk_enginetoggle:setVehicleDamaged', SetVehicleDamaged)
225+
226+
GetVehicleDamaged = function(vehicle)
227+
if not vehicle then vehicle = GetVehiclePedIsIn(PlayerPedId()) end
228+
if not DoesEntityExist(vehicle) then return end
217229

218-
getVehicleDamaged = function(vehicle)
219230
if Entity(vehicle).state.isDamaged == nil then
220-
Entity(vehicle).state.isDamaged = false
231+
SetVehicleDamaged(vehicle, false)
221232
end
222233
return Entity(vehicle).state.isDamaged
223234
end
224-
exports('getVehicleDamaged', getVehicleDamaged)
235+
exports('GetVehicleDamaged', GetVehicleDamaged)
236+
exports('getVehicleDamaged', GetVehicleDamaged) -- Support for old versions
237+
238+
GetPedVehicleSeat = function(playerPed, vehicle)
239+
if not playerPed then playerPed = PlayerPedId() end
240+
if not vehicle then vehicle = GetVehiclePedIsIn(playerPed) end
241+
if not DoesEntityExist(vehicle) then return end
242+
243+
for i = -1, 16 do
244+
if (GetPedInVehicleSeat(vehicle, i) == playerPed) then
245+
return i
246+
end
247+
end
248+
return -1
249+
end
225250

226251
disableDrive = function()
227252
if disabledDrive then return end
228253
disabledDrive = true
229254

230-
while isInVehicle and disabledDrive and currentVehicle.seat == -1 and not currentVehicle.isEngineOn do
255+
while isInVehicle and disabledDrive and GetPedVehicleSeat() == -1 and not currentVehicle.isEngineOn do
231256
local sleep = 1
232257

233-
DisableControlAction(0, 71, true)
258+
DisableControlAction(0, 71, true) -- W
259+
DisableControlAction(0, 72, true) -- S
234260

235261
Wait(sleep)
236262
end
237263

238264
disabledDrive = false
239265
end
240266

241-
GetPedVehicleSeat = function(ped, vehicle)
242-
for i = -1, 16 do
243-
if (GetPedInVehicleSeat(vehicle, i) == ped) then return i end
244-
end
245-
return -1
246-
end
247-
248267
logging = function(...)
249268
if not Config.Debug then return end
250-
print('[DEBUG]', ...)
269+
print('[^3DEBUG^0]', ...)
251270
end

config.lua

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ Config.EngineFromSecondSeat = false
4545
-- vehicle_keys: https://forum.cfx.re/t/esx-qbcore-vehicles-keys-vehicles-lock-remote-control-ui-and-much-more/4857274
4646

4747
Config.VehicleKeys = {
48-
enable = false,
48+
enable = false, -- Set true to enable this feature
4949
script = 'VehicleKeyChain' -- Set to 'VehicleKeyChain' or 'vehicle_keys'
5050
}
5151
----------------------------------------------------------------

fxmanifest.lua

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ games { 'gta5' }
44
author 'Musiker15 - MSK Scripts'
55
name 'msk_enginetoggle'
66
description 'EngineToggle for Vehicles'
7-
version '4.1.1'
7+
version '4.1.2'
88

99
lua54 'yes'
1010

server/server_hotwire.lua

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
if Config.EnableLockpick then
22
if Config.Framework == 'ESX' then
33
ESX.RegisterUsableItem(Config.LockpickSettings.item, function(source)
4-
TriggerClientEvent('msk_enginetoggle:hotwire', source)
4+
TriggerClientEvent('msk_enginetoggle:toggleHotwire', source)
55
end)
66

77
ESX.RegisterServerCallback('msk_enginetoggle:hasItem', function(source, cb, item)
88
local src = source
9-
local xPlayer = ESX.getPlayerFromId(src)
9+
local xPlayer = ESX.GetPlayerFromId(src)
1010
local hasItem = xPlayer.hasItem(item)
1111

1212
if hasItem and hasItem.count > 0 then
@@ -17,7 +17,7 @@ if Config.EnableLockpick then
1717
end)
1818
elseif Config.Framework == 'QBCore' then
1919
QBCore.Functions.CreateUseableItem(Config.LockpickSettings.item, function(source)
20-
TriggerClientEvent('msk_enginetoggle:hotwire', source)
20+
TriggerClientEvent('msk_enginetoggle:toggleHotwire', source)
2121
end)
2222

2323
QBCore.Functions.CreateCallback('msk_enginetoggle:hasItem', function(source, cb, item)
@@ -36,8 +36,8 @@ if Config.EnableLockpick then
3636
end
3737

3838
RegisterNetEvent('msk_enginetoggle:removeLockpickItem', function()
39-
local src = source
4039
if not Config.LockpickSettings.removeItem then return end
40+
local src = source
4141

4242
if Config.Framework == 'ESX' then
4343
local xPlayer = ESX.GetPlayerFromId(src)

0 commit comments

Comments
 (0)