local Players = game:GetService("Players")
local sound = game.SoundService.AnnouncementSound
local function getUserIdFromUsername(username)
local success, result = pcall(function()
return Players:GetUserIdFromNameAsync(username)
end)
if success then
return result
else
warn("Could not find user: " .. username)
return nil
end
end
local ThumbnailUrl = "https://www.roblox.com/headshot-thumbnail/image?userId=%d&width=420&height=420&format=png"
local function getAvatarImage(userId)
return string.format(ThumbnailUrl, userId)
end
-- Keep track of latest announcement per player
local latestAnnouncementTime = {}
game.ReplicatedStorage.RemoteEvent.OnServerEvent:Connect(function(player, text)
sound:Play()
local players = game:GetPlayers()
for i,v in players do
local screengui = player.PlayerGui:WaitForChild("AnnouncementGui")
local imagelabel = screengui:WaitForChild("ImageLabel")
local imagelabel2 = screengui:WaitForChild("ImageLabel2")
local textlabel = screengui:WaitForChild("TextLabel")
local thisAnnouncementTime = tick()
latestAnnouncementTime[player.UserId] = thisAnnouncementTime
imagelabel.ImageTransparency = 0
imagelabel2.ImageTransparency = 0
textlabel.TextTransparency = 0
textlabel.Text = text
local userId = getUserIdFromUsername(player.Name)
if userId then
local avatarImageUrl = getAvatarImage(userId)
imagelabel2.Image = avatarImageUrl
end
task.delay(5, function()
if latestAnnouncementTime[player.UserId] == thisAnnouncementTime then
imagelabel.ImageTransparency = 1
imagelabel2.ImageTransparency = 1
textlabel.TextTransparency = 1
end
end)
end
end)