My warn script is only sending it to me!

When I do the username and mod name and reason, it just sends it back to me, Only me I tested it with two players I done it to the other player and it send back to me again.

My code:
game.Players(script.Parent.Parent.Username).PlayerGui.WarnGui.Enabled = true

Is this script client-sided or server-sided?
Any code run on the client is only going to be seen by that client, unless replicated to the server in some way.

I’m assuming this is written on the server.
do:

for _,plr in ipairs(game.Players:GetPlayers()) do
  if plr and plr.PlayerGui then
      plr.PlayerGui.WarnGui.Enabled = true
  end
end

It probably isn’t since OP wrote script.Parent.Parent.Username in their script.

I would personally use remote events though you can just create a script in ServerScriptService, and add the code below:

local Players = game:GetService("Players") -- The players service

for _, player in Players:GetPlayers() do -- Getting all the players inside a table and looping through them
    player.PlayerGui.WarnGui.Enabled = true -- Setting their WarnGui.Enabled property to true thus making it visible
end

I use the username for the textbox :confused:

You can use the code I gave above. You can put it in ServerScriptService.

Username?? Does that mean all players have access to a mod-only textbox? Surely there’s a better way than script.Parent.Parent.Name

Store the gui in a server script. Then clone the gui to the player you want to warn instead of the same player everytime. Example function:

function warnPlayer(plr)
 script.WarnGui:Clone().Parent = plr.PlayerGui
end

Make a remote event, get the player from the name and execute this