null nil 0 1 true 0 0 -1.5 0 0 1 1 0 0 0 1 0 ClassicSword rbxasset://Textures\Sword128.png true false Swordscript r = game:service("RunService") local damage = 5 local slash_damage = 10 local lunge_damage = 30 sword = script.Parent.Handle Tool = script.Parent local SlashSound = Instance.new("Sound") SlashSound.SoundId = "rbxasset://sounds\\swordslash.wav" SlashSound.Parent = sword SlashSound.Volume = .7 local LungeSound = Instance.new("Sound") LungeSound.SoundId = "rbxasset://sounds\\swordlunge.wav" LungeSound.Parent = sword LungeSound.Volume = .6 local UnsheathSound = Instance.new("Sound") UnsheathSound.SoundId = "rbxasset://sounds\\unsheath.wav" UnsheathSound.Parent = sword UnsheathSound.Volume = 1 function blow(hit) if (hit.Parent == nil) then return end -- happens when bullet hits sword local humanoid = hit.Parent:findFirstChild("Humanoid") local vCharacter = Tool.Parent local vPlayer = game.Players:playerFromCharacter(vCharacter) local hum = vCharacter:findFirstChild("Humanoid") -- non-nil if tool held by a character if humanoid~=nil and humanoid ~= hum and hum ~= nil then -- final check, make sure sword is in-hand local right_arm = vCharacter:FindFirstChild("Right Arm") if (right_arm ~= nil) then local joint = right_arm:FindFirstChild("RightGrip") if (joint ~= nil and (joint.Part0 == sword or joint.Part1 == sword)) then tagHumanoid(humanoid, vPlayer) humanoid.Health = humanoid.Health - damage wait(1) untagHumanoid(humanoid) end end end end function tagHumanoid(humanoid, player) local creator_tag = Instance.new("ObjectValue") creator_tag.Value = player creator_tag.Name = "creator" creator_tag.Parent = humanoid end function untagHumanoid(humanoid) if humanoid ~= nil then local tag = humanoid:findFirstChild("creator") if tag ~= nil then tag.Parent = nil end end end function attack() damage = slash_damage SlashSound:play() local anim = Instance.new("StringValue") anim.Name = "toolanim" anim.Value = "Slash" anim.Parent = Tool end function lunge() damage = 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 force.Parent = Tool.Parent.Torso wait(.25) swordOut() wait(.25) force.Parent = nil wait(.5) swordUp() damage = slash_damage end function swordUp() Tool.GripForward = Vector3.new(-1,0,0) Tool.GripRight = Vector3.new(0,1,0) Tool.GripUp = Vector3.new(0,0,1) end function swordOut() Tool.GripForward = Vector3.new(0,0,1) Tool.GripRight = Vector3.new(0,-1,0) Tool.GripUp = Vector3.new(-1,0,0) end function swordAcross() -- parry end Tool.Enabled = true local last_attack = 0 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 t = r.Stepped:wait() if (t - last_attack < .2) then lunge() else attack() end last_attack = t --wait(.5) Tool.Enabled = true end function onEquipped() UnsheathSound:play() end script.Parent.Activated:connect(onActivated) script.Parent.Equipped:connect(onEquipped) connection = sword.Touched:connect(blow) true false -0.5 0.5 0 0 -0.5 0.5 0 0 199 -212 12.8000002 -444.5 0 0 -1 0 1 -0 1 0 -0 true true 0 true true false 0.5 2 0.300000012 -0.5 0.5 0 0 -0.5 0.5 0 0 false Handle 0.400000006 -0.5 0.5 0 0 0 0 0 -0.5 0.5 0 0 0 0 0 0 true 1 1 0.800000012 4 rbxasset://fonts/sword.mesh 5 Mesh 1 1 1 rbxasset://textures/SwordTexture.png 1 1 1 true false Local Gui local Tool = script.Parent; enabled = true function onButton1Down(mouse) if not enabled then return end enabled = false mouse.Icon = "rbxasset://textures\\GunWaitCursor.png" wait(.5) mouse.Icon = "rbxasset://textures\\GunCursor.png" enabled = true end function onEquippedLocal(mouse) if mouse == nil then print("Mouse not found") return end mouse.Icon = "rbxasset://textures\\GunCursor.png" mouse.Button1Down:connect(function() onButton1Down(mouse) end) end Tool.Equipped:connect(onEquippedLocal) true 0 Wall rbxasset://Textures\Wall.png true false WallScript wallWait = 5 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 enabled = true function onButton1Down(mouse) if not enabled then return end enabled = false mouse.Icon = "rbxasset://textures\\ArrowFarCursor.png" sound = Instance.new("Sound") sound.SoundId = "rbxasset://sounds\\bass.wav" sound.Parent = script.Parent sound:play() -- find the best cf local cf = mouse.Hit local lookAt = snap(cf.lookVector) cf = CFrame.new(cf.p, cf.p + lookAt) -- send a wall request to the game (possibly to another peer in multiplayer) local newWall = Instance.new("CFrameValue") newWall.Name = "NewWall" newWall.Value = cf newWall.Parent = game.Workspace.WallBuilder wait(wallWait) mouse.Icon = "rbxasset://textures\\ArrowCursor.png" enabled = true end function onSelected(mouse) print("Wall selected") mouse.Icon = "rbxasset://textures\\ArrowCursor.png" mouse.Button1Down:connect(function() onButton1Down(mouse) end) end script.Parent.Selected:connect(onSelected) true 0 1 true 0 0 0 1 0 0 0 0 -1 -0 1 0 ClassicTimebomb rbxasset://Textures/Bomb.png true false -0.5 0.5 0 0 -0.5 0.5 0 0 194 -16.3574963 4.5989399 -62.6951408 -0.999967933 -0.00797146745 -6.34748039e-006 -3.72146801e-012 -0.000796274282 0.999999642 -0.00797146931 0.999967694 0.000796248845 true true 0 true true false 0.5 0 0.300000012 -0.5 0.5 0 0 -0.5 0.5 0 0 false Handle 0 -0.5 0.5 0 0 0 0 0 -0.5 0.5 0 0 0 0 0 0 true 0 2 2 2 rbxasset://fonts/timebomb.mesh 5 Mesh 1 1 1 rbxasset://textures/bombtex.png 1 1 1 true false PlantBomb local bombScript = script.Parent.Bomb local Tool = script.Parent local Bomb = Tool.Handle function plant() local bomb2 = Instance.new("Part") local vCharacter = Tool.Parent local vPlayer = game.Players:playerFromCharacter(vCharacter) local spawnPos = Bomb.Position bomb2.Position = Vector3.new(spawnPos.x, spawnPos.y+3, spawnPos.z) bomb2.Size = Vector3.new(2,2,2) bomb2.BrickColor = BrickColor.new(21) bomb2.Shape = 0 bomb2.BottomSurface = 0 bomb2.TopSurface = 0 bomb2.Reflectance = 1 bomb2.Name = "TimeBomb" bomb2.Locked = true local creator_tag = Instance.new("ObjectValue") creator_tag.Value = vPlayer creator_tag.Name = "creator" creator_tag.Parent = bomb2 bomb2.Parent = game.Workspace local new_script = bombScript:clone() new_script.Disabled = false new_script.Parent = bomb2 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 Bomb.Transparency = 1.0 plant() wait(6) Bomb.Transparency = 0.0 Tool.Enabled = true end function onUnequipped() end Tool.Activated:connect(onActivated) Tool.Unequipped:connect(onUnequipped) true true Bomb local updateInterval = .4 local currentColor = 1 local colors = {26, 21} local ticksound = Instance.new("Sound") ticksound.SoundId = "rbxasset://sounds\\clickfast.wav" ticksound.Parent = script.Parent function update() updateInterval = updateInterval * .9 script.Parent.BrickColor = BrickColor.new(colors[currentColor]) currentColor = currentColor + 1 if (currentColor > 2) then currentColor = 1 end end function blowUp() local sound = Instance.new("Sound") sound.SoundId = "rbxasset://sounds\\Rocket shot.wav" sound.Parent = script.Parent sound.Volume = 1 sound:play() explosion = Instance.new("Explosion") explosion.BlastRadius = 12 explosion.BlastPressure = 1000000 -- these are really wussy units -- find instigator tag local creator = script.Parent:findFirstChild("creator") if creator ~= nil then explosion.Hit:connect(function(part, distance) onPlayerBlownUp(part, distance, creator) end) end explosion.Position = script.Parent.Position explosion.Parent = game.Workspace script.Parent.Transparency = 1 end function onPlayerBlownUp(part, distance, creator) if part.Name == "Head" then local humanoid = part.Parent.Humanoid tagHumanoid(humanoid, creator) end end function tagHumanoid(humanoid, creator) -- tag does not need to expire iff all explosions lethal if creator ~= nil then local new_tag = creator:clone() new_tag.Parent = humanoid end end function untagHumanoid(humanoid) if humanoid ~= nil then local tag = humanoid:findFirstChild("creator") if tag ~= nil then tag.Parent = nil end end end while updateInterval > .1 do wait(updateInterval) update() ticksound:play() end blowUp() wait(2) script.Parent:remove() true false MouseIcon local MOUSE_ICON = 'rbxasset://textures/GunCursor.png' local RELOADING_ICON = 'rbxasset://textures/GunWaitCursor.png' local Tool = script.Parent local Mouse = nil local function UpdateIcon() if Mouse then Mouse.Icon = Tool.Enabled and MOUSE_ICON or RELOADING_ICON end end local function OnEquipped(mouse) Mouse = mouse UpdateIcon() end local function OnChanged(property) if property == 'Enabled' then UpdateIcon() end end Tool.Equipped:connect(OnEquipped) Tool.Changed:connect(OnChanged) true 0 1 true -1 -0.75 0.25 0 0 1 0 1 -0 -1 0 -0 RocketLauncher rbxasset://Textures/Rocket.png true false Explosion -1 false rbxasset://sounds/collide.wav 1 true true Swoosh -1 false rbxasset://sounds/Rocket whoosh 01.wav 0.699999988 true false -0.5 0.5 0 0 -0.5 0.5 0 0 199 4.5 2.79999995 -1 -0 0 1 -0 1 0 -1 0 0 true true 0 true true false 0.5 2 0.300000012 -0.5 0.5 0 0 -0.5 0.5 0 0 false Handle 0.400000006 -0.5 0.5 0 0 0 0 0 -0.5 0.5 0 0 0 0 0 0 true 1 4 0.800000012 1 rbxasset://../../../shareddata/fonts/12221651.mesh 5 Mesh 0.75 0.75 0.75 rbxasset://../../../shareddata/textures/12224070.png 1 1 1 true false Local Gui local Tool = script.Parent; enabled = true function onButton1Down(mouse) if not enabled then return end enabled = false mouse.Icon = "rbxasset://textures\\GunWaitCursor.png" wait(7) mouse.Icon = "rbxasset://textures\\GunCursor.png" enabled = true end function onEquippedLocal(mouse) if mouse == nil then print("Mouse not found") return end mouse.Icon = "rbxasset://textures\\GunCursor.png" mouse.Button1Down:connect(function() onButton1Down(mouse) end) end Tool.Equipped:connect(onEquippedLocal) true false Server Launcher local Rocket = Instance.new("Part") local Tool = script.Parent Rocket.Locked = true Rocket.BackSurface = 3 Rocket.BottomSurface = 3 Rocket.FrontSurface = 3 Rocket.LeftSurface = 3 Rocket.RightSurface = 3 Rocket.TopSurface = 3 Rocket.Size = Vector3.new(1,1,4) Rocket.BrickColor = BrickColor.new(23) Tool.RocketScript:clone().Parent = Rocket Tool.Explosion:clone().Parent = Rocket Tool.Swoosh:clone().Parent = Rocket function fire(vTarget) local vCharacter = Tool.Parent; local vHandle = Tool:findFirstChild("Handle") if vHandle == nil then print("Handle not found") return end local dir = vTarget - vHandle.Position dir = computeDirection(dir) local missile = Rocket:clone() local pos = vHandle.Position + (dir * 6) --missile.Position = pos missile.CFrame = CFrame.new(pos, pos + dir) local creator_tag = Instance.new("ObjectValue") local vPlayer = game.Players:playerFromCharacter(vCharacter) if vPlayer == nil then print("Player not found") else if (vPlayer.Neutral == false) then -- nice touch missile.BrickColor = vPlayer.TeamColor end end creator_tag.Value =vPlayer creator_tag.Name = "creator" creator_tag.Parent = missile missile.RocketScript.Disabled = false missile.Parent = game.Workspace end function computeDirection(vec) local lenSquared = vec.magnitude * vec.magnitude local invSqrt = 1 / math.sqrt(lenSquared) return Vector3.new(vec.x * invSqrt, vec.y * invSqrt, vec.z * invSqrt) 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 fire(targetPos) wait(7) Tool.Enabled = true end script.Parent.Activated:connect(onActivated) true false RocketScript r = game:service("RunService") shaft = script.Parent position = shaft.Position script.Parent.Explosion.PlayOnRemove = true -- play explosion sound when projectile removed from game function fly() direction = shaft.CFrame.lookVector position = position + direction error = position - shaft.Position shaft.Velocity = 7*error end function blow() swoosh:stop() explosion = Instance.new("Explosion") explosion.Position = shaft.Position -- find instigator tag local creator = script.Parent:findFirstChild("creator") if creator ~= nil then explosion.Hit:connect(function(part, distance) onPlayerBlownUp(part, distance, creator) end) end explosion.Parent = game.Workspace connection:disconnect() wait(.1) shaft:remove() end function onPlayerBlownUp(part, distance, creator) if part.Name == "Head" then local humanoid = part.Parent.Humanoid tagHumanoid(humanoid, creator) end end function tagHumanoid(humanoid, creator) -- tag does not need to expire iff all explosions lethal if creator ~= nil then local new_tag = creator:clone() new_tag.Parent = humanoid end end function untagHumanoid(humanoid) if humanoid ~= nil then local tag = humanoid:findFirstChild("creator") if tag ~= nil then tag.Parent = nil end end end t, s = r.Stepped:wait() swoosh = script.Parent.Swoosh swoosh:play() d = t + 10.0 - s connection = shaft.Touched:connect(blow) while t < d do fly() t = r.Stepped:wait() end -- at max range script.Parent.Explosion.PlayOnRemove = false swoosh:stop() shaft:remove() true 0 Slingshot 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 SwAAAABJRU5ErkJggg== true false -0.5 0.5 0 0 -0.5 0.5 0 0 194 0 6.4000001 -8 1 0 0 0 1 0 0 0 1 true true 0 true true false 0.5 0 0.300000012 -0.5 0.5 0 0 -0.5 0.5 0 0 false Pellet 0 -0.5 0.5 0 0 0 0 0 -0.5 0.5 0 0 0 0 0 0 true 0 1 1 1 true PelletScript pellet = script.Parent damage = 8 function onTouched(hit) humanoid = hit.Parent:findFirstChild("Humanoid") if humanoid~=nil then tagHumanoid(humanoid) humanoid.Health = humanoid.Health - damage wait(2) untagHumanoid(humanoid) else damage = damage / 2 if damage < 0.1 then connection:disconnect() end end end function tagHumanoid(humanoid) -- todo: make tag expire local tag = pellet:findFirstChild("creator") if tag ~= nil then local new_tag = tag:clone() new_tag.Parent = humanoid end end function untagHumanoid(humanoid) if humanoid ~= nil then local tag = humanoid:findFirstChild("creator") if tag ~= nil then tag.Parent = nil end end end connection = pellet.Touched:connect(onTouched) r = game:service("RunService") t, s = r.Stepped:wait() d = t + 2.0 - s while t < d do t = r.Stepped:wait() end pellet.Parent = nil true false Slingshot print("Slingshot script loaded") bin = script.Parent VELOCITY = 85 -- constant function fire(mouse_pos) sound = Instance.new("Sound") sound.SoundId = "rbxasset://sounds\\Rubber band sling shot.wav" sound.Parent = script.Parent sound:play() -- find player's head pos local head = game.Players.LocalPlayer.Character:findFirstChild("Head") if head == nil then return end local dir = mouse_pos - head.Position dir = computeDirection(dir) local launch = head.Position + 5 * dir local delta = mouse_pos - launch local dy = delta.y local new_delta = Vector3.new(delta.x, 0, delta.z) delta = new_delta local dx = delta.magnitude local unit_delta = delta.unit -- acceleration due to gravity in RBX units local g = (-9.81 * 20) local theta = computeLaunchAngle( dx, dy, g) local vy = math.sin(theta) local xz = math.cos(theta) local vx = unit_delta.x * xz local vz = unit_delta.z * xz local missile = script.Parent.Pellet:clone() missile.Position = launch missile.Velocity = Vector3.new(vx,vy,vz) * VELOCITY print("Pos X:", launch.x, "Y:", launch.y, "Z:", launch.z) print("Vel X:", vx, "Y:", vy, "Z:", vz) missile.PelletScript.Disabled = false local creator_tag = Instance.new("ObjectValue") creator_tag.Value = game.Players.LocalPlayer creator_tag.Name = "creator" creator_tag.Parent = missile missile.Parent = game.Workspace end function computeLaunchAngle(dx,dy,grav) -- arcane -- http://en.wikipedia.org/wiki/Trajectory_of_a_projectile local g = math.abs(grav) local inRoot = (VELOCITY*VELOCITY*VELOCITY*VELOCITY) - (g * ((g*dx*dx) + (2*dy*VELOCITY*VELOCITY))) if inRoot <= 0 then return .25 * math.pi end local root = math.sqrt(inRoot) local inATan1 = ((VELOCITY*VELOCITY) + root) / (g*dx) local inATan2 = ((VELOCITY*VELOCITY) - root) / (g*dx) local answer1 = math.atan(inATan1) local answer2 = math.atan(inATan2) if answer1 < answer2 then return answer1 end return answer2 end function computeDirection(vec) local lenSquared = vec.magnitude * vec.magnitude local invSqrt = 1 / math.sqrt(lenSquared) return Vector3.new(vec.x * invSqrt, vec.y * invSqrt, vec.z * invSqrt) end enabled = true function onButton1Down(mouse) if not enabled then return end enabled = false mouse.Icon = "rbxasset://textures\\GunWaitCursor.png" -- find the best cf --local cf = mouse.Hit --local v = cf.lookVector local pos = mouse.Hit.p fire(pos) wait(.2) mouse.Icon = "rbxasset://textures\\GunCursor.png" enabled = true end function onSelected(mouse) print("slingshot selected") mouse.Icon = "rbxasset://textures\\GunCursor.png" mouse.Button1Down:connect(function() onButton1Down(mouse) end) end bin.Selected:connect(onSelected) true 0 Superball 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 AABJRU5ErkJggg== true false CannonScript print("Cannon script loaded") bin = script.Parent function fire(v) sound = Instance.new("Sound") sound.SoundId = "rbxasset://sounds\\short spring sound.wav" sound.Parent = script.Parent sound:play() local missile = Instance.new("Part") local spawnPos = game.Players.LocalPlayer.Character.PrimaryPart.Position spawnPos = spawnPos + (v * 5) missile.Position = spawnPos missile.Size = Vector3.new(2,2,2) missile.Velocity = v * 200 missile.BrickColor = BrickColor.random() -- BrickColor.new(26) missile.Shape = 0 missile.BottomSurface = 0 missile.TopSurface = 0 missile.Name = "Cannon Shot" missile.Elasticity = 1 missile.Reflectance = .2 missile.Friction = 0 local new_script = script.Parent.CannonBall:clone() new_script.Disabled = false new_script.Parent = missile local creator_tag = Instance.new("ObjectValue") creator_tag.Value = game.Players.LocalPlayer creator_tag.Name = "creator" creator_tag.Parent = missile missile.Parent = game.Workspace end enabled = true function onButton1Down(mouse) if not enabled then return end enabled = false mouse.Icon = "rbxasset://textures\\GunWaitCursor.png" -- find the best cf local cf = mouse.Hit local v = cf.lookVector fire(v) wait(2) mouse.Icon = "rbxasset://textures\\GunCursor.png" enabled = true end function onSelected(mouse) print("cannon selected") mouse.Icon = "rbxasset://textures\\GunCursor.png" mouse.Button1Down:connect(function() onButton1Down(mouse) end) end bin.Selected:connect(onSelected) true true CannonBall ball = script.Parent damage = 25 function onTouched(hit) local humanoid = hit.Parent:findFirstChild("Humanoid") if humanoid~=nil then tagHumanoid(humanoid) humanoid.Health = humanoid.Health - damage wait(2) untagHumanoid(humanoid) connection:disconnect() else damage = damage / 2 if damage < 0.1 then connection:disconnect() end end end function tagHumanoid(humanoid) -- todo: make tag expire local tag = ball:findFirstChild("creator") if tag ~= nil then local new_tag = tag:clone() new_tag.Parent = humanoid end end function untagHumanoid(humanoid) if humanoid ~= nil then local tag = humanoid:findFirstChild("creator") if tag ~= nil then tag.Parent = nil end end end connection = ball.Touched:connect(onTouched) r = game:service("RunService") t, s = r.Stepped:wait() d = t + 10.0 - s while t < d do t = r.Stepped:wait() end ball.Parent = nil true