Run it
Copy the script and paste it into your executor.
RunService = :()
PathfindingService = :()
UserInputService = :()
Players = :()
Player = Players.LocalPlayer
ActiveDisasterType =
ActiveStorms = {}
Settings = {
SpawnPlacement = ,
WanderSpeed = ,
Color_R = ,
Color_G = ,
Color_B = ,
FunnelTrans = ,
DebrisDensity = ,
DebrisVis = ,
EF_Level = ,
PhysicsMode = ,
TornadoShape = ,
LiftSpeed = ,
RotationSpeed = ,
RadiusMult = ,
PullStrengthMult = ,
MobileButtonPosition =
}
EF_STATS = {
[-] = {Radius = , Strength = , Height = , Scale = },
[] = {Radius = , Strength = , Height = , Scale = },
[] = {Radius = , Strength = , Height = , Scale = },
[] = {Radius = , Strength = , Height = , Scale = },
[] = {Radius = , Strength = , Height = , Scale = },
[] = {Radius = , Strength = , Height = , Scale = },
[] = {Radius = , Strength = , Height = , Scale = }
}
ScreenGui = .(, Player:())
ScreenGui.Name =
ScreenGui.ResetOnSpawn =
ChangelogFrame = .(, ScreenGui)
ChangelogFrame.AnchorPoint = .(, )
ChangelogFrame.Size = .(, , , )
ChangelogFrame.Position = .(, , , )
ChangelogFrame.BackgroundColor3 = .(, , )
ChangelogFrame.Visible =
.(, ChangelogFrame).CornerRadius = .(, )
.(, ChangelogFrame).Color = .(, , )
CL_Title = .(, ChangelogFrame)
CL_Title.Size = .(, , , )
CL_Title.Text =
CL_Title.Font = .Font.GothamBlack
CL_Title.TextColor3 = .(, , )
CL_Title.TextSize =
CL_Title.TextScaled =
CL_Title.BackgroundTransparency =
CL_CloseBtn = .(, ChangelogFrame)
CL_CloseBtn.Size = .(, , , )
CL_CloseBtn.Position = .(, -, , )
CL_CloseBtn.Text =
CL_CloseBtn.BackgroundColor3 = .(, , )
CL_CloseBtn.TextColor3 = .(, , )
CL_CloseBtn.Font = .Font.GothamBold
CL_CloseBtn.TextScaled =
.(, CL_CloseBtn).CornerRadius = .(, )
CL_Scroll = .(, ChangelogFrame)
CL_Scroll.Size = .(, -, , )
CL_Scroll.Position = .(, , , )
CL_Scroll.BackgroundColor3 = .(, , )
CL_Scroll.ScrollBarThickness =
CL_Scroll.CanvasSize = .(, , , )
.(, CL_Scroll)
CL_Layout = .(, CL_Scroll)
CL_Layout.Padding = .(, )
CL_Layout.HorizontalAlignment = .HorizontalAlignment.Center
CL_Layout.SortOrder = .SortOrder.LayoutOrder
ChangelogEntries = {
{
Date = .(),
Text =
},
{
Date = ,
Text =
},
{
Date = ,
Text =
}
}
i, entry (ChangelogEntries)
entryFrame = .(, CL_Scroll)
entryFrame.Size = .(, , , )
entryFrame.BackgroundTransparency =
dateLbl = .(, entryFrame)
dateLbl.Size = .(, , , )
dateLbl.Text = .. entry.Date ..
dateLbl.Font = .Font.GothamBold
dateLbl.TextColor3 = .(, , )
dateLbl.TextSize =
dateLbl.BackgroundTransparency =
dateLbl.TextXAlignment = .TextXAlignment.Left
descLbl = .(, entryFrame)
descLbl.Size = .(, , , )
descLbl.Position = .(, , , )
descLbl.Text = entry.Text
descLbl.Font = .Font.Gotham
descLbl.TextColor3 = .(, , )
descLbl.TextSize =
descLbl.BackgroundTransparency =
descLbl.TextXAlignment = .TextXAlignment.Left
descLbl.TextWrapped =
LoadingFrame = .(, ScreenGui)
LoadingFrame.Size = .(, , , )
LoadingFrame.BackgroundColor3 = .(, , )
LoadingFrame.BackgroundTransparency =
LoadingFrame.Visible =
LoadingFrame.ZIndex =
LoadingLabel = .(, LoadingFrame)
LoadingLabel.Size = .(, , , )
LoadingLabel.AnchorPoint = .(, )
LoadingLabel.Position = .(, , , )
LoadingLabel.Text =
LoadingLabel.Font = .Font.GothamBlack
LoadingLabel.TextColor3 = .(, , )
LoadingLabel.TextSize =
LoadingLabel.BackgroundTransparency =
LoadingLabel.TextScaled =
ProgressBar = .(, LoadingFrame)
ProgressBar.Size = .(, , , )
ProgressBar.AnchorPoint = .(, )
ProgressBar.Position = .(, , , )
ProgressBar.BackgroundColor3 = .(, , )
.(, ProgressBar)
ProgressFill = .(, ProgressBar)
ProgressFill.Size = .(, , , )
ProgressFill.BackgroundColor3 = .(, , )
ProgressFill.BorderSizePixel =
.(, ProgressFill)
ProgressText = .(, ProgressBar)
ProgressText.Size = .(, , , )
ProgressText.Text =
ProgressText.Font = .Font.GothamBold
ProgressText.TextColor3 = .(, , )
ProgressText.TextSize =
ProgressText.BackgroundTransparency =
ProgressText.TextScaled =
MainFrame = .(, ScreenGui)
MainFrame.AnchorPoint = .(, )
MainFrame.Size = .(, , , )
MainFrame.Position = .(, , , )
MainFrame.BackgroundColor3 = .(, , )
MainFrame.Visible =
MainFrame.Active =
.(, MainFrame).CornerRadius = .(, )
.(, MainFrame).Color = .(, , )
dragging, dragStart, startPos
MainFrame.InputBegan:((input)
input.UserInputType == .UserInputType.MouseButton1 input.UserInputType == .UserInputType.Touch
dragging =
dragStart = input.Position
startPos = MainFrame.Position
input.Changed:(()
input.UserInputState == .UserInputState.End dragging =
)
)
UserInputService.InputChanged:((input)
dragging (input.UserInputType == .UserInputType.MouseMovement input.UserInputType == .UserInputType.Touch)
delta = input.Position - dragStart
MainFrame.Position = .(startPos.X.Scale, startPos.X.Offset + delta.X, startPos.Y.Scale, startPos.Y.Offset + delta.Y)
)
Title = .(, MainFrame)
Title.Size = .(, , , )
Title.Text =
Title.Position = .(, , , )
Title.Font = .Font.GothamBlack
Title.TextColor3 = .(, , )
Title.TextSize =
Title.TextScaled =
Title.BackgroundTransparency =
Title.TextXAlignment = .TextXAlignment.Left
OpenBtn = .(, ScreenGui)
OpenBtn.Size = .(, , , )
OpenBtn.Text =
OpenBtn.TextSize =
OpenBtn.BackgroundColor3 = .(, , )
OpenBtn.Visible =
.(, OpenBtn).CornerRadius = .(, )
.(, OpenBtn).Color = .(, , )
CloseBtn = .(, MainFrame)
CloseBtn.Size = .(, , , )
CloseBtn.Position = .(, -, , )
CloseBtn.Text =
CloseBtn.BackgroundColor3 = .(, , )
CloseBtn.TextColor3 = .(, , )
CloseBtn.Font = .Font.GothamBold
CloseBtn.TextScaled =
.(, CloseBtn).CornerRadius = .(, )
CloseBtn.MouseButton1Click:(()
MainFrame.Visible =
OpenBtn.Visible =
)
OpenBtn.MouseButton1Click:(()
MainFrame.Visible =
OpenBtn.Visible =
)
ButtonPositions = {
[] = .(, , , ),
[] = .(, -, , ),
[] = .(, , , -),
[] = .(, -, , -),
[] = .(, -, , -)
}
()
pos = ButtonPositions[Settings.MobileButtonPosition]
pos
OpenBtn.Position = pos
()
TabContainer = .(, MainFrame)
TabContainer.Size = .(, -, , )
TabContainer.Position = .(, , , )
TabContainer.BackgroundTransparency =
TabLayout = .(, TabContainer)
TabLayout.FillDirection = .FillDirection.Horizontal
TabLayout.Padding = .(, )
ContentArea = .(, MainFrame)
ContentArea.Size = .(, -, , )
ContentArea.Position = .(, , , )
ContentArea.BackgroundColor3 = .(, , )
.(, ContentArea)
Tabs = {}
(name)
btn = .(, TabContainer)
btn.Size = .(, , , )
btn.Text = name
btn.BackgroundColor3 = .(, , )
btn.TextColor3 = .(, , )
btn.Font = .Font.GothamBold
btn.TextSize =
btn.TextScaled =
.(, btn)
frame = .(, ContentArea)
frame.Size = .(, -, , -)
frame.BackgroundTransparency =
frame.Position = .(, , , )
frame.ScrollBarThickness =
frame.Visible =
frame.CanvasSize = .(, , , )
layout = .(, frame)
layout.Padding = .(, )
layout.HorizontalAlignment = .HorizontalAlignment.Center
btn.MouseButton1Click:(()
_, t (Tabs)
t.Btn.BackgroundColor3 = .(, , )
t.Btn.TextColor3 = .(, , )
t.Frame.Visible =
btn.BackgroundColor3 = .(, , )
btn.TextColor3 = .(, , )
frame.Visible =
)
.(Tabs, {Btn = btn, Frame = frame})
frame
TabControl = ()
TabPhysics = ()
TabVisuals = ()
(parent, text, settingKey, min, max, step)
row = .(, parent)
row.Size = .(, , , )
row.BackgroundTransparency =
lbl = .(, row)
lbl.Size = .(, , , )
lbl.Text = text
lbl.TextColor3 = .(, , )
lbl.BackgroundTransparency =
lbl.Font = .Font.Gotham
lbl.TextXAlignment = .TextXAlignment.Left
lbl.TextScaled =
valLbl = .(, row)
valLbl.Size = .(, , , )
valLbl.Position = .(, , , )
valLbl.Text = (Settings[settingKey])
valLbl.BackgroundTransparency =
valLbl.TextColor3 = .(, , )
valLbl.Font = .Font.GothamBold
valLbl.TextScaled =
minus = .(, row)
minus.Size = .(, , , )
minus.Position = .(, , , -)
minus.Text =
minus.BackgroundColor3 = .(, , )
minus.TextColor3 = .(, , )
minus.Font = .Font.GothamBold
.(, minus)
plus = .(, row)
plus.Size = .(, , , )
plus.Position = .(, , , -)
plus.Text =
plus.BackgroundColor3 = .(, , )
plus.TextColor3 = .(, , )
plus.Font = .Font.GothamBold
.(, plus)
(change)
Settings[settingKey] = .(Settings[settingKey] + change, min, max)
valLbl.Text = (.(Settings[settingKey] * ) / )
settingKey == settingKey == settingKey == settingKey == settingKey ==
()
minus.MouseButton1Click:(() (-step) )
plus.MouseButton1Click:(() (step) )
(parent, text, settingKey, options)
row = .(, parent)
row.Size = .(, , , )
row.BackgroundTransparency =
lbl = .(, row)
lbl.Size = .(, , , )
lbl.Text = text
lbl.TextColor3 = .(, , )
lbl.BackgroundTransparency =
lbl.Font = .Font.Gotham
lbl.TextXAlignment = .TextXAlignment.Left
lbl.TextScaled =
dropBtn = .(, row)
dropBtn.Size = .(, , , )
dropBtn.Position = .(, , , )
dropBtn.Text = Settings[settingKey]
dropBtn.BackgroundColor3 = .(, , )
dropBtn.TextColor3 = .(, , )
dropBtn.Font = .Font.GothamBold
dropBtn.TextScaled =
.(, dropBtn)
currentIndex =
i, opt (options)
opt == Settings[settingKey]
currentIndex = i
dropBtn.MouseButton1Click:(()
currentIndex = currentIndex +
currentIndex > #options currentIndex =
Settings[settingKey] = options[currentIndex]
dropBtn.Text = options[currentIndex]
settingKey ==
()
)
(parent, text, color, callback)
b = .(, parent)
b.Size = .(, , , )
b.BackgroundColor3 = color
b.Text = text
b.Font = .Font.GothamBold
b.TextColor3 = .(, , )
b.TextSize =
b.TextScaled =
.(, b)
b.MouseButton1Click:(callback)
b
()
TabControl:()
TabPhysics:()
TabVisuals:()
.(, TabControl).Padding = .(, )
.(, TabPhysics).Padding = .(, )
.(, TabVisuals).Padding = .(, )
(TabControl, , .(, , ), ()
#ActiveStorms ==
()
)
(TabControl, , .(, , ), ()
#ActiveStorms ==
()
)
(TabControl, , .(, , ), () () )
(TabControl, , , {, })
(TabControl, , , , , )
(TabControl, , , -, , )
(TabControl, , , {, , })
(TabPhysics, , , {, })
(TabPhysics, , , , , )
(TabPhysics, , , , , )
(TabPhysics, , , , , )
(TabPhysics, , , , , )
(TabVisuals, , , , , )
(TabVisuals, , , , , )
(TabVisuals, , , , , )
(TabVisuals, , , , , )
(TabVisuals, , , , , )
(TabVisuals, , , , , )
(TabVisuals, , ,
{, , , , })
Tabs[].Btn.BackgroundColor3 = .(, , )
Tabs[].Btn.TextColor3 = .(, , )
TabControl.Visible =
CL_CloseBtn.MouseButton1Click:(()
ChangelogFrame.Visible =
LoadingFrame.Visible =
.(()
duration =
startTime = ()
elapsed = () - startTime
percent = .(, .((elapsed / duration) * ))
ProgressFill.Size = .(percent/, , , )
ProgressText.Text = percent ..
elapsed >= duration
.()
LoadingFrame.Visible =
()
MainFrame.Visible =
OpenBtn.Visible =
()
)
)
()
col = .(Settings.Color_R, Settings.Color_G, Settings.Color_B)
_, stormData (ActiveStorms)
stormData.Emitter
stormData.Emitter.Rate = Settings.DebrisDensity
stormData.Emitter.Color = ColorSequence.(col)
t = .( - Settings.DebrisVis, , )
stormData.Emitter.Transparency = NumberSequence.({NumberSequenceKeypoint.(, t), NumberSequenceKeypoint.(, )})
_, data (stormData.Segments)
data.Part
data.Part.Color = col
data.Part.Transparency = Settings.FunnelTrans
(part)
ancestor = part.Parent
ancestor
ancestor:() ancestor:()
player = Players:(ancestor)
player
ancestor = ancestor.Parent
()
StormID = ()
DisasterModel = .(, )
DisasterModel.Name = .. .(StormID)
Core = .(, DisasterModel)
Core.Anchored =
Core.CanCollide =
Core.Transparency =
Settings.SpawnPlacement == Player.Character Player.Character:()
rootPart = Player.Character.HumanoidRootPart
Core.Position = rootPart.Position + (rootPart.CFrame.LookVector * ) + .(, , )
Core.Position = .(, , )
DisasterModel.PrimaryPart = Core
attach = .(, Core)
StormData = {
Model = DisasterModel,
Core = Core,
Emitter = ,
Segments = {},
Path = {},
Waypoint = ,
Active = ,
NextScan = ,
CachedParts = {}
}
.(ActiveStorms, StormData)
.(()
stats = EF_STATS[Settings.EF_Level]
segments = + (Settings.EF_Level * )
DebrisEmitter = .(, attach)
DebrisEmitter.Texture =
DebrisEmitter.Size = NumberSequence.({NumberSequenceKeypoint.(, ), NumberSequenceKeypoint.(, )})
DebrisEmitter.Lifetime = NumberRange.(, )
DebrisEmitter.Speed = NumberRange.(, )
DebrisEmitter.SpreadAngle = .(, )
DebrisEmitter.Drag =
DebrisEmitter.Acceleration = .(, , )
DebrisEmitter.RotSpeed = NumberRange.(-, )
DebrisEmitter.EmissionDirection = .NormalId.Top
StormData.Emitter = DebrisEmitter
i = , segments
p = .()
p.Shape = .PartType.Cylinder
p.Anchored =
p.CanCollide =
ratio = i / segments
width = (Settings.TornadoShape == ( + (ratio ^ ) * ( * stats.Scale)))
(Settings.TornadoShape == ( + (ratio ^ ) * ( * stats.Scale)))
( + (ratio ^ ) * ( * stats.Scale))
p.Size = .((stats.Height/segments) * , width, width)
p.Parent = DisasterModel
.(StormData.Segments, {Part = p, Height = i * (stats.Height/segments), Speed = * ( - ratio), IsHurricane = })
()
)
.(()
StormData.Active
target = Core.Position + .(.(-, ), , .(-, ))
path = PathfindingService:({AgentRadius = })
path:(Core.Position, target)
path.Status == .PathStatus.Success
StormData.Path = path:()
StormData.Waypoint =
.()
)
()
_, storm (ActiveStorms)
storm.Active =
storm.Model storm.Model:()
.(ActiveStorms)
RunService.Heartbeat:((dt)
t = ()
idx, Storm (ActiveStorms)
Storm.Active Storm.Model.PrimaryPart
rootPos = Storm.Core.Position
#Storm.Path > Storm.Waypoint <= #Storm.Path
targetPos = .(Storm.Path[Storm.Waypoint].Position.X, rootPos.Y, Storm.Path[Storm.Waypoint].Position.Z)
diff = targetPos - rootPos
diff.Magnitude <
Storm.Waypoint +=
Storm.Core.Position = rootPos + (diff.Unit * Settings.WanderSpeed * dt)
_, data (Storm.Segments)
rotAngle = t * data.Speed * Settings.RotationSpeed
wobbleX = .(t * + (data.Height * )) * (data.Height * )
wobbleZ = .(t * + (data.Height * )) * (data.Height * )
data.Part.CFrame = .(rootPos + .(wobbleX, data.Height, wobbleZ)) * .(, rotAngle, ) * .(, , .())
stats = EF_STATS[Settings.EF_Level]
searchRadius = stats.Radius * Settings.RadiusMult
t >= Storm.NextScan
Storm.NextScan = t +
parts = :(rootPos, searchRadius)
validParts = {}
_, p (parts)
p:() p.Anchored p.Size.Magnitude <
(p)
.(validParts, p)
Storm.CachedParts = validParts
_, p (Storm.CachedParts)
p p.Parent
offset = p.Position - rootPos
horizontalDist = .(offset.X, , offset.Z).Magnitude
suctionForce = .( - (horizontalDist / searchRadius), , )
baseStrength = stats.Strength * Settings.PullStrengthMult
tangent = .(-offset.Z, , offset.X).Unit
pull = -offset.Unit * (baseStrength * )
lift = .(, (baseStrength * ) * Settings.LiftSpeed, )
spin = tangent * (baseStrength * ) * Settings.RotationSpeed
p.AssemblyLinearVelocity = (spin + lift + pull) * suctionForce
)Tornado V8.0

Universal