Here’s your problem:
When you fire the RemoteEvent this way, your replacing “item” in the other script with “char”
Dont worry about sending over “char” in the first parameter. Just send:
Equip_Event:FireServer(tool, animation, frame)
When the ServerScript receives this request, it automatically sets a player value:
Event.OnServerEvent:Connect(function(player, item, animation, frame)