Advertisement
wulfbawg

KoopaCar - RBXLUA

Jun 20th, 2014
672
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 9.65 KB | None | 0 0
  1. -- > CREATED BY WULFBUG9 2014
  2. -- > Seriously, I made this. (wulfbug9)
  3. -- > I'm releasing a ton of my other scripts on this pastebin, too. So go check them out.
  4. function rand(a)return (math.random()-.5)*2*a end
  5. function q(f,arg)return coroutine.resume(coroutine.create(f),unpack(arg or {}))end
  6. function fade(p,s)q(function(part,start)for i=start,1,.05 do part.Transparency = part.Transparency+0.05 wait(1/30)end end,{p,s})end
  7. function appear(p,s)q(function(part,start)for i=start,0,-.05 do part.Transparency = part.Transparency-0.05 wait(1/30)end end,{p,s})end
  8. function Part(Name,Parent,Size,CFrame,Color,Trans,Anch,Can,Mat,Ref)
  9.     local p = Instance.new("Part",Parent)p.Name = Name
  10.     p.FormFactor = "Custom"p.Size = Size
  11.     p.Anchored = Anch p.CFrame = CFrame
  12.     p.BrickColor = BrickColor.new(Color)p.Transparency = Trans
  13.     p.TopSurface = 0 p.CanCollide = Can
  14.     p.BottomSurface = 0 p.Material = Mat
  15.     p.Reflectance = Ref or 0;p:BreakJoints()
  16.     p.Locked = true;return p
  17. end
  18. function WedgePart(Name,Parent,Size,CFrame,Color,Trans,Anch,Can,Mat,Ref)
  19.     local p = Instance.new("WedgePart",Parent)p.Name = Name
  20.     p.FormFactor = "Custom"p.Size = Size
  21.     p.Anchored = Anch p.CFrame = CFrame
  22.     p.BrickColor = BrickColor.new(Color)p.Transparency = Trans
  23.     p.TopSurface = 0 p.CanCollide = Can
  24.     p.BottomSurface = 0 p.Material = Mat
  25.     p.Reflectance = Ref or 0;p:BreakJoints()
  26.     p.Locked = true;return p
  27. end
  28. function CornerWedgePart(Name,Parent,Size,CFrame,Color,Trans,Anch,Can,Mat,Ref)
  29.     local p = Instance.new("CornerWedgePart",Parent)p.Name = Name;p.Size = Size
  30.     p.Anchored = Anch p.CFrame = CFrame
  31.     p.BrickColor = BrickColor.new(Color)p.Transparency = Trans
  32.     p.TopSurface = 0 p.CanCollide = Can
  33.     p.BottomSurface = 0 p.Material = Mat
  34.     p.Reflectance = Ref or 0;p:BreakJoints()
  35.     p.Locked = true;return p
  36. end
  37. function Mesh(Parent,Type,Scale,ID,TID)
  38.     local m = Instance.new("SpecialMesh",Parent)m.MeshType = Type
  39.     m.Scale = Scale or Vector3.new(1,1,1)
  40.     if ID then m.MeshId = ID end if TID then m.TextureId = TID end
  41.     return m
  42. end
  43. function Weld(p1,p2,c0,c1)
  44.     local w = Instance.new("Weld",p1)w.Part0 = p1;w.Part1 = p2
  45.     w.C0,w.C1 = c0 or CFrame.new(),c1 or CFrame.new()
  46.     return w
  47. end
  48. function cslerp(c1,c2,t)
  49.     local function s(a,b,c)return (1-c)*a+(c*b)end
  50.     local com1 = {c1.X,c1.Y,c1.Z,c1:toEulerAnglesXYZ()}
  51.     local com2 = {c2.X,c2.Y,c2.Z,c2:toEulerAnglesXYZ()}
  52.     for i,v in pairs(com1)do com1[i] = s(v,com2[i],t)end
  53.     return CFrame.new(com1[1],com1[2],com1[3])*CFrame.Angles(select(4,unpack(com1)))
  54. end
  55. local char
  56. ---------------------------------------------
  57. player = game:service("Players").LocalPlayer
  58. repeat wait() char = player.Character until char
  59. pcall(function()char:FindFirstChild("Animate"):Destroy()end)
  60. root = char:WaitForChild("HumanoidRootPart")
  61. torso = char:WaitForChild("Torso")
  62. humanoid = char:WaitForChild("Humanoid")
  63. mouse = player:GetMouse()
  64. step = game:service("RunService").Stepped
  65. asset = "http://www.roblox.com/asset/?id="
  66. meshes = {["blast"] = 20329976,["ring"] = 3270017,["spike"] = 1033714,["cone"] = 1082802,["crown"] = 20329976,["cloud"] = 1095708,["diamond"] = 9756362}
  67. sounds = {["explode"] = 130792180;}
  68. colour = "White"
  69. scolour = tostring(BrickColor.random())--"Lime green"
  70. Attacking = false
  71. local bv,bp,bg
  72. hover = 10
  73. carspeed = 60
  74. keysdown = {}
  75. c0ls = CFrame.new(-1,0.5,0)*CFrame.Angles(math.pi/6,0,0)
  76. c0rs = CFrame.new(1,0.5,0)*CFrame.Angles(math.pi/6,0,0)
  77. c1ls = CFrame.new(0.5,0.5,0)
  78. c1rs = CFrame.new(-0.5,0.5,0)
  79. c0tw = CFrame.new(0,0,0)
  80. c1tw = CFrame.new(0,0,0)
  81. rs = Weld(torso,char:WaitForChild("Right Arm"),c0rs,c1rs)
  82. ls = Weld(torso,char:WaitForChild("Left Arm"),c0ls,c1ls)
  83. tw = Weld(root,torso,c0tw,c1tw)
  84. ---------------------------------------------
  85. function Smoke(origin,color)
  86.     local p = Part("Effect",workspace,Vector3.new(2,2,2),origin*CFrame.new(rand(10),-1,rand(10)),color or "Black",.1,false,false,"SmoothPlastic")
  87.     local m = Mesh(p,"Sphere",Vector3.new(1.25,1.25,1.25))
  88.     local bp = Instance.new("BodyPosition",p)bp.D = 100 bp.P = 100 bp.position = p.Position+Vector3.new(0,7,0)
  89.     q(function(pa,me)
  90.         fade(pa,.1)
  91.         for i=25,100 do
  92.             me.Scale = me.Scale+Vector3.new(0.15,0.1,0.15)
  93.             wait(1/30)
  94.         end
  95.         pa:Destroy()
  96.     end,{p,m})
  97. end
  98. function crownExplode(origin,color,size)
  99.     local p = Part("Effect",workspace,Vector3.new(size,size,size),origin,color,.2,true,false,"SmoothPlastic")
  100.     local m = Mesh(p,"FileMesh",Vector3.new(size/2,size/2,size/2),asset..meshes["crown"])
  101.     q(function(pa,me)
  102.         for i=.2,1,.025 do
  103.             me.Scale = me.Scale+Vector3.new(0.75,0.75,0.75)
  104.             pa.Transparency = i
  105.             wait(1/30)
  106.         end
  107.         pa:Destroy()
  108.     end,{p,m})
  109. end
  110. function quickSound(id,v)
  111.     local s = Instance.new("Sound",workspace)
  112.     s.SoundId = id
  113.     s.PlayOnRemove = true
  114.     s.Volume = v or 1
  115.     delay(0.025,function()s:remove()end)
  116. end
  117. function checkDmgArea(origin,dmg,d)
  118.     for i,v in pairs(workspace:children())do
  119.         if v~=char and v:FindFirstChild("Torso") then
  120.             local h;
  121.             for _,k in pairs(v:children())do if k:IsA("Humanoid") then h = k end end
  122.             local dist = (origin.p - v:FindFirstChild("Torso").CFrame.p).magnitude
  123.             if dist < d and h~=nil then
  124.                 h.Health = h.Health - dmg
  125.             end
  126.         end
  127.     end
  128. end
  129. function Shoot(start,dmg)
  130.     dmg = dmg or 15
  131.     local vel = start.lookVector
  132.     local p = Part("Bullet",workspace,Vector3.new(4,4,4),start,"Black",0,true,false,"SmoothPlastic")
  133.     local m = Mesh(p,"Sphere")
  134.     local num = 0
  135.     local ign = char:children()
  136.     local connect
  137.     connect = step:connect(function()
  138.         num = num + 1
  139.         local pp = p.Position
  140.         local h,po
  141.         vel = vel - Vector3.new(0,math.min(999.5,vel.magnitude/50),0)
  142.         repeat
  143.             local r = Ray.new(pp,vel.unit*math.min(999.5,vel.magnitude/100+4))
  144.             h,po = workspace:FindPartOnRayWithIgnoreList(r,ign)
  145.             if h then
  146.                 if h.CanCollide then break
  147.                 else table.insert(ign,h)h = nil
  148.                 end
  149.             else break
  150.             end
  151.         until false
  152.         p.CFrame = CFrame.new(po,po+vel)
  153.         q(function(b)
  154.             local a = b:Clone()
  155.             a.Parent = workspace
  156.             for i=1,-.05,-.05 do
  157.                 wait()
  158.                 a:FindFirstChild("Mesh").Scale = Vector3.new(i,i,i)
  159.                 a.Transparency = a.Transparency + .05
  160.             end
  161.             a:Destroy()
  162.         end,{p})
  163.         if h or num > 300 then
  164.             local cf = p.CFrame
  165.             for i=1,3 do Smoke(cf*CFrame.new(0,4,0),"Black")end
  166.             crownExplode(CFrame.new(cf.x,cf.y,cf.z),"Black",2)
  167.             quickSound(asset..sounds["explode"],2)
  168.             checkDmgArea(cf,dmg,10)
  169.             p:Destroy()
  170.             connect:disconnect()
  171.         end
  172.     end)
  173. end
  174. function Fire()
  175.     Attacking = true
  176.     for i=1,10 do
  177.         wait(1/30)
  178.         local speed = i/10
  179.         rs.C0 = cslerp(rs.C0,c0rs*CFrame.Angles(-math.pi/2.5,0,0),speed)
  180.         ls.C0 = cslerp(ls.C0,c0ls*CFrame.Angles(-math.pi/2.5,0,0),speed)
  181.         tw.C0 = cslerp(tw.C0,c0tw*CFrame.Angles(0,math.pi/2,0),speed)
  182.     end
  183.     local b = Part("Bullet",char,Vector3.new(4,4,4),torso.CFrame,"Black",0,false,false,"SmoothPlastic")
  184.     Mesh(b,"Sphere")
  185.     local w = Weld(torso,b,CFrame.new(0,0,-.5))
  186.     for i=1,5 do
  187.         wait(1/30)
  188.         local speed = i/5
  189.         rs.C0 = cslerp(rs.C0,c0rs*CFrame.Angles(math.pi/2.5,0,0),speed)
  190.         ls.C0 = cslerp(ls.C0,c0ls*CFrame.Angles(math.pi/2.5,0,0),speed)
  191.         tw.C0 = cslerp(tw.C0,c0tw,speed)
  192.         w.C0 = cslerp(w.C0,CFrame.new(0,5,-3),speed)
  193.     end
  194.     Shoot(b.CFrame,52.5)
  195.     b:Destroy()
  196.     for i=1,10 do
  197.         wait(1/30)
  198.         local speed = i/20
  199.         rs.C0 = cslerp(rs.C0,c0rs,speed)
  200.         ls.C0 = cslerp(ls.C0,c0ls,speed)
  201.         tw.C0 = cslerp(tw.C0,c0tw,speed)
  202.     end
  203.     Attacking = false
  204. end
  205. ---------------------------------------------
  206. pcall(function()char:FindFirstChild("CAR"):Destroy()end)
  207. model = Instance.new("Model",char)
  208. model.Name = "CAR"
  209. base = Part("P",model,Vector3.new(6,6,6),torso.CFrame*CFrame.new(6,6,0),colour,0,false,false,"Plastic")
  210. torso.CFrame = base.CFrame
  211. basem = Mesh(base,"Sphere",Vector3.new(1,.5,1))
  212. side = Part("P",model,Vector3.new(6,2,6),torso.CFrame*CFrame.new(6,6,0),colour,0,false,false,"Plastic")
  213. sidem = Mesh(side,"FileMesh",Vector3.new(5.375,5.375,20),asset..meshes["ring"])
  214. sidew = Weld(base,side,CFrame.new(0,1,0)*CFrame.Angles(math.pi/2,0,0))
  215. side2 = Part("P",model,Vector3.new(6,2,6),torso.CFrame*CFrame.new(6,6,0),scolour,0,false,false,"Plastic")
  216. side2m = Mesh(side2,"FileMesh",Vector3.new(5.375,5.375,5),asset..meshes["ring"])
  217. side2w = Weld(side,side2,CFrame.new(0,0,-1.25))
  218. under = Part("P",model,Vector3.new(2,6,2),torso.CFrame*CFrame.new(6,6,0),scolour,0,false,false,"Plastic")
  219. underm = Mesh(under,"FileMesh",Vector3.new(2,6,2),asset..meshes["spike"])
  220. underw = Weld(base,under,CFrame.new(0,-1,0)*CFrame.Angles(math.pi,0,0))
  221. prop = Part("P",model,Vector3.new(0.5,0,4),torso.CFrame*CFrame.new(6,6,0),scolour,0,false,false,"Plastic")
  222. propm = Mesh(prop,"Sphere")
  223. propw = Weld(under,prop,CFrame.new(0,2.25,0))
  224. torweld = Weld(base,root,CFrame.new(0,3,-1))
  225. bp = Instance.new("BodyPosition")
  226. bp.maxForce = Vector3.new(0,1/0,0)
  227. bv = Instance.new("BodyVelocity")
  228. bv.maxForce = Vector3.new(1/0,0,1/0)
  229. bg = Instance.new("BodyGyro")
  230. bg.maxTorque = Vector3.new(1/0,1/0,1/0)
  231. humanoid.WalkSpeed = 0
  232. ---------------------------------------------
  233. mouse.KeyDown:connect(function(key)
  234.     key:lower()
  235.     keysdown[key] = true
  236. end)
  237. mouse.KeyUp:connect(function(key)
  238.     key:lower()
  239.     keysdown[key] = false
  240. end)
  241. mouse.Button1Down:connect(function()
  242.     if not Attacking then
  243.         Fire()
  244.     end
  245. end)
  246. local function bn(key) return keysdown[key]and 1 or 0 end
  247. ---------------------------------------------
  248. step:connect(function()
  249.     hover = hover-bn("e")+bn("q")
  250.     bp.Parent,bg.Parent,bv.Parent = base,base,base
  251.     bp.position = Vector3.new(0,math.sin(tick())+hover,0)
  252.     bg.cframe = workspace.CurrentCamera.CoordinateFrame
  253.     local vel = workspace.CurrentCamera.CoordinateFrame:vectorToWorldSpace(Vector3.new(0-bn("a")+bn("d"),0,0-bn("w")+bn("s")))*Vector3.new(1,0,1)
  254.     bv.velocity = (vel.magnitude > 0 and vel.unit*carspeed)or Vector3.new(0,0,0)
  255.     propw.C0 = propw.C0*CFrame.Angles(0,.2,0)
  256. end)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement