diff --git a/38037265.xml b/38037265.xml
index 1e0ed8f..400d24d 100644
--- a/38037265.xml
+++ b/38037265.xml
@@ -199,7 +199,7 @@ humanoid.Died:connect(function() HealthChanged(0) end)
4279970357
1
false
- http://banland.xyz/asset/?id=34854607
+ http://banland.xyz/asset?id=34854607
hurtOverlay
2
@@ -254,7 +254,7 @@ humanoid.Died:connect(function() HealthChanged(0) end)
4279970357
1
false
- http://banland.xyz/asset/?id=35238000
+ http://banland.xyz/asset?id=35238000
bkg
0
@@ -282,7 +282,7 @@ humanoid.Died:connect(function() HealthChanged(0) end)
4279970357
1
false
- http://banland.xyz/asset/?id=35238036
+ http://banland.xyz/asset?id=35238036
barRed
0.0189999994
@@ -338,7 +338,7 @@ humanoid.Died:connect(function() HealthChanged(0) end)
4279970357
1
false
- http://banland.xyz/asset/?id=35238053
+ http://banland.xyz/asset?id=35238053
bar
0.0189999994
@@ -366,7 +366,7 @@ humanoid.Died:connect(function() HealthChanged(0) end)
4279970357
0
false
- http://banland.xyz/asset/?id=34816363
+ http://banland.xyz/asset?id=34816363
label
0.680000007
diff --git a/Libraries/Fusion/Logging/logErrorNonFatal.luau b/Libraries/Fusion/Logging/logErrorNonFatal.luau
index aedc120..1ad7b96 100644
--- a/Libraries/Fusion/Logging/logErrorNonFatal.luau
+++ b/Libraries/Fusion/Logging/logErrorNonFatal.luau
@@ -34,7 +34,7 @@ local function logErrorNonFatal(messageID: string, errObj: Types.Error?, ...)
end
coroutine.wrap(function()
- error(errorString:gsub("\n", "\n "), 0)
+ error(string.gsub(errorString, "\n", "\n "), 0)
end)()
end
diff --git a/Libraries/Fusion/Logging/parseError.luau b/Libraries/Fusion/Logging/parseError.luau
index 366f6b5..f827db8 100644
--- a/Libraries/Fusion/Logging/parseError.luau
+++ b/Libraries/Fusion/Logging/parseError.luau
@@ -16,7 +16,7 @@ local function parseError(err: string): Types.Error
return {
type = "Error",
raw = err,
- message = err:gsub("^.+:%d+:%s*", ""),
+ message = string.gsub(err, "^.+:%d+:%s*", ""),
trace = trace or "Traceback not available",
}
end
diff --git a/Modules/Waiter.luau b/Modules/Waiter.luau
new file mode 100644
index 0000000..ea1a1c4
--- /dev/null
+++ b/Modules/Waiter.luau
@@ -0,0 +1,15 @@
+-- Imagine a go waitgroup if it was good
+return function(waitFunction: () -> ())
+ return function(count: number)
+ return {
+ wait = function()
+ repeat
+ waitFunction()
+ until count == 0
+ end,
+ finish = function()
+ count -= 1
+ end,
+ }
+ end
+end
diff --git a/compile.luau b/compile.luau
index d9dccc7..70bc252 100644
--- a/compile.luau
+++ b/compile.luau
@@ -5,6 +5,7 @@ local fs = require "@lune/fs"
local process = require "@lune/process"
local stdio = require "@lune/stdio"
local task = require "@lune/task"
+local waiter = require "./Modules/Waiter"(task.wait)
local colour = stdio.color
@@ -23,10 +24,12 @@ local plugins = {}
-- Allow for running from the base or corescripts directories
local cwd = process.cwd
local fromCoresDir = not not string.match(cwd, "corescripts/$")
-local normalCoresDir = if fromCoresDir then "./luau" else "./corescripts/luau"
-local normalPluginsDir = if fromCoresDir
- then "./terrain plugins"
- else "./corescripts/terrain plugins"
+local coresDir = if fromCoresDir then "." else "./corescripts"
+
+-- local normalCoresDir = if fromCoresDir then "./luau" else "./corescripts/luau"
+local normalCoresDir = `{coresDir}/luau`
+local normalPluginsDir = `{coresDir}/terrain plugins`
+local outputDir = `{coresDir}/processed`
for _, core in ipairs(fs.readDir(normalCoresDir)) do
table.insert(
@@ -36,11 +39,9 @@ for _, core in ipairs(fs.readDir(normalCoresDir)) do
)
end
for _, core in ipairs(fs.readDir(normalPluginsDir)) do
- print(core)
table.insert(plugins, core)
end
-local coresDir = if fromCoresDir then "." else "./corescripts"
local pluginsDir = if fromCoresDir
then "../Client deployer"
else "./Client deployer"
@@ -56,13 +57,13 @@ local function processCores(
then `../{config}.json5`
else `{config}.json5`
+ local w = waiter(#scripts)
+
for i, core in ipairs(scripts) do
local newCore = if libraries
then `{10000000 + i}.lua`
else string.gsub(core, "%.luau$", ".lua")
- print(`{coresDir}/{startDir}/{core}`, `{endDir}/{newCore}`)
-
task.spawn(function()
local cmd = process.spawn("darklua", {
"process",
@@ -77,33 +78,47 @@ local function processCores(
then `{green}Processed {core}{reset}`
else `{red}Error processing {core}: {cmd.stderr}{reset}`
)
+
+ w.finish()
end)
end
+ w.wait()
end
-task.spawn(function()
- processCores(
- libraryCores,
- "Libraries",
- `{coresDir}/processed`,
- "dense",
- true
- )
-end)
-
-task.spawn(function()
- processCores(
+local args: { { any } } = {
+ { libraryCores, "Libraries", outputDir, "dense", true },
+ {
plugins,
"terrain plugins",
`{pluginsDir}/staging/BuiltInPlugins/terrain`,
- "lines"
- )
-end)
+ "lines",
+ },
+ { normalCores, "luau", outputDir, "dense" },
+ { otherCores, "luau", outputDir, "lines" },
+}
-task.spawn(function()
- processCores(normalCores, "luau", `{coresDir}/processed`, "dense")
-end)
+local w = waiter(#args)
-task.spawn(function()
- processCores(otherCores, "luau", `{coresDir}/processed`, "lines")
-end)
+for _, arg in ipairs(args) do
+ task.spawn(function()
+ processCores(unpack(arg))
+ w.finish()
+ end)
+end
+
+if #process.args == 0 then
+ return
+end
+
+w.wait()
+
+local totalBytes = 0
+for _, core in ipairs(fs.readDir(outputDir)) do
+ local file = fs.readFile(`{outputDir}/{core}`)
+ if not string.match(core, "%d+%.lua") then
+ continue
+ end
+ totalBytes += #file
+end
+
+print(`Total: {totalBytes / 1000} kb`)
diff --git a/defs.d.lua b/defs.d.lua
index 13df79b..48f99dd 100644
--- a/defs.d.lua
+++ b/defs.d.lua
@@ -4248,6 +4248,7 @@ declare class ContentProvider extends Instance
function RegisterEncryptedAsset(self, assetId: Content, encryptionKey: string): nil
function RegisterSessionEncryptedAsset(self, contentId: Content, sessionKey: string): nil
function SetBaseUrl(self, url: string): nil
+ function SetThreadPool(self, count: number): nil
function UnregisterDefaultEncryptionKey(self): nil
function UnregisterEncryptedAsset(self, assetId: Content): nil
end
@@ -4793,6 +4794,7 @@ end
declare class GamePassService extends Instance
+ function SetPlayerHasPassUrl(self, playerHasPassUrl: string): nil
end
declare class GameSettings extends Instance
@@ -5550,8 +5552,10 @@ declare class InsertService extends Instance
function LoadPackageAsset(self, url: Content): { Instance }
function LoadPackageAssetAsync(self, url: Content): { Instance }
- function SetAssetUrl(self, assetUrl: Content): nil
- function SetAssetVersionUrl(self, assetVersionUrl: Content): nil
+ function SetAssetUrl(self, assetUrl: string): nil
+ function SetAssetVersionUrl(self, assetVersionUrl: string): nil
+ function SetBaseSetsUrl(self, baseSetsUrl: string): nil
+ function SetCollectionUrl(self, collectionUrl: string): nil
end
declare class JointInstance extends Instance
@@ -5815,6 +5819,9 @@ declare class MarketplaceService extends Instance
function SignalPromptPurchaseFinished(self, player: Instance, assetId: number, success: boolean): nil
function SignalServerLuaDialogClosed(self, value: boolean): nil
function UserOwnsGamePassAsync(self, userId: number, gamePassId: number): boolean
+
+ function SetProductInfoUrl(self, url: string): nil
+ function SetPlayerOwnsAssetUrl(self, url: string): nil
end
declare class MaterialGenerationService extends Instance
@@ -7527,9 +7534,9 @@ declare class DataModel extends ServiceProvider
function GetObjectsList(self, urls: { any }): { any }
function GetPlaySessionId(self): string
function HttpGet(self, url: string, synchronous: boolean, httpRequestType: EnumHttpRequestType?, doNotAllowDiabolicalMode: boolean?): string
- function HttpGetAsync(self, url: string, synchronous: boolean, httpRequestType: EnumHttpRequestType?, doNotAllowDiabolicalMode: boolean?): string
+ function HttpGetAsync(self, url: string, synchronous: boolean?, httpRequestType: EnumHttpRequestType?, doNotAllowDiabolicalMode: boolean?): string
function HttpPost(self, url: string, data: string, synchronous: boolean, contentType: string?, httpRequestType: EnumHttpRequestType?, doNotAllowDiabolicalMode: boolean?): string
- function HttpPostAsync(self, url: string, data: string, synchronous: boolean, contentType: string?, httpRequestType: EnumHttpRequestType?, doNotAllowDiabolicalMode: boolean?): string
+ function HttpPostAsync(self, url: string, data: string?, synchronous: boolean?, contentType: string?, httpRequestType: EnumHttpRequestType?, doNotAllowDiabolicalMode: boolean?): string
function InsertObjectsAndJoinIfLegacyAsync(self, url: Content): { Instance }
function IsContentLoaded(self): boolean
function IsLoaded(self): boolean
@@ -7624,6 +7631,8 @@ declare class SocialService extends Instance
function SetBestFriendUrl(self, bestFriendUrl: string): nil
function SetStuffUrl(self, stuffUrl: string): nil
function SetPackageContentsUrl(self, stuffUrl: string): nil
+
+ function SetGroupUrl(self, groupUrl: string): nil
end
declare class Sound extends Instance
@@ -9132,4 +9141,4 @@ declare LoadLibrary: ((libraryName: "RbxFusion") -> Fusion) & ((libraryName: "Rb
declare function settings(): GlobalSettings
declare function UserSettings(): UserSettings
declare function PluginManager(): PluginManager
-declare function ypcall(f: () -> any, ...: any): (boolean, any)
+declare function ypcall(f: (() -> any) | (() -> ()), ...: any): (boolean, any)
diff --git a/luau/107893730.luau b/luau/107893730.luau
index b6bc423..7004817 100644
--- a/luau/107893730.luau
+++ b/luau/107893730.luau
@@ -1,3 +1,4 @@
+--!strict
-- CoreGui.RobloxGui.CoreScripts/PurchasePromptScript
print "[Mercury]: Loaded corescript 107893730"
@@ -25,7 +26,7 @@ end
-------------------------------- Global Variables ----------------------------------------
-- utility variables
-local baseUrl = ContentProvider.BaseUrl:lower()
+local baseUrl = string.lower(ContentProvider.BaseUrl)
-- data variables
local currentProductInfo, currentAssetId, currentCurrencyType, currentCurrencyAmount, currentEquipOnPurchase, currentProductId, currentServerResponseTable
@@ -205,7 +206,7 @@ local function userPurchaseActionsEnded(isSuccess: boolean)
end
-- enums have no implicit conversion to numbers in lua, has to have a function to do this
-local function currencyEnumToInt(currencyEnum: Enum.CurrencyType)
+local function currencyEnumToInt(currencyEnum: EnumItem)
if currencyEnum == Enum.CurrencyType.Tix then
return 2
end
@@ -439,9 +440,7 @@ local function getPlayerBalance()
if not success then
print("Get player balance failed because", errorCode)
return
- end
-
- if playerBalance == "" then
+ elseif playerBalance == "" then
return
end
@@ -506,9 +505,11 @@ local function canPurchaseItem()
end
if currentProductInfo == nil or not success then
- descText =
+ return true,
+ nil,
+ nil,
+ true,
"In-game sales are temporarily disabled. Please try again later."
- return true, nil, nil, true, descText
end
if not purchasingConsumable then
@@ -976,7 +977,7 @@ local function userPurchaseProductActionsEnded(userIsClosingDialog)
if currentServerResponseTable then
local isPurchased = false
if
- tostring(currentServerResponseTable.isValid):lower()
+ string.lower(tostring(currentServerResponseTable.isValid))
== "true"
then
isPurchased = true
@@ -1244,47 +1245,6 @@ local function createPurchasePromptGui()
)
end
--- next two functions control the "Purchasing..." overlay
-
--- next 2 functions are convenienvce creation functions for guis
-
--- local function cutSizeInHalfRecursive(_)
- -- todo: change the gui size based on how much space we have
- -- changeSize(instance, 0.5)
-
- -- local children = instance:GetChildren()
- -- for i = 1, #children do
- -- cutSizeInHalfRecursive(children[i])
- -- end
--- end
-
--- local function doubleSizeRecursive(_)
- -- todo: change the gui size based on how much space we have
- -- changeSize(instance, 2)
-
- -- local children = instance:GetChildren()
- -- for i = 1, #children do
- -- doubleSizeRecursive(children[i])
- -- end
--- end
-
--- local function modifyForSmallScreen()
--- cutSizeInHalfRecursive(purchaseDialog)
--- end
-
--- local function modifyForLargeScreen()
--- doubleSizeRecursive(purchaseDialog)
--- end
-
--- depending on screen size, we need to change the gui
--- local function changeGuiToScreenSize(smallScreen)
--- if smallScreen then
--- modifyForSmallScreen()
--- else
--- modifyForLargeScreen()
--- end
--- end
-
local function doPurchasePrompt(
player,
assetId,
@@ -1359,21 +1319,3 @@ if enableBrowserWindowClosedEvent then
doPlayerFundsCheck(false)
end)
end
-
--- Game.CoreGui.RobloxGui.Changed:connect(function()
- -- local nowIsSmallScreen = (
- -- game.CoreGui.RobloxGui.AbsoluteSize.Y <= smallScreenThreshold
- -- )
- -- if nowIsSmallScreen and not isSmallScreen then
- -- changeGuiToScreenSize(true)
- -- elseif not nowIsSmallScreen and isSmallScreen then
- -- changeGuiToScreenSize(false)
- -- end
-
- -- isSmallScreen = nowIsSmallScreen
--- end)
-
--- isSmallScreen = (game.CoreGui.RobloxGui.AbsoluteSize.Y <= smallScreenThreshold)
--- if isSmallScreen then
--- changeGuiToScreenSize(true)
--- end
diff --git a/luau/37801172.luau b/luau/37801172.luau
index e7247bf..5c0dfa7 100644
--- a/luau/37801172.luau
+++ b/luau/37801172.luau
@@ -1,3 +1,4 @@
+--!strict
-- Script Context.StarterScript
print "[Mercury]: Loaded corescript 37801172"
diff --git a/luau/45284430.luau b/luau/45284430.luau
index a7988ae..b635db5 100644
--- a/luau/45284430.luau
+++ b/luau/45284430.luau
@@ -5,6 +5,9 @@ local News = require "../Modules/New"
local New = News.New
local Hydrate = News.Hydrate
+local ContentProvider = game:GetService "ContentProvider"
+local InsertService = game:GetService "InsertService"
+
local RbxGui = {}
local function ScopedConnect(
@@ -140,6 +143,45 @@ local function cancelSlide(areaSoak)
end
end
+RbxGui.CreateMessageDialog = function(title, message, buttons)
+ local frame = New "Frame" {
+ Size = UDim2.new(0.5, 0, 0.5, 0),
+ Position = UDim2.new(0.25, 0, 0.25, 0),
+ Name = "MessageDialog",
+ Active = true,
+ Style = Enum.FrameStyle.RobloxRound,
+ New "TextLabel" {
+ Name = "Title",
+ Text = title,
+ BackgroundTransparency = 1,
+ TextColor3 = Colour3(221, 221, 221),
+ Position = UDim2.new(0, 0, 0, 0),
+ Size = UDim2.new(1, 0, 0.15, 0),
+ Font = Enum.Font.ArialBold,
+ FontSize = Enum.FontSize.Size36,
+ TextXAlignment = Enum.TextXAlignment.Center,
+ TextYAlignment = Enum.TextYAlignment.Center,
+ },
+ New "TextLabel" {
+ Name = "Message",
+ Text = message,
+ TextColor3 = Colour3(221, 221, 221),
+ Position = UDim2.new(0.025, 0, 0.175, 0),
+ Size = UDim2.new(0.95, 0, 0.55, 0),
+ BackgroundTransparency = 1,
+ Font = Enum.Font.Arial,
+ FontSize = Enum.FontSize.Size18,
+ TextWrap = true,
+ TextXAlignment = Enum.TextXAlignment.Left,
+ TextYAlignment = Enum.TextYAlignment.Top,
+ },
+ }
+
+ CreateButtons(frame, buttons, UDim.new(0.8, 0), UDim.new(0.15, 0))
+
+ return frame
+end
+
RbxGui.CreateStyledMessageDialog = function(title, message, style, buttons)
local frame = New "Frame" {
Size = UDim2.new(0.5, 0, 0, 165),
@@ -201,45 +243,6 @@ RbxGui.CreateStyledMessageDialog = function(title, message, style, buttons)
return frame
end
-RbxGui.CreateMessageDialog = function(title, message, buttons)
- local frame = New "Frame" {
- Size = UDim2.new(0.5, 0, 0.5, 0),
- Position = UDim2.new(0.25, 0, 0.25, 0),
- Name = "MessageDialog",
- Active = true,
- Style = Enum.FrameStyle.RobloxRound,
- New "TextLabel" {
- Name = "Title",
- Text = title,
- BackgroundTransparency = 1,
- TextColor3 = Colour3(221, 221, 221),
- Position = UDim2.new(0, 0, 0, 0),
- Size = UDim2.new(1, 0, 0.15, 0),
- Font = Enum.Font.ArialBold,
- FontSize = Enum.FontSize.Size36,
- TextXAlignment = Enum.TextXAlignment.Center,
- TextYAlignment = Enum.TextYAlignment.Center,
- },
- New "TextLabel" {
- Name = "Message",
- Text = message,
- TextColor3 = Colour3(221, 221, 221),
- Position = UDim2.new(0.025, 0, 0.175, 0),
- Size = UDim2.new(0.95, 0, 0.55, 0),
- BackgroundTransparency = 1,
- Font = Enum.Font.Arial,
- FontSize = Enum.FontSize.Size18,
- TextWrap = true,
- TextXAlignment = Enum.TextXAlignment.Left,
- TextYAlignment = Enum.TextYAlignment.Top,
- },
- }
-
- CreateButtons(frame, buttons, UDim.new(0.8, 0), UDim.new(0.15, 0))
-
- return frame
-end
-
local scrollMouseCount
RbxGui.CreateDropDownMenu = function(items, onSelect, forRoblox)
local width = UDim.new(0, 100)
@@ -269,7 +272,7 @@ RbxGui.CreateDropDownMenu = function(items, onSelect, forRoblox)
New "ImageLabel" {
Name = "Icon",
Active = false,
- Image = "http://banland.xyz/asset/?id=45732894",
+ Image = "http://banland.xyz/asset?id=45732894",
BackgroundTransparency = 1,
Size = UDim2.new(0, 11, 0, 6),
Position = UDim2.new(1, -11, 0.5, -2),
@@ -816,24 +819,27 @@ RbxGui.LayoutGuiObjects = function(frame, guiObjects, settingsTable)
end
RbxGui.CreateSlider = function(steps, width, position)
- local sliderGui = Instance.new "Frame"
- sliderGui.Size = UDim2.new(1, 0, 1, 0)
- sliderGui.BackgroundTransparency = 1
- sliderGui.Name = "SliderGui"
+ local sliderGui = New "Frame" {
+ Size = UDim2.new(1, 0, 1, 0),
+ BackgroundTransparency = 1,
+ Name = "SliderGui",
+ }
- local sliderSteps = Instance.new "IntValue"
- sliderSteps.Name = "SliderSteps"
- sliderSteps.Value = steps
- sliderSteps.Parent = sliderGui
+ local sliderSteps = New "IntValue" {
+ Name = "SliderSteps",
+ Value = steps,
+ Parent = sliderGui,
+ }
- local areaSoak = Instance.new "TextButton"
- areaSoak.Name = "AreaSoak"
- areaSoak.Text = ""
- areaSoak.BackgroundTransparency = 1
- areaSoak.Active = false
- areaSoak.Size = UDim2.new(1, 0, 1, 0)
- areaSoak.Visible = false
- areaSoak.ZIndex = 4
+ local areaSoak = New "TextButton" {
+ Name = "AreaSoak",
+ Text = "",
+ BackgroundTransparency = 1,
+ Active = false,
+ Size = UDim2.new(1, 0, 1, 0),
+ Visible = false,
+ ZIndex = 4,
+ }
sliderGui.AncestryChanged:connect(function(_, parent)
if parent == nil then
@@ -843,24 +849,23 @@ RbxGui.CreateSlider = function(steps, width, position)
end
end)
- local sliderPosition = Instance.new "IntValue"
- sliderPosition.Name = "SliderPosition"
- sliderPosition.Value = 0
- sliderPosition.Parent = sliderGui
+ local sliderPosition = New "IntValue" {
+ Name = "SliderPosition",
+ Value = 1,
+ Parent = sliderGui,
+ }
- local bar = Instance.new "TextButton"
- bar.Text = ""
- bar.AutoButtonColor = false
- bar.Name = "Bar"
- bar.BackgroundColor3 = Color3.new(0, 0, 0)
- if type(width) == "number" then
- bar.Size = UDim2.new(0, width, 0, 5)
- else
- bar.Size = UDim2.new(0, 200, 0, 5)
- end
- bar.BorderColor3 = Colour3(95, 95, 95)
- bar.ZIndex = 2
- bar.Parent = sliderGui
+ local bar = New "TextButton" {
+ Text = "",
+ AutoButtonColor = false,
+ Name = "Bar",
+ BackgroundColor3 = Color3.new(0, 0, 0),
+ Size = type(width) == "number" and UDim2.new(0, width, 0, 5)
+ or UDim2.new(0, 200, 0, 5),
+ BorderColor3 = Colour3(95, 95, 95),
+ ZIndex = 2,
+ Parent = sliderGui,
+ }
if
position.X
@@ -873,14 +878,15 @@ RbxGui.CreateSlider = function(steps, width, position)
bar.Position = position
end
- local slider = Instance.new "ImageButton"
- slider.Name = "Slider"
- slider.BackgroundTransparency = 1
- slider.Image = "rbxasset://textures/ui/Slider.png"
- slider.Position = UDim2.new(0, 0, 0.5, -10)
- slider.Size = UDim2.new(0, 20, 0, 20)
- slider.ZIndex = 3
- slider.Parent = bar
+ local slider = New "TextButton" {
+ Name = "Slider",
+ BackgroundTransparency = 1,
+ Image = "rbxasset://textures/ui/Slider.png",
+ Position = UDim2.new(0, 0, 0.5, -10),
+ Size = UDim2.new(0, 20, 0, 20),
+ ZIndex = 3,
+ Parent = bar,
+ }
areaSoak.MouseLeave:connect(function()
if areaSoak.Visible then
@@ -937,48 +943,54 @@ RbxGui.CreateTrueScrollingFrame = function()
local descendantsChangeConMap = {}
- local scrollingFrame = Instance.new "Frame"
- scrollingFrame.Name = "ScrollingFrame"
- scrollingFrame.Active = true
- scrollingFrame.Size = UDim2.new(1, 0, 1, 0)
- scrollingFrame.ClipsDescendants = true
+ local scrollingFrame = New "Frame" {
+ Name = "ScrollingFrame",
+ Active = true,
+ Size = UDim2.new(1, 0, 1, 0),
+ ClipsDescendants = true,
+ }
- local controlFrame = Instance.new "Frame"
- controlFrame.Name = "ControlFrame"
- controlFrame.BackgroundTransparency = 1
- controlFrame.Size = UDim2.new(0, 18, 1, 0)
- controlFrame.Position = UDim2.new(1, -20, 0, 0)
- controlFrame.Parent = scrollingFrame
+ local controlFrame = New "Frame" {
+ Name = "ControlFrame",
+ BackgroundTransparency = 1,
+ Size = UDim2.new(0, 18, 1, 0),
+ Position = UDim2.new(1, -20, 0, 0),
+ Parent = scrollingFrame,
+ }
- local scrollBottom = Instance.new "BoolValue"
- scrollBottom.Value = false
- scrollBottom.Name = "ScrollBottom"
- scrollBottom.Parent = controlFrame
+ local scrollBottom = New "BoolValue" {
+ Value = false,
+ Name = "ScrollBottom",
+ Parent = controlFrame,
+ }
- local scrollUpValue = Instance.new "BoolValue"
- scrollUpValue.Value = false
- scrollUpValue.Name = "scrollUp"
- scrollUpValue.Parent = controlFrame
+ local scrollUpValue = New "BoolValue" {
+ Value = false,
+ Name = "scrollUp",
+ Parent = controlFrame,
+ }
- local scrollUpButton = Instance.new "TextButton"
- scrollUpButton.Name = "ScrollUpButton"
- scrollUpButton.Text = ""
- scrollUpButton.AutoButtonColor = false
- scrollUpButton.BackgroundColor3 = Color3.new(0, 0, 0)
- scrollUpButton.BorderColor3 = Color3.new(1, 1, 1)
- scrollUpButton.BackgroundTransparency = 0.5
- scrollUpButton.Size = UDim2.new(0, 18, 0, 18)
- scrollUpButton.ZIndex = 2
- scrollUpButton.Parent = controlFrame
+ local scrollUpButton = New "TextButton" {
+ Name = "ScrollUpButton",
+ Text = "",
+ AutoButtonColor = false,
+ BackgroundColor3 = Color3.new(0, 0, 0),
+ BorderColor3 = Color3.new(1, 1, 1),
+ BackgroundTransparency = 0.5,
+ Size = UDim2.new(0, 18, 0, 18),
+ ZIndex = 2,
+ Parent = controlFrame,
+ }
for i = 1, 6 do
- local triFrame = Instance.new "Frame"
- triFrame.BorderColor3 = Color3.new(1, 1, 1)
- triFrame.Name = "tri" .. tostring(i)
- triFrame.ZIndex = 3
- triFrame.BackgroundTransparency = 0.5
- triFrame.Size = UDim2.new(0, 12 - ((i - 1) * 2), 0, 0)
- triFrame.Position = UDim2.new(0, 3 + (i - 1), 0.5, 2 - (i - 1))
- triFrame.Parent = scrollUpButton
+ New "Frame" {
+ BorderColor3 = Color3.new(1, 1, 1),
+ Name = "tri" .. i,
+ ZIndex = 3,
+ BackgroundTransparency = 0.5,
+ Size = UDim2.new(0, 12 - ((i - 1) * 2), 0, 0),
+ Position = UDim2.new(0, 3 + (i - 1), 0.5, 2 - (i - 1)),
+ Parent = scrollUpButton,
+ }
end
scrollUpButton.MouseEnter:connect(function()
scrollUpButton.BackgroundTransparency = 0.1
@@ -1018,43 +1030,48 @@ RbxGui.CreateTrueScrollingFrame = function()
end)
scrollDownButton.Parent = controlFrame
- local scrollTrack = Instance.new "Frame"
- scrollTrack.Name = "ScrollTrack"
- scrollTrack.BackgroundTransparency = 1
- scrollTrack.Size = UDim2.new(0, 18, 1, -38)
- scrollTrack.Position = UDim2.new(0, 0, 0, 19)
- scrollTrack.Parent = controlFrame
+ local scrollTrack = New "Frame" {
+ Name = "ScrollTrack",
+ BackgroundTransparency = 1,
+ Size = UDim2.new(0, 18, 1, -38),
+ Position = UDim2.new(0, 0, 0, 19),
+ Parent = controlFrame,
+ }
- local scrollbar = Instance.new "TextButton"
- scrollbar.BackgroundColor3 = Color3.new(0, 0, 0)
- scrollbar.BorderColor3 = Color3.new(1, 1, 1)
- scrollbar.BackgroundTransparency = 0.5
- scrollbar.AutoButtonColor = false
- scrollbar.Text = ""
- scrollbar.Active = true
- scrollbar.Name = "ScrollBar"
- scrollbar.ZIndex = 2
- scrollbar.BackgroundTransparency = 0.5
- scrollbar.Size = UDim2.new(0, 18, 0.1, 0)
- scrollbar.Position = UDim2.new(0, 0, 0, 0)
- scrollbar.Parent = scrollTrack
+ local scrollbar = New "TextButton" {
+ BackgroundColor3 = Color3.new(0, 0, 0),
+ BorderColor3 = Color3.new(1, 1, 1),
+ BackgroundTransparency = 0.5,
+ AutoButtonColor = false,
+ Text = "",
+ Active = true,
+ Name = "ScrollBar",
+ ZIndex = 2,
+ Size = UDim2.new(0, 18, 0.1, 0),
+ Position = UDim2.new(0, 0, 0, 0),
+ Parent = scrollTrack,
+ }
- local scrollNub = Instance.new "Frame"
- scrollNub.Name = "ScrollNub"
- scrollNub.BorderColor3 = Color3.new(1, 1, 1)
- scrollNub.Size = UDim2.new(0, 10, 0, 0)
- scrollNub.Position = UDim2.new(0.5, -5, 0.5, 0)
- scrollNub.ZIndex = 2
- scrollNub.BackgroundTransparency = 0.5
- scrollNub.Parent = scrollbar
+ local function nub()
+ return New "Frame" {
+ Name = "ScrollNub",
+ BorderColor3 = Color3.new(1, 1, 1),
+ Size = UDim2.new(0, 10, 0, 0),
+ ZIndex = 2,
+ BackgroundTransparency = 0.5,
+ Parent = scrollbar,
+ }
+ end
- local newNub = scrollNub:Clone()
- newNub.Position = UDim2.new(0.5, -5, 0.5, -2)
- newNub.Parent = scrollbar
-
- local lastNub = scrollNub:Clone()
- lastNub.Position = UDim2.new(0.5, -5, 0.5, 2)
- lastNub.Parent = scrollbar
+ local scrollNub = Hydrate(nub()) {
+ Position = UDim2.new(0.5, -5, 0.5, 0),
+ }
+ local newNub = Hydrate(nub()) {
+ Position = UDim2.new(0.5, -5, 0.5, -2),
+ }
+ local lastNub = Hydrate(nub()) {
+ Position = UDim2.new(0.5, -5, 0.5, 2),
+ }
scrollbar.MouseEnter:connect(function()
scrollbar.BackgroundTransparency = 0.1
@@ -1069,14 +1086,15 @@ RbxGui.CreateTrueScrollingFrame = function()
lastNub.BackgroundTransparency = 0.5
end)
- local mouseDrag = Instance.new "ImageButton"
- mouseDrag.Active = false
- mouseDrag.Size = UDim2.new(1.5, 0, 1.5, 0)
- mouseDrag.AutoButtonColor = false
- mouseDrag.BackgroundTransparency = 1
- mouseDrag.Name = "mouseDrag"
- mouseDrag.Position = UDim2.new(-0.25, 0, -0.25, 0)
- mouseDrag.ZIndex = 10
+ local mouseDrag = New "ImageButton" {
+ Active = false,
+ Size = UDim2.new(1.5, 0, 1.5, 0),
+ AutoButtonColor = false,
+ BackgroundTransparency = 1,
+ Name = "mouseDrag",
+ Position = UDim2.new(-0.25, 0, -0.25, 0),
+ ZIndex = 10,
+ }
local function positionScrollBar(_, y, offset)
local oldPos = scrollbar.Position
@@ -1549,7 +1567,7 @@ RbxGui.CreateScrollingFrame = function(orderList, scrollStyle)
local scrollStamp = 0
local scrollDrag = New "ImageButton" {
- Image = "http://banland.xyz/asset/?id=61367186",
+ Image = "http://banland.xyz/asset?id=61367186",
Size = UDim2.new(1, 0, 0, 16),
BackgroundTransparency = 1,
Name = "ScrollDrag",
@@ -2773,7 +2791,7 @@ RbxGui.CreateSetPanel = function(
local SmallThumbnailUrl
local LargeThumbnailUrl
- local BaseUrl = game:GetService("ContentProvider").BaseUrl:lower()
+ local BaseUrl = string.lower(ContentProvider.BaseUrl)
local ThumbUrl = `{BaseUrl}Game/Tools/ThumbnailAsset.ashx?fmt=png&wd=`
if useAssetVersionId then
@@ -3118,7 +3136,7 @@ RbxGui.CreateSetPanel = function(
local function showLargePreview(insertButton)
if insertButton:FindFirstChild "AssetId" then
delay(0, function()
- game:GetService("ContentProvider"):Preload(
+ ContentProvider:Preload(
LargeThumbnailUrl .. tostring(insertButton.AssetId.Value)
)
setGui.SetPanel.ItemPreview.LargePreview.Image = LargeThumbnailUrl
@@ -3212,17 +3230,9 @@ RbxGui.CreateSetPanel = function(
end
local function createDropDownMenuButton(parent)
- -- local dropDownButton = Instance.new "ImageButton"
- -- dropDownButton.Name = "DropDownButton"
- -- dropDownButton.Image = "http://banland.xyz/asset/?id=67581509"
- -- dropDownButton.BackgroundTransparency = 1
- -- dropDownButton.Size = UDim2.new(0, 16, 0, 16)
- -- dropDownButton.Position = UDim2.new(1, -24, 0, 6)
- -- dropDownButton.ZIndex = parent.ZIndex + 2
- -- dropDownButton.Parent = parent
local dropDownButton = New "ImageButton" {
Name = "DropDownButton",
- Image = "http://banland.xyz/asset/?id=67581509",
+ Image = "http://banland.xyz/asset?id=67581509",
BackgroundTransparency = 1,
Size = UDim2.new(0, 16, 0, 16),
Position = UDim2.new(1, -24, 0, 6),
@@ -3295,8 +3305,7 @@ RbxGui.CreateSetPanel = function(
local newImageUrl = SmallThumbnailUrl .. assetId
if newImageUrl ~= insertFrame.Button.ButtonImage.Image then
delay(0, function()
- game:GetService("ContentProvider")
- :Preload(SmallThumbnailUrl .. assetId)
+ ContentProvider:Preload(SmallThumbnailUrl .. assetId)
insertFrame.Button.ButtonImage.Image = SmallThumbnailUrl
.. assetId
end)
@@ -3416,8 +3425,7 @@ RbxGui.CreateSetPanel = function(
Data.Category[Data.CurrentCategory].Button = button
if SetCache[setId] == nil then
- SetCache[setId] = game:GetService("InsertService")
- :GetCollection(setId)
+ SetCache[setId] = InsertService:GetCollection(setId)
end
Data.Category[Data.CurrentCategory].Contents = SetCache[setId]
@@ -3585,8 +3593,7 @@ RbxGui.CreateSetPanel = function(
local userData = {}
for id = 1, #userIdsForSets do
- local newUserData = game:GetService("InsertService")
- :GetUserSets(userIdsForSets[id])
+ local newUserData = InsertService:GetUserSets(userIdsForSets[id])
if newUserData and #newUserData > 2 then
-- start at #3 to skip over My Decals and My Models for each account
for category = 3, #newUserData do
@@ -3745,7 +3752,7 @@ RbxGui.CreateTerrainMaterialSelector = function(size, position)
end
materialToImageMap[v] =
- { Regular = `http://banland.xyz/asset/?id={toAdd}` }
+ { Regular = `http://banland.xyz/asset?id={toAdd}` }
end
local scrollFrame, scrollUp, scrollDown, recalculateScroll =
@@ -3855,8 +3862,7 @@ RbxGui.CreateTerrainMaterialSelector = function(size, position)
end
RbxGui.CreateLoadingFrame = function(name, size, position)
- game:GetService("ContentProvider")
- :Preload "http://banland.xyz/asset/?id=35238053"
+ ContentProvider:Preload "http://banland.xyz/asset?id=35238053"
local loadingFrame = New "Frame" {
Name = "LoadingFrame",
@@ -3888,7 +3894,7 @@ RbxGui.CreateLoadingFrame = function(name, size, position)
local loadingGreenBar = New "ImageLabel" {
Name = "LoadingGreenBar",
- Image = "http://banland.xyz/asset/?id=35238053",
+ Image = "http://banland.xyz/asset?id=35238053",
Position = UDim2.new(0, 0, 0, 0),
Size = UDim2.new(0, 0, 1, 0),
Visible = false,
@@ -4316,7 +4322,7 @@ RbxGui.CreatePluginFrame = function(name, size, position, scrollable, parent)
draggingVertical = false
areaSoak.Visible = false
end)
- areaSoak.MouseMoved:connect(function(_, y)
+ areaSoak.MouseMoved:connect(function(_, y: number)
if not draggingVertical then
return
end
diff --git a/luau/46295863.luau b/luau/46295863.luau
index 2eb0463..5011fe1 100644
--- a/luau/46295863.luau
+++ b/luau/46295863.luau
@@ -28,7 +28,7 @@ local helpButton, updateCameraDropDownSelection, updateVideoCaptureDropDownSelec
local tweenTime = 0.2
local mouseLockLookScreenUrl = "http://banland.xyz/asset?id=54071825"
-local classicLookScreenUrl = "http://banland.xyz/Asset?id=45915798"
+local classicLookScreenUrl = "http://banland.xyz/asset?id=45915798"
local hasGraphicsSlider = true
local GraphicsQualityLevels = 10 -- how many levels we allow on graphics slider
@@ -417,17 +417,17 @@ local function createHelpDialog(baseZIndex)
buttons[2] = {}
buttons[2].Text = "Move"
buttons[2].Function = function()
- image.Image = "http://banland.xyz/Asset?id=45915811"
+ image.Image = "http://banland.xyz/asset?id=45915811"
end
buttons[3] = {}
buttons[3].Text = "Gear"
buttons[3].Function = function()
- image.Image = "http://banland.xyz/Asset?id=45917596"
+ image.Image = "http://banland.xyz/asset?id=45917596"
end
buttons[4] = {}
buttons[4].Text = "Zoom"
buttons[4].Function = function()
- image.Image = "http://banland.xyz/Asset?id=45915825"
+ image.Image = "http://banland.xyz/asset?id=45915825"
end
CreateTextButtons(buttonRow, buttons, UDim.new(0, 0), UDim.new(1, 0))
@@ -2025,7 +2025,7 @@ local createSaveDialogs = function()
-8
)
spinnerImage.BackgroundTransparency = 1
- spinnerImage.Image = "http://banland.xyz/Asset?id=45880710"
+ spinnerImage.Image = "http://banland.xyz/asset?id=45880710"
spinnerImage.Parent = spinnerFrame
spinnerIcons[spinnerNum] = spinnerImage
@@ -2047,10 +2047,10 @@ local createSaveDialogs = function()
while pos < 8 do
if pos == spinPos or pos == ((spinPos + 1) % 8) then
spinnerIcons[pos + 1].Image =
- "http://banland.xyz/Asset?id=45880668"
+ "http://banland.xyz/asset?id=45880668"
else
spinnerIcons[pos + 1].Image =
- "http://banland.xyz/Asset?id=45880710"
+ "http://banland.xyz/asset?id=45880710"
end
pos += 1
diff --git a/luau/48488451.luau b/luau/48488451.luau
index 047b9a9..b058468 100644
--- a/luau/48488451.luau
+++ b/luau/48488451.luau
@@ -25,7 +25,7 @@ local popupFrame = New "Frame" {
Name = "Backing",
BackgroundTransparency = 1,
Size = UDim2.new(1, 0, 1, 0),
- Image = "http://banland.xyz/asset/?id=47574181",
+ Image = "http://banland.xyz/asset?id=47574181",
ZIndex = 2,
},
},
diff --git a/luau/53878047.luau b/luau/53878047.luau
index ed139bd..d53d3f4 100644
--- a/luau/53878047.luau
+++ b/luau/53878047.luau
@@ -77,7 +77,7 @@ local CurrentLoadout = New "Frame" {
New "ImageLabel" {
Name = "Background",
Size = UDim2.new(1.2, 0, 1.2, 0),
- Image = "http://banland.xyz/asset/?id=96536002",
+ Image = "http://banland.xyz/asset?id=96536002",
BackgroundTransparency = 1,
Position = UDim2.new(-0.1, 0, -0.1, 0),
ZIndex = 0.0,
@@ -85,7 +85,7 @@ local CurrentLoadout = New "Frame" {
New "ImageLabel" {
Size = UDim2.new(1, 0, 0.025, 1),
Position = UDim2.new(0, 0, 0, 0),
- Image = "http://banland.xyz/asset/?id=97662207",
+ Image = "http://banland.xyz/asset?id=97662207",
BackgroundTransparency = 1,
},
},
@@ -105,13 +105,13 @@ local CurrentLoadout = New "Frame" {
New "ImageLabel" {
Name = "Background",
BackgroundTransparency = 1,
- Image = "http://banland.xyz/asset/?id=97613075",
+ Image = "http://banland.xyz/asset?id=97613075",
Size = UDim2.new(1, 0, 1, 0),
},
-- New "ImageLabel" {
-- Name = "Highlight",
-- BackgroundTransparency = 1,
- -- Image = "http://banland.xyz/asset/?id=97643886",
+ -- Image = "http://banland.xyz/asset?id=97643886",
-- Size = UDim2.new(1, 0, 1, 0),
-- Visible = false,
-- }
@@ -183,7 +183,7 @@ New "ImageButton" {
Visible = false,
Name = "BackpackButton",
BackgroundTransparency = 1,
- Image = "http://banland.xyz/asset/?id=97617958",
+ Image = "http://banland.xyz/asset?id=97617958",
Position = UDim2.new(0.5, -60, 1, -108),
Size = UDim2.new(0, 120, 0, 18),
Parent = gui.ControlFrame,
@@ -283,7 +283,7 @@ New "Frame" {
New "ImageLabel" {
RobloxLocked = true,
Name = "XImage",
- Image = "http://banland.xyz/asset/?id=75547445",
+ Image = "http://banland.xyz/asset?id=75547445",
BackgroundTransparency = 1,
Position = UDim2.new(-0.25, -1, -0.25, -1),
Size = UDim2.new(1.5, 2, 1.5, 2),
@@ -495,7 +495,7 @@ New "Frame" {
New "ImageLabel" {
Name = "Background",
BackgroundTransparency = 1,
- Image = "http://banland.xyz/asset/?id=97613075",
+ Image = "http://banland.xyz/asset?id=97613075",
Size = UDim2.new(1, 0, 1, 0),
},
New "ObjectValue" {
diff --git a/luau/73157242.luau b/luau/73157242.luau
index efe594d..480efe6 100644
--- a/luau/73157242.luau
+++ b/luau/73157242.luau
@@ -12,7 +12,7 @@ local RbxStamper = {}
-- Return:
-- cellPos - The terrain cell intersection point if there is one, vectorPos if there isn't.
-- hit - Whether there was a plane intersection. Value is true if there was, false if not.
-function PlaneIntersection(vectorPos)
+local function PlaneIntersection(vectorPos)
local hit = false
local currCamera = game.Workspace.CurrentCamera
local startPos = Vector3.new(
diff --git a/luau/89449008.luau b/luau/89449008.luau
index 87fb2ee..6042f4f 100644
--- a/luau/89449008.luau
+++ b/luau/89449008.luau
@@ -1,19 +1,19 @@
-- CoreGui.RobloxGui.Backpack.CoreScripts/BackpackScripts/Back (1?)
print "[Mercury]: Loaded corescript 89449008"
+local News = require "../Modules/New"
+local New = News.New
+local Hydrate = News.Hydrate
+
-- A couple of necessary functions
-local function waitForChild(instance, name)
- assert(instance)
- assert(name)
+local function waitForChild(instance: Instance, name: string)
while not instance:FindFirstChild(name) do
print("Waiting for ...", instance, name)
instance.ChildAdded:wait()
end
return instance:FindFirstChild(name)
end
-local function waitForProperty(instance, property)
- assert(instance)
- assert(property)
+local function waitForProperty(instance: Instance, property: string)
while not instance[property] do
instance.Changed:wait()
end
@@ -42,7 +42,7 @@ local StaticTabName = "gear"
local backpack = script.Parent
-local backpackItems = {}
+local backpackItems: { Tool | HopperBin } = {}
local buttons = {}
local debounce = false
@@ -108,38 +108,30 @@ scrollFrameLoadout.Position = UDim2.new(0, 0, 0, 0)
scrollFrameLoadout.Size = UDim2.new(1, 0, 1, 0)
scrollFrameLoadout.Parent = backpack.Gear.GearLoadouts.LoadoutsList
-local LoadoutButton = Instance.new "TextButton"
-LoadoutButton.RobloxLocked = true
-LoadoutButton.Name = "LoadoutButton"
-LoadoutButton.Font = Enum.Font.ArialBold
-LoadoutButton.FontSize = Enum.FontSize.Size14
-LoadoutButton.Position = UDim2.new(0, 0, 0, 0)
-LoadoutButton.Size = UDim2.new(1, 0, 0, 32)
-LoadoutButton.Style = Enum.ButtonStyle.RobloxButton
-LoadoutButton.Text = "Loadout #1"
-LoadoutButton.TextColor3 = Color3.new(1, 1, 1)
-LoadoutButton.Parent = scrollFrameLoadout
+for i = 1, 4 do
+ New "TextButton" {
+ RobloxLocked = true,
+ Name = "LoadoutButton",
+ Font = Enum.Font.ArialBold,
+ FontSize = Enum.FontSize.Size14,
+ Position = UDim2.new(0, 0, 0, 0),
+ Size = UDim2.new(1, 0, 0, 32),
+ Style = Enum.ButtonStyle.RobloxButton,
+ Text = "Loadout #" .. i,
+ TextColor3 = Color3.new(1, 1, 1),
+ Parent = scrollFrameLoadout,
+ }
+end
-local LoadoutButtonTwo = LoadoutButton:clone()
-LoadoutButtonTwo.Text = "Loadout #2"
-LoadoutButtonTwo.Parent = scrollFrameLoadout
-
-local LoadoutButtonThree = LoadoutButton:clone()
-LoadoutButtonThree.Text = "Loadout #3"
-LoadoutButtonThree.Parent = scrollFrameLoadout
-
-local LoadoutButtonFour = LoadoutButton:clone()
-LoadoutButtonFour.Text = "Loadout #4"
-LoadoutButtonFour.Parent = scrollFrameLoadout
-
-local scrollBarLoadout = Instance.new "Frame"
-scrollBarLoadout.Name = "ScrollBarLoadout"
-scrollBarLoadout.BackgroundTransparency = 0.9
-scrollBarLoadout.BackgroundColor3 = Color3.new(1, 1, 1)
-scrollBarLoadout.BorderSizePixel = 0
-scrollBarLoadout.Size = UDim2.new(0, 17, 1, -36)
-scrollBarLoadout.Position = UDim2.new(0, 0, 0, 18)
-scrollBarLoadout.Parent = backpack.Gear.GearLoadouts.GearLoadoutsScrollingArea
+New "Frame" {
+ Name = "ScrollBarLoadout",
+ BackgroundTransparency = 0.9,
+ BackgroundColor3 = Color3.new(1, 1, 1),
+ BorderSizePixel = 0,
+ Size = UDim2.new(0, 17, 1, -36),
+ Position = UDim2.new(0, 0, 0, 18),
+ Parent = backpack.Gear.GearLoadouts.GearLoadoutsScrollingArea,
+}
scrollDownLoadout.Position = UDim2.new(0, 0, 1, -17)
@@ -147,7 +139,7 @@ scrollUpLoadout.Parent = backpack.Gear.GearLoadouts.GearLoadoutsScrollingArea
scrollDownLoadout.Parent = backpack.Gear.GearLoadouts.GearLoadoutsScrollingArea
-- Begin Functions
-function removeFromMap(map, object)
+local function removeFromMap(map, object)
for i = 1, #map do
if map[i] == object then
table.remove(map, i)
@@ -156,7 +148,7 @@ function removeFromMap(map, object)
end
end
-function robloxLock(instance)
+local function robloxLock(instance)
instance.RobloxLocked = true
local children = instance:GetChildren()
if children then
@@ -166,105 +158,14 @@ function robloxLock(instance)
end
end
-function resize()
- local size = 0
- if gearPreview.AbsoluteSize.Y > gearPreview.AbsoluteSize.X then
- size = gearPreview.AbsoluteSize.X * 0.75
- else
- size = gearPreview.AbsoluteSize.Y * 0.75
- end
-
- waitForChild(gearPreview, "GearImage")
- gearPreview.GearImage.Size = UDim2.new(0, size, 0, size)
- gearPreview.GearImage.Position =
- UDim2.new(0, gearPreview.AbsoluteSize.X / 2 - size / 2, 0.75, -size)
-
- resizeGrid()
-end
-
-function addToGrid(child)
- if not child:IsA "Tool" then
- if not child:IsA "HopperBin" then
- return
- end
- end
- if child:FindFirstChild "RobloxBuildTool" then
- return
- end
-
- for _, v in pairs(backpackItems) do -- check to see if we already have this gear registered
- if v == child then
- return
- end
- end
-
- table.insert(backpackItems, child)
-
- local changeCon = child.Changed:connect(function(prop)
- if prop == "Name" then
- if buttons[child] then
- if buttons[child].Image == "" then
- buttons[child].GearText.Text = child.Name
- end
- end
- end
- end)
- local ancestryCon
- ancestryCon = child.AncestryChanged:connect(function(_, _)
- local thisObject
- for _, v in pairs(backpackItems) do
- if v == child then
- thisObject = v
- break
- end
- end
-
- waitForProperty(player, "Character")
- waitForChild(player, "Backpack")
- if
- child.Parent ~= player.Backpack
- and child.Parent ~= player.Character
- then
- if ancestryCon then
- ancestryCon:disconnect()
- end
- if changeCon then
- changeCon:disconnect()
- end
-
- for _, v in pairs(backpackItems) do
- if v == thisObject then
- if mouseEnterCons[buttons[v]] then
- mouseEnterCons[buttons[v]]:disconnect()
- end
- if mouseClickCons[buttons[v]] then
- mouseClickCons[buttons[v]]:disconnect()
- end
- buttons[v].Parent = nil
- buttons[v] = nil
- break
- end
- end
-
- removeFromMap(backpackItems, thisObject)
-
- resizeGrid()
- else
- resizeGrid()
- end
- updateGridActive()
- end)
- resizeGrid()
-end
-
-function buttonClick(button)
+local function buttonClick(button)
if button:FindFirstChild "UnequipContextMenu" and not button.Active then
button.UnequipContextMenu.Visible = true
browsingMenu = true
end
end
-function previewGear(button)
+local function previewGear(button)
if not browsingMenu then
gearPreview.Visible = false
gearPreview.GearImage.Image = button.Image
@@ -272,7 +173,7 @@ function previewGear(button)
end
end
-function findEmptySlot()
+local function findEmptySlot()
local smallestNum
local loadout = currentLoadout:GetChildren()
for i = 1, #loadout do
@@ -286,27 +187,46 @@ function findEmptySlot()
end
end
end
- if smallestNum == 10 then
- smallestNum = 0
+ return smallestNum == 10 and 0 or smallestNum
+end
+
+local function inLoadout(gear)
+ local children = currentLoadout:GetChildren()
+ for i = 1, #children do
+ if children[i]:IsA "Frame" then
+ local button = children[i]:GetChildren()
+ if
+ #button > 0
+ and button[1].GearReference.Value
+ and button[1].GearReference.Value == gear
+ then
+ return true
+ end
+ end
end
- return smallestNum
+ return false
end
-function unequipGear(physGear)
- physGear.Parent = playerBackpack
- updateGridActive()
+local function updateGridActive()
+ for _, v in pairs(backpackItems) do
+ if buttons[v] then
+ local gear
+ local gearRef = buttons[v]:FindFirstChild "GearReference"
+
+ if gearRef then
+ gear = gearRef.Value
+ end
+
+ if (not gear) or inLoadout(gear) then
+ buttons[v].Active = false
+ else
+ buttons[v].Active = true
+ end
+ end
+ end
end
-function highlight(button)
- button.TextColor3 = Color3.new(0, 0, 0)
- button.BackgroundColor3 = Color3.new(0.8, 0.8, 0.8)
-end
-function clearHighlight(button)
- button.TextColor3 = Color3.new(1, 1, 1)
- button.BackgroundColor3 = Color3.new(0, 0, 0)
-end
-
-function swapGearSlot(slot, newGearButton)
+local function swapGearSlot(slot, newGearButton)
if not swapSlot.Value then -- signal loadout to swap a gear out
swapSlot.Slot.Value = slot
swapSlot.GearButton.Value = newGearButton
@@ -315,200 +235,16 @@ function swapGearSlot(slot, newGearButton)
end
end
-function checkForSwap(button, x, y)
- local loadoutChildren = currentLoadout:GetChildren()
- for i = 1, #loadoutChildren do
- if
- loadoutChildren[i]:IsA "Frame"
- and string.find(loadoutChildren[i].Name, "Slot")
- then
- if
- x >= loadoutChildren[i].AbsolutePosition.x
- and x
- <= (loadoutChildren[i].AbsolutePosition.x + loadoutChildren[i].AbsoluteSize.x)
- then
- if
- y >= loadoutChildren[i].AbsolutePosition.y
- and y
- <= (loadoutChildren[i].AbsolutePosition.y + loadoutChildren[i].AbsoluteSize.y)
- then
- local slot =
- tonumber(string.sub(loadoutChildren[i].Name, 5))
- swapGearSlot(slot, button)
- return true
- end
- end
- end
- end
- return false
-end
-
-local UnequipGearMenuClick = function(element, menu)
- if type(element.Action) ~= "number" then
- return
- end
- local num = element.Action
- if num == 1 then -- remove from loadout
- unequipGear(menu.Parent.GearReference.Value)
- local inventoryButton = menu.Parent
- local gearToUnequip = inventoryButton.GearReference.Value
- local loadoutChildren = currentLoadout:GetChildren()
- local slot = -1
- for i = 1, #loadoutChildren do
- if loadoutChildren[i]:IsA "Frame" then
- local button = loadoutChildren[i]:GetChildren()
- if
- button[1]
- and button[1].GearReference.Value == gearToUnequip
- then
- slot = button[1].SlotNumber.Text
- break
- end
- end
- end
- swapGearSlot(slot, nil)
- end
-end
-
-function getGearContextMenu()
- local gearContextMenu = Instance.new "Frame"
- gearContextMenu.Active = true
- gearContextMenu.Name = "UnequipContextMenu"
- gearContextMenu.Size = UDim2.new(0, 115, 0, 70)
- gearContextMenu.Position = UDim2.new(0, -16, 0, -16)
- gearContextMenu.BackgroundTransparency = 1
- gearContextMenu.Visible = false
-
- local gearContextMenuButton = Instance.new "TextButton"
- gearContextMenuButton.Name = "UnequipContextMenuButton"
- gearContextMenuButton.Text = ""
- gearContextMenuButton.Style = Enum.ButtonStyle.RobloxButtonDefault
- gearContextMenuButton.ZIndex = 8
- gearContextMenuButton.Size = UDim2.new(1, 0, 1, -20)
- gearContextMenuButton.Visible = true
- gearContextMenuButton.Parent = gearContextMenu
-
- local elementHeight = 12
-
- local contextMenuElements = {}
- local contextMenuElementsName = { "Remove Hotkey" }
-
- for i = 1, #contextMenuElementsName do
- local element = {}
- element.Type = "Button"
- element.Text = contextMenuElementsName[i]
- element.Action = i
- element.DoIt = UnequipGearMenuClick
- table.insert(contextMenuElements, element)
- end
-
- for i, contextElement in ipairs(contextMenuElements) do
- local element = contextElement
- if element.Type == "Button" then
- local button = Instance.new "TextButton"
- button.Name = `UnequipContextButton{i}`
- button.BackgroundColor3 = Color3.new(0, 0, 0)
- button.BorderSizePixel = 0
- button.TextXAlignment = Enum.TextXAlignment.Left
- button.Text = ` {contextElement.Text}`
- button.Font = Enum.Font.Arial
- button.FontSize = Enum.FontSize.Size14
- button.Size = UDim2.new(1, 8, 0, elementHeight)
- button.Position = UDim2.new(0, 0, 0, elementHeight * i)
- button.TextColor3 = Color3.new(1, 1, 1)
- button.ZIndex = 9
- button.Parent = gearContextMenuButton
-
- if not IsTouchDevice() then
- button.MouseButton1Click:connect(function()
- if button.Active and not gearContextMenu.Parent.Active then
- pcall(function()
- element.DoIt(element, gearContextMenu)
- end)
- browsingMenu = false
- gearContextMenu.Visible = false
- clearHighlight(button)
- clearPreview()
- end
- end)
-
- button.MouseEnter:connect(function()
- if button.Active and gearContextMenu.Parent.Active then
- highlight(button)
- end
- end)
- button.MouseLeave:connect(function()
- if button.Active and gearContextMenu.Parent.Active then
- clearHighlight(button)
- end
- end)
- end
-
- contextElement.Button = button
- contextElement.Element = button
- elseif element.Type == "Label" then
- local frame = Instance.new "Frame"
- frame.Name = `ContextLabel{i}`
- frame.BackgroundTransparency = 1
- frame.Size = UDim2.new(1, 8, 0, elementHeight)
-
- local label = Instance.new "TextLabel"
- label.Name = "Text1"
- label.BackgroundTransparency = 1
- label.BackgroundColor3 = Color3.new(1, 1, 1)
- label.BorderSizePixel = 0
- label.TextXAlignment = Enum.TextXAlignment.Left
- label.Font = Enum.Font.ArialBold
- label.FontSize = Enum.FontSize.Size14
- label.Position = UDim2.new(0, 0, 0, 0)
- label.Size = UDim2.new(0.5, 0, 1, 0)
- label.TextColor3 = Color3.new(1, 1, 1)
- label.ZIndex = 9
- label.Parent = frame
- element.Label1 = label
-
- if element.GetText2 then
- label = Instance.new "TextLabel"
- label.Name = "Text2"
- label.BackgroundTransparency = 1
- label.BackgroundColor3 = Color3.new(1, 1, 1)
- label.BorderSizePixel = 0
- label.TextXAlignment = Enum.TextXAlignment.Right
- label.Font = Enum.Font.Arial
- label.FontSize = Enum.FontSize.Size14
- label.Position = UDim2.new(0.5, 0, 0, 0)
- label.Size = UDim2.new(0.5, 0, 1, 0)
- label.TextColor3 = Color3.new(1, 1, 1)
- label.ZIndex = 9
- label.Parent = frame
- element.Label2 = label
- end
- frame.Parent = gearContextMenuButton
- element.Label = frame
- element.Element = frame
- end
- end
-
- gearContextMenu.ZIndex = 4
- gearContextMenu.MouseLeave:connect(function()
- browsingMenu = false
- gearContextMenu.Visible = false
- clearPreview()
- end)
- robloxLock(gearContextMenu)
-
- return gearContextMenu
-end
-
-function resizeGrid()
+local function resizeGrid()
for _, v in pairs(backpackItems) do
if not v:FindFirstChild "RobloxBuildTool" then
if not buttons[v] then
- local buttonClone = gearButton:clone()
- buttonClone.Parent = grid.ScrollingFrame
- buttonClone.Visible = true
- buttonClone.Image = v.TextureId
- if buttonClone.Image == "" then
+ local buttonClone = Hydrate(gearButton:clone()) {
+ Parent = grid.ScrollingFrame,
+ Visible = true,
+ Image = v.TextureId,
+ }
+ if v.TextureId == "" then
buttonClone.GearText.Text = v.Name
end
@@ -582,7 +318,294 @@ function resizeGrid()
recalculateScroll()
end
-function showPartialGrid(subset)
+local function resize()
+ local size = gearPreview.AbsoluteSize.Y > gearPreview.AbsoluteSize.X
+ and gearPreview.AbsoluteSize.X * 0.75
+ or gearPreview.AbsoluteSize.Y * 0.75
+
+ waitForChild(gearPreview, "GearImage")
+ gearPreview.GearImage.Size = UDim2.new(0, size, 0, size)
+ gearPreview.GearImage.Position =
+ UDim2.new(0, gearPreview.AbsoluteSize.X / 2 - size / 2, 0.75, -size)
+
+ resizeGrid()
+end
+
+local function addToGrid(child: Tool | HopperBin)
+ if
+ not (child:IsA "Tool" or child:IsA "HopperBin")
+ or child:FindFirstChild "RobloxBuildTool"
+ then
+ return
+ end
+
+ for _, v in pairs(backpackItems) do -- check to see if we already have this gear registered
+ if v == child then
+ return
+ end
+ end
+
+ table.insert(backpackItems, child)
+
+ local changeCon = child.Changed:connect(function(prop)
+ if prop == "Name" and buttons[child] and buttons[child].Image == "" then
+ buttons[child].GearText.Text = child.Name
+ end
+ end)
+ local ancestryCon
+ ancestryCon = child.AncestryChanged:connect(function()
+ local thisObject
+ for _, v in pairs(backpackItems) do
+ if v == child then
+ thisObject = v
+ break
+ end
+ end
+
+ waitForProperty(player, "Character")
+ waitForChild(player, "Backpack")
+ if
+ child.Parent ~= player.Backpack
+ and child.Parent ~= player.Character
+ then
+ if ancestryCon then
+ ancestryCon:disconnect()
+ end
+ if changeCon then
+ changeCon:disconnect()
+ end
+
+ for _, v in pairs(backpackItems) do
+ if v == thisObject then
+ if mouseEnterCons[buttons[v]] then
+ mouseEnterCons[buttons[v]]:disconnect()
+ end
+ if mouseClickCons[buttons[v]] then
+ mouseClickCons[buttons[v]]:disconnect()
+ end
+ buttons[v].Parent = nil
+ buttons[v] = nil
+ break
+ end
+ end
+
+ removeFromMap(backpackItems, thisObject)
+ end
+ resizeGrid()
+ updateGridActive()
+ end)
+ resizeGrid()
+end
+
+local function unequipGear(physGear)
+ physGear.Parent = playerBackpack
+ updateGridActive()
+end
+
+local function highlight(button)
+ button.TextColor3 = Color3.new(0, 0, 0)
+ button.BackgroundColor3 = Color3.new(0.8, 0.8, 0.8)
+end
+
+local function clearHighlight(button)
+ button.TextColor3 = Color3.new(1, 1, 1)
+ button.BackgroundColor3 = Color3.new(0, 0, 0)
+end
+
+function checkForSwap(button, x, y)
+ local loadoutChildren = currentLoadout:GetChildren()
+ for i = 1, #loadoutChildren do
+ if
+ loadoutChildren[i]:IsA "Frame"
+ and string.find(loadoutChildren[i].Name, "Slot")
+ then
+ if
+ x >= loadoutChildren[i].AbsolutePosition.x
+ and x
+ <= (loadoutChildren[i].AbsolutePosition.x + loadoutChildren[i].AbsoluteSize.x)
+ then
+ if
+ y >= loadoutChildren[i].AbsolutePosition.y
+ and y
+ <= (loadoutChildren[i].AbsolutePosition.y + loadoutChildren[i].AbsoluteSize.y)
+ then
+ local slot =
+ tonumber(string.sub(loadoutChildren[i].Name, 5))
+ swapGearSlot(slot, button)
+ return true
+ end
+ end
+ end
+ end
+ return false
+end
+
+local UnequipGearMenuClick = function(element, menu)
+ if type(element.Action) ~= "number" then
+ return
+ end
+ local num = element.Action
+ if num == 1 then -- remove from loadout
+ unequipGear(menu.Parent.GearReference.Value)
+ local inventoryButton = menu.Parent
+ local gearToUnequip = inventoryButton.GearReference.Value
+ local loadoutChildren = currentLoadout:GetChildren()
+ local slot = -1
+ for i = 1, #loadoutChildren do
+ if loadoutChildren[i]:IsA "Frame" then
+ local button = loadoutChildren[i]:GetChildren()
+ if
+ button[1]
+ and button[1].GearReference.Value == gearToUnequip
+ then
+ slot = button[1].SlotNumber.Text
+ break
+ end
+ end
+ end
+ swapGearSlot(slot, nil)
+ end
+end
+
+local function clearPreview()
+ gearPreview.GearImage.Image = ""
+ gearPreview.GearStats.GearName.Text = ""
+end
+
+function getGearContextMenu()
+ local gearContextMenu = New "Frame" {
+ Active = true,
+ Name = "UnequipContextMenu",
+ Size = UDim2.new(0, 115, 0, 70),
+ Position = UDim2.new(0, -16, 0, -16),
+ BackgroundTransparency = 1,
+ Visible = false,
+ }
+
+ local gearContextMenuButton = New "TextButton" {
+ Name = "UnequipContextMenuButton",
+ Text = "",
+ Style = Enum.ButtonStyle.RobloxButtonDefault,
+ ZIndex = 8,
+ Size = UDim2.new(1, 0, 1, -20),
+ Visible = true,
+ Parent = gearContextMenu,
+ }
+
+ local elementHeight = 12
+
+ local contextMenuElements = {}
+ local contextMenuElementsName = { "Remove Hotkey" }
+
+ for i = 1, #contextMenuElementsName do
+ local element = {}
+ element.Type = "Button"
+ element.Text = contextMenuElementsName[i]
+ element.Action = i
+ element.DoIt = UnequipGearMenuClick
+ table.insert(contextMenuElements, element)
+ end
+
+ for i, contextElement in ipairs(contextMenuElements) do
+ local element = contextElement
+ if element.Type == "Button" then
+ local button = New "TextButton" {
+ Name = "UnequipContextButton" .. i,
+ BackgroundColor3 = Color3.new(0, 0, 0),
+ BorderSizePixel = 0,
+ TextXAlignment = Enum.TextXAlignment.Left,
+ Text = ` {contextElement.Text}`,
+ Font = Enum.Font.Arial,
+ FontSize = Enum.FontSize.Size14,
+ Size = UDim2.new(1, 8, 0, elementHeight),
+ Position = UDim2.new(0, 0, 0, elementHeight * i),
+ TextColor3 = Color3.new(1, 1, 1),
+ ZIndex = 9,
+ Parent = gearContextMenuButton,
+ }
+
+ if not IsTouchDevice() then
+ button.MouseButton1Click:connect(function()
+ if button.Active and not gearContextMenu.Parent.Active then
+ pcall(function()
+ element.DoIt(element, gearContextMenu)
+ end)
+ browsingMenu = false
+ gearContextMenu.Visible = false
+ clearHighlight(button)
+ clearPreview()
+ end
+ end)
+
+ button.MouseEnter:connect(function()
+ if button.Active and gearContextMenu.Parent.Active then
+ highlight(button)
+ end
+ end)
+ button.MouseLeave:connect(function()
+ if button.Active and gearContextMenu.Parent.Active then
+ clearHighlight(button)
+ end
+ end)
+ end
+
+ contextElement.Button = button
+ contextElement.Element = button
+ elseif element.Type == "Label" then
+ local frame = Instance.new "Frame"
+ frame.Name = `ContextLabel{i}`
+ frame.BackgroundTransparency = 1
+ frame.Size = UDim2.new(1, 8, 0, elementHeight)
+
+ element.Label1 = New "TextLabel" {
+ Name = "Text1",
+ BackgroundTransparency = 1,
+ BackgroundColor3 = Color3.new(1, 1, 1),
+ BorderSizePixel = 0,
+ TextXAlignment = Enum.TextXAlignment.Left,
+ Font = Enum.Font.ArialBold,
+ FontSize = Enum.FontSize.Size14,
+ Position = UDim2.new(0, 0, 0, 0),
+ Size = UDim2.new(0.5, 0, 1, 0),
+ TextColor3 = Color3.new(1, 1, 1),
+ ZIndex = 9,
+ Parent = frame,
+ }
+
+ if element.GetText2 then
+ element.Label2 = New "TextLabel" {
+ Name = "Text2",
+ BackgroundTransparency = 1,
+ BackgroundColor3 = Color3.new(1, 1, 1),
+ BorderSizePixel = 0,
+ TextXAlignment = Enum.TextXAlignment.Right,
+ Font = Enum.Font.Arial,
+ FontSize = Enum.FontSize.Size14,
+ Position = UDim2.new(0.5, 0, 0, 0),
+ Size = UDim2.new(0.5, 0, 1, 0),
+ TextColor3 = Color3.new(1, 1, 1),
+ ZIndex = 9,
+ Parent = frame,
+ }
+ end
+ frame.Parent = gearContextMenuButton
+ element.Label = frame
+ element.Element = frame
+ end
+ end
+
+ gearContextMenu.ZIndex = 4
+ gearContextMenu.MouseLeave:connect(function()
+ browsingMenu = false
+ gearContextMenu.Visible = false
+ clearPreview()
+ end)
+ robloxLock(gearContextMenu)
+
+ return gearContextMenu
+end
+
+local function showPartialGrid(subset)
for _, v in pairs(buttons) do
v.Parent = nil
end
@@ -594,51 +617,14 @@ function showPartialGrid(subset)
recalculateScroll()
end
-function showEntireGrid()
+local function showEntireGrid()
for _, v in pairs(buttons) do
v.Parent = grid.ScrollingFrame
end
recalculateScroll()
end
-function inLoadout(gear)
- local children = currentLoadout:GetChildren()
- for i = 1, #children do
- if children[i]:IsA "Frame" then
- local button = children[i]:GetChildren()
- if #button > 0 then
- if
- button[1].GearReference.Value
- and button[1].GearReference.Value == gear
- then
- return true
- end
- end
- end
- end
- return false
-end
-
-function updateGridActive()
- for _, v in pairs(backpackItems) do
- if buttons[v] then
- local gear
- local gearRef = buttons[v]:FindFirstChild "GearReference"
-
- if gearRef then
- gear = gearRef.Value
- end
-
- if (not gear) or inLoadout(gear) then
- buttons[v].Active = false
- else
- buttons[v].Active = true
- end
- end
- end
-end
-
-function centerGear(loadoutChildren)
+local function centerGear(loadoutChildren)
local gearButtons = {}
local lastSlotAdd
for i = 1, #loadoutChildren do
@@ -669,15 +655,7 @@ function centerGear(loadoutChildren)
end
end
-function tabClickHandler(tabName)
- if tabName == StaticTabName then
- backpackOpenHandler(tabName)
- else
- backpackCloseHandler(tabName)
- end
-end
-
-function backpackOpenHandler(currentTab)
+local function backpackOpenHandler(currentTab)
if currentTab and currentTab ~= StaticTabName then
backpack.Gear.Visible = false
return
@@ -691,7 +669,7 @@ function backpackOpenHandler(currentTab)
tellBackpackReadyFunc:Invoke()
end
-function backpackCloseHandler(currentTab)
+local function backpackCloseHandler(currentTab)
if currentTab and currentTab ~= StaticTabName then
backpack.Gear.Visible = false
return
@@ -704,7 +682,20 @@ function backpackCloseHandler(currentTab)
tellBackpackReadyFunc:Invoke()
end
-function loadoutCheck(child, selectState)
+local function tabClickHandler(tabName)
+ if tabName == StaticTabName then
+ backpackOpenHandler(tabName)
+ else
+ backpackCloseHandler(tabName)
+ end
+end
+
+local function loadoutCheck(
+ child: Instance & {
+ GearReference: ObjectValue,
+ },
+ selectState
+)
if not child:IsA "ImageButton" then
return
end
@@ -713,39 +704,35 @@ function loadoutCheck(child, selectState)
if
child:FindFirstChild "GearReference"
and buttons[v]:FindFirstChild "GearReference"
+ and buttons[v].GearReference.Value
+ == child.GearReference.Value
then
- if
- buttons[v].GearReference.Value == child.GearReference.Value
- then
- buttons[v].Active = selectState
- break
- end
+ buttons[v].Active = selectState
+ break
end
end
end
end
-function clearPreview()
- gearPreview.GearImage.Image = ""
- gearPreview.GearStats.GearName.Text = ""
-end
-
--- function removeAllEquippedGear(physGear)
+-- local function removeAllEquippedGear(physGear)
-- local stuff = player.Character:GetChildren()
-- for i = 1, #stuff do
--- if (stuff[i]:IsA "Tool" or stuff[i]:IsA "HopperBin") and stuff[i] ~= physGear then
+-- if
+-- (stuff[i]:IsA "Tool" or stuff[i]:IsA "HopperBin")
+-- and stuff[i] ~= physGear
+-- then
-- stuff[i].Parent = playerBackpack
-- end
-- end
-- end
--- function equipGear(physGear)
+-- local function equipGear(physGear)
-- removeAllEquippedGear(physGear)
-- physGear.Parent = player.Character
-- updateGridActive()
-- end
-function setupCharacterConnections()
+local function setupCharacterConnections()
if backpackAddCon then
backpackAddCon:disconnect()
end
@@ -796,19 +783,20 @@ function removeCharacterConnections()
end
end
-function trim(s)
- return (s:gsub("^%s*(.-)%s*$", "%1"))
+local function trim(s)
+ return (string.gsub(s, "^%s*(.-)%s*$", "%1"))
end
-function filterGear(terms)
+local function filterGear(terms)
local filteredGear = {}
for _, v in pairs(backpackItems) do
- if buttons[v] then
- local gearString = string.lower(buttons[v].GearReference.Value.Name)
+ local button = buttons[v]
+ if button then
+ local gearString = string.lower(button.GearReference.Value.Name)
gearString = trim(gearString)
for i = 1, #terms do
if string.match(gearString, terms[i]) then
- table.insert(filteredGear, buttons[v])
+ table.insert(filteredGear, button)
break
end
end
@@ -817,7 +805,8 @@ function filterGear(terms)
return filteredGear
end
-function splitByWhitespace(text)
+
+local function splitByWhitespace(text)
if type(text) ~= "string" then
return nil
end
@@ -830,7 +819,8 @@ function splitByWhitespace(text)
end
return terms
end
-function showSearchGear(searchTerms)
+
+local function showSearchGear(searchTerms)
if not backpack.Gear.Visible then
return
end -- currently not active tab
@@ -852,7 +842,7 @@ function showSearchGear(searchTerms)
showPartialGrid(filteredButtons)
end
-function nukeBackpack()
+local function nukeBackpack()
while #buttons > 0 do
table.remove(buttons)
end
@@ -867,7 +857,7 @@ function nukeBackpack()
end
end
-function coreGuiChanged(coreGuiType, enabled)
+local function coreGuiChanged(coreGuiType, enabled)
if
coreGuiType == Enum.CoreGuiType.Backpack
or coreGuiType == Enum.CoreGuiType.All
diff --git a/luau/89449093.luau b/luau/89449093.luau
index f587b08..9ac5c75 100644
--- a/luau/89449093.luau
+++ b/luau/89449093.luau
@@ -81,14 +81,14 @@ end
---------------------------------------- Public Event Setup ----------------------------------------
-function publicEvent(eventName: string)
+local function publicEvent(eventName: string)
return New "BindableEvent" {
Name = eventName,
Parent = script,
}
end
-function publicFunction(funcName: string, invokeFunc: () -> ())
+local function publicFunction(funcName: string, invokeFunc: () -> ())
return New "BindableFunction" {
Name = funcName,
OnInvoke = invokeFunc,
@@ -156,12 +156,22 @@ local function showBackpack()
backpackOpenEvent:Fire(currentTab)
canToggle = true
readyForNextEvent = true
- backpackButton.Image = "http://banland.xyz/asset/?id=97644093"
+ backpackButton.Image = "http://banland.xyz/asset?id=97644093"
backpackButton.Position =
UDim2.new(0.5, -60, 1, -backpackSize.Y.Offset - 103)
end)
end
+local function resetSearchBoxGui()
+ resetButton.Visible = false
+ searchBox.Text = searchDefaultText
+end
+
+local function resetSearch()
+ resetSearchBoxGui()
+ searchRequestedEvent:Fire()
+end
+
local function hideBackpack()
backpackIsOpen = false
readyForNextEvent = false
@@ -210,7 +220,7 @@ local function toggleBackpack()
if backpackIsOpen then
Hydrate(loadoutBackground) {
- Image = "http://banland.xyz/asset/?id=97623721",
+ Image = "http://banland.xyz/asset?id=97623721",
Position = UDim2.new(-0.03, 0, -0.17, 0),
Size = UDim2.new(1.05, 0, 1.25, 0),
ZIndex = 2.0,
@@ -218,14 +228,13 @@ local function toggleBackpack()
}
showBackpack()
else
- Hydrate(backpackButton) {
- Position = UDim2.new(0.5, -60, 1, -44),
- Selected = false,
- Image = "http://banland.xyz/asset/?id=97617958",
- }
+ -- No, it doesn't work if it's not in this exact order
+ backpackButton.Position = UDim2.new(0.5, -60, 1, -44)
+ loadoutBackground.Visible = false
+ backpackButton.Selected = false
+ backpackButton.Image = "http://banland.xyz/asset?id=97617958"
Hydrate(loadoutBackground) {
- Visible = false,
- Image = "http://banland.xyz/asset/?id=96536002",
+ Image = "http://banland.xyz/asset?id=96536002",
Position = UDim2.new(-0.1, 0, -0.1, 0),
Size = UDim2.new(1.2, 0, 1.2, 0),
}
@@ -292,12 +301,7 @@ local function newTabClicked()
end
local function trim(s)
- return (s:gsub("^%s*(.-)%s*$", "%1"))
-end
-
-local function resetSearchBoxGui()
- resetButton.Visible = false
- searchBox.Text = searchDefaultText
+ return (string.gsub(s, "^%s*(.-)%s*$", "%1"))
end
local function doSearch()
@@ -311,16 +315,11 @@ local function doSearch()
searchRequestedEvent:Fire(searchText) -- todo: replace this with termtable when table passing is possible
end
-function resetSearch()
- resetSearchBoxGui()
- searchRequestedEvent:Fire()
-end
-
-local backpackReady = function()
+local function backpackReady()
readyForNextEvent = true
end
-function coreGuiChanged(coreGuiType, enabled)
+local function coreGuiChanged(coreGuiType, enabled)
if
coreGuiType == Enum.CoreGuiType.Backpack
or coreGuiType == Enum.CoreGuiType.All
diff --git a/luau/97188756.luau b/luau/97188756.luau
index 1124019..19a0d8d 100644
--- a/luau/97188756.luau
+++ b/luau/97188756.luau
@@ -677,7 +677,7 @@ function Chat:CreateGui()
New "ImageLabel" {
Name = "Background",
- Image = "http://banland.xyz/asset/?id=97120937", --96551212';
+ Image = "http://banland.xyz/asset?id=97120937", --96551212';
Size = UDim2.new(1.3, 0, 1.64, 0),
Position = UDim2.new(0, 0, 0, 0),
BackgroundTransparency = 1,
diff --git a/luau/join.luau b/luau/join.luau
index b3c49b3..269ec6f 100644
--- a/luau/join.luau
+++ b/luau/join.luau
@@ -1,3 +1,4 @@
+--!strict
print "[Mercury]: Loaded Join corescript"
local InsertService = game:GetService "InsertService"
local ChangeHistoryService = game:GetService "ChangeHistoryService"
@@ -194,7 +195,7 @@ local function onConnectionFailed(_, err)
end
-- called when the client connection is rejected
-function onConnectionRejected()
+local function onConnectionRejected()
connectionFailed:disconnect()
setMessage "This place is not available. Please try another"
end
diff --git a/luau/studio.luau b/luau/studio.luau
index c4f6b5e..503de9f 100644
--- a/luau/studio.luau
+++ b/luau/studio.luau
@@ -1,9 +1,10 @@
+--!strict
print "[Mercury]: Loaded Studio corescript"
-local MarketplaceService = game:GetService "MarketplaceService"
+-- local MarketplaceService = game:GetService "MarketplaceService"
local InsertService = game:GetService "InsertService"
-local SocialService = game:GetService "SocialService"
-local GamePassService = game:GetService "GamePassService"
+-- local SocialService = game:GetService "SocialService"
+-- local GamePassService = game:GetService "GamePassService"
local ScriptInformationProvider = game:GetService "ScriptInformationProvider"
local ScriptContext = game:GetService "ScriptContext"
-- Setup studio cmd bar & load core scripts
@@ -18,37 +19,37 @@ ScriptInformationProvider:SetAssetUrl "http://banland.xyz/asset/"
InsertService:SetBaseSetsUrl "http://banland.xyz/game/tools/insertasset?nsets=10&type=base"
InsertService:SetUserSetsUrl "http://banland.xyz/game/tools/insertasset?nsets=20&type=user&userid=%d"
InsertService:SetCollectionUrl "http://banland.xyz/game/tools/insertasset?sid=%d"
-InsertService:SetAssetUrl "http://banland.xyz/asset/?id=%d"
+InsertService:SetAssetUrl "http://banland.xyz/asset?id=%d"
InsertService:SetAssetVersionUrl "http://banland.xyz/asset/?assetversionid=%d"
InsertService:SetTrustLevel(0)
-pcall(function()
- SocialService:SetFriendUrl "http://banland.xyz/Game/LuaWebService/HandleSocialRequest.ashx?method=IsFriendsWith&playerid=%d&userid=%d"
-end)
-pcall(function()
- SocialService:SetBestFriendUrl "http://banland.xyz/Game/LuaWebService/HandleSocialRequest.ashx?method=IsBestFriendsWith&playerid=%d&userid=%d"
-end)
-pcall(function()
- SocialService:SetGroupUrl "http://banland.xyz/Game/LuaWebService/HandleSocialRequest.ashx?method=IsInGroup&playerid=%d&groupid=%d"
-end)
-pcall(function()
- SocialService:SetGroupRankUrl "http://banland.xyz/Game/LuaWebService/HandleSocialRequest.ashx?method=GetGroupRank&playerid=%d&groupid=%d"
-end)
-pcall(function()
- SocialService:SetGroupRoleUrl "http://banland.xyz/Game/LuaWebService/HandleSocialRequest.ashx?method=GetGroupRole&playerid=%d&groupid=%d"
-end)
-pcall(function()
- GamePassService:SetPlayerHasPassUrl "http://banland.xyz/Game/GamePass/GamePassHandler.ashx?Action=HasPass&UserID=%d&PassID=%d"
-end)
-pcall(function()
- MarketplaceService:SetProductInfoUrl "http://banland.xyz/marketplace/productinfo?assetId=%d"
-end)
-pcall(function()
- MarketplaceService:SetDevProductInfoUrl "http://banland.xyz/marketplace/productDetails?productId=%d"
-end)
-pcall(function()
- MarketplaceService:SetPlayerOwnsAssetUrl "http://banland.xyz/ownership/hasasset?userId=%d&assetId=%d"
-end)
+-- pcall(function()
+-- SocialService:SetFriendUrl "http://banland.xyz/Game/LuaWebService/HandleSocialRequest.ashx?method=IsFriendsWith&playerid=%d&userid=%d"
+-- end)
+-- pcall(function()
+-- SocialService:SetBestFriendUrl "http://banland.xyz/Game/LuaWebService/HandleSocialRequest.ashx?method=IsBestFriendsWith&playerid=%d&userid=%d"
+-- end)
+-- pcall(function()
+-- SocialService:SetGroupUrl "http://banland.xyz/Game/LuaWebService/HandleSocialRequest.ashx?method=IsInGroup&playerid=%d&groupid=%d"
+-- end)
+-- pcall(function()
+-- SocialService:SetGroupRankUrl "http://banland.xyz/Game/LuaWebService/HandleSocialRequest.ashx?method=GetGroupRank&playerid=%d&groupid=%d"
+-- end)
+-- pcall(function()
+-- SocialService:SetGroupRoleUrl "http://banland.xyz/Game/LuaWebService/HandleSocialRequest.ashx?method=GetGroupRole&playerid=%d&groupid=%d"
+-- end)
+-- pcall(function()
+-- GamePassService:SetPlayerHasPassUrl "http://banland.xyz/Game/GamePass/GamePassHandler.ashx?Action=HasPass&UserID=%d&PassID=%d"
+-- end)
+-- pcall(function()
+-- MarketplaceService:SetProductInfoUrl "http://banland.xyz/marketplace/productinfo?assetId=%d"
+-- end)
+-- pcall(function()
+-- MarketplaceService:SetDevProductInfoUrl "http://banland.xyz/marketplace/productDetails?productId=%d"
+-- end)
+-- pcall(function()
+-- MarketplaceService:SetPlayerOwnsAssetUrl "http://banland.xyz/ownership/hasasset?userId=%d&assetId=%d"
+-- end)
local result, _ = pcall(function()
ScriptContext:AddStarterScript(37801172)
diff --git a/luau/visit.luau b/luau/visit.luau
index 48b530c..f37c857 100644
--- a/luau/visit.luau
+++ b/luau/visit.luau
@@ -37,7 +37,7 @@ settings().Diagnostics:LegacyScriptMode()
InsertService:SetBaseSetsUrl "http://banland.xyz/game/tools/insertasset?nsets=10&type=base"
InsertService:SetUserSetsUrl "http://banland.xyz/game/tools/insertasset?nsets=20&type=user&userid=%d"
InsertService:SetCollectionUrl "http://banland.xyz/game/tools/insertasset?sid=%d"
-InsertService:SetAssetUrl "http://banland.xyz/Asset/?id=%d"
+InsertService:SetAssetUrl "http://banland.xyz/asset?id=%d"
InsertService:SetAssetVersionUrl "http://banland.xyz/Asset/?assetversionid=%d"
pcall(function()
@@ -84,7 +84,7 @@ end)
workspace:SetPhysicsThrottleEnabled(true)
-function doVisit()
+local function doVisit()
message.Text = "Loading Game"
pcall(function()
diff --git a/terrain plugins/11 - floodfill.luau b/terrain plugins/11 - floodfill.luau
index 153f578..6e52abc 100644
--- a/terrain plugins/11 - floodfill.luau
+++ b/terrain plugins/11 - floodfill.luau
@@ -71,7 +71,7 @@ local currentMaterial = 1
-- load our libraries
local RbxGui = LoadLibrary "RbxGui"
-- local RbxUtil = LoadLibrary "RbxUtility"
-ContentProvider:Preload "http://banland.xyz/asset/?id=82741829"
+ContentProvider:Preload "http://banland.xyz/asset?id=82741829"
------------------------- OBJECT DEFINITIONS ---------------------
@@ -175,7 +175,7 @@ function MouseHighlighter.Create(mouseUse)
imageLabel.BackgroundTransparency = 1
imageLabel.Size = UDim2.new(1, 0, 1, 0)
imageLabel.Position = UDim2.new(-0.35, 0, -0.5, 0)
- imageLabel.Image = "http://banland.xyz/asset/?id=82741829"
+ imageLabel.Image = "http://banland.xyz/asset?id=82741829"
imageLabel.Parent = billboardGui
local lastTweenChange
@@ -617,7 +617,7 @@ function LoadProgressBar(text)
-8
)
spinnerImage.BackgroundTransparency = 1
- spinnerImage.Image = "http://banland.xyz/asset/?id=45880710"
+ spinnerImage.Image = "http://banland.xyz/asset?id=45880710"
spinnerImage.Parent = spinnerFrame
spinnerIcons[spinnerNum] = spinnerImage
@@ -633,10 +633,10 @@ function LoadProgressBar(text)
while pos < 8 do
if pos == spinPos or pos == ((spinPos + 1) % 8) then
spinnerIcons[pos + 1].Image =
- "http://banland.xyz/asset/?id=45880668"
+ "http://banland.xyz/asset?id=45880668"
else
spinnerIcons[pos + 1].Image =
- "http://banland.xyz/asset/?id=45880710"
+ "http://banland.xyz/asset?id=45880710"
end
pos = pos + 1