Simply cannot correctly define character

I currently am having a bad time getting my code to work, due to line (24) being nil due to character, i have tried many many many different ways to define it and it just doesn’t work.

Any help is greatly appreciated!!

--Variables and code for reserve server stuff
local MainMusic = game.SoundService["Distorted Reality Perception - Leon Riskin"]

local reserve = script.Parent.GameTypeButton1
local debounce = false
local ScreenGui = game.StarterGui.ScreenGui

reserve.MouseButton1Click:Connect(function()
	if debounce then return end 
	debounce = true

	local ts = game:GetService("TeleportService")
	local access = ts:ReserveServer(game.PlaceId)
	ts:TeleportToPrivateServer(game.PlaceId, access, game.Players:GetPlayers())
	warn("Teleporting everybody...")

	task.wait(5) 
	debounce = false
end)

local Players = game:GetService("Players")

local player = Players.LocalPlayer
local Character = Players.Character or Players.CharacterAdded:Wait()
local Humanoid = Character:WaitForChild("Humanoid")

local Camera = workspace.CurrentCamera
local Players = game:GetService("Players")
local isReserved = game.PrivateServerId ~= "" and game.PrivateServerOwnerId == 0

if isReserved == true then
	print("reserved is true")
	ScreenGui.Enabled = false
	Camera.CameraType = Enum.CameraType.Custom
	Camera.CameraSubject = game.Players.Player.Humanoid
	MainMusic.Playing = false
end


you are using Players and not player

--Variables and code for reserve server stuff
local MainMusic = game.SoundService["Distorted Reality Perception - Leon Riskin"]

local reserve = script.Parent.GameTypeButton1
local debounce = false
local ScreenGui = game.StarterGui.ScreenGui

reserve.MouseButton1Click:Connect(function()
	if debounce then return end 
	debounce = true

	local ts = game:GetService("TeleportService")
	local access = ts:ReserveServer(game.PlaceId)
	ts:TeleportToPrivateServer(game.PlaceId, access, game.Players:GetPlayers())
	warn("Teleporting everybody...")

	task.wait(5) 
	debounce = false
end)

local Players = game:GetService("Players")

local player = Players.LocalPlayer
local Character = player.Character or player.CharacterAdded:Wait()
local Humanoid = Character:WaitForChild("Humanoid")

local Camera = workspace.CurrentCamera
local Players = game:GetService("Players")
local isReserved = game.PrivateServerId ~= "" and game.PrivateServerOwnerId == 0

if isReserved == true then
	print("reserved is true")
	ScreenGui.Enabled = false
	Camera.CameraType = Enum.CameraType.Custom
	Camera.CameraSubject = game.Players.Player.Humanoid
	MainMusic.Playing = false
end

Also, is this a server script? I’m thinking this because of this line

But if it is a server script, the player line would look like this instead:

local player = script:FindFirstAncestorOfClass("Player")

Also, you are changing the ScreenGui inside of StarterGui, meaning that it would not actually change for the player.

1 Like
local ScreenGui = game.StarterGui.ScreenGui

In addition to what’s been mentioned you need to reference the player’s ‘PlayerGui’ container not the shared ‘StarterGui’ container.

1 Like