How to make a "Za Warudo" effect?(Time Stop, from the anime JJBA.)

Alright, what I want to achieve here is… Make a Za Warudo effect, which is a ability of “Star Platinum and The World”(From JJBA.), which stops time.

I feel this is going to be hard, so here is what the Za Warudo from JJBA does:

1- Creates a sphere around the one who stopped time.
2- The (screen?) gets a rainbow effect, and then becomes grey, as if everything had the “black and white” theme.
3- And most important, which is stop time. The time stop effect makes it so EVERYONE gets stops, with a exception of the one who stopped time.(This means all players in a server should stop moving, and basically be stopped from doing anything.)
4- Sound effects too!
5- Not only that, the time stop makes it so you can’t see anything that is happening while time is stopped.(Basically, someone stops time, and they were in one place, but after time resuming they go to other place.(Because the one who stopped time has moved.))

I have no intention of asking for someone to do all of this for me, I just want to know HOW will I do this.(I think I can deal with the scripting part, but the effects and other stuff I may not.)

3 Likes

i can’t really make you the script but think of stopping time as just making every player lose the ability to move

Those are spoilers lol, but essentially what I usually do achieve time stopping is to basically anchor everyone. For the actual time stopping effect, I guess you can use color correction in the lighting. Making the sphere is also pretty simple to achieve through the tweening service.

To anchor everyone, just create a loop that goes through a table of players. Get their characters and basically make another loop that anchors their avatar. You can use a conditional to check if its the user of the time stopping effect to make sure they are not affected.

For the effect, just do Instance.new() and create a color correction effect in the lighting service.

Like I said, for the sphere just create a sphere in the location of the person who stopped time. Make it non-collidable and also make sure that it expands and also gradually increases in transparency.

2 Likes

Legit just provided a solution to someone for a time stop. Here it is, it’s pretty basic

game.ReplicatedStorage.Event.OnServerEvent:Connect(function(playerWhoFired) 
    game.Workspace.Sound2:Play() 
	game.Lighting.ColorCorrection.Saturation = -1
	game.Lighting.ColorCorrection.Contrast = -2

    for i, player in pairs(game.Players:GetPlayers()) do 
        if player ~= playerWhoFired then -- 
			player.Character.HumanoidRootPart.Anchored = true		
	    end
    end

	wait(timeTillUnfreeze)

	game.Lighting.ColorCorrection.Contrast = 0
    game.Lighting.ColorCorrection.Saturation = 0	


    for i, player in pairs(game.Players:GetPlayers()) do 
        player.Character.HumanoidRootPart.Anchored = false	
    end
end)

Shouldn’t the anchoring be a client thing? In this case, at least.

2 Likes

Then it would only appear to the person who anchored all of the players

1 Like

I meant like anchor players on the server except the one who froze time, but on the other clients, freeze the person who froze it. Then when time unfreezes, on the client the person who froze time will snap to his actual position

1 Like

Oh yea I didn’t read everything the guy wanted. I guess you could do that

1 Like

For the black and white effect use a ColorCorrectionEffect and tween the saturation to 0.
For stopping time set all the players walkspeed to 0 and if u have water u could also go into workspace and change the water speed to 0.

1 Like

Setting their walkspeed wouldn’t completely freeze them. If a person jumped, and someone froze time they would just fall down. If you anchored them they would freeze.

I feel like anchoring just the root part wouldn’t be enough. Take for example, a walking animation. Since it’s a looped animation, it’ll keep playing. So maybe anchoring everything would be the better way to do it? That or you could use WeldConstraints for the bodyparts and just anchor the root.

1 Like

Yea I was thinking of that. Not sure if looping through every part in the character and anchoring it would completely freeze them and their animations.

1 Like

I have tested this code and it was easily exploitable. Didn’t exploit but think of the explorer as dex explorer the exploit.

Well of course it’s exploitable I was just giving him the basic rundown of what he needs. He can modify it more

@vSabov, i’m mostly doing this for “test” purposes, and I don’t really think on using it on a actual game, but once I finish this, I will open source it.

@Fusionet and the other users who suggested what to do, here is my current code:

local RS = game.ReplicatedStorage

RS:WaitForChild("Za_Warudo").OnServerEvent:Connect(function(UserWhoDone, Lenght, CR, ZWSE)
	ZWSE:Play()
	CR.Saturation = -1
	CR.Contrast = -2

	for _, plr in ipairs(game:GetService("Players"):GetPlayers()) do
		if plr ~= UserWhoDone then
			local char = plr.Character or plr.CharacterAdded:Wait()
			
			char.HumanoidRootPart.Anchored = true
		end
	end

	wait(Lenght)

	CR.Saturation = 0
	CR.Contrast = 0

 	for _, plr in ipairs(game:GetService("Players"):GetPlayers()) do
		if plr ~= UserWhoDone then
			local char = plr.Character or plr.CharacterAdded:Wait()
			
			char.HumanoidRootPart.Anchored = false
		end
	end
end)

But there are some stuff which hasn’t been done yet, those are the following:

1- Do the sphere which appears near the one who stopped time.
2- When someone time stops, a rainbow effect would also happen at the “screen”.
3- I don’t think that I made it so the players can’t see what is happening while time is stopped.
4- The sounds, which I have not yet put.

But I will start doing some stuff, like the sphere.

I found a video of “Dio” stopping time, take this as a idea of what it should look like:

I took a sound from the toolbox and made it play whenever I “stopped time”, but it doesn’t seem to play. Any idea how to fix this?

(I will update/updated the code from the last post.)

Edit: Its now updated.

Ok so I don’t think the sound is working because you’re sending it over from the client. This means it doesn’t exist since it was made by the client and isn’t recognized on the server. This is also a bad idea because exploiters can send over whatever sound they want. So it’s best to just make the sound on the server. And another thing, when you freeze everybody don’t wait for their character to spawn. If someone died while you time stopped, it would wait for the character to respawn before freezing everyone else depending on their index in the loop.

I’m pretty sure that if I made it so it looked like this: local char = plr.Character, once they reset, they would be able to move in stopped time.

And how would I make it so it plays the sound from the server?

Yes they would. I can think of 2 reasons to prevent this.

  1. In a repeat loop or a while loop constantly Anchor their HumanoidRootPart if it already isn’t anchored. Break it when the time stop ends.
  2. In a coroutine, wait for the character to respawn then anchor them, however this will only work once.
    I would use option 1 because it will prevent exploiters from unanchoring themselves, and also prevent the respawning issue.

To make the sound play from the server, simply create a sound

local sound = Instance.new("Sound")
sound.Name = "ZaWarudo"
sound.SoundId = "SoundIdHere"
sound.Parent = workspace
sound:Play()

I may be missing something but that should be it.

Since option 1 is the only one left, how would I do that without making it pause the script and basically ruin it?