Cant make viewport frame humanoid equip tools

tried using humanoid:EquipTool(Tool) but it doesnt work
i tried making right grip artifically and it wont work
tried welding manually but wont work either

Try putting WorldModel instance in a ViewportFrame as a parent of your character

Can you send the script you are using to try and do this

i already am
with normal models you cant even add basic accessories
but in both cases, giving the humanoid a tool has the same effects

local Rig:WorldModel = --this part isnt important
local Tool = --this part isnt  important
Rig:FindFirstChild("Humanoid"):EquipTool(Tool)

Why are you type checking the Rig as a WorldModel

im not
i just wanted to show you that im using a world modeel instead of a normal model for the rig

Alright. Anyways I experimented a little with this and yes running Humanoid:EquipTool() on a Rig inside a ViewportFrame doesn’t work.
Instead of trying to equip the tool to the Rig after it’s parented under the ViewportFrame, use a version of the Rig that already has the tool parented to it instead. This worked for me

actually nvm i cant clone to rig to workspace then put it in viewport frame back cuz then it would dissepear for a few seconds which would look pretty off

What do you mean ‘‘a few seconds’’? The entire process should take miliseconds to process.
And also the Rig can just have the tool already equipped from the very start no?

try detecting when your player is character equips a tool then clone a tool to the viewport frame character

the rigs appearence changes depending on the player’s character
its basically a showcase of you

(its for a custom inventory system where a rig copies your character and whatever you have on your equipped slots the rig will have on himself to give you an idea of what it will look like)

I have done something kinda similar to this before, and I just opted to entirely delete and clone a new character model everytime since you can’t directly handle the tools of a viewport frame character.
Here is the code I used, you can probably take something from it:

local localplayer = game.Players.LocalPlayer

local Character = localplayer.Character or localplayer.CharacterAdded:Wait()
local WorldModel = script.Parent.ViewportFrame.WorldModel

local function UpdateViewportCharacter()
	for _, child in WorldModel:GetChildren() do
		if child:IsA('Model') then
			child:Destroy()
		end
	end
	
	local NewChar = Character:Clone()
	
	for _, descendant in NewChar:GetDescendants() do
		if descendant:IsA('BaseScript') and descendant.Name~='Animate' then
			descendant:Destroy()--Clear scripts except for animation script
		end
	end
	
	NewChar.Parent = WorldModel
	NewChar.PrimaryPart = NewChar.HumanoidRootPart
	
	WorldModel.PrimaryPart = NewChar.HumanoidRootPart
	
	local Position = Vector3.new(0,2,0)
	local Orientation = Vector3.new(5,0,0)
	
	WorldModel.PrimaryPart.CFrame = CFrame.new(Position) * CFrame.Angles(math.rad(Orientation.X),math.rad(Orientation.Y),math.rad(Orientation.Z))
end

script.Parent:GetPropertyChangedSignal('Visible'):Connect(function()
	if script.Parent.Visible then
		UpdateViewportCharacter()
	end
end)

UpdateViewportCharacter()

Was able to make my own solution,
creating a weld and setting Part0 to right arm and setting part1 to Handle (tool’s handle)
then setting C0.Position to 0,-1,0 and its rotation to -90,0,0
then setting C1 to Tool.Grip fully recreates the “RightGrip” that appears when you equip a tool

you can use this to crate an artifical weld which should make the humanoid handle the tool
i will test this now and i will mark it as solution if it does actually work

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.