Run it
Copy the script and paste it into your executor.
Players = :()
UIS = :()
HttpService = :()
ContentProvider = :()
RS = :()
player = Players.LocalPlayer
playerGui = player:()
MESH_ID =
RED = .(, , )
BLACK = .(, , )
WHITE = .(, , )
GREEN = .(, , )
FONT = .Font.TitilliumWeb
env = ( ())
playerGui:()
playerGui.F3XSkyboxStudio:()
S = {
part = ,
texture = ,
scale = ,
spinOn = ,
spin = .(, , ),
rot = .(, , ),
vortex = ,
vortexPower = ,
pulse = ,
fade = ,
fadeTime = ,
follow = ,
lock = ,
strict = ,
spinSpeed = ,
light = ,
bright = ,
volume = ,
pitch = ,
hdPrefix = ,
pos = .(, , ),
anim = { on = , fps = , loop = , frames = {}, idx = , last = , current = },
busy = ,
}
sent = {}
screen = .()
screen.Name =
screen.ResetOnSpawn =
screen.Parent = playerGui
(class, props, parent)
o = .(class)
k, v (props) o[k] = v
o.Parent = parent
o
(props, parent)
props.BackgroundColor3 = props.BackgroundColor3 BLACK
props.BorderColor3 = RED
props.BorderSizePixel =
(, props, parent)
(parent, text, pos, size, align)
(, {
Text = text, Position = pos, Size = size, BackgroundTransparency = ,
TextColor3 = WHITE, TextScaled = , Font = FONT,
TextXAlignment = align .TextXAlignment.Left,
}, parent)
(parent, text, pos, size, cb)
b = (, {
Text = text, Position = pos, Size = size, BackgroundColor3 = BLACK,
BorderColor3 = RED, BorderSizePixel = , TextColor3 = WHITE,
TextScaled = , Font = FONT, AutoButtonColor = ,
}, parent)
b.MouseEnter:(() b.BackgroundColor3 = .(, , ) )
b.MouseLeave:(() b.BackgroundColor3 = BLACK )
cb b.MouseButton1Click:(cb)
b
(parent, placeholder, pos, size)
(, {
Text = , PlaceholderText = placeholder, PlaceholderColor3 = .(, , ),
Position = pos, Size = size, BackgroundColor3 = WHITE, BorderColor3 = RED,
BorderSizePixel = , TextColor3 = BLACK, TextScaled = , Font = FONT,
ClearTextOnFocus = ,
}, parent)
(parent, pos, size, text, init, cb)
state = init
b = (parent, , pos, size)
()
b.Text = text .. .. (state )
b.TextColor3 = state GREEN WHITE
b.MouseButton1Click:(()
state = state
()
(state)
)
()
(v) state = v; ()
(parent, y, name, min, max, init, cb)
current = init
(parent, name, .(, , , y), .(, , , ))
bar = (, {
Size = .(, -, , ), Position = .(, , , y + ),
BackgroundColor3 = .(, , ), BorderSizePixel = ,
}, parent)
fill = (, { Size = .(, , , ), BackgroundColor3 = RED, BorderSizePixel = }, bar)
hit = (, {
Text = , BackgroundTransparency = , Size = .(, , , ), Position = .(, , , -),
}, bar)
tb = (parent, , .(, -, , y), .(, , , ))
(v)
current = v
tb.Text = (.(v * + ) / )
fill.Size = .(.((v - min) / (max - min), , ), , , )
(v)
(v)
(v)
dragging =
(x)
a = .((x - bar.AbsolutePosition.X) / bar.AbsoluteSize.X, , )
(min + (max - min) * a)
hit.InputBegan:((i)
i.UserInputType == .UserInputType.MouseButton1 i.UserInputType == .UserInputType.Touch
dragging =
(i.Position.X)
)
UIS.InputChanged:((i)
dragging (i.UserInputType == .UserInputType.MouseMovement i.UserInputType == .UserInputType.Touch)
(i.Position.X)
)
UIS.InputEnded:((i)
i.UserInputType == .UserInputType.MouseButton1 i.UserInputType == .UserInputType.Touch
dragging =
)
tb.FocusLost:(()
n = (tb.Text)
n (n) (current)
)
(init)
(v) (v); (v)
(titleText, pos, size, closable)
frame = ({ Size = size, Position = pos, Active = , Draggable = }, screen)
bar = (, {
Size = .(, , , ), BackgroundColor3 = BLACK, BorderColor3 = RED, BorderSizePixel = ,
Text = titleText, TextColor3 = WHITE, TextScaled = , Font = FONT,
}, frame)
body = (, {
Size = .(, , , -), Position = .(, , , ), BackgroundTransparency = ,
}, frame)
minimized =
minBtn = (frame, , .(, closable - -, , ), .(, , , ))
minBtn.ZIndex =
minBtn.MouseButton1Click:(()
minimized = minimized
body.Visible = minimized
minBtn.Text = minimized
frame.Size = minimized .(size.X.Scale, size.X.Offset, , ) size
)
closable
x = (frame, , .(, -, , ), .(, , , ), () frame.Visible = )
x.ZIndex =
frame, body
cachedEndpoint
statusLabel
(text)
statusLabel statusLabel.Text = text
(root)
root
_, o (root:())
o.Name ==
ep = o:()
ep ep
()
cachedEndpoint cachedEndpoint.Parent cachedEndpoint
cachedEndpoint = (player) (player.Character) (RS)
cachedEndpoint
_, root ({ player, player.Character, RS })
root
_, o (root:())
o:() o.Name ==
cachedEndpoint = o
cachedEndpoint
cachedEndpoint
(...)
ep = ()
ep
()
args = .(...)
tries = S.strict
ok, res
_ = , tries
ok, res = (() ep:(.(args, , args.n)) )
ok
.()
ok ( .. (res))
S.strict .()
ok, res
(part, props)
S.strict
k, v (props)
(, { { Part = part, [k] = v } })
.()
e = { Part = part }
k, v (props) e[k] = v
(, { e })
(id)
id = (id ):(, )
id ==
id:() .. id
id
texCache = {}
(url)
req = env.request env.http_request (env.syn env.syn.request) (env.http env.http.request)
req
ok, res = (req, { Url = url, Method = })
ok res res.StatusCode == res.Body
ok, body = (() :(url) )
ok (body) == body
(text)
text = (text ):(, )
text ==
num = text:() text:() text:()
num text
texCache[num] .. texCache[num]
( .. num .. )
img
ok, objs = (() :( .. num) )
ok (objs) ==
_, o (objs)
d = ((o:() o:()) o)
o:(, )
o:(, )
d
t = (d.Texture)
img = t:() t:()
o:()
img
img
body = ( .. num)
body
body:(, ):()
img = body:() body:()
img = num
img
texCache[num] = img
texCache[img] = img
(img == num ( .. num .. .. img))
.. img
()
.. num
()
S.part ~= S.part.Parent ~=
()
S.busy
url = (S.texture)
url ()
char = player.Character
root = char char:()
root ()
S.busy =
cf = root.CFrame + .(, , )
ok, part = (, , cf, )
(ok (part) == )
.()
part =
_, p (:())
p:() (p.Position - cf.Position).Magnitude < part = p
part
()
S.busy =
(, { part }, )
(, { { Part = part } })
.()
okM = (, { { Part = part, MeshId = MESH_ID } })
okT = (, { { Part = part, TextureId = url } })
(, { { Part = part, Scale = .(S.scale, S.scale, S.scale) } })
(, { { Part = part, Anchored = } })
(, { { Part = part, CanCollide = } })
S.lock (, { part }, )
(okM okT) ()
S.part = part
S.pos = part.Position
S.rot = .(, , )
sent = { TextureId = url, Scale = .(S.scale, S.scale, S.scale), VertexColor = .(, , ), pos = S.pos }
S.busy =
()
()
() S.part = ()
part = S.part
S.part =
S.anim.on =
(, { part }, )
(, { part })
part.Parent (, { part })
(part.Parent )
main, mainBody = (, .(, , , ), .(, , , ), )
mainBox = (mainBody, , .(, , , ), .(, -, , ))
setBtn, delBtn, optBtn
setBtn = (mainBody, , .(, , , ), .(, -, , ), ()
url = (mainBox.Text)
url ()
S.texture = url
()
()
()
)
delBtn = (mainBody, , .(, , , ), .(, -, , ), deleteSky)
optBtn = (mainBody, , .(, , , ), .(, -, , ))
statusLabel = (mainBody, , .(, , , ), .(, -, , ))
typeVer =
mainBox:():(()
typeVer +=
v = typeVer
.(, ()
v == typeVer () mainBox.Text ~=
S.texture = (mainBox.Text) S.texture
)
)
opt, optBody = (, .(, , , ), .(, , , ), )
opt.Visible =
optBtn.MouseButton1Click:(() opt.Visible = opt.Visible )
tabNames = { , , , , , , }
pages, tabBtns = {}, {}
(name)
n, p (pages) p.Visible = (n == name)
n, b (tabBtns) b.TextColor3 = (n == name) RED WHITE
i, n (tabNames)
tabBtns[n] = (optBody, n, .((i - ) / #tabNames, , , ), .( / #tabNames, -, , ), () (n) )
pages[n] = (, {
Size = .(, , , -), Position = .(, , , ), BackgroundTransparency = , Visible = ,
}, optBody)
p = pages.Spin
setT = (p, .(, , , ), .(, -, , ), , S.spinOn, (v) S.spinOn = v )
(p, , , , , S.spinSpeed, (v) S.spinSpeed = v )
(p, , , -, , S.spin.X, (v) S.spin = .(v, S.spin.Y, S.spin.Z) )
(p, , , -, , S.spin.Y, (v) S.spin = .(S.spin.X, v, S.spin.Z) )
(p, , , -, , S.spin.Z, (v) S.spin = .(S.spin.X, S.spin.Y, v) )
(p, , .(, , , ), .(, -, , ))
(p, , .(, , , ), .(, -, , ), () S.rot = .(, , ) )
p = pages.Vortex
(p, .(, , , ), .(, -, , ), , S.vortex, (v) S.vortex = v )
(p, , , , , S.vortexPower, (v) S.vortexPower = v )
(p, , , , , S.pulse, (v) S.pulse = v )
(p, .(, , , ), .(, -, , ), , S.fade, (v) S.fade = v )
(p, , , , , S.fadeTime, (v) S.fadeTime = .(v, ) )
(p, .(, , , ), .(, -, , ), , S.light, (v) S.light = v )
(p, , , , , S.bright, (v) S.bright = v )
(p, , .(, , , ), .(, -, , ))
p = pages.Size
setSize
setSize = (p, , , , , S.scale, (v) S.scale = .(v, ) )
(p, , .(, , , ), .(, -, , ))
i, v ({ , , , })
(p, (v), .((i - ) / , , , ), .(, -, , ), () (v) )
frameBoxes = {}
setPlayBtn
p = pages.Anim
i = ,
col, rowN = (i - ) % , .((i - ) / )
tb = (p, .. i, .(col / , , , rowN * ), .(, -, , ))
frameBoxes[i] = tb
(p, , , , , S.anim.fps, (v) S.anim.fps = .(v, ) )
playBtn
()
playBtn.Text = S.anim.on
playBtn.TextColor3 = S.anim.on GREEN WHITE
setPlayBtn = refreshPlay
playBtn = (p, , .(, , , ), .(, -, , ), ()
S.anim.on
S.anim.on =
() ()
S.anim.frames = {}
list = {}
_, tb (frameBoxes)
url = (tb.Text)
url
.(S.anim.frames, url)
d = .()
d.Texture = url
.(list, d)
#S.anim.frames < ()
.(()
(() ContentProvider:(list) )
_, d (list) d:()
)
S.anim.idx =
S.anim.last =
S.anim.on =
()
)
(p, .(, , , ), .(, -, , ), , S.anim.loop, (v) S.anim.loop = v )
(p, , .(, , , ), .(, -, , ), ()
_, tb (frameBoxes) tb.Text =
)
p = pages.Images
searchBox = (p, , .(, , , ), .(, -, , ))
goBtn = (p, , .(, -, , ), .(, , , ))
mode =
modeBtn = (p, , .(, -, , ), .(, , , ), () )
modeBtn.MouseButton1Click:(()
mode = (mode == )
modeBtn.Text = (mode == )
)
scroll = (, {
Size = .(, -, , ), Position = .(, , , ), BackgroundColor3 = .(, , ),
BorderColor3 = RED, BorderSizePixel = , ScrollBarThickness = , CanvasSize = .(, , , ),
AutomaticCanvasSize = .AutomaticSize.Y,
}, p)
(, { CellSize = .(, , , ), CellPadding = .(, , , ) }, scroll)
moreBtn = (p, , .(, , , ), .(, -, , ))
page, lastKw = ,
(id)
.(()
mode ==
url = (id)
S.texture = url
img = url url:()
img mainBox.Text = img
() ()
_, tb (frameBoxes)
tb.Text == tb.Text = (id)
)
(kw, pg)
req = env.request env.http_request (env.syn env.syn.request) (env.http env.http.request)
req
()
url = ()
:(HttpService:(kw), pg)
ok, res = (req, { Url = url, Method = })
(ok res res.StatusCode == )
()
okJ, data = (HttpService.JSONDecode, HttpService, res.Body)
okJ (data) ~= (data.data) ~=
()
pg ==
_, c (scroll:())
c:() c:()
_, d (data.data)
id = d.id
id
b = (, {
Image = ():(id),
BackgroundColor3 = .(, , ), BorderColor3 = RED, BorderSizePixel = ,
}, scroll)
(, {
Size = .(, , , ), Position = .(, , , -), BackgroundColor3 = BLACK,
BackgroundTransparency = , Text = (id), TextColor3 = WHITE, TextScaled = , Font = FONT,
}, b)
b.MouseButton1Click:(() (id) )
(#data.data .. )
()
lastKw = searchBox.Text
page =
(lastKw, page)
goBtn.MouseButton1Click:(go)
searchBox.FocusLost:((enter) enter () )
moreBtn.MouseButton1Click:(()
page +=
(lastKw, page)
)
p = pages.Misc
(p, .(, , , ), .(, -, , ), , S.strict, (v) S.strict = v )
(p, .(, , , ), .(, -, , ), , S.lock, (v)
S.lock = v
() (, { S.part }, v)
)
(p, .(, , , ), .(, -, , ), , S.follow, (v) S.follow = v )
(p, , .(, , , ), .(, -, , ), ()
cachedEndpoint =
(() )
)
(p, , .(, , , ), .(, -, , ))
(p, , .(, , , ), .(, , , ))
pre = (p, , .(, , , ), .(, , , ))
pre.Text = S.hdPrefix
pre.FocusLost:(()
pre.Text ~= S.hdPrefix = pre.Text
)
p = pages.Music
hdRemote
()
hdRemote hdRemote.Parent hdRemote
_, root ({ RS, })
_, o (root:())
o.Name == (o:() o:())
hdRemote = o
o
(text)
r = ()
r
()
.(()
ok, err = (()
r:() r:(text)
r:(text)
)
(ok ( .. text) )
ok ( .. (err))
)
(name, arg)
S.hdPrefix .. name .. (arg ( .. arg) )
idBox = (p, , .(, , , ), .(, -, , ))
(id)
id = (id ):()
id ()
idBox.Text = id
((, id))
(p, , .(, -, , ), .(, , , ), () (idBox.Text) )
(p, , .(, -, , ), .(, , , ), () (()) )
volVer =
(p, , , , , S.volume, (v)
S.volume = v
volVer +=
ver = volVer
.(, ()
ver == volVer ((, (.(v * + ) / )))
)
)
pitchVer =
setPitch
setPitch = (p, , , , , S.pitch, (v)
v < ()
S.pitch = v
pitchVer +=
ver = pitchVer
.(, ()
ver == pitchVer ((, (.(v * + ) / )))
)
)
searchBox = (p, , .(, , , ), .(, -, , ))
goBtn = (p, , .(, -, , ), .(, , , ))
list = (, {
Size = .(, -, , ), Position = .(, , , ), BackgroundColor3 = .(, , ),
BorderColor3 = RED, BorderSizePixel = , ScrollBarThickness = , CanvasSize = .(, , , ),
AutomaticCanvasSize = .AutomaticSize.Y,
}, p)
(, { Padding = .(, ) }, list)
moreBtn = (p, , .(, , , ), .(, -, , ))
page, lastKw = ,
(kw, pg)
url = ()
:(HttpService:(kw), pg)
body = (url)
body
()
ok, data = (HttpService.JSONDecode, HttpService, body)
ok (data) ~= (data.data) ~=
()
ids = {}
_, d (data.data)
d.id .(ids, d.id)
#ids ==
()
names = {}
body2 = ( .. .(ids, ))
body2
ok2, det = (HttpService.JSONDecode, HttpService, body2)
ok2 (det) == (det.data) ==
_, it (det.data)
a = it.asset
(a) == a.id names[a.id] = a.name
pg ==
_, c (list:())
c:() c:()
_, id (ids)
b = (list, (names[id] ) .. .. id .. , .(, , , ), .(, -, , ), ()
(id)
)
b.TextXAlignment = .TextXAlignment.Left
(#ids .. )
()
lastKw = searchBox.Text
page =
(lastKw, page)
goBtn.MouseButton1Click:(go)
searchBox.FocusLost:((enter) enter () )
moreBtn.MouseButton1Click:(()
page +=
(lastKw, page)
)
()
RunService = :()
(now)
ang = .(, , )
S.spinOn ang += S.spin * S.spinSpeed
S.vortex
k = S.vortexPower
ang += .(.(now * ) * * k, * k, .(now * ) * * k)
ang
(i)
.((i * ) % , , )
(now)
scale = S.scale
col = .(, , )
S.vortex
k = S.vortexPower
scale = scale * ( + (S.pulse / ) * .(now * * k))
t = now * k / .(S.fadeTime, )
i = .(t)
a = t - i
c = (i)
S.fade
a = a * a * ( - * a)
c = c:((i + ), a)
col = .(c.R, c.G, c.B)
S.light col = col * S.bright
.(scale, scale, scale), col
(pos, rot)
.(pos) * .(.(rot.X), .(rot.Y), .(rot.Z))
lastR = .()
renderConn = RunService.RenderStepped:(()
now = .()
dt = .(now - lastR, )
lastR = now
part = S.part
(part part.Parent)
part.CanCollide part.CanCollide =
S.rot += (now) * dt
S.follow
char = player.Character
root = char char:()
root S.pos = root.Position
cf = (S.pos, S.rot)
part.CFrame ~= cf part.CFrame = cf
mesh = part:()
mesh
sv, col = (now)
mesh.Scale ~= sv mesh.Scale = sv
mesh.VertexColor ~= col mesh.VertexColor = col
)
screen.Destroying:(() renderConn:() )
inflight =
(...)
S.strict
(...)
inflight >=
inflight +=
args = .(...)
.(()
(.(args, , args.n))
inflight -=
)
.(()
screen.Parent
t0 = .()
part = S.part
part part.Parent
S.part =
S.anim.on =
()
()
part =
part S.busy
S.anim.on #S.anim.frames > t0 - S.anim.last >= / S.anim.fps
S.anim.last = t0
S.anim.idx +=
S.anim.idx > #S.anim.frames
S.anim.loop
S.anim.idx =
S.anim.idx = #S.anim.frames
S.anim.on =
()
S.anim.current = S.anim.frames[S.anim.idx]
url = (S.anim.on S.anim.current) (S.texture)
url url ~= sent.TextureId
(part, { TextureId = url })
sent.TextureId = url
sv, col = (t0)
props = {}
sent.Scale ~= sv props.Scale = sv
sent.VertexColor ~= col props.VertexColor = col
(props)
S.strict
(part, props)
k, v (props) sent[k] = v
e = { Part = part }
k, v (props) e[k] = v
(, { e })
k, v (props) sent[k] = v
cf = (S.pos, S.rot)
sent.CF ~= cf
(, { { Part = part, = cf } }) sent.CF = cf
.(.(, / - (.() - t0)))
)Loads code from the internet. It downloads more code when it runs (loadstring + HttpGet), which can change after it was posted. From: assetdelivery.roblox.com, apis.roblox.com.
make a skybox using f3x and its fully fe

Universal