Tutorial:How to make custom gear

Note: This tutorial is on how to make custom Gear. There is a lot of scripting and building, so if you are a beginner, stay away.

Anyway, this is Relorelo84 (Dronian)'s tutorial on how to make your own custom Gear. First, I'll be showing you how to make a jetpack out of anything (even a noob's head, because why not?). There's a ranking of how hard the tutorial is, on a scale of 5. This also includes ColorfulBrendon(ColorfulBrendonROBLOX)'s and A84hg's tutorials, so I hope you enjoy the collaboration, and have a great time making gear such as jetpacks, Swords, and much more!
 * 1) Very Easy
 * 2) Easy
 * 3) Medium
 * 4) Hard
 * 5) Very Hard

Tutorial 1: Jetpack
Have you ever seen the US Military Top Secret Experimental Jetpack on Free Models? If so, have you wanted to have a jetpack in your place similar to that, but you're very infamous for stealing free models? Well, here's how to make one. This tutorial rates 4 (Hard).

Part 1: Making the actual jetpack
First, go to Insert, then select Object. A pop-up window shall appear, with lots of things to put in. Scroll right until you see the option to insert a Tool. Click it. It should appear in the StarterPack. If it doesn't, drag it into the StarterPack. Select it, and rename it anything that's appropriate. Then, put a brick into the Tool, and rename it "Handle" without quotes. The possibilities for your hand-made Jetpack are quite frankly endless; The head of a noob or guest, a meshed object, or even a hat. Make sure it's unanchored, or you will be stuck in the ground when you test it out. Now, click on the name of your jetpack. Go back to the Objects window again. Add four sounds inside the Handle (do not add them into the tool, or you'll mess it up). Rename them EngineFail, InitialThrust, LowFuelWarning, and Thrusting.

PART 2: The jetpack's sounds
Add another object to the Tool this time; a NumberValue. Make the name CurrFuel. In the bar that says Value, put any type of fuel you like. For example, I'll put 20000 fuel (do not put any commas in!). Now, it's time to add the sounds to your jetpack. Put these codes for the four sound's Sound IDs:


 * EngineFail: http://www.roblox.com/asset/?id=30624305
 * InitialThrust: http://www.roblox.com/asset/?id=30624262
 * LowFuelWarning: http://www.roblox.com/asset/?id=30624357
 * Thrusting: http://www.roblox.com/asset/?id=30624426

Testing it out will prove that it's VERY unfinished. Well, we need to add two more things to our custom-made jetpack; the GUI for the fuel and the script that puts everything together.

PART 3: GUI time
There's two GUI objects in the jetpack you need to add; standstill and FuelGui. In your Jetpack TOOL, add an Animation. Name it "standstill" without the quotes. In the AnimationId, put in "f5c060f01391b53f42d43c28d722cfab" without the quotes. One G.U.I. down, one to go.

Add a ScreenGui and rename it FuelGui. This is crucial, because it tells you how much Fuel you have. In FuelGui, put in a Frame and an ImageLabel. DO NOT RENAME THESE. Put these stats in for Frame:


 * BackgroundColor3: 255; 255; 255
 * BorderColor3: 0; 0; 0
 * BorderSizePixel: 0
 * Position: {0.900000036, 0}, {0.200000003, 0}
 * Size: {0, 40}, {0, 300}

You finished the first one, now for the second.

Testing it again, it's still broken! Well, that's because we have one last thing to do. We need to put in the code that holds it all together.
 * BackgroundColor3: 255; 255; 255
 * BackgroundTransparency: 1
 * BorderColor3: 0; 0; 0
 * BorderSizePixel: 0
 * Image: http://www.roblox.com/asset/?id=30559074
 * Position: {0.900000036, 0}, {0.200000003, 0}
 * Size: {0, 40}, {0, 300}

PART 4: The script
Okay, here comes a lot of code. Remember that local maxFuel has to be the same as CurrFuel. Make a LocalScript, and put this in.

local Tool = script.Parent local mass = 0 local player = nil local equalizingForce = 236 / 1.2 -- amount of force required to levitate a mass local gravity = .75—things float at > 1 local moving = false local maxFuel = 20000 local fuel = Tool.CurrFuel.Value local gui = nil local anim = nil local jetPack = nil local regen = false local force = Instance.new("BodyVelocity") force.velocity = Vector3.new(0,0,0) local bodyGyro = Instance.new("BodyGyro") bodyGyro.P = 20000 bodyGyro.D = 8000 bodyGyro.maxTorque = Vector3.new(bodyGyro.P,bodyGyro.P,bodyGyro.P) local cam = nil local Flame = nil function onEquippedLocal(mouse) player = Tool.Parent mass = recursiveGetLift(player) force.P = mass * 10 force.maxForce = Vector3.new(0,force.P,0) mouse.Button1Down:connect(thrust) mouse.Button1Up:connect(cutEngine) cam = game.Workspace.CurrentCamera anim = player.Humanoid:LoadAnimation(Tool.standstill) anim:Play gui = Tool.FuelGui:clone updateGUI gui.Parent = game.Players:GetPlayerFromCharacter(player).PlayerGui equipPack regen = true regenFuel end function equipPack jetPack = Tool.Handle:clone jetPack.CanCollide = false jetPack.Name = "JetPack" jetPack.Parent = game.Workspace Tool.Handle.Transparency = 1 local welder = Instance.new("Weld") welder.Part0 = jetPack welder.Part1 = player.Torso welder.C0 = CFrame.new(Vector3.new(0,0,-1)) welder.Parent = jetPack Flame = Instance.new("Part") Flame.Name = "Flame" Flame.Transparency =1 Flame.CanCollide = false Flame.Locked = true Flame.formFactor = 2 Flame.Size = Vector3.new(1,0.4,1) Flame.Parent = jetPack local Fire = Instance.new("Fire") Fire.Heat = -20 Fire.Size = 6 Fire.Enabled = false Fire.Parent = Flame local firer = Instance.new("Weld") firer.Part0 = jetPack.Flame firer.Part1 = jetPack firer.C0 = CFrame.new(Vector3.new(0,2,0)) firer.Parent = jetPack.Flame end function updateGUI gui.Frame.Size = UDim2.new(0,40,0,300 * (Tool.CurrFuel.Value/maxFuel)) gui.Frame.Position = UDim2.new(0.9,0,0.2 + (0.2 * ((maxFuel - Tool.CurrFuel.Value)/maxFuel)),0) end function onUnequippedLocal regen = false force:remove bodyGyro:remove anim:Stop anim:remove gui:remove if jetPack ~= nil then jetPack:remove jetPack = nil end Tool.Handle.Transparency = 0 end function thrust if fuel > 0 then thrusting = true force.Parent = player.Torso jetPack.Flame.Fire.Enabled = true Tool.Handle.InitialThrust:Play bodyGyro.Parent = player.Torso while thrusting do bodyGyro.cframe = cam.CoordinateFrame force.velocity = Vector3.new(0,cam.CoordinateFrame.lookVector.unit.y,0) * 50 fuel = fuel - 1 Tool.CurrFuel.Value = fuel if fuel <= 0 then Tool.Handle.EngineFail:Play cutEngine end updateGUI wait Tool.Handle.Thrusting:Play if fuel <= 1 then Tool.Handle.LowFuelWarning:Play end end Tool.Handle.Thrusting:Stop Tool.Handle.LowFuelWarning:Stop end end function cutEngine thrusting = false jetPack.Flame.Fire.Enabled = false force.velocity = Vector3.new(0,0,0) force.Parent = nil anim:Stop bodyGyro.Parent = nil end Tool.Equipped:connect(onEquippedLocal) Tool.Unequipped:connect(onUnequippedLocal) local head = nil function recursiveGetLift(node) local m = 0 local c = node:GetChildren if (node:FindFirstChild("Head") ~= nil) then head = node:FindFirstChild("Head") end—nasty hack to detect when your parts get blown off for i=1,#c do if c[i].className == "Part" then if (head ~= nil and (c[i].Position - head.Position).magnitude < 10) then—GROSS if c[i].Name == "Handle" then m = m + (c[i]:GetMass * equalizingForce * 1) -- hack that makes hats weightless, so different hats don't change your jump height else m = m + (c[i]:GetMass * equalizingForce * gravity) end end end m = m + recursiveGetLift(c[i]) end return m end function regenFuel while regen do if fuel < maxFuel then fuel = fuel + 1 Tool.CurrFuel.Value = fuel updateGUI end wait(0.2) end end

Test it out, and it works perfectly! Check in for my second tutorial, where I'll show you how to make your own Bloxy Cola.

Tutorial 2: Bloxy Cola
This tutorial ranks 2 (Easy).

Step 1: Making the Bloxy Cola
Go to Insert, select Object, and click on Tool. A tool should pop up. Drag it into your StarterPack, and name it whatever you want. For example, I'll name mine the Shedletsky Cola. Add a 1x1 brick/head/mesh into the tool and name it Handle. Make sure it's unanchored.

Step 2: Sounds
Now you've gotten the handle done, but now it's time to add the sounds. Go to Insert, select Object, and make two Sounds. Name one DrinkSound and name the other OpenSound, but put them in the handle of the Bloxy Cola. In the SoundIDs, put these for the sounds;


 * DrinkSound: http://www.roblox.com/asset/?id=10722059
 * OpenSound: http://www.roblox.com/asset/?id=10721950

Now, here comes the final part; the script.

Step 3: The script
Insert a script into the tool, and name it BloxyColaScript. Put this into the script; local Tool = script.Parent; enabled = true function onActivated if not enabled then return end enabled = false Tool.GripForward = Vector3.new(0,-.759,-.651) Tool.GripPos = Vector3.new(1.5,-.5,.3) Tool.GripRight = Vector3.new(1,0,0) Tool.GripUp = Vector3.new(0,.651,-.759) Tool.Handle.DrinkSound:Play wait(3) local h = Tool.Parent:FindFirstChild("Humanoid") if (h ~= nil) then if (h.MaxHealth > h.Health + 5) then h.Health = h.Health + 5 else h.Health = h.MaxHealth end end Tool.GripForward = Vector3.new(-.976,0,-0.217) Tool.GripPos = Vector3.new(0.03,0,0) Tool.GripRight = Vector3.new(.217,0,-.976) Tool.GripUp = Vector3.new(0,1,0) enabled = true end function onEquipped Tool.Handle.OpenSound:play end script.Parent.Activated:connect(onActivated) script.Parent.Equipped:connect(onEquipped) Test it out, and you've just made your very own custom Bloxy Cola! In the next tutorial, you'll learn how to make one of the most advanced gears of all time; The Adventures of Noob Boy: Part 1.

Tutorial 3: Noob Boy Part 1
This tutorial rates a 5 (Very Hard).

Step 1: Making the console
Insert a tool, and call it whatever you want. Now, add a 1x1 brick called Handle into the tool, but make sure it's unanchored. Now, it's time to add four sounds.

Step 2: Adding the four sounds
In the handle, add four Sounds; Fail, Jump, Prize, and Song. For the SoundIds, put these in;


 * Fail: http://www.roblox.com/asset/?id=32202382
 * Jump: http://www.roblox.com/asset/?id=32201677
 * Prize: http://www.roblox.com/asset/?id=32201701
 * Song: http://www.roblox.com/asset/?id=32200781

We've added the sounds, but the tutorial is far from over.

Step 3: The script
You might be wondering; Why add the script now? Well, it's best to do this first because the script's actually easier than adding the GUIs! Make a LocalScript and put this in; local Tool = script.Parent local gui = nil local mapParts = {} local player = nil local keyDownCon = nil local keyUpCon = nil local clickCon = nil local platforming = false local time = 0 local gaming = true local head = nil local left = false local right = false local jump = false local prize = nil local prizeRegenTimer = 0 local walkCounter = 0 local playerWalkForward = {"32171523","32171543","32171566","32171582","32171594"} local playerWalkBackward = {"32168430","32168450","32168470","32168483","32168492"} local playerVelocity = Vector2.new(0,0) function onEquipped(mouse) Tool.Handle.Song:Stop Tool.Handle.Jump:Stop Tool.Handle.Prize:Stop Tool.Handle.Fail:Stop enabled = false gui = Tool.GameGui:clone player = gui.Cabinet.Screen.Player mapParts = gui.Cabinet.Screen.Map:GetChildren keyDownCon = mouse.KeyDown:connect(onKeyDown) keyUpCon = mouse.KeyUp:connect(onKeyUp) clickCon = gui.Cabinet.SoundOnOff.MouseButton1Click:connect(soundChanger) if Tool.Handle.Song.Volume == 0 then gui.Cabinet.SoundOnOff.Image = "http://www.roblox.com/asset/?id=32203595" else gui.Cabinet.SoundOnOff.Image = "http://www.roblox.com/asset/?id=32203454" end head = Tool.Parent:FindFirstChild("Head") end Tool.Equipped:connect(onEquipped) function onUnequipped gaming = false head.Anchored = false Tool.Handle.Song:Stop Tool.Handle.Jump:Stop Tool.Handle.Prize:Stop Tool.Handle.Fail:Stop game.Workspace.CurrentCamera.CameraType = 5 gui:remove keyDownCon:disconnect keyUpCon:disconnect clickCon:disconnect clickCon = nil keyDownCon = nil keyUpCon = nil end Tool.Unequipped:connect(onUnequipped) local enabled = false function onActivated if enabled then return end enabled = true game.Workspace.CurrentCamera.CameraType = 1 head.Anchored = true prize = nil prizeRegenTimer = 0 time = 0 gui.Parent = game.Players:GetPlayerFromCharacter(Tool.Parent).PlayerGui Tool.Handle.Song:Play gameLoop Tool.Handle.Song:Stop gui:remove gui = Tool.GameGui:clone clickCon = gui.Cabinet.SoundOnOff.MouseButton1Click:connect(soundChanger) if Tool.Handle.Song.Volume == 0 then gui.Cabinet.SoundOnOff.Image = "http://www.roblox.com/asset/?id=32203595" else gui.Cabinet.SoundOnOff.Image = "http://www.roblox.com/asset/?id=32203454" end player = gui.Cabinet.Screen.Player mapParts = gui.Cabinet.Screen.Map:GetChildren game.Workspace.CurrentCamera.CameraType = 5 head.Anchored = false enabled = false end Tool.Activated:connect(onActivated) function soundChanger if gui.Cabinet.SoundOnOff.Image == "http://www.roblox.com/asset/?id=32203454" then gui.Cabinet.SoundOnOff.Image = "http://www.roblox.com/asset/?id=32203595" Tool.Handle.Song.Volume = 0 Tool.Handle.Jump.Volume = 0 Tool.Handle.Prize.Volume = 0 Tool.Handle.Fail.Volume = 0 else gui.Cabinet.SoundOnOff.Image = "http://www.roblox.com/asset/?id=32203454" Tool.Handle.Song.Volume = 0.5 Tool.Handle.Jump.Volume = 0.5 Tool.Handle.Prize.Volume = 0.5 Tool.Handle.Fail.Volume = 0.5 end end function onKeyDown(key) key:lower if key == "a" then left = true right = false elseif key == "d" then left = false right = true elseif key == "w" then jump = true end end function onKeyUp(key) key:lower if key == "a" then left = false elseif key == "d" then right = false elseif key == "w" then jump = false end end function Physics if playerVelocity.y < 8 then playerVelocity = Vector2.new(playerVelocity.x,playerVelocity.y + 1) end if playerVelocity.y > 1 then platforming = false end local enemies = gui.Cabinet.Screen.Enemies:GetChildren for i = 1, #enemies do  enemies[i].Position = UDim2.new(0,enemies[i].Position.X.Offset,0,enemies[i].Position.Y.Offset + 5) end end function Touching(a,b) local ap = Vector2.new(a.Position.X.Offset, a.Position.Y.Offset) local as = Vector2.new(a.Size.X.Offset, a.Size.Y.Offset) local bp = Vector2.new(b.Position.X.Offset, b.Position.Y.Offset) local bs = Vector2.new(b.Size.X.Offset, b.Size.Y.Offset) local c = (ap.x + as.x > bp.x) and (bp.x + bs.x > ap.x) and (ap.y + as.y > bp.y) and (bp.y + bs.y > ap.y) if c then return true else return false end end function Collision -- check player against map for i = 1, #mapParts do  if Touching(mapParts[i],player) then if player.Position.X.Offset < mapParts[i].Position.X.Offset and not platforming then player.Position = UDim2.new(0, mapParts[i].Position.X.Offset - player.Size.X.Offset,0,player.Position.Y.Offset) playerVelocity = Vector2.new(0,playerVelocity.y)   elseif player.Position.X.Offset + player.Size.X.Offset > mapParts[i].Position.X.Offset + mapParts[i].Size.X.Offset and not platforming then player.Position = UDim2.new(0, mapParts[i].Position.X.Offset + mapParts[i].Size.X.Offset,0,player.Position.Y.Offset) playerVelocity = Vector2.new(0,playerVelocity.y)   else if player.Position.Y.Offset > mapParts[i].Position.Y.Offset then playerVelocity = Vector2.new(playerVelocity.x,10) platforming = false elseif player.Position.Y.Offset + player.Size.Y.Offset > mapParts[i].Position.Y.Offset then platforming = true playerVelocity = Vector2.new(playerVelocity.x,0) end end end end—check enemies against map, player local enemies = gui.Cabinet.Screen.Enemies:GetChildren for i = 1, #enemies do  for j = 1, #mapParts do    if Touching(mapParts[j],enemies[i]) then enemies[i].Position = UDim2.new(0,enemies[i].Position.X.Offset,0,mapParts[j].Position.Y.Offset - enemies[i].Size.Y.Offset) end end if enemies[i].Position.X.Offset > 384 or enemies[i].Position.X.Offset < 0 then if enemies[i].Position.Y.Offset > 230 then enemies[i]:remove else enemies[i].Left.Value = not enemies[i].Left.Value end end if Touching(enemies[i],player) then gaming = false end end—check game bounds if player.Position.X.Offset < 0 then playerVelocity = Vector2.new(0,playerVelocity.y)  player.Position = UDim2.new(0,0,0,player.Position.Y.Offset) elseif player.Position.X.Offset > 384 then playerVelocity = Vector2.new(0,playerVelocity.y)  player.Position = UDim2.new(0,384,0,player.Position.Y.Offset) end if player.Position.Y.Offset < 0 then playerVelocity = Vector2.new(playerVelocity.x,0) player.Position = UDim2.new(0,player.Position.X.Offset,0,0) end—check player against prize if prize ~= nil and Touching(player,prize) then time = time + 100 Tool.Handle.Prize:Play prize:remove prize = nil prizeRegenTimer = math.random(180,360) end end function updatePlayerPos if math.abs(playerVelocity.x) > 4 then if playerVelocity.x < 0 then playerVelocity = Vector2.new(-4,playerVelocity.y)  else playerVelocity = Vector2.new(4,playerVelocity.y)  end end player.Position = UDim2.new(0,player.Position.X.Offset + playerVelocity.x,0,player.Position.Y.Offset + playerVelocity.y) playerVelocity = Vector2.new(playerVelocity.x * 0.5,playerVelocity.y * 0.9) end function Controls if left then playerVelocity = Vector2.new(playerVelocity.x - 3,playerVelocity.y) elseif right then playerVelocity = Vector2.new(playerVelocity.x + 3,playerVelocity.y) end if jump and platforming then jump = false platforming = false Tool.Handle.Jump:Play playerVelocity = Vector2.new(playerVelocity.x,playerVelocity.y - 20) end end function walkAnimation(forward) walkCounter = walkCounter + 1 if walkCounter > 8 then walkCounter = 1 end local playIndex = walkCounter if walkCounter == 4 then playIndex = 2 elseif walkCounter == 5 then playIndex = 1 elseif walkCounter == 6 then playIndex = 4 elseif walkCounter == 7 then playIndex = 5 elseif walkCounter == 8 then playIndex = 4 end if forward then player.Image = "http://www.roblox.com/asset/?id=" .. playerWalkForward[playIndex] else player.Image = "http://www.roblox.com/asset/?id=" .. playerWalkBackward[playIndex] end end local forward = true function animation if playerVelocity.x > 1 then forward = true walkAnimation(forward) elseif playerVelocity.x < -1 then forward = false walkAnimation(forward) elseif forward then player.Image = "http://www.roblox.com/asset/?id=" .. playerWalkForward[1] walkCounter = 1 else player.Image = "http://www.roblox.com/asset/?id=" .. playerWalkBackward[1] walkCounter = 1 end end local left = true function spawnEnemy local enemy = Instance.new("ImageLabel") enemy.Image = "http://www.roblox.com/asset/?id=32183056" enemy.Size = UDim2.new(0,16,0,16) enemy.BackgroundTransparency = 1 enemy.BorderSizePixel = 0 enemy.ZIndex = 2 if left then enemy.Position = UDim2.new(0,0,0,0) else enemy.Position = UDim2.new(0,380,0,0) end enemy.Name = "Enemy" enemy.Parent = gui.Cabinet.Screen.Enemies local leftDirection = Instance.new("BoolValue") leftDirection.Name = "Left" leftDirection.Value = not left leftDirection.Parent = enemy left = not left end local spawned = false local maxEnemies = 0 function updateEnemies maxEnemies = 4 + (time/900) local enemies = gui.Cabinet.Screen.Enemies:GetChildren if #enemies < maxEnemies and not spawned then spawned = true spawnEnemy local co = coroutine.create(function   wait(math.random(1,3))    spawned = false   end) coroutine.resume(co) end for i = 1, #enemies do  if enemies[i].Left.Value then enemies[i].Position = UDim2.new(0,enemies[i].Position.X.Offset - 3,0,enemies[i].Position.Y.Offset) else enemies[i].Position = UDim2.new(0,enemies[i].Position.X.Offset + 3,0,enemies[i].Position.Y.Offset) end end end function updatePrize if prizeRegenTimer > 0 then prizeRegenTimer = prizeRegenTimer - 1 return end if prize == nil then prize = Instance.new("ImageLabel") prize.Name = "Prize" prize.Size = UDim2.new(0,24,0,24) prize.Image = "http://www.roblox.com/asset/?id=32190862" prize.BackgroundTransparency = 1 prize.BorderSizePixel = 0 prize.Parent = gui.Cabinet.Screen local pos = math.random(1,4) if pos == 1 then prize.Position = UDim2.new(0,24,0,120) elseif pos == 2 then prize.Position = UDim2.new(0,350,0,120) elseif pos == 3 then prize.Position = UDim2.new(0,350,0,230) else prize.Position = UDim2.new(0,24,0,230) end end end function gameOver Tool.Handle.Song:Stop Tool.Handle.Fail:Play wait(1) if gui:FindFirstChild("Cabinet") then gui.Cabinet:remove end local scoreFrame = gui:FindFirstChild("ScoreFrame") if scoreFrame then scoreFrame.BackgroundTransparency = 0.2 end while scoreFrame do  gui.ScoreFrame.Position = UDim2.new(0.5,gui.ScoreFrame.Position.X.Offset,0.5,gui.ScoreFrame.Position.Y.Offset - 3) if gui.ScoreFrame.Position.Y.Offset <= 0 then wait(3) return end wait end end function gameLoop animTimer = 0 gaming = true while gaming do  Physics Collision Controls updatePlayerPos updateEnemies updatePrize time = time + 0.05 animTimer = animTimer + 1 if animTimer == 3 then animation animTimer = 0 end gui.ScoreFrame.Score.Text = tostring(math.floor(time)) wait(0.03) end if head.Anchored then gameOver end end

Thought that was hard? Oh boy, just wait until you see the GUIs!

Step 4: GameGui and ScoreFrame.
Add a ScreenGui and name it GameGui. Then, add a Frame and call it ScoreFrame. In ScoreFrame, add an ImageLabel (do not change the name) and a TextLabel. Change the TextLabel to Score. For ScoreFrame, here's the changed stats.


 * BackgroundColor3: 51, 102, 255
 * BackgroundTransparency: 1
 * Position: {0.5, -100}, {0.5, 150}
 * Size: {0, 200}, {0, 50}
 * ZIndex: 2

For ImageLabel:


 * BackgroundColor3: 51; 102; 255
 * BackgroundTransparency: 1
 * Image: http://www.roblox.com/asset/?id=31736392
 * Position: {0, 6}, {0, 0}
 * Size: {0, 130}, {0, 50}
 * ZIndex: 2

And for Score:


 * BackgroundColor3: 0; 255; 255
 * BackgroundTransparency: 1
 * BorderSizePixel: 0
 * Position: {0, 130}, {0, 0}
 * Size: {0, 70}, {0, 50}
 * ZIndex: 3

You thought that was hard? Just wait until you add Cabinet and all of its children.

(ADDING THE REST LATER)

Tutorial 4: Making a Sword
This is ColorfulBrendon(Wiki: ColorfulBrendonROBLOX)'s tutorial on how to make your own sword. Maybe someday it will be published as a catalog gear!

Start off spawning a regular brick. Name it "Handle" and resize it to how you want it. Then go to "Workspace" in the window with Explorer and Properties, as these two windows will be required to accomplish your task, and once Workspace is selected, go to "Insert" and select Object. Afterwards you need to select Tool. Name it Sword with Properties and on Explorer, drag your item now named Handle into your item now named Sword. You may Rename sword to whatever you wish, however Handle is important. Now, the game designers of ROBLOX are trying to delete every possible TouchInterest Creator. So, go to Free Models and get a basic build tool of the Administrators' creation. Drag Tool is basic. Open up the "+" in the Drag Tool, select "TouchInterest" click "Copy" and then "Paste" it into the "Handle" of your sword. In Handle insert a SpecialMesh. This is how to make Head appearances, or how to make it so you can make a mesh freely. Copy and paste this into your mesh

rbxasset://fonts/sword.mesh

Now all you have to do is texture it! The BASIC sword mesh is this ID

rbxasset://textures/SwordTexture.png

I will show you what it looks like in a Photo.

Save this to your computer and edit it with an image editing program. You can see the editor I will make the ENTIRE image white to make a "Lightheart"

front and back of the handle, the sword's blade, the upper handle, all the detail and designs in the handle, etc.

The "Darkheart" is famous. All it is, would be black. So in my image I am making the entire thing white for, a "Lightheart." You can't see the image because that, it's white. Now to finish off this section of the sword making process, I must show you how to make your new texture exist.

Upload it to your Decals by doing the following


 * 1) Go to My ROBLOX
 * 2) Go to Profile
 * 3) Go to Stuff
 * 4) Go to Decals
 * 5) Click Create
 * 6) Click Choose File
 * 7) Select your desired photo
 * 8) Click Create Decal
 * 9) Wait for it to be approved. (Wait Time: 1–45 minutes depending on the decal)
 * 10) If it is not completed within 45 minutes your decal has not been approved.

Now spawn a Brick

On that brick, paste your Decal. Now in Explorer there is now a Decal underneath where it says Part.

In Properties you can see it has an ID. Copy and paste the ID into the TextureID in your sword. Okay so we have a sword looking item that you can pick up but what about the scripts?

Insert a "Script" and "LocalScript" into your Sword (Not the handle)

Let's start with this one:

Script (Rename "Sword Script")

game:service("RunService") local damage = 5 --Edit this to determine your sword's damage when you walk up to a person with it equipped. ~Color local slash_damage = 10—Edit this to determine your sword's damage when you click it at a person. ~Colorlocal lunge_damage = 30—Edit this to determine your sword's damage when you click it enough times to stab with it in the air. ~Color sword = script.Parent.HandleTool = script.Parent local SlashSound = Instance.new("Sound")SlashSound.SoundId = "rbxasset://sounds\\swordslash.wav"SlashSound.Parent = swordSlashSound.Volume = .7 local LungeSound = Instance.new("Sound")LungeSound.SoundId = "rbxasset://sounds\\swordlunge.wav"LungeSound.Parent = swordLungeSound.Volume = .6 local UnsheathSound = Instance.new("Sound")UnsheathSound.SoundId = "rbxasset://sounds\\unsheath.wav"UnsheathSound.Parent = swordUnsheathSound.Volume = 1 function blow(hit)if (hit.Parent == nil) then return end -- happens when bullet hits sword (Don't Edit) local humanoid = hit.Parent:findFirstChild("Humanoid")local vCharacter = Tool.Parentlocal vPlayer = game.Players:playerFromCharacter(vCharacter)local hum = vCharacter:findFirstChild("Humanoid") -- non-nil if tool held by a character (Don't Edit)if humanoid~=nil and humanoid ~= hum and hum ~= nil then—final check, make sure sword is in-hand (Don't Edit) local right_arm = vCharacter:FindFirstChild("Right Arm")if (right_arm ~= nil) thenlocal joint = right_arm:FindFirstChild("RightGrip")if (joint ~= nil and (joint.Part0 == sword or joint.Part1 == sword)) thentagHumanoid(humanoid, vPlayer)humanoid:TakeDamage(damage)wait(1)untagHumanoid(humanoid)endend endend function tagHumanoid(humanoid, player)local creator_tag = Instance.new("ObjectValue")creator_tag.Value = playercreator_tag.Name = "creator"creator_tag.Parent = humanoidend function untagHumanoid(humanoid)if humanoid ~= nil thenlocal tag = humanoid:findFirstChild("creator")if tag ~= nil thentag.Parent = nilendendend function attackdamage = slash_damageSlashSound:playlocal anim = Instance.new("StringValue")anim.Name = "toolanim"anim.Value = "Slash"anim.Parent = Toolend function lungedamage = lunge_damage LungeSound:play local anim = Instance.new("StringValue")anim.Name = "toolanim"anim.Value = "Lunge"anim.Parent = Tool force = Instance.new("BodyVelocity")force.velocity = Vector3.new(0,10,0) --Tool.Parent.Torso.CFrame.lookVector * 80 (Don't Edit)force.Parent = Tool.Parent.Torsowait(.25)swordOutwait(.25)force.Parent = nilwait(.5)swordUp damage = slash_damageend function swordUpTool.GripForward = Vector3.new(-1,0,0)Tool.GripRight = Vector3.new(0,1,0)Tool.GripUp = Vector3.new(0,0,1)end function swordOutTool.GripForward = Vector3.new(0,0,1)Tool.GripRight = Vector3.new(0,-1,0)Tool.GripUp = Vector3.new(-1,0,0)end function swordAcross-- parryend Tool.Enabled = truelocal last_attack = 0function onActivated if not Tool.Enabled thenreturnend Tool.Enabled = false local character = Tool.Parent;local humanoid = character.Humanoidif humanoid == nil thenprint("Humanoid not found")return end t = r.Stepped:wait if (t - last_attack < .2) thenlungeelseattackend last_attack = t --wait(.5) (Don't Edit) Tool.Enabled = trueend function onEquippedUnsheathSound:playend script.Parent.Activated:connect(onActivated)script.Parent.Equipped:connect(onEquipped) connection = sword.Touched:connect(blow) --ONCE YOU HAVE THIS IN A SCRIPT, ONLY EDIT THE PARTS THAT SAY YOU CAN!

Congratulations, you just made a sword!

How to make Custom Message-Spawning Buttons
By now you should have lots of great gears in your workspace. Want to make a clickable button to make you sound professional to go with it? To make you look just THAT much more impressive? Well, if you do, just read this!

I'm sure some time or another you used or saw someone use In-Game admin, right? h/ or m/? Sorry, there's no l/ that makes a Low text. H isn't high and M isn't middle.

They actually mean Message and Hint. As ReloRelo warned you at the beginning, you probably know this is 5/5 on the Hardness scale meaning you are likely to know how to make one of those models with a hint at the top saying "The Maker of this Map thanks (username) for..." or "Welcome to (place) by (username)" or something like that.

Those are easy to make and I don't want to waste your time with 1/5 on the hardness scale.

Steps:


 * 1) Spawn a brick
 * 2) Add a Click Detector
 * 3) Prepare for the scripts that go in the button!

debounce = false function onClickedif debounce == false thendebounce = truelocal m = Instance.new("Message")m.Parent = game.Workspacem.Text = "My text here"—Your text goes in the ""s.wait(5) --In five seconds your text vanishesm.Text = "My text here too."—After 5 seconds it switched over to this text.wait(180) --In three minutes your text vanishesm.Text = "Hopefully by now you..."wait(5)m.Text = "...get the pattern?" --I hope you understand it. Not to hard to learn once you have the script.wait (5) --Enjoy! ~Color m:Removedebounce = false endend script.Parent.ClickDetector.MouseClick:connect(onClicked)

Tutorial 5: Trowel
A84hg here, and this is my first tutorial on how to make a custom trowel. This is on 3. (Medium).

The beginning
First of all, insert a tool, and drag it into the StarterPack. Name it whatever you want. (A84hg's Quality Trowel) for example.

Then, add two scripts into the tool. Name one "BrickCleanup", and name the other "WallMaker".

BrickCleanup
For the BrickCleanup script, add this:

WallMaker
For the WallMaker script, add this:

local wallHeight = 4

local brickSpeed = 0.04

local wallWidth = 12

local Tool = script.Parent

-- places a brick at pos and returns the position of the brick's opposite corner

function placeBrick(cf, pos, color)

local brick = Instance.new("Part")

brick.BrickColor = color

brick.CFrame = cf * CFrame.new(pos + brick.Size / 2)

script.Parent.BrickCleanup:Clone.Parent = brick—attach cleanup script to this brick

brick.BrickCleanup.Disabled = false

brick.Parent = game.Workspace

brick:MakeJoints

return brick, pos +  brick.Size

end

function buildWall(cf)

local color = BrickColor.random

local bricks = {}

assert(wallWidth>0)

local y = 0

while y < wallHeight do

local p

local x = -wallWidth/2

while x < wallWidth/2 do

local brick

brick, p = placeBrick(cf, Vector3.new(x, y, 0), color)

x = p.x

table.insert(bricks, brick)

wait(brickSpeed)

end

y = p.y

end

return bricks

end

function snap(v)

if math.abs(v.x)>math.abs(v.z) then

if v.x>0 then

return Vector3.new(1,0,0)

else

return Vector3.new(-1,0,0)

end

else

if v.z>0 then

return Vector3.new(0,0,1)

else

return Vector3.new(0,0,-1)

end

end

end

Tool.Enabled = true

function onActivated

if not Tool.Enabled then

return

end

Tool.Enabled = false

local character = Tool.Parent;

local humanoid = character.Humanoid

if humanoid == nil then

print("Humanoid not found")

return 

end

local targetPos = humanoid.TargetPoint

local lookAt = snap( (targetPos - character.Head.Position).unit )

local cf = CFrame.new(targetPos, targetPos + lookAt)

Tool.Handle.BuildSound:play

buildWall(cf)

wait(5)

Tool.Enabled = true

end

script.Parent.Activated:connect(onActivated)

Thought that was it? Well, you're wrong! Then, add a LocalScript, insert it into the tool, and name it Local Gui.

Local Gui
Add this in the LS:

local Tool = script.Parent;



enabled = true

function onButton1Down(mouse)

if not enabled then

return

end



enabled = false

mouse.Icon = "rbxasset://textures\\ArrowFarCursor.png"



wait(5)

mouse.Icon = "rbxasset://textures\\ArrowCursor.png"

enabled = true



end

<p style="margin-top:0px;margin-bottom:0px;">

<p style="margin-top:0px;margin-bottom:0px;">function onEquippedLocal(mouse)

<p style="margin-top:0px;margin-bottom:0px;">if mouse == nil then

<p style="margin-top:0px;margin-bottom:0px;">print("Mouse not found")

<p style="margin-top:0px;margin-bottom:0px;">return

<p style="margin-top:0px;margin-bottom:0px;">end

<p style="margin-top:0px;margin-bottom:0px;">

<p style="margin-top:0px;margin-bottom:0px;">mouse.Icon = "rbxasset://textures\\ArrowCursor.png"

<p style="margin-top:0px;margin-bottom:0px;">mouse.Button1Down:connect(function onButton1Down(mouse) end)

<p style="margin-top:0px;margin-bottom:0px;">end

<p style="margin-top:0px;margin-bottom:0px;">

<p style="margin-top:0px;margin-bottom:0px;">

<p style="margin-top:0px;margin-bottom:0px;">Tool.Equipped:connect(onEquippedLocal)

<h3 style="margin-top:0px;margin-bottom:0px;">Handle, Sounds, and Mesh

<p style="margin-top:0px;margin-bottom:0px;">Afterward, insert a brick, and name it Handle.

<p style="margin-top:0px;margin-bottom:0px;">Insert a sound into the handle, and name it BuildSound. You can give it any sound ID, but bass.wav is recommended. Then, give it a mesh. Give it the Mesh ID rbxasset://fonts/trowel.mesh, and the Texture ID rbxasset://textures/TrowelTexture.png

<p style="margin-top:0px;margin-bottom:0px;">Test it, and you're done making your very own trowel!

<p style="margin-top:0px;margin-bottom:0px;">

<p style="margin-top:0px;margin-bottom:0px;">This is A84hg, signing off.

<p style="margin-top:0px;margin-bottom:0px;"> <h2 style="margin-top:0px;margin-bottom:0px;">Tutorial 6: Timebomb Well hello there. I'm A84hg, back with another tutorial for custom gear. This time, we bring you the TIMEBOMB! KABOOM! Difficulty: 3 (Medium)

The beginning

Insert a tool, and drag it into the StarterPack. Name it whatever you like, like A BOMB!

Then insert two scripts. Name one Bomb, and name the other PlantBomb.

Bomb
Put this in Bomb.

<p style="margin-top:0px;margin-bottom:0px;">local updateInterval = .4

<p style="margin-top:0px;margin-bottom:0px;">

<p style="margin-top:0px;margin-bottom:0px;">local currentColor = 1

<p style="margin-top:0px;margin-bottom:0px;">local colors = {26, 21}

<p style="margin-top:0px;margin-bottom:0px;">

<p style="margin-top:0px;margin-bottom:0px;">local ticksound = Instance.new("Sound")

<p style="margin-top:0px;margin-bottom:0px;">ticksound.SoundId = "rbxasset://sounds\\clickfast.wav"

<p style="margin-top:0px;margin-bottom:0px;">ticksound.Parent = script.Parent

<p style="margin-top:0px;margin-bottom:0px;">

<p style="margin-top:0px;margin-bottom:0px;">function update

<p style="margin-top:0px;margin-bottom:0px;">updateInterval = updateInterval * .9

<p style="margin-top:0px;margin-bottom:0px;">script.Parent.BrickColor = BrickColor.new(colors[currentColor])

<p style="margin-top:0px;margin-bottom:0px;">currentColor = currentColor + 1

<p style="margin-top:0px;margin-bottom:0px;">if (currentColor > 2) then currentColor = 1 end

<p style="margin-top:0px;margin-bottom:0px;">end

<p style="margin-top:0px;margin-bottom:0px;">

<p style="margin-top:0px;margin-bottom:0px;">

<p style="margin-top:0px;margin-bottom:0px;">function blowUp

<p style="margin-top:0px;margin-bottom:0px;">local sound = Instance.new("Sound")

<p style="margin-top:0px;margin-bottom:0px;">sound.SoundId = "rbxasset://sounds\\Rocket shot.wav"

<p style="margin-top:0px;margin-bottom:0px;">sound.Parent = script.Parent

<p style="margin-top:0px;margin-bottom:0px;">sound.Volume = 1

<p style="margin-top:0px;margin-bottom:0px;">sound:play

<p style="margin-top:0px;margin-bottom:0px;">explosion = Instance.new("Explosion")

<p style="margin-top:0px;margin-bottom:0px;">explosion.BlastRadius = 12

<p style="margin-top:0px;margin-bottom:0px;">explosion.BlastPressure = 1000000

<p style="margin-top:0px;margin-bottom:0px;">

<p style="margin-top:0px;margin-bottom:0px;">local creator = script.Parent:findFirstChild("creator")

<p style="margin-top:0px;margin-bottom:0px;">if creator ~= nil then

<p style="margin-top:0px;margin-bottom:0px;">explosion.Hit:connect(function(part, distance) onPlayerBlownUp(part, distance, creator) end)

<p style="margin-top:0px;margin-bottom:0px;">end

<p style="margin-top:0px;margin-bottom:0px;">

<p style="margin-top:0px;margin-bottom:0px;">explosion.Position = script.Parent.Position

<p style="margin-top:0px;margin-bottom:0px;">explosion.Parent = game.Workspace

<p style="margin-top:0px;margin-bottom:0px;">script.Parent.Transparency = 1

<p style="margin-top:0px;margin-bottom:0px;">end

<p style="margin-top:0px;margin-bottom:0px;">

<p style="margin-top:0px;margin-bottom:0px;">function onPlayerBlownUp(part, distance, creator)

<p style="margin-top:0px;margin-bottom:0px;">if part.Name == "Head" then

<p style="margin-top:0px;margin-bottom:0px;">local humanoid = part.Parent.Humanoid

<p style="margin-top:0px;margin-bottom:0px;">tagHumanoid(humanoid, creator)

<p style="margin-top:0px;margin-bottom:0px;">end

<p style="margin-top:0px;margin-bottom:0px;">end

<p style="margin-top:0px;margin-bottom:0px;">

<p style="margin-top:0px;margin-bottom:0px;">function tagHumanoid(humanoid, creator)

<p style="margin-top:0px;margin-bottom:0px;">

<p style="margin-top:0px;margin-bottom:0px;">if creator ~= nil then

<p style="margin-top:0px;margin-bottom:0px;">local new_tag = creator:clone

<p style="margin-top:0px;margin-bottom:0px;">new_tag.Parent = humanoid

<p style="margin-top:0px;margin-bottom:0px;">end

<p style="margin-top:0px;margin-bottom:0px;">end

<p style="margin-top:0px;margin-bottom:0px;">

<p style="margin-top:0px;margin-bottom:0px;">function untagHumanoid(humanoid)

<p style="margin-top:0px;margin-bottom:0px;">if humanoid ~= nil then

<p style="margin-top:0px;margin-bottom:0px;">local tag = humanoid:findFirstChild("creator")

<p style="margin-top:0px;margin-bottom:0px;">if tag ~= nil then

<p style="margin-top:0px;margin-bottom:0px;">tag.Parent = nil

<p style="margin-top:0px;margin-bottom:0px;">end

<p style="margin-top:0px;margin-bottom:0px;">end

<p style="margin-top:0px;margin-bottom:0px;">end

<p style="margin-top:0px;margin-bottom:0px;">

<p style="margin-top:0px;margin-bottom:0px;">while updateInterval > .1 do

<p style="margin-top:0px;margin-bottom:0px;">wait(updateInterval)

<p style="margin-top:0px;margin-bottom:0px;">update

<p style="margin-top:0px;margin-bottom:0px;">ticksound:play

<p style="margin-top:0px;margin-bottom:0px;">end

<p style="margin-top:0px;margin-bottom:0px;">

<p style="margin-top:0px;margin-bottom:0px;">blowUp

<p style="margin-top:0px;margin-bottom:0px;">wait(2)

<p style="margin-top:0px;margin-bottom:0px;">script.Parent:remove

<p style="margin-top:0px;margin-bottom:0px;">

PlantBomb
<p style="margin-top:0px;margin-bottom:0px;">Put this in PlantBomb:

<p style="margin-top:0px;margin-bottom:0px;">local bombScript = script.Parent.Bomb

<p style="margin-top:0px;margin-bottom:0px;">local Tool = script.Parent

<p style="margin-top:0px;margin-bottom:0px;">local Bomb = Tool.Handle

<p style="margin-top:0px;margin-bottom:0px;">

<p style="margin-top:0px;margin-bottom:0px;">function plant

<p style="margin-top:0px;margin-bottom:0px;">local bomb2 = Instance.new("Part")

<p style="margin-top:0px;margin-bottom:0px;">

<p style="margin-top:0px;margin-bottom:0px;">local vCharacter = Tool.Parent

<p style="margin-top:0px;margin-bottom:0px;">local vPlayer = game.Players:playerFromCharacter(vCharacter)

<p style="margin-top:0px;margin-bottom:0px;">

<p style="margin-top:0px;margin-bottom:0px;">local spawnPos = Bomb.Position

<p style="margin-top:0px;margin-bottom:0px;">

<p style="margin-top:0px;margin-bottom:0px;">bomb2.Position = Vector3.new(spawnPos.x, spawnPos.y+3, spawnPos.z)

<p style="margin-top:0px;margin-bottom:0px;">bomb2.Size = Vector3.new(2,2,2)

<p style="margin-top:0px;margin-bottom:0px;">

<p style="margin-top:0px;margin-bottom:0px;">bomb2.BrickColor = BrickColor.new(21)

<p style="margin-top:0px;margin-bottom:0px;">bomb2.Shape = 0

<p style="margin-top:0px;margin-bottom:0px;">bomb2.BottomSurface = 0

<p style="margin-top:0px;margin-bottom:0px;">bomb2.TopSurface = 0

<p style="margin-top:0px;margin-bottom:0px;">bomb2.Reflectance = 1

<p style="margin-top:0px;margin-bottom:0px;">bomb2.Name = "TimeBomb"

<p style="margin-top:0px;margin-bottom:0px;">bomb2.Locked = true

<p style="margin-top:0px;margin-bottom:0px;">

<p style="margin-top:0px;margin-bottom:0px;">local creator_tag = Instance.new("ObjectValue")

<p style="margin-top:0px;margin-bottom:0px;">creator_tag.Value = vPlayer

<p style="margin-top:0px;margin-bottom:0px;">creator_tag.Name = "creator"

<p style="margin-top:0px;margin-bottom:0px;">creator_tag.Parent = bomb2

<p style="margin-top:0px;margin-bottom:0px;">

<p style="margin-top:0px;margin-bottom:0px;">bomb2.Parent = game.Workspace

<p style="margin-top:0px;margin-bottom:0px;">local new_script = bombScript:clone

<p style="margin-top:0px;margin-bottom:0px;">new_script.Disabled = false

<p style="margin-top:0px;margin-bottom:0px;">new_script.Parent = bomb2

<p style="margin-top:0px;margin-bottom:0px;">end

<p style="margin-top:0px;margin-bottom:0px;">

<p style="margin-top:0px;margin-bottom:0px;">

<p style="margin-top:0px;margin-bottom:0px;">Tool.Enabled = true

<p style="margin-top:0px;margin-bottom:0px;">function onActivated

<p style="margin-top:0px;margin-bottom:0px;">

<p style="margin-top:0px;margin-bottom:0px;">if not Tool.Enabled then

<p style="margin-top:0px;margin-bottom:0px;">return

<p style="margin-top:0px;margin-bottom:0px;">end

<p style="margin-top:0px;margin-bottom:0px;">

<p style="margin-top:0px;margin-bottom:0px;">Tool.Enabled = false

<p style="margin-top:0px;margin-bottom:0px;">

<p style="margin-top:0px;margin-bottom:0px;">local character = Tool.Parent;

<p style="margin-top:0px;margin-bottom:0px;">local humanoid = character.Humanoid

<p style="margin-top:0px;margin-bottom:0px;">if humanoid == nil then

<p style="margin-top:0px;margin-bottom:0px;">print("Humanoid not found")

<p style="margin-top:0px;margin-bottom:0px;">return

<p style="margin-top:0px;margin-bottom:0px;">end

<p style="margin-top:0px;margin-bottom:0px;">

<p style="margin-top:0px;margin-bottom:0px;">local targetPos = humanoid.TargetPoint

<p style="margin-top:0px;margin-bottom:0px;">Bomb.Transparency = 1.0

<p style="margin-top:0px;margin-bottom:0px;">

<p style="margin-top:0px;margin-bottom:0px;">plant

<p style="margin-top:0px;margin-bottom:0px;">

<p style="margin-top:0px;margin-bottom:0px;">wait(6)

<p style="margin-top:0px;margin-bottom:0px;">Bomb.Transparency = 0.0

<p style="margin-top:0px;margin-bottom:0px;">

<p style="margin-top:0px;margin-bottom:0px;">Tool.Enabled = true

<p style="margin-top:0px;margin-bottom:0px;">end

<p style="margin-top:0px;margin-bottom:0px;">

<p style="margin-top:0px;margin-bottom:0px;">function onUnequipped

<p style="margin-top:0px;margin-bottom:0px;">end

<p style="margin-top:0px;margin-bottom:0px;">

<p style="margin-top:0px;margin-bottom:0px;">

<p style="margin-top:0px;margin-bottom:0px;">Tool.Activated:connect(onActivated)

<p style="margin-top:0px;margin-bottom:0px;">

<p style="margin-top:0px;margin-bottom:0px;">Tool.Unequipped:connect(onUnequipped)

<p style="margin-top:0px;margin-bottom:0px;">Local Gui

<p style="margin-top:0px;margin-bottom:0px;">Then, like in the Trowel tutorial, add a LocalScript, and name it Local Gui.

<p style="margin-top:0px;margin-bottom:0px;">Put this in Local Gui:

<p style="margin-top:0px;margin-bottom:0px;">local Tool = script.Parent;

<p style="margin-top:0px;margin-bottom:0px;">

<p style="margin-top:0px;margin-bottom:0px;">local enabled = true

<p style="margin-top:0px;margin-bottom:0px;">function onButton1Down(mouse)

<p style="margin-top:0px;margin-bottom:0px;">if not enabled then

<p style="margin-top:0px;margin-bottom:0px;">return

<p style="margin-top:0px;margin-bottom:0px;">end

<p style="margin-top:0px;margin-bottom:0px;">

<p style="margin-top:0px;margin-bottom:0px;">enabled = false

<p style="margin-top:0px;margin-bottom:0px;">mouse.Icon = "rbxasset://textures\\ArrowFarCursor.png"

<p style="margin-top:0px;margin-bottom:0px;">

<p style="margin-top:0px;margin-bottom:0px;">wait(6)

<p style="margin-top:0px;margin-bottom:0px;">mouse.Icon = "rbxasset://textures\\ArrowCursor.png"

<p style="margin-top:0px;margin-bottom:0px;">enabled = true

<p style="margin-top:0px;margin-bottom:0px;">

<p style="margin-top:0px;margin-bottom:0px;">end

<p style="margin-top:0px;margin-bottom:0px;">

<p style="margin-top:0px;margin-bottom:0px;">function onEquippedLocal(mouse)

<p style="margin-top:0px;margin-bottom:0px;">

<p style="margin-top:0px;margin-bottom:0px;">if mouse == nil then

<p style="margin-top:0px;margin-bottom:0px;">print("Mouse not found")

<p style="margin-top:0px;margin-bottom:0px;">return

<p style="margin-top:0px;margin-bottom:0px;">end

<p style="margin-top:0px;margin-bottom:0px;">

<p style="margin-top:0px;margin-bottom:0px;">mouse.Icon = "rbxasset://textures\\ArrowCursor.png"

<p style="margin-top:0px;margin-bottom:0px;">mouse.Button1Down:connect(function onButton1Down(mouse) end)

<p style="margin-top:0px;margin-bottom:0px;">end

<p style="margin-top:0px;margin-bottom:0px;">

<p style="margin-top:0px;margin-bottom:0px;">Tool.Equipped:connect(onEquippedLocal)

<p style="margin-top:0px;margin-bottom:0px;">Then, insert a 2x2x2 brick and name it Handle.

<p style="margin-top:0px;margin-bottom:0px;">Give it the mesh rbxasset://fonts/timebomb.mesh with the texture rbxasset://textures/bombtex.png

<p style="margin-top:0px;margin-bottom:0px;">Also, give the handle a TouchTransmitter, and name it TouchInterest.

<p style="margin-top:0px;margin-bottom:0px;">Test it, and you're done!

<p style="margin-top:0px;margin-bottom:0px;">

<p style="margin-top:0px;margin-bottom:0px;">This is A84hg, signing off.

<p style="margin-top:0px;margin-bottom:0px;">

<p style="margin-top:0px;margin-bottom:0px;">

<p style="margin-top:0px;margin-bottom:0px;">