Why is my script not working?

I just want a certain block to be visible only to the “Army” team, why doesn’t it work?

This is my script in local script:

local block = script.Parent
local player = game.Players.LocalPlayer

if player.Team == game.Teams.Army then
block.Transparency = 0
else
block.Transparency = 1
end

If the LocalScript is in workspace then it cannot work, because the LocalScript doesn’t have an owner.
You can add a tag to the part and call it TeamPart then rename the part to what team it’s supposed to be for, or you could add an attribute. We make it simple by just changing the name.

local player = game:GetSevrice("Players").LocalPlayer
for _, block in next, game:GetService("CollectionService"):GetTagged("TeamPart") do
       block.Transparency = block.Name == player.Team.Name and 1 or 0
end
– local script in StarterGui
task.wait(3) -- a pause to take some heat off the repeat loop
-- you're going to burn 3 seconds anyways loading or respawning

local rs = game:GetService("RunService")
local player = game:GetService("Players").LocalPlayer
local teams = game:GetService("Teams")

local block = workspace:WaitForChild("BigBlock") -- your block(s)

-- remove print when/if you know
repeat rs.Stepped:Wait() -- so i don't lagg out or lock up
	print(player.Team) -- so i can see what the team is atm, mine sits in Queue at 1st
until(player.Team ~= "Queue")

player.CharacterAdded:Wait() -- wait for char to load in on respawn
if player.Team == teams.Army then
	block.Transparency = 0
else
	block.Transparency = 1
end

I fear this may be hackable.