Advertisement
the_unknownz

Magik

Nov 10th, 2016
193
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 5.25 KB | None | 0 0
  1. wait();
  2. script.Parent = nil
  3.  
  4. do
  5.     local LocalPlayer = game:GetService("Players").LocalPlayer
  6.  
  7.     local Utils do
  8.         Utils = {
  9.             Create = function(self, Typename, Props)
  10.                 local Inst = {ypcall(Instance.new, Typename)}
  11.                 if Inst and Inst[2] then
  12.                     Inst = Inst[2]
  13.                     if Props and type(Props) == "table" then
  14.                         for _, prop in next, Props do
  15.                             Inst[_] = prop
  16.                         end
  17.                     elseif type(Props) == "userdata" then
  18.                         Inst.Parent = Props
  19.                     end
  20.                     return Inst
  21.                 else
  22.                     return assert(false, ("Unable to create instance of type %q"):format(Typename))
  23.                 end
  24.             end,
  25.             ColorPart = function(self, Inst, Seed)
  26.                 if Inst and Inst:IsA("BasePart") then
  27.                     local RGB = {}
  28.                     local Section = (tick() + Seed) % 1 * 3
  29.                     local Secondary = 0.5 * math.pi * (Section % 1)
  30.                     if Section < 1 then
  31.                         RGB = {
  32.                             1,
  33.                             1 - math.cos(Secondary),
  34.                             1 - math.sin(Secondary)
  35.                         }
  36.                     elseif Section < 2 then
  37.                         RGB = {
  38.                             1 - math.sin(Secondary),
  39.                             1,
  40.                             1 - math.cos(Secondary)
  41.                         }
  42.                     else
  43.                         RGB = {
  44.                             1 - math.cos(Secondary),
  45.                             1 - math.sin(Secondary),
  46.                             1
  47.                         }
  48.                     end
  49.                     local Handle = Inst:findFirstChild("BXHandleAdorn")
  50.                     if not Handle or Handle.ClassName ~= "BoxHandleAdornment" then
  51.                         ypcall(function() Handle:Destroy() end)
  52.                         Handle = self:Create("BoxHandleAdornment", {
  53.                             Parent = Inst,
  54.                             Visible = true,
  55.                             Transparency = 0,
  56.                             Size = Inst.Size + Vector3.new(0.01,0.01,0.01),
  57.                             AlwaysOnTop = false,
  58.                             ZIndex = 1,
  59.                             Name = "BXHandleAdorn",
  60.                             Adornee = Inst
  61.                         })
  62.                     end
  63.                     Handle.Color3 = Color3.new(unpack(RGB))
  64.                 end
  65.             end,
  66.             Slerp = function(self, a, b, c)
  67.                 return (1 - c) * a + (c * b)
  68.             end,
  69.             Clerp = function(self, start, destination,increment)
  70.                 local c1 = {start.X, start.Y, start.Z, start:toEulerAnglesXYZ()}
  71.                 local c2 = {destination.X, destination.Y, destination.Z, destination:toEulerAnglesXYZ()}
  72.                 for i,v in next, c1 do
  73.                     c1[i] = self:Slerp(v, c2[i], increment)
  74.                 end
  75.                 return CFrame.new(c1[1],c1[2],c1[3]) * CFrame.Angles(c1[4],c1[5],c1[6])
  76.             end
  77.  
  78.         }
  79.     end
  80.  
  81.     do
  82.         repeat coroutine.yield() until LocalPlayer.Character
  83.         local Reset
  84.         local Parts do
  85.             Reset = function()
  86.                 Parts = {}
  87.                 local Model = Utils:Create("Model", {
  88.                     Name = "Magik.",
  89.                     Parent = LocalPlayer.Character
  90.                 })
  91.                 for i = 1, 10 do
  92.                     local Part = Utils:Create("Part", {
  93.                         Name = "Magical Part",
  94.                         Parent = Model,
  95.                         FormFactor = "Custom",
  96.                         Size = Vector3.new(1, 0.5, 0.05),
  97.                         TopSurface = "Smooth",
  98.                         BottomSurface = "Smooth",
  99.                         Anchored = true,
  100.                         CanCollide = false
  101.                     })
  102.                     table.insert(Parts, Part)
  103.                 end
  104.             end
  105.             Reset()
  106.         end
  107.         LocalPlayer.CharacterAdded:connect(function(char)
  108.             ypcall(function() Reset() end)
  109.         end)
  110.  
  111.         local CurrentMovement, MovementIncrease = 0, 0.001
  112.         local RadiusIncrease = 0
  113.         local YAxis = 2
  114.         local MaxYAxis = YAxis * 2
  115.  
  116.         while true do
  117.             if not LocalPlayer.Character or LocalPlayer.Character.Parent ~= workspace then
  118.                 -- todo: make it continue (LUA IMPLEMENT CONTINUE INTO 5.1 THANKS)
  119.             else
  120.                 local Torso = LocalPlayer.Character:findFirstChild("Torso")
  121.                 if Torso and Torso:IsA("BasePart") then
  122.                     local Amount = #Parts
  123.                     for i, Part in next, Parts do
  124.                         local OCF = Part.CFrame
  125.                         local NCF = CFrame.new(Torso.Position)
  126.                         * CFrame.Angles(0, ((((math.pi*2)/Amount)*i)+CurrentMovement), 0)
  127.                         * CFrame.new(0, YAxis, 0.5+(-((#Parts*.4)+RadiusIncrease))*math.sin(YAxis))
  128.                         Part.CFrame = NCF --Utils:Clerp(OCF, NCF, 0.85)
  129.                         Utils:ColorPart(Part, (0.5/(#Parts/i)))
  130.                     end
  131.                     CurrentMovement = CurrentMovement + MovementIncrease
  132.                     YAxis = math.sin(tick())*(MaxYAxis / 2)
  133.                 end
  134.             end
  135.             coroutine.yield()
  136.         end
  137.     end
  138.  
  139. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement