Scripting HelpersARCHIVE
A little piece of Roblox history. Preserved for everyone, one question at a time.Read about the archive →
COMMUNITY QUESTION

How to fix weapon dealing damage without clicking?

I'm creating a game where you fling players off a map with pans. I recently got a pan tool that flings you in the toolbox and it is excellent! The only thing is that it flings players without clicking. Is there anything I can do to fix this?

Script:

r = game:service("RunService")

local damage = 0

local slash_damage = 0

local attacked = false

sword = script.Parent.Handle Tool = script.Parent

local SlashSound = Instance.new("Sound") SlashSound.SoundId = "http://www.roblox.com/asset/?id=169462048" SlashSound.Parent = sword SlashSound.Volume = 1

local UnsheathSound = Instance.new("Sound") UnsheathSound.SoundId = "http://www.roblox.com/asset/?id=449578741" UnsheathSound.Parent = sword UnsheathSound.Volume = 1 UnsheathSound.PlaybackSpeed = 0.8

function blow(hit) 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:TakeDamage(damage)

      if attacked == false then
          attacked = true
              
              hit.Parent.Torso.CFrame = hit.Parent.Torso.CFrame * >CFrame.Angles(math.rad(180),0,0)
              local knock = Instance.new("BodyThrust")
              knock.Name = "Knock"
              knock.force = Vector3.new(0,0,10000)
              knock.Parent = hit.Parent.Torso
              game:GetService("Debris"):AddItem(knock, 0.5)
              
              script.Parent.Handle.Hit:Play()
          end
          
          wait(0.6)
          attacked = false
          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 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

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

attack()

wait(0.6)

Tool.Enabled = true end

function onEquipped() local plr = game.Players.LocalPlayer local humanoid = plr.Character.Humanoid

UnsheathSound:play() end

script.Parent.Activated:connect(onActivated) script.Parent.Equipped:connect(onEquipped)

connection = sword.Touched:connect(blow)

1 comment

1

Codeblock maybe plesae thank you?

1 answer

just add a boolean value that is false when your pan isnt activated and true when it is activated and add an if statement saying if its true then it will do its thing

1 comment

0

can you maybe send a script of what it would look like?

This discussion is preserved as it was. New answers, comments, and votes are closed.