Files
mmkrp_2026/gamemodes/darkrp/gamemode/modules/passengermodcompat.lua
2026-03-15 14:54:49 +03:00

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)