------------- CREDITS -------------
--[[
_ ___ ____ ______
| | /| / (_)__ ___/ / / / / _/
| |/ |/ / / _ \/ _ / /_/ // /
|__/|__/_/_//_/\_,_/\____/___/
v1.6.62 | 2025-12-09 | Roblox UI Library for scripts
To view the source code, see the `src/` folder on the official GitHub repository.
Author: Footagesus ( Footages, .ftgs, oftgs )
Github: https://github.com/Footagesus/WindUI
Discord: https://discord.gg/ftgs-development-hub-1300692552005189632
License: MIT
████████╗████████╗░░░░░██╗██╗░░░██╗ ░██████╗████████╗██╗░░░██╗██████╗░██╗░█████╗░
╚══██╔══╝╚══██╔══╝░░░░░██║╚██╗░██╔╝ ██╔════╝╚══██╔══╝██║░░░██║██╔══██╗██║██╔══██╗
░░░██║░░░░░░██║░░░░░░░░██║░╚████╔╝░ ╚█████╗░░░░██║░░░██║░░░██║██║░░██║██║██║░░██║
░░░██║░░░░░░██║░░░██╗░░██║░░╚██╔╝░░ ░╚═══██╗░░░██║░░░██║░░░██║██║░░██║██║██║░░██║
░░░██║░░░░░░██║░░░╚█████╔╝░░░██║░░░ ██████╔╝░░░██║░░░╚██████╔╝██████╔╝██║╚█████╔╝
░░░╚═╝░░░░░░╚═╝░░░░╚════╝░░░░╚═╝░░░ ╚═════╝░░░░╚═╝░░░░╚═════╝░╚═════╝░╚═╝░╚════╝░
v3.0.2 | 2026-07-16 | Roblox Script
Author: TTJY Studio
Github: https://github.com/Yumiara/SSL-TTJY
Discord: https://discord.gg/G7CX2rD9p2
License: ND ( No Derivatives )
_____ ____
|_ _| _ \
| | | |_) |
| | | _ <
_| |_| |_) |
|_____|____/
v1 | 2025-07-06 | Code Obfuscator & Optimizer
Author: dr_breen
Github: https://github.com/7Duser/ironbrew1
License: ND ( No Derivatives )
█████╗ ██╗ ██╗████████╗██╗ ██╗ ██████╗
██╔══██╗██║ ██║╚══██╔══╝██║ ██║ ╚════██╗
███████║██║ ██║ ██║ ███████║ █████╔╝
██╔══██║██║ ██║ ██║ ██╔══██║ ╚═══██╗
██║ ██║╚██████╔╝ ██║ ██║ ██║ ██████╔╝
╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═╝ ╚═╝ ╚═════╝
v3.4.1 | 2025-XX-XX | Private Whitelist Service
Author: TTJY
License: ND ( No Derivatives )
▒█▀▀█ ░█▀▀█ ▒█▄░▒█ ▒█▀▀▄ ░█▀▀█ ▒█▀▀▄ ▒█▀▀▀ ▒█░░▒█ ▒█▀▀▀ ▒█░░░ ▒█▀▀▀█ ▒█▀▀█ ▒█▀▄▀█ ▒█▀▀▀ ▒█▄░▒█ ▀▀█▀▀
▒█▄▄█ ▒█▄▄█ ▒█▒█▒█ ▒█░▒█ ▒█▄▄█ ▒█░▒█ ▒█▀▀▀ ░▒█▒█░ ▒█▀▀▀ ▒█░░░ ▒█░░▒█ ▒█▄▄█ ▒█▒█▒█ ▒█▀▀▀ ▒█▒█▒█ ░▒█░░
▒█░░░ ▒█░▒█ ▒█░░▀█ ▒█▄▄▀ ▒█░▒█ ▒█▄▄▀ ▒█▄▄▄ ░░▀▄▀░ ▒█▄▄▄ ▒█▄▄█ ▒█▄▄▄█ ▒█░░░ ▒█░░▒█ ▒█▄▄▄ ▒█░░▀█ ░▒█░░
v3 | 2025-03-16 | Public Whitelist Service
Author: Pelican Development
Official Site: https://pandadevelopment.net/
]]
if not game:IsLoaded() then game.Loaded:Wait(); end;
-- debug.setmemorycategory("CoreMemory") --
local Kicks, KickReason, GG = {
["TTJY_IDAC"] = "[TTJY Studio] : Failed to bypass.\nPlease contact TTJY.",
["TTJY_IDGG"] = "[TTJY Studio] : Global variable not found.\nPlease change executor.",
["TTJY_IDFL"] = "[TTJY Studio] : File system not found.\nPlease change executor.",
["ID500:V"] = "[TTJY Studio] : Please rejoin to take another step to our Authentication.",
["TTJY_ID7"] = "[TTJY Studio] : Executor environment is not standard. Please try again or switch to a different executor.\n\nJoin our Discord server for recommendations or to report bugs.",
["TTJY_IDVC"] = "[TTJY Studio] : VCache Failed.",
["TTJY_IDP"] = "[TTJY Studio] : You are in public server but you set the script to auto leave public servers.";
["TTJY_SolD"] = "[TTJY Studio] : Compatibility with Solara has been removed.\n\n( You can get a free executor at https://projectreal.gg/ )",
["TTJY_INFO"] = "[TTJY Studio] : getinfo not found. Please change executor.",
["TTJY_IDXO"] = "Your executor is 'Xeno'. Imagine using a virus.\n\nAnyway, This executor isn't supported.\n\nVisit ttjy-studio.vercel.app to see the list of supported executors.",
}, nil, (getgenv and getgenv()) or _G or shared;
game:GetService("CoreGui").RobloxPromptGui.promptOverlay.ChildAdded:Connect(function(v)
if v.Name == "ErrorPrompt" then
Instance.new("UICorner", v);
local MessageArea = v:WaitForChild("MessageArea");
local ErrorFrame = MessageArea:WaitForChild("ErrorFrame");
local ButtonArea = ErrorFrame:WaitForChild("ButtonArea");
local LeaveButton = ButtonArea:FindFirstChildWhichIsA("ImageButton");
if not LeaveButton then
repeat
LeaveButton = ButtonArea:FindFirstChildWhichIsA("ImageButton");
task.wait(0.1);
until LeaveButton;
end;
local ButtonLayout = ButtonArea:WaitForChild("ButtonLayout");
local ErrorMessage = ErrorFrame:WaitForChild("ErrorMessage");
local Cloned = LeaveButton:Clone();
v.BackgroundTransparency = 0.2; v.BackgroundColor3 = Color3.fromRGB(0,0,0);
Cloned.Name = "DiscordInvite"; Cloned.ButtonText.Text = "Discord Invite";
ButtonLayout.CellSize = UDim2.new(0,150,0,36); Cloned.Parent = ButtonArea;
Cloned.MouseButton1Click:Connect(function()
return setclipboard and setclipboard("https://discord.gg/G7CX2rD9p2");
end); task.delay(0.2, function()
for i,v in pairs(Kicks) do
if string.find(ErrorMessage.Text, i) then
ErrorMessage.RichText=true;
ErrorMessage.Text = v;
end;
end;
end);
end;
end);
if not GG then
KickReason="TTJY_IDGG";
elseif not isfile or not makefolder or not readfile or not isfolder or not delfile then
KickReason="TTJY_IDFL";
elseif getexecutorname and getexecutorname() == "Solara" then
KickReason="TTJY_SolD";
elseif not getinfo and not debug.getinfo then
KickReason="TTJY_INFO";
end; if KickReason then
return game:GetService("Players").LocalPlayer:Kick(KickReason);
end; GG.GG = GG;
local GameId, PlaceId = game.GameId, game.PlaceId;
local LoaderSettings = GG.LoaderSettings or {
UIKeybind = "V";
ESPMode = "Box";
FPSCap = 60;
BadNetwork = false;
AllowCache = true;
ScaryAC = false;
AllowClientTab = true;
AllowAddOn = false;
AllowThemesTab = false;
SkipBypass = false;
GAME_DEBUG_POSITION = "BottomLeft";
};
LoaderSettings.SensitivePackage = LoaderSettings.SensitivePackage or {
AllowQueue = true;
AllowEConsole = false;
AllowHighlightESP = false;
};
if GameId == 2294168059 then
LoaderSettings.TheMimicLoader = LoaderSettings.TheMimicLoader or {
Load_Sections = true;
Load_WithPlaceID_Check = false;
};
elseif GameId == 1235188606 then
LoaderSettings.DragonAdventure = LoaderSettings.DragonAdventure or {
RoamInitOnStartUp = false;
};
elseif GameId == 10200395747 then
LoaderSettings.GAG2Loader = LoaderSettings.GAG2Loader or {
Allow_TPBypass = true;
};
elseif GameId == 1701518532 then
LoaderSettings.BadNetwork = true;
LoaderSettings.ScaryAC = true;
LoaderSettings.SkipBypass = false;
end;
if GG.LSecureLoad then
return GG.LSecureLoad();
elseif GG.InKey then
return GG.InKey();
end;
local FOLBASE = "TTJYStudio";
local EULBASE = "TJYsEula.txt";
local GITBASE = "https://github.com/RealTTJY/Studio.Hub/raw/refs/heads/main";
local ASSETBASE = "https://raw.githubusercontent.com/RealTTJY/Studio.Hub/refs/heads/main/Assets/";
local versionstorage, AssetStorage = {}, {};
local emptyfunction = function() return; end;
local selffucntion = function(...) return ...; end;
GG.IB_NO_VIRTUALIZE = function(...) return ...; end;
GG.LPH_NO_VIRTUALIZE = function(...) return ...; end;
local _, HttpGet = pcall(function() return game.HttpGet; end);
local cloneref = cloneref or clonereference or selffucntion;
local getinfo = getinfo or debug.getinfo;
local Request = http_request or request;
local setc = setclipboard or toclipboard;
local str = string;
local strfind = str.find;
local strformat = str.format;
local tble = table;
local tblef = tble.find;
local tblein = tble.insert;
local tk = task;
local twait = tk.wait;
local tspawn = tk.spawn;
local Col3 = Color3;
local fromRGB = Col3.fromRGB;
local Dim = UDim.new;
local Fnew = Font.new;
local Dim2 = UDim2.new;
local Rectn = Rect.new;
local CFr = CFrame.new;
local Vec2 = Vector2.new;
local Vec3 = Vector3.new;
local TwInfo = TweenInfo.new;
local Instancen = Instance.new;
local NSnew = NumberSequence.new;
local NSKnew = NumberSequenceKeypoint.new;
local GetService = game.GetService;
local FindFirstChild = game.FindFirstChild;
local TweenService = GetService(game, "TweenService");
local HttpService = GetService(game, "HttpService");
local UIS = GetService(game, "UserInputService");
local Workspace = cloneref(GetService(game, "Workspace"));
local CoreGui = cloneref(GetService(game, "CoreGui"));
local Players = GetService(game, "Players");
local selff = Players.LocalPlayer;
local IsA = game.IsA;
local TwCreate = TweenService.Create;
local gethui = gethui or function() return CoreGui end;
local WHITE = fromRGB(255, 255, 255);
local BLACK = fromRGB(0, 0, 0);
local ScriptCache = {};
ScriptCache.userIdentify = {
is_loaded_lc = false;
device = nil;
is_Internal = nil;
is_executor_WhiteList = nil;
gcF = false;
unc_infos = false;
}; ScriptCache.gcF = {};
ScriptCache.AutoConfigPathCache = {};
ScriptCache.userIdentify.device = if UIS.TouchEnabled and not UIS.KeyboardEnabled then "Mobile"
elseif UIS.KeyboardEnabled and UIS.MouseEnabled then "PC"
elseif UIS.GamepadEnabled then "Console"
else "Unknown"
ScriptCache.userIdentify.unc_infos = {
fireproximityprompt = (fireproximityprompt and getinfo(fireproximityprompt).what) or false;
firetouchinterest = (firetouchinterest and getinfo(firetouchinterest).what) or false;
isnetworkowner = (isnetworkowner and getinfo(isnetworkowner).what) or false;
require = (require and getinfo(require).what) or false;
request = (Request and getinfo(Request).what) or false;
getgc = (getgc and getinfo(getgc).what) or false;
};
local LoadFromVControl = nil; LoadFromVControl = function(srcName, fileName, selectversion, check)
local cacheFile = "TTJYStudio/" .. tostring(fileName);
if LoaderSettings.AllowCache then
if isfile(cacheFile) then
local success, func = pcall(function()
return loadstring(readfile(cacheFile))();
end); if success then
if func and typeof(func) == 'table' then
if func.Version == selectversion then
if check then return true; end;
return func.Function;
elseif versionstorage[selectversion] then
if check then return false; end;
return LoadFromVControl(unpack(versionstorage[selectversion]));
end;
end;
end;
end;
end;
if check then return false; end;
local source = HttpGet(game, srcName);
local loadc = loadstring(source)();
if loadc and typeof(loadc) == 'table' then
if loadc.Version == selectversion then
if LoaderSettings.AllowCache then
writefile(cacheFile, source);
end; return loadc.Function;
elseif versionstorage[selectversion] then
return LoadFromVControl(unpack(versionstorage[selectversion]));
end;
end; return selff:Kick("TTJY_IDVC");
end;
if not Signal then
local Signal = {}; Signal.__index = Signal;
function Signal.new()
return setmetatable({listeners = {}}, Signal);
end;
function Signal:Connect(callback)
local connection = {
callback = callback,
signal = self,
connected = true,
}; function connection:Disconnect()
if not self.connected then return; end;
self.connected = false;
local listeners = self.signal.listeners;
local index = tblef(listeners, self);
if index then
tble.remove(listeners, index);
end;
end; tblein(self.listeners, connection);
return connection;
end;
function Signal:Wait()
local connection = nil;
local runningThread = coroutine.running();
connection = self:Connect(function(...)
connection:Disconnect();
tspawn(runningThread, ...);
end); return coroutine.yield();
end;
function Signal:Once(callback)
local connection = nil;
connection = self:Connect(function(...)
connection:Disconnect();
callback(...);
end); return connection;
end;
function Signal:Fire(...)
local currentListeners = {unpack(self.listeners)};
for _, listener in ipairs(currentListeners) do
if listener.connected then
tspawn(listener.callback, ...);
end;
end;
end; GG.Signal = Signal;
end;
------------- New Loader -------------
if not LoaderSettings.BadNetwork then
if not isfolder(FOLBASE) then makefolder(FOLBASE); end;
if not isfile(FOLBASE.."/TTJYStudio.png") then
local pngfile = Request({
Url = GITBASE.."/Assets/TTJYStudio.png";
Method = "GET";
}); if pngfile.Success then
writefile(FOLBASE.."/TTJYStudio.png", pngfile.Body);
end;
end;
end;
local TTJYLogo = if not LoaderSettings.BadNetwork and isfile(FOLBASE.."/TTJYStudio.png") then
getcustomasset(FOLBASE.."/TTJYStudio.png")
else "";
do (function()
local TWEENINFO = TwInfo(0.5, Enum.EasingStyle.Quad, Enum.EasingDirection.Out);
local TWEENINFO2 = TwInfo(1.2, Enum.EasingStyle.Elastic, Enum.EasingDirection.Out);
local TWEENINFO3 = TwInfo(0.8, Enum.EasingStyle.Quad, Enum.EasingDirection.Out);
local TWEENINFO4 = TwInfo(1.25, Enum.EasingStyle.Sine, Enum.EasingDirection.InOut, -1, true);
local VEC05 = Vec2(0.5, 0.5);
local ScreenGui = Instancen("ScreenGui");
local MainFrame = Instancen("Frame", ScreenGui);
local ContentContainer = Instancen("Frame", MainFrame);
local Logo = Instancen("ImageLabel", ContentContainer);
local Title = Instancen("TextLabel", ContentContainer);
local Subtitle = Instancen("TextLabel", ContentContainer);
local BarContainer = Instancen("Frame", ContentContainer);
local Bar = Instancen("Frame", BarContainer);
local BarGlow = Instancen("UIStroke", Bar);
ScreenGui.Name = "TTJY_Startup";
ScreenGui.DisplayOrder = 9999;
ScreenGui.IgnoreGuiInset = true;
MainFrame.Name = "MainFrame";
MainFrame.Size = Dim2(1, 0, 1, 0);
MainFrame.BackgroundColor3 = fromRGB(15, 15, 15);
MainFrame.BackgroundTransparency = 1;
MainFrame.BorderSizePixel = 0;
ContentContainer.Name = "Content";
ContentContainer.Size = Dim2(0, 400, 0, 300);
ContentContainer.AnchorPoint = VEC05;
ContentContainer.Position = Dim2(0.5, 0, 0.45, 0);
ContentContainer.BackgroundTransparency = 1;
Logo.Name = "Logo";
Logo.Size = Dim2(0, 0, 0, 0);
Logo.AnchorPoint = VEC05;
Logo.Position = Dim2(0.5, 0, 0.4, 0);
Logo.BackgroundTransparency = 1;
Logo.Image = TTJYLogo;
Title.Name = "Title";
Title.Size = Dim2(1, 0, 0, 50);
Title.Position = Dim2(0, 0, 0.65, 0);
Title.BackgroundTransparency = 1;
Title.Font = Enum.Font.GothamBold;
Title.Text = "TTJY HUB";
Title.TextColor3 = WHITE;
Title.TextSize = 42;
Title.TextTransparency = 1;
Subtitle.Name = "Subtitle";
Subtitle.Size = Dim2(1, 0, 0, 20);
Subtitle.Position = Dim2(0, 0, 0.8, 0);
Subtitle.BackgroundTransparency = 1;
Subtitle.Font = Enum.Font.GothamMedium;
Subtitle.Text = "Script Made By TTJY Studio";
Subtitle.TextColor3 = fromRGB(150, 150, 150);
Subtitle.TextSize = 14;
Subtitle.TextTransparency = 1;
BarContainer.Name = "BarContainer";
BarContainer.Size = Dim2(0, 300, 0, 2);
BarContainer.Position = Dim2(0.5, 0, 0.9, 0);
BarContainer.AnchorPoint = VEC05;
BarContainer.BackgroundColor3 = fromRGB(150, 150, 150);
BarContainer.BackgroundTransparency = 0.8;
BarContainer.BorderSizePixel = 0;
Bar.Name = "Bar";
Bar.Size = Dim2(0, 0, 1, 0);
Bar.BackgroundColor3 = fromRGB(230, 30, 30);
Bar.BorderSizePixel = 0;
BarGlow.Color = fromRGB(230, 30, 30);
BarGlow.Thickness = 2;
BarGlow.Transparency = 0.5;
ScreenGui.Parent = gethui();
local FadeObjects, cProgress, VisTween = {
{Logo, "ImageTransparency"},
{Title, "TextTransparency"},
{Subtitle, "TextTransparency"},
{BarContainer, "BackgroundTransparency"},
{Bar, "BackgroundTransparency"},
{BarGlow, "Transparency"},
}, 0, {};
local tween = function(obj, info, props)
local T = TwCreate(TweenService, obj, info, props);
return T, T:Play();
end;
local setVisibility, updateProgress = function(visible)
for i = 1, #VisTween do VisTween[i]:Cancel(); end;
local targetTransparency = if visible then 0 else 1;
VisTween = {}; for i = 1, #FadeObjects do
local obj, prop = unpack(FadeObjects[i]);
local value; if obj == BarContainer then
value = visible and 0.8 or 1;
elseif obj == Bar then
value = visible and 0 or 1;
else
value = targetTransparency;
end; tblein(VisTween, tween(obj, TWEENINFO, {
[prop] = value
}));
end;
end, function(percent)
cProgress = math.clamp(percent, 0, 100);
tween(Bar, TWEENINFO, {Size = Dim2(cProgress / 100, 0, 1, 0)});
end;
GG.LoadingSignal = Signal.new();
GG.LoadingSignal:Connect(function(data)
if type(data) == "number" then
updateProgress(data);
elseif type(data) == "boolean" then
setVisibility(not data);
elseif type(data) == 'string' then
Subtitle.Text = data;
end;
end);
tspawn(function()
twait(0.2); tween(Logo, TWEENINFO2, {Size = Dim2(0, 150, 0, 150)});
twait(0.4); Title.Position = Dim2(0, 0, 0.7, 0);
tween(Title, TWEENINFO3, {
TextTransparency = 0,
Position = Dim2(0, 0, 0.65, 0)
}); twait(0.3);
tween(Subtitle, TWEENINFO3, {TextTransparency = 0});
twait(0.2); tween(BarContainer, TWEENINFO, {BackgroundTransparency = 0.8});
tween(BarGlow, TWEENINFO, {Transparency = 0.5}); twait(0.2);
local pulse = tween(Logo, TWEENINFO4, {
Size = Dim2(0, 160, 0, 160),
}); tspawn(function()
for i = 1, 30 do
if cProgress >= i then continue; end;
updateProgress(i); twait(0.05 + (i * 0.002));
end;
end); repeat twait(0.1) until cProgress >= 90;
twait(0.5); pulse:Cancel(); setVisibility(false); twait(0.6); ScreenGui:Destroy();
end);
end)(); end;
------------- MainPackage -------------
AssetStorage.CommonF = function()
local DistanceFromCharacter = selff.DistanceFromCharacter;
local OriginalTw, VIM = TwInfo(
1,
Enum.EasingStyle.Linear,
Enum.EasingDirection.Out,
0,
false,
0
), nil;
return {
Init = function(defineVIM)
VIM = defineVIM;
end;
SKey = function(key)
return VIM:SendKeyEvent(true, key, false, game);
end;
OKey = function(key)
return VIM:SendKeyEvent(false, key, false, game);
end;
CKey = function(self, key, c)
return self.SKey(key), twait(c or 0), self.OKey(key);
end;
Tp = function(HumRSelf, cf, t)
if not HumRSelf then return; end;
HumRSelf.CFrame = cf;
return true, twait(t);
end;
Tween = function(arg)
if not arg.primary then return false; end;
local Tween = TwCreate(
TweenService, arg.primary,
arg.info or OriginalTw, arg.goal
); Tween:Play();
return Tween, Tween.Completed:Wait();
end;
Anchored = function(HumRSelf, bool)
if not HumRSelf.Parent then return; end;
HumRSelf.Anchored = bool;
end;
GetSeat = function(HumSelf)
return HumSelf and HumSelf.SeatPart;
end;
HumanoidEquip = function(HumSelf, tool)
return HumSelf and HumSelf:EquipTool(tool);
end;
findPrompt = function(tbl, condition)
for _, v in pairs(tbl) do
if IsA(v, "ProximityPrompt") and condition(v) then
return v;
end;
end;
end;
dist = function(position)
return DistanceFromCharacter(selff, position);
end;
distOf = function(part1, part2, distance)
if part1 and IsA(part1, "BasePart") and part2 and IsA(part2, "BasePart") then
local part1Position = part1.Position;
local part2Position = part2.Position;
local partDistance = (part1Position - part2Position).Magnitude;
return partDistance <= distance;
else
return false;
end;
end;
};
end;
AssetStorage.ClientPackage = function()
local L = GetService(game, "Lighting");
local ExposureCompensation = L.ExposureCompensation;
local FloatResolvePos = CFr(0, -3.1, 0);
local FloatPartParent = Workspace;
local FloatPart = Instancen("Part");
FloatPart.Name = "selcRootX";
FloatPart.Anchored = true;
FloatPart.Transparency = 1;
FloatPart.Size = Vec3(2, 0.2, 1.5);
FloatPart.Material = Enum.Material.Grass;
local SavedHumSelf, WalkSpeed = nil, 16;
local WalkSpeedConnection, savedHumanoid = nil, nil;
return {
ChangeFloatParent = function(instance)
FloatPartParent = instance;
end;
UpdatePosition = function(config, isForce, HumRSelf)
if not HumRSelf then return; end;
if config or isForce == true then
if FloatPart.Parent ~= FloatPartParent then FloatPart.Parent = FloatPartParent; end;
FloatPart.CFrame = HumRSelf.CFrame * FloatResolvePos;
elseif not config or isForce == false then
if FloatPart.Parent ~= nil then FloatPart.Parent = nil; end;
end;
end;
Noclip = function(config, childs)
if not config or not childs or #childs == 0 then return; end;
for i=1, #childs do
local v = childs[i]; if IsA(v, "BasePart") and v.Name ~= "bobber" then
v.CanCollide = false;
end;
end;
end;
Brightness = function(config)
if not config then
if L.ExposureCompensation ~= ExposureCompensation then
L.ExposureCompensation = ExposureCompensation;
end;
return;
end; if L.ExposureCompensation ~= 2 then
L.ExposureCompensation = 2;
end;
end;
WalkSpeedC = function(self, newHumanoid)
if not newHumanoid then return; end;
self.WalkSpeedDC();
savedHumanoid = newHumanoid;
WalkSpeedConnection = newHumanoid:GetPropertyChangedSignal("WalkSpeed"):Connect(function()
if not EnabledWalkSpeed or newHumanoid.WalkSpeed == WalkSpeed then return; end;
newHumanoid.WalkSpeed = WalkSpeed;
end);
if EnabledWalkSpeed and WalkSpeed then
newHumanoid.WalkSpeed = WalkSpeed;
end;
end;
SetWalkSpeed = function(number)
WalkSpeed = number; if EnabledWalkSpeed and savedHumanoid then
savedHumanoid.WalkSpeed = WalkSpeed;
end;
end;
RunWalkSpeed = function(bool)
EnabledWalkSpeed = bool;
if EnabledWalkSpeed and savedHumanoid and WalkSpeed then
savedHumanoid.WalkSpeed = WalkSpeed;
end;
end;
WalkSpeedDC = function()
if WalkSpeedConnection then
WalkSpeedConnection:Disconnect();
WalkSpeedConnection = nil;
end;
end;
SetJumpPower = function(config, power, HumSelf)
if not config or not HumSelf then
if HumSelf and HumSelf.JumpPower ~= 50 then
HumSelf.JumpPower = 50;
end; return;
end;
if HumSelf.JumpPower ~= power then HumSelf.JumpPower = power; end;
if not HumSelf.UseJumpPower then HumSelf.UseJumpPower = true; end;
end;
};
end;
AssetStorage.PromptPackage = function()
local ProximityPromptService = GetService(game, "ProximityPromptService");
local IsPause, originalUNC, prompts = false, fireproximityprompt, {};
local Validation, CFR004 = function(prompt) return true; end, CFr(0,0,-4);
local Prompts = {}; ProximityPromptService.PromptShown:Connect(function(v)
if not Validation(v) or not GG.Configs then return; end;
if not Prompts[v] then Prompts[v] = v.HoldDuration; end;
if GG.Configs.Client.Client["Instant Prompt"] and not IsPause then
v.HoldDuration = 0;
else
v.HoldDuration = Prompts[v];
end;
end);
local W, H = GetService(game, "Workspace"), GetService(game, "RunService");
local AttachP = FindFirstChild(Workspace, "LuaUNCPackage_Prompt") or Instancen("Part", Workspace);
AttachP.Anchored = true; AttachP.CanTouch = false;
AttachP.CanCollide = false; AttachP.CanQuery = false;
AttachP.CastShadow = false; AttachP.Size = Vec3(0.01, 0.01, 0.01);
AttachP.Name = "LuaUNCPackage_Prompt"; AttachP.Transparency = 1;
local fireprompt = function(prompt, skip)
local Cam = W.CurrentCamera;
prompt.MaxActivationDistance = 250;
prompt.Enabled = true;
prompt.RequiresLineOfSight = false;
prompt.Parent = AttachP;
local spam = tk.spawn(function()
if skip <= 0 then
while true do
twait(0.2);
AttachP.CFrame = Cam.CFrame * CFR004;
prompt.HoldDuration = skip;
prompt:InputHoldBegin();
H.RenderStepped:Wait();
AttachP.CFrame = Cam.CFrame * CFR004;
prompt:InputHoldEnd();
end;
else
while true do
AttachP.CFrame = Cam.CFrame * CFR004;
prompt.HoldDuration = skip;
prompt:InputHoldBegin();
twait(skip);
AttachP.CFrame = Cam.CFrame * CFR004;
prompt:InputHoldEnd(); twait(0.5);
end;
end;
end); prompt.Triggered:Wait();
local suc = false; repeat
suc = pcall(function()
tk.cancel(spam);
end); twait();
until suc;
local Reset = prompts[prompt];
prompt.Parent = Reset.Parent;
prompt.HoldDuration = Reset.HoldDuration;
prompt.MaxActivationDistance = Reset.MaxActivationDistance;
prompt.RequiresLineOfSight = Reset.RequiresLineOfSight;
end;
local LuaUNC = function(prompt, amount, skip)
if skip == nil then skip = true; end;
if not prompts[prompt] then
local Info = {};
Info.HoldDuration = prompt.HoldDuration;
Info.MaxActivationDistance = prompt.MaxActivationDistance;
Info.RequiresLineOfSight = prompt.RequiresLineOfSight;
Info.Parent = prompt.Parent;
prompts[prompt] = Info;
end; for i=1, amount do
fireprompt(prompt, if skip then -5 else prompt.HoldDuration);
end;
end; return {
ChangeValidation = function(fn) Validation = fn; end;
UpdateState = function(state) IsPause = state; end;
SwitchUNC = function(to)
if to == "Lua" then
GG.fireproximityprompt = LuaUNC;
else
GG.fireproximityprompt = originalUNC;
end;
end;
SimpleFire = LuaUNC;
};
end;
AssetStorage.ESPPackage = function()
local FindFirstChildWhichIsA = game.FindFirstChildWhichIsA;
local DIM1010 = Dim2(1, 0, 1, 0);
local mmax = math.max;
local mmin = math.min;
local BoundingBoxOffsets = {
Vec3(-1, -1, -1),
Vec3(-1, -1, 1),
Vec3(-1, 1, -1),
Vec3(-1, 1, 1),
Vec3( 1, -1, -1),
Vec3( 1, -1, 1),
Vec3( 1, 1, -1),
Vec3( 1, 1, 1),
};
local Original, Classes = {
Depth = Enum.HighlightDepthMode.AlwaysOnTop;
WHITE = WHITE;
RED = fromRGB(255, 0, 0);
VEC5 = Vec3(5,5,5);
Method = "Box";
}, {}; GG.ESPObjects = Classes;
local function ResolveParent(obj, isBasepartOnly)
if not obj or not obj.Parent then return; end;
local Resolved = nil;
if IsA(obj, "Model") then
if isBasepartOnly then
Resolved = obj.PrimaryPart;
Resolved = Resolved or FindFirstChildWhichIsA(obj, "BasePart");
else
Resolved = obj;
end;
elseif IsA(obj, "BasePart") then
Resolved = obj;
end; return Resolved;
end;
local function GetBound(obj, Cam)
local ReadCF, ReadSi = nil, nil;
if IsA(obj, "Model") then
ReadCF, ReadSi = obj:GetBoundingBox();
else
ReadCF = obj.CFrame;
ReadSi = obj.Size;
end;
if not ReadCF or not ReadSi then
return nil,nil,false;
end;
local Half = ReadSi/2;
local MinX, MinY = 1e5, 1e5;
local MaxX, MaxY = -1e5, -1e5;
local Visible = false;
for i = 1, 8 do
local ScreenPos, OnScreen = Cam:WorldToViewportPoint(ReadCF * (Half * BoundingBoxOffsets[i]));
if OnScreen then
Visible = true;
MinX = mmin(MinX, ScreenPos.X);
MinY = mmin(MinY, ScreenPos.Y);
MaxX = mmax(MaxX, ScreenPos.X);
MaxY = mmax(MaxY, ScreenPos.Y);
end;
end;
if not Visible then
return nil, nil, false;
end;
return Vec2(MaxX-MinX, MaxY-MinY), Vec2(MinX, MinY), Visible;
end;
local function CreateBox(parent, config, Data)
local Box = Instancen("BoxHandleAdornment", parent);
Box.Color3 = config.Color;
Box.AlwaysOnTop = true;
Box.Size = config.Size;
Box.Transparency = 0.5;
Box.Adornee = parent;
Box.ZIndex = 1;
local Billboard = Instancen("BillboardGui");
Billboard.StudsOffset = Vec3(0, config.Size.Y/2 + 1, 0);
Billboard.Size = Dim2(0, 100, 0, 30);
Billboard.AlwaysOnTop = true;
Billboard.Adornee = parent;
local Label = Instancen("TextLabel", Billboard);
Label.Font = Enum.Font.SourceSansBold;
Label.TextStrokeTransparency = 0.2;
Label.BackgroundTransparency = 1;
Label.TextColor3 = config.Color;
Label.Size = DIM1010;
Label.Text = config.Text;
Label.TextScaled = true;
if not config.BoxOnly then
Billboard.Parent = parent;
end;
Data.Box = Box;
Data.Billboard = Billboard;
Data.Label = Label;
Data.Destroy = function()
Box:Destroy();
Label:Destroy();
Billboard:Destroy();
Data.Box = nil;
Data.Billboard = nil;
Data.Label = nil;
end;
Data.SetVisibility = function(bool, allowBill)
if not parent.Parent then pcall(Data.Destroy); return; end;
local ShouldEmergencyClear = pcall(function()
Box.Parent = if bool then parent else nil;
Billboard.Parent = if bool and allowBill then parent else nil;
end);
if not ShouldEmergencyClear then
Data.Box = nil;
Data.Billboard = nil;
Data.Label = nil;
end;
end;
Data.UpdateColor = function(color)
Box.Color3 = color;
Label.TextColor3 = color;
end;
end;
local function CreateHighlight(parent, config, Data)
local Highlight = Instancen("Highlight", parent);
Highlight.Adornee = parent;
Highlight.FillColor = config.Color;
Highlight.OutlineColor = config.OutlineColor or Original.WHITE;
Highlight.DepthMode = config.Depth or Original.Depth;
local Billboard = Instancen("BillboardGui");
Billboard.StudsOffset = Vec3(0, config.Size.Y/2 + 1, 0);
Billboard.Size = Dim2(0, 100, 0, 30);
Billboard.AlwaysOnTop = true;
Billboard.Adornee = parent;
local Label = Instancen("TextLabel", Billboard);
Label.Font = Enum.Font.SourceSansBold;
Label.TextStrokeTransparency = 0.2;
Label.BackgroundTransparency = 1;
Label.TextColor3 = config.Color;
Label.Size = DIM1010;
Label.Text = config.Text;
Label.TextScaled = true;
if not config.BoxOnly then
Billboard.Parent = parent;
end;
Data.Billboard = Billboard;
Data.Highlight = Highlight;
Data.Destroy = function()
Highlight:Destroy();
Label:Destroy();
Billboard:Destroy();
Data.Billboard = nil;
Data.Highlight = nil;
end;
Data.SetVisibility = function(bool, allowBill)
Highlight.Parent = if bool then parent else nil;
Billboard.Parent = if bool and allowBill then parent else nil;
Highlight.Enabled = bool;
end;
Data.UpdateColor = function(color)
Highlight.FillColor = color;
Label.TextColor3 = color;
end;
end;
local function Create2D(parent, config, Data)
local Outline = Drawing.new("Square");
Outline.Thickness = 3;
Outline.Filled = false;
Outline.Visible = false;
Outline.Transparency = 1;
Outline.Color = config.OutlineColor or config.Color or Original.WHITE;
local Fill = Drawing.new("Square");
Fill.Thickness = 1;
Fill.Filled = false;
Fill.Visible = false;
Fill.Transparency = 1;
Fill.Color = config.Color;
local ForceInvis = false;
Data.Fill = Fill;
Data.Outline = Outline;
Data.SetVisibility = function(bool)
Outline.Visible = bool;
Fill.Visible = bool;
ForceInvis = if not bool then true else false;
end;
Data.Destroy = function()
Outline:Remove();
Fill:Remove();
Data.Outline = nil;
Data.Fill = nil;
end;
Data.Visualize = function(self, Camera)
if not parent or not parent.Parent then
return self.Destroy();
end;
local Size, Position, Visible = GetBound(parent, Camera);
if ForceInvis or not Visible then
Outline.Visible = false;
Fill.Visible = false;
return;
end;
Outline.Visible = true;
Fill.Visible = true;
Outline.Size = Size;
Outline.Position = Position;
Fill.Size = Size;
Fill.Position = Position;
end;
Data.UpdateColor = function(color)
Outline.Color = color;
Fill.Color = color;
end;
end;
return {
ESP = function(Class, Object, config)
if typeof(Object) ~= 'Instance' then return; end;
if not Classes[Class] then Classes[Class] = setmetatable({}, { __mode = "k" }); end;
local OldData = Classes[Class][Object]; if OldData then
if OldData.Mode == (config.Method or Original.Method) then
return OldData;
end; OldData.Destroy();
end; OldData = nil;
config = config or {};
config.Color = config.Color or Original.WHITE;
config.Size = config.Size or Original.VEC5;
config.Text = config.Text or "-";
local Method = config.Method or Original.Method;
local NewData = {Object = Object, Mode=Method};
local Parent = ResolveParent(
Object,
config.isBasepartOnly
); if not Parent then return; end;
if Method == "Box" then
CreateBox(Parent, config, NewData);
elseif Method == "Highlight" then
CreateHighlight(Parent, config, NewData);
elseif Method == "2D" then
Create2D(Parent, config, NewData);
end;
Classes[Class][Object] = NewData;
return NewData;
end;
Visible = function(Class, bool, allowBill)
local TargetClass = Classes[Class];
if not TargetClass then return; end;
for i,v in pairs(TargetClass) do
if not i or not i.Parent then
v.Destroy();
else
v.SetVisibility(bool, allowBill);
end;
end;
end;
Method = function(new)
Original.Method = new;
end;
};
end;
AssetStorage.CoruTask = function()
local coru = coroutine;
local corus = coru.status;
local corur = coru.resume;
local coruc = coru.create;
local coruy = coru.yield;
local suspendedRoute, Routines = {}, {};
return {
New = function(name, fn)
if not Routines[name] then Routines[name] = coruc(fn); end;
end;
Handle = function(m)
if not suspendedRoute[m] then return; end;
if corus(Routines[m]) == 'suspended' then
suspendedRoute[m] = nil;
return corur(Routines[m]);
end;
end;
Close = function(name)
suspendedRoute[name] = true; return coruy(Routines[name]);
end;
APC = function(str, fn, pids, rfn)
if str == "if not in" then
if not tblef(pids, PlaceId) then
if fn[rfn] then
fn[rfn] = nil;
end;
end;
elseif tblef(pids, PlaceId) then
if fn[rfn] then
fn[rfn] = nil;
end;
end;
end;
Init = function(WindUI)
for name, v in pairs(Routines) do
twait(0.2); WindUI:Notify({
Title = "Thread",
Content = "New thread has been added to Script Core: " .. name .. "\n" .. tostring(v),
Icon = "circle-alert",
Duration = 10,
}); corur(v);
end; coruc = nil; coru = nil;
end;
};
end;
AssetStorage.QueuePack = function()
local queueonteleport = queue_on_teleport or queueonteleport;
local serialize = nil; serialize = function(tbl, indent)
indent = indent or ""
local result = "{\n"
for k,v in pairs(tbl) do
local key = (type(k) == "string") and strformat("[%q]", k) or "["..tostring(k).."]";
if type(v) == "table" then
result ..= indent.." "..key.." = "..serialize(v, indent.." ")..";\n";
elseif type(v) == "string" then
result ..= indent.." "..key.." = "..strformat("%q", v)..";\n";
else
result ..= indent.." "..key.." = "..tostring(v)..";\n";
end;
end; result ..= indent.."}";
return result;
end;
local QUEUE_INFO = {};
local src = [[getgenv().QUEUE_INFO = {]];
return {
SetInfo = function(i,v)
QUEUE_INFO[i] = v;
end;
Init = function()
for k, v in pairs(QUEUE_INFO) do
src ..= ("[%q] = %q;"):format(tostring(k), tostring(v));
end; src ..= [[}]];
src ..= "getgenv().Configs = " .. serialize(GG.Configs);
src ..= "getgenv().LoaderSettings = " .. serialize(GG.LoaderSettings);
src ..= 'loadstring(game:HttpGet("https://raw.githubusercontent.com/RealTTJY/Studio.Hubrefs/heads/main/APIs/M.lua"))()';
queueonteleport(src);
end;
};
end;
------------- KeyUI -------------
AssetStorage.KeyPackage = function()
local NICEPARENT = gethui();
local CROP = Enum.ScaleType.Crop;
local SLICE = Enum.ScaleType.Slice;
local AUTO_Y = Enum.AutomaticSize.Y;
local AUTO_X = Enum.AutomaticSize.X;
local AutoXY = Enum.AutomaticSize.XY;
local ENUMSCREENONE = Enum.ScreenInsets.None;
local LAYOUTORDER = Enum.SortOrder.LayoutOrder;
local ENUMZISEBEHAVIOR = Enum.ZIndexBehavior.Sibling;
local VERTICALCENTER = Enum.VerticalAlignment.Center;
local FILL_HOR = Enum.FillDirection.Horizontal;
local HOR_CENTER = Enum.HorizontalAlignment.Center;
local HOR_RIGHT = Enum.HorizontalAlignment.Right;
local TEXTX_LEFT = Enum.TextXAlignment.Left;
local FONTW_MED = Enum.FontWeight.Medium;
local FONTW_SEMI = Enum.FontWeight.SemiBold;
local FONTS_NORM = Enum.FontStyle.Normal;
local EASE_QUAD = Enum.EasingStyle.Quad;
local EASE_OUT = Enum.EasingDirection.Out;
local EASE_IN = Enum.EasingDirection.In;
local AUTO_NONE = Enum.AutomaticSize.None;
local RECTN521 = Rectn(512, 512, 512, 512);
local RECTN256 = Rectn(256, 256, 256, 256);
local DIM1010 = Dim2(1, 0, 1, 0);
local DIM05 = Dim2(0.5, 0, 0.5, 0);
local VEC05 = Vec2(0.5, 0.5);
local COL_1 = fromRGB(25, 25, 28);
local FONT121 = Fnew("rbxassetid://12187365364", FONTW_SEMI, FONTS_NORM);
local IMG809 = "rbxassetid://80999662900595";
local IMG117 = "rbxassetid://117788349049947";
local IMGSHA = "rbxassetid://84825982946844";
return {
newCopy = function()
local G2L = {};
G2L["1"] = Instancen("ScreenGui", NICEPARENT);
G2L["1"].IgnoreGuiInset = true;
G2L["1"].ScreenInsets = ENUMSCREENONE;
G2L["1"].Name = "MultiKey";
G2L["1"].ZIndexBehavior = ENUMZISEBEHAVIOR;
G2L["1"].ResetOnSpawn = false;
G2L["2"] = Instancen("ImageLabel", G2L["1"]);
G2L["2"].ZIndex = 9999;
G2L["2"].BorderSizePixel = 0;
G2L["2"].SliceCenter = RECTN256;
G2L["2"].SliceScale = 0.08594;
G2L["2"].BackgroundColor3 = WHITE;
G2L["2"].ScaleType = SLICE;
G2L["2"].AutomaticSize = AutoXY;
G2L["2"].ImageColor3 = COL_1;
G2L["2"].AnchorPoint = VEC05;
G2L["2"].Image = IMG809;
G2L["2"].BackgroundTransparency = 1;
G2L["2"].Position = DIM05;
G2L["3"] = Instancen("Frame", G2L["2"]);
G2L["3"].ZIndex = 99999;
G2L["3"].BorderSizePixel = 0;
G2L["3"].BackgroundColor3 = COL_1;
G2L["3"].AutomaticSize = AUTO_Y;
G2L["3"].Size = Dim2(0, 430, 0, 0);
G2L["3"].BackgroundTransparency = 1;
G2L["4"] = Instancen("UIPadding", G2L["3"]);
G2L["5"] = Instancen("Frame", G2L["3"]);
G2L["5"].BorderSizePixel = 0;
G2L["5"].BackgroundColor3 = WHITE;
G2L["5"].Size = DIM1010;
G2L["5"].BackgroundTransparency = 1;
G2L["6"] = Instancen("Frame", G2L["5"]);
G2L["6"].BorderSizePixel = 0;
G2L["6"].BackgroundColor3 = WHITE;
G2L["6"].Size = DIM1010;
G2L["6"].BackgroundTransparency = 1;
G2L["7"] = Instancen("UIListLayout", G2L["6"]);
G2L["7"].Padding = Dim(0, 18);
G2L["7"].SortOrder = LAYOUTORDER;
G2L["8"] = Instancen("Frame", G2L["6"]);
G2L["8"].BorderSizePixel = 0;
G2L["8"].BackgroundColor3 = WHITE;
G2L["8"].AutomaticSize = AUTO_Y;
G2L["8"].Size = Dim2(1, 0, 0, 0);
G2L["8"].BackgroundTransparency = 1;
G2L["9"] = Instancen("Frame", G2L["8"]);
G2L["9"].BorderSizePixel = 0;
G2L["9"].BackgroundColor3 = WHITE;
G2L["9"].AutomaticSize = AutoXY;
G2L["9"].BackgroundTransparency = 1;
G2L.a = Instancen("UIListLayout", G2L["9"]);
G2L.a.Padding = Dim(0, 14);
G2L.a.VerticalAlignment = VERTICALCENTER;
G2L.a.SortOrder = LAYOUTORDER;
G2L.a.FillDirection = FILL_HOR;
G2L.b = Instancen("Frame", G2L["9"]);
G2L.b.BorderSizePixel = 0;
G2L.b.BackgroundColor3 = WHITE;
G2L.b.Size = Dim2(0, 24, 0, 24);
G2L.b.LayoutOrder = -1;
G2L.b.BackgroundTransparency = 1;
G2L.c = Instancen("ImageLabel", G2L.b);
G2L.c.BorderSizePixel = 0;
G2L.c.BackgroundColor3 = WHITE;
G2L.c.ScaleType = CROP;
G2L.c.Image = "rbxassetid://77771201330939";
G2L.c.ImageRectSize = Vec2(96, 96);
G2L.c.Size = DIM1010;
G2L.c.BackgroundTransparency = 1;
G2L.c.ImageRectOffset = Vec2(0, 768);
G2L.d = Instancen("UICorner", G2L.c);
G2L.d.CornerRadius = Dim(0, 18);
G2L.e = Instancen("TextLabel", G2L["9"]);
G2L.e.BorderSizePixel = 0;
G2L.e.TextSize = 20;
G2L.e.BackgroundColor3 = WHITE;
G2L.e.FontFace = FONT121;
G2L.e.TextColor3 = WHITE;
G2L.e.BackgroundTransparency = 1;
G2L.e.RichText = true;
G2L.e.Text = "Select Service";
G2L.e.AutomaticSize = AutoXY;
G2L.f = Instancen("Frame", G2L["6"]);
G2L.f.BorderSizePixel = 0;
G2L.f.BackgroundColor3 = WHITE;
G2L.f.Size = Dim2(1, 0, 0, 42);
G2L.f.BackgroundTransparency = 1;
G2L["10"] = Instancen("UIListLayout", G2L.f);
G2L["10"].HorizontalAlignment = HOR_CENTER;
G2L["10"].Padding = Dim(0, 9);
G2L["10"].SortOrder = LAYOUTORDER;
G2L["10"].FillDirection = FILL_HOR;
G2L["11"] = Instancen("TextButton", G2L.f);
G2L["11"].BorderSizePixel = 0;
G2L["11"].TextColor3 = WHITE;
G2L["11"].AutoButtonColor = false;
G2L["11"].TextSize = 14;
G2L["11"].BackgroundColor3 = WHITE;
G2L["11"].Size = Dim2(0.45, 0, 1, 0);
G2L["11"].BackgroundTransparency= 1;
G2L["11"].LayoutOrder = 2;
G2L["11"].Text = "";
G2L["11"].Position = Dim2(-0.00377, 0, 0, 0);
G2L["12"] = Instancen("ImageLabel", G2L["11"]);
G2L["12"].BorderSizePixel = 0;
G2L["12"].SliceCenter = RECTN256;
G2L["12"].SliceScale = 0.03906;
G2L["12"].BackgroundColor3 = WHITE;
G2L["12"].ScaleType = SLICE;
G2L["12"].ImageTransparency = 1;
G2L["12"].ImageColor3 = fromRGB(83, 83, 92);
G2L["12"].Image = IMG809;
G2L["12"].Size = DIM1010;
G2L["12"].BackgroundTransparency= 1;
G2L["12"].Name = "Squircle";
G2L["13"] = Instancen("ImageLabel", G2L["11"]);
G2L["13"].BorderSizePixel = 0;
G2L["13"].SliceCenter = RECTN256;
G2L["13"].SliceScale = 0.03906;
G2L["13"].BackgroundColor3 = WHITE;
G2L["13"].ScaleType = SLICE;
G2L["13"].ImageTransparency = 0.95;
G2L["13"].Image = IMG809;
G2L["13"].Size = DIM1010;
G2L["13"].BackgroundTransparency= 1;
G2L["13"].Name = "Special";
G2L["14"] = Instancen("ImageLabel", G2L["11"]);
G2L["14"].BorderSizePixel = 0;
G2L["14"].SliceCenter = RECTN521;
G2L["14"].SliceScale = 0.01953;
G2L["14"].BackgroundColor3 = WHITE;
G2L["14"].ScaleType = SLICE;
G2L["14"].ImageColor3 = BLACK;
G2L["14"].AnchorPoint = VEC05;
G2L["14"].Image = IMGSHA;
G2L["14"].Size = Dim2(1, 3, 1, 3);
G2L["14"].BackgroundTransparency= 1;
G2L["14"].Name = "Shadow";
G2L["14"].Position = DIM05;
G2L["15"] = Instancen("ImageLabel", G2L["11"]);
G2L["15"].BorderSizePixel = 0;
G2L["15"].SliceCenter = RECTN256;
G2L["15"].SliceScale = 0.03906;
G2L["15"].BackgroundColor3 = WHITE;
G2L["15"].ScaleType = SLICE;
G2L["15"].ImageTransparency = 0.85;
G2L["15"].Image = IMG117;
G2L["15"].Size = DIM1010;
G2L["15"].BackgroundTransparency= 1;
G2L["16"] = Instancen("ImageLabel", G2L["11"]);
G2L["16"].BorderSizePixel = 0;
G2L["16"].SliceCenter = RECTN256;
G2L["16"].SliceScale = 0.03906;
G2L["16"].BackgroundColor3 = WHITE;
G2L["16"].ScaleType = SLICE;
G2L["16"].ImageTransparency = 1;
G2L["16"].Image = IMG809;
G2L["16"].Size = DIM1010;
G2L["16"].BackgroundTransparency= 1;
G2L["16"].Name = "Frame";
G2L["17"] = Instancen("UIPadding", G2L["16"]);
G2L["17"].PaddingRight = Dim(0, 12);
G2L["17"].PaddingLeft = Dim(0, 12);
G2L["18"] = Instancen("UIListLayout", G2L["16"]);
G2L["18"].HorizontalAlignment = HOR_CENTER;
G2L["18"].Padding = Dim(0, 8);
G2L["18"].VerticalAlignment = VERTICALCENTER;
G2L["18"].SortOrder = LAYOUTORDER;
G2L["18"].FillDirection = FILL_HOR;
G2L["19"] = Instancen("TextLabel", G2L["16"]);
G2L["19"].BorderSizePixel = 0;
G2L["19"].TextSize = 18;
G2L["19"].BackgroundColor3 = WHITE;
G2L["19"].FontFace = FONT121;
G2L["19"].TextColor3 = WHITE;
G2L["19"].BackgroundTransparency= 1;
G2L["19"].RichText = true;
G2L["19"].Text = "Linkvertise ( Key )";
G2L["19"].AutomaticSize = AutoXY;
G2L["1a"] = Instancen("TextButton", G2L.f);
G2L["1a"].BorderSizePixel = 0;
G2L["1a"].TextColor3 = WHITE;
G2L["1a"].AutoButtonColor = false;
G2L["1a"].TextSize = 14;
G2L["1a"].BackgroundColor3 = WHITE;
G2L["1a"].Size = Dim2(0.45, 0, 1, 0);
G2L["1a"].BackgroundTransparency= 1;
G2L["1a"].LayoutOrder = 2;
G2L["1a"].Text = "";
G2L["1a"].Position = Dim2(-0.00377, 0, 0, 0);
G2L["1b"] = Instancen("ImageLabel", G2L["1a"]);
G2L["1b"].BorderSizePixel = 0;
G2L["1b"].SliceCenter = RECTN256;
G2L["1b"].SliceScale = 0.03906;
G2L["1b"].BackgroundColor3 = WHITE;
G2L["1b"].ScaleType = SLICE;
G2L["1b"].ImageTransparency = 1;
G2L["1b"].ImageColor3 = fromRGB(83, 83, 92);
G2L["1b"].Image = IMG809;
G2L["1b"].Size = DIM1010;
G2L["1b"].BackgroundTransparency= 1;
G2L["1b"].Name = "Squircle";
G2L["1c"] = Instancen("ImageLabel", G2L["1a"]);
G2L["1c"].BorderSizePixel = 0;
G2L["1c"].SliceCenter = RECTN256;
G2L["1c"].SliceScale = 0.03906;
G2L["1c"].BackgroundColor3 = WHITE;
G2L["1c"].ScaleType = SLICE;
G2L["1c"].ImageTransparency = 0.95;
G2L["1c"].Image = IMG809;
G2L["1c"].Size = DIM1010;
G2L["1c"].BackgroundTransparency = 1;
G2L["1c"].Name = "Special";
G2L["1d"] = Instancen("ImageLabel", G2L["1a"]);
G2L["1d"].BorderSizePixel = 0;
G2L["1d"].SliceCenter = RECTN521;
G2L["1d"].SliceScale = 0.01953;
G2L["1d"].BackgroundColor3 = WHITE;
G2L["1d"].ScaleType = SLICE;
G2L["1d"].ImageColor3 = BLACK;
G2L["1d"].AnchorPoint = VEC05;
G2L["1d"].Image = IMGSHA;
G2L["1d"].Size = Dim2(1, 3, 1, 3);
G2L["1d"].BackgroundTransparency = 1;
G2L["1d"].Name = "Shadow";
G2L["1d"].Position = DIM05;
G2L["1e"] = Instancen("ImageLabel", G2L["1a"]);
G2L["1e"].BorderSizePixel = 0;
G2L["1e"].SliceCenter = RECTN256;
G2L["1e"].SliceScale = 0.03906;
G2L["1e"].BackgroundColor3 = WHITE;
G2L["1e"].ScaleType = SLICE;
G2L["1e"].ImageTransparency = 0.85;
G2L["1e"].Image = IMG117;
G2L["1e"].Size = DIM1010;
G2L["1e"].BackgroundTransparency = 1;
G2L["1f"] = Instancen("ImageLabel", G2L["1a"]);
G2L["1f"].BorderSizePixel = 0;
G2L["1f"].SliceCenter = RECTN256;
G2L["1f"].SliceScale = 0.03906;
G2L["1f"].BackgroundColor3 = WHITE;
G2L["1f"].ScaleType = SLICE;
G2L["1f"].ImageTransparency = 1;
G2L["1f"].Image = IMG809;
G2L["1f"].Size = DIM1010;
G2L["1f"].BackgroundTransparency = 1;
G2L["1f"].Name = "Frame";
G2L["20"] = Instancen("UIPadding", G2L["1f"]);
G2L["20"].PaddingRight = Dim(0, 12);
G2L["20"].PaddingLeft = Dim(0, 12);
G2L["21"] = Instancen("UIListLayout", G2L["1f"]);
G2L["21"].HorizontalAlignment = HOR_CENTER;
G2L["21"].Padding = Dim(0, 8);
G2L["21"].VerticalAlignment = VERTICALCENTER;
G2L["21"].SortOrder = LAYOUTORDER;
G2L["21"].FillDirection = FILL_HOR;
G2L["22"] = Instancen("TextLabel", G2L["1f"]);
G2L["22"].BorderSizePixel = 0;
G2L["22"].TextSize = 18;
G2L["22"].BackgroundColor3 = WHITE;
G2L["22"].FontFace = FONT121;
G2L["22"].TextColor3 = WHITE;
G2L["22"].BackgroundTransparency= 1;
G2L["22"].RichText = true;
G2L["22"].Text = "Work.ink ( Key )";
G2L["22"].AutomaticSize = AutoXY;
G2L["23"] = Instancen("UIPadding", G2L["6"]);
G2L["23"].PaddingTop = Dim(0, 16);
G2L["23"].PaddingRight = Dim(0, 16);
G2L["23"].PaddingLeft = Dim(0, 16);
G2L["23"].PaddingBottom = Dim(0, 16);
G2L["24"] = Instancen("Frame", G2L["6"]);
G2L["24"].BorderSizePixel = 0;
G2L["24"].BackgroundColor3 = WHITE;
G2L["24"].Size = Dim2(1, 0, 0, 42);
G2L["24"].LayoutOrder = 100;
G2L["24"].BackgroundTransparency= 1;
G2L["25"] = Instancen("UIListLayout", G2L["24"]);
G2L["25"].HorizontalAlignment = HOR_RIGHT;
G2L["25"].Padding = Dim(0, 9);
G2L["25"].SortOrder = LAYOUTORDER;
G2L["25"].FillDirection = FILL_HOR;
G2L["26"] = Instancen("TextButton", G2L["24"]);
G2L["26"].BorderSizePixel = 0;
G2L["26"].TextColor3 = WHITE;
G2L["26"].AutoButtonColor = false;
G2L["26"].TextSize = 14;
G2L["26"].BackgroundColor3 = WHITE;
G2L["26"].AutomaticSize = AUTO_X;
G2L["26"].Size = Dim2(0, 0, 1, 0);
G2L["26"].BackgroundTransparency= 1;
G2L["26"].LayoutOrder = 2;
G2L["26"].Text = "";
G2L["27"] = Instancen("ImageLabel", G2L["26"]);
G2L["27"].BorderSizePixel = 0;
G2L["27"].SliceCenter = RECTN256;
G2L["27"].SliceScale = 0.03906;
G2L["27"].BackgroundColor3 = WHITE;
G2L["27"].ScaleType = SLICE;
G2L["27"].ImageTransparency = 1;
G2L["27"].ImageColor3 = fromRGB(83, 83, 92);
G2L["27"].Image = IMG809;
G2L["27"].Size = DIM1010;
G2L["27"].BackgroundTransparency= 1;
G2L["27"].Name = "Squircle";
G2L["28"] = Instancen("ImageLabel", G2L["26"]);
G2L["28"].BorderSizePixel = 0;
G2L["28"].SliceCenter = RECTN256;
G2L["28"].SliceScale = 0.03906;
G2L["28"].BackgroundColor3 = WHITE;
G2L["28"].ScaleType = SLICE;
G2L["28"].ImageTransparency = 0.95;
G2L["28"].Image = IMG809;
G2L["28"].Size = DIM1010;
G2L["28"].BackgroundTransparency= 1;
G2L["28"].Name = "Special";
G2L["29"] = Instancen("ImageLabel", G2L["26"]);
G2L["29"].BorderSizePixel = 0;
G2L["29"].SliceCenter = RECTN521;
G2L["29"].SliceScale = 0.01953;
G2L["29"].BackgroundColor3 = WHITE;
G2L["29"].ScaleType = SLICE;
G2L["29"].ImageColor3 = BLACK;
G2L["29"].AnchorPoint = VEC05;
G2L["29"].Image = IMGSHA;
G2L["29"].Size = Dim2(1, 3, 1, 3);
G2L["29"].BackgroundTransparency= 1;
G2L["29"].Name = "Shadow";
G2L["29"].Position = DIM05;
G2L["2a"] = Instancen("ImageLabel", G2L["26"]);
G2L["2a"].BorderSizePixel = 0;
G2L["2a"].SliceCenter = RECTN256;
G2L["2a"].SliceScale = 0.03906;
G2L["2a"].BackgroundColor3 = WHITE;
G2L["2a"].ScaleType = SLICE;
G2L["2a"].ImageTransparency = 0.85;
G2L["2a"].Image = IMG117;
G2L["2a"].Size = DIM1010;
G2L["2a"].BackgroundTransparency= 1;
G2L["2b"] = Instancen("ImageLabel", G2L["26"]);
G2L["2b"].BorderSizePixel = 0;
G2L["2b"].SliceCenter = RECTN256;
G2L["2b"].SliceScale = 0.03906;
G2L["2b"].BackgroundColor3 = WHITE;
G2L["2b"].ScaleType = SLICE;
G2L["2b"].ImageTransparency = 1;
G2L["2b"].Image = IMG809;
G2L["2b"].Size = DIM1010;
G2L["2b"].BackgroundTransparency= 1;
G2L["2b"].Name = "Frame";
G2L["2c"] = Instancen("UIPadding", G2L["2b"]);
G2L["2c"].PaddingRight = Dim(0, 12);
G2L["2c"].PaddingLeft = Dim(0, 12);
G2L["2d"] = Instancen("UIListLayout", G2L["2b"]);
G2L["2d"].HorizontalAlignment = HOR_CENTER;
G2L["2d"].Padding = Dim(0, 8);
G2L["2d"].VerticalAlignment = VERTICALCENTER;
G2L["2d"].SortOrder = LAYOUTORDER;
G2L["2d"].FillDirection = FILL_HOR;
G2L["2e"] = Instancen("TextLabel", G2L["2b"]);
G2L["2e"].BorderSizePixel = 0;
G2L["2e"].TextSize = 18;
G2L["2e"].BackgroundColor3 = WHITE;
G2L["2e"].FontFace = FONT121;
G2L["2e"].TextColor3 = WHITE;
G2L["2e"].BackgroundTransparency= 1;
G2L["2e"].RichText = true;
G2L["2e"].Text = "Cancel";
G2L["2e"].AutomaticSize = AutoXY;
G2L["2f"] = Instancen("Frame", G2L["6"]);
G2L["2f"].BorderSizePixel = 0;
G2L["2f"].BackgroundColor3 = WHITE;
G2L["2f"].Size = Dim2(1, 0, 0, 42);
G2L["2f"].BackgroundTransparency= 1;
G2L["30"] = Instancen("UIListLayout", G2L["2f"]);
G2L["30"].HorizontalAlignment = HOR_CENTER;
G2L["30"].Padding = Dim(0, 9);
G2L["30"].SortOrder = LAYOUTORDER;
G2L["30"].FillDirection = FILL_HOR;
G2L["31"] = Instancen("TextButton", G2L["2f"]);
G2L["31"].BorderSizePixel = 0;
G2L["31"].TextColor3 = WHITE;
G2L["31"].AutoButtonColor = false;
G2L["31"].TextSize = 14;
G2L["31"].BackgroundColor3 = WHITE;
G2L["31"].Size = Dim2(0.45, 0, 1, 0);
G2L["31"].BackgroundTransparency= 1;
G2L["31"].LayoutOrder = 2;
G2L["31"].Text = "";
G2L["31"].Position = Dim2(-0.00377, 0, 0, 0);
G2L["32"] = Instancen("ImageLabel", G2L["31"]);
G2L["32"].BorderSizePixel = 0;
G2L["32"].SliceCenter = RECTN256;
G2L["32"].SliceScale = 0.03906;
G2L["32"].BackgroundColor3 = WHITE;
G2L["32"].ScaleType = SLICE;
G2L["32"].ImageTransparency = 1;
G2L["32"].ImageColor3 = fromRGB(83, 83, 92);
G2L["32"].Image = IMG809;
G2L["32"].Size = DIM1010;
G2L["32"].BackgroundTransparency= 1;
G2L["32"].Name = "Squircle";
G2L["33"] = Instancen("ImageLabel", G2L["31"]);
G2L["33"].BorderSizePixel = 0;
G2L["33"].SliceCenter = RECTN256;
G2L["33"].SliceScale = 0.03906;
G2L["33"].BackgroundColor3 = WHITE;
G2L["33"].ScaleType = SLICE;
G2L["33"].ImageTransparency = 0.95;
G2L["33"].Image = IMG809;
G2L["33"].Size = DIM1010;
G2L["33"].BackgroundTransparency= 1;
G2L["33"].Name = "Special";
G2L["34"] = Instancen("ImageLabel", G2L["31"]);
G2L["34"].BorderSizePixel = 0;
G2L["34"].SliceCenter = RECTN521;
G2L["34"].SliceScale = 0.01953;
G2L["34"].BackgroundColor3 = WHITE;
G2L["34"].ScaleType = SLICE;
G2L["34"].ImageColor3 = BLACK;
G2L["34"].AnchorPoint = VEC05;
G2L["34"].Image = IMGSHA;
G2L["34"].Size = Dim2(1, 3, 1, 3);
G2L["34"].BackgroundTransparency= 1;
G2L["34"].Name = "Shadow";
G2L["34"].Position = DIM05;
G2L["35"] = Instancen("ImageLabel", G2L["31"]);
G2L["35"].BorderSizePixel = 0;
G2L["35"].SliceCenter = RECTN256;
G2L["35"].SliceScale = 0.03906;
G2L["35"].BackgroundColor3 = WHITE;
G2L["35"].ScaleType = SLICE;
G2L["35"].ImageTransparency = 0.85;
G2L["35"].Image = IMG117;
G2L["35"].Size = DIM1010;
G2L["35"].BackgroundTransparency= 1;
G2L["36"] = Instancen("ImageLabel", G2L["31"]);
G2L["36"].BorderSizePixel = 0;
G2L["36"].SliceCenter = RECTN256;
G2L["36"].SliceScale = 0.03906;
G2L["36"].BackgroundColor3 = WHITE;
G2L["36"].ScaleType = SLICE;
G2L["36"].ImageTransparency = 1;
G2L["36"].Image = IMG809;
G2L["36"].Size = DIM1010;
G2L["36"].BackgroundTransparency= 1;
G2L["36"].Name = "Frame";
G2L["37"] = Instancen("UIPadding", G2L["36"]);
G2L["37"].PaddingRight = Dim(0, 12);
G2L["37"].PaddingLeft = Dim(0, 12);
G2L["38"] = Instancen("UIListLayout", G2L["36"]);
G2L["38"].HorizontalAlignment = HOR_CENTER;
G2L["38"].Padding = Dim(0, 8);
G2L["38"].VerticalAlignment = VERTICALCENTER;
G2L["38"].SortOrder = LAYOUTORDER;
G2L["38"].FillDirection = FILL_HOR;
G2L["39"] = Instancen("TextLabel", G2L["36"]);
G2L["39"].BorderSizePixel = 0;
G2L["39"].TextSize = 18;
G2L["39"].BackgroundColor3 = WHITE;
G2L["39"].FontFace = FONT121;
G2L["39"].TextColor3 = WHITE;
G2L["39"].BackgroundTransparency= 1;
G2L["39"].RichText = true;
G2L["39"].Text = "Common Fixes";
G2L["39"].AutomaticSize = AutoXY;
G2L["3a"] = Instancen("TextButton", G2L["2f"]);
G2L["3a"].BorderSizePixel = 0;
G2L["3a"].TextColor3 = WHITE;
G2L["3a"].AutoButtonColor = false;
G2L["3a"].TextSize = 14;
G2L["3a"].BackgroundColor3 = WHITE;
G2L["3a"].Size = Dim2(0.45, 0, 1, 0);
G2L["3a"].BackgroundTransparency= 1;
G2L["3a"].LayoutOrder = 2;
G2L["3a"].Text = "";
G2L["3a"].Position = Dim2(-0.00377, 0, 0, 0);
G2L["3b"] = Instancen("ImageLabel", G2L["3a"]);
G2L["3b"].BorderSizePixel = 0;
G2L["3b"].SliceCenter = RECTN256;
G2L["3b"].SliceScale = 0.03906;
G2L["3b"].BackgroundColor3 = WHITE;
G2L["3b"].ScaleType = SLICE;
G2L["3b"].ImageTransparency = 1;
G2L["3b"].ImageColor3 = fromRGB(83, 83, 92);
G2L["3b"].Image = IMG809;
G2L["3b"].Size = DIM1010;
G2L["3b"].BackgroundTransparency= 1;
G2L["3b"].Name = "Squircle";
G2L["3c"] = Instancen("ImageLabel", G2L["3a"]);
G2L["3c"].BorderSizePixel = 0;
G2L["3c"].SliceCenter = RECTN256;
G2L["3c"].SliceScale = 0.03906;
G2L["3c"].BackgroundColor3 = WHITE;
G2L["3c"].ScaleType = SLICE;
G2L["3c"].ImageTransparency = 0.95;
G2L["3c"].Image = IMG809;
G2L["3c"].Size = DIM1010;
G2L["3c"].BackgroundTransparency= 1;
G2L["3c"].Name = "Special";
G2L["3d"] = Instancen("ImageLabel", G2L["3a"]);
G2L["3d"].BorderSizePixel = 0;
G2L["3d"].SliceCenter = RECTN521;
G2L["3d"].SliceScale = 0.01953;
G2L["3d"].BackgroundColor3 = WHITE;
G2L["3d"].ScaleType = SLICE;
G2L["3d"].ImageColor3 = BLACK;
G2L["3d"].AnchorPoint = VEC05;
G2L["3d"].Image = IMGSHA;
G2L["3d"].Size = Dim2(1, 3, 1, 3);
G2L["3d"].BackgroundTransparency= 1;
G2L["3d"].Name = "Shadow";
G2L["3d"].Position = DIM05;
G2L["3e"] = Instancen("ImageLabel", G2L["3a"]);
G2L["3e"].BorderSizePixel = 0;
G2L["3e"].SliceCenter = RECTN256;
G2L["3e"].SliceScale = 0.03906;
G2L["3e"].BackgroundColor3 = WHITE;
G2L["3e"].ScaleType = SLICE;
G2L["3e"].ImageTransparency = 0.85;
G2L["3e"].Image = IMG117;
G2L["3e"].Size = DIM1010;
G2L["3e"].BackgroundTransparency= 1;
G2L["3f"] = Instancen("ImageLabel", G2L["3a"]);
G2L["3f"].BorderSizePixel = 0;
G2L["3f"].SliceCenter = RECTN256;
G2L["3f"].SliceScale = 0.03906;
G2L["3f"].BackgroundColor3 = WHITE;
G2L["3f"].ScaleType = SLICE;
G2L["3f"].ImageTransparency = 1;
G2L["3f"].Image = IMG809;
G2L["3f"].Size = DIM1010;
G2L["3f"].BackgroundTransparency= 1;
G2L["3f"].Name = "Frame";
G2L["40"] = Instancen("UIPadding", G2L["3f"]);
G2L["40"].PaddingRight = Dim(0, 12);
G2L["40"].PaddingLeft = Dim(0, 12);
G2L["41"] = Instancen("UIListLayout", G2L["3f"]);
G2L["41"].HorizontalAlignment = HOR_CENTER;
G2L["41"].Padding = Dim(0, 8);
G2L["41"].VerticalAlignment = VERTICALCENTER;
G2L["41"].SortOrder = LAYOUTORDER;
G2L["41"].FillDirection = FILL_HOR;
G2L["42"] = Instancen("TextLabel", G2L["3f"]);
G2L["42"].BorderSizePixel = 0;
G2L["42"].TextSize = 18;
G2L["42"].BackgroundColor3 = WHITE;
G2L["42"].FontFace = FONT121;
G2L["42"].TextColor3 = WHITE;
G2L["42"].BackgroundTransparency= 1;
G2L["42"].RichText = true;
G2L["42"].Text = "Supported Executors";
G2L["42"].AutomaticSize = AutoXY;
G2L["43"] = Instancen("UIScale", G2L["2"]);
G2L["44"] = Instancen("ImageLabel", G2L["2"]);
G2L["44"].BorderSizePixel = 0;
G2L["44"].SliceCenter = RECTN256;
G2L["44"].SliceScale = 0.08594;
G2L["44"].BackgroundColor3 = WHITE;
G2L["44"].ScaleType = SLICE;
G2L["44"].ImageTransparency = 0.9;
G2L["44"].Image = IMG117;
G2L["44"].Size = DIM1010;
G2L["44"].BackgroundTransparency= 1;
G2L["45"] = Instancen("UIGradient", G2L["44"]);
G2L["45"].Rotation = 90;
G2L["45"].Transparency = NSnew{NSKnew(0.000, 0),NSKnew(1.000, 1)};
G2L["26"].Activated:Connect(function()
G2L["1"]:Destroy(); G2L["1"] = nil;
G2L = nil;
end); G2L["11"].Activated:Connect(function()
G2L["1"]:Destroy(); G2L["1"] = nil;
G2L = nil;
return setc("https://pandadevelopment.net/getkey/ttjyhub?hwid="..gethwid());
end); G2L["1a"].Activated:Connect(function()
G2L["1"]:Destroy(); G2L["1"] = nil;
G2L = nil;
return setc("https://pandadevelopment.net/getkey/ttjyhub?hwid="..gethwid());
end); G2L["31"].Activated:Connect(function()
G2L["1"]:Destroy(); G2L["1"] = nil;
G2L = nil;
return setc("https://ttjy-studio.vercel.app/bugs");
end); G2L["3a"].Activated:Connect(function()
G2L["1"]:Destroy(); G2L["1"] = nil;
G2L = nil;
return setc("https://ttjy-studio.vercel.app/scripts");
end);
return G2L;
end;
new = function(arg)
local G2L = {};
local tbl = {};
local configu = {
Auth = arg and arg.Auth or emptyfunction;
GetKey = arg and arg.GetKey or emptyfunction;
};
local G2L = {};
G2L["1"] = Instancen("ScreenGui", NICEPARENT);
G2L["1"].IgnoreGuiInset = true;
G2L["1"].ScreenInsets = ENUMSCREENONE;
G2L["1"].Name = "FlowAuth";
G2L["1"].ZIndexBehavior = ENUMZISEBEHAVIOR;
G2L["1"].ResetOnSpawn = false;
G2L["2"] = Instancen("ImageLabel", G2L["1"]);
G2L["2"].ZIndex = 9999;
G2L["2"].BorderSizePixel = 0;
G2L["2"].SliceCenter = RECTN256;
G2L["2"].SliceScale = 0.08594;
G2L["2"].BackgroundColor3 = WHITE;
G2L["2"].ScaleType = SLICE;
G2L["2"].AutomaticSize = AutoXY;
G2L["2"].ImageColor3 = COL_1;
G2L["2"].AnchorPoint = VEC05;
G2L["2"].Image = IMG809;
G2L["2"].BackgroundTransparency = 1;
G2L["2"].Position = DIM05;
G2L["3"] = Instancen("Frame", G2L["2"]);
G2L["3"].ZIndex = 99999;
G2L["3"].BorderSizePixel = 0;
G2L["3"].BackgroundColor3 = COL_1;
G2L["3"].AutomaticSize = AUTO_Y;
G2L["3"].Size = Dim2(0, 430, 0, 0);
G2L["3"].BackgroundTransparency = 1;
G2L["4"] = Instancen("UIPadding", G2L["3"]);
G2L["5"] = Instancen("Frame", G2L["3"]);
G2L["5"].BorderSizePixel = 0;
G2L["5"].BackgroundColor3 = WHITE;
G2L["5"].Size = DIM1010;
G2L["5"].BackgroundTransparency = 1;
G2L["6"] = Instancen("Frame", G2L["5"]);
G2L["6"].BorderSizePixel = 0;
G2L["6"].BackgroundColor3 = WHITE;
G2L["6"].Size = DIM1010;
G2L["6"].BackgroundTransparency = 1;
G2L["7"] = Instancen("UIListLayout", G2L["6"]);
G2L["7"].Padding = Dim(0, 18);
G2L["7"].SortOrder = LAYOUTORDER;
G2L["8"] = Instancen("Frame", G2L["6"]);
G2L["8"].BorderSizePixel = 0;
G2L["8"].BackgroundColor3 = WHITE;
G2L["8"].AutomaticSize = AUTO_Y;
G2L["8"].Size = Dim2(1, 0, 0, 0);
G2L["8"].BackgroundTransparency = 1;
G2L["9"] = Instancen("Frame", G2L["8"]);
G2L["9"].BorderSizePixel = 0;
G2L["9"].BackgroundColor3 = WHITE;
G2L["9"].AutomaticSize = AutoXY;
G2L["9"].BackgroundTransparency = 1;
G2L.a = Instancen("UIListLayout", G2L["9"]);
G2L.a.Padding = Dim(0, 14);
G2L.a.VerticalAlignment = VERTICALCENTER;
G2L.a.SortOrder = LAYOUTORDER;
G2L.a.FillDirection = FILL_HOR;
G2L.b = Instancen("Frame", G2L["9"]);
G2L.b.BorderSizePixel = 0;
G2L.b.BackgroundColor3 = WHITE;
G2L.b.Size = Dim2(0, 24, 0, 24);
G2L.b.LayoutOrder = -1;
G2L.b.BackgroundTransparency = 1;
G2L.c = Instancen("ImageLabel", G2L.b);
G2L.c.BorderSizePixel = 0;
G2L.c.BackgroundColor3 = WHITE;
G2L.c.ScaleType = CROP;
G2L.c.Image = "rbxassetid://77771201330939";
G2L.c.ImageRectSize = Vec2(96, 96);
G2L.c.Size = DIM1010;
G2L.c.BackgroundTransparency = 1;
G2L.c.ImageRectOffset = Vec2(0, 768);
G2L.d = Instancen("UICorner", G2L.c);
G2L.d.CornerRadius = Dim(0, 18);
G2L.e = Instancen("TextLabel", G2L["9"]);
G2L.e.BorderSizePixel = 0;
G2L.e.TextSize = 20;
G2L.e.BackgroundColor3 = WHITE;
G2L.e.FontFace = FONT121;
G2L.e.TextColor3 = WHITE;
G2L.e.BackgroundTransparency = 1;
G2L.e.RichText = true;
G2L.e.Text = "Authentication";
G2L.e.AutomaticSize = AutoXY;
G2L.f = Instancen("TextLabel", G2L["6"]);
G2L.f.TextWrapped = true;
G2L.f.BorderSizePixel = 0;
G2L.f.TextSize = 18;
G2L.f.TextXAlignment = TEXTX_LEFT;
G2L.f.TextTransparency = 0.2;
G2L.f.BackgroundColor3 = WHITE;
G2L.f.FontFace = Fnew("rbxassetid://12187365364", FONTW_MED, FONTS_NORM);
G2L.f.TextColor3 = WHITE;
G2L.f.BackgroundTransparency = 1;
G2L.f.RichText = true;
G2L.f.Size = Dim2(1, 0, 0, 0);
G2L.f.Text = 'We are very sorry, to have this auth or key system but this means a lot to us, this is where you support our project. Linkvertise has "no" 1H waiting time.';
G2L.f.AutomaticSize = AUTO_Y;
G2L["10"] = Instancen("Frame", G2L["6"]);
G2L["10"].BorderSizePixel = 0;
G2L["10"].BackgroundColor3 = WHITE;
G2L["10"].Size = Dim2(1, 0, 0, 42);
G2L["10"].BackgroundTransparency= 1;
G2L["11"] = Instancen("UIListLayout", G2L["10"]);
G2L["11"].HorizontalAlignment = HOR_RIGHT;
G2L["11"].Padding = Dim(0, 9);
G2L["11"].SortOrder = LAYOUTORDER;
G2L["11"].FillDirection = FILL_HOR;
G2L["12"] = Instancen("TextButton", G2L["10"]);
G2L["12"].BorderSizePixel = 0;
G2L["12"].TextColor3 = WHITE;
G2L["12"].AutoButtonColor = false;
G2L["12"].TextSize = 14;
G2L["12"].BackgroundColor3 = WHITE;
G2L["12"].AutomaticSize = AUTO_X;
G2L["12"].Size = Dim2(0, 0, 1, 0);
G2L["12"].BackgroundTransparency= 1;
G2L["12"].LayoutOrder = 2;
G2L["12"].Text = "";
G2L["13"] = Instancen("ImageLabel", G2L["12"]);
G2L["13"].BorderSizePixel = 0;
G2L["13"].SliceCenter = RECTN256;
G2L["13"].SliceScale = 0.03906;
G2L["13"].BackgroundColor3 = WHITE;
G2L["13"].ScaleType = SLICE;
G2L["13"].ImageTransparency = 1;
G2L["13"].ImageColor3 = fromRGB(83, 83, 92);
G2L["13"].Image = IMG809;
G2L["13"].Size = DIM1010;
G2L["13"].BackgroundTransparency= 1;
G2L["13"].Name = "Squircle";
G2L["14"] = Instancen("ImageLabel", G2L["12"]);
G2L["14"].BorderSizePixel = 0;
G2L["14"].SliceCenter = RECTN256;
G2L["14"].SliceScale = 0.03906;
G2L["14"].BackgroundColor3 = WHITE;
G2L["14"].ScaleType = SLICE;
G2L["14"].ImageTransparency = 0.95;
G2L["14"].Image = IMG809;
G2L["14"].Size = DIM1010;
G2L["14"].BackgroundTransparency= 1;
G2L["14"].Name = "Special";
G2L["15"] = Instancen("ImageLabel", G2L["12"]);
G2L["15"].BorderSizePixel = 0;
G2L["15"].SliceCenter = RECTN521;
G2L["15"].SliceScale = 0.01953;
G2L["15"].BackgroundColor3 = WHITE;
G2L["15"].ScaleType = SLICE;
G2L["15"].ImageColor3 = BLACK;
G2L["15"].AnchorPoint = VEC05;
G2L["15"].Image = IMGSHA;
G2L["15"].Size = Dim2(1, 3, 1, 3);
G2L["15"].BackgroundTransparency= 1;
G2L["15"].Name = "Shadow";
G2L["15"].Position = DIM05;
G2L["16"] = Instancen("ImageLabel", G2L["12"]);
G2L["16"].BorderSizePixel = 0;
G2L["16"].SliceCenter = RECTN256;
G2L["16"].SliceScale = 0.03906;
G2L["16"].BackgroundColor3 = WHITE;
G2L["16"].ScaleType = SLICE;
G2L["16"].ImageTransparency = 0.85;
G2L["16"].Image = IMG117;
G2L["16"].Size = DIM1010;
G2L["16"].BackgroundTransparency= 1;
G2L["17"] = Instancen("ImageLabel", G2L["12"]);
G2L["17"].BorderSizePixel = 0;
G2L["17"].SliceCenter = RECTN256;
G2L["17"].SliceScale = 0.03906;
G2L["17"].BackgroundColor3 = WHITE;
G2L["17"].ScaleType = SLICE;
G2L["17"].ImageTransparency = 1;
G2L["17"].Image = IMG809;
G2L["17"].Size = DIM1010;
G2L["17"].BackgroundTransparency= 1;
G2L["17"].Name = "Frame";
G2L["18"] = Instancen("UIPadding", G2L["17"]);
G2L["18"].PaddingRight = Dim(0, 12);
G2L["18"].PaddingLeft = Dim(0, 12);
G2L["19"] = Instancen("UIListLayout", G2L["17"]);
G2L["19"].HorizontalAlignment = HOR_CENTER;
G2L["19"].Padding = Dim(0, 8);
G2L["19"].VerticalAlignment = VERTICALCENTER;
G2L["19"].SortOrder = LAYOUTORDER;
G2L["19"].FillDirection = FILL_HOR;
G2L["1a"] = Instancen("TextLabel", G2L["17"]);
G2L["1a"].BorderSizePixel = 0;
G2L["1a"].TextSize = 18;
G2L["1a"].BackgroundColor3 = WHITE;
G2L["1a"].FontFace = FONT121;
G2L["1a"].TextColor3 = WHITE;
G2L["1a"].BackgroundTransparency= 1;
G2L["1a"].RichText = true;
G2L["1a"].Text = "Cancel";
G2L["1a"].AutomaticSize = AutoXY;
G2L["1b"] = Instancen("TextButton", G2L["10"]);
G2L["1b"].BorderSizePixel = 0;
G2L["1b"].TextColor3 = WHITE;
G2L["1b"].AutoButtonColor = false;
G2L["1b"].TextSize = 14;
G2L["1b"].BackgroundColor3 = WHITE;
G2L["1b"].AutomaticSize = AUTO_X;
G2L["1b"].Size = Dim2(0, 0, 1, 0);
G2L["1b"].BackgroundTransparency= 1;
G2L["1b"].LayoutOrder = 3;
G2L["1b"].Text = "";
G2L["1c"] = Instancen("ImageLabel", G2L["1b"]);
G2L["1c"].BorderSizePixel = 0;
G2L["1c"].SliceCenter = RECTN256;
G2L["1c"].SliceScale = 0.03906;
G2L["1c"].BackgroundColor3 = WHITE;
G2L["1c"].ScaleType = SLICE;
G2L["1c"].ImageColor3 = fromRGB(83, 83, 92);
G2L["1c"].Image = IMG809;
G2L["1c"].Size = DIM1010;
G2L["1c"].BackgroundTransparency= 1;
G2L["1c"].Name = "Squircle";
G2L["1d"] = Instancen("ImageLabel", G2L["1b"]);
G2L["1d"].BorderSizePixel = 0;
G2L["1d"].SliceCenter = RECTN256;
G2L["1d"].SliceScale = 0.03906;
G2L["1d"].BackgroundColor3 = WHITE;
G2L["1d"].ScaleType = SLICE;
G2L["1d"].ImageTransparency = 1;
G2L["1d"].Image = IMG809;
G2L["1d"].Size = DIM1010;
G2L["1d"].BackgroundTransparency= 1;
G2L["1d"].Name = "Special";
G2L["1e"] = Instancen("ImageLabel", G2L["1b"]);
G2L["1e"].BorderSizePixel = 0;
G2L["1e"].SliceCenter = RECTN521;
G2L["1e"].SliceScale = 0.01953;
G2L["1e"].BackgroundColor3 = WHITE;
G2L["1e"].ScaleType = SLICE;
G2L["1e"].ImageTransparency = 1;
G2L["1e"].ImageColor3 = BLACK;
G2L["1e"].AnchorPoint = VEC05;
G2L["1e"].Image = IMGSHA;
G2L["1e"].Size = Dim2(1, 3, 1, 3);
G2L["1e"].BackgroundTransparency= 1;
G2L["1e"].Name = "Shadow";
G2L["1e"].Position = DIM05;
G2L["1f"] = Instancen("ImageLabel", G2L["1b"]);
G2L["1f"].BorderSizePixel = 0;
G2L["1f"].SliceCenter = RECTN256;
G2L["1f"].SliceScale = 0.03906;
G2L["1f"].BackgroundColor3 = WHITE;
G2L["1f"].ScaleType = SLICE;
G2L["1f"].ImageTransparency = 0.95;
G2L["1f"].Image = IMG117;
G2L["1f"].Size = DIM1010;
G2L["1f"].BackgroundTransparency= 1;
G2L["20"] = Instancen("ImageLabel", G2L["1b"]);
G2L["20"].BorderSizePixel = 0;
G2L["20"].SliceCenter = RECTN256;
G2L["20"].SliceScale = 0.03906;
G2L["20"].BackgroundColor3 = WHITE;
G2L["20"].ScaleType = SLICE;
G2L["20"].ImageTransparency = 1;
G2L["20"].Image = IMG809;
G2L["20"].Size = DIM1010;
G2L["20"].BackgroundTransparency= 1;
G2L["20"].Name = "Frame";
G2L["21"] = Instancen("UIPadding", G2L["20"]);
G2L["21"].PaddingRight = Dim(0, 12);
G2L["21"].PaddingLeft = Dim(0, 12);
G2L["22"] = Instancen("UIListLayout", G2L["20"]);
G2L["22"].HorizontalAlignment = HOR_CENTER;
G2L["22"].Padding = Dim(0, 8);
G2L["22"].VerticalAlignment = VERTICALCENTER;
G2L["22"].SortOrder = LAYOUTORDER;
G2L["22"].FillDirection = FILL_HOR;
G2L["23"] = Instancen("ImageLabel", G2L["20"]);
G2L["23"].BorderSizePixel = 0;
G2L["23"].BackgroundColor3 = WHITE;
G2L["23"].ImageColor3 = fromRGB(162, 162, 171);
G2L["23"].Image = "rbxassetid://131526378523863";
G2L["23"].ImageRectSize = Vec2(96, 96);
G2L["23"].Size = Dim2(0, 21, 0, 21);
G2L["23"].BackgroundTransparency= 1;
G2L["23"].ImageRectOffset = Vec2(480, 768);
G2L["24"] = Instancen("TextLabel", G2L["20"]);
G2L["24"].BorderSizePixel = 0;
G2L["24"].TextSize = 18;
G2L["24"].BackgroundColor3 = WHITE;
G2L["24"].FontFace = FONT121;
G2L["24"].TextColor3 = WHITE;
G2L["24"].BackgroundTransparency= 1;
G2L["24"].RichText = true;
G2L["24"].Text = "Continue";
G2L["24"].AutomaticSize = AutoXY;
G2L["25"] = Instancen("TextBox", G2L["10"]);
G2L["25"].BorderSizePixel = 0;
G2L["25"].TextSize = 14;
G2L["25"].TextColor3 = WHITE;
G2L["25"].BackgroundColor3 = WHITE;
G2L["25"].FontFace = FONT121;
G2L["25"].ClipsDescendants = true;
G2L["25"].PlaceholderText = "Enter Key...";
G2L["25"].Size = Dim2(0.17, 0, 1, 0);
G2L["25"].BorderColor3 = BLACK;
G2L["25"].Text = "";
G2L["25"].BackgroundTransparency= 1;
G2L["26"] = Instancen("ImageLabel", G2L["25"]);
G2L["26"].BorderSizePixel = 0;
G2L["26"].SliceCenter = RECTN256;
G2L["26"].SliceScale = 0.03906;
G2L["26"].BackgroundColor3 = WHITE;
G2L["26"].ScaleType = SLICE;
G2L["26"].ImageTransparency = 1;
G2L["26"].Image = IMG809;
G2L["26"].Size = DIM1010;
G2L["26"].BackgroundTransparency= 1;
G2L["26"].Name = "Frame";
G2L["27"] = Instancen("ImageLabel", G2L["25"]);
G2L["27"].BorderSizePixel = 0;
G2L["27"].SliceCenter = RECTN256;
G2L["27"].SliceScale = 0.03906;
G2L["27"].BackgroundColor3 = WHITE;
G2L["27"].ScaleType = SLICE;
G2L["27"].ImageTransparency = 0.85;
G2L["27"].Image = IMG117;
G2L["27"].Size = DIM1010;
G2L["27"].BackgroundTransparency= 1;
G2L["28"] = Instancen("ImageLabel", G2L["25"]);
G2L["28"].BorderSizePixel = 0;
G2L["28"].SliceCenter = RECTN521;
G2L["28"].SliceScale = 0.01953;
G2L["28"].BackgroundColor3 = WHITE;
G2L["28"].ScaleType = SLICE;
G2L["28"].ImageColor3 = BLACK;
G2L["28"].AnchorPoint = VEC05;
G2L["28"].Image = IMGSHA;
G2L["28"].Size = Dim2(1, 3, 1, 3);
G2L["28"].BackgroundTransparency= 1;
G2L["28"].Name = "Shadow";
G2L["28"].Position = DIM05;
G2L["29"] = Instancen("ImageLabel", G2L["25"]);
G2L["29"].BorderSizePixel = 0;
G2L["29"].SliceCenter = RECTN256;
G2L["29"].SliceScale = 0.03906;
G2L["29"].BackgroundColor3 = WHITE;
G2L["29"].ScaleType = SLICE;
G2L["29"].ImageTransparency = 0.95;
G2L["29"].Image = IMG809;
G2L["29"].Size = DIM1010;
G2L["29"].BackgroundTransparency= 1;
G2L["29"].Name = "Special";
G2L["2a"] = Instancen("ImageLabel", G2L["25"]);
G2L["2a"].BorderSizePixel = 0;
G2L["2a"].SliceCenter = RECTN256;
G2L["2a"].SliceScale = 0.03906;
G2L["2a"].BackgroundColor3 = WHITE;
G2L["2a"].ScaleType = SLICE;
G2L["2a"].ImageTransparency = 1;
G2L["2a"].ImageColor3 = fromRGB(83, 83, 92);
G2L["2a"].Image = IMG809;
G2L["2a"].Size = DIM1010;
G2L["2a"].BackgroundTransparency= 1;
G2L["2a"].Name = "Squircle";
G2L["2b"] = Instancen("TextButton", G2L["10"]);
G2L["2b"].BorderSizePixel = 0;
G2L["2b"].TextColor3 = WHITE;
G2L["2b"].AutoButtonColor = false;
G2L["2b"].TextSize = 14;
G2L["2b"].BackgroundColor3 = WHITE;
G2L["2b"].AutomaticSize = AUTO_X;
G2L["2b"].Size = Dim2(0, 0, 1, 0);
G2L["2b"].BackgroundTransparency= 1;
G2L["2b"].LayoutOrder = 1;
G2L["2b"].Text = "";
G2L["2c"] = Instancen("ImageLabel", G2L["2b"]);
G2L["2c"].BorderSizePixel = 0;
G2L["2c"].SliceCenter = RECTN256;
G2L["2c"].SliceScale = 0.03906;
G2L["2c"].BackgroundColor3 = WHITE;
G2L["2c"].ScaleType = SLICE;
G2L["2c"].ImageTransparency = 1;
G2L["2c"].ImageColor3 = fromRGB(83, 83, 92);
G2L["2c"].Image = IMG809;
G2L["2c"].Size = DIM1010;
G2L["2c"].BackgroundTransparency= 1;
G2L["2c"].Name = "Squircle";
G2L["2d"] = Instancen("ImageLabel", G2L["2b"]);
G2L["2d"].BorderSizePixel = 0;
G2L["2d"].SliceCenter = RECTN256;
G2L["2d"].SliceScale = 0.03906;
G2L["2d"].BackgroundColor3 = WHITE;
G2L["2d"].ScaleType = SLICE;
G2L["2d"].ImageTransparency = 0.95;
G2L["2d"].Image = IMG809;
G2L["2d"].Size = DIM1010;
G2L["2d"].BackgroundTransparency= 1;
G2L["2d"].Name = "Special";
G2L["2e"] = Instancen("ImageLabel", G2L["2b"]);
G2L["2e"].BorderSizePixel = 0;
G2L["2e"].SliceCenter = RECTN521;
G2L["2e"].SliceScale = 0.01953;
G2L["2e"].BackgroundColor3 = WHITE;
G2L["2e"].ScaleType = SLICE;
G2L["2e"].ImageColor3 = BLACK;
G2L["2e"].AnchorPoint = VEC05;
G2L["2e"].Image = IMGSHA;
G2L["2e"].Size = Dim2(1, 3, 1, 3);
G2L["2e"].BackgroundTransparency= 1;
G2L["2e"].Name = "Shadow";
G2L["2e"].Position = DIM05;
G2L["2f"] = Instancen("ImageLabel", G2L["2b"]);
G2L["2f"].BorderSizePixel = 0;
G2L["2f"].SliceCenter = RECTN256;
G2L["2f"].SliceScale = 0.03906;
G2L["2f"].BackgroundColor3 = WHITE;
G2L["2f"].ScaleType = SLICE;
G2L["2f"].ImageTransparency = 0.85;
G2L["2f"].Image = IMG117;
G2L["2f"].Size = DIM1010;
G2L["2f"].BackgroundTransparency= 1;
G2L["30"] = Instancen("ImageLabel", G2L["2b"]);
G2L["30"].BorderSizePixel = 0;
G2L["30"].SliceCenter = RECTN256;
G2L["30"].SliceScale = 0.03906;
G2L["30"].BackgroundColor3 = WHITE;
G2L["30"].ScaleType = SLICE;
G2L["30"].ImageTransparency = 1;
G2L["30"].Image = IMG809;
G2L["30"].Size = DIM1010;
G2L["30"].BackgroundTransparency= 1;
G2L["30"].Name = "Frame";
G2L["31"] = Instancen("UIPadding", G2L["30"]);
G2L["31"].PaddingRight = Dim(0, 12);
G2L["31"].PaddingLeft = Dim(0, 12);
G2L["32"] = Instancen("UIListLayout", G2L["30"]);
G2L["32"].HorizontalAlignment = HOR_CENTER;
G2L["32"].Padding = Dim(0, 8);
G2L["32"].VerticalAlignment = VERTICALCENTER;
G2L["32"].SortOrder = LAYOUTORDER;
G2L["32"].FillDirection = FILL_HOR;
G2L["33"] = Instancen("TextLabel", G2L["30"]);
G2L["33"].BorderSizePixel = 0;
G2L["33"].TextSize = 18;
G2L["33"].BackgroundColor3 = WHITE;
G2L["33"].FontFace = FONT121;
G2L["33"].TextColor3 = WHITE;
G2L["33"].BackgroundTransparency= 1;
G2L["33"].RichText = true;
G2L["33"].Text = "Copy Link";
G2L["33"].AutomaticSize = AutoXY;
G2L["34"] = Instancen("UIPadding", G2L["6"]);
G2L["34"].PaddingTop = Dim(0, 16);
G2L["34"].PaddingRight = Dim(0, 16);
G2L["34"].PaddingLeft = Dim(0, 16);
G2L["34"].PaddingBottom = Dim(0, 16);
G2L["35"] = Instancen("UIScale", G2L["2"]);
G2L["36"] = Instancen("ImageLabel", G2L["2"]);
G2L["36"].BorderSizePixel = 0;
G2L["36"].SliceCenter = RECTN256;
G2L["36"].SliceScale = 0.08594;
G2L["36"].BackgroundColor3 = WHITE;
G2L["36"].ScaleType = SLICE;
G2L["36"].ImageTransparency = 0.9;
G2L["36"].Image = IMG117;
G2L["36"].Size = DIM1010;
G2L["36"].BackgroundTransparency= 1;
G2L["37"] = Instancen("UIGradient", G2L["36"]);
G2L["37"].Rotation = 90;
G2L["37"].Transparency = NSnew{NSKnew(0.000, 0),NSKnew(1.000, 1)};
G2L["1b"].MouseButton1Click:Connect(function()
return configu.Auth(G2L["25"].Text);
end);
G2L["2b"].MouseButton1Click:Connect(configu.GetKey);
G2L["12"].MouseButton1Click:Connect(function(...)
G2L["1"]:Destroy(); G2L = nil;
end);
function tbl:fadeAndTween(G2L, e)
local tweenInfo = TwInfo(0.5, EASE_QUAD, EASE_OUT)
for key, instance in pairs(G2L) do
tspawn(function()
if IsA(instance, "TextLabel") and instance.Text ~= "Authentication" then
local tween = TwCreate(TweenService, instance, tweenInfo, {TextTransparency = 1});
instance.AutomaticSize = AUTO_NONE; tween:Play();
tween.Completed:Once(function() instance.Visible = false; end);
elseif IsA(instance, "Frame") then
local size = instance.Size;
local tween = TwCreate(TweenService, instance, tweenInfo, {Size = Dim2(size.X.Scale, size.X.Offset, 0, 0)})
instance.AutomaticSize = AUTO_NONE; tween:Play()
tween.Completed:Once(function() instance:Destroy(); end);
end;
end);
end;
local function tweenText()
local textLabel = e;
local tweenInfoFadeOut = TwInfo(0.2, EASE_QUAD, EASE_OUT);
local tweenInfoFadeIn = TwInfo(0.2, EASE_QUAD, EASE_IN);
for _, msg in ipairs({
{Text = "TTJY Hub", Duration = 0.5},
{Text = "Script made by TTJY Studio", Duration = 0.5},
{Text = "Thank you!", Duration = 0.5}
}) do
local tweenOut = TwCreate(TweenService, textLabel, tweenInfoFadeOut, {TextTransparency = 1});
tweenOut:Play(); tweenOut.Completed:Wait(); textLabel.Text = msg.Text;
local tweenIn = TwCreate(TweenService, textLabel, tweenInfoFadeIn, {TextTransparency = 0});
tweenIn:Play(); twait(msg.Duration + 0.4);
end;
end; tweenText();
end; return G2L, tbl;
end;
};
end;
------------- WindUI -------------
AssetStorage.LoadUILib = function()
local PropChangeSignal = game.GetPropertyChangedSignal;
local CSKnew = ColorSequenceKeypoint.new;
local fromMatrix = CFrame.fromMatrix;
local GetChildren = game.GetChildren;
local Dim2Scale = UDim2.fromScale;
local CSnew = ColorSequence.new;
local fromHex = Col3.fromHex;
local fromHSV = Col3.fromHSV;
local toHSV = Col3.toHSV;
local LocalizationService = GetService(game, "LocalizationService");
local RunService = GetService(game, "RunService");
local Lighting = GetService(game, "Lighting");
local Cam = Workspace.CurrentCamera;
local cmdm = selff:GetMouse();
local DIM05 = Dim2(0.5, 0, 0.5, 0);
local DIM0010 = Dim2(0, 0, 1, 0);
local DIM1010 = Dim2(1, 0, 1, 0);
local DIM0000 = Dim2(0, 0, 0, 0);
local VEC05 = Vec2(0.5, 0.5);
local EASE_QUINT = Enum.EasingStyle.Quint;
local EASE_OUT = Enum.EasingDirection.Out;
local TWI_01 = TwInfo(0.1);
local TWI_015 = TwInfo(0.15);
local TWI_006 = TwInfo(0.06);
local TWI_008 = TwInfo(0.08);
local TWI_012 = TwInfo(0.12);
local TWI_005 = TwInfo(0.05);
local TWI_Q_01 = TwInfo(0.1, EASE_QUINT, EASE_OUT);
local TWI_Q_02 = TwInfo(0.2, EASE_QUINT, EASE_OUT);
local TWI_Q_045 = TwInfo(0.45, EASE_QUINT, EASE_OUT);
local TWI_Q_025 = TwInfo(0.25, EASE_QUINT, EASE_OUT);
local isFirstLoad = true;
local GlobalBinds = {};
local BindConfig = GG.BindConfigs or {};
GG.BindConfigs = BindConfig;
local a = nil; a = {cache = {}, load = function(b)
if not a.cache[b] then
a.cache[b] = {c = a[b]()};
end; return a.cache[b].c;
end}; do
function a.a()
return {
Primary = fromHex"#0091FF",
White = WHITE,
Black = BLACK,
Dialog = "Accent",
Background = "Accent",
BackgroundTransparency = 0,
Hover = "Text",
WindowBackground = "Background",
WindowShadow = "Black",
WindowTopbarTitle = "Text",
WindowTopbarAuthor = "Text",
WindowTopbarIcon = "Icon",
WindowTopbarButtonIcon = "Icon",
TabBackground = "Hover",
TabTitle = "Text",
TabIcon = "Icon",
ElementBackground = "Text",
GroupBackgroundTransparency = "Group",
GroupBackground = "Group",
ElementTitle = "Text",
ElementDesc = "Text",
ElementIcon = "Icon",
PopupBackground = "Background",
PopupBackgroundTransparency = "BackgroundTransparency",
PopupTitle = "Text",
PopupContent = "Text",
PopupIcon = "Icon",
DialogBackground = "Background",
DialogBackgroundTransparency = "BackgroundTransparency",
DialogTitle = "Text",
DialogContent = "Text",
DialogIcon = "Icon",
Toggle = "Button",
ToggleBar = "White",
Checkbox = "Primary",
CheckboxIcon = "White",
Slider = "Primary",
SliderThumb = "White",
SliderIconFrom = fromHex"#908F95",
SliderIconTo = fromHex"#908F95",
Tooltip = fromHex"4C4C4C",
TooltipText = "White",
TooltipSecondary = "Primary",
TooltipSecondaryText = "White"
};
end;
function a.b()
local l = (function()
local IconModule = {
IconsType = "lucide", New = nil, IconThemeTag = nil,
Icons = (LoaderSettings.BadNetwork and {}) or {
["lucide"] = LoadFromVControl("https://raw.githubusercontent.com/RealTTJY/Studio.Hub/refs/heads/main/Assets/lucide.lua", "lucide.lua", "2")(),
--["solar"] = loadstring(game:HttpGetAsync("https://raw.githubusercontent.com/Footagesus/Icons/refs/heads/main/solar/dist/Icons.lua"))(),
--["craft"] = loadstring(game:HttpGetAsync("https://raw.githubusercontent.com/Footagesus/Icons/refs/heads/main/craft/dist/Icons.lua"))(),
--["geist"] = loadstring(game:HttpGetAsync("https://raw.githubusercontent.com/Footagesus/Icons/refs/heads/main/geist/dist/Icons.lua"))(),
["sfsymbols"] = LoadFromVControl("https://raw.githubusercontent.com/RealTTJY/Studio.Hub/refs/heads/main/Assets/sfsymbols.lua", "sfsymbols.lua", "2")(),
},
};
local function parseIconString(iconString)
if type(iconString) == "string" then
local splitIndex = iconString:find(":");
if splitIndex then
local iconType = iconString:sub(1, splitIndex - 1);
local iconName = iconString:sub(splitIndex + 1);
return iconType, iconName;
end;
end; return nil, iconString;
end; function IconModule.AddIcons(packName, iconsData)
if type(packName) ~= "string" or type(iconsData) ~= "table" then
return error("AddIcons: packName must be string, iconsData must be table");
end; if not IconModule.Icons[packName] then
IconModule.Icons[packName] = {
Icons = {},
Spritesheets = {}
};
end; for iconName, iconValue in pairs(iconsData) do
if type(iconValue) == "number" or (type(iconValue) == "string" and iconValue:match("^rbxassetid://")) then
local imageId = iconValue;
if type(iconValue) == "number" then
imageId = "rbxassetid://" .. tostring(iconValue)
end; IconModule.Icons[packName].Icons[iconName] = {
Image = imageId,
ImageRectSize = Vec2(0, 0),
ImageRectPosition = Vec2(0, 0),
Parts = nil
}; IconModule.Icons[packName].Spritesheets[imageId] = imageId;
elseif type(iconValue) == "table" then
if iconValue.Image and iconValue.ImageRectSize and iconValue.ImageRectPosition then
local imageId = iconValue.Image;
if type(imageId) == "number" then
imageId = "rbxassetid://" .. tostring(imageId)
end; IconModule.Icons[packName].Icons[iconName] = {
Image = imageId,
ImageRectSize = iconValue.ImageRectSize,
ImageRectPosition = iconValue.ImageRectPosition,
Parts = iconValue.Parts
}; if not IconModule.Icons[packName].Spritesheets[imageId] then
IconModule.Icons[packName].Spritesheets[imageId] = imageId;
end;
else
warn("[TTJY Studio] : Invalid spritesheet data format for icon '" .. iconName .. "'");
end;
else
warn("[TTJY Studio] : Unsupported data type for icon '" .. iconName .. "': " .. type(iconValue));
end;
end;
end; function IconModule.SetIconsType(iconType)
IconModule.IconsType = iconType
end; function IconModule.Init(New, IconThemeTag)
IconModule.New = New;
IconModule.IconThemeTag = IconThemeTag;
return IconModule;
end; function IconModule.Icon(Icon, Type, DefaultFormat)
local iconType, iconName = parseIconString(Icon);
local targetType = iconType or Type or IconModule.IconsType;
local targetName, iconSet = iconName, IconModule.Icons[targetType];
if iconSet and iconSet.Icons and iconSet.Icons[targetName] then
return {
iconSet.Spritesheets[tostring(iconSet.Icons[targetName].Image)],
iconSet.Icons[targetName],
};
elseif iconSet and iconSet[targetName] and str.find(iconSet[targetName], "rbxassetid://") then
return DefaultFormat and {
iconSet[targetName],
{ ImageRectSize = Vec2(0,0), ImageRectPosition = Vec2(0,0) }
} or iconSet[targetName];
end;
return DefaultFormat and {
nil,
{ ImageRectSize = Vec2(0,0), ImageRectPosition = Vec2(0,0) }
} or nil;
end; function IconModule.Icon2(Icon, Type, DefaultFormat)
return IconModule.Icon(Icon, Type, true);
end; function IconModule.Image(IconConfig)
local Icon = {
Icon = IconConfig.Icon or nil,
Type = IconConfig.Type,
Colors = IconConfig.Colors or { ( IconModule.IconThemeTag or WHITE ), WHITE },
Size = IconConfig.Size or Dim2(0,24,0,24),
IconFrame = nil,
};
local Colors = {};
for _, color in next, Icon.Colors do
Colors[_] = {
ThemeTag = typeof(color) == "string" and color,
Color = typeof(color) == "Color3" and color,
};
end;
local IconLabel = IconModule.Icon2(Icon.Icon, Icon.Type);
local isrbxassetid = typeof(IconLabel) == "string" and str.find(IconLabel, 'rbxassetid://');
if IconModule.New then
local IconFrame = IconModule.New("ImageLabel", {
Size = Icon.Size,
BackgroundTransparency = 1,
ImageColor3 = Colors[1].Color or nil,
ThemeTag = Colors[1].ThemeTag and {
ImageColor3 = Colors[1].ThemeTag
},
Image = isrbxassetid and IconLabel or IconLabel[1],
ImageRectSize = isrbxassetid and nil or IconLabel[2].ImageRectSize,
ImageRectOffset = isrbxassetid and nil or IconLabel[2].ImageRectPosition,
}); if not isrbxassetid and IconLabel[2].Parts then
for _, part in next, IconLabel[2].Parts do
local IconPartLabel = IconModule.Icon(part, Icon.Type)
local IconPart = IconModule.New("ImageLabel", {
Size = Dim2(1,0,1,0),
BackgroundTransparency = 1,
ImageColor3 = Colors[1 + _].Color or nil,
ThemeTag = Colors[1 + _].ThemeTag and {
ImageColor3 = Colors[1 + _].ThemeTag
},
Image = IconPartLabel[1],
ImageRectSize = IconPartLabel[2].ImageRectSize,
ImageRectOffset = IconPartLabel[2].ImageRectPosition,
Parent = IconFrame,
});
end;
end; Icon.IconFrame = IconFrame;
else
local IconFrame = Instancen("ImageLabel");
IconFrame.Size = Icon.Size;
IconFrame.BackgroundTransparency = 1;
IconFrame.ImageColor3 = Colors[1].Color;
IconFrame.Image = isrbxassetid and IconLabel or IconLabel[1];
IconFrame.ImageRectSize = isrbxassetid and nil or IconLabel[2].ImageRectSize;
IconFrame.ImageRectOffset = isrbxassetid and nil or IconLabel[2].ImageRectPosition;
if not isrbxassetid and IconLabel[2].Parts then
for _, part in next, IconLabel[2].Parts do
local IconPartLabel = IconModule.Icon(part, Icon.Type);
local IconPart = Instancen("ImageLabel");
IconPart.Size = Dim2(1,0,1,0);
IconPart.BackgroundTransparency = 1;
IconPart.ImageColor3 = Colors[1 + _].Color;
IconPart.Image = IconPartLabel[1];
IconPart.ImageRectSize = IconPartLabel[2].ImageRectSize;
IconPart.ImageRectOffset = IconPartLabel[2].ImageRectPosition;
IconPart.Parent = IconFrame;
end;
end; Icon.IconFrame = IconFrame;
end; return Icon;
end; return IconModule;
end)(); l.SetIconsType "lucide"
local m, p = nil, {
Font = "rbxassetid://12187365364",
Localization = nil,
CanDraggable = true,
Theme = nil,
Themes = nil,
Icons = l,
Signals = {},
Objects = setmetatable({}, {__mode = "k"}),
LocalizationObjects = {},
FontObjects = setmetatable({}, {__mode = "k"}),
Language = str.match(LocalizationService.SystemLocaleId, "^[a-z]+"),
DefaultProperties = {
ScreenGui = {
ResetOnSpawn = false,
ZIndexBehavior = "Sibling"
},
CanvasGroup = {
BorderSizePixel = 0,
BackgroundColor3 = WHITE
},
Frame = {
BorderSizePixel = 0,
BackgroundColor3 = WHITE
},
TextLabel = {
BackgroundColor3 = WHITE,
BorderSizePixel = 0,
Text = "",
RichText = true,
TextColor3 = WHITE,
TextSize = 14
},
TextButton = {
BackgroundColor3 = WHITE,
BorderSizePixel = 0,
Text = "",
AutoButtonColor = false,
TextColor3 = WHITE,
TextSize = 14
},
TextBox = {
BackgroundColor3 = WHITE,
BorderColor3 = BLACK,
ClearTextOnFocus = false,
Text = "",
TextColor3 = BLACK,
TextSize = 14
},
ImageLabel = {
BackgroundTransparency = 1,
BackgroundColor3 = WHITE,
BorderSizePixel = 0
},
ImageButton = {
BackgroundColor3 = WHITE,
BorderSizePixel = 0,
AutoButtonColor = false
},
UIListLayout = {
SortOrder = "LayoutOrder"
},
ScrollingFrame = {
ScrollBarImageTransparency = 1,
BorderSizePixel = 0
},
VideoFrame = {
BorderSizePixel = 0
}
},
Colors = {
Red = "#e53935",
Orange = "#f57c00",
Green = "#43a047",
Blue = "#039be5",
White = "#ffffff",
Grey = "#484848"
},
ThemeFallbacks = a.load "a",
Shapes = {
Square = "rbxassetid://82909646051652",
["Square-Outline"] = "rbxassetid://72946211851948",
Squircle = "rbxassetid://80999662900595",
SquircleOutline = "rbxassetid://117788349049947",
["Squircle-Outline"] = "rbxassetid://117817408534198",
SquircleOutline2 = "rbxassetid://117817408534198",
["Shadow-sm"] = "rbxassetid://84825982946844",
["Squircle-TL-TR"] = "rbxassetid://73569156276236",
["Squircle-BL-BR"] = "rbxassetid://93853842912264",
["Squircle-TL-TR-Outline"] = "rbxassetid://136702870075563",
["Squircle-BL-BR-Outline"] = "rbxassetid://75035847706564"
};
};
function p.Init(r) m = r; end;
function p.AddSignal(r, u)
local v = r:Connect(u);
tble.insert(p.Signals, v);
return v;
end; function p.DisconnectAll()
for _, v in ipairs(p.Signals) do
if typeof(v) == "RBXScriptConnection" and v.Connected then
v:Disconnect();
end;
end; tble.clear(p.Signals);
end; function p.SafeCallback(r, ...)
if not r then return; end;
local u, v = pcall(r, ...);
if not u then
if m and m.Window and m.Window.Debug then
local x, z = v:find":%d+: ";
return m:Notify {
Title = "DEBUG Mode: Error",
Content = not z and v or v:sub(z + 1),
Duration = 8
};
end;
end;
end; function p.Gradient(r, u)
if m and m.Gradient then return m:Gradient(r, u); end;
local v,x = {}, {}; for z, A in next, r do
local B = tonumber(z); if B then
B = math.clamp(B / 100, 0, 1);
tble.insert(v, CSKnew(B, A.Color));
tble.insert(x, NSKnew(B, A.Transparency or 0));
end;
end;
tble.sort(v, function(B, C) return B.Time < C.Time; end);
tble.sort(x, function(B, C) return B.Time < C.Time; end);
if #v < 2 then
error"ColorSequence requires at least 2 keypoints";
end; local B = {
Color = CSnew(v),
Transparency = NSnew(x)
}; if u then
for C, F in pairs(u) do
B[C] = F;
end;
end; return B;
end; function p.SetTheme(r)
p.Theme = r;
p.UpdateTheme(nil, false);
end; function p.AddFontObject(r)
tble.insert(p.FontObjects, r);
p.UpdateFont(p.Font);
end; function p.UpdateFont(r)
p.Font = r; for u, v in next, p.FontObjects do
v.FontFace = Fnew(r, v.FontFace.Weight, v.FontFace.Style);
end;
end; function p.GetThemeProperty(r, u)
local function getValue(v, x)
local z = x[v] if z == nil then
return nil;
end; if typeof(z) == "string" and str.sub(z, 1, 1) == "#" then
return fromHex(z);
end; if typeof(z) == "Color3" then
return z;
end; if typeof(z) == "number" then
return z;
end; if typeof(z) == "table" and z.Color and z.Transparency then
return z;
end; if typeof(z) == "function" then
return z();
end; return z;
end; local v = getValue(r, u); if v ~= nil then
if typeof(v) == "string" and str.sub(v, 1, 1) ~= "#" then
local x = p.GetThemeProperty(v, u);
if x ~= nil then return x; end;
else
return v;
end;
end; local x = p.ThemeFallbacks[r];
if x ~= nil then
if typeof(x) == "string" and str.sub(x, 1, 1) ~= "#" then
return p.GetThemeProperty(x, u);
else
return getValue(r, {[r] = x});
end;
end; v = getValue(r, p.Themes.Dark) if v ~= nil then
if typeof(v) == "string" and str.sub(v, 1, 1) ~= "#" then
local z = p.GetThemeProperty(v, p.Themes.Dark);
if z ~= nil then return z; end;
else
return v;
end;
end; if x ~= nil then
if typeof(x) == "string" and str.sub(x, 1, 1) ~= "#" then
return p.GetThemeProperty(x, p.Themes.Dark);
else
return getValue(r, {[r] = x});
end;
end; return nil;
end; function p.AddThemeObject(r, u)
p.Objects[r] = {Object = r, Properties = u};
p.UpdateTheme(r, false);
return r;
end; function p.AddLangObject(r)
local u = p.LocalizationObjects[r];
local v = u.Object;
local x = currentObjTranslationId;
p.UpdateLang(v, x);
return v;
end; function p.UpdateTheme(r, u)
local function ApplyTheme(v)
for x, z in pairs(v.Properties or {}) do
local A = p.GetThemeProperty(z, p.Theme)
if A ~= nil then
if typeof(A) == "Color3" then
local B = FindFirstChild(v.Object,"WindUIGradient");
if B then B:Destroy(); end;
if not u then v.Object[x] = A; else
TwCreate(v.Object, TWI_008, {[x] = A}):Play();
end;
elseif typeof(A) == "table" and A.Color and A.Transparency then
v.Object[x] = WHITE;
local B = FindFirstChild(v.Object, "WindUIGradient");
if not B then
B = Instancen"UIGradient";
B.Name = "WindUIGradient";
B.Parent = v.Object;
end; B.Color = A.Color;
B.Transparency = A.Transparency;
for C, F in pairs(A) do
if C ~= "Color" and C ~= "Transparency" and B[C] ~= nil then
B[C] = F;
end;
end;
elseif typeof(A) == "number" then
if not u then v.Object[x] = A; else
TwCreate(v.Object, TWI_008, {[x] = A}):Play();
end;
end;
else
local B = FindFirstChild(v.Object, "WindUIGradient");
if B then B:Destroy(); end;
end;
end;
end; if r then
local v = p.Objects[r]; if v then
ApplyTheme(v);
end;
else for v, x in pairs(p.Objects) do
ApplyTheme(x);
end;
end;
end; function p.SetLangForObject(r)
if p.Localization and p.Localization.Enabled then
local u = p.LocalizationObjects[r];
if not u then return; end;
local v, x, z = u.Object, u.TranslationId, p.Localization.Translations[p.Language]
if z and z[x] then v.Text = z[x]; else
local A = p.Localization and p.Localization.Translations and p.Localization.Translations.en or nil
if A and A[x] then v.Text = A[x]; else
v.Text = "[" .. x .. "]";
end;
end;
end;
end; function p.ChangeTranslationKey(r, u, v)
if p.Localization and p.Localization.Enabled then
local x = str.match(v, "^" .. p.Localization.Prefix .. "(.+)")
if x then for z, A in ipairs(p.LocalizationObjects) do
if A.Object == u then
A.TranslationId = x
p.SetLangForObject(z)
return;
end;
end; tble.insert(p.LocalizationObjects, { TranslationId = x, Object = u });
p.SetLangForObject(#p.LocalizationObjects);
end;
end;
end; function p.UpdateLang(r)
if r then p.Language = r; end;
for u = 1, #p.LocalizationObjects do
local v = p.LocalizationObjects[u]
if v.Object and v.Object.Parent ~= nil then
p.SetLangForObject(u);
else
p.LocalizationObjects[u] = nil;
end;
end;
end; function p.SetLanguage(r)
p.Language = r;
p.UpdateLang();
end; function p.Icon(r, u)
return l.Icon2(r, nil, u ~= false);
end; function p.AddIcons(r, u)
return l.AddIcons(r, u);
end; function p.New(r, u, v)
local x = Instancen(r) for z, A in next, p.DefaultProperties[r] or {} do
x[z] = A;
end; local parentObj = nil; for B, C in next, u or {} do
if B == "Parent" then parentObj = C; continue; end;
if B ~= "ThemeTag" then x[B] = C; end;
if p.Localization and p.Localization.Enabled and B == "Text" then
local F = str.match(C, "^" .. p.Localization.Prefix .. "(.+)");
if F then
local G = #p.LocalizationObjects + 1;
p.LocalizationObjects[G] = {TranslationId = F, Object = x};
p.SetLangForObject(G);
end;
end;
end; for F, G in next, v or {} do
G.Parent = x;
end; if u and u.ThemeTag then
p.AddThemeObject(x, u.ThemeTag);
end; if u and u.FontFace then
p.AddFontObject(x);
end; if parentObj then x.Parent = parentObj; end; return x;
end; function p.NewRoundFrame(r, u, v, x, B, C)
local function getImageForType(F) return p.Shapes[F]; end;
local function getSliceCenterForType(F) return F ~= "Shadow-sm" and Rectn(256, 256, 256, 256) or Rectn(512, 512, 512, 512); end;
local F = p.New( B and "ImageButton" or "ImageLabel", {
Image = getImageForType(u),
ScaleType = "Slice",
SliceCenter = getSliceCenterForType(u),
SliceScale = 1,
BackgroundTransparency = 1,
ThemeTag = v.ThemeTag and v.ThemeTag
}, x); local parentObj = nil; for G, H in pairs(v or {}) do
if G == "Parent" then parentObj = H; continue; end;
if G ~= "ThemeTag" then
F[G] = H;
end;
end; if parentObj then F.Parent = parentObj; end; local function UpdateSliceScale(J)
local L = u ~= "Shadow-sm" and (J / (256)) or (J / 512);
F.SliceScale = math.max(L, 0.0001);
end; local J = {}; function J.SetRadius(L, M)
UpdateSliceScale(M);
end; function J.SetType(L, M)
u = M;
F.Image = getImageForType(M);
F.SliceCenter = getSliceCenterForType(M);
UpdateSliceScale(r);
end; function J.UpdateShape(L, M, N)
if N then
u = N; F.Image = getImageForType(N);
F.SliceCenter = getSliceCenterForType(N);
end; if M then r = M; end;
UpdateSliceScale(r);
end; function J.GetRadius(L)
return r;
end; function J.GetType(L)
return u;
end; UpdateSliceScale(r)
return F, C and J or nil;
end; local r = p.New;
function p.SetDraggable(v)
p.CanDraggable = v;
end; function p.Drag(v, x, B)
local C, F, G, H = nil, nil, nil, nil;
local J = {CanDraggable = true};
if not x or typeof(x) ~= "table" then
x = {v};
end; local function update(L)
if not F or not J.CanDraggable then return; end;
local M = L.Position - G;
if not isFirstLoad then
TwCreate(TweenService, v, TwInfo(0.02), {
Position = Dim2(H.X.Scale, H.X.Offset + M.X, H.Y.Scale, H.Y.Offset + M.Y)
}):Play();
else
v.Position = Dim2(H.X.Scale, H.X.Offset + M.X, H.Y.Scale, H.Y.Offset + M.Y);
end;
end; for L, M in pairs(x) do
M.InputBegan:Connect(function(N)
if (N.UserInputType == Enum.UserInputType.MouseButton1 or N.UserInputType == Enum.UserInputType.Touch) and J.CanDraggable then
if C == nil then
C = M; F = true; G = N.Position; H = v.Position;
if B and typeof(B) == "function" then B(true, C); end;
N.Changed:Connect(function()
if N.UserInputState == Enum.UserInputState.End then
F = false; C = nil; if B and typeof(B) == "function" then
B(false, nil);
end;
end;
end);
end;
end;
end); M.InputChanged:Connect(function(N)
if F and C == M then
if N.UserInputType == Enum.UserInputType.MouseMovement or N.UserInputType == Enum.UserInputType.Touch then
return update(N);
end;
end;
end);
end; UIS.InputChanged:Connect(function(N)
if F and C ~= nil then
if N.UserInputType == Enum.UserInputType.MouseMovement or N.UserInputType == Enum.UserInputType.Touch then
return update(N);
end;
end;
end); function J.Set(N, O)
J.CanDraggable = O;
end; return J;
end; l.Init(r, "Icon") function p.SanitizeFilename(v)
local x = v:match"([^/]+)$" or v;
x = x:gsub("%.[^%.]+$", "");
x = x:gsub("[^%w%-_]", "_");
if #x > 50 then x = x:sub(1, 50); end;
return x;
end; function p.Image(v, x, B, C, F, G, H, J)
C = C or "Temp"; x = p.SanitizeFilename(x);
local L = r("Frame", { Size = DIM0000, BackgroundTransparency = 1},
{
r( "ImageLabel", {
Size = DIM1010,
BackgroundTransparency = 1,
ScaleType = "Crop",
ThemeTag = (p.Icon(v) or H) and { ImageColor3 = G and (J or "Icon") or nil } or nil
},
{ r( "UICorner", {CornerRadius = Dim(0, B)});
}
)}); if p.Icon(v) then
L.ImageLabel:Destroy(); local M = l.Image({
Icon = v,
Size = DIM1010,
Colors = {(G and (J or "Icon") or false), "Button"}
}).IconFrame; M.Parent = L;
elseif str.find(v, "http") then
local M = "WindUI/" .. C .. "/assets/." .. F .. "-" .. x .. ".png";
local N, O = pcall(function()
tk.spawn(function()
local N = Request({Url = v, Method = "GET"}).Body; writefile(M, N);
local O, P = pcall(getcustomasset, M);
if O then L.ImageLabel.Image = P; else
return L:Destroy();
end;
end);
end); if not N then return L:Destroy(); end;
elseif v == "" then
L.Visible = false;
else
L.ImageLabel.Image = v;
end; return L;
end; function p.Color3ToHSB(v)
local x, B, C = v.R, v.G, v.B;
local F, G = math.max(x, B, C), math.min(x, B, C);
local H, J = F - G, 0;
if H ~= 0 then
if F == x then
J = (B - C) / H % 6;
elseif F == B then
J = (C - x) / H + 2;
else
J = (x - B) / H + 4;
end;
J = J * 60;
else
J = 0;
end; local L,M = (F == 0) and 0 or (H / F), F;
return {h = math.floor(J + 0.5), s = L, b = M}
end; function p.GetPerceivedBrightness(v)
local x,B,C = v.R, v.G, v.B;
return 0.299 * x + 0.587 * B + 0.114 * C;
end; function p.GetTextColorForHSB(v)
local x = p.Color3ToHSB(v); local B, C, F = x.h, x.s, x.b;
if p.GetPerceivedBrightness(v) > 0.68 then
return fromHSV(B / 360, 0, 0.05);
else
return fromHSV(B / 360, 0, 0.98);
end;
end; function p.GetAverageColor(v)
local x, B, C = 0, 0, 0;
local F = v.Color.Keypoints;
for G, H in ipairs(F) do
x = x + H.Value.R
B = B + H.Value.G
C = C + H.Value.B
end; local J = #F;
return fromRGB(x / J * 255, B / J * 255, C / J * 255);
end; return p;
end;
function a.c()
local b = {}; function b.New(d, e, f)
local g = {
Enabled = e.Enabled or false,
Translations = e.Translations or {},
Prefix = e.Prefix or "loc:",
DefaultLanguage = e.DefaultLanguage or "en"
}; f.Localization = g; return g;
end; return b;
end;
function a.d()
local b = a.load"b"; local d = b.New;
local f = {
Size = Dim2(0, 300, 1, -156),
SizeLower = Dim2(0, 300, 1, -56),
UICorner = 13,
UIPadding = 14,
Holder = nil,
NotificationIndex = 0,
Notifications = {}
}; function f.Init(g)
local h = {Lower = false};
function h.SetLower(j)
h.Lower = j
h.Frame.Size = j and f.SizeLower or f.Size
end; h.Frame = d("Frame", {
Position = Dim2(1, -29, 0, 56),
AnchorPoint = Vec2(1, 0),
Size = f.Size,
Parent = g,
BackgroundTransparency = 1
}, {
d("UIListLayout", {
HorizontalAlignment = "Center",
SortOrder = "LayoutOrder",
VerticalAlignment = "Bottom",
Padding = Dim(0, 8)
}), d("UIPadding", {
PaddingBottom = Dim(0, 29)
});
}); return h;
end; function f.New(g)
local h = {
Title = g.Title or "Notification",
Content = g.Content or nil,
Icon = g.Icon or nil,
IconThemed = g.IconThemed,
Background = g.Background,
BackgroundImageTransparency = g.BackgroundImageTransparency,
Duration = g.Duration or 5,
Buttons = g.Buttons or {},
CanClose = true,
UIElements = {},
Closed = false
}; if h.CanClose == nil then
h.CanClose = true;
end; f.NotificationIndex = f.NotificationIndex + 1;
f.Notifications[f.NotificationIndex] = h;
local j, l = nil, nil; if h.Icon then
j = b.Image(h.Icon, h.Title .. ":" .. h.Icon, 0, g.Window, "Notification", h.IconThemed);
j.Size = Dim2(0, 26, 0, 26);
j.Position = Dim2(0, f.UIPadding, 0, f.UIPadding);
end; if h.CanClose then
l = d("ImageButton", {
Image = b.Icon "x"[1],
ImageRectSize = b.Icon "x"[2].ImageRectSize,
ImageRectOffset = b.Icon "x"[2].ImageRectPosition,
BackgroundTransparency = 1,
Size = Dim2(0, 16, 0, 16),
Position = Dim2(1, -f.UIPadding, 0, f.UIPadding),
AnchorPoint = Vec2(1, 0),
ThemeTag = {
ImageColor3 = "Text"
},
ImageTransparency = .4
}, {
d("TextButton", {
Size = Dim2(1, 8, 1, 8),
BackgroundTransparency = 1,
AnchorPoint = VEC05,
Position = DIM05,
Text = ""
});
});
end; local m = d("Frame", {
Size = DIM0010,
BackgroundTransparency = .95,
ThemeTag = {BackgroundColor3 = "Text"}
}); local p = d("Frame", {
Size = Dim2(1, h.Icon and -28 - f.UIPadding or 0, 1, 0),
Position = Dim2(1, 0, 0, 0),
AnchorPoint = Vec2(1, 0),
BackgroundTransparency = 1,
AutomaticSize = "Y"
}, {
d("UIPadding", {
PaddingTop = Dim(0, f.UIPadding),
PaddingLeft = Dim(0, f.UIPadding),
PaddingRight = Dim(0, f.UIPadding),
PaddingBottom = Dim(0, f.UIPadding)
}), d("TextLabel", {
AutomaticSize = "Y",
Size = Dim2(1, -30 - f.UIPadding, 0, 0),
TextWrapped = true,
TextXAlignment = "Left",
RichText = true,
BackgroundTransparency = 1,
TextSize = 16,
ThemeTag = {
TextColor3 = "Text"
},
Text = h.Title,
FontFace = Fnew(b.Font, Enum.FontWeight.Medium)
}), d("UIListLayout", {
Padding = Dim(0, f.UIPadding / 3)
});
}); if h.Content then
d("TextLabel", {
AutomaticSize = "Y",
Size = Dim2(1, 0, 0, 0),
TextWrapped = true,
TextXAlignment = "Left",
RichText = true,
BackgroundTransparency = 1,
TextTransparency = .4,
TextSize = 15,
ThemeTag = {TextColor3 = "Text"},
Text = h.Content,
FontFace = Fnew(b.Font, Enum.FontWeight.Medium),
Parent = p
});
end; local r = b.NewRoundFrame(f.UICorner, "Squircle", {
Size = Dim2(1, 0, 0, 0),
Position = Dim2(2, 0, 1, 0),
AnchorPoint = Vec2(0, 1),
AutomaticSize = "Y",
ImageTransparency = .05,
ThemeTag = {ImageColor3 = "Background"}
}, {
d("CanvasGroup", {
Size = DIM1010,
BackgroundTransparency = 1
}, {
m, d("UICorner", {
CornerRadius = Dim(0, f.UICorner)
})
}), d("ImageLabel", {
Name = "Background",
Image = h.Background,
BackgroundTransparency = 1,
Size = DIM1010,
ScaleType = "Crop",
ImageTransparency = h.BackgroundImageTransparency
}, {
d("UICorner", {
CornerRadius = Dim(0, f.UICorner)
})
}), p, j, l
}); local u = d("Frame", {
BackgroundTransparency = 1,
Size = Dim2(1, 0, 0, 0),
Parent = g.Holder
}, {r}); function h.Close(v)
if not h.Closed then
h.Closed = true; TwCreate(TweenService, u, TWI_Q_045, {Size = Dim2(1, 0, 0, -8)}):Play();
TwCreate(TweenService, r, TwInfo(0.55, Enum.EasingStyle.Quint, Enum.EasingDirection.Out), {Position = Dim2(2, 0, 1, 0)}):Play();
twait(0.45); u:Destroy();
end;
end; tk.spawn(function()
twait(); TwCreate(TweenService, u, TWI_Q_045, {Size = Dim2(1, 0, 0, r.AbsoluteSize.Y)}):Play();
TwCreate(TweenService, r, TWI_Q_045, {Position = DIM0010}):Play();
if h.Duration then
TwCreate(TweenService, m, TwInfo(h.Duration, Enum.EasingStyle.Linear, Enum.EasingDirection.InOut), {Size = DIM1010}):Play();
twait(h.Duration); h:Close();
end;
end); if l then
b.AddSignal(l.TextButton.MouseButton1Click, function()
h:Close();
end);
end; return h;
end; return f;
end; function a.i()
return [[
{
"name": "windui",
"version": "1.6.62",
"main": "./dist/main.lua",
"repository": "https://github.com/Footagesus/WindUI",
"discord": "https://discord.gg/ftgs-development-hub-1300692552005189632",
"author": "Footagesus",
"description": "Roblox UI Library for scripts",
"license": "MIT",
"scripts": {
"dev": "bash build/build.sh dev $INPUT_FILE",
"build": "bash build/build.sh build $INPUT_FILE",
"live": "python -m http.server 8642",
"watch": "chokidar . -i 'node_modules' -i 'dist' -i 'build' -c 'npm run dev --'",
"live-build": "concurrently \"npm run live\" \"npm run watch --\"",
"example-live-build": "INPUT_FILE=main_example.lua npm run live-build",
"updater": "python updater/main.py"
},
"keywords": [
"ui-library",
"ui-design",
"script",
"script-hub",
"exploiting"
],
"devDependencies": {
"chokidar-cli": "^3.0.0",
"concurrently": "^9.2.0"
}
}]]
end; function a.j()
local aa = {}; local ab = a.load "b"; local ac = ab.New;
function aa.New(ae, af, ag, ah, ai, aj, ak, al)
ah = ah or "Primary"; local am, an = al or (not ak and 10 or 99), nil;
if af and af ~= "" then
an = ac("ImageLabel", {
Image = ab.Icon(af)[1],
ImageRectSize = ab.Icon(af)[2].ImageRectSize,
ImageRectOffset = ab.Icon(af)[2].ImageRectPosition,
Size = Dim2(0, 21, 0, 21),
BackgroundTransparency = 1,
ImageColor3 = ah == "White" and BLACK or nil,
ImageTransparency = ah == "White" and .4 or 0,
ThemeTag = {ImageColor3 = ah ~= "White" and "Icon" or nil}
});
end; local ao = ac("TextButton", {
Size = DIM0010,
AutomaticSize = "X",
Parent = ai,
BackgroundTransparency = 1
}, {
ab.NewRoundFrame(am, "Squircle", {
ThemeTag = {ImageColor3 = ah ~= "White" and "Button" or nil},
ImageColor3 = ah == "White" and WHITE or nil,
Size = DIM1010,
Name = "Squircle",
ImageTransparency = ah == "Primary" and 0 or ah == "White" and 0 or 1
}), ab.NewRoundFrame(am, "Squircle", {
ImageColor3 = WHITE,
Size = DIM1010,
Name = "Special",
ImageTransparency = ah == "Secondary" and 0.95 or 1
}), ab.NewRoundFrame(am, "Shadow-sm", {
ImageColor3 = BLACK,
Size = Dim2(1, 3, 1, 3),
AnchorPoint = VEC05,
Position = DIM05,
Name = "Shadow",
ImageTransparency = 1,
Visible = not ak
}), ab.NewRoundFrame(am, not ak and "SquircleOutline" or "SquircleOutline2", {
ThemeTag = {ImageColor3 = ah ~= "White" and "Outline" or nil},
Size = DIM1010, ImageColor3 = ah == "White" and BLACK or nil,
ImageTransparency = ah == "Primary" and .95 or .85,
Name = "SquircleOutline"
}, {
ac("UIGradient", {
Rotation = 70,
Color = CSnew {
CSKnew(0.0, WHITE),
CSKnew(0.5, WHITE),
CSKnew(1.0, WHITE)
},
Transparency = NSnew {
NSKnew(0.0, 0.1),
NSKnew(0.5, 1),
NSKnew(1.0, 0.1)
};
});
}), ab.NewRoundFrame(am, "Squircle", {
Size = DIM1010, Name = "Frame",
ThemeTag = {ImageColor3 = ah ~= "White" and "Text" or nil},
ImageColor3 = ah == "White" and BLACK or nil,
ImageTransparency = 1
}, {
ac("UIPadding", {
PaddingLeft = Dim(0, 16),
PaddingRight = Dim(0, 16)
}), ac("UIListLayout", {
FillDirection = "Horizontal",
Padding = Dim(0, 8),
VerticalAlignment = "Center",
HorizontalAlignment = "Center"
}), an, ac("TextLabel", {
BackgroundTransparency = 1, FontFace = Fnew(ab.Font, Enum.FontWeight.SemiBold), Text = ae or "Button",
ThemeTag = {TextColor3 = (ah ~= "Primary" and ah ~= "White") and "Text"},
TextColor3 = ah == "Primary" and WHITE or ah == "White" and BLACK or nil,
AutomaticSize = "XY",
TextSize = 18
});
});
}); ab.AddSignal(ao.MouseEnter, function()
TwCreate(TweenService, ao.Frame, TwInfo(0.047), {ImageTransparency = 0.95}):Play();
end); ab.AddSignal(ao.MouseLeave, function()
TwCreate(TweenService, ao.Frame, TwInfo(0.047), {ImageTransparency = 1}):Play();
end); ab.AddSignal(ao.MouseButton1Up, function()
if aj then aj:Close()(); end;
if ag then ab.SafeCallback(ag); end;
end); return ao;
end; return aa;
end;
function a.k()
local aa = {}; local ab = a.load "b"; local ac = ab.New;
function aa.New(ae, af, ag, ah, ai, aj, ak, al)
ah = ah or "Input"; local am, an = ak or 10, nil;
if af and af ~= "" then
an = ac("ImageLabel", {
Image = ab.Icon(af)[1],
ImageRectSize = ab.Icon(af)[2].ImageRectSize,
ImageRectOffset = ab.Icon(af)[2].ImageRectPosition,
Size = Dim2(0, 21, 0, 21),
BackgroundTransparency = 1,
ThemeTag = {ImageColor3 = "Icon"}
});
end; local ao = ah ~= "Input";
local ap = ac("TextBox", {
BackgroundTransparency = 1,
TextSize = 17,
FontFace = Fnew(ab.Font, Enum.FontWeight.Regular),
Size = Dim2(1, an and -29 or 0, 1, 0),
PlaceholderText = ae,
ClearTextOnFocus = al or false,
ClipsDescendants = true,
TextWrapped = ao,
MultiLine = ao,
TextXAlignment = "Left",
TextYAlignment = ah == "Input" and "Center" or "Top",
ThemeTag = {PlaceholderColor3 = "PlaceholderText", TextColor3 = "Text"}
}); local aq = ac("Frame", {
Size = Dim2(1, 0, 0, 42),
Parent = ag,
BackgroundTransparency = 1
}, {
ac("Frame", {
Size = DIM1010,
BackgroundTransparency = 1
}, {
ab.NewRoundFrame(am, "Squircle", {
ThemeTag = {
ImageColor3 = "Accent"
},
Size = DIM1010,
ImageTransparency = 0.97
}), ab.NewRoundFrame(am, "SquircleOutline", {
ThemeTag = {
ImageColor3 = "Outline"
},
Size = DIM1010,
ImageTransparency = 0.95
}, {}), ab.NewRoundFrame(am, "Squircle", {
Size = DIM1010,
Name = "Frame",
ImageColor3 = WHITE,
ImageTransparency = 0.95
}, {
ac("UIPadding", {
PaddingTop = Dim(0, ah == "Input" and 0 or 12),
PaddingLeft = Dim(0, 12),
PaddingRight = Dim(0, 12),
PaddingBottom = Dim(0, ah == "Input" and 0 or 12)
}), ac("UIListLayout", {
FillDirection = "Horizontal",
Padding = Dim(0, 8),
VerticalAlignment = ah == "Input" and "Center" or "Top",
HorizontalAlignment = "Left"
}), an, ap
});
});
}); if aj then
ab.AddSignal(PropChangeSignal(ap, "Text"), function()
if ai then
ab.SafeCallback(ai, ap.Text);
end;
end);
else
ab.AddSignal(ap.FocusLost, function()
if ai then
ab.SafeCallback(ai, ap.Text);
end;
end);
end; return aq;
end; return aa;
end;
function a.l()
local aa = a.load"b"; local ab = aa.New; local ad = {
Holder = nil,
Parent = nil
}; function ad.Init(ae, af)
Window = ae; ad.Parent = af;
return ad;
end; function ad.Create(ae, af)
local ag = {UICorner = 24, UIPadding = 15, UIElements = {}};
if ae then ag.UIPadding = 0; end; if ae then ag.UICorner = 26; end;
af = af or "Dialog"; if not ae then
ag.UIElements.FullScreen = ab("Frame", {
ZIndex = 999,
BackgroundTransparency = 1,
BackgroundColor3 = fromHex "#000000",
Size = DIM1010,
Active = false,
Visible = false,
Parent = ad.Parent or (Window and Window.UIElements and Window.UIElements.Main and Window.UIElements.Main.Main)
}, {
ab("UICorner", {
CornerRadius = Dim(0, (Window and Window.UICorner) or Instancen("UICorner"))
});
});
end; ag.UIElements.Main = ab("Frame", {
Size = Dim2(0, 280, 0, 0),
ThemeTag = {
BackgroundColor3 = af .. "Background"
},
AutomaticSize = "Y",
BackgroundTransparency = 1,
Visible = false,
ZIndex = 99999
}, {
ab("UIPadding", {
PaddingTop = Dim(0, ag.UIPadding),
PaddingLeft = Dim(0, ag.UIPadding),
PaddingRight = Dim(0, ag.UIPadding),
PaddingBottom = Dim(0, ag.UIPadding)
});
}); ag.UIElements.MainContainer = aa.NewRoundFrame(ag.UICorner, "Squircle", {
Visible = false,
ImageTransparency = ae and 0.15 or 0,
Parent = ae and ad.Parent or ag.UIElements.FullScreen,
Position = DIM05,
AnchorPoint = VEC05,
AutomaticSize = "XY",
ThemeTag = {
ImageColor3 = af .. "Background",
ImageTransparency = af .. "BackgroundTransparency"
},
ZIndex = 9999
}, {ag.UIElements.Main}); function ag.Open(ah)
if not ae then
ag.UIElements.FullScreen.Visible = true;
ag.UIElements.FullScreen.Active = true;
end; tk.spawn(function()
ag.UIElements.MainContainer.Visible = true; if not ae then
TwCreate(TweenService, ag.UIElements.FullScreen, TWI_01, {BackgroundTransparency = 0.3}):Play();
end; TwCreate(TweenService, ag.UIElements.MainContainer, TWI_01, {ImageTransparency = 0}):Play();
tk.spawn(function()
twait(0.05); ag.UIElements.Main.Visible = true;
end);
end);
end; function ag.Close(ah)
if not ae then
TwCreate(TweenService, ag.UIElements.FullScreen, TWI_01, {BackgroundTransparency = 1}):Play();
ag.UIElements.FullScreen.Active = false; tk.spawn(function()
twait(0.1); ag.UIElements.FullScreen.Visible = false;
end);
end; ag.UIElements.Main.Visible = false;
TwCreate(TweenService, ag.UIElements.MainContainer, TWI_01, {ImageTransparency = 1}):Play();
tk.spawn(function()
twait(0.1) if not ae then
ag.UIElements.FullScreen:Destroy();
else
ag.UIElements.MainContainer:Destroy();
end;
end); return function() end;
end; return ag;
end; return ad;
end;
function a.n()
local function map(ab, ac, ad, ae, af)
return (ab - ac) * (af - ae) / (ad - ac) + ae;
end; local function viewportPointToWorld(ab, ac)
local ad = Cam:ScreenPointToRay(ab.X, ab.Y);
return ad.Origin + ad.Direction * ac;
end; local function getOffset()
local ab = Cam.ViewportSize.Y;
return map(ab, 0, 2560, 8, 56);
end; return {viewportPointToWorld, getOffset};
end;
function a.o()
local ab = a.load "b"; local ac = ab.New;
local function Hiter(planePos, planeNormal, rayOrigin, rayDirection)
local n = planeNormal
local d = rayDirection
local v = rayOrigin - planePos
local num = (n.x * v.x) + (n.y * v.y) + (n.z * v.z)
local den = (n.x * d.x) + (n.y * d.y) + (n.z * d.z)
local a = -num / den
return rayOrigin + (a * rayDirection), a
end
return function(ag)
local ah = {};
local ak = ac("Frame", {
BackgroundTransparency = 1,
Size = Dim2Scale(1, 1)
});
local Part = Instancen('Part', Workspace)
Part.Name = "TTJY_AcrylicPart"
local DepthOfField = Instancen('DepthOfFieldEffect', Lighting)
local SurfaceGui = Instancen('SurfaceGui', Part)
local BlockMesh = Instancen("BlockMesh")
BlockMesh.Parent = Part;
Part.Material = Enum.Material.Glass
Part.Transparency = 0.99
Part.Reflectance = 1
Part.CastShadow = false
Part.Anchored = true
Part.CanCollide = false
Part.CanQuery = false
Part.Size = Vec3(1, 1, 1) * 0.01
Part.Color = BLACK
DepthOfField.Enabled = true
DepthOfField.FarIntensity = 1
DepthOfField.FocusDistance = 0
DepthOfField.InFocusRadius = 500
DepthOfField.NearIntensity = 1
SurfaceGui.AlwaysOnTop = true
SurfaceGui.Adornee = Part
SurfaceGui.Active = true
SurfaceGui.Face = Enum.NormalId.Front
SurfaceGui.ZIndexBehavior = Enum.ZIndexBehavior.Global
local ScreenPointToRay = Cam.ScreenPointToRay;
local render = function()
if not Cam then return; end;
DepthOfField.Enabled = true
local corner0 = ak.AbsolutePosition
local corner1 = corner0 + ak.AbsoluteSize
local ray0 = ScreenPointToRay(Cam, corner0.X, corner0.Y, 1)
local ray1 = ScreenPointToRay(Cam, corner1.X, corner1.Y, 1)
local planeOrigin = Cam.CFrame.Position + Cam.CFrame.LookVector * (0.05 - Cam.NearPlaneZ)
local planeNormal = Cam.CFrame.LookVector
local pos0, _ = Hiter(planeOrigin, planeNormal, ray0.Origin, ray0.Direction);
local pos1, _ = Hiter(planeOrigin, planeNormal, ray1.Origin, ray1.Direction);
pos0 = Cam.CFrame:PointToObjectSpace(pos0);
pos1 = Cam.CFrame:PointToObjectSpace(pos1);
local size = pos1 - pos0;
local center = (pos0 + pos1) / 2;
BlockMesh.Offset = center;
BlockMesh.Scale = size / 0.0101;
Part.CFrame = Cam.CFrame;
end;
local conn = RunService.RenderStepped:Connect(render);
Part.Destroying:Connect(function()
if conn then conn:Disconnect() end
pcall(function() DepthOfField:Destroy() end)
pcall(function() SurfaceGui:Destroy() end)
end)
ah.AddParent = function(al)
ab.AddSignal(PropChangeSignal(al, "Visible"), function()
ah.SetVisibility(al.Visible);
end);
end;
ah.SetVisibility = function(al)
Part.Transparency = al and 0.99 or 1;
DepthOfField.Enabled = al;
end;
ah.Frame = ak;
ah.Model = Part;
return ah;
end;
end;
function a.p()
local aa = a.load "b"; local ab = a.load "o";
local ac = aa.New; return function(ad)
local ae = {}; ae.Frame = ac("Frame", {
Size = Dim2Scale(1, 1),
BackgroundTransparency = 1,
BackgroundColor3 = WHITE,
BorderSizePixel = 0
}, {
ac("UICorner", {
CornerRadius = Dim(0, 8)
}), ac("Frame", {
BackgroundTransparency = 1,
Size = Dim2Scale(1, 1),
Name = "Background",
ThemeTag = {
BackgroundColor3 = "AcrylicMain"
}
}, {
ac("UICorner", {
CornerRadius = Dim(0, 8)
});
}), ac("Frame", {
BackgroundColor3 = WHITE,
BackgroundTransparency = 1,
Size = Dim2Scale(1, 1)
}, {}), ac("ImageLabel", {
Image = "rbxassetid://9968344105",
ImageTransparency = 0.98,
ScaleType = Enum.ScaleType.Tile,
TileSize = Dim2(0, 128, 0, 128),
Size = Dim2Scale(1, 1),
BackgroundTransparency = 1
}, {
ac("UICorner", {
CornerRadius = Dim(0, 8)
});
}), ac("ImageLabel", {
Image = "rbxassetid://9968344227",
ImageTransparency = 0.9,
ScaleType = Enum.ScaleType.Tile,
TileSize = Dim2(0, 128, 0, 128),
Size = Dim2Scale(1, 1),
BackgroundTransparency = 1,
ThemeTag = {ImageTransparency = "AcrylicNoise"}
}, {
ac("UICorner", {
CornerRadius = Dim(0, 8)
});
}), ac("Frame", {
BackgroundTransparency = 1,
Size = Dim2Scale(1, 1),
ZIndex = 2
}, {});
}); local af=nil; twait()
if ad.UseAcrylic then
af = ab(); af.Frame.Parent = ae.Frame;
ae.Model = af.Model ae.AddParent = af.AddParent;
ae.SetVisibility = af.SetVisibility;
end; return ae, af;
end;
end;
function a.q()
local ab = {AcrylicBlur = a.load "o", AcrylicPaint = a.load "p"};
function ab.init()
function ab.Enable() end;
function ab.Disable() end;
end; return ab;
end;
function a.r()
local aa = {}; local ab = a.load "b"; local ac = ab.New;
function aa.new(ae)
local af = {
Title = ae.Title or "Dialog", Content = ae.Content, Icon = ae.Icon,
IconThemed = ae.IconThemed, Thumbnail = ae.Thumbnail, Buttons = ae.Buttons, IconSize = 22
}; local ag = a.load("l").Init(nil, ae.WindUI.ScreenGui.Popups);
local ah = ag.Create(true, "Popup"); local ai, ak = 200, nil; local aj = 430;
if af.Thumbnail and af.Thumbnail.Image then
aj = 430 + (ai / 2);
end; ah.UIElements.Main.AutomaticSize = "Y";
ah.UIElements.Main.Size = Dim2(0, aj, 0, 0);
if af.Icon then
ak = ab.Image(
af.Icon, af.Title .. ":" .. af.Icon, 0,
ae.WindUI.Window, "Popup", true,
ae.IconThemed, "PopupIcon"
) ak.Size = Dim2(0, af.IconSize, 0, af.IconSize)
ak.LayoutOrder = -1;
end; local al = ac("TextLabel", {
AutomaticSize = "Y",
BackgroundTransparency = 1,
Text = af.Title,
TextXAlignment = "Left",
FontFace = Fnew(ab.Font, Enum.FontWeight.SemiBold),
ThemeTag = {TextColor3 = "PopupTitle"},
TextSize = 20,
TextWrapped = true,
Size = Dim2(1, ak and -af.IconSize - 14 or 0, 0, 0)
}); local am = ac("Frame", {
BackgroundTransparency = 1,
AutomaticSize = "XY"
}, {
ac("UIListLayout", {
Padding = Dim(0, 14),
FillDirection = "Horizontal",
VerticalAlignment = "Center"
}), ak, al
}); local an = ac("Frame", {
AutomaticSize = "Y",
Size = Dim2(1, 0, 0, 0),
BackgroundTransparency = 1
},{am}); local ao=nil;
if af.Content and af.Content ~= "" then
ao = ac("TextLabel", {
Size = Dim2(1, 0, 0, 0),
AutomaticSize = "Y",
FontFace = Fnew(ab.Font, Enum.FontWeight.Medium),
TextXAlignment = "Left",
Text = af.Content,
TextSize = 18,
TextTransparency = .2,
ThemeTag = {TextColor3 = "PopupContent"},
BackgroundTransparency = 1,
RichText = true,
TextWrapped = true
});
end; local ap = ac("Frame", {
Size = Dim2(1, 0, 0, 42),
BackgroundTransparency = 1
}, {
ac("UIListLayout", {
Padding = Dim(0, 9),
FillDirection = "Horizontal",
HorizontalAlignment = "Right"
});
}); local aq, ar=nil, nil;
if af.Thumbnail and af.Thumbnail.Image then
if af.Thumbnail.Title then
ar = ac("TextLabel", {
Text = af.Thumbnail.Title,
ThemeTag = {TextColor3 = "Text"},
TextSize = 18,
FontFace = Fnew(ab.Font, Enum.FontWeight.Medium),
BackgroundTransparency = 1,
AutomaticSize = "XY",
AnchorPoint = VEC05,
Position = DIM05
});
end; aq = ac("ImageLabel", {
Image = af.Thumbnail.Image,
BackgroundTransparency = 1,
Size = Dim2(0, ai, 1, 0),
Parent = ah.UIElements.Main,
ScaleType = "Crop"
}, {
ar, ac("UICorner", {
CornerRadius = Dim(0, 0)
});
});
end; ac("Frame", {
Size = Dim2(1, aq and -ai or 0, 1, 0),
Position = Dim2(0, aq and ai or 0, 0, 0),
BackgroundTransparency = 1,
Parent = ah.UIElements.Main
}, {
ac("Frame", {
Size = DIM1010,
BackgroundTransparency = 1
}, {
ac("UIListLayout", {
Padding = Dim(0, 18),
FillDirection = "Vertical"
}), an, ao, ap, ac("UIPadding", {
PaddingTop = Dim(0, 16),
PaddingLeft = Dim(0, 16),
PaddingRight = Dim(0, 16),
PaddingBottom = Dim(0, 16)
});
});
}); local ar = a.load("j").New;
for as, at in next, af.Buttons do
ar(at.Title, at.Icon, at.Callback, at.Variant, ap, ah);
end; ah:Open(); return af;
end; return aa;
end;
function a.s()
return function(aa)
return {
Dark = {
Name = "Dark",
Accent = aa:Gradient({
["0"] = { Color = Color3.fromHex("#800000"), Transparency = 0 }, -- Deep Pulse
["50"] = { Color = Color3.fromHex("#ff003c"), Transparency = 0 }, -- Cyber Neon (Shine)
["100"] = { Color = Color3.fromHex("#800000"), Transparency = 0 }, -- Deep Pulse
}, { Rotation = 90 }),
Background = aa:Gradient({
["0"] = { Color = Color3.fromHex("#08080c"), Transparency = 0.1 },
["100"] = { Color = Color3.fromHex("#121220"), Transparency = 0.08 },
}, { Rotation = 45 }),
BackgroundTransparency = 0.1,
Outline = Color3.fromHex("#ff003c"),
Text = Color3.fromHex("#ffffff"),
Placeholder = Color3.fromHex("#73738c"),
Button = Color3.fromHex("#ff003c"),
Icon = Color3.fromHex("#ffffff"),
Hover = Color3.fromHex("#ffffff"),
WindowBackground = Color3.fromHex("#000000"),
WindowShadow = Color3.fromHex("#000000"),
WindowTopbarButtonIcon = Color3.fromHex("#ff4d4d"),
WindowTopbarTitle = Color3.fromHex("#ffffff"),
WindowTopbarAuthor = Color3.fromHex("#ff003c"),
WindowTopbarIcon = Color3.fromHex("#ffffff"),
DialogBackground = Color3.fromHex("#0f0f14"),
DialogBackgroundTransparency = 0.05,
DialogTitle = Color3.fromHex("#ffffff"),
DialogContent = Color3.fromHex("#d0d0d0"),
DialogIcon = Color3.fromHex("#ff003c"),
PopupBackground = Color3.fromHex("#0f0f14"),
PopupBackgroundTransparency = 0.05,
PopupTitle = Color3.fromHex("#ffffff"),
PopupContent = Color3.fromHex("#d0d0d0"),
PopupIcon = Color3.fromHex("#ff003c"),
TabBackground = Color3.fromHex("#ff003c"),
TabTitle = Color3.fromHex("#ffffff"),
TabIcon = Color3.fromHex("#ffffff"),
ElementBackground = aa:Gradient({
["0"] = { Color = Color3.fromHex("#000000"), Transparency = 0 },
["80"] = { Color = Color3.fromHex("#000000"), Transparency = 0 },
["100"] = { Color = Color3.fromHex("#ffffff"), Transparency = 0.2 },
}, {
Rotation = 180,
}),
ElementTitle = Color3.fromHex("#ffffff"),
ElementDesc = Color3.fromHex("#a0b0b0"),
ElementIcon = Color3.fromHex("#ff003c"),
PageBackgroundTransparency = 1,
GroupBackgroundTransparency = 0.93,
GroupBackground = Color3.fromRGB(117, 117, 117),
Toggle = Color3.fromHex("#ff003c"),
ToggleBar = Color3.fromHex("#ffffff"),
Checkbox = Color3.fromHex("#ff003c"),
CheckboxIcon = Color3.fromHex("#ffffff"),
Slider = Color3.fromHex("#ff003c"),
SliderThumb = Color3.fromHex("#ffffff"),
}, Light = {
Name = "Light",
Accent = fromHex "#FFFFFF",
Dialog = fromHex "#f4f4f5",
Outline = fromHex "#09090b",
Text = fromHex "#000000",
Placeholder = fromHex "#555555",
Background = fromHex "#e4e4e7",
Button = fromHex "#18181b",
Icon = fromHex "#52525b"
}, Rose = {
Name = "Rose",
Accent = fromHex "#be185d",
Dialog = fromHex "#4c0519",
Outline = fromHex "#fecdd3",
Text = fromHex "#fdf2f8",
Placeholder = fromHex "#d67aa6",
Background = fromHex "#1f0308",
Button = fromHex "#e11d48",
Icon = fromHex "#fb7185"
}, Plant = {
Name = "Plant",
Accent = fromHex "#166534",
Dialog = fromHex "#052e16",
Outline = fromHex "#bbf7d0",
Text = fromHex "#f0fdf4",
Placeholder = fromHex "#4fbf7a",
Background = fromHex "#0a1b0f",
Button = fromHex "#16a34a",
Icon = fromHex "#4ade80"
}, Red = {
Name = "Red",
Accent = fromHex "#991b1b",
Dialog = fromHex "#450a0a",
Outline = fromHex "#fecaca",
Text = fromHex "#fef2f2",
Placeholder = fromHex "#d95353",
Background = fromHex "#1c0606",
Button = fromHex "#dc2626",
Icon = fromHex "#ef4444"
}, Indigo = {
Name = "Indigo",
Accent = fromHex "#3730a3",
Dialog = fromHex "#1e1b4b",
Outline = fromHex "#c7d2fe",
Text = fromHex "#f1f5f9",
Placeholder = fromHex "#7078d9",
Background = fromHex "#0f0a2e",
Button = fromHex "#4f46e5",
Icon = fromHex "#6366f1"
}, Sky = {
Name = "Sky",
Accent = fromHex "#0369a1",
Dialog = fromHex "#0c4a6e",
Outline = fromHex "#bae6fd",
Text = fromHex "#f0f9ff",
Placeholder = fromHex "#4fb6d9",
Background = fromHex "#041f2e",
Button = fromHex "#0284c7",
Icon = fromHex "#0ea5e9"
}, Violet = {
Name = "Violet",
Accent = fromHex "#6d28d9",
Dialog = fromHex "#3c1361",
Outline = fromHex "#ddd6fe",
Text = fromHex "#faf5ff",
Placeholder = fromHex "#8f7ee0",
Background = fromHex "#1e0a3e",
Button = fromHex "#7c3aed",
Icon = fromHex "#8b5cf6"
}, Amber = {
Name = "Amber",
Accent = fromHex "#b45309",
Dialog = fromHex "#451a03",
Outline = fromHex "#fde68a",
Text = fromHex "#fffbeb",
Placeholder = fromHex "#d1a326",
Background = fromHex "#1c1003",
Button = fromHex "#d97706",
Icon = fromHex "#f59e0b"
}, Emerald = {
Name = "Emerald",
Accent = fromHex "#047857",
Dialog = fromHex "#022c22",
Outline = fromHex "#a7f3d0",
Text = fromHex "#ecfdf5",
Placeholder = fromHex "#3fbf8f",
Background = fromHex "#011411",
Button = fromHex "#059669",
Icon = fromHex "#10b981"
}, Midnight = {
Name = "Midnight",
Accent = fromHex "#1e3a8a",
Dialog = fromHex "#0c1e42",
Outline = fromHex "#bfdbfe",
Text = fromHex "#dbeafe",
Placeholder = fromHex "#2f74d1",
Background = fromHex "#0a0f1e",
Button = fromHex "#2563eb",
Icon = fromHex "#3b82f6"
}, Crimson = {
Name = "Crimson",
Accent = fromHex "#b91c1c",
Dialog = fromHex "#450a0a",
Outline = fromHex "#fca5a5",
Text = fromHex "#fef2f2",
Placeholder = fromHex "#6f757b",
Background = fromHex "#0c0404",
Button = fromHex "#991b1b",
Icon = fromHex "#dc2626"
}, MonokaiPro = {
Name = "Monokai Pro",
Accent = fromHex "#fc9867",
Dialog = fromHex "#1e1e1e",
Outline = fromHex "#78dce8",
Text = fromHex "#fcfcfa",
Placeholder = fromHex "#6f6f6f",
Background = fromHex "#191622",
Button = fromHex "#ab9df2",
Icon = fromHex "#a9dc76"
}, CottonCandy = {
Name = "Cotton Candy",
Accent = fromHex "#ec4899",
Dialog = fromHex "#2d1b3d",
Outline = fromHex "#f9a8d4",
Text = fromHex "#fdf2f8",
Placeholder = fromHex "#8a5fd3",
Background = fromHex "#1a0b2e",
Button = fromHex "#d946ef",
Icon = fromHex "#06b6d4"
}, Rainbow = {
Name = "Rainbow", Accent = aa:Gradient({
["0"] = {Color = fromHex "#00ff41", Transparency = 0},
["33"] = {Color = fromHex "#00ffff", Transparency = 0},
["66"] = {Color = fromHex "#0080ff", Transparency = 0},
["100"] = {Color = fromHex "#8000ff", Transparency = 0}
}, {Rotation = 45}), Dialog = aa:Gradient({
["0"] = {Color = fromHex "#ff0080", Transparency = 0},
["25"] = {Color = fromHex "#8000ff", Transparency = 0},
["50"] = {Color = fromHex "#0080ff", Transparency = 0},
["75"] = {Color = fromHex "#00ff80", Transparency = 0},
["100"] = {Color = fromHex "#ff8000", Transparency = 0}
}, {Rotation = 135}), Outline = fromHex "#ffffff", Text = fromHex "#ffffff",
Placeholder = fromHex "#00ff80", Background = aa:Gradient({
["0"] = {Color = fromHex "#ff0040", Transparency = 0},
["20"] = {Color = fromHex "#ff4000", Transparency = 0},
["40"] = {Color = fromHex "#ffff00", Transparency = 0},
["60"] = {Color = fromHex "#00ff40", Transparency = 0},
["80"] = {Color = fromHex "#0040ff", Transparency = 0},
["100"] = {Color = fromHex "#4000ff", Transparency = 0}
}, {Rotation = 90}), Button = aa:Gradient({
["0"] = {Color = fromHex "#ff0080", Transparency = 0},
["25"] = {Color = fromHex "#ff8000", Transparency = 0},
["50"] = {Color = fromHex "#ffff00", Transparency = 0},
["75"] = {Color = fromHex "#80ff00", Transparency = 0},
["100"] = {Color = fromHex "#00ffff", Transparency = 0}
}, {Rotation = 60}), Icon = fromHex "#ffffff"
};
};
end;
end;
function a.t()
local aa = {}; local ab = a.load "b"; local ac = ab.New;
function aa.New(ae, af, ag, ah, ai)
local aj, ak = ai or 10, nil;
if af and af ~= "" then
ak = ac("ImageLabel", {
Image = ab.Icon(af)[1],
ImageRectSize = ab.Icon(af)[2].ImageRectSize,
ImageRectOffset = ab.Icon(af)[2].ImageRectPosition,
Size = Dim2(0, 21, 0, 21),
BackgroundTransparency = 1,
ThemeTag = {ImageColor3 = "Icon"}
});
end; local al = ac("TextLabel", {
BackgroundTransparency = 1,
TextSize = 17,
FontFace = Fnew(ab.Font, Enum.FontWeight.Regular),
Size = Dim2(1, ak and -29 or 0, 1, 0),
TextXAlignment = "Left",
ThemeTag = {TextColor3 = ah and "Placeholder" or "Text"},
Text = ae
}); local am = ac("TextButton", {
Size = Dim2(1, 0, 0, 42),
Parent = ag,
BackgroundTransparency = 1,
Text = ""
}, {
ac("Frame", {
Size = DIM1010,
BackgroundTransparency = 1
}, {
ab.NewRoundFrame(aj, "Squircle", {
ThemeTag = {ImageColor3 = "Accent"},
Size = DIM1010,
ImageTransparency = .97
}), ab.NewRoundFrame(aj, "SquircleOutline", {
ThemeTag = {ImageColor3 = "Outline"},
Size = DIM1010,
ImageTransparency = .95
}, {
ac("UIGradient", {
Rotation = 70,
Color = CSnew {
CSKnew(0.0, WHITE),
CSKnew(0.5, WHITE),
CSKnew(1.0, WHITE)
},
Transparency = NSnew {
NSKnew(0.0, 0.1),
NSKnew(0.5, 1),
NSKnew(1.0, 0.1)
};
});
}), ab.NewRoundFrame(aj, "Squircle", {
Size = DIM1010,
Name = "Frame",
ImageColor3 = WHITE,
ImageTransparency = 0.95
}, {
ac("UIPadding", {
PaddingLeft = Dim(0, 12),
PaddingRight = Dim(0, 12)
}), ac("UIListLayout", {
FillDirection = "Horizontal",
Padding = Dim(0, 8),
VerticalAlignment = "Center",
HorizontalAlignment = "Left"
}), ak, al
});
});
}); return am;
end; return aa;
end;
function a.u()
local aa = {}; local ad = a.load("b"); local ae = ad.New
function aa.New(ag, ah, ai, aj)
local ak = ae("Frame", {
Size = Dim2(0, aj, 1, 0),
BackgroundTransparency = 1,
Position = Dim2(1, 0, 0, 0),
AnchorPoint = Vec2(1, 0),
Parent = ah,
ZIndex = 999,
Active = true
}); local al = ad.NewRoundFrame(aj / 2, "Squircle", {
Size = Dim2(1, 0, 0, 0),
ImageTransparency = 0.85,
Parent = ak
});
local am = ae("Frame", {
Size = Dim2(1, 12, 1, 12),
Position = DIM05,
AnchorPoint = VEC05,
BackgroundTransparency = 1,
Active = true,
ZIndex = 999,
Parent = al
}); local an, ao = false, 0;
local function updateSliderSize()
local ap = ag; local aq = ap.AbsoluteCanvasSize.Y;
local ar = ap.AbsoluteWindowSize.Y; if aq <= ar then
al.Visible = false;
return;
end; local as = math.clamp(ar / aq, 0.1, 1);
al.Size = Dim2(1, 0, as, 0); al.Visible = true;
end; local function updateScrollingFramePosition()
local ap = al.Position.Y.Scale; local aq = ag.AbsoluteCanvasSize.Y;
local ar = ag.AbsoluteWindowSize.Y; local as = math.max(aq - ar, 0);
if as <= 0 then return; end;
local at = math.max(1 - al.Size.Y.Scale, 0);
if at <= 0 then return; end; local au = ap / at;
ag.CanvasPosition = Vec2(ag.CanvasPosition.X, au * as);
end; local function updateThumbPosition()
if an then return; end; local ap = ag.CanvasPosition.Y;
local aq = ag.AbsoluteCanvasSize.Y; local ar = ag.AbsoluteWindowSize.Y;
local as = math.max(aq - ar, 0); if as <= 0 then
al.Position = DIM0000;
return;
end; local at = ap / as;
local au = math.max(1 - al.Size.Y.Scale, 0);
local av = math.clamp(at * au, 0, au);
al.Position = Dim2(0, 0, av, 0);
end; ad.AddSignal(ak.InputBegan, function(ap)
if (ap.UserInputType == Enum.UserInputType.MouseButton1 or ap.UserInputType == Enum.UserInputType.Touch) then
local aq = al.AbsolutePosition.Y; local ar = aq + al.AbsoluteSize.Y;
if not (ap.Position.Y >= aq and ap.Position.Y <= ar) then
local as, at, au = ak.AbsolutePosition.Y, ak.AbsoluteSize.Y, al.AbsoluteSize.Y;
local av = ap.Position.Y - as - au / 2; local aw = at - au;
local ax = math.clamp(av / aw, 0, 1 - al.Size.Y.Scale);
al.Position = Dim2(0, 0, ax, 0); updateScrollingFramePosition();
end;
end;
end); ad.AddSignal(am.InputBegan, function(ap)
if ap.UserInputType == Enum.UserInputType.MouseButton1 or ap.UserInputType == Enum.UserInputType.Touch then
local aq, ar = nil, nil; an = true; ao = ap.Position.Y - al.AbsolutePosition.Y;
ac.InputChanged:Connect(function(as)
if as.UserInputType == Enum.UserInputType.MouseMovement or as.UserInputType == Enum.UserInputType.Touch then
local at, au, av = ak.AbsolutePosition.Y, ak.AbsoluteSize.Y, al.AbsoluteSize.Y;
local aw = as.Position.Y - at - ao; local ax = au - av;
local ay = math.clamp(aw / ax, 0, 1 - al.Size.Y.Scale);
al.Position = Dim2(0, 0, ay, 0); updateScrollingFramePosition();
end;
end); ar = ac.InputEnded:Connect(function(as)
if as.UserInputType == Enum.UserInputType.MouseButton1 or as.UserInputType == Enum.UserInputType.Touch then
an = false; if aq then
aq:Disconnect();
end; if ar then
ar:Disconnect();
end;
end;
end);
end;
end); ad.AddSignal(PropChangeSignal(ag, "AbsoluteWindowSize"), function()
updateSliderSize(); updateThumbPosition();
end); ad.AddSignal(PropChangeSignal(ag, "AbsoluteCanvasSize"), function()
updateSliderSize(); updateThumbPosition();
end); ad.AddSignal(PropChangeSignal(ag, "CanvasPosition"), function()
if not an then
updateThumbPosition();
end;
end); updateSliderSize(); updateThumbPosition(); return ak;
end; return aa;
end;
function a.v()
local aa = {}; local ab = a.load"b"; local ac = ab.New;
function aa.New(ae, af, ag)
local ah, ai, ak = {
Title = af.Title or "Tag", Icon = af.Icon,
Color = af.Color or fromHex "#315dff",
Radius = af.Radius or 999,
TagFrame = nil, Height = 26, Padding = 10,
TextSize = 14, IconSize = 16
}, nil, nil; if ah.Icon then
ai = ab.Image(ah.Icon, ah.Icon, 0, af.Window, "Tag", false); ai.Size = Dim2(0, ah.IconSize, 0, ah.IconSize);
ai.ImageLabel.ImageColor3 = typeof(ah.Color) == "Color3" and ab.GetTextColorForHSB(ah.Color) or nil;
end; local aj = ac("TextLabel", {
BackgroundTransparency = 1,
AutomaticSize = "XY",
TextSize = ah.TextSize,
FontFace = Fnew(ab.Font, Enum.FontWeight.SemiBold),
Text = ah.Title,
TextColor3 = typeof(ah.Color) == "Color3" and ab.GetTextColorForHSB(ah.Color) or nil
}); if typeof(ah.Color) == "table" then
ak = ac "UIGradient"; for al, am in next, ah.Color do
ak[al] = am;
end; aj.TextColor3 = ab.GetTextColorForHSB(ab.GetAverageColor(ak)); if ai then
ai.ImageLabel.ImageColor3 = ab.GetTextColorForHSB(ab.GetAverageColor(ak));
end;
end; local al = ab.NewRoundFrame(ah.Radius, "Squircle", {
AutomaticSize = "X",
Size = Dim2(0, 0, 0, ah.Height),
Parent = ag,
ImageColor3 = typeof(ah.Color) == "Color3" and ah.Color or WHITE;
}, {
ak, ac("UIPadding", {
PaddingLeft = Dim(0, ah.Padding),
PaddingRight = Dim(0, ah.Padding)
}), ai, aj, ac("UIListLayout", {
FillDirection = "Horizontal",
VerticalAlignment = "Center",
Padding = Dim(0, ah.Padding / 1.5)
});
}); function ah.SetTitle(am, an)
ah.Title = an; aj.Text = an;
end; function ah.SetColor(am, an)
ah.Color = an if typeof(an) == "table" then
local ao = ab.GetAverageColor(an); TwCreate(TweenService, aj, TWI_006, {TextColor3 = ab.GetTextColorForHSB(ao)}):Play();
local ap = FindFirstChildOfClass(al, "UIGradient") or ac("UIGradient", {Parent = al});
for aq, ar in next, an do ap[aq] = ar; end; TwCreate(TweenService, al, TWI_006, {ImageColor3 = WHITE}):Play();
else
if ak then ak:Destroy(); end TwCreate(TweenService, aj, TWI_006, {TextColor3 = ab.GetTextColorForHSB(an)}):Play();
if ai then TwCreate(TweenService, ai.ImageLabel, TWI_006, {ImageColor3 = ab.GetTextColorForHSB(an)}):Play(); end;
TwCreate(TweenService, al, TWI_006, {ImageColor3 = an}):Play();
end;
end; return ah;
end; return aa;
end;
function a.w()
local ac, ad = nil, {
Folder = nil,
Path = nil,
Configs = {},
Parser = {
Colorpicker = {
Save = function(ae)
return {
__type = ae.__type,
value = ae.Default:ToHex(),
transparency = ae.Transparency or nil
}
end,
Load = function(ae, af)
if ae and ae.Update then
ae:Update(fromHex(af.value), af.transparency or nil)
end
end
},
Dropdown = {
Save = function(ae)
return {
__type = ae.__type,
value = ae.Value
}
end,
Load = function(ae, af)
if ae and ae.Select then
ae:Select(af.value)
end
end
},
Input = {
Save = function(ae)
return {
__type = ae.__type,
value = ae.Value
}
end,
Load = function(ae, af)
if ae and ae.Set then
ae:Set(af.value)
end
end
},
Keybind = {
Save = function(ae)
return {
__type = ae.__type,
value = ae.Value
}
end,
Load = function(ae, af)
if ae and ae.Set then
ae:Set(af.value)
end
end
},
Slider = {
Save = function(ae)
return {
__type = ae.__type,
value = ae.Value.Default
}
end,
Load = function(ae, af)
if ae and ae.Set then
ae:Set(tonumber(af.value))
end
end
},
Toggle = {
Save = function(ae)
return {
__type = ae.__type,
value = ae.Value
}
end,
Load = function(ae, af)
if ae and ae.Set then
ae:Set(af.value)
end
end
}
}
}; function ad.Init(ae, af)
if not af.Folder then warn"[ WindUI.ConfigManager ] Window.Folder is not specified."; return false; end;
ac = af; ad.Folder = ac.Folder; ad.Path = "WindUI/" .. tostring(ad.Folder) .. "/config/"; if not isfolder("WindUI/" .. ad.Folder) then
makefolder("WindUI/" .. ad.Folder); if not isfolder("WindUI/" .. ad.Folder .. "/config/") then
makefolder("WindUI/" .. ad.Folder .. "/config/");
end;
end; local ag = ad:AllConfigs(); for ah, ai in next, ag do
if isfile and readfile and isfile(ai .. ".json") then
ad.Configs[ai] = readfile(ai .. ".json");
end;
end; return ad;
end; function ad.CreateConfig(ae, af, ag)
local ah = {
Path = ad.Path .. af .. ".json",
Elements = {}, CustomData = {},
AutoLoad = ag or false, Version = 1.2
} if not af then
return false, "No config file is selected";
end; function ah.SetAsCurrent(ai)
ac:SetCurrentConfig(ah);
end; function ah.Register(ai, aj, ak)
ah.Elements[aj] = ak;
end; function ah.Set(ai, aj, ak)
ah.CustomData[aj] = ak;
end; function ah.Get(ai, aj)
return ah.CustomData[aj];
end; function ah.SetAutoLoad(ai, aj)
ah.AutoLoad = aj;
end; function ah.Save(ai)
if ac.PendingFlags then
for aj, ak in next, ac.PendingFlags do
ah:Register(aj, ak);
end;
end; local aj = {
__version = ah.Version, __elements = {},
__autoload = ah.AutoLoad, __custom = ah.CustomData
}; for ak, al in next, ah.Elements do
if ad.Parser[al.__type] then
aj.__elements[tostring(ak)] = ad.Parser[al.__type].Save(al);
end;
end; local am = EnCodeJ(HttpService, aj);
if writefile then
writefile(ah.Path, am);
end; return aj;
end; function ah.Load(ai)
if isfile and not isfile(ah.Path) then
return false, "Config file does not exist";
end; local aj, ak = pcall(function()
local aj = readfile or function()
warn "[ WindUI.ConfigManager ] The config system doesn't work in the studio.";
return nil;
end; return DeCodeJ(ab, aj(ah.Path));
end); if not aj then
return false, "Failed to parse config file";
end; if not ak.__version then
local al = {__version = ah.Version, __elements = ak, __custom = {}};
ak = al;
end; if ac.PendingFlags then
for al, am in next, ac.PendingFlags do
ah:Register(al, am);
end;
end; for al, am in next, (ak.__elements or {}) do
if ah.Elements[al] and ad.Parser[am.__type] then
tk.spawn(function()
ad.Parser[am.__type].Load(ah.Elements[al], am);
end);
end;
end; ah.CustomData = ak.__custom or {};
return ah.CustomData;
end; function ah.Delete(ai)
if not delfile then
return false, "delfile function is not available";
end; if not isfile(ah.Path) then
return false, "Config file does not exist";
end; local aj, ak = pcall(function()
delfile(ah.Path);
end); if not aj then
return false, "Failed to delete config file: " .. tostring(ak);
end; ad.Configs[af] = nil; if ac.CurrentConfig == ah then
ac.CurrentConfig = nil;
end; return true, "Config deleted successfully";
end; function ah.GetData(ai)
return {elements = ah.Elements, custom = ah.CustomData, autoload = ah.AutoLoad};
end; if isfile(ah.Path) then
local ai, aj = pcall(function()
return DeCodeJ(HttpService, readfile(ah.Path));
end); if ai and aj and aj.__autoload then
ah.AutoLoad = true; tk.spawn(function()
twait(0.5) local ak, al = pcall(function()
return ah:Load();
end); if ak then
if ac.Debug then
print("[ WindUI.ConfigManager ] AutoLoaded config: " .. af);
end;
else
warn("[ WindUI.ConfigManager ] Failed to AutoLoad config: " .. af .. " - " .. tostring(al));
end;
end);
end;
end; ah:SetAsCurrent(); ad.Configs[af] = ah;
return ah;
end; function ad.Config(ae, af, ag)
return ad:CreateConfig(af, ag);
end; function ad.GetAutoLoadConfigs(ae)
local af = {}; for ag, ah in pairs(ad.Configs) do
if ah.AutoLoad then
tble.insert(af, ag);
end;
end; return af;
end; function ad.DeleteConfig(ae, af)
if not delfile then
return false, "delfile function is not available";
end; local ag = ad.Path .. af .. ".json";
if not isfile(ag) then
return false, "Config file does not exist";
end; local ah, ai = pcall(function()
delfile(ag);
end); if not ah then
return false, "Failed to delete config file: " .. tostring(ai);
end; ad.Configs[af] = nil; if ac.CurrentConfig and ac.CurrentConfig.Path == ag then
ac.CurrentConfig = nil;
end; return true, "Config deleted successfully";
end; function ad.AllConfigs(ae)
if not listfiles then
return {};
end; local af = {};
if not isfolder(ad.Path) then
makefolder(ad.Path);
return af;
end; for ag, ah in next, listfiles(ad.Path) do
local ai = ah:match"([^\\/]+)%.json$";
if ai then
tble.insert(af, ai);
end;
end; return af;
end; function ad.GetConfig(ae, af)
return ad.Configs[af];
end; return ad;
end;
function a.x()
local aa = {}; local ab = a.load"b"; local ac = ab.New;
function aa.New(af)
local ag, ah = {Button = nil}, nil; local ai = ac("TextLabel", {
Text = af.Title,
TextSize = 17,
FontFace = Fnew(ab.Font, Enum.FontWeight.Medium),
BackgroundTransparency = 1,
AutomaticSize = "XY"
}); local aj = ac("Frame", {
Size = Dim2(0, 36, 0, 36),
BackgroundTransparency = 1,
Name = "Drag"
}, {
ac("ImageLabel", {
Image = ab.Icon "move"[1],
ImageRectOffset = ab.Icon "move"[2].ImageRectPosition,
ImageRectSize = ab.Icon "move"[2].ImageRectSize,
Size = Dim2(0, 18, 0, 18),
BackgroundTransparency = 1,
Position = DIM05,
AnchorPoint = VEC05,
ThemeTag = {
ImageColor3 = "Icon"
},
ImageTransparency = .3
});
}); local ak = ac("Frame", {
Size = Dim2(0, 1, 1, 0),
Position = Dim2(0, 36, 0.5, 0),
AnchorPoint = Vec2(0, 0.5),
BackgroundColor3 = WHITE,
BackgroundTransparency = .9
}); local al = ac("Frame", {
Size = DIM0000,
Position = Dim2(0.5, 0, 0, 28),
AnchorPoint = VEC05,
Parent = af.Parent,
BackgroundTransparency = 1,
Active = true,
Visible = false
}); local am = ac("TextButton", {
Size = Dim2(0, 0, 0, 44),
AutomaticSize = "X",
Parent = al,
Active = false,
BackgroundTransparency = .25,
ZIndex = 99,
BackgroundColor3 = BLACK
}, {
ac("UIScale", {
Scale = 1
}), ac("UICorner", {
CornerRadius = Dim(1, 0)
}), ac("UIStroke", {
Thickness = 1,
ApplyStrokeMode = "Border",
Color = WHITE,
Transparency = 0
}, {
ac("UIGradient", {
Color = CSnew(fromHex "40c9ff", fromHex "e81cff")
})
}), aj, ak, ac("UIListLayout", {
Padding = Dim(0, 4),
FillDirection = "Horizontal",
VerticalAlignment = "Center"
}), ac("TextButton", {
AutomaticSize = "XY",
Active = true,
BackgroundTransparency = 1,
Size = Dim2(0, 0, 0, 36),
BackgroundColor3 = WHITE
}, {
ac("UICorner", {
CornerRadius = Dim(1, -4)
}), ah, ac("UIListLayout", {
Padding = Dim(0, af.UIPadding),
FillDirection = "Horizontal",
VerticalAlignment = "Center"
}), ai, ac("UIPadding", {
PaddingLeft = Dim(0, 11),
PaddingRight = Dim(0, 11)
})
}), ac("UIPadding", {
PaddingLeft = Dim(0, 4),
PaddingRight = Dim(0, 4)
});
}); ag.Button = am; function ag.SetIcon(an, ao)
if ah then ah:Destroy(); end; if ao then
ah = ab.Image(ao, af.Title, 0, af.Folder, "OpenButton", true, af.IconThemed);
ah.Size = Dim2(0, 22, 0, 22);
ah.LayoutOrder = -1;
ah.Parent = ag.Button.TextButton;
end;
end; if af.Icon then
ag:SetIcon(af.Icon);
end; ab.AddSignal(PropChangeSignal(am, "AbsoluteSize"), function()
al.Size = Dim2(0, am.AbsoluteSize.X, 0, am.AbsoluteSize.Y);
end); ab.AddSignal(am.TextButton.MouseEnter, function()
TwCreate(TweenService, am.TextButton, TWI_01, {BackgroundTransparency = 0.93}):Play()
end); ab.AddSignal(am.TextButton.MouseLeave, function()
TwCreate(TweenService, am.TextButton, TWI_01, {BackgroundTransparency = 1}):Play();
end); local an = ab.Drag(al);
function ag.Visible(ao, ap)
al.Visible = ap;
end; function ag.Edit(ao, ap)
local aq = {
Title = ap.Title,
Icon = ap.Icon,
Enabled = ap.Enabled,
Position = ap.Position,
OnlyIcon = ap.OnlyIcon or false,
Draggable = ap.Draggable or nil,
OnlyMobile = ap.OnlyMobile,
CornerRadius = ap.CornerRadius or Dim(1, 0),
StrokeThickness = ap.StrokeThickness or 2,
Color = ap.Color or CSnew(fromHex "40c9ff", fromHex "e81cff")
}; if aq.Enabled == false then
af.IsOpenButtonEnabled = false;
end; if aq.OnlyMobile ~= false then
aq.OnlyMobile = true;
else
af.IsPC = false;
end; if aq.Draggable == false and aj and ak then
aj.Visible = aq.Draggable; ak.Visible = aq.Draggable;
if an then
an:Set(aq.Draggable);
end;
end; if aq.Position and al then
al.Position = aq.Position;
end; if aq.OnlyIcon == true and ai then
ai.Visible = false;
am.TextButton.UIPadding.PaddingLeft = Dim(0, 7);
am.TextButton.UIPadding.PaddingRight = Dim(0, 7);
elseif aq.OnlyIcon == false then
ai.Visible = true;
am.TextButton.UIPadding.PaddingLeft = Dim(0, 11);
am.TextButton.UIPadding.PaddingRight = Dim(0, 11);
end; if ai then
if aq.Title then
ai.Text = aq.Title;
ab:ChangeTranslationKey(ai, aq.Title);
elseif aq.Title == nil then end;
end; if aq.Icon then
ag:SetIcon(aq.Icon);
end; am.UIStroke.UIGradient.Color = aq.Color;
if Glow then Glow.UIGradient.Color = aq.Color; end;
am.UICorner.CornerRadius = aq.CornerRadius;
am.TextButton.UICorner.CornerRadius = Dim(aq.CornerRadius.Scale, aq.CornerRadius.Offset - 4);
am.UIStroke.Thickness = aq.StrokeThickness;
end; return ag;
end; return aa;
end;
function a.y()
local aa = {}; local ab = a.load "b"; local ac = ab.New;
function aa.New(ae, af, ag, ah, ai, aj)
local ak = {
Container = nil,
TooltipSize = 16,
TooltipArrowSizeX = ai == "Small" and 16 or 24,
TooltipArrowSizeY = ai == "Small" and 6 or 9,
PaddingX = ai == "Small" and 12 or 14,
PaddingY = ai == "Small" and 7 or 9,
Radius = 999,
TitleFrame = nil
}; ah = ah or ""; aj = aj ~= false;
local al = ac("TextLabel", {
AutomaticSize = "XY",
TextWrapped = aj,
BackgroundTransparency = 1,
FontFace = Fnew(ab.Font, Enum.FontWeight.Medium),
Text = ae,
TextSize = ai == "Small" and 15 or 17,
TextTransparency = 1,
ThemeTag = {TextColor3 = "Tooltip" .. ah .. "Text"}
}); ak.TitleFrame = al; local am = ac("UIScale", {Scale = 0.9});
local an = ac("Frame", {
AnchorPoint = Vec2(0.5, 0),
AutomaticSize = "XY",
BackgroundTransparency = 1,
Parent = af,
Visible = false
}, {
ac("UISizeConstraint", {
MaxSize = Vec2(400, math.huge)
}), ac("Frame", {
AutomaticSize = "XY",
BackgroundTransparency = 1,
LayoutOrder = 99,
Visible = ag,
Name = "Arrow"
}, {
ac("ImageLabel", {
Size = Dim2(0, ak.TooltipArrowSizeX, 0, ak.TooltipArrowSizeY),
BackgroundTransparency = 1,
Image = "rbxassetid://105854070513330",
ThemeTag = {
ImageColor3 = "Tooltip" .. ah
}
}, {})
}), ab.NewRoundFrame(ak.Radius, "Squircle", {
AutomaticSize = "XY",
ThemeTag = {
ImageColor3 = "Tooltip" .. ah
},
ImageTransparency = 1,
Name = "Background"
}, {
ac("Frame", {
AutomaticSize = "XY",
BackgroundTransparency = 1
}, {
ac("UICorner", {
CornerRadius = Dim(0, 16)
}), ac( "UIListLayout", {
Padding = Dim(0, 12),
FillDirection = "Horizontal",
VerticalAlignment = "Center"
}), al, ac("UIPadding", {
PaddingTop = Dim(0, ak.PaddingY),
PaddingLeft = Dim(0, ak.PaddingX),
PaddingRight = Dim(0, ak.PaddingX),
PaddingBottom = Dim(0, ak.PaddingY)
});
});
}), am, ac("UIListLayout", {
Padding = Dim(0, 0),
FillDirection = "Vertical",
VerticalAlignment = "Center",
HorizontalAlignment = "Center"
});
}); ak.Container = an; function ak.Open(ao)
an.Visible = true; TwCreate(TweenService, an.Background, TWI_Q_02, {ImageTransparency = 0}):Play();
TwCreate(TweenService, an.Arrow.ImageLabel, TWI_Q_02, {ImageTransparency = 0}):Play();
TwCreate(TweenService, al, TWI_Q_02, {TextTransparency = 0}):Play();
TwCreate(TweenService, am, TwInfo(0.22, Enum.EasingStyle.Quint, Enum.EasingDirection.Out), {Scale = 1}):Play();
end; function ak.Close(ao, ap)
TwCreate(TweenService, an.Background, TwInfo(0.3, Enum.EasingStyle.Quint, Enum.EasingDirection.Out), {ImageTransparency = 1}):Play();
TwCreate(TweenService, an.Arrow.ImageLabel, TWI_Q_02, {ImageTransparency = 1}):Play();
TwCreate(TweenService, al, TwInfo(0.3, Enum.EasingStyle.Quint, Enum.EasingDirection.Out), {TextTransparency = 1}):Play();
TwCreate(TweenService, am, TwInfo(0.35, Enum.EasingStyle.Quint, Enum.EasingDirection.In), {Scale = 0.9}):Play();
ap = ap ~= false; if ap then
twait(0.35); an.Visible = false; an:Destroy()
end;
end; return ak;
end; return aa;
end;
function a.z()
local aa = a.load"b"; local ab, ac, ad = aa.New, aa.NewRoundFrame;
local function Color3ToHSB(af)
local ag, ah, ai = af.R, af.G, af.B
local aj, ak = math.max(ag, ah, ai), math.min(ag, ah, ai);
local al, am = aj - ak, 0;
if al ~= 0 then
if aj == ag then
am = (ah - ai) / al % 6;
elseif aj == ah then
am = (ai - ag) / al + 2;
else
am = (ag - ah) / al + 4;
end;
am = am * 60;
else
am = 0;
end; local an, ao = (aj == 0) and 0 or (al / aj), aj;
return {h = math.floor(am + 0.5), s = an, b = ao};
end; local function GetPerceivedBrightness(af)
local ag, ah, ai = af.R, af.G, af.B;
return 0.299 * ag + 0.587 * ah + 0.114 * ai;
end; local function GetTextColorForHSB(af)
local ag = Color3ToHSB(af); local ah, ai, aj = ag.h, ag.s, ag.b;
if GetPerceivedBrightness(af) > 0.5 then
return fromHSV(ah / 360, 0, 0.05);
else
return fromHSV(ah / 360, 0, 0.98);
end;
end; local function getElementPosition(af, ag)
if type(ag) ~= "number" or ag ~= math.floor(ag) then return nil, 1; end;
local ah = #af; if ah == 0 or ag < 1 or ag > ah then
return nil, 2;
end; local function isDelimiter(ai)
if ai == nil then return true; end; local aj = ai.__type;
return aj == "Divider" or aj == "Space" or aj == "Section" or aj == "Code";
end; if isDelimiter(af[ag]) then
return nil, 3;
end; local function calculate(ai, aj)
if aj == 1 then return "Squircle"; end;
if ai == 1 then return "Squircle-TL-TR"; end;
if ai == aj then return "Squircle-BL-BR"; end; return "Square";
end; local ai, aj = 1, 0
for ak = 1, ah do
local al = af[ak]; if isDelimiter(al) then
if ag >= ai and ag <= ak - 1 then
local am = ag - ai + 1;
return calculate(am, aj);
end; ai = ak + 1 aj = 0
else
aj = aj + 1;
end;
end; if ag >= ai and ag <= ah then
local ak = ag - ai + 1;
return calculate(ak, aj);
end; return nil, 4;
end; return function(af)
local ag = {
Title = af.Title,
Desc = af.Desc or nil,
Hover = af.Hover,
Thumbnail = af.Thumbnail,
ThumbnailSize = af.ThumbnailSize or 80,
Image = af.Image,
IconThemed = af.IconThemed or false,
ImageSize = af.ImageSize or 30,
Color = af.Color,
Scalable = af.Scalable,
Parent = af.Parent,
Justify = af.Justify or "Between",
UIPadding = af.Window.ElementConfig.UIPadding,
UICorner = af.Window.ElementConfig.UICorner,
UIElements = {},
Index = af.Index
}; local ah, ai, aj, ak, al, am = ag.ImageSize, ag.ThumbnailSize, true, 0, nil, nil;
if ag.Thumbnail then
al = aa.Image(
ag.Thumbnail, ag.Title,
af.Window.NewElements and ag.UICorner - 11 or (ag.UICorner - 4),
af.Window.Folder, "Thumbnail", false, ag.IconThemed
); al.Size = Dim2(1, 0, 0, ai);
end; if ag.Image then
am = aa.Image(
ag.Image, ag.Title, af.Window.NewElements and ag.UICorner - 11 or (ag.UICorner - 4),
af.Window.Folder, "Image", ag.IconThemed, not ag.Color and true or false, "ElementIcon"
); if ag.Image == "TTJYStudio" then
am.ImageLabel.Image = TTJYLogo;
end; if typeof(ag.Color) == "string" then
am.ImageLabel.ImageColor3 = GetTextColorForHSB(fromHex(aa.Colors[ag.Color]));
elseif typeof(ag.Color) == "Color3" then
am.ImageLabel.ImageColor3 = GetTextColorForHSB(ag.Color);
end; am.Size = Dim2(0, ah, 0, ah); ak = ah;
end; local function CreateText(an, ao)
local ap = typeof(ag.Color) == "string" and GetTextColorForHSB(fromHex(aa.Colors[ag.Color])) or typeof(ag.Color) == "Color3" and GetTextColorForHSB(ag.Color);
return ab("TextLabel", {
BackgroundTransparency = 1,
Text = an or "",
TextSize = ao == "Desc" and 15 or 17,
TextXAlignment = "Left",
ThemeTag = {
TextColor3 = not ag.Color and ("Element" .. ao) or nil
},
TextColor3 = ag.Color and ap or nil,
TextTransparency = ao == "Desc" and .3 or 0,
TextWrapped = true,
Size = Dim2(ag.Justify == "Between" and 1 or 0, 0, 0, 0),
AutomaticSize = ag.Justify == "Between" and "Y" or "XY",
FontFace = Fnew(aa.Font, ao == "Desc" and Enum.FontWeight.Medium or Enum.FontWeight.SemiBold)
});
end; local an = CreateText(ag.Title, "Title"); local ao = CreateText(ag.Desc, "Desc");
if not ag.Title or ag.Title == "" then ao.Visible = false; end;
if not ag.Desc or ag.Desc == "" then ao.Visible = false; end;
ag.UIElements.Title = an; ag.UIElements.Desc = ao;
ag.UIElements.Container = ab("Frame", {
Size = DIM1010,
AutomaticSize = "Y",
BackgroundTransparency = 1
}, {
ab("UIListLayout", {
Padding = Dim(0, ag.UIPadding),
FillDirection = "Vertical",
VerticalAlignment = "Center",
HorizontalAlignment = ag.Justify == "Between" and "Left" or "Center"
}), al, ab("Frame", {
Size = Dim2(
ag.Justify == "Between" and 1 or 0,
ag.Justify == "Between" and -af.TextOffset or 0,
0,
0
),
AutomaticSize = ag.Justify == "Between" and "Y" or "XY",
BackgroundTransparency = 1,
Name = "TitleFrame"
}, {
ab("UIListLayout", {
Padding = Dim(0, ag.UIPadding),
FillDirection = "Horizontal",
VerticalAlignment = af.Window.NewElements and
(ag.Justify == "Between" and "Top" or "Center") or
"Center",
HorizontalAlignment = ag.Justify ~= "Between" and ag.Justify or "Center"
}), am, ab( "Frame", {
BackgroundTransparency = 1,
AutomaticSize = ag.Justify == "Between" and "Y" or "XY",
Size = Dim2(
ag.Justify == "Between" and 1 or 0,
ag.Justify == "Between" and (am and -ak - ag.UIPadding or -ak) or 0,
1,
0
),
Name = "TitleFrame"
}, {
ab("UIPadding", {
PaddingTop = Dim(0, af.Window.NewElements and ag.UIPadding / 2 or 0),
PaddingLeft = Dim(0, af.Window.NewElements and ag.UIPadding / 2 or 0),
PaddingRight = Dim(0, af.Window.NewElements and ag.UIPadding / 2 or 0),
PaddingBottom = Dim(0, af.Window.NewElements and ag.UIPadding / 2 or 0)
}), ab("UIListLayout", {
Padding = Dim(0, 6),
FillDirection = "Vertical",
VerticalAlignment = "Center",
HorizontalAlignment = "Left"
}), an, ao
});
});
}); local ap = aa.Image("lock", "lock", 0, af.Window.Folder, "Lock", false);
ap.Size = Dim2(0, 20, 0, 20); ap.ImageLabel.ImageColor3 = WHITE;
ap.ImageLabel.ImageTransparency = .4; local aq = ab("TextLabel", {
Text = "Locked",
TextSize = 18,
FontFace = Fnew(aa.Font, Enum.FontWeight.Medium),
AutomaticSize = "XY",
BackgroundTransparency = 1,
TextColor3 = WHITE,
TextTransparency = .05
}); local ar = ab("Frame", {
Size = Dim2(1, ag.UIPadding * 2, 1, ag.UIPadding * 2),
BackgroundTransparency = 1,
AnchorPoint = VEC05,
Position = DIM05,
ZIndex = 9999999
}); local as, at = ac(ag.UICorner, "Squircle", {
Size = DIM1010,
ImageTransparency = .25,
ImageColor3 = BLACK,
Visible = false,
Active = false,
Parent = ar
}, {
ab("UIListLayout", {
FillDirection = "Horizontal",
VerticalAlignment = "Center",
HorizontalAlignment = "Center",
Padding = Dim(0, 8)
}), ap, aq
}, nil, true); local au, av = ac(ag.UICorner, "Squircle-Outline", {
Size = DIM1010,
ImageTransparency = 1,
Active = false,
ThemeTag = {
ImageColor3 = "Text"
},
Parent = ar
}, {
ab("UIListLayout", {
FillDirection = "Horizontal",
VerticalAlignment = "Center",
HorizontalAlignment = "Center",
Padding = Dim(0, 8)
})
}, nil, true); local aw, ax = ac(ag.UICorner, "Squircle", {
Size = DIM1010,
ImageTransparency = 1,
Active = false,
ThemeTag = {
ImageColor3 = "Text"
},
Parent = ar
}, {
ab("UIListLayout", {
FillDirection = "Horizontal",
VerticalAlignment = "Center",
HorizontalAlignment = "Center",
Padding = Dim(0, 8)
})
}, nil, true); local ay, az = ac(ag.UICorner, "Squircle-Outline", {
Size = DIM1010,
ImageTransparency = 1,
Active = false,
ThemeTag = {
ImageColor3 = "Text"
},
Parent = ar
}, {
ab("UIListLayout", {
FillDirection = "Horizontal",
VerticalAlignment = "Center",
HorizontalAlignment = "Center",
Padding = Dim(0, 8)
}), ab("UIGradient", {
Name = "HoverGradient",
Color = CSnew {
CSKnew(0, WHITE),
CSKnew(0.5, WHITE),
CSKnew(1, WHITE)
},
Transparency = NSnew {
NSKnew(0, 1),
NSKnew(0.25, 0.9),
NSKnew(0.5, 0.3),
NSKnew(0.75, 0.9),
NSKnew(1, 1)
};
})
}, nil, true); local aA, aB = ac(ag.UICorner, "Squircle", {
Size = DIM1010,
ImageTransparency = 1,
Active = false,
ThemeTag = {
ImageColor3 = "Text"
},
Parent = ar
}, {
ab("UIGradient", {
Name = "HoverGradient", Color = CSnew {
CSKnew(0, WHITE),
CSKnew(0.5, WHITE),
CSKnew(1, WHITE)
}, Transparency = NSnew {
NSKnew(0, 1),
NSKnew(0.25, 0.9),
NSKnew(0.5, 0.3),
NSKnew(0.75, 0.9),
NSKnew(1, 1)
}
}
), ab("UIListLayout", {
FillDirection = "Horizontal",
VerticalAlignment = "Center",
HorizontalAlignment = "Center",
Padding = Dim(0, 8)
})
}, nil, true); local aC, aD = ac(ag.UICorner, "Squircle", {
Size = Dim2(1, 0, 0, 0),
AutomaticSize = "Y",
ImageTransparency = ag.Color and .05 or .93,
Parent = af.Parent,
ThemeTag = {
ImageColor3 = not ag.Color and "ElementBackground" or nil
},
ImageColor3 = ag.Color and (typeof(ag.Color) == "string" and fromHex(aa.Colors[ag.Color]) or typeof(ag.Color) == "Color3" and ag.Color) or nil
}, {
ag.UIElements.Container,
ar, ab("UIPadding", {
PaddingTop = Dim(0, ag.UIPadding),
PaddingLeft = Dim(0, ag.UIPadding),
PaddingRight = Dim(0, ag.UIPadding),
PaddingBottom = Dim(0, ag.UIPadding)
})
}, true, true); ag.UIElements.Main = aC; ag.UIElements.Locked = as;
if ag.Hover then
aa.AddSignal(aC.MouseEnter, function()
if aj then
TwCreate(TweenService, aC, TWI_012, {ImageTransparency = ag.Color and 0.15 or 0.9}):Play();
TwCreate(TweenService, aA, TWI_012, {ImageTransparency = 0.9}):Play();
TwCreate(TweenService, ay, TWI_012, {ImageTransparency = 0.8}):Play();
aa.AddSignal(aC.MouseMoved, function(aE, aF)
aA.HoverGradient.Offset = Vec2(((aE - aC.AbsolutePosition.X) / aC.AbsoluteSize.X) - 0.5, 0)
ay.HoverGradient.Offset = Vec2(((aE - aC.AbsolutePosition.X) / aC.AbsoluteSize.X) - 0.5, 0)
end);
end;
end); aa.AddSignal(aC.InputEnded, function()
if aj then
TwCreate(TweenService, aC, TWI_012, {ImageTransparency = ag.Color and 0.05 or 0.93}):Play();
TwCreate(TweenService, aA, TWI_012, {ImageTransparency = 1}):Play();
TwCreate(TweenService, ay, TWI_012, {ImageTransparency = 1}):Play();
end;
end);
end; function ag.SetTitle(aE, aF)
ag.Title = aF; an.Text = aF;
end; function ag.SetDesc(aE, aF)
ag.Desc = aF; ao.Text = aF or "";
if not aF then
ao.Visible = false;
elseif not ao.Visible then
ao.Visible = true;
end;
end; function ag.Colorize(aE, aF, b)
if ag.Color then
aF[b] = typeof(ag.Color) == "string" and GetTextColorForHSB(fromHex(aa.Colors[ag.Color])) or typeof(ag.Color) == "Color3" and GetTextColorForHSB(ag.Color) or nil;
end;
end; if af.ElementTable then
aa.AddSignal(PropChangeSignal(an, "Text"), function()
if ag.Title ~= an.Text then
ag:SetTitle(an.Text);
af.ElementTable.Title = an.Text;
end;
end); aa.AddSignal(PropChangeSignal(ao, "Text"), function()
if ag.Desc ~= ao.Text then
ag:SetDesc(ao.Text);
af.ElementTable.Desc = ao.Text;
end;
end);
end; function ag.SetThumbnail(aE, aF, b)
ag.Thumbnail = aF if b then
ag.ThumbnailSize = b; ai = b;
end; if al then
if aF then
al:Destroy(); al = aa.Image(aF, ag.Title, ag.UICorner - 3, af.Window.Folder, "Thumbnail", false, ag.IconThemed);
al.Size = Dim2(1, 0, 0, ai); al.Parent = ag.UIElements.Container;
local d = FindFirstChild(ag.UIElements.Container, "UIListLayout");
if d then al.LayoutOrder = -1; end;
else
al.Visible = false;
end;
else
if aF then
al = aa.Image(aF, ag.Title, ag.UICorner - 3, af.Window.Folder, "Thumbnail", false, ag.IconThemed);
al.Size = Dim2(1, 0, 0, ai); al.Parent = ag.UIElements.Container;
local d = FindFirstChild(ag.UIElements.Container, "UIListLayout");
if d then al.LayoutOrder = -1; end;
end;
end;
end; function ag.SetImage(aE, aF, b)
ag.Image = aF; if b then
ag.ImageSize = b; ah = b;
end; if aF then
am = aa.Image(
aF, ag.Title, ag.UICorner - 3,
af.Window.Folder, "Image",
not ag.Color and true or false
); if typeof(ag.Color) == "string" then
am.ImageLabel.ImageColor3 = GetTextColorForHSB(fromHex(aa.Colors[ag.Color]));
elseif typeof(ag.Color) == "Color3" then
am.ImageLabel.ImageColor3 = GetTextColorForHSB(ag.Color);
end; am.Visible = true;
am.Size = Dim2(0, ah, 0, ah);
ak = ah;
else
if am then
am.Visible = true;
end; ak = 0;
end; ag.UIElements.Container.TitleFrame.TitleFrame.Size = Dim2(1, -ak, 1, 0);
end; function ag.Destroy(aE)
aC:Destroy();
end; function ag.Lock(aE)
aj = false; as.Active = true;
as.Visible = true;
end; function ag.Unlock(aE)
aj = true; as.Active = false;
as.Visible = false;
end; function ag.Highlight(aE)
if isFirstLoad then return; end;
local aF = ab("UIGradient", {
Color = CSnew {
CSKnew(0, WHITE),
CSKnew(0.5, WHITE),
CSKnew(1, WHITE)
}, Transparency = NSnew {
NSKnew(0, 1),
NSKnew(0.1, 0.9),
NSKnew(0.5, 0.3),
NSKnew(0.9, 0.9),
NSKnew(1, 1)
}, Rotation = 0,
Offset = Vec2(-1, 0), Parent = au
}); local b = ab("UIGradient", {
Color = CSnew {
CSKnew(0, WHITE),
CSKnew(0.5, WHITE),
CSKnew(1, WHITE)
}, Transparency = NSnew {
NSKnew(0, 1),
NSKnew(0.15, 0.8),
NSKnew(0.5, 0.1),
NSKnew(0.85, 0.8),
NSKnew(1, 1)
}, Rotation = 0,
Offset = Vec2(-1, 0), Parent = aw
}); au.ImageTransparency = 0.65; aw.ImageTransparency = 0.88;
TwCreate(TweenService, aF, TwInfo(0.75), {Offset = Vec2(1, 0)}):Play();
TwCreate(TweenService, b, TwInfo(0.75), {Offset = Vec2(1, 0)}):Play();
tk.spawn(function()
twait(0.75); au.ImageTransparency = 1; aw.ImageTransparency = 1;
aF:Destroy(); b:Destroy();
end);
end; function ag.UpdateShape(aE)
if af.Window.NewElements then
local aF = nil; if af.ParentConfig.ParentType == "Group" then
aF = "Squircle";
else
aF = getElementPosition(aE.Elements, ag.Index);
end; if aF and aC then
aD:SetType(aF);
at:SetType(aF);
ax:SetType(aF);
av:SetType(aF .. "-Outline");
aB:SetType(aF);
az:SetType(aF .. "-Outline");
end;
end;
end; return ag;
end;
end;
function a.A()
local ac = {}; local aa = a.load "b"; local ab = aa.New;
local ad = a.load("j").New; function ac.New(ae, af)
af.Hover = false; af.TextOffset = 0; af.ParentConfig = af;
af.IsButtons = af.Buttons and #af.Buttons > 0 and true or false;
local ag = {
__type = "Paragraph",
Title = af.Title or "Paragraph",
Desc = af.Desc or nil,
Locked = af.Locked or false
}; local ah = a.load "z"(af);
ag.ParagraphFrame = ah;
if af.Buttons and #af.Buttons > 0 then
local ai = ab("Frame", {
Size = Dim2(1, 0, 0, 38),
BackgroundTransparency = 1,
AutomaticSize = "Y",
Parent = ah.UIElements.Container
}, {
ab("UIListLayout", {
Padding = Dim(0, 10),
FillDirection = "Vertical"
});
}); for aj, ak in next, af.Buttons do
local al = ad(ak.Title, ak.Icon, ak.Callback, "White", ai, nil, nil, af.Window.NewElements and 12 or 10);
al.Size = Dim2(1, 0, 0, 38);
end;
end; return ag.__type, ag;
end return ac;
end;
function a.B()
local ac = {}; local aa = a.load "b"; local ab = aa.New;
function ac.New(ad, ae)
local af, ag = {
__type = "Button",
Title = ae.Title or "Button",
Desc = ae.Desc or nil,
Icon = ae.Icon or "mouse-pointer-click",
IconThemed = ae.IconThemed or false,
Color = ae.Color,
Justify = ae.Justify or "Between",
IconAlign = ae.IconAlign or "Right",
Locked = ae.Locked or false,
Callback = ae.Callback or emptyfunction,
UIElements = {}
}, true; af.ButtonFrame = a.load "z" {
Title = af.Title,
Desc = af.Desc,
Parent = ae.Parent,
Window = ae.Window,
Color = af.Color,
Justify = af.Justify,
TextOffset = 20,
Hover = true,
Scalable = true,
Tab = ae.Tab,
Index = ae.Index,
ElementTable = af,
ParentConfig = ae
}; af.UIElements.ButtonIcon = aa.Image(af.Icon, af.Icon, 0, ae.Window.Folder, "Button", not af.Color and true or nil, af.IconThemed);
af.UIElements.ButtonIcon.Size = Dim2(0, 20, 0, 20);
af.UIElements.ButtonIcon.Parent = af.Justify == "Between" and af.ButtonFrame.UIElements.Main or af.ButtonFrame.UIElements.Container.TitleFrame;
af.UIElements.ButtonIcon.LayoutOrder = af.IconAlign == "Left" and -99999 or 99999;
af.UIElements.ButtonIcon.AnchorPoint = Vec2(1, 0.5);
af.UIElements.ButtonIcon.Position = Dim2(1, 0, 0.5, 0);
af.ButtonFrame:Colorize(af.UIElements.ButtonIcon.ImageLabel, "ImageColor3");
function af.Lock(ah)
af.Locked = true; ag = false;
return af.ButtonFrame:Lock();
end; function af.Unlock(ah)
af.Locked = false; ag = true;
return af.ButtonFrame:Unlock();
end; if af.Locked then
af:Lock();
end; aa.AddSignal(af.ButtonFrame.UIElements.Main.MouseButton1Click, function()
if ag then
--tk.spawn(function()
--aa.SafeCallback(af.Callback);
af.Callback();
--end);
end;
end); return af.__type, af;
end; return ac;
end;
function a.C()
local aa = {}; local ab = a.load "b"; local ac = ab.New;
function aa.New(af, ag, ah, ai, aj, ak, al)
local am, an, ao = {}, 12, nil;
if ag and ag ~= "" then
ao = ac("ImageLabel", {
Size = Dim2(0, 13, 0, 13),
BackgroundTransparency = 1,
AnchorPoint = VEC05,
Position = DIM05,
Image = ab.Icon(ag)[1],
ImageRectOffset = ab.Icon(ag)[2].ImageRectPosition,
ImageRectSize = ab.Icon(ag)[2].ImageRectSize,
ImageTransparency = 1,
ImageColor3 = BLACK
});
end; local ap = ac("Frame", {
Size = Dim2(0, 2, 0, 26),
BackgroundTransparency = 1,
Parent = ai
}); local aq = ab.NewRoundFrame(an, "Squircle", {
ImageTransparency = .85,
ThemeTag = {
ImageColor3 = "Text"
},
Parent = ap,
Size = Dim2(0, ak and (52) or (40.8), 0, 24),
AnchorPoint = Vec2(1, 0.5),
Position = Dim2(0, 0, 0.5, 0)
}, {
ab.NewRoundFrame(an, "Squircle", {
Size = DIM1010,
Name = "Layer",
ThemeTag = {
ImageColor3 = "Toggle"
},
ImageTransparency = 1
}), ab.NewRoundFrame(an, "SquircleOutline", {
Size = DIM1010,
Name = "Stroke",
ImageColor3 = WHITE,
ImageTransparency = 1
}, {
ac("UIGradient", {
Rotation = 90,
Transparency = NSnew {
NSKnew(0, 0),
NSKnew(1, 1)
}
})
}), ab.NewRoundFrame(an, "Squircle", {
Size = Dim2(0, ak and 30 or 20, 0, 20),
Position = Dim2(0, 2, 0.5, 0),
AnchorPoint = Vec2(0, 0.5),
ImageTransparency = 1,
Name = "Frame"
}, {
ab.NewRoundFrame(an,"Squircle", {
Size = DIM1010,
ImageTransparency = 0,
ThemeTag = {
ImageColor3 = "ToggleBar"
},
AnchorPoint = VEC05,
Position = DIM05,
Name = "Bar"
}, {
ab.NewRoundFrame(an, "SquircleOutline2", {
Size = DIM1010,
ImageColor3 = WHITE,
Name = "Highlight",
ImageTransparency = .45
}, {
ac("UIGradient", {
Rotation = 60, Color = CSnew {
CSKnew(0.0, WHITE),
CSKnew(0.5, WHITE),
CSKnew(1.0, WHITE)
}, Transparency = NSnew {
NSKnew(0.0, 0.1),
NSKnew(0.5, 1),
NSKnew(1.0, 0.1)
}
})
}), ao, ac("UIScale", {
Scale = 1
});
});
});
}); local ar, as = nil, nil;
local at = ak and 30 or 20;
local au = aq.Size.X.Offset;
function am.Set(av, aw, ax, ay)
if not ay then
if not isFirstLoad then
if aw then
TwCreate(TweenService, aq.Frame, TwInfo(0.15, Enum.EasingStyle.Quint, Enum.EasingDirection.Out), {Position = Dim2(0, au - at - 2, 0.5, 0)}):Play();
else
TwCreate(TweenService, aq.Frame, TwInfo(0.15, Enum.EasingStyle.Quint, Enum.EasingDirection.Out), {Position = Dim2(0, 2, 0.5, 0)}):Play();
end;
else
if aw then
aq.Frame.Position = Dim2(0, au - at - 2, 0.5, 0);
else
aq.Frame.Position = Dim2(0, 2, 0.5, 0);
end;
end;
end; if not isFirstLoad then
if aw then
TwCreate(TweenService, aq.Layer, TWI_01, {ImageTransparency = 0}):Play();
if ao then
TwCreate(TweenService, ao, TWI_01, {ImageTransparency = 0}):Play();
end;
else
TwCreate(TweenService, aq.Layer, TWI_01,{ImageTransparency = 1}):Play();
if ao then
TwCreate(TweenService, ao, TWI_01,{ImageTransparency = 1}):Play();
end;
end;
else
if aw then
aq.Layer.ImageTransparency = 0;
if ao then
ao.ImageTransparency = 0;
end;
else
aq.Layer.ImageTransparency = 1;
if ao then
ao.ImageTransparency = 1;
end;
end;
end; ax = ax ~= false; tk.spawn(function()
if aj and ax then
ab.SafeCallback(aj, aw);
end;
end);
end; function am.Animate(av, aw, ax)
if not al.Window.IsToggleDragging then
al.Window.IsToggleDragging = true;
local ay, az = aw.Position.X, aw.Position.Y;
local aA, aB = aq.Frame.Position.X.Offset, false;
if not isFirstLoad then
TwCreate(TweenService, aq.Frame.Bar.UIScale, TwInfo(0.28), {Scale = 1.5}, Enum.EasingStyle.Quint, Enum.EasingDirection.Out):Play();
TwCreate(TweenService, aq.Frame.Bar, TwInfo(0.28), {ImageTransparency = 0.85}, Enum.EasingStyle.Quint, Enum.EasingDirection.Out):Play();
else
aq.Frame.Bar.UIScale.Scale = 1.5;
aq.Frame.Bar.ImageTransparency = 0.85;
end;
if ar then ar:Disconnect(); end;
ar = UIS.InputChanged:Connect(function(aC)
if al.Window.IsToggleDragging and (aC.UserInputType == Enum.UserInputType.MouseMovement or aC.UserInputType == Enum.UserInputType.Touch) then
if aB then return; end; local aD, aE = math.abs(aC.Position.X - ay), math.abs(aC.Position.Y - az);
if aE > aD and aE > 10 then
aB = true; al.Window.IsToggleDragging = false;
if ar then ar:Disconnect(); ar = nil; end;
if as then as:Disconnect(); as = nil; end;
if not isFirstLoad then
TwCreate(TweenService, aq.Frame, TwInfo(0.15, Enum.EasingStyle.Quint, Enum.EasingDirection.Out),
{Position = Dim2(0, aA, 0.5, 0)}
):Play(); TwCreate(TweenService, aq.Frame.Bar.UIScale, TwInfo(0.23, Enum.EasingStyle.Quint, Enum.EasingDirection.Out),
{Scale = 1}
):Play(); TwCreate(TweenService, aq.Frame.Bar, TwInfo(0.23, Enum.EasingStyle.Quint, Enum.EasingDirection.Out),
{ImageTransparency = 0}
):Play();
else
aq.Frame.Position = Dim2(0, aA, 0.5, 0);
aq.Frame.Bar.UIScale.Scale = 1;
aq.Frame.Bar.ImageTransparency = 0;
end; return;
end; local aF = aC.Position.X - ay;
local b = math.max(2, math.min(aA + aF, au - at - 2));
local d = (aq.Frame.Position.X.Offset - 2) / (au - at - 4);
if not isFirstLoad then
TwCreate(TweenService, aq.Frame, TwInfo(0.05, Enum.EasingStyle.Linear, Enum.EasingDirection.Out),
{Position = Dim2(0, b, 0.5, 0)}
):Play();
else
aq.Frame.Position = Dim2(0, b, 0.5, 0);
end;
end;
end); if as then
as:Disconnect();
end; as = UIS.InputEnded:Connect(function(aC)
if al.Window.IsToggleDragging and (aC.UserInputType == Enum.UserInputType.MouseButton1 or aC.UserInputType == Enum.UserInputType.Touch) then
al.Window.IsToggleDragging = false; if ar then
ar:Disconnect(); ar = nil;
end; if as then
as:Disconnect();
as = nil;
end; if aB then return; end;
local aD, aE = aq.Frame.Position.X.Offset, math.abs(aC.Position.X - ay);
if aE < 10 then local aF = not ax.Value; ax:Set(aF, true, false) else
local aF = aD + at / 2; local b = au / 2; local d = aF > b;
ax:Set(d, true, false);
end; if not isFirstLoad then
TwCreate(TweenService, aq.Frame.Bar.UIScale, TwInfo(0.23, Enum.EasingStyle.Quint, Enum.EasingDirection.Out),
{Scale = 1}
):Play(); TwCreate(TweenService, aq.Frame.Bar, TwInfo(0.23, Enum.EasingStyle.Quint, Enum.EasingDirection.Out),
{ImageTransparency = 0}
):Play();
else
aq.Frame.Bar.UIScale.Scale = 1;
aq.Frame.Bar.ImageTransparency = 0;
end;
end;
end);
end;
end; return ap, am;
end; return aa;
end;
function a.D()
local aa = {}
local ab = a.load "b"
local ac = ab.New
local ad = ab.Tween
function aa.New(ae, af, ag, ah, ai, aj)
local ak = {}
af = af or "sfsymbols:checkmark"
local al = 9
local am = ab.Image(af, af, 0, (aj and aj.Window.Folder or "Temp"), "Checkbox", true, false, "CheckboxIcon")
am.Size = Dim2(1, -26 + ag, 1, -26 + ag)
am.AnchorPoint = VEC05
am.Position = DIM05
local an =
ab.NewRoundFrame(
al,
"Squircle",
{
ImageTransparency = .85,
ThemeTag = {
ImageColor3 = "Text"
},
Parent = ah,
Size = Dim2(0, 26, 0, 26)
},
{
ab.NewRoundFrame(
al,
"Squircle",
{
Size = DIM1010,
Name = "Layer",
ThemeTag = {
ImageColor3 = "Checkbox"
},
ImageTransparency = 1
}
),
ab.NewRoundFrame(
al,
"SquircleOutline",
{
Size = DIM1010,
Name = "Stroke",
ImageColor3 = WHITE,
ImageTransparency = 1
},
{
ac(
"UIGradient",
{
Rotation = 90,
Transparency = NumberSequence.new {
NumberSequenceKeypoint.new(0, 0),
NumberSequenceKeypoint.new(1, 1)
}
}
)
}
),
am
}
)
function ak.Set(ao, ap)
if not isFirstLoad then
if ap then
TwCreate(TweenService, an.Layer, TWI_006,
{ImageTransparency = 0}
):Play(); TwCreate(TweenService, am.ImageLabel, TWI_006,
{ImageTransparency = 0}
):Play();
else
TwCreate(TweenService, an.Layer, TWI_005,
{ImageTransparency = 1}
):Play();
TwCreate(TweenService, am.ImageLabel, TWI_006,
{ImageTransparency = 1}
):Play();
end;
else
if ap then
an.Layer.ImageTransparency = 0;
am.ImageLabel.ImageTransparency = 0;
else
an.Layer.ImageTransparency = 1;
am.ImageLabel.ImageTransparency = 1;
end;
end; tk.spawn(function()
if ai then
ab.SafeCallback(ai, ap);
end;
end);
end; return an, ak;
end; return aa;
end;
function a.E()
local aa = a.load "b";
local ab = aa.New;
local ac = aa.Tween;
local ad = a.load "C".New
local ae = a.load "D".New
local af = {}
function af.New(ag, ah)
local ai = {
__type = "Toggle",
Title = ah.Title or "Toggle",
Desc = ah.Desc or nil,
Locked = ah.Locked or false,
Value = ah.Value,
Icon = ah.Icon or nil,
IconSize = ah.IconSize or 23,
Type = ah.Type or "Toggle",
Bindable = ah.Bindable or nil,
BindToGlobal = ah.BindToGlobal or nil,
PathName = ah.PathName,
Callback = ah.Callback or function()
end,
UIElements = {}
}
ai.ToggleFrame =
a.load "z" {
Title = ai.Title,
Desc = ai.Desc,
Window = ah.Window,
Parent = ah.Parent,
TextOffset = (52),
Hover = false,
Tab = ah.Tab,
Index = ah.Index,
ElementTable = ai,
ParentConfig = ah
}
local aj = true
if ai.Value == nil then
ai.Value = false
end
function ai.Lock(ak)
ai.Locked = true
aj = false
return ai.ToggleFrame:Lock()
end
function ai.Unlock(ak)
ai.Locked = false
aj = true
return ai.ToggleFrame:Unlock()
end
if ai.Locked then
ai:Lock()
end
local ak, ak2 = ai.Value, ai.Value;
local al, am
if ai.Type == "Toggle" then
al, am =
ad(ak, ai.Icon, ai.IconSize, ai.ToggleFrame.UIElements.Main, ai.Callback, ah.Window.NewElements, ah)
elseif ai.Type == "Checkbox" then
al, am = ae(ak, ai.Icon, ai.IconSize, ai.ToggleFrame.UIElements.Main, ai.Callback, ah)
else
error("Unknown Toggle Type: " .. tostring(ai.Type))
end
al.AnchorPoint = Vec2(1, ah.Window.NewElements and 0 or 0.5)
al.Position = Dim2(1, 0, ah.Window.NewElements and 0 or 0.5, 0)
if ai.Bindable then
local akb = a.load "t".New;
ai.UIElements.Keybind = akb(type(ai.Bindable) == "string" and ai.Bindable or "None", nil, ai.ToggleFrame.UIElements.Main);
ai.UIElements.Keybind.Size = Dim2(0, 24 + ai.UIElements.Keybind.Frame.Frame.TextLabel.TextBounds.X, 0, 28);
ai.UIElements.Keybind.AnchorPoint = Vec2(1, 0.5);
local offset = ai.Type == "Toggle" and (ah.Window.NewElements and 55 or 65) or 45;
ai.UIElements.Keybind.Position = Dim2(1, -offset, ah.Window.NewElements and 0 or 0.5, ah.Window.NewElements and -5 or 0);
ab("UIScale", {
Parent = ai.UIElements.Keybind,
Scale = 0.85
});
ai.UIElements.Keybind.Parent = al;
ai.UIElements.Keybind.LayoutOrder = -1;
local UILay = Instancen("UIListLayout", al);
UILay.Padding = Dim(0, 5);
UILay.SortOrder = Enum.SortOrder.LayoutOrder;
UILay.FillDirection = Enum.FillDirection.Horizontal;
UILay.HorizontalAlignment = Enum.HorizontalAlignment.Right;
ai.UIElements.Keybind.Frame.Frame.TextLabel.TextXAlignment = Enum.TextXAlignment.Center;
aa.AddSignal(ai.UIElements.Keybind.Frame.Frame.TextLabel:GetPropertyChangedSignal("TextBounds"), function()
ai.UIElements.Keybind.Size = Dim2(0, 24 + ai.UIElements.Keybind.Frame.Frame.TextLabel.TextBounds.X, 0, 28)
end);
local picking = false;
aa.AddSignal(ai.UIElements.Keybind.MouseButton1Click, function()
if ai.Bindable then
ai.Bindable = nil;
ai.UIElements.Keybind.Frame.Frame.TextLabel.Text = if ai.BindToGlobal then "++" else "+";
if ai.PathName then BindConfig[ai.PathName] = nil; end;
return;
end;
if aj then
picking = true; ai.UIElements.Keybind.Frame.Frame.TextLabel.Text = "...";
twait(0.2); local conn=nil; conn = UIS.InputBegan:Connect(function(an)
local ao = nil; if an.UserInputType == Enum.UserInputType.Keyboard then
ao = an.KeyCode.Name;
elseif an.UserInputType == Enum.UserInputType.MouseButton1 then
ao = "MouseButton1";
elseif an.UserInputType == Enum.UserInputType.MouseButton2 then
ao = "MouseButton2";
end;
local conn2 = nil; conn2 = UIS.InputEnded:Connect(function(aq)
if aq.KeyCode.Name == ao or (ao == "MouseButton1" and aq.UserInputType == Enum.UserInputType.MouseButton1) or (ao == "MouseButton2" and aq.UserInputType == Enum.UserInputType.MouseButton2) then
picking = false; ai.UIElements.Keybind.Frame.Frame.TextLabel.Text = ao;
if ai.BindToGlobal then
GlobalBinds[ai.BindToGlobal] = ao;
else
if ai.PathName then BindConfig[ai.PathName] = ao; end;
end;
ai.Bindable = ao; conn:Disconnect(); conn2:Disconnect();
end;
end);
end);
end;
end);
aa.AddSignal(UIS.InputBegan, function(an, ap)
if ai.Bindable == "+" or ai.BindToGlobal or UIS:GetFocusedTextBox() then return; end;
if not aj or picking then return; end;
if an.UserInputType == Enum.UserInputType.Keyboard and an.KeyCode.Name == ai.Bindable then
ai:Set(not ai.Value);
elseif an.UserInputType == Enum.UserInputType.MouseButton1 and ai.Bindable == "MouseButton1" then
ai:Set(not ai.Value);
elseif an.UserInputType == Enum.UserInputType.MouseButton2 and ai.Bindable == "MouseButton2" then
ai:Set(not ai.Value);
end;
end);
end
function ai.Set(an, ao, ap, aq)
if aj then
am:Set(ao, ap, aq or false)
ak = ao
ai.Value = ao
end
end
ai:Set(ak, false, ah.Window.NewElements)
if ah.Window.NewElements and am.Animate then
aa.AddSignal(
ai.ToggleFrame.UIElements.Main.InputBegan,
function(an)
if
not ah.Window.IsToggleDragging and an.UserInputType == Enum.UserInputType.MouseButton1 or
an.UserInputType == Enum.UserInputType.Touch
then
am:Animate(an, ai)
end
end
)
else
aa.AddSignal(
ai.ToggleFrame.UIElements.Main.MouseButton1Click,
function()
ai:Set(not ai.Value, nil, ah.Window.NewElements)
end
)
end; local sig=nil; sig=GG.LoadingSignal:Connect(function(v)
if v == 100 then
if ak2 then
pcall(function()
if ai and ai.ToggleFrame and ai.ToggleFrame.Parent then
ai:Set(ak2);
end;
end);
end;
if sig then
sig:Disconnect(); sig=nil;
end;
end;
end);
return ai.__type, ai
end
return af
end
function a.F()
local ag, ah = {}, false; local ad = a.load"b"; local ae = ad.New;
function ag.New(ai, aj)
local ak = {
__type = "Slider",
Title = aj.Title or nil,
Desc = aj.Desc or nil,
Locked = aj.Locked or nil,
Value = aj.Value or {},
Icons = aj.Icons or nil,
IsTooltip = aj.IsTooltip or false,
IsTextbox = aj.IsTextbox,
Step = aj.Step or 1,
Callback = aj.Callback or function() end,
UIElements = {},
IsFocusing = false,
Width = aj.Width or 130,
TextBoxWidth = aj.Window.NewElements and 40 or 30,
ThumbSize = 13,
IconSize = 26,
allign = aj.allign or Enum.TextXAlignment.Right;
}; if ak.Icons == {} then
ak.Icons = {
From = "sfsymbols:sunMinFill",
To = "sfsymbols:sunMaxFill"
};
end; if ak.IsTextbox == nil and ak.Title == nil then
ak.IsTextbox = false;
else
ak.IsTextbox = ak.IsTextbox ~= false;
end; local al, am, an = nil, nil, nil;
local ao = ak.Value.Default or ak.Value.Min or 0;
local ap, aq = ao, (ao - (ak.Value.Min or 0)) / ((ak.Value.Max or 100) - (ak.Value.Min or 0));
local ar, as = true, ak.Step % 1 ~= 0;
local function FormatValue(at)
if as then return tonumber(str.format("%.2f", at)) else
return tonumber(math.floor(at + 0.5));
end;
end; local function CalculateValue(at)
if as then return math.floor(at / ak.Step + 0.5) * ak.Step else
return math.floor(at / ak.Step + 0.5) * ak.Step;
end;
end; local at, au, av = nil, nil, 32;
if ak.Icons then
if ak.Icons.From then
at = ad.Image(
ak.Icons.From,
ak.Icons.From,
0,
aj.Window.Folder,
"SliderIconFrom",
true,
true,
"SliderIconFrom"
); at.Size = Dim2(0, ak.IconSize, 0, ak.IconSize);
av = av + ak.IconSize - 2;
end; if ak.Icons.To then
au = ad.Image(
ak.Icons.To,
ak.Icons.To,
0,
aj.Window.Folder,
"SliderIconTo",
true,
true,
"SliderIconTo"
); au.Size = Dim2(0, ak.IconSize, 0, ak.IconSize);
av = av + ak.IconSize - 2;
end;
end; ak.SliderFrame = a.load "z" {
Title = ak.Title,
Desc = ak.Desc,
Parent = aj.Parent,
TextOffset = ak.Width,
Hover = false,
Tab = aj.Tab,
Index = aj.Index,
Window = aj.Window,
ElementTable = ak,
ParentConfig = aj
}; ak.UIElements.SliderIcon = ad.NewRoundFrame(99, "Squircle", {
ImageTransparency = .95,
Size = Dim2(1, not ak.IsTextbox and -av or (-ak.TextBoxWidth - 8), 0, 4),
AnchorPoint = VEC05,
Position = DIM05,
Name = "Frame",
ThemeTag = {ImageColor3 = "Text"}
}, {
ad.NewRoundFrame(99, "Squircle", {
Name = "Frame",
Size = Dim2(aq, 0, 1, 0),
ImageTransparency = .1,
ThemeTag = {ImageColor3 = "Slider"}
}, {
ad.NewRoundFrame(99, "Squircle", {
Size = Dim2(0, aj.Window.NewElements and (ak.ThumbSize * 2) or (ak.ThumbSize + 2), 0, aj.Window.NewElements and (ak.ThumbSize + 4) or (ak.ThumbSize + 2)),
Position = Dim2(1, 0, 0.5, 0),
AnchorPoint = VEC05,
ThemeTag = {ImageColor3 = "SliderThumb"},
Name = "Thumb"
}, {
ad.NewRoundFrame(99, "SquircleOutline2", {
Size = DIM1010,
ImageColor3 = WHITE,
Name = "Highlight",
ImageTransparency = .45
}, {
ae("UIGradient", {
Rotation = 60,
Color = CSnew {
CSKnew(0.0, WHITE),
CSKnew(0.5, WHITE),
CSKnew(1.0, WHITE)
},
Transparency = NSnew {
NSKnew(0.0, 0.1),
NSKnew(0.5, 1),
NSKnew(1.0, 0.1)
};
});
});
});
});
}); ak.UIElements.SliderContainer = ae("Frame", {
Size = Dim2(ak.Title == nil and 1 or 0, ak.Title == nil and 0 or ak.Width, 0, 0),
AutomaticSize = "Y",
Position = Dim2(1, ak.IsTextbox and (aj.Window.NewElements and -16 or 0) or 0, 0.5, 0),
AnchorPoint = Vec2(1, 0.5),
BackgroundTransparency = 1,
Parent = ak.SliderFrame.UIElements.Main
}, {
ae("UIListLayout", {
Padding = Dim(0, ak.Title ~= nil and 8 or 12),
FillDirection = "Horizontal",
VerticalAlignment = "Center",
HorizontalAlignment = ak.Icons and (ak.Icons.From and (ak.Icons.To and "Center" or "Left") or ak.Icons.To and "Right") or "Center"
}), at, ak.UIElements.SliderIcon, au, ae("TextBox", {
Size = Dim2(0, ak.TextBoxWidth, 0, 0),
TextXAlignment = "Left",
Text = FormatValue(ao),
ThemeTag = {
TextColor3 = "Text"
},
TextTransparency = .4,
AutomaticSize = "Y",
TextSize = 15,
FontFace = Fnew(ad.Font, Enum.FontWeight.Medium),
BackgroundTransparency = 1,
LayoutOrder = -1,
Visible = ak.IsTextbox
});
}); local aw=nil; if ak.IsTooltip then
aw = a.load("y").New(ao, ak.UIElements.SliderIcon.Frame.Thumb, true, "Secondary", "Small", false);
aw.Container.AnchorPoint = Vec2(0.5, 1); aw.Container.Position = Dim2(0.5, 0, 0, -8);
end; function ak.Lock(ax)
ak.Locked = true; ar = false;
return ak.SliderFrame:Lock();
end; function ak.Unlock(ax)
ak.Locked = false; ar = true;
return ak.SliderFrame:Unlock();
end; if ak.Locked then
ak:Lock();
end; local ax = aj.Tab.UIElements.ContainerFrame;
function ak.Set(ay, az, aA)
if ar then
if not ak.IsFocusing and not ah and (not aA or (aA.UserInputType == Enum.UserInputType.MouseButton1 or aA.UserInputType == Enum.UserInputType.Touch)) then
if aA then
al = (aA.UserInputType == Enum.UserInputType.Touch);
ax.ScrollingEnabled = false; ah = true;
local aB = al and aA.Position.X or UIS:GetMouseLocation().X;
local aC = math.clamp((aB - ak.UIElements.SliderIcon.AbsolutePosition.X) / ak.UIElements.SliderIcon.AbsoluteSize.X, 0, 1);
az = CalculateValue(ak.Value.Min + aC * (ak.Value.Max - ak.Value.Min))
az = math.clamp(az, ak.Value.Min or 0, ak.Value.Max or 100);
if az ~= ap then
if not isFirstLoad then
TwCreate(TweenService, ak.UIElements.SliderIcon.Frame, TWI_005, {Size = Dim2(aC, 0, 1, 0)}):Play();
else
ak.UIElements.SliderIcon.Frame.Size = Dim2(aC, 0, 1, 0);
end;
ak.UIElements.SliderContainer.TextBox.Text = FormatValue(az); if aw then
aw.TitleFrame.Text = FormatValue(az);
end; ak.Value.Default = FormatValue(az)
ap = az; ad.SafeCallback(ak.Callback, FormatValue(az));
end; am = RunService.RenderStepped:Connect(function()
local aD = al and aA.Position.X or UIS:GetMouseLocation().X;
local aE = math.clamp((aD - ak.UIElements.SliderIcon.AbsolutePosition.X) / ak.UIElements.SliderIcon.AbsoluteSize.X, 0, 1);
az = CalculateValue(ak.Value.Min + aE * (ak.Value.Max - ak.Value.Min)) if az ~= ap then
if not isFirstLoad then
TwCreate(TweenService, ak.UIElements.SliderIcon.Frame, TWI_005, {Size = Dim2(aE, 0, 1, 0)}):Play();
else
ak.UIElements.SliderIcon.Frame.Size = Dim2(aE, 0, 1, 0);
end;
ak.UIElements.SliderContainer.TextBox.Text = FormatValue(az); if aw then
aw.TitleFrame.Text = FormatValue(az);
end; ak.Value.Default = FormatValue(az)
ap = az; ad.SafeCallback(ak.Callback, FormatValue(az));
end;
end); an = UIS.InputEnded:Connect(function(aD)
if (aD.UserInputType == Enum.UserInputType.MouseButton1 or aD.UserInputType == Enum.UserInputType.Touch) and aA == aD then
am:Disconnect(); an:Disconnect(); ah = false; ax.ScrollingEnabled = true;
if aj.Window.NewElements then
TwCreate(TweenService, ak.UIElements.SliderIcon.Frame.Thumb, TwInfo(0.2, Enum.EasingStyle.Quint, Enum.EasingDirection.InOut),
{ImageTransparency = 0, Size = Dim2(0, aj.Window.NewElements and (ak.ThumbSize * 2) or (ak.ThumbSize + 2), 0, aj.Window.NewElements and (ak.ThumbSize + 4) or (ak.ThumbSize + 2))}
):Play();
end; if aw then
aw:Close(false);
end;
end;
end);
else
az = math.clamp(az, ak.Value.Min or 0, ak.Value.Max or 100);
local aB = math.clamp((az - (ak.Value.Min or 0)) / ((ak.Value.Max or 100) - (ak.Value.Min or 0)), 0, 1);
az = CalculateValue(ak.Value.Min + aB * (ak.Value.Max - ak.Value.Min));
if az ~= ap then
TwCreate(TweenService, ak.UIElements.SliderIcon.Frame, TWI_005, {Size = Dim2(aB, 0, 1, 0)}):Play();
ak.UIElements.SliderContainer.TextBox.Text = FormatValue(az);
if aw then aw.TitleFrame.Text = FormatValue(az); end;
ak.Value.Default = FormatValue(az); ap = az;
ad.SafeCallback(ak.Callback, FormatValue(az));
end;
end;
end;
end;
end; ak.UIElements.SliderContainer.TextBox.TextXAlignment = ak.allign;
function ak.SetMax(ay, az)
ak.Value.Max = az; local aA = tonumber(ak.Value.Default) or ap;
if aA > az then ak:Set(az); else
local aB = math.clamp((aA - (ak.Value.Min or 0)) / (az - (ak.Value.Min or 0)), 0, 1)
TwCreate(TweenService, ak.UIElements.SliderIcon.Frame, TWI_01, {Size = Dim2(aB, 0, 1, 0)}):Play();
end;
end; function ak.SetMin(ay, az)
ak.Value.Min = az; local aA = tonumber(ak.Value.Default) or ap;
if aA < az then ak:Set(az); else
local aB = math.clamp((aA - az) / ((ak.Value.Max or 100) - az), 0, 1);
TwCreate(TweenService, ak.UIElements.SliderIcon.Frame, TWI_01, {Size = Dim2(aB, 0, 1, 0)}):Play();
end;
end; ad.AddSignal(ak.UIElements.SliderContainer.TextBox.FocusLost, function(ay)
if ay then
local az = tonumber(ak.UIElements.SliderContainer.TextBox.Text);
if az then ak:Set(az); else
ak.UIElements.SliderContainer.TextBox.Text = FormatValue(ap)
if aw then aw.TitleFrame.Text = FormatValue(ap); end;
end;
end;
end); ad.AddSignal(ak.UIElements.SliderContainer.InputBegan, function(ay)
if ak.Locked or ah then return; end; ak:Set(ao, ay)
if ay.UserInputType == Enum.UserInputType.MouseButton1 or ay.UserInputType == Enum.UserInputType.Touch then
if aj.Window.NewElements then
TwCreate(TweenService, ak.UIElements.SliderIcon.Frame.Thumb, TwInfo(0.24, Enum.EasingStyle.Quint, Enum.EasingDirection.Out), {
ImageTransparency = 0.85,
Size = Dim2(0, (aj.Window.NewElements and (ak.ThumbSize * 2) or (ak.ThumbSize)) + 8, 0, ak.ThumbSize + 8)
}):Play();
end; if aw then aw:Open(); end;
end;
end);
ad.SafeCallback(ak.Callback, FormatValue(tonumber(ak.UIElements.SliderContainer.TextBox.Text)));
return ak.__type, ak;
end; return ag;
end;
function a.G()
local ad = a.load"b"; local ae = ad.New;
local ag = {UICorner = 6,UIPadding = 8};
local ah = a.load "t".New;
function ag.New(ai, aj)
local ak, al = {
__type = "Keybind",
Title = aj.Title or "Keybind",
Desc = aj.Desc or nil,
Locked = aj.Locked or false,
Value = aj.Value or nil,
Callback = aj.Callback or function()
end,
CanChange = aj.CanChange or true,
Picking = false,
UIElements = {}
}, true; ak.KeybindFrame = a.load "z" {
Title = ak.Title,
Desc = ak.Desc,
Parent = aj.Parent,
TextOffset = 85,
Hover = ak.CanChange,
Tab = aj.Tab,
Index = aj.Index,
Window = aj.Window,
ElementTable = ak,
ParentConfig = aj
}; ak.UIElements.Keybind = ah(ak.Value, nil, ak.KeybindFrame.UIElements.Main);
ak.UIElements.Keybind.Size = Dim2(0, 24 + ak.UIElements.Keybind.Frame.Frame.TextLabel.TextBounds.X, 0, 42);
ak.UIElements.Keybind.AnchorPoint = Vec2(1, 0.5);
ak.UIElements.Keybind.Position = Dim2(1, 0, 0.5, 0);
ak.UIElements.Keybind.Frame.Frame.TextLabel.TextXAlignment = Enum.TextXAlignment.Center;
ae("UIScale", {
Parent = ak.UIElements.Keybind,
Scale = 0.85
}); ad.AddSignal(ak.UIElements.Keybind.Frame.Frame.TextLabel:GetPropertyChangedSignal "TextBounds", function()
ak.UIElements.Keybind.Size = Dim2(0, 24 + ak.UIElements.Keybind.Frame.Frame.TextLabel.TextBounds.X, 0, 42)
end); function ak.Lock(am)
ak.Locked = true; al = false;
return ak.KeybindFrame:Lock();
end; function ak.Unlock(am)
ak.Locked = false; al = true;
return ak.KeybindFrame:Unlock();
end; function ak.Set(am, an)
ak.Value = an;
ak.UIElements.Keybind.Frame.Frame.TextLabel.Text = an;
if ak.GBind then
GBind[ak.GBind] = an;
end;
end; if ak.Locked then
ak:Lock();
end; ad.AddSignal(ak.KeybindFrame.UIElements.Main.MouseButton1Click, function()
if al then
if ak.CanChange then
ak.Picking = true; ak.UIElements.Keybind.Frame.Frame.TextLabel.Text = "...";
twait(0.2) local am=nil; am = UIS.InputBegan:Connect(function(an)
local ao, ap=nil, nil; if an.UserInputType == Enum.UserInputType.Keyboard then
ao = an.KeyCode.Name;
elseif an.UserInputType == Enum.UserInputType.MouseButton1 then
ao = "MouseButton1";
elseif an.UserInputType == Enum.UserInputType.MouseButton2 then
ao = "MouseButton2";
end; ap = UIS.InputEnded:Connect(function(aq)
if aq.KeyCode.Name == ao or ao == "MouseButton1" and aq.UserInputType == Enum.UserInputType.MouseButton1 or ao == "MouseButton2" and aq.UserInputType == Enum.UserInputType.MouseButton2 then
ak.Picking = false; ak.UIElements.Keybind.Frame.Frame.TextLabel.Text = ao;
ak.Value = ao; am:Disconnect(); ap:Disconnect();
end;
end); if ak.GBind then
GBind[ak.GBind] = ao;
end;
end);
end;
end;
end); ad.AddSignal(UIS.InputBegan, function(am, an)
if UIS:GetFocusedTextBox() then return; end;
if not al then return; end; if am.UserInputType == Enum.UserInputType.Keyboard then
if am.KeyCode.Name == ak.Value then
ad.SafeCallback(ak.Callback, am.KeyCode.Name);
end;
elseif am.UserInputType == Enum.UserInputType.MouseButton1 and ak.Value == "MouseButton1" then
ad.SafeCallback(ak.Callback, "MouseButton1");
elseif am.UserInputType == Enum.UserInputType.MouseButton2 and ak.Value == "MouseButton2" then
ad.SafeCallback(ak.Callback, "MouseButton2");
end;
end);
if ak.Value then
ak:Set(ak.Value);
end;
return ak.__type, ak;
end; return ag;
end;
function a.H()
local aa = a.load"b"; local ac = aa.New;
local ae = {UICorner = 8,UIPadding = 8};
local af = a.load"j".New;local ag = a.load"k".New;
function ae.New(ah, ai)
local aj, ak = {
__type = "Input",
Title = ai.Title or "Input",
Desc = ai.Desc or nil,
Type = ai.Type or "Input",
Locked = ai.Locked or false,
InputIcon = ai.InputIcon or false,
Placeholder = ai.Placeholder or "Enter Text...",
Value = ai.Value or "",
Callback = ai.Callback or function() end,
ClearTextOnFocus = ai.ClearTextOnFocus or false,
UIElements = {},
Width = 150
}, true; aj.InputFrame = a.load "z" {
Title = aj.Title,
Desc = aj.Desc,
Parent = ai.Parent,
TextOffset = aj.Width,
Hover = false,
Tab = ai.Tab,
Index = ai.Index,
Window = ai.Window,
ElementTable = aj,
ParentConfig = ai
}; local al = ag(aj.Placeholder, aj.InputIcon,
aj.Type == "Textarea" and aj.InputFrame.UIElements.Container or aj.InputFrame.UIElements.Main, aj.Type, function(al) aj:Set(al, true) end, nil,
ai.Window.NewElements and 12 or 10,
aj.ClearTextOnFocus
); if aj.Type == "Input" then
al.Size = Dim2(0, aj.Width, 0, 36);
al.Position = Dim2(1, 0, ai.Window.NewElements and 0 or 0.5, 0);
al.AnchorPoint = Vec2(1, ai.Window.NewElements and 0 or 0.5);
else
al.Size = Dim2(1, 0, 0, 148);
end; ac("UIScale", {
Parent = al,
Scale = 1
}); function aj.Lock(am)
aj.Locked = true; ak = false;
return aj.InputFrame:Lock();
end; function aj.Unlock(am)
aj.Locked = false; ak = true;
return aj.InputFrame:Unlock();
end; function aj.Set(am, an, ao)
if ak then
aj.Value = an; aa.SafeCallback(aj.Callback, an);
if not ao then
al.Frame.Frame.TextBox.Text = an;
end;
end;
end; function aj.SetPlaceholder(am, an)
al.Frame.Frame.TextBox.PlaceholderText = an;
aj.Placeholder = an;
end; aj:Set(aj.Value); if aj.Locked then
aj:Lock();
end; return aj.__type, aj;
end; return ae;
end;
function a.I()
local ae = {}; local aa = a.load"b"; local ac = aa.New;
function ae.New(af, ag)
local ah = ac("Frame", {
Size = ag.ParentType ~= "Group" and Dim2(1, 0, 0, 1) or Dim2(0, 1, 1, 0),
Position = DIM05,
AnchorPoint = VEC05,
BackgroundTransparency = .9,
ThemeTag = {
BackgroundColor3 = "Text"
}
}); local ai = ac("Frame", {
Parent = ag.Parent,
Size = ag.ParentType ~= "Group" and Dim2(1, -7, 0, 7) or Dim2(0, 7, 1, -7),
BackgroundTransparency = 1
},{ah});
return "Divider", {__type = "Divider", ElementFrame = ai};
end; return ae;
end;
function a.J()
local aa = {}; local ai = a.load "k".New;
local aj = a.load "b"; local ak = aj.New;
function aa.New(am, an, ao, ap, aq)
local ar = {}; if not an.Callback then
aq = "Menu";
end; an.UIElements.UIListLayout = ak("UIListLayout", {
Padding = Dim(0, ao.MenuPadding / 1.5),
FillDirection = "Vertical",
HorizontalAlignment = "Center"
}); an.UIElements.Menu = aj.NewRoundFrame(ao.MenuCorner, "Squircle", {
ThemeTag = {ImageColor3 = "Background"},
ImageTransparency = 1,
Size = DIM1010,
AnchorPoint = Vec2(1, 0),
Position = Dim2(1, 0, 0, 0)
}, {
ak("UIPadding", {
PaddingTop = Dim(0, ao.MenuPadding),
PaddingLeft = Dim(0, ao.MenuPadding),
PaddingRight = Dim(0, ao.MenuPadding),
PaddingBottom = Dim(0, ao.MenuPadding)
}), ak("UIListLayout", {
FillDirection = "Vertical",
Padding = Dim(0, ao.MenuPadding)
}), ak("Frame", {
BackgroundTransparency = 1,
Size = Dim2(1, 0, 1, an.SearchBarEnabled and -ao.MenuPadding - ao.SearchBarHeight),
ClipsDescendants = true,
LayoutOrder = 999
}, {
ak("UICorner",{
CornerRadius = Dim(0, ao.MenuCorner - ao.MenuPadding)
}), ak("ScrollingFrame", {
Size = DIM1010,
ScrollBarThickness = 0,
ScrollingDirection = "Y",
AutomaticCanvasSize = "Y",
CanvasSize = DIM0000,
BackgroundTransparency = 1,
ScrollBarImageTransparency = 1
}, {
an.UIElements.UIListLayout
});
});
}); an.UIElements.MenuCanvas = ak("Frame", {
Size = Dim2(0, an.MenuWidth, 0, 300),
BackgroundTransparency = 1,
Position = Dim2(-10, 0, -10, 0),
Visible = false,
Active = false,
Parent = am.WindUI.DropdownGui,
AnchorPoint = Vec2(1, 0)
}, {
an.UIElements.Menu,
ak("UISizeConstraint", {
MinSize = Vec2(170, 0),
MaxSize = Vec2(300, 400)
});
});
local function RecalculateCanvasSize()
an.UIElements.Menu.Frame.ScrollingFrame.CanvasSize = UDim2.fromOffset(0, an.UIElements.UIListLayout.AbsoluteContentSize.Y);
end local function RecalculateListSize()
local as = Cam.ViewportSize.Y * 0.6;
local at = an.UIElements.UIListLayout.AbsoluteContentSize.Y;
local au = an.SearchBarEnabled and (ao.SearchBarHeight + (ao.MenuPadding * 3)) or (ao.MenuPadding * 2);
local av = (at) + au; if av > as then
an.UIElements.MenuCanvas.Size = UDim2.fromOffset(an.UIElements.MenuCanvas.AbsoluteSize.X, as);
else
an.UIElements.MenuCanvas.Size = UDim2.fromOffset(an.UIElements.MenuCanvas.AbsoluteSize.X, av);
end;
end; function UpdatePosition()
local as = an.UIElements.Dropdown or an.DropdownFrame.UIElements.Main;
local at = an.UIElements.MenuCanvas;
local au = Cam.ViewportSize.Y - (as.AbsolutePosition.Y + as.AbsoluteSize.Y) - ao.MenuPadding - 54;
local av = at.AbsoluteSize.Y + ao.MenuPadding;
local aw = -54; if au < av then
aw = av - au - 54;
end; at.Position = Dim2(0, as.AbsolutePosition.X + as.AbsoluteSize.X, 0, as.AbsolutePosition.Y + as.AbsoluteSize.Y - aw + (ao.MenuPadding * 2));
end; local as = nil; function ar.Display(at)
local au,av = an.Values, "";
if an.Multi then
local aw = {}; if typeof(an.Value) == "table" then
for ax, ay in ipairs(an.Value) do
local az = typeof(ay) == "table" and ay.Title or ay;
aw[az] = true;
end;
end; for ax, ay in ipairs(au) do
local az = typeof(ay) == "table" and ay.Title or ay;
if aw[az] then
av = av .. az .. ", ";
end;
end; if #av > 0 then
av = av:sub(1, #av - 2);
end;
else
av = typeof(an.Value) == "table" and an.Value.Title or an.Value or "";
end; if an.UIElements.Dropdown then
an.UIElements.Dropdown.Frame.Frame.TextLabel.Text = (av == "" and "--" or av);
end;
end; local function Callback(at)
ar:Display(); if an.Callback then
tk.spawn(function()
aj.SafeCallback(an.Callback, an.Value);
end);
else
tk.spawn(function()
aj.SafeCallback(at);
end);
end;
end; function ar.LockValues(at, au)
if not au then return; end;
for av, aw in next, an.Tabs do
if aw and aw.UIElements and aw.UIElements.TabItem then
local ax,ay = aw.Name, false;
for az, aA in next, au do
if ax == aA then
ay = true;
break;
end;
end; if ay then
TwCreate(TweenService, aw.UIElements.TabItem, TWI_01, {ImageTransparency = 1}):Play();
TwCreate(TweenService, aw.UIElements.TabItem.Highlight, TWI_01, {ImageTransparency = 1}):Play();
TwCreate(TweenService, aw.UIElements.TabItem.Frame.Title.TextLabel, TWI_01, {TextTransparency = 0.6}):Play();
if aw.UIElements.TabIcon then TwCreate(TweenService, aw.UIElements.TabIcon.ImageLabel, TWI_01, {ImageTransparency = 0.6}):Play(); end;
aw.UIElements.TabItem.Active = false; aw.Locked = true;
else
if aw.Selected then
TwCreate(TweenService, aw.UIElements.TabItem, TWI_01, {ImageTransparency = 0.95}):Play();
TwCreate(TweenService, aw.UIElements.TabItem.Highlight, TWI_01, {ImageTransparency = 0.75}):Play();
TwCreate(TweenService, aw.UIElements.TabItem.Frame.Title.TextLabel, TWI_01, {TextTransparency = 0}):Play();
if aw.UIElements.TabIcon then TwCreate(TweenService, aw.UIElements.TabIcon.ImageLabel, TWI_01, {ImageTransparency = 0}):Play(); end;
else
TwCreate(TweenService, aw.UIElements.TabItem, TWI_01, {ImageTransparency = 1}):Play()
TwCreate(TweenService, aw.UIElements.TabItem.Highlight, TWI_01, {ImageTransparency = 1}):Play()
TwCreate(TweenService, aw.UIElements.TabItem.Frame.Title.TextLabel, TWI_01, {TextTransparency = aq == "Dropdown" and 0.4 or 0.05}):Play();
if aw.UIElements.TabIcon then TwCreate(TweenService, aw.UIElements.TabIcon.ImageLabel, TWI_01, {ImageTransparency = aq == "Dropdown" and 0.2 or 0}):Play(); end;
end; aw.UIElements.TabItem.Active = true; aw.Locked = false;
end;
end;
end;
end; function ar.Refresh(at, au)
for av, aw in next, GetChildren(an.UIElements.Menu.Frame.ScrollingFrame) do
if not aw:IsA("UIListLayout") then
aw:Destroy();
end;
end; an.Tabs = {};
if an.SearchBarEnabled then
if not as then
as = ai("Search...", "search", an.UIElements.Menu, nil, function(ax)
for ay, az in next, an.Tabs do
if str.find(string.lower(az.Name), string.lower(ax), 1, true) then
az.UIElements.TabItem.Visible = true;
else
az.UIElements.TabItem.Visible = false;
end RecalculateListSize(); RecalculateCanvasSize();
end
end, true);
as.Size = Dim2(1, 0, 0, ao.SearchBarHeight);
as.Position = DIM0000;
as.Name = "SearchBar";
end;
end; for ax, ay in next, au do
if (ay.Type ~= "Divider") then
local az = {
Name = typeof(ay) == "table" and ay.Title or ay,
Desc = typeof(ay) == "table" and ay.Desc or nil,
Icon = typeof(ay) == "table" and ay.Icon or nil,
Original = ay, Selected = false,
Locked = typeof(ay) == "table" and ay.Locked or false,
UIElements = {}
}; local aA = nil;
if az.Icon then
aA = aj.Image(az.Icon, az.Icon, 0, am.Window.Folder, "Dropdown", true);
aA.Size = Dim2(0, ao.TabIcon, 0, ao.TabIcon);
aA.ImageLabel.ImageTransparency = aq == "Dropdown" and 0.2 or 0;
az.UIElements.TabIcon = aA;
end; az.UIElements.TabItem = aj.NewRoundFrame(ao.MenuCorner - ao.MenuPadding, "Squircle", {
Size = Dim2(1, 0, 0, 36),
AutomaticSize = az.Desc and "Y",
ImageTransparency = 1,
Parent = an.UIElements.Menu.Frame.ScrollingFrame,
ImageColor3 = WHITE,
Active = not az.Locked
}, {
aj.NewRoundFrame(ao.MenuCorner - ao.MenuPadding, "SquircleOutline", {
Size = DIM1010,
ImageColor3 = WHITE,
ImageTransparency = 1,
Name = "Highlight"
}, {
ak("UIGradient", {
Rotation = 80,
Color = CSnew {
CSKnew(0.0, WHITE),
CSKnew(0.5, WHITE),
CSKnew(1.0, WHITE)
},
Transparency = NSnew {
NSKnew(0.0, 0.1),
NSKnew(0.5, 1),
NSKnew(1.0, 0.1)
}
})
}), ak("Frame", {
Size = DIM1010,
BackgroundTransparency = 1
}, {
ak("UIListLayout", {
Padding = Dim(0, ao.TabPadding),
FillDirection = "Horizontal",
VerticalAlignment = "Center"
}), ak("UIPadding", {
PaddingTop = Dim(0, ao.TabPadding),
PaddingLeft = Dim(0, ao.TabPadding),
PaddingRight = Dim(0, ao.TabPadding),
PaddingBottom = Dim(0, ao.TabPadding)
}), ak("UICorner", {
CornerRadius = Dim(0, ao.MenuCorner - ao.MenuPadding)
}), aA, ak("Frame", {
Size = Dim2(1, aA and -ao.TabPadding - ao.TabIcon or 0, 0, 0),
BackgroundTransparency = 1,
AutomaticSize = "Y",
Name = "Title"
}, {
ak("TextLabel", {
Text = az.Name,
TextXAlignment = "Left",
FontFace = Fnew(aj.Font, Enum.FontWeight.Medium),
ThemeTag = {
TextColor3 = "Text",
BackgroundColor3 = "Text"
},
TextSize = 15,
BackgroundTransparency = 1,
TextTransparency = aq == "Dropdown" and .4 or .05,
LayoutOrder = 999,
AutomaticSize = "Y",
Size = Dim2(1, 0, 0, 0)
}), ak("TextLabel", {
Text = az.Desc or "",
TextXAlignment = "Left",
FontFace = Fnew(aj.Font, Enum.FontWeight.Regular),
ThemeTag = {
TextColor3 = "Text",
BackgroundColor3 = "Text"
},
TextSize = 15,
BackgroundTransparency = 1,
TextTransparency = aq == "Dropdown" and .6 or .35,
LayoutOrder = 999,
AutomaticSize = "Y",
TextWrapped = true,
Size = Dim2(1, 0, 0, 0),
Visible = az.Desc and true or false,
Name = "Desc"
}), ak("UIListLayout", {
Padding = Dim(0, ao.TabPadding / 3),
FillDirection = "Vertical"
});
});
});
}, true); if az.Locked then
az.UIElements.TabItem.Frame.Title.TextLabel.TextTransparency = 0.9;
if az.UIElements.TabIcon then
az.UIElements.TabIcon.ImageLabel.ImageTransparency = 0.9;
end;
end; if an.Multi and typeof(an.Value) == "string" then
for aB, aC in next, an.Values do
if typeof(aC) == "table" then
if aC.Title == an.Value then
an.Value = {aC};
end;
else
if aC == an.Value then
an.Value = {an.Value};
end;
end;
end;
end; if an.Multi then
local aB = false; if typeof(an.Value) == "table" then
for aC, aD in ipairs(an.Value) do
local aE = typeof(aD) == "table" and aD.Title or aD;
if aE == az.Name then
aB = true;
break;
end;
end;
end;
az.Selected = aB;
else
local aB = typeof(an.Value) == "table" and an.Value.Title or an.Value;
az.Selected = aB == az.Name;
end; if az.Selected and not az.Locked then
az.UIElements.TabItem.ImageTransparency = 0.95;
az.UIElements.TabItem.Highlight.ImageTransparency = 0.75;
az.UIElements.TabItem.Frame.Title.TextLabel.TextTransparency = 0;
if az.UIElements.TabIcon then
az.UIElements.TabIcon.ImageLabel.ImageTransparency = 0;
end;
end; an.Tabs[ax] = az; ar:Display();
if aq == "Dropdown" then
aj.AddSignal(az.UIElements.TabItem.MouseButton1Click, function()
if az.Locked then return; end;
if an.Multi then
if not az.Selected then
az.Selected = true
TwCreate(TweenService, az.UIElements.TabItem, TWI_01, {ImageTransparency = .95}):Play();
TwCreate(TweenService, az.UIElements.TabItem.Highlight, TWI_01, {ImageTransparency = .75}):Play();
TwCreate(TweenService, az.UIElements.TabItem.Frame.Title.TextLabel, TWI_01, {TextTransparency = 0}):Play();
if az.UIElements.TabIcon then TwCreate(TweenService, az.UIElements.TabIcon.ImageLabel, TWI_01, {ImageTransparency = 0}):Play(); end; tble.insert(an.Value, az.Original);
else
if not an.AllowNone and #an.Value == 1 then return;end;
az.Selected = false; TwCreate(TweenService, az.UIElements.TabItem, TWI_01, {ImageTransparency = 1}):Play();
TwCreate(TweenService, az.UIElements.TabItem.Highlight, TWI_01, {ImageTransparency = 1}):Play();
TwCreate(TweenService, az.UIElements.TabItem.Frame.Title.TextLabel, TWI_01, {TextTransparency = 0.4}):Play();
if az.UIElements.TabIcon then TwCreate(TweenService, az.UIElements.TabIcon.ImageLabel, TWI_01, {ImageTransparency = 0.2}):Play(); end
for aB, aC in next, an.Value do
if typeof(aC) == "table" and (aC.Title == az.Name) or (aC == az.Name) then
table.remove(an.Value, aB);
break;
end;
end;
end;
else
for aB, aC in next, an.Tabs do
TwCreate(TweenService, aC.UIElements.TabItem, TWI_01, {ImageTransparency = 1}):Play();
TwCreate(TweenService, aC.UIElements.TabItem.Highlight, TWI_01, {ImageTransparency = 1}):Play();
TwCreate(TweenService, aC.UIElements.TabItem.Frame.Title.TextLabel, TWI_01, {TextTransparency = 0.4}):Play();
if aC.UIElements.TabIcon then TwCreate(TweenService, aC.UIElements.TabIcon.ImageLabel, TWI_01, {ImageTransparency = 0.2}):Play(); end; aC.Selected = false;
end
az.Selected = true
TwCreate(TweenService, az.UIElements.TabItem, TWI_01, {ImageTransparency = 0.95}):Play();
TwCreate(TweenService, az.UIElements.TabItem.Highlight, TWI_01, {ImageTransparency = 0.75}):Play();
TwCreate(TweenService, az.UIElements.TabItem.Frame.Title.TextLabel, TWI_01, {TextTransparency = 0}):Play();
if az.UIElements.TabIcon then TwCreate(TweenService, az.UIElements.TabIcon.ImageLabel, TWI_01, {ImageTransparency = 0}):Play(); end; an.Value = az.Original;
end; Callback();
end);
elseif aq == "Menu" then
if not az.Locked then
aj.AddSignal(az.UIElements.TabItem.MouseEnter, function()
TwCreate(TweenService, az.UIElements.TabItem, TWI_008, {ImageTransparency = 0.95}):Play();
end); aj.AddSignal(az.UIElements.TabItem.InputEnded, function()
TwCreate(TweenService, az.UIElements.TabItem, TWI_008, {ImageTransparency = 1}):Play();
end);
end; aj.AddSignal(az.UIElements.TabItem.MouseButton1Click, function()
if az.Locked then return; end;
Callback(ay.Callback or function() end);
end);
end; RecalculateCanvasSize(); RecalculateListSize();
else
a.load("I"):New {Parent = an.UIElements.Menu.Frame.ScrollingFrame};
end;
end; local az = an.MenuWidth or 0; if az == 0 then
for aA, aB in next, an.Tabs do
if aB.UIElements.TabItem.Frame.UIListLayout then
az = math.max(az, aB.UIElements.TabItem.Frame.UIListLayout.AbsoluteContentSize.X);
end;
end;
end; an.UIElements.MenuCanvas.Size = Dim2(0, az + 6 + 6 + 5 + 5 + 18 + 6 + 6, an.UIElements.MenuCanvas.Size.Y.Scale, an.UIElements.MenuCanvas.Size.Y.Offset)
Callback(); an.Values = au;
end; ar:Refresh(an.Values);
function ar.Select(at, au)
if au then
an.Value = au;
else
if an.Multi then
an.Value = {};
else
an.Value = nil;
end;
end; ar:Refresh(an.Values)
end; RecalculateListSize(); RecalculateCanvasSize();
function ar.Open(at)
if ap then
an.UIElements.Menu.Visible = true;
an.UIElements.MenuCanvas.Visible = true;
an.UIElements.MenuCanvas.Active = true;
an.UIElements.Menu.Size = Dim2(1, 0, 0, 0);
TwCreate(TweenService, an.UIElements.Menu, TwInfo(0.1, Enum.EasingStyle.Quart, Enum.EasingDirection.Out),
{Size = DIM1010, ImageTransparency = 0.05}
):Play(); tk.spawn(function()
twait(0.1); an.Opened = true;
end); UpdatePosition();
end;
end; function ar.Close(at)
an.Opened = false; TwCreate(TweenService, an.UIElements.Menu, TwInfo(0.25, Enum.EasingStyle.Quart, Enum.EasingDirection.Out),
{Size = Dim2(1, 0, 0, 0), ImageTransparency = 1}
):Play(); tk.spawn(function()
twait(0.1); an.UIElements.Menu.Visible = false;
end); tk.spawn(function()
twait(0.25) an.UIElements.MenuCanvas.Visible = false;
an.UIElements.MenuCanvas.Active = false;
end);
end; aj.AddSignal((an.UIElements.Dropdown and an.UIElements.Dropdown.MouseButton1Click or an.DropdownFrame.UIElements.Main.MouseButton1Click), function()
ar:Open();
end); aj.AddSignal(UIS.InputBegan, function(at)
if at.UserInputType == Enum.UserInputType.MouseButton1 or at.UserInputType == Enum.UserInputType.Touch then
local au = an.UIElements.MenuCanvas;
local av, aw = au.AbsolutePosition, au.AbsoluteSize;
local ax = an.UIElements.Dropdown or an.DropdownFrame.UIElements.Main;
local ay = ax.AbsolutePosition;
local az = ax.AbsoluteSize;
local aA = cmdm.X >= ay.X and cmdm.X <= ay.X + az.X and cmdm.Y >= ay.Y and cmdm.Y <= ay.Y + az.Y;
local aB = cmdm.X >= av.X and cmdm.X <= av.X + aw.X and cmdm.Y >= av.Y and cmdm.Y <= av.Y + aw.Y;
if am.Window.CanDropdown and an.Opened and not aA and not aB then
ar:Close();
end;
end;
end); aj.AddSignal(an.UIElements.Dropdown and PropChangeSignal(an.UIElements.Dropdown, "AbsolutePosition") or PropChangeSignal(an.DropdownFrame.UIElements.Main, "AbsolutePosition"),UpdatePosition);
return ar;
end; return aa;
end;
function a.K()
local ae = a.load "b"; local af = ae.New; local ah = a.load "t".New;
local ai = a.load "k".New; local aj = a.load "J".New; local al = {
UICorner = 10,
UIPadding = 12,
MenuCorner = 15,
MenuPadding = 5,
TabPadding = 10,
SearchBarHeight = 39,
TabIcon = 18
}; function al.New(am, an)
local ao, ap = {
__type = "Dropdown",
Title = an.Title or "Dropdown",
Desc = an.Desc or nil,
Locked = an.Locked or false,
Values = an.Values or {},
MenuWidth = an.MenuWidth,
Value = an.Value,
AllowNone = an.AllowNone,
SearchBarEnabled = an.SearchBarEnabled or false,
Multi = an.Multi,
Callback = an.Callback or nil,
UIElements = {},
Opened = false,
Tabs = {},
Width = 150
}, true; if ao.Multi and not ao.Value then
ao.Value = {};
end; ao.DropdownFrame = a.load "z" {
Title = ao.Title,
Desc = ao.Desc,
Parent = an.Parent,
TextOffset = ao.Callback and ao.Width or 20,
Hover = not ao.Callback and true or false,
Tab = an.Tab,
Index = an.Index,
Window = an.Window,
ElementTable = ao,
ParentConfig = an
}; if ao.Callback then
ao.UIElements.Dropdown = ah("", nil, ao.DropdownFrame.UIElements.Main, nil, an.Window.NewElements and 12 or 10);
ao.UIElements.Dropdown.Frame.Frame.TextLabel.TextTruncate = "AtEnd";
ao.UIElements.Dropdown.Frame.Frame.TextLabel.Size = Dim2(1, ao.UIElements.Dropdown.Frame.Frame.TextLabel.Size.X.Offset - 18 - 12 - 12, 0, 0);
ao.UIElements.Dropdown.Size = Dim2(0, ao.Width, 0, 36);
ao.UIElements.Dropdown.Position = Dim2(1, 0, an.Window.NewElements and 0 or 0.5, 0);
ao.UIElements.Dropdown.AnchorPoint = Vec2(1, an.Window.NewElements and 0 or 0.5);
end; ao.DropdownMenu = aj(an, ao, al, ap, "Dropdown");
ao.Display = ao.DropdownMenu.Display;
ao.Refresh = ao.DropdownMenu.Refresh;
ao.Select = ao.DropdownMenu.Select;
ao.Open = ao.DropdownMenu.Open;
ao.Close = ao.DropdownMenu.Close;
af("ImageLabel", {
Image = ae.Icon "chevrons-up-down"[1],
ImageRectOffset = ae.Icon "chevrons-up-down"[2].ImageRectPosition,
ImageRectSize = ae.Icon "chevrons-up-down"[2].ImageRectSize,
Size = Dim2(0, 18, 0, 18),
Position = Dim2(1, ao.UIElements.Dropdown and -12 or 0, 0.5, 0),
ThemeTag = {ImageColor3 = "Icon"},
AnchorPoint = Vec2(1, 0.5),
Parent = ao.UIElements.Dropdown and ao.UIElements.Dropdown.Frame or ao.DropdownFrame.UIElements.Main
}); function ao.Lock(aq)
ao.Locked = true; ap = false;
return ao.DropdownFrame:Lock();
end; function ao.Unlock(aq)
ao.Locked = false; ap = true;
return ao.DropdownFrame:Unlock();
end; if ao.Locked then
ao:Lock();
end; return ao.__type, ao;
end; return al;
end;
function a.L()
local aa = {}; local ae = {
lua = {
"and",
"break",
"or",
"else",
"elseif",
"if",
"then",
"until",
"repeat",
"while",
"do",
"for",
"in",
"end",
"local",
"return",
"function",
"export",
},
rbx = {
"game",
"workspace",
"script",
"math",
"string",
"table",
"task",
"wait",
"select",
"next",
"Enum",
"tick",
"assert",
"shared",
"loadstring",
"tonumber",
"tostring",
"type",
"typeof",
"unpack",
"Instance",
"CFrame",
"Vector3",
"Vector2",
"Color3",
"UDim",
"UDim2",
"Ray",
"BrickColor",
"OverlapParams",
"RaycastParams",
"Axes",
"Random",
"Region3",
"Rect",
"TweenInfo",
"collectgarbage",
"not",
"utf8",
"pcall",
"xpcall",
"_G",
"setmetatable",
"getmetatable",
"os",
"pairs",
"ipairs"
},
operators = {
"#",
"+",
"-",
"*",
"%",
"/",
"^",
"=",
"~",
"=",
"<",
">"
}
}; local af = {
numbers = fromHex "#FAB387",
boolean = fromHex "#FAB387",
operator = fromHex "#94E2D5",
lua = fromHex "#CBA6F7",
rbx = fromHex "#F38BA8",
str = fromHex "#A6E3A1",
comment = fromHex "#9399B2",
null = fromHex "#F38BA8",
call = fromHex "#89B4FA",
self_call = fromHex "#89B4FA",
local_property = fromHex "#CBA6F7"
}; local function createKeywordSet(ah)
local aj = {}; for ak, al in ipairs(ah) do
aj[al] = true;
end; return aj;
end; local ah = createKeywordSet(ae.lua);
local aj = createKeywordSet(ae.rbx);
local ak = createKeywordSet(ae.operators);
local function getHighlight(al, am)
local an = al[am]; if af[an .. "_color"] then
return af[an .. "_color"];
end; if tonumber(an) then
return af.numbers;
elseif an == "nil" then
return af.null;
elseif an:sub(1, 2) == "--" then
return af.comment;
elseif ak[an] then
return af.operator;
elseif ah[an] then
return af.lua;
elseif aj[an] then
return af.rbx;
elseif an:sub(1, 1) == '"' or an:sub(1, 1) == "'" then
return af.str;
elseif an == "true" or an == "false" then
return af.boolean;
end; if al[am + 1] == "(" then
if al[am - 1] == ":" then
return af.self_call;
end; return af.call;
end; if al[am - 1] == "." then
if al[am - 2] == "Enum" then
return af.rbx;
end; return af.local_property;
end;
end; function aa.run(al)
local am = {}; local an = ""; local ao, ap, aq = false, false, false;
for ar = 1, #al do
local as = al:sub(ar, ar); if ap then
if as == "\n" and not aq then
tble.insert(am, an); tble.insert(am, as); an = ""; ap = false;
elseif al:sub(ar - 1, ar) == "]]" and aq then
an = an .. "]"; tble.insert(am, an); an = "";
ap = false; aq = false;
else
an = an .. as;
end;
elseif ao then
if as == ao and al:sub(ar - 1, ar - 1) ~= "\\" or as == "\n" then
an = an .. as; ao = false;
else
an = an .. as;
end;
else
if al:sub(ar, ar + 1) == "--" then
tble.insert(am, an); an = "-";
ap = true; aq = al:sub(ar + 2, ar + 3) == "[[";
elseif as == '"' or as == "'" then
tble.insert(am, an); an = as; ao = as;
elseif ak[as] then
tble.insert(am, an); tble.insert(am, as); an = "";
elseif as:match "[%w_]" then
an = an .. as;
else
tble.insert(am, an); tble.insert(am, as); an = "";
end;
end;
end; tble.insert(am, an); local ar = {};
for as, at in ipairs(am) do
local au = getHighlight(am, as); if au then
local av = str.format('%s', au:ToHex(), at:gsub("<", "<"):gsub(">", ">"));
tble.insert(ar, av);
else
tble.insert(ar, at);
end;
end; return tconcat(ar);
end; return aa;
end;
function a.M()
local aa = {}; local ae = a.load"b"; local af = ae.New;
local aj = a.load "L"; function aa.New(ak, al, am, an, ao)
local ap = {Radius = 12,Padding = 10}; local aq = af("TextLabel", {
Text = "",
TextColor3 = fromHex "#CDD6F4",
TextTransparency = 0,
TextSize = 14,
TextWrapped = false,
LineHeight = 1.15,
RichText = true,
TextXAlignment = "Left",
Size = DIM0000,
BackgroundTransparency = 1,
AutomaticSize = "XY"
}, {
af("UIPadding", {
PaddingTop = Dim(0, ap.Padding + 3),
PaddingLeft = Dim(0, ap.Padding + 3),
PaddingRight = Dim(0, ap.Padding + 3),
PaddingBottom = Dim(0, ap.Padding + 3)
});
}); aq.Font = "Code"; local ar = af("ScrollingFrame", {
Size = Dim2(1, 0, 0, 0),
BackgroundTransparency = 1,
AutomaticCanvasSize = "X",
ScrollingDirection = "X",
ElasticBehavior = "Never",
CanvasSize = DIM0000,
ScrollBarThickness = 0
}, {aq}); local as = af("TextButton", {
BackgroundTransparency = 1,
Size = Dim2(0, 30, 0, 30),
Position = Dim2(1, -ap.Padding / 2, 0, ap.Padding / 2),
AnchorPoint = Vec2(1, 0),
Visible = an and true or false
}, {
ae.NewRoundFrame(ap.Radius - 4, "Squircle", {
ImageColor3 = fromHex "#ffffff",
ImageTransparency = 1,
Size = DIM1010,
AnchorPoint = VEC05,
Position = DIM05,
Name = "Button"
}, {
af("UIScale", {
Scale = 1
}), af("ImageLabel", {
Image = ae.Icon "copy"[1],
ImageRectSize = ae.Icon "copy"[2].ImageRectSize,
ImageRectOffset = ae.Icon "copy"[2].ImageRectPosition,
BackgroundTransparency = 1,
AnchorPoint = VEC05,
Position = DIM05,
Size = Dim2(0, 12, 0, 12),
ImageColor3 = fromHex "#ffffff",
ImageTransparency = .1
});
});
}); ae.AddSignal(as.MouseEnter, function()
TwCreate(TweenService, as.Button, TWI_005, {ImageTransparency = 0.95}):Play();
TwCreate(TweenService, as.Button.UIScale, TWI_005, {Scale = 0.9}):Play();
end); ae.AddSignal(as.InputEnded, function()
TwCreate(TweenService, as.Button, TWI_008, {ImageTransparency = 1}):Play();
TwCreate(TweenService, as.Button.UIScale, TWI_008, {Scale = 1}):Play()
end); local at = ae.NewRoundFrame(ap.Radius, "Squircle", {
ImageColor3 = fromHex "#212121",
ImageTransparency = .035,
Size = Dim2(1, 0, 0, 20 + (ap.Padding * 2)),
AutomaticSize = "Y",
Parent = am
}, {
ae.NewRoundFrame(ap.Radius, "SquircleOutline", {
Size = DIM1010,
ImageColor3 = fromHex "#ffffff",
ImageTransparency = .955
}), af("Frame", {
BackgroundTransparency = 1,
Size = Dim2(1, 0, 0, 0),
AutomaticSize = "Y"
}, {
ae.NewRoundFrame(ap.Radius, "Squircle-TL-TR", {
ImageColor3 = fromHex "#ffffff",
ImageTransparency = .96,
Size = Dim2(1, 0, 0, 20 + (ap.Padding * 2)),
Visible = al and true or false
}, {
af("ImageLabel", {
Size = Dim2(0, 18, 0, 18),
BackgroundTransparency = 1,
Image = (LoaderSettings.ScaryAC and "") or "rbxassetid://132464694294269",
ImageColor3 = fromHex "#ffffff",
ImageTransparency = .2
}), af("TextLabel", {
Text = al,
TextColor3 = fromHex "#ffffff",
TextTransparency = .2,
TextSize = 16,
AutomaticSize = "Y",
FontFace = Fnew(ae.Font, Enum.FontWeight.Medium),
TextXAlignment = "Left",
BackgroundTransparency = 1,
TextTruncate = "AtEnd",
Size = Dim2(1, as and -20 - (ap.Padding * 2), 0, 0)
}), af("UIPadding", {
PaddingLeft = Dim(0, ap.Padding + 3),
PaddingRight = Dim(0, ap.Padding + 3)
}), af("UIListLayout", {
Padding = Dim(0, ap.Padding),
FillDirection = "Horizontal",
VerticalAlignment = "Center"
}),
}), ar, af("UIListLayout", {
Padding = Dim(0, 0),
FillDirection = "Vertical"
}),
}), as
}); ap.CodeFrame = at; ae.AddSignal(PropChangeSignal(aq, "TextBounds"), function()
ar.Size = Dim2(1, 0, 0, (aq.TextBounds.Y / (ao or 1)) + ((ap.Padding + 3) * 2));
end); function ap.Set(au)
aq.Text = aj.run(au);
end; function ap.Destroy()
at:Destroy(); ap = nil;
end; ap.Set(ak); ae.AddSignal(as.MouseButton1Click, function()
if an then
an(); local au = ae.Icon "check"; as.Button.ImageLabel.Image = au[1];
as.Button.ImageLabel.ImageRectSize = au[2].ImageRectSize;
as.Button.ImageLabel.ImageRectOffset = au[2].ImageRectPosition;
twait(1); local av = ae.Icon "copy";
as.Button.ImageLabel.Image = av[1];
as.Button.ImageLabel.ImageRectSize = av[2].ImageRectSize;
as.Button.ImageLabel.ImageRectOffset = av[2].ImageRectPosition;
end;
end); return ap;
end; return aa;
end;
function a.N()
local aa = a.load"b"; local ae = aa.New;local af = a.load"M";
local ah = {}; function ah.New(aj, ak)
local al = {
__type = "Code",
Title = ak.Title,
Code = ak.Code,
OnCopy = ak.OnCopy
}; local am = not al.Locked;
local an = af.New(al.Code, al.Title, ak.Parent, function()
if am then
local an = al.Title or "code"
local ao, ap = pcall(function()
setc(al.Code); if al.OnCopy then
al.OnCopy();
end;
end); if not ao then
ak.WindUI:Notify {
Title = "Error",
Content = "The " .. an .. " is not copied. Error: " .. ap,
Icon = "x",
Duration = 5
}
end;
end;
end, ak.WindUI.UIScale, al);
function al.SetCode(ao, ap)
an.Set(ap); al.Code = ap;
end; function al.Destroy(ao)
an.Destroy(); al = nil;
end; al.ElementFrame = an.CodeFrame;
return al.__type, al;
end; return ah;
end;
function a.O()
local aa = a.load "b"; local ae = aa.New;
local ap = a.load "j".New; local aq = a.load "k".New;
local ar = {UICorner = 9}; function ar.Colorpicker(as, at, au, av)
local aw = {
__type = "Colorpicker",
Title = at.Title,
Desc = at.Desc,
Default = at.Default,
Callback = at.Callback,
Transparency = at.Transparency,
UIElements = at.UIElements,
TextPadding = 10
}; function aw.SetHSVFromRGB(ax, ay)
local az, aA, aB = toHSV(ay);
aw.Hue = az; aw.Sat = aA; aw.Vib = aB;
end; aw:SetHSVFromRGB(aw.Default);
local ax = a.load "l".Init(au);
local ay = ax.Create();
aw.ColorpickerFrame = ay;
ay.UIElements.Main.Size = Dim2(1, 0, 0, 0);
local az, aA, aB = aw.Hue, aw.Sat, aw.Vib;
aw.UIElements.Title = ae("TextLabel", {
Text = aw.Title,
TextSize = 20,
FontFace = Fnew(aa.Font, Enum.FontWeight.SemiBold),
TextXAlignment = "Left",
Size = Dim2(1, 0, 0, 0),
AutomaticSize = "Y",
ThemeTag = {TextColor3 = "Text"},
BackgroundTransparency = 1,
Parent = ay.UIElements.Main
}, {
ae("UIPadding", {
PaddingTop = Dim(0, aw.TextPadding / 2),
PaddingLeft = Dim(0, aw.TextPadding / 2),
PaddingRight = Dim(0, aw.TextPadding / 2),
PaddingBottom = Dim(0, aw.TextPadding / 2)
});
}); local aC = ae("Frame", {
Size = Dim2(0, 14, 0, 14),
AnchorPoint = VEC05,
Position = Dim2(0.5, 0, 0, 0),
Parent = HueDragHolder,
BackgroundColor3 = aw.Default
}, {
ae("UIStroke", {
Thickness = 2,
Transparency = .1,
ThemeTag = {Color = "Text"}
}), ae("UICorner", {
CornerRadius = Dim(1, 0)
});
}); aw.UIElements.SatVibMap = ae("ImageLabel", {
Size = UDim2.fromOffset(160, 158),
Position = UDim2.fromOffset(0, 40 + aw.TextPadding),
Image = "rbxassetid://4155801252",
BackgroundColor3 = fromHSV(az, 1, 1),
BackgroundTransparency = 0,
Parent = ay.UIElements.Main
}, {
ae("UICorner", {
CornerRadius = Dim(0, 8)
}), aa.NewRoundFrame(8, "SquircleOutline", {
ThemeTag = {
ImageColor3 = "Outline"
},
Size = DIM1010,
ImageTransparency = .85,
ZIndex = 99999
}, {
ae("UIGradient", {
Rotation = 45, Color = CSnew {
CSKnew(0.0, WHITE),
CSKnew(0.5, WHITE),
CSKnew(1.0, WHITE)
}, Transparency = NSnew {
NSKnew(0.0, 0.1),
NSKnew(0.5, 1),
NSKnew(1.0, 0.1)
}
})
}), aC
}); aw.UIElements.Inputs = ae("Frame", {
AutomaticSize = "XY",
Size = DIM0000,
Position = UDim2.fromOffset(aw.Transparency and 240 or 210, 40 + aw.TextPadding),
BackgroundTransparency = 1,
Parent = ay.UIElements.Main
}, {
ae("UIListLayout", {
Padding = Dim(0, 4),
FillDirection = "Vertical"
});
}); local aD = ae("Frame", {
BackgroundColor3 = aw.Default,
Size = Dim2Scale(1, 1),
BackgroundTransparency = aw.Transparency
}, {
ae("UICorner", {
CornerRadius = Dim(0, 8)
});
}); ae("ImageLabel", {
Image = "http://www.roblox.com/asset/?id=14204231522",
ImageTransparency = 0.45,
ScaleType = Enum.ScaleType.Tile,
TileSize = UDim2.fromOffset(40, 40),
BackgroundTransparency = 1,
Position = UDim2.fromOffset(85, 208 + aw.TextPadding),
Size = UDim2.fromOffset(75, 24),
Parent = ay.UIElements.Main
},
{
ae(
"UICorner",
{
CornerRadius = Dim(0, 8)
}
),
aa.NewRoundFrame(
8,
"SquircleOutline",
{
ThemeTag = {
ImageColor3 = "Outline"
},
Size = DIM1010,
ImageTransparency = .85,
ZIndex = 99999
},
{
ae(
"UIGradient",
{
Rotation = 60,
Color = CSnew {
CSKnew(0.0, WHITE),
CSKnew(0.5, WHITE),
CSKnew(1.0, WHITE)
},
Transparency = NSnew {
NSKnew(0.0, 0.1),
NSKnew(0.5, 1),
NSKnew(1.0, 0.1)
}
}
)
}
),
aD
}
)
local aE =
ae(
"Frame",
{
BackgroundColor3 = aw.Default,
Size = Dim2Scale(1, 1),
BackgroundTransparency = 0,
ZIndex = 9
},
{
ae(
"UICorner",
{
CornerRadius = Dim(0, 8)
}
)
}
)
ae(
"ImageLabel",
{
Image = "http://www.roblox.com/asset/?id=14204231522",
ImageTransparency = 0.45,
ScaleType = Enum.ScaleType.Tile,
TileSize = UDim2.fromOffset(40, 40),
BackgroundTransparency = 1,
Position = UDim2.fromOffset(0, 208 + aw.TextPadding),
Size = UDim2.fromOffset(75, 24),
Parent = ay.UIElements.Main
},
{
ae(
"UICorner",
{
CornerRadius = Dim(0, 8)
}
),
aa.NewRoundFrame(
8,
"SquircleOutline",
{
ThemeTag = {
ImageColor3 = "Outline"
},
Size = DIM1010,
ImageTransparency = .85,
ZIndex = 99999
},
{
ae(
"UIGradient",
{
Rotation = 60,
Color = CSnew {
CSKnew(0.0, WHITE),
CSKnew(0.5, WHITE),
CSKnew(1.0, WHITE)
},
Transparency = NSnew {
NSKnew(0.0, 0.1),
NSKnew(0.5, 1),
NSKnew(1.0, 0.1)
}
}
)
}
),
aE
}
)
local aF = {}
for b = 0, 1, 0.1 do
tble.insert(aF, CSKnew(b, fromHSV(b, 1, 1)))
end
local b =
ae(
"UIGradient",
{
Color = CSnew(aF),
Rotation = 90
}
)
local d =
ae(
"Frame",
{
Size = DIM1010,
Position = DIM0000,
BackgroundTransparency = 1
}
)
local f =
ae(
"Frame",
{
Size = Dim2(0, 14, 0, 14),
AnchorPoint = VEC05,
Position = Dim2(0.5, 0, 0, 0),
Parent = d,
BackgroundColor3 = aw.Default
},
{
ae(
"UIStroke",
{
Thickness = 2,
Transparency = .1,
ThemeTag = {
Color = "Text"
}
}
),
ae(
"UICorner",
{
CornerRadius = Dim(1, 0)
}
)
}
)
local g =
ae(
"Frame",
{
Size = UDim2.fromOffset(6, 192),
Position = UDim2.fromOffset(180, 40 + aw.TextPadding),
Parent = ay.UIElements.Main
},
{
ae(
"UICorner",
{
CornerRadius = Dim(1, 0)
}
),
b,
d
}
)
function CreateNewInput(h, j)
local l = aq(h, nil, aw.UIElements.Inputs)
ae(
"TextLabel",
{
BackgroundTransparency = 1,
TextTransparency = .4,
TextSize = 17,
FontFace = Fnew(aa.Font, Enum.FontWeight.Regular),
AutomaticSize = "XY",
ThemeTag = {
TextColor3 = "Placeholder"
},
AnchorPoint = Vec2(1, 0.5),
Position = Dim2(1, -12, 0.5, 0),
Parent = l.Frame,
Text = h
}
)
ae(
"UIScale",
{
Parent = l,
Scale = .85
}
)
l.Frame.Frame.TextBox.Text = j
l.Size = Dim2(0, 150, 0, 42)
return l
end
local function ToRGB(h)
return {
R = math.floor(h.R * 255),
G = math.floor(h.G * 255),
B = math.floor(h.B * 255)
}
end
local h = CreateNewInput("Hex", "#" .. aw.Default:ToHex())
local j = CreateNewInput("Red", ToRGB(aw.Default).R)
local l = CreateNewInput("Green", ToRGB(aw.Default).G)
local m = CreateNewInput("Blue", ToRGB(aw.Default).B)
local p
if aw.Transparency then
p = CreateNewInput("Alpha", ((1 - aw.Transparency) * 100) .. "%")
end
local r =
ae(
"Frame",
{
Size = Dim2(1, 0, 0, 40),
AutomaticSize = "Y",
Position = Dim2(0, 0, 0, 254 + aw.TextPadding),
BackgroundTransparency = 1,
Parent = ay.UIElements.Main,
LayoutOrder = 4
},
{
ae(
"UIListLayout",
{
Padding = Dim(0, 6),
FillDirection = "Horizontal",
HorizontalAlignment = "Right"
}
)
}
)
local u = {
{
Title = "Cancel",
Variant = "Secondary",
Callback = function()
end
},
{
Title = "Apply",
Icon = "chevron-right",
Variant = "Primary",
Callback = function()
av(fromHSV(aw.Hue, aw.Sat, aw.Vib), aw.Transparency)
end
}
}
for v, x in next, u do
local B = ap(x.Title, x.Icon, x.Callback, x.Variant, r, ay, false)
B.Size = Dim2(0.5, -3, 0, 40)
B.AutomaticSize = "None"
end
local B, C, F
if aw.Transparency then
local G =
ae(
"Frame",
{
Size = DIM1010,
Position = UDim2.fromOffset(0, 0),
BackgroundTransparency = 1
}
)
C =
ae(
"ImageLabel",
{
Size = Dim2(0, 14, 0, 14),
AnchorPoint = VEC05,
Position = Dim2(0.5, 0, 0, 0),
ThemeTag = {
BackgroundColor3 = "Text"
},
Parent = G
},
{
ae(
"UIStroke",
{
Thickness = 2,
Transparency = .1,
ThemeTag = {
Color = "Text"
}
}
),
ae(
"UICorner",
{
CornerRadius = Dim(1, 0)
}
)
}
)
F =
ae(
"Frame",
{
Size = Dim2Scale(1, 1)
},
{
ae(
"UIGradient",
{
Transparency = NSnew {
NSKnew(0, 0),
NSKnew(1, 1)
},
Rotation = 270
}
),
ae(
"UICorner",
{
CornerRadius = Dim(0, 6)
}
)
}
)
B =
ae(
"Frame",
{
Size = UDim2.fromOffset(6, 192),
Position = UDim2.fromOffset(210, 40 + aw.TextPadding),
Parent = ay.UIElements.Main,
BackgroundTransparency = 1
},
{
ae(
"UICorner",
{
CornerRadius = Dim(1, 0)
}
),
ae(
"ImageLabel",
{
Image = (LoaderSettings.ScaryAC and "") or "rbxassetid://14204231522",
ImageTransparency = 0.45,
ScaleType = Enum.ScaleType.Tile,
TileSize = UDim2.fromOffset(40, 40),
BackgroundTransparency = 1,
Size = Dim2Scale(1, 1)
},
{
ae(
"UICorner",
{
CornerRadius = Dim(1, 0)
}
)
}
),
F,
G
}
)
end
function aw.Round(G, H, J)
if J == 0 then
return math.floor(H)
end
H = tostring(H)
return H:find "%." and tonumber(H:sub(1, H:find "%." + J)) or H
end
function aw.Update(G, H, J)
if H then
az, aA, aB = toHSV(H)
else
az, aA, aB = aw.Hue, aw.Sat, aw.Vib
end
aw.UIElements.SatVibMap.BackgroundColor3 = fromHSV(az, 1, 1)
aC.Position = Dim2(aA, 0, 1 - aB, 0)
aC.BackgroundColor3 = fromHSV(az, aA, aB)
aE.BackgroundColor3 = fromHSV(az, aA, aB)
f.BackgroundColor3 = fromHSV(az, 1, 1)
f.Position = Dim2(0.5, 0, az, 0)
h.Frame.Frame.TextBox.Text = "#" .. fromHSV(az, aA, aB):ToHex()
j.Frame.Frame.TextBox.Text = ToRGB(fromHSV(az, aA, aB)).R
l.Frame.Frame.TextBox.Text = ToRGB(fromHSV(az, aA, aB)).G
m.Frame.Frame.TextBox.Text = ToRGB(fromHSV(az, aA, aB)).B
if J or aw.Transparency then
aE.BackgroundTransparency = aw.Transparency or J
F.BackgroundColor3 = fromHSV(az, aA, aB)
C.BackgroundColor3 = fromHSV(az, aA, aB)
C.BackgroundTransparency = aw.Transparency or J
C.Position = Dim2(0.5, 0, 1 - aw.Transparency or J, 0)
p.Frame.Frame.TextBox.Text = aw:Round((1 - aw.Transparency or J) * 100, 0) .. "%"
end
end
aw:Update(aw.Default, aw.Transparency)
local function GetRGB()
local G = fromHSV(aw.Hue, aw.Sat, aw.Vib)
return {R = math.floor(G.r * 255), G = math.floor(G.g * 255), B = math.floor(G.b * 255)}
end
local function clamp(G, H, J)
return math.clamp(tonumber(G) or 0, H, J)
end
aa.AddSignal(
h.Frame.Frame.TextBox.FocusLost,
function(G)
if G then
local H = h.Frame.Frame.TextBox.Text:gsub("#", "")
local J, L = pcall(fromHex, H)
if J and typeof(L) == "Color3" then
aw.Hue, aw.Sat, aw.Vib = toHSV(L)
aw:Update()
aw.Default = L
end
end
end
)
local function updateColorFromInput(G, H)
aa.AddSignal(
G.Frame.Frame.TextBox.FocusLost,
function(J)
if J then
local L = G.Frame.Frame.TextBox
local M = GetRGB()
local N = clamp(L.Text, 0, 255)
L.Text = tostring(N)
M[H] = N
local O = fromRGB(M.R, M.G, M.B)
aw.Hue, aw.Sat, aw.Vib = toHSV(O)
aw:Update()
end
end
)
end
updateColorFromInput(j, "R")
updateColorFromInput(l, "G")
updateColorFromInput(m, "B")
if aw.Transparency then
aa.AddSignal(
p.Frame.Frame.TextBox.FocusLost,
function(G)
if G then
local H = p.Frame.Frame.TextBox
local J = clamp(H.Text, 0, 100)
H.Text = tostring(J)
aw.Transparency = 1 - J * 0.01
aw:Update(nil, aw.Transparency)
end
end
)
end
local G = aw.UIElements.SatVibMap
aa.AddSignal(
G.InputBegan,
function(H)
if H.UserInputType == Enum.UserInputType.MouseButton1 or H.UserInputType == Enum.UserInputType.Touch then
while UIS:IsMouseButtonPressed(Enum.UserInputType.MouseButton1) do
local J = G.AbsolutePosition.X
local L = J + G.AbsoluteSize.X
local M = math.clamp(cmdm.X, J, L)
local N = G.AbsolutePosition.Y
local O = N + G.AbsoluteSize.Y
local P = math.clamp(cmdm.Y, N, O)
aw.Sat = (M - J) / (L - J)
aw.Vib = 1 - ((P - N) / (O - N))
aw:Update()
RunService.RenderStepped:Wait()
end
end
end
)
aa.AddSignal(
g.InputBegan,
function(H)
if H.UserInputType == Enum.UserInputType.MouseButton1 or H.UserInputType == Enum.UserInputType.Touch then
while UIS:IsMouseButtonPressed(Enum.UserInputType.MouseButton1) do
local J = g.AbsolutePosition.Y
local L = J + g.AbsoluteSize.Y
local M = math.clamp(cmdm.Y, J, L)
aw.Hue = ((M - J) / (L - J))
aw:Update()
RunService.RenderStepped:Wait()
end
end
end
)
if aw.Transparency then
aa.AddSignal(
B.InputBegan,
function(H)
if
H.UserInputType == Enum.UserInputType.MouseButton1 or
H.UserInputType == Enum.UserInputType.Touch
then
while aj:IsMouseButtonPressed(Enum.UserInputType.MouseButton1) do
local J = B.AbsolutePosition.Y
local L = J + B.AbsoluteSize.Y
local M = math.clamp(ao.Y, J, L)
aw.Transparency = 1 - ((M - J) / (L - J))
aw:Update()
am:Wait()
end
end
end
)
end
return aw
end
function ar.New(as, at)
local au = {
__type = "Colorpicker",
Title = at.Title or "Colorpicker",
Desc = at.Desc or nil,
Locked = at.Locked or false,
Default = at.Default or WHITE,
Callback = at.Callback or function()
end,
UIScale = at.UIScale,
Transparency = at.Transparency,
UIElements = {}
}
local av = true
au.ColorpickerFrame =
a.load "z" {
Title = au.Title,
Desc = au.Desc,
Parent = at.Parent,
TextOffset = 40,
Hover = false,
Tab = at.Tab,
Index = at.Index,
Window = at.Window,
ElementTable = au,
ParentConfig = at
}
au.UIElements.Colorpicker =
aa.NewRoundFrame(
ar.UICorner,
"Squircle",
{
ImageTransparency = 0,
Active = true,
ImageColor3 = au.Default,
Parent = au.ColorpickerFrame.UIElements.Main,
Size = Dim2(0, 26, 0, 26),
AnchorPoint = Vec2(1, 0),
Position = Dim2(1, 0, 0, 0),
ZIndex = 2
},
nil,
true
)
function au.Lock(aw)
au.Locked = true
av = false
return au.ColorpickerFrame:Lock()
end
function au.Unlock(aw)
au.Locked = false
av = true
return au.ColorpickerFrame:Unlock()
end
if au.Locked then
au:Lock()
end
function au.Update(aw, ax, ay)
au.UIElements.Colorpicker.ImageTransparency = ay or 0
au.UIElements.Colorpicker.ImageColor3 = ax
au.Default = ax
if ay then
au.Transparency = ay
end
end
function au.Set(aw, ax, ay)
return au:Update(ax, ay)
end
aa.AddSignal(
au.UIElements.Colorpicker.MouseButton1Click,
function()
if av then
ar:Colorpicker(
au,
at.Window,
function(aw, ax)
au:Update(aw, ax)
au.Default = aw
au.Transparency = ax
aa.SafeCallback(au.Callback, aw, ax)
end
).ColorpickerFrame:Open()
end
end
)
return au.__type, au
end
return ar
end
function a.P()
local aa = a.load "b"
local ae = aa.New
local af = aa.Tween
local ah = {}
function ah.New(aj, ak)
local al = {
__type = "Section",
Title = ak.Title or "Section",
Icon = ak.Icon,
TextXAlignment = ak.TextXAlignment or "Left",
TextSize = ak.TextSize or 19,
Box = ak.Box or false,
FontWeight = ak.FontWeight or Enum.FontWeight.SemiBold,
TextTransparency = ak.TextTransparency or 0.05,
Opened = ak.Opened or false,
UIElements = {},
HeaderSize = 42,
IconSize = 20,
Padding = 10,
Elements = {},
Expandable = false
}
local am
function al.SetIcon(an, ao)
al.Icon = ao or nil
if am then
am:Destroy()
end
if ao then
am = aa.Image(ao, ao .. ":" .. al.Title, 0, ak.Window.Folder, al.__type, true)
am.Size = Dim2(0, al.IconSize, 0, al.IconSize)
end
end
local an =
ae(
"Frame",
{
Size = Dim2(0, al.IconSize, 0, al.IconSize),
BackgroundTransparency = 1,
Visible = false
},
{
ae(
"ImageLabel",
{
Size = DIM1010,
BackgroundTransparency = 1,
Image = aa.Icon "chevron-down"[1],
ImageRectSize = aa.Icon "chevron-down"[2].ImageRectSize,
ImageRectOffset = aa.Icon "chevron-down"[2].ImageRectPosition,
ThemeTag = {
ImageColor3 = "Icon"
},
ImageTransparency = .7
}
)
}
)
if al.Icon then
al:SetIcon(al.Icon)
end
local ao =
ae(
"TextLabel",
{
BackgroundTransparency = 1,
TextXAlignment = al.TextXAlignment,
AutomaticSize = "Y",
TextSize = al.TextSize,
TextTransparency = al.TextTransparency,
ThemeTag = {
TextColor3 = "Text"
},
FontFace = Fnew(aa.Font, al.FontWeight),
Text = al.Title,
Size = Dim2(1, 0, 0, 0),
TextWrapped = true
}
)
local function UpdateTitleSize()
local ap = 0
if am then
ap = ap - (al.IconSize + 8)
end
if an.Visible then
ap = ap - (al.IconSize + 8)
end
ao.Size = Dim2(1, ap, 0, 0)
end
local ap =
aa.NewRoundFrame(
ak.Window.ElementConfig.UICorner,
"Squircle",
{
Size = Dim2(1, 0, 0, 0),
BackgroundTransparency = 1,
Parent = ak.Parent,
ClipsDescendants = true,
AutomaticSize = "Y",
ImageTransparency = al.Box and .93 or 1,
ThemeTag = {
ImageTransparency = "GroupBackgroundTransparency",
ImageColor3 = "GroupBackground",
},
},
{
ae(
"TextButton",
{
Size = Dim2(1, 0, 0, Expandable and 0 or al.HeaderSize),
BackgroundTransparency = 1,
AutomaticSize = Expandable and nil or "Y",
Text = "",
Name = "Top"
},
{
al.Box and
ae(
"UIPadding",
{
PaddingLeft = Dim(
0,
ak.Window.ElementConfig.UIPadding + (ak.Window.NewElements and 4 or 0)
),
PaddingRight = Dim(
0,
ak.Window.ElementConfig.UIPadding + (ak.Window.NewElements and 4 or 0)
)
}
) or
nil,
am,
ao,
ae(
"UIListLayout",
{
Padding = Dim(0, 8),
FillDirection = "Horizontal",
VerticalAlignment = "Center",
HorizontalAlignment = "Left"
}
),
an
}
),
ae(
"Frame",
{
BackgroundTransparency = 1,
Size = Dim2(1, 0, 0, 0),
AutomaticSize = "Y",
Name = "Content",
Visible = false,
Position = Dim2(0, 0, 0, al.HeaderSize)
},
{
al.Box and
ae(
"UIPadding",
{
PaddingLeft = Dim(0, ak.Window.ElementConfig.UIPadding),
PaddingRight = Dim(0, ak.Window.ElementConfig.UIPadding),
PaddingBottom = Dim(0, ak.Window.ElementConfig.UIPadding)
}
) or
nil,
ae(
"UIListLayout",
{
FillDirection = "Vertical",
Padding = Dim(0, ak.Tab.Gap),
VerticalAlignment = "Top"
}
)
}
)
}
)
al.ElementFrame = ap
local aq = ak.ElementsModule; aq.Load(
al, ap.Content, aq.Elements, ak.Window,
ak.WindUI, function()
if not al.Expandable then
al.Expandable = true
an.Visible = true
UpdateTitleSize()
end
end, aq, ak.UIScale, ak.Tab
); UpdateTitleSize();
function al.SetTitle(ar, as)
ao.Text = as;
end; function al.Destroy(ar)
for as, at in next, al.Elements do
at:Destroy();
end; ap:Destroy();
end; function al.Open(ar)
if al.Expandable then
al.Opened = true;
if not isFirstLoad then
TwCreate(TweenService, ap, TwInfo(0.33, Enum.EasingStyle.Quint, Enum.EasingDirection.Out),
{ Size = Dim2( ap.Size.X.Scale, ap.Size.X.Offset, 0, al.HeaderSize + (ap.Content.AbsoluteSize.Y / ak.UIScale))}
):Play(); TwCreate(TweenService, an.ImageLabel, TWI_Q_01, {Rotation = 180}):Play();
else
ap.Size = Dim2( ap.Size.X.Scale, ap.Size.X.Offset, 0, al.HeaderSize + (ap.Content.AbsoluteSize.Y / ak.UIScale));
an.ImageLabel.Rotation = 180;
end;
an.ImageLabel.Parent.Parent.Parent.Content.Visible = true;
end;
end; function al.Close(ar)
if al.Expandable then
al.Opened = false;
if not isFirstLoad then
TwCreate(TweenService, ap, TwInfo(0.26, Enum.EasingStyle.Quint, Enum.EasingDirection.Out), {Size = Dim2(ap.Size.X.Scale, ap.Size.X.Offset, 0, al.HeaderSize)}):Play();
TwCreate(TweenService, an.ImageLabel, TWI_Q_01, {Rotation = 0}):Play();
else
ap.Size = Dim2(ap.Size.X.Scale, ap.Size.X.Offset, 0, al.HeaderSize);
an.ImageLabel.Rotation = 0;
end;
an.ImageLabel.Parent.Parent.Parent.Content.Visible = false;
end;
end; aa.AddSignal(ap.Top.MouseButton1Click,function()
if al.Expandable then
if al.Opened then
al:Close();
else
al:Open();
end;
end;
end); aa.AddSignal(PropChangeSignal(ap.Content.UIListLayout, "AbsoluteContentSize"), function()
if al.Opened then
al:Open();
end;
end); tk.spawn(function()
twait(0.02); if al.Expandable then
ap.Size = Dim2(ap.Size.X.Scale, ap.Size.X.Offset, 0, al.HeaderSize);
ap.AutomaticSize = "None";
ap.Top.Size = Dim2(1, 0, 0, al.HeaderSize);
ap.Top.AutomaticSize = "None";
ap.Content.Visible = true;
an.ImageLabel.Parent.Parent.Parent.Content.Visible = false;
end; if al.Opened then
al:Open();
end;
end); return al.__type, al;
end; return ah;
end;
function a.Q()
local aa = a.load "b"
local ae = aa.New
local af = {}
function af.New(ah, aj)
local ak =
ae(
"Frame",
{
Parent = aj.Parent,
Size = aj.ParentType ~= "Group" and Dim2(1, -7, 0, 7 * (aj.Columns or 1)) or
Dim2(0, 7 * (aj.Columns or 1), 0, 0),
BackgroundTransparency = 1
}
)
return "Space", {__type = "Space", ElementFrame = ak}
end
return af
end
function a.R()
local aa = a.load "b"
local ae = aa.New
local af = {}
local function ParseAspectRatio(ah)
if type(ah) == "string" then
local aj, ak = ah:match "(%d+):(%d+)"
if aj and ak then
return tonumber(aj) / tonumber(ak)
end
elseif type(ah) == "number" then
return ah
end
return nil
end
function af.New(ah, aj)
local ak = {
__type = "Image",
Image = aj.Image or "",
AspectRatio = aj.AspectRatio or "16:9",
Radius = aj.Radius or aj.Window.ElementConfig.UICorner
}
local al = aa.Image(ak.Image, ak.Image, ak.Radius, aj.Window.Folder, "Image", false)
al.Parent = aj.Parent
al.Size = Dim2(1, 0, 0, 0)
al.BackgroundTransparency = 1
local am = ParseAspectRatio(ak.AspectRatio)
local an
if am then
an =
ae(
"UIAspectRatioConstraint",
{
Parent = al,
AspectRatio = am,
AspectType = "ScaleWithParentSize",
DominantAxis = "Width"
}
)
end
function ak.Destroy(ao)
al:Destroy()
end
return ak.__type, ak
end
return af
end
function a.S()
local aa = a.load "b"
local ae = aa.New
local af = {}
function af.New(ah, aj)
local ak = {
__type = "Group",
Elements = {}
}
local al =
ae(
"Frame",
{
Size = Dim2(1, 0, 0, 0),
BackgroundTransparency = 1,
AutomaticSize = "Y",
Parent = aj.Parent
},
{
ae(
"UIListLayout",
{
FillDirection = "Horizontal",
HorizontalAlignment = "Center",
Padding = Dim(0, aj.Tab and aj.Tab.Gap or (Window.NewElements and 1 or 6))
}
)
}
)
local am = aj.ElementsModule
am.Load(
ak,
al,
am.Elements,
aj.Window,
aj.WindUI,
function(an, ao)
local ap = aj.Tab and aj.Tab.Gap or (aj.Window.NewElements and 1 or 6)
local aq = {}
local ar = 0
for as, at in next, ao do
if at.__type == "Space" then
ar = ar + (at.ElementFrame.Size.X.Offset or 6)
elseif at.__type == "Divider" then
ar = ar + (at.ElementFrame.Size.X.Offset or 1)
else
tble.insert(aq, at)
end
end
local au = #aq
if au == 0 then
return
end
local av = 1 / au
local aw = ap * (au - 1)
local ax = -(aw + ar)
local ay = math.floor(ax / au)
local az = ax - (ay * au)
for aA, aB in next, aq do
local aC = ay
if aA <= math.abs(az) then
aC = aC - 1
end
if aB.ElementFrame then
aB.ElementFrame.Size = Dim2(av, aC, 1, 0)
end
end
end,
am,
aj.UIScale,
aj.Tab
)
return ak.__type, ak
end
return af
end
function a.T()
return {
Elements = {
Paragraph = a.load "A",
Button = a.load "B",
Toggle = a.load "E",
Slider = a.load "F",
Keybind = a.load "G",
Input = a.load "H",
Dropdown = a.load "K",
Code = a.load "N",
Colorpicker = a.load "O",
Section = a.load "P",
Divider = a.load "I",
Space = a.load "Q",
Image = a.load "R",
Group = a.load "S"
},
Load = function(aa, ae, af, ah, aj, ak, al, am, an)
for ao, ap in next, af do
aa[ao] = function(aq, ar)
ar = ar or {}
ar.Tab = an or aa
ar.ParentType = aa.__type
ar.ParentTable = aa
ar.Index = #aa.Elements + 1
ar.GlobalIndex = #ah.AllElements + 1
ar.Parent = ae
ar.Window = ah
ar.WindUI = aj
ar.UIScale = am
ar.ElementsModule = al
local as, au = ap:New(ar)
if ar.Flag and typeof(ar.Flag) == "string" then
if ah.CurrentConfig then
ah.CurrentConfig:Register(ar.Flag, au)
if ah.PendingConfigData and ah.PendingConfigData[ar.Flag] then
local av = ah.PendingConfigData[ar.Flag]
local aw = ah.ConfigManager
if aw.Parser[av.__type] then
task.defer(
function()
local ax, ay =
pcall(
function()
aw.Parser[av.__type].Load(au, av)
end
)
if ax then
ah.PendingConfigData[ar.Flag] = nil
else
warn(
"[ WindUI ] Failed to apply pending config for '" ..
ar.Flag .. "': " .. tostring(ay)
)
end
end
)
end
end
else
ah.PendingFlags = ah.PendingFlags or {}
ah.PendingFlags[ar.Flag] = au
end
end
local av
for aw, ax in next, au do
if typeof(ax) == "table" and aw ~= "ElementFrame" and aw:match "Frame$" then
av = ax
break
end
end
if av then
au.ElementFrame = av.UIElements.Main
function au.SetTitle(ay, az)
av:SetTitle(az)
end
function au.SetDesc(ay, az)
av:SetDesc(az)
end
function au.Highlight(ay)
av:Highlight()
end
function au.Destroy(ay)
av:Destroy()
table.remove(ah.AllElements, ar.GlobalIndex)
table.remove(aa.Elements, ar.Index)
table.remove(an.Elements, ar.Index)
aa:UpdateAllElementShapes(aa)
end
end
ah.AllElements[ar.Index] = au
aa.Elements[ar.Index] = au
if an then
an.Elements[ar.Index] = au
end
if ah.NewElements then
aa:UpdateAllElementShapes(aa)
end
if ak then
ak(au, aa.Elements)
end
return au
end
end
function aa.UpdateAllElementShapes(aq, ar)
for as, au in next, ar.Elements do
local av
for aw, ax in pairs(au) do
if typeof(ax) == "table" and aw:match "Frame$" then
av = ax
break
end
end
if av then
av.Index = as
if av.UpdateShape then
av.UpdateShape(ar)
end
end
end
end
end
}
end
function a.U()
local ae = cmdm
local af = a.load "b"
local ah = af.New
local aj = af.Tween
local ak = a.load "y".New
local al = a.load "u".New
local am = {
Tabs = {},
Containers = {},
SelectedTab = nil,
TabCount = 0,
ToolTipParent = nil,
TabHighlight = nil,
OnChangeFunc = function(am)
end
}
function am.Init(an, ao, ap, aq)
Window = an
WindUI = ao
am.ToolTipParent = ap
am.TabHighlight = aq
return am
end
function am.New(an, ao)
local ap = {
__type = "Tab",
Title = an.Title or "Tab",
Desc = an.Desc,
Icon = an.Icon,
IconColor = an.IconColor,
IconShape = an.IconShape,
IconThemed = an.IconThemed,
Locked = an.Locked,
ShowTabTitle = an.ShowTabTitle,
Selected = false,
Index = nil,
Parent = an.Parent,
UIElements = {},
Elements = {},
ContainerFrame = nil,
UICorner = Window.UICorner - (Window.UIPadding / 2),
Gap = Window.NewElements and 1 or 6,
TabPaddingX = 4 + (Window.UIPadding / 2),
TabPaddingY = 3 + (Window.UIPadding / 2),
TitlePaddingY = 0
}
if ap.IconShape then
ap.TabPaddingX = 2 + (Window.UIPadding / 4)
ap.TabPaddingY = 2 + (Window.UIPadding / 4)
ap.TitlePaddingY = 2 + (Window.UIPadding / 4)
end
am.TabCount = am.TabCount + 1
local aq = am.TabCount
ap.Index = aq
ap.UIElements.Main =
af.NewRoundFrame(
ap.UICorner,
"Squircle",
{
BackgroundTransparency = 1,
Size = Dim2(1, -7, 0, 0),
AutomaticSize = "Y",
Parent = an.Parent,
ThemeTag = {
ImageColor3 = "TabBackground"
},
ImageTransparency = 1
},
{
af.NewRoundFrame(
ap.UICorner,
"SquircleOutline",
{
Size = DIM1010,
ThemeTag = {
ImageColor3 = "Text"
},
ImageTransparency = 1,
Name = "Outline"
},
{
ah(
"UIGradient",
{
Rotation = 80,
Color = CSnew {
CSKnew(0.0, WHITE),
CSKnew(0.5, WHITE),
CSKnew(1.0, WHITE)
},
Transparency = NSnew {
NSKnew(0.0, 0.1),
NSKnew(0.5, 1),
NSKnew(1.0, 0.1)
}
}
)
}
),
af.NewRoundFrame(
ap.UICorner,
"Squircle",
{
Size = Dim2(1, 0, 0, 0),
AutomaticSize = "Y",
ThemeTag = {
ImageColor3 = "Text"
},
ImageTransparency = 1,
Name = "Frame"
},
{
ah(
"UIListLayout",
{
SortOrder = "LayoutOrder",
Padding = Dim(0, 2 + (Window.UIPadding / 2)),
FillDirection = "Horizontal",
VerticalAlignment = "Center"
}
),
ah(
"TextLabel",
{
Text = ap.Title,
ThemeTag = {
TextColor3 = "TabTitle"
},
TextTransparency = not ap.Locked and 0.4 or .7,
TextSize = 15,
Size = Dim2(1, 0, 0, 0),
FontFace = Fnew(af.Font, Enum.FontWeight.Medium),
TextWrapped = true,
RichText = true,
AutomaticSize = "Y",
LayoutOrder = 2,
TextXAlignment = "Left",
BackgroundTransparency = 1
},
{
ah(
"UIPadding",
{
PaddingTop = Dim(0, ap.TitlePaddingY),
PaddingBottom = Dim(0, ap.TitlePaddingY)
}
)
}
),
ah(
"UIPadding",
{
PaddingTop = Dim(0, ap.TabPaddingY),
PaddingLeft = Dim(0, ap.TabPaddingX),
PaddingRight = Dim(0, ap.TabPaddingX),
PaddingBottom = Dim(0, ap.TabPaddingY)
}
)
}
)
},
true
)
local ar = 0
local as
local au
if ap.Icon then
as =
af.Image(
ap.Icon,
ap.Icon .. ":" .. ap.Title,
0,
Window.Folder,
ap.__type,
ap.IconColor and false or true,
ap.IconThemed,
"TabIcon"
)
as.Size = Dim2(0, 16, 0, 16)
if ap.IconColor then
as.ImageLabel.ImageColor3 = ap.IconColor
end
if not ap.IconShape then
as.Parent = ap.UIElements.Main.Frame
ap.UIElements.Icon = as
as.ImageLabel.ImageTransparency = not ap.Locked and 0 or .7
ar = -18 - (Window.UIPadding / 2)
ap.UIElements.Main.Frame.TextLabel.Size = Dim2(1, ar, 0, 0)
elseif ap.IconColor then
af.NewRoundFrame(
ap.IconShape ~= "Circle" and (ap.UICorner + 5 - (2 + (Window.UIPadding / 4))) or 9999,
"Squircle",
{
Size = Dim2(0, 26, 0, 26),
ImageColor3 = ap.IconColor,
Parent = ap.UIElements.Main.Frame
},
{
as,
af.NewRoundFrame(
ap.IconShape ~= "Circle" and (ap.UICorner + 5 - (2 + (Window.UIPadding / 4))) or 9999,
"SquircleOutline",
{
Size = DIM1010,
ThemeTag = {
ImageColor3 = "White"
},
ImageTransparency = .35,
Name = "Outline"
},
{
ah(
"UIGradient",
{
Rotation = 45,
Color = CSnew {
CSKnew(0.0, WHITE),
CSKnew(0.5, WHITE),
CSKnew(1.0, WHITE)
},
Transparency = NSnew {
NSKnew(0.0, 0.1),
NSKnew(0.5, 1),
NSKnew(1.0, 0.1)
}
}
)
}
)
}
)
as.AnchorPoint = VEC05
as.Position = DIM05
as.ImageLabel.ImageTransparency = 0
as.ImageLabel.ImageColor3 = af.GetTextColorForHSB(ap.IconColor)
ar = -28 - (Window.UIPadding / 2)
ap.UIElements.Main.Frame.TextLabel.Size = Dim2(1, ar, 0, 0)
end
au = af.Image(ap.Icon, ap.Icon .. ":" .. ap.Title, 0, Window.Folder, ap.__type, true, ap.IconThemed)
au.Size = Dim2(0, 16, 0, 16)
au.ImageLabel.ImageTransparency = not ap.Locked and 0 or .7
ar = -30
end
ap.UIElements.ContainerFrame =
ah(
"ScrollingFrame",
{
Size = Dim2(1, 0, 1, ap.ShowTabTitle and -((Window.UIPadding * 2.4) + 12) or 0),
BackgroundTransparency = 1,
ScrollBarThickness = 0,
ElasticBehavior = "Never",
CanvasSize = DIM0000,
AnchorPoint = Vec2(0, 1),
Position = DIM0010,
AutomaticCanvasSize = "Y",
ScrollingDirection = "Y"
},
{
ah(
"UIPadding",
{
PaddingTop = Dim(0, not Window.HidePanelBackground and 20 or 10),
PaddingLeft = Dim(0, not Window.HidePanelBackground and 20 or 10),
PaddingRight = Dim(0, not Window.HidePanelBackground and 20 or 10),
PaddingBottom = Dim(0, not Window.HidePanelBackground and 20 or 10)
}
),
ah(
"UIListLayout",
{
SortOrder = "LayoutOrder",
Padding = Dim(0, ap.Gap),
HorizontalAlignment = "Center"
}
)
}
)
ap.UIElements.ContainerFrameCanvas =
ah(
"Frame",
{
Size = DIM1010,
BackgroundTransparency = 1,
Visible = false,
Parent = Window.UIElements.MainBar,
ZIndex = 5
},
{
ap.UIElements.ContainerFrame,
ah(
"Frame",
{
Size = Dim2(1, 0, 0, ((Window.UIPadding * 2.4) + 12)),
BackgroundTransparency = 1,
Visible = ap.ShowTabTitle or false,
Name = "TabTitle"
},
{
au,
ah(
"TextLabel",
{
Text = ap.Title,
ThemeTag = {
TextColor3 = "Text"
},
TextSize = 20,
TextTransparency = .1,
Size = Dim2(1, -ar, 1, 0),
FontFace = Fnew(af.Font, Enum.FontWeight.SemiBold),
TextTruncate = "AtEnd",
RichText = true,
LayoutOrder = 2,
TextXAlignment = "Left",
BackgroundTransparency = 1
}
),
ah(
"UIPadding",
{
PaddingTop = Dim(0, 20),
PaddingLeft = Dim(0, 20),
PaddingRight = Dim(0, 20),
PaddingBottom = Dim(0, 20)
}
),
ah(
"UIListLayout",
{
SortOrder = "LayoutOrder",
Padding = Dim(0, 10),
FillDirection = "Horizontal",
VerticalAlignment = "Center"
}
)
}
),
ah(
"Frame",
{
Size = Dim2(1, 0, 0, 1),
BackgroundTransparency = .9,
ThemeTag = {
BackgroundColor3 = "Text"
},
Position = Dim2(0, 0, 0, ((Window.UIPadding * 2.4) + 12)),
Visible = ap.ShowTabTitle or false
}
)
}
)
am.Containers[aq] = ap.UIElements.ContainerFrameCanvas
am.Tabs[aq] = ap
ap.ContainerFrame = ContainerFrameCanvas
af.AddSignal(
ap.UIElements.Main.MouseButton1Click,
function()
if not ap.Locked then
am:SelectTab(aq)
end
end
)
if Window.ScrollBarEnabled then
al(ap.UIElements.ContainerFrame, ap.UIElements.ContainerFrameCanvas, Window, 3)
end
local av
local aw
local ax
local ay = false
if ap.Desc then
af.AddSignal(
ap.UIElements.Main.InputBegan,
function()
ay = true
aw =
tk.spawn(
function()
twait(0.35)
if ay and not av then
av = ak(ap.Desc, am.ToolTipParent, true)
av.Container.AnchorPoint = VEC05
local function updatePosition()
if av then
av.Container.Position = Dim2(0, ae.X, 0, ae.Y - 4)
end
end
updatePosition()
ax = ae.Move:Connect(updatePosition)
av:Open()
end
end
)
end
)
end
af.AddSignal(ap.UIElements.Main.MouseEnter, function()
if not ap.Locked then
TwCreate(TweenService, ap.UIElements.Main.Frame, TWI_008, {ImageTransparency = 0.97}):Play();
end;
end);
af.AddSignal(ap.UIElements.Main.InputEnded, function()
if ap.Desc then ay = false;
if aw then tk.cancel(aw) aw = nil; end;
if ax then ax:Disconnect(); ax = nil; end;
if av then av:Close(); av = nil; end;
end; if not ap.Locked then
TwCreate(TweenService, ap.UIElements.Main.Frame, TWI_008, {ImageTransparency = 1}):Play();
end;
end); function ap.ScrollToTheElement(az, aA)
ap.UIElements.ContainerFrame.ScrollingEnabled = false;
TwCreate(ap.UIElements.ContainerFrame, TWI_Q_045,
{CanvasPosition = Vec2(0, ap.Elements[aA].ElementFrame.AbsolutePosition.Y - ap.UIElements.ContainerFrame.AbsolutePosition.Y - ap.UIElements.ContainerFrame.UIPadding.PaddingTop.Offset)}
):Play(); tk.spawn(function()
twait(.48) if ap.Elements[aA].Highlight then
ap.Elements[aA]:Highlight();
ap.UIElements.ContainerFrame.ScrollingEnabled = true;
end;
end); return ap;
end; local az = a.load"T";
az.Load(ap, ap.UIElements.ContainerFrame, az.Elements, Window, WindUI, nil, az, ao);
function ap.LockAll(aA)
for aB, aC in next, Window.AllElements do
if aC.Tab and aC.Tab.Index and aC.Tab.Index == ap.Index and aC.Lock then
aC:Lock()
end;
end;
end; function ap.UnlockAll(aA)
for aB, aC in next, Window.AllElements do
if aC.Tab and aC.Tab.Index and aC.Tab.Index == ap.Index and aC.Unlock then
aC:Unlock();
end;
end;
end; function ap.GetLocked(aA)
local aB = {}; for aC, aD in next, Window.AllElements do
if aD.Tab and aD.Tab.Index and aD.Tab.Index == ap.Index and aD.Locked == true then
tble.insert(aB, aD);
end;
end; return aB;
end; function ap.GetUnlocked(aA)
local aB = {}; for aC, aD in next, Window.AllElements do
if aD.Tab and aD.Tab.Index and aD.Tab.Index == ap.Index and aD.Locked == false then
tble.insert(aB, aD);
end;
end; return aB;
end; function ap.Select(aA)
return am:SelectTab(ap.Index);
end; tk.spawn(function()
local aA,aB = ah("Frame", {
BackgroundTransparency = 1,
Size = Dim2(1, 0, 1, -Window.UIElements.Main.Main.Topbar.AbsoluteSize.Y),
Parent = ap.UIElements.ContainerFrame
}, {
ah("UIListLayout", {
Padding = Dim(0, 8),
SortOrder = "LayoutOrder",
VerticalAlignment = "Center",
HorizontalAlignment = "Center",
FillDirection = "Vertical"
}), ah("ImageLabel", {
Size = Dim2(0, 48, 0, 48),
Image = af.Icon "frown"[1],
ImageRectOffset = af.Icon "frown"[2].ImageRectPosition,
ImageRectSize = af.Icon "frown"[2].ImageRectSize,
ThemeTag = {
ImageColor3 = "Icon"
},
BackgroundTransparency = 1,
ImageTransparency = .6
}), ah("TextLabel", {
AutomaticSize = "XY",
Text = "This tab is empty",
ThemeTag = {
TextColor3 = "Text"
},
TextSize = 18,
TextTransparency = .5,
BackgroundTransparency = 1,
FontFace = Fnew(af.Font, Enum.FontWeight.Medium)
});
}), nil;
aB = af.AddSignal(ap.UIElements.ContainerFrame.ChildAdded, function()
aA.Visible = false;
aB:Disconnect();
end);
end); return ap;
end; function am.OnChange(an, ao)
am.OnChangeFunc = ao;
end; function am.SelectTab(an, ao)
if not am.Tabs[ao].Locked then
am.SelectedTab = ao; for ap, aq in next, am.Tabs do
if not aq.Locked then
TwCreate(TweenService, aq.UIElements.Main, TWI_015, {ImageTransparency = 1}):Play();
TwCreate(TweenService, aq.UIElements.Main.Frame.TextLabel, TWI_015, {TextTransparency = 0.3}):Play();
if aq.UIElements.Icon and not aq.IconColor then
TwCreate(TweenService, aq.UIElements.Icon.ImageLabel, TWI_015, {ImageTransparency = 0.4}):Play();
end;
aq.Selected = false;
end;
end; if not isFirstLoad then
TwCreate(TweenService, am.Tabs[ao].UIElements.Main, TWI_015, {ImageTransparency = 0.93}):Play();
TwCreate(TweenService, am.Tabs[ao].UIElements.Main.Frame.TextLabel, TWI_015, {TextTransparency = 0}):Play();
else
am.Tabs[ao].UIElements.Main.ImageTransparency = 0.93;
am.Tabs[ao].UIElements.Main.Frame.TextLabel.TextTransparency = 0;
end;
if am.Tabs[ao].UIElements.Icon and not am.Tabs[ao].IconColor then
if isFirstLoad then
TwCreate(TweenService, am.Tabs[ao].UIElements.Icon.ImageLabel, TWI_015, {ImageTransparency = 0.1}):Play();
else
am.Tabs[ao].UIElements.Icon.ImageLabel.ImageTransparency = 0.1;
end;
end; am.Tabs[ao].Selected = true;
tk.spawn(function()
for ar, as in next, am.Containers do
as.AnchorPoint = Vec2(0, 0.05);
as.Visible = false;
end; am.Containers[ao].Visible = true
if not isFirstLoad then
TwCreate(TweenService, am.Containers[ao], TwInfo(0.15, Enum.EasingStyle.Quart, Enum.EasingDirection.Out),
{AnchorPoint = Vec2(0, 0)}
):Play();
else
am.Containers[ao].AnchorPoint = Vec2(0, 0);
end;
end); am.OnChangeFunc(ao);
end;
end; return am;
end;
function a.V()
local aa = {}
local ae = a.load "b"
local af = ae.New
local ah = ae.Tween
local aj = a.load "U"
function aa.New(ak, al, am, an, ao)
local ap = {
Title = ak.Title or "Section",
Icon = ak.Icon,
IconThemed = ak.IconThemed,
Opened = ak.Opened or false,
HeaderSize = 42,
IconSize = 18,
Expandable = false
}
local aq
if ap.Icon then
aq = ae.Image(ap.Icon, ap.Icon, 0, am, "Section", true, ap.IconThemed)
aq.Size = Dim2(0, ap.IconSize, 0, ap.IconSize)
aq.ImageLabel.ImageTransparency = .25
end
local ar =
af(
"Frame",
{
Size = Dim2(0, ap.IconSize, 0, ap.IconSize),
BackgroundTransparency = 1,
Visible = false
},
{
af(
"ImageLabel",
{
Size = DIM1010,
BackgroundTransparency = 1,
Image = ae.Icon "chevron-down"[1],
ImageRectSize = ae.Icon "chevron-down"[2].ImageRectSize,
ImageRectOffset = ae.Icon "chevron-down"[2].ImageRectPosition,
ThemeTag = {
ImageColor3 = "Icon"
},
ImageTransparency = .7
}
)
}
)
local as =
af(
"Frame",
{
Size = Dim2(1, 0, 0, ap.HeaderSize),
BackgroundTransparency = 1,
Parent = al,
ClipsDescendants = true
},
{
af(
"TextButton",
{
Size = Dim2(1, 0, 0, ap.HeaderSize),
BackgroundTransparency = 1,
Text = ""
},
{
aq,
af(
"TextLabel",
{
Text = ap.Title,
TextXAlignment = "Left",
Size = Dim2(1, aq and (-ap.IconSize - 10) * 2 or (-ap.IconSize - 10), 1, 0),
ThemeTag = {
TextColor3 = "Text"
},
FontFace = Fnew(ae.Font, Enum.FontWeight.SemiBold),
TextSize = 14,
BackgroundTransparency = 1,
TextTransparency = .7,
TextWrapped = true
}
),
af(
"UIListLayout",
{
FillDirection = "Horizontal",
VerticalAlignment = "Center",
Padding = Dim(0, 10)
}
),
ar,
af(
"UIPadding",
{
PaddingLeft = Dim(0, 11),
PaddingRight = Dim(0, 11)
}
)
}
),
af(
"Frame",
{
BackgroundTransparency = 1,
Size = Dim2(1, 0, 0, 0),
AutomaticSize = "Y",
Name = "Content",
Visible = true,
Position = Dim2(0, 0, 0, ap.HeaderSize)
},
{
af(
"UIListLayout",
{
FillDirection = "Vertical",
Padding = Dim(0, ao.Gap),
VerticalAlignment = "Bottom"
}
)
}
)
}
)
function ap.Tab(au, av)
if not ap.Expandable then
ap.Expandable = true;
ar.Visible = true;
end av.Parent = as.Content;
return aj.New(av, an);
end; function ap.Open(au)
if ap.Expandable then
ap.Opened = true
TwCreate(TweenService, as, TwInfo(0.33, Enum.EasingStyle.Quint, Enum.EasingDirection.Out),
{Size = Dim2(1, 0, 0, ap.HeaderSize + (as.Content.AbsoluteSize.Y / an))}
):Play(); TwCreate(TweenService, ar.ImageLabel, TWI_Q_01, {Rotation = 180}):Play();
end;
end; function ap.Close(au)
if ap.Expandable then
ap.Opened = false
TwCreate(TweenService, as, TwInfo(0.26, Enum.EasingStyle.Quint, Enum.EasingDirection.Out),
{Size = Dim2(1, 0, 0, ap.HeaderSize)}
):Play() TwCreate(TweenService, ar.ImageLabel, TWI_Q_01, {Rotation = 0}):Play();
end;
end; ae.AddSignal(as.TextButton.MouseButton1Click, function()
if ap.Expandable then
if ap.Opened then
ap:Close();
else
ap:Open();
end;
end;
end); ae.AddSignal(PropChangeSignal(as.Content.UIListLayout, "AbsoluteContentSize"), function()
if ap.Opened then
ap:Open();
end;
end); if ap.Opened then
tk.spawn(function()
twait();
ap:Open();
end);
end; return ap;
end; return aa;
end;
function a.W()
return {
Tab = "table-of-contents",
Paragraph = "type",
Button = "square-mouse-pointer",
Toggle = "toggle-right",
Slider = "sliders-horizontal",
Keybind = "command",
Input = "text-cursor-input",
Dropdown = "chevrons-up-down",
Code = "terminal",
Colorpicker = "palette"
}
end
function a.X()
local ae = {
Margin = 8,
Padding = 9
}
local af = a.load "b"
local ah = af.New
function ae.new(ak, al, am)
local an = {
IconSize = 18,
Padding = 14,
Radius = 22,
Width = 400,
MaxHeight = 380,
Icons = a.load "W"
}
local ao =
ah(
"TextBox",
{
Text = "",
PlaceholderText = "Search...",
ThemeTag = {
PlaceholderColor3 = "Placeholder",
TextColor3 = "Text"
},
Size = Dim2(1, -((an.IconSize * 2) + (an.Padding * 2)), 0, 0),
AutomaticSize = "Y",
ClipsDescendants = true,
ClearTextOnFocus = false,
BackgroundTransparency = 1,
TextXAlignment = "Left",
FontFace = Fnew(af.Font, Enum.FontWeight.Regular),
TextSize = 18
}
)
local ap =
ah(
"ImageLabel",
{
Image = af.Icon "x"[1],
ImageRectSize = af.Icon "x"[2].ImageRectSize,
ImageRectOffset = af.Icon "x"[2].ImageRectPosition,
BackgroundTransparency = 1,
ThemeTag = {
ImageColor3 = "Icon"
},
ImageTransparency = .1,
Size = Dim2(0, an.IconSize, 0, an.IconSize)
},
{
ah(
"TextButton",
{
Size = Dim2(1, 8, 1, 8),
BackgroundTransparency = 1,
Active = true,
ZIndex = 999999999,
AnchorPoint = VEC05,
Position = DIM05,
Text = ""
}
)
}
)
local aq =
ah(
"ScrollingFrame",
{
Size = Dim2(1, 0, 0, 0),
AutomaticCanvasSize = "Y",
ScrollingDirection = "Y",
ElasticBehavior = "Never",
ScrollBarThickness = 0,
CanvasSize = DIM0000,
BackgroundTransparency = 1,
Visible = false
},
{
ah(
"UIListLayout",
{
Padding = Dim(0, 0),
FillDirection = "Vertical"
}
),
ah(
"UIPadding",
{
PaddingTop = Dim(0, an.Padding),
PaddingLeft = Dim(0, an.Padding),
PaddingRight = Dim(0, an.Padding),
PaddingBottom = Dim(0, an.Padding)
}
)
}
)
local ar =
af.NewRoundFrame(
an.Radius,
"Squircle",
{
Size = DIM1010,
ThemeTag = {
ImageColor3 = "Background"
},
ImageTransparency = 0
},
{
af.NewRoundFrame(
an.Radius,
"Squircle",
{
Size = DIM1010,
BackgroundTransparency = 1,
Visible = false,
ImageColor3 = WHITE,
ImageTransparency = .98,
Name = "Frame"
},
{
ah(
"Frame",
{
Size = Dim2(1, 0, 0, 46),
BackgroundTransparency = 1
},
{
ah(
"Frame",
{
Size = DIM1010,
BackgroundTransparency = 1
},
{
ah(
"ImageLabel",
{
Image = af.Icon "search"[1],
ImageRectSize = af.Icon "search"[2].ImageRectSize,
ImageRectOffset = af.Icon "search"[2].ImageRectPosition,
BackgroundTransparency = 1,
ThemeTag = {
ImageColor3 = "Icon"
},
ImageTransparency = .1,
Size = Dim2(0, an.IconSize, 0, an.IconSize)
}
),
ao,
ap,
ah(
"UIListLayout",
{
Padding = Dim(0, an.Padding),
FillDirection = "Horizontal",
VerticalAlignment = "Center"
}
),
ah(
"UIPadding",
{
PaddingLeft = Dim(0, an.Padding),
PaddingRight = Dim(0, an.Padding)
}
)
}
)
}
),
ah(
"Frame",
{
BackgroundTransparency = 1,
AutomaticSize = "Y",
Size = Dim2(1, 0, 0, 0),
Name = "Results"
},
{
ah(
"Frame",
{
Size = Dim2(1, 0, 0, 1),
ThemeTag = {
BackgroundColor3 = "Outline"
},
BackgroundTransparency = .9,
Visible = false
}
),
aq,
ah(
"UISizeConstraint",
{
MaxSize = Vec2(an.Width, an.MaxHeight)
}
)
}
),
ah(
"UIListLayout",
{
Padding = Dim(0, 0),
FillDirection = "Vertical"
}
)
}
)
}
)
local as =
ah(
"Frame",
{
Size = Dim2(0, an.Width, 0, 0),
AutomaticSize = "Y",
Parent = al,
BackgroundTransparency = 1,
Position = DIM05,
AnchorPoint = VEC05,
Visible = false,
ZIndex = 99999999
},
{
ah(
"UIScale",
{
Scale = .9
}
),
ar,
af.NewRoundFrame(
an.Radius,
"SquircleOutline2",
{
Size = DIM1010,
ThemeTag = {
ImageColor3 = "Outline"
},
ImageTransparency = 1
},
{
ah(
"UIGradient",
{
Rotation = 45,
Transparency = NSnew {
NSKnew(0, 0.55),
NSKnew(0.5, 0.8),
NSKnew(1, 0.6)
}
}
)
}
)
}
)
local function CreateSearchTab(au, av, aw, ax, ay, az)
local aA =
ah(
"TextButton",
{
Size = Dim2(1, 0, 0, 0),
AutomaticSize = "Y",
BackgroundTransparency = 1,
Parent = ax or nil
},
{
af.NewRoundFrame(
an.Radius - 11,
"Squircle",
{
Size = Dim2(1, 0, 0, 0),
Position = DIM05,
AnchorPoint = VEC05,
ThemeTag = {
ImageColor3 = "Text"
},
ImageTransparency = 1,
Name = "Main"
},
{
af.NewRoundFrame(
an.Radius - 11,
"SquircleOutline2",
{
Size = DIM1010,
Position = DIM05,
AnchorPoint = VEC05,
ThemeTag = {
ImageColor3 = "Outline"
},
ImageTransparency = 1,
Name = "Outline"
},
{
ah(
"UIGradient",
{
Rotation = 65,
Transparency = NSnew {
NSKnew(0, 0.55),
NSKnew(0.5, 0.8),
NSKnew(1, 0.6)
}
}
),
ah(
"UIPadding",
{
PaddingTop = Dim(0, an.Padding - 2),
PaddingLeft = Dim(0, an.Padding),
PaddingRight = Dim(0, an.Padding),
PaddingBottom = Dim(0, an.Padding - 2)
}
),
ah(
"ImageLabel",
{
Image = af.Icon(aw)[1],
ImageRectSize = af.Icon(aw)[2].ImageRectSize,
ImageRectOffset = af.Icon(aw)[2].ImageRectPosition,
BackgroundTransparency = 1,
ThemeTag = {
ImageColor3 = "Icon"
},
ImageTransparency = .1,
Size = Dim2(0, an.IconSize, 0, an.IconSize)
}
),
ah(
"Frame",
{
Size = Dim2(1, -an.IconSize - an.Padding, 0, 0),
BackgroundTransparency = 1
},
{
ah(
"TextLabel",
{
Text = au,
ThemeTag = {
TextColor3 = "Text"
},
TextSize = 17,
BackgroundTransparency = 1,
TextXAlignment = "Left",
FontFace = Fnew(af.Font, Enum.FontWeight.Medium),
Size = Dim2(1, 0, 0, 0),
TextTruncate = "AtEnd",
AutomaticSize = "Y",
Name = "Title"
}
),
ah(
"TextLabel",
{
Text = av or "",
Visible = av and true or false,
ThemeTag = {
TextColor3 = "Text"
},
TextSize = 15,
TextTransparency = .3,
BackgroundTransparency = 1,
TextXAlignment = "Left",
FontFace = Fnew(af.Font, Enum.FontWeight.Medium),
Size = Dim2(1, 0, 0, 0),
TextTruncate = "AtEnd",
AutomaticSize = "Y",
Name = "Desc"
}
) or nil,
ah(
"UIListLayout",
{
Padding = Dim(0, 6),
FillDirection = "Vertical"
}
)
}
),
ah(
"UIListLayout",
{
Padding = Dim(0, an.Padding),
FillDirection = "Horizontal"
}
)
}
)
},
true
),
ah(
"Frame",
{
Name = "ParentContainer",
Size = Dim2(1, -an.Padding, 0, 0),
AutomaticSize = "Y",
BackgroundTransparency = 1,
Visible = ay
},
{
af.NewRoundFrame(
99,
"Squircle",
{
Size = Dim2(0, 2, 1, 0),
BackgroundTransparency = 1,
ThemeTag = {
ImageColor3 = "Text"
},
ImageTransparency = .9
}
),
ah(
"Frame",
{
Size = Dim2(1, -an.Padding - 2, 0, 0),
Position = Dim2(0, an.Padding + 2, 0, 0),
BackgroundTransparency = 1
},
{
ah(
"UIListLayout",
{
Padding = Dim(0, 0),
FillDirection = "Vertical"
}
)
}
)
}
),
ah(
"UIListLayout",
{
Padding = Dim(0, 0),
FillDirection = "Vertical",
HorizontalAlignment = "Right"
}
)
}
)
aA.Main.Size =
Dim2(
1,
0,
0,
aA.Main.Outline.Frame.Desc.Visible and
(((an.Padding - 2) * 2) + aA.Main.Outline.Frame.Title.TextBounds.Y + 6 +
aA.Main.Outline.Frame.Desc.TextBounds.Y) or
(((an.Padding - 2) * 2) + aA.Main.Outline.Frame.Title.TextBounds.Y)
)
af.AddSignal(
aA.Main.MouseEnter,
function()
aj(aA.Main, .04, {ImageTransparency = .95}):Play()
aj(aA.Main.Outline, .04, {ImageTransparency = .7}):Play()
end
)
af.AddSignal(
aA.Main.InputEnded,
function()
aj(aA.Main, .08, {ImageTransparency = 1}):Play()
aj(aA.Main.Outline, .08, {ImageTransparency = 1}):Play()
end
)
af.AddSignal(
aA.Main.MouseButton1Click,
function()
if az then
az()
end
end
)
return aA
end
local function ContainsText(au, av)
if not av or av == "" then
return false
end
if not au or au == "" then
return false
end
local aw = string.lower(au)
local ax = string.lower(av)
return str.find(aw, ax, 1, true) ~= nil
end
local function Search(au)
if not au or au == "" then
return {}
end
local av = {}
for aw, ax in next, ak.Tabs do
local ay = ContainsText(ax.Title or "", au)
local az = {}
for aA, aB in next, ax.Elements do
if aB.__type ~= "Section" then
local aC = ContainsText(aB.Title or "", au)
local aD = ContainsText(aB.Desc or "", au)
if aC or aD then
az[aA] = {
Title = aB.Title,
Desc = aB.Desc,
Original = aB,
__type = aB.__type,
Index = aA
}
end
end
end
if ay or next(az) ~= nil then
av[aw] = {
Tab = ax,
Title = ax.Title,
Icon = ax.Icon,
Elements = az
}
end
end
return av
end
function an.Search(au, av)
av = av or ""
local aw = Search(av)
aq.Visible = true
ar.Frame.Results.Frame.Visible = true
for ax, ay in next, GetChildren(aq) do
if ay.ClassName ~= "UIListLayout" and ay.ClassName ~= "UIPadding" then
ay:Destroy()
end
end
if aw and next(aw) ~= nil then
for az, aA in next, aw do
local aB = an.Icons.Tab
local aC =
CreateSearchTab(
aA.Title,
nil,
aB,
aq,
true,
function()
an:Close()
ak:SelectTab(az)
end
)
if aA.Elements and next(aA.Elements) ~= nil then
for aD, aE in next, aA.Elements do
local aF = an.Icons[aE.__type]
CreateSearchTab(
aE.Title,
aE.Desc,
aF,
aC:FindFirstChild "ParentContainer" and aC.ParentContainer.Frame or nil,
false,
function()
an:Close()
ak:SelectTab(az)
if aA.Tab.ScrollToTheElement then
aA.Tab:ScrollToTheElement(aE.Index)
end
end
)
end
end
end
elseif av ~= "" then
ah(
"TextLabel",
{
Size = Dim2(1, 0, 0, 70),
BackgroundTransparency = 1,
Text = "No results found",
TextSize = 16,
ThemeTag = {
TextColor3 = "Text"
},
TextTransparency = .2,
BackgroundTransparency = 1,
FontFace = Fnew(af.Font, Enum.FontWeight.Medium),
Parent = aq,
Name = "NotFound"
}
)
else
aq.Visible = false
ar.Frame.Results.Frame.Visible = false
end
end
af.AddSignal(PropChangeSignal(ao, "Text"), function()
an:Search(ao.Text);
end); af.AddSignal(PropChangeSignal(aq.UIListLayout, "AbsoluteContentSize"), function()
TwCreate(TweenService, aq, TwInfo(0.06, Enum.EasingStyle.Quint, Enum.EasingDirection.InOut), {
Size = Dim2(1, 0, 0, math.clamp(aq.UIListLayout.AbsoluteContentSize.Y + (an.Padding * 2), 0, an.MaxHeight))
}):Play();
end); function an.Open(au)
tk.spawn(function()
ar.Frame.Visible = true; as.Visible = true;
TwCreate(TweenService, as.UIScale, TwInfo(0.12, Enum.EasingStyle.Quint, Enum.EasingDirection.Out), {Scale = 1}):Play();
end);
end; function an.Close(au)
tk.spawn(function()
am(); ar.Frame.Visible = false;
TwCreate(TweenService, as.UIScale, TwInfo(0.12, Enum.EasingStyle.Quint, Enum.EasingDirection.Out), {Scale = 1}):Play();
twait(0.12); as.Visible = false;
end);
end; af.AddSignal(ap.TextButton.MouseButton1Click, function()
an:Close()
end); an:Open(); return an;
end; return ae;
end
function a.Y()
local af = workspace.CurrentCamera
local ah = a.load "q"
local aj = a.load "b"
local ak = aj.New
local al = aj.Tween
local am = a.load "t".New
local an = a.load "j".New
local ao = a.load "u".New
local ap = a.load "v"
local aq = a.load "w"
return function(ar)
local as = {
Title = ar.Title or "TTJY Hub",
Author = ar.Author,
Icon = ar.Icon,
IconSize = ar.IconSize or 22,
IconThemed = ar.IconThemed,
Folder = ar.Folder,
Resizable = ar.Resizable ~= false,
Background = ar.Background,
BackgroundImageTransparency = ar.BackgroundImageTransparency or 0,
ShadowTransparency = ar.ShadowTransparency or 0.7,
User = ar.User or {},
Footer = ar.Footer or {},
Topbar = ar.Topbar or {Height = 52, ButtonsType = "Default"},
Size = ar.Size,
MinSize = ar.MinSize or Vec2(560, 350),
MaxSize = ar.MaxSize or Vec2(850, 560),
TopBarButtonIconSize = ar.TopBarButtonIconSize or 16,
ToggleKey = ar.ToggleKey,
ElementsRadius = ar.ElementsRadius,
Radius = ar.Radius or 16,
Transparent = ar.Transparent or false,
HideSearchBar = ar.HideSearchBar ~= false,
ScrollBarEnabled = ar.ScrollBarEnabled or false,
SideBarWidth = ar.SideBarWidth or 200,
Acrylic = ar.Acrylic or false,
NewElements = ar.NewElements or false,
IgnoreAlerts = ar.IgnoreAlerts or false,
HidePanelBackground = ar.HidePanelBackground or false,
AutoScale = ar.AutoScale ~= false,
OpenButton = ar.OpenButton,
Position = DIM05,
UICorner = nil,
UIPadding = 14,
UIElements = {},
CanDropdown = true,
Closed = false,
Parent = ar.Parent,
Destroyed = false,
IsFullscreen = false,
CanResize = ar.Resizable ~= false,
IsOpenButtonEnabled = true,
CurrentConfig = nil,
ConfigManager = nil,
AcrylicPaint = nil,
CurrentTab = nil,
TabModule = nil,
OnOpenCallback = nil,
OnCloseCallback = nil,
OnDestroyCallback = nil,
IsPC = false,
Gap = 5,
TopBarButtons = {},
AllElements = {},
ElementConfig = {},
PendingFlags = {},
IsToggleDragging = false
}
as.UICorner = as.Radius
as.ElementConfig = {
UIPadding = (as.NewElements and 10 or 13),
UICorner = as.ElementsRadius or (as.NewElements and 23 or 12)
}
local au = as.Size or Dim2(0, 580, 0, 460)
as.Size =
Dim2(
au.X.Scale,
math.clamp(au.X.Offset, as.MinSize.X, as.MaxSize.X),
au.Y.Scale,
math.clamp(au.Y.Offset, as.MinSize.Y, as.MaxSize.Y)
)
if as.Topbar == {} then
as.Topbar = {Height = 52, ButtonsType = "Default"}
end
if as.Folder then
if not isfolder("WindUI/" .. as.Folder) then
makefolder("WindUI/" .. as.Folder)
end
if not isfolder("WindUI/" .. as.Folder .. "/assets") then
makefolder("WindUI/" .. as.Folder .. "/assets")
end
if not isfolder(as.Folder) then
makefolder(as.Folder)
end
if not isfolder(as.Folder .. "/assets") then
makefolder(as.Folder .. "/assets")
end
end
local av =
ak(
"UICorner",
{
CornerRadius = Dim(0, as.UICorner)
}
)
if as.Folder then
as.ConfigManager = aq:Init(as)
end
if as.Acrylic then
local aw, ax = ah.AcrylicPaint {UseAcrylic = as.Acrylic}
as.AcrylicPaint = aw
end
local aw =
ak(
"Frame",
{
Size = Dim2(0, 32, 0, 32),
Position = DIM1010,
AnchorPoint = Vec2(.5, .5),
BackgroundTransparency = 1,
ZIndex = 99,
Active = true
},
{
ak(
"ImageLabel",
{
Size = Dim2(0, 96, 0, 96),
BackgroundTransparency = 1,
Image = (LoaderSettings.ScaryAC and "") or "rbxassetid://120997033468887",
Position = Dim2(0.5, -16, 0.5, -16),
AnchorPoint = VEC05,
ImageTransparency = 1
}
)
}
)
local ax =
aj.NewRoundFrame(
as.UICorner,
"Squircle",
{
Size = DIM1010,
ImageTransparency = 1,
ImageColor3 = BLACK,
ZIndex = 98,
Active = false
},
{
ak(
"ImageLabel",
{
Size = Dim2(0, 70, 0, 70),
Image = aj.Icon "expand"[1],
ImageRectOffset = aj.Icon "expand"[2].ImageRectPosition,
ImageRectSize = aj.Icon "expand"[2].ImageRectSize,
BackgroundTransparency = 1,
Position = DIM05,
AnchorPoint = VEC05,
ImageTransparency = 1
}
)
}
)
local ay =
aj.NewRoundFrame(
as.UICorner,
"Squircle",
{
Size = DIM1010,
ImageTransparency = 1,
ImageColor3 = BLACK,
ZIndex = 999,
Active = false
}
)
as.UIElements.SideBar =
ak(
"ScrollingFrame",
{
Size = Dim2(
1,
as.ScrollBarEnabled and -3 - (as.UIPadding / 2) or 0,
1,
not as.HideSearchBar and -45 or 0
),
Position = DIM0010,
AnchorPoint = Vec2(0, 1),
BackgroundTransparency = 1,
ScrollBarThickness = 0,
ElasticBehavior = "Never",
CanvasSize = DIM0000,
AutomaticCanvasSize = "Y",
ScrollingDirection = "Y",
ClipsDescendants = true,
VerticalScrollBarPosition = "Left"
},
{
ak(
"Frame",
{
BackgroundTransparency = 1,
AutomaticSize = "Y",
Size = Dim2(1, 0, 0, 0),
Name = "Frame"
},
{
ak(
"UIPadding",
{
PaddingBottom = Dim(0, as.UIPadding / 2)
}
),
ak(
"UIListLayout",
{
SortOrder = "LayoutOrder",
Padding = Dim(0, as.Gap)
}
)
}
),
ak(
"UIPadding",
{
PaddingLeft = Dim(0, as.UIPadding / 2),
PaddingRight = Dim(0, as.UIPadding / 2)
}
)
}
)
as.UIElements.SideBarContainer =
ak(
"Frame",
{
Size = Dim2(
0,
as.SideBarWidth,
1,
as.User.Enabled and -as.Topbar.Height - 42 - (as.UIPadding * 2) or -as.Topbar.Height
),
Position = Dim2(0, 0, 0, as.Topbar.Height),
BackgroundTransparency = 1,
Visible = true
},
{
ak(
"Frame",
{
Name = "Content",
BackgroundTransparency = 1,
Size = Dim2(1, 0, 1, not as.HideSearchBar and -45 - as.UIPadding / 2 or 0),
Position = DIM0010,
AnchorPoint = Vec2(0, 1)
}
),
as.UIElements.SideBar
}
)
if as.ScrollBarEnabled then
ao(as.UIElements.SideBar, as.UIElements.SideBarContainer.Content, as, 3)
end
as.UIElements.MainBar =
ak(
"Frame",
{
Size = Dim2(1, -as.UIElements.SideBarContainer.AbsoluteSize.X, 1, -as.Topbar.Height),
Position = DIM1010,
AnchorPoint = Vec2(1, 1),
BackgroundTransparency = 1
},
{
aj.NewRoundFrame(
as.UICorner - (as.UIPadding / 2),
"Squircle",
{
Size = DIM1010,
ImageColor3 = WHITE,
ZIndex = 3,
ImageTransparency = 1,
Name = "Background",
Visible = not as.HidePanelBackground
}
),
ak(
"UIPadding",
{
PaddingLeft = Dim(0, as.UIPadding / 2),
PaddingRight = Dim(0, as.UIPadding / 2),
PaddingBottom = Dim(0, as.UIPadding / 2)
}
)
}
)
local az =
ak(
"ImageLabel",
{
Image = (LoaderSettings.ScaryAC and "") or "rbxassetid://8992230677",
ThemeTag = {
ImageColor3 = "WindowShadow"
},
ImageTransparency = 1,
Size = Dim2(1, 120, 1, 116),
Position = Dim2(0, -60, 0, -58),
ScaleType = "Slice",
SliceCenter = Rectn(99, 99, 99, 99),
BackgroundTransparency = 1,
ZIndex = -999999999999999,
Name = "Blur"
}
)
if UIS.TouchEnabled and not UIS.KeyboardEnabled then
as.IsPC = false
elseif UIS.KeyboardEnabled then
as.IsPC = true
else
as.IsPC = nil
end
local aA
if as.User then
local function GetUserThumb()
local aB, aC = Players:GetUserThumbnailAsync(
as.User.Anonymous and 1 or selff.UserId,
Enum.ThumbnailType.HeadShot,
Enum.ThumbnailSize.Size420x420
)
return aB
end
aA =
ak(
"TextButton",
{
Size = Dim2(
0,
(as.UIElements.SideBarContainer.AbsoluteSize.X) - (as.UIPadding / 2),
0,
42 + (as.UIPadding)
),
Position = Dim2(0, as.UIPadding / 2, 1, -(as.UIPadding / 2)),
AnchorPoint = Vec2(0, 1),
BackgroundTransparency = 1,
Visible = as.User.Enabled or false
},
{
aj.NewRoundFrame(
as.UICorner - (as.UIPadding / 2),
"SquircleOutline",
{
Size = DIM1010,
ThemeTag = {
ImageColor3 = "Text"
},
ImageTransparency = 1,
Name = "Outline"
},
{
ak(
"UIGradient",
{
Rotation = 78,
Color = CSnew {
CSKnew(0.0, WHITE),
CSKnew(0.5, WHITE),
CSKnew(1.0, WHITE)
},
Transparency = NSnew {
NSKnew(0.0, 0.1),
NSKnew(0.5, 1),
NSKnew(1.0, 0.1)
}
}
)
}
),
aj.NewRoundFrame(
as.UICorner - (as.UIPadding / 2),
"Squircle",
{
Size = DIM1010,
ThemeTag = {
ImageColor3 = "Text"
},
ImageTransparency = 1,
Name = "UserIcon"
},
{
ak(
"ImageLabel",
{
Image = GetUserThumb(),
BackgroundTransparency = 1,
Size = Dim2(0, 42, 0, 42),
ThemeTag = {
BackgroundColor3 = "Text"
},
BackgroundTransparency = .93
},
{
ak(
"UICorner",
{
CornerRadius = Dim(1, 0)
}
)
}
),
ak(
"Frame",
{
AutomaticSize = "XY",
BackgroundTransparency = 1
},
{
ak(
"TextLabel",
{
Text = as.User.Anonymous and "Anonymous" or
game.Players.LocalPlayer.DisplayName,
TextSize = 17,
ThemeTag = {
TextColor3 = "Text"
},
FontFace = Fnew(aj.Font, Enum.FontWeight.SemiBold),
AutomaticSize = "Y",
BackgroundTransparency = 1,
Size = Dim2(1, -27, 0, 0),
TextTruncate = "AtEnd",
TextXAlignment = "Left",
Name = "DisplayName"
}
),
ak(
"TextLabel",
{
Text = as.User.Anonymous and "anonymous" or
game.Players.LocalPlayer.Name,
TextSize = 15,
TextTransparency = .6,
ThemeTag = {
TextColor3 = "Text"
},
FontFace = Fnew(aj.Font, Enum.FontWeight.Medium),
AutomaticSize = "Y",
BackgroundTransparency = 1,
Size = Dim2(1, -27, 0, 0),
TextTruncate = "AtEnd",
TextXAlignment = "Left",
Name = "UserName"
}
),
ak(
"UIListLayout",
{
Padding = Dim(0, 4),
HorizontalAlignment = "Left"
}
)
}
),
ak(
"UIListLayout",
{
Padding = Dim(0, as.UIPadding),
FillDirection = "Horizontal",
VerticalAlignment = "Center"
}
),
ak(
"UIPadding",
{
PaddingLeft = Dim(0, as.UIPadding / 2),
PaddingRight = Dim(0, as.UIPadding / 2)
}
)
}
)
}
)
function as.User.Enable(aB)
as.User.Enabled = true
al(
as.UIElements.SideBarContainer,
.25,
{Size = Dim2(0, as.SideBarWidth, 1, -as.Topbar.Height - 42 - (as.UIPadding * 2))},
Enum.EasingStyle.Quint,
Enum.EasingDirection.Out
):Play()
aA.Visible = true
end
function as.User.Disable(aB)
as.User.Enabled = false
TwCreate(TweenService, as.UIElements.SideBarContainer, TWI_Q_025,
{Size = Dim2(0, as.SideBarWidth, 1, -as.Topbar.Height)}
):Play();
aA.Visible = false;
end;
function as.User.SetAnonymous(aB, aC)
if aC ~= false then
aC = true
end
as.User.Anonymous = aC
aA.UserIcon.ImageLabel.Image = GetUserThumb()
aA.UserIcon.Frame.DisplayName.Text = aC and "Anonymous" or selff.DisplayName
aA.UserIcon.Frame.UserName.Text = aC and "anonymous" or selff.Name
end
if as.User.Enabled then
as.User:Enable()
else
as.User:Disable()
end
if as.User.Callback then
aj.AddSignal(
aA.MouseButton1Click,
function()
as.User.Callback()
end
)
aj.AddSignal(
aA.MouseEnter,
function()
al(aA.UserIcon, 0.04, {ImageTransparency = .95}):Play()
al(aA.Outline, 0.04, {ImageTransparency = .85}):Play()
end
)
aj.AddSignal(
aA.InputEnded,
function()
al(aA.UserIcon, 0.04, {ImageTransparency = 1}):Play()
al(aA.Outline, 0.04, {ImageTransparency = 1}):Play()
end
)
end
end
local aB
local aC
local aD = false
local aE
local aF = typeof(as.Background) == "string" and str.match(as.Background, "^video:(.+)") or nil
local b =
typeof(as.Background) == "string" and not aF and str.match(as.Background, "^https?://.+") or nil
local function GetImageExtension(d)
local f = d:match "%.(%w+)$" or d:match "%.(%w+)%?"
if f then
f = f:lower()
if f == "jpg" or f == "jpeg" or f == "png" or f == "webp" then
return "." .. f
end
end
return ".png"
end
if typeof(as.Background) == "string" and aF then
aD = true
if str.find(aF, "http") then
local d = as.Folder .. "/assets/." .. aj.SanitizeFilename(aF) .. ".webm"
if not isfile(d) then
local f, g =
pcall(
function()
local f = Request {Url = aF, Method = "GET", Headers = {["User-Agent"] = "Roblox/Exploit"}}
writefile(d, f.Body)
end
)
if not f then
warn("[ WindUI.Window.Background ] Failed to download video: " .. tostring(g))
return
end
end
local f, g =
pcall(
function()
return getcustomasset(d)
end
)
if not f then
warn("[ WindUI.Window.Background ] Failed to load custom asset: " .. tostring(g))
return
end
warn "[ WindUI.Window.Background ] VideoFrame may not work with custom video"
aF = g
end
aE =
ak(
"VideoFrame",
{
BackgroundTransparency = 1,
Size = DIM1010,
Video = aF,
Looped = true,
Volume = 0
},
{
ak(
"UICorner",
{
CornerRadius = Dim(0, as.UICorner)
}
)
}
)
aE:Play()
elseif b then
local d = as.Folder .. "/assets/." .. aj.SanitizeFilename(b) .. GetImageExtension(b)
if not isfile(d) then
local f, g =
pcall(
function()
local f = Request {Url = b, Method = "GET", Headers = {["User-Agent"] = "Roblox/Exploit"}}
writefile(d, f.Body)
end
)
if not f then
warn("[ Window.Background ] Failed to download image: " .. tostring(g))
return
end
end
local f, g =
pcall(
function()
return getcustomasset(d)
end
)
if not f then
warn("[ Window.Background ] Failed to load custom asset: " .. tostring(g))
return
end
aE =
ak(
"ImageLabel",
{
BackgroundTransparency = 1,
Size = DIM1010,
Image = g,
ImageTransparency = 0,
ScaleType = "Crop"
},
{
ak(
"UICorner",
{
CornerRadius = Dim(0, as.UICorner)
}
)
}
)
elseif as.Background then
aE =
ak(
"ImageLabel",
{
BackgroundTransparency = 1,
Size = DIM1010,
Image = typeof(as.Background) == "string" and as.Background or "",
ImageTransparency = 1,
ScaleType = "Crop"
},
{
ak(
"UICorner",
{
CornerRadius = Dim(0, as.UICorner)
}
)
}
)
end
local d =
aj.NewRoundFrame(
99,
"Squircle",
{
ImageTransparency = .8,
ImageColor3 = WHITE,
Size = Dim2(0, 0, 0, 4),
Position = Dim2(0.5, 0, 1, 4),
AnchorPoint = Vec2(0.5, 0)
},
{
ak(
"TextButton",
{
Size = Dim2(1, 12, 1, 12),
BackgroundTransparency = 1,
Position = DIM05,
AnchorPoint = VEC05,
Active = true,
ZIndex = 99,
Name = "Frame"
}
)
}
)
function createAuthor(f)
return ak(
"TextLabel",
{
Text = f,
FontFace = Fnew(aj.Font, Enum.FontWeight.Medium),
BackgroundTransparency = 1,
TextTransparency = 0.35,
AutomaticSize = "XY",
Parent = as.UIElements.Main and as.UIElements.Main.Main.Topbar.Left.Title,
TextXAlignment = "Left",
TextSize = 13,
LayoutOrder = 2,
ThemeTag = {
TextColor3 = "WindowTopbarAuthor"
},
Name = "Author"
}
)
end
local f
local g
if as.Author then
f = createAuthor(as.Author)
end
local h =
ak(
"TextLabel",
{
Text = as.Title,
FontFace = Fnew(aj.Font, Enum.FontWeight.SemiBold),
BackgroundTransparency = 1,
AutomaticSize = "X",
Name = "Title",
TextXAlignment = "Center",
Size = Dim2(1,0,1,0),
TextSize = 20,
ThemeTag = {
TextColor3 = "WindowTopbarTitle"
}
}
)
as.UIElements.Main =
ak(
"Frame",
{
Size = as.Size,
Position = as.Position,
BackgroundTransparency = 1,
Parent = ar.Parent,
AnchorPoint = VEC05,
Active = true
},
{
ar.WindUI.UIScaleObj,
as.AcrylicPaint and as.AcrylicPaint.Frame or nil,
az,
aj.NewRoundFrame(
as.UICorner,
"Squircle",
{
ImageTransparency = 1,
Size = Dim2(1, 0, 1, -240),
AnchorPoint = VEC05,
Position = DIM05,
Name = "Background",
ThemeTag = {
ImageColor3 = "WindowBackground"
}
},
{
aE,
d,
aw
}
),
UIStroke,
av,
ax,
ay,
ak(
"Frame",
{
Size = DIM1010,
BackgroundTransparency = 1,
Name = "Main",
Visible = false,
ZIndex = 97
},
{
ak(
"UICorner",
{
CornerRadius = Dim(0, as.UICorner)
}
),
as.UIElements.SideBarContainer,
as.UIElements.MainBar,
aA,
aC,
ak(
"Frame",
{
Size = Dim2(1, 0, 0, as.Topbar.Height),
BackgroundTransparency = 1,
BackgroundColor3 = fromRGB(50, 50, 50),
Name = "Topbar"
},
{
aB,
ak(
"Frame",
{
AutomaticSize = "X",
Size = DIM0010,
BackgroundTransparency = 1,
Name = "Left"
},
{
ak(
"UIListLayout",
{
Padding = Dim(0, as.UIPadding + 4),
SortOrder = "LayoutOrder",
FillDirection = "Horizontal",
VerticalAlignment = "Center"
}
),
ak(
"Frame",
{
AutomaticSize = "XY",
BackgroundTransparency = 1,
Name = "Title",
Size = DIM0010,
LayoutOrder = 2
},
{
ak(
"UIListLayout",
{
Padding = Dim(0, 0),
SortOrder = "LayoutOrder",
FillDirection = "Vertical",
VerticalAlignment = "Center"
}
),
h,
f
}
),
ak(
"UIPadding",
{
PaddingLeft = Dim(0, 4)
}
)
}
),
ak(
"ScrollingFrame",
{
Name = "Center",
BackgroundTransparency = 1,
AutomaticSize = "Y",
ScrollBarThickness = 0,
ScrollingDirection = "X",
AutomaticCanvasSize = "X",
CanvasSize = DIM0000,
Size = DIM0010,
AnchorPoint = Vec2(0, 0.5),
Position = Dim2(0, 0, 0.5, 0),
Visible = false
},
{
ak(
"UIListLayout",
{
FillDirection = "Horizontal",
VerticalAlignment = "Center",
HorizontalAlignment = "Left",
Padding = Dim(0, as.UIPadding / 2)
}
)
}
),
ak(
"Frame",
{
AutomaticSize = "XY",
BackgroundTransparency = 1,
Position = Dim2(
as.Topbar.ButtonsType == "Default" and 1 or 0,
0,
0.5,
0
),
AnchorPoint = Vec2(
as.Topbar.ButtonsType == "Default" and 1 or 0,
0.5
),
Name = "Right"
},
{
ak(
"UIListLayout",
{
Padding = Dim(0, as.Topbar.ButtonsType == "Default" and 9 or 0),
FillDirection = "Horizontal",
SortOrder = "LayoutOrder"
}
)
}
),
ak(
"UIPadding",
{
PaddingTop = Dim(0, as.UIPadding),
PaddingLeft = Dim(
0,
as.Topbar.ButtonsType == "Default" and as.UIPadding or as.UIPadding - 2
),
PaddingRight = Dim(0, 8),
PaddingBottom = Dim(0, as.UIPadding)
}
)
}
)
}
)
}
)
as.UIElements.Main.Main.Topbar.UIPadding:Destroy()
as.UIElements.Main.Main.Topbar.Left.Size = Dim2(1,0,1,0);
as.UIElements.Main.Main.Topbar.Left.AnchorPoint = Vec2(0.5,0.5);
as.UIElements.Main.Main.Topbar.Left.Position = Dim2(0.5,0,0.5,0);
as.UIElements.Main.Main.Topbar.Left.UIListLayout:Destroy();
as.UIElements.Main.Main.Topbar.Left.Title.Position = Dim2(0.5,0,0,0);
as.UIElements.Main.Main.Topbar.Left.Title.AnchorPoint = Vec2(0.5,0);
as.UIElements.Main.Main.Topbar.Right.Position = Dim2(1, -90, 0.5, 0);
aj.AddSignal(
as.UIElements.Main.Main.Topbar.Left:GetPropertyChangedSignal "AbsoluteSize",
function()
local j = 0
local l =
as.UIElements.Main.Main.Topbar.Right.UIListLayout.AbsoluteContentSize.X / ar.WindUI.UIScale
j = as.UIElements.Main.Main.Topbar.Left.AbsoluteSize.X / ar.WindUI.UIScale
if as.Topbar.ButtonsType ~= "Default" then
j = j + l + as.UIPadding - 4
end
as.UIElements.Main.Main.Topbar.Center.Position =
Dim2(0, j + (as.UIPadding / ar.WindUI.UIScale), 0.5, 0)
as.UIElements.Main.Main.Topbar.Center.Size =
Dim2(1, -j - l - ((as.UIPadding * 2) / ar.WindUI.UIScale), 1, 0)
end
)
--[[
if as.Topbar.ButtonsType ~= "Default" then
aj.AddSignal(
as.UIElements.Main.Main.Topbar.Right:GetPropertyChangedSignal "AbsoluteSize",
function()
as.UIElements.Main.Main.Topbar.Left.Position =
Dim2(
0,
(as.UIElements.Main.Main.Topbar.Right.AbsoluteSize.X / ar.WindUI.UIScale) + as.UIPadding - 4,
0,
0
)
end
)
end
--]]
function as.CreateTopbarButton(j, l, m, p, r, u, v)
local x =
aj.Image(
m,
m,
0,
as.Folder,
"WindowTopbarIcon",
as.Topbar.ButtonsType == "Default" and true or false,
u,
"WindowTopbarButtonIcon"
)
x.Size =
as.Topbar.ButtonsType == "Default" and
Dim2(0, as.TopBarButtonIconSize, 0, as.TopBarButtonIconSize) or
DIM0000
x.AnchorPoint = VEC05
x.Position = DIM05
x.ImageLabel.ImageTransparency = as.Topbar.ButtonsType == "Default" and 0 or 1
if as.Topbar.ButtonsType ~= "Default" then
x.ImageLabel.ImageColor3 = aj.GetTextColorForHSB(v)
end
local B =
aj.NewRoundFrame(
as.Topbar.ButtonsType == "Default" and as.UICorner - (as.UIPadding / 2) or 999,
"Squircle",
{
Size = as.Topbar.ButtonsType == "Default" and
Dim2(0, as.Topbar.Height - 16, 0, as.Topbar.Height - 16) or
Dim2(0, 14, 0, 14),
LayoutOrder = r or 999,
Parent = as.Topbar.ButtonsType == "Default" and as.UIElements.Main.Main.Topbar.Right or nil,
ZIndex = 9999,
AnchorPoint = VEC05,
Position = DIM05,
ImageColor3 = as.Topbar.ButtonsType ~= "Default" and (v or fromHex "#ff3030") or nil,
ThemeTag = as.Topbar.ButtonsType == "Default" and
{
ImageColor3 = "Text"
} or
nil,
ImageTransparency = as.Topbar.ButtonsType == "Default" and 1 or 0
},
{
aj.NewRoundFrame(
as.Topbar.ButtonsType == "Default" and as.UICorner - (as.UIPadding / 2) or 999,
"SquircleOutline",
{
Size = DIM1010,
ThemeTag = {
ImageColor3 = "Black"
},
ImageTransparency = as.Topbar.ButtonsType == "Default" and 1 or .8,
Name = "Outline"
},
{
as.Topbar.ButtonsType == "Default" and
ak(
"UIGradient",
{
Rotation = 45,
Color = CSnew {
CSKnew(0.0, WHITE),
CSKnew(0.5, WHITE),
CSKnew(1.0, WHITE)
},
Transparency = NSnew {
NSKnew(0.0, 0.1),
NSKnew(0.5, 1),
NSKnew(1.0, 0.1)
}
}
) or
nil
}
),
x
},
true
)
ak(
"Frame",
{
Size = Dim2(0, 24, 0, 24),
BackgroundTransparency = 1,
Parent = as.Topbar.ButtonsType ~= "Default" and as.UIElements.Main.Main.Topbar.Right or nil,
LayoutOrder = r or 999
},
{
as.Topbar.ButtonsType ~= "Default" and B or nil
}
)
as.TopBarButtons[100 - r] = {
Name = l,
Object = B
}
aj.AddSignal(
B.MouseButton1Click,
function()
p()
end
)
aj.AddSignal(B.MouseEnter, function()
if as.Topbar.ButtonsType == "Default" then
TwCreate(TweenService, B, TWI_015, {ImageTransparency = 0.93}):Play();
TwCreate(TweenService, B.Outline, TWI_015, {ImageTransparency = 0.75}):Play();
else
TwCreate(TweenService, x.ImageLabel, TWI_Q_01,
{ImageTransparency = 0}
):Play(); TwCreate(TweenService, x, TWI_Q_01,
{Size = Dim2(0, 11, 0, 11)}
):Play();
end;
end); aj.AddSignal(B.MouseLeave, function()
if as.Topbar.ButtonsType == "Default" then
TwCreate(TweenService, B, TWI_01, {ImageTransparency = 1}):Play();
TwCreate(TweenService, B.Outline, TWI_01, {ImageTransparency = 1}):Play();
else
TwCreate(TweenService, x.ImageLabel, TWI_Q_01,
{ImageTransparency = 1}
):Play(); TwCreate(TweenService, x, TWI_Q_01, {Size = DIM0000}):Play();
end;
end); return B;
end; local j = aj.Drag( as.UIElements.Main, {as.UIElements.Main.Main.Topbar, d.Frame}, function(j, l)
if not as.Closed then
if j and l == d.Frame then
TwCreate(TweenService, d, TWI_01, {ImageTransparency = 0.35}):Play();
else
TwCreate(TweenService, d, TwInfo(0.2), {ImageTransparency = 0.8}):Play();
end; as.Position = as.UIElements.Main.Position; as.Dragging = j;
end;
end); if not aD and as.Background and typeof(as.Background) == "table" then
local l = ak("UIGradient"); for m, p in next, as.Background do l[m] = p; end;
as.UIElements.BackgroundGradient = aj.NewRoundFrame(as.UICorner, "Squircle", {Size = DIM1010, Parent = as.UIElements.Main.Background, ImageTransparency = as.Transparent and ar.WindUI.TransparencyValue or 0 }, {l})
end; as.OpenButtonMain = a.load("x").New(as);
tk.spawn(function()
if as.Icon then
local l = ak("Frame", {Size = Dim2(0, 22, 0, 22),BackgroundTransparency = 1, Parent = as.UIElements.Main.Main.Topbar.Left});
g = aj.Image(as.Icon, as.Title, 0, as.Folder, "Window", true, as.IconThemed, "WindowTopbarIcon")
g.Parent = l g.Size = Dim2(0, as.IconSize, 0, as.IconSize)
g.Position = DIM05 g.AnchorPoint = VEC05
as.OpenButtonMain:SetIcon(as.Icon);
else
as.OpenButtonMain:SetIcon(as.Icon);
end;
end); function as.SetToggleKey(l, m) as.ToggleKey = m; end;
function as.SetTitle(l, m) as.Title = m; h.Text = m; end;
function as.SetAuthor(l, m)
as.Author = m; if not f then
f = createAuthor(as.Author);
end; f.Text = m;
end; function as.SetBackgroundImage(l, m)
as.UIElements.Main.Background.ImageLabel.Image = m;
end; function as.SetBackgroundImageTransparency(l, m)
if aE and aE:IsA("ImageLabel") then
aE.ImageTransparency = math.floor(m * 10 + 0.5) / 10;
end; as.BackgroundImageTransparency = math.floor(m * 10 + 0.5) / 10;
end; function as.SetBackgroundTransparency(l, m)
local p = math.floor(tonumber(m) * 10 + 0.5) / 10;
ar.WindUI.TransparencyValue = p;
as:ToggleTransparency(p > 0);
end; local l, m = nil, nil;
aj.Icon "minimize"; aj.Icon "maximize";
as:CreateTopbarButton( "Fullscreen", "maximize", function()
as:ToggleFullscreen()
end, (as.Topbar.ButtonsType == "Default" and 998 or 999),
nil, fromHex"#60C762"
); function as.ToggleFullscreen(p)
local r = as.IsFullscreen; j:Set(r);
if not r then
l = as.UIElements.Main.Position;
m = as.UIElements.Main.Size;
as.CanResize = false;
else
if as.Resizable then
as.CanResize = true;
end;
end; TwCreate(TweenService, as.UIElements.Main, TWI_Q_045,
{Size = r and m or Dim2(1, -20, 1, -72)}
):Play(); TwCreate(TweenService, as.UIElements.Main, TWI_Q_045,
{Position = r and l or Dim2(0.5, 0, 0.5, 26)}
):Play(); as.IsFullscreen = not r;
end; as:CreateTopbarButton("Minimize", "minus", function()
as:Close()
end, (as.Topbar.ButtonsType == "Default" and 997 or 998),
nil, fromHex "#F4C948"
); local clo = as.UIElements.Main.Main.Topbar.Right:Clone();
clo.Frame:Destroy(); clo.Position = Dim2(0,10,0.5,0)
clo.Parent = as.UIElements.Main.Main.Topbar;
clo.Frame.ImageButton.Image = TTJYLogo;
clo.Frame.ImageButton.ImageColor3 = fromRGB(255,255,255);
clo.Frame.ImageButton.Size = Dim2(1.5,0,1.5,0);
as.UIElements.SideBar.Parent.Name = "Sidebar";
clo.Frame.ImageButton.Outline.ImageColor3 = fromRGB(255,255,255);
local targetobj, info = clo.Frame.ImageButton.Outline, TwInfo(0.6, Enum.EasingStyle.Quint, Enum.EasingDirection.Out)
local t1 = TwCreate(TweenService, targetobj, info, { ImageTransparency = 1 });
local t0 = TwCreate(TweenService, targetobj, info, { ImageTransparency = 0 });
tk.spawn(function()
while true do
t1:Play(); t1.Completed:Wait();
t0:Play(); t0.Completed:Wait();
end
end);
clo.Frame.ImageButton.MouseButton1Click:Connect(function()
if as.UIElements.SideBar.Parent.Visible then
as.UIElements.SideBar.Parent.Visible = false;
as.UIElements.Main.Main.Frame.Size = Dim2(1,0,1,-44);
else
as.UIElements.SideBar.Parent.Visible = true;
as.UIElements.Main.Main.Frame.Size = Dim2(1, -200, 1, -44);
end;
end);
function as.OnOpen(p, r)
as.OnOpenCallback = r
end
function as.OnClose(p, r)
as.OnCloseCallback = r
end
function as.OnDestroy(p, r)
as.OnDestroyCallback = r
end
if ar.WindUI.UseAcrylic then
as.AcrylicPaint.AddParent(as.UIElements.Main)
end
function as.SetIconSize(p, r)
local u
if typeof(r) == "number" then
u = Dim2(0, r, 0, r)
as.IconSize = r
elseif typeof(r) == "UDim2" then
u = r
as.IconSize = r.X.Offset
end
if g then
g.Size = u
end
end
function as.Open(p)
tk.spawn(
function()
if as.OnOpenCallback then
tk.spawn(
function()
aj.SafeCallback(as.OnOpenCallback)
end
)
end
twait(.06)
as.Closed = false
if not FindFirstChild(as.UIElements.Main, "Background") then
return aj.DisconnectAll();
end;
TwCreate(TweenService, as.UIElements.Main.Background, TWI_Q_02,
{ImageTransparency = as.Transparent and ar.WindUI.TransparencyValue or 0}
):Play();
if as.UIElements.BackgroundGradient then
TwCreate(TweenService, as.UIElements.BackgroundGradient, TWI_Q_02,
{ImageTransparency = 0
}):Play()
end;
TwCreate(TweenService, as.UIElements.Main.Background, TwInfo(0.4, Enum.EasingStyle.Exponential, Enum.EasingDirection.Out),
{Size = DIM1010
}):Play();
if aE then
if aE:IsA("VideoFrame") then
aE.Visible = true;
else
TwCreate(TweenService, aE, TWI_Q_02,
{ImageTransparency = as.BackgroundImageTransparency}
):Play();
end;
end;
if as.OpenButtonMain and as.IsOpenButtonEnabled then as.OpenButtonMain:Visible(false); end;
TwCreate(TweenService, az, TWI_Q_025,
{ImageTransparency = as.ShadowTransparency}
):Play(); if UIStroke then
TwCreate(TweenService, UIStroke, TWI_Q_025,
{Transparency = 0.8}
):Play();
end; tk.spawn(function()
twait(0.3)
TwCreate(TweenService, d, TwInfo(0.45, Enum.EasingStyle.Exponential, Enum.EasingDirection.Out),
{Size = Dim2(0, 200, 0, 4), ImageTransparency = 0.8}
):Play(); j:Set(true); twait(.45);
if as.Resizable then
TwCreate(TweenService, aw.ImageLabel, TwInfo(0.45, Enum.EasingStyle.Exponential, Enum.EasingDirection.Out),
{ImageTransparency = 0.8}
):Play(); as.CanResize = true;
end;
end);
as.CanDropdown = true
as.UIElements.Main.Visible = true
tk.spawn(
function()
twait(.05)
as.UIElements.Main:WaitForChild "Main".Visible = true
ar.WindUI:ToggleAcrylic(true)
end
)
end
)
end
function as.Close(p)
local r = {}
if as.OnCloseCallback then
tk.spawn(
function()
aj.SafeCallback(as.OnCloseCallback)
end
)
end
ar.WindUI:ToggleAcrylic(false)
as.UIElements.Main:WaitForChild "Main".Visible = false
as.CanDropdown = false; as.Closed = true;
TwCreate(TweenService, as.UIElements.Main.Background, TwInfo(0.32, Enum.EasingStyle.Quint,Enum.EasingDirection.InOut),
{ImageTransparency = 1}
):Play(); if as.UIElements.BackgroundGradient then
TwCreate(TweenService, as.UIElements.BackgroundGradient, TwInfo(0.32, Enum.EasingStyle.Quint, Enum.EasingDirection.InOut),
{ImageTransparency = 1}
):Play();
end; TwCreate(TweenService, as.UIElements.Main.Background, TwInfo(0.4, Enum.EasingStyle.Exponential, Enum.EasingDirection.InOut),
{Size = Dim2(1, 0, 1, -240)}
):Play(); if aE then
if aE:IsA("VideoFrame") then
aE.Visible = false;
else
TwCreate(TweenService, aE, TwInfo(0.3, Enum.EasingStyle.Quint, Enum.EasingDirection.Out),
{ImageTransparency = 1}
):Play();
end;
end; TwCreate(TweenService, az, TWI_Q_025, {ImageTransparency = 1}):Play();
if UIStroke then al(UIStroke, TWI_Q_025, {Transparency = 1}):Play(); end;
TwCreate(TweenService, d, TwInfo(0.3, Enum.EasingStyle.Exponential, Enum.EasingDirection.InOut),
{Size = Dim2(0, 0, 0, 4), ImageTransparency = 1}
):Play(); TwCreate(TweenService, aw.ImageLabel, TwInfo(0.3, Enum.EasingStyle.Exponential, Enum.EasingDirection.Out), {ImageTransparency = 1}):Play();
j:Set(false); as.CanResize = false;
tk.spawn(function()
twait(0.4); as.UIElements.Main.Visible = false;
if as.OpenButtonMain and not as.Destroyed and not as.IsPC and as.IsOpenButtonEnabled then
as.OpenButtonMain:Visible(true);
end;
end); function r.Destroy(u)
tk.spawn(function()
if as.OnDestroyCallback then
tk.spawn(function()
aj.SafeCallback(as.OnDestroyCallback);
end);
end; if as.AcrylicPaint and as.AcrylicPaint.Model then
as.AcrylicPaint.Model:Destroy();
end; as.Destroyed = true; twait(0.4);
ar.WindUI.ScreenGui:Destroy();
ar.WindUI.NotificationGui:Destroy();
ar.WindUI.DropdownGui:Destroy()
ar.WindUI.TooltipGui:Destroy();
aj.DisconnectAll();
return;
end);
end; return r;
end; function as.Destroy(p)
return as:Close():Destroy();
end; function as.Toggle(p)
if as.Closed then
as:Open();
else
as:Close();
end;
end; function as.ToggleTransparency(p, r)
as.Transparent = r; ar.WindUI.Transparent = r;
as.UIElements.Main.Background.ImageTransparency = r and ar.WindUI.TransparencyValue or 0;
as.UIElements.MainBar.Background.ImageTransparency = r and 0.97 or 0.95;
end; function as.LockAll(p)
for r, u in next, as.AllElements do
if u.Lock then
u:Lock();
end;
end;
end; function as.UnlockAll(p)
for r, u in next, as.AllElements do
if u.Unlock then
u:Unlock();
end;
end;
end; function as.GetLocked(p)
local r = {}; for u, v in next, as.AllElements do
if v.Locked then
tble.insert(r, v);
end;
end; return r
end; function as.GetUnlocked(p)
local r = {}; for u, v in next, as.AllElements do
if v.Locked == false then
tble.insert(r, v);
end;
end; return r;
end; function as.GetUIScale(p, r)
return ar.WindUI.UIScale;
end; function as.SetUIScale(p, r)
ar.WindUI.UIScale = r;
TwCreate(TweenService, ar.WindUI.UIScaleObj, TWI_Q_02, {Scale = r}):Play();
return as;
end; function as.SetToTheCenter(p)
TwCreate(TweenService, as.UIElements.Main, TWI_Q_045,
{Position = DIM05}
):Play(); return as;
end; function as.SetCurrentConfig(p, r)
as.CurrentConfig = r;
end; do
local p, r, u = 40, af.ViewportSize, as.UIElements.Main.AbsoluteSize;
if not as.IsFullscreen and as.AutoScale then
local v,x = r.X - (p * 2), r.Y - (p * 2);
local B,C = v / u.X, x / u.Y;
local F, G, H = math.min(B, C), 0.3, 1.0;
local J = math.clamp(F, G, H);
local L, M = as:GetUIScale() or 1, 0.05;
if math.abs(J - L) > M then
as:SetUIScale(J);
end;
end;
end; if as.OpenButtonMain and as.OpenButtonMain.Button then
aj.AddSignal(as.OpenButtonMain.Button.TextButton.MouseButton1Click, function()
as:Open();
end);
end; aj.AddSignal(UIS.InputBegan, function(p, r)
if r or as.Destroyed then return; end; if as.ToggleKey then
if p.KeyCode == as.ToggleKey then
as:Toggle();
end;
end;
end); tk.spawn(function()
as:Open();
end); function as.EditOpenButton(p, r)
return as.OpenButtonMain:Edit(r);
end; if as.OpenButton and typeof(as.OpenButton) == "table" then
as:EditOpenButton(as.OpenButton);
end; local p = a.load "U"; local r = a.load "V";
local u = p.Init(as, ar.WindUI, ar.WindUI.TooltipGui);
u:OnChange(function(v)
as.CurrentTab = v;
end); as.TabModule = p
function as.Tab(v, x)
x.Parent = as.UIElements.SideBar.Frame
return u.New(x, ar.WindUI.UIScale);
end; function as.SelectTab(v, x)
u:SelectTab(x);
end; function as.Section(v, x)
return r.New(x, as.UIElements.SideBar.Frame, as.Folder, ar.WindUI.UIScale, as);
end; function as.IsResizable(v, x)
as.Resizable = x;
as.CanResize = x;
end; function as.Divider(v)
local x = ak("Frame",{
Size = Dim2(1, 0, 0, 1),
Position = Dim2(0.5, 0, 0, 0),
AnchorPoint = Vec2(0.5, 0),
BackgroundTransparency = .9,
ThemeTag = {
BackgroundColor3 = "Text"
}
}); local B = ak("Frame", {
Parent = as.UIElements.SideBar.Frame,
Size = Dim2(1, -7, 0, 5),
BackgroundTransparency = 1
}, {x}); return B
end; local v = a.load "l".Init(as, nil);
function as.Dialog(x, B)
local C, F = {
Title = B.Title or "Dialog",
Width = B.Width or 320,
Content = B.Content,
Buttons = B.Buttons or {},
TextPadding = 10
}, v.Create(false);
F.UIElements.Main.Size = Dim2(0, C.Width, 0, 0)
local G = ak( "Frame", {
Size = Dim2(1, 0, 0, 0),
AutomaticSize = "Y",
BackgroundTransparency = 1,
Parent = F.UIElements.Main
},{
ak("UIListLayout", {
FillDirection = "Horizontal",
Padding = Dim(0, F.UIPadding),
VerticalAlignment = "Center"
}), ak("UIPadding", {
PaddingTop = Dim(0, C.TextPadding / 2),
PaddingLeft = Dim(0, C.TextPadding / 2),
PaddingRight = Dim(0, C.TextPadding / 2)
});
}); local H = nil; if B.Icon then
H = aj.Image(B.Icon, C.Title .. ":" .. B.Icon, 0, as, "Dialog", true, B.IconThemed);
H.Size = Dim2(0, 22, 0, 22);
H.Parent = G;
end; F.UIElements.UIListLayout = ak("UIListLayout", {
Padding = Dim(0, 12),
FillDirection = "Vertical",
HorizontalAlignment = "Left",
Parent = F.UIElements.Main
}); ak("UISizeConstraint", {
MinSize = Vec2(180, 20),
MaxSize = Vec2(400, math.huge),
Parent = F.UIElements.Main
}); F.UIElements.Title = ak("TextLabel", {
Text = C.Title, TextSize = 20,
FontFace = Fnew(aj.Font, Enum.FontWeight.SemiBold),
TextXAlignment = "Left", TextWrapped = true, RichText = true,
Size = Dim2(1, H and -26 - F.UIPadding or 0, 0, 0),
AutomaticSize = "Y",
ThemeTag = {TextColor3 = "Text"},
BackgroundTransparency = 1,
Parent = G
}); if C.Content then
ak("TextLabel", {
Text = C.Content,
TextSize = 18,
TextTransparency = .4,
TextWrapped = true,
RichText = true,
FontFace = Fnew(aj.Font, Enum.FontWeight.Medium),
TextXAlignment = "Left",
Size = Dim2(1, 0, 0, 0),
AutomaticSize = "Y",
LayoutOrder = 2,
ThemeTag = {
TextColor3 = "Text"
},
BackgroundTransparency = 1,
Parent = F.UIElements.Main
}, {
ak("UIPadding", {
PaddingLeft = Dim(0, C.TextPadding / 2),
PaddingRight = Dim(0, C.TextPadding / 2),
PaddingBottom = Dim(0, C.TextPadding / 2)
});
});
end; local J = ak("UIListLayout", {
Padding = Dim(0, 6),
FillDirection = "Horizontal",
HorizontalAlignment = "Right"
}) local L = ak("Frame", {
Size = Dim2(1, 0, 0, 40),
AutomaticSize = "None",
BackgroundTransparency = 1,
Parent = F.UIElements.Main,
LayoutOrder = 4
}, {J}); local M = {} for N, O in next, C.Buttons do
local P = an(O.Title, O.Icon, O.Callback, O.Variant, L, F, false);
tble.insert(M, P);
end; local function CheckButtonsOverflow()
J.FillDirection = Enum.FillDirection.Horizontal;
J.HorizontalAlignment = Enum.HorizontalAlignment.Right;
J.VerticalAlignment = Enum.VerticalAlignment.Center;
L.AutomaticSize = Enum.AutomaticSize.None;
for P, Q in ipairs(M) do
Q.Size = DIM0010;
Q.AutomaticSize = Enum.AutomaticSize.X;
end; twait();
local R,S = J.AbsoluteContentSize.X / ar.WindUI.UIScale, L.AbsoluteSize.X / ar.WindUI.UIScale;
if R > S then
J.FillDirection = Enum.FillDirection.Vertical;
J.HorizontalAlignment = Enum.HorizontalAlignment.Right;
J.VerticalAlignment = Enum.VerticalAlignment.Bottom;
L.AutomaticSize = Enum.AutomaticSize.Y;
for T, U in ipairs(M) do
U.Size = Dim2(1, 0, 0, 40);
U.AutomaticSize = Enum.AutomaticSize.None;
end;
else
local T = S - R; if T > 0 then
local U,V = nil, math.huge;
for W, X in ipairs(M) do
local Y = X.AbsoluteSize.X / ar.WindUI.UIScale;
if Y < V then V = Y; U = X; end;
end; if U then
U.Size = Dim2(0, V + T, 1, 0);
U.AutomaticSize = Enum.AutomaticSize.None;
end;
end;
end;
end; aj.AddSignal(PropChangeSignal(F.UIElements.Main, "AbsoluteSize"), CheckButtonsOverflow);
CheckButtonsOverflow(); twait(); F:Open();
return F;
end; as:CreateTopbarButton("Close", "x", function()
if not as.IgnoreAlerts then
as:SetToTheCenter(); as:Dialog {
Title = "Close Window",
Content = "Do you want to close this window? You will not be able to open it again.",
Buttons = {
{
Title = "Cancel",
Callback = function()
end,
Variant = "Secondary"
},
{
Title = "Close Window",
Callback = function()
as:Destroy()
end,
Variant = "Primary"
}
}
}
else
as:Destroy();
end;
end, (as.Topbar.ButtonsType == "Default" and 999 or 997), nil, fromHex "#F4695F");
function as.Tag(x, B)
if as.UIElements.Main.Main.Topbar.Center.Visible == false then
as.UIElements.Main.Main.Topbar.Center.Visible = true;
end;
return ap:New(B, as.UIElements.Main.Main.Topbar.Center);
end; local function startResizing(x)
if as.CanResize then
isResizing = true; ax.Active = true; initialSize = as.UIElements.Main.Size; initialInputPosition = x.Position;
TwCreate(TweenService, aw.ImageLabel, TWI_01, {ImageTransparency = .35}):Play();
aj.AddSignal(x.Changed, function()
if x.UserInputState == Enum.UserInputState.End then
isResizing = false; ax.Active = false;
TwCreate(TweenService, aw.ImageLabel, TwInfo(0.17), {ImageTransparency = .8}):Play();
end;
end);
end;
end; aj.AddSignal(aw.InputBegan, function(x)
if x.UserInputType == Enum.UserInputType.MouseButton1 or x.UserInputType == Enum.UserInputType.Touch then
if as.CanResize then startResizing(x); end;
end;
end); aj.AddSignal(UIS.InputChanged, function(x)
if x.UserInputType == Enum.UserInputType.MouseMovement or x.UserInputType == Enum.UserInputType.Touch then
if isResizing and as.CanResize then
local B = x.Position - initialInputPosition;
local C = Dim2(0, initialSize.X.Offset + B.X * 2, 0, initialSize.Y.Offset + B.Y * 2);
C = Dim2(C.X.Scale, math.clamp(C.X.Offset, as.MinSize.X, as.MaxSize.X), C.Y.Scale, math.clamp(C.Y.Offset, as.MinSize.Y, as.MaxSize.Y));
as.UIElements.Main.Size = C; as.Size = C;
end;
end;
end); local x, B, C, F = 0, 0.4, nil, 0;
function onDoubleClick() as:SetToTheCenter(); end;
d.Frame.MouseButton1Up:Connect(function()
local G, H = tick(), as.Position;
F = F + 1; if F == 1 then
x = G; C = H; tk.spawn(function()
twait(B); if F == 1 then
F = 0; C = nil;
end;
end);
elseif F == 2 then
if G - x <= B and H == C then
onDoubleClick();
end; F = 0; C = nil; x = 0;
else
F = 1; x = G; C = H;
end;
end); if not as.HideSearchBar then
local G, H = a.load"X", nil;
local J = am("Search", "search", as.UIElements.SideBarContainer, true);
J.Size = Dim2(1, -as.UIPadding / 2, 0, 39); J.Position = Dim2(0, as.UIPadding / 2, 0, 0);
aj.AddSignal(J.MouseButton1Click, function()
if H then return; end;
G.new(as.TabModule, as.UIElements.Main, function()
H = false; if as.Resizable then as.CanResize = true; end;
TwCreate(TweenService, ay, TWI_01, {ImageTransparency = 1}):Play();
ay.Active = false;
end) TwCreate(TweenService, ay, TWI_01, {ImageTransparency = 0.65}):Play();
ay.Active = true; H = true; as.CanResize = false;
end);
end; function as.DisableTopbarButtons(G, H)
for J, L in next, H do
for M, N in next, as.TopBarButtons do
if N.Name == L then
N.Object.Visible = false;
end;
end;
end;
end; return as;
end;
end;
end; local aa = {
Window = nil,
Theme = nil,
Creator = a.load "b",
LocalizationModule = a.load "c",
NotificationModule = a.load "d",
Themes = nil,
Transparent = false,
TransparencyValue = .15,
UIScale = 1,
ConfigManager = nil,
Version = "0.0.0",
OnThemeChangeFunction = nil,
UIScaleObj = nil
}; local al = HttpService:JSONDecode(a.load "i");
if al then aa.Version = al.version; end;
local an = aa.Services; local ar = a.load "q";
local as = protectgui or (syn and syn.protect_gui) or function() end;
local ao = aa.Creator; local ap = ao.New;
local au = gethui and gethui() or (aj or PSG);
local av = ap("UIScale", {Scale = aa.Scale});
aa.UIScaleObj = av; aa.ScreenGui = ap("ScreenGui", {
Name = "WindUI",
Parent = nil,
IgnoreGuiInset = true,
ScreenInsets = "None"
},{ap("Folder",{
Name = "Window"
}),
ap("Folder", {
Name = "KeySystem"
}), ap("Folder", {
Name = "Popups"
}), ap("Folder", {
Name = "ToolTips"
});
}); aa.NotificationGui = ap("ScreenGui", {
Name = "WindUI/Notifications",
Parent = au,
DisplayOrder = 100,
IgnoreGuiInset = true
}); aa.DropdownGui = ap("ScreenGui", {
Name = "WindUI/Dropdowns",
Parent = au,
DisplayOrder = 101,
IgnoreGuiInset = true
}); aa.TooltipGui = ap("ScreenGui", {
Name = "WindUI/Tooltips",
Parent = au,
DisplayOrder = 102,
IgnoreGuiInset = true
}); as(aa.ScreenGui); as(aa.NotificationGui);
as(aa.DropdownGui); as(aa.TooltipGui); ao.Init(aa);
function aa.SetParent(aw, ax)
aa.ScreenGui.Parent = ax;
aa.NotificationGui.Parent = ax;
aa.DropdownGui.Parent = ax;
end; math.clamp(aa.TransparencyValue, 0, 1);
local aw = aa.NotificationModule.Init(aa.NotificationGui);
function aa.Notify(ax, ay)
ay.Holder = aw.Frame; ay.Window = aa.Window;
return aa.NotificationModule.New(ay);
end; function aa.SetNotificationLower(ax, ay)
aw.SetLower(ay);
end; function aa.SetFont(ax, ay)
ao.UpdateFont(ay);
end; function aa.OnThemeChange(ax, ay)
aa.OnThemeChangeFunction = ay;
end; function aa.AddTheme(ax, ay)
aa.Themes[ay.Name] = ay;
return ay;
end; function aa.SetTheme(ax, ay)
if aa.Themes[ay] then
aa.Theme = aa.Themes[ay]; ao.SetTheme(aa.Themes[ay]);
if aa.OnThemeChangeFunction then aa.OnThemeChangeFunction(ay); end;
return aa.Themes[ay];
end; return nil;
end; function aa.GetThemes(ax)
return aa.Themes;
end; function aa.GetCurrentTheme(ax)
return aa.Theme.Name;
end; function aa.GetTransparency(ax)
return aa.Transparent or false;
end; function aa.GetWindowSize(ax)
return Window.UIElements.Main.Size;
end; function aa.Localization(ax, ay)
return aa.LocalizationModule:New(ay, ao);
end; function aa.SetLanguage(ax, ay)
if ao.Localization then
return ao.SetLanguage(ay);
end;
return false;
end; function aa.ToggleAcrylic(ax, ay)
if aa.Window and aa.Window.AcrylicPaint and aa.Window.AcrylicPaint.Model then
aa.Window.Acrylic = ay; aa.Window.AcrylicPaint.Model.Transparency = ay and 0.99 or 1;
if ay then ar.Enable(); else ar.Disable(); end;
end;
end; function aa.Gradient(ax, ay, az)
local aA, aB = {}, {}; for aC, aD in next, ay do
local aE = tonumber(aC); if aE then
aE = math.clamp(aE / 100, 0, 1);
tble.insert(aA, CSKnew(aE, aD.Color));
tble.insert(aB, NSKnew(aE, aD.Transparency or 0));
end;
end; tble.sort(aA, function(aE, aF)
return aE.Time < aF.Time;
end); tble.sort(aB, function(aE, aF)
return aE.Time < aF.Time;
end); if #aA < 2 then
error"ColorSequence requires at least 2 keypoints";
end; local aE = {Color = CSnew(aA), Transparency = NSnew(aB)};
if az then
for aF, b in pairs(az) do
aE[aF] = b;
end;
end; return aE;
end; function aa.Popup(ax, ay)
ay.WindUI = aa; return a.load("r").new(ay);
end; aa.Themes = a.load "s"(aa);
ao.Themes = aa.Themes; aa:SetTheme"Dark"; aa:SetLanguage(ao.Language);
function aa.CreateWindow(ax, ay)
local az = a.load "Y"
if not isfolder "WindUI" then
makefolder "WindUI"
end
if ay.Folder then
makefolder(ay.Folder)
else
makefolder(ay.Title)
end
GG.GlobalBinds = GlobalBinds;
ay.WindUI = aa
ay.Parent = aa.ScreenGui.Window
if aa.Window then
warn "You cannot create more than one window"
return
end
local aA = true
local aB = aa.Themes[ay.Theme or "Dark"]
ao.SetTheme(aB)
local aC = gethwid or function()
return selff.UserId
end
local aD = aC()
local aE = az(ay)
aa.Transparent = ay.Transparent
aa.Window = aE;
if ay.Acrylic then
ar.init()
end
aa.ScreenGui.Parent = au;
return aE
end
function aa.FinishLoad()
isFirstLoad = false;
end;
return aa
end;
AssetStorage.IntroLib = function()
local TJYsEula = {TopLeftTUT = false}; if isfile(EULBASE) then
local decoded = HttpService:JSONDecode(readfile(EULBASE));
for k, v in pairs(decoded) do
TJYsEula[k] = v;
end;
end; local function SaveEula()
writefile(EULBASE, HttpService:JSONEncode(TJYsEula));
end; local function StackPop(wind, tutorials, index)
index = index or 1; if index > #tutorials then return; end;
local tut = tutorials[index];
if type(tut) ~= "table" or not tut.Key then
return StackPop(wind, tutorials, index + 1);
end; if not TJYsEula[tut.Key] then
wind:Popup({
Title = tut.Title,
Icon = tut.Icon,
Content = tut.Content,
Buttons = {
{Title = "Okay", Variant = "Tertiary", Callback = function()
StackPop(wind, tutorials, index + 1);
end},
{Title = "Don't show again", Variant = "Tertiary", Callback = function()
TJYsEula[tut.Key] = true;
SaveEula();
StackPop(wind, tutorials, index + 1);
end},
};
});
else
StackPop(wind, tutorials, index + 1);
end;
end; return {
Tutorial = function(self, wind)
local tutorialList = {
{
Key = "TopLeftTUT",
Title = "WARNING",
Icon = "circle-alert",
Content = "You can click the button on top, left of this Window to hide tabs."
},
(GameId == 1235188606 and {
Key = "DragonADVGuide",
Title = "Security",
Icon = "circle-alert",
Content = "You are using a newer version of the script which mean there will no 'Auto Roaming' or alternative name is 'Auto Load in-game data model'. Which mean you must head to 'Core Settings' tab, scroll down, and click 'Roam Initilization' OR enable 'Auto Roam Initilization' in order to make the script working correctly. Thank you."
}),
(GameId == 2294168059 and {
Key = "TheMimicGuild",
Title = "Security",
Icon = "circle-alert",
Content = "This game has multiple anti cheat, make sure to check tutorial video so you don't get kick or any further punishment form this game."
}) or {},
(PlaceId == 6243699076 and {
Key = "TheMimicLobbyGuild",
Title = "Tutorial",
Icon = "circle-alert",
Content = "You are currently in lobby, join a chapter to see all features from this script."
}) or {},
}; StackPop(wind, tutorialList, 1);
end,
Init = function(wind, tab)
if not LoaderSettings.BadNetwork then
local DiscordAPI = "https://discord.com/api/v10/invites/" .. "dagGQ6m2vb" .. "?with_counts=true&with_expiration=true";
local Response = (function()
local res = nil; pcall(function()
res = HttpService:JSONDecode(Request({
Url = DiscordAPI,
Method = "GET",
Headers = { ["Accept"] = "application/json" }
}).Body);
end); return res or {};
end)(); if Response and Response.guild then
local desc = ' • Member Count : ' .. tostring(Response.approximate_member_count) .. '\n • Online Count : ' .. tostring(Response.approximate_presence_count);
local DiscordInfo = tab:Paragraph({Title = Response.guild.name, Desc = desc, Image = "TTJYStudio", ImageSize = 84}); tab:Button({
Title = "Update Info",
Callback = function()
if Response and Response.guild then
DiscordInfo:SetDesc(
' • Member Count : ' .. tostring(Response.approximate_member_count) ..
'\n • Online Count : ' .. tostring(Response.approximate_presence_count)
);
end;
end;
});
else
tab:Paragraph({Title = "Error when receiving information about the Discord server", Desc = HttpService:JSONEncode(Response), Icon = "triangle-alert", Size = 26, Color = "Red"});
end;
end; tab:Space(); tab:Divider(); tab:Space();
tab:Paragraph({Title="TTJY", Desc="The owner of TTJY Studio & Main Developer."});
tab:Paragraph({Title="Wind UI", Desc="This script uses Wind UI Library created by Footagesus."});
tab:Paragraph({Title="IB1", Desc="This script uses IB1 which is a private obfuscator made by dr_breen."});
tab:Paragraph({Title="Auth3", Desc="This script uses Authentication3 as a private whitelist service."});
tab:Paragraph({Title="Pelican Development", Desc="This script also use a public whitelist service made by Pelican Development."});
tab:Paragraph({Title="Inject.today", Desc="This script is supported by Inject.today"});
end,
};
end;
AssetStorage.Windy = function()
local NoConfigComponent, AttachedConfig = {
"Divider", "Section", "Group", "Code",
"Module", "Group", "Button"
}, {}; return {
AttachConfig = function(pt,rp)
pt = rp .. "/" .. pt;
if AttachedConfig[pt] then
return AttachedConfig[pt];
end; local Splited = str.split(pt,"/");
local FullPath = GG.Configs;
for i,v in pairs(Splited) do
FullPath = FullPath[v];
if FullPath == nil then
return nil;
end;
end; AttachedConfig[pt]=FullPath;
return FullPath;
end,
CreateGroupComponent = function(self, tab, data, path)
local maxdats, Group=#data, (tab.Group and tab:Group({}) or tab);
for i,v in ipairs(data) do
local modu = Group:Section({
Title = v.Title;
Opened = v.Open;
Box = true;
}); if v.Global then
ScriptCache[v.Global] = modu;
end; for _, v in ipairs(v.dat) do
if not tblef(NoConfigComponent, v.type) and v.Path ~= nil then
self.AttachConfig(v.Path, path);
local fullPath = path.."/"..v.Path;
local Splited = str.split(fullPath,"/");
local lastKey = Splited[#Splited];
local len = #Splited - 1;
v.Callback = v.Callback or function(state)
AttachedConfig[fullPath] = state;
local t = GG.Configs;
for i = 1, len do
t = t[ Splited[i] ];
end; t[lastKey] = state;
end;
end; if LoaderSettings.ThaiLanguage then
v.Title = v.TH1 or v.Title;
v.Desc = v.TH2 or v.Desc;
else
v.Title = v.EN or v.Title;
v.Desc = v.EN2 or v.Desc;
end; if v.type == "Group" then
self:CreateGroupComponent(modu, v.dats, path);
elseif v.type == "Toggle" then
local Bindable = v.Bindable;
v.Value = v.Value or (v.Path and AttachedConfig[path.."/"..v.Path] or false);
v.PathName = v.Path and path.."/"..v.Path;
v.Bindable = (v.PathName and GG.BindConfigs[v.PathName] or nil) or v.Bindable;
ScriptCache[v.Global or "nil"] = modu:Toggle(v);
v.Bindable = Bindable;
elseif v.type == "Slider" then
v.Value.Default = v.Value.Default or (v.Path and AttachedConfig[path.."/"..v.Path] or 1);
ScriptCache[v.Global or "nil"] = modu:Slider(v);
elseif v.type == "Button" then
ScriptCache[v.Global or "nil"] = modu:Button(v);
elseif v.type == "Dropdown" then
v.Value = v.Value or (v.Path and AttachedConfig[path.."/"..v.Path] or 1);
if v.RECall then
local drp = modu:Dropdown(v);
v.RECall.Callback = function()
return drp:Refresh(v.RECall.RECall());
end; modu:Button(v.RECall);
ScriptCache[v.Global or "nil"] = drp;
else
ScriptCache[v.Global or "nil"] = modu:Dropdown(v);
end;
elseif v.type == "Keybind" then
v.Value = v.Value or (v.Path and AttachedConfig[path.."/"..v.Path] or nil);
ScriptCache[v.Global or "nil"] = modu:Keybind(v);
elseif v.type == "Input" then
v.Value = v.Value or (v.Path and AttachedConfig[path.."/"..v.Path] or nil);
ScriptCache[v.Global or "nil"] = modu:Input(v);
else
modu[v.type](v);
end; if type(v.Value) ~= 'table' then
v.Value = nil;
else
v.Value.Default = nil;
end;
end;
end;
end,
CreateComponent = function(self, tab, data, path)
if not tab then return; end;
for i,v in ipairs(data) do
if not tblef(NoConfigComponent, v.type) and v.Path ~= nil then
self.AttachConfig(v.Path, path);
local fullPath = path.."/"..v.Path;
local Splited = str.split(fullPath,"/");
local lastKey = Splited[#Splited];
local len = #Splited - 1;
v.Callback = v.Callback or function(state)
AttachedConfig[fullPath] = state;
local t = GG.Configs;
for i = 1, len do
t = t[ Splited[i] ];
end; t[lastKey] = state;
end;
end; if LoaderSettings.ThaiLanguage then
v.Title = v.TH1 or v.Title;
v.Desc = v.TH2 or v.Desc;
else
v.Title = v.EN or v.Title;
v.Desc = v.EN2 or v.Desc;
end; if v.type == "Group" then
self:CreateGroupComponent(tab, v.dats, path);
continue;
end; if v.type == "Toggle" then
local Bindable = v.Bindable;
v.Value = v.Value or (v.Path and AttachedConfig[path.."/"..v.Path] or false);
v.PathName = v.Path and path.."/"..v.Path;
v.Bindable = (v.PathName and GG.BindConfigs[v.PathName] or nil) or v.Bindable;
ScriptCache[v.Global or "nil"] = tab:Toggle(v);
v.Bindable = Bindable;
elseif v.type == "Slider" then
v.Value.Default = v.Value.Default or (v.Path and AttachedConfig[path.."/"..v.Path] or 1);
ScriptCache[v.Global or "nil"] = tab:Slider(v);
elseif v.type == "Button" then
ScriptCache[v.Global or "nil"] = tab:Button(v);
elseif v.type == "Dropdown" then
v.Value = v.Value or (v.Path and AttachedConfig[path.."/"..v.Path] or 1);
if v.RECall then
local drp = tab:Dropdown(v);
v.RECall.Callback = function()
return drp:Refresh(v.RECall.RECall());
end; tab:Button(v.RECall);
ScriptCache[v.Global or "nil"] = drp;
else
ScriptCache[v.Global or "nil"] = tab:Dropdown(v);
end;
elseif v.type == "Keybind" then
v.Value = v.Value or (v.Path and AttachedConfig[path.."/"..v.Path] or nil);
ScriptCache[v.Global or "nil"] = tab:Keybind(v);
else
ScriptCache[v.Global or "nil"] = tab[v.type](tab, v);
end; if type(v.Value) == 'table' then
v.Value.Default = nil;
else
v.Value = nil;
end;
end;
end;
CreateDynamic = function(self, wind, tabs, data)
if not tabs or not data then return; end;
local Tabs = data.Tabs; for i=1, #Tabs do
local TabInfo = Tabs[i]; if TabInfo.Tab then
local TComponent = TabInfo.Tab;
local Tab = wind:Tab(TComponent)
tabs[TComponent.at] = Tab;
self:CreateComponent(Tab, TabInfo.Data, TComponent.Path);
end;
end; return tabs;
end;
};
end;
------------- CorePackage -------------
local SCARYAC = {5995470825, 8795154789};
if tblef(SCARYAC, GameId) then
LoaderSettings.ScaryAC = true;
end;
AssetStorage.CorePackage = function()
local serialize = nil; serialize = function(tbl, indent)
indent = indent or ""
local result = "{\n"
for k,v in pairs(tbl) do
local key = (type(k) == "string") and strformat("[%q]", k) or "["..tostring(k).."]";
if type(v) == "table" then
result ..= indent.." "..key.." = "..serialize(v, indent.." ")..";\n";
elseif type(v) == "string" then
result ..= indent.." "..key.." = "..strformat("%q", v)..";\n";
else
result ..= indent.." "..key.." = "..tostring(v)..";\n";
end;
end; result ..= indent.."}";
return result;
end;
local Version = {
["Paintings"] = {
FileName = "Paintings.lua";
Version = "TheMimicV3.Extra.Paintings";
Target = "Paintings.lua";
};
};
local Data = {
{type="Toggle", EN="Thai Language", EN2="ใช้ภาษาไทย (ต้องรันอีกรอบ แต่ปิดหน้านี้ก่อนนะ)", P="ThaiLanguage", Callback=function(state)
LoaderSettings.ThaiLanguage = state;
end}; {type = "Space"};
{type="Dropdown", EN="ESP Mode", EN2="Change the ESP mode globally.", TH1="โหมด ESP", TH2="เปลี่ยนโหมด ESP แบบglobal", P="ESPMode", Values={"Box", "Highlight", "2D"}, Callback=function(option)
LoaderSettings.ESPMode = option; GG.ESPF_ChangeMode(option);
end};
{type="Slider", EN="FPS Cap", EN2="Change FPS capacity.", TH1="ปรับFPS", TH2="จำกัดจำนวน FPS", P="FPSCap", Value={Min=3, Max=250}, Callback=function(value)
LoaderSettings.FPSCap = value; setfpscap(value);
end};
{type="Toggle", EN="Bad Network", EN2="Prevent UI Decorations from loading.", TH1="เน็ตไม่ดี", TH2="UI ไม่สวย", P="BadNetwork", Callback=function(state)
LoaderSettings.BadNetwork = state;
end};
{type="Toggle", EN="Allow Cache", EN2="Allow script assets to be save in your workspace folder.", TH1="การใช้ข้อมูลเดิม", TH2="เซฟข้อมูลไว้ในworkspaceเพื่อการใช้งานครั้งถัดไป", P="AllowCache", Callback=function(state)
LoaderSettings.AllowCache = state;
end};
{type="Toggle", EN="Skip Bypass", EN2="Skip the bypass process.", TH1="ไม่สนใจกันโปร", TH2="ข้ามการbypass", P="SkipBypass", Callback=function(state)
LoaderSettings.SkipBypass = state;
end};
{type="Toggle", EN="Scary AntiCheat", EN2="Prevent UI Assets from loading, help bypass anti cheat.", TH1="กันโปรหนา", TH2="ปิดทรัพยากรทั้งหมดใน UI เพื่อไม่ให้โดนตรวจเจอ", P="ScaryAC", Callback=function(state)
if tblef(SCARYAC, GameId) then return; end;
LoaderSettings.ScaryAC = state;
end}; {type = "Space"};
{type="Keybind", EN="UI Toggle Key", EN2="Key to hide/show the menu.", TH1="ปุ่มเปิด/ปิดเมนู", TH2="ปุ่มสำหรับซ่อนหรือแสดงเมนู", P="UIKeybind", Callback=function(key)
LoaderSettings.UIKeybind = key; if ScriptCache.Window and ScriptCache.Window.SetToggleKey then
ScriptCache.Window:SetToggleKey(Enum.KeyCode[key] or Enum.KeyCode.RightShift);
end
end};
{type="Toggle", EN="Allow Acrylic Blur", EN2="Allow Acrylic Blur to make the UI look better.", TH1="เปิดใช้งาน Acrylic Blur", TH2="ทำให้ UI ดูสวยขึ้น", P="AllowAcrylicBlur", Callback=function(state)
LoaderSettings.AllowAcrylicBlur = state;
end};
{type="Toggle", EN="Allow Client Tab", EN2="Allow Client Tab in the UI.", TH1="เปิดใช้งานแท็บ: Client", TH2="แสดงแท็บ Client บน UI", P="AllowClientTab", Callback=function(state)
LoaderSettings.AllowClientTab = state;
end};
{type="Toggle", EN="Allow AddOn Tab", EN2="Allow AddOn Tab in the UI.", TH1="เปิดใช้งานแท็บ: AddOn", TH2="แสดงแท็บ AddOn บน UI", P="AllowAddOn", Callback=function(state)
LoaderSettings.AllowAddOn = state;
end};
{type="Toggle", EN="Allow Themes Tab", EN2="Allow Themes Tab in the UI.", TH1="เปิดใช้งานแท็บ: Themes", TH2="แสดงแท็บ Themes บน UI", P="AllowThemesTab", Callback=function(state)
LoaderSettings.AllowThemesTab = state;
end}; {type="Space"};
{type="Button", EN="Export Configs", EN2="Copy config to your clipboard", TH1="ส่งออก Config", TH2="คัดลอก Config", Callback=function()
setc("getgenv().Configs = " .. serialize(GG.Configs));
end};
{type="Button", EN="Export Loader Settings", EN2="Copy loader settings to your clipboard", TH1="ส่งออก Loader Settings", TH2="คัดลอก Loader Settings", Callback=function()
setc("getgenv().LoaderSettings = " .. serialize(GG.LoaderSettings));
end};
{type="Button", EN="Export Key-Binding", EN2="Copy Key-Binding to your clipboard", TH1="ส่งออก Key-Binding", TH2="คัดลอก Key-Binding", Callback=function()
setc("getgenv().BindConfigs = " .. serialize(GG.BindConfigs));
end};
};
if GameId == 2294168059 then
Data[#Data+1] = {type="Space"}; Data[#Data+1] = {type="Divider"}; Data[#Data+1] = {type="Space"};
Data[#Data+1] = {type="Toggle", EN="Load Sections", EN2="Load all teleport locations instead of just an auto complete.", TH1="โหลดส่วนขยาย", TH2="จากปกติที่จะโหลดแค่ออโต้เล่น โหลดส่วนขยายจะโหลดจุดวาปด้วย", P="TheMimicLoader", P2="Load_Sections", Callback=function(state)
LoaderSettings.TheMimicLoader.Load_Sections = state;
end};
Data[#Data+1] = {type="Space"}; Data[#Data+1] = {type="Divider"}; Data[#Data+1] = {type="Space"};
Data[#Data+1] = {type="Dropdown", EN="Installer", EN2="Select a package.", TH1="โหลดส่วนเสริม", TH2="เลือกสิ่งที่จะโหลด", Values={"Paintings", "MapComputing"}, P="TheMimicLoader", P2="Installer", Callback=function(value)
LoaderSettings.TheMimicLoader.Installer = value;
end};
Data[#Data+1] = {type="Button", EN="Install", EN2="Download the package.", TH1="โหลด", TH2="โหลดส่วนเสริม", Callback=function(value)
local DownloadHandler = GG.DownloadHandler; if DownloadHandler and not DownloadHandler.Download(true, LoaderSettings.TheMimicLoader.Installer) then
ScriptCache.WindUI:Notify({
Title = "Installer [IMPORTANT]",
Content = "Downloading assets.",
Icon = "circle-alert",
Duration = 11,
}); DownloadHandler.Download(false, LoaderSettings.TheMimicLoader.Installer);
else
ScriptCache.WindUI:Notify({
Title = "Installer [IMPORTANT]",
Content = "You already have the asset installed.",
Icon = "circle-alert",
Duration = 11,
});
end;
end};
elseif GameId == 1235188606 then
Data[#Data+1] = {type="Space"}; Data[#Data+1] = {type="Divider"}; Data[#Data+1] = {type="Space"};
Data[#Data+1] = {type="Button", EN="Roam Initilization", EN2="This will teleport you to every chunk of the game and make it load all data.", TH1="โหลดข้อมูลเกม", TH2="จะวาปไปทุกๆส่วนของเกมและโหลดข้อมูลทั้งหมด", Callback=function()
return GG.InitGameData();
end};
Data[#Data+1] = {type="Toggle", EN="Roam Init On StartUp", EN2="Automatically run Roam Initilization after execute.", TH1="ออโต้โหลดข้อมูลเกม", TH2="จะวาปไปทุกๆส่วนของเกมและโหลดข้อมูลทั้งหมดหลังรันสคริป", P="DragonAdventure", P2="RoamInitOnStartUp", Callback=function(state)
LoaderSettings.DragonAdventure.RoamInitOnStartUp = state;
end};
Data[#Data+1] = {type="Space"}; Data[#Data+1] = {type="Divider"}; Data[#Data+1] = {type="Space"};
Data[#Data+1] = {type="Toggle", EN="Auto Join Private server", EN2="Give you free private server, this will auto join the private server after you teleport to other world that isn't lobby.", TH1="ออโต้เข้าPrivate server", TH2="จะวาปไป Private server ให้อัตโนมัติเมื่อไปยังแมพอื่นที่ไม่ใช่ล็อบบี้", P="DragonAdventure", P2="AutoJoinPrivateServer", Callback=function(state)
LoaderSettings.DragonAdventure.AutoJoinPrivateServer = state;
end};
elseif GameId == 10200395747 then
Data[#Data+1] = {type="Space"}; Data[#Data+1] = {type="Divider"}; Data[#Data+1] = {type="Space"};
Data[#Data+1] = {type="Toggle", EN="Allow TP Bypass", EN2="Instant teleport; You need to have low ping or this won't work.", TH1="วาปทันที", TH2="เวลาฟาม เวลาขโมยจะวาปทันทีแต่ต้องเน็ตแรงๆ ปิงน้อยๆ", Callback=function(state)
LoaderSettings.GAG2Loader.Allow_TPBypass = state;
end};
end;
local Init = function()
for i,v in pairs(Data) do
if v.type == "Toggle" or v.type == "Keybind" or v.type == "Dropdown" then
if v.P2 then
v.Value=LoaderSettings[v.P][v.P2];
else
v.Value=LoaderSettings[v.P];
end;
elseif v.type == "Slider" then
if v.P2 then
v.Value.Default = LoaderSettings[v.P][v.P2];
else
v.Value.Default = LoaderSettings[v.P];
end;
end;
end; return Data, Installer;
end; return Init;
end;
AssetStorage.DownloadPackage = function()
local Registry = {
["Paintings"] = {
FileName = "Paintings.lua";
Version = "TheMimicV3.Extra.Paintings";
Target = "Paintings.lua";
};
};
local DSignal = Signal.new();
local Download = function(check, name)
local TargetTBL = Registry[name]; if check then
if not LoadFromVControl(
ASSETBASE..TargetTBL.Target,
TargetTBL.FileName,
TargetTBL.Version,
check
) then
return false, WindUI:Notify({
Title = "Installer [IMPORTANT]",
Content = name.."asset is missing. If you want to download it now, you can download it at 'Core Settings' tab.",
Icon = "circle-alert",
Duration = 11,
});
end; return true;
end;
DSignal:Fire(name, LoadFromVControl(
ASSETBASE..TargetTBL.Target,
TargetTBL.FileName,
TargetTBL.Version
)());
end;
return {
Versions = Registry;
Download = Download;
Signal = DSignal;
};
end;
------------- Source Loader -------------
local FreeLoad, KeyLoad = {
[7597195391] = {
File = "7597195391";
Version = "RealUNISnapshot5";
Included = {"CorePackage", "LoadUILib", "IntroLib", "Windy", "ClientPackage", "PromptPackage", "CoruTask"};
};
}, {
[1235188606] = {
File = "1235188606";
Version = "DA_V3.53";
Included = {"CorePackage", "LoadUILib", "IntroLib", "Windy", "ClientPackage", "CoruTask", "CommonF", "ESPPackage"};
};
[3647333358] = {
File = "3647333358";
Version = "Evade_V3.48";
Included = {"CorePackage", "LoadUILib", "IntroLib", "Windy", "ClientPackage", "CoruTask", "CommonF", "ESPPackage"};
};
[2294168059] = {
File = "2294168059";
Version = "TheMimicV3.B7";
Included = {"CorePackage", "LoadUILib", "IntroLib", "Windy", "ClientPackage", "CoruTask", "CommonF", "ESPPackage", "PromptPackage", "DownloadPackage"};
};
};
GG.LoadFromVControl = LoadFromVControl;
GG.LoaderSettings = LoaderSettings;
GG.ScriptCache = ScriptCache;
if (not LoaderSettings.SkipBypass) and not LoadFromVControl("https://raw.githubusercontent.com/RealTTJY/Studio.Hub/refs/heads/main/APIs/MultiAC.cpp", "MultiAC.lua", "2023_ACI_2026_B2C4")(selff, selc) then
return selff:Kick("TTJY_IDAC");
end;
if GG.API_Only then return; end;
local Resolve = FreeLoad[GameId] and FreeLoad[GameId].File .. ".lua";
Resolve = Resolve or (KeyLoad[GameId] and KeyLoad[GameId].File .. ".lua");
local AutoInclude = function(Included)
local tbl={}; for i, v in ipairs(Included) do
if v == "LoadUILib" then
tblein(tbl, i, AssetStorage[v]);
else
tblein(tbl, i, AssetStorage[v]());
AssetStorage[v] = nil;
end; continue;
end; return unpack(tbl);
end;
if FreeLoad[GameId] then
return LoadFromVControl("https://raw.githubusercontent.com/RealTTJY/Studio.Hub/refs/heads/main/ListFile/" .. Resolve, Resolve, GG.CustomVersion or FreeLoad[GameId].Version)(AutoInclude(FreeLoad[GameId].Included))();
elseif KeyLoad[GameId] then
return LoadFromVControl("https://raw.githubusercontent.com/RealTTJY/Studio.Hub/refs/heads/main/APIs/K.oluac", "K.lua", "KAuth3.77")(GG.CustomVersion or KeyLoad[GameId].Version, AssetStorage.KeyPackage, AutoInclude(KeyLoad[GameId].Included))();
else
return LoadFromVControl("https://raw.githubusercontent.com/RealTTJY/Studio.Hub/refs/heads/main/ListFile/7597195391.lua", "7597195391.lua", GG.CustomVersion or FreeLoad[7597195391].Version)(AutoInclude(FreeLoad[7597195391].Included))();
end;