Sending Info An A Just Instantiated Part

Hello, I am fairly new to coding and I am having a particular issue with sending information to another script.

In my game, there is a tool that when activated fires an event which will cause a server script to start running. This script will spawn in 3 objects, with a small wait period in between each instantiation. In replicated storage I have what is going to be spawned in, as a model containing 2 relevant parts. The visible effect of the attack, as well as the hitbox of the attack.

The issue is that I am trying to handle the hit detection with a script that is a child of the part created by the earlier script. I also only want of the 3 objects to interact with how ever many players it hits 3 times (1 per each object). To do this, I have a script that creates a table and adds a players name to the table once they have been hit, and if they get hit again by the same object, the script won’t run as it will see they are in the table.

The main issue with this is that I cannot find a good way to tell each of the objects to start off by adding the player that used the tool to the blacklist right away, so that the player can’t get hit by their own attack.

I have been stuck on this issue for quite a while and the only real solution I have been able to come up with is having the script that is a child of the 3 objects also receive the player’s name from the event that the tool fires, however this did not resolve my issue because at the time the event is fired (when the tool is clicked), the 3 objects have not been cloned yet, so they never can tell that the event has been fired in the first place.

Here is the code from the script that is the child of each object

--the spooky player blacklist!
local blacklist = {};

-- part you want the player to touch
local part = script.Parent

--player service
local players = game:GetService("Players");

--this function just uses a for each loop to check for a specific player in the blacklist
function foundInList(player)
	for _,target in ipairs(blacklist) do
		if target == player then
			return true;
		end
	end
	return false;
end

--part touched event
part.Touched:connect(function(hit)
	--check if the part that touched the part..? is a player
	local player = players:GetPlayerFromCharacter(hit.Parent);

	if player then

		--check for the player in the list
		if not foundInList(player) then
			--add them to the list, because they were not in it
			table.insert(blacklist,player);
			--do stuff here
			local hum = hit.Parent:WaitForChild("Humanoid")
			hum:TakeDamage(20)
			print("Player touched part!.. for the last time!")
		end
	end

end);

Here is an image of what I mean when I say that the above script is a child of the object in case my wording is confusing.
Capture

So my main reason for posting this is I am wondering if there is a way to accomplish my goal of letting the script that is a child of the object know who has used the tool using the method I already have planned out, or if there is a better way to go about this entirely.

TL:DR Tool fires event which causes server script to spawn items from rep storage which each contain their own scripts that have a table of player’s names that have already been hit by the attack. I wish to add the player who used to the tool to that list so they cannot get hit by their own attack.

Thank you so much for taking the time to read this, and any feedback is greatly appreciated. Please let me know if you need more clarification about the issue I am having here.

(Also thank you for baring with me, as this is my first ever post.)