Hello there! Today I am happy to present to you this little tool, which can help you make updates for your game, and your users won’t have to rejoin!
NOTE: PLEASE SCROLL DOWN FOR NEW UPDATES
Link: SmartShutdown - Roblox
Visual:
New visual: SmartShutdown Visual (Devforum) - YouTube
Source code:
--main module
local module = {}
function module.Initialize()
game:BindToClose(function()
local party = game.Players:GetPlayers()
local UiClone = script.Update
if UiClone then
for i, plr in pairs(party) do
local newClone = UiClone:Clone()
newClone.Parent = plr.PlayerGui
local animationManager = newClone:WaitForChild("animationManager")
animationManager.Disabled = false
end
if #party >= 1 then
game:GetService("TeleportService"):TeleportPartyAsync(module.PlaceId, party, nil, UiClone)
end
end
end)
end
return module
--local script in the GUI.
--ADD EFFECTS HERE, USE A SPAWN FUNCTION, COROUTINE, OR TWEENING
--ADD EFFECTS HERE, USE A SPAWN FUNCTION, COROUTINE, OR TWEENING
--THIS SCRIPT WILL BE PARENTED TO THE GUI, SO script.Parent IS THE GUI ITSELF.
local TS = TweenInfo.new(1, Enum.EasingStyle.Exponential)
script.Parent.Frame.Transparency = 1
local tween = game:GetService("TweenService"):Create(script.Parent.Frame, TS, {Transparency = 0})
tween:Play()
local blur = script.Parent.Blur
blur.Parent = game.Lighting
blur.Enabled = true
script.Parent.Frame["Red Vs Blue Hammer Cartoon"].Playing = true
Documentation:
I recommend putting the module in ReplicatedStorage. You can get the module by using the command:
local SmartShutdown = require(game.ReplicatedStorage:WaitForChild("SmartShutdown"))--can be any name that you have named it in RS.
NOTE: With the new update, the GUI is now in the module. Go through the scripts for more info!
Your placeID:
SmartShutdown.placeId = PlaceIdHere
To start, or initialize, use this:
SmartShutdown:Initialize()
How would I add effects?
So, when adding effects, it is recommended that you have some knowledge of scripting.
Here’s an example of a simple fade-in effect:
local TS = TweenInfo.new(1, Enum.EasingStyle.Exponential)
script.Parent.Frame.Transparency = 1
local tween = game:GetService("TweenService"):Create(script.Parent.Frame, TS, {Transparency = 0})
tween:Play()
You can use a spawn function, coroutine, or tweening, which is much more advanced!
Thanks for reading! I hope this module will help you make future updates without having your users rejoin. I use it in my game currently (it’s not out yet)
EDIT: If you want more advanced effects, use [tweeting.]
Update: Version: 1.01
Now, if you want to add effects, use the local script parented to the module, it’s called “animationManager”.
(TweenService)
Update: Version 1.02
Now all the UI is in the module!
Update: Version 1.03
Have used your suggestions in order to improve the module!