Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- --Now this is really stupid
- --Seems like i can't get the name of the vehicle when it's spawned but i can get the name when it's about to get spawned
- --In the wiki it says that jalopy = "prop_vehicle_jalopy" and jeep = "prop_vehicle_jeep" but in fact THEY ARE BOTH EQUAL TO "prop_vehicle_jeep"
- --And there is no way to check any difference between them so i have to use a temp variable.
- local lastVehicleName = ""
- function SpawningVehicleWithExtraSeats( player, model, vehiclename, vehicletable ) --Vehicle is about to spawn
- lastVehicleName = vehiclename
- end
- hook.Add( "PlayerSpawnVehicle", "SpawningVehicleWithExtraSeats", SpawningVehicleWithExtraSeats )
- --Adding the extra seats to a vehicle when it's spawned
- function SpawnVehicleWithExtraSeats( ply, veh ) --Vehicle is spawned
- local seatInfo = SeatRegister:GetCarSeatInfo( lastVehicleName )
- lastVehicleName = ""
- if seatInfo then
- local allSeats = {}
- for i = 1, seatInfo.NumberOfSeats do
- allSeats[i] = ents.Create("prop_vehicle_prisoner_pod")
- allSeats[i]:SetModel("models/nova/airboat_seat.mdl")
- allSeats[i]:SetPos( veh:GetPos() + veh:GetForward() * seatInfo.SeatPos[i].y + veh:GetRight() * seatInfo.SeatPos[i].x + veh:GetUp() * seatInfo.SeatPos[i].z )
- allSeats[i]:SetAngles( veh:GetAngles() + seatInfo.SeatAng[i])
- allSeats[i]:Spawn()
- allSeats[i]:GetPhysicsObject():EnableGravity(false)
- allSeats[i]:GetPhysicsObject():SetMass(1)
- allSeats[i]:SetNotSolid( true )
- allSeats[i]:GetPhysicsObject():EnableDrag(false)
- allSeats[i]:DrawShadow( false )
- allSeats[i].IsExtraVehicle = true
- allSeats[i].OffsetPos = seatInfo.ExitPositions[i]
- allSeats[i].ParentCar = veh
- if seatInfo.HideSeats == true then
- allSeats[i]:SetColor(0,0,0,0)
- end
- constraint.Weld( veh, allSeats[i], 0, 0, 0, true )
- veh.ExtraSeats = {}
- veh.ExtraSeats.seats = allSeats
- veh.ExtraSeats.seatInfo = seatInfo
- veh.HasExtraSeats = true
- end
- --[[
- local enterHelper = ents.Create("enterDetector")
- enterHelper.maxS = veh:OBBMaxs()
- enterHelper.minS = veh:OBBMins()
- enterHelper.Seats = allSeats
- enterHelper.SeatInfo = seatInfo
- enterHelper.EntOwner = veh
- enterHelper:Spawn()
- local height = enterHelper.maxS.z - enterHelper.minS.z
- enterHelper:SetPos( veh:GetPos() + veh:GetUp() )
- enterHelper:SetAngles( veh:GetAngles() )
- constraint.Weld( veh, enterHelper, 0, 0, 0, true )
- --]]
- end
- end
- hook.Add( "PlayerSpawnedVehicle", "SpawnVehicleWithExtraSeats", SpawnVehicleWithExtraSeats )
- --GETTING THE NEXT EMPTY EXTRA SEAT
- function GetNextEmptySeat( start, nrOfSeats, seats )
- for i = start, (nrOfSeats + start) do
- local slot = i % (nrOfSeats + 1)
- if slot != 0 && ValidEntity( seats[slot] ) && seats[slot]:GetDriver() == NULL then
- return slot
- end
- end
- return 0
- end
- --[[
- --PLAYER ENTERING VEHICLE
- local function CanEnterExtraSeats( ply, veh, role )
- Msg("Player tried to enter vehicle\n")
- if veh.HasExtraSeats == true && veh:GetDriver():IsPlayer() then
- --if veh.HasExtraSeats == true then
- Msg("1\n")
- local slot = GetNextEmptySeat( 1, veh.ExtraSeats.seatInfo.NumberOfSeats, veh.ExtraSeats.seats )
- if slot != 0 then
- Msg("2\n")
- ply:EnterVehicle( veh.ExtraSeats.seats[slot] )
- ply.ExtraVehicleSlot = slot
- return false
- end
- Msg("3\n")
- end
- Msg("4\n")
- end
- hook.Add( "CanPlayerEnterVehicle", "CanEnterExtraSeats", CanEnterExtraSeats )
- --]]
- --[[
- --PLAYER ENTERING VEHICLE
- local function CanEnterExtraSeats( ply, veh, role )
- Msg("Player tried to enter vehicle\n")
- if veh.HasExtraSeats == true && veh:GetDriver():IsPlayer() then
- --if veh.HasExtraSeats == true then
- Msg("1\n")
- local slot = GetNextEmptySeat( 1, veh.ExtraSeats.seatInfo.NumberOfSeats, veh.ExtraSeats.seats )
- if slot != 0 then
- Msg("2\n")
- ply:EnterVehicle( veh.ExtraSeats.seats[slot] )
- ply.ExtraVehicleSlot = slot
- return false
- end
- Msg("3\n")
- end
- Msg("4\n")
- end
- hook.Add( "CanPlayerEnterVehicle", "CanEnterExtraSeats", CanEnterExtraSeats )
- --]]
- function CanEnterExtraSeatsUse( ply, ent )
- if (ply.enterExtraSeatDel == nil or ply.enterExtraSeatDel < CurTime()) && ent:IsVehicle() && ent.HasExtraSeats == true && ent:GetDriver():IsPlayer() then
- local slot = GetNextEmptySeat( 1, ent.ExtraSeats.seatInfo.NumberOfSeats, ent.ExtraSeats.seats )
- if slot != 0 then
- ply.enterExtraSeatDel = CurTime() + 1
- ply:EnterVehicle( ent.ExtraSeats.seats[slot] )
- ply.ExtraVehicleSlot = slot
- return false
- end
- end
- end
- hook.Add( "PlayerUse", "CanEnterExtraSeatsUse", CanEnterExtraSeatsUse )
- --[[
- --PLAYER ENTERING VEHICLE
- local function CanEnterExtraSeats( ply, veh, role )
- if veh.HasExtraSeats == true or (!ply.enterExtraSeatDel == nil && ply.enterExtraSeatDel > CurTime()) then
- return false
- end
- end
- hook.Add( "CanPlayerEnterVehicle", "CanEnterExtraSeats", CanEnterExtraSeats )
- --]]
- function CanExitExtraSeats( veh, ply )
- if (ply.enterExtraSeatDel && ply.enterExtraSeatDel > CurTime()) then
- return false
- end
- end
- hook.Add( "CanExitVehicle", "CanExitExtraSeats", CanExitExtraSeats )
- --PLAYER LEAVING VEHICLE
- function LeavingExtraSeats( ply, veh )
- if (ply.enterExtraSeatDel == nil or ply.enterExtraSeatDel < CurTime()) && veh.IsExtraVehicle == true && veh.OffsetPos then
- ply.enterExtraSeatDel = CurTime() + 1
- local pos = veh.OffsetPos
- ply:SetPos( veh.ParentCar:GetPos() + veh.ParentCar:GetForward() * pos.y + veh.ParentCar:GetRight() * pos.x + veh.ParentCar:GetUp() * pos.z)
- end
- end
- hook.Add( "PlayerLeaveVehicle", "LeavingExtraSeats", LeavingExtraSeats )
- --REMOVE EXTRA SEATS WHEN THE VEHICLE IS REMOVED
- function RemoveExtraSeats( ent )
- if ent.HasExtraSeats == true then
- for i = 1, ent.ExtraSeats.seatInfo.NumberOfSeats do
- ent.ExtraSeats.seats[i]:Remove()
- end
- end
- end
- hook.Add( "EntityRemoved", "RemoveExtraSeats", RemoveExtraSeats )
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement