Tool is working mostly as expected, however in-game, not in studio, the tool will appear inside the player’s arm, seen below. Have zero clue why this happens, no errors, script works as intended and was fine up until testing in-game. Is this some sort of bug or did I do something wrong? Couldn’t find any posts related to this problem, either.
Also, first time posting on this topic, please tell me if I’m doing something wrong.
Try using a ToolGripEditor plugin, and change how the player holds the tool.
maybe its client side if so you should use remote event
Everything including animations are server sided
Have you tried to animate tool grip to motor6D?
That’s what I’m using currently, motor6ds
Ok then let me see your code so I can see some issue
local Tool = script.Parent
local Player = Tool.Parent.Parent
local Character = Player.Character or Player.CharacterAdded:wait()
local repStorage = game:GetService("ReplicatedStorage")
local debounce = false
local equipped = false
local IgnoreList = {
Character, Character:GetDescendants()
}
local serverscriptservice = game:GetService("ServerScriptService")
local RaycastHitbox = require(serverscriptservice.RaycastHitbox)
local Hitbox = RaycastHitbox:Initialize(Tool.BodyAttach, IgnoreList)
local HitboxObject = RaycastHitbox:GetHitbox(Tool.BodyAttach)
HitboxObject:DebugMode(false)
local cameraevent = repStorage.shakecamera
Tool.Equipped:Connect(function()
local Motor6D = Instance.new("Motor6D",Character.RightHand)
Motor6D.Name = "RightMotor6D"
Motor6D.Part0 = Character.RightHand
Motor6D.Part1 = Tool.BodyAttach
activate = script.Parent.Parent.Humanoid:LoadAnimation(script.Activate)
idle2 = script.Parent.Parent.Humanoid:LoadAnimation(script.Idle2)
idle = script.Parent.Parent.Humanoid:LoadAnimation(script.Idle)
idle:Play()
Character:WaitForChild("Humanoid").WalkSpeed = 13
Character.Humanoid.JumpHeight = 0
while equipped == true do
wait(15)
if equipped == false then
activate:Stop()
idle:Stop()
idle2:Stop()
Hitbox:HitStop()
Character.Humanoid.WalkSpeed = 16
Character.Humanoid.JumpHeight = 7.2
Character.Humanoid.AutoRotate = true
debounce = false
return
end
idle:Stop()
idle2:Play()
wait(3.26)
if equipped == false then
activate:Stop()
idle:Stop()
idle2:Stop()
Hitbox:HitStop()
Character.Humanoid.WalkSpeed = 16
Character.Humanoid.JumpHeight = 7.2
Character.Humanoid.AutoRotate = true
debounce = false
return
end
idle2:Stop()
idle:Play()
end
end)
Tool.Activated:Connect(function()
if debounce == false then
debounce = true
Character.Humanoid.WalkSpeed = 10
activate:Play()
cameraevent:FireClient(Player, 3)
wait(0.87)
Hitbox:HitStart()
script.Parent.slashsound:Play()
wait(0.18)
Character.Humanoid.WalkSpeed = 0
Character.Humanoid.AutoRotate = false
wait(0.05)
script.Parent.impactsound:Play()
cameraevent:FireAllClients(1)
local Part2 = repStorage.Part2:Clone()
Part2.Parent = workspace
local offset = Vector3.new(0, -3, -6)
Part2.CFrame = Character.HumanoidRootPart.CFrame*CFrame.new(offset)
Part2.Orientation = Vector3.new(0, 90, -90)
wait(0.19)
script.Parent.pullsound:Play()
wait(0.4)
script.Parent.pullsound:Play()
wait(0.4)
Hitbox:HitStop()
wait(0.16)
script.Parent.pulloutsound:Play()
Character.Humanoid.WalkSpeed = 10
Character.Humanoid.AutoRotate = true
wait(0.87)
cameraevent:FireClient(Player, 4)
Character.Humanoid.WalkSpeed = 13
debounce = false
end
end)
Hitbox.OnHit:Connect(function(touch)
cameraevent:FireAllClients(2)
script.Parent.bruhsound:Play()
if touch.Name == "Handle" or touch.Name == "BodyAttach" then
if touch.Parent.Parent:FindFirstChild("HumanoidRootPart") == nil then return end
HRP = touch.Parent.Parent:FindFirstChild("HumanoidRootPart")
else
if touch.Parent:FindFirstChild("HumanoidRootPart") == nil then return end
HRP = touch.Parent:FindFirstChild("HumanoidRootPart")
end
local Humanoid = HRP.Parent:FindFirstChild("Humanoid")
local BodyVelocity = Instance.new("BodyVelocity", HRP)
BodyVelocity.Velocity = Vector3.new(math.random(-5000, 5000), math.random(-5000, 5000), math.random(-5000, 5000))
BodyVelocity.MaxForce = Vector3.new(math.huge, math.huge, math.huge)
wait(0.5)
Humanoid:TakeDamage(1000)
end)
Tool.Unequipped:Connect(function()
if Character.RightHand:FindFirstChild("RightMotor6D") then
Character.RightHand.RightMotor6D:Destroy()
end
idle:Stop()
idle2:Stop()
Character.Humanoid.WalkSpeed = 16
Character.Humanoid.JumpHeight = 7.2
equipped = false
end)
Here’s a really good plugin I use for this. Tool Grip Editor - Roblox Just a few Robux but totally worth it.
it should be
local Tool = script.Parent
local Player = nil
local Character = nil
local repStorage = game:GetService("ReplicatedStorage")
local debounce = false
local equipped = false
local IgnoreList = {
Character, Character:GetDescendants()
}
local serverscriptservice = game:GetService("ServerScriptService")
local RaycastHitbox = require(serverscriptservice.RaycastHitbox)
local Hitbox = RaycastHitbox:Initialize(Tool.BodyAttach, IgnoreList)
local HitboxObject = RaycastHitbox:GetHitbox(Tool.BodyAttach)
HitboxObject:DebugMode(false)
local cameraevent = repStorage.shakecamera
Tool.Equipped:Connect(function()
Character = Tool.Parent
Player = game.Players:GetPlayerFromCharacter(Character)
local Motor6D = Instance.new("Motor6D",Character.RightHand)
Motor6D.Name = "RightMotor6D"
Motor6D.Part0 = Character.RightHand
Motor6D.Part1 = Tool.BodyAttach
activate = script.Parent.Parent.Humanoid:LoadAnimation(script.Activate)
idle2 = script.Parent.Parent.Humanoid:LoadAnimation(script.Idle2)
idle = script.Parent.Parent.Humanoid:LoadAnimation(script.Idle)
idle:Play()
Character:WaitForChild("Humanoid").WalkSpeed = 13
Character.Humanoid.JumpHeight = 0
while equipped == true do
wait(15)
if equipped == false then
activate:Stop()
idle:Stop()
idle2:Stop()
Hitbox:HitStop()
Character.Humanoid.WalkSpeed = 16
Character.Humanoid.JumpHeight = 7.2
Character.Humanoid.AutoRotate = true
debounce = false
return
end
idle:Stop()
idle2:Play()
wait(3.26)
if equipped == false then
activate:Stop()
idle:Stop()
idle2:Stop()
Hitbox:HitStop()
Character.Humanoid.WalkSpeed = 16
Character.Humanoid.JumpHeight = 7.2
Character.Humanoid.AutoRotate = true
debounce = false
return
end
idle2:Stop()
idle:Play()
end
end)
Tool.Activated:Connect(function()
if debounce == false then
debounce = true
Character.Humanoid.WalkSpeed = 10
activate:Play()
cameraevent:FireClient(Player, 3)
wait(0.87)
Hitbox:HitStart()
script.Parent.slashsound:Play()
wait(0.18)
Character.Humanoid.WalkSpeed = 0
Character.Humanoid.AutoRotate = false
wait(0.05)
script.Parent.impactsound:Play()
cameraevent:FireAllClients(1)
local Part2 = repStorage.Part2:Clone()
Part2.Parent = workspace
local offset = Vector3.new(0, -3, -6)
Part2.CFrame = Character.HumanoidRootPart.CFrame*CFrame.new(offset)
Part2.Orientation = Vector3.new(0, 90, -90)
wait(0.19)
script.Parent.pullsound:Play()
wait(0.4)
script.Parent.pullsound:Play()
wait(0.4)
Hitbox:HitStop()
wait(0.16)
script.Parent.pulloutsound:Play()
Character.Humanoid.WalkSpeed = 10
Character.Humanoid.AutoRotate = true
wait(0.87)
cameraevent:FireClient(Player, 4)
Character.Humanoid.WalkSpeed = 13
debounce = false
end
end)
Hitbox.OnHit:Connect(function(touch)
cameraevent:FireAllClients(2)
script.Parent.bruhsound:Play()
if touch.Name == "Handle" or touch.Name == "BodyAttach" then
if touch.Parent.Parent:FindFirstChild("HumanoidRootPart") == nil then return end
HRP = touch.Parent.Parent:FindFirstChild("HumanoidRootPart")
else
if touch.Parent:FindFirstChild("HumanoidRootPart") == nil then return end
HRP = touch.Parent:FindFirstChild("HumanoidRootPart")
end
local Humanoid = HRP.Parent:FindFirstChild("Humanoid")
local BodyVelocity = Instance.new("BodyVelocity", HRP)
BodyVelocity.Velocity = Vector3.new(math.random(-5000, 5000), math.random(-5000, 5000), math.random(-5000, 5000))
BodyVelocity.MaxForce = Vector3.new(math.huge, math.huge, math.huge)
wait(0.5)
Humanoid:TakeDamage(1000)
end)
Tool.Unequipped:Connect(function()
if Character.RightHand:FindFirstChild("RightMotor6D") then
Character.RightHand.RightMotor6D:Destroy()
end
idle:Stop()
idle2:Stop()
Character.Humanoid.WalkSpeed = 16
Character.Humanoid.JumpHeight = 7.2
equipped = false
end)
This is on Roblox’s end. Sadly, no one has found a fix (atleast i think)
What was changed exactly? I don’t see much of a difference.
Really? I was hoping this wasn’t the case, should I just wait and see?
here what I changed:
Tool.Equipped:Connect(function()
Character = Tool.Parent
Player = game.Players:GetPlayerFromCharacter(Character)
Yes :/.
The problem is not that I can’t get the animations to play and replicate, they play fine and everything functions perfectly, even the weapon’s hitbox is still exactly the same, even though it’s supposedly on a different position for all the clients.
I’ll just wait it out, I guess. Have you experienced a similar problem like this?
Yes, I animate tool guns that use motor6d grips like this, always happens.