thistool = Instance.new("Tool",owner.Backpack) thistool.RequiresHandle = true thistool.Name = "box" handle = Instance.new("Part",thistool) handle.Name = "Handle" handle.Size = Vector3.new(2,2,2) handle.TopSurface = "Smooth" handle.BottomSurface = "Smooth" handle.BrickColor = BrickColor.random() thistool.GripUp = Vector3.new(0, 1, 0) thistool.GripRight = Vector3.new(1, 0, 0) thistool.GripPos = Vector3.new(0, 0, 0) thistool.GripForward = Vector3.new(-0, -0, -1) event = Instance.new("RemoteEvent",thistool) event.Name = "event" NLS([[ mouse = game.Players.LocalPlayer:GetMouse() tool = script.Parent function activate() local hit_p = mouse.Hit.p local char_head = game.Players.LocalPlayer.Character.Head tool.event:FireServer(hit_p,char_head) end tool.Activated:Connect(activate) ]],thistool) tool = thistool debris = game:GetService("Debris") density = math.huge handle = handle function fire(player,hit_p,char_head) local pos1 = char_head.Position + Vector3.new(0,5,0) local pos2 = hit_p local direction = pos2 - pos1 local duration = math.log(1.001 + direction.Magnitude * 0.01) local force = direction/duration + Vector3.new(0, workspace.Gravity * duration * 0.5 ,0) local proj = Instance.new("Part") proj.Size = Vector3.new(5,5,5) proj.TopSurface = "Smooth" proj.BottomSurface = "Smooth" proj.Material = "Metal" local weight = PhysicalProperties.new(density) proj.CustomPhysicalProperties = weight local spin = Instance.new("BodyAngularVelocity",proj) spin.P = math.huge spin.MaxTorque = Vector3.new(1000000000,1000000000,1000000000) spin.AngularVelocity = Vector3.new(0,math.huge,0) proj.Color = Color3.new(math.random(),math.random(),math.random()) proj.Position = pos1 proj.Parent = workspace proj.CanCollide = true proj:ApplyImpulse(force * proj.AssemblyMass) proj:SetNetworkOwner(nil) local att0 = Instance.new("Attachment",proj) att0.Name = "Attachment0" att0.CFrame = CFrame.new(0,2.5,0) local att1 = Instance.new("Attachment",proj) att1.Name = "Attachment1" att1.CFrame = CFrame.new(0,-2.5,0) local trail = Instance.new("Trail",proj) trail.Enabled = true trail.FaceCamera = true trail.TextureMode = "Stretch" trail.Color = ColorSequence.new(proj.Color) trail.Attachment0 = att0 trail.Attachment1 = att1 trail.LightEmission = 10 trail.Lifetime = 2 trail.MaxLength = math.huge trail.Transparency = NumberSequence.new(0,0) local function stick(touched) local splatsound = Instance.new("Sound",proj) splatsound.Volume = 10 splatsound.SoundId = "rbxasset://Sounds/splat.wav" local debounce = false if debounce then return end if touched:isA"BasePart" and touched.Anchored == false then local weld = Instance.new("WeldConstraint",proj) weld.Part0 = touched weld.Part1 = proj splatsound:Play() print("stuck lol") end debounce = true end proj.Touched:Connect(stick) debris:AddItem(proj,5) end tool.event.OnServerEvent:Connect(fire) function rainbow() handle.Color = Color3.new(255/255,0/255,0/255) for i = 0,255,10 do wait() handle.Color = Color3.new(255/255,i/255,0/255) end for i = 255,0,-10 do wait() handle.Color = Color3.new(i/255,255/255,0/255) end for i = 0,255,10 do wait() handle.Color = Color3.new(0/255,255/255,i/255) end for i = 255,0,-10 do wait() handle.Color = Color3.new(0/255,i/255,255/255) end for i = 0,255,10 do wait() handle.Color = Color3.new(i/255,0/255,255/255) end for i = 255,0,-10 do wait() handle.Color = Color3.new(255/255,0/255,i/255) end end while true do pcall(rainbow) end