Advertisement
TigerloverproOffical

[Leaked] Fairy Script ROBLOX

Jan 4th, 2017
392
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 33.51 KB | None | 0 0
  1. --[[ This is a leaked RARE script for ROBLOX
  2. I did not make it...
  3. --]]
  4. --[[
  5. --Magical Fairy--
  6. local plr = game:service'Players'.LocalPlayer
  7. local m = plr:GetMouse()
  8. local char = plr.Character
  9. local runservice = game:service'RunService'
  10. local modelScale = 1/5
  11.  
  12.  
  13. pcall(function() local a = script.Parent.FaerieScript if a ~= script then a:Destroy() end end)
  14. pcall(function() local a = char.Animate if a ~= script then a.Disabled = true a:Destroy() end end)
  15. script.Name = "FaerieScript"
  16.  
  17. function weld(a,b,c,d)
  18.         local w = Instance.new("Weld",a)
  19.         w.Part0 = a
  20.         w.Part1 = b
  21.         w.C0 = c or CFrame.new()
  22.         w.C1 = d or CFrame.new()
  23.         return w
  24. end
  25.  
  26. function lerp(a,b,c)
  27.     return a+(b-a)*c
  28. end
  29.  
  30. do  -- Ignore my clerp stuff stolen from stravvy
  31.         local function QuaternionFromCFrame(cf)
  32.                 local mx, my, mz, m00, m01, m02, m10, m11, m12, m20, m21, m22 = cf:components()
  33.                 local trace = m00 + m11 + m22
  34.                 if trace > 0 then
  35.                         local s = math.sqrt(1 + trace)
  36.                         local recip = 0.5/s
  37.                         return (m21-m12)*recip, (m02-m20)*recip, (m10-m01)*recip, s*0.5
  38.                 else
  39.                         local i = 0
  40.                         if m11 > m00 then
  41.                                 i = 1
  42.                         end
  43.                         if m22 > (i == 0 and m00 or m11) then
  44.                                 i = 2
  45.                         end
  46.                         if i == 0 then
  47.                                 local s = math.sqrt(m00-m11-m22+1)
  48.                                 local recip = 0.5/s
  49.                                 return 0.5*s, (m10+m01)*recip, (m20+m02)*recip, (m21-m12)*recip
  50.                         elseif i == 1 then
  51.                                 local s = math.sqrt(m11-m22-m00+1)
  52.                                 local recip = 0.5/s
  53.                                 return (m01+m10)*recip, 0.5*s, (m21+m12)*recip, (m02-m20)*recip
  54.                         elseif i == 2 then
  55.                                 local s = math.sqrt(m22-m00-m11+1)
  56.                                 local recip = 0.5/s return (m02+m20)*recip, (m12+m21)*recip, 0.5*s, (m10-m01)*recip
  57.                         end
  58.                 end
  59.         end  
  60.         local function QuaternionToCFrame(px, py, pz, x, y, z, w)
  61.                 local xs, ys, zs = x + x, y + y, z + z
  62.                 local wx, wy, wz = w*xs, w*ys, w*zs
  63.                 local xx = x*xs
  64.                 local xy = x*ys
  65.                 local xz = x*zs
  66.                 local yy = y*ys
  67.                 local yz = y*zs
  68.                 local zz = z*zs
  69.                 return CFrame.new(px, py, pz,1-(yy+zz), xy - wz, xz + wy,xy + wz, 1-(xx+zz), yz - wx, xz - wy, yz + wx, 1-(xx+yy))
  70.                 end  
  71.         local function QuaternionSlerp(a, b, t)
  72.                 local cosTheta = a[1]*b[1] + a[2]*b[2] + a[3]*b[3] + a[4]*b[4]
  73.                 local startInterp, finishInterp;
  74.                 if cosTheta >= 0.0001 then
  75.                         if (1 - cosTheta) > 0.0001 then
  76.                                 local theta = math.acos(cosTheta)
  77.                                 local invSinTheta = 1/math.sin(theta)
  78.                                 startInterp = math.sin((1-t)*theta)*invSinTheta
  79.                                 finishInterp = math.sin(t*theta)*invSinTheta  
  80.                         else
  81.                                 startInterp = 1-t
  82.                                 finishInterp = t
  83.                         end
  84.                 else
  85.                         if (1+cosTheta) > 0.0001 then
  86.                                 local theta = math.acos(-cosTheta)
  87.                                 local invSinTheta = 1/math.sin(theta)
  88.                                 startInterp = math.sin((t-1)*theta)*invSinTheta
  89.                                 finishInterp = math.sin(t*theta)*invSinTheta
  90.                         else
  91.                                 startInterp = t-1
  92.                                 finishInterp = t
  93.                         end
  94.                 end
  95.                 return a[1]*startInterp + b[1]*finishInterp, a[2]*startInterp + b[2]*finishInterp, a[3]*startInterp + b[3]*finishInterp, a[4]*startInterp + b[4]*finishInterp
  96.         end  
  97.         function clerp(a,b,t)
  98.                 local qa = {QuaternionFromCFrame(a)}
  99.                 local qb = {QuaternionFromCFrame(b)}
  100.                 local ax, ay, az = a.x, a.y, a.z
  101.                 local bx, by, bz = b.x, b.y, b.z  
  102.                 local _t = 1-t
  103.                 return QuaternionToCFrame(_t*ax + t*bx, _t*ay + t*by, _t*az + t*bz,QuaternionSlerp(qa, qb, t))
  104.         end
  105. end
  106.  
  107. for i,v in pairs(char:GetChildren()) do
  108.         if v:IsA("Hat") or v:IsA("BodyColors") or v:IsA("Clothing") or v:IsA("ShirtGraphic") then
  109.                 v:Destroy()
  110.         end
  111. end
  112. Instance.new("Hat",char)
  113. local root = char.HumanoidRootPart
  114. local tw = root.RootJoint
  115. local tor = char.Torso
  116. local hd = char.Head
  117. local hum = char.Humanoid
  118. hum.Health = 40
  119. hum.MaxHealth = 40
  120. hum.WalkSpeed = 12
  121. local rl,ll = char["Right Leg"],char["Left Leg"]
  122. local ra,la = char["Right Arm"],char["Left Arm"]
  123.  
  124. local c0 = {
  125.         rs = CFrame.new(1,.5,0),
  126.         ls = CFrame.new(-1,.5,0),
  127.         rh = CFrame.new(.5,-1,0),
  128.         lh = CFrame.new(-.5,-1,0),
  129.         nk = CFrame.new(0,1,0),
  130.         tw = CFrame.new(0,0,0)*CFrame.Angles(0,0,0),
  131. }
  132. local c1 = {
  133.         rs = CFrame.new(-.5,.5,0),
  134.         ls = CFrame.new(.5,.5,0),
  135.         rh = CFrame.new(0,1,0),
  136.         lh = CFrame.new(0,1,0),
  137.         nk = CFrame.new(0,-.5,0),
  138.         tw = CFrame.new(0,0,0)*CFrame.Angles(0,0,0)
  139. }
  140.  
  141. local rs = tor["Right Shoulder"]
  142. local ls = tor["Left Shoulder"]
  143. local rh = tor["Right Hip"]
  144. local lh = tor["Left Hip"]
  145. local nk = tor["Neck"]
  146. for i,v in pairs(tor:GetChildren()) do
  147.         if v:IsA("Motor6D") then
  148.                 v.DesiredAngle = 0
  149.                 v.MaxVelocity = 0
  150.                 v.CurrentAngle = 0
  151.         end
  152. end
  153.  
  154.  
  155.  
  156.  
  157. pcall(function() tor.roblox:Destroy() end)
  158.  
  159. pcall(function() char.Faerie:Destroy() end)
  160. local model = Instance.new("Model",char)
  161. model.Name = "Faerie"
  162.  
  163. local BasePart = Instance.new("Part")
  164. BasePart.CanCollide = false
  165. BasePart.Anchored = false
  166. BasePart.FormFactor = "Custom"
  167. BasePart.Locked = true
  168. BasePart.Size = Vector3.new()
  169. BasePart.TopSurface,BasePart.BottomSurface,BasePart.LeftSurface,BasePart.RightSurface,BasePart.FrontSurface,BasePart.BackSurface = 10,10,10,10,10,10
  170. BasePart:BreakJoints()
  171.  
  172. function NP(par)
  173.     local p = BasePart:Clone()
  174.     p.Parent = par or model
  175.     return p
  176. end
  177.  
  178. local w1 = NP()
  179. w1.Transparency = .1
  180. local w1m = Instance.new("SpecialMesh",w1)
  181. w1m.MeshId = "rbxassetid://19367766"
  182. w1m.TextureId = "rbxassetid://9854798"
  183. w1m.Scale = Vector3.new(1.05, 1.05, 1.05)
  184. local w1 = weld(tor,w1,CFrame.new(-.1,0.55,1.6))
  185.  
  186. local w2 = NP()
  187. w2.Transparency = .1
  188. local w2m = Instance.new("SpecialMesh",w2)
  189. w2m.MeshId = "rbxassetid://19367766"
  190. w2m.TextureId = "rbxassetid://9854798"
  191. w2m.Scale = Vector3.new(1.05, 1.05, 1.05)
  192. local w2 = weld(tor,w2,CFrame.new(.1,0.55,1.6))
  193.  
  194. local h = NP()
  195. local hm = Instance.new("SpecialMesh",h)
  196. hm.MeshId = "rbxassetid://154820214"
  197. hm.TextureId = "rbxassetid://91740209"
  198. hm.Scale = Vector3.new(1, 1, 1)
  199. weld(hd,h,CFrame.new(0,0.2,0))
  200.  
  201. for i,v in pairs(char:GetChildren()) do
  202.         if v:IsA("BasePart") then
  203.                 v.Material = "SmoothPlastic"
  204.                 v.TopSurface,v.BottomSurface,v.FrontSurface,v.BackSurface,v.LeftSurface,v.RightSurface = 10,10,10,10,10,10
  205.         end
  206. end
  207.  
  208. do
  209.         if modelScale ~= 1 then
  210.                 for i,v in pairs(c0) do
  211.                         c0[i] = (v-v.p) + v.p*modelScale
  212.                 end
  213.                 for i,v in pairs(c1) do
  214.                         c1[i] = (v-v.p) + v.p*modelScale
  215.                 end
  216.                 local Joints = {}
  217.             local gtJoints,gtParts;
  218.  
  219.             local function gtCFrame(cf)
  220.                 return (cf-cf.p) + cf.p * modelScale
  221.             end
  222.  
  223.             function gtJoints(p)
  224.                 for i,v in pairs(p:GetChildren()) do
  225.                     if v:IsA("JointInstance") then
  226.                         table.insert(Joints,{v,v.Part0,v.Part1})
  227.                         v.Part0 = nil
  228.                         v.Part1 = nil
  229.                         v.C0 = (v.C0-(v.C0.p)) + (v.C0.p * modelScale)
  230.                         v.C1 = (v.C1-(v.C1.p)) + (v.C1.p * modelScale)
  231.                     end
  232.                     gtJoints(v)
  233.                 end
  234.             end
  235.  
  236.             function gtParts(p)
  237.                 for i,v in pairs(p:GetChildren()) do
  238.                     if v:IsA("BasePart") then
  239.                         pcall(function() v.FormFactor = "Custom" end)
  240.                         local oldz = v.Size
  241.                         local cf = tor.CFrame:toObjectSpace(v.CFrame)
  242.                         v.Size = v.Size * modelScale
  243.                         v.CFrame = tor.CFrame * gtCFrame(cf)
  244.                         local mesh = nil
  245.                         for i,t in pairs(v:GetChildren()) do
  246.                             if t:IsA("DataModelMesh") then
  247.                                 mesh = t
  248.                             end
  249.                         end
  250.                         if mesh == nil and v:IsA("Part") and v.Shape == Enum.PartType.Ball then
  251.                             mesh = Instance.new("SpecialMesh",v)
  252.                             mesh.MeshType = Enum.MeshType.Sphere
  253.                         end
  254.                         if mesh == nil and ((v:IsA("Part") and v.Shape == Enum.PartType.Block) or v:IsA("Seat") or v:IsA("VehicleSeat")) then
  255.                             mesh = Instance.new("BlockMesh",v)
  256.                         end
  257.                         if mesh ~= nil then
  258.                                 if mesh:IsA("SpecialMesh") and mesh.MeshType == Enum.MeshType.FileMesh then
  259.                                         mesh.Scale = mesh.Scale * modelScale
  260.                                 else
  261.                                     mesh.Scale = mesh.Scale*(oldz*modelScale)/v.Size
  262.                             end
  263.                         end
  264.                     end
  265.                     gtParts(v)
  266.                 end
  267.             end
  268.             gtJoints(char)
  269.             gtParts(char)
  270.             for i,v in pairs(Joints) do
  271.                 v[1].Part0 = v[2]
  272.                 v[1].Part1 = v[3]
  273.             end
  274.         end
  275. end
  276. rs.C0,rs.C1 = c0.rs,c1.rs
  277. ls.C0,ls.C1 = c0.ls,c1.ls
  278. rh.C0,rh.C1 = c0.rh,c1.rh
  279. lh.C0,lh.C1 = c0.lh,c1.lh
  280. nk.C0,nk.C1 = c0.nk,c1.nk
  281. tw.C0,tw.C1 = c0.tw,c1.tw
  282.  
  283. local w10,w20 = w1.C0,w2.C0
  284.  
  285. local pl = tor:FindFirstChild("FairyLight") or Instance.new("PointLight",tor)
  286. pl.Name = "FairyLight"
  287. pl.Shadows = false
  288. pl.Range = 8
  289. pl.Brightness = 10
  290.  
  291. local sparkles = tor:FindFirstChild("FairySparkles") or Instance.new("Sparkles",tor)
  292. sparkles.Name = "FairySparkles"
  293.  
  294.  
  295. local outfit = 0
  296. local outfitparts = {ra,la,rl,ll,tor}
  297. local outfits = {
  298.         {{106705109},{106705077},{106703301},{106703213},{106705037}}
  299. }
  300.  
  301.  
  302. local mycolor = ll.BrickColor.Color
  303. local mycolor2 = mycolor
  304.  
  305. function setOutfit()
  306.         local of = outfits[outfit]
  307.         if of then
  308.                 for i,v in pairs(outfitparts) do
  309.                         local mesh = v:FindFirstChild("outfitMesh")
  310.                         local meshdata = outfits[outfit][i]
  311.                         if not mesh then
  312.                                 mesh = Instance.new("SpecialMesh",v)
  313.                                 mesh.Name = "outfitMesh"
  314.                                 mesh.TextureId = "rbxassetid://9854798"
  315.                         end
  316.                         mesh.Scale =(meshdata[2] or Vector3.new(1,1,1)) * modelScale
  317.                         mesh.MeshId = "rbxassetid://"..meshdata[1]
  318.                         mesh.VertexColor = Vector3.new(mycolor2.r,mycolor2.g,mycolor2.b)
  319.                 end
  320.         else
  321.                 for i,v in pairs(outfitparts) do
  322.                         pcall(function() v.outfitMesh:Destroy() end)
  323.                 end
  324.         end
  325. end
  326. setOutfit()
  327.  
  328. local senabled = true
  329. local lenabled = true
  330. function changeColor()
  331.         for i,v in pairs(char:GetChildren()) do
  332.                 if v:IsA("BasePart") then
  333.                         v.BrickColor = BrickColor.new(mycolor)
  334.                 end
  335.         end
  336.         local mc1 = Vector3.new(mycolor.r,mycolor.g,mycolor.b)
  337.         local mc2 = Vector3.new(mycolor2.r,mycolor2.g,mycolor2.b)
  338.         w1m.VertexColor,w2m.VertexColor,hm.VertexColor = mc1,mc1,mc2
  339.         for i,v in pairs(outfitparts) do
  340.                 local mesh = v:FindFirstChild("outfitMesh")
  341.                 if mesh then
  342.                         mesh.VertexColor = mc2
  343.                 end
  344.         end
  345.         pl.Color = mycolor
  346.         sparkles.SparkleColor = mycolor
  347. end
  348. changeColor()
  349.  
  350. do
  351.         pcall(function() plr.PlayerGui.fairyColoring:Destroy() end)
  352.         local scr = Instance.new("ScreenGui",plr.PlayerGui)
  353.         scr.Name = "fairyColoring"
  354.         local fr = Instance.new("Frame",scr)
  355.         fr.Size = UDim2.new(0,-150,0,-65)
  356.         fr.BackgroundColor3 = Color3.new(1,1,1)
  357.         fr.BorderColor3 = Color3.new(.05,.05,.05)
  358.         fr.BackgroundTransparency = .8
  359.         fr.Position = UDim2.new(1,0,1,scr.Parent:FindFirstChild("PandaHelpNotify") and -20 or 0)
  360.         fr.ZIndex = 9
  361.         local am = 75
  362.         local rval,gval,bval = mycolor.r,mycolor.g,mycolor.b
  363.         local r = Instance.new("TextButton",fr)
  364.         r.BackgroundTransparency = 1
  365.         r.Size = UDim2.new(0,75,0,15)
  366.         r.Position = UDim2.new(0,5,0,5)
  367.         r.TextColor3 = Color3.new(1,1,1)
  368.         r.TextStrokeTransparency = .4
  369.         for i=1,am do
  370.                 local t = Instance.new("ImageLabel",r)
  371.                 t.BorderSizePixel = 0
  372.                 t.Size = UDim2.new(1/am,0,1,0)
  373.                 t.Position = UDim2.new((i-1)/am,0,0,0)
  374.                 t.Name = i
  375.                 t.ZIndex = 10
  376.         end
  377.         local rb = Instance.new("ImageLabel",r)
  378.         rb.ZIndex = 10
  379.         rb.Size = UDim2.new(0,2,1,-2)
  380.         rb.BackgroundColor3 = Color3.new(0,0,0)
  381.         rb.BackgroundTransparency = .5
  382.         rb.BorderColor3 = Color3.new(.4,.4,.4)
  383.         rb.Name = "b"
  384.         local g = r:Clone()
  385.         g.Parent = fr
  386.         g.Position = UDim2.new(0,5,0,25)
  387.         local b = r:Clone()
  388.         b.Parent = fr
  389.         b.Position = UDim2.new(0,5,0,45)
  390.         r.ZIndex,g.ZIndex,b.ZIndex = 10,10,10
  391.         local prev = Instance.new("TextButton",fr)
  392.         prev.Size = UDim2.new(0,55,0,45)
  393.         prev.Position = UDim2.new(0,90,0,5)
  394.         prev.ZIndex = 10
  395.         prev.BorderColor3 = Color3.new(.2,.2,.2)
  396.         prev.TextColor3 = Color3.new(1,1,1)
  397.         prev.TextStrokeTransparency = .4
  398.         prev.TextYAlignment = "Bottom"
  399.         prev.FontSize = "Size8"
  400.         prev.TextWrapped = true
  401.         local res = Instance.new("TextButton",fr)
  402.         res.Size = UDim2.new(0,55,0,9)
  403.         res.Position = UDim2.new(0,90,0,51)
  404.         res.ZIndex = 10
  405.         res.BorderColor3 = Color3.new(.2,.2,.2)
  406.         res.BackgroundColor3 = Color3.new(.5,0,0)
  407.         res.TextColor3 = Color3.new(1,1,1)
  408.         res.Text = "reset"
  409.         res.FontSize = "Size8"
  410.         local mode = 0
  411.         local function update(set)
  412.                 r.b.Position = UDim2.new(rval,-1,0,1)
  413.                 g.b.Position = UDim2.new(gval,-1,0,1)
  414.                 b.b.Position = UDim2.new(bval,-1,0,1)
  415.                 local col = Color3.new(rval,gval,bval)
  416.                 prev.BackgroundColor3 = mode == 1 and mycolor2 or mycolor
  417.                 prev.Text = ""
  418.                 r.Text = math.floor(rval*255+.5)
  419.                 g.Text = math.floor(gval*255+.5)
  420.                 b.Text = math.floor(bval*255+.5)
  421.                 for i,v in pairs(r:GetChildren()) do
  422.                         local n = tonumber(v.Name)
  423.                         if n then
  424.                                 local sc = n/am
  425.                                 v.BackgroundColor3 = Color3.new(sc,gval,bval)
  426.                         end
  427.                 end
  428.                 for i,v in pairs(g:GetChildren()) do
  429.                         local n = tonumber(v.Name)
  430.                         if n then
  431.                                 local sc = n/am
  432.                                 v.BackgroundColor3 = Color3.new(rval,sc,bval)
  433.                         end
  434.                 end
  435.                 for i,v in pairs(b:GetChildren()) do
  436.                         local n = tonumber(v.Name)
  437.                         if n then
  438.                                 local sc = n/am
  439.                                 v.BackgroundColor3 = Color3.new(rval,gval,sc)
  440.                         end
  441.                 end
  442.                 if set ~= false then
  443.                         if mode == 0 then
  444.                                 mycolor = col
  445.                         end
  446.                         if mode == 1 then
  447.                                 mycolor2 = col
  448.                         end
  449.                         changeColor()
  450.                 end
  451.         end
  452.         update()
  453.         local rd,gd,bd = false,false,false
  454.         r.MouseButton1Down:connect(function(x,y) rd = true rval = (x-r.AbsolutePosition.X)/r.AbsoluteSize.X update()  end)
  455.         r.MouseButton1Up:connect(function() rd = false end)
  456.         r.MouseLeave:connect(function() rd = false end)
  457.         r.MouseMoved:connect(function(x,y) if not rd then return end rval = (x-r.AbsolutePosition.X)/r.AbsoluteSize.X update() end)
  458.         g.MouseButton1Down:connect(function(x,y) gd = true gval = (x-g.AbsolutePosition.X)/g.AbsoluteSize.X update() end)
  459.         g.MouseButton1Up:connect(function() gd = false end)
  460.         g.MouseLeave:connect(function() gd = false end)
  461.         g.MouseMoved:connect(function(x,y) if not gd then return end gval = (x-g.AbsolutePosition.X)/g.AbsoluteSize.X update() end)
  462.         b.MouseButton1Down:connect(function(x,y) bd = true bval = (x-b.AbsolutePosition.X)/b.AbsoluteSize.X update() end)
  463.         b.MouseButton1Up:connect(function() bd = false end)
  464.         b.MouseLeave:connect(function() bd = false end)
  465.         b.MouseMoved:connect(function(x,y) if not bd then return end bval = (x-b.AbsolutePosition.X)/b.AbsoluteSize.X update() end)
  466.         res.MouseButton1Click:connect(function()
  467.                 rval,gval,bval = themeColor.Color.r,themeColor.Color.g,themeColor.Color.b
  468.                 update()
  469.         end)
  470.  
  471.         local modebtn = Instance.new("TextButton",fr)
  472.         modebtn.Position = UDim2.new(1,-150,0,-15)
  473.         modebtn.Size = UDim2.new(0,49,0,14)
  474.         modebtn.BackgroundColor3 = Color3.new(1,1,0)
  475.         modebtn.BackgroundTransparency = .6
  476.         modebtn.TextScaled = true
  477.         modebtn.Font = 4
  478.         modebtn.TextColor3 = Color3.new(1,1,1)
  479.         modebtn.TextStrokeTransparency = .7
  480.         modebtn.Text = "Body"
  481.         modebtn.MouseButton1Click:connect(function()
  482.                 mode = (mode+1)%2
  483.                 local col = mode == 1 and mycolor2 or mycolor
  484.                 rval,gval,bval = col.r,col.g,col.b
  485.                 modebtn.Text = mode == 0 and "Body" or "Clothes"
  486.                 update(false)
  487.         end)
  488.  
  489.         local outfitbtn = Instance.new("TextButton",fr)
  490.         outfitbtn.Position = UDim2.new(1,-150,0,-30)
  491.         outfitbtn.Size = UDim2.new(0,49,0,14)
  492.         outfitbtn.BackgroundColor3 = Color3.new(1,1,0)
  493.         outfitbtn.BackgroundTransparency = .6
  494.         outfitbtn.TextScaled = true
  495.         outfitbtn.Font = 4
  496.         outfitbtn.TextColor3 = Color3.new(1,1,1)
  497.         outfitbtn.TextStrokeTransparency = .7
  498.         outfitbtn.Text = "Outfit"
  499.         outfitbtn.MouseButton1Click:connect(function()
  500.                 outfit = (outfit+1)%(#outfits+1)
  501.                 setOutfit()
  502.         end)
  503.  
  504.         local sparklebtn = Instance.new("TextButton",fr)
  505.         sparklebtn.Position = UDim2.new(1,-100,0,-15)
  506.         sparklebtn.Size = UDim2.new(0,100,0,14)
  507.         sparklebtn.BackgroundColor3 = Color3.new(0,1,0)
  508.         sparklebtn.BackgroundTransparency = .6
  509.         sparklebtn.TextScaled = true
  510.         sparklebtn.Font = 4
  511.         sparklebtn.TextColor3 = Color3.new(1,1,1)
  512.         sparklebtn.TextStrokeTransparency = .7
  513.         sparklebtn.Text = "Sparkles"
  514.         sparklebtn.MouseButton1Click:connect(function()
  515.                 senabled = not senabled
  516.                 sparklebtn.BackgroundColor3 = senabled and Color3.new(0,1,0) or Color3.new(1,0,0)
  517.         end)
  518.         local lightbtn = Instance.new("TextButton",fr)
  519.         lightbtn.Position = UDim2.new(1,-100,0,-30)
  520.         lightbtn.Size = UDim2.new(0,100,0,14)
  521.         lightbtn.BackgroundColor3 = Color3.new(0,1,0)
  522.         lightbtn.BackgroundTransparency = .6
  523.         lightbtn.TextScaled = true
  524.         lightbtn.Font = 4
  525.         lightbtn.TextColor3 = Color3.new(1,1,1)
  526.         lightbtn.TextStrokeTransparency = .7
  527.         lightbtn.Text = "Light"
  528.         lightbtn.MouseButton1Click:connect(function()
  529.                 lenabled = not lenabled
  530.                 lightbtn.BackgroundColor3 = lenabled and Color3.new(0,1,0) or Color3.new(1,0,0)
  531.         end)
  532. end
  533.  
  534.  
  535. local gyro = root:FindFirstChild("RootGyro") or Instance.new("BodyGyro",root)
  536. gyro.maxTorque = Vector3.new()
  537. gyro.Name = "RootGyro"
  538.  
  539. local vel = root:FindFirstChild("RootVel") or Instance.new("BodyVelocity",root)
  540. vel.maxForce = Vector3.new()
  541. vel.Name = "RootVel"
  542. vel.P = 4000
  543.  
  544. local flying = false
  545. local state = "idle"
  546. local kd = {}
  547. local humspd = 0
  548. local flyspeed = 0
  549. local flystop = 0
  550. local sitting = false
  551. local holding = false
  552.  
  553. m.KeyDown:connect(function(k)
  554.         local now = tick()
  555.         kd[k] = now
  556.         if k == " " and not flying then
  557.                 pcall(function() sitting:Destroy() end)
  558.                 sitting = nil
  559.                 state = "fly"
  560.                 flying = true
  561.                 flydir = (root.CFrame.lookVector*Vector3.new(1,0,1)).unit
  562.         elseif k == " " and state == "fly" then
  563.                 flying = false
  564.                 state = "idle"
  565.                 flystop = tick()
  566.         elseif k == "x" and m.Target and (root.Position-m.Hit.p).magnitude < 20*modelScale then
  567.                 local tar = m.Target
  568.                 local cf = tar.CFrame:toObjectSpace(m.Hit)
  569.                 local siz = tar.Size/2
  570.                 local cfr
  571.                 local rx,ry,rz = 0,0,0
  572.                 local lv = tar.CFrame:vectorToObjectSpace(root.CFrame.lookVector)
  573.                 if math.abs(cf.Y-siz.Y) < .03 then
  574.                         cfr = CFrame.new(cf.p + Vector3.new(0,3*modelScale,0)) * CFrame.Angles(0,math.atan2(-lv.X,-lv.Z),0)
  575.                 elseif math.abs(-cf.Y-siz.Y) < .03 then
  576.                         cfr = CFrame.new(cf.p - Vector3.new(0,3*modelScale,0)) * CFrame.Angles(0,math.atan2(-lv.X,-lv.Z),math.pi)
  577.                 elseif math.abs(cf.X-siz.X) < .03 then
  578.                         cfr = CFrame.new(cf.p + Vector3.new(3*modelScale,0,0)) * CFrame.Angles(0,0,-math.pi/2) * CFrame.Angles(0,math.atan2(-lv.X,-lv.Z),0)
  579.                 elseif math.abs(-cf.X-siz.X) < .03 then
  580.                         cfr = CFrame.new(cf.p - Vector3.new(3*modelScale,0,0)) * CFrame.Angles(0,0,math.pi/2) * CFrame.Angles(0,math.atan2(-lv.X,-lv.Z),0)
  581.                 elseif math.abs(cf.Z-siz.Z) < .03 then
  582.                         cfr = CFrame.new(cf.p + Vector3.new(0,0,3*modelScale)) * CFrame.Angles(math.pi/2,0,0) * CFrame.Angles(0,math.atan2(-lv.X,-lv.Z),0)
  583.                 elseif math.abs(-cf.Z-siz.Z) < .03 then
  584.                         cfr = CFrame.new(cf.p - Vector3.new(0,0,3*modelScale)) * CFrame.Angles(-math.pi/2,0,0) * CFrame.Angles(0,math.atan2(-lv.X,-lv.Z),0)
  585.                 end
  586.                 if cfr then
  587.                         pcall(function() sitting:Destroy() end)
  588.                         flying = false
  589.                         state = "sit"
  590.                         if m.Target.Anchored then
  591.                                 sitting = {tar = tar, cf = cfr}
  592.                         else
  593.                                 sitting = weld(tar,root,cfr)
  594.                         end
  595.                 end
  596.         end
  597. end)
  598. m.KeyUp:connect(function(k)
  599.         kd[k] = nil
  600. end)
  601.  
  602. hum.Running:connect(function(spd)
  603.         if state ~= "idle" and state ~= "walk" and state ~= "inair" then return end
  604.         humspd = spd
  605.         state = flying and "fly" or (spd < 1 and "idle" or "walk")
  606. end)
  607. hum.Climbing:connect(function(spd)
  608.         if state ~= "idle" and state ~= "walk" and state ~= "inair" then return end
  609.         humspd = spd
  610.         state = flying and "fly" or (spd < 1 and "idle" or "walk")
  611. end)
  612. hum.Seated:connect(function(a)
  613.         state = a and "sit" or humspd > 0 and "idle" or "walk"
  614. end)
  615.  
  616. hum.Changed:connect(function()
  617.         if hum.Jump then
  618.                 hum.Jump = false
  619.         end
  620. end)
  621.  
  622. hum.FreeFalling:connect(function()
  623.         if state ~= "idle" and state ~= "walk" and state ~= "inair" then return end
  624.         state = math.abs(tor.Velocity.Y) > 1 and "inair" or state
  625. end)
  626.  
  627. hum.FallingDown:connect(function(a)
  628.         if not a then return end
  629.         state = "inair"
  630. end)
  631.  
  632.  
  633.  
  634. while true do
  635.         runservice.RenderStepped:wait()
  636.         local cam = workspace.CurrentCamera
  637.         local alpha = .2
  638.         sparkles.Enabled = senabled and flying and tor.Velocity.magnitude > 3
  639.         pl.Enabled = lenabled
  640.         if state ~= "fly" then
  641.                 if type(sitting) == "table" then
  642.                         gyro.maxTorque = Vector3.new(1,1,1)*4e6
  643.                         vel.maxForce = Vector3.new(1,1,1)*4e5
  644.                         gyro.cframe = sitting.tar.CFrame * sitting.cf
  645.                         vel.velocity = (gyro.cframe.p-root.Position)*10
  646.                 else
  647.                         gyro.maxTorque,vel.maxForce = Vector3.new(),Vector3.new()
  648.                 end
  649.         end
  650.         if sitting then
  651.                 state = "sit"
  652.         end
  653.         tw.MaxVelocity,rh.MaxVelocity,lh.MaxVelocity,rs.MaxVelocity,ls.MaxVelocity,nk.MaxVelocity = 0,0,0,0,0,0
  654.         tw.CurrentAngle,rh.CurrentAngle,lh.CurrentAngle,rs.CurrentAngle,ls.CurrentAngle,nk.CurrentAngle = 0,0,0,0,0,0
  655.  
  656.         local hasRobe = outfit == 1
  657.  
  658.         if state == "idle" then
  659.                 hum.PlatformStand = false
  660.                 local breathing = math.sin(tick()*2)
  661.                 local tilt = .02 + breathing*.03
  662.                 w1.C0 = clerp(w1.C0,w10*CFrame.Angles(0,-.01+breathing*.01,0),alpha)
  663.                 w2.C0 = clerp(w2.C0,w20*CFrame.Angles(0,.01-breathing*.01,0),alpha)
  664.  
  665.                 tw.C0 = clerp(tw.C0,c0.tw*CFrame.Angles(tilt,0,0),alpha)
  666.                 rh.C0 = clerp(rh.C0,c0.rh*CFrame.Angles(-tilt,hasRobe and 0 or -.1,hasRobe and 0 or .06),alpha)
  667.                 lh.C0 = clerp(lh.C0,c0.lh*CFrame.Angles(-tilt,hasRobe and 0 or .1,hasRobe and 0 or -.06),alpha)
  668.                 rs.C0 = clerp(rs.C0,c0.rs*CFrame.Angles(-tilt,0,.1),alpha)
  669.                 ls.C0 = clerp(ls.C0,c0.ls*CFrame.Angles(-tilt,0,-.1),alpha)
  670.                 nk.C0 = clerp(nk.C0,c0.nk*CFrame.Angles(-tilt+breathing*.05-.03,0,0),alpha)
  671.         elseif state == "inair" then
  672.                 hum.PlatformStand = false
  673.                 local wings = math.sin(tick()*80)
  674.                 w1.C0 = clerp(w1.C0,w10*CFrame.Angles(0,-.15+wings*.3,0),.6)
  675.                 w2.C0 = clerp(w2.C0,w20*CFrame.Angles(0,.15-wings*.3,0),.6)
  676.                 local alpha = .15
  677.                 local tilt = .05
  678.                 local wavey = math.sin(tick()*3)
  679.                 tw.C0 = clerp(tw.C0,c0.tw*CFrame.Angles(tilt,0,0),alpha)
  680.                 rh.C0 = clerp(rh.C0,c0.rh*CFrame.Angles(-tilt+wavey*.1,0,hasRobe and 0 or .02),alpha)
  681.                 lh.C0 = clerp(lh.C0,c0.lh*CFrame.Angles(-tilt-wavey*.1,0,hasRobe and 0 or -.02),alpha)
  682.                 rs.C0 = clerp(rs.C0,c0.rs*CFrame.Angles(-tilt-wavey*.07,0,.01),alpha)
  683.                 ls.C0 = clerp(ls.C0,c0.ls*CFrame.Angles(-tilt+wavey*.07,0,-.01),alpha)
  684.                 nk.C0 = clerp(nk.C0,c0.nk*CFrame.Angles(-tilt+.2,0,0),alpha)
  685.         elseif state == "walk" then
  686.                 hum.PlatformStand = false
  687.                 local walking = math.sin(tick()*25)
  688.                 local breathing = math.sin(tick()*2)
  689.                 local tilt = -.03-breathing*.02+walking*.01
  690.                 alpha = .6
  691.                 w1.C0 = clerp(w1.C0,w10*CFrame.Angles(0,-.05+breathing*.01+walking*.05,0),alpha)
  692.                 w2.C0 = clerp(w2.C0,w20*CFrame.Angles(0,.05-breathing*.01+walking*.05,0),alpha)
  693.  
  694.                 tw.C0 = clerp(tw.C0,c0.tw*CFrame.Angles(tilt,-walking*.08,0),alpha)
  695.                 rh.C0 = clerp(rh.C0,c0.rh*CFrame.Angles(-tilt+walking*.3,0,hasRobe and 0 or .02),alpha)
  696.                 lh.C0 = clerp(lh.C0,c0.lh*CFrame.Angles(-tilt-walking*.3,0,hasRobe and 0 or -.02),alpha)
  697.                 rs.C0 = clerp(rs.C0,c0.rs*CFrame.Angles(-tilt+.05-walking*.25,0,.01),alpha)
  698.                 ls.C0 = clerp(ls.C0,c0.ls*CFrame.Angles(-tilt+.05+walking*.25,0,-.01),alpha)
  699.                 nk.C0 = clerp(nk.C0,c0.nk*CFrame.Angles(-tilt+breathing*.04,walking*.07,0),alpha)
  700.         elseif state == "sit" then
  701.                 hum.Sit = false
  702.                 hum.PlatformStand = true
  703.                 local breathing = math.sin(tick()*2)
  704.                 local upvec = root.CFrame:vectorToWorldSpace(Vector3.new(0,1,0))
  705.                 if upvec.Y > .4 then
  706.                         local tilt = -.55+breathing*.015
  707.                         w1.C0 = clerp(w1.C0,w10*CFrame.Angles(0,-.01+breathing*.01,0),alpha)
  708.                         w2.C0 = clerp(w2.C0,w20*CFrame.Angles(0,.01-breathing*.01,0),alpha)
  709.                         tw.C0 = clerp(tw.C0,c0.tw*CFrame.Angles(tilt,0,0)+Vector3.new(0,-1.7,0)*modelScale,alpha)
  710.                         rh.C0 = clerp(rh.C0,c0.rh*CFrame.Angles(-tilt+1.57,0,hasRobe and 0 or .6),alpha)
  711.                         lh.C0 = clerp(lh.C0,c0.lh*CFrame.Angles(-tilt+1.57,0,hasRobe and 0 or -.6),alpha)
  712.                         rs.C0 = clerp(rs.C0,c0.rs*CFrame.Angles(-tilt+.3,0,-.1)*CFrame.Angles(hasRobe and .3 or 0,hasRobe and .2 or 0,hasRobe and -.2 or 0)+(hasRobe and 0 or 1)*Vector3.new(-.85,-.25,-.25)*modelScale,alpha)
  713.                         ls.C0 = clerp(ls.C0,c0.ls*CFrame.Angles(-tilt+.3,0,.1)*CFrame.Angles(hasRobe and .3 or 0,hasRobe and -.2 or 0,hasRobe and .2 or 0)+(hasRobe and 0 or 1)*Vector3.new(.85,-.25,-.25)*modelScale,alpha)
  714.                         nk.C0 = clerp(nk.C0,c0.nk*CFrame.Angles(-tilt+breathing*.04-.03,0,math.sin(tick()*4)*.06),alpha)
  715.                 else -- wallhug
  716.                         local breathing = math.sin(tick()*5)
  717.                         local tilt = -1.55+breathing*.015
  718.                         w1.C0 = clerp(w1.C0,w10*CFrame.Angles(0,-.01+breathing*.01,0),alpha)
  719.                         w2.C0 = clerp(w2.C0,w20*CFrame.Angles(0,.01-breathing*.01,0),alpha)
  720.                         tw.C0 = clerp(tw.C0,c0.tw*CFrame.Angles(tilt,0,0)+Vector3.new(0,-2.5,0)*modelScale,alpha)
  721.                         rh.C0 = clerp(rh.C0,c0.rh*CFrame.Angles(.2,0,hasRobe and 0 or .5)+Vector3.new(0,hasRobe and 0 or .2,0)*modelScale,alpha)
  722.                         lh.C0 = clerp(lh.C0,c0.lh*CFrame.Angles(.2,0,hasRobe and 0 or -.5)+Vector3.new(0,hasRobe and 0 or .2,0)*modelScale,alpha)
  723.                         rs.C0 = clerp(rs.C0,c0.rs*CFrame.Angles(2.9,0,.8)+Vector3.new(-.2,.4,0)*modelScale,alpha)
  724.                         ls.C0 = clerp(ls.C0,c0.ls*CFrame.Angles(2.9,0,-.8)+Vector3.new(.2,.4,0)*modelScale,alpha)
  725.                         nk.C0 = clerp(nk.C0,c0.nk*CFrame.Angles(breathing*.04+.7,0,0),alpha)
  726.                 end
  727.         elseif state == "fly" then
  728.                 hum.PlatformStand = true
  729.                 gyro.maxTorque = Vector3.new(1,1,1)*4e6
  730.                 vel.maxForce = Vector3.new(1,1,1)*4e5
  731.  
  732.                 local velocity = Vector3.new((kd.d and 1 or 0)+(kd.a and -1 or 0),0,(kd.s and 1 or 0)+(kd.w and -1 or 0))
  733.                 velocity = cam.CoordinateFrame:vectorToWorldSpace(velocity)
  734.                 local maxspeed = 40-(velocity.magnitude > 0 and velocity.unit.Y*20 or 0)
  735.                 if velocity.magnitude > 0 then
  736.                         flyspeed = lerp(flyspeed,maxspeed,.1)
  737.                         flydir = flydir:Lerp(velocity.unit,.4).unit
  738.                         hoverheight = nil
  739.                 else
  740.                         flyspeed = lerp(flyspeed,0,.3)
  741.                         flydir = (flydir*Vector3.new(1,0,1)).unit
  742.                         hoverheight = hoverheight or root.Position.Y
  743.                 end
  744.                 vel.velocity = flydir.unit * flyspeed
  745.                 if hoverheight then
  746.                         vel.velocity = vel.velocity + Vector3.new(0,hoverheight-root.Position.Y,0)
  747.                 end
  748.                 gyro.cframe = CFrame.new(Vector3.new(),flydir*Vector3.new(1,0,1))
  749.  
  750.                 rl.CanCollide,ll.CanCollide = true,true
  751.  
  752.                 local wings = math.sin(tick()*80)
  753.                 w1.C0 = clerp(w1.C0,w10*CFrame.Angles(0,-.15+wings*.3,0),.6)
  754.                 w2.C0 = clerp(w2.C0,w20*CFrame.Angles(0,.15-wings*.3,0),.6)
  755.                 local alpha = .15
  756.                 local flytilt = (flyspeed/maxspeed)
  757.                 local tilt = flytilt*-1.4 + math.asin(gyro.cframe:vectorToObjectSpace(flydir).unit.Y)
  758.                 local wavey = math.sin(tick()*6)
  759.                 tw.C0 = clerp(tw.C0,c0.tw*CFrame.Angles(tilt,0,0),alpha)
  760.                 rh.C0 = clerp(rh.C0,c0.rh*CFrame.Angles(wavey*.1,hasRobe and 0 or -.08,hasRobe and 0 or .1),alpha)
  761.                 lh.C0 = clerp(lh.C0,c0.lh*CFrame.Angles(-wavey*.1,hasRobe and 0 or .08,hasRobe and 0 or -.1),alpha)
  762.                 rs.C0 = clerp(rs.C0,c0.rs*CFrame.Angles(-wavey*.15,-.08,.1),alpha)
  763.                 ls.C0 = clerp(ls.C0,c0.ls*CFrame.Angles(wavey*.15,.08,-.1),alpha)
  764.                 nk.C0 = clerp(nk.C0,c0.nk*CFrame.Angles(-tilt*.8,0,0),alpha)
  765.         end
  766. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement