so i’ve wanted to make a radio giver which is gives item upon pressing F, removes radio prop on client and gives player an actual tool. then upon player’s death the radio prop comes back in place.
im having troubles with tool give out and the radio prop’s comeback on death. tried searching for the answer here on forum but i couldn’t find anything that would help.
here’s the localscript which handles radio prop and gives player name to client
local UserInputService = game:GetService("UserInputService")
local ZePlayer = game.Players.LocalPlayer
local ZeMouse = ZePlayer:GetMouse()
local ZeBody = ZePlayer.Character
local ZeHeart = ZeBody.Humanoid
local alsoathing = nil
local clientcooldown = false
local Tower = workspace.Observation:WaitForChild("RadioGiver")
local radio = Tower:FindFirstChild("Handle")
local NOTIFICATION2 = Tower:WaitForChild("RadioGUIPart"):WaitForChild("BillboardGui");
-- skipping part with F prompt since there's no problems with it
UserInputService.InputBegan:Connect(function(p1, p2)
if p1.KeyCode == Enum.KeyCode.F and thing ~= nil and not p2 and not ZeBody:FindFirstChildOfClass("Tool") then
if alsoathing == "radio" and clientcooldown == false and NOTIFICATION2.Enabled == true then
clientcooldown = true
ZeHeart.WalkSpeed = 0
wait();
Tower.Radio:FireServer(ZePlayer.Name);
wait(0.3);
if radio and radio ~= nil then
radio.Parent = game.ReplicatedStorage
Tower:FindFirstChild("RadioGUIPart").Parent = game.ReplicatedStorage
end
ZeHeart.WalkSpeed = 16
wait(0.3);
clientcooldown = false
return
end
end
end)
while wait() do
workdarn()
end
ZeHeart.Died:Connect(function() -- this doesn't work for some reason and idk why
if game.ReplicatedStorage:FindFirstChild("Handle") then
local rad = game.ReplicatedStorage:FindFirstChild("Handle")
rad.Parent = Tower
local tow = game.ReplicatedStorage:FindFirstChild("RadioGUIPart")
tow.Parent = Tower
end
end)
and the server script which gives out radio
local repl = game:GetService("ReplicatedStorage")
local rad = repl:WaitForChild("Radio")
local radio = script.Parent:WaitForChild("Radio")
radio.OnServerEvent:Connect(function(name)
local player = game.Players:WaitForChild(name)
print("given out to ", name)
local rad3 = rad:Clone()
local shit = player:WaitForChild("Backpack")
rad3.Parent = shit
end)
Server script gives out error “Infinite yield possible on ‘Players:WaitForChild(“Instance”)’ - Line 6” which i dont know how to fix. It should search for actual player name in Game.Players, however for some reason it searches for “Instance”.