I have searched the internet for over an hour now and, sadly, I still cant find a solution.
I am working on a game and I have to create a stand, this stand is a machine. That is why I need it to run with the player!
I have attempted to use MoveDirection (if humanoid.MoveDirection ~= Vector3.new(0,0,0) then) but if the player switches directions the animation plays again. I have tried humanoid.Running but this fires it multiple times, and, of course, also plays again.
What do I mean by play again? Well, while its playing the run animation, it immediately skips to the beginning.
I have a Server Script and Local Script.
Local Script:
local Player = game.Players.LocalPlayer
local rp = game:GetService("ReplicatedStorage")
local Stand = rp:WaitForChild("Stand5Remotes"):WaitForChild("Stand")
local UIS = game:GetService("UserInputService")
local debounce = false
local active = false
UIS.InputBegan:Connect(function(input,isTyping)
if isTyping then
return
elseif input.KeyCode == Enum.KeyCode.Q then
if debounce == false and active == false then
debounce = true
Stand:FireServer(active)
end
end
end)
UIS.InputBegan:Connect(function(input,isTyping)
if isTyping then
return
elseif input.KeyCode == Enum.KeyCode.Q then
if debounce == true and active == false then
active = true
Stand:FireServer(active)
end
end
end)
Stand.OnClientEvent:Connect(function()
wait(1)
debounce = false
active = false
end)
Server Script:
local rp = game:GetService("ReplicatedStorage")
local Stand = rp:WaitForChild("Stand5Remotes"):WaitForChild("Stand")
local TweenService = game:GetService("TweenService")
Stand.OnServerEvent:Connect(function(player,active)
if active == false then
local Character = player.Character
local Humanoid = Character:WaitForChild("Humanoid")
local HumanoidRP = Character:WaitForChild("HumanoidRootPart")
local Folder = Instance.new("Folder",workspace)
Folder.Name = player.Name.." Stand"
local Mystand = script:WaitForChild("Dummy"):Clone()
Mystand.Parent = Folder
for _, i in pairs(Mystand:GetDescendants()) do
if i.Name == "Window" and i:IsA("BasePart") then
i.Transparency = 0.85
else
if i:IsA("BasePart") then
i.Transparency = 1
TweenService:Create(i,TweenInfo.new(.5,Enum.EasingStyle.Linear,Enum.EasingDirection.In,0,false,0),{Transparency = 0}):Play()
end
end
end
Mystand:WaitForChild("Root").CFrame = HumanoidRP.CFrame * CFrame.new(0,7,0)
local animControl = Mystand:WaitForChild("AnimControl")
local idle = animControl.Animator:LoadAnimation(script:WaitForChild("Idle"))
idle:Play()
local plridle = Humanoid.Animator:LoadAnimation(script:WaitForChild("PlrIdle"))
plridle:Play(.4)
local run = animControl:LoadAnimation(script:WaitForChild("Run"))
local weld = Instance.new("ManualWeld")
weld.Name = "Stand Weld"
weld.Part0 = Mystand:WaitForChild("Root")
weld.Part1 = HumanoidRP
weld.C0 = Mystand:WaitForChild("Root").CFrame:inverse() * HumanoidRP.CFrame
weld.Parent = weld.Part0
Humanoid.Died:Connect(function()
Folder:Destroy()
end)
Humanoid.Changed:Connect(function()
if Humanoid.MoveDirection ~= Vector3.new(0,0,0) then
run:Play()
else
run:Stop()
end
end)
end
end)
Stand.OnServerEvent:Connect(function(player,active)
if active == true then
local Character = player.Character
local HumanoidRP = Character:WaitForChild("HumanoidRootPart")
local Humanoid = Character:WaitForChild("Humanoid")
local myStand = workspace:WaitForChild(player.Name.." Stand")
for _, i in pairs(myStand:GetDescendants()) do
if i:IsA("BasePart") then
local Tween = TweenService:Create(i,TweenInfo.new(.5,Enum.EasingStyle.Linear,Enum.EasingDirection.In,0,false,0),{Transparency = 1})
Tween:Play()
Tween.Completed:Connect(function()
myStand:Destroy()
end)
end
end
for _, i in pairs(Humanoid:GetPlayingAnimationTracks()) do
i:Stop(.4)
end
Stand:FireClient(player)
end
end)
Thank you for your time. As always, ask for any more information, and I will reply as soon as possible.
Edit: I have managed to fix it! I used the ROBLOX animation script so it will detect when the player moves!
