I am making a C4 tool, when you hold the mouse button in for five seconds it should place the bomb. When it places, it creates a clone of a C4 model that has a script in it that is supposed to start counting down when the remote event activates it. (I'm new to remote events and functions by the way so I don't exactly know what I am doing entirely.)
After it creates the placed c4 model, it is supposed to activate the remote event inside of it and then the C4 tool should disappear. The issue is that it gives me this error:

21:28:10.763 - Players.William12355.Backpack.C4.C4_Script:72: attempt to index local 'plantBombEvent' (a nil value) 21:28:10.763 - Stack Begin 21:28:10.764 - Script 'Players.William12355.Backpack.C4.C4_Script', Line 72 - global plantbomb 21:28:10.764 - Script 'Players.William12355.Backpack.C4.C4_Script', Line 38 21:28:10.765 - Stack End

Here is the script inside the C4 tool:

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local plantBombEvent = ReplicatedStorage:FindFirstChild("PlantBombEvent")
local Cnplnt =  script.Parent:WaitForChild("CanPlant")
local CanPlant = Cnplnt.Value
local held = false
local timeheld = 0
local UserInputService = game:GetService("UserInputService")
local pressed = UserInputService:IsMouseButtonPressed(Enum.UserInputType.MouseButton1)
local Tool = script.Parent
local a = game.Workspace.A_Site

Tool.Equipped:Connect(function(mouse)
	
end)
Tool.Activated:Connect(function(plantBombEvent)
	CanPlant = CheckCanPlant()
	if CanPlant == false then
		print("cannot plant here")
	else
		held = true	
		while held do 
			wait(1)
			if CanPlant == true then
				timeheld = timeheld + 1 -- adds 1 to ``timeheld`` while held = true
				print(timeheld)
				CanPlant = CheckCanPlant()
				game:GetService("UserInputService").InputEnded:connect(function(input) -- Fires when input ended
			    	print("ended")
					held = false
					CanPlant = false
				end)
				if timeheld == 5 then
					plantbomb(plantBombEvent)
				end
				
			else
				held = false
				timeheld = 0
				
			end
		end
	end
	
end)

function CheckCanPlant()
	local magnitude = (a.Position - Tool.Handle.Position).magnitude
	if a.Name == "A_Site" and magnitude < 30.000000000000 then
		CanPlant = true
		return CanPlant
	--elseif a.Name == "B_Site" and magnitude < 100 then
		--script.Parent.CanPlant.Value = true
		--print("Ys")
	else
		CanPlant = false
		return CanPlant
	end
end

function plantbomb(plantBombEvent)
	local plantloc = script.Parent
	plantloc = plantloc.Handle
	local Planted_C4 = game.Lighting.C4_Planted:Clone()
	Planted_C4.Parent = game.Workspace
	Planted_C4:MoveTo(plantloc.Position - Vector3.new(0,3.5,0))
	plantBombEvent:FireServer()
	Tool:Destroy()
 	script:Destroy()
end

Here is the script (a normal script) inside the placed C4 model (Which ends up in workspace after cloned and moved)


--Counts down and explodes, destroys itself, and launches the ghost win function when
--it reaches 0
local currtime = 10
local C4 = script.Parent
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local plantBombEvent = Instance.new("RemoteEvent", ReplicatedStorage)
plantBombEvent.Name = "PlantBombEvent"

local function plantBombFired()
	print("Yees")
	while script.Parent.Parent == game.Workspace do
		wait(1)
		print(currtime)
		currtime = currtime - 1
		if currtime == 0 then
			_G.Ghost_Win()
			C4:Destroy()
		end
	end
end

The C4 works fine, up until it has to call the remote event.

If someone could explain to me what I am doing wrong, it would be very helpful. I don't know how to reply to comments, I created my account here last night. Also this C4 is not a weapon for a game, it is a part of the game I should say. It is gonna be used like a c4 would in Search in Destroy type game modes.

3 comments

0

msybe ue a waitforchild instead of findfirstchild. the remote event might not be created before you reference it as a variable.

0

I made some grenades and a C4 and it worked. I dont remember exactly how I did it. If no one answers when I get home I will help you. I have a full script. Placing, countdown and exploding.

0

I replaced the waitforchild with findfirstchild, but now it is saying Infinite yield possible on 'ReplicatedStorage:WaitForChild("PlantBombEvent")'