I know I'm doing this wrong

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. :frowning:

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)
2 Likes

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,…

Hope this helps! :smiley:

1 Like

just remember to replace the + for concatenation with “..”, lua is wacky as hell

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)