Customise overhead

Support

Only use the documentation below if you know what you are doing, we do not provide any support for the custom scripts given below.

With SIMS there are endless possibilities for you to customise your overhead. One common way to customise your SIMS is by adding custom icons to some students. This page shows you some examples and things to know about customising the overhead.

Before getting started here are some things you should know:

  • Any icons you add should be cloned into the players character and NOT use Player.Character.Head.PlayerOverhead.Icons.Verfied.Visible = true

Basic example of a script that clones an icon

An example of code that you could use with the overhead in another server script. All this script does is wait for the overhead on join then clone new icons into the existing overhead.

Here is a icon template if you are having trouble with size and dimensions, just rename the decal and change the decal id.

game.Players.PlayerAdded:Connect(function(Player)
	Player.CharacterAdded:Connect(function(char)
		char:WaitForChild('Humanoid').DisplayName = " "
		
		wait(3)
		if char.Head:FindFirstChild("PlayerOverhead") then
			local PlayerOverhead = char.Head.PlayerOverhead  

			if Player:GetRankInGroup(1234) >= 20 then
				local Cloned = script.Icons["YourIcon"]:Clone()
				Cloned.Parent = PlayerOverhead.Badges
			end

			if Player.UserId == 1234 then
				local Cloned = script.Icons["YourIcon"]:Clone()
				Cloned.Parent = PlayerOverhead.Badges
			end
			
			warn("Overhead System | Successfuly loaded custom nametag icons for: ".. Player.Name)
		else
			warn("Overhead System | Overhead tag not found for: ".. Player.Name.. " on joining the game.")
		end
	end)
end)

You should have a Icons folder within your script so it works as shown.

Gamepass owner example that clones the icon

game.Players.PlayerAdded:Connect(function(Player)
	Player.CharacterAdded:Connect(function(char)
		char:WaitForChild('Humanoid').DisplayName = " "
		
		wait(3)
		if char.Head:FindFirstChild("PlayerOverhead") then
			local PlayerOverhead = char.Head.PlayerOverhead
			local OwnsGamepass = game:GetService("MarketplaceService"):UserOwnsGamePassAsync(Player.UserId, "238072835")  

			if OwnsGamepass then
				local Cloned = script.Icons["YourIcon"]:Clone()
				Cloned.Parent = PlayerOverhead.Badges
			end
			
			warn("Overhead System | Successfuly loaded custom nametag icons for: ".. Player.Name)
		else
			warn("Overhead System | Overhead tag not found for: ".. Player.Name.. " on joining the game.")
		end
	end)
end)

You can stack these as many times as you want just make sure they are in the same script like below, combining both of the examples above into one.

game.Players.PlayerAdded:Connect(function(Player)
	Player.CharacterAdded:Connect(function(char)
		char:WaitForChild('Humanoid').DisplayName = " "
		
		wait(3)
		if char.Head:FindFirstChild("PlayerOverhead") then
			local PlayerOverhead = char.Head.PlayerOverhead
			local OwnsGamepass = game:GetService("MarketplaceService"):UserOwnsGamePassAsync(Player.UserId, "238072835")  

			if Player:GetRankInGroup(1234) >= 20 then
				local Cloned = script.Icons["YourIcon"]:Clone()
				Cloned.Parent = PlayerOverhead.Badges
			end

			if Player.UserId == 1234 then
				local Cloned = script.Icons["YourIcon"]:Clone()
				Cloned.Parent = PlayerOverhead.Badges
			end

			if OwnsGamepass then
				local Cloned = script.Icons["YourIcon"]:Clone()
				Cloned.Parent = PlayerOverhead.Badges
			end
			
			warn("Overhead System | Successfuly loaded custom nametag icons for: ".. Player.Name)
		else
			warn("Overhead System | Overhead tag not found for: ".. Player.Name.. " on joining the game.")
		end
	end)
end)

Last updated