com base nesses scripts , modfique para clonar um mesh  chamado "Giz" que tem um Motor6d chamado "Rightand" dentro dele, na righthand do player, ao inves de clonar um acessorio. localscript : local player = game.Players.LocalPlayer
local TextBox = script.Parent -- Adjust this if the script isn't a direct child of the TextBox

-- Replace "AnimationIDHere" with your actual animation ID
local animationId = "rbxassetid://112153289996608"
local Animation = Instance.new("Animation")
Animation.AnimationId = animationId

-- Variables to manage animation and input
local animationTrack
local keysPressed = 0 -- Counter for keys currently pressed (PC)
local debounce = false
local isAnimationPlaying = false

local RunService = game:GetService("RunService")
local lastTextChangeTime = nil
local typingStopDelay = 0.75 -- Time after which we consider typing has stopped (mobile)

-- RemoteEvent for accessory management
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local AccessoryEvent = ReplicatedStorage:WaitForChild("AccessoryEvent")
local lastAccessoryEventTime = 0
local accessoryEventCooldown = 0.5 -- Send typing notification at most every 0.5 seconds

local function playAnimation()
	if not isAnimationPlaying then
		-- Play the animation
		local character = player.Character or player.CharacterAdded:Wait()
		local humanoid = character:FindFirstChildOfClass("Humanoid")
		if humanoid then
			animationTrack = humanoid:LoadAnimation(Animation)
			animationTrack:Play()
			isAnimationPlaying = true
		end
	end
end

local function stopAnimation()
	if isAnimationPlaying and animationTrack then
		animationTrack:Stop()
		isAnimationPlaying = false
	end
end

-- Function to handle input began in the TextBox (for PC)
local function onInputBegan(input)
	if input.UserInputType == Enum.UserInputType.Keyboard then
		keysPressed = keysPressed + 1
		if not debounce then
			debounce = true
			playAnimation()

			-- Send typing notification to server with cooldown
			if tick() - lastAccessoryEventTime >= accessoryEventCooldown then
				AccessoryEvent:FireServer("Typing")
				lastAccessoryEventTime = tick()
			end

			-- Debounce timer of 0.1 seconds
			task.delay(0.75, function()
				debounce = false
			end)
		end
	end
end

-- Function to handle input ended in the TextBox (for PC)
local function onInputEnded(input)
	if input.UserInputType == Enum.UserInputType.Keyboard then
		keysPressed = math.max(keysPressed - 1, 0)
		if keysPressed == 0 then
			stopAnimation()
		end
	end
end

-- Connect for keyboard input in the TextBox (for PC)
TextBox.InputBegan:Connect(onInputBegan)
TextBox.InputEnded:Connect(onInputEnded)

-- Connect to Text changes in the TextBox (for mobile)
TextBox:GetPropertyChangedSignal("Text"):Connect(function()
	if TextBox:IsFocused() then
		lastTextChangeTime = tick()
		if not isAnimationPlaying then
			playAnimation()
		end

		-- Send typing notification to server with cooldown
		if tick() - lastAccessoryEventTime >= accessoryEventCooldown then
			AccessoryEvent:FireServer("Typing")
			lastAccessoryEventTime = tick()
		end
	end
end)

-- Use Heartbeat to check for typing stop on mobile
RunService.Heartbeat:Connect(function(step)
	if lastTextChangeTime and (tick() - lastTextChangeTime) >= typingStopDelay then
		stopAnimation()
		lastTextChangeTime = nil
	end
end)

-- Also handle focus lost to stop the animation
TextBox.FocusLost:Connect(function()
	stopAnimation()
	lastTextChangeTime = nil
	keysPressed = 0
end)
.   servescript : local ReplicatedStorage = game:GetService("ReplicatedStorage")
local AccessoryEvent = ReplicatedStorage:WaitForChild("AccessoryEvent")
local Players = game:GetService("Players")
local ServerStorage = game:GetService("ServerStorage")

local AccessoriesFolder = ServerStorage:WaitForChild("Accessories")
local accessoryTemplate = AccessoriesFolder:WaitForChild("Giz")

local playerData = {} -- Table to store per-player data

-- Function to equip accessory to player
local function equipAccessory(player)
	local character = player.Character
	if character then
		local accessoryClone = accessoryTemplate:Clone()
		accessoryClone.Parent = character
		return accessoryClone
	end
	return nil
end

-- Function to handle typing events from the client
local function onAccessoryEvent(player, action)
	if action == "Typing" then
		local data = playerData[player] or {}
		playerData[player] = data

		data.lastTypingTime = tick()

		if not data.accessory then
			data.accessory = equipAccessory(player)
			data.isAccessoryEquipped = true
		end

		-- Start timer coroutine if not already running
		if not data.timerCoroutineRunning then
			data.timerCoroutineRunning = true
			coroutine.wrap(function()
				while data.isAccessoryEquipped do
					local timeSinceLastTyping = tick() - data.lastTypingTime
					if timeSinceLastTyping >= 5 then
						-- Remove accessory
						if data.accessory and data.accessory.Parent then
							data.accessory:Destroy()
						end
						data.accessory = nil
						data.isAccessoryEquipped = false
						data.timerCoroutineRunning = false
						break
					else
						-- Wait for the remaining time
						wait(5 - timeSinceLastTyping)
					end
				end
			end)()
		end
	end
end

-- Connect the event
AccessoryEvent.OnServerEvent:Connect(onAccessoryEvent)

-- Clean up when players leave
Players.PlayerRemoving:Connect(function(player)
	local data = playerData[player]
	if data then
		-- Clean up accessory
		if data.accessory and data.accessory.Parent then
			data.accessory:Destroy()
		end
		playerData[player] = nil
	end
end)