function rand(a)return (math.random()-.5)*2*a end
function q(f,arg)return coroutine.resume(coroutine.create(f),unpack(arg or {}))end
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
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
function Part(Name,Parent,Size,CFrame,Color,Trans,Anch,Can,Mat,Ref)
local p = Instance.new("Part",Parent)p.Name = Name
p.FormFactor = "Custom"p.Size = Size
p.Anchored = Anch p.CFrame = CFrame
p.BrickColor = BrickColor.new(Color)p.Transparency = Trans
p.TopSurface = 0 p.CanCollide = Can
p.BottomSurface = 0 p.Material = Mat
p.Reflectance = Ref or 0;p:BreakJoints()
p.Locked = true;return p
end
function WedgePart(Name,Parent,Size,CFrame,Color,Trans,Anch,Can,Mat,Ref)
local p = Instance.new("WedgePart",Parent)p.Name = Name
p.FormFactor = "Custom"p.Size = Size
p.Anchored = Anch p.CFrame = CFrame
p.BrickColor = BrickColor.new(Color)p.Transparency = Trans
p.TopSurface = 0 p.CanCollide = Can
p.BottomSurface = 0 p.Material = Mat
p.Reflectance = Ref or 0;p:BreakJoints()
p.Locked = true;return p
end
function CornerWedgePart(Name,Parent,Size,CFrame,Color,Trans,Anch,Can,Mat,Ref)
local p = Instance.new("CornerWedgePart",Parent)p.Name = Name;p.Size = Size
p.Anchored = Anch p.CFrame = CFrame
p.BrickColor = BrickColor.new(Color)p.Transparency = Trans
p.TopSurface = 0 p.CanCollide = Can
p.BottomSurface = 0 p.Material = Mat
p.Reflectance = Ref or 0;p:BreakJoints()
p.Locked = true;return p
end
function Mesh(Parent,Type,Scale,ID,TID)
local m = Instance.new("SpecialMesh",Parent)m.MeshType = Type
m.Scale = Scale or Vector3.new(1,1,1)
if ID then m.MeshId = ID end if TID then m.TextureId = TID end
return m
end
function Weld(p1,p2,c0,c1)
local w = Instance.new("Weld",p1)w.Part0 = p1;w.Part1 = p2
w.C0,w.C1 = c0 or CFrame.new(),c1 or CFrame.new()
return w
end
function cslerp(c1,c2,t)
local function s(a,b,c)return (1-c)*a+(c*b)end
local com1 = {c1.X,c1.Y,c1.Z,c1:toEulerAnglesXYZ()}
local com2 = {c2.X,c2.Y,c2.Z,c2:toEulerAnglesXYZ()}
for i,v in pairs(com1)do com1[i] = s(v,com2[i],t)end
return CFrame.new(com1[1],com1[2],com1[3])*CFrame.Angles(select(4,unpack(com1)))
end
local char
---------------------------------------------
player = game:service("Players").LocalPlayer
repeat wait() char = player.Character until char
pcall(function()char:FindFirstChild("Animate"):Destroy()end)
root = char:WaitForChild("HumanoidRootPart")
torso = char:WaitForChild("Torso")
humanoid = char:WaitForChild("Humanoid")
mouse = player:GetMouse()
step = game:service("RunService").Stepped
asset = "http://www.roblox.com/asset/?id="
meshes = {["blast"] = 20329976,["ring"] = 3270017,["spike"] = 1033714,["cone"] = 1082802,["crown"] = 20329976,["cloud"] = 1095708,["diamond"] = 9756362}
sounds = {["explode"] = 130792180;}
colour = "White"
scolour = tostring(BrickColor.random())--"Lime green"
Attacking = false
local bv,bp,bg
hover = 10
carspeed = 60
keysdown = {}
c0ls = CFrame.new(-1,0.5,0)*CFrame.Angles(math.pi/6,0,0)
c0rs = CFrame.new(1,0.5,0)*CFrame.Angles(math.pi/6,0,0)
c1ls = CFrame.new(0.5,0.5,0)
c1rs = CFrame.new(-0.5,0.5,0)
c0tw = CFrame.new(0,0,0)
c1tw = CFrame.new(0,0,0)
rs = Weld(torso,char:WaitForChild("Right Arm"),c0rs,c1rs)
ls = Weld(torso,char:WaitForChild("Left Arm"),c0ls,c1ls)
tw = Weld(root,torso,c0tw,c1tw)
---------------------------------------------
function Smoke(origin,color)
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")
local m = Mesh(p,"Sphere",Vector3.new(1.25,1.25,1.25))
local bp = Instance.new("BodyPosition",p)bp.D = 100 bp.P = 100 bp.position = p.Position+Vector3.new(0,7,0)
q(function(pa,me)
fade(pa,.1)
for i=25,100 do
me.Scale = me.Scale+Vector3.new(0.15,0.1,0.15)
wait(1/30)
end
pa:Destroy()
end,{p,m})
end
function crownExplode(origin,color,size)
local p = Part("Effect",workspace,Vector3.new(size,size,size),origin,color,.2,true,false,"SmoothPlastic")
local m = Mesh(p,"FileMesh",Vector3.new(size/2,size/2,size/2),asset..meshes["crown"])
q(function(pa,me)
for i=.2,1,.025 do
me.Scale = me.Scale+Vector3.new(0.75,0.75,0.75)
pa.Transparency = i
wait(1/30)
end
pa:Destroy()
end,{p,m})
end
function quickSound(id,v)
local s = Instance.new("Sound",workspace)
s.SoundId = id
s.PlayOnRemove = true
s.Volume = v or 1
delay(0.025,function()s:remove()end)
end
function checkDmgArea(origin,dmg,d)
for i,v in pairs(workspace:children())do
if v~=char and v:FindFirstChild("Torso") then
local h;
for _,k in pairs(v:children())do if k:IsA("Humanoid") then h = k end end
local dist = (origin.p - v:FindFirstChild("Torso").CFrame.p).magnitude
if dist < d and h~=nil then
h.Health = h.Health - dmg
end
end
end
end
function Shoot(start,dmg)
dmg = dmg or 15
local vel = start.lookVector
local p = Part("Bullet",workspace,Vector3.new(4,4,4),start,"Black",0,true,false,"SmoothPlastic")
local m = Mesh(p,"Sphere")
local num = 0
local ign = char:children()
local connect
connect = step:connect(function()
num = num + 1
local pp = p.Position
local h,po
vel = vel - Vector3.new(0,math.min(999.5,vel.magnitude/50),0)
repeat
local r = Ray.new(pp,vel.unit*math.min(999.5,vel.magnitude/100+4))
h,po = workspace:FindPartOnRayWithIgnoreList(r,ign)
if h then
if h.CanCollide then break
else table.insert(ign,h)h = nil
end
else break
end
until false
p.CFrame = CFrame.new(po,po+vel)
q(function(b)
local a = b:Clone()
a.Parent = workspace
for i=1,-.05,-.05 do
wait()
a:FindFirstChild("Mesh").Scale = Vector3.new(i,i,i)
a.Transparency = a.Transparency + .05
end
a:Destroy()
end,{p})
if h or num > 300 then
local cf = p.CFrame
for i=1,3 do Smoke(cf*CFrame.new(0,4,0),"Black")end
crownExplode(CFrame.new(cf.x,cf.y,cf.z),"Black",2)
quickSound(asset..sounds["explode"],2)
checkDmgArea(cf,dmg,10)
p:Destroy()
connect:disconnect()
end
end)
end
function Fire()
Attacking = true
for i=1,10 do
wait(1/30)
local speed = i/10
rs.C0 = cslerp(rs.C0,c0rs*CFrame.Angles(-math.pi/2.5,0,0),speed)
ls.C0 = cslerp(ls.C0,c0ls*CFrame.Angles(-math.pi/2.5,0,0),speed)
tw.C0 = cslerp(tw.C0,c0tw*CFrame.Angles(0,math.pi/2,0),speed)
end
local b = Part("Bullet",char,Vector3.new(4,4,4),torso.CFrame,"Black",0,false,false,"SmoothPlastic")
Mesh(b,"Sphere")
local w = Weld(torso,b,CFrame.new(0,0,-.5))
for i=1,5 do
wait(1/30)
local speed = i/5
rs.C0 = cslerp(rs.C0,c0rs*CFrame.Angles(math.pi/2.5,0,0),speed)
ls.C0 = cslerp(ls.C0,c0ls*CFrame.Angles(math.pi/2.5,0,0),speed)
tw.C0 = cslerp(tw.C0,c0tw,speed)
w.C0 = cslerp(w.C0,CFrame.new(0,5,-3),speed)
end
Shoot(b.CFrame,52.5)
b:Destroy()
for i=1,10 do
wait(1/30)
local speed = i/20
rs.C0 = cslerp(rs.C0,c0rs,speed)
ls.C0 = cslerp(ls.C0,c0ls,speed)
tw.C0 = cslerp(tw.C0,c0tw,speed)
end
Attacking = false
end
---------------------------------------------
pcall(function()char:FindFirstChild("CAR"):Destroy()end)
model = Instance.new("Model",char)
model.Name = "CAR"
base = Part("P",model,Vector3.new(6,6,6),torso.CFrame*CFrame.new(6,6,0),colour,0,false,false,"Plastic")
torso.CFrame = base.CFrame
basem = Mesh(base,"Sphere",Vector3.new(1,.5,1))
side = Part("P",model,Vector3.new(6,2,6),torso.CFrame*CFrame.new(6,6,0),colour,0,false,false,"Plastic")
sidem = Mesh(side,"FileMesh",Vector3.new(5.375,5.375,20),asset..meshes["ring"])
sidew = Weld(base,side,CFrame.new(0,1,0)*CFrame.Angles(math.pi/2,0,0))
side2 = Part("P",model,Vector3.new(6,2,6),torso.CFrame*CFrame.new(6,6,0),scolour,0,false,false,"Plastic")
side2m = Mesh(side2,"FileMesh",Vector3.new(5.375,5.375,5),asset..meshes["ring"])
side2w = Weld(side,side2,CFrame.new(0,0,-1.25))
under = Part("P",model,Vector3.new(2,6,2),torso.CFrame*CFrame.new(6,6,0),scolour,0,false,false,"Plastic")
underm = Mesh(under,"FileMesh",Vector3.new(2,6,2),asset..meshes["spike"])
underw = Weld(base,under,CFrame.new(0,-1,0)*CFrame.Angles(math.pi,0,0))
prop = Part("P",model,Vector3.new(0.5,0,4),torso.CFrame*CFrame.new(6,6,0),scolour,0,false,false,"Plastic")
propm = Mesh(prop,"Sphere")
propw = Weld(under,prop,CFrame.new(0,2.25,0))
torweld = Weld(base,root,CFrame.new(0,3,-1))
bp = Instance.new("BodyPosition")
bp.maxForce = Vector3.new(0,1/0,0)
bv = Instance.new("BodyVelocity")
bv.maxForce = Vector3.new(1/0,0,1/0)
bg = Instance.new("BodyGyro")
bg.maxTorque = Vector3.new(1/0,1/0,1/0)
humanoid.WalkSpeed = 0
---------------------------------------------
mouse.KeyDown:connect(function(key)
key:lower()
keysdown[key] = true
end)
mouse.KeyUp:connect(function(key)
key:lower()
keysdown[key] = false
end)
mouse.Button1Down:connect(function()
if not Attacking then
Fire()
end
end)
local function bn(key) return keysdown[key]and 1 or 0 end
---------------------------------------------
step:connect(function()
hover = hover-bn("e")+bn("q")
bp.Parent,bg.Parent,bv.Parent = base,base,base
bp.position = Vector3.new(0,math.sin(tick())+hover,0)
bg.cframe = workspace.CurrentCamera.CoordinateFrame
local vel = workspace.CurrentCamera.CoordinateFrame:vectorToWorldSpace(Vector3.new(0-bn("a")+bn("d"),0,0-bn("w")+bn("s")))*Vector3.new(1,0,1)
bv.velocity = (vel.magnitude > 0 and vel.unit*carspeed)or Vector3.new(0,0,0)
propw.C0 = propw.C0*CFrame.Angles(0,.2,0)
end)