Ok so. I'm mind boggled right now so any help would be fantastic :)
I'm making it so players spawn into the game seated in a car. For this test game, there are 4 cars and let's say there are 4 players that are going to join. I want to make it so when a player joins it finds a car that isn't occupied and places that player in that car. If the car is occupied, it goes through the list of cars and finds one that isn't.
Here is the first script I tried:
local Players = game:GetService("Players")
local seat = script.Parent
local cars = workspace.cars:GetDescendants()
Players.PlayerAdded:Connect(function(player)
for _, v in pairs(cars) do
if v:IsA("VehicleSeat") then
if seat.Occupant == nil then
wait(2.5)
seat:Sit(player.Character.Humanoid)
end
end
end
end)
This script worked for the first player that joined and placed them in the car. But sadly other places spawned normally at the world spawn.
Here is the second script I tried:
local Players = game:GetService("Players")
local seat = script.Parent
local cars = workspace.cars:GetDescendants()
Players.PlayerAdded:Connect(function(player)
for _, v in pairs(cars) do
if v:IsA("VehicleSeat") then
if seat.Occupant == nil then
wait(2.5)
seat:Sit(player.Character.Humanoid)
elseif seat.Occupant ~= nil then
for y, p in pairs(cars) do
if p:IsA("VehicleSeat") then
if seat.Occupant == nil then
wait(2.5)
seat:Sit(player.Character.Humanoid)
end
end
end
end
end
end
end)
This script did the exact same thing as the firsst one. I lost all brain cells when thinking this would make a difference. Tried to make it so if it finds that the seat is occupied then it rolls through the list again until it finds one that isn't and sits the player in it.
Picture of car folder and contents: click here
Also note:
I would rather this one main script be placed once in the 'cars' folder rather than placed in every 'VehicleSeat'.
local seat = script.Parent
At the moment, it's looking to the parent which is the seat.
If you have any questions, please ask. :)
