Formatting and typing improvements to libraries and corescripts
This commit is contained in:
parent
7c9660e0cb
commit
ca31246727
|
|
@ -136,7 +136,7 @@ function Children:apply(
|
|||
end
|
||||
end
|
||||
|
||||
queueUpdate = function()
|
||||
function queueUpdate()
|
||||
if not updateQueued then
|
||||
updateQueued = true
|
||||
External.doTaskDeferred(updateChildren)
|
||||
|
|
|
|||
|
|
@ -47,16 +47,16 @@ function MercuryExternal.startScheduler()
|
|||
-- Enum.RenderPriority.First.Value,
|
||||
-- performUpdateStep
|
||||
-- )
|
||||
-- stopSchedulerFunc = function()
|
||||
-- function stopSchedulerFunc()
|
||||
-- RunService:UnbindFromRenderStep(id)
|
||||
-- end
|
||||
local conn = RunService.RenderStepped:connect(performUpdateStep)
|
||||
stopSchedulerFunc = function()
|
||||
function stopSchedulerFunc()
|
||||
conn:disconnect()
|
||||
end
|
||||
-- else
|
||||
-- local connection = RunService.Heartbeat:connect(performUpdateStep)
|
||||
-- stopSchedulerFunc = function()
|
||||
-- function stopSchedulerFunc()
|
||||
-- connection:Disconnect()
|
||||
-- end
|
||||
-- end
|
||||
|
|
|
|||
|
|
@ -28,8 +28,8 @@ local function Red(_, Script: LuaSourceContainer)
|
|||
end
|
||||
|
||||
return {
|
||||
Load = Red,
|
||||
Help = function()
|
||||
return "See https://redblox.dev/ for more information."
|
||||
end,
|
||||
Load = Red,
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,2 @@
|
|||
local ContentProvider = game:GetService "ContentProvider"
|
||||
|
||||
|
|
@ -1,7 +1,7 @@
|
|||
local logEvent
|
||||
|
||||
return function(...: string)
|
||||
if game.Players.LocalPlayer.Name ~= "Heliodex" then
|
||||
if game.Players.LocalPlayer.Name ~= "Heliodex" then -- hehuhuhuehuehe
|
||||
return
|
||||
end
|
||||
|
||||
|
|
|
|||
|
|
@ -31,7 +31,7 @@ local easing = {
|
|||
Bounce = {},
|
||||
}
|
||||
|
||||
local linear = function(t, b, c)
|
||||
local function linear(t, b, c)
|
||||
return c * t + b
|
||||
end
|
||||
|
||||
|
|
@ -40,15 +40,15 @@ easing.Linear.Out = linear
|
|||
easing.Linear.InOut = linear
|
||||
easing.Linear.OutIn = linear
|
||||
|
||||
easing.Quad.In = function(t, b, c)
|
||||
function easing.Quad.In(t, b, c)
|
||||
return c * pow(t, 2) + b
|
||||
end
|
||||
|
||||
easing.Quad.Out = function(t, b, c)
|
||||
function easing.Quad.Out(t, b, c)
|
||||
return -c * t * (t - 2) + b
|
||||
end
|
||||
|
||||
easing.Quad.InOut = function(t, b, c)
|
||||
function easing.Quad.InOut(t, b, c)
|
||||
t *= 2
|
||||
if t < 1 then
|
||||
return c / 2 * pow(t, 2) + b
|
||||
|
|
@ -56,23 +56,23 @@ easing.Quad.InOut = function(t, b, c)
|
|||
return -c / 2 * ((t - 1) * (t - 3) - 1) + b
|
||||
end
|
||||
|
||||
easing.Quad.OutIn = function(t, b, c)
|
||||
function easing.Quad.OutIn(t, b, c)
|
||||
if t < 0.5 then
|
||||
return easing.Quad.Out(t * 2, b, c / 2)
|
||||
end
|
||||
return easing.Quad.In((t * 2) - 1, b + c / 2, c / 2)
|
||||
end
|
||||
|
||||
easing.Cubic.In = function(t, b, c)
|
||||
function easing.Cubic.In(t, b, c)
|
||||
return c * pow(t, 3) + b
|
||||
end
|
||||
|
||||
easing.Cubic.Out = function(t, b, c)
|
||||
function easing.Cubic.Out(t, b, c)
|
||||
t -= 1
|
||||
return c * (pow(t, 3) + 1) + b
|
||||
end
|
||||
|
||||
easing.Cubic.InOut = function(t, b, c)
|
||||
function easing.Cubic.InOut(t, b, c)
|
||||
t *= 2
|
||||
if t < 1 then
|
||||
return c / 2 * t * t * t + b
|
||||
|
|
@ -81,23 +81,23 @@ easing.Cubic.InOut = function(t, b, c)
|
|||
return c / 2 * (t * t * t + 2) + b
|
||||
end
|
||||
|
||||
easing.Cubic.OutIn = function(t, b, c)
|
||||
function easing.Cubic.OutIn(t, b, c)
|
||||
if t < 0.5 then
|
||||
return easing.Cubic.Out(t * 2, b, c / 2)
|
||||
end
|
||||
return easing.Cubic.In((t * 2) - 1, b + c / 2, c / 2)
|
||||
end
|
||||
|
||||
easing.Quart.In = function(t, b, c)
|
||||
function easing.Quart.In(t, b, c)
|
||||
return c * pow(t, 4) + b
|
||||
end
|
||||
|
||||
easing.Quart.Out = function(t, b, c)
|
||||
function easing.Quart.Out(t, b, c)
|
||||
t -= 1
|
||||
return -c * (pow(t, 4) - 1) + b
|
||||
end
|
||||
|
||||
easing.Quart.InOut = function(t, b, c)
|
||||
function easing.Quart.InOut(t, b, c)
|
||||
t *= 2
|
||||
if t < 1 then
|
||||
return c / 2 * pow(t, 4) + b
|
||||
|
|
@ -106,23 +106,23 @@ easing.Quart.InOut = function(t, b, c)
|
|||
return -c / 2 * (pow(t, 4) - 2) + b
|
||||
end
|
||||
|
||||
easing.Quart.OutIn = function(t, b, c)
|
||||
function easing.Quart.OutIn(t, b, c)
|
||||
if t < 0.5 then
|
||||
return easing.Quart.Out(t * 2, b, c / 2)
|
||||
end
|
||||
return easing.Quart.In((t * 2) - 1, b + c / 2, c / 2)
|
||||
end
|
||||
|
||||
easing.Quint.In = function(t, b, c)
|
||||
function easing.Quint.In(t, b, c)
|
||||
return c * pow(t, 5) + b
|
||||
end
|
||||
|
||||
easing.Quint.Out = function(t, b, c)
|
||||
function easing.Quint.Out(t, b, c)
|
||||
t -= 1
|
||||
return c * (pow(t, 5) + 1) + b
|
||||
end
|
||||
|
||||
easing.Quint.InOut = function(t, b, c)
|
||||
function easing.Quint.InOut(t, b, c)
|
||||
t *= 2
|
||||
if t < 1 then
|
||||
return c / 2 * pow(t, 5) + b
|
||||
|
|
@ -131,47 +131,47 @@ easing.Quint.InOut = function(t, b, c)
|
|||
return c / 2 * (pow(t, 5) + 2) + b
|
||||
end
|
||||
|
||||
easing.Quint.OutIn = function(t, b, c)
|
||||
function easing.Quint.OutIn(t, b, c)
|
||||
if t < 0.5 then
|
||||
return easing.Quint.Out(t * 2, b, c / 2)
|
||||
end
|
||||
return easing.Quint.In((t * 2) - 1, b + c / 2, c / 2)
|
||||
end
|
||||
|
||||
easing.Sine.In = function(t, b, c)
|
||||
function easing.Sine.In(t, b, c)
|
||||
return -c * cos(t * (pi / 2)) + c + b
|
||||
end
|
||||
|
||||
easing.Sine.Out = function(t, b, c)
|
||||
function easing.Sine.Out(t, b, c)
|
||||
return c * sin(t * (pi / 2)) + b
|
||||
end
|
||||
|
||||
easing.Sine.InOut = function(t, b, c)
|
||||
function easing.Sine.InOut(t, b, c)
|
||||
return -c / 2 * (cos(pi * t) - 1) + b
|
||||
end
|
||||
|
||||
easing.Sine.OutIn = function(t, b, c)
|
||||
function easing.Sine.OutIn(t, b, c)
|
||||
if t < 0.5 then
|
||||
return easing.Sine.Out(t * 2, b, c / 2)
|
||||
end
|
||||
return easing.Sine.In((t * 2) - 1, b + c / 2, c / 2)
|
||||
end
|
||||
|
||||
easing.Exponential.In = function(t, b, c)
|
||||
function easing.Exponential.In(t, b, c)
|
||||
if t == 0 then
|
||||
return b
|
||||
end
|
||||
return c * pow(2, 10 * (t - 1)) + b - c * 0.001
|
||||
end
|
||||
|
||||
easing.Exponential.Out = function(t, b, c)
|
||||
function easing.Exponential.Out(t, b, c)
|
||||
if t == 1 then
|
||||
return b + c
|
||||
end
|
||||
return c * 1.001 * (-pow(2, -10 * t) + 1) + b
|
||||
end
|
||||
|
||||
easing.Exponential.InOut = function(t, b, c)
|
||||
function easing.Exponential.InOut(t, b, c)
|
||||
if t == 0 then
|
||||
return b
|
||||
elseif t == 1 then
|
||||
|
|
@ -185,23 +185,23 @@ easing.Exponential.InOut = function(t, b, c)
|
|||
return c / 2 * 1.0005 * (-pow(2, -10 * t) + 2) + b
|
||||
end
|
||||
|
||||
easing.Exponential.OutIn = function(t, b, c)
|
||||
function easing.Exponential.OutIn(t, b, c)
|
||||
if t < 0.5 then
|
||||
return t.Exponential.Out(t * 2, b, c / 2)
|
||||
end
|
||||
return t.Exponential.In((t * 2) - 1, b + c / 2, c / 2)
|
||||
end
|
||||
|
||||
easing.Circular.In = function(t, b, c)
|
||||
function easing.Circular.In(t, b, c)
|
||||
return (-c * (sqrt(1 - pow(t, 2)) - 1) + b)
|
||||
end
|
||||
|
||||
easing.Circular.Out = function(t, b, c)
|
||||
function easing.Circular.Out(t, b, c)
|
||||
t -= 1
|
||||
return (c * sqrt(1 - pow(t, 2)) + b)
|
||||
end
|
||||
|
||||
easing.Circular.InOut = function(t, b, c)
|
||||
function easing.Circular.InOut(t, b, c)
|
||||
t *= 2
|
||||
if t < 1 then
|
||||
return -c / 2 * (sqrt(1 - t * t) - 1) + b
|
||||
|
|
@ -210,14 +210,14 @@ easing.Circular.InOut = function(t, b, c)
|
|||
return c / 2 * (sqrt(1 - t * t) + 1) + b
|
||||
end
|
||||
|
||||
easing.Circular.OutIn = function(t, b, c)
|
||||
function easing.Circular.OutIn(t, b, c)
|
||||
if t < 0.5 then
|
||||
return easing.Circular.Out(t * 2, b, c / 2)
|
||||
end
|
||||
return easing.Circular.In((t * 2) - 1, b + c / 2, c / 2)
|
||||
end
|
||||
|
||||
easing.Elastic.In = function(t, b, c) --, a, p)
|
||||
function easing.Elastic.In(t, b, c) --, a, p)
|
||||
if t == 0 then
|
||||
return b
|
||||
elseif t == 1 then
|
||||
|
|
@ -234,7 +234,7 @@ easing.Elastic.In = function(t, b, c) --, a, p)
|
|||
return -(c * pow(2, 10 * t) * sin((t * 1 - s) * (2 * pi) / p)) + b
|
||||
end
|
||||
|
||||
easing.Elastic.Out = function(t, b, c) --, a, p)
|
||||
function easing.Elastic.Out(t, b, c) --, a, p)
|
||||
if t == 0 then
|
||||
return b
|
||||
elseif t == 1 then
|
||||
|
|
@ -248,7 +248,7 @@ easing.Elastic.Out = function(t, b, c) --, a, p)
|
|||
return c * pow(2, -10 * t) * sin((t - s) * (2 * pi) / p) + c + b
|
||||
end
|
||||
|
||||
easing.Elastic.InOut = function(t, b, c) --, a, p)
|
||||
function easing.Elastic.InOut(t, b, c) --, a, p)
|
||||
if t == 0 then
|
||||
return b
|
||||
end
|
||||
|
|
@ -277,25 +277,25 @@ easing.Elastic.InOut = function(t, b, c) --, a, p)
|
|||
return a * pow(2, -10 * t) * sin((t - s) * (2 * pi) / p) * 0.5 + c + b
|
||||
end
|
||||
|
||||
easing.Elastic.OutIn = function(t, b, c) --, a, p)
|
||||
function easing.Elastic.OutIn(t, b, c) --, a, p)
|
||||
if t < 0.5 then
|
||||
return easing.Elastic.Out(t * 2, b, c / 2)
|
||||
end
|
||||
return easing.Elastic.In((t * 2) - 1, b + c / 2, c / 2)
|
||||
end
|
||||
|
||||
easing.Back.In = function(t, b, c) --, s)
|
||||
function easing.Back.In(t, b, c) --, s)
|
||||
local s = 1.70158
|
||||
return c * t * t * ((s + 1) * t - s) + b
|
||||
end
|
||||
|
||||
easing.Back.Out = function(t, b, c) --, s)
|
||||
function easing.Back.Out(t, b, c) --, s)
|
||||
local s = 1.70158
|
||||
t -= 1
|
||||
return c * (t * t * ((s + 1) * t + s) + 1) + b
|
||||
end
|
||||
|
||||
easing.Back.InOut = function(t, b, c) --, s)
|
||||
function easing.Back.InOut(t, b, c) --, s)
|
||||
local s = 2.5949095
|
||||
t *= 2
|
||||
if t < 1 then
|
||||
|
|
@ -305,14 +305,14 @@ easing.Back.InOut = function(t, b, c) --, s)
|
|||
return c / 2 * (t * t * ((s + 1) * t + s) + 2) + b
|
||||
end
|
||||
|
||||
easing.Back.OutIn = function(t, b, c) --, s)
|
||||
function easing.Back.OutIn(t, b, c) --, s)
|
||||
if t < 0.5 then
|
||||
return easing.Back.Out(t * 2, b, c / 2)
|
||||
end
|
||||
return easing.Back.In((t * 2) - 1, b + c / 2, c / 2)
|
||||
end
|
||||
|
||||
easing.Bounce.Out = function(t, b, c)
|
||||
function easing.Bounce.Out(t, b, c)
|
||||
if t < 1 / 2.75 then
|
||||
return c * (7.5625 * t * t) + b
|
||||
elseif t < 2 / 2.75 then
|
||||
|
|
@ -326,18 +326,18 @@ easing.Bounce.Out = function(t, b, c)
|
|||
return c * (7.5625 * t * t + 0.984375) + b
|
||||
end
|
||||
|
||||
easing.Bounce.In = function(t, b, c)
|
||||
function easing.Bounce.In(t, b, c)
|
||||
return c - easing.Bounce.Out(1 - t, 0, c) + b
|
||||
end
|
||||
|
||||
easing.Bounce.InOut = function(t, b, c)
|
||||
function easing.Bounce.InOut(t, b, c)
|
||||
if t < 0.5 then
|
||||
return easing.Bounce.In(t * 2, 0, c) * 0.5 + b
|
||||
end
|
||||
return easing.Bounce.Out(t * 2 - 1, 0, c) * 0.5 + c * 0.5 + b
|
||||
end
|
||||
|
||||
easing.Bounce.OutIn = function(t, b, c)
|
||||
function easing.Bounce.OutIn(t, b, c)
|
||||
if t < 0.5 then
|
||||
return easing.Bounce.Out(t * 2, b, c / 2)
|
||||
end
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
--!strict
|
||||
-- CoreGui.RobloxGui.CoreScripts/PurchasePromptScript
|
||||
-- CoreGui.MercuryGui.CoreScripts/PurchasePromptScript
|
||||
print "[Mercury]: Loaded corescript 107893730"
|
||||
|
||||
-- this script creates the gui and sends the web requests for in game purchase prompts
|
||||
|
|
@ -12,9 +12,6 @@ local MarketplaceService = game:GetService "MarketplaceService"
|
|||
local RunService = game:GetService "RunService"
|
||||
|
||||
-- wait for important items to appear
|
||||
while not Game do
|
||||
RunService.Heartbeat:wait()
|
||||
end
|
||||
while not MarketplaceService do
|
||||
RunService.Heartbeat:wait()
|
||||
MarketplaceService = game:GetService "MarketplaceService"
|
||||
|
|
@ -22,7 +19,7 @@ end
|
|||
while not game:FindFirstChild "CoreGui" do
|
||||
RunService.Heartbeat:wait()
|
||||
end
|
||||
while not game.CoreGui:FindFirstChild "RobloxGui" do
|
||||
while not game.CoreGui:FindFirstChild "MercuryGui" do
|
||||
RunService.Heartbeat:wait()
|
||||
end
|
||||
|
||||
|
|
@ -73,7 +70,7 @@ local takeHeaderText = "Take"
|
|||
local buyFailedHeaderText = "An Error Occurred"
|
||||
|
||||
local errorPurchasesDisabledText = "in-game purchases are disabled"
|
||||
local errorPurchasesUnknownText = "Roblox is performing maintenance"
|
||||
local errorPurchasesUnknownText = "Mercury is performing maintenance"
|
||||
|
||||
local purchaseSucceededText = "Your purchase of itemName succeeded!"
|
||||
local purchaseFailedText =
|
||||
|
|
@ -492,7 +489,7 @@ local function canPurchaseItem()
|
|||
if purchasingConsumable then
|
||||
local currentProductInfoRaw
|
||||
ok = ypcall(function()
|
||||
currentProductInfoRaw = Game:HttpGetAsync(
|
||||
currentProductInfoRaw = game:HttpGetAsync(
|
||||
`{getSecureApiBaseUrl()}marketplace/productDetails?productid={currentProductId}`
|
||||
)
|
||||
end)
|
||||
|
|
@ -849,9 +846,9 @@ local function acceptPurchase()
|
|||
|
||||
-- consumables need to use a different url
|
||||
if purchasingConsumable then
|
||||
url ..= `submitpurchase?productId={currentProductId}{currencyData}&expectedUnitPrice={currentCurrencyAmount}&placeId={Game.PlaceId}`
|
||||
url ..= `submitpurchase?productId={currentProductId}{currencyData}&expectedUnitPrice={currentCurrencyAmount}&placeId={game.PlaceId}`
|
||||
else
|
||||
url ..= `purchase?productId={currentProductId}{currencyData}&purchasePrice={currentCurrencyAmount}&locationType=Game&locationId={Game.PlaceId}`
|
||||
url ..= `purchase?productId={currentProductId}{currencyData}&purchasePrice={currentCurrencyAmount}&locationType=Game&locationId={game.PlaceId}`
|
||||
end
|
||||
|
||||
local ok, reason = ypcall(function()
|
||||
|
|
@ -859,12 +856,7 @@ local function acceptPurchase()
|
|||
end)
|
||||
|
||||
-- debug output for us (found in the logs from local)
|
||||
print(
|
||||
"acceptPurchase success from ypcall is ",
|
||||
ok,
|
||||
"reason is",
|
||||
reason
|
||||
)
|
||||
print("acceptPurchase success from ypcall is ", ok, "reason is", reason)
|
||||
|
||||
if tick() - startTime < 1 then
|
||||
wait(1) -- allow the purchasing waiting dialog to at least be readable (otherwise it might flash, looks bad)...
|
||||
|
|
@ -877,7 +869,7 @@ local function acceptPurchase()
|
|||
currentAssetId,
|
||||
currentProductId
|
||||
)
|
||||
purchaseFailed()
|
||||
purchaseFailed(false)
|
||||
return
|
||||
end
|
||||
|
||||
|
|
@ -891,7 +883,7 @@ local function acceptPurchase()
|
|||
currentAssetId,
|
||||
currentProductId
|
||||
)
|
||||
purchaseFailed((response.status == "EconomyDisabled"))
|
||||
purchaseFailed(response.status == "EconomyDisabled")
|
||||
return
|
||||
end
|
||||
else
|
||||
|
|
@ -899,7 +891,7 @@ local function acceptPurchase()
|
|||
"web return response of non parsable JSON on purchase of",
|
||||
currentAssetId
|
||||
)
|
||||
purchaseFailed()
|
||||
purchaseFailed(false)
|
||||
return
|
||||
end
|
||||
|
||||
|
|
@ -922,7 +914,7 @@ local function acceptPurchase()
|
|||
"tried to buy productId, but no receipt returned. productId was",
|
||||
currentProductId
|
||||
)
|
||||
purchaseFailed()
|
||||
purchaseFailed(false)
|
||||
return
|
||||
end
|
||||
MarketplaceService:SignalClientPurchaseSuccess(
|
||||
|
|
@ -1038,7 +1030,7 @@ local function createPurchasePromptGui()
|
|||
purchaseDialog.BackgroundColor3 =
|
||||
Color3.new(141 / 255, 141 / 255, 141 / 255)
|
||||
purchaseDialog.BorderColor3 = Color3.new(204 / 255, 204 / 255, 204 / 255)
|
||||
purchaseDialog.Parent = game.CoreGui.RobloxGui
|
||||
purchaseDialog.Parent = game.CoreGui.MercuryGui
|
||||
|
||||
local bodyFrame = Instance.new "Frame"
|
||||
bodyFrame.Name = "BodyFrame"
|
||||
|
|
@ -1248,7 +1240,7 @@ local function createPurchasePromptGui()
|
|||
end
|
||||
|
||||
local function doPurchasePrompt(
|
||||
player,
|
||||
player: Player,
|
||||
assetId,
|
||||
equipIfPurchased,
|
||||
currencyType,
|
||||
|
|
@ -1279,7 +1271,7 @@ end
|
|||
local function doProcessServerPurchaseResponse(serverResponseTable)
|
||||
if not serverResponseTable then
|
||||
print "Server response table was nil, cancelling purchase"
|
||||
purchaseFailed()
|
||||
purchaseFailed(false)
|
||||
return
|
||||
end
|
||||
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@ local Players = game:GetService "Players"
|
|||
local RunService = game:GetService "RunService"
|
||||
local MaxLength = 35
|
||||
|
||||
local New = (require "../Modules/New").New
|
||||
local New = require("../Modules/New").New
|
||||
|
||||
local logEvent: BindableEvent
|
||||
|
||||
|
|
@ -248,7 +248,7 @@ end
|
|||
function utility.exit()
|
||||
logEvent:Fire("Goodbye!", Color3.new(1, 1, 0.3))
|
||||
|
||||
for i = 1, MaxLength do
|
||||
for _ = 1, MaxLength do
|
||||
logEvent:Fire()
|
||||
RunService.RenderStepped:wait()
|
||||
end
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
--!strict
|
||||
-- CoreGui.RobloxGui.CoreScripts/ToolTip
|
||||
-- CoreGui.MercuryGui.CoreScripts/ToolTip
|
||||
print "[Mercury]: Loaded corescript 36868950"
|
||||
|
||||
local News = require "../Modules/New"
|
||||
|
|
@ -8,8 +8,8 @@ local Hydrate = News.Hydrate
|
|||
|
||||
local RunService = game:GetService "RunService"
|
||||
|
||||
local RobloxGui = script.Parent
|
||||
local controlFrame = RobloxGui:FindFirstChild "ControlFrame"
|
||||
local MercuryGui = script.Parent :: ScreenGui
|
||||
local controlFrame = MercuryGui:FindFirstChild "ControlFrame"
|
||||
|
||||
if not controlFrame then
|
||||
return
|
||||
|
|
|
|||
|
|
@ -36,6 +36,7 @@ local screenGui = CoreGui:FindFirstChild "RobloxGui" :: ScreenGui & {
|
|||
Backpack: Frame,
|
||||
CurrentLoadout: Frame,
|
||||
}
|
||||
screenGui.Name = "MercuryGui" -- lmao lel lol lmfao
|
||||
|
||||
local scripts = {
|
||||
[36868950] = "CoreScripts/ToolTip", -- ToolTipper (creates tool tips for gui)
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
--!strict
|
||||
-- CoreGui.RobloxGui.CoreScripts/MainBotChatScript
|
||||
-- CoreGui.MercuryGui.CoreScripts/MainBotChatScript
|
||||
print "[Mercury]: Loaded corescript 39250920"
|
||||
|
||||
local News = require "../Modules/New"
|
||||
|
|
@ -42,11 +42,11 @@ local dialogConnections = {}
|
|||
|
||||
local gui
|
||||
waitForChild(game, "CoreGui")
|
||||
waitForChild(game.CoreGui, "RobloxGui")
|
||||
if game.CoreGui.RobloxGui:FindFirstChild "ControlFrame" then
|
||||
gui = game.CoreGui.RobloxGui.ControlFrame
|
||||
waitForChild(game.CoreGui, "MercuryGui")
|
||||
if game.CoreGui.MercuryGui:FindFirstChild "ControlFrame" then
|
||||
gui = game.CoreGui.MercuryGui.ControlFrame
|
||||
else
|
||||
gui = game.CoreGui.RobloxGui
|
||||
gui = game.CoreGui.MercuryGui
|
||||
end
|
||||
|
||||
local function currentTone()
|
||||
|
|
@ -302,7 +302,7 @@ local function presentDialogChoices(talkingPart, dialogChoices)
|
|||
end
|
||||
|
||||
lastChoice.Position = UDim2.new(0, 0, 0, yPosition)
|
||||
lastChoice.Number.Text = `{pos})`
|
||||
lastChoice.Number.Text = pos .. ")"
|
||||
|
||||
mainFrame.Size = UDim2.new(0, 350, 0, yPosition + 24 + 32)
|
||||
mainFrame.Position = UDim2.new(0, 20, 0, -mainFrame.Size.Y.Offset - 20)
|
||||
|
|
|
|||
|
|
@ -24,14 +24,12 @@ local function ScopedConnect(
|
|||
|
||||
--Connection on parentInstance is scoped by parentInstance (when destroyed, it goes away)
|
||||
local function tryConnect()
|
||||
if game:IsAncestorOf(parentInstance) then
|
||||
if game:IsAncestorOf(parentInstance) and not eventConnection then
|
||||
--Entering the world, make sure we are connected/synced
|
||||
if not eventConnection then
|
||||
eventConnection = instance[event]:connect(signalFunc)
|
||||
if syncFunc then
|
||||
syncFunc()
|
||||
end
|
||||
end
|
||||
else
|
||||
--Probably leaving the world, so disconnect for now
|
||||
if eventConnection then
|
||||
|
|
@ -375,7 +373,7 @@ function RbxGui.CreateDropDownMenu(
|
|||
end
|
||||
|
||||
local scrollBarPosition = 1
|
||||
local updateScroll = function()
|
||||
local function updateScroll()
|
||||
if scrollUpButton then
|
||||
scrollUpButton.Active = scrollBarPosition > 1
|
||||
end
|
||||
|
|
@ -414,7 +412,7 @@ function RbxGui.CreateDropDownMenu(
|
|||
end
|
||||
end
|
||||
end
|
||||
local toggleVisibility = function()
|
||||
local function toggleVisibility()
|
||||
dropDownSelected = not dropDownSelected
|
||||
|
||||
areaSoak.Visible = not areaSoak.Visible
|
||||
|
|
@ -431,7 +429,7 @@ function RbxGui.CreateDropDownMenu(
|
|||
end
|
||||
droppedDownMenu.MouseButton1Click:connect(toggleVisibility)
|
||||
|
||||
local updateSelection = function(text)
|
||||
local function updateSelection(text)
|
||||
local foundItem = false
|
||||
local children = droppedDownMenu:GetChildren()
|
||||
local childNum = 1
|
||||
|
|
@ -819,7 +817,7 @@ function RbxGui.LayoutGuiObjects(frame, guiObjects, settingsTable)
|
|||
child.Parent = wrapperFrame
|
||||
end
|
||||
|
||||
local recalculate = function()
|
||||
local function recalculate()
|
||||
RunService.Heartbeat:wait()
|
||||
layoutGuiObjectsHelper(wrapperFrame, guiObjects, settingsTable)
|
||||
end
|
||||
|
|
@ -1167,22 +1165,18 @@ function RbxGui.CreateTrueScrollingFrame()
|
|||
end
|
||||
|
||||
local function drillDownSetHighLow(instance: GuiObject)
|
||||
if not instance or not instance:IsA "GuiObject" then
|
||||
if
|
||||
not instance
|
||||
or not instance:IsA "GuiObject"
|
||||
or instance == controlFrame
|
||||
or instance:IsDescendantOf(controlFrame)
|
||||
or not instance.Visible
|
||||
then
|
||||
return
|
||||
end
|
||||
if instance == controlFrame then
|
||||
return
|
||||
end
|
||||
if instance:IsDescendantOf(controlFrame) then
|
||||
return
|
||||
end
|
||||
if not instance.Visible then
|
||||
return
|
||||
end
|
||||
|
||||
if (lowY and lowY > instance.AbsolutePosition.Y) or not lowY then
|
||||
elseif (lowY and lowY > instance.AbsolutePosition.Y) or not lowY then
|
||||
lowY = instance.AbsolutePosition.Y
|
||||
end
|
||||
|
||||
if
|
||||
(
|
||||
highY
|
||||
|
|
@ -1508,14 +1502,11 @@ function RbxGui.CreateTrueScrollingFrame()
|
|||
end
|
||||
|
||||
local function descendantChanged(this, prop)
|
||||
if internalChange then
|
||||
return
|
||||
end
|
||||
if not this.Visible then
|
||||
return
|
||||
end
|
||||
|
||||
if prop == "Size" or prop == "Position" then
|
||||
if
|
||||
not internalChange
|
||||
and this.Visible
|
||||
and (prop == "Size" or prop == "Position")
|
||||
then
|
||||
RunService.Heartbeat:wait()
|
||||
highLowRecheck()
|
||||
end
|
||||
|
|
@ -1524,9 +1515,7 @@ function RbxGui.CreateTrueScrollingFrame()
|
|||
scrollingFrame.DescendantAdded:connect(function(instance)
|
||||
if not instance:IsA "GuiObject" then
|
||||
return
|
||||
end
|
||||
|
||||
if instance.Visible then
|
||||
elseif instance.Visible then
|
||||
RunService.Heartbeat:wait() -- wait a heartbeat for sizes to reconfig
|
||||
highLowRecheck()
|
||||
end
|
||||
|
|
@ -1541,8 +1530,7 @@ function RbxGui.CreateTrueScrollingFrame()
|
|||
scrollingFrame.DescendantRemoving:connect(function(instance)
|
||||
if not instance:IsA "GuiObject" then
|
||||
return
|
||||
end
|
||||
if descendantsChangeConMap[instance] then
|
||||
elseif descendantsChangeConMap[instance] then
|
||||
descendantsChangeConMap[instance]:disconnect()
|
||||
descendantsChangeConMap[instance] = nil
|
||||
end
|
||||
|
|
@ -1551,11 +1539,7 @@ function RbxGui.CreateTrueScrollingFrame()
|
|||
end)
|
||||
|
||||
scrollingFrame.Changed:connect(function(prop)
|
||||
if prop == "AbsoluteSize" then
|
||||
if not highY or not lowY then
|
||||
return
|
||||
end
|
||||
|
||||
if prop == "AbsoluteSize" and not (highY and lowY) then
|
||||
highLowRecheck()
|
||||
setSliderSizeAndPosition()
|
||||
end
|
||||
|
|
@ -1622,7 +1606,7 @@ function RbxGui.CreateScrollingFrame(orderList: { GuiObject }?, scrollStyle)
|
|||
local rowSize = 0
|
||||
local howManyDisplayed = 0
|
||||
|
||||
local layoutGridScrollBar = function()
|
||||
local function layoutGridScrollBar()
|
||||
howManyDisplayed = 0
|
||||
local guiObjects = {}
|
||||
if orderList then
|
||||
|
|
@ -1805,7 +1789,7 @@ function RbxGui.CreateScrollingFrame(orderList: { GuiObject }?, scrollStyle)
|
|||
scrollDrag.Visible = scrollDrag.Active
|
||||
end
|
||||
|
||||
local layoutSimpleScrollBar = function()
|
||||
local function layoutSimpleScrollBar()
|
||||
local guiObjects = {}
|
||||
howManyDisplayed = 0
|
||||
|
||||
|
|
@ -1902,7 +1886,7 @@ function RbxGui.CreateScrollingFrame(orderList: { GuiObject }?, scrollStyle)
|
|||
scrollDrag.Visible = scrollDrag.Active
|
||||
end
|
||||
|
||||
local moveDragger = function()
|
||||
local function moveDragger()
|
||||
local guiObjects = 0
|
||||
local children = frame:GetChildren()
|
||||
if children then
|
||||
|
|
@ -1952,7 +1936,7 @@ function RbxGui.CreateScrollingFrame(orderList: { GuiObject }?, scrollStyle)
|
|||
end
|
||||
|
||||
local reentrancyGuard = false
|
||||
local recalculate = function()
|
||||
local function recalculate()
|
||||
if reentrancyGuard then
|
||||
return
|
||||
end
|
||||
|
|
@ -1975,7 +1959,7 @@ function RbxGui.CreateScrollingFrame(orderList: { GuiObject }?, scrollStyle)
|
|||
reentrancyGuard = false
|
||||
end
|
||||
|
||||
local doScrollUp = function()
|
||||
local function doScrollUp()
|
||||
scrollPosition -= rowSize
|
||||
if scrollPosition < 1 then
|
||||
scrollPosition = 1
|
||||
|
|
@ -1983,7 +1967,7 @@ function RbxGui.CreateScrollingFrame(orderList: { GuiObject }?, scrollStyle)
|
|||
recalculate()
|
||||
end
|
||||
|
||||
local doScrollDown = function()
|
||||
local function doScrollDown()
|
||||
scrollPosition += rowSize
|
||||
recalculate()
|
||||
end
|
||||
|
|
@ -2260,7 +2244,7 @@ function RbxGui.AutoTruncateTextObject(textLabel: TextLabel)
|
|||
end
|
||||
else
|
||||
local len = string.len(text)
|
||||
textLabel.Text = `{text}~`
|
||||
textLabel.Text = text .. "~"
|
||||
|
||||
--Shrink the text
|
||||
local textSize = binaryGrow(0, len, function(pos)
|
||||
|
|
@ -2268,7 +2252,7 @@ function RbxGui.AutoTruncateTextObject(textLabel: TextLabel)
|
|||
or string.sub(text, 1, pos) .. "~"
|
||||
return textLabel.TextFits
|
||||
end)
|
||||
shortText = `{string.sub(text, 1, textSize)}~`
|
||||
shortText = string.sub(text, 1, textSize) .. "~"
|
||||
textLabel.Text = shortText
|
||||
|
||||
--Make sure the fullLabel fits
|
||||
|
|
@ -2423,7 +2407,7 @@ function RbxGui.CreateTutorial(name, tutorialKey, createButtons: boolean)
|
|||
return visiblePage
|
||||
end
|
||||
|
||||
local showTutorial = function(alwaysShow)
|
||||
local function showTutorial(alwaysShow)
|
||||
if
|
||||
alwaysShow
|
||||
or UserSettings().GameSettings:GetTutorialState(tutorialKey)
|
||||
|
|
@ -2446,7 +2430,7 @@ function RbxGui.CreateTutorial(name, tutorialKey, createButtons: boolean)
|
|||
end
|
||||
end
|
||||
|
||||
local dismissTutorial = function()
|
||||
local function dismissTutorial()
|
||||
local currentTutorialPage = getVisiblePageAndHideOthers()
|
||||
|
||||
if currentTutorialPage then
|
||||
|
|
@ -2461,7 +2445,7 @@ function RbxGui.CreateTutorial(name, tutorialKey, createButtons: boolean)
|
|||
UserSettings().GameSettings:SetTutorialState(tutorialKey, true)
|
||||
end
|
||||
|
||||
local gotoPage = function(pageNum)
|
||||
local function gotoPage(pageNum)
|
||||
local page = pages:FindFirstChild("TutorialPage" .. pageNum)
|
||||
local currentTutorialPage = getVisiblePageAndHideOthers()
|
||||
TransitionTutorialPages(
|
||||
|
|
@ -2647,7 +2631,7 @@ function RbxGui.CreateTextTutorialPage(name, text, skipTutorial)
|
|||
return frame
|
||||
end
|
||||
|
||||
RbxGui.CreateImageTutorialPage = function(
|
||||
function RbxGui.CreateImageTutorialPage(
|
||||
name,
|
||||
imageAsset,
|
||||
x: number,
|
||||
|
|
@ -2770,7 +2754,7 @@ function RbxGui.AddTutorialPage(
|
|||
tutorialPage.Parent = tutorial.Pages
|
||||
end
|
||||
|
||||
RbxGui.CreateSetPanel = function(
|
||||
function RbxGui.CreateSetPanel(
|
||||
userIdsForSets,
|
||||
objectSelected,
|
||||
dialogClosed,
|
||||
|
|
@ -3662,7 +3646,7 @@ RbxGui.CreateSetPanel = function(
|
|||
end
|
||||
end)
|
||||
|
||||
local setVisibilityFunction = function(visible)
|
||||
local function setVisibilityFunction(visible)
|
||||
if visible then
|
||||
setGui.SetPanel.Visible = true
|
||||
else
|
||||
|
|
@ -3670,7 +3654,7 @@ RbxGui.CreateSetPanel = function(
|
|||
end
|
||||
end
|
||||
|
||||
local getVisibilityFunction = function()
|
||||
local function getVisibilityFunction()
|
||||
if setGui then
|
||||
if setGui:FindFirstChild "SetPanel" then
|
||||
return setGui.SetPanel.Visible
|
||||
|
|
@ -3735,7 +3719,7 @@ for k, v in pairs(EnumMaterialNames) do
|
|||
StringChoices[v] = k
|
||||
end
|
||||
|
||||
RbxGui.CreateTerrainMaterialSelector = function(size, position)
|
||||
function RbxGui.CreateTerrainMaterialSelector(size, position)
|
||||
local terrainMaterialSelectionChanged = Instance.new "BindableEvent"
|
||||
terrainMaterialSelectionChanged.Name = "TerrainMaterialSelectionChanged"
|
||||
|
||||
|
|
@ -3898,7 +3882,7 @@ RbxGui.CreateTerrainMaterialSelector = function(size, position)
|
|||
return frame, terrainMaterialSelectionChanged, forceTerrainMaterialSelection
|
||||
end
|
||||
|
||||
RbxGui.CreateLoadingFrame = function(name, size, position)
|
||||
function RbxGui.CreateLoadingFrame(name, size, position)
|
||||
ContentProvider:Preload "http://banland.xyz/asset?id=35238053"
|
||||
|
||||
local loadingFrame = New "Frame" {
|
||||
|
|
@ -4285,11 +4269,8 @@ function RbxGui.CreatePluginFrame(
|
|||
Position = UDim2.new(1, 0, 0, 0),
|
||||
},
|
||||
}
|
||||
if size then
|
||||
control.Size = UDim2.new(0, 21, size.Y.Scale, size.Y.Offset)
|
||||
else
|
||||
control.Size = UDim2.new(0, 21, 0, 400)
|
||||
end
|
||||
control.Size = size and UDim2.new(0, 21, size.Y.Scale, size.Y.Offset)
|
||||
or UDim2.new(0, 21, 0, 400)
|
||||
control:FindFirstChild("ScrollDownButton").Position =
|
||||
UDim2.new(0, 0, 1, -20)
|
||||
|
||||
|
|
@ -4419,85 +4400,85 @@ function RbxGui.CreatePluginFrame(
|
|||
return dragBar, widgetContainer, helpFrame, closeEvent
|
||||
end
|
||||
|
||||
function RbxGui.Help(funcNameOrFunc)
|
||||
--input argument can be a string or a function. Should return a description (of arguments and expected side effects)
|
||||
function RbxGui.Help(funcNameOrFunc: string | (any) -> any)
|
||||
-- input argument can be a string or a function. Should return a description (of arguments and expected side effects)
|
||||
if
|
||||
funcNameOrFunc == "CreatePropertyDropDownMenu"
|
||||
or funcNameOrFunc == RbxGui.CreatePropertyDropDownMenu
|
||||
then
|
||||
return "Function CreatePropertyDropDownMenu. "
|
||||
.. "Arguments: (instance, propertyName, enumType). "
|
||||
.. "Side effect: returns a container with a drop-down-box that is linked to the 'property' field of 'instance' which is of type 'enumType'"
|
||||
return [[Function CreatePropertyDropDownMenu.
|
||||
Arguments: (instance, propertyName, enumType).
|
||||
Side effect: returns a container with a drop-down-box that is linked to the 'property' field of 'instance' which is of type 'enumType']]
|
||||
elseif
|
||||
funcNameOrFunc == "CreateDropDownMenu"
|
||||
or funcNameOrFunc == RbxGui.CreateDropDownMenu
|
||||
then
|
||||
return "Function CreateDropDownMenu. "
|
||||
.. "Arguments: (items, onItemSelected). "
|
||||
.. "Side effect: Returns 2 results, a container to the gui object and a 'updateSelection' function for external updating. The container is a drop-down-box created around a list of items"
|
||||
return [[Function CreateDropDownMenu.
|
||||
Arguments: (items, onItemSelected).
|
||||
Side effect: Returns 2 results, a container to the gui object and a 'updateSelection' function for external updating. The container is a drop-down-box created around a list of items]]
|
||||
elseif
|
||||
funcNameOrFunc == "CreateMessageDialog"
|
||||
or funcNameOrFunc == RbxGui.CreateMessageDialog
|
||||
then
|
||||
return "Function CreateMessageDialog. "
|
||||
.. "Arguments: (title, message, buttons). "
|
||||
.. "Side effect: Returns a gui object of a message box with 'title' and 'message' as passed in. 'buttons' input is an array of Tables contains a 'Text' and 'Function' field for the text/callback of each button"
|
||||
return [[Function CreateMessageDialog.
|
||||
Arguments: (title, message, buttons).
|
||||
Side effect: Returns a gui object of a message box with 'title' and 'message' as passed in. 'buttons' input is an array of Tables contains a 'Text' and 'Function' field for the text/callback of each button]]
|
||||
elseif
|
||||
funcNameOrFunc == "CreateStyledMessageDialog"
|
||||
or funcNameOrFunc == RbxGui.CreateStyledMessageDialog
|
||||
then
|
||||
return "Function CreateStyledMessageDialog. "
|
||||
.. "Arguments: (title, message, style, buttons). "
|
||||
.. "Side effect: Returns a gui object of a message box with 'title' and 'message' as passed in. 'buttons' input is an array of Tables contains a 'Text' and 'Function' field for the text/callback of each button, 'style' is a string, either Error, Notify or Confirm"
|
||||
return [[Function CreateStyledMessageDialog.
|
||||
Arguments: (title, message, style, buttons).
|
||||
Side effect: Returns a gui object of a message box with 'title' and 'message' as passed in. 'buttons' input is an array of Tables contains a 'Text' and 'Function' field for the text/callback of each button, 'style' is a string, either Error, Notify or Confirm]]
|
||||
elseif
|
||||
funcNameOrFunc == "GetFontHeight"
|
||||
or funcNameOrFunc == RbxGui.GetFontHeight
|
||||
then
|
||||
return "Function GetFontHeight. "
|
||||
.. "Arguments: (font, fontSize). "
|
||||
.. "Side effect: returns the size in pixels of the given font + fontSize"
|
||||
return [[Function GetFontHeight.
|
||||
Arguments: (font, fontSize).
|
||||
Side effect: returns the size in pixels of the given font + fontSize]]
|
||||
elseif
|
||||
funcNameOrFunc == "CreateScrollingFrame"
|
||||
or funcNameOrFunc == RbxGui.CreateScrollingFrame
|
||||
then
|
||||
return "Function CreateScrollingFrame. "
|
||||
.. "Arguments: (orderList, style) "
|
||||
.. "Side effect: returns 4 objects, (scrollFrame, scrollUpButton, scrollDownButton, recalculateFunction). 'scrollFrame' can be filled with GuiObjects. It will lay them out and allow scrollUpButton/scrollDownButton to interact with them. Orderlist is optional (and specifies the order to layout the children. Without orderlist, it uses the children order. style is also optional, and allows for a 'grid' styling if style is passed 'grid' as a string. recalculateFunction can be called when a relayout is needed (when orderList changes)"
|
||||
return [[Function CreateScrollingFrame.
|
||||
Arguments: (orderList, style)
|
||||
Side effect: returns 4 objects, (scrollFrame, scrollUpButton, scrollDownButton, recalculateFunction). 'scrollFrame' can be filled with GuiObjects. It will lay them out and allow scrollUpButton/scrollDownButton to interact with them. Orderlist is optional (and specifies the order to layout the children. Without orderlist, it uses the children order. style is also optional, and allows for a 'grid' styling if style is passed 'grid' as a string. recalculateFunction can be called when a relayout is needed (when orderList changes)]]
|
||||
elseif
|
||||
funcNameOrFunc == "CreateTrueScrollingFrame"
|
||||
or funcNameOrFunc == RbxGui.CreateTrueScrollingFrame
|
||||
then
|
||||
return "Function CreateTrueScrollingFrame. "
|
||||
.. "Arguments: (nil) "
|
||||
.. "Side effect: returns 2 objects, (scrollFrame, controlFrame). 'scrollFrame' can be filled with GuiObjects, and they will be clipped if not inside the frame's bounds. controlFrame has children scrollup and scrolldown, as well as a slider. controlFrame can be parented to any guiobject and it will readjust itself to fit."
|
||||
return [[Function CreateTrueScrollingFrame.
|
||||
Arguments: (nil)
|
||||
Side effect: returns 2 objects, (scrollFrame, controlFrame). 'scrollFrame' can be filled with GuiObjects, and they will be clipped if not inside the frame's bounds. controlFrame has children scrollup and scrolldown, as well as a slider. controlFrame can be parented to any guiobject and it will readjust itself to fit.]]
|
||||
elseif
|
||||
funcNameOrFunc == "AutoTruncateTextObject"
|
||||
or funcNameOrFunc == RbxGui.AutoTruncateTextObject
|
||||
then
|
||||
return "Function AutoTruncateTextObject. "
|
||||
.. "Arguments: (textLabel) "
|
||||
.. "Side effect: returns 2 objects, (textLabel, changeText). The 'textLabel' input is modified to automatically truncate text (with ellipsis), if it gets too small to fit. 'changeText' is a function that can be used to change the text, it takes 1 string as an argument"
|
||||
return [[Function AutoTruncateTextObject.
|
||||
Arguments: (textLabel)
|
||||
Side effect: returns 2 objects, (textLabel, changeText). The 'textLabel' input is modified to automatically truncate text (with ellipsis), if it gets too small to fit. 'changeText' is a function that can be used to change the text, it takes 1 string as an argument]]
|
||||
elseif
|
||||
funcNameOrFunc == "CreateSlider"
|
||||
or funcNameOrFunc == RbxGui.CreateSlider
|
||||
then
|
||||
return "Function CreateSlider. "
|
||||
.. "Arguments: (steps, width, position) "
|
||||
.. "Side effect: returns 2 objects, (sliderGui, sliderPosition). The 'steps' argument specifies how many different positions the slider can hold along the bar. 'width' specifies in pixels how wide the bar should be (modifiable afterwards if desired). 'position' argument should be a UDim2 for slider positioning. 'sliderPosition' is an IntValue whose current .Value specifies the specific step the slider is currently on."
|
||||
return [[Function CreateSlider.
|
||||
Arguments: (steps, width, position)
|
||||
Side effect: returns 2 objects, (sliderGui, sliderPosition). The 'steps' argument specifies how many different positions the slider can hold along the bar. 'width' specifies in pixels how wide the bar should be (modifiable afterwards if desired). 'position' argument should be a UDim2 for slider positioning. 'sliderPosition' is an IntValue whose current .Value specifies the specific step the slider is currently on.]]
|
||||
elseif
|
||||
funcNameOrFunc == "CreateLoadingFrame"
|
||||
or funcNameOrFunc == RbxGui.CreateLoadingFrame
|
||||
then
|
||||
return "Function CreateLoadingFrame. "
|
||||
.. "Arguments: (name, size, position) "
|
||||
.. "Side effect: Creates a gui that can be manipulated to show progress for a particular action. Name appears above the loading bar, and size and position are udim2 values (both size and position are optional arguments). Returns 3 arguments, the first being the gui created. The second being updateLoadingGuiPercent, which is a bindable function. This function takes one argument (two optionally), which should be a number between 0 and 1, representing the percentage the loading gui should be at. The second argument to this function is a boolean value that if set to true will tween the current percentage value to the new percentage value, therefore our third argument is how long this tween should take. Our third returned argument is a BindableEvent, that when fired means that someone clicked the cancel button on the dialog."
|
||||
return [[Function CreateLoadingFrame.
|
||||
Arguments: (name, size, position)
|
||||
Side effect: Creates a gui that can be manipulated to show progress for a particular action. Name appears above the loading bar, and size and position are udim2 values (both size and position are optional arguments). Returns 3 arguments, the first being the gui created. The second being updateLoadingGuiPercent, which is a bindable function. This function takes one argument (two optionally), which should be a number between 0 and 1, representing the percentage the loading gui should be at. The second argument to this function is a boolean value that if set to true will tween the current percentage value to the new percentage value, therefore our third argument is how long this tween should take. Our third returned argument is a BindableEvent, that when fired means that someone clicked the cancel button on the dialog.]]
|
||||
elseif
|
||||
funcNameOrFunc == "CreateTerrainMaterialSelector"
|
||||
or funcNameOrFunc == RbxGui.CreateTerrainMaterialSelector
|
||||
then
|
||||
return "Function CreateTerrainMaterialSelector. "
|
||||
.. "Arguments: (size, position) "
|
||||
.. "Side effect: Size and position are UDim2 values that specifies the selector's size and position. Both size and position are optional arguments. This method returns 3 objects (terrainSelectorGui, terrainSelected, forceTerrainSelection). terrainSelectorGui is just the gui object that we generate with this function, parent it as you like. TerrainSelected is a BindableEvent that is fired whenever a new terrain type is selected in the gui. ForceTerrainSelection is a function that takes an argument of Enum.CellMaterial and will force the gui to show that material as currently selected."
|
||||
return [[Function CreateTerrainMaterialSelector.
|
||||
Arguments: (size, position)
|
||||
Side effect: Size and position are UDim2 values that specifies the selector's size and position. Both size and position are optional arguments. This method returns 3 objects (terrainSelectorGui, terrainSelected, forceTerrainSelection). terrainSelectorGui is just the gui object that we generate with this function, parent it as you like. TerrainSelected is a BindableEvent that is fired whenever a new terrain type is selected in the gui. ForceTerrainSelection is a function that takes an argument of Enum.CellMaterial and will force the gui to show that material as currently selected.]]
|
||||
end
|
||||
return "No help available for this function"
|
||||
end
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
--!strict
|
||||
-- CoreGui.RobloxGui.CoreScripts/Settings
|
||||
-- CoreGui.MercuryGui.CoreScripts/Settings
|
||||
print "[Mercury]: Loaded corescript 46295863"
|
||||
|
||||
local News = require "../Modules/New"
|
||||
|
|
@ -310,9 +310,7 @@ end
|
|||
local function setDisabledState(guiObject)
|
||||
if not guiObject then
|
||||
return
|
||||
end
|
||||
|
||||
if guiObject:IsA "TextLabel" then
|
||||
elseif guiObject:IsA "TextLabel" then
|
||||
guiObject.TextTransparency = 0.9
|
||||
elseif guiObject:IsA "TextButton" then
|
||||
guiObject.TextTransparency = 0.9
|
||||
|
|
@ -1251,10 +1249,7 @@ local function createGameSettingsMenu(baseZIndex, _)
|
|||
end)
|
||||
|
||||
graphicsLevel.Changed:connect(function(_)
|
||||
if isAutoGraphics then
|
||||
return
|
||||
end
|
||||
if not listenToGraphicsLevelChange then
|
||||
if isAutoGraphics or not listenToGraphicsLevelChange then
|
||||
return
|
||||
end
|
||||
|
||||
|
|
@ -1287,9 +1282,7 @@ local function createGameSettingsMenu(baseZIndex, _)
|
|||
autoGraphicsButton.MouseButton1Click:connect(function()
|
||||
if inStudioMode and not game.Players.LocalPlayer then
|
||||
return
|
||||
end
|
||||
|
||||
if not isAutoGraphics then
|
||||
elseif not isAutoGraphics then
|
||||
goToAutoGraphics()
|
||||
else
|
||||
goToManualGraphics(graphicsLevel.Value)
|
||||
|
|
@ -1297,11 +1290,9 @@ local function createGameSettingsMenu(baseZIndex, _)
|
|||
end)
|
||||
|
||||
game.GraphicsQualityChangeRequest:connect(function(graphicsIncrease)
|
||||
if isAutoGraphics then
|
||||
if isAutoGraphics then -- only can set graphics in manual mode
|
||||
return
|
||||
end -- only can set graphics in manual mode
|
||||
|
||||
if graphicsIncrease then
|
||||
elseif graphicsIncrease then
|
||||
if (graphicsLevel.Value + 1) > GraphicsQualityLevels then
|
||||
return
|
||||
end
|
||||
|
|
@ -1398,9 +1389,7 @@ local function createGameSettingsMenu(baseZIndex, _)
|
|||
studioCheckbox.MouseButton1Click:connect(function()
|
||||
if not studioCheckbox.Active then
|
||||
return
|
||||
end
|
||||
|
||||
if studioCheckbox.Text == "" then
|
||||
elseif studioCheckbox.Text == "" then
|
||||
studioCheckbox.Text = "X"
|
||||
else
|
||||
studioCheckbox.Text = ""
|
||||
|
|
@ -1514,7 +1503,7 @@ local function createGameSettingsMenu(baseZIndex, _)
|
|||
videoCaptureDropDown.DropDownMenuButton.ZIndex = baseZIndex + 4
|
||||
videoCaptureDropDown.DropDownMenuButton.Icon.ZIndex = baseZIndex + 4
|
||||
|
||||
syncVideoCaptureSetting = function()
|
||||
function syncVideoCaptureSetting()
|
||||
if
|
||||
UserSettings().GameSettings.VideoUploadPromptBehavior
|
||||
== Enum.UploadSetting.Never
|
||||
|
|
@ -1547,7 +1536,7 @@ local function createGameSettingsMenu(baseZIndex, _)
|
|||
Parent = gameSettingsMenuFrame,
|
||||
}
|
||||
|
||||
mouseLockLabel = CoreGui.RobloxGui:FindFirstChild("MouseLockLabel", true)
|
||||
mouseLockLabel = CoreGui.MercuryGui:FindFirstChild("MouseLockLabel", true)
|
||||
|
||||
local enumItems = Enum.ControlMode:GetEnumItems()
|
||||
local enumNames = {}
|
||||
|
|
@ -1595,7 +1584,7 @@ GuiService:AddKey "r"
|
|||
|
||||
local baseZIndex = 0
|
||||
if UserSettings then
|
||||
local createSettingsDialog = function()
|
||||
local function createSettingsDialog()
|
||||
waitForChild(gui, "BottomLeftControl")
|
||||
settingsButton = gui.BottomLeftControl:FindFirstChild "SettingsButton"
|
||||
|
||||
|
|
@ -1674,7 +1663,7 @@ if UserSettings then
|
|||
end)
|
||||
end
|
||||
|
||||
CoreGui.RobloxGui.Changed:connect(
|
||||
CoreGui.MercuryGui.Changed:connect(
|
||||
function(prop) -- We have stopped recording when we resize
|
||||
if prop == "AbsoluteSize" and recordingVideo then
|
||||
recordVideoClick(
|
||||
|
|
@ -1979,7 +1968,7 @@ if UserSettings then
|
|||
end)
|
||||
end --UserSettings call
|
||||
|
||||
local createSaveDialogs = function()
|
||||
local function createSaveDialogs()
|
||||
local shield = New "TextButton" {
|
||||
Text = "",
|
||||
AutoButtonColor = false,
|
||||
|
|
@ -2109,7 +2098,7 @@ local createSaveDialogs = function()
|
|||
)
|
||||
end
|
||||
|
||||
save = function()
|
||||
function save()
|
||||
saveDialogMessageBox.Visible = false
|
||||
|
||||
--Show the spinner dialog
|
||||
|
|
@ -2160,25 +2149,25 @@ local createSaveDialogs = function()
|
|||
end
|
||||
end
|
||||
|
||||
saveLocal = function()
|
||||
function saveLocal()
|
||||
errorDialogMessageBox.Visible = false
|
||||
game:FinishShutdown(true)
|
||||
clearAndResetDialog()
|
||||
end
|
||||
|
||||
dontSave = function()
|
||||
function dontSave()
|
||||
saveDialogMessageBox.Visible = false
|
||||
errorDialogMessageBox.Visible = false
|
||||
game:FinishShutdown(false)
|
||||
clearAndResetDialog()
|
||||
end
|
||||
cancel = function()
|
||||
function cancel()
|
||||
saveDialogMessageBox.Visible = false
|
||||
errorDialogMessageBox.Visible = false
|
||||
clearAndResetDialog()
|
||||
end
|
||||
|
||||
clearAndResetDialog = function()
|
||||
function clearAndResetDialog()
|
||||
saveDialogMessageBox.Visible = true
|
||||
errorDialogMessageBox.Visible = false
|
||||
spinnerDialog.Visible = false
|
||||
|
|
@ -2191,7 +2180,7 @@ local createSaveDialogs = function()
|
|||
return shield
|
||||
end
|
||||
|
||||
local createReportAbuseDialog = function()
|
||||
local function createReportAbuseDialog()
|
||||
--Only show things if we are a NetworkClient
|
||||
waitForChild(game, "NetworkClient")
|
||||
|
||||
|
|
@ -2492,8 +2481,8 @@ local createReportAbuseDialog = function()
|
|||
Parent = reportAbuseFrame,
|
||||
}
|
||||
|
||||
closeAndResetDialog = function()
|
||||
--Delete old player combo box
|
||||
function closeAndResetDialog()
|
||||
-- Delete old player combo box
|
||||
local oldComboBox = reportAbuseFrame:FindFirstChild "PlayersComboBox"
|
||||
if oldComboBox then
|
||||
oldComboBox.Parent = nil
|
||||
|
|
@ -2549,7 +2538,7 @@ if isSaveDialogSupported then
|
|||
local saveDialogs = createSaveDialogs()
|
||||
saveDialogs.Parent = gui
|
||||
|
||||
game.RequestShutdown = function()
|
||||
function game.RequestShutdown()
|
||||
table.insert(centerDialogs, saveDialogs)
|
||||
game.GuiService:AddCenterDialog(
|
||||
saveDialogs,
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
--!strict
|
||||
-- CoreGui.RobloxGui.CoreScripts/PlayerListScript
|
||||
-- CoreGui.MercuryGui.CoreScripts/PlayerListScript
|
||||
print "[Mercury]: Loaded corescript 48488235"
|
||||
|
||||
local RunService = game:GetService "RunService"
|
||||
|
|
@ -87,7 +87,7 @@ local function getMembershipTypeIcon(membershipType, playerName)
|
|||
elseif membershipType == Enum.MembershipType.OutrageousBuildersClub then
|
||||
return "rbxasset://textures/ui/TinyObcIcon.png"
|
||||
else
|
||||
error(`Unknown membershipType {membershipType}`)
|
||||
error("Unknown membershipType " .. membershipType)
|
||||
end
|
||||
end
|
||||
|
||||
|
|
@ -104,7 +104,7 @@ local function getFriendStatusIcon(friendStatus)
|
|||
elseif friendStatus == Enum.FriendStatus.FriendRequestReceived then
|
||||
return "http://banland.xyz/asset?id=99776838"
|
||||
else
|
||||
error(`Unknown FriendStatus {friendStatus}`)
|
||||
error("Unknown FriendStatus " .. friendStatus)
|
||||
end
|
||||
end
|
||||
|
||||
|
|
@ -914,10 +914,11 @@ local function HighlightMyRank(
|
|||
MemberButton,
|
||||
AdminButton
|
||||
)
|
||||
BanPlayerButton.Image = `http://banland.xyz/asset?id={Images.LightPopupMid}`
|
||||
VisitorButton.Image = `http://banland.xyz/asset?id={Images.DarkPopupMid}`
|
||||
MemberButton.Image = `http://banland.xyz/asset?id={Images.LightPopupMid}`
|
||||
AdminButton.Image = `http://banland.xyz/asset?id={Images.DarkPopupBottom}`
|
||||
BanPlayerButton.Image = "http://banland.xyz/asset?id="
|
||||
.. Images.LightPopupMid
|
||||
VisitorButton.Image = "http://banland.xyz/asset?id=" .. Images.DarkPopupMid
|
||||
MemberButton.Image = "http://banland.xyz/asset?id=" .. Images.LightPopupMid
|
||||
AdminButton.Image = "http://banland.xyz/asset?id=" .. Images.DarkPopupBottom
|
||||
|
||||
local rank = player.PersonalServerRank
|
||||
if rank <= PrivilegeLevel.Banned then
|
||||
|
|
@ -1048,7 +1049,7 @@ end
|
|||
creates dropdownbox, registers all listeners for abuse dialog
|
||||
--]]
|
||||
local function InitReportAbuse()
|
||||
UpdateAbuseFunction = function(abuseText)
|
||||
function UpdateAbuseFunction(abuseText)
|
||||
AbuseName = abuseText
|
||||
if AbuseName and SelectedPlayer then
|
||||
SubmitReportButton.Active = true
|
||||
|
|
@ -1706,7 +1707,7 @@ local function BaseUpdate()
|
|||
BaseUpdateLock = false
|
||||
end
|
||||
|
||||
RecreateScoreColumns = function(ptable)
|
||||
function RecreateScoreColumns(ptable)
|
||||
-- OUTLINE
|
||||
local function MakeScoreEntry(entry, scoreval, panel)
|
||||
if not panel:FindFirstChild "PlayerScore" then
|
||||
|
|
@ -1746,8 +1747,7 @@ RecreateScoreColumns = function(ptable)
|
|||
thisScore.Changed:connect(function()
|
||||
if not thisScore.Parent then
|
||||
return
|
||||
end
|
||||
if scoreval.Name == ScoreNames[1]["Name"] then
|
||||
elseif scoreval.Name == ScoreNames[1]["Name"] then
|
||||
entry.Score = GetScoreValue(thisScore)
|
||||
if entry.Player == LocalPlayer then
|
||||
HeaderScore.Text = tostring(GetScoreValue(thisScore))
|
||||
|
|
@ -1846,7 +1846,7 @@ end
|
|||
monitors positions of the clipping frames and bottom frames
|
||||
called from EVERYWHERE, too much probably
|
||||
--]]
|
||||
UpdateMinimize = function()
|
||||
function UpdateMinimize()
|
||||
if IsMinimized.Value then
|
||||
if IsMaximized.Value then
|
||||
ToggleMaximize()
|
||||
|
|
@ -2555,7 +2555,7 @@ local function AddMiddleBGFrame()
|
|||
UDim2.new(0.5, 0, (#MiddleFrameBackgrounds * nBGFrame.Size.Y.Scale), 0)
|
||||
|
||||
local function applyImage(id: string)
|
||||
nBGFrame.Background.Image = `http://banland.xyz/asset?id={id}`
|
||||
nBGFrame.Background.Image = "http://banland.xyz/asset?id=" .. id
|
||||
end
|
||||
|
||||
if (#MiddleFrameBackgrounds + 1) % 2 ~= 1 then
|
||||
|
|
@ -2828,18 +2828,18 @@ local function PlayerChanged(entry, property)
|
|||
if property == "Neutral" then
|
||||
-- if player changing to neutral
|
||||
if entry.Player.Neutral and #(game.Teams:GetTeams()) > 0 then
|
||||
log(`{entry.Player.Name} setting to neutral`)
|
||||
log(entry.Player.Name .. " setting to neutral")
|
||||
FindRemovePlayerFromTeam(entry)
|
||||
entry.MyTeam = nil
|
||||
if not NeutralTeam then
|
||||
log(`{entry.Player.Name} creating neutral team`)
|
||||
log(entry.Player.Name .. " creating neutral team")
|
||||
AddNeutralTeam()
|
||||
else
|
||||
log(`{entry.Player.Name} adding to neutral team`)
|
||||
log(entry.Player.Name .. " adding to neutral team")
|
||||
AddPlayerToTeam(NeutralTeam, entry)
|
||||
end
|
||||
elseif #(game.Teams:GetTeams()) > 0 then -- else player switching to a team, or a weird edgecase
|
||||
log(`{entry.Player.Name} has been set non-neutral`)
|
||||
log(entry.Player.Name .. " has been set non-neutral")
|
||||
SetPlayerToTeam(entry)
|
||||
end
|
||||
BaseUpdate()
|
||||
|
|
@ -2848,7 +2848,7 @@ local function PlayerChanged(entry, property)
|
|||
and not entry.Player.Neutral
|
||||
and entry.Player ~= entry.MyTeam
|
||||
then
|
||||
log(`{entry.Player.Name} setting to new team`)
|
||||
log(entry.Player.Name .. " setting to new team")
|
||||
SetPlayerToTeam(entry)
|
||||
BaseUpdate()
|
||||
elseif property == "Name" or property == "MembershipType" then
|
||||
|
|
@ -2879,7 +2879,7 @@ end
|
|||
--]]
|
||||
local function InsertPlayerFrame(nplayer)
|
||||
while AddingFrameLock do
|
||||
log(`waiting to insert {nplayer.Name}`)
|
||||
log("waiting to insert " .. nplayer.Name)
|
||||
RunService.Heartbeat:wait()
|
||||
end
|
||||
AddingFrameLock = true
|
||||
|
|
@ -3067,7 +3067,7 @@ local function OnFriendshipChanged(player, friendStatus)
|
|||
elseif nicon ~= "" and entry.Frame.FriendLabel.Image == "" then
|
||||
entry.Frame.TitleFrame.Title.Position = entry.Frame.TitleFrame.Title.Position
|
||||
+ UDim2.new(0, 17, 0, 0)
|
||||
log(`confirmed status {player.Name}`)
|
||||
log("confirmed status " .. player.Name)
|
||||
end
|
||||
entry.Frame.FriendLabel.Image = nicon
|
||||
return
|
||||
|
|
@ -3337,9 +3337,9 @@ end
|
|||
pcall(function()
|
||||
coreGuiChanged(
|
||||
Enum.CoreGuiType.PlayerList,
|
||||
Game.StarterGui:GetCoreGuiEnabled(Enum.CoreGuiType.PlayerList)
|
||||
game.StarterGui:GetCoreGuiEnabled(Enum.CoreGuiType.PlayerList)
|
||||
)
|
||||
Game.StarterGui.CoreGuiChangedSignal:connect(coreGuiChanged)
|
||||
game.StarterGui.CoreGuiChangedSignal:connect(coreGuiChanged)
|
||||
end)
|
||||
|
||||
while not game:GetService "Teams" do
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
-- CoreGui.RobloxGui.CoreScripts/NotificationScript
|
||||
-- CoreGui.MercuryGui.CoreScripts/NotificationScript
|
||||
print "[Mercury]: Loaded corescript 48488398"
|
||||
|
||||
local GuiService = game:GetService "GuiService"
|
||||
|
|
@ -53,15 +53,13 @@ end
|
|||
|
||||
local function makeFriend(fromPlayer, toPlayer)
|
||||
local popup = script.Parent:FindFirstChild "Popup"
|
||||
if popup == nil then
|
||||
if
|
||||
popup == nil -- there is no popup!
|
||||
or popup.Visible -- currently popping something, abort!
|
||||
or friendRequestBlacklist[fromPlayer] -- previously cancelled friend request, we don't want it!
|
||||
then
|
||||
return
|
||||
end -- there is no popup!
|
||||
if popup.Visible then
|
||||
return
|
||||
end -- currently popping something, abort!
|
||||
if friendRequestBlacklist[fromPlayer] then
|
||||
return
|
||||
end -- previously cancelled friend request, we don't want it!
|
||||
end
|
||||
|
||||
popup.PopupText.Text = `Accept Friend Request from {fromPlayer.Name}?`
|
||||
popup.PopupImage.Image =
|
||||
|
|
@ -126,9 +124,7 @@ game.Players.FriendRequestEvent:connect(function(fromPlayer, toPlayer, event)
|
|||
-- if this doesn't involve me, then do nothing
|
||||
if fromPlayer ~= localPlayer and toPlayer ~= localPlayer then
|
||||
return
|
||||
end
|
||||
|
||||
if fromPlayer == localPlayer then
|
||||
elseif fromPlayer == localPlayer then
|
||||
if event == Enum.FriendRequestEvent.Accept then
|
||||
GuiService:SendNotification(
|
||||
"You are Friends",
|
||||
|
|
@ -198,7 +194,7 @@ end
|
|||
if teleportEnabled then
|
||||
localPlayer.OnTeleport:connect(onTeleport)
|
||||
|
||||
TeleportService.ErrorCallback = function(message)
|
||||
function TeleportService.ErrorCallback(message)
|
||||
local popup = script.Parent:FindFirstChild "Popup"
|
||||
showOneButton()
|
||||
popup.PopupText.Text = message
|
||||
|
|
@ -248,7 +244,7 @@ if teleportEnabled then
|
|||
end
|
||||
)
|
||||
end
|
||||
TeleportService.ConfirmationCallback = function(message, placeId, spawnName)
|
||||
function TeleportService.ConfirmationCallback(message, placeId, spawnName)
|
||||
local popup = script.Parent:FindFirstChild "Popup"
|
||||
popup.PopupText.Text = message
|
||||
popup.PopupImage.Image = ""
|
||||
|
|
|
|||
|
|
@ -1,11 +1,11 @@
|
|||
-- CoreGui.RobloxGui.CoreScripts/PopupScript
|
||||
-- CoreGui.MercuryGui.CoreScripts/PopupScript
|
||||
print "[Mercury]: Loaded corescript 48488451"
|
||||
|
||||
local News = require "../Modules/New"
|
||||
local New = News.New
|
||||
local Hydrate = News.Hydrate
|
||||
|
||||
--build our gui
|
||||
-- build our gui
|
||||
|
||||
local popupFrame = New "Frame" {
|
||||
Name = "Popup",
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
-- CoreGui.RobloxGui.CoreScripts/BackpackScripts/BackpackBuild
|
||||
-- CoreGui.MercuryGui.CoreScripts/BackpackScripts/BackpackBuild
|
||||
print "[Mercury]: Loaded corescript 53878047"
|
||||
|
||||
local News = require "../Modules/New"
|
||||
|
|
@ -207,19 +207,6 @@ for i = 0, 9 do
|
|||
end
|
||||
|
||||
slotFrame.Parent = CurrentLoadout
|
||||
|
||||
if gui.AbsoluteSize.Y <= 320 then
|
||||
slotFrame.Position = UDim2.new(0, (i - 1) * 60, 0, -50)
|
||||
-- print(
|
||||
-- "Well got here",
|
||||
-- slotFrame,
|
||||
-- slotFrame.Position.X.Scale,
|
||||
-- slotFrame.Position.X.Offset
|
||||
-- )
|
||||
end
|
||||
if gui.AbsoluteSize.Y <= 320 and i == 0 then
|
||||
slotFrame:Destroy()
|
||||
end
|
||||
end
|
||||
|
||||
-- Great, now lets make the inventory!
|
||||
|
|
|
|||
|
|
@ -1,10 +1,10 @@
|
|||
-- CoreGui.RobloxGui.CurrentLoadout.CoreScripts/BackpackScript
|
||||
-- CoreGui.MercuryGui.CurrentLoadout.CoreScripts/BackpackScript
|
||||
print "[Mercury]: Loaded corescript 53878057"
|
||||
|
||||
local CoreGui = game:GetService "CoreGui"
|
||||
local GuiService = game:GetService "GuiService"
|
||||
local RunService = game:GetService "RunService"
|
||||
local UserInputService = Game:GetService "UserInputService"
|
||||
local UserInputService = game:GetService "UserInputService"
|
||||
|
||||
-- A couple of necessary functions
|
||||
local function waitForChild(instance, name)
|
||||
|
|
@ -23,15 +23,15 @@ local currentLoadout = script.Parent
|
|||
local StaticTabName = "gear"
|
||||
local backpackEnabled = true
|
||||
|
||||
local robloxGui = CoreGui:FindFirstChild "RobloxGui"
|
||||
assert(robloxGui)
|
||||
local mercuryGui = CoreGui:FindFirstChild "MercuryGui"
|
||||
assert(mercuryGui)
|
||||
|
||||
local controlFrame = waitForChild(robloxGui, "ControlFrame")
|
||||
local controlFrame = waitForChild(mercuryGui, "ControlFrame")
|
||||
local backpackButton = waitForChild(controlFrame, "BackpackButton")
|
||||
local backpack = waitForChild(robloxGui, "Backpack")
|
||||
waitForChild(robloxGui, "CurrentLoadout")
|
||||
waitForChild(robloxGui.CurrentLoadout, "TempSlot")
|
||||
waitForChild(robloxGui.CurrentLoadout.TempSlot, "SlotNumber")
|
||||
local backpack = waitForChild(mercuryGui, "Backpack")
|
||||
waitForChild(mercuryGui, "CurrentLoadout")
|
||||
waitForChild(mercuryGui.CurrentLoadout, "TempSlot")
|
||||
waitForChild(mercuryGui.CurrentLoadout.TempSlot, "SlotNumber")
|
||||
|
||||
waitForChild(currentLoadout, "Background")
|
||||
local clBackground = currentLoadout.Background
|
||||
|
|
@ -92,9 +92,6 @@ local tabClickedEvent = waitForChild(backpackManager, "TabClickedEvent")
|
|||
local inGearTab = true
|
||||
|
||||
local maxNumLoadoutItems = 10
|
||||
if robloxGui.AbsoluteSize.Y <= 320 then
|
||||
maxNumLoadoutItems = 4
|
||||
end
|
||||
|
||||
local characterChildAddedCon, backpackChildCon
|
||||
|
||||
|
|
@ -115,8 +112,6 @@ for i = 1, maxNumLoadoutItems do
|
|||
gearSlots[i] = "empty"
|
||||
end
|
||||
|
||||
local backpackWasOpened = false
|
||||
|
||||
local dragBeginPos
|
||||
--- End Locals
|
||||
|
||||
|
|
@ -154,17 +149,11 @@ local function unregisterNumberKeys()
|
|||
end
|
||||
|
||||
local function characterInWorkspace()
|
||||
if game.Players.LocalPlayer then
|
||||
if game.Players.LocalPlayer.Character then
|
||||
if game.Players.LocalPlayer.Character ~= nil then
|
||||
if game.Players.LocalPlayer.Character.Parent ~= nil then
|
||||
return true
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
return false
|
||||
local localPlayer = game.Players.LocalPlayer
|
||||
return localPlayer
|
||||
and localPlayer.Character
|
||||
and localPlayer.Character ~= nil
|
||||
and localPlayer.Character.Parent ~= nil
|
||||
end
|
||||
|
||||
local function removeGear(gear)
|
||||
|
|
@ -288,7 +277,7 @@ local function insertGear(gear, addToSlot)
|
|||
end)
|
||||
end
|
||||
|
||||
reorganizeLoadout = function(gear, inserting, _, addToSlot)
|
||||
function reorganizeLoadout(gear, inserting, _, addToSlot)
|
||||
if inserting then -- add in gear
|
||||
insertGear(gear, addToSlot)
|
||||
else
|
||||
|
|
@ -301,7 +290,7 @@ end
|
|||
|
||||
local function checkToolAncestry(child, parent)
|
||||
if
|
||||
child:FindFirstChild "RobloxBuildTool" -- don't show roblox build tools
|
||||
child:FindFirstChild "RobloxBuildTool" -- don't show mercury build tools
|
||||
or not (child:IsA "Tool" or child:IsA "HopperBin")
|
||||
then
|
||||
return
|
||||
|
|
@ -350,16 +339,12 @@ local function removeAllEquippedGear(physGear)
|
|||
end
|
||||
|
||||
local function normaliseButton(button, speed)
|
||||
if not button then
|
||||
return
|
||||
end
|
||||
if button.Size.Y.Scale <= 1 then
|
||||
return
|
||||
end
|
||||
if button.Selected then
|
||||
return
|
||||
end
|
||||
if not button.Parent then
|
||||
if
|
||||
not button
|
||||
or button.Size.Y.Scale <= 1
|
||||
or button.Selected
|
||||
or not button.Parent
|
||||
then
|
||||
return
|
||||
end
|
||||
|
||||
|
|
@ -407,9 +392,7 @@ local function enlargeButton(button)
|
|||
|
||||
if not enlargeOverride then
|
||||
return
|
||||
end
|
||||
|
||||
if button:FindFirstChild "Highlight" then
|
||||
elseif button:FindFirstChild "Highlight" then
|
||||
button.Highlight.Visible = true
|
||||
end
|
||||
|
||||
|
|
@ -510,31 +493,22 @@ local function toolSwitcher(numKey)
|
|||
end
|
||||
|
||||
local function activateGear(num)
|
||||
local numKey
|
||||
if num == "0" then
|
||||
numKey = 10 -- why do lua indexes have to start at 1? :(
|
||||
else
|
||||
numKey = tonumber(num)
|
||||
end
|
||||
local numKey = num == "0" and 10 or tonumber(num)
|
||||
|
||||
if numKey == nil then
|
||||
return
|
||||
end
|
||||
|
||||
if gearSlots[numKey] ~= "empty" then
|
||||
if numKey and gearSlots[numKey] ~= "empty" then
|
||||
toolSwitcher(numKey)
|
||||
end
|
||||
end
|
||||
|
||||
local function pointInRectangle(point, rectTopLeft, rectSize)
|
||||
if point.x > rectTopLeft.x and point.x < (rectTopLeft.x + rectSize.x) then
|
||||
if
|
||||
point.y > rectTopLeft.y
|
||||
point.x > rectTopLeft.x
|
||||
and point.x < (rectTopLeft.x + rectSize.x)
|
||||
and point.y > rectTopLeft.y
|
||||
and point.y < (rectTopLeft.y + rectSize.y)
|
||||
then
|
||||
return true
|
||||
end
|
||||
end
|
||||
return false
|
||||
end
|
||||
|
||||
|
|
@ -716,7 +690,7 @@ local function addingPlayerChild(
|
|||
if child:FindFirstChild "RobloxBuildTool" then
|
||||
debounce = false
|
||||
return
|
||||
end -- don't show roblox build tools
|
||||
end -- don't show mercury build tools
|
||||
if not (child:IsA "Tool" or child:IsA "HopperBin") then
|
||||
debounce = false
|
||||
return -- we don't care about anything besides tools (sigh...)
|
||||
|
|
@ -783,7 +757,7 @@ local function addingPlayerChild(
|
|||
end
|
||||
|
||||
local slotNum = slotToMod % 10
|
||||
local parent = currentLoadout:FindFirstChild(`Slot{slotNum}`)
|
||||
local parent = currentLoadout:FindFirstChild("Slot" .. slotNum)
|
||||
gearClone.Parent = parent
|
||||
|
||||
if inventoryGearButton then
|
||||
|
|
@ -851,30 +825,23 @@ local function addingPlayerChild(
|
|||
local children = gearClone:GetChildren()
|
||||
for i = 1, #children do
|
||||
if children[i]:IsA "TextLabel" then
|
||||
if string.find(children[i].Name, "Shadow") then
|
||||
children[i].ZIndex = 8
|
||||
else
|
||||
children[i].ZIndex = 9
|
||||
end
|
||||
children[i].ZIndex = string.find(children[i].Name, "Shadow")
|
||||
and 8
|
||||
or 9
|
||||
elseif children[i]:IsA "Frame" or children[i]:IsA "ImageLabel" then
|
||||
children[i].ZIndex = 7
|
||||
end
|
||||
end
|
||||
end)
|
||||
dragStop = gearClone.DragStopped:connect(function(x, y)
|
||||
if gearClone.Selected then
|
||||
gearClone.ZIndex = 4
|
||||
else
|
||||
gearClone.ZIndex = 3
|
||||
end
|
||||
gearClone.ZIndex = gearClone.Selected and 4 or 3
|
||||
|
||||
local children = gearClone:GetChildren()
|
||||
for i = 1, #children do
|
||||
if children[i]:IsA "TextLabel" then
|
||||
if string.find(children[i].Name, "Shadow") then
|
||||
children[i].ZIndex = 3
|
||||
else
|
||||
children[i].ZIndex = 4
|
||||
end
|
||||
children[i].ZIndex = string.find(children[i].Name, "Shadow")
|
||||
and 3
|
||||
or 4
|
||||
elseif children[i]:IsA "Frame" or children[i]:IsA "ImageLabel" then
|
||||
children[i].ZIndex = 2
|
||||
end
|
||||
|
|
@ -887,8 +854,7 @@ local function addingPlayerChild(
|
|||
buttonDeleteCon = gearClone.AncestryChanged:connect(function()
|
||||
if gearClone.Parent and gearClone.Parent.Parent == currentLoadout then
|
||||
return
|
||||
end
|
||||
if clickCon then
|
||||
elseif clickCon then
|
||||
clickCon:disconnect()
|
||||
end
|
||||
if buttonDeleteCon then
|
||||
|
|
@ -925,17 +891,13 @@ local function addingPlayerChild(
|
|||
end)
|
||||
|
||||
childChangeCon = child.Changed:connect(function(prop)
|
||||
if prop == "Name" then
|
||||
if gearClone and gearClone.GearImage.Image == "" then
|
||||
if prop == "Name" and gearClone and gearClone.GearImage.Image == "" then
|
||||
gearClone.GearText.Text = child.Name
|
||||
end
|
||||
elseif prop == "Active" then
|
||||
if child and child:IsA "HopperBin" then
|
||||
if not child.Active then
|
||||
if child and child:IsA "HopperBin" and not child.Active then
|
||||
gearClone.Selected = false
|
||||
normaliseButton(gearClone)
|
||||
end
|
||||
end
|
||||
elseif prop == "TextureId" then
|
||||
gearClone.GearImage.Image = child.TextureId
|
||||
end
|
||||
|
|
@ -945,7 +907,7 @@ local function addingPlayerChild(
|
|||
|
||||
Spawn(function()
|
||||
while backpackIsOpen() do
|
||||
wait(0.03)
|
||||
wait()
|
||||
end
|
||||
for i = 1, #gearSlots do
|
||||
if gearSlots[i] ~= "empty" then
|
||||
|
|
@ -968,11 +930,11 @@ local function addToInventory(child)
|
|||
for i = 1, #inventory do
|
||||
if inventory[i] and inventory[i] == child then
|
||||
return
|
||||
end
|
||||
if not inventory[i] then
|
||||
elseif not inventory[i] then
|
||||
slot = i
|
||||
end
|
||||
end
|
||||
|
||||
if slot then
|
||||
inventory[slot] = child
|
||||
elseif #inventory < 1 then
|
||||
|
|
@ -982,7 +944,7 @@ local function addToInventory(child)
|
|||
end
|
||||
end
|
||||
|
||||
local spreadOutGear = function()
|
||||
local function spreadOutGear()
|
||||
local loadoutChildren = currentLoadout:GetChildren()
|
||||
|
||||
for i = 1, #loadoutChildren do
|
||||
|
|
@ -992,15 +954,6 @@ local spreadOutGear = function()
|
|||
if slot == 0 then
|
||||
slot = 10
|
||||
end
|
||||
if robloxGui.AbsoluteSize.Y <= 320 then
|
||||
loadoutChildren[i]:TweenPosition(
|
||||
UDim2.new(0, (slot - 1) * 60, 0, 0),
|
||||
Enum.EasingDirection.Out,
|
||||
Enum.EasingStyle.Quad,
|
||||
0.25,
|
||||
true
|
||||
)
|
||||
else
|
||||
loadoutChildren[i]:TweenPosition(
|
||||
UDim2.new((slot - 1) / 10, 0, 0, 0),
|
||||
Enum.EasingDirection.Out,
|
||||
|
|
@ -1010,10 +963,9 @@ local spreadOutGear = function()
|
|||
)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
local centerGear = function()
|
||||
local function centerGear()
|
||||
local loadoutChildren = currentLoadout:GetChildren()
|
||||
local gearButtons = {}
|
||||
local lastSlotAdd
|
||||
|
|
@ -1036,16 +988,6 @@ local centerGear = function()
|
|||
|
||||
local startPos = (1 - (#gearButtons * 0.1)) / 2
|
||||
for i = 1, #gearButtons do
|
||||
if robloxGui.AbsoluteSize.Y <= 320 then
|
||||
startPos = (0.5 - (#gearButtons * 0.333) / 2)
|
||||
gearButtons[i]:TweenPosition(
|
||||
UDim2.new(startPos + (i - 1) * 0.33, 0, 0, 0),
|
||||
Enum.EasingDirection.Out,
|
||||
Enum.EasingStyle.Quad,
|
||||
0.25,
|
||||
true
|
||||
)
|
||||
else
|
||||
gearButtons[i]:TweenPosition(
|
||||
UDim2.new(startPos + ((i - 1) * 0.1), 0, 0, 0),
|
||||
Enum.EasingDirection.Out,
|
||||
|
|
@ -1054,11 +996,9 @@ local centerGear = function()
|
|||
true
|
||||
)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
local function editLoadout()
|
||||
backpackWasOpened = true
|
||||
if inGearTab then
|
||||
spreadOutGear()
|
||||
end
|
||||
|
|
@ -1141,13 +1081,13 @@ registerNumberKeys()
|
|||
pcall(function()
|
||||
coreGuiChanged(
|
||||
Enum.CoreGuiType.Backpack,
|
||||
Game.StarterGui:GetCoreGuiEnabled(Enum.CoreGuiType.Backpack)
|
||||
game.StarterGui:GetCoreGuiEnabled(Enum.CoreGuiType.Backpack)
|
||||
)
|
||||
coreGuiChanged(
|
||||
Enum.CoreGuiType.Health,
|
||||
Game.StarterGui:GetCoreGuiEnabled(Enum.CoreGuiType.Health)
|
||||
game.StarterGui:GetCoreGuiEnabled(Enum.CoreGuiType.Health)
|
||||
)
|
||||
Game.StarterGui.CoreGuiChangedSignal:connect(coreGuiChanged)
|
||||
game.StarterGui.CoreGuiChangedSignal:connect(coreGuiChanged)
|
||||
end)
|
||||
|
||||
RunService.Heartbeat:wait() -- let stuff initialize incase this is first heartbeat...
|
||||
|
|
@ -1169,23 +1109,6 @@ delay(1, function()
|
|||
setupBackpackListener()
|
||||
end)
|
||||
|
||||
delay(2, function()
|
||||
-- while true do
|
||||
if not backpackWasOpened and robloxGui.AbsoluteSize.Y <= 320 then
|
||||
local cChildren = currentLoadout:GetChildren()
|
||||
for i = 1, #cChildren do
|
||||
local slotNum = tonumber(
|
||||
string.sub(cChildren[i].Name, 5, string.len(cChildren[i].Name))
|
||||
)
|
||||
if type(slotNum) == "number" then
|
||||
cChildren[i].Position = UDim2.new(0, (slotNum - 1) * 60, 0, 0)
|
||||
end
|
||||
end
|
||||
end
|
||||
wait(0.25)
|
||||
-- end
|
||||
end)
|
||||
|
||||
player.ChildAdded:connect(function(child)
|
||||
if child:IsA "PlayerGui" then
|
||||
moveHealthBar(child)
|
||||
|
|
@ -1212,7 +1135,6 @@ humanoidDiedCon = player.Character.Humanoid.Died:connect(function()
|
|||
backpackChildCon:disconnect()
|
||||
backpackChildCon = nil
|
||||
end
|
||||
backpackWasOpened = false
|
||||
end)
|
||||
|
||||
player.CharacterRemoving:connect(function()
|
||||
|
|
@ -1276,27 +1198,6 @@ player.CharacterAdded:connect(function()
|
|||
end)
|
||||
waitForChild(player, "PlayerGui")
|
||||
moveHealthBar(player.PlayerGui)
|
||||
delay(2, function()
|
||||
-- while true do
|
||||
if not backpackWasOpened and robloxGui.AbsoluteSize.Y <= 320 then
|
||||
local cChildren = currentLoadout:GetChildren()
|
||||
for i = 1, #cChildren do
|
||||
local slotNum = tonumber(
|
||||
string.sub(
|
||||
cChildren[i].Name,
|
||||
5,
|
||||
string.len(cChildren[i].Name)
|
||||
)
|
||||
)
|
||||
if type(slotNum) == "number" then
|
||||
cChildren[i].Position =
|
||||
UDim2.new(0, (slotNum - 1) * 60, 0, 0)
|
||||
end
|
||||
end
|
||||
end
|
||||
wait(0.25)
|
||||
-- end
|
||||
end)
|
||||
end)
|
||||
|
||||
waitForChild(guiBackpack, "SwapSlot")
|
||||
|
|
|
|||
|
|
@ -11,12 +11,12 @@ local RbxUtility = {}
|
|||
|
||||
-- Fuq json
|
||||
|
||||
RbxUtility.DecodeJSON = function()
|
||||
error 'RbxUtility.DecodeJSON has been removed, please use Game:GetService("HttpService"):JSONDecode() instead.'
|
||||
function RbxUtility.DecodeJSON()
|
||||
error 'RbxUtility.DecodeJSON has been removed, please use game:GetService("HttpService"):JSONDecode() instead.'
|
||||
end
|
||||
|
||||
RbxUtility.EncodeJSON = function()
|
||||
error 'RbxUtility.EncodeJSON has been removed, please use Game:GetService("HttpService"):JSONEncode() instead.'
|
||||
function RbxUtility.EncodeJSON()
|
||||
error 'RbxUtility.EncodeJSON has been removed, please use game:GetService("HttpService"):JSONEncode() instead.'
|
||||
end
|
||||
|
||||
------------------------------------------------------------------------------------------------------------------------
|
||||
|
|
@ -26,14 +26,14 @@ end
|
|||
------------------------------------------------------------------------------------------------------------------------
|
||||
------------------------------------------------------------------------------------------------------------------------
|
||||
------------------------------------------------------------------------------------------------------------------------
|
||||
--makes a wedge at location x, y, z
|
||||
--sets cell x, y, z to default material if parameter is provided, if not sets cell x, y, z to be whatever material it previously w
|
||||
--returns true if made a wedge, false if the cell remains a block
|
||||
RbxUtility.MakeWedge = function(x, y, z, _)
|
||||
-- makes a wedge at location x, y, z
|
||||
-- sets cell x, y, z to default material if parameter is provided, if not sets cell x, y, z to be whatever material it previously w
|
||||
-- returns true if made a wedge, false if the cell remains a block
|
||||
function RbxUtility.MakeWedge(x, y, z, _)
|
||||
return Terrain:AutoWedgeCell(x, y, z)
|
||||
end
|
||||
|
||||
RbxUtility.SelectTerrainRegion = function(
|
||||
function RbxUtility.SelectTerrainRegion(
|
||||
regionToSelect: Region3,
|
||||
colour: BrickColor,
|
||||
selectEmptyCells: boolean,
|
||||
|
|
@ -210,7 +210,7 @@ RbxUtility.SelectTerrainRegion = function(
|
|||
adornments.SelectionPart = selectionPart
|
||||
adornments.SelectionBox = selectionBox
|
||||
|
||||
updateSelection = function(newRegion: Region3, newColour)
|
||||
function updateSelection(newRegion: Region3, newColour)
|
||||
if newRegion and newRegion ~= lastRegion then
|
||||
lastRegion = newRegion
|
||||
selectionPart.Size = newRegion.Size
|
||||
|
|
@ -222,7 +222,7 @@ RbxUtility.SelectTerrainRegion = function(
|
|||
end
|
||||
else -- use individual cell adorns to represent the area selected
|
||||
adornFullCellsInRegion(regionToSelect, colour)
|
||||
updateSelection = function(newRegion, newColour)
|
||||
function updateSelection(newRegion, newColour)
|
||||
if newRegion and newRegion ~= lastRegion then
|
||||
lastRegion = newRegion
|
||||
adornFullCellsInRegion(newRegion, newColour)
|
||||
|
|
@ -230,7 +230,7 @@ RbxUtility.SelectTerrainRegion = function(
|
|||
end
|
||||
end
|
||||
|
||||
local destroyFunc = function()
|
||||
local function destroyFunc()
|
||||
updateSelection = nil
|
||||
if selectionContainer then
|
||||
selectionContainer:Destroy()
|
||||
|
|
@ -350,7 +350,7 @@ end
|
|||
------------------------------------------------------------------------------------------------------------------------
|
||||
------------------------------------------------------------------------------------------------------------------------
|
||||
--[[
|
||||
A "Create" function for easy creation of Roblox instances. The function accepts a string which is the classname of
|
||||
A "Create" function for easy creation of Mercury instances. The function accepts a string which is the classname of
|
||||
the object to be created. The function then returns another function which either accepts accepts no arguments, in
|
||||
which case it simply creates an object of the given type, or a table argument that may contain several types of data,
|
||||
in which case it mutates the object in varying ways depending on the nature of the aggregate data. These are the
|
||||
|
|
@ -527,7 +527,7 @@ RbxUtility.Create = setmetatable({}, {
|
|||
|
||||
--and create the "Event.E" syntax stub. Really it's just a stub to construct a table which our Create
|
||||
--function can recognize as special.
|
||||
RbxUtility.Create.E = function(eventName)
|
||||
function RbxUtility.Create.E(eventName)
|
||||
return { __eventname = eventName }
|
||||
end
|
||||
|
||||
|
|
@ -541,99 +541,69 @@ end
|
|||
------------------------------------------------------------------------------------------------------------------------
|
||||
------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
RbxUtility.Help = function(funcNameOrFunc)
|
||||
function RbxUtility.Help(funcNameOrFunc)
|
||||
--input argument can be a string or a function. Should return a description (of arguments and expected side effects)
|
||||
if
|
||||
funcNameOrFunc == "DecodeJSON"
|
||||
or funcNameOrFunc == RbxUtility.DecodeJSON
|
||||
then
|
||||
return "Function DecodeJSON. "
|
||||
.. "Arguments: (string). "
|
||||
.. "Side effect: returns a table with all parsed JSON values"
|
||||
end
|
||||
if
|
||||
return [[Function DecodeJSON.
|
||||
Arguments: (string).
|
||||
Side effect: returns a table with all parsed JSON values]]
|
||||
elseif
|
||||
funcNameOrFunc == "EncodeJSON"
|
||||
or funcNameOrFunc == RbxUtility.EncodeJSON
|
||||
then
|
||||
return "Function EncodeJSON. "
|
||||
.. "Arguments: (table). "
|
||||
.. "Side effect: returns a string composed of argument table in JSON data format"
|
||||
end
|
||||
if
|
||||
return [[Function EncodeJSON.
|
||||
Arguments: (table).
|
||||
Side effect: returns a string composed of argument table in JSON data format]]
|
||||
elseif
|
||||
funcNameOrFunc == "MakeWedge"
|
||||
or funcNameOrFunc == RbxUtility.MakeWedge
|
||||
then
|
||||
return "Function MakeWedge. "
|
||||
.. "Arguments: (x, y, z, [default material]). "
|
||||
.. "Description: Makes a wedge at location x, y, z. Sets cell x, y, z to default material if "
|
||||
.. "parameter is provided, if not sets cell x, y, z to be whatever material it previously was. "
|
||||
.. "Returns true if made a wedge, false if the cell remains a block "
|
||||
end
|
||||
if
|
||||
return [[Function MakeWedge.
|
||||
Arguments: (x, y, z, [default material]).
|
||||
Description: Makes a wedge at location x, y, z. Sets cell x, y, z to default material if parameter is provided, if not sets cell x, y, z to be whatever material it previously was. Returns true if made a wedge, false if the cell remains a block]]
|
||||
elseif
|
||||
funcNameOrFunc == "SelectTerrainRegion"
|
||||
or funcNameOrFunc == RbxUtility.SelectTerrainRegion
|
||||
then
|
||||
return "Function SelectTerrainRegion. "
|
||||
.. "Arguments: (regionToSelect, color, selectEmptyCells, selectionParent). "
|
||||
.. "Description: Selects all terrain via a series of selection boxes within the regionToSelect "
|
||||
.. "(this should be a region3 value). The selection box color is detemined by the color argument "
|
||||
.. "(should be a brickcolor value). SelectionParent is the parent that the selection model gets placed to (optional)."
|
||||
.. "SelectEmptyCells is bool, when true will select all cells in the "
|
||||
.. "region, otherwise we only select non-empty cells. Returns a function that can update the selection,"
|
||||
.. "arguments to said function are a new region3 to select, and the adornment color (color arg is optional). "
|
||||
.. "Also returns a second function that takes no arguments and destroys the selection"
|
||||
end
|
||||
if
|
||||
return [[Function SelectTerrainRegion.
|
||||
Arguments: (regionToSelect, color, selectEmptyCells, selectionParent).
|
||||
Description: Selects all terrain via a series of selection boxes within the regionToSelect (this should be a region3 value). The selection box color is detemined by the color argument (should be a brickcolor value). SelectionParent is the parent that the selection model gets placed to (optional).SelectEmptyCells is bool, when true will select all cells in the region, otherwise we only select non-empty cells. Returns a function that can update the selection, arguments to said function are a new region3 to select, and the adornment color (color arg is optional). Also returns a second function that takes no arguments and destroys the selection]]
|
||||
elseif
|
||||
funcNameOrFunc == "CreateSignal"
|
||||
or funcNameOrFunc == RbxUtility.CreateSignal
|
||||
then
|
||||
return "Function CreateSignal. "
|
||||
.. "Arguments: None. "
|
||||
.. "Returns: The newly created Signal object. This object is identical to the RBXScriptSignal class "
|
||||
.. "used for events in Objects, but is a Lua-side object so it can be used to create custom events in"
|
||||
.. "Lua code. "
|
||||
.. "Methods of the Signal object: :connect, :wait, :fire, :disconnect. "
|
||||
.. "For more info you can pass the method name to the Help function, or view the wiki page "
|
||||
.. 'for this library. EG: Help "Signal:connect".'
|
||||
end
|
||||
if funcNameOrFunc == "Signal:connect" then
|
||||
return "Method Signal:connect. "
|
||||
.. "Arguments: (function handler). "
|
||||
.. "Return: A connection object which can be used to disconnect the connection to this handler. "
|
||||
.. "Description: Connectes a handler function to this Signal, so that when |fire| is called the "
|
||||
.. "handler function will be called with the arguments passed to |fire|."
|
||||
return [[Function CreateSignal.
|
||||
Arguments: None.
|
||||
Returns: The newly created Signal object. This object is identical to the RBXScriptSignal class used for events in Objects, but is a Lua-side object so it can be used to create custom events in Lua code. Methods of the Signal object: :connect, :wait, :fire, :disconnect. For more info you can pass the method name to the Help function, or view the wiki page 'for this library. EG: Help "Signal:connect".]]
|
||||
elseif funcNameOrFunc == "Signal:connect" then
|
||||
return [[Method Signal:connect.
|
||||
Arguments: (function handler).
|
||||
Return: A connection object which can be used to disconnect the connection to this handler.
|
||||
Description: Connectes a handler function to this Signal, so that when |fire| is called the handler function will be called with the arguments passed to |fire|.]]
|
||||
end
|
||||
if funcNameOrFunc == "Signal:wait" then
|
||||
return "Method Signal:wait. "
|
||||
.. "Arguments: None. "
|
||||
.. "Returns: The arguments passed to the next call to |fire|. "
|
||||
.. "Description: This call does not return until the next call to |fire| is made, at which point it "
|
||||
.. "will return the values which were passed as arguments to that |fire| call."
|
||||
end
|
||||
if funcNameOrFunc == "Signal:fire" then
|
||||
return "Method Signal:fire. "
|
||||
.. "Arguments: Any number of arguments of any type. "
|
||||
.. "Returns: None. "
|
||||
.. "Description: This call will invoke any connected handler functions, and notify any waiting code "
|
||||
.. "attached to this Signal to continue, with the arguments passed to this function. Note: The calls "
|
||||
.. "to handlers are made asynchronously, so this call will return immediately regardless of how long "
|
||||
.. "it takes the connected handler functions to complete."
|
||||
end
|
||||
if funcNameOrFunc == "Signal:disconnect" then
|
||||
return "Method Signal:disconnect. "
|
||||
.. "Arguments: None. "
|
||||
.. "Returns: None. "
|
||||
.. "Description: This call disconnects all handlers attacched to this function, note however, it "
|
||||
.. "does NOT make waiting code continue, as is the behavior of normal Roblox events. This method "
|
||||
.. "can also be called on the connection object which is returned from Signal:connect to only "
|
||||
.. "disconnect a single handler, as opposed to this method, which will disconnect all handlers."
|
||||
end
|
||||
if funcNameOrFunc == "Create" then
|
||||
return "Function Create. "
|
||||
.. "Arguments: A table containing information about how to construct a collection of objects. "
|
||||
.. "Returns: The constructed objects. "
|
||||
.. "Descrition: Create is a very powerful function, whose description is too long to fit here, and "
|
||||
.. "is best described via example, please see the wiki page for a description of how to use it."
|
||||
return [[Method Signal:wait.
|
||||
Arguments: None.
|
||||
Returns: The arguments passed to the next call to |fire|.
|
||||
Description: This call does not return until the next call to |fire| is made, at which point it will return the values which were passed as arguments to that |fire| call.]]
|
||||
elseif funcNameOrFunc == "Signal:fire" then
|
||||
return [[Method Signal:fire.
|
||||
Arguments: Any number of arguments of any type.
|
||||
Returns: None.
|
||||
Description: This call will invoke any connected handler functions, and notify any waiting code attached to this Signal to continue, with the arguments passed to this function. Note: The calls to handlers are made asynchronously, so this call will return immediately regardless of how long it takes the connected handler functions to complete.]]
|
||||
elseif funcNameOrFunc == "Signal:disconnect" then
|
||||
return [[Method Signal:disconnect.
|
||||
Arguments: None.
|
||||
Returns: None.
|
||||
Description: This call disconnects all handlers attacched to this function, note however, it does NOT make waiting code continue, as is the behavior of normal Mercury events. This method can also be called on the connection object which is returned from Signal:connect to only disconnect a single handler, as opposed to this method, which will disconnect all handlers.]]
|
||||
elseif funcNameOrFunc == "Create" then
|
||||
return [[Function Create.
|
||||
Arguments: A table containing information about how to construct a collection of objects.
|
||||
Returns: The constructed objects.
|
||||
Descrition: Create is a very powerful function, whose description is too long to fit here, and is best described via example, please see the wiki page for a description of how to use it.]]
|
||||
end
|
||||
return "No help available for this function"
|
||||
end
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@ local RunService = game:GetService "RunService"
|
|||
|
||||
local ScriptContext
|
||||
|
||||
for i = 1, 4 do
|
||||
for _ = 1, 4 do
|
||||
ScriptContext = game:GetService "ScriptContext"
|
||||
if ScriptContext then
|
||||
break
|
||||
|
|
|
|||
|
|
@ -156,9 +156,7 @@ end
|
|||
local function findSeatsInModel(parent, seatTable)
|
||||
if not parent then
|
||||
return
|
||||
end
|
||||
|
||||
if parent.className == "Seat" or parent.className == "VehicleSeat" then
|
||||
elseif parent.className == "Seat" or parent.className == "VehicleSeat" then
|
||||
table.insert(seatTable, parent)
|
||||
end
|
||||
local myChildren = parent:GetChildren()
|
||||
|
|
@ -488,12 +486,10 @@ local function findConfigAtMouseTarget(Mouse: Mouse, stampData: Instance)
|
|||
-- This can happen sometimes, return if so
|
||||
if not Mouse then
|
||||
return
|
||||
end
|
||||
if not stampData then
|
||||
elseif not stampData then
|
||||
error "findConfigAtMouseTarget: stampData is nil"
|
||||
return
|
||||
end
|
||||
if not stampData.CurrentParts then
|
||||
elseif not stampData.CurrentParts then
|
||||
return
|
||||
end
|
||||
|
||||
|
|
@ -513,13 +509,11 @@ local function findConfigAtMouseTarget(Mouse: Mouse, stampData: Instance)
|
|||
insertCFrame = stampData.CurrentParts.CFrame
|
||||
end
|
||||
|
||||
if Mouse then
|
||||
if stampData.CurrentParts:IsA "Tool" then
|
||||
if Mouse and stampData.CurrentParts:IsA "Tool" then
|
||||
Mouse.TargetFilter = stampData.CurrentParts.Handle
|
||||
else
|
||||
Mouse.TargetFilter = stampData.CurrentParts
|
||||
end
|
||||
end
|
||||
|
||||
local hitPlane = false
|
||||
local targetPart
|
||||
|
|
@ -739,7 +733,7 @@ local function restoreTheWelds(manualWeldTable, manualWeldParentTable)
|
|||
end
|
||||
end
|
||||
|
||||
RbxStamper.CanEditRegion = function(partOrModel, EditRegion) -- todo: use model and stamper metadata
|
||||
function RbxStamper.CanEditRegion(partOrModel, EditRegion) -- todo: use model and stamper metadata
|
||||
if not EditRegion then
|
||||
return true, false
|
||||
end
|
||||
|
|
@ -763,11 +757,10 @@ RbxStamper.CanEditRegion = function(partOrModel, EditRegion) -- todo: use model
|
|||
return true, false
|
||||
end
|
||||
|
||||
RbxStamper.GetStampModel = function(assetId, terrainShape, useAssetVersionId)
|
||||
function RbxStamper.GetStampModel(assetId, terrainShape, useAssetVersionId)
|
||||
if assetId == 0 then
|
||||
return nil, "No Asset"
|
||||
end
|
||||
if assetId < 0 then
|
||||
elseif assetId < 0 then
|
||||
return nil, "Negative Asset"
|
||||
end
|
||||
|
||||
|
|
@ -976,7 +969,7 @@ RbxStamper.GetStampModel = function(assetId, terrainShape, useAssetVersionId)
|
|||
return root
|
||||
end
|
||||
|
||||
RbxStamper.SetupStamperDragger = function(
|
||||
function RbxStamper.SetupStamperDragger(
|
||||
modelToStamp,
|
||||
Mouse,
|
||||
StampInModel,
|
||||
|
|
@ -1258,7 +1251,7 @@ RbxStamper.SetupStamperDragger = function(
|
|||
-- There wasn't a target (no part or terrain), so check for plane intersection.
|
||||
if not mouse.Target then
|
||||
local cellPos = GetTerrainForMouse(mouse)
|
||||
if nil == cellPos then
|
||||
if not cellPos then
|
||||
return
|
||||
end
|
||||
end
|
||||
|
|
@ -1634,47 +1627,40 @@ RbxStamper.SetupStamperDragger = function(
|
|||
if not mouse then
|
||||
error "Error: RbxStamper.DoStamperMouseDown: Mouse is nil"
|
||||
return
|
||||
end
|
||||
if not mouse:IsA "Mouse" then
|
||||
elseif not mouse:IsA "Mouse" then
|
||||
error(
|
||||
`Error: RbxStamper.DoStamperMouseDown: Mouse is of type {mouse.className}, should be of type Mouse`
|
||||
)
|
||||
return
|
||||
end
|
||||
if not stampData then
|
||||
elseif
|
||||
not (
|
||||
stampData
|
||||
and isMegaClusterPart()
|
||||
and mouse
|
||||
and HighScalabilityLine
|
||||
)
|
||||
then
|
||||
return
|
||||
end
|
||||
|
||||
if isMegaClusterPart() then
|
||||
if mouse and HighScalabilityLine then
|
||||
local megaCube = stampData.CurrentParts:FindFirstChild(
|
||||
"MegaClusterCube",
|
||||
true
|
||||
)
|
||||
local megaCube =
|
||||
stampData.CurrentParts:FindFirstChild("MegaClusterCube", true)
|
||||
local terrain = game.Workspace.Terrain
|
||||
if megaCube then
|
||||
HighScalabilityLine.Dimensions = 1
|
||||
local tempCell = terrain:WorldToCell(megaCube.CFrame.p)
|
||||
HighScalabilityLine.Start = terrain:CellCenterToWorld(
|
||||
tempCell.X,
|
||||
tempCell.Y,
|
||||
tempCell.Z
|
||||
)
|
||||
HighScalabilityLine.Start =
|
||||
terrain:CellCenterToWorld(tempCell.X, tempCell.Y, tempCell.Z)
|
||||
return
|
||||
else
|
||||
HighScalabilityLine.Dimensions = 1
|
||||
local tempCell =
|
||||
terrain:WorldToCell(stampData.CurrentParts.CFrame.p)
|
||||
HighScalabilityLine.Start = terrain:CellCenterToWorld(
|
||||
tempCell.X,
|
||||
tempCell.Y,
|
||||
tempCell.Z
|
||||
)
|
||||
HighScalabilityLine.Start =
|
||||
terrain:CellCenterToWorld(tempCell.X, tempCell.Y, tempCell.Z)
|
||||
return
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
local function loadSurfaceTypes(part, surfaces)
|
||||
part.TopSurface = surfaces[1]
|
||||
|
|
@ -2902,7 +2888,7 @@ RbxStamper.SetupStamperDragger = function(
|
|||
control.Stamped = stamped -- BoolValue that fires when user stamps
|
||||
control.Paused = false
|
||||
|
||||
control.LoadNewModel = function(newStampModel) -- allows us to specify a new stamper model to be used with this stamper
|
||||
function control.LoadNewModel(newStampModel) -- allows us to specify a new stamper model to be used with this stamper
|
||||
if
|
||||
newStampModel
|
||||
and not newStampModel:IsA "Model"
|
||||
|
|
@ -2914,11 +2900,11 @@ RbxStamper.SetupStamperDragger = function(
|
|||
resetStamperState(newStampModel)
|
||||
end
|
||||
|
||||
control.ReloadModel = function() -- will automatically set stamper to get a new model of current model and start stamping with new model
|
||||
function control.ReloadModel() -- will automatically set stamper to get a new model of current model and start stamping with new model
|
||||
resetStamperState()
|
||||
end
|
||||
|
||||
control.Pause = function() -- temporarily stops stamping, use resume to start up again
|
||||
function control.Pause() -- temporarily stops stamping, use resume to start up again
|
||||
if not control.Paused then
|
||||
pauseStamper()
|
||||
control.Paused = true
|
||||
|
|
@ -2927,7 +2913,7 @@ RbxStamper.SetupStamperDragger = function(
|
|||
end
|
||||
end
|
||||
|
||||
control.Resume = function() -- resumes stamping, if currently paused
|
||||
function control.Resume() -- resumes stamping, if currently paused
|
||||
if control.Paused then
|
||||
resumeStamper()
|
||||
control.Paused = false
|
||||
|
|
@ -2936,13 +2922,13 @@ RbxStamper.SetupStamperDragger = function(
|
|||
end
|
||||
end
|
||||
|
||||
control.ResetRotation = function() -- resets the model rotation so new models are at default orientation
|
||||
function control.ResetRotation() -- resets the model rotation so new models are at default orientation
|
||||
-- gInitial90DegreeRotations = 0
|
||||
-- Note: This function will not always work quite the way we want it to; we will have to build this out further so it works with
|
||||
-- High-Scalability and with the new model orientation setting methods (model:ResetOrientationToIdentity()) [HotThoth]
|
||||
end
|
||||
|
||||
control.Destroy = function() -- Stops current Stamp operation and destroys control construct
|
||||
function control.Destroy() -- Stops current Stamp operation and destroys control construct
|
||||
for i = 1, #mouseCons do
|
||||
mouseCons[i]:disconnect()
|
||||
mouseCons[i] = nil
|
||||
|
|
@ -2980,7 +2966,7 @@ RbxStamper.SetupStamperDragger = function(
|
|||
return control
|
||||
end
|
||||
|
||||
RbxStamper.Help = function(funcNameOrFunc)
|
||||
function RbxStamper.Help(funcNameOrFunc)
|
||||
--input argument can be a string or a function. Should return a description (of arguments and expected side effects)
|
||||
if
|
||||
funcNameOrFunc == "GetStampModel"
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
-- CoreGui.RobloxGui.Backpack.CoreScripts/BackpackScripts/Back (1?)
|
||||
-- CoreGui.MercuryGui.Backpack.CoreScripts/BackpackScripts/Back (1?)
|
||||
print "[Mercury]: Loaded corescript 89449008"
|
||||
|
||||
local UserInputService = game:GetService "UserInputService"
|
||||
|
|
@ -240,6 +240,214 @@ local function swapGearSlot(slot, newGearButton)
|
|||
end
|
||||
end
|
||||
|
||||
local 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 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
|
||||
|
||||
local function UnequipGearMenuClick(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
|
||||
|
||||
local 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 resizeGrid()
|
||||
for _, v in pairs(backpackItems) do
|
||||
if not v:FindFirstChild "RobloxBuildTool" then
|
||||
|
|
@ -402,214 +610,6 @@ local function addToGrid(child: Tool | HopperBin)
|
|||
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
|
||||
|
|
@ -917,12 +917,8 @@ currentLoadout.DescendantRemoving:connect(function(descendant)
|
|||
end
|
||||
end)
|
||||
|
||||
grid.MouseEnter:connect(function()
|
||||
clearPreview()
|
||||
end)
|
||||
grid.MouseLeave:connect(function()
|
||||
clearPreview()
|
||||
end)
|
||||
grid.MouseEnter:connect(clearPreview)
|
||||
grid.MouseLeave:connect(clearPreview)
|
||||
|
||||
player.CharacterRemoving:connect(function()
|
||||
removeCharacterConnections()
|
||||
|
|
@ -971,9 +967,9 @@ end
|
|||
pcall(function()
|
||||
coreGuiChanged(
|
||||
Enum.CoreGuiType.Backpack,
|
||||
Game.StarterGui:GetCoreGuiEnabled(Enum.CoreGuiType.Backpack)
|
||||
game.StarterGui:GetCoreGuiEnabled(Enum.CoreGuiType.Backpack)
|
||||
)
|
||||
Game.StarterGui.CoreGuiChangedSignal:connect(coreGuiChanged)
|
||||
game.StarterGui.CoreGuiChangedSignal:connect(coreGuiChanged)
|
||||
end)
|
||||
|
||||
resize()
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
-- CoreGui.RobloxGui.Backpack.CoreScripts/BackpackScripts/Back (2?)
|
||||
-- CoreGui.MercuryGui.Backpack.CoreScripts/BackpackScripts/Back (2?)
|
||||
print "[Mercury]: Loaded corescript 89449093"
|
||||
|
||||
local News = require "../Modules/New"
|
||||
|
|
@ -53,8 +53,8 @@ local searchBox = waitForChild(backpack.SearchFrame.SearchBoxFrame, "SearchBox")
|
|||
local searchButton = waitForChild(backpack.SearchFrame, "SearchButton")
|
||||
local resetButton = waitForChild(backpack.SearchFrame, "ResetButton")
|
||||
|
||||
local robloxGui = waitForChild(Game.CoreGui, "RobloxGui")
|
||||
local currentLoadout = waitForChild(robloxGui, "CurrentLoadout")
|
||||
local mercuryGui = waitForChild(game.CoreGui, "MercuryGui")
|
||||
local currentLoadout = waitForChild(mercuryGui, "CurrentLoadout")
|
||||
local loadoutBackground = waitForChild(currentLoadout, "Background")
|
||||
|
||||
local canToggle = true
|
||||
|
|
@ -73,10 +73,6 @@ local backtick = "`"
|
|||
|
||||
local backpackSize = UDim2.new(0, 600, 0, 400)
|
||||
|
||||
if robloxGui.AbsoluteSize.Y <= 320 then
|
||||
backpackSize = UDim2.new(0, 200, 0, 140)
|
||||
end
|
||||
|
||||
------------------------ End Locals ---------------------------
|
||||
|
||||
---------------------------------------- Public Event Setup ----------------------------------------
|
||||
|
|
@ -357,9 +353,9 @@ publicFunction("BackpackReady", backpackReady)
|
|||
pcall(function()
|
||||
coreGuiChanged(
|
||||
Enum.CoreGuiType.Backpack,
|
||||
Game.StarterGui:GetCoreGuiEnabled(Enum.CoreGuiType.Backpack)
|
||||
game.StarterGui:GetCoreGuiEnabled(Enum.CoreGuiType.Backpack)
|
||||
)
|
||||
Game.StarterGui.CoreGuiChangedSignal:connect(coreGuiChanged)
|
||||
game.StarterGui.CoreGuiChangedSignal:connect(coreGuiChanged)
|
||||
end)
|
||||
|
||||
inventoryButton.MouseButton1Click:connect(newTabClicked)
|
||||
|
|
@ -419,8 +415,3 @@ searchBox.FocusLost:connect(function(enterPressed)
|
|||
end)
|
||||
searchButton.MouseButton1Click:connect(doSearch)
|
||||
resetButton.MouseButton1Click:connect(resetSearch)
|
||||
|
||||
if searchFrame and robloxGui.AbsoluteSize.Y <= 320 then
|
||||
searchFrame.RobloxLocked = false
|
||||
searchFrame:Destroy()
|
||||
end
|
||||
|
|
|
|||
|
|
@ -1,11 +1,11 @@
|
|||
--!strict
|
||||
-- CoreGui.RobloxGui.CoreScripts/ChatScript
|
||||
-- CoreGui.MercuryGui.CoreScripts/ChatScript
|
||||
print "[Mercury]: Loaded corescript 97188756"
|
||||
|
||||
local RunService = game:GetService "RunService"
|
||||
|
||||
local SafeChat = require "../Modules/Safechat.yml" -- THANK YOU DARKLUA
|
||||
local New = (require "../Modules/New").New
|
||||
local New = require("../Modules/New").New
|
||||
|
||||
local forceChatGUI = false
|
||||
|
||||
|
|
@ -17,20 +17,20 @@ local function WaitForChild(parent: Instance, childName)
|
|||
return parent[childName]
|
||||
end
|
||||
|
||||
while not Game.Players.LocalPlayer do
|
||||
while not game.Players.LocalPlayer do
|
||||
RunService.Heartbeat:wait()
|
||||
end
|
||||
|
||||
local Player = Game.Players.LocalPlayer
|
||||
local Player = game.Players.LocalPlayer
|
||||
while not Player.Character do
|
||||
RunService.Heartbeat:wait()
|
||||
end
|
||||
local Camera = Game.Workspace.CurrentCamera
|
||||
local Camera = game.Workspace.CurrentCamera
|
||||
|
||||
-- Services
|
||||
local CoreGui = Game:GetService "CoreGui"
|
||||
local Players = Game:GetService "Players"
|
||||
local GuiService = Game:GetService "GuiService"
|
||||
local CoreGui = game:GetService "CoreGui"
|
||||
local Players = game:GetService "Players"
|
||||
local GuiService = game:GetService "GuiService"
|
||||
|
||||
-- Lua Enums
|
||||
local Enums = {}
|
||||
|
|
@ -653,7 +653,7 @@ end
|
|||
-- Create the initial Chat stuff
|
||||
-- Done only once
|
||||
function Chat:CreateGui()
|
||||
self.Gui = WaitForChild(CoreGui, "RobloxGui")
|
||||
self.Gui = WaitForChild(CoreGui, "MercuryGui")
|
||||
self.Frame = New "Frame" {
|
||||
Name = "ChatFrame",
|
||||
--Size = self.Configuration.Size;
|
||||
|
|
@ -754,7 +754,7 @@ function Input:OnMouseScroll()
|
|||
wait(0.25)
|
||||
end
|
||||
end
|
||||
wait(0.03)
|
||||
wait()
|
||||
end
|
||||
end)
|
||||
if Chat:CheckIfInBounds(Input.Speed) then
|
||||
|
|
@ -883,9 +883,9 @@ function Chat:Initialize()
|
|||
pcall(function()
|
||||
Chat:CoreGuiChanged(
|
||||
Enum.CoreGuiType.Chat,
|
||||
Game.StarterGui:GetCoreGuiEnabled(Enum.CoreGuiType.Chat)
|
||||
game.StarterGui:GetCoreGuiEnabled(Enum.CoreGuiType.Chat)
|
||||
)
|
||||
Game.StarterGui.CoreGuiChangedSignal:connect(
|
||||
game.StarterGui.CoreGuiChangedSignal:connect(
|
||||
function(coreGuiType, enabled)
|
||||
Chat:CoreGuiChanged(coreGuiType, enabled)
|
||||
end
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ local ThumbnailGenerator = game:GetService "ThumbnailGenerator"
|
|||
local RenderModule = require "../Modules/Render"
|
||||
local SetupAvatar = require "../Modules/Render/SetupAvatar"
|
||||
local Render = RenderModule(_BASE_URL, _PING_URL, _THUMBNAIL_KEY) -- avoid ambiguous syntax after compilation
|
||||
local New = (require "../Modules/New").New
|
||||
local New = require("../Modules/New").New
|
||||
|
||||
local player = SetupAvatar(
|
||||
_BASE_URL,
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
local ThumbnailGenerator = game:GetService "ThumbnailGenerator"
|
||||
local RenderModule = require "../Modules/Render"
|
||||
local Render = RenderModule(_BASE_URL, _PING_URL, _THUMBNAIL_KEY) -- avoid ambiguous syntax after compilation
|
||||
local New = (require "../Modules/New").New
|
||||
local New = require("../Modules/New").New
|
||||
|
||||
print(`[{game.JobId}] Starting new render for {_RENDER_TYPE} Id {_ASSET_ID}`)
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue