Trying to Install VIP only Rainbow Nametag into my nametag

I tried to make a rainbow nametag into my Nametag System which required certain gamepass to make it. But the thing i have tried all the way that I can do but still doesn’t work. I hope hear some ideas or suggestion on how to do it and yea I am very happy if you able to make a example for me if you can.

Pics of Nametag Structure:
image

Script inside Nametag:

wait()

local Character = script.Parent
local NameTag = script:FindFirstChild("Nametag")
local rank = game.Players:GetPlayerFromCharacter(Character):GetRoleInGroup(12876177)
local team = game.Players:GetPlayerFromCharacter(Character).Team.Name
local Gametime = game.Players:GetPlayerFromCharacter(Character).leaderstats.Gametime.Value
local Update = game.Players:GetPlayerFromCharacter(Character).leaderstats.Gametime

local NameTagClone = NameTag:Clone()
NameTagClone.Parent = Character:FindFirstChild("Head")
NameTagClone.Adornee = Character:FindFirstChild("Head")
NameTagClone.name.Text = Character.Name
NameTagClone.rank.Text = team.." ["..rank.."]"
NameTagClone.gametime.Text = "Gametime: "..Gametime.." Minute(s)"

use Player.CharacterAdded to get the character to parent the BillboardGUI’s

I have tried with with using a BoolValue. But it seem to not working at all because the ServerScriptService’s Script doesn’t make the value to True even I have gamepass.

Script inside Nametag’s Name:

local Players = game:GetService("Players")
local thing = script.Parent
local uiGradient = thing:WaitForChild("UIGradient")
local tweenService = game:GetService("TweenService")
local Character = script.Parent.Parent.Parent.Parent

if Character:WaitForChild("IsVIP").Value == true then
	uiGradient.Enabled = true	
	while true do
		local tween = tweenService:Create(uiGradient, TweenInfo.new(2, Enum.EasingStyle.Linear), {Offset = Vector2.new(-1, 0)})
		tween:Play()
		wait(2)
		uiGradient.Offset = Vector2.new(1, 0)
		local tween2 = tweenService:Create(uiGradient, TweenInfo.new(2, Enum.EasingStyle.Linear), {Offset = Vector2.new(0, 0)})
		tween2:Play()
		wait(2)
	end
end

Script for ScriptService:

local GamepassId = 25548314
local MarketPlaceService = game:GetService("MarketplaceService")

game.Players.PlayerAdded:connect(function(Player)
	local char = Player.Character or Player.CharacterAdded:Wait()
		if MarketPlaceService:UserOwnsGamePassAsync(Player.UserId, GamepassId) then
			char.IsVIP.Value = true 
			print("Own VIP Gamepass")
		else
			char.IsVIP.Value = false 
		end
end)

Im a Scripting Newbie. So, I am not really good in scripting to be honest ;-;

I generally do this for basic overhead gui:

local Players = game:GetService("Players")

Players.PlayerAdded:Connect(function(plr)
	plr.CharacterAdded:Connect(function(char)
		local v = script.VerifiedIconGui:Clone()

		v.StudsOffsetWorldSpace = Vector3.new(0, 4, 0) -- Using StudsOffsetWorlsSpace makes it so the TextLabel as an example, doesn't get all weird.

		task.wait(.5) -- Wait .5 seconds because of how Roblox loads characters

		v.Parent = char:FindFirstChild("HumanoidRootPart")
		v.Adornee = char:FindFirstChild("HumanoidRootPart")
	end)
end)

I’d recommend watching some basic scripting tutorials to learn more about overhead GUIs (nametags and that stuff)

Yea I already have watching those for over 5 hours and just make one look better :smiley:

^ ^ Still need help! (30 Ccar)

No help needed anymore I fixed it by myself

local Players = game:GetService("Players")
repeat task.wait()
until script.Parent
local Character = script.Parent
local NameTag = script:FindFirstChild("Nametag")
local Player = Players:GetPlayerFromCharacter(Character)
local Rank = Player:GetRoleInGroup(12876177)
local Team = Player.Team.Name
local Gametime = Player:WaitForChild("leaderstats"):WaitForChild("Gametime").Value
local Update = Player:WaitForChild("leaderstats"):WaitForChild("Gametime")

local NameTagClone = NameTag:Clone()
NameTagClone.Parent = Character:FindFirstChild("Head")
NameTagClone.Adornee = Character:FindFirstChild("Head")
NameTagClone.name.Text = Character.Name
NameTagClone.rank.Text = Team.." ["..Rank.."]"
NameTagClone.gametime.Text = "Gametime: "..Gametime.." Minute(s)"

Update.Changed:Connect(function(Timeval)
	NameTagClone.gametime.Text = "Gametime: "..Update.Value.." Minute(s)"
end)