Run it
Copy the script and paste it into your executor.
Players = :()
RunService = :()
GuiService = :()
UserInputService = :()
ENV = ()
state = {
premium = ,
ids = ,
pos = ,
}
orig = {}
M = {}
refreshButton
conns = {}
btn
(fmt, ...)
s = .(fmt, ...)
( .. s)
s
(name)
ps = Players.LocalPlayer Players.LocalPlayer:()
root = ps ps:()
root
inst = root:(name)
inst
ok, res = (, inst)
ok
(, name, (res))
res
()
ids = {}
Tools = M.Tools
Tools Tools.LIST
_, item (Tools.LIST)
(item) == item.premium item.id
.(ids, item.id)
ids
(id)
P = M.Passes
P
RunService:() P.studioUnlock
v1 = P.ALIAS[id] id
cat = P.CAT[v1]
P.owned[v1] P.packOwned.bundle P.freeItems[v1]
cat
P.trialOn
P.tryItem == v1 .() < (P.tryEnd )
cat == cat ==
P.packOwned[cat] ==
(id, sub)
P = M.Passes
P.freeSkins[(id) .. .. (sub)] ==
()
P = M.Passes
P.packOwned.vip ==
(pack)
P = M.Passes
pack ==
P.packOwned.vip ==
P.packOwned[pack] ==
P.packOwned.bundle ==
()
flags = {}
mms = :()
uid = Players.LocalPlayer Players.LocalPlayer.UserId
ids = (M.Passes M.Passes.PACK_IDS) {}
name, id (ids)
(id) == id ~= uid
ok, has = (()
mms:(uid, id)
)
ok has ==
flags[name] =
flags
()
Products = M.Products
Products Products.state
(Products.state.trialLeft)
(on)
P = M.Passes
P
()
on
orig.pack
orig.pack = {}
k, v (P.packOwned {})
orig.pack[k] = v
orig.trialOn = P.trialOn
orig.studioUnlock = P.studioUnlock
P.owns = (_)
P.ownsSkin = ()
P.isVip = ()
P.ownsPack = (_)
P.trialOn =
P.studioUnlock =
P.packOwned = P.packOwned {}
P.packOwned.bundle =
P.packOwned.tools =
P.packOwned.powers =
P.packOwned.vip =
P.owned = P.owned {}
P.freeItems = P.freeItems {}
ids = ()
_, id (ids)
P.owned[id] =
P.freeItems[id] =
P.CAT = P.CAT {}
P.CAT[id] = P.CAT[id]
state.ids = #ids
state.premium =
(, #ids)
P.owns = realOwns
P.ownsSkin = realOwnsSkin
P.isVip = realIsVip
P.ownsPack = realOwnsPack
P.trialOn = () >
P.studioUnlock = orig.studioUnlock
real = ()
k (P.packOwned {})
P.packOwned[k] =
k, v (real)
P.packOwned[k] = v
_, id (())
P.owned P.owned[id] =
P.freeItems P.freeItems[id] =
state.premium =
()
()
()
cam = .CurrentCamera
cam cam.ViewportSize .(, )
(center)
btn
v = ()
ins = GuiService:()
half = btn.AbsoluteSize *
cx = .(center.X, half.X, .(half.X, v.X - half.X))
cy = .(center.Y, half.Y, .(half.Y, v.Y - half.Y))
btn.Position = .(cx + ins.X, cy + ins.Y)
state.pos = .(cx, cy)
()
btn
v = ()
compact = v.X < v.Y <
w = compact
h = compact
btn.AnchorPoint = .(, )
btn.Size = .(w, h)
btn.TextSize = compact
state.pos
(state.pos)
btn.Position = .(, , , GuiService:().Y)
refreshButton = ()
btn
btn.Text = state.premium ( .. state.ids)
btn.BackgroundColor3 = state.premium .(, , ) .(, , )
()
_, c (conns)
(()
c:()
)
.(conns)
btn
(()
btn:()
)
btn =
()
()
pg = Players.LocalPlayer:()
_, c pg:()
c:() c.Name ==
(()
c:()
)
gui = .()
gui.Name =
gui.ResetOnSpawn =
gui.IgnoreGuiInset =
gui.DisplayOrder =
gui.Parent = pg
btn = .()
btn.Name =
btn.Text =
btn.Font = .Font.GothamBold
btn.TextColor3 = .(, , )
btn.BorderSizePixel =
btn.AutoButtonColor =
btn.Parent = gui
corner = .()
corner.CornerRadius = .(, )
corner.Parent = btn
stroke = .()
stroke.Color = .(, , )
stroke.Thickness =
stroke.Parent = btn
drag = {
active = ,
moved = ,
startPos = .zero,
startCenter = .zero,
}
(t)
t == .UserInputType.MouseButton1 t == .UserInputType.Touch
btn.InputBegan:((input)
(input.UserInputType)
drag.active =
drag.moved =
drag.startPos = .(input.Position.X, input.Position.Y)
drag.startCenter = btn.AbsolutePosition + btn.AbsoluteSize *
)
conns[#conns + ] = UserInputService.InputChanged:((input)
drag.active
t = input.UserInputType
t ~= .UserInputType.MouseMovement t ~= .UserInputType.Touch
p = .(input.Position.X, input.Position.Y)
delta = p - drag.startPos
delta.Magnitude >
drag.moved =
drag.moved
(drag.startCenter + delta)
)
conns[#conns + ] = UserInputService.InputEnded:((input)
(input.UserInputType)
drag.active =
)
btn.Activated:(()
drag.moved
drag.moved =
( state.premium)
)
()
()
()
()
()
state.premium =
(ENV, , )
()
()
prev = (ENV, )
prev (prev.teardown) ==
(prev.teardown)
M.Passes = ()
M.Tools = ()
M.Products = ()
()
()
cam = .CurrentCamera
cam
cam:():(()
()
)
ENV.TTO = {
state = state,
modules = M,
premium = setPremium,
toggle = ()
( state.premium)
,
move = moveTo,
teardown = teardown,
}
()
.(main)