local Players = game:GetService("Players") local TweenService = game:GetService("TweenService") local UserInputService = game:GetService("UserInputService") local RunService = game:GetService("RunService") local Lighting = game:GetService("Lighting") local Player = Players.LocalPlayer local Mouse = Player:GetMouse() local T = { BG = Color3.fromRGB(18, 18, 22), BG2 = Color3.fromRGB(24, 24, 30), Card = Color3.fromRGB(28, 28, 35), CardHover = Color3.fromRGB(35, 35, 44), Surface = Color3.fromRGB(32, 32, 40), Accent = Color3.fromRGB(100, 160, 255), AccentSoft = Color3.fromRGB(40, 55, 85), Text1 = Color3.fromRGB(240, 240, 245), Text2 = Color3.fromRGB(155, 155, 170), Text3 = Color3.fromRGB(95, 95, 110), Border = Color3.fromRGB(45, 45, 55), Divider = Color3.fromRGB(38, 38, 48), ToggleOn = Color3.fromRGB(100, 160, 255), ToggleOff = Color3.fromRGB(55, 55, 65), White = Color3.fromRGB(255, 255, 255), Red = Color3.fromRGB(220, 60, 60), Green = Color3.fromRGB(60, 190, 90), Yellow = Color3.fromRGB(240, 190, 40), } local function Tw(o,t,p) if o then pcall(function() TweenService:Create(o,TweenInfo.new(t,Enum.EasingStyle.Quint),p):Play() end) end end local function TwB(o,t,p) if o then pcall(function() TweenService:Create(o,TweenInfo.new(t,Enum.EasingStyle.Back,Enum.EasingDirection.Out),p):Play() end) end end local function Corner(p,r) local c=Instance.new("UICorner");c.CornerRadius=UDim.new(0,r or 8);c.Parent=p end local function Stroke(p,col,th,tr) local s=Instance.new("UIStroke");s.Color=col or T.Border;s.Thickness=th or 1;s.Transparency=tr or 0.3;s.Parent=p end local function UpdCanvas(s,l) local function u() s.CanvasSize=UDim2.new(0,0,0,l.AbsoluteContentSize.Y+20) end l:GetPropertyChangedSignal("AbsoluteContentSize"):Connect(u) u() end local Gui=Instance.new("ScreenGui");Gui.Name="SnowHub";Gui.ResetOnSpawn=false pcall(function() Gui.Parent=game:GetService("CoreGui") end) if not Gui.Parent then Gui.Parent=Player:WaitForChild("PlayerGui") end for _,v in pairs(Lighting:GetChildren()) do if v.Name=="SnowBlur" then v:Destroy() end end local Blur=Instance.new("BlurEffect");Blur.Name="SnowBlur";Blur.Size=0;Blur.Parent=Lighting local Overlay=Instance.new("Frame") Overlay.BackgroundColor3=Color3.fromRGB(0,0,0);Overlay.BackgroundTransparency=1 Overlay.Size=UDim2.new(1,0,1,0);Overlay.ZIndex=0;Overlay.Parent=Gui local Shadow=Instance.new("Frame") Shadow.BackgroundColor3=Color3.fromRGB(0,0,0);Shadow.BackgroundTransparency=0.82 Shadow.Size=UDim2.new(0,0,0,0);Shadow.Position=UDim2.new(0.5,0,0.5,8) Shadow.AnchorPoint=Vector2.new(0.5,0.5);Shadow.ZIndex=1;Shadow.Parent=Gui;Corner(Shadow,20) local winW,winH=520,420 local winSize=UDim2.new(0,winW,0,winH) local Main=Instance.new("Frame");Main.BackgroundColor3=T.BG;Main.BackgroundTransparency=0.04 Main.Size=UDim2.new(0,0,0,0);Main.Position=UDim2.new(0.5,0,0.5,0);Main.AnchorPoint=Vector2.new(0.5,0.5) Main.ClipsDescendants=true;Main.ZIndex=2;Main.Parent=Gui;Corner(Main,14);Stroke(Main,T.Border,1,0.2) local uiOpen,minimized,destroyed=true,false,false local function ShowUI() if destroyed then return end uiOpen=true;Main.Visible=true;Shadow.Visible=true;Overlay.Visible=true TwB(Main,0.5,{Size=minimized and UDim2.new(0,winW,0,56) or winSize}) TwB(Shadow,0.5,{Size=UDim2.new(0,winW+24,0,(minimized and 56 or winH)+24)}) Tw(Overlay,0.5,{BackgroundTransparency=0.4}) TweenService:Create(Blur,TweenInfo.new(0.6,Enum.EasingStyle.Quint),{Size=20}):Play() end local function HideUI() if destroyed then return end;uiOpen=false Tw(Main,0.3,{Size=UDim2.new(0,0,0,0)});Tw(Shadow,0.3,{Size=UDim2.new(0,0,0,0)}) Tw(Overlay,0.3,{BackgroundTransparency=1}) TweenService:Create(Blur,TweenInfo.new(0.3,Enum.EasingStyle.Quint),{Size=0}):Play() task.delay(0.35,function() if not uiOpen then Main.Visible=false;Shadow.Visible=false;Overlay.Visible=false end end) end task.wait(0.05);ShowUI() do local dragging,dragStart,startPos local DZ=Instance.new("Frame");DZ.BackgroundTransparency=1;DZ.Size=UDim2.new(1,0,0,56) DZ.ZIndex=10;DZ.Parent=Main DZ.InputBegan:Connect(function(input) if input.UserInputType==Enum.UserInputType.MouseButton1 then dragging=true;dragStart=input.Position;startPos=Main.Position input.Changed:Connect(function() if input.UserInputState==Enum.UserInputState.End then dragging=false end end) end end) UserInputService.InputChanged:Connect(function(input) if dragging and input.UserInputType==Enum.UserInputType.MouseMovement then local d=input.Position-dragStart Main.Position=UDim2.new(startPos.X.Scale,startPos.X.Offset+d.X,startPos.Y.Scale,startPos.Y.Offset+d.Y) Shadow.Position=UDim2.new(Main.Position.X.Scale,Main.Position.X.Offset,Main.Position.Y.Scale,Main.Position.Y.Offset+8) end end) end local TopLine=Instance.new("Frame");TopLine.BackgroundColor3=T.Accent TopLine.Size=UDim2.new(1,0,0,2);TopLine.BorderSizePixel=0;TopLine.ZIndex=5;TopLine.Parent=Main local TopBar=Instance.new("Frame");TopBar.BackgroundColor3=T.BG2;TopBar.BackgroundTransparency=0.2 TopBar.Size=UDim2.new(1,0,0,56);TopBar.BorderSizePixel=0;TopBar.ZIndex=3;TopBar.Parent=Main local SnowBG=Instance.new("Frame");SnowBG.BackgroundColor3=T.AccentSoft SnowBG.Size=UDim2.new(0,36,0,36);SnowBG.Position=UDim2.new(0,14,0,10) SnowBG.ZIndex=4;SnowBG.Parent=TopBar;Corner(SnowBG,10) local SnowI=Instance.new("TextLabel");SnowI.Text="❄";SnowI.Font=Enum.Font.SourceSansBold SnowI.TextSize=22;SnowI.TextColor3=T.Accent;SnowI.BackgroundTransparency=1 SnowI.Size=UDim2.new(1,0,1,0);SnowI.ZIndex=5;SnowI.Parent=SnowBG local TitleL=Instance.new("TextLabel");TitleL.Text="Snow Hub";TitleL.Font=Enum.Font.GothamBold TitleL.TextSize=17;TitleL.TextColor3=T.Text1;TitleL.TextXAlignment=Enum.TextXAlignment.Left TitleL.BackgroundTransparency=1;TitleL.Position=UDim2.new(0,60,0,9) TitleL.Size=UDim2.new(0.5,0,0,20);TitleL.ZIndex=4;TitleL.Parent=TopBar local SubL=Instance.new("TextLabel");SubL.Text="goalkeeper tools";SubL.Font=Enum.Font.Gotham SubL.TextSize=11;SubL.TextColor3=T.Text3;SubL.TextXAlignment=Enum.TextXAlignment.Left SubL.BackgroundTransparency=1;SubL.Position=UDim2.new(0,60,0,30) SubL.Size=UDim2.new(0.5,0,0,15);SubL.ZIndex=4;SubL.Parent=TopBar local XBtn=Instance.new("TextButton");XBtn.Text="X";XBtn.Font=Enum.Font.GothamBold XBtn.TextSize=15;XBtn.TextColor3=T.Text2;XBtn.BackgroundColor3=T.Red;XBtn.BackgroundTransparency=1 XBtn.Size=UDim2.new(0,34,0,34);XBtn.Position=UDim2.new(1,-44,0,11);XBtn.ZIndex=5;XBtn.Parent=TopBar;Corner(XBtn,8) XBtn.MouseEnter:Connect(function() Tw(XBtn,0.15,{BackgroundTransparency=0.15,TextColor3=T.White}) end) XBtn.MouseLeave:Connect(function() Tw(XBtn,0.15,{BackgroundTransparency=1,TextColor3=T.Text2}) end) XBtn.MouseButton1Click:Connect(HideUI) local MnBtn=Instance.new("TextButton");MnBtn.Text="-";MnBtn.Font=Enum.Font.GothamBold MnBtn.TextSize=22;MnBtn.TextColor3=T.Text2;MnBtn.BackgroundColor3=T.Surface;MnBtn.BackgroundTransparency=1 MnBtn.Size=UDim2.new(0,34,0,34);MnBtn.Position=UDim2.new(1,-82,0,11);MnBtn.ZIndex=5;MnBtn.Parent=TopBar;Corner(MnBtn,8) MnBtn.MouseEnter:Connect(function() Tw(MnBtn,0.15,{BackgroundTransparency=0.3,TextColor3=T.Text1}) end) MnBtn.MouseLeave:Connect(function() Tw(MnBtn,0.15,{BackgroundTransparency=1,TextColor3=T.Text2}) end) MnBtn.MouseButton1Click:Connect(function() minimized=not minimized Tw(Main,0.35,{Size=minimized and UDim2.new(0,winW,0,56) or winSize}) Tw(Shadow,0.35,{Size=UDim2.new(0,winW+24,0,minimized and 80 or winH+24)}) end) local Dv=Instance.new("Frame");Dv.BackgroundColor3=T.Divider;Dv.Size=UDim2.new(1,0,0,1) Dv.Position=UDim2.new(0,0,0,56);Dv.BorderSizePixel=0;Dv.ZIndex=3;Dv.Parent=Main local Sidebar=Instance.new("Frame");Sidebar.BackgroundColor3=T.BG2;Sidebar.BackgroundTransparency=0.05 Sidebar.Size=UDim2.new(0,130,1,-57);Sidebar.Position=UDim2.new(0,0,0,57) Sidebar.BorderSizePixel=0;Sidebar.ZIndex=3;Sidebar.Parent=Main local TabScroll=Instance.new("ScrollingFrame");TabScroll.BackgroundTransparency=1 TabScroll.Size=UDim2.new(1,-8,1,-8);TabScroll.Position=UDim2.new(0,4,0,4) TabScroll.ScrollBarThickness=0;TabScroll.CanvasSize=UDim2.new(0,0,0,0) TabScroll.BorderSizePixel=0;TabScroll.ZIndex=4;TabScroll.Parent=Sidebar local TabLy=Instance.new("UIListLayout");TabLy.Padding=UDim.new(0,3);TabLy.Parent=TabScroll UpdCanvas(TabScroll,TabLy) local Content=Instance.new("Frame");Content.BackgroundTransparency=1 Content.Size=UDim2.new(1,-131,1,-57);Content.Position=UDim2.new(0,131,0,57) Content.ClipsDescendants=true;Content.ZIndex=3;Content.Parent=Main local NotifH=Instance.new("Frame");NotifH.BackgroundTransparency=1 NotifH.Size=UDim2.new(0,300,1,-20);NotifH.Position=UDim2.new(1,-310,0,10) NotifH.ZIndex=30;NotifH.Parent=Gui local NLy=Instance.new("UIListLayout");NLy.Padding=UDim.new(0,8) NLy.VerticalAlignment=Enum.VerticalAlignment.Bottom;NLy.Parent=NotifH -- Tab System local AllTabs,ActiveTab={},nil local function SwitchTab(tab) for _,t2 in pairs(AllTabs) do t2.Page.Visible=false Tw(t2.Btn,0.2,{BackgroundTransparency=1}) Tw(t2.Lbl,0.2,{TextColor3=T.Text2}) Tw(t2.Ind,0.2,{Size=UDim2.new(0,3,0,0),BackgroundTransparency=1}) end tab.Page.Visible=true;ActiveTab=tab Tw(tab.Btn,0.25,{BackgroundTransparency=0.4}) Tw(tab.Lbl,0.25,{TextColor3=T.Text1}) TwB(tab.Ind,0.3,{Size=UDim2.new(0,3,0,18),BackgroundTransparency=0}) end local function MakeTab(name,icon) local Tab={} local Btn=Instance.new("TextButton");Btn.Text="";Btn.BackgroundColor3=T.Card Btn.BackgroundTransparency=1;Btn.Size=UDim2.new(1,0,0,40);Btn.ZIndex=5 Btn.Parent=TabScroll;Corner(Btn,8) local Ind=Instance.new("Frame");Ind.BackgroundColor3=T.Accent;Ind.BackgroundTransparency=1 Ind.Size=UDim2.new(0,3,0,0);Ind.Position=UDim2.new(0,2,0.5,0);Ind.AnchorPoint=Vector2.new(0,0.5) Ind.BorderSizePixel=0;Ind.ZIndex=6;Ind.Parent=Btn;Corner(Ind,2) local Ico=Instance.new("TextLabel");Ico.Text=icon;Ico.Font=Enum.Font.GothamBold Ico.TextSize=16;Ico.TextColor3=T.Text3;Ico.BackgroundTransparency=1 Ico.Size=UDim2.new(0,26,1,0);Ico.Position=UDim2.new(0,14,0,0);Ico.ZIndex=6;Ico.Parent=Btn local Lbl=Instance.new("TextLabel");Lbl.Text=name;Lbl.Font=Enum.Font.GothamSemibold Lbl.TextSize=13;Lbl.TextColor3=T.Text2;Lbl.TextXAlignment=Enum.TextXAlignment.Left Lbl.BackgroundTransparency=1;Lbl.Size=UDim2.new(1,-48,1,0);Lbl.Position=UDim2.new(0,42,0,0) Lbl.ZIndex=6;Lbl.Parent=Btn local Page=Instance.new("ScrollingFrame");Page.BackgroundTransparency=1 Page.Size=UDim2.new(1,-14,1,-14);Page.Position=UDim2.new(0,7,0,7) Page.ScrollBarThickness=3;Page.ScrollBarImageColor3=T.Accent Page.CanvasSize=UDim2.new(0,0,0,0);Page.BorderSizePixel=0;Page.Visible=false Page.ZIndex=4;Page.Parent=Content local PLy=Instance.new("UIListLayout");PLy.Padding=UDim.new(0,8);PLy.Parent=Page UpdCanvas(Page,PLy) Tab.Btn=Btn;Tab.Lbl=Lbl;Tab.Ico=Ico;Tab.Ind=Ind;Tab.Page=Page Btn.MouseEnter:Connect(function() if ActiveTab~=Tab then Tw(Btn,0.12,{BackgroundTransparency=0.6}) end end) Btn.MouseLeave:Connect(function() if ActiveTab~=Tab then Tw(Btn,0.12,{BackgroundTransparency=1}) end end) Btn.MouseButton1Click:Connect(function() SwitchTab(Tab) end) table.insert(AllTabs,Tab);if #AllTabs==1 then SwitchTab(Tab) end return Page end -- Section local function MakeSection(page,name) local Sec={} local SF=Instance.new("Frame");SF.BackgroundColor3=T.Card;SF.BackgroundTransparency=0.08 SF.Size=UDim2.new(1,0,0,0);SF.BorderSizePixel=0;SF.ZIndex=5;SF.Parent=page Corner(SF,12);Stroke(SF,T.Border,1,0.4) local Pd=Instance.new("UIPadding");Pd.PaddingTop=UDim.new(0,12);Pd.PaddingBottom=UDim.new(0,12) Pd.PaddingLeft=UDim.new(0,14);Pd.PaddingRight=UDim.new(0,14);Pd.Parent=SF local Ly=Instance.new("UIListLayout");Ly.Padding=UDim.new(0,7);Ly.Parent=SF local function upd() SF.Size=UDim2.new(1,0,0,Ly.AbsoluteContentSize.Y+26) end Ly:GetPropertyChangedSignal("AbsoluteContentSize"):Connect(upd);task.defer(upd) if name and name~="" then local ST=Instance.new("TextLabel");ST.Text=name;ST.Font=Enum.Font.GothamBold ST.TextSize=14;ST.TextColor3=T.Text1;ST.TextXAlignment=Enum.TextXAlignment.Left ST.BackgroundTransparency=1;ST.Size=UDim2.new(1,0,0,22);ST.ZIndex=6;ST.Parent=SF local SD=Instance.new("Frame");SD.BackgroundColor3=T.Divider SD.Size=UDim2.new(1,0,0,1);SD.BorderSizePixel=0;SD.ZIndex=6;SD.Parent=SF end function Sec:AddToggle(c) c=c or{} local nm,desc,def,cb=c.Name or"Toggle",c.Description,c.Default or false,c.Callback or function()end local state=def;local h=desc and 54 or 40 local TF=Instance.new("TextButton");TF.Text="";TF.BackgroundColor3=T.Surface TF.BackgroundTransparency=0.2;TF.Size=UDim2.new(1,0,0,h);TF.ZIndex=6;TF.Parent=SF;Corner(TF,10) local TL=Instance.new("TextLabel");TL.Text=nm;TL.Font=Enum.Font.GothamSemibold;TL.TextSize=13 TL.TextColor3=T.Text1;TL.TextXAlignment=Enum.TextXAlignment.Left;TL.BackgroundTransparency=1 TL.Size=UDim2.new(1,-68,0,18);TL.Position=UDim2.new(0,14,0,desc and 9 or 11);TL.ZIndex=7;TL.Parent=TF if desc then local TD=Instance.new("TextLabel");TD.Text=desc;TD.Font=Enum.Font.Gotham;TD.TextSize=11 TD.TextColor3=T.Text3;TD.TextXAlignment=Enum.TextXAlignment.Left;TD.BackgroundTransparency=1 TD.Size=UDim2.new(1,-68,0,14);TD.Position=UDim2.new(0,14,0,31);TD.ZIndex=7;TD.Parent=TF end local SBG=Instance.new("Frame");SBG.BackgroundColor3=state and T.ToggleOn or T.ToggleOff SBG.Size=UDim2.new(0,44,0,24);SBG.Position=UDim2.new(1,-56,0.5,0) SBG.AnchorPoint=Vector2.new(0,0.5);SBG.ZIndex=7;SBG.Parent=TF;Corner(SBG,12) local Knob=Instance.new("Frame");Knob.BackgroundColor3=T.White;Knob.Size=UDim2.new(0,18,0,18) Knob.Position=state and UDim2.new(1,-21,0.5,0) or UDim2.new(0,3,0.5,0) Knob.AnchorPoint=Vector2.new(0,0.5);Knob.ZIndex=8;Knob.Parent=SBG;Corner(Knob,9) local function updT() Tw(SBG,0.25,{BackgroundColor3=state and T.ToggleOn or T.ToggleOff}) TwB(Knob,0.3,{Position=state and UDim2.new(1,-21,0.5,0) or UDim2.new(0,3,0.5,0)}) end TF.MouseEnter:Connect(function() Tw(TF,0.1,{BackgroundTransparency=0.05,BackgroundColor3=T.CardHover}) end) TF.MouseLeave:Connect(function() Tw(TF,0.1,{BackgroundTransparency=0.2,BackgroundColor3=T.Surface}) end) TF.MouseButton1Click:Connect(function() state=not state;updT();pcall(cb,state) end) task.defer(upd) return{Set=function(_,v) state=v;updT();pcall(cb,v) end,Get=function() return state end} end function Sec:AddSlider(c) c=c or{} local nm,desc=c.Name or"Slider",c.Description local min,max,def=c.Min or 0,c.Max or 100,c.Default or c.Min or 0 local sfx,inc,cb=c.Suffix or"",c.Increment or 1,c.Callback or function()end local val=def;local dH=desc and 16 or 0 local SF2=Instance.new("Frame");SF2.BackgroundColor3=T.Surface;SF2.BackgroundTransparency=0.2 SF2.Size=UDim2.new(1,0,0,62+dH);SF2.ZIndex=6;SF2.Parent=SF;Corner(SF2,10) local SL=Instance.new("TextLabel");SL.Text=nm;SL.Font=Enum.Font.GothamSemibold;SL.TextSize=13 SL.TextColor3=T.Text1;SL.TextXAlignment=Enum.TextXAlignment.Left;SL.BackgroundTransparency=1 SL.Size=UDim2.new(0.6,0,0,18);SL.Position=UDim2.new(0,14,0,8);SL.ZIndex=7;SL.Parent=SF2 if desc then local SD2=Instance.new("TextLabel");SD2.Text=desc;SD2.Font=Enum.Font.Gotham;SD2.TextSize=11 SD2.TextColor3=T.Text3;SD2.TextXAlignment=Enum.TextXAlignment.Left;SD2.BackgroundTransparency=1 SD2.Size=UDim2.new(0.55,0,0,14);SD2.Position=UDim2.new(0,14,0,27);SD2.ZIndex=7;SD2.Parent=SF2 end local VL=Instance.new("TextLabel");VL.Text=tostring(val)..sfx;VL.Font=Enum.Font.GothamBold VL.TextSize=14;VL.TextColor3=T.Accent;VL.TextXAlignment=Enum.TextXAlignment.Right VL.BackgroundTransparency=1;VL.Size=UDim2.new(0.35,-14,0,18);VL.Position=UDim2.new(0.65,0,0,8) VL.ZIndex=7;VL.Parent=SF2 local barY=32+dH+8 local BarBG=Instance.new("Frame");BarBG.BackgroundColor3=T.ToggleOff BarBG.Size=UDim2.new(1,-28,0,6);BarBG.Position=UDim2.new(0,14,0,barY) BarBG.ZIndex=7;BarBG.Parent=SF2;Corner(BarBG,3) local Fill=Instance.new("Frame");Fill.BackgroundColor3=T.Accent Fill.Size=UDim2.new((def-min)/(max-min),0,1,0);Fill.BorderSizePixel=0 Fill.ZIndex=8;Fill.Parent=BarBG;Corner(Fill,3) local KS=Instance.new("Frame");KS.BackgroundColor3=T.White;KS.Size=UDim2.new(0,18,0,18) KS.Position=UDim2.new((def-min)/(max-min),0,0.5,0);KS.AnchorPoint=Vector2.new(0.5,0.5) KS.ZIndex=9;KS.Parent=BarBG;Corner(KS,9) local sliding=false local function updS(x) local pct=math.clamp((x-BarBG.AbsolutePosition.X)/BarBG.AbsoluteSize.X,0,1) val=math.floor((min+(max-min)*pct)/inc+0.5)*inc;val=math.clamp(val,min,max) local p=(val-min)/(max-min) Fill.Size=UDim2.new(p,0,1,0);KS.Position=UDim2.new(p,0,0.5,0) VL.Text=tostring(val)..sfx;pcall(cb,val) end SF2.InputBegan:Connect(function(i) if i.UserInputType==Enum.UserInputType.MouseButton1 then sliding=true;updS(i.Position.X) end end) SF2.InputEnded:Connect(function(i) if i.UserInputType==Enum.UserInputType.MouseButton1 then sliding=false end end) UserInputService.InputChanged:Connect(function(i) if sliding and i.UserInputType==Enum.UserInputType.MouseMovement then updS(i.Position.X) end end) task.defer(upd) return{Set=function(_,v) val=math.clamp(v,min,max);local p=(val-min)/(max-min) Fill.Size=UDim2.new(p,0,1,0);KS.Position=UDim2.new(p,0,0.5,0) VL.Text=tostring(val)..sfx;pcall(cb,val) end,Get=function() return val end} end task.defer(upd);return Sec end -- Notify local function Notify(c) c=c or{};local nT,nC,nD,nTy=c.Title or"",c.Content or"",c.Duration or 3,c.Type or"Info" local cls={Info=T.Accent,Success=T.Green,Warning=T.Yellow,Error=T.Red} local ics={Info="❄",Success="✓",Warning="⚠",Error="✕"};local col=cls[nTy] local NF=Instance.new("Frame");NF.BackgroundColor3=T.Card;NF.Size=UDim2.new(1,0,0,0) NF.ClipsDescendants=true;NF.ZIndex=31;NF.Parent=NotifH;Corner(NF,12) local NA=Instance.new("Frame");NA.BackgroundColor3=col;NA.Size=UDim2.new(1,0,0,2) NA.BorderSizePixel=0;NA.ZIndex=32;NA.Parent=NF local NI=Instance.new("TextLabel");NI.Text=ics[nTy];NI.Font=Enum.Font.GothamBold;NI.TextSize=18 NI.TextColor3=col;NI.BackgroundTransparency=1;NI.Size=UDim2.new(0,28,0,28) NI.Position=UDim2.new(0,12,0,14);NI.ZIndex=32;NI.Parent=NF local NT2=Instance.new("TextLabel");NT2.Text=nT;NT2.Font=Enum.Font.GothamBold;NT2.TextSize=13 NT2.TextColor3=T.Text1;NT2.TextXAlignment=Enum.TextXAlignment.Left;NT2.BackgroundTransparency=1 NT2.Size=UDim2.new(1,-50,0,16);NT2.Position=UDim2.new(0,44,0,12);NT2.ZIndex=32;NT2.Parent=NF local NC2=Instance.new("TextLabel");NC2.Text=nC;NC2.Font=Enum.Font.Gotham;NC2.TextSize=11 NC2.TextColor3=T.Text2;NC2.TextXAlignment=Enum.TextXAlignment.Left;NC2.BackgroundTransparency=1 NC2.Size=UDim2.new(1,-50,0,26);NC2.Position=UDim2.new(0,44,0,30);NC2.ZIndex=32;NC2.Parent=NF TwB(NF,0.4,{Size=UDim2.new(1,0,0,64)}) task.delay(nD,function() Tw(NF,0.3,{Size=UDim2.new(1,0,0,0)}) task.delay(0.35,function() pcall(function() NF:Destroy() end) end) end) end -- ================================================================ -- BALL SYSTEM -- ================================================================ local Balls = {} local ESPHighlights = {} local BallESP = {Enabled = false} local BallLock = {Enabled = false, Distance = 50, Smoothness = 0.15} local Magnet = {Enabled = false, Distance = 60} local ballLockPaused = false local function IsBall(obj) if not obj:IsA("BasePart") then return false end if obj.Anchored then return false end if obj.Transparency >= 0.9 then return false end local p = obj.Parent while p and p ~= workspace do if p:IsA("Model") and p:FindFirstChildOfClass("Humanoid") then return false end if p:IsA("Accessory") or p:IsA("Tool") then return false end p = p.Parent end local s = obj.Size if s.X > 6 or s.Y > 6 or s.Z > 6 or s.X < 0.3 then return false end if obj:IsA("Part") and obj.Shape == Enum.PartType.Ball then return true end if obj:IsA("MeshPart") then local avg = (s.X + s.Y + s.Z) / 3 local diff = math.max(math.abs(s.X - avg), math.abs(s.Y - avg), math.abs(s.Z - avg)) if diff < avg * 0.3 and avg >= 0.5 and avg <= 5 then return true end end return false end local function ScanBalls() Balls = {} for _, obj in pairs(workspace:GetDescendants()) do if IsBall(obj) then table.insert(Balls, obj) end end end local function GetClosestBall(root, maxDist) local closest, closestDist = nil, maxDist or math.huge for _, ball in pairs(Balls) do if ball and ball.Parent then local dist = (ball.Position - root.Position).Magnitude if dist < closestDist then closest = ball; closestDist = dist end end end return closest, closestDist end local function ClearAllESP() for _, hl in pairs(ESPHighlights) do pcall(function() hl:Destroy() end) end ESPHighlights = {} end ScanBalls() workspace.DescendantAdded:Connect(function(obj) task.delay(0.2, function() if obj and obj.Parent and IsBall(obj) then for _, b in pairs(Balls) do if b == obj then return end end table.insert(Balls, obj) end end) end) workspace.DescendantRemoving:Connect(function(obj) if ESPHighlights[obj] then pcall(function() ESPHighlights[obj]:Destroy() end) ESPHighlights[obj] = nil end for i = #Balls, 1, -1 do if Balls[i] == obj then table.remove(Balls, i); break end end end) -- ESP loop task.spawn(function() while true do task.wait(0.3) for i = #Balls, 1, -1 do if not Balls[i] or not Balls[i].Parent then table.remove(Balls, i) end end local char = Player.Character local root = char and char:FindFirstChild("HumanoidRootPart") if BallESP.Enabled then for _, ball in pairs(Balls) do if ball and ball.Parent then if not ESPHighlights[ball] then local hl = Instance.new("Highlight") hl.Name = "SnowESP" hl.FillTransparency = 0.4 hl.OutlineTransparency = 0 hl.DepthMode = Enum.HighlightDepthMode.AlwaysOnTop hl.Adornee = ball hl.Parent = Gui ESPHighlights[ball] = hl end if root and ESPHighlights[ball] then local dist = (ball.Position - root.Position).Magnitude local col = dist < 20 and Color3.fromRGB(80, 255, 100) or dist < 50 and Color3.fromRGB(255, 200, 60) or Color3.fromRGB(255, 70, 70) pcall(function() ESPHighlights[ball].FillColor = col ESPHighlights[ball].OutlineColor = col end) end end end for ball, hl in pairs(ESPHighlights) do if not ball or not ball.Parent then pcall(function() hl:Destroy() end) ESPHighlights[ball] = nil end end else if next(ESPHighlights) then ClearAllESP() end end end end) -- BallLock RunService.RenderStepped:Connect(function() if not BallLock.Enabled then return end local char = Player.Character local root = char and char:FindFirstChild("HumanoidRootPart") if not root then return end local ball, dist = GetClosestBall(root, BallLock.Distance) if not ball then ballLockPaused = false; return end if dist < 2 then ballLockPaused = true; return end if dist > 6 then ballLockPaused = false end if ballLockPaused then return end local cam = workspace.CurrentCamera cam.CFrame = cam.CFrame:Lerp(CFrame.new(cam.CFrame.Position, ball.Position), BallLock.Smoothness) end) -- Magnet + RShift UserInputService.InputBegan:Connect(function(input, gpe) if gpe then return end if input.KeyCode == Enum.KeyCode.RightShift then if uiOpen then HideUI() else ShowUI() end return end if input.KeyCode == Enum.KeyCode.F and Magnet.Enabled then local char = Player.Character local root = char and char:FindFirstChild("HumanoidRootPart") if not root then return end local ball, dist = GetClosestBall(root, Magnet.Distance) if not ball then return end local originalCFrame = root.CFrame local dir = (ball.Position - root.Position).Unit root.CFrame = CFrame.new(ball.Position - dir * 1, ball.Position) task.wait() root.CFrame = originalCFrame root.Velocity = Vector3.new(0, 0, 0) pcall(function() root.AssemblyLinearVelocity = Vector3.new(0, 0, 0) end) end end) -- Рескан task.spawn(function() while true do task.wait(3) ScanBalls() end end) -- ================================================================ -- UI -- ================================================================ local GKPage = MakeTab("GK", "🧤") local ESPSec = MakeSection(GKPage, "⚽ Ball ESP") ESPSec:AddToggle({ Name = "Ball ESP", Description = "Подсветка мячей через стены", Default = false, Callback = function(v) BallESP.Enabled = v if not v then ClearAllESP() end Notify({Title = "Ball ESP", Content = v and "Включено" or "Выключено", Duration = 2, Type = v and "Success" or "Info"}) end }) local BLSec = MakeSection(GKPage, "🎯 BallLock") BLSec:AddToggle({ Name = "BallLock", Description = "Камера наводится на мяч", Default = false, Callback = function(v) BallLock.Enabled = v ballLockPaused = false Notify({Title = "BallLock", Content = v and "Включено" or "Выключено", Duration = 2, Type = v and "Success" or "Info"}) end }) BLSec:AddSlider({ Name = "Distance", Description = "Макс. дистанция", Min = 5, Max = 150, Default = 50, Suffix = " studs", Callback = function(v) BallLock.Distance = v end }) BLSec:AddSlider({ Name = "Smoothness", Description = "Плавность камеры", Min = 5, Max = 50, Default = 15, Suffix = "%", Callback = function(v) BallLock.Smoothness = v / 100 end }) local MagSec = MakeSection(GKPage, "🧲 Magnet") MagSec:AddToggle({ Name = "Magnet", Description = "F — телепорт к мячу и обратно", Default = false, Callback = function(v) Magnet.Enabled = v Notify({Title = "Magnet", Content = v and "Нажми F" or "Выключено", Duration = 2, Type = v and "Success" or "Info"}) end }) MagSec:AddSlider({ Name = "Distance", Description = "Макс. дистанция", Min = 5, Max = 150, Default = 60, Suffix = " studs", Callback = function(v) Magnet.Distance = v end }) task.delay(1, function() Notify({Title = "❄ Snow Hub", Content = "RShift — меню | F — магнит", Duration = 4, Type = "Info"}) end)