Certainly! I’ll guide you through the process of creating weapons for your Roblox game and provide copy-paste-ready scripts for different weapon functionalities, including how to add damage, a cooldown timer, and a basic weapon system.
1. Basic Sword Weapon Script
This is a simple script for creating a sword that deals damage to players when they touch other players.
Steps to Add the Sword:
1. Create the Sword Model:
• First, you need to create the sword. You can either create a custom model or use Roblox’s built-in sword.
• To create a sword, you can use Roblox Studio’s toolbox or build your own from parts (make sure it has a Handle part).
2. Add a Script to the Sword:
• In the Explorer panel, right-click on the Sword model and select Insert Object > Script.
• Copy and paste the following code into the script.
Basic Sword Script:
local sword = script.Parent — The sword model
local damage = 25 — How much damage the sword does
local cooldownTime = 2 — Cooldown time in seconds between sword swings
local function onHit(otherPart)
local character = otherPart.Parent
if character:IsA(“Model”) and character:FindFirstChild(“Humanoid”) then
local humanoid = character:FindFirstChild(“Humanoid”)
if humanoid then
humanoid:TakeDamage(damage) — Deal damage to the player
print(“Hit ” .. character.Name .. ” for ” .. damage .. ” damage.”)
end
end
end
local function onEquipped()
local lastSwing = 0 — Track the last time the sword was swung
sword.Handle.Touched:Connect(function(hit)
local currentTime = tick() — Get the current time
if currentTime – lastSwing >= cooldownTime then — Check if enough time has passed since last swing
onHit(hit)
lastSwing = currentTime — Update the last swing time
end
end)
end
— Activate when the sword is equipped
sword.Equipped:Connect(onEquipped)
What it does:
• When the sword touches another player (i.e., their character’s Humanoid part), it deals 25 damage.
• It includes a cooldown of 2 seconds between swings to prevent spamming the sword.
• The onEquipped function triggers when the sword is equipped and connects the Touched event of the sword to detect when it hits other players.
2. Gun Weapon Script (With Fire and Reloading)
This script is for creating a simple gun that shoots bullets and has a reload mechanic.
Steps to Add the Gun:
1. Create the Gun Model:
• Create a model for your gun and ensure it has a Handle part. You can create a simple gun or import a more complex model from the Toolbox.
2. Add the Script to the Gun:
• Right-click on your Gun model and select Insert Object > Script.
• Copy and paste the following script into the script editor.
Gun Weapon Script:
local gun = script.Parent — The gun tool
local damage = 10 — How much damage the gun does
local reloadTime = 2 — Time to reload in seconds
local ammo = 5 — Initial ammo count
local maxAmmo = 5 — Maximum ammo the gun can hold
local cooldownTime = 1 — Cooldown time between shots
local function shoot()
if ammo > 0 then
ammo = ammo – 1 — Decrease ammo by 1
print(“Shot fired! Ammo left: ” .. ammo)
— Create a bullet (this can be a part, raycast, etc.)
local bullet = Instance.new(“Part”)
bullet.Size = Vector3.new(0.2, 0.2, 1)
bullet.Position = gun.Handle.Position + gun.Handle.CFrame.LookVector * 2 — Spawn bullet in front of the gun
bullet.Anchored = false
bullet.CanCollide = false
bullet.Parent = workspace
— Add velocity to the bullet (bullet travels in the direction the gun is pointing)
local bodyVelocity = Instance.new(“BodyVelocity”)
bodyVelocity.MaxForce = Vector3.new(10000, 10000, 10000)
bodyVelocity.Velocity = gun.Handle.CFrame.LookVector * 100
bodyVelocity.Parent = bullet
— Check if the bullet hits a player
bullet.Touched:Connect(function(hit)
local character = hit.Parent
if character:IsA(“Model”) and character:FindFirstChild(“Humanoid”) then
local humanoid = character:FindFirstChild(“Humanoid”)
if humanoid then
humanoid:TakeDamage(damage) — Deal damage to the player
print(“Hit ” .. character.Name .. ” for ” .. damage .. ” damage.”)
bullet:Destroy() — Destroy the bullet after hitting something
end
end
end)
else
print(“Out of ammo! Reloading…”)
reload()
end
end
local function reload()
gun.Enabled = false — Disable gun while reloading
wait(reloadTime) — Wait for the reload time
ammo = maxAmmo — Refill ammo
print(“Reloaded! Ammo is now full.”)
gun.Enabled = true — Re-enable gun
end
local function onEquipped()
— Add functionality for shooting when clicking
gun.Activated:Connect(shoot) — Shoot when the player clicks with the gun equipped
end
— Activate the gun when it’s equipped
gun.Equipped:Connect(onEquipped)
What it does:
• The shoot function fires a bullet when the gun is activated (clicked by the player).
• The bullet travels in the direction the gun is pointing and deals 10 damage if it hits a player’s Humanoid part.
• The gun has a limited ammo count (5 shots in this case), and when ammo runs out, it automatically reloads after a 2-second delay.
• The reload function refills the gun’s ammo and prevents it from shooting while reloading.
3. Throwable Grenade Script
This script allows players to throw a grenade in your game, and it deals damage to nearby players after a short delay.
Steps to Add the Grenade:
1. Create the Grenade Model:
• Create a simple grenade model using parts or import a model from the Toolbox. Make sure the grenade has a Handle part.
2. Add the Script to the Grenade:
• Right-click the grenade model in the Explorer panel and insert a Script.
• Copy and paste the following script.
Grenade Script:
local grenade = script.Parent — The grenade tool
local damage = 50 — Damage of the grenade
local blastRadius = 10 — Radius of the blast
local timer = 3 — Time before grenade explodes after being thrown
local function explode(position)
— Create an explosion effect
local explosion = Instance.new(“Explosion”)
explosion.Position = position
explosion.BlastRadius = blastRadius
explosion.BlastPressure = 1000 — Can be adjusted based on how powerful the explosion is
explosion.Parent = workspace
— Deal damage to players within the blast radius
for _, part in pairs(workspace:FindPartsInRegion3(workspace.CurrentCamera.CFrame.Position – Vector3.new(blastRadius, blastRadius, blastRadius), workspace.CurrentCamera.CFrame.Position + Vector3.new(blastRadius, blastRadius, blastRadius), nil)) do
local character = part.Parent
if character:IsA(“Model”) and character:FindFirstChild(“Humanoid”) then
local humanoid = character:FindFirstChild(“Humanoid”)
if humanoid then
humanoid:TakeDamage(damage)
print(character.Name .. ” took ” .. damage .. ” damage!”)
end
end
end
end
local function throwGrenade()
local cloneGrenade = grenade:Clone() — Clone the grenade
cloneGrenade.Parent = workspace
cloneGrenade.CFrame = grenade.Handle.CFrame — Position the grenade where the player is holding it
— Add velocity to the grenade
local bodyVelocity = Instance.new(“BodyVelocity”)
bodyVelocity.MaxForce = Vector3.new(10000, 10000, 10000)
bodyVelocity.Velocity = grenade.Handle.CFrame.LookVector * 50
bodyVelocity.Parent = cloneGrenade
— Explode after a short delay
wait(timer)
explode(cloneGrenade.Position)
cloneGrenade:Destroy() — Destroy the grenade after it explodes
end
local function onEquipped()
grenade.Activated:Connect(throwGrenade) — Throw grenade when clicked
end
grenade.Equipped:Connect(onEquipped)
What it does:
• When the grenade is thrown, it clones the grenade model and gives it a velocity to throw it.
• After a short timer (3 seconds), the grenade explodes, dealing 50 damage to any players in the blast radius.
• The grenade is destroyed after the explosion.
Conclusion
Now you have three different types of weapons to add to your game:
1. Sword – Basic melee weapon that deals damage when it touches another player.
2. Gun – Ranged weapon with shooting, reloading, and cooldown mechanics.
3. Grenade – Throwable explosive that deals damage in a blast radius.
Simply copy and paste these scripts into your game, and don’t forget to create and properly position your weapon models. Enjoy building your game and have fun experimenting with these scripts!