Hey, so I’m trying to make an exit button, but I’m not very good with “elseif” and I don’t know how to use it. Mind helping me? Also, please don’t judge, I’m trying my best.
exitBtn.Activated:Connect(function()
exitBtn.Visible = false
camera.CameraType = Enum.CameraType.Custom
camera.CameraSubject = player.Character.Humanoid
if Values.ElevatorNumber.Value == 2 then
elevatorEvent2:FireServer()
elseif Values.ElevatorNumber.Value == 3 then
elevatorEvent3:FireServer()
elseif Values.ElevatorNumber.Value == 4 then
elevatorEvent4:FireServer()
elseif Values.ElevatorNumber.Value == 5 then
elevatorEvent5:FireServer()
end
wait(0.1)
Values.ElevatorNumber.Value = 0
end)
here’s a rough draft of how this could be improved, this uses the elevator number as an index to look up a table for each elevator event
local events = {
[2] = elevatorEvent2,
[3] = elevatorEvent3,
-- etc...
}
exitBtn.Activated:Connect(function()
exitBtn.Visible = false
camera.CameraType = Enum.CameraType.Custom
camera.CameraSubject = player.Character.Humanoid
local elevatorNumber = Values.ElevatorNumber.Value
local event = events[elevatorNumber]
if event then
event:FireServer()
else
error(`could not find event for elevator number {elevatorNumber}`)
end
task.wait(0.1)
Values.ElevatorNumber.Value = 0
end)
Try concatenating the eventFolder with your current elevator number to find the right event:
local eventFolder = ... -- This is the folder holding the events
exitBtn.Activated.Connect(function()
exitBtn.Visible = false
camera.CameraType = Enum.CameraType.Custom
camera.CameraSubject = player.Character.Humanoid
-- Fire the corresponding elevator number's event
eventFolder["elevatorEvent"+Values.ElevatorNumber.Value]:FireServer()
-- If the above line does not work, try the line below instead:
--eventFolder:FindFirstChild("elevatorEvent"+Values.ElevatorNumber.Value):FireServer()
-- Use tasks for efficiency
task.defer(function()
task.wait(0.1)
Values.ElevatorNumber.Value = 0
end)
end)
Note:
Make sure the “elevatorEvent” + Number matches the wording of your events in your eventFolder. This code assumes your events are named elevatorEvent1, elevatorEvent2, elevatorEvent3,…
Sorry, I probably should’ve added the whole script to give you more context. (I added your edit of the script btw.) This is the whole script:
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local movingEvent = ReplicatedStorage:WaitForChild("MovingElevator")
local elevatorEvent = ReplicatedStorage:WaitForChild("Elevator")
local elevatorEvent2 = ReplicatedStorage:WaitForChild("Elevator2")
local elevatorEvent3 = ReplicatedStorage:WaitForChild("Elevator3")
local elevatorEvent4 = ReplicatedStorage:WaitForChild("Elevator4")
local elevatorEvent5 = ReplicatedStorage:WaitForChild("Elevator5")
local gui = script.Parent
local exitBtn = gui.Exit
local camera = workspace.CurrentCamera
local player = game.Players.LocalPlayer
local Values = player:FindFirstChild("Values")
movingEvent.OnClientEvent:Connect(function()
exitBtn.Visible = false
end)
elevatorEvent.OnClientEvent:Connect(function(elevator)
exitBtn.Visible = true
camera.CameraType = Enum.CameraType.Scriptable
camera.CFrame = elevator.Camera.CFrame
end)
local eventFolder = game.ReplicatedStorage.EventFolder -- This is the folder holding the events
exitBtn.Activated.Connect(function()
exitBtn.Visible = false
camera.CameraType = Enum.CameraType.Custom
camera.CameraSubject = player.Character.Humanoid
-- Fire the corresponding elevator number's event
eventFolder["elevatorEvent"..Values.ElevatorNumber.Value]:FireServer()
-- If the above line does not work, try the line below instead:
--eventFolder:FindFirstChild("elevatorEvent"..Values.ElevatorNumber.Value):FireServer()
-- Use tasks for efficiency
task.defer(function()
task.wait(0.1)
Values.ElevatorNumber.Value = 0
end)
end)