:WaitForChild() Infinite Yield on Existing Instance

I understand that Infinite yield possible.. prints after the script is unable to find the instance after X seconds (5 as default).

Knowing so, have you confirmed that the instance has been found even after the timeout? If it is visible on the server then it must exist, right. Have you also confirmed that there is no client code tampering with the existence of the object, like destroying it?

Also, make sure to have :FindFirstChildOfClass so it can access to the Humanoid.

local Player = game:GetService("Players").LocalPlayer
local Character = Player.Character or Player.CharacterAdded:Wait()
local Humanoid = Character:FindFirstChildOfClass("Humanoid")
local hrp = Character:WaitForChild("HumanoidRootPart")

local stand = Character:WaitForChild("Stand")
local StandRightArm = stand:WaitForChild("Stand Right Arm")

So you basicaly just have to index a wait number next to the WaitForChild, so it will return nil if not found and then avoid infinity yield.

local stand = Character:WaitForChild("Stand" ,30)

Also, as your object is inside another thing, you have to do check if this “thing” is found before to search something inside it, because it can return an error or an infinity yield.
That’s what the and do there, it do the same than If thing then, it is just faster.

local StandRightArm = stand and stand:WaitForChild("Stand Right Arm" ,30)

So there is the full script

local PlayerService = game:GetService("Players")

local Player = PlayerService.LocalPlayer
local Character = Player.Character or Player.CharacterAdded:Wait()

local Humanoid = Character and Character:WaitForChild("Humanoid" ,30)
local hrp = Character and Character:WaitForChild("HumanoidRootPart" ,30)
local stand = Character and Character:WaitForChild("Stand" ,30)

local StandHead = stand and stand:WaitForChild("Stand Head" ,30)
local StandRightArm = stand and stand:WaitForChild("Stand Right Arm" ,30)
local StandLeftArm = stand and stand:WaitForChild("Stand Left Arm" ,30)