64 lines
2.0 KiB
Lua
64 lines
2.0 KiB
Lua
local function onBought(ply, ent)
|
|
for _, v in pairs(ent.Seats or {}) do
|
|
if not IsValid(v) or not v:isKeysOwnable() then continue end
|
|
v:keysOwn(ply)
|
|
end
|
|
end
|
|
hook.Add("playerBoughtVehicle", "PassengerModCompatibility", onBought)
|
|
hook.Add("playerBoughtCustomVehicle", "PassengerModCompatibility", function(ply, _, ent) onBought(ply, ent) end)
|
|
|
|
|
|
local function onLocked(ent)
|
|
-- Passenger mod
|
|
for _, v in pairs(ent.Seats or {}) do
|
|
v:Fire("lock", "", 0)
|
|
end
|
|
|
|
-- VUMod compatibility
|
|
-- Locks passenger seats when the vehicle is locked.
|
|
if ent:IsVehicle() and ent.VehicleTable and ent.VehicleTable.Passengers then
|
|
for _, v in pairs(ent.VehicleTable.Passengers) do
|
|
v.Ent:Fire("lock", "", 0)
|
|
end
|
|
end
|
|
|
|
-- Locks the vehicle if you're unlocking a passenger seat:
|
|
if IsValid(ent:GetParent()) and ent:GetParent():IsVehicle() then
|
|
ent:GetParent():keysLock()
|
|
end
|
|
end
|
|
hook.Add("onKeysLocked", "PassengerModCompatibility", onLocked)
|
|
|
|
local function onUnlocked(ent)
|
|
-- Passenger mod
|
|
for _, v in pairs(ent.Seats or {}) do
|
|
v:Fire("unlock", "", 0)
|
|
end
|
|
|
|
-- VUMod
|
|
if ent:IsVehicle() and ent.VehicleTable and ent.VehicleTable.Passengers then
|
|
for _ ,v in pairs(ent.VehicleTable.Passengers) do
|
|
v.Ent:Fire("unlock", "", 0)
|
|
end
|
|
end
|
|
|
|
|
|
-- Unlocks the vehicle if you're unlocking a passenger seat:
|
|
if IsValid(ent:GetParent()) and ent:GetParent():IsVehicle() then
|
|
ent:GetParent():keysUnLock()
|
|
end
|
|
end
|
|
hook.Add("onKeysUnlocked", "PassengerModCompatibility", onUnlocked)
|
|
|
|
local function ejectOnRam(success, ply, trace)
|
|
local ent = trace.Entity
|
|
if not success or not IsValid(ent) or not ent:IsVehicle() then return end
|
|
if not ent.VehicleTable or not ent.VehicleTable.Passengers then return end
|
|
|
|
for _, v in pairs(ent.VehicleTable.Passengers) do
|
|
local passenger = v:GetDriver()
|
|
if IsValid(passenger) then passenger:ExitVehicle() end
|
|
end
|
|
end
|
|
hook.Add("onDoorRamUsed", "PassengerModCompatibility", ejectOnRam)
|