Corescript fixes and formatting improvements

This commit is contained in:
Lewin Kelly 2024-01-13 10:59:44 +00:00
parent da219017d7
commit d396ddaaea
23 changed files with 2782 additions and 4176 deletions

File diff suppressed because it is too large Load Diff

View File

@ -1,314 +0,0 @@
-- CoreGui.RobloxGui.CoreScripts/ContextActionTouch
-- Unused by Mercury
print "[Mercury]: Loaded corescript 152908679"
for _ = 1, 4 do
pcall(function()
warn "IF YOU SEE THIS MESSAGE, PLEASE REPORT IT TO THE MERCURY DEVELOPERS"
end)
print "IF YOU SEE THIS MESSAGE, PLEASE REPORT IT TO THE MERCURY DEVELOPERS"
end
-- ContextActionTouch.lua
-- this script controls ui and firing of lua functions that are bound in ContextActionService for touch inputs
-- Essentially a user can bind a lua function to a key code, input type (mousebutton1 etc.) and this
-- Variables
local contextActionService = Game:GetService "ContextActionService"
local isTouchDevice = Game:GetService("UserInputService").TouchEnabled
local functionTable = {}
local buttonVector = {}
local buttonScreenGui, buttonFrame
local ContextDownImage = "http://banland.xyz/asset/?id=97166756"
local ContextUpImage = "http://banland.xyz/asset/?id=97166444"
local oldTouches = {}
local buttonPositionTable = {
[1] = UDim2.new(0, 123, 0, 70),
[2] = UDim2.new(0, 30, 0, 60),
[3] = UDim2.new(0, 180, 0, 160),
[4] = UDim2.new(0, 85, 0, -25),
[5] = UDim2.new(0, 185, 0, -25),
[6] = UDim2.new(0, 185, 0, 260),
[7] = UDim2.new(0, 216, 0, 65),
}
local maxButtons = #buttonPositionTable
-- Preload images
Game:GetService("ContentProvider"):Preload(ContextDownImage)
Game:GetService("ContentProvider"):Preload(ContextUpImage)
while not Game.Players do
wait()
end
while not Game.Players.LocalPlayer do
wait()
end
function createContextActionGui()
if not buttonScreenGui and isTouchDevice then
buttonScreenGui = Instance.new "ScreenGui"
buttonScreenGui.Name = "ContextActionGui"
buttonFrame = Instance.new "Frame"
buttonFrame.BackgroundTransparency = 1
buttonFrame.Size = UDim2.new(0.3, 0, 0.5, 0)
buttonFrame.Position = UDim2.new(0.7, 0, 0.5, 0)
buttonFrame.Name = "ContextButtonFrame"
buttonFrame.Parent = buttonScreenGui
end
end
-- functions
-- function setButtonSizeAndPosition(object)
-- local buttonSize = 55
-- local xOffset = 10
-- local yOffset = 95
-- -- todo: better way to determine mobile sized screens
-- local onSmallScreen = (game.CoreGui.RobloxGui.AbsoluteSize.X < 600)
-- if not onSmallScreen then
-- buttonSize = 85
-- xOffset = 40
-- end
-- object.Size = UDim2.new(0, buttonSize, 0, buttonSize)
-- end
function contextButtonDown(button, inputObject, actionName)
if inputObject.UserInputType == Enum.UserInputType.Touch then
button.Image = ContextDownImage
contextActionService:CallFunction(
actionName,
Enum.UserInputState.Begin,
inputObject
)
end
end
function contextButtonMoved(button, inputObject, actionName)
if inputObject.UserInputType == Enum.UserInputType.Touch then
button.Image = ContextDownImage
contextActionService:CallFunction(
actionName,
Enum.UserInputState.Change,
inputObject
)
end
end
function contextButtonUp(button, inputObject, actionName)
button.Image = ContextUpImage
if
inputObject.UserInputType == Enum.UserInputType.Touch
and inputObject.UserInputState == Enum.UserInputState.End
then
contextActionService:CallFunction(
actionName,
Enum.UserInputState.End,
inputObject
)
end
end
function isSmallScreenDevice()
return Game:GetService("GuiService"):GetScreenResolution().y <= 320
end
function createNewButton(actionName, functionInfoTable)
local contextButton = Instance.new "ImageButton"
contextButton.Name = "ContextActionButton"
contextButton.BackgroundTransparency = 1
contextButton.Size = UDim2.new(0, 90, 0, 90)
contextButton.Active = true
if isSmallScreenDevice() then
contextButton.Size = UDim2.new(0, 70, 0, 70)
end
contextButton.Image = ContextUpImage
contextButton.Parent = buttonFrame
local currentButtonTouch
Game:GetService("UserInputService").InputEnded:connect(function(inputObject)
oldTouches[inputObject] = nil
end)
contextButton.InputBegan:connect(function(inputObject)
if oldTouches[inputObject] then
return
end
if
inputObject.UserInputState == Enum.UserInputState.Begin
and currentButtonTouch == nil
then
currentButtonTouch = inputObject
contextButtonDown(contextButton, inputObject, actionName)
end
end)
contextButton.InputChanged:connect(function(inputObject)
if oldTouches[inputObject] then
return
end
if currentButtonTouch ~= inputObject then
return
end
contextButtonMoved(contextButton, inputObject, actionName)
end)
contextButton.InputEnded:connect(function(inputObject)
if oldTouches[inputObject] then
return
end
if currentButtonTouch ~= inputObject then
return
end
currentButtonTouch = nil
oldTouches[inputObject] = true
contextButtonUp(contextButton, inputObject, actionName)
end)
local actionIcon = Instance.new "ImageLabel"
actionIcon.Name = "ActionIcon"
actionIcon.Position = UDim2.new(0.175, 0, 0.175, 0)
actionIcon.Size = UDim2.new(0.65, 0, 0.65, 0)
actionIcon.BackgroundTransparency = 1
if
functionInfoTable.image
and type(functionInfoTable.image) == "string"
then
actionIcon.Image = functionInfoTable.image
end
actionIcon.Parent = contextButton
local actionTitle = Instance.new "TextLabel"
actionTitle.Name = "ActionTitle"
actionTitle.Size = UDim2.new(1, 0, 1, 0)
actionTitle.BackgroundTransparency = 1
actionTitle.Font = Enum.Font.SourceSansBold
actionTitle.TextColor3 = Color3.new(1, 1, 1)
actionTitle.TextStrokeTransparency = 0
actionTitle.FontSize = Enum.FontSize.Size18
actionTitle.TextWrapped = true
actionTitle.Text = ""
if
functionInfoTable.title
and type(functionInfoTable.title) == "string"
then
actionTitle.Text = functionInfoTable.title
end
actionTitle.Parent = contextButton
return contextButton
end
function createButton(actionName, functionInfoTable)
local button = createNewButton(actionName, functionInfoTable)
local position
for i = 1, #buttonVector do
if buttonVector[i] == "empty" then
position = i
break
end
end
if not position then
position = #buttonVector + 1
end
if position > maxButtons then
return -- todo: let user know we have too many buttons already?
end
buttonVector[position] = button
functionTable[actionName]["button"] = button
button.Position = buttonPositionTable[position]
button.Parent = buttonFrame
if buttonScreenGui and buttonScreenGui.Parent == nil then
buttonScreenGui.Parent = Game.Players.LocalPlayer.PlayerGui
end
end
function removeAction(actionName)
if not functionTable[actionName] then
return
end
local actionButton = functionTable[actionName]["button"]
if actionButton then
actionButton.Parent = nil
for i = 1, #buttonVector do
if buttonVector[i] == actionButton then
buttonVector[i] = "empty"
break
end
end
actionButton:Destroy()
end
functionTable[actionName] = nil
end
function addAction(actionName, createTouchButton, functionInfoTable)
if functionTable[actionName] then
removeAction(actionName)
end
functionTable[actionName] = { functionInfoTable }
if createTouchButton and isTouchDevice then
createContextActionGui()
createButton(actionName, functionInfoTable)
end
end
-- Connections
contextActionService.BoundActionChanged:connect(
function(actionName, changeName, changeTable)
if functionTable[actionName] and changeTable then
local button = functionTable[actionName]["button"]
if button then
if changeName == "image" then
button.ActionIcon.Image = changeTable[changeName]
elseif changeName == "title" then
button.ActionTitle.Text = changeTable[changeName]
-- elseif changeName == "description" then
-- -- todo: add description to menu
elseif changeName == "position" then
button.Position = changeTable[changeName]
end
end
end
end
)
contextActionService.BoundActionAdded:connect(
function(actionName, createTouchButton, functionInfoTable)
addAction(actionName, createTouchButton, functionInfoTable)
end
)
contextActionService.BoundActionRemoved:connect(function(actionName, _)
removeAction(actionName)
end)
contextActionService.GetActionButtonEvent:connect(function(actionName)
if functionTable[actionName] then
contextActionService:FireActionButtonFoundSignal(
actionName,
functionTable[actionName]["button"]
)
end
end)
-- make sure any bound data before we setup connections is handled
local boundActions = contextActionService:GetAllBoundActionInfo()
for actionName, actionData in pairs(boundActions) do
addAction(actionName, actionData.createTouchButton, actionData)
end

View File

@ -1,773 +0,0 @@
-- CoreGui.RobloxGui.CoreScripts/TouchControls
-- Unused by Mercury
print "[Mercury]: Loaded corescript 153556783"
for _ = 1, 4 do
pcall(function()
warn "IF YOU SEE THIS MESSAGE, PLEASE REPORT IT TO THE MERCURY DEVELOPERS"
end)
print "IF YOU SEE THIS MESSAGE, PLEASE REPORT IT TO THE MERCURY DEVELOPERS"
end
-- This is responsible for all touch controls we show (as of this writing, only on iOS)
-- this includes character move thumbsticks, and buttons for jump, use of items, camera, etc.
-- obligatory stuff to make sure we don't access nil data
while not Game do
wait()
end
while not Game:FindFirstChild "Players" do
wait()
end
while not Game.Players.LocalPlayer do
wait()
end
while not Game:FindFirstChild "CoreGui" do
wait()
end
while not Game.CoreGui:FindFirstChild "RobloxGui" do
wait()
end
local userInputService = Game:GetService "UserInputService"
local success = pcall(function()
userInputService:IsLuaTouchControls()
end)
if not success then
script:Destroy()
end
----------------------------------------------------------------------------
----------------------------------------------------------------------------
-- Variables
local screenResolution = Game:GetService("GuiService"):GetScreenResolution()
function isSmallScreenDevice()
return screenResolution.y <= 320
end
local localPlayer = Game.Players.LocalPlayer
local thumbstickSize = 120
if isSmallScreenDevice() then
thumbstickSize = 70
end
local touchControlsSheet = "rbxasset://textures/ui/TouchControlsSheet.png"
local ThumbstickDeadZone = 5
local ThumbstickMaxPercentGive = 0.92
local thumbstickTouches = {}
local jumpButtonSize = 90
if isSmallScreenDevice() then
jumpButtonSize = 70
end
local oldJumpTouches = {}
local currentJumpTouch
local CameraRotateSensitivity = 0.007
local CameraRotateDeadZone = CameraRotateSensitivity * 16
local CameraZoomSensitivity = 0.03
local PinchZoomDelay = 0.2
local cameraTouch
-- make sure all of our images are good to go
Game:GetService("ContentProvider"):Preload(touchControlsSheet)
----------------------------------------------------------------------------
----------------------------------------------------------------------------
-- Functions
function DistanceBetweenTwoPoints(point1, point2)
local dx = point2.x - point1.x
local dy = point2.y - point1.y
return math.sqrt((dx * dx) + (dy * dy))
end
function transformFromCenterToTopLeft(pointToTranslate, guiObject)
return UDim2.new(
0,
pointToTranslate.x - guiObject.AbsoluteSize.x / 2,
0,
pointToTranslate.y - guiObject.AbsoluteSize.y / 2
)
end
function rotatePointAboutLocation(pointToRotate, pointToRotateAbout, radians)
local sinAnglePercent = math.sin(radians)
local cosAnglePercent = math.cos(radians)
local transformedPoint = pointToRotate
-- translate point back to origin:
transformedPoint = Vector2.new(
transformedPoint.x - pointToRotateAbout.x,
transformedPoint.y - pointToRotateAbout.y
)
-- rotate point
local xNew = transformedPoint.x * cosAnglePercent
- transformedPoint.y * sinAnglePercent
local yNew = transformedPoint.x * sinAnglePercent
+ transformedPoint.y * cosAnglePercent
-- translate point back:
transformedPoint =
Vector2.new(xNew + pointToRotateAbout.x, yNew + pointToRotateAbout.y)
return transformedPoint
end
function dotProduct(v1, v2)
return ((v1.x * v2.x) + (v1.y * v2.y))
end
function stationaryThumbstickTouchMove(
thumbstickFrame,
thumbstickOuter,
touchLocation
)
local thumbstickOuterCenterPosition = Vector2.new(
thumbstickOuter.Position.X.Offset + thumbstickOuter.AbsoluteSize.x / 2,
thumbstickOuter.Position.Y.Offset + thumbstickOuter.AbsoluteSize.y / 2
)
local centerDiff =
DistanceBetweenTwoPoints(touchLocation, thumbstickOuterCenterPosition)
-- thumbstick is moving outside our region, need to cap its distance
if centerDiff > (thumbstickSize / 2) then
local thumbVector = Vector2.new(
touchLocation.x - thumbstickOuterCenterPosition.x,
touchLocation.y - thumbstickOuterCenterPosition.y
)
local normal = thumbVector.unit
if normal.x == math.nan or normal.x == math.inf then
normal = Vector2.new(0, normal.y)
end
if normal.y == math.nan or normal.y == math.inf then
normal = Vector2.new(normal.x, 0)
end
local newThumbstickInnerPosition = thumbstickOuterCenterPosition
+ (normal * (thumbstickSize / 2))
thumbstickFrame.Position = transformFromCenterToTopLeft(
newThumbstickInnerPosition,
thumbstickFrame
)
else
thumbstickFrame.Position =
transformFromCenterToTopLeft(touchLocation, thumbstickFrame)
end
return Vector2.new(
thumbstickFrame.Position.X.Offset - thumbstickOuter.Position.X.Offset,
thumbstickFrame.Position.Y.Offset - thumbstickOuter.Position.Y.Offset
)
end
function followThumbstickTouchMove(
thumbstickFrame,
thumbstickOuter,
touchLocation
)
local thumbstickOuterCenter = Vector2.new(
thumbstickOuter.Position.X.Offset + thumbstickOuter.AbsoluteSize.x / 2,
thumbstickOuter.Position.Y.Offset + thumbstickOuter.AbsoluteSize.y / 2
)
-- thumbstick is moving outside our region, need to position outer thumbstick texture carefully (to make look and feel like actual joystick controller)
if
DistanceBetweenTwoPoints(touchLocation, thumbstickOuterCenter)
> thumbstickSize / 2
then
local thumbstickInnerCenter = Vector2.new(
thumbstickFrame.Position.X.Offset
+ thumbstickFrame.AbsoluteSize.x / 2,
thumbstickFrame.Position.Y.Offset
+ thumbstickFrame.AbsoluteSize.y / 2
)
local movementVectorUnit = Vector2.new(
touchLocation.x - thumbstickInnerCenter.x,
touchLocation.y - thumbstickInnerCenter.y
).unit
local outerToInnerVectorCurrent = Vector2.new(
thumbstickInnerCenter.x - thumbstickOuterCenter.x,
thumbstickInnerCenter.y - thumbstickOuterCenter.y
)
local outerToInnerVectorCurrentUnit = outerToInnerVectorCurrent.unit
local movementVector = Vector2.new(
touchLocation.x - thumbstickInnerCenter.x,
touchLocation.y - thumbstickInnerCenter.y
)
-- First, find the angle between the new thumbstick movement vector,
-- and the vector between thumbstick inner and thumbstick outer.
-- We will use this to pivot thumbstick outer around thumbstick inner, gives a nice joystick feel
local crossOuterToInnerWithMovement = (
outerToInnerVectorCurrentUnit.x * movementVectorUnit.y
) - (outerToInnerVectorCurrentUnit.y * movementVectorUnit.x)
local angle = math.atan2(
crossOuterToInnerWithMovement,
dotProduct(outerToInnerVectorCurrentUnit, movementVectorUnit)
)
local anglePercent = angle
* math.min(
movementVector.magnitude / outerToInnerVectorCurrent.magnitude,
1.0
)
-- If angle is significant, rotate about the inner thumbsticks current center
if math.abs(anglePercent) > 0.00001 then
local outerThumbCenter = rotatePointAboutLocation(
thumbstickOuterCenter,
thumbstickInnerCenter,
anglePercent
)
thumbstickOuter.Position = transformFromCenterToTopLeft(
Vector2.new(outerThumbCenter.x, outerThumbCenter.y),
thumbstickOuter
)
end
-- now just translate outer thumbstick to make sure it stays nears inner thumbstick
thumbstickOuter.Position = UDim2.new(
0,
thumbstickOuter.Position.X.Offset + movementVector.x,
0,
thumbstickOuter.Position.Y.Offset + movementVector.y
)
end
thumbstickFrame.Position =
transformFromCenterToTopLeft(touchLocation, thumbstickFrame)
-- a bit of error checking to make sure thumbsticks stay close to eachother
local thumbstickFramePosition = Vector2.new(
thumbstickFrame.Position.X.Offset,
thumbstickFrame.Position.Y.Offset
)
local thumbstickOuterPosition = Vector2.new(
thumbstickOuter.Position.X.Offset,
thumbstickOuter.Position.Y.Offset
)
if
DistanceBetweenTwoPoints(
thumbstickFramePosition,
thumbstickOuterPosition
) > thumbstickSize / 2
then
local vectorWithLength = (
thumbstickOuterPosition - thumbstickFramePosition
).unit * thumbstickSize / 2
thumbstickOuter.Position = UDim2.new(
0,
thumbstickFramePosition.x + vectorWithLength.x,
0,
thumbstickFramePosition.y + vectorWithLength.y
)
end
return Vector2.new(
thumbstickFrame.Position.X.Offset - thumbstickOuter.Position.X.Offset,
thumbstickFrame.Position.Y.Offset - thumbstickOuter.Position.Y.Offset
)
end
function movementOutsideDeadZone(movementVector)
return (
(math.abs(movementVector.x) > ThumbstickDeadZone)
or (math.abs(movementVector.y) > ThumbstickDeadZone)
)
end
function constructThumbstick(
defaultThumbstickPos,
updateFunction,
stationaryThumbstick
)
local thumbstickFrame = Instance.new "Frame"
thumbstickFrame.Name = "ThumbstickFrame"
thumbstickFrame.Active = true
thumbstickFrame.Size = UDim2.new(0, thumbstickSize, 0, thumbstickSize)
thumbstickFrame.Position = defaultThumbstickPos
thumbstickFrame.BackgroundTransparency = 1
local outerThumbstick = Instance.new "ImageLabel"
outerThumbstick.Name = "OuterThumbstick"
outerThumbstick.Image = touchControlsSheet
outerThumbstick.ImageRectOffset = Vector2.new(0, 0)
outerThumbstick.ImageRectSize = Vector2.new(220, 220)
outerThumbstick.BackgroundTransparency = 1
outerThumbstick.Size = UDim2.new(0, thumbstickSize, 0, thumbstickSize)
outerThumbstick.Position = defaultThumbstickPos
outerThumbstick.Parent = Game.CoreGui.RobloxGui
local innerThumbstick = Instance.new "ImageLabel"
innerThumbstick.Name = "InnerThumbstick"
innerThumbstick.Image = touchControlsSheet
innerThumbstick.ImageRectOffset = Vector2.new(220, 0)
innerThumbstick.ImageRectSize = Vector2.new(111, 111)
innerThumbstick.BackgroundTransparency = 1
innerThumbstick.Size =
UDim2.new(0, thumbstickSize / 2, 0, thumbstickSize / 2)
innerThumbstick.Position = UDim2.new(
0,
thumbstickFrame.Size.X.Offset / 2 - thumbstickSize / 4,
0,
thumbstickFrame.Size.Y.Offset / 2 - thumbstickSize / 4
)
innerThumbstick.Parent = thumbstickFrame
innerThumbstick.ZIndex = 2
local thumbstickTouch
local userInputServiceTouchMovedCon
local userInputSeviceTouchEndedCon
local startInputTracking = function(inputObject)
if thumbstickTouch then
return
end
if inputObject == cameraTouch then
return
end
if inputObject == currentJumpTouch then
return
end
if inputObject.UserInputType ~= Enum.UserInputType.Touch then
return
end
thumbstickTouch = inputObject
table.insert(thumbstickTouches, thumbstickTouch)
thumbstickFrame.Position = transformFromCenterToTopLeft(
thumbstickTouch.Position,
thumbstickFrame
)
outerThumbstick.Position = thumbstickFrame.Position
userInputServiceTouchMovedCon = userInputService.TouchMoved:connect(
function(movedInput)
if movedInput == thumbstickTouch then
local movementVector
if stationaryThumbstick then
movementVector = stationaryThumbstickTouchMove(
thumbstickFrame,
outerThumbstick,
Vector2.new(
movedInput.Position.x,
movedInput.Position.y
)
)
else
movementVector = followThumbstickTouchMove(
thumbstickFrame,
outerThumbstick,
Vector2.new(
movedInput.Position.x,
movedInput.Position.y
)
)
end
if updateFunction then
updateFunction(
movementVector,
outerThumbstick.Size.X.Offset / 2
)
end
end
end
)
userInputSeviceTouchEndedCon = userInputService.TouchEnded:connect(
function(endedInput)
if endedInput == thumbstickTouch then
if updateFunction then
updateFunction(Vector2.new(0, 0), 1)
end
userInputSeviceTouchEndedCon:disconnect()
userInputServiceTouchMovedCon:disconnect()
thumbstickFrame.Position = defaultThumbstickPos
outerThumbstick.Position = defaultThumbstickPos
for i, object in pairs(thumbstickTouches) do
if object == thumbstickTouch then
table.remove(thumbstickTouches, i)
break
end
end
thumbstickTouch = nil
end
end
)
end
userInputService.Changed:connect(function(prop)
if prop == "ModalEnabled" then
thumbstickFrame.Visible = not userInputService.ModalEnabled
outerThumbstick.Visible = not userInputService.ModalEnabled
end
end)
thumbstickFrame.InputBegan:connect(startInputTracking)
return thumbstickFrame
end
function setupCharacterMovement(parentFrame)
local lastMovementVector, lastMaxMovement
local moveCharacterFunc = localPlayer.MoveCharacter
local moveCharacterFunction = function(movementVector, maxMovement)
if localPlayer then
if movementOutsideDeadZone(movementVector) then
lastMovementVector = movementVector
lastMaxMovement = maxMovement
-- sometimes rounding error will not allow us to go max speed at some
-- thumbstick angles, fix this with a bit of fudging near 100% throttle
if
movementVector.magnitude / maxMovement
> ThumbstickMaxPercentGive
then
maxMovement = movementVector.magnitude - 1
end
moveCharacterFunc(localPlayer, movementVector, maxMovement)
else
lastMovementVector = Vector2.new(0, 0)
lastMaxMovement = 1
moveCharacterFunc(
localPlayer,
lastMovementVector,
lastMaxMovement
)
end
end
end
local thumbstickPos =
UDim2.new(0, thumbstickSize / 2, 1, -thumbstickSize * 1.75)
if isSmallScreenDevice() then
thumbstickPos =
UDim2.new(0, (thumbstickSize / 2) - 10, 1, -thumbstickSize - 20)
end
local characterThumbstick =
constructThumbstick(thumbstickPos, moveCharacterFunction, false)
characterThumbstick.Name = "CharacterThumbstick"
characterThumbstick.Parent = parentFrame
local refreshCharacterMovement = function()
if
localPlayer
and moveCharacterFunc
and lastMovementVector
and lastMaxMovement
then
moveCharacterFunc(localPlayer, lastMovementVector, lastMaxMovement)
end
end
return refreshCharacterMovement
end
function setupJumpButton(parentFrame)
local jumpButton = Instance.new "ImageButton"
jumpButton.Name = "JumpButton"
jumpButton.BackgroundTransparency = 1
jumpButton.Image = touchControlsSheet
jumpButton.ImageRectOffset = Vector2.new(176, 222)
jumpButton.ImageRectSize = Vector2.new(174, 174)
jumpButton.Size = UDim2.new(0, jumpButtonSize, 0, jumpButtonSize)
if isSmallScreenDevice() then
jumpButton.Position =
UDim2.new(1, -(jumpButtonSize * 2.25), 1, -jumpButtonSize - 20)
else
jumpButton.Position =
UDim2.new(1, -(jumpButtonSize * 2.75), 1, -jumpButtonSize - 120)
end
local playerJumpFunc = localPlayer.JumpCharacter
local doJumpLoop = function()
while currentJumpTouch do
if localPlayer then
playerJumpFunc(localPlayer)
end
wait(1 / 60)
end
end
jumpButton.InputBegan:connect(function(inputObject)
if inputObject.UserInputType ~= Enum.UserInputType.Touch then
return
end
if currentJumpTouch then
return
end
if inputObject == cameraTouch then
return
end
for _, touch in pairs(oldJumpTouches) do
if touch == inputObject then
return
end
end
currentJumpTouch = inputObject
jumpButton.ImageRectOffset = Vector2.new(0, 222)
jumpButton.ImageRectSize = Vector2.new(174, 174)
doJumpLoop()
end)
jumpButton.InputEnded:connect(function(inputObject)
if inputObject.UserInputType ~= Enum.UserInputType.Touch then
return
end
jumpButton.ImageRectOffset = Vector2.new(176, 222)
jumpButton.ImageRectSize = Vector2.new(174, 174)
if inputObject == currentJumpTouch then
table.insert(oldJumpTouches, currentJumpTouch)
currentJumpTouch = nil
end
end)
userInputService.InputEnded:connect(function(globalInputObject)
for i, touch in pairs(oldJumpTouches) do
if touch == globalInputObject then
table.remove(oldJumpTouches, i)
break
end
end
end)
userInputService.Changed:connect(function(prop)
if prop == "ModalEnabled" then
jumpButton.Visible = not userInputService.ModalEnabled
end
end)
jumpButton.Parent = parentFrame
end
function isTouchUsedByJumpButton(touch)
if touch == currentJumpTouch then
return true
end
for _, touchToCompare in pairs(oldJumpTouches) do
if touch == touchToCompare then
return true
end
end
return false
end
function isTouchUsedByThumbstick(touch)
for _, touchToCompare in pairs(thumbstickTouches) do
if touch == touchToCompare then
return true
end
end
return false
end
function setupCameraControl(parentFrame, refreshCharacterMoveFunc)
local lastPos
local hasRotatedCamera = false
local rotateCameraFunc = userInputService.RotateCamera
local pinchTime = -1
local shouldPinch = false
local lastPinchScale
local zoomCameraFunc = userInputService.ZoomCamera
local pinchTouches = {}
local pinchFrame
local resetCameraRotateState = function()
cameraTouch = nil
hasRotatedCamera = false
lastPos = nil
end
local resetPinchState = function()
pinchTouches = {}
lastPinchScale = nil
shouldPinch = false
pinchFrame:Destroy()
pinchFrame = nil
end
local startPinch = function(firstTouch, secondTouch)
-- track pinching in new frame
if pinchFrame then
pinchFrame:Destroy()
end -- make sure we didn't track in any mud
pinchFrame = Instance.new "Frame"
pinchFrame.Name = "PinchFrame"
pinchFrame.BackgroundTransparency = 1
pinchFrame.Parent = parentFrame
pinchFrame.Size = UDim2.new(1, 0, 1, 0)
pinchFrame.InputChanged:connect(function(inputObject)
if not shouldPinch then
resetPinchState()
return
end
resetCameraRotateState()
if lastPinchScale == nil then -- first pinch move, just set up scale
if inputObject == firstTouch then
lastPinchScale = (
inputObject.Position - secondTouch.Position
).magnitude
firstTouch = inputObject
elseif inputObject == secondTouch then
lastPinchScale = (
inputObject.Position - firstTouch.Position
).magnitude
secondTouch = inputObject
end
else -- we are now actually pinching, do comparison to last pinch size
local newPinchDistance = 0
if inputObject == firstTouch then
newPinchDistance = (
inputObject.Position - secondTouch.Position
).magnitude
firstTouch = inputObject
elseif inputObject == secondTouch then
newPinchDistance = (
inputObject.Position - firstTouch.Position
).magnitude
secondTouch = inputObject
end
if newPinchDistance ~= 0 then
local pinchDiff = newPinchDistance - lastPinchScale
if pinchDiff ~= 0 then
zoomCameraFunc(
userInputService,
(pinchDiff * CameraZoomSensitivity)
)
end
lastPinchScale = newPinchDistance
end
end
end)
pinchFrame.InputEnded:connect(
function(inputObject) -- pinch is over, destroy all
if inputObject == firstTouch or inputObject == secondTouch then
resetPinchState()
end
end
)
end
local pinchGestureReceivedTouch = function(inputObject)
if #pinchTouches < 1 then
table.insert(pinchTouches, inputObject)
pinchTime = tick()
shouldPinch = false
elseif #pinchTouches == 1 then
shouldPinch = ((tick() - pinchTime) <= PinchZoomDelay)
if shouldPinch then
table.insert(pinchTouches, inputObject)
startPinch(pinchTouches[1], pinchTouches[2])
else -- shouldn't ever get here, but just in case
pinchTouches = {}
end
end
end
parentFrame.InputBegan:connect(function(inputObject)
if inputObject.UserInputType ~= Enum.UserInputType.Touch then
return
end
if isTouchUsedByJumpButton(inputObject) then
return
end
local usedByThumbstick = isTouchUsedByThumbstick(inputObject)
if not usedByThumbstick then
pinchGestureReceivedTouch(inputObject)
end
if cameraTouch == nil and not usedByThumbstick then
cameraTouch = inputObject
lastPos =
Vector2.new(cameraTouch.Position.x, cameraTouch.Position.y)
-- lastTick = tick()
end
end)
userInputService.InputChanged:connect(function(inputObject)
if inputObject.UserInputType ~= Enum.UserInputType.Touch then
return
end
if cameraTouch ~= inputObject then
return
end
local newPos =
Vector2.new(cameraTouch.Position.x, cameraTouch.Position.y)
local touchDiff = (lastPos - newPos) * CameraRotateSensitivity
-- first time rotating outside deadzone, just setup for next changed event
if
not hasRotatedCamera
and (touchDiff.magnitude > CameraRotateDeadZone)
then
hasRotatedCamera = true
lastPos = newPos
end
-- fire everytime after we have rotated out of deadzone
if hasRotatedCamera and (lastPos ~= newPos) then
rotateCameraFunc(userInputService, touchDiff)
refreshCharacterMoveFunc()
lastPos = newPos
end
end)
userInputService.InputEnded:connect(function(inputObject)
if cameraTouch == inputObject or cameraTouch == nil then
resetCameraRotateState()
end
for i, touch in pairs(pinchTouches) do
if touch == inputObject then
table.remove(pinchTouches, i)
end
end
end)
end
function setupTouchControls()
local touchControlFrame = Instance.new "Frame"
touchControlFrame.Name = "TouchControlFrame"
touchControlFrame.Size = UDim2.new(1, 0, 1, 0)
touchControlFrame.BackgroundTransparency = 1
touchControlFrame.Parent = Game.CoreGui.RobloxGui
local refreshCharacterMoveFunc = setupCharacterMovement(touchControlFrame)
setupJumpButton(touchControlFrame)
setupCameraControl(touchControlFrame, refreshCharacterMoveFunc)
userInputService.ProcessedEvent:connect(function(inputObject, processed)
if not processed then
return
end
-- kill camera pan if the touch is used by some user controls
if
inputObject == cameraTouch
and inputObject.UserInputState == Enum.UserInputState.Begin
then
cameraTouch = nil
end
end)
end
----------------------------------------------------------------------------
----------------------------------------------------------------------------
-- Start of Script
if true then --userInputService:IsLuaTouchControls() then
setupTouchControls()
else
script:Destroy()
end

View File

@ -267,7 +267,7 @@ function initializeDeveloperConsole()
Position = UDim2.new(0, 0, 0.5, -8), Position = UDim2.new(0, 0, 0.5, -8),
Rotation = 180, Rotation = 180,
Size = UDim2.new(1, 0, 0, 16), Size = UDim2.new(1, 0, 0, 16),
Image = "http://banland.xyz/Asset?id=151205881", Image = "https://banland.xyz/Asset?id=151205881",
} }
local Dev_DownButton = Create "ImageButton" { local Dev_DownButton = Create "ImageButton" {
@ -286,7 +286,7 @@ function initializeDeveloperConsole()
Position = UDim2.new(0, 3, 0, 3), Position = UDim2.new(0, 3, 0, 3),
Size = UDim2.new(0, 14, 0, 14), Size = UDim2.new(0, 14, 0, 14),
Rotation = 180, Rotation = 180,
Image = "http://banland.xyz/Asset?id=151205813", Image = "https://banland.xyz/Asset?id=151205813",
} }
local Dev_UpButton = Create "ImageButton" { local Dev_UpButton = Create "ImageButton" {
@ -304,7 +304,7 @@ function initializeDeveloperConsole()
BackgroundTransparency = 1, BackgroundTransparency = 1,
Position = UDim2.new(0, 3, 0, 3), Position = UDim2.new(0, 3, 0, 3),
Size = UDim2.new(0, 14, 0, 14), Size = UDim2.new(0, 14, 0, 14),
Image = "http://banland.xyz/Asset?id=151205813", Image = "https://banland.xyz/Asset?id=151205813",
} }
local Dev_TextBox = Create "Frame" { local Dev_TextBox = Create "Frame" {
@ -341,7 +341,7 @@ function initializeDeveloperConsole()
Position = UDim2.new(0, 0, 0, 0), Position = UDim2.new(0, 0, 0, 0),
Size = UDim2.new(1, 0, 1, 0), Size = UDim2.new(1, 0, 1, 0),
Rotation = 0, Rotation = 0,
Image = "http://banland.xyz/Asset?id=152093917", Image = "https://banland.xyz/Asset?id=152093917",
} }
local Dev_ResizeButton = Create "ImageButton" { local Dev_ResizeButton = Create "ImageButton" {
@ -360,7 +360,7 @@ function initializeDeveloperConsole()
Position = UDim2.new(0, 6, 0, 6), Position = UDim2.new(0, 6, 0, 6),
Size = UDim2.new(0.8, 0, 0.8, 0), Size = UDim2.new(0.8, 0, 0.8, 0),
Rotation = 135, Rotation = 135,
Image = "http://banland.xyz/Asset?id=151205813", Image = "https://banland.xyz/Asset?id=151205813",
} }
Create "TextButton" { Create "TextButton" {
@ -415,7 +415,7 @@ function initializeDeveloperConsole()
BackgroundTransparency = 1, BackgroundTransparency = 1,
Position = UDim2.new(0, 3, 0, 3), Position = UDim2.new(0, 3, 0, 3),
Size = UDim2.new(0, 14, 0, 14), Size = UDim2.new(0, 14, 0, 14),
Image = "http://banland.xyz/Asset?id=151205852", Image = "https://banland.xyz/Asset?id=151205852",
} }
Create "TextButton" { Create "TextButton" {
@ -864,8 +864,6 @@ function initializeDeveloperConsole()
return (num < 10 and "0" or "") .. num return (num < 10 and "0" or "") .. num
end end
local str = "%s:%s:%s"
local function ConvertTimeStamp(timeStamp) local function ConvertTimeStamp(timeStamp)
local localTime = timeStamp - os.time() + math.floor(tick()) local localTime = timeStamp - os.time() + math.floor(tick())
local dayTime = localTime % 86400 local dayTime = localTime % 86400
@ -881,7 +879,7 @@ function initializeDeveloperConsole()
local m = numberWithZero(minute) local m = numberWithZero(minute)
local s = numberWithZero(dayTime) local s = numberWithZero(dayTime)
return str:format(h, m, s) return `{h}{m}{s}`
end end
--Filter --Filter

View File

@ -6,11 +6,6 @@ local scriptContext = game:GetService "ScriptContext"
-- Creates all neccessary scripts for the gui on initial load, everything except build tools -- Creates all neccessary scripts for the gui on initial load, everything except build tools
-- Please note that these are loaded in a specific order to diminish errors/perceived load time by user -- Please note that these are loaded in a specific order to diminish errors/perceived load time by user
local touchEnabled = false
pcall(function()
touchEnabled = game:GetService("UserInputService").TouchEnabled
end)
-- library registration -- library registration
scriptContext:AddCoreScript( scriptContext:AddCoreScript(
60595695, 60595695,
@ -23,30 +18,14 @@ local function waitForChild(instance, name)
instance.ChildAdded:wait() instance.ChildAdded:wait()
end end
end end
-- local function waitForProperty(instance, property)
-- while not instance[property] do
-- instance.Changed:wait()
-- end
-- end
-- Responsible for tracking logging items
scriptContext:AddCoreScript(59002209, scriptContext, "CoreScripts/Sections")
waitForChild(game:GetService "CoreGui", "RobloxGui") waitForChild(game:GetService "CoreGui", "RobloxGui")
local screenGui = game:GetService("CoreGui"):FindFirstChild "RobloxGui" local screenGui = game:GetService("CoreGui"):FindFirstChild "RobloxGui"
if not touchEnabled then -- ToolTipper (creates tool tips for gui)
-- ToolTipper (creates tool tips for gui) scriptContext:AddCoreScript(36868950, screenGui, "CoreScripts/ToolTip")
scriptContext:AddCoreScript(36868950, screenGui, "CoreScripts/ToolTip") -- SettingsScript
-- SettingsScript scriptContext:AddCoreScript(46295863, screenGui, "CoreScripts/Settings")
scriptContext:AddCoreScript(46295863, screenGui, "CoreScripts/Settings")
else
scriptContext:AddCoreScript(
153556783,
screenGui,
"CoreScripts/TouchControls"
)
end
-- MainBotChatScript -- MainBotChatScript
scriptContext:AddCoreScript( scriptContext:AddCoreScript(
@ -72,7 +51,7 @@ scriptContext:AddCoreScript(
"CoreScripts/PurchasePromptScript" "CoreScripts/PurchasePromptScript"
) )
if not touchEnabled or screenGui.AbsoluteSize.Y > 600 then if screenGui.AbsoluteSize.Y > 600 then
-- New Player List -- New Player List
scriptContext:AddCoreScript( scriptContext:AddCoreScript(
48488235, 48488235,
@ -125,14 +104,6 @@ if game.CoreGui.Version >= 3 and game.PlaceId ~= 130815926 then --todo: remove p
screenGui.CurrentLoadout, screenGui.CurrentLoadout,
"CoreScripts/BackpackScripts/LoadoutScript" "CoreScripts/BackpackScripts/LoadoutScript"
) )
-- if game.CoreGui.Version >= 8 then
-- -- Wardrobe script handles all character dressing operations
-- scriptContext:AddCoreScript(
-- -1,
-- Backpack,
-- "CoreScripts/BackpackScripts/BackpackWardrobe"
-- )
-- end
end end
local IsPersonalServer = not not game.Workspace:FindFirstChild "PSVariable" local IsPersonalServer = not not game.Workspace:FindFirstChild "PSVariable"
@ -151,19 +122,3 @@ game.Workspace.ChildAdded:connect(function(nchild)
) )
end end
end) end)
if touchEnabled then -- touch devices don't use same control frame
-- only used for touch device button generation
scriptContext:AddCoreScript(
152908679,
screenGui,
"CoreScripts/ContextActionTouch"
)
waitForChild(screenGui, "ControlFrame")
waitForChild(screenGui.ControlFrame, "BottomLeftControl")
screenGui.ControlFrame.BottomLeftControl.Visible = false
waitForChild(screenGui.ControlFrame, "TopLeftControl")
screenGui.ControlFrame.TopLeftControl.Visible = false
end

View File

@ -1,7 +1,7 @@
-- RbxGui -- RbxGui
print "[Mercury]: Loaded corescript 45284430" print "[Mercury]: Loaded corescript 45284430"
local t = {} local RbxGui = {}
local function ScopedConnect( local function ScopedConnect(
parentInstance, parentInstance,
@ -135,7 +135,7 @@ local function cancelSlide(areaSoak)
end end
end end
t.CreateStyledMessageDialog = function(title, message, style, buttons) RbxGui.CreateStyledMessageDialog = function(title, message, style, buttons)
local frame = Instance.new "Frame" local frame = Instance.new "Frame"
frame.Size = UDim2.new(0.5, 0, 0, 165) frame.Size = UDim2.new(0.5, 0, 0, 165)
frame.Position = UDim2.new(0.25, 0, 0.5, -72.5) frame.Position = UDim2.new(0.25, 0, 0.5, -72.5)
@ -149,15 +149,15 @@ t.CreateStyledMessageDialog = function(title, message, style, buttons)
styleImage.Position = UDim2.new(0, 5, 0, 15) styleImage.Position = UDim2.new(0, 5, 0, 15)
if style == "error" or style == "Error" then if style == "error" or style == "Error" then
styleImage.Size = UDim2.new(0, 71, 0, 71) styleImage.Size = UDim2.new(0, 71, 0, 71)
styleImage.Image = "http://banland.xyz/asset?id=42565285" styleImage.Image = "https://banland.xyz/asset?id=42565285"
elseif style == "notify" or style == "Notify" then elseif style == "notify" or style == "Notify" then
styleImage.Size = UDim2.new(0, 71, 0, 71) styleImage.Size = UDim2.new(0, 71, 0, 71)
styleImage.Image = "http://banland.xyz/asset?id=42604978" styleImage.Image = "https://banland.xyz/asset?id=42604978"
elseif style == "confirm" or style == "Confirm" then elseif style == "confirm" or style == "Confirm" then
styleImage.Size = UDim2.new(0, 74, 0, 76) styleImage.Size = UDim2.new(0, 74, 0, 76)
styleImage.Image = "http://banland.xyz/asset?id=42557901" styleImage.Image = "https://banland.xyz/asset?id=42557901"
else else
return t.CreateMessageDialog(title, message, buttons) return RbxGui.CreateMessageDialog(title, message, buttons)
end end
styleImage.Parent = frame styleImage.Parent = frame
@ -195,7 +195,7 @@ t.CreateStyledMessageDialog = function(title, message, style, buttons)
return frame return frame
end end
t.CreateMessageDialog = function(title, message, buttons) RbxGui.CreateMessageDialog = function(title, message, buttons)
local frame = Instance.new "Frame" local frame = Instance.new "Frame"
frame.Size = UDim2.new(0.5, 0, 0.5, 0) frame.Size = UDim2.new(0.5, 0, 0.5, 0)
frame.Position = UDim2.new(0.25, 0, 0.25, 0) frame.Position = UDim2.new(0.25, 0, 0.25, 0)
@ -235,7 +235,8 @@ t.CreateMessageDialog = function(title, message, buttons)
return frame return frame
end end
t.CreateDropDownMenu = function(items, onSelect, forRoblox) local scrollMouseCount
RbxGui.CreateDropDownMenu = function(items, onSelect, forRoblox)
local width = UDim.new(0, 100) local width = UDim.new(0, 100)
local height = UDim.new(0, 32) local height = UDim.new(0, 32)
@ -263,7 +264,7 @@ t.CreateDropDownMenu = function(items, onSelect, forRoblox)
local dropDownIcon = Instance.new "ImageLabel" local dropDownIcon = Instance.new "ImageLabel"
dropDownIcon.Name = "Icon" dropDownIcon.Name = "Icon"
dropDownIcon.Active = false dropDownIcon.Active = false
dropDownIcon.Image = "http://banland.xyz/asset/?id=45732894" dropDownIcon.Image = "https://banland.xyz/asset/?id=45732894"
dropDownIcon.BackgroundTransparency = 1 dropDownIcon.BackgroundTransparency = 1
dropDownIcon.Size = UDim2.new(0, 11, 0, 6) dropDownIcon.Size = UDim2.new(0, 11, 0, 6)
dropDownIcon.Position = UDim2.new(1, -11, 0.5, -2) dropDownIcon.Position = UDim2.new(1, -11, 0.5, -2)
@ -325,7 +326,7 @@ t.CreateDropDownMenu = function(items, onSelect, forRoblox)
local scrollUpButton local scrollUpButton
local scrollDownButton local scrollDownButton
local scrollMouseCount = 0 scrollMouseCount = 0
local setZIndex = function(baseZIndex) local setZIndex = function(baseZIndex)
droppedDownMenu.ZIndex = baseZIndex + 1 droppedDownMenu.ZIndex = baseZIndex + 1
@ -580,7 +581,7 @@ t.CreateDropDownMenu = function(items, onSelect, forRoblox)
return frame, updateSelection return frame, updateSelection
end end
t.CreatePropertyDropDownMenu = function(instance, property, enum) RbxGui.CreatePropertyDropDownMenu = function(instance, property, enum)
local items = enum:GetEnumItems() local items = enum:GetEnumItems()
local names = {} local names = {}
local nameToItem = {} local nameToItem = {}
@ -591,7 +592,7 @@ t.CreatePropertyDropDownMenu = function(instance, property, enum)
local frame local frame
local updateSelection local updateSelection
frame, updateSelection = t.CreateDropDownMenu(names, function(text) frame, updateSelection = RbxGui.CreateDropDownMenu(names, function(text)
instance[property] = nameToItem[text] instance[property] = nameToItem[text]
end) end)
@ -606,7 +607,7 @@ t.CreatePropertyDropDownMenu = function(instance, property, enum)
return frame return frame
end end
t.GetFontHeight = function(font, fontSize) RbxGui.GetFontHeight = function(font, fontSize)
if font == nil or fontSize == nil then if font == nil or fontSize == nil then
error "Font and FontSize must be non-nil" error "Font and FontSize must be non-nil"
end end
@ -743,7 +744,7 @@ local function layoutGuiObjectsHelper(frame, guiObjects, settingsTable)
end end
end end
t.LayoutGuiObjects = function(frame, guiObjects, settingsTable) RbxGui.LayoutGuiObjects = function(frame, guiObjects, settingsTable)
if not frame:IsA "GuiObject" then if not frame:IsA "GuiObject" then
error "Frame must be a GuiObject" error "Frame must be a GuiObject"
end end
@ -797,7 +798,7 @@ t.LayoutGuiObjects = function(frame, guiObjects, settingsTable)
layoutGuiObjectsHelper(wrapperFrame, guiObjects, settingsTable) layoutGuiObjectsHelper(wrapperFrame, guiObjects, settingsTable)
end end
t.CreateSlider = function(steps, width, position) RbxGui.CreateSlider = function(steps, width, position)
local sliderGui = Instance.new "Frame" local sliderGui = Instance.new "Frame"
sliderGui.Size = UDim2.new(1, 0, 1, 0) sliderGui.Size = UDim2.new(1, 0, 1, 0)
sliderGui.BackgroundTransparency = 1 sliderGui.BackgroundTransparency = 1
@ -910,7 +911,7 @@ t.CreateSlider = function(steps, width, position)
return sliderGui, sliderPosition, sliderSteps return sliderGui, sliderPosition, sliderSteps
end end
t.CreateTrueScrollingFrame = function() RbxGui.CreateTrueScrollingFrame = function()
local lowY local lowY
local highY local highY
@ -988,14 +989,14 @@ t.CreateTrueScrollingFrame = function()
end end
scrollDownButton.MouseEnter:connect(function() scrollDownButton.MouseEnter:connect(function()
scrollDownButton.BackgroundTransparency = 0.1 scrollDownButton.BackgroundTransparency = 0.1
local downChildren = scrollDownButton:GetChildren() downChildren = scrollDownButton:GetChildren()
for i = 1, #downChildren do for i = 1, #downChildren do
downChildren[i].BackgroundTransparency = 0.1 downChildren[i].BackgroundTransparency = 0.1
end end
end) end)
scrollDownButton.MouseLeave:connect(function() scrollDownButton.MouseLeave:connect(function()
scrollDownButton.BackgroundTransparency = 0.5 scrollDownButton.BackgroundTransparency = 0.5
local downChildren = scrollDownButton:GetChildren() downChildren = scrollDownButton:GetChildren()
for i = 1, #downChildren do for i = 1, #downChildren do
downChildren[i].BackgroundTransparency = 0.5 downChildren[i].BackgroundTransparency = 0.5
end end
@ -1308,11 +1309,12 @@ t.CreateTrueScrollingFrame = function()
reentrancyGuardScrollDown = false reentrancyGuardScrollDown = false
end end
local scrollStamp
local function scrollUp(mouseYPos) local function scrollUp(mouseYPos)
if scrollUpButton.Active then if scrollUpButton.Active then
local scrollStamp = tick() scrollStamp = tick()
local current = scrollStamp local current = scrollStamp
local upCon
upCon = mouseDrag.MouseButton1Up:connect(function() upCon = mouseDrag.MouseButton1Up:connect(function()
scrollStamp = tick() scrollStamp = tick()
mouseDrag.Parent = nil mouseDrag.Parent = nil
@ -1343,7 +1345,7 @@ t.CreateTrueScrollingFrame = function()
local function scrollDown(mouseYPos) local function scrollDown(mouseYPos)
if scrollDownButton.Active then if scrollDownButton.Active then
local scrollStamp = tick() scrollStamp = tick()
local current = scrollStamp local current = scrollStamp
local downCon local downCon
downCon = mouseDrag.MouseButton1Up:connect(function() downCon = mouseDrag.MouseButton1Up:connect(function()
@ -1380,7 +1382,6 @@ t.CreateTrueScrollingFrame = function()
scrollbar.MouseButton1Down:connect(function(_, y) scrollbar.MouseButton1Down:connect(function(_, y)
if scrollbar.Active then if scrollbar.Active then
local scrollStamp = tick()
local mouseOffset = y - scrollbar.AbsolutePosition.y local mouseOffset = y - scrollbar.AbsolutePosition.y
if dragCon then if dragCon then
dragCon:disconnect() dragCon:disconnect()
@ -1391,30 +1392,28 @@ t.CreateTrueScrollingFrame = function()
upCon = nil upCon = nil
end end
local reentrancyGuardMouseScroll = false local reentrancyGuardMouseScroll = false
dragCon = mouseDrag.MouseMoved:connect(function(x, y) dragCon = mouseDrag.MouseMoved:connect(function(x2, y2)
if reentrancyGuardMouseScroll then if reentrancyGuardMouseScroll then
return return
end end
reentrancyGuardMouseScroll = true reentrancyGuardMouseScroll = true
if positionScrollBar(x, y, mouseOffset) then if positionScrollBar(x2, y2, mouseOffset) then
recalculate() recalculate()
end end
reentrancyGuardMouseScroll = false reentrancyGuardMouseScroll = false
end) end)
upCon = mouseDrag.MouseButton1Up:connect(function() upCon = mouseDrag.MouseButton1Up:connect(function()
scrollStamp = tick()
mouseDrag.Parent = nil mouseDrag.Parent = nil
dragCon:disconnect() dragCon:disconnect()
dragCon = nil dragCon = nil
upCon:disconnect() upCon:disconnect()
drag = nil
end) end)
mouseDrag.Parent = getScreenGuiAncestor(scrollbar) mouseDrag.Parent = getScreenGuiAncestor(scrollbar)
end end
end) end)
local scrollMouseCount = 0 scrollMouseCount = 0
scrollUpButton.MouseButton1Down:connect(function() scrollUpButton.MouseButton1Down:connect(function()
scrollUp() scrollUp()
@ -1507,7 +1506,7 @@ t.CreateTrueScrollingFrame = function()
return scrollingFrame, controlFrame return scrollingFrame, controlFrame
end end
t.CreateScrollingFrame = function(orderList, scrollStyle) RbxGui.CreateScrollingFrame = function(orderList, scrollStyle)
local frame = Instance.new "Frame" local frame = Instance.new "Frame"
frame.Name = "ScrollingFrame" frame.Name = "ScrollingFrame"
frame.BackgroundTransparency = 1 frame.BackgroundTransparency = 1
@ -1534,7 +1533,7 @@ t.CreateScrollingFrame = function(orderList, scrollStyle)
local scrollStamp = 0 local scrollStamp = 0
local scrollDrag = Instance.new "ImageButton" local scrollDrag = Instance.new "ImageButton"
scrollDrag.Image = "http://banland.xyz/asset/?id=61367186" scrollDrag.Image = "https://banland.xyz/asset/?id=61367186"
scrollDrag.Size = UDim2.new(1, 0, 0, 16) scrollDrag.Size = UDim2.new(1, 0, 0, 16)
scrollDrag.BackgroundTransparency = 1 scrollDrag.BackgroundTransparency = 1
scrollDrag.Name = "ScrollDrag" scrollDrag.Name = "ScrollDrag"
@ -1676,7 +1675,8 @@ t.CreateScrollingFrame = function(orderList, scrollStyle)
setRowSize = true setRowSize = true
local lastChildSize = 0 local lastChildSize = 0
local xOffset, yOffset = 0 local xOffset = 0
local yOffset = 0
if guiObjects[1] then if guiObjects[1] then
yOffset = math.ceil( yOffset = math.ceil(
math.floor( math.floor(
@ -1924,7 +1924,7 @@ t.CreateScrollingFrame = function(orderList, scrollStyle)
recalculate() recalculate()
end end
local scrollUp = function(mouseYPos) local function scrollUp(mouseYPos)
if scrollUpButton.Active then if scrollUpButton.Active then
scrollStamp = tick() scrollStamp = tick()
local current = scrollStamp local current = scrollStamp
@ -2001,17 +2001,17 @@ t.CreateScrollingFrame = function(orderList, scrollStyle)
local mouseOffset = y - scrollDrag.AbsolutePosition.y local mouseOffset = y - scrollDrag.AbsolutePosition.y
local dragCon local dragCon
local upCon local upCon
dragCon = mouseDrag.MouseMoved:connect(function(_, y) dragCon = mouseDrag.MouseMoved:connect(function(_, y2)
local barAbsPos = scrollbar.AbsolutePosition.y local barAbsPos = scrollbar.AbsolutePosition.y
local barAbsSize = scrollbar.AbsoluteSize.y local barAbsSize = scrollbar.AbsoluteSize.y
local dragAbsSize = scrollDrag.AbsoluteSize.y local dragAbsSize = scrollDrag.AbsoluteSize.y
local barAbsOne = barAbsPos + barAbsSize - dragAbsSize local barAbsOne = barAbsPos + barAbsSize - dragAbsSize
y -= mouseOffset y2 -= mouseOffset
y = y < barAbsPos and barAbsPos y2 = y2 < barAbsPos and barAbsPos
or y > barAbsOne and barAbsOne or y2 > barAbsOne and barAbsOne
or y or y2
y -= barAbsPos y2 -= barAbsPos
local guiObjects = 0 local guiObjects = 0
local children = frame:GetChildren() local children = frame:GetChildren()
@ -2023,7 +2023,7 @@ t.CreateScrollingFrame = function(orderList, scrollStyle)
end end
end end
local doublePercent = y / (barAbsSize - dragAbsSize) local doublePercent = y2 / (barAbsSize - dragAbsSize)
local rowDiff = rowSize local rowDiff = rowSize
local totalScrollCount = guiObjects - (howManyDisplayed - 1) local totalScrollCount = guiObjects - (howManyDisplayed - 1)
local newScrollPosition = math.floor( local newScrollPosition = math.floor(
@ -2046,13 +2046,12 @@ t.CreateScrollingFrame = function(orderList, scrollStyle)
dragCon:disconnect() dragCon:disconnect()
dragCon = nil dragCon = nil
upCon:disconnect() upCon:disconnect()
drag = nil
end) end)
mouseDrag.Parent = getScreenGuiAncestor(scrollbar) mouseDrag.Parent = getScreenGuiAncestor(scrollbar)
end end
end) end)
local scrollMouseCount = 0 scrollMouseCount = 0
scrollUpButton.MouseButton1Down:connect(function() scrollUpButton.MouseButton1Down:connect(function()
scrollUp() scrollUp()
@ -2151,7 +2150,7 @@ local function getGuiOwner(instance)
return nil return nil
end end
t.AutoTruncateTextObject = function(textLabel) RbxGui.AutoTruncateTextObject = function(textLabel)
local text = textLabel.Text local text = textLabel.Text
local fullLabel = textLabel:Clone() local fullLabel = textLabel:Clone()
@ -2304,7 +2303,7 @@ local function TransitionTutorialPages(
) )
end end
t.CreateTutorial = function(name, tutorialKey, createButtons) RbxGui.CreateTutorial = function(name, tutorialKey, createButtons)
local frame = Instance.new "Frame" local frame = Instance.new "Frame"
frame.Name = "Tutorial-" .. name frame.Name = "Tutorial-" .. name
frame.BackgroundTransparency = 1 frame.BackgroundTransparency = 1
@ -2545,7 +2544,7 @@ local function CreateBasicTutorialPage(
return frame, innerFrame return frame, innerFrame
end end
t.CreateTextTutorialPage = function(name, text, skipTutorialFunc) RbxGui.CreateTextTutorialPage = function(name, text, skipTutorialFunc)
local frame local frame
local contentFrame local contentFrame
@ -2561,8 +2560,8 @@ t.CreateTextTutorialPage = function(name, text, skipTutorialFunc)
textLabel.Size = UDim2.new(1, 0, 1, 0) textLabel.Size = UDim2.new(1, 0, 1, 0)
local function handleResize(minSize, maxSize) local function handleResize(minSize, maxSize)
local size = binaryShrink(minSize, maxSize, function(size) local size = binaryShrink(minSize, maxSize, function(newSize)
frame.Size = UDim2.new(0, size, 0, size) frame.Size = UDim2.new(0, newSize, 0, newSize)
return textLabel.TextFits return textLabel.TextFits
end) end)
frame.Size = UDim2.new(0, size, 0, size) frame.Size = UDim2.new(0, size, 0, size)
@ -2576,7 +2575,7 @@ t.CreateTextTutorialPage = function(name, text, skipTutorialFunc)
return frame return frame
end end
t.CreateImageTutorialPage = function( RbxGui.CreateImageTutorialPage = function(
name, name,
imageAsset, imageAsset,
x, x,
@ -2594,8 +2593,8 @@ t.CreateImageTutorialPage = function(
imageLabel.Position = UDim2.new(0.5, -x / 2, 0.5, -y / 2) imageLabel.Position = UDim2.new(0.5, -x / 2, 0.5, -y / 2)
local function handleResize(minSize, maxSize) local function handleResize(minSize, maxSize)
local size = binaryShrink(minSize, maxSize, function(size) local size = binaryShrink(minSize, maxSize, function(newSize)
return size >= x and size >= y return newSize >= x and newSize >= y
end) end)
if size >= x and size >= y then if size >= x and size >= y then
imageLabel.Size = UDim2.new(0, x, 0, y) imageLabel.Size = UDim2.new(0, x, 0, y)
@ -2627,7 +2626,7 @@ t.CreateImageTutorialPage = function(
return frame return frame
end end
t.AddTutorialPage = function(tutorial, tutorialPage) RbxGui.AddTutorialPage = function(tutorial, tutorialPage)
local transitionFrame = tutorial.TransitionFrame local transitionFrame = tutorial.TransitionFrame
local currentPageValue = tutorial.CurrentTutorialPage local currentPageValue = tutorial.CurrentTutorialPage
@ -2682,7 +2681,7 @@ t.AddTutorialPage = function(tutorial, tutorialPage)
end end
end end
t.CreateSetPanel = function( RbxGui.CreateSetPanel = function(
userIdsForSets, userIdsForSets,
objectSelected, objectSelected,
dialogClosed, dialogClosed,
@ -2813,7 +2812,7 @@ t.CreateSetPanel = function(
waterForceDirLabel.Position = UDim2.new(0, 0, 0, 50) waterForceDirLabel.Position = UDim2.new(0, 0, 0, 50)
waterForceDirLabel.Parent = waterFrame waterForceDirLabel.Parent = waterFrame
local waterTypeChangedEvent = Instance.new "BindableEvent" waterTypeChangedEvent = Instance.new "BindableEvent"
waterTypeChangedEvent.Name = "WaterTypeChangedEvent" waterTypeChangedEvent.Name = "WaterTypeChangedEvent"
waterTypeChangedEvent.Parent = waterFrame waterTypeChangedEvent.Parent = waterFrame
@ -2827,7 +2826,7 @@ t.CreateSetPanel = function(
end end
local waterForceDirectionDropDown, forceWaterDirectionSelection = local waterForceDirectionDropDown, forceWaterDirectionSelection =
t.CreateDropDownMenu( RbxGui.CreateDropDownMenu(
waterForceDirections, waterForceDirections,
waterForceDirectionSelectedFunc waterForceDirectionSelectedFunc
) )
@ -2837,7 +2836,7 @@ t.CreateSetPanel = function(
waterForceDirectionDropDown.Parent = waterForceDirLabel waterForceDirectionDropDown.Parent = waterForceDirLabel
local waterForceDropDown, forceWaterForceSelection = local waterForceDropDown, forceWaterForceSelection =
t.CreateDropDownMenu(waterForces, waterForceSelectedFunc) RbxGui.CreateDropDownMenu(waterForces, waterForceSelectedFunc)
forceWaterForceSelection "None" forceWaterForceSelection "None"
waterForceDropDown.Size = UDim2.new(1, 0, 0, 25) waterForceDropDown.Size = UDim2.new(1, 0, 0, 25)
waterForceDropDown.Position = UDim2.new(0, 0, 1, 3) waterForceDropDown.Position = UDim2.new(0, 0, 1, 3)
@ -2848,7 +2847,7 @@ t.CreateSetPanel = function(
-- Helper Function that contructs gui elements -- Helper Function that contructs gui elements
local function createSetGui() local function createSetGui()
local setGui = Instance.new "ScreenGui" setGui = Instance.new "ScreenGui"
setGui.Name = "SetGui" setGui.Name = "SetGui"
local setPanel = Instance.new "Frame" local setPanel = Instance.new "Frame"
@ -2929,7 +2928,7 @@ t.CreateSetPanel = function(
line.ZIndex = 6 line.ZIndex = 6
line.Parent = sets line.Parent = sets
local setsLists, controlFrame = t.CreateTrueScrollingFrame() local setsLists, controlFrame = RbxGui.CreateTrueScrollingFrame()
setsLists.Size = UDim2.new(1, -6, 0.94, 0) setsLists.Size = UDim2.new(1, -6, 0.94, 0)
setsLists.Position = UDim2.new(0, 0, 0.06, 0) setsLists.Position = UDim2.new(0, 0, 0.06, 0)
setsLists.BackgroundTransparency = 1 setsLists.BackgroundTransparency = 1
@ -2965,7 +2964,7 @@ t.CreateSetPanel = function(
local cancelImage = Instance.new "ImageLabel" local cancelImage = Instance.new "ImageLabel"
cancelImage.Name = "CancelImage" cancelImage.Name = "CancelImage"
cancelImage.BackgroundTransparency = 1 cancelImage.BackgroundTransparency = 1
cancelImage.Image = "http://banland.xyz/asset?id=54135717" cancelImage.Image = "https://banland.xyz/asset?id=54135717"
cancelImage.Position = UDim2.new(0, -2, 0, -2) cancelImage.Position = UDim2.new(0, -2, 0, -2)
cancelImage.Size = UDim2.new(0, 16, 0, 16) cancelImage.Size = UDim2.new(0, 16, 0, 16)
cancelImage.ZIndex = 6 cancelImage.ZIndex = 6
@ -3201,7 +3200,7 @@ t.CreateSetPanel = function(
local function createDropDownMenuButton(parent) local function createDropDownMenuButton(parent)
local dropDownButton = Instance.new "ImageButton" local dropDownButton = Instance.new "ImageButton"
dropDownButton.Name = "DropDownButton" dropDownButton.Name = "DropDownButton"
dropDownButton.Image = "http://banland.xyz/asset/?id=67581509" dropDownButton.Image = "https://banland.xyz/asset/?id=67581509"
dropDownButton.BackgroundTransparency = 1 dropDownButton.BackgroundTransparency = 1
dropDownButton.Size = UDim2.new(0, 16, 0, 16) dropDownButton.Size = UDim2.new(0, 16, 0, 16)
dropDownButton.Position = UDim2.new(1, -24, 0, 6) dropDownButton.Position = UDim2.new(1, -24, 0, 6)
@ -3529,7 +3528,7 @@ t.CreateSetPanel = function(
end end
) )
local scrollFrame, controlFrame = t.CreateTrueScrollingFrame() local scrollFrame, controlFrame = RbxGui.CreateTrueScrollingFrame()
scrollFrame.Size = UDim2.new(0.54, 0, 0.85, 0) scrollFrame.Size = UDim2.new(0.54, 0, 0.85, 0)
scrollFrame.Position = UDim2.new(0.24, 0, 0.085, 0) scrollFrame.Position = UDim2.new(0.24, 0, 0.085, 0)
scrollFrame.Name = "ItemsFrame" scrollFrame.Name = "ItemsFrame"
@ -3542,6 +3541,11 @@ t.CreateSetPanel = function(
controlFrame.Parent = setGui.SetPanel controlFrame.Parent = setGui.SetPanel
controlFrame.Position = UDim2.new(0.76, 5, 0, 0) controlFrame.Position = UDim2.new(0.76, 5, 0, 0)
local rows =
math.floor(setGui.SetPanel.ItemsFrame.AbsoluteSize.Y / buttonHeight)
local columns =
math.floor(setGui.SetPanel.ItemsFrame.AbsoluteSize.X / buttonWidth)
local debounce = false local debounce = false
controlFrame.ScrollBottom.Changed:connect(function(_) controlFrame.ScrollBottom.Changed:connect(function(_)
if controlFrame.ScrollBottom.Value == true then if controlFrame.ScrollBottom.Value == true then
@ -3573,10 +3577,6 @@ t.CreateSetPanel = function(
userCategoryButtons = processCategory(userData) userCategoryButtons = processCategory(userData)
end end
rows = math.floor(setGui.SetPanel.ItemsFrame.AbsoluteSize.Y / buttonHeight)
columns =
math.floor(setGui.SetPanel.ItemsFrame.AbsoluteSize.X / buttonWidth)
populateSetsFrame() populateSetsFrame()
--[[local insertPanelCloseCon = ]] --[[local insertPanelCloseCon = ]]
@ -3611,7 +3611,7 @@ t.CreateSetPanel = function(
waterTypeChangedEvent waterTypeChangedEvent
end end
t.CreateTerrainMaterialSelector = function(size, position) RbxGui.CreateTerrainMaterialSelector = function(size, position)
local terrainMaterialSelectionChanged = Instance.new "BindableEvent" local terrainMaterialSelectionChanged = Instance.new "BindableEvent"
terrainMaterialSelectionChanged.Name = "TerrainMaterialSelectionChanged" terrainMaterialSelectionChanged.Name = "TerrainMaterialSelectionChanged"
@ -3619,11 +3619,7 @@ t.CreateTerrainMaterialSelector = function(size, position)
local frame = Instance.new "Frame" local frame = Instance.new "Frame"
frame.Name = "TerrainMaterialSelector" frame.Name = "TerrainMaterialSelector"
if size then frame.Size = size or UDim2.new(0, 245, 0, 230)
frame.Size = size
else
frame.Size = UDim2.new(0, 245, 0, 230)
end
if position then if position then
frame.Position = position frame.Position = position
end end
@ -3770,63 +3766,63 @@ t.CreateTerrainMaterialSelector = function(size, position)
materialToImageMap[v] = {} materialToImageMap[v] = {}
if v == "Grass" then if v == "Grass" then
materialToImageMap[v].Regular = materialToImageMap[v].Regular =
"http://banland.xyz/asset/?id=56563112" "https://banland.xyz/asset/?id=56563112"
elseif v == "Sand" then elseif v == "Sand" then
materialToImageMap[v].Regular = materialToImageMap[v].Regular =
"http://banland.xyz/asset/?id=62356652" "https://banland.xyz/asset/?id=62356652"
elseif v == "Brick" then elseif v == "Brick" then
materialToImageMap[v].Regular = materialToImageMap[v].Regular =
"http://banland.xyz/asset/?id=65961537" "https://banland.xyz/asset/?id=65961537"
elseif v == "Granite" then elseif v == "Granite" then
materialToImageMap[v].Regular = materialToImageMap[v].Regular =
"http://banland.xyz/asset/?id=67532153" "https://banland.xyz/asset/?id=67532153"
elseif v == "Asphalt" then elseif v == "Asphalt" then
materialToImageMap[v].Regular = materialToImageMap[v].Regular =
"http://banland.xyz/asset/?id=67532038" "https://banland.xyz/asset/?id=67532038"
elseif v == "Iron" then elseif v == "Iron" then
materialToImageMap[v].Regular = materialToImageMap[v].Regular =
"http://banland.xyz/asset/?id=67532093" "https://banland.xyz/asset/?id=67532093"
elseif v == "Aluminum" then elseif v == "Aluminum" then
materialToImageMap[v].Regular = materialToImageMap[v].Regular =
"http://banland.xyz/asset/?id=67531995" "https://banland.xyz/asset/?id=67531995"
elseif v == "Gold" then elseif v == "Gold" then
materialToImageMap[v].Regular = materialToImageMap[v].Regular =
"http://banland.xyz/asset/?id=67532118" "https://banland.xyz/asset/?id=67532118"
elseif v == "Plastic (red)" then elseif v == "Plastic (red)" then
materialToImageMap[v].Regular = materialToImageMap[v].Regular =
"http://banland.xyz/asset/?id=67531848" "https://banland.xyz/asset/?id=67531848"
elseif v == "Plastic (blue)" then elseif v == "Plastic (blue)" then
materialToImageMap[v].Regular = materialToImageMap[v].Regular =
"http://banland.xyz/asset/?id=67531924" "https://banland.xyz/asset/?id=67531924"
elseif v == "Plank" then elseif v == "Plank" then
materialToImageMap[v].Regular = materialToImageMap[v].Regular =
"http://banland.xyz/asset/?id=67532015" "https://banland.xyz/asset/?id=67532015"
elseif v == "Log" then elseif v == "Log" then
materialToImageMap[v].Regular = materialToImageMap[v].Regular =
"http://banland.xyz/asset/?id=67532051" "https://banland.xyz/asset/?id=67532051"
elseif v == "Gravel" then elseif v == "Gravel" then
materialToImageMap[v].Regular = materialToImageMap[v].Regular =
"http://banland.xyz/asset/?id=67532206" "https://banland.xyz/asset/?id=67532206"
elseif v == "Cinder Block" then elseif v == "Cinder Block" then
materialToImageMap[v].Regular = materialToImageMap[v].Regular =
"http://banland.xyz/asset/?id=67532103" "https://banland.xyz/asset/?id=67532103"
elseif v == "Stone Wall" then elseif v == "Stone Wall" then
materialToImageMap[v].Regular = materialToImageMap[v].Regular =
"http://banland.xyz/asset/?id=67531804" "https://banland.xyz/asset/?id=67531804"
elseif v == "Concrete" then elseif v == "Concrete" then
materialToImageMap[v].Regular = materialToImageMap[v].Regular =
"http://banland.xyz/asset/?id=67532059" "https://banland.xyz/asset/?id=67532059"
elseif v == "Water" then elseif v == "Water" then
materialToImageMap[v].Regular = materialToImageMap[v].Regular =
"http://banland.xyz/asset/?id=81407474" "https://banland.xyz/asset/?id=81407474"
else else
materialToImageMap[v].Regular = materialToImageMap[v].Regular =
"http://banland.xyz/asset/?id=66887593" -- fill in the rest here!! "https://banland.xyz/asset/?id=66887593" -- fill in the rest here!!
end end
end end
local scrollFrame, scrollUp, scrollDown, recalculateScroll = local scrollFrame, scrollUp, scrollDown, recalculateScroll =
t.CreateScrollingFrame(nil, "grid") RbxGui.CreateScrollingFrame(nil, "grid")
scrollFrame.Size = UDim2.new(0.85, 0, 1, 0) scrollFrame.Size = UDim2.new(0.85, 0, 1, 0)
scrollFrame.Position = UDim2.new(0, 0, 0, 0) scrollFrame.Position = UDim2.new(0, 0, 0, 0)
scrollFrame.Parent = frame scrollFrame.Parent = frame
@ -3940,9 +3936,9 @@ t.CreateTerrainMaterialSelector = function(size, position)
return frame, terrainMaterialSelectionChanged, forceTerrainMaterialSelection return frame, terrainMaterialSelectionChanged, forceTerrainMaterialSelection
end end
t.CreateLoadingFrame = function(name, size, position) RbxGui.CreateLoadingFrame = function(name, size, position)
game:GetService("ContentProvider") game:GetService("ContentProvider")
:Preload "http://banland.xyz/asset/?id=35238053" :Preload "https://banland.xyz/asset/?id=35238053"
local loadingFrame = Instance.new "Frame" local loadingFrame = Instance.new "Frame"
loadingFrame.Name = "LoadingFrame" loadingFrame.Name = "LoadingFrame"
@ -3969,7 +3965,7 @@ t.CreateLoadingFrame = function(name, size, position)
local loadingGreenBar = Instance.new "ImageLabel" local loadingGreenBar = Instance.new "ImageLabel"
loadingGreenBar.Name = "LoadingGreenBar" loadingGreenBar.Name = "LoadingGreenBar"
loadingGreenBar.Image = "http://banland.xyz/asset/?id=35238053" loadingGreenBar.Image = "https://banland.xyz/asset/?id=35238053"
loadingGreenBar.Position = UDim2.new(0, 0, 0, 0) loadingGreenBar.Position = UDim2.new(0, 0, 0, 0)
loadingGreenBar.Size = UDim2.new(0, 0, 1, 0) loadingGreenBar.Size = UDim2.new(0, 0, 1, 0)
loadingGreenBar.Visible = false loadingGreenBar.Visible = false
@ -4082,8 +4078,15 @@ t.CreateLoadingFrame = function(name, size, position)
return loadingFrame, updateLoadingGuiPercent, cancelButtonClicked return loadingFrame, updateLoadingGuiPercent, cancelButtonClicked
end end
t.CreatePluginFrame = function(name, size, position, scrollable, parent) RbxGui.CreatePluginFrame = function(name, size, position, scrollable, parent)
function createMenuButton(size, position, text, fontsize, name, parent) local function createMenuButton(
size,
position,
text,
fontsize,
name,
parent
)
local button = Instance.new "TextButton" local button = Instance.new "TextButton"
button.AutoButtonColor = false button.AutoButtonColor = false
button.Name = name button.Name = name
@ -4298,7 +4301,7 @@ t.CreatePluginFrame = function(name, size, position, scrollable, parent)
local frame, control, verticalDragger local frame, control, verticalDragger
if scrollable then if scrollable then
--frame for widgets --frame for widgets
frame, control = t.CreateTrueScrollingFrame() frame, control = RbxGui.CreateTrueScrollingFrame()
frame.Size = UDim2.new(1, 0, 1, 0) frame.Size = UDim2.new(1, 0, 1, 0)
frame.BackgroundColor3 = Color3.new(72 / 255, 72 / 255, 72 / 255) frame.BackgroundColor3 = Color3.new(72 / 255, 72 / 255, 72 / 255)
frame.BorderColor3 = Color3.new(0, 0, 0) frame.BorderColor3 = Color3.new(0, 0, 0)
@ -4450,11 +4453,11 @@ t.CreatePluginFrame = function(name, size, position, scrollable, parent)
return dragBar, widgetContainer, helpFrame, closeEvent return dragBar, widgetContainer, helpFrame, closeEvent
end end
t.Help = function(funcNameOrFunc) RbxGui.Help = function(funcNameOrFunc)
--input argument can be a string or a function. Should return a description (of arguments and expected side effects) --input argument can be a string or a function. Should return a description (of arguments and expected side effects)
if if
funcNameOrFunc == "CreatePropertyDropDownMenu" funcNameOrFunc == "CreatePropertyDropDownMenu"
or funcNameOrFunc == t.CreatePropertyDropDownMenu or funcNameOrFunc == RbxGui.CreatePropertyDropDownMenu
then then
return "Function CreatePropertyDropDownMenu. " return "Function CreatePropertyDropDownMenu. "
.. "Arguments: (instance, propertyName, enumType). " .. "Arguments: (instance, propertyName, enumType). "
@ -4462,7 +4465,7 @@ t.Help = function(funcNameOrFunc)
end end
if if
funcNameOrFunc == "CreateDropDownMenu" funcNameOrFunc == "CreateDropDownMenu"
or funcNameOrFunc == t.CreateDropDownMenu or funcNameOrFunc == RbxGui.CreateDropDownMenu
then then
return "Function CreateDropDownMenu. " return "Function CreateDropDownMenu. "
.. "Arguments: (items, onItemSelected). " .. "Arguments: (items, onItemSelected). "
@ -4470,7 +4473,7 @@ t.Help = function(funcNameOrFunc)
end end
if if
funcNameOrFunc == "CreateMessageDialog" funcNameOrFunc == "CreateMessageDialog"
or funcNameOrFunc == t.CreateMessageDialog or funcNameOrFunc == RbxGui.CreateMessageDialog
then then
return "Function CreateMessageDialog. " return "Function CreateMessageDialog. "
.. "Arguments: (title, message, buttons). " .. "Arguments: (title, message, buttons). "
@ -4478,7 +4481,7 @@ t.Help = function(funcNameOrFunc)
end end
if if
funcNameOrFunc == "CreateStyledMessageDialog" funcNameOrFunc == "CreateStyledMessageDialog"
or funcNameOrFunc == t.CreateStyledMessageDialog or funcNameOrFunc == RbxGui.CreateStyledMessageDialog
then then
return "Function CreateStyledMessageDialog. " return "Function CreateStyledMessageDialog. "
.. "Arguments: (title, message, style, buttons). " .. "Arguments: (title, message, style, buttons). "
@ -4486,7 +4489,7 @@ t.Help = function(funcNameOrFunc)
end end
if if
funcNameOrFunc == "GetFontHeight" funcNameOrFunc == "GetFontHeight"
or funcNameOrFunc == t.GetFontHeight or funcNameOrFunc == RbxGui.GetFontHeight
then then
return "Function GetFontHeight. " return "Function GetFontHeight. "
.. "Arguments: (font, fontSize). " .. "Arguments: (font, fontSize). "
@ -4494,7 +4497,7 @@ t.Help = function(funcNameOrFunc)
end end
if if
funcNameOrFunc == "CreateScrollingFrame" funcNameOrFunc == "CreateScrollingFrame"
or funcNameOrFunc == t.CreateScrollingFrame or funcNameOrFunc == RbxGui.CreateScrollingFrame
then then
return "Function CreateScrollingFrame. " return "Function CreateScrollingFrame. "
.. "Arguments: (orderList, style) " .. "Arguments: (orderList, style) "
@ -4502,7 +4505,7 @@ t.Help = function(funcNameOrFunc)
end end
if if
funcNameOrFunc == "CreateTrueScrollingFrame" funcNameOrFunc == "CreateTrueScrollingFrame"
or funcNameOrFunc == t.CreateTrueScrollingFrame or funcNameOrFunc == RbxGui.CreateTrueScrollingFrame
then then
return "Function CreateTrueScrollingFrame. " return "Function CreateTrueScrollingFrame. "
.. "Arguments: (nil) " .. "Arguments: (nil) "
@ -4510,20 +4513,23 @@ t.Help = function(funcNameOrFunc)
end end
if if
funcNameOrFunc == "AutoTruncateTextObject" funcNameOrFunc == "AutoTruncateTextObject"
or funcNameOrFunc == t.AutoTruncateTextObject or funcNameOrFunc == RbxGui.AutoTruncateTextObject
then then
return "Function AutoTruncateTextObject. " return "Function AutoTruncateTextObject. "
.. "Arguments: (textLabel) " .. "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" .. "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"
end end
if funcNameOrFunc == "CreateSlider" or funcNameOrFunc == t.CreateSlider then if
funcNameOrFunc == "CreateSlider"
or funcNameOrFunc == RbxGui.CreateSlider
then
return "Function CreateSlider. " return "Function CreateSlider. "
.. "Arguments: (steps, width, position) " .. "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." .. "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."
end end
if if
funcNameOrFunc == "CreateLoadingFrame" funcNameOrFunc == "CreateLoadingFrame"
or funcNameOrFunc == t.CreateLoadingFrame or funcNameOrFunc == RbxGui.CreateLoadingFrame
then then
return "Function CreateLoadingFrame. " return "Function CreateLoadingFrame. "
.. "Arguments: (name, size, position) " .. "Arguments: (name, size, position) "
@ -4531,7 +4537,7 @@ t.Help = function(funcNameOrFunc)
end end
if if
funcNameOrFunc == "CreateTerrainMaterialSelector" funcNameOrFunc == "CreateTerrainMaterialSelector"
or funcNameOrFunc == t.CreateTerrainMaterialSelector or funcNameOrFunc == RbxGui.CreateTerrainMaterialSelector
then then
return "Function CreateTerrainMaterialSelector. " return "Function CreateTerrainMaterialSelector. "
.. "Arguments: (size, position) " .. "Arguments: (size, position) "
@ -4539,4 +4545,4 @@ t.Help = function(funcNameOrFunc)
end end
end end
return t return RbxGui

View File

@ -23,8 +23,8 @@ local RbxGui
local helpButton, updateCameraDropDownSelection, updateVideoCaptureDropDownSelection local helpButton, updateCameraDropDownSelection, updateVideoCaptureDropDownSelection
local tweenTime = 0.2 local tweenTime = 0.2
local mouseLockLookScreenUrl = "http://banland.xyz/asset?id=54071825" local mouseLockLookScreenUrl = "https://banland.xyz/asset?id=54071825"
local classicLookScreenUrl = "http://banland.xyz/Asset?id=45915798" local classicLookScreenUrl = "https://banland.xyz/Asset?id=45915798"
local hasGraphicsSlider = (game:GetService("CoreGui").Version >= 5) local hasGraphicsSlider = (game:GetService("CoreGui").Version >= 5)
local GraphicsQualityLevels = 10 -- how many levels we allow on graphics slider local GraphicsQualityLevels = 10 -- how many levels we allow on graphics slider
@ -415,17 +415,17 @@ local function createHelpDialog(baseZIndex)
buttons[2] = {} buttons[2] = {}
buttons[2].Text = "Move" buttons[2].Text = "Move"
buttons[2].Function = function() buttons[2].Function = function()
image.Image = "http://banland.xyz/Asset?id=45915811" image.Image = "https://banland.xyz/Asset?id=45915811"
end end
buttons[3] = {} buttons[3] = {}
buttons[3].Text = "Gear" buttons[3].Text = "Gear"
buttons[3].Function = function() buttons[3].Function = function()
image.Image = "http://banland.xyz/Asset?id=45917596" image.Image = "https://banland.xyz/Asset?id=45917596"
end end
buttons[4] = {} buttons[4] = {}
buttons[4].Text = "Zoom" buttons[4].Text = "Zoom"
buttons[4].Function = function() buttons[4].Function = function()
image.Image = "http://banland.xyz/Asset?id=45915825" image.Image = "https://banland.xyz/Asset?id=45915825"
end end
CreateTextButtons(buttonRow, buttons, UDim.new(0, 0), UDim.new(1, 0)) CreateTextButtons(buttonRow, buttons, UDim.new(0, 0), UDim.new(1, 0))
@ -2007,7 +2007,7 @@ local createSaveDialogs = function()
-8 -8
) )
spinnerImage.BackgroundTransparency = 1 spinnerImage.BackgroundTransparency = 1
spinnerImage.Image = "http://banland.xyz/Asset?id=45880710" spinnerImage.Image = "https://banland.xyz/Asset?id=45880710"
spinnerImage.Parent = spinnerFrame spinnerImage.Parent = spinnerFrame
spinnerIcons[spinnerNum] = spinnerImage spinnerIcons[spinnerNum] = spinnerImage
@ -2029,10 +2029,10 @@ local createSaveDialogs = function()
while pos < 8 do while pos < 8 do
if pos == spinPos or pos == ((spinPos + 1) % 8) then if pos == spinPos or pos == ((spinPos + 1) % 8) then
spinnerIcons[pos + 1].Image = spinnerIcons[pos + 1].Image =
"http://banland.xyz/Asset?id=45880668" "https://banland.xyz/Asset?id=45880668"
else else
spinnerIcons[pos + 1].Image = spinnerIcons[pos + 1].Image =
"http://banland.xyz/Asset?id=45880710" "https://banland.xyz/Asset?id=45880710"
end end
pos += 1 pos += 1
@ -2169,7 +2169,7 @@ local createReportAbuseDialog = function()
frame.Active = true frame.Active = true
frame.Parent = shield frame.Parent = shield
local settingsFrame = Instance.new "Frame" settingsFrame = Instance.new "Frame"
settingsFrame.Name = "ReportAbuseStyle" settingsFrame.Name = "ReportAbuseStyle"
settingsFrame.Size = UDim2.new(1, 0, 1, 0) settingsFrame.Size = UDim2.new(1, 0, 1, 0)
settingsFrame.Style = Enum.FrameStyle.RobloxRound settingsFrame.Style = Enum.FrameStyle.RobloxRound
@ -2602,25 +2602,3 @@ if success and luaChat then
end) end)
end end
]] ]]
--[[
local BurningManPlaceID = 41324860
-- TODO: remove click to walk completely if testing shows we don't need it
-- Removes click to walk option from Burning Man
delay(0, function()
waitForChild(game, "NetworkClient")
waitForChild(game, "Players")
waitForProperty(game.Players, "LocalPlayer")
waitForProperty(game.Players.LocalPlayer, "Character")
waitForChild(game.Players.LocalPlayer.Character, "Humanoid")
waitForProperty(game, "PlaceId")
if game.PlaceId == BurningManPlaceID then
game.Players.LocalPlayer.Character.Humanoid:SetClickToWalkEnabled(false)
game.Players.LocalPlayer.CharacterAdded:connect(function(character)
waitForChild(character, "Humanoid")
character.Humanoid:SetClickToWalkEnabled(false)
end)
end
end)
]]

File diff suppressed because it is too large Load Diff

View File

@ -46,7 +46,7 @@ function makeFriend(fromPlayer, toPlayer)
popup.PopupText.Text = `Accept Friend Request from {fromPlayer.Name}?` popup.PopupText.Text = `Accept Friend Request from {fromPlayer.Name}?`
popup.PopupImage.Image = popup.PopupImage.Image =
`http://banland.xyz/thumbs/avatar.ashx?userId={fromPlayer.userId}&x=352&y=352` `https://banland.xyz/thumbs/avatar.ashx?userId={fromPlayer.userId}&x=352&y=352`
showTwoButtons() showTwoButtons()
popup.Visible = true popup.Visible = true
@ -114,7 +114,7 @@ game.Players.FriendRequestEvent:connect(function(fromPlayer, toPlayer, event)
game:GetService("GuiService"):SendNotification( game:GetService("GuiService"):SendNotification(
"You are Friends", "You are Friends",
`With {toPlayer.Name}!`, `With {toPlayer.Name}!`,
`http://banland.xyz/thumbs/avatar.ashx?userId={toPlayer.userId}&x=48&y=48`, `https://banland.xyz/thumbs/avatar.ashx?userId={toPlayer.userId}&x=48&y=48`,
5, 5,
function() end function() end
) )
@ -127,7 +127,7 @@ game.Players.FriendRequestEvent:connect(function(fromPlayer, toPlayer, event)
game:GetService("GuiService"):SendNotification( game:GetService("GuiService"):SendNotification(
"Friend Request", "Friend Request",
`From {fromPlayer.Name}`, `From {fromPlayer.Name}`,
`http://banland.xyz/thumbs/avatar.ashx?userId={fromPlayer.userId}&x=48&y=48`, `https://banland.xyz/thumbs/avatar.ashx?userId={fromPlayer.userId}&x=48&y=48`,
8, 8,
function() function()
makeFriend(fromPlayer, toPlayer) makeFriend(fromPlayer, toPlayer)
@ -137,7 +137,7 @@ game.Players.FriendRequestEvent:connect(function(fromPlayer, toPlayer, event)
game:GetService("GuiService"):SendNotification( game:GetService("GuiService"):SendNotification(
"You are Friends", "You are Friends",
`With {fromPlayer.Name}!`, `With {fromPlayer.Name}!`,
`http://banland.xyz/thumbs/avatar.ashx?userId={fromPlayer.userId}&x=48&y=48`, `https://banland.xyz/thumbs/avatar.ashx?userId={fromPlayer.userId}&x=48&y=48`,
5, 5,
function() end function() end
) )

View File

@ -55,7 +55,7 @@ popupImage.Parent = popupFrame
local backing = Instance.new "ImageLabel" local backing = Instance.new "ImageLabel"
backing.BackgroundTransparency = 1 backing.BackgroundTransparency = 1
backing.Size = UDim2.new(1, 0, 1, 0) backing.Size = UDim2.new(1, 0, 1, 0)
backing.Image = "http://banland.xyz/asset/?id=47574181" backing.Image = "https://banland.xyz/asset/?id=47574181"
backing.Name = "Backing" backing.Name = "Backing"
backing.ZIndex = 2 backing.ZIndex = 2
backing.Parent = popupImage backing.Parent = popupImage

View File

@ -55,7 +55,7 @@ CurrentLoadout.Parent = gui
local CLBackground = Instance.new "ImageLabel" local CLBackground = Instance.new "ImageLabel"
CLBackground.Name = "Background" CLBackground.Name = "Background"
CLBackground.Size = UDim2.new(1.2, 0, 1.2, 0) CLBackground.Size = UDim2.new(1.2, 0, 1.2, 0)
CLBackground.Image = "http://banland.xyz/asset/?id=96536002" CLBackground.Image = "https://banland.xyz/asset/?id=96536002"
CLBackground.BackgroundTransparency = 1 CLBackground.BackgroundTransparency = 1
CLBackground.Position = UDim2.new(-0.1, 0, -0.1, 0) CLBackground.Position = UDim2.new(-0.1, 0, -0.1, 0)
CLBackground.ZIndex = 0.0 CLBackground.ZIndex = 0.0
@ -65,7 +65,7 @@ CLBackground.Visible = false
local BackgroundUp = Instance.new "ImageLabel" local BackgroundUp = Instance.new "ImageLabel"
BackgroundUp.Size = UDim2.new(1, 0, 0.025, 1) BackgroundUp.Size = UDim2.new(1, 0, 0.025, 1)
BackgroundUp.Position = UDim2.new(0, 0, 0, 0) BackgroundUp.Position = UDim2.new(0, 0, 0, 0)
BackgroundUp.Image = "http://banland.xyz/asset/?id=97662207" BackgroundUp.Image = "https://banland.xyz/asset/?id=97662207"
BackgroundUp.BackgroundTransparency = 1 BackgroundUp.BackgroundTransparency = 1
BackgroundUp.Parent = CLBackground BackgroundUp.Parent = CLBackground
@ -79,7 +79,7 @@ BackpackButton.RobloxLocked = true
BackpackButton.Visible = false BackpackButton.Visible = false
BackpackButton.Name = "BackpackButton" BackpackButton.Name = "BackpackButton"
BackpackButton.BackgroundTransparency = 1 BackpackButton.BackgroundTransparency = 1
BackpackButton.Image = "http://banland.xyz/asset/?id=97617958" BackpackButton.Image = "https://banland.xyz/asset/?id=97617958"
BackpackButton.Position = UDim2.new(0.5, -60, 1, -108) BackpackButton.Position = UDim2.new(0.5, -60, 1, -108)
BackpackButton.Size = UDim2.new(0, 120, 0, 18) BackpackButton.Size = UDim2.new(0, 120, 0, 18)
waitForChild(gui, "ControlFrame") waitForChild(gui, "ControlFrame")
@ -138,14 +138,14 @@ TempSlot.ZIndex = 3.0
local slotBackground = Instance.new "ImageLabel" local slotBackground = Instance.new "ImageLabel"
slotBackground.Name = "Background" slotBackground.Name = "Background"
slotBackground.BackgroundTransparency = 1 slotBackground.BackgroundTransparency = 1
slotBackground.Image = "http://banland.xyz/asset/?id=97613075" slotBackground.Image = "https://banland.xyz/asset/?id=97613075"
slotBackground.Size = UDim2.new(1, 0, 1, 0) slotBackground.Size = UDim2.new(1, 0, 1, 0)
slotBackground.Parent = TempSlot slotBackground.Parent = TempSlot
local HighLight = Instance.new "ImageLabel" local HighLight = Instance.new "ImageLabel"
HighLight.Name = "Highlight" HighLight.Name = "Highlight"
HighLight.BackgroundTransparency = 1 HighLight.BackgroundTransparency = 1
HighLight.Image = "http://banland.xyz/asset/?id=97643886" HighLight.Image = "https://banland.xyz/asset/?id=97643886"
HighLight.Size = UDim2.new(1, 0, 1, 0) HighLight.Size = UDim2.new(1, 0, 1, 0)
--HighLight.Parent = TempSlot --HighLight.Parent = TempSlot
HighLight.Visible = false HighLight.Visible = false
@ -339,8 +339,8 @@ closeButton.Modal = true
local XImage = Instance.new "ImageLabel" local XImage = Instance.new "ImageLabel"
XImage.RobloxLocked = true XImage.RobloxLocked = true
XImage.Name = "XImage" XImage.Name = "XImage"
ContentProvider:Preload "http://banland.xyz/asset/?id=75547445" ContentProvider:Preload "https://banland.xyz/asset/?id=75547445"
XImage.Image = "http://banland.xyz/asset/?id=75547445" --TODO: move to rbxasset XImage.Image = "https://banland.xyz/asset/?id=75547445" --TODO: move to rbxasset
XImage.BackgroundTransparency = 1 XImage.BackgroundTransparency = 1
XImage.Position = UDim2.new(-0.25, -1, -0.25, -1) XImage.Position = UDim2.new(-0.25, -1, -0.25, -1)
XImage.Size = UDim2.new(1.5, 2, 1.5, 2) XImage.Size = UDim2.new(1.5, 2, 1.5, 2)
@ -430,7 +430,7 @@ GearGrid.Size = UDim2.new(0.95, 0, 1, 0)
GearGrid.BackgroundTransparency = 1 GearGrid.BackgroundTransparency = 1
GearGrid.Parent = Gear GearGrid.Parent = Gear
local GearButton = Instance.new "ImageButton" GearButton = Instance.new "ImageButton"
GearButton.RobloxLocked = true GearButton.RobloxLocked = true
GearButton.Visible = false GearButton.Visible = false
GearButton.Name = "GearButton" GearButton.Name = "GearButton"
@ -439,15 +439,15 @@ GearButton.Style = "Custom"
GearButton.BackgroundTransparency = 1 GearButton.BackgroundTransparency = 1
GearButton.Parent = GearGrid GearButton.Parent = GearGrid
local slotBackground = Instance.new "ImageLabel" slotBackground = Instance.new "ImageLabel"
slotBackground.Name = "Background" slotBackground.Name = "Background"
slotBackground.BackgroundTransparency = 1 slotBackground.BackgroundTransparency = 1
slotBackground.Image = "http://banland.xyz/asset/?id=97613075" slotBackground.Image = "https://banland.xyz/asset/?id=97613075"
slotBackground.Size = UDim2.new(1, 0, 1, 0) slotBackground.Size = UDim2.new(1, 0, 1, 0)
slotBackground.Parent = GearButton slotBackground.Parent = GearButton
-- GearButton Children -- GearButton Children
local GearReference = Instance.new "ObjectValue" GearReference = Instance.new "ObjectValue"
GearReference.RobloxLocked = true GearReference.RobloxLocked = true
GearReference.Name = "GearReference" GearReference.Name = "GearReference"
GearReference.Parent = GearButton GearReference.Parent = GearButton
@ -462,7 +462,7 @@ GreyOutButton.Visible = false
GreyOutButton.ZIndex = 3 GreyOutButton.ZIndex = 3
GreyOutButton.Parent = GearButton GreyOutButton.Parent = GearButton
local GearText = Instance.new "TextLabel" GearText = Instance.new "TextLabel"
GearText.RobloxLocked = true GearText.RobloxLocked = true
GearText.Name = "GearText" GearText.Name = "GearText"
GearText.BackgroundTransparency = 1 GearText.BackgroundTransparency = 1
@ -564,7 +564,7 @@ GearName.TextWrap = true
GearName.ZIndex = 9 GearName.ZIndex = 9
GearName.Parent = GearStats GearName.Parent = GearStats
local GearImage = Instance.new "ImageLabel" GearImage = Instance.new "ImageLabel"
GearImage.RobloxLocked = true GearImage.RobloxLocked = true
GearImage.Name = "GearImage" GearImage.Name = "GearImage"
GearImage.Image = "" GearImage.Image = ""
@ -771,10 +771,10 @@ CharacterPane.Parent = Wardrobe
--CharacterPane Children --CharacterPane Children
local FaceFrame = makeCharFrame("FacesFrame", CharacterPane) local FaceFrame = makeCharFrame("FacesFrame", CharacterPane)
ContentProvider:Preload "http://banland.xyz/asset/?id=75460621" ContentProvider:Preload "https://banland.xyz/asset/?id=75460621"
makeZone( makeZone(
"FaceZone", "FaceZone",
"http://banland.xyz/asset/?id=75460621", "https://banland.xyz/asset/?id=75460621",
UDim2.new(0, 157, 0, 137), UDim2.new(0, 157, 0, 137),
UDim2.new(0.5, -78, 0.5, -68), UDim2.new(0.5, -78, 0.5, -68),
FaceFrame FaceFrame
@ -789,7 +789,7 @@ makeStyledButton(
local HeadFrame = makeCharFrame("HeadsFrame", CharacterPane) local HeadFrame = makeCharFrame("HeadsFrame", CharacterPane)
makeZone( makeZone(
"FaceZone", "FaceZone",
"http://banland.xyz/asset/?id=75460621", "https://banland.xyz/asset/?id=75460621",
UDim2.new(0, 157, 0, 137), UDim2.new(0, 157, 0, 137),
UDim2.new(0.5, -78, 0.5, -68), UDim2.new(0.5, -78, 0.5, -68),
HeadFrame HeadFrame
@ -802,10 +802,10 @@ makeStyledButton(
) )
local HatsFrame = makeCharFrame("HatsFrame", CharacterPane) local HatsFrame = makeCharFrame("HatsFrame", CharacterPane)
ContentProvider:Preload "http://banland.xyz/asset/?id=75457888" ContentProvider:Preload "https://banland.xyz/asset/?id=75457888"
local HatsZone = makeZone( local HatsZone = makeZone(
"HatsZone", "HatsZone",
"http://banland.xyz/asset/?id=75457888", "https://banland.xyz/asset/?id=75457888",
UDim2.new(0, 186, 0, 184), UDim2.new(0, 186, 0, 184),
UDim2.new(0.5, -93, 0.5, -100), UDim2.new(0.5, -93, 0.5, -100),
HatsFrame HatsFrame
@ -833,10 +833,10 @@ makeStyledButton(
) )
local PantsFrame = makeCharFrame("PantsFrame", CharacterPane) local PantsFrame = makeCharFrame("PantsFrame", CharacterPane)
ContentProvider:Preload "http://banland.xyz/asset/?id=75457920" ContentProvider:Preload "https://banland.xyz/asset/?id=75457920"
makeZone( makeZone(
"PantsZone", "PantsZone",
"http://banland.xyz/asset/?id=75457920", "https://banland.xyz/asset/?id=75457920",
UDim2.new(0, 121, 0, 99), UDim2.new(0, 121, 0, 99),
UDim2.new(0.5, -60, 0.5, -100), UDim2.new(0.5, -60, 0.5, -100),
PantsFrame PantsFrame
@ -928,10 +928,10 @@ makeTextLabel(
) )
local TShirtFrame = makeCharFrame("T-ShirtsFrame", CharacterPane) local TShirtFrame = makeCharFrame("T-ShirtsFrame", CharacterPane)
ContentProvider:Preload "http://banland.xyz/asset/?id=75460642" ContentProvider:Preload "https://banland.xyz/asset/?id=75460642"
makeZone( makeZone(
"TShirtZone", "TShirtZone",
"http://banland.xyz/asset/?id=75460642", "https://banland.xyz/asset/?id=75460642",
UDim2.new(0, 121, 0, 154), UDim2.new(0, 121, 0, 154),
UDim2.new(0.5, -60, 0.5, -100), UDim2.new(0.5, -60, 0.5, -100),
TShirtFrame TShirtFrame
@ -946,7 +946,7 @@ makeStyledButton(
local ShirtFrame = makeCharFrame("ShirtsFrame", CharacterPane) local ShirtFrame = makeCharFrame("ShirtsFrame", CharacterPane)
makeZone( makeZone(
"ShirtZone", "ShirtZone",
"http://banland.xyz/asset/?id=75460642", "https://banland.xyz/asset/?id=75460642",
UDim2.new(0, 121, 0, 154), UDim2.new(0, 121, 0, 154),
UDim2.new(0.5, -60, 0.5, -100), UDim2.new(0.5, -60, 0.5, -100),
ShirtFrame ShirtFrame
@ -959,10 +959,10 @@ makeStyledButton(
) )
local ColorFrame = makeCharFrame("ColorFrame", CharacterPane) local ColorFrame = makeCharFrame("ColorFrame", CharacterPane)
ContentProvider:Preload "http://banland.xyz/asset/?id=76049888" ContentProvider:Preload "https://banland.xyz/asset/?id=76049888"
local ColorZone = makeZone( local ColorZone = makeZone(
"ColorZone", "ColorZone",
"http://banland.xyz/asset/?id=76049888", "https://banland.xyz/asset/?id=76049888",
UDim2.new(0, 120, 0, 150), UDim2.new(0, 120, 0, 150),
UDim2.new(0.5, -60, 0.5, -100), UDim2.new(0.5, -60, 0.5, -100),
ColorFrame ColorFrame

View File

@ -116,6 +116,8 @@ for i = 1, maxNumLoadoutItems do
end end
local backpackWasOpened = false local backpackWasOpened = false
local dragBeginPos
--- End Locals --- End Locals
-- Begin Functions -- Begin Functions
@ -135,13 +137,13 @@ local function kill(prop, con, gear)
end end
end end
function registerNumberKeys() local function registerNumberKeys()
for i = 0, 9 do for i = 0, 9 do
GuiService:AddKey(tostring(i)) GuiService:AddKey(tostring(i))
end end
end end
function unregisterNumberKeys() local function unregisterNumberKeys()
pcall(function() pcall(function()
for i = 0, 9 do for i = 0, 9 do
GuiService:RemoveKey(tostring(i)) GuiService:RemoveKey(tostring(i))
@ -149,7 +151,7 @@ function unregisterNumberKeys()
end) end)
end end
function characterInWorkspace() local function characterInWorkspace()
if game.Players.LocalPlayer then if game.Players.LocalPlayer then
if game.Players.LocalPlayer.Character then if game.Players.LocalPlayer.Character then
if game.Players.LocalPlayer.Character ~= nil then if game.Players.LocalPlayer.Character ~= nil then
@ -163,7 +165,7 @@ function characterInWorkspace()
return false return false
end end
function removeGear(gear) local function removeGear(gear)
local emptySlot local emptySlot
for i = 1, #gearSlots do for i = 1, #gearSlots do
if gearSlots[i] == gear and gear.Parent ~= nil then if gearSlots[i] == gear and gear.Parent ~= nil then
@ -225,7 +227,7 @@ function removeGear(gear)
end end
end end
function insertGear(gear, addToSlot) local function insertGear(gear, addToSlot)
local pos local pos
if not addToSlot then if not addToSlot then
for i = 1, #gearSlots do for i = 1, #gearSlots do
@ -284,7 +286,7 @@ function insertGear(gear, addToSlot)
end) end)
end end
function reorganizeLoadout(gear, inserting, _, addToSlot) local function reorganizeLoadout(gear, inserting, _, addToSlot)
if inserting then -- add in gear if inserting then -- add in gear
insertGear(gear, addToSlot) insertGear(gear, addToSlot)
else else
@ -295,7 +297,7 @@ function reorganizeLoadout(gear, inserting, _, addToSlot)
end end
end end
function checkToolAncestry(child, parent) local function checkToolAncestry(child, parent)
if child:FindFirstChild "RobloxBuildTool" then if child:FindFirstChild "RobloxBuildTool" then
return return
end -- don't show roblox build tools end -- don't show roblox build tools
@ -325,7 +327,7 @@ function checkToolAncestry(child, parent)
end end
end end
function removeAllEquippedGear(physGear) local function removeAllEquippedGear(physGear)
local stuff = player.Character:GetChildren() local stuff = player.Character:GetChildren()
for i = 1, #stuff do for i = 1, #stuff do
if if
@ -342,159 +344,7 @@ function removeAllEquippedGear(physGear)
end end
end end
function hopperBinSwitcher(numKey, physGear) local function normaliseButton(button, speed)
if not physGear then
return
end
physGear:ToggleSelect()
if gearSlots[numKey] == "empty" then
return
end
if not physGear.Active then
gearSlots[numKey].Selected = false
normalizeButton(gearSlots[numKey])
else
gearSlots[numKey].Selected = true
enlargeButton(gearSlots[numKey])
end
end
function toolSwitcher(numKey)
if not gearSlots[numKey] then
return
end
local physGear = gearSlots[numKey].GearReference.Value
if physGear == nil then
return
end
removeAllEquippedGear(physGear) -- we don't remove this gear, as then we get a double switcheroo
local key = numKey
if numKey == 0 then
key = 10
end
for i = 1, #gearSlots do
if gearSlots[i] and gearSlots[i] ~= "empty" and i ~= key then
normalizeButton(gearSlots[i])
gearSlots[i].Selected = false
if
gearSlots[i].GearReference
and gearSlots[i].GearReference.Value
and gearSlots[i].GearReference.Value:IsA "HopperBin"
and gearSlots[i].GearReference.Value.Active
then
gearSlots[i].GearReference.Value:ToggleSelect()
end
end
end
if physGear:IsA "HopperBin" then
hopperBinSwitcher(numKey, physGear)
else
if physGear.Parent == player.Character then
physGear.Parent = player.Backpack
if gearSlots[numKey] ~= "empty" then
gearSlots[numKey].Selected = false
normalizeButton(gearSlots[numKey])
end
else
--player.Character.Humanoid:EquipTool(physGear)
physGear.Parent = player.Character
gearSlots[numKey].Selected = true
enlargeButton(gearSlots[numKey])
end
end
end
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
if numKey == nil then
return
end
if gearSlots[numKey] ~= "empty" then
toolSwitcher(numKey)
end
end
enlargeButton = function(button)
if button.Size.Y.Scale > 1 then
return
end
if not button.Parent then
return
end
if not button.Selected then
return
end
for i = 1, #gearSlots do
if gearSlots[i] == "empty" then
break
end
if gearSlots[i] ~= button then
normalizeButton(gearSlots[i])
end
end
if not enlargeOverride then
return
end
if button:FindFirstChild "Highlight" then
button.Highlight.Visible = true
end
if button:IsA "ImageButton" or button:IsA "TextButton" then
button.ZIndex = 5
local centerizeX = -(
buttonSizeEnlarge.X.Scale - button.Size.X.Scale
) / 2
local centerizeY = -(
buttonSizeEnlarge.Y.Scale - button.Size.Y.Scale
) / 2
button:TweenSizeAndPosition(
buttonSizeEnlarge,
UDim2.new(
button.Position.X.Scale + centerizeX,
button.Position.X.Offset,
button.Position.Y.Scale + centerizeY,
button.Position.Y.Offset
),
Enum.EasingDirection.Out,
Enum.EasingStyle.Quad,
guiTweenSpeed / 5,
enlargeOverride
)
end
end
normalizeAllButtons = function()
for i = 1, #gearSlots do
if gearSlots[i] == "empty" then
break
end
if gearSlots[i] ~= button then
normalizeButton(gearSlots[i], 0.1)
end
end
end
normalizeButton = function(button, speed)
if not button then if not button then
return return
end end
@ -537,13 +387,154 @@ normalizeButton = function(button, speed)
end end
end end
local function enlargeButton(button)
if button.Size.Y.Scale > 1 then
return
end
if not button.Parent then
return
end
if not button.Selected then
return
end
for i = 1, #gearSlots do
if gearSlots[i] == "empty" then
break
end
if gearSlots[i] ~= button then
normaliseButton(gearSlots[i])
end
end
if not enlargeOverride then
return
end
if button:FindFirstChild "Highlight" then
button.Highlight.Visible = true
end
if button:IsA "ImageButton" or button:IsA "TextButton" then
button.ZIndex = 5
local centerizeX = -(
buttonSizeEnlarge.X.Scale - button.Size.X.Scale
) / 2
local centerizeY = -(
buttonSizeEnlarge.Y.Scale - button.Size.Y.Scale
) / 2
button:TweenSizeAndPosition(
buttonSizeEnlarge,
UDim2.new(
button.Position.X.Scale + centerizeX,
button.Position.X.Offset,
button.Position.Y.Scale + centerizeY,
button.Position.Y.Offset
),
Enum.EasingDirection.Out,
Enum.EasingStyle.Quad,
guiTweenSpeed / 5,
enlargeOverride
)
end
end
local function hopperBinSwitcher(numKey, physGear)
if not physGear then
return
end
physGear:ToggleSelect()
if gearSlots[numKey] == "empty" then
return
end
if not physGear.Active then
gearSlots[numKey].Selected = false
normaliseButton(gearSlots[numKey])
else
gearSlots[numKey].Selected = true
enlargeButton(gearSlots[numKey])
end
end
local function toolSwitcher(numKey)
if not gearSlots[numKey] then
return
end
local physGear = gearSlots[numKey].GearReference.Value
if physGear == nil then
return
end
removeAllEquippedGear(physGear) -- we don't remove this gear, as then we get a double switcheroo
local key = numKey
if numKey == 0 then
key = 10
end
for i = 1, #gearSlots do
if gearSlots[i] and gearSlots[i] ~= "empty" and i ~= key then
normaliseButton(gearSlots[i])
gearSlots[i].Selected = false
if
gearSlots[i].GearReference
and gearSlots[i].GearReference.Value
and gearSlots[i].GearReference.Value:IsA "HopperBin"
and gearSlots[i].GearReference.Value.Active
then
gearSlots[i].GearReference.Value:ToggleSelect()
end
end
end
if physGear:IsA "HopperBin" then
hopperBinSwitcher(numKey, physGear)
else
if physGear.Parent == player.Character then
physGear.Parent = player.Backpack
if gearSlots[numKey] ~= "empty" then
gearSlots[numKey].Selected = false
normaliseButton(gearSlots[numKey])
end
else
--player.Character.Humanoid:EquipTool(physGear)
physGear.Parent = player.Character
gearSlots[numKey].Selected = true
enlargeButton(gearSlots[numKey])
end
end
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
if numKey == nil then
return
end
if gearSlots[numKey] ~= "empty" then
toolSwitcher(numKey)
end
end
local waitForDebounce = function() local waitForDebounce = function()
while debounce do while debounce do
wait() wait()
end end
end end
function pointInRectangle(point, rectTopLeft, rectSize) local function pointInRectangle(point, rectTopLeft, rectSize)
if point.x > rectTopLeft.x and point.x < (rectTopLeft.x + rectSize.x) then if point.x > rectTopLeft.x and point.x < (rectTopLeft.x + rectSize.x) then
if if
point.y > rectTopLeft.y point.y > rectTopLeft.y
@ -555,7 +546,7 @@ function pointInRectangle(point, rectTopLeft, rectSize)
return false return false
end end
function swapGear(gearClone, toFrame) local function swapGear(gearClone, toFrame)
local toFrameChildren = toFrame:GetChildren() local toFrameChildren = toFrame:GetChildren()
if #toFrameChildren == 1 then if #toFrameChildren == 1 then
if toFrameChildren[1]:FindFirstChild "SlotNumber" then if toFrameChildren[1]:FindFirstChild "SlotNumber" then
@ -625,7 +616,7 @@ function swapGear(gearClone, toFrame)
end end
end end
function resolveDrag(gearClone, x, y) local function resolveDrag(gearClone, x, y)
local mousePoint = Vector2.new(x, y) local mousePoint = Vector2.new(x, y)
local frame = gearClone.Parent local frame = gearClone.Parent
@ -666,7 +657,7 @@ function resolveDrag(gearClone, x, y)
return -1 return -1
end end
function unequipAllItems(dontEquipThis) local function unequipAllItems(dontEquipThis)
for i = 1, #gearSlots do for i = 1, #gearSlots do
if gearSlots[i] == "empty" then if gearSlots[i] == "empty" then
break break
@ -686,7 +677,7 @@ function unequipAllItems(dontEquipThis)
end end
end end
function showToolTip(button, tip) local function showToolTip(button, tip)
if if
button button
and button:FindFirstChild "ToolTipLabel" and button:FindFirstChild "ToolTipLabel"
@ -701,7 +692,7 @@ function showToolTip(button, tip)
end end
end end
function hideToolTip(button, _) local function hideToolTip(button, _)
if if
button button
and button:FindFirstChild "ToolTipLabel" and button:FindFirstChild "ToolTipLabel"
@ -711,7 +702,16 @@ function hideToolTip(button, _)
end end
end end
local addingPlayerChild = function( local function removeFromInventory(child)
for i = 1, #inventory do
if inventory[i] == child then
table.remove(inventory, i)
inventory[i] = nil
end
end
end
local function addingPlayerChild(
child, child,
equipped, equipped,
addToSlot, addToSlot,
@ -845,7 +845,6 @@ local addingPlayerChild = function(
) )
end end
local dragBeginPos
local clickCon, buttonDeleteCon, mouseEnterCon, mouseLeaveCon, dragStop, dragBegin local clickCon, buttonDeleteCon, mouseEnterCon, mouseLeaveCon, dragStop, dragBegin
clickCon = gearClone.MouseButton1Click:connect(function() clickCon = gearClone.MouseButton1Click:connect(function()
if characterInWorkspace() then if characterInWorkspace() then
@ -924,8 +923,8 @@ local addingPlayerChild = function(
local childCon local childCon
local childChangeCon local childChangeCon
childCon = child.AncestryChanged:connect(function(newChild, parent) childCon = child.AncestryChanged:connect(function(newChild, newParent)
if not checkToolAncestry(newChild, parent) then if not checkToolAncestry(newChild, newParent) then
if childCon then if childCon then
childCon:disconnect() childCon:disconnect()
end end
@ -933,8 +932,8 @@ local addingPlayerChild = function(
childChangeCon:disconnect() childChangeCon:disconnect()
end end
removeFromInventory(child) removeFromInventory(child)
elseif parent == game.Players.LocalPlayer.Backpack then elseif newParent == game.Players.LocalPlayer.Backpack then
normalizeButton(gearClone) normaliseButton(gearClone)
end end
end) end)
@ -947,7 +946,7 @@ local addingPlayerChild = function(
if child and child:IsA "HopperBin" then if child and child:IsA "HopperBin" then
if not child.Active then if not child.Active then
gearClone.Selected = false gearClone.Selected = false
normalizeButton(gearClone) normaliseButton(gearClone)
end end
end end
elseif prop == "TextureId" then elseif prop == "TextureId" then
@ -973,7 +972,7 @@ local addingPlayerChild = function(
end) end)
end end
function addToInventory(child) local function addToInventory(child)
if not child:IsA "Tool" or not child:IsA "HopperBin" then if not child:IsA "Tool" or not child:IsA "HopperBin" then
return return
end end
@ -996,17 +995,8 @@ function addToInventory(child)
end end
end end
function removeFromInventory(child)
for i = 1, #inventory do
if inventory[i] == child then
table.remove(inventory, i)
inventory[i] = nil
end
end
end
local spreadOutGear = function() local spreadOutGear = function()
loadoutChildren = currentLoadout:GetChildren() local loadoutChildren = currentLoadout:GetChildren()
for i = 1, #loadoutChildren do for i = 1, #loadoutChildren do
if loadoutChildren[i]:IsA "Frame" then if loadoutChildren[i]:IsA "Frame" then
@ -1037,7 +1027,7 @@ local spreadOutGear = function()
end end
local centerGear = function() local centerGear = function()
loadoutChildren = currentLoadout:GetChildren() local loadoutChildren = currentLoadout:GetChildren()
local gearButtons = {} local gearButtons = {}
local lastSlotAdd local lastSlotAdd
@ -1080,20 +1070,20 @@ local centerGear = function()
end end
end end
function editLoadout() local function editLoadout()
backpackWasOpened = true backpackWasOpened = true
if inGearTab then if inGearTab then
spreadOutGear() spreadOutGear()
end end
end end
function readonlyLoadout() local function readonlyLoadout()
if not inGearTab then if not inGearTab then
centerGear() centerGear()
end end
end end
function setupBackpackListener() local function setupBackpackListener()
if backpackChildCon then if backpackChildCon then
backpackChildCon:disconnect() backpackChildCon:disconnect()
backpackChildCon = nil backpackChildCon = nil
@ -1111,20 +1101,20 @@ function setupBackpackListener()
end) end)
end end
function playerCharacterChildAdded(child) local function playerCharacterChildAdded(child)
addingPlayerChild(child, true) addingPlayerChild(child, true)
addToInventory(child) addToInventory(child)
end end
function activateLoadout() local function activateLoadout()
currentLoadout.Visible = true currentLoadout.Visible = true
end end
function deactivateLoadout() local function deactivateLoadout()
currentLoadout.Visible = false currentLoadout.Visible = false
end end
function tabHandler(inFocus) local function tabHandler(inFocus)
inGearTab = inFocus inGearTab = inFocus
if inFocus then if inFocus then
editLoadout() editLoadout()
@ -1133,7 +1123,7 @@ function tabHandler(inFocus)
end end
end end
function coreGuiChanged(coreGuiType, enabled) local function coreGuiChanged(coreGuiType, enabled)
if if
coreGuiType == Enum.CoreGuiType.Backpack coreGuiType == Enum.CoreGuiType.Backpack
or coreGuiType == Enum.CoreGuiType.All or coreGuiType == Enum.CoreGuiType.All

View File

@ -1,2 +0,0 @@
-- Script Context.CoreScripts/Sections
print "[Mercury]: Loaded corescript 59002209"

View File

@ -212,11 +212,11 @@ end
local JsonReader = { local JsonReader = {
escapes = { escapes = {
["t"] = "\t", t = "\t",
["n"] = "\n", n = "\n",
["f"] = "\f", f = "\f",
["r"] = "\r", r = "\r",
["b"] = "\b", b = "\b",
}, },
} }
@ -338,7 +338,7 @@ function JsonReader:ReadBlockComment()
done = true done = true
end end
if not done and ch == "/" and self:Peek() == "*" then if not done and ch == "/" and self:Peek() == "*" then
error(string.format(`Invalid comment: {self:All()}, '/*' illegal.`)) error(`Invalid comment: {self:All()}, '/*' illegal.`)
end end
end end
self:Next() self:Next()
@ -488,7 +488,7 @@ end
t.SelectTerrainRegion = function( t.SelectTerrainRegion = function(
regionToSelect, regionToSelect,
color, colour,
selectEmptyCells, selectEmptyCells,
selectionParent selectionParent
) )
@ -498,7 +498,7 @@ t.SelectTerrainRegion = function(
end end
assert(regionToSelect) assert(regionToSelect)
assert(color) assert(colour)
if type(regionToSelect) ~= "Region3" then if type(regionToSelect) ~= "Region3" then
error( error(
@ -507,10 +507,10 @@ t.SelectTerrainRegion = function(
)}` )}`
) )
end end
if type(color) ~= "BrickColor" then if type(colour) ~= "BrickColor" then
error( error(
`color (second arg), should be of type BrickColor, but is type {type( `color (second arg), should be of type BrickColor, but is type {type(
color colour
)}` )}`
) )
end end
@ -548,26 +548,8 @@ t.SelectTerrainRegion = function(
local selectionBox = Instance.new "SelectionBox" local selectionBox = Instance.new "SelectionBox"
-- srs translation from region3 to region3int16
-- local function Region3ToRegion3int16(region3)
-- local theLowVec = region3.CFrame.p
-- - (region3.Size / 2)
-- + Vector3.new(2, 2, 2)
-- local lowCell = WorldToCellPreferSolid(terrain, theLowVec)
-- local theHighVec = region3.CFrame.p
-- + (region3.Size / 2)
-- - Vector3.new(2, 2, 2)
-- local highCell = WorldToCellPreferSolid(terrain, theHighVec)
-- local highIntVec = Vector3int16.new(highCell.x, highCell.y, highCell.z)
-- local lowIntVec = Vector3int16.new(lowCell.x, lowCell.y, lowCell.z)
-- return Region3int16.new(lowIntVec, highIntVec)
-- end
-- helper function that creates the basis for a selection box -- helper function that creates the basis for a selection box
local function createAdornment(theColor) local function createAdornment(theColour)
local selectionPartClone local selectionPartClone
local selectionBoxClone local selectionBoxClone
@ -592,8 +574,8 @@ t.SelectTerrainRegion = function(
selectionBoxClone.Parent = selectionContainer selectionBoxClone.Parent = selectionContainer
end end
if theColor then if theColour then
selectionBoxClone.Color = theColor selectionBoxClone.Color = theColour
end end
return selectionPartClone, selectionBoxClone return selectionPartClone, selectionBoxClone
@ -623,7 +605,7 @@ t.SelectTerrainRegion = function(
end end
-- finds full cells in region and adorns each cell with a box, with the argument color -- finds full cells in region and adorns each cell with a box, with the argument color
local function adornFullCellsInRegion(region, color) local function adornFullCellsInRegion(region, newColour)
local regionBegin = region.CFrame.p local regionBegin = region.CFrame.p
- (region.Size / 2) - (region.Size / 2)
+ Vector3.new(2, 2, 2) + Vector3.new(2, 2, 2)
@ -648,8 +630,8 @@ t.SelectTerrainRegion = function(
for cellPosAdorn, adornTable in pairs(adornments) do for cellPosAdorn, adornTable in pairs(adornments) do
if cellPosAdorn == cellPos then if cellPosAdorn == cellPos then
adornTable.KeepAlive = currentKeepAliveTag adornTable.KeepAlive = currentKeepAliveTag
if color then if newColour then
adornTable.SelectionBox.Color = color adornTable.SelectionBox.Color = newColour
end end
updated = true updated = true
break break
@ -657,8 +639,8 @@ t.SelectTerrainRegion = function(
end end
if not updated then if not updated then
local selectionPart, selectionBox = selectionPart, selectionBox =
createAdornment(color) createAdornment(newColour)
selectionPart.Size = Vector3.new(4, 4, 4) selectionPart.Size = Vector3.new(4, 4, 4)
selectionPart.CFrame = CFrame.new(cframePos) selectionPart.CFrame = CFrame.new(cframePos)
local adornTable = { local adornTable = {
@ -679,7 +661,7 @@ t.SelectTerrainRegion = function(
lastRegion = regionToSelect lastRegion = regionToSelect
if selectEmptyCells then -- use one big selection to represent the area selected if selectEmptyCells then -- use one big selection to represent the area selected
local selectionPart, selectionBox = createAdornment(color) selectionPart, selectionBox = createAdornment(colour)
selectionPart.Size = regionToSelect.Size selectionPart.Size = regionToSelect.Size
selectionPart.CFrame = regionToSelect.CFrame selectionPart.CFrame = regionToSelect.CFrame
@ -687,22 +669,22 @@ t.SelectTerrainRegion = function(
adornments.SelectionPart = selectionPart adornments.SelectionPart = selectionPart
adornments.SelectionBox = selectionBox adornments.SelectionBox = selectionBox
updateSelection = function(newRegion, color) updateSelection = function(newRegion, newColour)
if newRegion and newRegion ~= lastRegion then if newRegion and newRegion ~= lastRegion then
lastRegion = newRegion lastRegion = newRegion
selectionPart.Size = newRegion.Size selectionPart.Size = newRegion.Size
selectionPart.CFrame = newRegion.CFrame selectionPart.CFrame = newRegion.CFrame
end end
if color then if newColour then
selectionBox.Color = color selectionBox.Color = newColour
end end
end end
else -- use individual cell adorns to represent the area selected else -- use individual cell adorns to represent the area selected
adornFullCellsInRegion(regionToSelect, color) adornFullCellsInRegion(regionToSelect, colour)
updateSelection = function(newRegion, color) updateSelection = function(newRegion, newColour)
if newRegion and newRegion ~= lastRegion then if newRegion and newRegion ~= lastRegion then
lastRegion = newRegion lastRegion = newRegion
adornFullCellsInRegion(newRegion, color) adornFullCellsInRegion(newRegion, newColour)
end end
end end
end end
@ -776,7 +758,7 @@ function t.CreateSignal()
local cn = mBindableEvent.Event:connect(func) local cn = mBindableEvent.Event:connect(func)
mAllCns[cn] = true mAllCns[cn] = true
local pubCn = {} local pubCn = {}
function pubCn:disconnect() function pubCn.disconnect(_)
cn:disconnect() cn:disconnect()
mAllCns[cn] = nil mAllCns[cn] = nil
end end

View File

@ -5,7 +5,6 @@ print "[Mercury]: Loaded corescript 60595695"
-- This script is used to register RbxLua libraries on game servers, so game scripts have -- This script is used to register RbxLua libraries on game servers, so game scripts have
-- access to all of the libraries (otherwise only local scripts do) -- access to all of the libraries (otherwise only local scripts do)
-- local deepakTestingPlace = 3569749
local sc = game:GetService "ScriptContext" local sc = game:GetService "ScriptContext"
local tries = 0 local tries = 0
@ -20,9 +19,6 @@ if sc then
sc:RegisterLibrary("Libraries/RbxRed", "10000002") sc:RegisterLibrary("Libraries/RbxRed", "10000002")
sc:RegisterLibrary("Libraries/RbxGui", "45284430") sc:RegisterLibrary("Libraries/RbxGui", "45284430")
sc:RegisterLibrary("Libraries/RbxGear", "45374389") sc:RegisterLibrary("Libraries/RbxGear", "45374389")
-- if game.PlaceId == deepakTestingPlace then
-- sc:RegisterLibrary("Libraries/RbxStatus", "52177566")
-- end
sc:RegisterLibrary("Libraries/RbxUtility", "60595411") sc:RegisterLibrary("Libraries/RbxUtility", "60595411")
sc:RegisterLibrary("Libraries/RbxStamper", "73157242") sc:RegisterLibrary("Libraries/RbxStamper", "73157242")
sc:LibraryRegistrationComplete() sc:LibraryRegistrationComplete()

View File

@ -3,13 +3,7 @@ print "[Mercury]: Loaded corescript 73157242"
local ChangeHistoryService = game:GetService "ChangeHistoryService" local ChangeHistoryService = game:GetService "ChangeHistoryService"
local t = {} local RbxStamper = {}
-- function waitForChild(instance, name)
-- while not instance:FindFirstChild(name) do
-- instance.ChildAdded:wait()
-- end
-- end
-- Do a line/plane intersection. The line starts at the camera. The plane is at y == 0, normal(0, 1, 0) -- Do a line/plane intersection. The line starts at the camera. The plane is at y == 0, normal(0, 1, 0)
-- --
@ -743,7 +737,7 @@ local function restoreTheWelds(manualWeldTable, manualWeldParentTable)
end end
end end
t.CanEditRegion = function(partOrModel, EditRegion) -- todo: use model and stamper metadata RbxStamper.CanEditRegion = function(partOrModel, EditRegion) -- todo: use model and stamper metadata
if not EditRegion then if not EditRegion then
return true, false return true, false
end end
@ -769,7 +763,7 @@ t.CanEditRegion = function(partOrModel, EditRegion) -- todo: use model and stamp
return true, false return true, false
end end
t.GetStampModel = function(assetId, terrainShape, useAssetVersionId) RbxStamper.GetStampModel = function(assetId, terrainShape, useAssetVersionId)
if assetId == 0 then if assetId == 0 then
return nil, "No Asset" return nil, "No Asset"
end end
@ -859,7 +853,7 @@ t.GetStampModel = function(assetId, terrainShape, useAssetVersionId)
local inverseCornerWedgeMesh = Instance.new "SpecialMesh" local inverseCornerWedgeMesh = Instance.new "SpecialMesh"
inverseCornerWedgeMesh.MeshType = "FileMesh" inverseCornerWedgeMesh.MeshType = "FileMesh"
inverseCornerWedgeMesh.MeshId = inverseCornerWedgeMesh.MeshId =
"http://banland.xyz/asset?id=66832495" "https://banland.xyz/asset?id=66832495"
inverseCornerWedgeMesh.Scale = Vector3.new(2, 2, 2) inverseCornerWedgeMesh.Scale = Vector3.new(2, 2, 2)
inverseCornerWedgeMesh.Parent = newTerrainPiece inverseCornerWedgeMesh.Parent = newTerrainPiece
end end
@ -986,7 +980,7 @@ t.GetStampModel = function(assetId, terrainShape, useAssetVersionId)
return root return root
end end
t.SetupStamperDragger = function( RbxStamper.SetupStamperDragger = function(
modelToStamp, modelToStamp,
Mouse, Mouse,
StampInModel, StampInModel,
@ -1161,7 +1155,7 @@ t.SetupStamperDragger = function(
-- take out any component of line2 along line1, so you get perpendicular to line1 component -- take out any component of line2 along line1, so you get perpendicular to line1 component
line2 -= line.unit * line.unit:Dot(line2) line2 -= line.unit * line.unit:Dot(line2)
tempCFrame = CFrame.new( local tempCFrame = CFrame.new(
HighScalabilityLine.Start, HighScalabilityLine.Start,
HighScalabilityLine.Start + line HighScalabilityLine.Start + line
) )
@ -1193,7 +1187,7 @@ t.SetupStamperDragger = function(
end end
-- resize the "line" graphic to be the correct size and orientation -- resize the "line" graphic to be the correct size and orientation
tempCFrame = CFrame.new( local tempCFrame = CFrame.new(
HighScalabilityLine.Start, HighScalabilityLine.Start,
HighScalabilityLine.Start + line HighScalabilityLine.Start + line
) )
@ -1244,21 +1238,21 @@ t.SetupStamperDragger = function(
end end
end end
local function DoStamperMouseMove(Mouse) local function DoStamperMouseMove(mouse)
if not Mouse then if not mouse then
error "Error: RbxStamper.DoStamperMouseMove: Mouse is nil" error "Error: RbxStamper.DoStamperMouseMove: Mouse is nil"
return return
end end
if not Mouse:IsA "Mouse" then if not mouse:IsA "Mouse" then
error( error(
`Error: RbxStamper.DoStamperMouseMove: Mouse is of type {Mouse.className} should be of type Mouse` `Error: RbxStamper.DoStamperMouseMove: Mouse is of type {mouse.className} should be of type Mouse`
) )
return return
end end
-- There wasn't a target (no part or terrain), so check for plane intersection. -- There wasn't a target (no part or terrain), so check for plane intersection.
if not Mouse.Target then if not mouse.Target then
local cellPos = GetTerrainForMouse(Mouse) local cellPos = GetTerrainForMouse(mouse)
if nil == cellPos then if nil == cellPos then
return return
end end
@ -1271,7 +1265,7 @@ t.SetupStamperDragger = function(
-- don't move with dragger - will move in one step on mouse down -- don't move with dragger - will move in one step on mouse down
-- draw ghost at acceptable positions -- draw ghost at acceptable positions
configFound, targetCFrame, targetSurface = configFound, targetCFrame, targetSurface =
findConfigAtMouseTarget(Mouse, stampData) findConfigAtMouseTarget(mouse, stampData)
if not configFound then if not configFound then
error "RbxStamper.DoStamperMouseMove No configFound, returning" error "RbxStamper.DoStamperMouseMove No configFound, returning"
return return
@ -1405,10 +1399,10 @@ t.SetupStamperDragger = function(
end end
-- auto break joints code -- auto break joints code
if Mouse and Mouse.Target and Mouse.Target.Parent then if mouse and mouse.Target and mouse.Target.Parent then
local modelInfo = Mouse.Target:FindFirstChild "RobloxModel" local modelInfo = mouse.Target:FindFirstChild "RobloxModel"
if not modelInfo then if not modelInfo then
modelInfo = Mouse.Target.Parent:FindFirstChild "RobloxModel" modelInfo = mouse.Target.Parent:FindFirstChild "RobloxModel"
end end
local myModelInfo = local myModelInfo =
@ -1433,7 +1427,7 @@ t.SetupStamperDragger = function(
hitFace = modelTargetSurface( hitFace = modelTargetSurface(
modelInfo.Parent, modelInfo.Parent,
game.Workspace.CurrentCamera.CoordinateFrame.p, game.Workspace.CurrentCamera.CoordinateFrame.p,
Mouse.Hit.p mouse.Hit.p
) )
end end
@ -1450,7 +1444,7 @@ t.SetupStamperDragger = function(
-- now we have to cast the ray back in the other direction to find the surface we're stamping FROM -- now we have to cast the ray back in the other direction to find the surface we're stamping FROM
hitFace = modelTargetSurface( hitFace = modelTargetSurface(
stampData.CurrentParts, stampData.CurrentParts,
Mouse.Hit.p, mouse.Hit.p,
game.Workspace.CurrentCamera.CoordinateFrame.p game.Workspace.CurrentCamera.CoordinateFrame.p
) )
@ -1476,9 +1470,9 @@ t.SetupStamperDragger = function(
if if
not pcall(function() not pcall(function()
if if
Mouse mouse
and Mouse.Target and mouse.Target
and Mouse.Target.Parent:FindFirstChild "RobloxModel" and mouse.Target.Parent:FindFirstChild "RobloxModel"
== nil == nil
then then
return return
@ -1488,17 +1482,17 @@ t.SetupStamperDragger = function(
end) end)
then then
game.JointsService:ClearJoinAfterMoveJoints() game.JointsService:ClearJoinAfterMoveJoints()
Mouse = nil mouse = nil
error "Error: RbxStamper.DoStamperMouseMove Mouse is nil on second check" error "Error: RbxStamper.DoStamperMouseMove Mouse is nil on second check"
return return
end end
if if
Mouse mouse
and Mouse.Target and mouse.Target
and Mouse.Target.Parent:FindFirstChild "RobloxModel" == nil and mouse.Target.Parent:FindFirstChild "RobloxModel" == nil
then then
game.JointsService:SetJoinAfterMoveTarget(Mouse.Target) game.JointsService:SetJoinAfterMoveTarget(mouse.Target)
else else
game.JointsService:SetJoinAfterMoveTarget(nil) game.JointsService:SetJoinAfterMoveTarget(nil)
end end
@ -1514,7 +1508,7 @@ t.SetupStamperDragger = function(
end end
end end
local function setupKeyListener(key, Mouse) local function setupKeyListener(key, mouse)
if control and control.Paused then if control and control.Paused then
return return
end -- don't do this if we have no stamp end -- don't do this if we have no stamp
@ -1552,12 +1546,12 @@ t.SetupStamperDragger = function(
-- After rotating, update the position -- After rotating, update the position
configFound, targetCFrame = configFound, targetCFrame =
findConfigAtMouseTarget(Mouse, stampData) findConfigAtMouseTarget(mouse, stampData)
if configFound then if configFound then
positionPartsAtCFrame3(targetCFrame, stampData.CurrentParts) positionPartsAtCFrame3(targetCFrame, stampData.CurrentParts)
-- update everything else in MouseMove -- update everything else in MouseMove
DoStamperMouseMove(Mouse) DoStamperMouseMove(mouse)
end end
elseif key == "c" then -- try to expand our high scalability dragger dimension elseif key == "c" then -- try to expand our high scalability dragger dimension
if if
@ -1593,12 +1587,12 @@ t.SetupStamperDragger = function(
local function flashRedBox() local function flashRedBox()
local gui = game.CoreGui local gui = game.CoreGui
if game:FindFirstChild "Players" then if
if game.Players.LocalPlayer then game:FindFirstChild "Players"
if game.Players.LocalPlayer:FindFirstChild "PlayerGui" then and game.Players.LocalPlayer
gui = game.Players.LocalPlayer.PlayerGui and game.Players.LocalPlayer:FindFirstChild "PlayerGui"
end then
end gui = game.Players.LocalPlayer.PlayerGui
end end
if not stampData.ErrorBox then if not stampData.ErrorBox then
return return
@ -1624,21 +1618,19 @@ t.SetupStamperDragger = function(
end end
if stampData.ErrorBox then if stampData.ErrorBox then
stampData.ErrorBox.Adornee = nil stampData.ErrorBox.Adornee = nil
stampData.ErrorBox.Parent = Tool stampData.ErrorBox.Parent = Tool -- ?
end end
end) end)
end end
local function DoStamperMouseDown(Mouse) local function DoStamperMouseDown(mouse)
if not Mouse then if not mouse then
error "Error: RbxStamper.DoStamperMouseDown: Mouse is nil" error "Error: RbxStamper.DoStamperMouseDown: Mouse is nil"
return return
end end
if not Mouse:IsA "Mouse" then if not mouse:IsA "Mouse" then
error( error(
"Error: RbxStamper.DoStamperMouseDown: Mouse is of type", `Error: RbxStamper.DoStamperMouseDown: Mouse is of type {mouse.className}, should be of type Mouse`
Mouse.className,
"should be of type Mouse"
) )
return return
end end
@ -1647,7 +1639,7 @@ t.SetupStamperDragger = function(
end end
if isMegaClusterPart() then if isMegaClusterPart() then
if Mouse and HighScalabilityLine then if mouse and HighScalabilityLine then
local megaCube = stampData.CurrentParts:FindFirstChild( local megaCube = stampData.CurrentParts:FindFirstChild(
"MegaClusterCube", "MegaClusterCube",
true true
@ -1938,7 +1930,7 @@ t.SetupStamperDragger = function(
if checkHighScalabilityStamp then -- check to see if cell is in region, if not we'll skip set if checkHighScalabilityStamp then -- check to see if cell is in region, if not we'll skip set
if allowedStampRegion then if allowedStampRegion then
local cellPos = cellCenterToWorld( cellPos = cellCenterToWorld(
game.Workspace.Terrain, game.Workspace.Terrain,
cellPos.X, cellPos.X,
cellPos.Y, cellPos.Y,
@ -2231,16 +2223,14 @@ t.SetupStamperDragger = function(
return cellSet return cellSet
end end
local function DoStamperMouseUp(Mouse) local function DoStamperMouseUp(mouse)
if not Mouse then if not mouse then
error "Error: RbxStamper.DoStamperMouseUp: Mouse is nil" error "Error: RbxStamper.DoStamperMouseUp: Mouse is nil"
return false return false
end end
if not Mouse:IsA "Mouse" then if not mouse:IsA "Mouse" then
error( error(
"Error: RbxStamper.DoStamperMouseUp: Mouse is of type", `Error: RbxStamper.DoStamperMouseUp: Mouse is of type {mouse.className}, should be of type Mouse`
Mouse.className,
"should be of type Mouse"
) )
return false return false
end end
@ -2269,8 +2259,10 @@ t.SetupStamperDragger = function(
canStamp = true canStamp = true
checkHighScalabilityStamp = true checkHighScalabilityStamp = true
else else
canStamp, checkHighScalabilityStamp = canStamp, checkHighScalabilityStamp = RbxStamper.CanEditRegion(
t.CanEditRegion(stampData.CurrentParts, allowedStampRegion) stampData.CurrentParts,
allowedStampRegion
)
end end
if not canStamp then if not canStamp then
@ -2288,8 +2280,9 @@ t.SetupStamperDragger = function(
end end
-- recheck if we can stamp, as we just moved part -- recheck if we can stamp, as we just moved part
local canStamp
canStamp, checkHighScalabilityStamp = canStamp, checkHighScalabilityStamp =
t.CanEditRegion(stampData.CurrentParts, allowedStampRegion) RbxStamper.CanEditRegion(stampData.CurrentParts, allowedStampRegion)
if not canStamp then if not canStamp then
if stampFailedFunc then if stampFailedFunc then
stampFailedFunc() stampFailedFunc()
@ -2305,7 +2298,7 @@ t.SetupStamperDragger = function(
-- HotThoth's note: Now that above CurrentParts positioning has been commented out, to be truly correct, we would need to use the -- HotThoth's note: Now that above CurrentParts positioning has been commented out, to be truly correct, we would need to use the
-- value of configFound from the previous onStamperMouseMove call which moved the CurrentParts -- value of configFound from the previous onStamperMouseMove call which moved the CurrentParts
-- Shouldn't this be true when lastTargetCFrame has been set and false otherwise? -- Shouldn't this be true when lastTargetCFrame has been set and false otherwise?
configFound, targetCFrame = findConfigAtMouseTarget(Mouse, stampData) configFound, targetCFrame = findConfigAtMouseTarget(mouse, stampData)
if configFound and not HighScalabilityLine.Adorn.Parent then if configFound and not HighScalabilityLine.Adorn.Parent then
if if
@ -2612,9 +2605,9 @@ t.SetupStamperDragger = function(
end end
-- make sure all the joints are activated before restoring anchor states -- make sure all the joints are activated before restoring anchor states
if not createJoints then -- if not createJoints then
game.JointsService:CreateJoinAfterMoveJoints() game.JointsService:CreateJoinAfterMoveJoints()
end -- end
-- Restore the original properties for all parts being stamped -- Restore the original properties for all parts being stamped
for part, transparency in pairs(stampData.TransparencyTable) do for part, transparency in pairs(stampData.TransparencyTable) do
@ -2663,9 +2656,9 @@ t.SetupStamperDragger = function(
end end
-- and make sure we don't delete it, now that it's not a ghost part -- and make sure we don't delete it, now that it's not a ghost part
if ghostRemovalScript then -- if ghostRemovalScript then
ghostRemovalScript.Parent = nil -- ghostRemovalScript.Parent = nil
end -- end
--Re-enable the scripts --Re-enable the scripts
for _, script in pairs(stampData.DisabledScripts) do for _, script in pairs(stampData.DisabledScripts) do
@ -2979,20 +2972,20 @@ t.SetupStamperDragger = function(
return control return control
end end
t.Help = function(funcNameOrFunc) RbxStamper.Help = function(funcNameOrFunc)
--input argument can be a string or a function. Should return a description (of arguments and expected side effects) --input argument can be a string or a function. Should return a description (of arguments and expected side effects)
if if
funcNameOrFunc == "GetStampModel" funcNameOrFunc == "GetStampModel"
or funcNameOrFunc == t.GetStampModel or funcNameOrFunc == RbxStamper.GetStampModel
then then
return "Function GetStampModel. Arguments: assetId, useAssetVersionId. assetId is the asset to load in, define useAssetVersionId as true if assetId is a version id instead of a relative assetId. Side effect: returns a model of the assetId, or a string with error message if something fails" return "Function GetStampModel. Arguments: assetId, useAssetVersionId. assetId is the asset to load in, define useAssetVersionId as true if assetId is a version id instead of a relative assetId. Side effect: returns a model of the assetId, or a string with error message if something fails"
end end
if if
funcNameOrFunc == "SetupStamperDragger" funcNameOrFunc == "SetupStamperDragger"
or funcNameOrFunc == t.SetupStamperDragger or funcNameOrFunc == RbxStamper.SetupStamperDragger
then then
return "Function SetupStamperDragger. Side Effect: Creates 4x4 stamping mechanism for building out parts quickly. Arguments: ModelToStamp, Mouse, LegalStampCheckFunction. ModelToStamp should be a Model or Part, preferrably loaded from RbxStamper.GetStampModel and should have extents that are multiples of 4. Mouse should be a mouse object (obtained from things such as Tool.OnEquipped), used to drag parts around 'stamp' them out. LegalStampCheckFunction is optional, used as a callback with a table argument (table is full of instances about to be stamped). Function should return either true or false, false stopping the stamp action." return "Function SetupStamperDragger. Side Effect: Creates 4x4 stamping mechanism for building out parts quickly. Arguments: ModelToStamp, Mouse, LegalStampCheckFunction. ModelToStamp should be a Model or Part, preferrably loaded from RbxStamper.GetStampModel and should have extents that are multiples of 4. Mouse should be a mouse object (obtained from things such as Tool.OnEquipped), used to drag parts around 'stamp' them out. LegalStampCheckFunction is optional, used as a callback with a table argument (table is full of instances about to be stamped). Function should return either true or false, false stopping the stamp action."
end end
end end
return t return RbxStamper

View File

@ -158,7 +158,7 @@ end
function robloxLock(instance) function robloxLock(instance)
instance.RobloxLocked = true instance.RobloxLocked = true
children = instance:GetChildren() local children = instance:GetChildren()
if children then if children then
for _, child in ipairs(children) do for _, child in ipairs(children) do
robloxLock(child) robloxLock(child)
@ -292,6 +292,29 @@ function findEmptySlot()
return smallestNum return smallestNum
end end
function unequipGear(physGear)
physGear.Parent = playerBackpack
updateGridActive()
end
function highlight(button)
button.TextColor3 = Color3.new(0, 0, 0)
button.BackgroundColor3 = Color3.new(0.8, 0.8, 0.8)
end
function clearHighlight(button)
button.TextColor3 = Color3.new(1, 1, 1)
button.BackgroundColor3 = Color3.new(0, 0, 0)
end
function swapGearSlot(slot, newGearButton)
if not swapSlot.Value then -- signal loadout to swap a gear out
swapSlot.Slot.Value = slot
swapSlot.GearButton.Value = newGearButton
swapSlot.Value = true
updateGridActive()
end
end
function checkForSwap(button, x, y) function checkForSwap(button, x, y)
local loadoutChildren = currentLoadout:GetChildren() local loadoutChildren = currentLoadout:GetChildren()
for i = 1, #loadoutChildren do for i = 1, #loadoutChildren do
@ -320,6 +343,163 @@ function checkForSwap(button, x, y)
return false return false
end end
local UnequipGearMenuClick = function(element, menu)
if type(element.Action) ~= "number" then
return
end
local num = element.Action
if num == 1 then -- remove from loadout
unequipGear(menu.Parent.GearReference.Value)
local inventoryButton = menu.Parent
local gearToUnequip = inventoryButton.GearReference.Value
local loadoutChildren = currentLoadout:GetChildren()
local slot = -1
for i = 1, #loadoutChildren do
if loadoutChildren[i]:IsA "Frame" then
local button = loadoutChildren[i]:GetChildren()
if
button[1]
and button[1].GearReference.Value == gearToUnequip
then
slot = button[1].SlotNumber.Text
break
end
end
end
swapGearSlot(slot, nil)
end
end
function getGearContextMenu()
local gearContextMenu = Instance.new "Frame"
gearContextMenu.Active = true
gearContextMenu.Name = "UnequipContextMenu"
gearContextMenu.Size = UDim2.new(0, 115, 0, 70)
gearContextMenu.Position = UDim2.new(0, -16, 0, -16)
gearContextMenu.BackgroundTransparency = 1
gearContextMenu.Visible = false
local gearContextMenuButton = Instance.new "TextButton"
gearContextMenuButton.Name = "UnequipContextMenuButton"
gearContextMenuButton.Text = ""
gearContextMenuButton.Style = Enum.ButtonStyle.RobloxButtonDefault
gearContextMenuButton.ZIndex = 8
gearContextMenuButton.Size = UDim2.new(1, 0, 1, -20)
gearContextMenuButton.Visible = true
gearContextMenuButton.Parent = gearContextMenu
local elementHeight = 12
local contextMenuElements = {}
local contextMenuElementsName = { "Remove Hotkey" }
for i = 1, #contextMenuElementsName do
local element = {}
element.Type = "Button"
element.Text = contextMenuElementsName[i]
element.Action = i
element.DoIt = UnequipGearMenuClick
table.insert(contextMenuElements, element)
end
for i, contextElement in ipairs(contextMenuElements) do
local element = contextElement
if element.Type == "Button" then
local button = Instance.new "TextButton"
button.Name = `UnequipContextButton{i}`
button.BackgroundColor3 = Color3.new(0, 0, 0)
button.BorderSizePixel = 0
button.TextXAlignment = Enum.TextXAlignment.Left
button.Text = ` {contextElement.Text}`
button.Font = Enum.Font.Arial
button.FontSize = Enum.FontSize.Size14
button.Size = UDim2.new(1, 8, 0, elementHeight)
button.Position = UDim2.new(0, 0, 0, elementHeight * i)
button.TextColor3 = Color3.new(1, 1, 1)
button.ZIndex = 9
button.Parent = gearContextMenuButton
if not IsTouchDevice() then
button.MouseButton1Click:connect(function()
if button.Active and not gearContextMenu.Parent.Active then
pcall(function()
element.DoIt(element, gearContextMenu)
end)
browsingMenu = false
gearContextMenu.Visible = false
clearHighlight(button)
clearPreview()
end
end)
button.MouseEnter:connect(function()
if button.Active and gearContextMenu.Parent.Active then
highlight(button)
end
end)
button.MouseLeave:connect(function()
if button.Active and gearContextMenu.Parent.Active then
clearHighlight(button)
end
end)
end
contextElement.Button = button
contextElement.Element = button
elseif element.Type == "Label" then
local frame = Instance.new "Frame"
frame.Name = `ContextLabel{i}`
frame.BackgroundTransparency = 1
frame.Size = UDim2.new(1, 8, 0, elementHeight)
local label = Instance.new "TextLabel"
label.Name = "Text1"
label.BackgroundTransparency = 1
label.BackgroundColor3 = Color3.new(1, 1, 1)
label.BorderSizePixel = 0
label.TextXAlignment = Enum.TextXAlignment.Left
label.Font = Enum.Font.ArialBold
label.FontSize = Enum.FontSize.Size14
label.Position = UDim2.new(0, 0, 0, 0)
label.Size = UDim2.new(0.5, 0, 1, 0)
label.TextColor3 = Color3.new(1, 1, 1)
label.ZIndex = 9
label.Parent = frame
element.Label1 = label
if element.GetText2 then
label = Instance.new "TextLabel"
label.Name = "Text2"
label.BackgroundTransparency = 1
label.BackgroundColor3 = Color3.new(1, 1, 1)
label.BorderSizePixel = 0
label.TextXAlignment = Enum.TextXAlignment.Right
label.Font = Enum.Font.Arial
label.FontSize = Enum.FontSize.Size14
label.Position = UDim2.new(0.5, 0, 0, 0)
label.Size = UDim2.new(0.5, 0, 1, 0)
label.TextColor3 = Color3.new(1, 1, 1)
label.ZIndex = 9
label.Parent = frame
element.Label2 = label
end
frame.Parent = gearContextMenuButton
element.Label = frame
element.Element = frame
end
end
gearContextMenu.ZIndex = 4
gearContextMenu.MouseLeave:connect(function()
browsingMenu = false
gearContextMenu.Visible = false
clearPreview()
end)
robloxLock(gearContextMenu)
return gearContextMenu
end
function resizeGrid() function resizeGrid()
for _, v in pairs(backpackItems) do for _, v in pairs(backpackItems) do
if not v:FindFirstChild "RobloxBuildTool" then if not v:FindFirstChild "RobloxBuildTool" then
@ -565,56 +745,6 @@ end
-- updateGridActive() -- updateGridActive()
-- end -- end
function unequipGear(physGear)
physGear.Parent = playerBackpack
updateGridActive()
end
function highlight(button)
button.TextColor3 = Color3.new(0, 0, 0)
button.BackgroundColor3 = Color3.new(0.8, 0.8, 0.8)
end
function clearHighlight(button)
button.TextColor3 = Color3.new(1, 1, 1)
button.BackgroundColor3 = Color3.new(0, 0, 0)
end
function swapGearSlot(slot, gearButton)
if not swapSlot.Value then -- signal loadout to swap a gear out
swapSlot.Slot.Value = slot
swapSlot.GearButton.Value = gearButton
swapSlot.Value = true
updateGridActive()
end
end
local UnequipGearMenuClick = function(element, menu)
if type(element.Action) ~= "number" then
return
end
local num = element.Action
if num == 1 then -- remove from loadout
unequipGear(menu.Parent.GearReference.Value)
local inventoryButton = menu.Parent
local gearToUnequip = inventoryButton.GearReference.Value
local loadoutChildren = currentLoadout:GetChildren()
local slot = -1
for i = 1, #loadoutChildren do
if loadoutChildren[i]:IsA "Frame" then
local button = loadoutChildren[i]:GetChildren()
if
button[1]
and button[1].GearReference.Value == gearToUnequip
then
slot = button[1].SlotNumber.Text
break
end
end
end
swapGearSlot(slot, nil)
end
end
function setupCharacterConnections() function setupCharacterConnections()
if backpackAddCon then if backpackAddCon then
backpackAddCon:disconnect() backpackAddCon:disconnect()
@ -737,136 +867,6 @@ function nukeBackpack()
end end
end end
function getGearContextMenu()
local gearContextMenu = Instance.new "Frame"
gearContextMenu.Active = true
gearContextMenu.Name = "UnequipContextMenu"
gearContextMenu.Size = UDim2.new(0, 115, 0, 70)
gearContextMenu.Position = UDim2.new(0, -16, 0, -16)
gearContextMenu.BackgroundTransparency = 1
gearContextMenu.Visible = false
local gearContextMenuButton = Instance.new "TextButton"
gearContextMenuButton.Name = "UnequipContextMenuButton"
gearContextMenuButton.Text = ""
gearContextMenuButton.Style = Enum.ButtonStyle.RobloxButtonDefault
gearContextMenuButton.ZIndex = 8
gearContextMenuButton.Size = UDim2.new(1, 0, 1, -20)
gearContextMenuButton.Visible = true
gearContextMenuButton.Parent = gearContextMenu
local elementHeight = 12
local contextMenuElements = {}
local contextMenuElementsName = { "Remove Hotkey" }
for i = 1, #contextMenuElementsName do
local element = {}
element.Type = "Button"
element.Text = contextMenuElementsName[i]
element.Action = i
element.DoIt = UnequipGearMenuClick
table.insert(contextMenuElements, element)
end
for i, contextElement in ipairs(contextMenuElements) do
local element = contextElement
if element.Type == "Button" then
local button = Instance.new "TextButton"
button.Name = `UnequipContextButton{i}`
button.BackgroundColor3 = Color3.new(0, 0, 0)
button.BorderSizePixel = 0
button.TextXAlignment = Enum.TextXAlignment.Left
button.Text = ` {contextElement.Text}`
button.Font = Enum.Font.Arial
button.FontSize = Enum.FontSize.Size14
button.Size = UDim2.new(1, 8, 0, elementHeight)
button.Position = UDim2.new(0, 0, 0, elementHeight * i)
button.TextColor3 = Color3.new(1, 1, 1)
button.ZIndex = 9
button.Parent = gearContextMenuButton
if not IsTouchDevice() then
button.MouseButton1Click:connect(function()
if button.Active and not gearContextMenu.Parent.Active then
pcall(function()
element.DoIt(element, gearContextMenu)
end)
browsingMenu = false
gearContextMenu.Visible = false
clearHighlight(button)
clearPreview()
end
end)
button.MouseEnter:connect(function()
if button.Active and gearContextMenu.Parent.Active then
highlight(button)
end
end)
button.MouseLeave:connect(function()
if button.Active and gearContextMenu.Parent.Active then
clearHighlight(button)
end
end)
end
contextElement.Button = button
contextElement.Element = button
elseif element.Type == "Label" then
local frame = Instance.new "Frame"
frame.Name = `ContextLabel{i}`
frame.BackgroundTransparency = 1
frame.Size = UDim2.new(1, 8, 0, elementHeight)
local label = Instance.new "TextLabel"
label.Name = "Text1"
label.BackgroundTransparency = 1
label.BackgroundColor3 = Color3.new(1, 1, 1)
label.BorderSizePixel = 0
label.TextXAlignment = Enum.TextXAlignment.Left
label.Font = Enum.Font.ArialBold
label.FontSize = Enum.FontSize.Size14
label.Position = UDim2.new(0, 0, 0, 0)
label.Size = UDim2.new(0.5, 0, 1, 0)
label.TextColor3 = Color3.new(1, 1, 1)
label.ZIndex = 9
label.Parent = frame
element.Label1 = label
if element.GetText2 then
label = Instance.new "TextLabel"
label.Name = "Text2"
label.BackgroundTransparency = 1
label.BackgroundColor3 = Color3.new(1, 1, 1)
label.BorderSizePixel = 0
label.TextXAlignment = Enum.TextXAlignment.Right
label.Font = Enum.Font.Arial
label.FontSize = Enum.FontSize.Size14
label.Position = UDim2.new(0.5, 0, 0, 0)
label.Size = UDim2.new(0.5, 0, 1, 0)
label.TextColor3 = Color3.new(1, 1, 1)
label.ZIndex = 9
label.Parent = frame
element.Label2 = label
end
frame.Parent = gearContextMenuButton
element.Label = frame
element.Element = frame
end
end
gearContextMenu.ZIndex = 4
gearContextMenu.MouseLeave:connect(function()
browsingMenu = false
gearContextMenu.Visible = false
clearPreview()
end)
robloxLock(gearContextMenu)
return gearContextMenu
end
function coreGuiChanged(coreGuiType, enabled) function coreGuiChanged(coreGuiType, enabled)
if if
coreGuiType == Enum.CoreGuiType.Backpack coreGuiType == Enum.CoreGuiType.Backpack
@ -944,8 +944,8 @@ player.ChildAdded:connect(function(child)
backpackAddCon:disconnect() backpackAddCon:disconnect()
end end
backpackAddCon = game.Players.LocalPlayer.Backpack.ChildAdded:connect( backpackAddCon = game.Players.LocalPlayer.Backpack.ChildAdded:connect(
function(child) function(child2)
addToGrid(child) addToGrid(child2)
end end
) )
end end
@ -985,7 +985,7 @@ resize()
resizeGrid() resizeGrid()
-- make sure any items in the loadout are accounted for in inventory -- make sure any items in the loadout are accounted for in inventory
local loadoutChildren = currentLoadout:GetChildren() loadoutChildren = currentLoadout:GetChildren()
for i = 1, #loadoutChildren do for i = 1, #loadoutChildren do
loadoutCheck(loadoutChildren[i], false) loadoutCheck(loadoutChildren[i], false)
end end

View File

@ -215,7 +215,7 @@ function showBackpack()
backpackOpenEvent:Fire(currentTab) backpackOpenEvent:Fire(currentTab)
canToggle = true canToggle = true
readyForNextEvent = true readyForNextEvent = true
backpackButton.Image = "http://banland.xyz/asset/?id=97644093" backpackButton.Image = "https://banland.xyz/asset/?id=97644093"
backpackButton.Position = backpackButton.Position =
UDim2.new(0.5, -60, 1, -backpackSize.Y.Offset - 103) UDim2.new(0.5, -60, 1, -backpackSize.Y.Offset - 103)
end) end)
@ -240,7 +240,7 @@ function toggleBackpack()
backpackIsOpen = not backpackIsOpen backpackIsOpen = not backpackIsOpen
if backpackIsOpen then if backpackIsOpen then
loadoutBackground.Image = "http://banland.xyz/asset/?id=97623721" loadoutBackground.Image = "https://banland.xyz/asset/?id=97623721"
loadoutBackground.Position = UDim2.new(-0.03, 0, -0.17, 0) loadoutBackground.Position = UDim2.new(-0.03, 0, -0.17, 0)
loadoutBackground.Size = UDim2.new(1.05, 0, 1.25, 0) loadoutBackground.Size = UDim2.new(1.05, 0, 1.25, 0)
loadoutBackground.ZIndex = 2.0 loadoutBackground.ZIndex = 2.0
@ -250,8 +250,8 @@ function toggleBackpack()
backpackButton.Position = UDim2.new(0.5, -60, 1, -44) backpackButton.Position = UDim2.new(0.5, -60, 1, -44)
loadoutBackground.Visible = false loadoutBackground.Visible = false
backpackButton.Selected = false backpackButton.Selected = false
backpackButton.Image = "http://banland.xyz/asset/?id=97617958" backpackButton.Image = "https://banland.xyz/asset/?id=97617958"
loadoutBackground.Image = "http://banland.xyz/asset/?id=96536002" loadoutBackground.Image = "https://banland.xyz/asset/?id=96536002"
loadoutBackground.Position = UDim2.new(-0.1, 0, -0.1, 0) loadoutBackground.Position = UDim2.new(-0.1, 0, -0.1, 0)
loadoutBackground.Size = UDim2.new(1.2, 0, 1.2, 0) loadoutBackground.Size = UDim2.new(1.2, 0, 1.2, 0)
hideBackpack() hideBackpack()

View File

@ -179,45 +179,6 @@ local Chat = {
Messages_List = {}, Messages_List = {},
MessageThread = nil, MessageThread = nil,
-- Admins_List = {
-- "Sorcus",
-- "Shedletsky",
-- "Telamon",
-- "Tarabyte",
-- "StickMasterLuke",
-- "OnlyTwentyCharacters",
-- "FusRoblox",
-- "SolarCrane",
-- "HotThoth",
-- "JediTkacheff",
-- "Builderman",
-- "Brighteyes",
-- "ReeseMcblox",
-- "GemLocker",
-- "GongfuTiger",
-- "Erik.Cassel",
-- "Matt Dusek",
-- "Keith",
-- "Totbl",
-- "LordRugDump",
-- "David.Baszucki",
-- "Dbapostle",
-- "DaveYorkRBX",
-- "nJay",
-- "OstrichSized",
-- "TobotRobot",
-- "twberg",
-- "Mercury",
-- "RBAdam",
-- "Doughtless",
-- "Anaminus",
-- "Stravant",
-- "Cr3470r",
-- "CodeWriter",
-- "Games",
-- "AcesWayUpHigh",
-- "Phil",
-- },
Admins_List = { "taskmanager", "Heliodex", "tako" }, Admins_List = { "taskmanager", "Heliodex", "tako" },
SafeChat_List = { SafeChat_List = {
@ -1454,7 +1415,7 @@ function Chat:CreateSafeChatGui()
Size = UDim2.new(0, 44, 0, 31), Size = UDim2.new(0, 44, 0, 31),
Position = UDim2.new(0, 1, 0.35, 0), Position = UDim2.new(0, 1, 0.35, 0),
BackgroundTransparency = 1, BackgroundTransparency = 1,
Image = "http://banland.xyz/asset/?id=97080365", Image = "https://banland.xyz/asset/?id=97080365",
}, },
} }
@ -1501,7 +1462,7 @@ function Chat:CreateTouchButton()
Size = UDim2.new(1, 0, 1, 0), Size = UDim2.new(1, 0, 1, 0),
Position = UDim2.new(0, 0, 0, 0), Position = UDim2.new(0, 0, 0, 0),
BackgroundTransparency = 1, BackgroundTransparency = 1,
Image = "http://banland.xyz/asset/?id=97078724", Image = "https://banland.xyz/asset/?id=97078724",
}, },
} }
self.TapToChatLabel = self.ChatTouchFrame.ChatLabel self.TapToChatLabel = self.ChatTouchFrame.ChatLabel
@ -1606,7 +1567,7 @@ function Chat:CreateGui()
Gui.Create "ImageLabel" { Gui.Create "ImageLabel" {
Name = "Background", Name = "Background",
Image = "http://banland.xyz/asset/?id=97120937", --96551212'; Image = "https://banland.xyz/asset/?id=97120937", --96551212';
Size = UDim2.new(1.3, 0, 1.64, 0), Size = UDim2.new(1.3, 0, 1.64, 0),
Position = UDim2.new(0, 0, 0, 0), Position = UDim2.new(0, 0, 0, 0),
BackgroundTransparency = 1, BackgroundTransparency = 1,

View File

@ -7,6 +7,14 @@ local BadgeService = game:GetService "BadgeService"
local FriendService = game:GetService "FriendService" local FriendService = game:GetService "FriendService"
local ScriptContext = game:GetService "ScriptContext" local ScriptContext = game:GetService "ScriptContext"
local RunService = game:GetService "RunService" local RunService = game:GetService "RunService"
local ScriptInformationProvider = game:GetService "ScriptInformationProvider"
local ChangeHistoryService = game:GetService "ChangeHistoryService"
local ContentProvider = game:GetService "ContentProvider"
local Players = game:GetService "Players"
local Visit = game:GetService "Visit"
-- establish this peer as the Server
local NetworkServer = game:GetService "NetworkServer"
-- StartGame -- -- StartGame --
pcall(function() pcall(function()
@ -93,23 +101,20 @@ end)
ScriptContext.ScriptsDisabled = true ScriptContext.ScriptsDisabled = true
-- game:SetPlaceID(nil, false) -- game:SetPlaceID(nil, false)
game:GetService("ChangeHistoryService"):SetEnabled(false) ChangeHistoryService:SetEnabled(false)
-- establish this peer as the Server
local ns = game:GetService "NetworkServer"
if url ~= nil then if url ~= nil then
pcall(function() pcall(function()
game:GetService("Players"):SetAbuseReportUrl(`{url}/Report/Games.ashx`) Players:SetAbuseReportUrl(`{url}/Report/Games.ashx`)
end) end)
pcall(function() pcall(function()
game:GetService("ScriptInformationProvider"):SetAssetUrl(`{url}/Asset/`) ScriptInformationProvider:SetAssetUrl(`{url}/Asset/`)
end) end)
pcall(function() pcall(function()
game:GetService("ContentProvider"):SetBaseUrl(`{url}/`) ContentProvider:SetBaseUrl(`{url}/`)
end) end)
-- pcall(function() -- pcall(function()
-- game:GetService("Players"):SetChatFilterUrl( -- Players:SetChatFilterUrl(
-- `{url}/Game/ChatFilter.ashx` -- `{url}/Game/ChatFilter.ashx`
-- ) -- )
-- end) -- end)
@ -144,7 +149,7 @@ if url ~= nil then
`{url}/Game/Tools/InsertAsset.ashx?nsets=20&type=user&userid=%d` `{url}/Game/Tools/InsertAsset.ashx?nsets=20&type=user&userid=%d`
) )
InsertService:SetCollectionUrl(`{url}/Game/Tools/InsertAsset.ashx?sid=%d`) InsertService:SetCollectionUrl(`{url}/Game/Tools/InsertAsset.ashx?sid=%d`)
InsertService:SetAssetUrl(`{url}/Asset/?id=%d`) InsertService:SetAssetUrl(`{url}/asset?id=%d`)
InsertService:SetAssetVersionUrl(`{url}/Asset/?assetversionid=%d`) InsertService:SetAssetVersionUrl(`{url}/Asset/?assetversionid=%d`)
pcall(function() pcall(function()
@ -161,15 +166,9 @@ if url ~= nil then
end end
pcall(function() pcall(function()
game:GetService("NetworkServer"):SetIsPlayerAuthenticationRequired(true) NetworkServer:SetIsPlayerAuthenticationRequired(true)
end) end)
settings().Diagnostics.LuaRamLimit = 0 settings().Diagnostics.LuaRamLimit = 0
--settings().Network:SetThroughputSensitivity(0.08, 0.01)
--settings().Network.SendRate = 35
--settings().Network.PhysicsSend = 0 -- 1==RoundRobin
--shared.__time = 0
--game:GetService("RunService").Stepped:connect(function (time) shared.__time = time end)
if placeId ~= nil and killID ~= nil and deathID ~= nil and url ~= nil then if placeId ~= nil and killID ~= nil and deathID ~= nil and url ~= nil then
-- listen for the death of a Player -- listen for the death of a Player
@ -184,7 +183,7 @@ if placeId ~= nil and killID ~= nil and deathID ~= nil and url ~= nil then
end end
-- listen to all Players' Characters -- listen to all Players' Characters
game:GetService("Players").ChildAdded:connect(function(player) Players.ChildAdded:connect(function(player)
createDeathMonitor(player) createDeathMonitor(player)
player.Changed:connect(function(property) player.Changed:connect(function(property)
if property == "Character" then if property == "Character" then
@ -194,7 +193,7 @@ if placeId ~= nil and killID ~= nil and deathID ~= nil and url ~= nil then
end) end)
end end
game:GetService("Players").PlayerAdded:connect(function(player) Players.PlayerAdded:connect(function(player)
print(`Player {player.userId} added`) print(`Player {player.userId} added`)
if url and access and placeId and player and player.userId then if url and access and placeId and player and player.userId then
@ -207,7 +206,7 @@ game:GetService("Players").PlayerAdded:connect(function(player)
end end
end) end)
game:GetService("Players").PlayerRemoving:connect(function(player) Players.PlayerRemoving:connect(function(player)
print(`Player {player.userId} leaving`) print(`Player {player.userId} leaving`)
if url and access and placeId and player and player.userId then if url and access and placeId and player and player.userId then
@ -234,9 +233,9 @@ if _MAP_LOCATION_EXISTS then
end end
-- Now start the connection -- Now start the connection
ns:Start(_SERVER_PORT, sleeptime) NetworkServer:Start(_SERVER_PORT, sleeptime)
game:GetService("Visit"):SetPing("_SERVER_PRESENCE_URL", 30) Visit:SetPing("_SERVER_PRESENCE_URL", 30)
if timeout then if timeout then
ScriptContext:SetTimeout(timeout) ScriptContext:SetTimeout(timeout)

View File

@ -5,7 +5,6 @@ local ContentProvider = game:GetService "ContentProvider"
local SocialService = game:GetService "SocialService" local SocialService = game:GetService "SocialService"
local GamePassService = game:GetService "GamePassService" local GamePassService = game:GetService "GamePassService"
local MarketplaceService = game:GetService "MarketplaceService" local MarketplaceService = game:GetService "MarketplaceService"
-- local UserInputService = game:GetService "UserInputService"
local Players = game:GetService "Players" local Players = game:GetService "Players"
local Client = game:GetService "NetworkClient" local Client = game:GetService "NetworkClient"
local Visit = game:GetService "Visit" local Visit = game:GetService "Visit"
@ -51,29 +50,29 @@ print "! Joining game '_PLACE_ID' place _PLACE_ID at _SERVER_ADDRESS"
ChangeHistoryService:SetEnabled(false) ChangeHistoryService:SetEnabled(false)
ContentProvider:SetThreadPool(16) ContentProvider:SetThreadPool(16)
InsertService:SetBaseSetsUrl "http://banland.xyz/game/tools/insertasset?nsets=10&type=base" InsertService:SetBaseSetsUrl "https://banland.xyz/game/tools/insertasset?nsets=10&type=base"
InsertService:SetUserSetsUrl "http://banland.xyz/game/tools/insertasset?nsets=20&type=user&userid=%d" InsertService:SetUserSetsUrl "https://banland.xyz/game/tools/insertasset?nsets=20&type=user&userid=%d"
InsertService:SetCollectionUrl "http://banland.xyz/game/tools/insertasset?sid=%d" InsertService:SetCollectionUrl "https://banland.xyz/game/tools/insertasset?sid=%d"
InsertService:SetAssetUrl "http://banland.xyz/asset?id=%d" InsertService:SetAssetUrl "https://banland.xyz/asset?id=%d"
InsertService:SetAssetVersionUrl "http://banland.xyz/asset?assetversionid=%d" InsertService:SetAssetVersionUrl "https://banland.xyz/asset?assetversionid=%d"
pcall(function() pcall(function()
SocialService:SetFriendUrl "http://banland.xyz/Game/LuaWebService/HandleSocialRequest.ashx?method=IsFriendsWith&playerid=%d&userid=%d" SocialService:SetFriendUrl "https://banland.xyz/Game/LuaWebService/HandleSocialRequest.ashx?method=IsFriendsWith&playerid=%d&userid=%d"
end) end)
pcall(function() pcall(function()
SocialService:SetBestFriendUrl "http://banland.xyz/Game/LuaWebService/HandleSocialRequest.ashx?method=IsBestFriendsWith&playerid=%d&userid=%d" SocialService:SetBestFriendUrl "https://banland.xyz/Game/LuaWebService/HandleSocialRequest.ashx?method=IsBestFriendsWith&playerid=%d&userid=%d"
end) end)
pcall(function() pcall(function()
SocialService:SetGroupUrl "http://banland.xyz/Game/LuaWebService/HandleSocialRequest.ashx?method=IsInGroup&playerid=%d&groupid=%d" SocialService:SetGroupUrl "https://banland.xyz/Game/LuaWebService/HandleSocialRequest.ashx?method=IsInGroup&playerid=%d&groupid=%d"
end) end)
pcall(function() pcall(function()
SocialService:SetGroupRankUrl "http://banland.xyz/Game/LuaWebService/HandleSocialRequest.ashx?method=GetGroupRank&playerid=%d&groupid=%d" SocialService:SetGroupRankUrl "https://banland.xyz/Game/LuaWebService/HandleSocialRequest.ashx?method=GetGroupRank&playerid=%d&groupid=%d"
end) end)
pcall(function() pcall(function()
SocialService:SetGroupRoleUrl "http://banland.xyz/Game/LuaWebService/HandleSocialRequest.ashx?method=GetGroupRole&playerid=%d&groupid=%d" SocialService:SetGroupRoleUrl "https://banland.xyz/Game/LuaWebService/HandleSocialRequest.ashx?method=GetGroupRole&playerid=%d&groupid=%d"
end) end)
pcall(function() pcall(function()
GamePassService:SetPlayerHasPassUrl "http://banland.xyz/Game/GamePass/GamePassHandler.ashx?Action=HasPass&UserID=%d&PassID=%d" GamePassService:SetPlayerHasPassUrl "https://banland.xyz/Game/GamePass/GamePassHandler.ashx?Action=HasPass&UserID=%d&PassID=%d"
end) end)
pcall(function() pcall(function()
MarketplaceService:SetProductInfoUrl "https://banland.xyz/marketplace/productinfo?assetId=%d" MarketplaceService:SetProductInfoUrl "https://banland.xyz/marketplace/productinfo?assetId=%d"
@ -293,6 +292,6 @@ pcall(function()
game:SetScreenshotInfo "" game:SetScreenshotInfo ""
end) end)
pcall(function() pcall(function()
game:SetVideoInfo '<?xml version="1.0"?><entry xmlns="http://www.w3.org/2005/Atom" xmlns:media="http://search.yahoo.com/mrss/" xmlns:yt="http://gdata.youtube.com/schemas/2007"><media:group><media:title type="plain"><![CDATA[Mercury Place]]></media:title><media:description type="plain"><![CDATA[ For more games visit http://banland.xyz]]></media:description><media:category scheme="http://gdata.youtube.com/schemas/2007/categories.cat">Games</media:category><media:keywords>Mercury, video, free game, online virtual world</media:keywords></media:group></entry>' game:SetVideoInfo '<?xml version="1.0"?><entry xmlns="http://www.w3.org/2005/Atom" xmlns:media="http://search.yahoo.com/mrss/" xmlns:yt="http://gdata.youtube.com/schemas/2007"><media:group><media:title type="plain"><![CDATA[Mercury Place]]></media:title><media:description type="plain"><![CDATA[ For more games visit https://banland.xyz]]></media:description><media:category scheme="http://gdata.youtube.com/schemas/2007/categories.cat">Games</media:category><media:keywords>Mercury, video, free game, online virtual world</media:keywords></media:group></entry>'
end) end)
-- use single quotes here because the video info string may have unescaped double quotes -- use single quotes here because the video info string may have unescaped double quotes

View File

@ -7,37 +7,37 @@ local ScriptInformationProvider = game:GetService "ScriptInformationProvider"
local ScriptContext = game:GetService "ScriptContext" local ScriptContext = game:GetService "ScriptContext"
-- Setup studio cmd bar & load core scripts -- Setup studio cmd bar & load core scripts
pcall(function() pcall(function()
InsertService:SetFreeModelUrl "http://banland.xyz/game/tools/insertasset?type=fm&q=%s&pg=%d&rs=%d" InsertService:SetFreeModelUrl "https://banland.xyz/game/tools/insertasset?type=fm&q=%s&pg=%d&rs=%d"
end) end)
pcall(function() pcall(function()
InsertService:SetFreeDecalUrl "http://banland.xyz/game/tools/insertasset?type=fd&q=%s&pg=%d&rs=%d" InsertService:SetFreeDecalUrl "https://banland.xyz/game/tools/insertasset?type=fd&q=%s&pg=%d&rs=%d"
end) end)
ScriptInformationProvider:SetAssetUrl "http://banland.xyz/Asset/" ScriptInformationProvider:SetAssetUrl "https://banland.xyz/asset/"
InsertService:SetBaseSetsUrl "http://banland.xyz/game/tools/insertasset?nsets=10&type=base" InsertService:SetBaseSetsUrl "https://banland.xyz/game/tools/insertasset?nsets=10&type=base"
InsertService:SetUserSetsUrl "http://banland.xyz/game/tools/insertasset?nsets=20&type=user&userid=%d" InsertService:SetUserSetsUrl "https://banland.xyz/game/tools/insertasset?nsets=20&type=user&userid=%d"
InsertService:SetCollectionUrl "http://banland.xyz/game/tools/insertasset?sid=%d" InsertService:SetCollectionUrl "https://banland.xyz/game/tools/insertasset?sid=%d"
InsertService:SetAssetUrl "http://banland.xyz/Asset/?id=%d" InsertService:SetAssetUrl "https://banland.xyz/asset/?id=%d"
InsertService:SetAssetVersionUrl "http://banland.xyz/Asset/?assetversionid=%d" InsertService:SetAssetVersionUrl "https://banland.xyz/asset/?assetversionid=%d"
InsertService:SetTrustLevel(0) InsertService:SetTrustLevel(0)
pcall(function() pcall(function()
SocialService:SetFriendUrl "http://banland.xyz/Game/LuaWebService/HandleSocialRequest.ashx?method=IsFriendsWith&playerid=%d&userid=%d" SocialService:SetFriendUrl "https://banland.xyz/Game/LuaWebService/HandleSocialRequest.ashx?method=IsFriendsWith&playerid=%d&userid=%d"
end) end)
pcall(function() pcall(function()
SocialService:SetBestFriendUrl "http://banland.xyz/Game/LuaWebService/HandleSocialRequest.ashx?method=IsBestFriendsWith&playerid=%d&userid=%d" SocialService:SetBestFriendUrl "https://banland.xyz/Game/LuaWebService/HandleSocialRequest.ashx?method=IsBestFriendsWith&playerid=%d&userid=%d"
end) end)
pcall(function() pcall(function()
SocialService:SetGroupUrl "http://banland.xyz/Game/LuaWebService/HandleSocialRequest.ashx?method=IsInGroup&playerid=%d&groupid=%d" SocialService:SetGroupUrl "https://banland.xyz/Game/LuaWebService/HandleSocialRequest.ashx?method=IsInGroup&playerid=%d&groupid=%d"
end) end)
pcall(function() pcall(function()
SocialService:SetGroupRankUrl "http://banland.xyz/Game/LuaWebService/HandleSocialRequest.ashx?method=GetGroupRank&playerid=%d&groupid=%d" SocialService:SetGroupRankUrl "https://banland.xyz/Game/LuaWebService/HandleSocialRequest.ashx?method=GetGroupRank&playerid=%d&groupid=%d"
end) end)
pcall(function() pcall(function()
SocialService:SetGroupRoleUrl "http://banland.xyz/Game/LuaWebService/HandleSocialRequest.ashx?method=GetGroupRole&playerid=%d&groupid=%d" SocialService:SetGroupRoleUrl "https://banland.xyz/Game/LuaWebService/HandleSocialRequest.ashx?method=GetGroupRole&playerid=%d&groupid=%d"
end) end)
pcall(function() pcall(function()
GamePassService:SetPlayerHasPassUrl "http://banland.xyz/Game/GamePass/GamePassHandler.ashx?Action=HasPass&UserID=%d&PassID=%d" GamePassService:SetPlayerHasPassUrl "https://banland.xyz/Game/GamePass/GamePassHandler.ashx?Action=HasPass&UserID=%d&PassID=%d"
end) end)
pcall(function() pcall(function()
MarketplaceService:SetProductInfoUrl "https://banland.xyz/marketplace/productinfo?assetId=%d" MarketplaceService:SetProductInfoUrl "https://banland.xyz/marketplace/productinfo?assetId=%d"

View File

@ -24,40 +24,40 @@ local message = Instance.new "Message"
message.Parent = workspace message.Parent = workspace
message.archivable = false message.archivable = false
ScriptInformationProvider:SetAssetUrl "http://banland.xyz/Asset/" ScriptInformationProvider:SetAssetUrl "https://banland.xyz/Asset/"
ContentProvider:SetThreadPool(16) ContentProvider:SetThreadPool(16)
pcall(function() pcall(function()
InsertService:SetFreeModelUrl "http://banland.xyz/game/tools/insertasset?type=fm&q=%s&pg=%d&rs=%d" InsertService:SetFreeModelUrl "https://banland.xyz/game/tools/insertasset?type=fm&q=%s&pg=%d&rs=%d"
end) -- Used for free model search (insert tool) end) -- Used for free model search (insert tool)
pcall(function() pcall(function()
InsertService:SetFreeDecalUrl "http://banland.xyz/game/tools/insertasset?type=fd&q=%s&pg=%d&rs=%d" InsertService:SetFreeDecalUrl "https://banland.xyz/game/tools/insertasset?type=fd&q=%s&pg=%d&rs=%d"
end) -- Used for free decal search (insert tool) end) -- Used for free decal search (insert tool)
settings().Diagnostics:LegacyScriptMode() settings().Diagnostics:LegacyScriptMode()
InsertService:SetBaseSetsUrl "http://banland.xyz/game/tools/insertasset?nsets=10&type=base" InsertService:SetBaseSetsUrl "https://banland.xyz/game/tools/insertasset?nsets=10&type=base"
InsertService:SetUserSetsUrl "http://banland.xyz/game/tools/insertasset?nsets=20&type=user&userid=%d" InsertService:SetUserSetsUrl "https://banland.xyz/game/tools/insertasset?nsets=20&type=user&userid=%d"
InsertService:SetCollectionUrl "http://banland.xyz/game/tools/insertasset?sid=%d" InsertService:SetCollectionUrl "https://banland.xyz/game/tools/insertasset?sid=%d"
InsertService:SetAssetUrl "http://banland.xyz/Asset/?id=%d" InsertService:SetAssetUrl "https://banland.xyz/Asset/?id=%d"
InsertService:SetAssetVersionUrl "http://banland.xyz/Asset/?assetversionid=%d" InsertService:SetAssetVersionUrl "https://banland.xyz/Asset/?assetversionid=%d"
pcall(function() pcall(function()
SocialService:SetFriendUrl "http://banland.xyz/Game/LuaWebService/HandleSocialRequest.ashx?method=IsFriendsWith&playerid=%d&userid=%d" SocialService:SetFriendUrl "https://banland.xyz/Game/LuaWebService/HandleSocialRequest.ashx?method=IsFriendsWith&playerid=%d&userid=%d"
end) end)
pcall(function() pcall(function()
SocialService:SetBestFriendUrl "http://banland.xyz/Game/LuaWebService/HandleSocialRequest.ashx?method=IsBestFriendsWith&playerid=%d&userid=%d" SocialService:SetBestFriendUrl "https://banland.xyz/Game/LuaWebService/HandleSocialRequest.ashx?method=IsBestFriendsWith&playerid=%d&userid=%d"
end) end)
pcall(function() pcall(function()
SocialService:SetGroupUrl "http://banland.xyz/Game/LuaWebService/HandleSocialRequest.ashx?method=IsInGroup&playerid=%d&groupid=%d" SocialService:SetGroupUrl "https://banland.xyz/Game/LuaWebService/HandleSocialRequest.ashx?method=IsInGroup&playerid=%d&groupid=%d"
end) end)
pcall(function() pcall(function()
SocialService:SetGroupRankUrl "http://banland.xyz/Game/LuaWebService/HandleSocialRequest.ashx?method=GetGroupRank&playerid=%d&groupid=%d" SocialService:SetGroupRankUrl "https://banland.xyz/Game/LuaWebService/HandleSocialRequest.ashx?method=GetGroupRank&playerid=%d&groupid=%d"
end) end)
pcall(function() pcall(function()
SocialService:SetGroupRoleUrl "http://banland.xyz/Game/LuaWebService/HandleSocialRequest.ashx?method=GetGroupRole&playerid=%d&groupid=%d" SocialService:SetGroupRoleUrl "https://banland.xyz/Game/LuaWebService/HandleSocialRequest.ashx?method=GetGroupRole&playerid=%d&groupid=%d"
end) end)
pcall(function() pcall(function()
GamePassService:SetPlayerHasPassUrl "http://banland.xyz/Game/GamePass/GamePassHandler.ashx?Action=HasPass&UserID=%d&PassID=%d" GamePassService:SetPlayerHasPassUrl "https://banland.xyz/Game/GamePass/GamePassHandler.ashx?Action=HasPass&UserID=%d&PassID=%d"
end) end)
pcall(function() pcall(function()
game:SetCreatorID(0, Enum.CreatorType.User) game:SetCreatorID(0, Enum.CreatorType.User)
@ -80,7 +80,7 @@ end)
ChangeHistoryService:SetEnabled(false) ChangeHistoryService:SetEnabled(false)
pcall(function() pcall(function()
Players:SetBuildUserPermissionsUrl "http://banland.xyz/Game/BuildActionPermissionCheck.ashx?assetId=0&userId=%d&isSolo=true" Players:SetBuildUserPermissionsUrl "https://banland.xyz/Game/BuildActionPermissionCheck.ashx?assetId=0&userId=%d&isSolo=true"
end) end)
workspace:SetPhysicsThrottleEnabled(true) workspace:SetPhysicsThrottleEnabled(true)