Highlight not highlighting

I am making a script where when I equip the tool it heals the player and highlights them for a split second, but it returns the error ‘Attempt to connect failed: Passed value is not a function’

script.Parent.Equipped:Connect(function()
	script.Script.Enabled = true
	local char = script.Parent.Parent
	local highlight = Instance.new('Highlight')
	highlight.FillColor = Color3.new(0, 1, 0.0823529)
	highlight.OutlineColor = Color3.new(0, 1, 0.0823529)
	highlight.FillTransparency = 0
	highlight.Enabled = true
	highlight.Parent = char
	script.Sound:Play()
	wait(0.2)
	highlight:Destroy()
	wait(0.2)
	script:Destroy()
end)

Which line of the ones you sent is erroring?

the line that’s erroring is on line 2

wait sorry i got the wrong error mb

Thought that that might have been the case!

r = game:service("RunService")


local damage = 0


local slash_damage = 1
local lunge_damage = 1.75

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("Zombie")
	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)
				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
	
	
	local force = Instance.new("BodyVelocity")
	force.Parent = Tool.Parent.HumanoidRootPart
	force.velocity = Vector3.new(0, 5, 0)
	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

	local 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)
Tool.Event.OnServerEvent:Connect(EventActive)


connection = sword.Touched:connect(blow)


the error is in this script on line 162

local hum = script.Parent.Parent:FindFirstChild('Humanoid')
hum.Health = hum.Health + 30
script:Destroy()

and this is the disabled script with an error saying ‘Attempt to index nil with ‘Health’’ on line 2

I can’t see any functions called EventActive in the code you sent.
It’s likely that you either have defined it as something else (such as a boolean value), or just haven’t defined it at all, causing the error

2 Likes

That error means that the humanoid doesn’t exist. People usually get around that by doing

if hum then
    -- damage them
end

Check that the path makes sense for accesing the player’s humanoid

2 Likes

right i forgot to remove that…

how about the highlight? it’s my main problem currently

You might want to try to get the player from character then get the character again from the player you got. (longer steps i know)

Here is an example of how you can do it:

tool.Equipped:Connect(function()
    local player = game.Players:GetPlayerFromCharacter(script.Parent.Parent)
    local Char = player.Character
end)
1 Like

Is it parented to the player’s character even?

is this inside a tool? you might wanna do a check for the tool being equipped

1 Like

what are you referring to by ‘it’?

are you sure the parent of the script is a tool? .Equipped is a tool event

1 Like

The highlight still isn’t showing, I don’t think its related to not being able to find the character as there are no errors now

The script’s parent is indeed a tool

I mean if the Highlight really is parented under the Character with appropriate properties when it’s needed

can you show the file structure