NPCs spawned on the client cannot equip tools

NPCs spawned on the client cannot equip tools. The tools attempting to be equipped appear correctly as children of the NPCs but the tool handles themselves fall to the ground instead of being held in their hands. This occurs both when parenting the tool to the NPC and when using the Humanoid:EquipTool() function.

Reproduction Steps

NPCToolEquipTest.rbxl (85.8 KB)

  1. Using the attached project file, hit Play.
  2. You will see 4 NPCs spawn. The two NPCs on the left are being spawned on the client. The two on the right are being spawned on the server.
  3. Note that the two NPCs spawned on the client have tool children, but the tool handles appear on the ground in front of them. One tool is being parented directly to the NPC, the other is using Humanoid:EquipTool().
  4. Note that the two NPCs spawned on the server have their tools correctly equipped.

Expected Behavior
NPCs spawned on the client should be able to equip tools exactly as NPCs spawned on the server do.

Actual Behavior
NPCs spawned on the client cannot equip tools properly. The tools appear as children of the NPC but the tool handles are not attached and appear on the ground in front of the NPC.

Issue Area: Tools
Issue Type: Client behavior differs from server behavior
Impact: High
Frequency: 100%

We’ve filed a ticket to our internal database, and we’ll follow up when we have an update!

Thanks for the report!

2 Likes

Tool does not currently support client-only instances; it assumes that the server will handle equipping for security reasons. Player characters are a special case. You have probably already considered this, but you could manually weld the tool to the RightHand part to emulate the Tool’s behavior. Out of curiosity, what is your use case for client-side NPCs? Are these characters that will only be visible by the local player, or is this part of an optimization to reduce server load?

2 Likes

It’s both. The game is similar to Pet Simulator X but instead of breaking open chests and piles of coins the player is fighting NPCs. The NPCs are created on the client so that players don’t have to compete for NPCs to fight. There are also lots of different areas filled with NPCs and for performance reasons only the player’s current area is loaded, including the environments and NPCs in that area.

If having client-side NPCs not able to equip tools is intentional then I’ll just use welds and this topic can probably be closed. Thank you!

2 Likes

Just stumbled across this. Our use case is to showcase a weapon, but using the local player’s appearance.
Because the avatar appearance depends on the local player, the avatar is spawned by client.
Then we will have to equip the weapon (tool).

So just find out the EquipTool in this case merely parented the weapon into the avatar, and nothing else.