I have finished the basic part of my time-stop script and I want to make it so players who get time-stopped will not be able to see the time-stopper moving. I have tried anchoring the time-stopper on every player/client that has been time-stopped. The issue is that when trying to un-anchor the time-stopper, the time-stopper’s player model will be frozen where the client had anchored them.
Maybe you could clone their model and set them invisible.
I can’t clone a player model. When I do, it returns nil.
Edit: When trying to clone a player model, you have to do this first.
Character.Archivable = true
I can clone it now.
This does not give the results I want. It does work but if the time-stopper has jumped or is walking and time stops then the model will be created with its arms at its side rather than looking like it was frozen mid animation.
If you want to “Clone” the character, you can use Players:CreateHumanoidModelFromUserId(id) to get the character model of the target character, which would act as a clone. The actual player’s character could just be parented to nil or a non-workspace storage. Once the time-stop ends, you can reparent the player’s character and delete the clone.
BadPart_1 is my alt account. Whenever he gets time stopped he can still see me moving. I want to have it so I am also paused on his screen. After the time stop has ended, I want to appear in my new location. When BadPart_1 is time stopped while he is walking, he is time stopped mid animation. I want to be paused mid animation as well on his screen. However, when cloning my character, the clone does not inherent the state my animation is in.
The results I get from anchoring the time-stopper are perfect, but there’s a issue as you can see in the video.
I do not appear where I am after the time-stop on the other player’s screen. How can I fix this?
I replied a solution to you in another post. Link here.
This is a repost for future reference.
It’s actually really simple and this problem stumped me for a while as well.
All you have to do is fire a remote event to any clients not allowed to see time stoppers (this way you can have a system where some players can see a time stopper’s movement) and anchor them. That simple. The code is something like this.
Server Code
-- Tell clients time has stopped.
local Players = game:GetService("Players")
local timeStopper: Model = nil -- get the time stopper somehow
for _, player in ipairs(Players:GetChildren()) do
TimeStopChanged:FireClient(player, true, timeStopper)
end
Client Code (the meat of this effect)
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local TimeStopChanged = ReplicatedStorage.Remotes.TimeStopChanged
--[[
You could also send in a player object and access the Character property.
I prefer using a model because you can extend this to NPC characters as well,
and a better (if needed, might be overkill) is passing an array of timeStopper models and
anchoring all of them
--]]
TimeStopChanged.OnClientEvent:Connect(function(timeStopped: boolean, timeStopper: Model)
-- if time has stopped let's anchor the timeStopper
if timeStopped then
-- [insert code for effects]
for _, instance: Instance in ipairs(timeStopper:GetDescendants()) do
if instance:IsA("BasePart") then
instance.Anchored = true
end
end
else
-- if time is NOT stopped, let's unanchor the time stopper
for _, instance: Instance in ipairs(timeStopper:GetDescendants()) do
if instance:IsA("BasePart") then
instance.Anchored = false
end
end
end
end)
What is odd is I have already tried/done this method, but at that time I had issues. Now that you have replied and I have revisited this it seems like It works exactly how I wanted it to work. Thanks for the help! Also, what does the second instance in
for _, instance: Instance in ipairs(timeStopper:GetDescendants()) do
mean?
The GetDescendants is there to cover for cases where GetChildren isn’t enough to get every base part of the Time Stopper. Think of cases like parenting a Stand to a player and anchoring those parts as well so you can’t see the Stand of the time stopper move as well.