Run it
Copy the script and paste it into your executor.
a=.pi; b=.abs; c=.clamp; d=.exp; e=.rad; f=.sign; g=.sqrt; h=.tan; i=:() j=:() k=:() l=:() m=:() n=:() o=j.LocalPlayer; o j:():()o=j.LocalPlayer ; p=.CurrentCamera;:():(() q=.CurrentCamera; q p=q ) r=.ContextActionPriority.High.Value; s=.(,,)*; t=.(,)*; u=; v=() w=; x=; y=; z={} z.__index=z; z.(A,B) self=({},z)self.f=A;self.p=B;self.v=B*; self ; z:(C,D) E=self.f**a; F=self.p; G=self.v; H=D-F; I=(-E*C) J=D+(G*C-H*(E*C+))*I; K=(E*C*(H*E-G)+G)*I;self.p=J;self.v=K; J ; z:(B)self.p=B;self.v=B* ; L=.() M=.() N=; O=z.(w,.()) P=z.(x,.()) Q=z.(y,) R=; (T) U=.()U.Name=U.Parent=o.PlayerGui; V=.()V.Size=.(,,,)V.Position=.(,,,)V.BackgroundColor3=.(,,)V.Parent=U; W=.()W.Text=W.Size=.(,,,)W.BackgroundTransparency=;W.TextColor3=.(,,)W.Parent=V; X=.()X.Text=X.Size=.(,,,)X.Position=.(,,,)X.BackgroundColor3=.(,,)X.TextColor3=.(,,)X.Parent=V;X.MouseButton1Click:(()R=U:()()) Y=.()Y.Text=Y.Size=.(,,,)Y.Position=.(,,,)Y.BackgroundColor3=.(,,)Y.TextColor3=.(,,)Y.Parent=V;Y.MouseButton1Click:(()R=U:()()); Z={} _; a0=; a1=; (a3)((a0*a3)-)/((a0)-); (a3) ((a3-a1)/(-a1)); (a3) (a3)*(((a3)),,) ; a5={ButtonX=,ButtonY=,DPadDown=,DPadUp=,ButtonL2=,ButtonR2=,Thumbstick1=.(),Thumbstick2=.()} a6={W=,A=,S=,D=,E=,Q=,U=,H=,J=,K=,I=,Y=,Up=,Down=,LeftShift=,RightShift=} a7={Delta=.(),MouseWheel=} a8=.(,,) a9=.(,,) aa=.(,)*a/; ab=.(,)*a/; ac=; ad=; ae=; af=; ag=; ah=; ai=; aj=; ak=; al=; am=.() an=.() ao=.() ap=; aq=; ar=; Z.(C)ag=(ag+C*(a6.Up-a6.Down)*ae,,) as=.((a5.Thumbstick1.x),(a5.ButtonR2)-(a5.ButtonL2),(-a5.Thumbstick1.y))*a8; at=.(a6.D-a6.A+a6.K-a6.H,a6.E-a6.Q+a6.I-a6.Y,a6.S-a6.W+a6.J-a6.U)*a9; au=.(,,) R== au=.((an.X),,(an.Y))*a8 ; av=m:(.KeyCode.LeftShift) m:(.KeyCode.RightShift)(as+at+au)*ag*(av af ); Z.(C) as=.((a5.Thumbstick2.y),(-a5.Thumbstick2.x))*ab; aw=a7.Delta*aa;a7.Delta=.() as+aw ; Z.(C) as=(a5.ButtonX-a5.ButtonY)*ad; aw=a7.MouseWheel*ac;a7.MouseWheel=; as+aw ; (ay,az,aA)a6[aA.KeyCode.Name]=az==.UserInputState.Begin ; .ContextActionResult.Sink ; (ay,az,aA)a5[aA.KeyCode.Name]=az==.UserInputState.Begin ; .ContextActionResult.Sink ; (ay,az,aA) aD=aA.Delta;a7.Delta=.(-aD.y,-aD.x) .ContextActionResult.Sink ; (ay,az,aA)a5[aA.KeyCode.Name]=aA.Position; .ContextActionResult.Sink ; (ay,az,aA)a5[aA.KeyCode.Name]=aA.Position.z; .ContextActionResult.Sink ; (ay,az,aA)a7[aA.UserInputType.Name]=-aA.Position.z; .ContextActionResult.Sink ; (aI) aJ,aK (aI) aI[aJ]=aK* ; Z.()i:(,ax,,r,.KeyCode.W,.KeyCode.U,.KeyCode.A,.KeyCode.H,.KeyCode.S,.KeyCode.J,.KeyCode.D,.KeyCode.K,.KeyCode.E,.KeyCode.I,.KeyCode.Q,.KeyCode.Y,.KeyCode.Up,.KeyCode.Down)i:(,aC,,r,.UserInputType.MouseMovement)i:(,aG,,r,.UserInputType.MouseWheel)i:(,aB,,r,.KeyCode.ButtonX,.KeyCode.ButtonY)i:(,aF,,r,.KeyCode.ButtonR2,.KeyCode.ButtonL2)i:(,aE,,r,.KeyCode.Thumbstick1,.KeyCode.Thumbstick2) R== ah=.()ah.Name=ah.Parent=o.PlayerGui;ai=.()ai.Size=.(,,,)ai.Position=.(,,,)ai.BackgroundTransparency=;ai.Active=;ai.Parent=ah;aj=.()aj.Size=.(,,,)aj.Position=.(,,,)aj.BackgroundTransparency=;aj.Active=;aj.Parent=ah;ai.InputBegan:((aA) aA.UserInputType==.UserInputType.Touch am=aA.Position;an=.() aq aq:();aq=.()aq.Size=.(,)aq.Position=.(aA.Position.X-,aA.Position.Y-)aq.BackgroundTransparency=;aq.BackgroundColor3=.(,,)aq.Parent=ah; aL=.()aL.CornerRadius=.(,)aL.Parent=aq;ar=.()ar.Size=.(,)ar.Position=.(,-,,-)ar.BackgroundTransparency=;ar.BackgroundColor3=.(,,)ar.Parent=aq; aM=.()aM.CornerRadius=.(,)aM.Parent=ar )ai.InputChanged:((aA) aA.UserInputType==.UserInputType.Touch aD=aA.Position-am; aN=aD.Magnitude; aN>ap aD=aD.Unit*ap ;an=aD/ap; ar ar.Position=.(,aD.X-,,aD.Y-) )ai.InputEnded:((aA) aA.UserInputType==.UserInputType.Touch an=.() aq aq:()aq= )aj.InputBegan:((aA) aA.UserInputType==.UserInputType.Touch ao=aA.Position )aj.InputChanged:((aA) aA.UserInputType==.UserInputType.Touch B=aA.Position; aD=B-ao;a7.Delta=a7.Delta+.(-aD.Y,-aD.X)/;ao=B )ak=.()ak.Text=ak.Size=.(,,,)ak.Position=.(,-,,-)ak.BackgroundColor3=.(,,)ak.TextColor3=.(,,)ak.Parent=ah;ak.InputBegan:((aA) aA.UserInputType==.UserInputType.Touch a6.E= )ak.InputEnded:((aA) aA.UserInputType==.UserInputType.Touch a6.E= )al=.()al.Text=al.Size=.(,,,)al.Position=.(,-,,)al.BackgroundColor3=.(,,)al.TextColor3=.(,,)al.Parent=ah;al.InputBegan:((aA) aA.UserInputType==.UserInputType.Touch a6.Q= )al.InputEnded:((aA) aA.UserInputType==.UserInputType.Touch a6.Q= ) ; Z.()ag=;(a5)(a6)(a7)i:()i:()i:()i:()i:()i:() ah ah:()ah= ;an=.() aq aq:()aq= ; (aP) aQ=; aR=p.ViewportSize; aS=*(N/) aT=aR.x/aR.y*aS; aU=aP.rightVector; aV=aP.upVector; aW=aP.lookVector; aX=.() aY=; a3=,, aZ=,, a_=(a3-)*aT; b0=(aZ-)*aS; H=aU*a_-aV*b0+aW; b1=aP.p+H*aQ; b2,b3=:(Ray.(b1,H.unit*aY),{o.Character }) aN=(b3-b1).magnitude; aY>aN aY=aN;aX=H.unit ; aW:(aX)*aY ; (C) b5=O:(C,Z.(C)) b6=P:(C,Z.(C)) b7=Q:(C,Z.(C)) b8=(((/))/((N/)))N=(N+b7*u*C/b8,,)M=M+b6*t*C/b8;M=.((M.x,-v,v),M.y%(*a)) b9=.(L)*.(M.x,M.y,)*.(b5*s*C)L=b9.p;p.CFrame=b9;p.Focus=b9*.(,,-(b9))p.FieldOfView=N ; ba={} bb; bc; bd; be; bf; b9; bg; bh={} bi={Backpack=,Health=,PlayerList=} bj={BadgesNotificationsActive=,PointsNotificationsActive=} ba.() bk (bi) bi[bk]=l:(.CoreGuiType[bk])l:(.CoreGuiType[bk],); bk (bj) bj[bk]=l:(bk)l:(bk,); bl=o:() bl bm,bn (bl:()) bn:() bn.Enabled bh[#bh+]=bn;bn.Enabled= ;bg=p.FieldOfView;p.FieldOfView=;be=p.CameraType;p.CameraType=.CameraType.Custom;bd=p.CameraSubject;p.CameraSubject=;b9=p.CFrame;bf=p.Focus;bb=m.MouseIconEnabled;m.MouseIconEnabled=;bc=m.MouseBehavior;m.MouseBehavior=.MouseBehavior.Default ; ba.() bk,bo (bi) l:(.CoreGuiType[bk],bo); bk,bo (bj) l:(bk,bo); bm,bn (bh) bn.Parent bn.Enabled= ;bh={}p.FieldOfView=bg;bg=;p.CameraType=be;be=;p.CameraSubject=bd;bd=;p.CFrame=b9;b9=;p.Focus=bf;bf=;m.MouseIconEnabled=bb;bb=;m.MouseBehavior=bc;bc= ; () b9=p.CFrame;M=.(b9:())L=b9.p;N=p.FieldOfView;O:(.())P:(.())Q:()ba.()k:(,.RenderPriority.Camera.Value,b4)Z.(); ()Z.()k:()ba.(); br=; () br ()br= R== (()()br= ) ()br= ;o.Chatted:((bt) bt== () )Obfuscated. The code is scrambled, so you can't read what it does. Common for key systems, but take care.
Chat ".." for freecam toggle, opensource.

Universal