Equipped = false
canHit = false
Damage = nil
MoveNum = 1
Moves = script.Parent.Moves
canActivate = false
Handle = script.Parent.Handle
allLoaded = false
PushBack = true
AmmoCap = 6
ReloadTime = 2
Cooltime = 0.5

function Load()
	--ANIMATIONS--
	script.Parent.Moves:WaitForChild("1")
	script.Parent.Moves:WaitForChild("2")
	script.Parent.Moves:WaitForChild("Reload")
	script.Parent.Moves:WaitForChild("Prepare")
	script.Parent.Moves:WaitForChild("Idle")
	script.Parent.Moves:WaitForChild("Equip")

	loadM1 = Moves[1]       
	loadM2 = Moves[2]           
	loadM3 = Moves.Reload
	loadM4 = Moves.Prepare
	loadIdle = Moves.Idle
	loadEquip = Moves.Equip
		
	M1 = Humanoid:LoadAnimation(loadM1)
	M2 = Humanoid:LoadAnimation(loadM2)
	Reload = Humanoid:LoadAnimation(loadM3)
	Prepare = Humanoid:LoadAnimation(loadM4)
	IdleAnim = Humanoid:LoadAnimation(loadIdle)
	EquipAnim = Humanoid:LoadAnimation(loadEquip)
	
	
	--SOUNDS--
	Sounds = script.Parent.Sounds
	Sounds:WaitForChild("1")
	Sounds:WaitForChild("2")
	Sounds:WaitForChild("Reload")
	Sounds:WaitForChild("Prepare")
	Sounds:WaitForChild("Idle")
	Sounds:WaitForChild("Equip")

	--EFFECTS--
	SmallExplosion = game.Lighting:WaitForChild("SmallExplosion")
	SBoom = SmallExplosion:Clone()
	
	
	S1 = Sounds["1"]
	S2 = Sounds["2"]
	Reload = Sounds.Reload
	Prepare = Sounds.Prepare
	IdleSound = Sounds.Idle
	EquipSound = Sounds.Equip
	
	--OTHER--
	Torso = game.Players.LocalPlayer.Character:WaitForChild("Torso")
	local function Start()
		IdleSound:Play()
		IdleAnim:Play()
	end
	EquipAnim:Play()
	EquipSound:Play()
	EquipSound.Ended:connect(Start)
	allLoaded = true
end

--------------------
function Move1()
	Damage = 10
	canHit = true
	canActivate = false
	print("Move1")
	M1:Play()
	S1:Play()
	wait(1)
	canActivate = true
	canHit = false
	IdleAnim:Play()
end


function Move2()
	Damage = 10
	canHit = true
	canActivate = false
	print("Move2")
	M2:Play()
	S2:Play()
	wait(1)
	canActivate = true
	canHit = false
	IdleAnim:Play()

end


function Reload()
	print("reloading")
end


function Prepare()
	print("prepared")
end
--------------------
function onEquipped()
	Equipped = true
	canHit = true
	Humanoid = game.Players.LocalPlayer.Character:WaitForChild("Humanoid")
	print("Equipped")
	Load()
	canActivate = true
end

function unEquipped()
	if allLoaded == true then
		IdleAnim:Stop()
		IdleSound:Stop()
		EquipAnim:Stop()
	end
end
--------------------

function onTouched(Hit)
	if canHit == true then
		if Hit.Parent ~= script.Parent then
			if Hit.Parent ~= Humanoid.Parent then
				otherTorso = Hit.Parent:WaitForChild("Torso")
				local hitHumanoid = Hit.Parent:WaitForChild("Humanoid")
				if hitHumanoid then
					hitHumanoid:TakeDamage(Damage)
					canHit = false
				end
				if PushBack == true then
					local BodyVelocity = Instance.new("BodyVelocity")
					BodyVelocity.Name = "PushBack"
					BodyVelocity.P = 2000
					BodyVelocity.maxForce = Vector3.new(BodyVelocity.P, BodyVelocity.P, BodyVelocity.P)
					BodyVelocity.velocity = (otherTorso.Position - Torso.Position).unit * 50
					BodyVelocity.Parent = otherTorso
					
					local ChatService = game:GetService("Chat")
					local dmgIndi = Instance.new("Part", game.Workspace)
					dmgIndi.Anchored = true
					dmgIndi.Transparency = 1
					dmgIndi.CanCollide = false
 					dmgIndi.Position = Vector3.new(otherTorso.Position.X, otherTorso.Position.Y+3, otherTorso.Position.Z)
					ChatService:Chat(dmgIndi, tostring(Damage), "Red")
										
					wait(0.5)
					BodyVelocity:Destroy()
					
					wait(0.5)
					dmgIndi:Destroy()
				else
					local ChatService = game:GetService("Chat")
					local dmgIndi = Instance.new("Part", game.Workspace)
					dmgIndi.Anchored = true
					dmgIndi.Transparency = 1
					dmgIndi.CanCollide = false
 					dmgIndi.Position = Vector3.new(otherTorso.Position.X, otherTorso.Position.Y+3, otherTorso.Position.Z)
					ChatService:Chat(dmgIndi, tostring(Damage), "Red")
										
					wait(1)
					dmgIndi:Destroy()
				end
			end
		end
	end
end


function Activated()
	if canActivate == true then
		if MoveNum == 1 then
			MoveNum = MoveNum + 1
			Move1()
		elseif MoveNum == 2 then
			MoveNum = 1
			Move2()
		end
	end
end

function onKeyPress(inputObject, gameProcessedEvent)
	if inputObject.KeyCode == Enum.KeyCode.R then
		Reload()								--I get an error here
	elseif 
		inputObject.KeyCode == Enum.KeyCode.E then
		Prepare()								--and here.
	end
end

script.Parent.Handle.Touched:connect(onTouched)
script.Parent.Activated:connect(Activated)
script.Parent.Equipped:connect(onEquipped)
script.Parent.Unequipped:connect(unEquipped)
game:GetService("UserInputService").InputBegan:connect(onKeyPress)

It doesn't run the function. Actually, the script is in a tool and I set it up when the user presses a certain button on the keyboard it runs the function. It works..but not when I have the tool equipped. Which is strange. Help?