clean
This commit is contained in:
parent
03aa124613
commit
326ab15a1c
|
|
@ -1,5 +1,3 @@
|
|||
/studio/* https://github.com/archblox/website/raw/main/public/studio/:splat 302
|
||||
/client/* https://github.com/archblox/website/raw/main/public/client/:splat 302
|
||||
/asset/?id=* https://github.com/archblox/website/raw/main/public/asset/:splat 302
|
||||
/asset?id=* https://github.com/archblox/website/raw/main/public/asset/:splat 302
|
||||
/asset/* https://github.com/archblox/website/raw/main/public/asset/:splat 302
|
||||
|
|
@ -1,91 +0,0 @@
|
|||
%1%
|
||||
-- Creates all neccessary scripts for the gui on initial load, everything except build tools
|
||||
-- Created by Ben T. 10/29/10
|
||||
-- Please note that these are loaded in a specific order to diminish errors/perceived load time by user
|
||||
local scriptContext = game:GetService("ScriptContext")
|
||||
local touchEnabled = false
|
||||
pcall(function() touchEnabled = game:GetService("UserInputService").TouchEnabled end)
|
||||
|
||||
-- library registration
|
||||
scriptContext:AddCoreScript(2, scriptContext,"/Libraries/LibraryRegistration/LibraryRegistration")
|
||||
|
||||
local function waitForChild(instance, name)
|
||||
while not instance:FindFirstChild(name) do
|
||||
instance.ChildAdded:wait()
|
||||
end
|
||||
end
|
||||
local function waitForProperty(instance, property)
|
||||
while not instance[property] do
|
||||
instance.Changed:wait()
|
||||
end
|
||||
end
|
||||
|
||||
-- Responsible for tracking logging items
|
||||
local scriptContext = game:GetService("ScriptContext")
|
||||
scriptContext:AddCoreScript(3, scriptContext, "CoreScripts/Sections")
|
||||
|
||||
waitForChild(game:GetService("CoreGui"),"RobloxGui")
|
||||
local screenGui = game:GetService("CoreGui"):FindFirstChild("RobloxGui")
|
||||
|
||||
if not touchEnabled then
|
||||
-- ToolTipper (creates tool tips for gui)
|
||||
scriptContext:AddCoreScript(4,screenGui,"CoreScripts/ToolTip")
|
||||
-- SettingsScript
|
||||
scriptContext:AddCoreScript(5,screenGui,"CoreScripts/Settings")
|
||||
end
|
||||
|
||||
-- For Deepak Testing
|
||||
pcall(function()
|
||||
waitForProperty(game,"PlaceId")
|
||||
if game.PlaceId == deepakTestingPlace then
|
||||
scriptContext:AddCoreScript(52177626,screenGui,"RBXStatusBuffsGUIScript")
|
||||
end
|
||||
end)
|
||||
|
||||
-- MainBotChatScript
|
||||
scriptContext:AddCoreScript(6,screenGui,"CoreScripts/MainBotChatScript")
|
||||
|
||||
-- Popup Script
|
||||
scriptContext:AddCoreScript(7,screenGui,"CoreScripts/PopupScript")
|
||||
-- Friend Notification Script (probably can use this script to expand out to other notifications)
|
||||
scriptContext:AddCoreScript(8,screenGui,"CoreScripts/NotificationScript")
|
||||
-- Chat script
|
||||
scriptContext:AddCoreScript(9, screenGui, "CoreScripts/ChatScript")
|
||||
-- Purchase Prompt Script
|
||||
scriptContext:AddCoreScript(10, screenGui, "CoreScripts/PurchasePromptScript")
|
||||
|
||||
if not touchEnabled then
|
||||
-- New Player List
|
||||
scriptContext:AddCoreScript(11,screenGui,"CoreScripts/PlayerListScript")
|
||||
elseif screenGui.AbsoluteSize.Y > 600 then
|
||||
-- New Player List
|
||||
scriptContext:AddCoreScript(11,screenGui,"CoreScripts/PlayerListScript")
|
||||
else
|
||||
delay(5, function()
|
||||
if screenGui.AbsoluteSize.Y >= 600 then
|
||||
-- New Player List
|
||||
scriptContext:AddCoreScript(11,screenGui,"CoreScripts/PlayerListScript")
|
||||
end
|
||||
end)
|
||||
end
|
||||
|
||||
if game.CoreGui.Version >= 3 then
|
||||
-- Backpack Builder, creates most of the backpack gui
|
||||
scriptContext:AddCoreScript(12,screenGui,"CoreScripts/BackpackScripts/BackpackBuilder")
|
||||
|
||||
waitForChild(screenGui,"CurrentLoadout")
|
||||
waitForChild(screenGui,"Backpack")
|
||||
local Backpack = screenGui.Backpack
|
||||
|
||||
-- Manager handles all big backpack state changes, other scripts subscribe to this and do things accordingly
|
||||
if game.CoreGui.Version >= 7 then
|
||||
scriptContext:AddCoreScript(13,Backpack,"CoreScripts/BackpackScripts/BackpackManager")
|
||||
end
|
||||
|
||||
-- Backpack Gear (handles all backpack gear tab stuff)
|
||||
game:GetService("ScriptContext"):AddCoreScript(14,Backpack,"CoreScripts/BackpackScripts/BackpackGear")
|
||||
-- Loadout Script, used for gear hotkeys
|
||||
scriptContext:AddCoreScript(15,screenGui.CurrentLoadout,"CoreScripts/BackpackScripts/LoadoutScript")
|
||||
-- Wardrobe script handles all character dressing operations
|
||||
scriptContext:AddCoreScript(16,Backpack,"CoreScripts/BackpackScripts/BackpackWardrobe")
|
||||
end
|
||||
1001
maintenance/asset/10
1001
maintenance/asset/10
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
3013
maintenance/asset/11
3013
maintenance/asset/11
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
|
|
@ -1,867 +0,0 @@
|
|||
%12%
|
||||
-- This script creates almost all gui elements found in the backpack (warning: there are a lot!)
|
||||
-- TODO: automate this process
|
||||
|
||||
if game.CoreGui.Version < 3 then return end -- peace out if we aren't using the right client
|
||||
|
||||
local gui = script.Parent
|
||||
|
||||
-- A couple of necessary functions
|
||||
local function waitForChild(instance, name)
|
||||
while not instance:FindFirstChild(name) do
|
||||
instance.ChildAdded:wait()
|
||||
end
|
||||
end
|
||||
local function waitForProperty(instance, property)
|
||||
while not instance[property] do
|
||||
instance.Changed:wait()
|
||||
end
|
||||
end
|
||||
|
||||
local function IsTouchDevice()
|
||||
local touchEnabled = false
|
||||
pcall(function() touchEnabled = Game:GetService('UserInputService').TouchEnabled end)
|
||||
return touchEnabled
|
||||
end
|
||||
|
||||
waitForChild(game,"Players")
|
||||
waitForProperty(game.Players,"LocalPlayer")
|
||||
local player = game.Players.LocalPlayer
|
||||
|
||||
-- First up is the current loadout
|
||||
local CurrentLoadout = Instance.new("Frame")
|
||||
CurrentLoadout.Name = "CurrentLoadout"
|
||||
CurrentLoadout.Position = UDim2.new(0.5, -300, 1, -85)
|
||||
CurrentLoadout.Size = UDim2.new(0, 600, 0, 54)
|
||||
CurrentLoadout.BackgroundTransparency = 1
|
||||
CurrentLoadout.RobloxLocked = true
|
||||
CurrentLoadout.Parent = gui
|
||||
|
||||
local CLBackground = Instance.new('ImageLabel')
|
||||
CLBackground.Name = 'Background';
|
||||
CLBackground.Size = UDim2.new(1.2, 0, 1.2, 0);
|
||||
CLBackground.Image = "http://www.jarfeh.xyz/asset/?id=96536002"
|
||||
CLBackground.BackgroundTransparency = 1.0;
|
||||
CLBackground.Position = UDim2.new(-0.1, 0, -0.1, 0);
|
||||
CLBackground.ZIndex = 0.0;
|
||||
CLBackground.Parent = CurrentLoadout
|
||||
CLBackground.Visible = false
|
||||
|
||||
local BackgroundUp = Instance.new('ImageLabel')
|
||||
BackgroundUp.Size = UDim2.new(1, 0, 0.025, 1)
|
||||
BackgroundUp.Position = UDim2.new(0, 0, 0, 0)
|
||||
BackgroundUp.Image = 'http://www.jarfeh.xyz/asset/?id=97662207'
|
||||
BackgroundUp.BackgroundTransparency = 1.0
|
||||
BackgroundUp.Parent = CLBackground
|
||||
|
||||
local Debounce = Instance.new("BoolValue")
|
||||
Debounce.Name = "Debounce"
|
||||
Debounce.RobloxLocked = true
|
||||
Debounce.Parent = CurrentLoadout
|
||||
|
||||
local BackpackButton = Instance.new("ImageButton")
|
||||
BackpackButton.RobloxLocked = true
|
||||
BackpackButton.Visible = false
|
||||
BackpackButton.Name = "BackpackButton"
|
||||
BackpackButton.BackgroundTransparency = 1
|
||||
BackpackButton.Image = "http://www.jarfeh.xyz/asset/?id=97617958"
|
||||
BackpackButton.Position = UDim2.new(0.5, -60, 1, -108)
|
||||
BackpackButton.Size = UDim2.new(0, 120, 0, 18)
|
||||
waitForChild(gui,"ControlFrame")
|
||||
BackpackButton.Parent = gui.ControlFrame
|
||||
|
||||
local NumSlots = 9
|
||||
|
||||
if gui.AbsoluteSize.Y <= 320 then
|
||||
NumSlots = 3
|
||||
CurrentLoadout.Size = UDim2.new(0, 180, 0, 54)
|
||||
CurrentLoadout.Position = UDim2.new(0.5, -90, 1, -85)
|
||||
end
|
||||
|
||||
|
||||
for i = 0, NumSlots do
|
||||
local slotFrame = Instance.new("Frame")
|
||||
slotFrame.RobloxLocked = true
|
||||
slotFrame.BackgroundColor3 = Color3.new(0,0,0)
|
||||
slotFrame.BackgroundTransparency = 1
|
||||
slotFrame.BorderColor3 = Color3.new(1, 1, 1)
|
||||
slotFrame.Name = "Slot" .. tostring(i)
|
||||
slotFrame.ZIndex = 4.0
|
||||
if i == 0 then
|
||||
slotFrame.Position = UDim2.new(0.9, 0, 0, 0)
|
||||
else
|
||||
slotFrame.Position = UDim2.new((i - 1) * 0.1, (i-1)* 6,0,0)
|
||||
end
|
||||
|
||||
|
||||
slotFrame.Size = UDim2.new(0, 54, 1, 0)
|
||||
slotFrame.Parent = CurrentLoadout
|
||||
|
||||
if gui.AbsoluteSize.Y <= 320 then
|
||||
slotFrame.Position = UDim2.new(0, (i-1)* 60, 0, -50)
|
||||
print('Well got here', slotFrame, slotFrame.Position.X.Scale, slotFrame.Position.X.Offset)
|
||||
end
|
||||
if gui.AbsoluteSize.Y <= 320 and i == 0 then
|
||||
slotFrame:Destroy()
|
||||
end
|
||||
end
|
||||
|
||||
local TempSlot = Instance.new("ImageButton")
|
||||
TempSlot.Name = "TempSlot"
|
||||
TempSlot.Active = true
|
||||
TempSlot.Size = UDim2.new(1,0,1,0)
|
||||
TempSlot.BackgroundTransparency = 1.0
|
||||
TempSlot.Style = 'Custom'
|
||||
TempSlot.Visible = false
|
||||
TempSlot.RobloxLocked = true
|
||||
TempSlot.Parent = CurrentLoadout
|
||||
TempSlot.ZIndex = 3.0
|
||||
|
||||
local slotBackground = Instance.new('ImageLabel')
|
||||
slotBackground.Name = 'Background'
|
||||
slotBackground.BackgroundTransparency = 1.0
|
||||
slotBackground.Image = 'http://www.jarfeh.xyz/asset/?id=97613075'
|
||||
slotBackground.Size = UDim2.new(1, 0, 1, 0)
|
||||
slotBackground.Parent = TempSlot
|
||||
|
||||
local HighLight = Instance.new('ImageLabel')
|
||||
HighLight.Name = 'Highlight'
|
||||
HighLight.BackgroundTransparency = 1.0
|
||||
HighLight.Image = 'http://www.jarfeh.xyz/asset/?id=97643886'
|
||||
HighLight.Size = UDim2.new(1, 0, 1, 0)
|
||||
--HighLight.Parent = TempSlot
|
||||
HighLight.Visible = false
|
||||
|
||||
-- TempSlot Children
|
||||
local GearReference = Instance.new("ObjectValue")
|
||||
GearReference.Name = "GearReference"
|
||||
GearReference.RobloxLocked = true
|
||||
GearReference.Parent = TempSlot
|
||||
|
||||
|
||||
local ToolTipLabel = Instance.new("TextLabel")
|
||||
ToolTipLabel.Name = "ToolTipLabel"
|
||||
ToolTipLabel.RobloxLocked = true
|
||||
ToolTipLabel.Text = ""
|
||||
ToolTipLabel.BackgroundTransparency = 0.5
|
||||
ToolTipLabel.BorderSizePixel = 0
|
||||
ToolTipLabel.Visible = false
|
||||
ToolTipLabel.TextColor3 = Color3.new(1,1,1)
|
||||
ToolTipLabel.BackgroundColor3 = Color3.new(0,0,0)
|
||||
ToolTipLabel.TextStrokeTransparency = 0
|
||||
ToolTipLabel.Font = Enum.Font.ArialBold
|
||||
ToolTipLabel.FontSize = Enum.FontSize.Size14
|
||||
--ToolTipLabel.TextWrap = true
|
||||
ToolTipLabel.Size = UDim2.new(1,60,0,20)
|
||||
ToolTipLabel.Position = UDim2.new(0,-30,0,-30)
|
||||
ToolTipLabel.Parent = TempSlot
|
||||
|
||||
|
||||
local Kill = Instance.new("BoolValue")
|
||||
Kill.Name = "Kill"
|
||||
Kill.RobloxLocked = true
|
||||
Kill.Parent = TempSlot
|
||||
|
||||
local GearImage = Instance.new("ImageLabel")
|
||||
GearImage.Name = "GearImage"
|
||||
GearImage.BackgroundTransparency = 1
|
||||
GearImage.Position = UDim2.new(0, 0, 0, 0)
|
||||
GearImage.Size = UDim2.new(1, 0, 1, 0)
|
||||
GearImage.ZIndex = 5.0
|
||||
GearImage.RobloxLocked = true
|
||||
GearImage.Parent = TempSlot
|
||||
|
||||
local SlotNumber = Instance.new("TextLabel")
|
||||
SlotNumber.Name = "SlotNumber"
|
||||
SlotNumber.BackgroundTransparency = 1
|
||||
SlotNumber.BorderSizePixel = 0
|
||||
SlotNumber.Font = Enum.Font.ArialBold
|
||||
SlotNumber.FontSize = Enum.FontSize.Size18
|
||||
SlotNumber.Position = UDim2.new(0, 0, 0, 0)
|
||||
SlotNumber.Size = UDim2.new(0,10,0,15)
|
||||
SlotNumber.TextColor3 = Color3.new(1,1,1)
|
||||
SlotNumber.TextTransparency = 0
|
||||
SlotNumber.TextXAlignment = Enum.TextXAlignment.Left
|
||||
SlotNumber.TextYAlignment = Enum.TextYAlignment.Bottom
|
||||
SlotNumber.RobloxLocked = true
|
||||
SlotNumber.Parent = TempSlot
|
||||
SlotNumber.ZIndex = 5
|
||||
|
||||
if IsTouchDevice() then
|
||||
SlotNumber.Visible = false
|
||||
end
|
||||
|
||||
local SlotNumberDownShadow = SlotNumber:Clone()
|
||||
SlotNumberDownShadow.Name = "SlotNumberDownShadow"
|
||||
SlotNumberDownShadow.TextColor3 = Color3.new(0,0,0)
|
||||
SlotNumberDownShadow.Position = UDim2.new(0, 1, 0, -1)
|
||||
SlotNumberDownShadow.Parent = TempSlot
|
||||
SlotNumberDownShadow.ZIndex = 2
|
||||
|
||||
local SlotNumberUpShadow = SlotNumberDownShadow:Clone()
|
||||
SlotNumberUpShadow.Name = "SlotNumberUpShadow"
|
||||
SlotNumberUpShadow.Position = UDim2.new(0, -1, 0, -1)
|
||||
SlotNumberUpShadow.Parent = TempSlot
|
||||
|
||||
local GearText = Instance.new("TextLabel")
|
||||
GearText.RobloxLocked = true
|
||||
GearText.Name = "GearText"
|
||||
GearText.BackgroundTransparency = 1
|
||||
GearText.Font = Enum.Font.Arial
|
||||
GearText.FontSize = Enum.FontSize.Size14
|
||||
GearText.Position = UDim2.new(0,-8,0,-8)
|
||||
GearText.Size = UDim2.new(1,16,1,16)
|
||||
GearText.Text = ""
|
||||
GearText.TextColor3 = Color3.new(1,1,1)
|
||||
GearText.TextWrap = true
|
||||
GearText.Parent = TempSlot
|
||||
|
||||
--- Great, now lets make the inventory!
|
||||
|
||||
local Backpack = Instance.new("Frame")
|
||||
Backpack.RobloxLocked = true
|
||||
Backpack.Visible = false
|
||||
Backpack.Name = "Backpack"
|
||||
Backpack.Position = UDim2.new(0.5, 0, 0.5, 0)
|
||||
Backpack.BackgroundColor3 = Color3.new(32/255, 32/255, 32/255)
|
||||
Backpack.BackgroundTransparency = 0.0
|
||||
Backpack.BorderSizePixel = 0
|
||||
Backpack.Parent = gui
|
||||
Backpack.Active = true
|
||||
|
||||
-- Backpack Children
|
||||
local SwapSlot = Instance.new("BoolValue")
|
||||
SwapSlot.RobloxLocked = true
|
||||
SwapSlot.Name = "SwapSlot"
|
||||
SwapSlot.Parent = Backpack
|
||||
|
||||
-- SwapSlot Children
|
||||
local Slot = Instance.new("IntValue")
|
||||
Slot.RobloxLocked = true
|
||||
Slot.Name = "Slot"
|
||||
Slot.Parent = SwapSlot
|
||||
|
||||
local GearButton = Instance.new("ObjectValue")
|
||||
GearButton.RobloxLocked = true
|
||||
GearButton.Name = "GearButton"
|
||||
GearButton.Parent = SwapSlot
|
||||
|
||||
local Tabs = Instance.new("Frame")
|
||||
Tabs.Name = "Tabs"
|
||||
Tabs.Visible = false
|
||||
Tabs.Active = false
|
||||
Tabs.RobloxLocked = true
|
||||
Tabs.BackgroundColor3 = Color3.new(0,0,0)
|
||||
Tabs.BackgroundTransparency = 0.08
|
||||
Tabs.BorderSizePixel = 0
|
||||
Tabs.Position = UDim2.new(0,0,-0.1,-4)
|
||||
Tabs.Size = UDim2.new(1,0,0.1,4)
|
||||
Tabs.Parent = Backpack
|
||||
|
||||
-- Tabs Children
|
||||
|
||||
local tabLine = Instance.new("Frame")
|
||||
tabLine.RobloxLocked = true
|
||||
tabLine.Name = "TabLine"
|
||||
tabLine.BackgroundColor3 = Color3.new(53/255, 53/255, 53/255)
|
||||
tabLine.BorderSizePixel = 0
|
||||
tabLine.Position = UDim2.new(0,5,1,-4)
|
||||
tabLine.Size = UDim2.new(1,-10,0,4)
|
||||
tabLine.ZIndex = 2
|
||||
tabLine.Parent = Tabs
|
||||
|
||||
local InventoryButton = Instance.new("TextButton")
|
||||
InventoryButton.RobloxLocked = true
|
||||
InventoryButton.Name = "InventoryButton"
|
||||
InventoryButton.Size = UDim2.new(0,60,0,30)
|
||||
InventoryButton.Position = UDim2.new(0,7,1,-31)
|
||||
InventoryButton.BackgroundColor3 = Color3.new(1,1,1)
|
||||
InventoryButton.BorderColor3 = Color3.new(1,1,1)
|
||||
InventoryButton.Font = Enum.Font.ArialBold
|
||||
InventoryButton.FontSize = Enum.FontSize.Size18
|
||||
InventoryButton.Text = "Gear"
|
||||
InventoryButton.AutoButtonColor = false
|
||||
InventoryButton.TextColor3 = Color3.new(0,0,0)
|
||||
InventoryButton.Selected = true
|
||||
InventoryButton.Active = true
|
||||
InventoryButton.ZIndex = 3
|
||||
InventoryButton.Parent = Tabs
|
||||
|
||||
if game.CoreGui.Version >= 8 then
|
||||
local WardrobeButton = Instance.new("TextButton")
|
||||
WardrobeButton.RobloxLocked = true
|
||||
WardrobeButton.Name = "WardrobeButton"
|
||||
WardrobeButton.Size = UDim2.new(0,90,0,30)
|
||||
WardrobeButton.Position = UDim2.new(0,77,1,-31)
|
||||
WardrobeButton.BackgroundColor3 = Color3.new(0,0,0)
|
||||
WardrobeButton.BorderColor3 = Color3.new(1,1,1)
|
||||
WardrobeButton.Font = Enum.Font.ArialBold
|
||||
WardrobeButton.FontSize = Enum.FontSize.Size18
|
||||
WardrobeButton.Text = "Wardrobe"
|
||||
WardrobeButton.AutoButtonColor = false
|
||||
WardrobeButton.TextColor3 = Color3.new(1,1,1)
|
||||
WardrobeButton.Selected = false
|
||||
WardrobeButton.Active = true
|
||||
WardrobeButton.Parent = Tabs
|
||||
end
|
||||
|
||||
local closeButton = Instance.new("TextButton")
|
||||
closeButton.RobloxLocked = true
|
||||
closeButton.Name = "CloseButton"
|
||||
closeButton.Font = Enum.Font.ArialBold
|
||||
closeButton.FontSize = Enum.FontSize.Size24
|
||||
closeButton.Position = UDim2.new(1,-33,0,4)
|
||||
closeButton.Size = UDim2.new(0,30,0,30)
|
||||
closeButton.Style = Enum.ButtonStyle.RobloxButton
|
||||
closeButton.Text = ""
|
||||
closeButton.TextColor3 = Color3.new(1,1,1)
|
||||
closeButton.Parent = Tabs
|
||||
closeButton.Modal = true
|
||||
|
||||
--closeButton child
|
||||
local XImage = Instance.new("ImageLabel")
|
||||
XImage.RobloxLocked = true
|
||||
XImage.Name = "XImage"
|
||||
game:GetService("ContentProvider"):Preload("http://www.jarfeh.xyz/asset/?id=75547445")
|
||||
XImage.Image = "http://www.jarfeh.xyz/asset/?id=75547445" --TODO: move to rbxasset
|
||||
XImage.BackgroundTransparency = 1
|
||||
XImage.Position = UDim2.new(-.25,-1,-.25,-1)
|
||||
XImage.Size = UDim2.new(1.5,2,1.5,2)
|
||||
XImage.ZIndex = 2
|
||||
XImage.Parent = closeButton
|
||||
|
||||
-- Generic Search gui used across backpack
|
||||
local SearchFrame = Instance.new("Frame")
|
||||
SearchFrame.RobloxLocked = true
|
||||
SearchFrame.Name = "SearchFrame"
|
||||
SearchFrame.BackgroundTransparency = 1
|
||||
SearchFrame.Position = UDim2.new(1,-220,0,2)
|
||||
SearchFrame.Size = UDim2.new(0,220,0,24)
|
||||
SearchFrame.Parent = Backpack
|
||||
|
||||
-- SearchFrame Children
|
||||
local SearchButton = Instance.new("ImageButton")
|
||||
SearchButton.RobloxLocked = true
|
||||
SearchButton.Name = "SearchButton"
|
||||
SearchButton.Size = UDim2.new(0,25,0,25)
|
||||
SearchButton.BackgroundTransparency = 1
|
||||
SearchButton.Image = "rbxasset://textures/ui/SearchIcon.png"
|
||||
SearchButton.Parent = SearchFrame
|
||||
|
||||
local SearchBoxFrame = Instance.new("TextButton")
|
||||
SearchBoxFrame.RobloxLocked = true
|
||||
SearchBoxFrame.Position = UDim2.new(0,25,0,0)
|
||||
SearchBoxFrame.Size = UDim2.new(1,-28,0,26)
|
||||
SearchBoxFrame.Name = "SearchBoxFrame"
|
||||
SearchBoxFrame.Text = ""
|
||||
SearchBoxFrame.Style = Enum.ButtonStyle.RobloxButton
|
||||
SearchBoxFrame.Parent = SearchFrame
|
||||
|
||||
-- SearchBoxFrame Children
|
||||
local SearchBox = Instance.new("TextBox")
|
||||
SearchBox.RobloxLocked = true
|
||||
SearchBox.Name = "SearchBox"
|
||||
SearchBox.BackgroundTransparency = 1
|
||||
SearchBox.Font = Enum.Font.ArialBold
|
||||
SearchBox.FontSize = Enum.FontSize.Size12
|
||||
SearchBox.Position = UDim2.new(0,-5,0,-5)
|
||||
SearchBox.Size = UDim2.new(1,10,1,10)
|
||||
SearchBox.TextColor3 = Color3.new(1,1,1)
|
||||
SearchBox.TextXAlignment = Enum.TextXAlignment.Left
|
||||
SearchBox.ZIndex = 2
|
||||
SearchBox.TextWrap = true
|
||||
SearchBox.Text = "Search..."
|
||||
SearchBox.Parent = SearchBoxFrame
|
||||
|
||||
|
||||
local ResetButton = Instance.new("TextButton")
|
||||
ResetButton.RobloxLocked = true
|
||||
ResetButton.Visible = false
|
||||
ResetButton.Name = "ResetButton"
|
||||
ResetButton.Position = UDim2.new(1,-26,0,3)
|
||||
ResetButton.Size = UDim2.new(0,20,0,20)
|
||||
ResetButton.Style = Enum.ButtonStyle.RobloxButtonDefault
|
||||
ResetButton.Text = "X"
|
||||
ResetButton.TextColor3 = Color3.new(1,1,1)
|
||||
ResetButton.Font = Enum.Font.ArialBold
|
||||
ResetButton.FontSize = Enum.FontSize.Size18
|
||||
ResetButton.ZIndex = 3
|
||||
ResetButton.Parent = SearchFrame
|
||||
|
||||
------------------------------- GEAR -------------------------------------------------------
|
||||
local Gear = Instance.new("Frame")
|
||||
Gear.Name = "Gear"
|
||||
Gear.RobloxLocked = true
|
||||
Gear.BackgroundTransparency = 1
|
||||
Gear.Size = UDim2.new(1,0,1,0)
|
||||
Gear.Parent = Backpack
|
||||
|
||||
-- Gear Children
|
||||
local AssetsList = Instance.new("Frame")
|
||||
AssetsList.RobloxLocked = true
|
||||
AssetsList.Name = "AssetsList"
|
||||
AssetsList.BackgroundTransparency = 1
|
||||
AssetsList.Size = UDim2.new(0.2,0,1,0)
|
||||
AssetsList.Style = Enum.FrameStyle.RobloxSquare
|
||||
AssetsList.Visible = false
|
||||
AssetsList.Parent = Gear
|
||||
|
||||
local GearGrid = Instance.new("Frame")
|
||||
GearGrid.RobloxLocked = true
|
||||
GearGrid.Name = "GearGrid"
|
||||
GearGrid.Size = UDim2.new(0.95, 0, 1, 0)
|
||||
GearGrid.BackgroundTransparency = 1
|
||||
GearGrid.Parent = Gear
|
||||
|
||||
|
||||
local GearButton = Instance.new("ImageButton")
|
||||
GearButton.RobloxLocked = true
|
||||
GearButton.Visible = false
|
||||
GearButton.Name = "GearButton"
|
||||
GearButton.Size = UDim2.new(0, 54, 0, 54)
|
||||
GearButton.Style = 'Custom'
|
||||
GearButton.Parent = GearGrid
|
||||
GearButton.BackgroundTransparency = 1.0
|
||||
|
||||
local slotBackground = Instance.new('ImageLabel')
|
||||
slotBackground.Name = 'Background'
|
||||
slotBackground.BackgroundTransparency = 1.0
|
||||
slotBackground.Image = 'http://www.jarfeh.xyz/asset/?id=97613075'
|
||||
slotBackground.Size = UDim2.new(1, 0, 1, 0)
|
||||
slotBackground.Parent = GearButton
|
||||
|
||||
|
||||
-- GearButton Children
|
||||
local GearReference = Instance.new("ObjectValue")
|
||||
GearReference.RobloxLocked = true
|
||||
GearReference.Name = "GearReference"
|
||||
GearReference.Parent = GearButton
|
||||
|
||||
local GreyOutButton = Instance.new("Frame")
|
||||
GreyOutButton.RobloxLocked = true
|
||||
GreyOutButton.Name = "GreyOutButton"
|
||||
GreyOutButton.BackgroundTransparency = 0.5
|
||||
GreyOutButton.Size = UDim2.new(1,0,1,0)
|
||||
GreyOutButton.Active = true
|
||||
GreyOutButton.Visible = false
|
||||
GreyOutButton.ZIndex = 3
|
||||
GreyOutButton.Parent = GearButton
|
||||
|
||||
local GearText = Instance.new("TextLabel")
|
||||
GearText.RobloxLocked = true
|
||||
GearText.Name = "GearText"
|
||||
GearText.BackgroundTransparency = 1
|
||||
GearText.Font = Enum.Font.Arial
|
||||
GearText.FontSize = Enum.FontSize.Size14
|
||||
GearText.Position = UDim2.new(0,-8,0,-8)
|
||||
GearText.Size = UDim2.new(1,16,1,16)
|
||||
GearText.Text = ""
|
||||
GearText.ZIndex = 2
|
||||
GearText.TextColor3 = Color3.new(1,1,1)
|
||||
GearText.TextWrap = true
|
||||
GearText.Parent = GearButton
|
||||
|
||||
local GearGridScrollingArea = Instance.new("Frame")
|
||||
GearGridScrollingArea.RobloxLocked = true
|
||||
GearGridScrollingArea.Name = "GearGridScrollingArea"
|
||||
GearGridScrollingArea.Position = UDim2.new(1, -19, 0, 35)
|
||||
GearGridScrollingArea.Size = UDim2.new(0, 17, 1, -45)
|
||||
GearGridScrollingArea.BackgroundTransparency = 1
|
||||
GearGridScrollingArea.Parent = Gear
|
||||
|
||||
local GearLoadouts = Instance.new("Frame")
|
||||
GearLoadouts.RobloxLocked = true
|
||||
GearLoadouts.Name = "GearLoadouts"
|
||||
GearLoadouts.BackgroundTransparency = 1
|
||||
GearLoadouts.Position = UDim2.new(0.7,23,0.5,1)
|
||||
GearLoadouts.Size = UDim2.new(0.3,-23,0.5,-1)
|
||||
GearLoadouts.Parent = Gear
|
||||
GearLoadouts.Visible = false
|
||||
|
||||
-- GearLoadouts Children
|
||||
local GearLoadoutsHeader = Instance.new("Frame")
|
||||
GearLoadoutsHeader.RobloxLocked = true
|
||||
GearLoadoutsHeader.Name = "GearLoadoutsHeader"
|
||||
GearLoadoutsHeader.BackgroundColor3 = Color3.new(0,0,0)
|
||||
GearLoadoutsHeader.BackgroundTransparency = 0.2
|
||||
GearLoadoutsHeader.BorderColor3 = Color3.new(1,0,0)
|
||||
GearLoadoutsHeader.Size = UDim2.new(1,2,0.15,-1)
|
||||
GearLoadoutsHeader.Parent = GearLoadouts
|
||||
|
||||
-- GearLoadoutsHeader Children
|
||||
local LoadoutsHeaderText = Instance.new("TextLabel")
|
||||
LoadoutsHeaderText.RobloxLocked = true
|
||||
LoadoutsHeaderText.Name = "LoadoutsHeaderText"
|
||||
LoadoutsHeaderText.BackgroundTransparency = 1
|
||||
LoadoutsHeaderText.Font = Enum.Font.ArialBold
|
||||
LoadoutsHeaderText.FontSize = Enum.FontSize.Size18
|
||||
LoadoutsHeaderText.Size = UDim2.new(1,0,1,0)
|
||||
LoadoutsHeaderText.Text = "Loadouts"
|
||||
LoadoutsHeaderText.TextColor3 = Color3.new(1,1,1)
|
||||
LoadoutsHeaderText.Parent = GearLoadoutsHeader
|
||||
|
||||
local GearLoadoutsScrollingArea = GearGridScrollingArea:clone()
|
||||
GearLoadoutsScrollingArea.RobloxLocked = true
|
||||
GearLoadoutsScrollingArea.Name = "GearLoadoutsScrollingArea"
|
||||
GearLoadoutsScrollingArea.Position = UDim2.new(1,-15,0.15,2)
|
||||
GearLoadoutsScrollingArea.Size = UDim2.new(0,17,0.85,-2)
|
||||
GearLoadoutsScrollingArea.Parent = GearLoadouts
|
||||
|
||||
local LoadoutsList = Instance.new("Frame")
|
||||
LoadoutsList.RobloxLocked = true
|
||||
LoadoutsList.Name = "LoadoutsList"
|
||||
LoadoutsList.Position = UDim2.new(0,0,0.15,2)
|
||||
LoadoutsList.Size = UDim2.new(1,-17,0.85,-2)
|
||||
LoadoutsList.Style = Enum.FrameStyle.RobloxSquare
|
||||
LoadoutsList.Parent = GearLoadouts
|
||||
|
||||
local GearPreview = Instance.new("Frame")
|
||||
GearPreview.RobloxLocked = true
|
||||
GearPreview.Name = "GearPreview"
|
||||
GearPreview.Position = UDim2.new(0.7,23,0,0)
|
||||
GearPreview.Size = UDim2.new(0.3,-28,0.5,-1)
|
||||
GearPreview.BackgroundTransparency = 1
|
||||
GearPreview.ZIndex = 7
|
||||
GearPreview.Parent = Gear
|
||||
|
||||
-- GearPreview Children
|
||||
local GearStats = Instance.new("Frame")
|
||||
GearStats.RobloxLocked = true
|
||||
GearStats.Name = "GearStats"
|
||||
GearStats.BackgroundTransparency = 1
|
||||
GearStats.Position = UDim2.new(0,0,0.75,0)
|
||||
GearStats.Size = UDim2.new(1,0,0.25,0)
|
||||
GearStats.ZIndex = 8
|
||||
GearStats.Parent = GearPreview
|
||||
|
||||
-- GearStats Children
|
||||
local GearName = Instance.new("TextLabel")
|
||||
GearName.RobloxLocked = true
|
||||
GearName.Name = "GearName"
|
||||
GearName.BackgroundTransparency = 1
|
||||
GearName.Font = Enum.Font.ArialBold
|
||||
GearName.FontSize = Enum.FontSize.Size18
|
||||
GearName.Position = UDim2.new(0,-3,0,0)
|
||||
GearName.Size = UDim2.new(1,6,1,5)
|
||||
GearName.Text = ""
|
||||
GearName.TextColor3 = Color3.new(1,1,1)
|
||||
GearName.TextWrap = true
|
||||
GearName.ZIndex = 9
|
||||
GearName.Parent = GearStats
|
||||
|
||||
local GearImage = Instance.new("ImageLabel")
|
||||
GearImage.RobloxLocked = true
|
||||
GearImage.Name = "GearImage"
|
||||
GearImage.Image = ""
|
||||
GearImage.BackgroundTransparency = 1
|
||||
GearImage.Position = UDim2.new(0.125,0,0,0)
|
||||
GearImage.Size = UDim2.new(0.75,0,0.75,0)
|
||||
GearImage.ZIndex = 8
|
||||
GearImage.Parent = GearPreview
|
||||
|
||||
--GearImage Children
|
||||
local GearIcons = Instance.new("Frame")
|
||||
GearIcons.BackgroundColor3 = Color3.new(0,0,0)
|
||||
GearIcons.BackgroundTransparency = 0.5
|
||||
GearIcons.BorderSizePixel = 0
|
||||
GearIcons.RobloxLocked = true
|
||||
GearIcons.Name = "GearIcons"
|
||||
GearIcons.Position = UDim2.new(0.4,2,0.85,-2)
|
||||
GearIcons.Size = UDim2.new(0.6,0,0.15,0)
|
||||
GearIcons.Visible = false
|
||||
GearIcons.ZIndex = 9
|
||||
GearIcons.Parent = GearImage
|
||||
|
||||
-- GearIcons Children
|
||||
local GenreImage = Instance.new("ImageLabel")
|
||||
GenreImage.RobloxLocked = true
|
||||
GenreImage.Name = "GenreImage"
|
||||
GenreImage.BackgroundColor3 = Color3.new(102/255,153/255,1)
|
||||
GenreImage.BackgroundTransparency = 0.5
|
||||
GenreImage.BorderSizePixel = 0
|
||||
GenreImage.Size = UDim2.new(0.25,0,1,0)
|
||||
GenreImage.Parent = GearIcons
|
||||
|
||||
local AttributeOneImage = GenreImage:clone()
|
||||
AttributeOneImage.RobloxLocked = true
|
||||
AttributeOneImage.Name = "AttributeOneImage"
|
||||
AttributeOneImage.BackgroundColor3 = Color3.new(1,51/255,0)
|
||||
AttributeOneImage.Position = UDim2.new(0.25,0,0,0)
|
||||
AttributeOneImage.Parent = GearIcons
|
||||
|
||||
local AttributeTwoImage = GenreImage:clone()
|
||||
AttributeTwoImage.RobloxLocked = true
|
||||
AttributeTwoImage.Name = "AttributeTwoImage"
|
||||
AttributeTwoImage.BackgroundColor3 = Color3.new(153/255,1,153/255)
|
||||
AttributeTwoImage.Position = UDim2.new(0.5,0,0,0)
|
||||
AttributeTwoImage.Parent = GearIcons
|
||||
|
||||
local AttributeThreeImage = GenreImage:clone()
|
||||
AttributeThreeImage.RobloxLocked = true
|
||||
AttributeThreeImage.Name = "AttributeThreeImage"
|
||||
AttributeThreeImage.BackgroundColor3 = Color3.new(0,0.5,0.5)
|
||||
AttributeThreeImage.Position = UDim2.new(0.75,0,0,0)
|
||||
AttributeThreeImage.Parent = GearIcons
|
||||
|
||||
------------------------------- WARDROBE -------------------------------------------------------
|
||||
if game.CoreGui.Version < 8 then
|
||||
-- no need for this to stick around, we aren't ready for wardrobe
|
||||
script:remove()
|
||||
return
|
||||
end
|
||||
|
||||
local function makeCharFrame(frameName, parent)
|
||||
local frame = Instance.new("Frame")
|
||||
frame.RobloxLocked = true
|
||||
frame.Size = UDim2.new(1,0,1,-70)
|
||||
frame.Position = UDim2.new(0,0,0,20)
|
||||
frame.Name = frameName
|
||||
frame.BackgroundTransparency = 1
|
||||
frame.Parent = parent
|
||||
frame.Visible = false
|
||||
return frame
|
||||
end
|
||||
local function makeZone( zoneName, image, size, position, parent )
|
||||
local zone = Instance.new("ImageLabel")
|
||||
zone.RobloxLocked = true
|
||||
zone.Name = zoneName
|
||||
zone.Image = image
|
||||
zone.Size = size
|
||||
zone.BackgroundTransparency = 1
|
||||
zone.Position = position
|
||||
zone.Parent = parent
|
||||
return zone
|
||||
end
|
||||
local function makeStyledButton( buttonName, size, position, parent, buttonStyle )
|
||||
local button = Instance.new("ImageButton")
|
||||
button.RobloxLocked = true
|
||||
button.Name = buttonName
|
||||
button.Size = size
|
||||
button.Position = position
|
||||
if buttonStyle then
|
||||
button.Style = buttonStyle
|
||||
else
|
||||
button.BackgroundColor3 = Color3.new(0,0,0)
|
||||
button.BorderColor3 = Color3.new(1,1,1)
|
||||
end
|
||||
button.Parent = parent
|
||||
return button
|
||||
end
|
||||
local function makeTextLabel( TextLabelName,text,position,parent )
|
||||
local label = Instance.new("TextLabel")
|
||||
label.RobloxLocked = true
|
||||
label.BackgroundTransparency = 1
|
||||
label.Size = UDim2.new(0,32,0,14)
|
||||
label.Name = TextLabelName
|
||||
label.Font = Enum.Font.Arial
|
||||
label.TextColor3 = Color3.new(1,1,1)
|
||||
label.FontSize = Enum.FontSize.Size14
|
||||
label.Text = text
|
||||
label.Position = position
|
||||
label.Parent = parent
|
||||
end
|
||||
|
||||
|
||||
local Wardrobe = Instance.new("Frame")
|
||||
Wardrobe.Name = "Wardrobe"
|
||||
Wardrobe.RobloxLocked = true
|
||||
Wardrobe.BackgroundTransparency = 1
|
||||
Wardrobe.Visible = false
|
||||
Wardrobe.Size = UDim2.new(1,0,1,0)
|
||||
Wardrobe.Parent = Backpack
|
||||
|
||||
local AssetList = Instance.new("Frame")
|
||||
AssetList.RobloxLocked = true
|
||||
AssetList.Name = "AssetList"
|
||||
AssetList.Position = UDim2.new(0,4,0,5)
|
||||
AssetList.Size = UDim2.new(0,85,1,-5)
|
||||
AssetList.BackgroundTransparency = 1
|
||||
AssetList.Visible = true
|
||||
AssetList.Parent = Wardrobe
|
||||
|
||||
local PreviewAssetFrame = Instance.new("Frame")
|
||||
PreviewAssetFrame.RobloxLocked = true
|
||||
PreviewAssetFrame.Name = "PreviewAssetFrame"
|
||||
PreviewAssetFrame.BackgroundTransparency = 1
|
||||
PreviewAssetFrame.Position = UDim2.new(1,-240,0,30)
|
||||
PreviewAssetFrame.Size = UDim2.new(0,250,0,250)
|
||||
PreviewAssetFrame.Parent = Wardrobe
|
||||
|
||||
local PreviewAssetBacking = Instance.new("TextButton")
|
||||
PreviewAssetBacking.RobloxLocked = true
|
||||
PreviewAssetBacking.Name = "PreviewAssetBacking"
|
||||
PreviewAssetBacking.Active = false
|
||||
PreviewAssetBacking.Text = ""
|
||||
PreviewAssetBacking.AutoButtonColor = false
|
||||
PreviewAssetBacking.Size = UDim2.new(1,0,1,0)
|
||||
PreviewAssetBacking.Style = Enum.ButtonStyle.RobloxButton
|
||||
PreviewAssetBacking.Visible = false
|
||||
PreviewAssetBacking.ZIndex = 9
|
||||
PreviewAssetBacking.Parent = PreviewAssetFrame
|
||||
|
||||
local PreviewAssetImage = Instance.new("ImageLabel")
|
||||
PreviewAssetImage.RobloxLocked = true
|
||||
PreviewAssetImage.Name = "PreviewAssetImage"
|
||||
PreviewAssetImage.BackgroundTransparency = 0.8
|
||||
PreviewAssetImage.Position = UDim2.new(0.5,-100,0,0)
|
||||
PreviewAssetImage.Size = UDim2.new(0,200,0,200)
|
||||
PreviewAssetImage.BorderSizePixel = 0
|
||||
PreviewAssetImage.ZIndex = 10
|
||||
PreviewAssetImage.Parent = PreviewAssetBacking
|
||||
|
||||
local AssetNameLabel = Instance.new("TextLabel")
|
||||
AssetNameLabel.Name = "AssetNameLabel"
|
||||
AssetNameLabel.RobloxLocked = true
|
||||
AssetNameLabel.BackgroundTransparency = 1
|
||||
AssetNameLabel.Position = UDim2.new(0,0,1,-20)
|
||||
AssetNameLabel.Size = UDim2.new(0.5,0,0,24)
|
||||
AssetNameLabel.ZIndex = 10
|
||||
AssetNameLabel.Font = Enum.Font.Arial
|
||||
AssetNameLabel.Text = ""
|
||||
AssetNameLabel.TextColor3 = Color3.new(1,1,1)
|
||||
AssetNameLabel.TextScaled = true
|
||||
AssetNameLabel.Parent = PreviewAssetBacking
|
||||
|
||||
local AssetTypeLabel = AssetNameLabel:clone()
|
||||
AssetTypeLabel.RobloxLocked = true
|
||||
AssetTypeLabel.Name = "AssetTypeLabel"
|
||||
AssetTypeLabel.TextScaled = false
|
||||
AssetTypeLabel.FontSize = Enum.FontSize.Size18
|
||||
AssetTypeLabel.Position = UDim2.new(0.5,3,1,-20)
|
||||
AssetTypeLabel.Parent = PreviewAssetBacking
|
||||
|
||||
|
||||
|
||||
local PreviewButton = Instance.new("TextButton")
|
||||
PreviewButton.RobloxLocked = true
|
||||
PreviewButton.Name = "PreviewButton"
|
||||
PreviewButton.Text = "Rotate"
|
||||
PreviewButton.BackgroundColor3 = Color3.new(0,0,0)
|
||||
PreviewButton.BackgroundTransparency = 0.5
|
||||
PreviewButton.BorderColor3 = Color3.new(1,1,1)
|
||||
PreviewButton.Position = UDim2.new(1.2,-62,1,-50)
|
||||
PreviewButton.Size = UDim2.new(0,125,0,50)
|
||||
PreviewButton.Font = Enum.Font.ArialBold
|
||||
PreviewButton.FontSize = Enum.FontSize.Size24
|
||||
PreviewButton.TextColor3 = Color3.new(1,1,1)
|
||||
PreviewButton.TextWrapped = true
|
||||
PreviewButton.TextStrokeTransparency = 0
|
||||
PreviewButton.Parent = Wardrobe
|
||||
|
||||
local CharacterPane = Instance.new("Frame")
|
||||
CharacterPane.RobloxLocked = true
|
||||
CharacterPane.Name = "CharacterPane"
|
||||
CharacterPane.Position = UDim2.new(1,-220,0,32)
|
||||
CharacterPane.Size = UDim2.new(0,220,1,-40)
|
||||
CharacterPane.BackgroundTransparency = 1
|
||||
CharacterPane.Visible = true
|
||||
CharacterPane.Parent = Wardrobe
|
||||
|
||||
--CharacterPane Children
|
||||
local FaceFrame = makeCharFrame("FacesFrame", CharacterPane)
|
||||
game:GetService("ContentProvider"):Preload("http://www.jarfeh.xyz/asset/?id=75460621")
|
||||
makeZone("FaceZone","http://www.jarfeh.xyz/asset/?id=75460621",UDim2.new(0,157,0,137),UDim2.new(0.5,-78,0.5,-68),FaceFrame)
|
||||
makeStyledButton("Face",UDim2.new(0,64,0,64),UDim2.new(0.5,-32,0.5,-135),FaceFrame)
|
||||
|
||||
local HeadFrame = makeCharFrame("HeadsFrame", CharacterPane)
|
||||
makeZone("FaceZone","http://www.jarfeh.xyz/asset/?id=75460621",UDim2.new(0,157,0,137),UDim2.new(0.5,-78,0.5,-68),HeadFrame)
|
||||
makeStyledButton("Head",UDim2.new(0,64,0,64),UDim2.new(0.5,-32,0.5,-135),HeadFrame)
|
||||
|
||||
local HatsFrame = makeCharFrame("HatsFrame", CharacterPane)
|
||||
game:GetService("ContentProvider"):Preload("http://www.jarfeh.xyz/asset/?id=75457888")
|
||||
local HatsZone = makeZone("HatsZone","http://www.jarfeh.xyz/asset/?id=75457888",UDim2.new(0,186,0,184),UDim2.new(0.5,-93,0.5,-100), HatsFrame)
|
||||
makeStyledButton("Hat1Button",UDim2.new(0,64,0,64),UDim2.new(0,-1,0,-1),HatsZone,Enum.ButtonStyle.RobloxButton)
|
||||
makeStyledButton("Hat2Button",UDim2.new(0,64,0,64),UDim2.new(0,63,0,-1),HatsZone,Enum.ButtonStyle.RobloxButton)
|
||||
makeStyledButton("Hat3Button",UDim2.new(0,64,0,64),UDim2.new(0,127,0,-1),HatsZone,Enum.ButtonStyle.RobloxButton)
|
||||
|
||||
local PantsFrame = makeCharFrame("PantsFrame", CharacterPane)
|
||||
game:GetService("ContentProvider"):Preload("http://www.jarfeh.xyz/asset/?id=75457920")
|
||||
makeZone("PantsZone","http://www.jarfeh.xyz/asset/?id=75457920",UDim2.new(0,121,0,99),UDim2.new(0.5,-60,0.5,-100),PantsFrame)
|
||||
|
||||
local pantFrame = Instance.new("Frame")
|
||||
pantFrame.RobloxLocked = true
|
||||
pantFrame.Size = UDim2.new(0,25,0,56)
|
||||
pantFrame.Position = UDim2.new(0.5,-26,0.5,0)
|
||||
pantFrame.BackgroundColor3 = Color3.new(0,0,0)
|
||||
pantFrame.BorderColor3 = Color3.new(1,1,1)
|
||||
pantFrame.Name = "PantFrame"
|
||||
pantFrame.Parent = PantsFrame
|
||||
|
||||
local otherPantFrame = pantFrame:clone()
|
||||
otherPantFrame.Position = UDim2.new(0.5,3,0.5,0)
|
||||
otherPantFrame.RobloxLocked = true
|
||||
otherPantFrame.Parent = PantsFrame
|
||||
|
||||
local CurrentPants = Instance.new("ImageButton")
|
||||
CurrentPants.RobloxLocked = true
|
||||
CurrentPants.BackgroundTransparency = 1
|
||||
CurrentPants.ZIndex = 2
|
||||
CurrentPants.Name = "CurrentPants"
|
||||
CurrentPants.Position = UDim2.new(0.5,-31,0.5,-4)
|
||||
CurrentPants.Size = UDim2.new(0,54,0,59)
|
||||
CurrentPants.Parent = PantsFrame
|
||||
|
||||
local MeshFrame = makeCharFrame("PackagesFrame", CharacterPane)
|
||||
local torsoButton = makeStyledButton("TorsoMeshButton", UDim2.new(0,64,0,64),UDim2.new(0.5,-32,0.5,-110),MeshFrame,Enum.ButtonStyle.RobloxButton)
|
||||
makeTextLabel("TorsoLabel","Torso",UDim2.new(0.5,-16,0,-25),torsoButton)
|
||||
local leftLegButton = makeStyledButton("LeftLegMeshButton", UDim2.new(0,64,0,64),UDim2.new(0.5,0,0.5,-25),MeshFrame,Enum.ButtonStyle.RobloxButton)
|
||||
makeTextLabel("LeftLegLabel","Left Leg",UDim2.new(0.5,-16,0,-25),leftLegButton)
|
||||
local rightLegButton = makeStyledButton("RightLegMeshButton", UDim2.new(0,64,0,64),UDim2.new(0.5,-64,0.5,-25),MeshFrame,Enum.ButtonStyle.RobloxButton)
|
||||
makeTextLabel("RightLegLabel","Right Leg",UDim2.new(0.5,-16,0,-25),rightLegButton)
|
||||
local rightArmButton = makeStyledButton("RightArmMeshButton", UDim2.new(0,64,0,64),UDim2.new(0.5,-96,0.5,-110),MeshFrame,Enum.ButtonStyle.RobloxButton)
|
||||
makeTextLabel("RightArmLabel","Right Arm",UDim2.new(0.5,-16,0,-25),rightArmButton)
|
||||
local leftArmButton = makeStyledButton("LeftArmMeshButton", UDim2.new(0,64,0,64),UDim2.new(0.5,32,0.5,-110),MeshFrame,Enum.ButtonStyle.RobloxButton)
|
||||
makeTextLabel("LeftArmLabel","Left Arm",UDim2.new(0.5,-16,0,-25),leftArmButton)
|
||||
|
||||
local TShirtFrame = makeCharFrame("T-ShirtsFrame",CharacterPane)
|
||||
game:GetService("ContentProvider"):Preload("http://www.jarfeh.xyz/asset/?id=75460642")
|
||||
makeZone("TShirtZone","http://www.jarfeh.xyz/asset/?id=75460642",UDim2.new(0,121,0,154),UDim2.new(0.5,-60,0.5,-100),TShirtFrame)
|
||||
makeStyledButton("TShirtButton", UDim2.new(0,64,0,64),UDim2.new(0.5,-32,0.5,-64),TShirtFrame)
|
||||
|
||||
|
||||
local ShirtFrame = makeCharFrame("ShirtsFrame", CharacterPane)
|
||||
makeZone("ShirtZone","http://www.jarfeh.xyz/asset/?id=75460642",UDim2.new(0,121,0,154),UDim2.new(0.5,-60,0.5,-100),ShirtFrame)
|
||||
makeStyledButton("ShirtButton", UDim2.new(0,64,0,64),UDim2.new(0.5,-32,0.5,-64),ShirtFrame)
|
||||
|
||||
|
||||
local ColorFrame = makeCharFrame("ColorFrame", CharacterPane)
|
||||
game:GetService("ContentProvider"):Preload("http://www.jarfeh.xyz/asset/?id=76049888")
|
||||
local ColorZone = makeZone("ColorZone","http://www.jarfeh.xyz/asset/?id=76049888", UDim2.new(0,120,0,150),UDim2.new(0.5,-60,0.5,-100),ColorFrame)
|
||||
makeStyledButton("Head",UDim2.new(0.26,0,0.19,0),UDim2.new(0.37,0,0.02,0),ColorZone).AutoButtonColor = false
|
||||
makeStyledButton("LeftArm",UDim2.new(0.19,0,0.36,0),UDim2.new(0.78,0,0.26,0),ColorZone).AutoButtonColor = false
|
||||
makeStyledButton("RightArm",UDim2.new(0.19,0,0.36,0),UDim2.new(0.025,0,0.26,0),ColorZone).AutoButtonColor = false
|
||||
makeStyledButton("Torso",UDim2.new(0.43,0,0.36,0),UDim2.new(0.28,0,0.26,0),ColorZone).AutoButtonColor = false
|
||||
makeStyledButton("RightLeg",UDim2.new(0.19,0,0.31,0),UDim2.new(0.275,0,0.67,0),ColorZone).AutoButtonColor = false
|
||||
makeStyledButton("LeftLeg",UDim2.new(0.19,0,0.31,0),UDim2.new(0.525,0,0.67,0),ColorZone).AutoButtonColor = false
|
||||
|
||||
-- Character Panel label (shows what category we are currently browsing)
|
||||
local CategoryLabel = Instance.new("TextLabel")
|
||||
CategoryLabel.RobloxLocked = true
|
||||
CategoryLabel.Name = "CategoryLabel"
|
||||
CategoryLabel.BackgroundTransparency = 1
|
||||
CategoryLabel.Font = Enum.Font.ArialBold
|
||||
CategoryLabel.FontSize = Enum.FontSize.Size18
|
||||
CategoryLabel.Position = UDim2.new(0,0,0,-7)
|
||||
CategoryLabel.Size = UDim2.new(1,0,0,20)
|
||||
CategoryLabel.TextXAlignment = Enum.TextXAlignment.Center
|
||||
CategoryLabel.Text = "All"
|
||||
CategoryLabel.TextColor3 = Color3.new(1,1,1)
|
||||
CategoryLabel.Parent = CharacterPane
|
||||
|
||||
--Save Button
|
||||
local SaveButton = Instance.new("TextButton")
|
||||
SaveButton.RobloxLocked = true
|
||||
SaveButton.Name = "SaveButton"
|
||||
SaveButton.Size = UDim2.new(0.6,0,0,50)
|
||||
SaveButton.Position = UDim2.new(0.2,0,1,-50)
|
||||
SaveButton.Style = Enum.ButtonStyle.RobloxButton
|
||||
SaveButton.Selected = false
|
||||
SaveButton.Font = Enum.Font.ArialBold
|
||||
SaveButton.FontSize = Enum.FontSize.Size18
|
||||
SaveButton.Text = "Save"
|
||||
SaveButton.TextColor3 = Color3.new(1,1,1)
|
||||
SaveButton.Parent = CharacterPane
|
||||
|
||||
-- no need for this to stick around
|
||||
|
||||
script:Destroy()
|
||||
|
|
@ -1,416 +0,0 @@
|
|||
%13%
|
||||
-- This script manages context switches in the backpack (Gear to Wardrobe, etc.) and player state changes. Also manages global functions across different tabs (currently only search)
|
||||
if game.CoreGui.Version < 7 then return end -- peace out if we aren't using the right client
|
||||
|
||||
-- basic functions
|
||||
local function waitForChild(instance, name)
|
||||
while not instance:FindFirstChild(name) do
|
||||
instance.ChildAdded:wait()
|
||||
end
|
||||
return instance:FindFirstChild(name)
|
||||
end
|
||||
local function waitForProperty(instance, property)
|
||||
while not instance[property] do
|
||||
instance.Changed:wait()
|
||||
end
|
||||
end
|
||||
|
||||
-- don't do anything if we are in an empty game
|
||||
waitForChild(game,"Players")
|
||||
if #game.Players:GetChildren() < 1 then
|
||||
game.Players.ChildAdded:wait()
|
||||
end
|
||||
-- make sure everything is loaded in before we do anything
|
||||
-- get our local player
|
||||
waitForProperty(game.Players,"LocalPlayer")
|
||||
local player = game.Players.LocalPlayer
|
||||
|
||||
|
||||
|
||||
------------------------ Locals ------------------------------
|
||||
local backpack = script.Parent
|
||||
waitForChild(backpack,"Gear")
|
||||
|
||||
local screen = script.Parent.Parent
|
||||
assert(screen:IsA("ScreenGui"))
|
||||
|
||||
waitForChild(backpack, "Tabs")
|
||||
waitForChild(backpack.Tabs, "CloseButton")
|
||||
local closeButton = backpack.Tabs.CloseButton
|
||||
|
||||
waitForChild(backpack.Tabs, "InventoryButton")
|
||||
local inventoryButton = backpack.Tabs.InventoryButton
|
||||
if game.CoreGui.Version >= 8 then
|
||||
waitForChild(backpack.Tabs, "WardrobeButton")
|
||||
local wardrobeButton = backpack.Tabs.WardrobeButton
|
||||
end
|
||||
waitForChild(backpack.Parent,"ControlFrame")
|
||||
local backpackButton = waitForChild(backpack.Parent.ControlFrame,"BackpackButton")
|
||||
local currentTab = "gear"
|
||||
|
||||
local searchFrame = waitForChild(backpack,"SearchFrame")
|
||||
waitForChild(backpack.SearchFrame,"SearchBoxFrame")
|
||||
local searchBox = waitForChild(backpack.SearchFrame.SearchBoxFrame,"SearchBox")
|
||||
local searchButton = waitForChild(backpack.SearchFrame,"SearchButton")
|
||||
local resetButton = waitForChild(backpack.SearchFrame,"ResetButton")
|
||||
|
||||
local robloxGui = waitForChild(Game.CoreGui, 'RobloxGui')
|
||||
local currentLoadout = waitForChild(robloxGui, 'CurrentLoadout')
|
||||
local loadoutBackground = waitForChild(currentLoadout, 'Background')
|
||||
|
||||
local canToggle = true
|
||||
local readyForNextEvent = true
|
||||
local backpackIsOpen = false
|
||||
local active = true
|
||||
|
||||
local humanoidDiedCon = nil
|
||||
|
||||
local backpackButtonPos
|
||||
|
||||
local guiTweenSpeed = 0.25 -- how quickly we open/close the backpack
|
||||
|
||||
local searchDefaultText = "Search..."
|
||||
local tilde = "~"
|
||||
local backquote = "`"
|
||||
|
||||
local backpackSize = UDim2.new(0, 600, 0, 400)
|
||||
|
||||
if robloxGui.AbsoluteSize.Y <= 320 then
|
||||
backpackSize = UDim2.new(0, 200, 0, 140)
|
||||
end
|
||||
|
||||
------------------------ End Locals ---------------------------
|
||||
|
||||
|
||||
---------------------------------------- Public Event Setup ----------------------------------------
|
||||
|
||||
function createPublicEvent(eventName)
|
||||
assert(eventName, "eventName is nil")
|
||||
assert(tostring(eventName),"eventName is not a string")
|
||||
|
||||
local newEvent = Instance.new("BindableEvent")
|
||||
newEvent.Name = tostring(eventName)
|
||||
newEvent.Parent = script
|
||||
|
||||
return newEvent
|
||||
end
|
||||
|
||||
function createPublicFunction(funcName, invokeFunc)
|
||||
assert(funcName, "funcName is nil")
|
||||
assert(tostring(funcName), "funcName is not a string")
|
||||
assert(invokeFunc, "invokeFunc is nil")
|
||||
assert(type(invokeFunc) == "function", "invokeFunc should be of type 'function'")
|
||||
|
||||
local newFunction = Instance.new("BindableFunction")
|
||||
newFunction.Name = tostring(funcName)
|
||||
newFunction.OnInvoke = invokeFunc
|
||||
newFunction.Parent = script
|
||||
|
||||
return newFunction
|
||||
end
|
||||
|
||||
-- Events
|
||||
local resizeEvent = createPublicEvent("ResizeEvent")
|
||||
local backpackOpenEvent = createPublicEvent("BackpackOpenEvent")
|
||||
local backpackCloseEvent = createPublicEvent("BackpackCloseEvent")
|
||||
local tabClickedEvent = createPublicEvent("TabClickedEvent")
|
||||
local searchRequestedEvent = createPublicEvent("SearchRequestedEvent")
|
||||
---------------------------------------- End Public Event Setup ----------------------------------------
|
||||
|
||||
|
||||
|
||||
--------------------------- Internal Functions ----------------------------------------
|
||||
|
||||
function deactivateBackpack()
|
||||
backpack.Visible = false
|
||||
active = false
|
||||
end
|
||||
|
||||
function activateBackpack()
|
||||
initHumanoidDiedConnections()
|
||||
active = true
|
||||
backpack.Visible = backpackIsOpen
|
||||
if backpackIsOpen then
|
||||
toggleBackpack()
|
||||
end
|
||||
end
|
||||
|
||||
function initHumanoidDiedConnections()
|
||||
if humanoidDiedCon then
|
||||
humanoidDiedCon:disconnect()
|
||||
end
|
||||
waitForProperty(game.Players.LocalPlayer,"Character")
|
||||
waitForChild(game.Players.LocalPlayer.Character,"Humanoid")
|
||||
humanoidDiedCon = game.Players.LocalPlayer.Character.Humanoid.Died:connect(deactivateBackpack)
|
||||
end
|
||||
|
||||
local hideBackpack = function()
|
||||
backpackIsOpen = false
|
||||
readyForNextEvent = false
|
||||
backpackButton.Selected = false
|
||||
resetSearch()
|
||||
backpackCloseEvent:Fire(currentTab)
|
||||
backpack.Tabs.Visible = false
|
||||
searchFrame.Visible = false
|
||||
backpack:TweenSizeAndPosition(UDim2.new(0, backpackSize.X.Offset,0, 0), UDim2.new(0.5, -backpackSize.X.Offset/2, 1, -85), Enum.EasingDirection.Out, Enum.EasingStyle.Quad, guiTweenSpeed, true,
|
||||
function()
|
||||
game.GuiService:RemoveCenterDialog(backpack)
|
||||
backpack.Visible = false
|
||||
backpackButton.Selected = false
|
||||
end)
|
||||
delay(guiTweenSpeed,function()
|
||||
game.GuiService:RemoveCenterDialog(backpack)
|
||||
backpack.Visible = false
|
||||
backpackButton.Selected = false
|
||||
readyForNextEvent = true
|
||||
canToggle = true
|
||||
end)
|
||||
end
|
||||
|
||||
function showBackpack()
|
||||
game.GuiService:AddCenterDialog(backpack, Enum.CenterDialogType.PlayerInitiatedDialog,
|
||||
function()
|
||||
backpack.Visible = true
|
||||
backpackButton.Selected = true
|
||||
end,
|
||||
function()
|
||||
backpack.Visible = false
|
||||
backpackButton.Selected = false
|
||||
end)
|
||||
backpack.Visible = true
|
||||
backpackButton.Selected = true
|
||||
backpack:TweenSizeAndPosition(backpackSize, UDim2.new(0.5, -backpackSize.X.Offset/2, 1, -backpackSize.Y.Offset - 88), Enum.EasingDirection.Out, Enum.EasingStyle.Quad, guiTweenSpeed, true)
|
||||
delay(guiTweenSpeed,function()
|
||||
backpack.Tabs.Visible = false
|
||||
searchFrame.Visible = true
|
||||
backpackOpenEvent:Fire(currentTab)
|
||||
canToggle = true
|
||||
readyForNextEvent = true
|
||||
backpackButton.Image = 'http://www.jarfeh.xyz/asset/?id=97644093'
|
||||
backpackButton.Position = UDim2.new(0.5, -60, 1, -backpackSize.Y.Offset - 103)
|
||||
end)
|
||||
end
|
||||
|
||||
function toggleBackpack()
|
||||
if not game.Players.LocalPlayer then return end
|
||||
if not game.Players.LocalPlayer["Character"] then return end
|
||||
if not canToggle then return end
|
||||
if not readyForNextEvent then return end
|
||||
readyForNextEvent = false
|
||||
canToggle = false
|
||||
|
||||
backpackIsOpen = not backpackIsOpen
|
||||
|
||||
if backpackIsOpen then
|
||||
loadoutBackground.Image = 'http://www.jarfeh.xyz/asset/?id=97623721'
|
||||
loadoutBackground.Position = UDim2.new(-0.03, 0, -0.17, 0)
|
||||
loadoutBackground.Size = UDim2.new(1.05, 0, 1.25, 0)
|
||||
loadoutBackground.ZIndex = 2.0
|
||||
loadoutBackground.Visible = true
|
||||
--backpackButton.Position = UDim2.new(0.5, -60, 1, -503)
|
||||
showBackpack()
|
||||
else
|
||||
backpackButton.Position = UDim2.new(0.5, -60, 1, -44)
|
||||
loadoutBackground.Visible = false
|
||||
backpackButton.Selected = false
|
||||
backpackButton.Image = "http://www.jarfeh.xyz/asset/?id=97617958"
|
||||
loadoutBackground.Image = 'http://www.jarfeh.xyz/asset/?id=96536002'
|
||||
loadoutBackground.Position = UDim2.new(-0.1, 0, -0.1, 0)
|
||||
loadoutBackground.Size = UDim2.new(1.2, 0, 1.2, 0)
|
||||
hideBackpack()
|
||||
|
||||
|
||||
local clChildren = currentLoadout:GetChildren()
|
||||
for i = 1, #clChildren do
|
||||
if clChildren[i] and clChildren[i]:IsA('Frame') then
|
||||
local frame = clChildren[i]
|
||||
if #frame:GetChildren() > 0 then
|
||||
backpackButton.Position = UDim2.new(0.5, -60, 1, -108)
|
||||
backpackButton.Visible = true
|
||||
loadoutBackground.Visible = true
|
||||
if frame:GetChildren()[1]:IsA('ImageButton') then
|
||||
local imgButton = frame:GetChildren()[1]
|
||||
imgButton.Active = true
|
||||
imgButton.Draggable = false
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
|
||||
function closeBackpack()
|
||||
if backpackIsOpen then
|
||||
toggleBackpack()
|
||||
end
|
||||
end
|
||||
|
||||
function setSelected(tab)
|
||||
assert(tab)
|
||||
assert(tab:IsA("TextButton"))
|
||||
|
||||
tab.BackgroundColor3 = Color3.new(1,1,1)
|
||||
tab.TextColor3 = Color3.new(0,0,0)
|
||||
tab.Selected = true
|
||||
tab.ZIndex = 3
|
||||
end
|
||||
|
||||
function setUnselected(tab)
|
||||
assert(tab)
|
||||
assert(tab:IsA("TextButton"))
|
||||
|
||||
tab.BackgroundColor3 = Color3.new(0,0,0)
|
||||
tab.TextColor3 = Color3.new(1,1,1)
|
||||
tab.Selected = false
|
||||
tab.ZIndex = 1
|
||||
end
|
||||
|
||||
function updateTabGui(selectedTab)
|
||||
assert(selectedTab)
|
||||
|
||||
if selectedTab == "gear" then
|
||||
setSelected(inventoryButton)
|
||||
setUnselected(wardrobeButton)
|
||||
elseif selectedTab == "wardrobe" then
|
||||
setSelected(wardrobeButton)
|
||||
setUnselected(inventoryButton)
|
||||
end
|
||||
end
|
||||
|
||||
function mouseLeaveTab(button)
|
||||
assert(button)
|
||||
assert(button:IsA("TextButton"))
|
||||
|
||||
if button.Selected then return end
|
||||
|
||||
button.BackgroundColor3 = Color3.new(0,0,0)
|
||||
end
|
||||
|
||||
function mouseOverTab(button)
|
||||
assert(button)
|
||||
assert(button:IsA("TextButton"))
|
||||
|
||||
if button.Selected then return end
|
||||
|
||||
button.BackgroundColor3 = Color3.new(39/255,39/255,39/255)
|
||||
end
|
||||
|
||||
function newTabClicked(tabName)
|
||||
assert(tabName)
|
||||
tabName = string.lower(tabName)
|
||||
currentTab = tabName
|
||||
|
||||
updateTabGui(tabName)
|
||||
tabClickedEvent:Fire(tabName)
|
||||
resetSearch()
|
||||
end
|
||||
|
||||
function trim(s)
|
||||
return (s:gsub("^%s*(.-)%s*$", "%1"))
|
||||
end
|
||||
|
||||
function splitByWhitespace(text)
|
||||
if type(text) ~= "string" then return nil end
|
||||
|
||||
local terms = {}
|
||||
for token in string.gmatch(text, "[^%s]+") do
|
||||
if string.len(token) > 0 then
|
||||
table.insert(terms,token)
|
||||
end
|
||||
end
|
||||
return terms
|
||||
end
|
||||
|
||||
function resetSearchBoxGui()
|
||||
resetButton.Visible = false
|
||||
searchBox.Text = searchDefaultText
|
||||
end
|
||||
|
||||
function doSearch()
|
||||
local searchText = searchBox.Text
|
||||
if searchText == "" then
|
||||
resetSearch()
|
||||
return
|
||||
end
|
||||
searchText = trim(searchText)
|
||||
resetButton.Visible = true
|
||||
termTable = splitByWhitespace(searchText)
|
||||
searchRequestedEvent:Fire(searchText) -- todo: replace this with termtable when table passing is possible
|
||||
end
|
||||
|
||||
function resetSearch()
|
||||
resetSearchBoxGui()
|
||||
searchRequestedEvent:Fire()
|
||||
end
|
||||
|
||||
local backpackReady = function()
|
||||
readyForNextEvent = true
|
||||
end
|
||||
|
||||
--------------------------- End Internal Functions -------------------------------------
|
||||
|
||||
|
||||
------------------------------ Public Functions Setup -------------------------------------
|
||||
createPublicFunction("CloseBackpack", hideBackpack)
|
||||
createPublicFunction("BackpackReady", backpackReady)
|
||||
------------------------------ End Public Functions Setup ---------------------------------
|
||||
|
||||
|
||||
------------------------ Connections/Script Main -------------------------------------------
|
||||
|
||||
inventoryButton.MouseButton1Click:connect(function() newTabClicked("gear") end)
|
||||
inventoryButton.MouseEnter:connect(function() mouseOverTab(inventoryButton) end)
|
||||
inventoryButton.MouseLeave:connect(function() mouseLeaveTab(inventoryButton) end)
|
||||
|
||||
if game.CoreGui.Version >= 8 then
|
||||
wardrobeButton.MouseButton1Click:connect(function() newTabClicked("wardrobe") end)
|
||||
wardrobeButton.MouseEnter:connect(function() mouseOverTab(wardrobeButton) end)
|
||||
wardrobeButton.MouseLeave:connect(function() mouseLeaveTab(wardrobeButton) end)
|
||||
end
|
||||
|
||||
closeButton.MouseButton1Click:connect(closeBackpack)
|
||||
|
||||
screen.Changed:connect(function(prop)
|
||||
if prop == "AbsoluteSize" then
|
||||
resizeEvent:Fire(screen.AbsoluteSize)
|
||||
end
|
||||
end)
|
||||
|
||||
-- GuiService key setup
|
||||
game:GetService("GuiService"):AddKey(tilde)
|
||||
game:GetService("GuiService"):AddKey(backquote)
|
||||
game:GetService("GuiService").KeyPressed:connect(function(key)
|
||||
if not active then return end
|
||||
if key == tilde or key == backquote then
|
||||
toggleBackpack()
|
||||
end
|
||||
end)
|
||||
backpackButton.MouseButton1Click:connect(function()
|
||||
if not active then return end
|
||||
toggleBackpack()
|
||||
end)
|
||||
|
||||
if game.Players.LocalPlayer["Character"] then
|
||||
activateBackpack()
|
||||
end
|
||||
|
||||
game.Players.LocalPlayer.CharacterAdded:connect(activateBackpack)
|
||||
|
||||
-- search functions
|
||||
searchBox.FocusLost:connect(function(enterPressed)
|
||||
if enterPressed or searchBox.Text ~= "" then
|
||||
doSearch()
|
||||
elseif searchBox.Text == "" then
|
||||
resetSearch()
|
||||
end
|
||||
end)
|
||||
searchButton.MouseButton1Click:connect(doSearch)
|
||||
resetButton.MouseButton1Click:connect(resetSearch)
|
||||
|
||||
if searchFrame and robloxGui.AbsoluteSize.Y <= 320 then
|
||||
searchFrame.RobloxLocked = false
|
||||
searchFrame:Destroy()
|
||||
end
|
||||
|
||||
--backpackButton.Visible = true
|
||||
|
|
@ -1,863 +0,0 @@
|
|||
%14%
|
||||
-- A couple of necessary functions
|
||||
local function waitForChild(instance, name)
|
||||
assert(instance)
|
||||
assert(name)
|
||||
while not instance:FindFirstChild(name) do
|
||||
print('Waiting for ...', instance, name)
|
||||
instance.ChildAdded:wait()
|
||||
end
|
||||
return instance:FindFirstChild(name)
|
||||
end
|
||||
local function waitForProperty(instance, property)
|
||||
assert(instance)
|
||||
assert(property)
|
||||
while not instance[property] do
|
||||
instance.Changed:wait()
|
||||
end
|
||||
end
|
||||
|
||||
local function IsTouchDevice()
|
||||
local touchEnabled = false
|
||||
pcall(function() touchEnabled = Game:GetService('UserInputService').TouchEnabled end)
|
||||
return touchEnabled
|
||||
end
|
||||
|
||||
|
||||
waitForChild(game,"Players")
|
||||
waitForProperty(game.Players,"LocalPlayer")
|
||||
local player = game.Players.LocalPlayer
|
||||
|
||||
local RbxGui, msg = LoadLibrary("RbxGui")
|
||||
if not RbxGui then print("could not find RbxGui!") return end
|
||||
|
||||
--- Begin Locals
|
||||
local StaticTabName = "gear"
|
||||
|
||||
local backpack = script.Parent
|
||||
local screen = script.Parent.Parent
|
||||
|
||||
local backpackItems = {}
|
||||
local buttons = {}
|
||||
|
||||
local debounce = false
|
||||
local browsingMenu = false
|
||||
|
||||
local mouseEnterCons = {}
|
||||
local mouseClickCons = {}
|
||||
|
||||
local characterChildAddedCon = nil
|
||||
local characterChildRemovedCon = nil
|
||||
local backpackAddCon = nil
|
||||
|
||||
local playerBackpack = waitForChild(player,"Backpack")
|
||||
|
||||
waitForChild(backpack,"Tabs")
|
||||
|
||||
waitForChild(backpack,"Gear")
|
||||
local gearPreview = waitForChild(backpack.Gear,"GearPreview")
|
||||
|
||||
local scroller = waitForChild(backpack.Gear,"GearGridScrollingArea")
|
||||
|
||||
local currentLoadout = waitForChild(backpack.Parent,"CurrentLoadout")
|
||||
|
||||
local grid = waitForChild(backpack.Gear,"GearGrid")
|
||||
local gearButton = waitForChild(grid,"GearButton")
|
||||
|
||||
local swapSlot = waitForChild(script.Parent,"SwapSlot")
|
||||
|
||||
local backpackManager = waitForChild(script.Parent,"CoreScripts/BackpackScripts/BackpackManager")
|
||||
local backpackOpenEvent = waitForChild(backpackManager,"BackpackOpenEvent")
|
||||
local backpackCloseEvent = waitForChild(backpackManager,"BackpackCloseEvent")
|
||||
local tabClickedEvent = waitForChild(backpackManager,"TabClickedEvent")
|
||||
local resizeEvent = waitForChild(backpackManager,"ResizeEvent")
|
||||
local searchRequestedEvent = waitForChild(backpackManager,"SearchRequestedEvent")
|
||||
local tellBackpackReadyFunc = waitForChild(backpackManager,"BackpackReady")
|
||||
|
||||
-- creating scroll bar early as to make sure items get placed correctly
|
||||
local scrollFrame, scrollUp, scrollDown, recalculateScroll = RbxGui.CreateScrollingFrame(nil, "grid", Vector2.new(6, 6))
|
||||
|
||||
scrollFrame.Position = UDim2.new(0,0,0,30)
|
||||
scrollFrame.Size = UDim2.new(1,0,1,-30)
|
||||
scrollFrame.Parent = backpack.Gear.GearGrid
|
||||
|
||||
local scrollBar = Instance.new("Frame")
|
||||
scrollBar.Name = "ScrollBar"
|
||||
scrollBar.BackgroundTransparency = 0.9
|
||||
scrollBar.BackgroundColor3 = Color3.new(1,1,1)
|
||||
scrollBar.BorderSizePixel = 0
|
||||
scrollBar.Size = UDim2.new(0, 17, 1, -36)
|
||||
scrollBar.Position = UDim2.new(0,0,0,18)
|
||||
scrollBar.Parent = scroller
|
||||
|
||||
scrollDown.Position = UDim2.new(0,0,1,-17)
|
||||
|
||||
scrollUp.Parent = scroller
|
||||
scrollDown.Parent = scroller
|
||||
|
||||
local scrollFrameLoadout, scrollUpLoadout, scrollDownLoadout, recalculateScrollLoadout = RbxGui.CreateScrollingFrame()
|
||||
|
||||
scrollFrameLoadout.Position = UDim2.new(0,0,0,0)
|
||||
scrollFrameLoadout.Size = UDim2.new(1,0,1,0)
|
||||
scrollFrameLoadout.Parent = backpack.Gear.GearLoadouts.LoadoutsList
|
||||
|
||||
local LoadoutButton = Instance.new("TextButton")
|
||||
LoadoutButton.RobloxLocked = true
|
||||
LoadoutButton.Name = "LoadoutButton"
|
||||
LoadoutButton.Font = Enum.Font.ArialBold
|
||||
LoadoutButton.FontSize = Enum.FontSize.Size14
|
||||
LoadoutButton.Position = UDim2.new(0,0,0,0)
|
||||
LoadoutButton.Size = UDim2.new(1,0,0,32)
|
||||
LoadoutButton.Style = Enum.ButtonStyle.RobloxButton
|
||||
LoadoutButton.Text = "Loadout #1"
|
||||
LoadoutButton.TextColor3 = Color3.new(1,1,1)
|
||||
LoadoutButton.Parent = scrollFrameLoadout
|
||||
|
||||
local LoadoutButtonTwo = LoadoutButton:clone()
|
||||
LoadoutButtonTwo.Text = "Loadout #2"
|
||||
LoadoutButtonTwo.Parent = scrollFrameLoadout
|
||||
|
||||
local LoadoutButtonThree = LoadoutButton:clone()
|
||||
LoadoutButtonThree.Text = "Loadout #3"
|
||||
LoadoutButtonThree.Parent = scrollFrameLoadout
|
||||
|
||||
local LoadoutButtonFour = LoadoutButton:clone()
|
||||
LoadoutButtonFour.Text = "Loadout #4"
|
||||
LoadoutButtonFour.Parent = scrollFrameLoadout
|
||||
|
||||
local scrollBarLoadout = Instance.new("Frame")
|
||||
scrollBarLoadout.Name = "ScrollBarLoadout"
|
||||
scrollBarLoadout.BackgroundTransparency = 0.9
|
||||
scrollBarLoadout.BackgroundColor3 = Color3.new(1,1,1)
|
||||
scrollBarLoadout.BorderSizePixel = 0
|
||||
scrollBarLoadout.Size = UDim2.new(0, 17, 1, -36)
|
||||
scrollBarLoadout.Position = UDim2.new(0,0,0,18)
|
||||
scrollBarLoadout.Parent = backpack.Gear.GearLoadouts.GearLoadoutsScrollingArea
|
||||
|
||||
scrollDownLoadout.Position = UDim2.new(0,0,1,-17)
|
||||
|
||||
scrollUpLoadout.Parent = backpack.Gear.GearLoadouts.GearLoadoutsScrollingArea
|
||||
scrollDownLoadout.Parent = backpack.Gear.GearLoadouts.GearLoadoutsScrollingArea
|
||||
|
||||
|
||||
-- Begin Functions
|
||||
function removeFromMap(map,object)
|
||||
for i = 1, #map do
|
||||
if map[i] == object then
|
||||
table.remove(map,i)
|
||||
break
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function robloxLock(instance)
|
||||
instance.RobloxLocked = true
|
||||
children = instance:GetChildren()
|
||||
if children then
|
||||
for i, child in ipairs(children) do
|
||||
robloxLock(child)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function resize()
|
||||
local size = 0
|
||||
if gearPreview.AbsoluteSize.Y > gearPreview.AbsoluteSize.X then
|
||||
size = gearPreview.AbsoluteSize.X * 0.75
|
||||
else
|
||||
size = gearPreview.AbsoluteSize.Y * 0.75
|
||||
end
|
||||
|
||||
waitForChild(gearPreview,"GearImage")
|
||||
gearPreview.GearImage.Size = UDim2.new(0,size,0,size)
|
||||
gearPreview.GearImage.Position = UDim2.new(0,gearPreview.AbsoluteSize.X/2 - size/2,0.75,-size)
|
||||
|
||||
resizeGrid()
|
||||
end
|
||||
|
||||
function addToGrid(child)
|
||||
if not child:IsA("Tool") then
|
||||
if not child:IsA("HopperBin") then
|
||||
return
|
||||
end
|
||||
end
|
||||
if child:FindFirstChild("RobloxBuildTool") then return end
|
||||
|
||||
for i,v in pairs(backpackItems) do -- check to see if we already have this gear registered
|
||||
if v == child then return end
|
||||
end
|
||||
|
||||
table.insert(backpackItems,child)
|
||||
|
||||
local changeCon = child.Changed:connect(function(prop)
|
||||
if prop == "Name" then
|
||||
if buttons[child] then
|
||||
if buttons[child].Image == "" then
|
||||
buttons[child].GearText.Text = child.Name
|
||||
end
|
||||
end
|
||||
end
|
||||
end)
|
||||
local ancestryCon = nil
|
||||
ancestryCon = child.AncestryChanged:connect(function(theChild,theParent)
|
||||
local thisObject = nil
|
||||
for k,v in pairs(backpackItems) do
|
||||
if v == child then
|
||||
thisObject = v
|
||||
break
|
||||
end
|
||||
end
|
||||
|
||||
waitForProperty(player,"Character")
|
||||
waitForChild(player,"Backpack")
|
||||
if (child.Parent ~= player.Backpack and child.Parent ~= player.Character) then
|
||||
if ancestryCon then ancestryCon:disconnect() end
|
||||
if changeCon then changeCon:disconnect() end
|
||||
|
||||
for k,v in pairs(backpackItems) do
|
||||
if v == thisObject then
|
||||
if mouseEnterCons[buttons[v]] then mouseEnterCons[buttons[v]]:disconnect() end
|
||||
if mouseClickCons[buttons[v]] then mouseClickCons[buttons[v]]:disconnect() end
|
||||
buttons[v].Parent = nil
|
||||
buttons[v] = nil
|
||||
break
|
||||
end
|
||||
end
|
||||
|
||||
removeFromMap(backpackItems,thisObject)
|
||||
|
||||
resizeGrid()
|
||||
else
|
||||
resizeGrid()
|
||||
end
|
||||
updateGridActive()
|
||||
end)
|
||||
resizeGrid()
|
||||
end
|
||||
|
||||
function buttonClick(button)
|
||||
if button:FindFirstChild("UnequipContextMenu") and not button.Active then
|
||||
button.UnequipContextMenu.Visible = true
|
||||
browsingMenu = true
|
||||
end
|
||||
end
|
||||
|
||||
function previewGear(button)
|
||||
if not browsingMenu then
|
||||
gearPreview.Visible = false
|
||||
gearPreview.GearImage.Image = button.Image
|
||||
gearPreview.GearStats.GearName.Text = button.GearReference.Value.Name
|
||||
end
|
||||
end
|
||||
|
||||
function findEmptySlot()
|
||||
local smallestNum = nil
|
||||
local loadout = currentLoadout:GetChildren()
|
||||
for i = 1, #loadout do
|
||||
if loadout[i]:IsA("Frame") and #loadout[i]:GetChildren() <= 0 then
|
||||
local frameNum = tonumber(string.sub(loadout[i].Name,5))
|
||||
if frameNum == 0 then frameNum = 10 end
|
||||
if not smallestNum or (smallestNum > frameNum) then
|
||||
smallestNum = frameNum
|
||||
end
|
||||
end
|
||||
end
|
||||
if smallestNum == 10 then smallestNum = 0 end
|
||||
return smallestNum
|
||||
end
|
||||
|
||||
function checkForSwap(button,x,y)
|
||||
local loadoutChildren = currentLoadout:GetChildren()
|
||||
for i = 1, #loadoutChildren do
|
||||
if loadoutChildren[i]:IsA("Frame") and string.find(loadoutChildren[i].Name,"Slot") then
|
||||
if x >= loadoutChildren[i].AbsolutePosition.x and x <= (loadoutChildren[i].AbsolutePosition.x + loadoutChildren[i].AbsoluteSize.x) then
|
||||
if y >= loadoutChildren[i].AbsolutePosition.y and y <= (loadoutChildren[i].AbsolutePosition.y + loadoutChildren[i].AbsoluteSize.y) then
|
||||
local slot = tonumber(string.sub(loadoutChildren[i].Name,5))
|
||||
swapGearSlot(slot,button)
|
||||
return true
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
return false
|
||||
end
|
||||
|
||||
function resizeGrid()
|
||||
for k,v in pairs(backpackItems) do
|
||||
if not v:FindFirstChild("RobloxBuildTool") then
|
||||
if not buttons[v] then
|
||||
local buttonClone = gearButton:clone()
|
||||
buttonClone.Parent = grid.ScrollingFrame
|
||||
buttonClone.Visible = true
|
||||
buttonClone.Image = v.TextureId
|
||||
if buttonClone.Image == "" then
|
||||
buttonClone.GearText.Text = v.Name
|
||||
end
|
||||
|
||||
buttonClone.GearReference.Value = v
|
||||
buttonClone.Draggable = true
|
||||
buttons[v] = buttonClone
|
||||
|
||||
|
||||
if not IsTouchDevice() then
|
||||
local unequipMenu = getGearContextMenu()
|
||||
|
||||
|
||||
unequipMenu.Visible = false
|
||||
unequipMenu.Parent = buttonClone
|
||||
end
|
||||
|
||||
local beginPos = nil
|
||||
buttonClone.DragBegin:connect(function(value)
|
||||
waitForChild(buttonClone, 'Background')
|
||||
buttonClone['Background'].ZIndex = 10
|
||||
buttonClone.ZIndex = 10
|
||||
beginPos = value
|
||||
end)
|
||||
buttonClone.DragStopped:connect(function(x,y)
|
||||
waitForChild(buttonClone, 'Background')
|
||||
buttonClone['Background'].ZIndex = 1.0
|
||||
buttonClone.ZIndex = 2
|
||||
if beginPos ~= buttonClone.Position then
|
||||
if not checkForSwap(buttonClone,x,y) then
|
||||
buttonClone:TweenPosition(beginPos,Enum.EasingDirection.Out, Enum.EasingStyle.Quad, 0.5, true)
|
||||
buttonClone.Draggable = false
|
||||
delay(0.5,function()
|
||||
buttonClone.Draggable = true
|
||||
end)
|
||||
else
|
||||
buttonClone.Position = beginPos
|
||||
end
|
||||
end
|
||||
end)
|
||||
local clickTime = tick()
|
||||
mouseEnterCons[buttonClone] = buttonClone.MouseEnter:connect(function() previewGear(buttonClone) end)
|
||||
mouseClickCons[buttonClone] = buttonClone.MouseButton1Click:connect(function()
|
||||
local newClickTime = tick()
|
||||
if buttonClone.Active and (newClickTime - clickTime) < 0.5 then
|
||||
local slot = findEmptySlot()
|
||||
if slot then
|
||||
buttonClone.ZIndex = 1
|
||||
swapGearSlot(slot,buttonClone)
|
||||
end
|
||||
else
|
||||
buttonClick(buttonClone)
|
||||
end
|
||||
clickTime = newClickTime
|
||||
end)
|
||||
end
|
||||
end
|
||||
end
|
||||
recalculateScroll()
|
||||
end
|
||||
|
||||
function showPartialGrid(subset)
|
||||
for k,v in pairs(buttons) do
|
||||
v.Parent = nil
|
||||
end
|
||||
if subset then
|
||||
for k,v in pairs(subset) do
|
||||
v.Parent = grid.ScrollingFrame
|
||||
end
|
||||
end
|
||||
recalculateScroll()
|
||||
end
|
||||
|
||||
function showEntireGrid()
|
||||
for k,v in pairs(buttons) do
|
||||
v.Parent = grid.ScrollingFrame
|
||||
end
|
||||
recalculateScroll()
|
||||
end
|
||||
|
||||
function inLoadout(gear)
|
||||
local children = currentLoadout:GetChildren()
|
||||
for i = 1, #children do
|
||||
if children[i]:IsA("Frame") then
|
||||
local button = children[i]:GetChildren()
|
||||
if #button > 0 then
|
||||
if button[1].GearReference.Value and button[1].GearReference.Value == gear then
|
||||
return true
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
return false
|
||||
end
|
||||
|
||||
function updateGridActive()
|
||||
for k,v in pairs(backpackItems) do
|
||||
if buttons[v] then
|
||||
local gear = nil
|
||||
local gearRef = buttons[v]:FindFirstChild("GearReference")
|
||||
|
||||
if gearRef then gear = gearRef.Value end
|
||||
|
||||
if not gear then
|
||||
buttons[v].Active = false
|
||||
elseif inLoadout(gear) then
|
||||
buttons[v].Active = false
|
||||
else
|
||||
buttons[v].Active = true
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function centerGear(loadoutChildren)
|
||||
local gearButtons = {}
|
||||
local lastSlotAdd = nil
|
||||
for i = 1, #loadoutChildren do
|
||||
if loadoutChildren[i]:IsA("Frame") and #loadoutChildren[i]:GetChildren() > 0 then
|
||||
if loadoutChildren[i].Name == "Slot0" then
|
||||
lastSlotAdd = loadoutChildren[i]
|
||||
else
|
||||
table.insert(gearButtons, loadoutChildren[i])
|
||||
end
|
||||
end
|
||||
end
|
||||
if lastSlotAdd then table.insert(gearButtons,lastSlotAdd) end
|
||||
|
||||
local startPos = ( 1 - (#gearButtons * 0.1) ) / 2
|
||||
for i = 1, #gearButtons do
|
||||
gearButtons[i]:TweenPosition(UDim2.new(startPos + ((i - 1) * 0.1),0,0,0), Enum.EasingDirection.Out, Enum.EasingStyle.Quad, 0.25, true)
|
||||
end
|
||||
end
|
||||
|
||||
function tabClickHandler(tabName)
|
||||
if tabName == StaticTabName then
|
||||
backpackOpenHandler(tabName)
|
||||
else
|
||||
backpackCloseHandler(tabName)
|
||||
end
|
||||
end
|
||||
|
||||
function backpackOpenHandler(currentTab)
|
||||
if currentTab and currentTab ~= StaticTabName then
|
||||
backpack.Gear.Visible = false
|
||||
return
|
||||
end
|
||||
|
||||
backpack.Gear.Visible = true
|
||||
updateGridActive()
|
||||
|
||||
resizeGrid()
|
||||
resize()
|
||||
tellBackpackReadyFunc:Invoke()
|
||||
end
|
||||
|
||||
function backpackCloseHandler(currentTab)
|
||||
if currentTab and currentTab ~= StaticTabName then
|
||||
backpack.Gear.Visible = false
|
||||
return
|
||||
end
|
||||
|
||||
backpack.Gear.Visible = false
|
||||
|
||||
resizeGrid()
|
||||
resize()
|
||||
tellBackpackReadyFunc:Invoke()
|
||||
end
|
||||
|
||||
function loadoutCheck(child, selectState)
|
||||
if not child:IsA("ImageButton") then return end
|
||||
for k,v in pairs(backpackItems) do
|
||||
if buttons[v] then
|
||||
if child:FindFirstChild("GearReference") and buttons[v]:FindFirstChild("GearReference") then
|
||||
if buttons[v].GearReference.Value == child.GearReference.Value then
|
||||
buttons[v].Active = selectState
|
||||
break
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function clearPreview()
|
||||
gearPreview.GearImage.Image = ""
|
||||
gearPreview.GearStats.GearName.Text = ""
|
||||
end
|
||||
|
||||
function removeAllEquippedGear(physGear)
|
||||
local stuff = player.Character:GetChildren()
|
||||
for i = 1, #stuff do
|
||||
if ( stuff[i]:IsA("Tool") or stuff[i]:IsA("HopperBin") ) and stuff[i] ~= physGear then
|
||||
stuff[i].Parent = playerBackpack
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function equipGear(physGear)
|
||||
removeAllEquippedGear(physGear)
|
||||
physGear.Parent = player.Character
|
||||
updateGridActive()
|
||||
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()
|
||||
|
||||
if backpackAddCon then backpackAddCon:disconnect() end
|
||||
backpackAddCon = game.Players.LocalPlayer.Backpack.ChildAdded:connect(function(child) addToGrid(child) end)
|
||||
|
||||
-- make sure we get all the children
|
||||
local backpackChildren = game.Players.LocalPlayer.Backpack:GetChildren()
|
||||
for i = 1, #backpackChildren do
|
||||
addToGrid(backpackChildren[i])
|
||||
end
|
||||
|
||||
if characterChildAddedCon then characterChildAddedCon:disconnect() end
|
||||
characterChildAddedCon =
|
||||
game.Players.LocalPlayer.Character.ChildAdded:connect(function(child)
|
||||
addToGrid(child)
|
||||
updateGridActive()
|
||||
end)
|
||||
|
||||
if characterChildRemovedCon then characterChildRemovedCon:disconnect() end
|
||||
characterChildRemovedCon =
|
||||
game.Players.LocalPlayer.Character.ChildRemoved:connect(function(child)
|
||||
updateGridActive()
|
||||
end)
|
||||
|
||||
wait()
|
||||
centerGear(currentLoadout:GetChildren())
|
||||
end
|
||||
|
||||
function removeCharacterConnections()
|
||||
if characterChildAddedCon then characterChildAddedCon:disconnect() end
|
||||
if characterChildRemovedCon then characterChildRemovedCon:disconnect() end
|
||||
if backpackAddCon then backpackAddCon:disconnect() end
|
||||
end
|
||||
|
||||
function trim(s)
|
||||
return (s:gsub("^%s*(.-)%s*$", "%1"))
|
||||
end
|
||||
|
||||
function filterGear(terms)
|
||||
local filteredGear = {}
|
||||
for k,v in pairs(backpackItems) do
|
||||
if buttons[v] then
|
||||
local gearString = string.lower(buttons[v].GearReference.Value.Name)
|
||||
gearString = trim(gearString)
|
||||
for i = 1, #terms do
|
||||
if string.match(gearString,terms[i]) then
|
||||
table.insert(filteredGear,buttons[v])
|
||||
break
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
return filteredGear
|
||||
end
|
||||
function splitByWhitespace(text)
|
||||
if type(text) ~= "string" then return nil end
|
||||
|
||||
local terms = {}
|
||||
for token in string.gmatch(text, "[^%s]+") do
|
||||
if string.len(token) > 0 then
|
||||
table.insert(terms,token)
|
||||
end
|
||||
end
|
||||
return terms
|
||||
end
|
||||
function showSearchGear(searchTerms)
|
||||
if not backpack.Gear.Visible then return end -- currently not active tab
|
||||
|
||||
local searchTermTable = splitByWhitespace(searchTerms)
|
||||
if searchTermTable and (#searchTermTable > 0) then
|
||||
currSearchTerms = searchTermTable
|
||||
else
|
||||
currSearchTerms = nil
|
||||
end
|
||||
|
||||
if searchTermTable == nil then
|
||||
showEntireGrid()
|
||||
return
|
||||
end
|
||||
|
||||
local filteredButtons = filterGear(currSearchTerms)
|
||||
showPartialGrid(filteredButtons)
|
||||
end
|
||||
|
||||
function nukeBackpack()
|
||||
while #buttons > 0 do
|
||||
table.remove(buttons)
|
||||
end
|
||||
buttons = {}
|
||||
while #backpackItems > 0 do
|
||||
table.remove(backpackItems)
|
||||
end
|
||||
backpackItems = {}
|
||||
local scrollingFrameChildren = grid.ScrollingFrame:GetChildren()
|
||||
for i = 1, #scrollingFrameChildren do
|
||||
scrollingFrameChildren[i]:remove()
|
||||
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
|
||||
local success, result = 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, 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
|
||||
|
||||
local backpackChildren = player.Backpack:GetChildren()
|
||||
for i = 1, #backpackChildren do
|
||||
addToGrid(backpackChildren[i])
|
||||
end
|
||||
|
||||
------------------------- Start Lifelong Connections -----------------------
|
||||
|
||||
|
||||
resizeEvent.Event:connect(function(absSize)
|
||||
if debounce then return end
|
||||
|
||||
debounce = true
|
||||
wait()
|
||||
resize()
|
||||
resizeGrid()
|
||||
debounce = false
|
||||
end)
|
||||
|
||||
currentLoadout.ChildAdded:connect(function(child) loadoutCheck(child, false) end)
|
||||
currentLoadout.ChildRemoved:connect(function(child) loadoutCheck(child, true) end)
|
||||
|
||||
currentLoadout.DescendantAdded:connect(function(descendant)
|
||||
if not backpack.Visible and ( descendant:IsA("ImageButton") or descendant:IsA("TextButton") ) then
|
||||
centerGear(currentLoadout:GetChildren())
|
||||
end
|
||||
end)
|
||||
currentLoadout.DescendantRemoving:connect(function(descendant)
|
||||
if not backpack.Visible and ( descendant:IsA("ImageButton") or descendant:IsA("TextButton") ) then
|
||||
wait()
|
||||
centerGear(currentLoadout:GetChildren())
|
||||
end
|
||||
end)
|
||||
|
||||
grid.MouseEnter:connect(function() clearPreview() end)
|
||||
grid.MouseLeave:connect(function() clearPreview() end)
|
||||
|
||||
player.CharacterRemoving:connect(function()
|
||||
removeCharacterConnections()
|
||||
nukeBackpack()
|
||||
end)
|
||||
player.CharacterAdded:connect(function() setupCharacterConnections() end)
|
||||
|
||||
player.ChildAdded:connect(function(child)
|
||||
if child:IsA("Backpack") then
|
||||
playerBackpack = child
|
||||
if backpackAddCon then backpackAddCon:disconnect() end
|
||||
backpackAddCon = game.Players.LocalPlayer.Backpack.ChildAdded:connect(function(child) addToGrid(child) end)
|
||||
end
|
||||
end)
|
||||
|
||||
swapSlot.Changed:connect(function()
|
||||
if not swapSlot.Value then
|
||||
updateGridActive()
|
||||
end
|
||||
end)
|
||||
|
||||
local loadoutChildren = currentLoadout:GetChildren()
|
||||
for i = 1, #loadoutChildren do
|
||||
if loadoutChildren[i]:IsA("Frame") and string.find(loadoutChildren[i].Name,"Slot") then
|
||||
loadoutChildren[i].ChildRemoved:connect(function()
|
||||
updateGridActive()
|
||||
end)
|
||||
loadoutChildren[i].ChildAdded:connect(function()
|
||||
updateGridActive()
|
||||
end)
|
||||
end
|
||||
end
|
||||
------------------------- End Lifelong Connections -----------------------
|
||||
|
||||
resize()
|
||||
resizeGrid()
|
||||
|
||||
-- make sure any items in the loadout are accounted for in inventory
|
||||
local loadoutChildren = currentLoadout:GetChildren()
|
||||
for i = 1, #loadoutChildren do
|
||||
loadoutCheck(loadoutChildren[i], false)
|
||||
end
|
||||
if not backpack.Visible then centerGear(currentLoadout:GetChildren()) end
|
||||
|
||||
-- make sure that inventory is listening to gear reparenting
|
||||
if characterChildAddedCon == nil and game.Players.LocalPlayer["Character"] then
|
||||
setupCharacterConnections()
|
||||
end
|
||||
if not backpackAddCon then
|
||||
backpackAddCon = game.Players.LocalPlayer.Backpack.ChildAdded:connect(function(child) addToGrid(child) end)
|
||||
end
|
||||
|
||||
backpackOpenEvent.Event:connect(backpackOpenHandler)
|
||||
backpackCloseEvent.Event:connect(backpackCloseHandler)
|
||||
tabClickedEvent.Event:connect(tabClickHandler)
|
||||
searchRequestedEvent.Event:connect(showSearchGear)
|
||||
|
||||
recalculateScrollLoadout()
|
||||
1034
maintenance/asset/15
1034
maintenance/asset/15
File diff suppressed because it is too large
Load Diff
|
|
@ -1,147 +0,0 @@
|
|||
%16%
|
||||
-- Responsible for giving out tools in personal servers
|
||||
|
||||
-- first, lets see if buildTools have already been created
|
||||
-- create the object in lighting (TODO: move to some sort of "container" object when we have one)
|
||||
local toolsArray = game.Lighting:FindFirstChild("BuildToolsModel")
|
||||
local ownerArray = game.Lighting:FindFirstChild("OwnerToolsModel")
|
||||
local hasBuildTools = false
|
||||
|
||||
function getIds(idTable, assetTable)
|
||||
for i = 1, #idTable do
|
||||
local model = game:GetService("InsertService"):LoadAsset(idTable[i])
|
||||
if model then
|
||||
local children = model:GetChildren()
|
||||
for i = 1, #children do
|
||||
if children[i]:IsA("Tool") then
|
||||
table.insert(assetTable,children[i])
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function storeInLighting(modelName, assetTable)
|
||||
local model = Instance.new("Model")
|
||||
model.Archivable = false
|
||||
model.Name = modelName
|
||||
|
||||
for i = 1, #assetTable do
|
||||
assetTable[i].Parent = model
|
||||
end
|
||||
|
||||
if not game.Lighting:FindFirstChild(modelName) then -- no one beat us to it, we get to insert
|
||||
model.Parent = game.Lighting
|
||||
end
|
||||
end
|
||||
|
||||
if not toolsArray then -- no one has made build tools yet, we get to!
|
||||
local buildToolIds = {}
|
||||
local ownerToolIds = {}
|
||||
|
||||
table.insert(buildToolIds,73089166) -- PartSelectionTool
|
||||
table.insert(buildToolIds,73089190) -- DeleteTool
|
||||
table.insert(buildToolIds,73089204) -- CloneTool
|
||||
table.insert(buildToolIds,73089214) -- RotateTool
|
||||
table.insert(buildToolIds,73089239) -- ConfigTool
|
||||
table.insert(buildToolIds,73089259) -- WiringTool
|
||||
table.insert(buildToolIds,58921588) -- ClassicTool
|
||||
|
||||
table.insert(ownerToolIds, 65347268)
|
||||
|
||||
-- next, create array of our tools
|
||||
local buildTools = {}
|
||||
local ownerTools = {}
|
||||
|
||||
getIds(buildToolIds, buildTools)
|
||||
getIds(ownerToolIds, ownerTools)
|
||||
|
||||
storeInLighting("BuildToolsModel",buildTools)
|
||||
storeInLighting("OwnerToolsModel",ownerTools)
|
||||
|
||||
toolsArray = game.Lighting:FindFirstChild("BuildToolsModel")
|
||||
ownerArray = game.Lighting:FindFirstChild("OwnerToolsModel")
|
||||
end
|
||||
|
||||
local localBuildTools = {}
|
||||
|
||||
function giveBuildTools()
|
||||
if not hasBuildTools then
|
||||
hasBuildTools = true
|
||||
local theTools = toolsArray:GetChildren()
|
||||
for i = 1, #theTools do
|
||||
local toolClone = theTools[i]:clone()
|
||||
if toolClone then
|
||||
toolClone.Parent = game.Players.LocalPlayer.Backpack
|
||||
table.insert(localBuildTools,toolClone)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function giveOwnerTools()
|
||||
local theOwnerTools = ownerArray:GetChildren()
|
||||
for i = 1, #theOwnerTools do
|
||||
local ownerToolClone = theOwnerTools[i]:clone()
|
||||
if ownerToolClone then
|
||||
ownerToolClone.Parent = game.Players.LocalPlayer.Backpack
|
||||
table.insert(localBuildTools,ownerToolClone)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function removeBuildTools()
|
||||
if hasBuildTools then
|
||||
hasBuildTools = false
|
||||
for i = 1, #localBuildTools do
|
||||
localBuildTools[i].Parent = nil
|
||||
end
|
||||
localBuildTools = {}
|
||||
end
|
||||
end
|
||||
|
||||
if game.Players.LocalPlayer.HasBuildTools then
|
||||
giveBuildTools()
|
||||
end
|
||||
if game.Players.LocalPlayer.PersonalServerRank >= 255 then
|
||||
giveOwnerTools()
|
||||
end
|
||||
|
||||
local debounce = false
|
||||
game.Players.LocalPlayer.Changed:connect(function(prop)
|
||||
if prop == "HasBuildTools" then
|
||||
while debounce do
|
||||
wait(0.5)
|
||||
end
|
||||
|
||||
debounce = true
|
||||
|
||||
if game.Players.LocalPlayer.HasBuildTools then
|
||||
giveBuildTools()
|
||||
else
|
||||
removeBuildTools()
|
||||
end
|
||||
|
||||
if game.Players.LocalPlayer.PersonalServerRank >= 255 then
|
||||
giveOwnerTools()
|
||||
end
|
||||
|
||||
debounce = false
|
||||
elseif prop == "PersonalServerRank" then
|
||||
if game.Players.LocalPlayer.PersonalServerRank >= 255 then
|
||||
giveOwnerTools()
|
||||
elseif game.Players.LocalPlayer.PersonalServerRank <= 0 then
|
||||
game.Players.LocalPlayer:Remove() -- you're banned, goodbye!
|
||||
end
|
||||
end
|
||||
end)
|
||||
|
||||
game.Players.LocalPlayer.CharacterAdded:connect(function()
|
||||
hasBuildTools = false
|
||||
if game.Players.LocalPlayer.HasBuildTools then
|
||||
giveBuildTools()
|
||||
end
|
||||
if game.Players.LocalPlayer.PersonalServerRank >= 255 then
|
||||
giveOwnerTools()
|
||||
end
|
||||
end)
|
||||
3845
maintenance/asset/17
3845
maintenance/asset/17
File diff suppressed because it is too large
Load Diff
|
|
@ -1,24 +0,0 @@
|
|||
%18%
|
||||
local t = {}
|
||||
|
||||
t.Foo =
|
||||
function()
|
||||
print("foo")
|
||||
end
|
||||
|
||||
t.Bar =
|
||||
function()
|
||||
print("bar")
|
||||
end
|
||||
|
||||
t.Help =
|
||||
function(funcNameOrFunc)
|
||||
--input argument can be a string or a function. Should return a description (of arguments and expected side effects)
|
||||
if funcNameOrFunc == "Foo" or funcNameOrFunc == t.Foo then
|
||||
return "Function Foo. Arguments: None. Side effect: prints foo"
|
||||
elseif funcNameOrFunc == "Bar" or funcNameOrFunc == t.Bar then
|
||||
return "Function Bar. Arguments: None. Side effect: prints bar"
|
||||
end
|
||||
end
|
||||
|
||||
return t
|
||||
|
|
@ -1 +0,0 @@
|
|||
<List><Value><Table><Entry><Key>Name</Key><Value>My Models</Value></Entry><Entry><Key>CategoryId</Key><Value>-151054312</Value></Entry><Entry><Key>Description</Key><Value>A set of my models.</Value></Entry><Entry><Key>AssetSetId</Key><Value>-151054312</Value></Entry><Entry><Key>CreatorName</Key><Value>usabilityman2</Value></Entry><Entry><Key>ImageAssetId</Key><Value>0</Value></Entry><Entry><Key>SetType</Key><Value>private</Value></Entry></Table></Value><Value><Table><Entry><Key>Name</Key><Value>My Decals</Value></Entry><Entry><Key>CategoryId</Key><Value>-151054311</Value></Entry><Entry><Key>Description</Key><Value>A set of my decals.</Value></Entry><Entry><Key>AssetSetId</Key><Value>-151054311</Value></Entry><Entry><Key>CreatorName</Key><Value>usabilityman2</Value></Entry><Entry><Key>ImageAssetId</Key><Value>21002577</Value></Entry><Entry><Key>SetType</Key><Value>private</Value></Entry></Table></Value><Value><Table><Entry><Key>Name</Key><Value>Holiday</Value></Entry><Entry><Key>CategoryId</Key><Value>438059</Value></Entry><Entry><Key>Description</Key><Value></Value></Entry><Entry><Key>AssetSetId</Key><Value>438059</Value></Entry><Entry><Key>CreatorName</Key><Value>usabilityman2</Value></Entry><Entry><Key>ImageAssetId</Key><Value>63933257</Value></Entry><Entry><Key>SetType</Key><Value>user</Value></Entry></Table></Value><Value><Table><Entry><Key>Name</Key><Value>Configurable Parts</Value></Entry><Entry><Key>CategoryId</Key><Value>433570</Value></Entry><Entry><Key>Description</Key><Value></Value></Entry><Entry><Key>AssetSetId</Key><Value>433570</Value></Entry><Entry><Key>CreatorName</Key><Value>usabilityman2</Value></Entry><Entry><Key>ImageAssetId</Key><Value>63588504</Value></Entry><Entry><Key>SetType</Key><Value>user</Value></Entry></Table></Value><Value><Table><Entry><Key>Name</Key><Value>Wiring</Value></Entry><Entry><Key>CategoryId</Key><Value>400993</Value></Entry><Entry><Key>Description</Key><Value></Value></Entry><Entry><Key>AssetSetId</Key><Value>400993</Value></Entry><Entry><Key>CreatorName</Key><Value>usabilityman2</Value></Entry><Entry><Key>ImageAssetId</Key><Value>60793478</Value></Entry><Entry><Key>SetType</Key><Value>user</Value></Entry></Table></Value></List>
|
||||
|
|
@ -1 +0,0 @@
|
|||
<List><Value><Table><Entry><Key>Name</Key><Value>My Models</Value></Entry><Entry><Key>CategoryId</Key><Value>-151054464</Value></Entry><Entry><Key>Description</Key><Value>A set of my models.</Value></Entry><Entry><Key>AssetSetId</Key><Value>-151054464</Value></Entry><Entry><Key>CreatorName</Key><Value>usabilityman3</Value></Entry><Entry><Key>ImageAssetId</Key><Value>0</Value></Entry><Entry><Key>SetType</Key><Value>private</Value></Entry></Table></Value><Value><Table><Entry><Key>Name</Key><Value>My Decals</Value></Entry><Entry><Key>CategoryId</Key><Value>-151054463</Value></Entry><Entry><Key>Description</Key><Value>A set of my decals.</Value></Entry><Entry><Key>AssetSetId</Key><Value>-151054463</Value></Entry><Entry><Key>CreatorName</Key><Value>usabilityman3</Value></Entry><Entry><Key>ImageAssetId</Key><Value>21002577</Value></Entry><Entry><Key>SetType</Key><Value>private</Value></Entry></Table></Value></List>
|
||||
1116
maintenance/asset/19
1116
maintenance/asset/19
File diff suppressed because it is too large
Load Diff
|
|
@ -1 +0,0 @@
|
|||
<List><Value><Table><Entry><Key>Name</Key><Value>My Models</Value></Entry><Entry><Key>CategoryId</Key><Value>-151054824</Value></Entry><Entry><Key>Description</Key><Value>A set of my models.</Value></Entry><Entry><Key>AssetSetId</Key><Value>-151054824</Value></Entry><Entry><Key>CreatorName</Key><Value>happyhomeman2</Value></Entry><Entry><Key>ImageAssetId</Key><Value>0</Value></Entry><Entry><Key>SetType</Key><Value>private</Value></Entry></Table></Value><Value><Table><Entry><Key>Name</Key><Value>My Decals</Value></Entry><Entry><Key>CategoryId</Key><Value>-151054823</Value></Entry><Entry><Key>Description</Key><Value>A set of my decals.</Value></Entry><Entry><Key>AssetSetId</Key><Value>-151054823</Value></Entry><Entry><Key>CreatorName</Key><Value>happyhomeman2</Value></Entry><Entry><Key>ImageAssetId</Key><Value>21002577</Value></Entry><Entry><Key>SetType</Key><Value>private</Value></Entry></Table></Value></List>
|
||||
|
|
@ -1 +0,0 @@
|
|||
<List><Value><Table><Entry><Key>Name</Key><Value>My Models</Value></Entry><Entry><Key>CategoryId</Key><Value>-151054928</Value></Entry><Entry><Key>Description</Key><Value>A set of my models.</Value></Entry><Entry><Key>AssetSetId</Key><Value>-151054928</Value></Entry><Entry><Key>CreatorName</Key><Value>happyhomeman3</Value></Entry><Entry><Key>ImageAssetId</Key><Value>0</Value></Entry><Entry><Key>SetType</Key><Value>private</Value></Entry></Table></Value><Value><Table><Entry><Key>Name</Key><Value>My Decals</Value></Entry><Entry><Key>CategoryId</Key><Value>-151054927</Value></Entry><Entry><Key>Description</Key><Value>A set of my decals.</Value></Entry><Entry><Key>AssetSetId</Key><Value>-151054927</Value></Entry><Entry><Key>CreatorName</Key><Value>happyhomeman3</Value></Entry><Entry><Key>ImageAssetId</Key><Value>21002577</Value></Entry><Entry><Key>SetType</Key><Value>private</Value></Entry></Table></Value></List>
|
||||
|
|
@ -1,23 +0,0 @@
|
|||
%2%
|
||||
-- Library Registration Script
|
||||
-- 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)
|
||||
|
||||
local sc = game:GetService("ScriptContext")
|
||||
local tries = 0
|
||||
|
||||
while not sc and tries < 3 do
|
||||
tries = tries + 1
|
||||
sc = game:GetService("ScriptContext")
|
||||
wait(0.2)
|
||||
end
|
||||
|
||||
if sc then
|
||||
sc:RegisterLibrary("Libraries/RbxGui", "17")
|
||||
sc:RegisterLibrary("Libraries/RbxGear", "18")
|
||||
sc:RegisterLibrary("Libraries/RbxUtility", "19")
|
||||
sc:RegisterLibrary("Libraries/RbxStamper", "20")
|
||||
sc:LibraryRegistrationComplete()
|
||||
else
|
||||
print("failed to find script context, libraries did not load")
|
||||
end
|
||||
2208
maintenance/asset/20
2208
maintenance/asset/20
File diff suppressed because it is too large
Load Diff
|
|
@ -1,311 +0,0 @@
|
|||
<roblox xmlns:xmime="http://www.w3.org/2005/05/xmlmime" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.archblox.com/archblox.xsd" version="4">
|
||||
<External>null</External>
|
||||
<External>nil</External>
|
||||
<Item class="Workspace" referent="RBX0">
|
||||
<Properties>
|
||||
<Ref name="CurrentCamera">RBX1</Ref>
|
||||
<double name="DistributedGameTime">0</double>
|
||||
<CoordinateFrame name="ModelInPrimary">
|
||||
<X>0</X>
|
||||
<Y>0</Y>
|
||||
<Z>0</Z>
|
||||
<R00>1</R00>
|
||||
<R01>0</R01>
|
||||
<R02>0</R02>
|
||||
<R10>0</R10>
|
||||
<R11>1</R11>
|
||||
<R12>0</R12>
|
||||
<R20>0</R20>
|
||||
<R21>0</R21>
|
||||
<R22>1</R22>
|
||||
</CoordinateFrame>
|
||||
<string name="Name">Workspace</string>
|
||||
<Ref name="PrimaryPart">null</Ref>
|
||||
</Properties>
|
||||
<Item class="Camera" referent="RBX1">
|
||||
<Properties>
|
||||
<Ref name="CameraSubject">null</Ref>
|
||||
<token name="CameraType">0</token>
|
||||
<CoordinateFrame name="CoordinateFrame">
|
||||
<X>160.611526</X>
|
||||
<Y>38.1404114</Y>
|
||||
<Z>218.11734</Z>
|
||||
<R00>0.964996576</R00>
|
||||
<R01>-0.1041582</R01>
|
||||
<R02>0.240692288</R02>
|
||||
<R10>7.4505806e-009</R10>
|
||||
<R11>0.917752862</R11>
|
||||
<R12>0.397152185</R12>
|
||||
<R20>-0.262262672</R20>
|
||||
<R21>-0.383250505</R21>
|
||||
<R22>0.885628283</R22>
|
||||
</CoordinateFrame>
|
||||
<float name="FieldOfView">70</float>
|
||||
<CoordinateFrame name="Focus">
|
||||
<X>160.130142</X>
|
||||
<Y>37.3461075</Y>
|
||||
<Z>216.346085</Z>
|
||||
<R00>1</R00>
|
||||
<R01>0</R01>
|
||||
<R02>0</R02>
|
||||
<R10>0</R10>
|
||||
<R11>1</R11>
|
||||
<R12>0</R12>
|
||||
<R20>0</R20>
|
||||
<R21>0</R21>
|
||||
<R22>1</R22>
|
||||
</CoordinateFrame>
|
||||
<string name="Name">Camera</string>
|
||||
</Properties>
|
||||
</Item>
|
||||
<Item class="Terrain" referent="RBX2">
|
||||
<Properties>
|
||||
<bool name="Anchored">true</bool>
|
||||
<float name="BackParamA">-0.5</float>
|
||||
<float name="BackParamB">0.5</float>
|
||||
<token name="BackSurface">0</token>
|
||||
<token name="BackSurfaceInput">0</token>
|
||||
<float name="BottomParamA">-0.5</float>
|
||||
<float name="BottomParamB">0.5</float>
|
||||
<token name="BottomSurface">4</token>
|
||||
<token name="BottomSurfaceInput">0</token>
|
||||
<int name="BrickColor">194</int>
|
||||
<CoordinateFrame name="CFrame">
|
||||
<X>-2</X>
|
||||
<Y>126</Y>
|
||||
<Z>-2</Z>
|
||||
<R00>1</R00>
|
||||
<R01>0</R01>
|
||||
<R02>0</R02>
|
||||
<R10>0</R10>
|
||||
<R11>1</R11>
|
||||
<R12>0</R12>
|
||||
<R20>0</R20>
|
||||
<R21>0</R21>
|
||||
<R22>1</R22>
|
||||
</CoordinateFrame>
|
||||
<bool name="CanCollide">true</bool>
|
||||
<string name="ClusterGridV2"></string>
|
||||
<float name="Elasticity">0.5</float>
|
||||
<float name="Friction">0.300000012</float>
|
||||
<float name="FrontParamA">-0.5</float>
|
||||
<float name="FrontParamB">0.5</float>
|
||||
<token name="FrontSurface">0</token>
|
||||
<token name="FrontSurfaceInput">0</token>
|
||||
<float name="LeftParamA">-0.5</float>
|
||||
<float name="LeftParamB">0.5</float>
|
||||
<token name="LeftSurface">0</token>
|
||||
<token name="LeftSurfaceInput">0</token>
|
||||
<bool name="Locked">true</bool>
|
||||
<token name="Material">256</token>
|
||||
<string name="Name">Terrain</string>
|
||||
<float name="Reflectance">0</float>
|
||||
<float name="RightParamA">-0.5</float>
|
||||
<float name="RightParamB">0.5</float>
|
||||
<token name="RightSurface">0</token>
|
||||
<token name="RightSurfaceInput">0</token>
|
||||
<Vector3 name="RotVelocity">
|
||||
<X>0</X>
|
||||
<Y>0</Y>
|
||||
<Z>0</Z>
|
||||
</Vector3>
|
||||
<float name="TopParamA">-0.5</float>
|
||||
<float name="TopParamB">0.5</float>
|
||||
<token name="TopSurface">3</token>
|
||||
<token name="TopSurfaceInput">0</token>
|
||||
<float name="Transparency">0</float>
|
||||
<Vector3 name="Velocity">
|
||||
<X>0</X>
|
||||
<Y>0</Y>
|
||||
<Z>0</Z>
|
||||
</Vector3>
|
||||
<Vector3 name="size">
|
||||
<X>2044</X>
|
||||
<Y>252</Y>
|
||||
<Z>2044</Z>
|
||||
</Vector3>
|
||||
</Properties>
|
||||
</Item>
|
||||
<Item class="Part" referent="RBX3">
|
||||
<Properties>
|
||||
<bool name="Anchored">false</bool>
|
||||
<float name="BackParamA">-0.5</float>
|
||||
<float name="BackParamB">0.5</float>
|
||||
<token name="BackSurface">0</token>
|
||||
<token name="BackSurfaceInput">0</token>
|
||||
<float name="BottomParamA">-0.5</float>
|
||||
<float name="BottomParamB">0.5</float>
|
||||
<token name="BottomSurface">4</token>
|
||||
<token name="BottomSurfaceInput">0</token>
|
||||
<int name="BrickColor">194</int>
|
||||
<CoordinateFrame name="CFrame">
|
||||
<X>0</X>
|
||||
<Y>0.600000024</Y>
|
||||
<Z>0</Z>
|
||||
<R00>1</R00>
|
||||
<R01>0</R01>
|
||||
<R02>0</R02>
|
||||
<R10>0</R10>
|
||||
<R11>1</R11>
|
||||
<R12>0</R12>
|
||||
<R20>0</R20>
|
||||
<R21>0</R21>
|
||||
<R22>1</R22>
|
||||
</CoordinateFrame>
|
||||
<bool name="CanCollide">true</bool>
|
||||
<float name="Elasticity">0.5</float>
|
||||
<float name="Friction">0.300000012</float>
|
||||
<float name="FrontParamA">-0.5</float>
|
||||
<float name="FrontParamB">0.5</float>
|
||||
<token name="FrontSurface">0</token>
|
||||
<token name="FrontSurfaceInput">0</token>
|
||||
<float name="LeftParamA">-0.5</float>
|
||||
<float name="LeftParamB">0.5</float>
|
||||
<token name="LeftSurface">0</token>
|
||||
<token name="LeftSurfaceInput">0</token>
|
||||
<bool name="Locked">false</bool>
|
||||
<token name="Material">256</token>
|
||||
<string name="Name">Baseplate</string>
|
||||
<float name="Reflectance">0</float>
|
||||
<float name="RightParamA">-0.5</float>
|
||||
<float name="RightParamB">0.5</float>
|
||||
<token name="RightSurface">0</token>
|
||||
<token name="RightSurfaceInput">0</token>
|
||||
<Vector3 name="RotVelocity">
|
||||
<X>0</X>
|
||||
<Y>0</Y>
|
||||
<Z>0</Z>
|
||||
</Vector3>
|
||||
<float name="TopParamA">-0.5</float>
|
||||
<float name="TopParamB">0.5</float>
|
||||
<token name="TopSurface">3</token>
|
||||
<token name="TopSurfaceInput">0</token>
|
||||
<float name="Transparency">0</float>
|
||||
<Vector3 name="Velocity">
|
||||
<X>0</X>
|
||||
<Y>0</Y>
|
||||
<Z>0</Z>
|
||||
</Vector3>
|
||||
<token name="formFactorRaw">1</token>
|
||||
<token name="shape">1</token>
|
||||
<Vector3 name="size">
|
||||
<X>512</X>
|
||||
<Y>1.20000005</Y>
|
||||
<Z>512</Z>
|
||||
</Vector3>
|
||||
</Properties>
|
||||
</Item>
|
||||
</Item>
|
||||
<Item class="StarterPack" referent="RBX4">
|
||||
<Properties>
|
||||
<string name="Name">StarterPack</string>
|
||||
</Properties>
|
||||
</Item>
|
||||
<Item class="StarterGui" referent="RBX5">
|
||||
<Properties>
|
||||
<string name="Name">StarterGui</string>
|
||||
<bool name="ShowDevelopmentGui">true</bool>
|
||||
</Properties>
|
||||
</Item>
|
||||
<Item class="SoundService" referent="RBX6">
|
||||
<Properties>
|
||||
<token name="AmbientReverb">0</token>
|
||||
<float name="DistanceFactor">10</float>
|
||||
<float name="DopplerScale">1</float>
|
||||
<string name="Name">Soundscape</string>
|
||||
<float name="RolloffScale">1</float>
|
||||
</Properties>
|
||||
</Item>
|
||||
<Item class="CollectionService" referent="RBX7">
|
||||
<Properties>
|
||||
<string name="Name">CollectionService</string>
|
||||
</Properties>
|
||||
</Item>
|
||||
<Item class="PhysicsService" referent="RBX8">
|
||||
<Properties>
|
||||
<string name="Name">PhysicsService</string>
|
||||
</Properties>
|
||||
</Item>
|
||||
<Item class="BadgeService" referent="RBX9">
|
||||
<Properties>
|
||||
<string name="Name">BadgeService</string>
|
||||
</Properties>
|
||||
</Item>
|
||||
<Item class="Geometry" referent="RBX10">
|
||||
<Properties>
|
||||
<string name="Name">Geometry</string>
|
||||
</Properties>
|
||||
</Item>
|
||||
<Item class="RenderHooksService" referent="RBX11">
|
||||
<Properties>
|
||||
<string name="Name">RenderHooksService</string>
|
||||
</Properties>
|
||||
</Item>
|
||||
<Item class="SocialService" referent="RBX12">
|
||||
<Properties>
|
||||
<string name="Name">SocialService</string>
|
||||
</Properties>
|
||||
</Item>
|
||||
<Item class="GamePassService" referent="RBX13">
|
||||
<Properties>
|
||||
<string name="Name">GamePassService</string>
|
||||
</Properties>
|
||||
</Item>
|
||||
<Item class="Debris" referent="RBX14">
|
||||
<Properties>
|
||||
<int name="MaxItems">1000</int>
|
||||
<string name="Name">Debris</string>
|
||||
</Properties>
|
||||
</Item>
|
||||
<Item class="TimerService" referent="RBX15">
|
||||
<Properties>
|
||||
<string name="Name">Instance</string>
|
||||
</Properties>
|
||||
</Item>
|
||||
<Item class="ScriptInformationProvider" referent="RBX16">
|
||||
<Properties>
|
||||
<string name="Name">Instance</string>
|
||||
</Properties>
|
||||
</Item>
|
||||
<Item class="CookiesService" referent="RBX17">
|
||||
<Properties>
|
||||
<string name="Name">CookiesService</string>
|
||||
</Properties>
|
||||
</Item>
|
||||
<Item class="TeleportService" referent="RBX18">
|
||||
<Properties>
|
||||
<string name="Name">Teleport Service</string>
|
||||
</Properties>
|
||||
</Item>
|
||||
<Item class="Players" referent="RBX19">
|
||||
<Properties>
|
||||
<bool name="CharacterAutoLoads">true</bool>
|
||||
<string name="Name">Players</string>
|
||||
</Properties>
|
||||
</Item>
|
||||
<Item class="Selection" referent="RBX20">
|
||||
<Properties>
|
||||
<string name="Name">Selection</string>
|
||||
</Properties>
|
||||
</Item>
|
||||
<Item class="Lighting" referent="RBX21">
|
||||
<Properties>
|
||||
<Color3 name="Ambient">4286611584</Color3>
|
||||
<float name="Brightness">1</float>
|
||||
<Color3 name="ColorShift_Bottom">4278190080</Color3>
|
||||
<Color3 name="ColorShift_Top">4278190080</Color3>
|
||||
<Color3 name="FogColor">4290822336</Color3>
|
||||
<float name="FogEnd">100000</float>
|
||||
<float name="FogStart">0</float>
|
||||
<float name="GeographicLatitude">41.7332993</float>
|
||||
<string name="Name">Lighting</string>
|
||||
<Color3 name="ShadowColor">4289967032</Color3>
|
||||
<string name="TimeOfDay">14:00:00</string>
|
||||
</Properties>
|
||||
</Item>
|
||||
<Item class="ChangeHistoryService" referent="RBX22">
|
||||
<Properties>
|
||||
<string name="Name">ChangeHistoryService</string>
|
||||
</Properties>
|
||||
</Item>
|
||||
</roblox>
|
||||
File diff suppressed because one or more lines are too long
|
|
@ -1 +0,0 @@
|
|||
<List><Value><Table><Entry><Key>Name</Key><Value>My Models</Value></Entry><Entry><Key>CategoryId</Key><Value>-151054632</Value></Entry><Entry><Key>Description</Key><Value>A set of my models.</Value></Entry><Entry><Key>AssetSetId</Key><Value>-151054632</Value></Entry><Entry><Key>CreatorName</Key><Value>happyhomeman</Value></Entry><Entry><Key>ImageAssetId</Key><Value>0</Value></Entry><Entry><Key>SetType</Key><Value>private</Value></Entry></Table></Value><Value><Table><Entry><Key>Name</Key><Value>My Decals</Value></Entry><Entry><Key>CategoryId</Key><Value>-151054631</Value></Entry><Entry><Key>Description</Key><Value>A set of my decals.</Value></Entry><Entry><Key>AssetSetId</Key><Value>-151054631</Value></Entry><Entry><Key>CreatorName</Key><Value>happyhomeman</Value></Entry><Entry><Key>ImageAssetId</Key><Value>21002577</Value></Entry><Entry><Key>SetType</Key><Value>private</Value></Entry></Table></Value><Value><Table><Entry><Key>Name</Key><Value>Experimental</Value></Entry><Entry><Key>CategoryId</Key><Value>462226</Value></Entry><Entry><Key>Description</Key><Value></Value></Entry><Entry><Key>AssetSetId</Key><Value>462226</Value></Entry><Entry><Key>CreatorName</Key><Value>happyhomeman</Value></Entry><Entry><Key>ImageAssetId</Key><Value>65821324</Value></Entry><Entry><Key>SetType</Key><Value>user</Value></Entry></Table></Value><Value><Table><Entry><Key>Name</Key><Value>High Scalability</Value></Entry><Entry><Key>CategoryId</Key><Value>433603</Value></Entry><Entry><Key>Description</Key><Value></Value></Entry><Entry><Key>AssetSetId</Key><Value>433603</Value></Entry><Entry><Key>CreatorName</Key><Value>happyhomeman</Value></Entry><Entry><Key>ImageAssetId</Key><Value>63590456</Value></Entry><Entry><Key>SetType</Key><Value>user</Value></Entry></Table></Value><Value><Table><Entry><Key>Name</Key><Value>Vehicles</Value></Entry><Entry><Key>CategoryId</Key><Value>383879</Value></Entry><Entry><Key>Description</Key><Value></Value></Entry><Entry><Key>AssetSetId</Key><Value>383879</Value></Entry><Entry><Key>CreatorName</Key><Value>happyhomeman</Value></Entry><Entry><Key>ImageAssetId</Key><Value>59188178</Value></Entry><Entry><Key>SetType</Key><Value>user</Value></Entry></Table></Value><Value><Table><Entry><Key>Name</Key><Value>Gear</Value></Entry><Entry><Key>CategoryId</Key><Value>383878</Value></Entry><Entry><Key>Description</Key><Value></Value></Entry><Entry><Key>AssetSetId</Key><Value>383878</Value></Entry><Entry><Key>CreatorName</Key><Value>happyhomeman</Value></Entry><Entry><Key>ImageAssetId</Key><Value>59188142</Value></Entry><Entry><Key>SetType</Key><Value>user</Value></Entry></Table></Value><Value><Table><Entry><Key>Name</Key><Value>Gameplay</Value></Entry><Entry><Key>CategoryId</Key><Value>383875</Value></Entry><Entry><Key>Description</Key><Value></Value></Entry><Entry><Key>AssetSetId</Key><Value>383875</Value></Entry><Entry><Key>CreatorName</Key><Value>happyhomeman</Value></Entry><Entry><Key>ImageAssetId</Key><Value>59188080</Value></Entry><Entry><Key>SetType</Key><Value>user</Value></Entry></Table></Value></List>
|
||||
|
|
@ -1 +0,0 @@
|
|||
<List><Value><Table><Entry><Key>Name</Key><Value>My Models</Value></Entry><Entry><Key>CategoryId</Key><Value>-151054632</Value></Entry><Entry><Key>Description</Key><Value>A set of my models.</Value></Entry><Entry><Key>AssetSetId</Key><Value>-151054632</Value></Entry><Entry><Key>CreatorName</Key><Value>happyhomeman</Value></Entry><Entry><Key>ImageAssetId</Key><Value>0</Value></Entry><Entry><Key>SetType</Key><Value>private</Value></Entry></Table></Value><Value><Table><Entry><Key>Name</Key><Value>My Decals</Value></Entry><Entry><Key>CategoryId</Key><Value>-151054631</Value></Entry><Entry><Key>Description</Key><Value>A set of my decals.</Value></Entry><Entry><Key>AssetSetId</Key><Value>-151054631</Value></Entry><Entry><Key>CreatorName</Key><Value>happyhomeman</Value></Entry><Entry><Key>ImageAssetId</Key><Value>21002577</Value></Entry><Entry><Key>SetType</Key><Value>private</Value></Entry></Table></Value><Value><Table><Entry><Key>Name</Key><Value>Experimental</Value></Entry><Entry><Key>CategoryId</Key><Value>462226</Value></Entry><Entry><Key>Description</Key><Value></Value></Entry><Entry><Key>AssetSetId</Key><Value>462226</Value></Entry><Entry><Key>CreatorName</Key><Value>happyhomeman</Value></Entry><Entry><Key>ImageAssetId</Key><Value>65821324</Value></Entry><Entry><Key>SetType</Key><Value>user</Value></Entry></Table></Value><Value><Table><Entry><Key>Name</Key><Value>High Scalability</Value></Entry><Entry><Key>CategoryId</Key><Value>433603</Value></Entry><Entry><Key>Description</Key><Value></Value></Entry><Entry><Key>AssetSetId</Key><Value>433603</Value></Entry><Entry><Key>CreatorName</Key><Value>happyhomeman</Value></Entry><Entry><Key>ImageAssetId</Key><Value>63590456</Value></Entry><Entry><Key>SetType</Key><Value>user</Value></Entry></Table></Value><Value><Table><Entry><Key>Name</Key><Value>Vehicles</Value></Entry><Entry><Key>CategoryId</Key><Value>383879</Value></Entry><Entry><Key>Description</Key><Value></Value></Entry><Entry><Key>AssetSetId</Key><Value>383879</Value></Entry><Entry><Key>CreatorName</Key><Value>happyhomeman</Value></Entry><Entry><Key>ImageAssetId</Key><Value>59188178</Value></Entry><Entry><Key>SetType</Key><Value>user</Value></Entry></Table></Value><Value><Table><Entry><Key>Name</Key><Value>Gear</Value></Entry><Entry><Key>CategoryId</Key><Value>383878</Value></Entry><Entry><Key>Description</Key><Value></Value></Entry><Entry><Key>AssetSetId</Key><Value>383878</Value></Entry><Entry><Key>CreatorName</Key><Value>happyhomeman</Value></Entry><Entry><Key>ImageAssetId</Key><Value>59188142</Value></Entry><Entry><Key>SetType</Key><Value>user</Value></Entry></Table></Value><Value><Table><Entry><Key>Name</Key><Value>Gameplay</Value></Entry><Entry><Key>CategoryId</Key><Value>383875</Value></Entry><Entry><Key>Description</Key><Value></Value></Entry><Entry><Key>AssetSetId</Key><Value>383875</Value></Entry><Entry><Key>CreatorName</Key><Value>happyhomeman</Value></Entry><Entry><Key>ImageAssetId</Key><Value>59188080</Value></Entry><Entry><Key>SetType</Key><Value>user</Value></Entry></Table></Value></List>
|
||||
|
|
@ -1 +0,0 @@
|
|||
%3%
|
||||
|
|
@ -1,140 +0,0 @@
|
|||
<roblox xmlns:xmime="http://www.w3.org/2005/05/xmlmime" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.archblox.com/archblox.xsd" version="4">
|
||||
<External>null</External>
|
||||
<External>nil</External>
|
||||
<Item class="Hat" referent="RBX47D6E4BF33784D30A07AD3FC77493A40">
|
||||
<Properties>
|
||||
<CoordinateFrame name="AttachmentPoint">
|
||||
<X>0</X>
|
||||
<Y>0.0900000036</Y>
|
||||
<Z>0.180000007</Z>
|
||||
<R00>1</R00>
|
||||
<R01>0</R01>
|
||||
<R02>0</R02>
|
||||
<R10>0</R10>
|
||||
<R11>1</R11>
|
||||
<R12>0</R12>
|
||||
<R20>0</R20>
|
||||
<R21>0</R21>
|
||||
<R22>1</R22>
|
||||
</CoordinateFrame>
|
||||
<string name="Name">ARCHBLOXVisor</string>
|
||||
</Properties>
|
||||
<Item class="Part" referent="RBX51E7C416045A4B7D80CBEA7C53717ACF">
|
||||
<Properties>
|
||||
<bool name="Anchored">false</bool>
|
||||
<float name="BackParamA">-0.5</float>
|
||||
<float name="BackParamB">0.5</float>
|
||||
<token name="BackSurface">0</token>
|
||||
<token name="BackSurfaceInput">0</token>
|
||||
<float name="BottomParamA">-0.5</float>
|
||||
<float name="BottomParamB">0.5</float>
|
||||
<token name="BottomSurface">0</token>
|
||||
<token name="BottomSurfaceInput">0</token>
|
||||
<int name="BrickColor">194</int>
|
||||
<CoordinateFrame name="CFrame">
|
||||
<X>49.0106659</X>
|
||||
<Y>0.590593636</Y>
|
||||
<Z>27.173811</Z>
|
||||
<R00>0.990246177</R00>
|
||||
<R01>-6.40412909e-005</R01>
|
||||
<R02>-0.139328629</R02>
|
||||
<R10>5.6671106e-005</R10>
|
||||
<R11>1</R11>
|
||||
<R12>-5.68651376e-005</R12>
|
||||
<R20>0.139328644</R20>
|
||||
<R21>4.84145821e-005</R21>
|
||||
<R22>0.990246177</R22>
|
||||
</CoordinateFrame>
|
||||
<bool name="CanCollide">true</bool>
|
||||
<PhysicalProperties name="CustomPhysicalProperties">
|
||||
<CustomPhysics>false</CustomPhysics>
|
||||
</PhysicalProperties>
|
||||
<float name="Elasticity">0.5</float>
|
||||
<float name="Friction">0.300000012</float>
|
||||
<float name="FrontParamA">-0.5</float>
|
||||
<float name="FrontParamB">0.5</float>
|
||||
<token name="FrontSurface">0</token>
|
||||
<token name="FrontSurfaceInput">0</token>
|
||||
<float name="LeftParamA">-0.5</float>
|
||||
<float name="LeftParamB">0.5</float>
|
||||
<token name="LeftSurface">0</token>
|
||||
<token name="LeftSurfaceInput">0</token>
|
||||
<bool name="Locked">true</bool>
|
||||
<token name="Material">256</token>
|
||||
<string name="Name">Handle</string>
|
||||
<float name="Reflectance">0</float>
|
||||
<float name="RightParamA">-0.5</float>
|
||||
<float name="RightParamB">0.5</float>
|
||||
<token name="RightSurface">0</token>
|
||||
<token name="RightSurfaceInput">0</token>
|
||||
<Vector3 name="RotVelocity">
|
||||
<X>0</X>
|
||||
<Y>0</Y>
|
||||
<Z>0</Z>
|
||||
</Vector3>
|
||||
<float name="TopParamA">-0.5</float>
|
||||
<float name="TopParamB">0.5</float>
|
||||
<token name="TopSurface">0</token>
|
||||
<token name="TopSurfaceInput">0</token>
|
||||
<float name="Transparency">0</float>
|
||||
<Vector3 name="Velocity">
|
||||
<X>0</X>
|
||||
<Y>0</Y>
|
||||
<Z>0</Z>
|
||||
</Vector3>
|
||||
<token name="formFactorRaw">2</token>
|
||||
<token name="shape">1</token>
|
||||
<Vector3 name="size">
|
||||
<X>1</X>
|
||||
<Y>0.400000006</Y>
|
||||
<Z>1</Z>
|
||||
</Vector3>
|
||||
</Properties>
|
||||
<Item class="SpecialMesh" referent="RBX5CF3983AB62D4FBB8155D6A12CEF75D5">
|
||||
<Properties>
|
||||
<token name="LODX">2</token>
|
||||
<token name="LODY">2</token>
|
||||
<Content name="MeshId"><url>http://www.jarfeh.xyz/asset/?id=302</url></Content>
|
||||
<token name="MeshType">5</token>
|
||||
<string name="Name">Mesh</string>
|
||||
<Vector3 name="Offset">
|
||||
<X>0</X>
|
||||
<Y>0</Y>
|
||||
<Z>0</Z>
|
||||
</Vector3>
|
||||
<Vector3 name="Scale">
|
||||
<X>1.01999998</X>
|
||||
<Y>1.01999998</Y>
|
||||
<Z>1.01999998</Z>
|
||||
</Vector3>
|
||||
<Content name="TextureId"><url>http://www.jarfeh.xyz/asset/?id=301</url></Content>
|
||||
<Vector3 name="VertexColor">
|
||||
<X>1</X>
|
||||
<Y>1</Y>
|
||||
<Z>1</Z>
|
||||
</Vector3>
|
||||
</Properties>
|
||||
</Item>
|
||||
<Item class="Attachment" referent="RBX0FEF25B7CDAE4F8C9E082807DD8E16CE">
|
||||
<Properties>
|
||||
<CoordinateFrame name="CFrame">
|
||||
<X>8.65838956e-009</X>
|
||||
<Y>0.190000057</Y>
|
||||
<Z>0.179727763</Z>
|
||||
<R00>1</R00>
|
||||
<R01>7.87137555e-009</R01>
|
||||
<R02>-3.26223034e-024</R02>
|
||||
<R10>-7.87137555e-009</R10>
|
||||
<R11>1</R11>
|
||||
<R12>-4.1444221e-016</R12>
|
||||
<R20>0</R20>
|
||||
<R21>4.1444221e-016</R21>
|
||||
<R22>1</R22>
|
||||
</CoordinateFrame>
|
||||
<string name="Name">HatAttachment</string>
|
||||
<bool name="Visible">false</bool>
|
||||
</Properties>
|
||||
</Item>
|
||||
</Item>
|
||||
</Item>
|
||||
</roblox>
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 48 KiB |
File diff suppressed because one or more lines are too long
|
|
@ -1,10 +0,0 @@
|
|||
<roblox xmlns:xmime="http://www.w3.org/2005/05/xmlmime" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.archblox.com/archblox.xsd" version="4">
|
||||
<External>null</External>
|
||||
<External>nil</External>
|
||||
<Item class="ShirtGraphic" referent="RBX0">
|
||||
<Properties>
|
||||
<Content name="Graphic"><url>http://jarfeh.xyz/asset/?id=304</url></Content>
|
||||
<string name="Name">Shirt Graphic</string>
|
||||
</Properties>
|
||||
</Item>
|
||||
</roblox>
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 12 KiB |
|
|
@ -1,10 +0,0 @@
|
|||
<roblox xmlns:xmime="http://www.w3.org/2005/05/xmlmime" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.archblox.com/archblox.xsd" version="4">
|
||||
<External>null</External>
|
||||
<External>nil</External>
|
||||
<Item class="Pants" referent="RBX0">
|
||||
<Properties>
|
||||
<string name="Name">Clothing</string>
|
||||
<Content name="PantsTemplate"><url>http://jarfeh.xyz/asset/?id=4000000000000000001</url></Content>
|
||||
</Properties>
|
||||
</Item>
|
||||
</roblox>
|
||||
|
|
@ -1,10 +0,0 @@
|
|||
<roblox xmlns:xmime="http://www.w3.org/2005/05/xmlmime" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.archblox.com/archblox.xsd" version="4">
|
||||
<External>null</External>
|
||||
<External>nil</External>
|
||||
<Item class="Shirt" referent="RBX0">
|
||||
<Properties>
|
||||
<string name="Name">Clothing</string>
|
||||
<Content name="ShirtTemplate"><url>http://jarfeh.xyz/asset/?id=4000000000000000000</url></Content>
|
||||
</Properties>
|
||||
</Item>
|
||||
</roblox>
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 3.5 KiB |
|
|
@ -1,14 +0,0 @@
|
|||
<roblox xmlns:xmime="http://www.w3.org/2005/05/xmlmime" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.archblox.com/archblox.xsd" version="4">
|
||||
<External>null</External>
|
||||
<External>nil</External>
|
||||
<Item class="Decal" referent="RBX0">
|
||||
<Properties>
|
||||
<token name="Face">5</token>
|
||||
<string name="Name">face</string>
|
||||
<float name="Shiny">20</float>
|
||||
<float name="Specular">0</float>
|
||||
<Content name="Texture"><url>http://jarfeh.xyz/asset/?id=307</url></Content>
|
||||
<bool name="archivable">true</bool>
|
||||
</Properties>
|
||||
</Item>
|
||||
</roblox>
|
||||
|
|
@ -1 +0,0 @@
|
|||
<List><Value><Table><Entry><Key>Name</Key><Value>Spikes - Moving</Value></Entry><Entry><Key>AssetId</Key><Value>41324904</Value></Entry><Entry><Key>AssetSetId</Key><Value>360360</Value></Entry><Entry><Key>AssetVersionId</Key><Value>137995138</Value></Entry><Entry><Key>CreatorName</Key><Value>ROBLOX</Value></Entry><Entry><Key>IsTrusted</Key><Value>True</Value></Entry></Table></Value><Value><Table><Entry><Key>Name</Key><Value>Spikes</Value></Entry><Entry><Key>AssetId</Key><Value>41324903</Value></Entry><Entry><Key>AssetSetId</Key><Value>360360</Value></Entry><Entry><Key>AssetVersionId</Key><Value>137995181</Value></Entry><Entry><Key>CreatorName</Key><Value>ROBLOX</Value></Entry><Entry><Key>IsTrusted</Key><Value>True</Value></Entry></Table></Value><Value><Table><Entry><Key>Name</Key><Value>Fire Pit</Value></Entry><Entry><Key>AssetId</Key><Value>41324902</Value></Entry><Entry><Key>AssetSetId</Key><Value>360360</Value></Entry><Entry><Key>AssetVersionId</Key><Value>137995228</Value></Entry><Entry><Key>CreatorName</Key><Value>ROBLOX</Value></Entry><Entry><Key>IsTrusted</Key><Value>True</Value></Entry></Table></Value><Value><Table><Entry><Key>Name</Key><Value>Friend Only Door - Hostile</Value></Entry><Entry><Key>AssetId</Key><Value>41324878</Value></Entry><Entry><Key>AssetSetId</Key><Value>360360</Value></Entry><Entry><Key>AssetVersionId</Key><Value>137995300</Value></Entry><Entry><Key>CreatorName</Key><Value>ROBLOX</Value></Entry><Entry><Key>IsTrusted</Key><Value>True</Value></Entry></Table></Value></List>
|
||||
|
|
@ -1 +0,0 @@
|
|||
<List><Value><Table><Entry><Key>Name</Key><Value>Float Pad - Sideways</Value></Entry><Entry><Key>AssetId</Key><Value>56445964</Value></Entry><Entry><Key>AssetSetId</Key><Value>360362</Value></Entry><Entry><Key>AssetVersionId</Key><Value>138011329</Value></Entry><Entry><Key>CreatorName</Key><Value>ROBLOX</Value></Entry><Entry><Key>IsTrusted</Key><Value>True</Value></Entry></Table></Value><Value><Table><Entry><Key>Name</Key><Value>Float Pad</Value></Entry><Entry><Key>AssetId</Key><Value>56445997</Value></Entry><Entry><Key>AssetSetId</Key><Value>360362</Value></Entry><Entry><Key>AssetVersionId</Key><Value>138011397</Value></Entry><Entry><Key>CreatorName</Key><Value>ROBLOX</Value></Entry><Entry><Key>IsTrusted</Key><Value>True</Value></Entry></Table></Value><Value><Table><Entry><Key>Name</Key><Value>Elevator - 8 x 8 x 32</Value></Entry><Entry><Key>AssetId</Key><Value>41324885</Value></Entry><Entry><Key>AssetSetId</Key><Value>360362</Value></Entry><Entry><Key>AssetVersionId</Key><Value>138064397</Value></Entry><Entry><Key>CreatorName</Key><Value>ROBLOX</Value></Entry><Entry><Key>IsTrusted</Key><Value>True</Value></Entry></Table></Value><Value><Table><Entry><Key>Name</Key><Value>Elevator - 8 x 8 x 16</Value></Entry><Entry><Key>AssetId</Key><Value>41324881</Value></Entry><Entry><Key>AssetSetId</Key><Value>360362</Value></Entry><Entry><Key>AssetVersionId</Key><Value>138064342</Value></Entry><Entry><Key>CreatorName</Key><Value>ROBLOX</Value></Entry><Entry><Key>IsTrusted</Key><Value>True</Value></Entry></Table></Value><Value><Table><Entry><Key>Name</Key><Value>Friend Only Door 2.0</Value></Entry><Entry><Key>AssetId</Key><Value>41694124</Value></Entry><Entry><Key>AssetSetId</Key><Value>360362</Value></Entry><Entry><Key>AssetVersionId</Key><Value>138011692</Value></Entry><Entry><Key>CreatorName</Key><Value>ROBLOX</Value></Entry><Entry><Key>IsTrusted</Key><Value>True</Value></Entry></Table></Value></List>
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
|
@ -1 +0,0 @@
|
|||
<List><Value><Table><Entry><Key>Name</Key><Value>Wood Bridge</Value></Entry><Entry><Key>AssetId</Key><Value>56448952</Value></Entry><Entry><Key>AssetSetId</Key><Value>360371</Value></Entry><Entry><Key>AssetVersionId</Key><Value>138017728</Value></Entry><Entry><Key>CreatorName</Key><Value>ROBLOX</Value></Entry><Entry><Key>IsTrusted</Key><Value>True</Value></Entry></Table></Value><Value><Table><Entry><Key>Name</Key><Value>Flowers</Value></Entry><Entry><Key>AssetId</Key><Value>56448980</Value></Entry><Entry><Key>AssetSetId</Key><Value>360371</Value></Entry><Entry><Key>AssetVersionId</Key><Value>138017788</Value></Entry><Entry><Key>CreatorName</Key><Value>ROBLOX</Value></Entry><Entry><Key>IsTrusted</Key><Value>True</Value></Entry></Table></Value><Value><Table><Entry><Key>Name</Key><Value>Mailbox</Value></Entry><Entry><Key>AssetId</Key><Value>56449011</Value></Entry><Entry><Key>AssetSetId</Key><Value>360371</Value></Entry><Entry><Key>AssetVersionId</Key><Value>138017843</Value></Entry><Entry><Key>CreatorName</Key><Value>ROBLOX</Value></Entry><Entry><Key>IsTrusted</Key><Value>True</Value></Entry></Table></Value><Value><Table><Entry><Key>Name</Key><Value>Streetlight</Value></Entry><Entry><Key>AssetId</Key><Value>56449028</Value></Entry><Entry><Key>AssetSetId</Key><Value>360371</Value></Entry><Entry><Key>AssetVersionId</Key><Value>142449877</Value></Entry><Entry><Key>CreatorName</Key><Value>ROBLOX</Value></Entry><Entry><Key>IsTrusted</Key><Value>True</Value></Entry></Table></Value><Value><Table><Entry><Key>Name</Key><Value>Fence</Value></Entry><Entry><Key>AssetId</Key><Value>56449052</Value></Entry><Entry><Key>AssetSetId</Key><Value>360371</Value></Entry><Entry><Key>AssetVersionId</Key><Value>138017929</Value></Entry><Entry><Key>CreatorName</Key><Value>ROBLOX</Value></Entry><Entry><Key>IsTrusted</Key><Value>True</Value></Entry></Table></Value><Value><Table><Entry><Key>Name</Key><Value>Autumn Tree - Large</Value></Entry><Entry><Key>AssetId</Key><Value>56449099</Value></Entry><Entry><Key>AssetSetId</Key><Value>360371</Value></Entry><Entry><Key>AssetVersionId</Key><Value>138018028</Value></Entry><Entry><Key>CreatorName</Key><Value>ROBLOX</Value></Entry><Entry><Key>IsTrusted</Key><Value>True</Value></Entry></Table></Value><Value><Table><Entry><Key>Name</Key><Value>Tree - Small</Value></Entry><Entry><Key>AssetId</Key><Value>56449132</Value></Entry><Entry><Key>AssetSetId</Key><Value>360371</Value></Entry><Entry><Key>AssetVersionId</Key><Value>138018107</Value></Entry><Entry><Key>CreatorName</Key><Value>ROBLOX</Value></Entry><Entry><Key>IsTrusted</Key><Value>True</Value></Entry></Table></Value><Value><Table><Entry><Key>Name</Key><Value>Tree - Medium</Value></Entry><Entry><Key>AssetId</Key><Value>56449156</Value></Entry><Entry><Key>AssetSetId</Key><Value>360371</Value></Entry><Entry><Key>AssetVersionId</Key><Value>138018154</Value></Entry><Entry><Key>CreatorName</Key><Value>ROBLOX</Value></Entry><Entry><Key>IsTrusted</Key><Value>True</Value></Entry></Table></Value><Value><Table><Entry><Key>Name</Key><Value>Tree - Large</Value></Entry><Entry><Key>AssetId</Key><Value>56449188</Value></Entry><Entry><Key>AssetSetId</Key><Value>360371</Value></Entry><Entry><Key>AssetVersionId</Key><Value>138018219</Value></Entry><Entry><Key>CreatorName</Key><Value>ROBLOX</Value></Entry><Entry><Key>IsTrusted</Key><Value>True</Value></Entry></Table></Value></List>
|
||||
File diff suppressed because one or more lines are too long
|
|
@ -1 +0,0 @@
|
|||
<List><Value><Table><Entry><Key>Name</Key><Value>Chimney</Value></Entry><Entry><Key>AssetId</Key><Value>56449996</Value></Entry><Entry><Key>AssetSetId</Key><Value>360375</Value></Entry><Entry><Key>AssetVersionId</Key><Value>138019902</Value></Entry><Entry><Key>CreatorName</Key><Value>ROBLOX</Value></Entry><Entry><Key>IsTrusted</Key><Value>True</Value></Entry></Table></Value><Value><Table><Entry><Key>Name</Key><Value>Roof - Peak</Value></Entry><Entry><Key>AssetId</Key><Value>56450017</Value></Entry><Entry><Key>AssetSetId</Key><Value>360375</Value></Entry><Entry><Key>AssetVersionId</Key><Value>138019961</Value></Entry><Entry><Key>CreatorName</Key><Value>ROBLOX</Value></Entry><Entry><Key>IsTrusted</Key><Value>True</Value></Entry></Table></Value><Value><Table><Entry><Key>Name</Key><Value>Roof - Inner Corner</Value></Entry><Entry><Key>AssetId</Key><Value>56450038</Value></Entry><Entry><Key>AssetSetId</Key><Value>360375</Value></Entry><Entry><Key>AssetVersionId</Key><Value>138020004</Value></Entry><Entry><Key>CreatorName</Key><Value>ROBLOX</Value></Entry><Entry><Key>IsTrusted</Key><Value>True</Value></Entry></Table></Value><Value><Table><Entry><Key>Name</Key><Value>Roof</Value></Entry><Entry><Key>AssetId</Key><Value>56450063</Value></Entry><Entry><Key>AssetSetId</Key><Value>360375</Value></Entry><Entry><Key>AssetVersionId</Key><Value>138020052</Value></Entry><Entry><Key>CreatorName</Key><Value>ROBLOX</Value></Entry><Entry><Key>IsTrusted</Key><Value>True</Value></Entry></Table></Value><Value><Table><Entry><Key>Name</Key><Value>Window - Small</Value></Entry><Entry><Key>AssetId</Key><Value>56450092</Value></Entry><Entry><Key>AssetSetId</Key><Value>360375</Value></Entry><Entry><Key>AssetVersionId</Key><Value>138020114</Value></Entry><Entry><Key>CreatorName</Key><Value>ROBLOX</Value></Entry><Entry><Key>IsTrusted</Key><Value>True</Value></Entry></Table></Value><Value><Table><Entry><Key>Name</Key><Value>Window - Tall Corner</Value></Entry><Entry><Key>AssetId</Key><Value>56450197</Value></Entry><Entry><Key>AssetSetId</Key><Value>360375</Value></Entry><Entry><Key>AssetVersionId</Key><Value>138020372</Value></Entry><Entry><Key>CreatorName</Key><Value>ROBLOX</Value></Entry><Entry><Key>IsTrusted</Key><Value>True</Value></Entry></Table></Value><Value><Table><Entry><Key>Name</Key><Value>Window - Tall</Value></Entry><Entry><Key>AssetId</Key><Value>56450222</Value></Entry><Entry><Key>AssetSetId</Key><Value>360375</Value></Entry><Entry><Key>AssetVersionId</Key><Value>138020435</Value></Entry><Entry><Key>CreatorName</Key><Value>ROBLOX</Value></Entry><Entry><Key>IsTrusted</Key><Value>True</Value></Entry></Table></Value></List>
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
|
@ -1,392 +0,0 @@
|
|||
<roblox xmlns:xmime="http://www.w3.org/2005/05/xmlmime" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.jarfeh.xyz/roblox.xsd" version="4">
|
||||
<External>null</External>
|
||||
<External>nil</External>
|
||||
<Item class="Script" referent="RBX0">
|
||||
<Properties>
|
||||
<bool name="Disabled">false</bool>
|
||||
<Content name="LinkedSource"><null></null></Content>
|
||||
<string name="Name">Health</string>
|
||||
<ProtectedString name="Source">function waitForChild(parent, childName)
|
||||
local child = parent:findFirstChild(childName)
|
||||
if child then return child end
|
||||
while true do
|
||||
child = parent.ChildAdded:wait()
|
||||
if child.Name==childName then return child end
|
||||
end
|
||||
end
|
||||
|
||||
-- declarations
|
||||
local Figure = script.Parent
|
||||
local Head = waitForChild(Figure, "Head")
|
||||
local Humanoid = waitForChild(Figure, "Humanoid")
|
||||
local regening = false
|
||||
|
||||
-- regeneration
|
||||
function regenHealth()
|
||||
if regening then return end
|
||||
regening = true
|
||||
while Humanoid.Health < Humanoid.MaxHealth do
|
||||
local s = wait(1)
|
||||
local health = Humanoid.Health
|
||||
if health > 0 and health < Humanoid.MaxHealth then
|
||||
local newHealthDelta = 0.01 * s * Humanoid.MaxHealth
|
||||
health = health + newHealthDelta
|
||||
Humanoid.Health = math.min(health,Humanoid.MaxHealth)
|
||||
end
|
||||
end
|
||||
if Humanoid.Health > Humanoid.MaxHealth then
|
||||
Humanoid.Health = Humanoid.MaxHealth
|
||||
end
|
||||
regening = false
|
||||
end
|
||||
|
||||
Humanoid.HealthChanged:connect(regenHealth)
|
||||
</ProtectedString>
|
||||
<bool name="archivable">true</bool>
|
||||
</Properties>
|
||||
</Item>
|
||||
<Item class="Script" referent="RBX1">
|
||||
<Properties>
|
||||
<bool name="Disabled">false</bool>
|
||||
<Content name="LinkedSource"><null></null></Content>
|
||||
<string name="Name">HealthScript v3.1</string>
|
||||
<ProtectedString name="Source">local HealthGUI_prototype = script:FindFirstChild("HealthGUI")
|
||||
local lastHealth = 100
|
||||
local lastHealth2 = 100
|
||||
local maxWidth = 0.96
|
||||
|
||||
local humanoid = script.Parent.Humanoid
|
||||
|
||||
if (humanoid == nil) then
|
||||
print("ERROR: no humanoid found in 'HealthScript v3.1'")
|
||||
end
|
||||
|
||||
|
||||
function CreateGUI()
|
||||
local p = game.Players:GetPlayerFromCharacter(humanoid.Parent)
|
||||
HealthGUI_prototype.Parent = p.PlayerGui
|
||||
end
|
||||
|
||||
function UpdateGUI(health)
|
||||
tray = HealthGUI_prototype.tray
|
||||
local width = (health / humanoid.MaxHealth) * maxWidth
|
||||
local height = 0.83
|
||||
local lastX = tray.bar.Position.X.Scale
|
||||
local x = 0.019 + (maxWidth - width)
|
||||
local y = 0.1
|
||||
|
||||
tray.bar.Position = UDim2.new(x,0,y, 0)
|
||||
tray.bar.Size = UDim2.new(width, 0, height, 0)
|
||||
-- If more than 1/4 health, bar = green. Else, bar = red.
|
||||
if( (health / humanoid.MaxHealth) > 0.25 ) then
|
||||
tray.barRed.Size = UDim2.new(0, 0, 0, 0)
|
||||
else
|
||||
tray.barRed.Position = tray.bar.Position
|
||||
tray.barRed.Size = tray.bar.Size
|
||||
tray.bar.Size = UDim2.new(0, 0, 0, 0)
|
||||
end
|
||||
|
||||
if ( (lastHealth - health) > (humanoid.MaxHealth / 10) ) then
|
||||
lastHealth = health
|
||||
|
||||
if humanoid.Health ~= humanoid.MaxHealth then
|
||||
delay(0,function()
|
||||
AnimateHurtOverlay()
|
||||
end)
|
||||
delay(0,function()
|
||||
AnimateBars(x, y, lastX, height)
|
||||
end)
|
||||
end
|
||||
else
|
||||
lastHealth = health
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
function HealthChanged(health)
|
||||
UpdateGUI(health)
|
||||
if ( (lastHealth2 - health) > (humanoid.MaxHealth / 10) ) then
|
||||
lastHealth2 = health
|
||||
else
|
||||
lastHealth2 = health
|
||||
end
|
||||
end
|
||||
|
||||
function AnimateBars(x, y, lastX, height)
|
||||
tray = HealthGUI_prototype.tray
|
||||
local width = math.abs(x - lastX)
|
||||
if( x > lastX ) then
|
||||
x = lastX
|
||||
end
|
||||
tray.bar2.Position = UDim2.new(x,0, y, 0)
|
||||
tray.bar2.Size = UDim2.new(width, 0, height, 0)
|
||||
tray.bar2.BackgroundTransparency = 0
|
||||
local GBchannels = 1
|
||||
local j = 0.2
|
||||
|
||||
local i_total = 30
|
||||
for i=1,i_total do
|
||||
-- Increment Values
|
||||
if (GBchannels < 0.2) then
|
||||
j = -j
|
||||
end
|
||||
GBchannels = GBchannels + j
|
||||
if (i > (i_total - 10)) then
|
||||
tray.bar2.BackgroundTransparency = tray.bar2.BackgroundTransparency + 0.1
|
||||
end
|
||||
tray.bar2.BackgroundColor3 = Color3.new(1, GBchannels, GBchannels)
|
||||
|
||||
wait(0.02)
|
||||
end
|
||||
end
|
||||
|
||||
function AnimateHurtOverlay()
|
||||
-- Start:
|
||||
-- overlay.Position = UDim2.new(0, 0, 0, -22)
|
||||
-- overlay.Size = UDim2.new(1, 0, 1.15, 30)
|
||||
|
||||
-- Finish:
|
||||
-- overlay.Position = UDim2.new(-2, 0, -2, -22)
|
||||
-- overlay.Size = UDim2.new(4.5, 0, 4.65, 30)
|
||||
|
||||
overlay = HealthGUI_prototype.hurtOverlay
|
||||
overlay.Position = UDim2.new(-2, 0, -2, -22)
|
||||
overlay.Size = UDim2.new(4.5, 0, 4.65, 30)
|
||||
-- Animate In, fast
|
||||
local i_total = 2
|
||||
local wiggle_total = 0
|
||||
local wiggle_i = 0.02
|
||||
for i=1,i_total do
|
||||
overlay.Position = UDim2.new( (-2 + (2 * (i/i_total)) + wiggle_total/2), 0, (-2 + (2 * (i/i_total)) + wiggle_total/2), -22 )
|
||||
overlay.Size = UDim2.new( (4.5 - (3.5 * (i/i_total)) + wiggle_total), 0, (4.65 - (3.5 * (i/i_total)) + wiggle_total), 30 )
|
||||
wait(0.01)
|
||||
end
|
||||
|
||||
i_total = 30
|
||||
|
||||
wait(0.03)
|
||||
|
||||
-- Animate Out, slow
|
||||
for i=1,i_total do
|
||||
if( math.abs(wiggle_total) > (wiggle_i * 3) ) then
|
||||
wiggle_i = -wiggle_i
|
||||
end
|
||||
wiggle_total = wiggle_total + wiggle_i
|
||||
overlay.Position = UDim2.new( (0 - (2 * (i/i_total)) + wiggle_total/2), 0, (0 - (2 * (i/i_total)) + wiggle_total/2), -22 )
|
||||
overlay.Size = UDim2.new( (1 + (3.5 * (i/i_total)) + wiggle_total), 0, (1.15 + (3.5 * (i/i_total)) + wiggle_total), 30 )
|
||||
wait(0.01)
|
||||
end
|
||||
|
||||
-- Hide after we're done
|
||||
overlay.Position = UDim2.new(10, 0, 0, 0)
|
||||
end
|
||||
|
||||
CreateGUI()
|
||||
humanoid.HealthChanged:connect(HealthChanged)
|
||||
humanoid.Died:connect(function() HealthChanged(0) end)</ProtectedString>
|
||||
<bool name="archivable">true</bool>
|
||||
</Properties>
|
||||
<Item class="GuiMain" referent="RBX2">
|
||||
<Properties>
|
||||
<string name="Name">HealthGUI</string>
|
||||
<bool name="archivable">true</bool>
|
||||
</Properties>
|
||||
<Item class="ImageLabel" referent="RBX3">
|
||||
<Properties>
|
||||
<bool name="Active">false</bool>
|
||||
<Color3 name="BackgroundColor3">4290164919</Color3>
|
||||
<float name="BackgroundTransparency">1</float>
|
||||
<Color3 name="BorderColor3">4279970357</Color3>
|
||||
<int name="BorderSizePixel">1</int>
|
||||
<bool name="Draggable">false</bool>
|
||||
<Content name="Image"><url>http://www.jarfeh.xyz/asset/?id=34854607</url></Content>
|
||||
<string name="Name">hurtOverlay</string>
|
||||
<UDim2 name="Position">
|
||||
<XS>2</XS>
|
||||
<XO>0</XO>
|
||||
<YS>0</YS>
|
||||
<YO>-22</YO>
|
||||
</UDim2>
|
||||
<UDim2 name="Size">
|
||||
<XS>1</XS>
|
||||
<XO>0</XO>
|
||||
<YS>1.1500001</YS>
|
||||
<YO>30</YO>
|
||||
</UDim2>
|
||||
<token name="SizeConstraint">0</token>
|
||||
<bool name="Visible">true</bool>
|
||||
<int name="ZIndex">1</int>
|
||||
<bool name="archivable">true</bool>
|
||||
</Properties>
|
||||
</Item>
|
||||
<Item class="Frame" referent="RBX4">
|
||||
<Properties>
|
||||
<bool name="Active">false</bool>
|
||||
<Color3 name="BackgroundColor3">4285215356</Color3>
|
||||
<float name="BackgroundTransparency">1</float>
|
||||
<Color3 name="BorderColor3">4279970357</Color3>
|
||||
<int name="BorderSizePixel">1</int>
|
||||
<bool name="Draggable">false</bool>
|
||||
<string name="Name">tray</string>
|
||||
<UDim2 name="Position">
|
||||
<XS>0.5</XS>
|
||||
<XO>-44</XO>
|
||||
<YS>1</YS>
|
||||
<YO>-26</YO>
|
||||
</UDim2>
|
||||
<UDim2 name="Size">
|
||||
<XS>0</XS>
|
||||
<XO>170</XO>
|
||||
<YS>0</YS>
|
||||
<YO>18</YO>
|
||||
</UDim2>
|
||||
<token name="SizeConstraint">2</token>
|
||||
<token name="Style">0</token>
|
||||
<bool name="Visible">true</bool>
|
||||
<int name="ZIndex">1</int>
|
||||
<bool name="archivable">true</bool>
|
||||
</Properties>
|
||||
<Item class="ImageLabel" referent="RBX5">
|
||||
<Properties>
|
||||
<bool name="Active">false</bool>
|
||||
<Color3 name="BackgroundColor3">4294967295</Color3>
|
||||
<float name="BackgroundTransparency">1</float>
|
||||
<Color3 name="BorderColor3">4279970357</Color3>
|
||||
<int name="BorderSizePixel">1</int>
|
||||
<bool name="Draggable">false</bool>
|
||||
<Content name="Image"><url>http://www.jarfeh.xyz/asset/?id=35238000</url></Content>
|
||||
<string name="Name">bkg</string>
|
||||
<UDim2 name="Position">
|
||||
<XS>0</XS>
|
||||
<XO>0</XO>
|
||||
<YS>0</YS>
|
||||
<YO>0</YO>
|
||||
</UDim2>
|
||||
<UDim2 name="Size">
|
||||
<XS>1</XS>
|
||||
<XO>0</XO>
|
||||
<YS>1</YS>
|
||||
<YO>0</YO>
|
||||
</UDim2>
|
||||
<token name="SizeConstraint">0</token>
|
||||
<bool name="Visible">true</bool>
|
||||
<int name="ZIndex">1</int>
|
||||
<bool name="archivable">true</bool>
|
||||
</Properties>
|
||||
</Item>
|
||||
<Item class="ImageLabel" referent="RBX6">
|
||||
<Properties>
|
||||
<bool name="Active">false</bool>
|
||||
<Color3 name="BackgroundColor3">4294967295</Color3>
|
||||
<float name="BackgroundTransparency">1</float>
|
||||
<Color3 name="BorderColor3">4279970357</Color3>
|
||||
<int name="BorderSizePixel">1</int>
|
||||
<bool name="Draggable">false</bool>
|
||||
<Content name="Image"><url>http://www.jarfeh.xyz/asset/?id=35238036</url></Content>
|
||||
<string name="Name">barRed</string>
|
||||
<UDim2 name="Position">
|
||||
<XS>0.0189999994</XS>
|
||||
<XO>0</XO>
|
||||
<YS>0.100000001</YS>
|
||||
<YO>0</YO>
|
||||
</UDim2>
|
||||
<UDim2 name="Size">
|
||||
<XS>0</XS>
|
||||
<XO>0</XO>
|
||||
<YS>0</YS>
|
||||
<YO>0</YO>
|
||||
</UDim2>
|
||||
<token name="SizeConstraint">0</token>
|
||||
<bool name="Visible">true</bool>
|
||||
<int name="ZIndex">1</int>
|
||||
<bool name="archivable">true</bool>
|
||||
</Properties>
|
||||
</Item>
|
||||
<Item class="Frame" referent="RBX7">
|
||||
<Properties>
|
||||
<bool name="Active">false</bool>
|
||||
<Color3 name="BackgroundColor3">4294967295</Color3>
|
||||
<float name="BackgroundTransparency">1.00000012</float>
|
||||
<Color3 name="BorderColor3">4279970357</Color3>
|
||||
<int name="BorderSizePixel">0</int>
|
||||
<bool name="Draggable">false</bool>
|
||||
<string name="Name">bar2</string>
|
||||
<UDim2 name="Position">
|
||||
<XS>0.0189999994</XS>
|
||||
<XO>0</XO>
|
||||
<YS>0.100000001</YS>
|
||||
<YO>0</YO>
|
||||
</UDim2>
|
||||
<UDim2 name="Size">
|
||||
<XS>0.192000002</XS>
|
||||
<XO>0</XO>
|
||||
<YS>0.829999983</YS>
|
||||
<YO>0</YO>
|
||||
</UDim2>
|
||||
<token name="SizeConstraint">0</token>
|
||||
<token name="Style">0</token>
|
||||
<bool name="Visible">true</bool>
|
||||
<int name="ZIndex">1</int>
|
||||
<bool name="archivable">true</bool>
|
||||
</Properties>
|
||||
</Item>
|
||||
<Item class="ImageLabel" referent="RBX8">
|
||||
<Properties>
|
||||
<bool name="Active">false</bool>
|
||||
<Color3 name="BackgroundColor3">4294967295</Color3>
|
||||
<float name="BackgroundTransparency">1</float>
|
||||
<Color3 name="BorderColor3">4279970357</Color3>
|
||||
<int name="BorderSizePixel">1</int>
|
||||
<bool name="Draggable">false</bool>
|
||||
<Content name="Image"><url>http://www.jarfeh.xyz/asset/?id=35238053</url></Content>
|
||||
<string name="Name">bar</string>
|
||||
<UDim2 name="Position">
|
||||
<XS>0.0189999994</XS>
|
||||
<XO>0</XO>
|
||||
<YS>0.100000001</YS>
|
||||
<YO>0</YO>
|
||||
</UDim2>
|
||||
<UDim2 name="Size">
|
||||
<XS>0.959999979</XS>
|
||||
<XO>0</XO>
|
||||
<YS>0.829999983</YS>
|
||||
<YO>0</YO>
|
||||
</UDim2>
|
||||
<token name="SizeConstraint">0</token>
|
||||
<bool name="Visible">true</bool>
|
||||
<int name="ZIndex">1</int>
|
||||
<bool name="archivable">true</bool>
|
||||
</Properties>
|
||||
</Item>
|
||||
<Item class="ImageLabel" referent="RBX9">
|
||||
<Properties>
|
||||
<bool name="Active">false</bool>
|
||||
<Color3 name="BackgroundColor3">4294967295</Color3>
|
||||
<float name="BackgroundTransparency">1</float>
|
||||
<Color3 name="BorderColor3">4279970357</Color3>
|
||||
<int name="BorderSizePixel">0</int>
|
||||
<bool name="Draggable">false</bool>
|
||||
<Content name="Image"><url>http://www.jarfeh.xyz/asset/?id=34816363</url></Content>
|
||||
<string name="Name">label</string>
|
||||
<UDim2 name="Position">
|
||||
<XS>0.680000007</XS>
|
||||
<XO>0</XO>
|
||||
<YS>0.300000012</YS>
|
||||
<YO>0</YO>
|
||||
</UDim2>
|
||||
<UDim2 name="Size">
|
||||
<XS>0.25</XS>
|
||||
<XO>0</XO>
|
||||
<YS>0.349999994</YS>
|
||||
<YO>0</YO>
|
||||
</UDim2>
|
||||
<token name="SizeConstraint">0</token>
|
||||
<bool name="Visible">true</bool>
|
||||
<int name="ZIndex">1</int>
|
||||
<bool name="archivable">true</bool>
|
||||
</Properties>
|
||||
</Item>
|
||||
</Item>
|
||||
</Item>
|
||||
</Item>
|
||||
</roblox>
|
||||
|
|
@ -1 +0,0 @@
|
|||
<List><Value><Table><Entry><Key>Name</Key><Value>Small Neutral Spawn</Value></Entry><Entry><Key>AssetId</Key><Value>59524197</Value></Entry><Entry><Key>AssetSetId</Key><Value>383875</Value></Entry><Entry><Key>AssetVersionId</Key><Value>144864324</Value></Entry><Entry><Key>CreatorName</Key><Value>ROBLOX</Value></Entry><Entry><Key>IsTrusted</Key><Value>True</Value></Entry></Table></Value></List>
|
||||
|
|
@ -1 +0,0 @@
|
|||
<List><Value><Table><Entry><Key>Name</Key><Value>Trowel Dispenser</Value></Entry><Entry><Key>AssetId</Key><Value>59524124</Value></Entry><Entry><Key>AssetSetId</Key><Value>383878</Value></Entry><Entry><Key>AssetVersionId</Key><Value>171986570</Value></Entry><Entry><Key>CreatorName</Key><Value>ROBLOX</Value></Entry><Entry><Key>IsTrusted</Key><Value>True</Value></Entry></Table></Value><Value><Table><Entry><Key>Name</Key><Value>Superball Dispenser</Value></Entry><Entry><Key>AssetId</Key><Value>59524102</Value></Entry><Entry><Key>AssetSetId</Key><Value>383878</Value></Entry><Entry><Key>AssetVersionId</Key><Value>171986758</Value></Entry><Entry><Key>CreatorName</Key><Value>ROBLOX</Value></Entry><Entry><Key>IsTrusted</Key><Value>True</Value></Entry></Table></Value><Value><Table><Entry><Key>Name</Key><Value>Slingshot Dispenser</Value></Entry><Entry><Key>AssetId</Key><Value>59524079</Value></Entry><Entry><Key>AssetSetId</Key><Value>383878</Value></Entry><Entry><Key>AssetVersionId</Key><Value>171986806</Value></Entry><Entry><Key>CreatorName</Key><Value>ROBLOX</Value></Entry><Entry><Key>IsTrusted</Key><Value>True</Value></Entry></Table></Value><Value><Table><Entry><Key>Name</Key><Value>Rocket Launcher Dispenser</Value></Entry><Entry><Key>AssetId</Key><Value>59524044</Value></Entry><Entry><Key>AssetSetId</Key><Value>383878</Value></Entry><Entry><Key>AssetVersionId</Key><Value>171986853</Value></Entry><Entry><Key>CreatorName</Key><Value>ROBLOX</Value></Entry><Entry><Key>IsTrusted</Key><Value>True</Value></Entry></Table></Value><Value><Table><Entry><Key>Name</Key><Value>Timebomb Dispenser</Value></Entry><Entry><Key>AssetId</Key><Value>59524006</Value></Entry><Entry><Key>AssetSetId</Key><Value>383878</Value></Entry><Entry><Key>AssetVersionId</Key><Value>171986652</Value></Entry><Entry><Key>CreatorName</Key><Value>ROBLOX</Value></Entry><Entry><Key>IsTrusted</Key><Value>True</Value></Entry></Table></Value><Value><Table><Entry><Key>Name</Key><Value>Sword Dispenser</Value></Entry><Entry><Key>AssetId</Key><Value>59524162</Value></Entry><Entry><Key>AssetSetId</Key><Value>383878</Value></Entry><Entry><Key>AssetVersionId</Key><Value>171986713</Value></Entry><Entry><Key>CreatorName</Key><Value>ROBLOX</Value></Entry><Entry><Key>IsTrusted</Key><Value>True</Value></Entry></Table></Value></List>
|
||||
|
|
@ -1 +0,0 @@
|
|||
<List><Value><Table><Entry><Key>Name</Key><Value>Bus</Value></Entry><Entry><Key>AssetId</Key><Value>59524699</Value></Entry><Entry><Key>AssetSetId</Key><Value>383879</Value></Entry><Entry><Key>AssetVersionId</Key><Value>144837133</Value></Entry><Entry><Key>CreatorName</Key><Value>ROBLOX</Value></Entry><Entry><Key>IsTrusted</Key><Value>True</Value></Entry></Table></Value><Value><Table><Entry><Key>Name</Key><Value>Racecar</Value></Entry><Entry><Key>AssetId</Key><Value>59524640</Value></Entry><Entry><Key>AssetSetId</Key><Value>383879</Value></Entry><Entry><Key>AssetVersionId</Key><Value>144837042</Value></Entry><Entry><Key>CreatorName</Key><Value>ROBLOX</Value></Entry><Entry><Key>IsTrusted</Key><Value>True</Value></Entry></Table></Value><Value><Table><Entry><Key>Name</Key><Value>Truck</Value></Entry><Entry><Key>AssetId</Key><Value>59524606</Value></Entry><Entry><Key>AssetSetId</Key><Value>383879</Value></Entry><Entry><Key>AssetVersionId</Key><Value>144836955</Value></Entry><Entry><Key>CreatorName</Key><Value>ROBLOX</Value></Entry><Entry><Key>IsTrusted</Key><Value>True</Value></Entry></Table></Value><Value><Table><Entry><Key>Name</Key><Value>Car</Value></Entry><Entry><Key>AssetId</Key><Value>59524676</Value></Entry><Entry><Key>AssetSetId</Key><Value>383879</Value></Entry><Entry><Key>AssetVersionId</Key><Value>144837102</Value></Entry><Entry><Key>CreatorName</Key><Value>ROBLOX</Value></Entry><Entry><Key>IsTrusted</Key><Value>True</Value></Entry></Table></Value><Value><Table><Entry><Key>Name</Key><Value>Jeep</Value></Entry><Entry><Key>AssetId</Key><Value>59524622</Value></Entry><Entry><Key>AssetSetId</Key><Value>383879</Value></Entry><Entry><Key>AssetVersionId</Key><Value>146134623</Value></Entry><Entry><Key>CreatorName</Key><Value>ROBLOX</Value></Entry><Entry><Key>IsTrusted</Key><Value>True</Value></Entry></Table></Value><Value><Table><Entry><Key>Name</Key><Value>UFO</Value></Entry><Entry><Key>AssetId</Key><Value>59524729</Value></Entry><Entry><Key>AssetSetId</Key><Value>383879</Value></Entry><Entry><Key>AssetVersionId</Key><Value>154615236</Value></Entry><Entry><Key>CreatorName</Key><Value>ROBLOX</Value></Entry><Entry><Key>IsTrusted</Key><Value>True</Value></Entry></Table></Value><Value><Table><Entry><Key>Name</Key><Value>Police Car</Value></Entry><Entry><Key>AssetId</Key><Value>59524656</Value></Entry><Entry><Key>AssetSetId</Key><Value>383879</Value></Entry><Entry><Key>AssetVersionId</Key><Value>161973480</Value></Entry><Entry><Key>CreatorName</Key><Value>ROBLOX</Value></Entry><Entry><Key>IsTrusted</Key><Value>True</Value></Entry></Table></Value></List>
|
||||
|
|
@ -1,110 +0,0 @@
|
|||
%4%
|
||||
local controlFrame = script.Parent:FindFirstChild("ControlFrame")
|
||||
|
||||
if not controlFrame then return end
|
||||
|
||||
local topLeftControl = controlFrame:FindFirstChild("TopLeftControl")
|
||||
local bottomLeftControl = controlFrame:FindFirstChild("BottomLeftControl")
|
||||
local bottomRightControl = controlFrame:FindFirstChild("BottomRightControl")
|
||||
|
||||
|
||||
local frameTip = Instance.new("TextLabel")
|
||||
frameTip.Name = "ToolTip"
|
||||
frameTip.Text = ""
|
||||
frameTip.Font = Enum.Font.ArialBold
|
||||
frameTip.FontSize = Enum.FontSize.Size12
|
||||
frameTip.TextColor3 = Color3.new(1,1,1)
|
||||
frameTip.BorderSizePixel = 0
|
||||
frameTip.ZIndex = 10
|
||||
frameTip.Size = UDim2.new(2,0,1,0)
|
||||
frameTip.Position = UDim2.new(1,0,0,0)
|
||||
frameTip.BackgroundColor3 = Color3.new(0,0,0)
|
||||
frameTip.BackgroundTransparency = 1
|
||||
frameTip.TextTransparency = 1
|
||||
frameTip.TextWrap = true
|
||||
|
||||
local inside = Instance.new("BoolValue")
|
||||
inside.Name = "inside"
|
||||
inside.Value = false
|
||||
inside.Parent = frameTip
|
||||
|
||||
function setUpListeners(frameToListen)
|
||||
local fadeSpeed = 0.1
|
||||
frameToListen.Parent.MouseEnter:connect(function()
|
||||
if frameToListen:FindFirstChild("inside") then
|
||||
frameToListen.inside.Value = true
|
||||
wait(1.2)
|
||||
if frameToListen.inside.Value then
|
||||
while frameToListen.inside.Value and frameToListen.BackgroundTransparency > 0 do
|
||||
frameToListen.BackgroundTransparency = frameToListen.BackgroundTransparency - fadeSpeed
|
||||
frameToListen.TextTransparency = frameToListen.TextTransparency - fadeSpeed
|
||||
wait()
|
||||
end
|
||||
end
|
||||
end
|
||||
end)
|
||||
function killTip(killFrame)
|
||||
killFrame.inside.Value = false
|
||||
killFrame.BackgroundTransparency = 1
|
||||
killFrame.TextTransparency = 1
|
||||
end
|
||||
frameToListen.Parent.MouseLeave:connect(function() killTip(frameToListen) end)
|
||||
frameToListen.Parent.MouseButton1Click:connect(function() killTip(frameToListen) end)
|
||||
end
|
||||
|
||||
function createSettingsButtonTip(parent)
|
||||
if parent == nil then
|
||||
parent = bottomLeftControl:FindFirstChild("SettingsButton")
|
||||
end
|
||||
|
||||
local toolTip = frameTip:clone()
|
||||
toolTip.RobloxLocked = true
|
||||
toolTip.Text = "Settings/Leave Game"
|
||||
toolTip.Position = UDim2.new(0,0,0,-18)
|
||||
toolTip.Size = UDim2.new(0,120,0,20)
|
||||
toolTip.Parent = parent
|
||||
setUpListeners(toolTip)
|
||||
end
|
||||
|
||||
wait(5) -- make sure we are loaded in, won't need tool tips for first 5 seconds anyway
|
||||
|
||||
---------------- set up Bottom Left Tool Tips -------------------------
|
||||
|
||||
local bottomLeftChildren = bottomLeftControl:GetChildren()
|
||||
local hasSettingsTip = false
|
||||
|
||||
for i = 1, #bottomLeftChildren do
|
||||
|
||||
if bottomLeftChildren[i].Name == "Exit" then
|
||||
local exitTip = frameTip:clone()
|
||||
exitTip.RobloxLocked = true
|
||||
exitTip.Text = "Leave Place"
|
||||
exitTip.Position = UDim2.new(0,0,-1,0)
|
||||
exitTip.Size = UDim2.new(1,0,1,0)
|
||||
exitTip.Parent = bottomLeftChildren[i]
|
||||
setUpListeners(exitTip)
|
||||
elseif bottomLeftChildren[i].Name == "SettingsButton" then
|
||||
hasSettingsTip = true
|
||||
createSettingsButtonTip(bottomLeftChildren[i])
|
||||
end
|
||||
end
|
||||
|
||||
---------------- set up Bottom Right Tool Tips -------------------------
|
||||
|
||||
local bottomRightChildren = bottomRightControl:GetChildren()
|
||||
|
||||
for i = 1, #bottomRightChildren do
|
||||
if bottomRightChildren[i].Name:find("Camera") ~= nil then
|
||||
local cameraTip = frameTip:clone()
|
||||
cameraTip.RobloxLocked = true
|
||||
cameraTip.Text = "Camera View"
|
||||
if bottomRightChildren[i].Name:find("Zoom") then
|
||||
cameraTip.Position = UDim2.new(-1,0,-1.5)
|
||||
else
|
||||
cameraTip.Position = UDim2.new(0,0,-1.5,0)
|
||||
end
|
||||
cameraTip.Size = UDim2.new(2,0,1.25,0)
|
||||
cameraTip.Parent = bottomRightChildren[i]
|
||||
setUpListeners(cameraTip)
|
||||
end
|
||||
end
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 201 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 198 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 194 KiB |
File diff suppressed because one or more lines are too long
|
|
@ -1,10 +0,0 @@
|
|||
<roblox xmlns:xmime="http://www.w3.org/2005/05/xmlmime" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.archblox.com/archblox.xsd" version="4">
|
||||
<External>null</External>
|
||||
<External>nil</External>
|
||||
<Item class="Shirt" referent="RBX0">
|
||||
<Properties>
|
||||
<string name="Name">Clothing</string>
|
||||
<Content name="ShirtTemplate"><url>http://jarfeh.xyz/asset/?id=400</url></Content>
|
||||
</Properties>
|
||||
</Item>
|
||||
</roblox>
|
||||
|
|
@ -1 +0,0 @@
|
|||
<List><Value><Table><Entry><Key>Name</Key><Value>Castle Door</Value></Entry><Entry><Key>AssetId</Key><Value>56448697</Value></Entry><Entry><Key>AssetSetId</Key><Value>433570</Value></Entry><Entry><Key>AssetVersionId</Key><Value>138017113</Value></Entry><Entry><Key>CreatorName</Key><Value>ROBLOX</Value></Entry><Entry><Key>IsTrusted</Key><Value>True</Value></Entry></Table></Value><Value><Table><Entry><Key>Name</Key><Value>Space Hatch</Value></Entry><Entry><Key>AssetId</Key><Value>56446583</Value></Entry><Entry><Key>AssetSetId</Key><Value>433570</Value></Entry><Entry><Key>AssetVersionId</Key><Value>147509468</Value></Entry><Entry><Key>CreatorName</Key><Value>ROBLOX</Value></Entry><Entry><Key>IsTrusted</Key><Value>True</Value></Entry></Table></Value><Value><Table><Entry><Key>Name</Key><Value>boombox</Value></Entry><Entry><Key>AssetId</Key><Value>63132395</Value></Entry><Entry><Key>AssetSetId</Key><Value>433570</Value></Entry><Entry><Key>AssetVersionId</Key><Value>161852161</Value></Entry><Entry><Key>CreatorName</Key><Value>ROBLOX</Value></Entry><Entry><Key>IsTrusted</Key><Value>True</Value></Entry></Table></Value><Value><Table><Entry><Key>Name</Key><Value>Wiring Lever</Value></Entry><Entry><Key>AssetId</Key><Value>63132445</Value></Entry><Entry><Key>AssetSetId</Key><Value>433570</Value></Entry><Entry><Key>AssetVersionId</Key><Value>155921932</Value></Entry><Entry><Key>CreatorName</Key><Value>ROBLOX</Value></Entry><Entry><Key>IsTrusted</Key><Value>True</Value></Entry></Table></Value><Value><Table><Entry><Key>Name</Key><Value>Portrait</Value></Entry><Entry><Key>AssetId</Key><Value>67572390</Value></Entry><Entry><Key>AssetSetId</Key><Value>433570</Value></Entry><Entry><Key>AssetVersionId</Key><Value>161727326</Value></Entry><Entry><Key>CreatorName</Key><Value>ROBLOX</Value></Entry><Entry><Key>IsTrusted</Key><Value>True</Value></Entry></Table></Value><Value><Table><Entry><Key>Name</Key><Value>Place Picture</Value></Entry><Entry><Key>AssetId</Key><Value>67572378</Value></Entry><Entry><Key>AssetSetId</Key><Value>433570</Value></Entry><Entry><Key>AssetVersionId</Key><Value>161727301</Value></Entry><Entry><Key>CreatorName</Key><Value>ROBLOX</Value></Entry><Entry><Key>IsTrusted</Key><Value>True</Value></Entry></Table></Value></List>
|
||||
File diff suppressed because one or more lines are too long
|
|
@ -1 +0,0 @@
|
|||
<List><Value><Table><Entry><Key>Name</Key><Value>Present</Value></Entry><Entry><Key>AssetId</Key><Value>67187816</Value></Entry><Entry><Key>AssetSetId</Key><Value>438059</Value></Entry><Entry><Key>AssetVersionId</Key><Value>160879612</Value></Entry><Entry><Key>CreatorName</Key><Value>ROBLOX</Value></Entry><Entry><Key>IsTrusted</Key><Value>True</Value></Entry></Table></Value><Value><Table><Entry><Key>Name</Key><Value>Christmas Tree</Value></Entry><Entry><Key>AssetId</Key><Value>67187806</Value></Entry><Entry><Key>AssetSetId</Key><Value>438059</Value></Entry><Entry><Key>AssetVersionId</Key><Value>160879591</Value></Entry><Entry><Key>CreatorName</Key><Value>ROBLOX</Value></Entry><Entry><Key>IsTrusted</Key><Value>True</Value></Entry></Table></Value><Value><Table><Entry><Key>Name</Key><Value>Snowman</Value></Entry><Entry><Key>AssetId</Key><Value>67187780</Value></Entry><Entry><Key>AssetSetId</Key><Value>438059</Value></Entry><Entry><Key>AssetVersionId</Key><Value>160879543</Value></Entry><Entry><Key>CreatorName</Key><Value>ROBLOX</Value></Entry><Entry><Key>IsTrusted</Key><Value>True</Value></Entry></Table></Value><Value><Table><Entry><Key>Name</Key><Value>Wreath</Value></Entry><Entry><Key>AssetId</Key><Value>67187797</Value></Entry><Entry><Key>AssetSetId</Key><Value>438059</Value></Entry><Entry><Key>AssetVersionId</Key><Value>160879573</Value></Entry><Entry><Key>CreatorName</Key><Value>ROBLOX</Value></Entry><Entry><Key>IsTrusted</Key><Value>True</Value></Entry></Table></Value><Value><Table><Entry><Key>Name</Key><Value>Menorah</Value></Entry><Entry><Key>AssetId</Key><Value>67187771</Value></Entry><Entry><Key>AssetSetId</Key><Value>438059</Value></Entry><Entry><Key>AssetVersionId</Key><Value>160879529</Value></Entry><Entry><Key>CreatorName</Key><Value>ROBLOX</Value></Entry><Entry><Key>IsTrusted</Key><Value>True</Value></Entry></Table></Value></List>
|
||||
|
|
@ -1 +0,0 @@
|
|||
<List><Value><Table><Entry><Key>Name</Key><Value>C4 Explosive</Value></Entry><Entry><Key>AssetId</Key><Value>65819994</Value></Entry><Entry><Key>AssetSetId</Key><Value>462226</Value></Entry><Entry><Key>AssetVersionId</Key><Value>161726840</Value></Entry><Entry><Key>CreatorName</Key><Value>ROBLOX</Value></Entry><Entry><Key>IsTrusted</Key><Value>True</Value></Entry></Table></Value><Value><Table><Entry><Key>Name</Key><Value>Tesla Coil</Value></Entry><Entry><Key>AssetId</Key><Value>67625690</Value></Entry><Entry><Key>AssetSetId</Key><Value>462226</Value></Entry><Entry><Key>AssetVersionId</Key><Value>165690977</Value></Entry><Entry><Key>CreatorName</Key><Value>ROBLOX</Value></Entry><Entry><Key>IsTrusted</Key><Value>True</Value></Entry></Table></Value></List>
|
||||
2002
maintenance/asset/5
2002
maintenance/asset/5
File diff suppressed because it is too large
Load Diff
|
|
@ -1,561 +0,0 @@
|
|||
%6%
|
||||
function waitForProperty(instance, name)
|
||||
while not instance[name] do
|
||||
instance.Changed:wait()
|
||||
end
|
||||
end
|
||||
|
||||
function waitForChild(instance, name)
|
||||
while not instance:FindFirstChild(name) do
|
||||
instance.ChildAdded:wait()
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
local mainFrame
|
||||
local choices = {}
|
||||
local lastChoice
|
||||
local choiceMap = {}
|
||||
local currentConversationDialog
|
||||
local currentConversationPartner
|
||||
local currentAbortDialogScript
|
||||
|
||||
local tooFarAwayMessage = "You are too far away to chat!"
|
||||
local tooFarAwaySize = 300
|
||||
local characterWanderedOffMessage = "Chat ended because you walked away"
|
||||
local characterWanderedOffSize = 350
|
||||
local conversationTimedOut = "Chat ended because you didn't reply"
|
||||
local conversationTimedOutSize = 350
|
||||
|
||||
local player
|
||||
local screenGui
|
||||
local chatNotificationGui
|
||||
local messageDialog
|
||||
local timeoutScript
|
||||
local reenableDialogScript
|
||||
local dialogMap = {}
|
||||
local dialogConnections = {}
|
||||
|
||||
local gui = nil
|
||||
waitForChild(game,"CoreGui")
|
||||
waitForChild(game.CoreGui,"RobloxGui")
|
||||
if game.CoreGui.RobloxGui:FindFirstChild("ControlFrame") then
|
||||
gui = game.CoreGui.RobloxGui.ControlFrame
|
||||
else
|
||||
gui = game.CoreGui.RobloxGui
|
||||
end
|
||||
|
||||
function currentTone()
|
||||
if currentConversationDialog then
|
||||
return currentConversationDialog.Tone
|
||||
else
|
||||
return Enum.DialogTone.Neutral
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
function createChatNotificationGui()
|
||||
chatNotificationGui = Instance.new("BillboardGui")
|
||||
chatNotificationGui.Name = "ChatNotificationGui"
|
||||
chatNotificationGui.ExtentsOffset = Vector3.new(0,1,0)
|
||||
chatNotificationGui.Size = UDim2.new(4, 0, 5.42857122, 0)
|
||||
chatNotificationGui.SizeOffset = Vector2.new(0,0)
|
||||
chatNotificationGui.StudsOffset = Vector3.new(0.4, 4.3, 0)
|
||||
chatNotificationGui.Enabled = true
|
||||
chatNotificationGui.RobloxLocked = true
|
||||
chatNotificationGui.Active = true
|
||||
|
||||
local image = Instance.new("ImageLabel")
|
||||
image.Name = "Image"
|
||||
image.Active = false
|
||||
image.BackgroundTransparency = 1
|
||||
image.Position = UDim2.new(0,0,0,0)
|
||||
image.Size = UDim2.new(1.0,0,1.0,0)
|
||||
image.Image = ""
|
||||
image.RobloxLocked = true
|
||||
image.Parent = chatNotificationGui
|
||||
|
||||
|
||||
local button = Instance.new("ImageButton")
|
||||
button.Name = "Button"
|
||||
button.AutoButtonColor = false
|
||||
button.Position = UDim2.new(0.0879999995, 0, 0.0529999994, 0)
|
||||
button.Size = UDim2.new(0.829999983, 0, 0.460000008, 0)
|
||||
button.Image = ""
|
||||
button.BackgroundTransparency = 1
|
||||
button.RobloxLocked = true
|
||||
button.Parent = image
|
||||
end
|
||||
|
||||
function getChatColor(tone)
|
||||
if tone == Enum.DialogTone.Neutral then
|
||||
return Enum.ChatColor.Blue
|
||||
elseif tone == Enum.DialogTone.Friendly then
|
||||
return Enum.ChatColor.Green
|
||||
elseif tone == Enum.DialogTone.Enemy then
|
||||
return Enum.ChatColor.Red
|
||||
end
|
||||
end
|
||||
|
||||
function styleChoices(tone)
|
||||
for i, obj in pairs(choices) do
|
||||
resetColor(obj, tone)
|
||||
end
|
||||
resetColor(lastChoice, tone)
|
||||
end
|
||||
|
||||
function styleMainFrame(tone)
|
||||
if tone == Enum.DialogTone.Neutral then
|
||||
mainFrame.Style = Enum.FrameStyle.ChatBlue
|
||||
mainFrame.Tail.Image = "rbxasset://textures/chatBubble_botBlue_tailRight.png"
|
||||
elseif tone == Enum.DialogTone.Friendly then
|
||||
mainFrame.Style = Enum.FrameStyle.ChatGreen
|
||||
mainFrame.Tail.Image = "rbxasset://textures/chatBubble_botGreen_tailRight.png"
|
||||
elseif tone == Enum.DialogTone.Enemy then
|
||||
mainFrame.Style = Enum.FrameStyle.ChatRed
|
||||
mainFrame.Tail.Image = "rbxasset://textures/chatBubble_botRed_tailRight.png"
|
||||
end
|
||||
|
||||
styleChoices(tone)
|
||||
end
|
||||
function setChatNotificationTone(gui, purpose, tone)
|
||||
if tone == Enum.DialogTone.Neutral then
|
||||
gui.Image.Image = "rbxasset://textures/chatBubble_botBlue_notify_bkg.png"
|
||||
elseif tone == Enum.DialogTone.Friendly then
|
||||
gui.Image.Image = "rbxasset://textures/chatBubble_botGreen_notify_bkg.png"
|
||||
elseif tone == Enum.DialogTone.Enemy then
|
||||
gui.Image.Image = "rbxasset://textures/chatBubble_botRed_notify_bkg.png"
|
||||
end
|
||||
if purpose == Enum.DialogPurpose.Quest then
|
||||
gui.Image.Button.Image = "rbxasset://textures/chatBubble_bot_notify_bang.png"
|
||||
elseif purpose == Enum.DialogPurpose.Help then
|
||||
gui.Image.Button.Image = "rbxasset://textures/chatBubble_bot_notify_question.png"
|
||||
elseif purpose == Enum.DialogPurpose.Shop then
|
||||
gui.Image.Button.Image = "rbxasset://textures/chatBubble_bot_notify_money.png"
|
||||
end
|
||||
end
|
||||
|
||||
function createMessageDialog()
|
||||
messageDialog = Instance.new("Frame");
|
||||
messageDialog.Name = "DialogScriptMessage"
|
||||
messageDialog.Style = Enum.FrameStyle.RobloxRound
|
||||
messageDialog.Visible = false
|
||||
|
||||
local text = Instance.new("TextLabel")
|
||||
text.Name = "Text"
|
||||
text.Position = UDim2.new(0,0,0,-1)
|
||||
text.Size = UDim2.new(1,0,1,0)
|
||||
text.FontSize = Enum.FontSize.Size14
|
||||
text.BackgroundTransparency = 1
|
||||
text.TextColor3 = Color3.new(1,1,1)
|
||||
text.RobloxLocked = true
|
||||
text.Parent = messageDialog
|
||||
end
|
||||
|
||||
function showMessage(msg, size)
|
||||
messageDialog.Text.Text = msg
|
||||
messageDialog.Size = UDim2.new(0,size,0,40)
|
||||
messageDialog.Position = UDim2.new(0.5, -size/2, 0.5, -40)
|
||||
messageDialog.Visible = true
|
||||
wait(2)
|
||||
messageDialog.Visible = false
|
||||
end
|
||||
|
||||
function variableDelay(str)
|
||||
local length = math.min(string.len(str), 100)
|
||||
wait(0.75 + ((length/75) * 1.5))
|
||||
end
|
||||
|
||||
function resetColor(frame, tone)
|
||||
if tone == Enum.DialogTone.Neutral then
|
||||
frame.BackgroundColor3 = Color3.new(0/255, 0/255, 179/255)
|
||||
frame.Number.TextColor3 = Color3.new(45/255, 142/255, 245/255)
|
||||
elseif tone == Enum.DialogTone.Friendly then
|
||||
frame.BackgroundColor3 = Color3.new(0/255, 77/255, 0/255)
|
||||
frame.Number.TextColor3 = Color3.new(0/255, 190/255, 0/255)
|
||||
elseif tone == Enum.DialogTone.Enemy then
|
||||
frame.BackgroundColor3 = Color3.new(140/255, 0/255, 0/255)
|
||||
frame.Number.TextColor3 = Color3.new(255/255,88/255, 79/255)
|
||||
end
|
||||
end
|
||||
|
||||
function highlightColor(frame, tone)
|
||||
if tone == Enum.DialogTone.Neutral then
|
||||
frame.BackgroundColor3 = Color3.new(2/255, 108/255, 255/255)
|
||||
frame.Number.TextColor3 = Color3.new(1, 1, 1)
|
||||
elseif tone == Enum.DialogTone.Friendly then
|
||||
frame.BackgroundColor3 = Color3.new(0/255, 128/255, 0/255)
|
||||
frame.Number.TextColor3 = Color3.new(1, 1, 1)
|
||||
elseif tone == Enum.DialogTone.Enemy then
|
||||
frame.BackgroundColor3 = Color3.new(204/255, 0/255, 0/255)
|
||||
frame.Number.TextColor3 = Color3.new(1, 1, 1)
|
||||
end
|
||||
end
|
||||
|
||||
function wanderDialog()
|
||||
print("Wander")
|
||||
mainFrame.Visible = false
|
||||
endDialog()
|
||||
showMessage(characterWanderedOffMessage, characterWanderedOffSize)
|
||||
end
|
||||
|
||||
function timeoutDialog()
|
||||
print("Timeout")
|
||||
mainFrame.Visible = false
|
||||
endDialog()
|
||||
showMessage(conversationTimedOut, conversationTimedOutSize)
|
||||
end
|
||||
function normalEndDialog()
|
||||
print("Done")
|
||||
endDialog()
|
||||
end
|
||||
|
||||
function endDialog()
|
||||
if currentAbortDialogScript then
|
||||
currentAbortDialogScript:Remove()
|
||||
currentAbortDialogScript = nil
|
||||
end
|
||||
|
||||
local dialog = currentConversationDialog
|
||||
currentConversationDialog = nil
|
||||
if dialog and dialog.InUse then
|
||||
local reenableScript = reenableDialogScript:Clone()
|
||||
reenableScript.archivable = false
|
||||
reenableScript.Disabled = false
|
||||
reenableScript.Parent = dialog
|
||||
end
|
||||
|
||||
for dialog, gui in pairs(dialogMap) do
|
||||
if dialog and gui then
|
||||
gui.Enabled = not dialog.InUse
|
||||
end
|
||||
end
|
||||
|
||||
currentConversationPartner = nil
|
||||
end
|
||||
|
||||
function sanitizeMessage(msg)
|
||||
if string.len(msg) == 0 then
|
||||
return "..."
|
||||
else
|
||||
return msg
|
||||
end
|
||||
end
|
||||
|
||||
function selectChoice(choice)
|
||||
renewKillswitch(currentConversationDialog)
|
||||
|
||||
--First hide the Gui
|
||||
mainFrame.Visible = false
|
||||
if choice == lastChoice then
|
||||
game.Chat:Chat(game.Players.LocalPlayer.Character, "Goodbye!", getChatColor(currentTone()))
|
||||
|
||||
normalEndDialog()
|
||||
else
|
||||
local dialogChoice = choiceMap[choice]
|
||||
|
||||
game.Chat:Chat(game.Players.LocalPlayer.Character, sanitizeMessage(dialogChoice.UserDialog), getChatColor(currentTone()))
|
||||
wait(1)
|
||||
currentConversationDialog:SignalDialogChoiceSelected(player, dialogChoice)
|
||||
game.Chat:Chat(currentConversationPartner, sanitizeMessage(dialogChoice.ResponseDialog), getChatColor(currentTone()))
|
||||
|
||||
variableDelay(dialogChoice.ResponseDialog)
|
||||
presentDialogChoices(currentConversationPartner, dialogChoice:GetChildren())
|
||||
end
|
||||
end
|
||||
|
||||
function newChoice(numberText)
|
||||
local frame = Instance.new("TextButton")
|
||||
frame.BackgroundColor3 = Color3.new(0/255, 0/255, 179/255)
|
||||
frame.AutoButtonColor = false
|
||||
frame.BorderSizePixel = 0
|
||||
frame.Text = ""
|
||||
frame.MouseEnter:connect(function() highlightColor(frame, currentTone()) end)
|
||||
frame.MouseLeave:connect(function() resetColor(frame, currentTone()) end)
|
||||
frame.MouseButton1Click:connect(function() selectChoice(frame) end)
|
||||
frame.RobloxLocked = true
|
||||
|
||||
local number = Instance.new("TextLabel")
|
||||
number.Name = "Number"
|
||||
number.TextColor3 = Color3.new(127/255, 212/255, 255/255)
|
||||
number.Text = numberText
|
||||
number.FontSize = Enum.FontSize.Size14
|
||||
number.BackgroundTransparency = 1
|
||||
number.Position = UDim2.new(0,4,0,2)
|
||||
number.Size = UDim2.new(0,20,0,24)
|
||||
number.TextXAlignment = Enum.TextXAlignment.Left
|
||||
number.TextYAlignment = Enum.TextYAlignment.Top
|
||||
number.RobloxLocked = true
|
||||
number.Parent = frame
|
||||
|
||||
local prompt = Instance.new("TextLabel")
|
||||
prompt.Name = "UserPrompt"
|
||||
prompt.BackgroundTransparency = 1
|
||||
prompt.TextColor3 = Color3.new(1,1,1)
|
||||
prompt.FontSize = Enum.FontSize.Size14
|
||||
prompt.Position = UDim2.new(0,28, 0, 2)
|
||||
prompt.Size = UDim2.new(1,-32, 1, -4)
|
||||
prompt.TextXAlignment = Enum.TextXAlignment.Left
|
||||
prompt.TextYAlignment = Enum.TextYAlignment.Top
|
||||
prompt.TextWrap = true
|
||||
prompt.RobloxLocked = true
|
||||
prompt.Parent = frame
|
||||
|
||||
return frame
|
||||
end
|
||||
function initialize(parent)
|
||||
choices[1] = newChoice("1)")
|
||||
choices[2] = newChoice("2)")
|
||||
choices[3] = newChoice("3)")
|
||||
choices[4] = newChoice("4)")
|
||||
|
||||
lastChoice = newChoice("5)")
|
||||
lastChoice.UserPrompt.Text = "Goodbye!"
|
||||
lastChoice.Size = UDim2.new(1,0,0,28)
|
||||
|
||||
mainFrame = Instance.new("Frame")
|
||||
mainFrame.Name = "UserDialogArea"
|
||||
mainFrame.Size = UDim2.new(0, 350, 0, 200)
|
||||
mainFrame.Style = Enum.FrameStyle.ChatBlue
|
||||
mainFrame.Visible = false
|
||||
|
||||
imageLabel = Instance.new("ImageLabel")
|
||||
imageLabel.Name = "Tail"
|
||||
imageLabel.Size = UDim2.new(0,62,0,53)
|
||||
imageLabel.Position = UDim2.new(1,8,0.25)
|
||||
imageLabel.Image = "rbxasset://textures/chatBubble_botBlue_tailRight.png"
|
||||
imageLabel.BackgroundTransparency = 1
|
||||
imageLabel.RobloxLocked = true
|
||||
imageLabel.Parent = mainFrame
|
||||
|
||||
for n, obj in pairs(choices) do
|
||||
obj.RobloxLocked = true
|
||||
obj.Parent = mainFrame
|
||||
end
|
||||
lastChoice.RobloxLocked = true
|
||||
lastChoice.Parent = mainFrame
|
||||
|
||||
mainFrame.RobloxLocked = true
|
||||
mainFrame.Parent = parent
|
||||
end
|
||||
|
||||
function presentDialogChoices(talkingPart, dialogChoices)
|
||||
if not currentConversationDialog then
|
||||
return
|
||||
end
|
||||
|
||||
currentConversationPartner = talkingPart
|
||||
sortedDialogChoices = {}
|
||||
for n, obj in pairs(dialogChoices) do
|
||||
if obj:IsA("DialogChoice") then
|
||||
table.insert(sortedDialogChoices, obj)
|
||||
end
|
||||
end
|
||||
table.sort(sortedDialogChoices, function(a,b) return a.Name < b.Name end)
|
||||
|
||||
if #sortedDialogChoices == 0 then
|
||||
normalEndDialog()
|
||||
return
|
||||
end
|
||||
|
||||
local pos = 1
|
||||
local yPosition = 0
|
||||
choiceMap = {}
|
||||
for n, obj in pairs(choices) do
|
||||
obj.Visible = false
|
||||
end
|
||||
|
||||
for n, obj in pairs(sortedDialogChoices) do
|
||||
if pos <= #choices then
|
||||
--3 lines is the maximum, set it to that temporarily
|
||||
choices[pos].Size = UDim2.new(1, 0, 0, 24*3)
|
||||
choices[pos].UserPrompt.Text = obj.UserDialog
|
||||
local height = math.ceil(choices[pos].UserPrompt.TextBounds.Y/24)*24
|
||||
|
||||
choices[pos].Position = UDim2.new(0, 0, 0, yPosition)
|
||||
choices[pos].Size = UDim2.new(1, 0, 0, height)
|
||||
choices[pos].Visible = true
|
||||
|
||||
choiceMap[choices[pos]] = obj
|
||||
|
||||
yPosition = yPosition + height
|
||||
pos = pos + 1
|
||||
end
|
||||
end
|
||||
|
||||
lastChoice.Position = UDim2.new(0,0,0,yPosition)
|
||||
lastChoice.Number.Text = pos .. ")"
|
||||
|
||||
mainFrame.Size = UDim2.new(0, 350, 0, yPosition+24+32)
|
||||
mainFrame.Position = UDim2.new(0,20,0.0, -mainFrame.Size.Y.Offset-20)
|
||||
styleMainFrame(currentTone())
|
||||
mainFrame.Visible = true
|
||||
end
|
||||
|
||||
function doDialog(dialog)
|
||||
while not Instance.Lock(dialog, player) do
|
||||
wait()
|
||||
end
|
||||
|
||||
if dialog.InUse then
|
||||
Instance.Unlock(dialog)
|
||||
return
|
||||
else
|
||||
dialog.InUse = true
|
||||
Instance.Unlock(dialog)
|
||||
end
|
||||
|
||||
currentConversationDialog = dialog
|
||||
game.Chat:Chat(dialog.Parent, dialog.InitialPrompt, getChatColor(dialog.Tone))
|
||||
variableDelay(dialog.InitialPrompt)
|
||||
|
||||
presentDialogChoices(dialog.Parent, dialog:GetChildren())
|
||||
end
|
||||
|
||||
function renewKillswitch(dialog)
|
||||
if currentAbortDialogScript then
|
||||
currentAbortDialogScript:Remove()
|
||||
currentAbortDialogScript = nil
|
||||
end
|
||||
|
||||
currentAbortDialogScript = timeoutScript:Clone()
|
||||
currentAbortDialogScript.archivable = false
|
||||
currentAbortDialogScript.Disabled = false
|
||||
currentAbortDialogScript.Parent = dialog
|
||||
end
|
||||
|
||||
function checkForLeaveArea()
|
||||
while currentConversationDialog do
|
||||
if currentConversationDialog.Parent and (player:DistanceFromCharacter(currentConversationDialog.Parent.Position) >= currentConversationDialog.ConversationDistance) then
|
||||
wanderDialog()
|
||||
end
|
||||
wait(1)
|
||||
end
|
||||
end
|
||||
|
||||
function startDialog(dialog)
|
||||
if dialog.Parent and dialog.Parent:IsA("BasePart") then
|
||||
if player:DistanceFromCharacter(dialog.Parent.Position) >= dialog.ConversationDistance then
|
||||
showMessage(tooFarAwayMessage, tooFarAwaySize)
|
||||
return
|
||||
end
|
||||
|
||||
for dialog, gui in pairs(dialogMap) do
|
||||
if dialog and gui then
|
||||
gui.Enabled = false
|
||||
end
|
||||
end
|
||||
|
||||
renewKillswitch(dialog)
|
||||
|
||||
delay(1, checkForLeaveArea)
|
||||
doDialog(dialog)
|
||||
end
|
||||
end
|
||||
|
||||
function removeDialog(dialog)
|
||||
if dialogMap[dialog] then
|
||||
dialogMap[dialog]:Remove()
|
||||
dialogMap[dialog] = nil
|
||||
end
|
||||
if dialogConnections[dialog] then
|
||||
dialogConnections[dialog]:disconnect()
|
||||
dialogConnections[dialog] = nil
|
||||
end
|
||||
end
|
||||
|
||||
function addDialog(dialog)
|
||||
if dialog.Parent then
|
||||
if dialog.Parent:IsA("BasePart") then
|
||||
local chatGui = chatNotificationGui:clone()
|
||||
chatGui.Enabled = not dialog.InUse
|
||||
chatGui.Adornee = dialog.Parent
|
||||
chatGui.RobloxLocked = true
|
||||
chatGui.Parent = game.CoreGui
|
||||
chatGui.Image.Button.MouseButton1Click:connect(function() startDialog(dialog) end)
|
||||
setChatNotificationTone(chatGui, dialog.Purpose, dialog.Tone)
|
||||
|
||||
dialogMap[dialog] = chatGui
|
||||
|
||||
dialogConnections[dialog] = dialog.Changed:connect(function(prop)
|
||||
if prop == "Parent" and dialog.Parent then
|
||||
--This handles the reparenting case, seperate from removal case
|
||||
removeDialog(dialog)
|
||||
addDialog(dialog)
|
||||
elseif prop == "InUse" then
|
||||
chatGui.Enabled = not currentConversationDialog and not dialog.InUse
|
||||
if dialog == currentConversationDialog then
|
||||
timeoutDialog()
|
||||
end
|
||||
elseif prop == "Tone" or prop == "Purpose" then
|
||||
setChatNotificationTone(chatGui, dialog.Purpose, dialog.Tone)
|
||||
end
|
||||
end)
|
||||
else -- still need to listen to parent changes even if current parent is not a BasePart
|
||||
dialogConnections[dialog] = dialog.Changed:connect(function(prop)
|
||||
if prop == "Parent" and dialog.Parent then
|
||||
--This handles the reparenting case, seperate from removal case
|
||||
removeDialog(dialog)
|
||||
addDialog(dialog)
|
||||
end
|
||||
end)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function fetchScripts()
|
||||
local model = game:GetService("InsertService"):LoadAsset(39226062)
|
||||
if type(model) == "string" then -- load failed, lets try again
|
||||
wait(0.1)
|
||||
model = game:GetService("InsertService"):LoadAsset(39226062)
|
||||
end
|
||||
if type(model) == "string" then -- not going to work, lets bail
|
||||
return
|
||||
end
|
||||
|
||||
waitForChild(model,"TimeoutScript")
|
||||
timeoutScript = model.TimeoutScript
|
||||
waitForChild(model,"ReenableDialogScript")
|
||||
reenableDialogScript = model.ReenableDialogScript
|
||||
end
|
||||
|
||||
function onLoad()
|
||||
waitForProperty(game.Players, "LocalPlayer")
|
||||
player = game.Players.LocalPlayer
|
||||
waitForProperty(player, "Character")
|
||||
|
||||
--print("Fetching Scripts")
|
||||
fetchScripts()
|
||||
|
||||
--print("Creating Guis")
|
||||
createChatNotificationGui()
|
||||
|
||||
--print("Creating MessageDialog")
|
||||
createMessageDialog()
|
||||
messageDialog.RobloxLocked = true
|
||||
messageDialog.Parent = gui
|
||||
|
||||
--print("Waiting for BottomLeftControl")
|
||||
waitForChild(gui, "BottomLeftControl")
|
||||
|
||||
--print("Initializing Frame")
|
||||
local frame = Instance.new("Frame")
|
||||
frame.Name = "DialogFrame"
|
||||
frame.Position = UDim2.new(0,0,0,0)
|
||||
frame.Size = UDim2.new(0,0,0,0)
|
||||
frame.BackgroundTransparency = 1
|
||||
frame.RobloxLocked = true
|
||||
frame.Parent = gui.BottomLeftControl
|
||||
initialize(frame)
|
||||
|
||||
--print("Adding Dialogs")
|
||||
game.CollectionService.ItemAdded:connect(function(obj) if obj:IsA("Dialog") then addDialog(obj) end end)
|
||||
game.CollectionService.ItemRemoved:connect(function(obj) if obj:IsA("Dialog") then removeDialog(obj) end end)
|
||||
for i, obj in pairs(game.CollectionService:GetCollection("Dialog")) do
|
||||
if obj:IsA("Dialog") then
|
||||
addDialog(obj)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
onLoad()
|
||||
|
|
@ -1,73 +0,0 @@
|
|||
%7%
|
||||
--build our gui
|
||||
|
||||
local popupFrame = Instance.new("Frame")
|
||||
popupFrame.Position = UDim2.new(0.5,-165,0.5,-175)
|
||||
popupFrame.Size = UDim2.new(0,330,0,350)
|
||||
popupFrame.Style = Enum.FrameStyle.RobloxRound
|
||||
popupFrame.ZIndex = 4
|
||||
popupFrame.Name = "Popup"
|
||||
popupFrame.Visible = false
|
||||
popupFrame.Parent = script.Parent
|
||||
|
||||
local darken = popupFrame:clone()
|
||||
darken.Size = UDim2.new(1,16,1,16)
|
||||
darken.Position = UDim2.new(0,-8,0,-8)
|
||||
darken.Name = "Darken"
|
||||
darken.ZIndex = 1
|
||||
darken.Parent = popupFrame
|
||||
|
||||
local acceptButton = Instance.new("TextButton")
|
||||
acceptButton.Position = UDim2.new(0,20,0,270)
|
||||
acceptButton.Size = UDim2.new(0,100,0,50)
|
||||
acceptButton.Font = Enum.Font.ArialBold
|
||||
acceptButton.FontSize = Enum.FontSize.Size24
|
||||
acceptButton.Style = Enum.ButtonStyle.RobloxButton
|
||||
acceptButton.TextColor3 = Color3.new(248/255,248/255,248/255)
|
||||
acceptButton.Text = "Yes"
|
||||
acceptButton.ZIndex = 5
|
||||
acceptButton.Name = "AcceptButton"
|
||||
acceptButton.Parent = popupFrame
|
||||
|
||||
local declineButton = acceptButton:clone()
|
||||
declineButton.Position = UDim2.new(1,-120,0,270)
|
||||
declineButton.Text = "No"
|
||||
declineButton.Name = "DeclineButton"
|
||||
declineButton.Parent = popupFrame
|
||||
|
||||
local okButton = acceptButton:clone()
|
||||
okButton.Name = "OKButton"
|
||||
okButton.Text = "OK"
|
||||
okButton.Position = UDim2.new(0.5,-50,0,270)
|
||||
okButton.Visible = false
|
||||
okButton.Parent = popupFrame
|
||||
|
||||
local popupImage = Instance.new("ImageLabel")
|
||||
popupImage.BackgroundTransparency = 1
|
||||
popupImage.Position = UDim2.new(0.5,-140,0,0)
|
||||
popupImage.Size = UDim2.new(0,280,0,280)
|
||||
popupImage.ZIndex = 3
|
||||
popupImage.Name = "PopupImage"
|
||||
popupImage.Parent = popupFrame
|
||||
|
||||
local backing = Instance.new("ImageLabel")
|
||||
backing.BackgroundTransparency = 1
|
||||
backing.Size = UDim2.new(1,0,1,0)
|
||||
backing.Image = "http://www.jarfeh.xyz/asset/?id=47574181"
|
||||
backing.Name = "Backing"
|
||||
backing.ZIndex = 2
|
||||
backing.Parent = popupImage
|
||||
|
||||
local popupText = Instance.new("TextLabel")
|
||||
popupText.Name = "PopupText"
|
||||
popupText.Size = UDim2.new(1,0,0.8,0)
|
||||
popupText.Font = Enum.Font.ArialBold
|
||||
popupText.FontSize = Enum.FontSize.Size36
|
||||
popupText.BackgroundTransparency = 1
|
||||
popupText.Text = "Hello I'm a popup"
|
||||
popupText.TextColor3 = Color3.new(248/255,248/255,248/255)
|
||||
popupText.TextWrap = true
|
||||
popupText.ZIndex = 5
|
||||
popupText.Parent = popupFrame
|
||||
|
||||
script:remove()
|
||||
|
|
@ -1,215 +0,0 @@
|
|||
%8%
|
||||
function waitForProperty(instance, property)
|
||||
while not instance[property] do
|
||||
instance.Changed:wait()
|
||||
end
|
||||
end
|
||||
function waitForChild(instance, name)
|
||||
while not instance:FindFirstChild(name) do
|
||||
instance.ChildAdded:wait()
|
||||
end
|
||||
end
|
||||
|
||||
waitForProperty(game.Players,"LocalPlayer")
|
||||
waitForChild(script.Parent,"Popup")
|
||||
waitForChild(script.Parent.Popup,"AcceptButton")
|
||||
script.Parent.Popup.AcceptButton.Modal = true
|
||||
|
||||
local localPlayer = game.Players.LocalPlayer
|
||||
local acceptedTeleport = Instance.new("IntValue")
|
||||
|
||||
local friendRequestBlacklist = {}
|
||||
|
||||
local teleportEnabled = true
|
||||
|
||||
local makePopupInvisible = function()
|
||||
if script.Parent.Popup then script.Parent.Popup.Visible = false end
|
||||
end
|
||||
|
||||
function makeFriend(fromPlayer,toPlayer)
|
||||
|
||||
local popup = script.Parent:FindFirstChild("Popup")
|
||||
if popup == nil then return end -- there is no popup!
|
||||
if popup.Visible then return end -- currently popping something, abort!
|
||||
if friendRequestBlacklist[fromPlayer] then return end -- previously cancelled friend request, we don't want it!
|
||||
|
||||
popup.PopupText.Text = "Accept Friend Request from " .. tostring(fromPlayer.Name) .. "?"
|
||||
popup.PopupImage.Image = "http://www.jarfeh.xyz/thumbs/avatar.ashx?userId="..tostring(fromPlayer.userId).."&x=352&y=352"
|
||||
|
||||
showTwoButtons()
|
||||
popup.Visible = true
|
||||
popup.AcceptButton.Text = "Accept"
|
||||
popup.DeclineButton.Text = "Decline"
|
||||
popup:TweenSize(UDim2.new(0,330,0,350),Enum.EasingDirection.Out,Enum.EasingStyle.Quart,1,true)
|
||||
|
||||
local yesCon, noCon
|
||||
|
||||
yesCon = popup.AcceptButton.MouseButton1Click:connect(function()
|
||||
popup.Visible = false
|
||||
toPlayer:RequestFriendship(fromPlayer)
|
||||
if yesCon then yesCon:disconnect() end
|
||||
if noCon then noCon:disconnect() end
|
||||
popup:TweenSize(UDim2.new(0,0,0,0),Enum.EasingDirection.Out,Enum.EasingStyle.Quart,1,true,makePopupInvisible())
|
||||
end)
|
||||
|
||||
noCon = popup.DeclineButton.MouseButton1Click:connect(function()
|
||||
popup.Visible = false
|
||||
toPlayer:RevokeFriendship(fromPlayer)
|
||||
friendRequestBlacklist[fromPlayer] = true
|
||||
print("pop up blacklist")
|
||||
if yesCon then yesCon:disconnect() end
|
||||
if noCon then noCon:disconnect() end
|
||||
popup:TweenSize(UDim2.new(0,0,0,0),Enum.EasingDirection.Out,Enum.EasingStyle.Quart,1,true,makePopupInvisible())
|
||||
end)
|
||||
end
|
||||
|
||||
|
||||
game.Players.FriendRequestEvent:connect(function(fromPlayer,toPlayer,event)
|
||||
|
||||
-- if this doesn't involve me, then do nothing
|
||||
if fromPlayer ~= localPlayer and toPlayer ~= localPlayer then return end
|
||||
|
||||
if fromPlayer == localPlayer then
|
||||
if event == Enum.FriendRequestEvent.Accept then
|
||||
game:GetService("GuiService"):SendNotification("You are Friends",
|
||||
"With " .. toPlayer.Name .. "!",
|
||||
"http://www.jarfeh.xyz/thumbs/avatar.ashx?userId="..tostring(toPlayer.userId).."&x=48&y=48",
|
||||
5,
|
||||
function()
|
||||
|
||||
end)
|
||||
end
|
||||
elseif toPlayer == localPlayer then
|
||||
if event == Enum.FriendRequestEvent.Issue then
|
||||
if friendRequestBlacklist[fromPlayer] then return end -- previously cancelled friend request, we don't want it!
|
||||
game:GetService("GuiService"):SendNotification("Friend Request",
|
||||
"From " .. fromPlayer.Name,
|
||||
"http://www.jarfeh.xyz/thumbs/avatar.ashx?userId="..tostring(fromPlayer.userId).."&x=48&y=48",
|
||||
8,
|
||||
function()
|
||||
makeFriend(fromPlayer,toPlayer)
|
||||
end)
|
||||
elseif event == Enum.FriendRequestEvent.Accept then
|
||||
game:GetService("GuiService"):SendNotification("You are Friends",
|
||||
"With " .. fromPlayer.Name .. "!",
|
||||
"http://www.jarfeh.xyz/thumbs/avatar.ashx?userId="..tostring(fromPlayer.userId).."&x=48&y=48",
|
||||
5,
|
||||
function()
|
||||
|
||||
end)
|
||||
end
|
||||
end
|
||||
end)
|
||||
|
||||
function showOneButton()
|
||||
local popup = script.Parent:FindFirstChild("Popup")
|
||||
if popup then
|
||||
popup.OKButton.Visible = true
|
||||
popup.DeclineButton.Visible = false
|
||||
popup.AcceptButton.Visible = false
|
||||
end
|
||||
end
|
||||
|
||||
function showTwoButtons()
|
||||
local popup = script.Parent:FindFirstChild("Popup")
|
||||
if popup then
|
||||
popup.OKButton.Visible = false
|
||||
popup.DeclineButton.Visible = true
|
||||
popup.AcceptButton.Visible = true
|
||||
end
|
||||
end
|
||||
|
||||
if teleportEnabled then
|
||||
game:GetService("TeleportService").ErrorCallback = function(message)
|
||||
local popup = script.Parent:FindFirstChild("Popup")
|
||||
showOneButton()
|
||||
popup.PopupText.Text = message
|
||||
local clickCon
|
||||
clickCon = popup.OKButton.MouseButton1Click:connect(function()
|
||||
if clickCon then clickCon:disconnect() end
|
||||
game.GuiService:RemoveCenterDialog(script.Parent:FindFirstChild("Popup"))
|
||||
popup:TweenSize(UDim2.new(0,0,0,0),Enum.EasingDirection.Out,Enum.EasingStyle.Quart,1,true,makePopupInvisible())
|
||||
end)
|
||||
game.GuiService:AddCenterDialog(script.Parent:FindFirstChild("Popup"), Enum.CenterDialogType.QuitDialog,
|
||||
--ShowFunction
|
||||
function()
|
||||
showOneButton()
|
||||
script.Parent:FindFirstChild("Popup").Visible = true
|
||||
popup:TweenSize(UDim2.new(0,330,0,350),Enum.EasingDirection.Out,Enum.EasingStyle.Quart,1,true)
|
||||
end,
|
||||
--HideFunction
|
||||
function()
|
||||
popup:TweenSize(UDim2.new(0,0,0,0),Enum.EasingDirection.Out,Enum.EasingStyle.Quart,1,true,makePopupInvisible())
|
||||
end)
|
||||
|
||||
end
|
||||
game:GetService("TeleportService").ConfirmationCallback = function(message, placeId, spawnName)
|
||||
local popup = script.Parent:FindFirstChild("Popup")
|
||||
popup.PopupText.Text = message
|
||||
popup.PopupImage.Image = ""
|
||||
|
||||
local yesCon, noCon
|
||||
|
||||
local function killCons()
|
||||
if yesCon then yesCon:disconnect() end
|
||||
if noCon then noCon:disconnect() end
|
||||
game.GuiService:RemoveCenterDialog(script.Parent:FindFirstChild("Popup"))
|
||||
popup:TweenSize(UDim2.new(0,0,0,0),Enum.EasingDirection.Out,Enum.EasingStyle.Quart,1,true,makePopupInvisible())
|
||||
end
|
||||
|
||||
yesCon = popup.AcceptButton.MouseButton1Click:connect(function()
|
||||
killCons()
|
||||
local success, err = pcall(function() game:GetService("TeleportService"):TeleportImpl(placeId,spawnName) end)
|
||||
if not success then
|
||||
showOneButton()
|
||||
popup.PopupText.Text = err
|
||||
local clickCon
|
||||
clickCon = popup.OKButton.MouseButton1Click:connect(function()
|
||||
if clickCon then clickCon:disconnect() end
|
||||
game.GuiService:RemoveCenterDialog(script.Parent:FindFirstChild("Popup"))
|
||||
popup:TweenSize(UDim2.new(0,0,0,0),Enum.EasingDirection.Out,Enum.EasingStyle.Quart,1,true,makePopupInvisible())
|
||||
end)
|
||||
game.GuiService:AddCenterDialog(script.Parent:FindFirstChild("Popup"), Enum.CenterDialogType.QuitDialog,
|
||||
--ShowFunction
|
||||
function()
|
||||
showOneButton()
|
||||
script.Parent:FindFirstChild("Popup").Visible = true
|
||||
popup:TweenSize(UDim2.new(0,330,0,350),Enum.EasingDirection.Out,Enum.EasingStyle.Quart,1,true)
|
||||
end,
|
||||
--HideFunction
|
||||
function()
|
||||
popup:TweenSize(UDim2.new(0,0,0,0),Enum.EasingDirection.Out,Enum.EasingStyle.Quart,1,true,makePopupInvisible())
|
||||
end)
|
||||
end
|
||||
end)
|
||||
|
||||
noCon = popup.DeclineButton.MouseButton1Click:connect(function()
|
||||
killCons()
|
||||
local success = pcall(function() game:GetService("TeleportService"):TeleportCancel() end)
|
||||
end)
|
||||
|
||||
local centerDialogSuccess = pcall(function() game.GuiService:AddCenterDialog(script.Parent:FindFirstChild("Popup"), Enum.CenterDialogType.QuitDialog,
|
||||
--ShowFunction
|
||||
function()
|
||||
showTwoButtons()
|
||||
popup.AcceptButton.Text = "Leave"
|
||||
popup.DeclineButton.Text = "Stay"
|
||||
script.Parent:FindFirstChild("Popup").Visible = true
|
||||
popup:TweenSize(UDim2.new(0,330,0,350),Enum.EasingDirection.Out,Enum.EasingStyle.Quart,1,true)
|
||||
end,
|
||||
--HideFunction
|
||||
function()
|
||||
popup:TweenSize(UDim2.new(0,0,0,0),Enum.EasingDirection.Out,Enum.EasingStyle.Quart,1,true,makePopupInvisible())
|
||||
end)
|
||||
end)
|
||||
|
||||
if centerDialogSuccess == false then
|
||||
script.Parent:FindFirstChild("Popup").Visible = true
|
||||
popup.AcceptButton.Text = "Leave"
|
||||
popup.DeclineButton.Text = "Stay"
|
||||
popup:TweenSize(UDim2.new(0,330,0,350),Enum.EasingDirection.Out,Enum.EasingStyle.Quart,1,true)
|
||||
end
|
||||
return true
|
||||
|
||||
end
|
||||
end
|
||||
|
|
@ -1,939 +0,0 @@
|
|||
%9%
|
||||
--[[
|
||||
//FileName: ChatScript.LUA
|
||||
//Written by: Sorcus
|
||||
//Description: Code for lua side chat on ROBLOX. Supports Scrolling.
|
||||
//NOTE: If you find any bugs or inaccuracies PM Sorcus on ROBLOX or @Canavus on Twitter
|
||||
]]
|
||||
|
||||
-- Utility functions + Globals
|
||||
local function WaitForChild(parent, childName)
|
||||
while parent:FindFirstChild(childName) == nil do
|
||||
wait()
|
||||
end
|
||||
return parent[childName]
|
||||
end
|
||||
|
||||
local function typedef(obj)
|
||||
return obj
|
||||
end
|
||||
|
||||
while Game.Players.LocalPlayer == nil do wait() end
|
||||
|
||||
local Player = Game.Players.LocalPlayer
|
||||
while Player.Character == nil do wait() end
|
||||
local RbxUtility = LoadLibrary('RbxUtility')
|
||||
local Gui = typedef(RbxUtility)
|
||||
local Camera = Game.Workspace.CurrentCamera
|
||||
|
||||
-- Services
|
||||
local CoreGuiService = Game:GetService('CoreGui')
|
||||
local PlayersService = Game:GetService('Players')
|
||||
local DebrisService= Game:GetService('Debris')
|
||||
local GuiService = Game:GetService('GuiService')
|
||||
|
||||
-- Lua Enums
|
||||
local Enums do
|
||||
Enums = {}
|
||||
local EnumName = {} -- used as unique key for enum name
|
||||
local enum_mt = {
|
||||
__call = function(self,value)
|
||||
return self[value] or self[tonumber(value)]
|
||||
end;
|
||||
__index = {
|
||||
GetEnumItems = function(self)
|
||||
local t = {}
|
||||
for i,item in pairs(self) do
|
||||
if type(i) == 'number' then
|
||||
t[#t+1] = item
|
||||
end
|
||||
end
|
||||
table.sort(t,function(a,b) return a.Value < b.Value end)
|
||||
return t
|
||||
end;
|
||||
};
|
||||
__tostring = function(self)
|
||||
return "Enum." .. self[EnumName]
|
||||
end;
|
||||
}
|
||||
local item_mt = {
|
||||
__call = function(self,value)
|
||||
return value == self or value == self.Name or value == self.Value
|
||||
end;
|
||||
__tostring = function(self)
|
||||
return "Enum." .. self[EnumName] .. "." .. self.Name
|
||||
end;
|
||||
}
|
||||
function CreateEnum(enumName)
|
||||
return function(t)
|
||||
local e = {[EnumName] = enumName}
|
||||
for i,name in pairs(t) do
|
||||
local item = setmetatable({Name=name,Value=i,Enum=e,[EnumName]=enumName},item_mt)
|
||||
e[i] = item
|
||||
e[name] = item
|
||||
e[item] = item
|
||||
end
|
||||
Enums[enumName] = e
|
||||
return setmetatable(e, enum_mt)
|
||||
end
|
||||
end
|
||||
end
|
||||
---------------------------------------------------
|
||||
------------------ Input class --------------------
|
||||
local Input = {
|
||||
Mouse = Player:GetMouse(),
|
||||
Speed = 0,
|
||||
Simulating = false,
|
||||
|
||||
Configuration = {
|
||||
DefaultSpeed = 1
|
||||
},
|
||||
UserIsScrolling = false
|
||||
}
|
||||
|
||||
---------------------------------------------------
|
||||
------------------ Chat class --------------------
|
||||
local Chat = {
|
||||
|
||||
ChatColors = {
|
||||
BrickColor.new("Bright red"),
|
||||
BrickColor.new("Bright blue"),
|
||||
BrickColor.new("Earth green"),
|
||||
BrickColor.new("Bright violet"),
|
||||
BrickColor.new("Bright orange"),
|
||||
BrickColor.new("Bright yellow"),
|
||||
BrickColor.new("Light reddish violet"),
|
||||
BrickColor.new("Brick yellow"),
|
||||
},
|
||||
|
||||
Gui = nil,
|
||||
Frame = nil,
|
||||
RenderFrame = nil,
|
||||
TapToChatLabel = nil,
|
||||
ClickToChatButton = nil,
|
||||
|
||||
ScrollingLock = false,
|
||||
EventListener = nil,
|
||||
|
||||
-- This is actually a ring buffer
|
||||
-- Meaning at hitting the historyLength it wraps around
|
||||
-- Reuses the text objects, so chat atmost uses 100 text objects
|
||||
MessageQueue = {},
|
||||
|
||||
-- Stores all the values for configuring chat
|
||||
Configuration = {
|
||||
FontSize = Enum.FontSize.Size10, -- 10 is good
|
||||
-- Also change this when you are changing the above, this is suboptimal but so is our interface to find FontSize
|
||||
NumFontSize = 10,
|
||||
HistoryLength = 50, -- stores up to 50 of the last chat messages for you to scroll through,
|
||||
Size = UDim2.new(0.38, 0, 0.20, 0),
|
||||
MessageColor = Color3.new(1, 1, 1),
|
||||
XScale = 0.025,
|
||||
LifeTime = 45,
|
||||
Position = UDim2.new(0, 2, 0.05, 0),
|
||||
DefaultTweenSpeed = 0.15,
|
||||
},
|
||||
|
||||
-- This could be redone by just using the previous and next fields of the Queue
|
||||
-- But the iterators cause issues, will be optimized later
|
||||
SlotPositions_List = {},
|
||||
-- To precompute and store all player null strings since its an expensive process
|
||||
CachedSpaceStrings_List = {},
|
||||
MouseOnFrame = false,
|
||||
GotFocus = false,
|
||||
|
||||
SafeChat_List = {
|
||||
['Use the Chat menu to talk to me.'] = {'/sc 0', true},
|
||||
['I can only see menu chats.'] = {'/sc 1', true},
|
||||
['Hello'] = {
|
||||
['Hi'] = {'/sc 2_0', true, ['Hi there!'] = true, ['Hi everyone'] = true},
|
||||
['Howdy'] = {'/sc 2_1', true, ['Howdy partner!'] = true},
|
||||
['Greetings'] = {'/sc 2_2', true, ['Greetings everyone'] = true, ['Greetings Robloxians!'] = true, ['Seasons greetings!'] = true},
|
||||
['Welcome'] = {'/sc 2_3', true, ['Welcome to my place'] = true, ['Welcome to my barbeque'] = true, ['Welcome to our base'] = true},
|
||||
['Hey there!'] = {'/sc 2_4', true},
|
||||
['What\'s up?'] = {'/sc 2_5', true, ['How are you doing?'] = true, ['How\'s it going?'] = true, ['What\'s new?'] = true},
|
||||
['Good day'] = {'/sc 2_6', true, ['Good morning'] = true, ['Good evening'] = true, ['Good afternoon'] = true, ['Good night'] = true},
|
||||
['Silly'] = {'/sc 2_7', true, ['Waaaaaaaz up?!'] = true, ['Hullo!'] = true, ['Behold greatness, mortals!'] = true, ['Pardon me, is this Sparta?'] = true, ['THIS IS SPARTAAAA!'] = true},
|
||||
['Happy Holidays!'] = {'/sc 2_8', true, ['Happy New Year!'] = true,
|
||||
['Happy Valentine\'s Day!'] = true,
|
||||
['Beware the Ides of March!'] = true,
|
||||
['Happy St. Patrick\'s Day!'] = true,
|
||||
['Happy Easter!'] = true,
|
||||
['Happy Earth Day!'] = true,
|
||||
['Happy 4th of July!'] = true,
|
||||
['Happy Thanksgiving!'] = true,
|
||||
['Happy Halloween!'] = true,
|
||||
['Happy Hanukkah!'] = true,
|
||||
['Merry Christmas!'] = true,
|
||||
['Happy Halloween!'] = true,
|
||||
['Happy Earth Day!'] = true,
|
||||
['Happy May Day!'] = true,
|
||||
['Happy Towel Day!'] = true,
|
||||
['Happy ROBLOX Day!'] = true,
|
||||
['Happy LOL Day!'] = true },
|
||||
|
||||
[1] = '/sc 2'
|
||||
},
|
||||
['Goodbye'] = {
|
||||
['Good Night']= {'/sc 3_0', true,
|
||||
['Sweet dreams'] = true,
|
||||
['Go to sleep!'] = true,
|
||||
['Lights out!'] = true,
|
||||
['Bedtime'] = true,
|
||||
['Going to bed now'] = true},
|
||||
|
||||
['Later']= {'/sc 3_1', true,
|
||||
['See ya later'] = true,
|
||||
['Later gator!'] = true,
|
||||
['See you tomorrow'] = true},
|
||||
|
||||
['Bye'] = {'/sc 3_2', true, ['Hasta la bye bye!'] = true},
|
||||
['I\'ll be right back'] = {'/sc 3_3', true},
|
||||
['I have to go'] = {'/sc 3_4', true},
|
||||
['Farewell'] = {'/sc 3_5', true, ['Take care'] = true, ['Have a nice day'] = true, ['Goodluck!'] = true, ['Ta-ta for now!'] = true},
|
||||
['Peace'] = {'/sc 3_6', true, ['Peace out!'] = true, ['Peace dudes!'] = true, ['Rest in pieces!'] = true},
|
||||
['Silly'] = {'/sc 3_7', true,
|
||||
['To the batcave!'] = true,
|
||||
['Over and out!'] = true,
|
||||
['Happy trails!'] = true,
|
||||
['I\'ve got to book it!'] = true,
|
||||
['Tootles!'] = true,
|
||||
['Smell you later!'] = true,
|
||||
['GG!'] = true,
|
||||
['My house is on fire! gtg.'] = true},
|
||||
[1] = '/sc 3'
|
||||
},
|
||||
['Friend'] ={
|
||||
['Wanna be friends?'] = {'/sc 4_0', true},
|
||||
['Follow me'] = {'/sc 4_1', true, ['Come to my place!'] = true, ['Come to my base!'] = true, ['Follow me, team!'] = true, ['Follow me'] = true},
|
||||
['Your place is cool'] = {'/sc 4_2', true, ['Your place is fun'] = true, ['Your place is awesome'] = true, ['Your place looks good'] = true, ['This place is awesome!'] = true},
|
||||
['Thank you'] = {'/sc 4_3', true, ['Thanks for playing'] = true, ['Thanks for visiting'] = true, ['Thanks for everything'] = true, ['No, thank you'] = true, ['Thanx'] = true},
|
||||
['No problem'] = {'/sc 4_4', true, ['Don\'t worry'] = true, ['That\'s ok'] = true, ['np'] = true},
|
||||
['You are ...'] = {'/sc 4_5', true,
|
||||
['You are great!'] = true,
|
||||
['You are good!'] = true,
|
||||
['You are cool!'] = true,
|
||||
['You are funny!'] = true,
|
||||
['You are silly!'] = true,
|
||||
['You are awesome!'] = true,
|
||||
['You are doing something I don\'t like, please stop'] = true
|
||||
},
|
||||
['I like ...'] = {'/sc 4_6', true, ['I like your name'] = true, ['I like your shirt'] = true, ['I like your place'] = true, ['I like your style'] = true,
|
||||
['I like you'] = true, ['I like items'] = true, ['I like money'] = true},
|
||||
['Sorry'] = {'/sc 4_7', true, ['My bad!'] = true, ['I\'m sorry'] = true, ['Whoops!'] = true, ['Please forgive me.'] = true, ['I forgive you.'] = true,
|
||||
['I didn\'t mean to do that.'] = true, ['Sorry, I\'ll stop now.'] = true},
|
||||
[1] = '/sc 4'
|
||||
},
|
||||
['Questions'] = {
|
||||
['Who?'] = {'/sc 5_0', true, ['Who wants to be my friend?'] = true, ['Who wants to be on my team?'] = true, ['Who made this brilliant game?'] = true},
|
||||
['What?'] = {'/sc 5_1', true, ['What is your favorite animal?'] = true, ['What is your favorite game?'] = true, ['What is your favorite movie?'] = true,
|
||||
['What is your favorite TV show?'] = true, ['What is your favorite music?'] = true, ['What are your hobbies?'] = true, ['LOLWUT?'] = true},
|
||||
['When?'] = {'/sc 5_2', true, ['When are you online?'] = true, ['When is the new version coming out?'] = true, ['When can we play again?'] = true, ['When will your place be done?'] = true},
|
||||
['Where?'] = {'/sc 5_3', true, ['Where do you want to go?'] = true, ['Where are you going?'] = true, ['Where am I?!'] = true, ['Where did you go?'] = true},
|
||||
['How?'] = {'/sc 5_4', true, ['How are you today?'] = true, ['How did you make this cool place?'] = true, ['LOLHOW?'] = true},
|
||||
['Can I...'] = {'/sc 5_5', true, ['Can I have a tour?'] = true, ['Can I be on your team?'] = true, ['Can I be your friend?'] = true, ['Can I try something?'] = true,
|
||||
['Can I have that please?'] = true, ['Can I have that back please?'] = true, ['Can I have borrow your hat?'] = true, ['Can I have borrow your gear?'] = true},
|
||||
[1] = '/sc 5'
|
||||
},
|
||||
['Answers'] = {
|
||||
['You need help?'] = {'/sc 6_0', true, ['Check out the news section'] = true, ['Check out the help section'] = true, ['Read the wiki!'] = true,
|
||||
['All the answers are in the wiki!'] = true, ['I will help you with this.'] = true},
|
||||
['Some people ...'] = {'/sc 6_1', true, ['Me'] = true, ['Not me'] = true, ['You'] = true, ['All of us'] = true, ['Everyone but you'] = true, ['Builderman!'] = true,
|
||||
['Telamon!'] = true, ['My team'] = true, ['My group'] = true, ['Mom'] = true, ['Dad'] = true, ['Sister'] = true, ['Brother'] = true, ['Cousin'] = true,
|
||||
['Grandparent'] = true, ['Friend'] = true},
|
||||
['Time ...'] = {'/sc 6_2', true, ['In the morning'] = true, ['In the afternoon'] = true, ['At night'] = true, ['Tomorrow'] = true, ['This week'] = true, ['This month'] = true,
|
||||
['Sometime'] = true, ['Sometimes'] = true, ['Whenever you want'] = true, ['Never'] = true, ['After this'] = true, ['In 10 minutes'] = true, ['In a couple hours'] = true,
|
||||
['In a couple days'] = true},
|
||||
['Animals'] = {'/sc 6_3', true,
|
||||
['Cats'] = {['Lion'] = true, ['Tiger'] = true, ['Leopard'] = true, ['Cheetah'] = true},
|
||||
['Dogs'] = {['Wolves'] = true, ['Beagle'] = true, ['Collie'] = true, ['Dalmatian'] = true, ['Poodle'] = true, ['Spaniel'] = true,
|
||||
['Shepherd'] = true, ['Terrier'] = true, ['Retriever'] = true},
|
||||
['Horses'] = {['Ponies'] = true, ['Stallions'] = true, ['Pwnyz'] = true},
|
||||
['Reptiles'] = {['Dinosaurs'] = true, ['Lizards'] = true, ['Snakes'] = true, ['Turtles!'] = true},
|
||||
['Hamster'] = true,
|
||||
['Monkey'] = true,
|
||||
['Bears'] = true,
|
||||
['Fish'] = {['Goldfish'] = true, ['Sharks'] = true, ['Sea Bass'] = true, ['Halibut'] = true, ['Tropical Fish'] = true},
|
||||
['Birds'] = {['Eagles'] = true, ['Penguins'] = true, ['Parakeets'] = true, ['Owls'] = true, ['Hawks'] = true, ['Pidgeons'] = true},
|
||||
['Elephants'] = true,
|
||||
['Mythical Beasts'] = {['Dragons'] = true, ['Unicorns'] = true, ['Sea Serpents'] = true, ['Sphinx'] = true, ['Cyclops'] = true,
|
||||
['Minotaurs'] = true, ['Goblins'] = true, ['Honest Politicians'] = true, ['Ghosts'] = true, ['Scylla and Charybdis'] = true}
|
||||
},
|
||||
['Games'] = {'/sc 6_4', true,
|
||||
['Action'] = true, ['Puzzle'] = true, ['Strategy'] = true, ['Racing'] = true, ['RPG'] = true, ['Obstacle Course'] = true, ['Tycoon'] = true,
|
||||
['Roblox'] = { ['BrickBattle'] = true, ['Community Building'] = true, ['Roblox Minigames'] = true, ['Contest Place'] = true},
|
||||
['Board games'] = { ['Chess'] = true, ['Checkers'] = true, ['Settlers of Catan'] = true, ['Tigris and Euphrates'] = true, ['El Grande'] = true,
|
||||
['Stratego'] = true, ['Carcassonne'] = true}
|
||||
},
|
||||
['Sports'] = {'/sc 6_5', true, ['Hockey'] = true, ['Soccer'] = true, ['Football'] = true, ['Baseball'] = true, ['Basketball'] = true,
|
||||
['Volleyball'] = true, ['Tennis'] = true, ['Sports team practice'] = true,
|
||||
['Watersports'] = { ['Surfing'] = true,['Swimming'] = true, ['Water Polo'] = true},
|
||||
['Winter sports'] = { ['Skiing'] = true, ['Snowboarding'] = true, ['Sledding'] = true, ['Skating'] = true},
|
||||
['Adventure'] = {['Rock climbing'] = true, ['Hiking'] = true, ['Fishing'] = true, ['Horseback riding'] = true},
|
||||
['Wacky'] = {['Foosball'] = true, ['Calvinball'] = true, ['Croquet'] = true, ['Cricket'] = true, ['Dodgeball'] = true,
|
||||
['Squash'] = true, ['Trampoline'] = true}
|
||||
},
|
||||
['Movies/TV'] = {'/sc 6_6', true, ['Science Fiction'] = true, ['Animated'] = {['Anime'] = true}, ['Comedy'] = true, ['Romantic'] = true,
|
||||
['Action'] = true, ['Fantasy'] = true},
|
||||
['Music'] = {'/sc 6_7', true, ['Country'] = true, ['Jazz'] = true, ['Rap'] = true, ['Hip-hop'] = true, ['Techno'] = true, ['Classical'] = true,
|
||||
['Pop'] = true, ['Rock'] = true},
|
||||
['Hobbies'] = {'/sc 6_8', true,
|
||||
['Computers'] = { ['Building computers'] = true, ['Videogames'] = true, ['Coding'] = true, ['Hacking'] = true},
|
||||
['The Internet'] = { ['lol. teh internets!'] = true, ['Watching vids'] = true},
|
||||
['Dance'] = true, ['Gymnastics'] = true, ['Listening to music'] = true, ['Arts and crafts'] = true,
|
||||
['Martial Arts'] = {['Karate'] = true, ['Judo'] = true, ['Taikwon Do'] = true, ['Wushu'] = true, ['Street fighting'] = true},
|
||||
['Music lessons'] = {['Playing in my band'] = true, ['Playing piano'] = true, ['Playing guitar'] = true,
|
||||
['Playing violin'] = true, ['Playing drums'] = true, ['Playing a weird instrument'] = true}
|
||||
},
|
||||
['Location'] = {'/sc 6_9', true,
|
||||
['USA'] = {
|
||||
['West'] = { ['Alaska'] = true, ['Arizona'] = true, ['California'] = true, ['Colorado'] = true, ['Hawaii'] = true,
|
||||
['Idaho'] = true, ['Montana'] = true, ['Nevada'] = true, ['New Mexico'] = true, ['Oregon'] = true,
|
||||
['Utah'] = true, ['Washington'] = true, ['Wyoming'] = true
|
||||
},
|
||||
['South'] = { ['Alabama'] = true, ['Arkansas'] = true, ['Florida'] = true, ['Georgia'] = true, ['Kentucky'] = true,
|
||||
['Louisiana'] = true, ['Mississippi'] = true, ['North Carolina'] = true, ['Oklahoma'] = true,
|
||||
['South Carolina'] = true, ['Tennessee'] = true, ['Texas'] = true, ['Virginia'] = true, ['West Virginia'] = true
|
||||
},
|
||||
['Northeast'] = {['Connecticut'] = true, ['Delaware'] = true, ['Maine'] = true, ['Maryland'] = true, ['Massachusetts'] = true,
|
||||
['New Hampshire'] = true, ['New Jersey'] = true, ['New York'] = true, ['Pennsylvania'] = true, ['Rhode Island'] = true,
|
||||
['Vermont'] = true
|
||||
},
|
||||
['Midwest'] = {['Illinois'] = true, ['Indiana'] = true, ['Iowa'] = true, ['Kansas'] = true, ['Michigan'] = true, ['Minnesota'] = true,
|
||||
['Missouri'] = true, ['Nebraska'] = true, ['North Dakota'] = true, ['Ohio'] = true, ['South Dakota'] = true, ['Wisconsin'] = true}
|
||||
},
|
||||
['Canada'] = {['Alberta'] = true, ['British Columbia'] = true, ['Manitoba'] = true, ['New Brunswick'] = true, ['Newfoundland'] = true,
|
||||
['Northwest Territories'] = true, ['Nova Scotia'] = true, ['Nunavut'] = true, ['Ontario'] = true, ['Prince Edward Island'] = true,
|
||||
['Quebec'] = true, ['Saskatchewan'] = true, ['Yukon'] = true},
|
||||
['Mexico'] = true,
|
||||
['Central America'] = true,
|
||||
['Europe'] = {['France'] = true, ['Germany'] = true, ['Spain'] = true, ['Italy'] = true, ['Poland'] = true, ['Switzerland'] = true,
|
||||
['Greece'] = true, ['Romania'] = true, ['Netherlands'] = true,
|
||||
['Great Britain'] = {['England'] = true, ['Scotland'] = true, ['Wales'] = true, ['Northern Ireland'] = true}
|
||||
},
|
||||
['Asia'] = { ['China'] = true, ['India'] = true, ['Japan'] = true, ['Korea'] = true, ['Russia'] = true, ['Vietnam'] = true},
|
||||
['South America'] = { ['Argentina'] = true, ['Brazil'] = true},
|
||||
['Africa'] = { ['Eygpt'] = true, ['Swaziland'] = true},
|
||||
['Australia'] = true, ['Middle East'] = true, ['Antarctica'] = true, ['New Zealand'] = true
|
||||
},
|
||||
['Age'] = {'/sc 6_10', true, ['Rugrat'] = true, ['Kid'] = true, ['Tween'] = true, ['Teen'] = true, ['Twenties'] = true,
|
||||
['Old'] = true, ['Ancient'] = true, ['Mesozoic'] = true, ['I don\'t want to say my age. Don\'t ask.'] = true},
|
||||
['Mood'] = {'/sc 6_11', true, ['Good'] = true, ['Great!'] = true, ['Not bad'] = true, ['Sad'] = true, ['Hyper'] = true,
|
||||
['Chill'] = true, ['Happy'] = true, ['Kind of mad'] = true},
|
||||
['Boy'] = {'/sc 6_12', true},
|
||||
['Girl'] = {'/sc 6_13', true},
|
||||
['I don\'t want to say boy or girl. Don\'t ask.'] = {'/sc 6_14', true},
|
||||
[1] = '/sc 6'
|
||||
},
|
||||
['Game'] = {
|
||||
['Let\'s build'] = {'/sc 7_0', true},
|
||||
['Let\'s battle'] = {'/sc 7_1', true},
|
||||
['Nice one!'] = {'/sc 7_2', true},
|
||||
['So far so good'] = {'/sc 7_3', true},
|
||||
['Lucky shot!'] = {'/sc 7_4', true},
|
||||
['Oh man!'] = {'/sc 7_5', true},
|
||||
['I challenge you to a fight!'] = {'/sc 7_6', true},
|
||||
['Help me with this'] = {'/sc 7_7', true},
|
||||
['Let\'s go to your game'] = {'/sc 7_8', true},
|
||||
['Can you show me how do to that?'] = {'/sc 7_9', true},
|
||||
['Backflip!'] = {'/sc 7_10', true},
|
||||
['Frontflip!'] = {'/sc 7_11', true},
|
||||
['Dance!'] = {'/sc 7_12', true},
|
||||
['I\'m on your side!'] = {'/sc 7_13', true},
|
||||
['Game Commands'] = {'/sc 7_14', true, ['regen'] = true, ['reset'] = true, ['go'] = true, ['fix'] = true, ['respawn'] = true},
|
||||
[1] = '/sc 7'
|
||||
};
|
||||
['Silly'] = {
|
||||
['Muahahahaha!'] = true,
|
||||
['all your base are belong to me!'] = true,
|
||||
['GET OFF MAH LAWN'] = true,
|
||||
['TEH EPIK DUCK IS COMING!!!'] = true,
|
||||
['ROFL'] = true,
|
||||
['1337'] = {true, ['i r teh pwnz0r!'] = true, ['w00t!'] = true, ['z0mg h4x!'] = true, ['ub3rR0xXorzage!'] = true}
|
||||
},
|
||||
['Yes'] = {
|
||||
['Absolutely!'] = true,
|
||||
['Rock on!'] = true,
|
||||
['Totally!'] = true,
|
||||
['Juice!'] = true,
|
||||
['Yay!'] = true,
|
||||
['Yesh'] = true
|
||||
},
|
||||
['No'] = {
|
||||
['Ummm. No.'] = true,
|
||||
['...'] = true,
|
||||
['Stop!'] = true,
|
||||
['Go away!'] = true,
|
||||
['Don\'t do that'] = true,
|
||||
['Stop breaking the rules'] = true,
|
||||
['I don\'t want to'] = true
|
||||
},
|
||||
['Ok'] = {
|
||||
['Well... ok'] = true,
|
||||
['Sure'] = true
|
||||
},
|
||||
['Uncertain'] = {
|
||||
['Maybe'] = true,
|
||||
['I don\'t know'] = true,
|
||||
['idk'] = true,
|
||||
['I can\'t decide'] = true,
|
||||
['Hmm...'] = true
|
||||
},
|
||||
[':-)'] = {
|
||||
[':-('] = true,
|
||||
[':D'] = true,
|
||||
[':-O'] = true,
|
||||
['lol'] = true,
|
||||
['=D'] = true,
|
||||
['D='] = true,
|
||||
['XD'] = true,
|
||||
[';D'] = true,
|
||||
[';)'] = true,
|
||||
['O_O'] = true,
|
||||
['=)'] = true,
|
||||
['@_@'] = true,
|
||||
['>_<'] = true,
|
||||
['T_T'] = true,
|
||||
['^_^'] = true,
|
||||
['<(0_0<) <(0_0)> (>0_0)> KIRBY DANCE'] = true,
|
||||
[')\';'] = true,
|
||||
[':3'] = true
|
||||
},
|
||||
['Ratings'] = {
|
||||
['Rate it!'] = true,
|
||||
['I give it a 1 out of 10'] = true,
|
||||
['I give it a 2 out of 10'] = true,
|
||||
['I give it a 3 out of 10'] = true,
|
||||
['I give it a 4 out of 10'] = true,
|
||||
['I give it a 5 out of 10'] = true,
|
||||
['I give it a 6 out of 10'] = true,
|
||||
['I give it a 7 out of 10'] = true,
|
||||
['I give it a 8 out of 10'] = true,
|
||||
['I give it a 9 out of 10'] = true,
|
||||
['I give it a 10 out of 10!'] = true,
|
||||
}
|
||||
},
|
||||
CreateEnum('SafeChat'){'Level1', 'Level2', 'Level3'},
|
||||
SafeChatTree = {}
|
||||
}
|
||||
---------------------------------------------------
|
||||
|
||||
|
||||
|
||||
-- Check if we are running on a touch device
|
||||
function Chat:IsTouchDevice()
|
||||
local touchEnabled = false
|
||||
pcall(function() touchEnabled = Game:GetService('UserInputService').TouchEnabled end)
|
||||
return touchEnabled
|
||||
end
|
||||
|
||||
-- Scrolling
|
||||
function Chat:ScrollQueue(value)
|
||||
for i = 1, #self.MessageQueue do
|
||||
if self.MessageQueue[i] then
|
||||
for _, label in pairs(self.MessageQueue[i]) do
|
||||
local next = self.MessageQueue[i].Next
|
||||
local previous = self.MessageQueue[i].Previous
|
||||
if label and label:IsA('TextLabel') or label:IsA('TextButton') then
|
||||
if value > 0 and previous and previous['Message'] then
|
||||
label.Position = previous['Message'].Position
|
||||
elseif value < 1 and next['Message'] then
|
||||
label.Position = previous['Message'].Position
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
|
||||
function Chat:FocusOnChatBar()
|
||||
if self.ClickToChatButton then
|
||||
self.ClickToChatButton.Visible = false
|
||||
end
|
||||
|
||||
self.GotFocus = true
|
||||
if self.Frame['Background'] then
|
||||
self.Frame.Background.Visible = false
|
||||
end
|
||||
self.ChatBar:CaptureFocus()
|
||||
end
|
||||
|
||||
-- For touch devices we create a button instead
|
||||
function Chat:CreateTouchButton()
|
||||
self.ChatTouchFrame = Gui.Create'Frame'
|
||||
{
|
||||
Name = 'ChatTouchFrame';
|
||||
Size = UDim2.new(0, 128, 0, 32);
|
||||
Position = UDim2.new(0, 88, 0, 0);
|
||||
BackgroundTransparency = 1.0;
|
||||
Parent = self.Gui;
|
||||
|
||||
Gui.Create'ImageButton'
|
||||
{
|
||||
Name = 'ChatLabel';
|
||||
Size = UDim2.new(0, 74, 0, 28);
|
||||
Position = UDim2.new(0, 0, 0, 0);
|
||||
BackgroundTransparency = 1.0;
|
||||
ZIndex = 2.0;
|
||||
};
|
||||
|
||||
Gui.Create'ImageLabel'
|
||||
{
|
||||
Name = 'Background';
|
||||
Size = UDim2.new(1, 0, 1, 0);
|
||||
Position = UDim2.new(0, 0, 0, 0);
|
||||
BackgroundTransparency = 1.0;
|
||||
Image = 'http://www.jarfeh.xyz/asset/?id=97078724'
|
||||
};
|
||||
}
|
||||
self.TapToChatLabel = self.ChatTouchFrame.ChatLabel
|
||||
self.TouchLabelBackground = self.ChatTouchFrame.Background
|
||||
|
||||
self.ChatBar = Gui.Create'TextBox'
|
||||
{
|
||||
Name = 'ChatBar';
|
||||
Size = UDim2.new(1, 0, 0.2, 0);
|
||||
Position = UDim2.new(0, 0, 0.8, 0);
|
||||
Text = "";
|
||||
ZIndex = 1.0;
|
||||
BackgroundTransparency = 1.0;
|
||||
Parent = self.Frame;
|
||||
TextXAlignment = Enum.TextXAlignment.Left;
|
||||
TextColor3 = Color3.new(1, 1, 1);
|
||||
ClearTextOnFocus = false;
|
||||
};
|
||||
|
||||
self.TapToChatLabel.MouseButton1Click:connect(function()
|
||||
self.TapToChatLabel.Visible = false
|
||||
--self.ChatBar.Visible = true
|
||||
self.Frame.Background.Visible = true
|
||||
self.ChatBar:CaptureFocus()
|
||||
self.GotFocus = true
|
||||
if self.TouchLabelBackground then
|
||||
self.TouchLabelBackground.Visible = false
|
||||
end
|
||||
end)
|
||||
end
|
||||
|
||||
-- Non touch devices, create the bottom chat bar
|
||||
function Chat:CreateChatBar()
|
||||
-- okay now we do
|
||||
local status, result = pcall(function() return GuiService.UseLuaChat end)
|
||||
if status and result then
|
||||
self.ClickToChatButton = Gui.Create'TextButton'
|
||||
{
|
||||
Name = 'ClickToChat';
|
||||
Size = UDim2.new(1, 0, 0, 20);
|
||||
BackgroundTransparency = 1.0;
|
||||
ZIndex = 2.0;
|
||||
Parent = self.Gui;
|
||||
Text = "To chat click here or press \"/\" key";
|
||||
TextColor3 = Color3.new(1, 1, 0.9);
|
||||
Position = UDim2.new(0, 0, 1, 0);
|
||||
TextXAlignment = Enum.TextXAlignment.Left;
|
||||
FontSize = Enum.FontSize.Size12;
|
||||
}
|
||||
|
||||
self.ChatBar = Gui.Create'TextBox'
|
||||
{
|
||||
Name = 'ChatBar';
|
||||
Size = UDim2.new(1, 0, 0, 20);
|
||||
Position = UDim2.new(0, 0, 1, 0);
|
||||
Text = "";
|
||||
ZIndex = 1.0;
|
||||
BackgroundColor3 = Color3.new(0, 0, 0);
|
||||
BackgroundTransparency = 0.25;
|
||||
Parent = self.Gui;
|
||||
TextXAlignment = Enum.TextXAlignment.Left;
|
||||
TextColor3 = Color3.new(1, 1, 1);
|
||||
FontSize = Enum.FontSize.Size12;
|
||||
ClearTextOnFocus = false;
|
||||
Text = '';
|
||||
};
|
||||
|
||||
-- Engine has code to offset the entire world, so if we do it by -20 pixels nothing gets in our chat's way
|
||||
GuiService:SetGlobalSizeOffsetPixel(0, -20)
|
||||
-- CHatHotKey is '/'
|
||||
GuiService:AddSpecialKey(Enum.SpecialKey.ChatHotkey)
|
||||
GuiService.SpecialKeyPressed:connect(function(key)
|
||||
if key == Enum.SpecialKey.ChatHotkey then
|
||||
Chat:FocusOnChatBar()
|
||||
end
|
||||
end)
|
||||
|
||||
self.ClickToChatButton.MouseButton1Click:connect(function()
|
||||
Chat:FocusOnChatBar()
|
||||
end)
|
||||
end
|
||||
end
|
||||
|
||||
-- For scrolling, to see if we hit the bounds so that we can stop it from scrolling anymore
|
||||
function Chat:CheckIfInBounds(value)
|
||||
if #Chat.MessageQueue < 3 then
|
||||
return true
|
||||
end
|
||||
|
||||
if value > 0 and Chat.MessageQueue[1] and Chat.MessageQueue[1]['Player'] and Chat.MessageQueue[1]['Player'].Position.Y.Scale == 0 then
|
||||
return true
|
||||
elseif value < 0 and Chat.MessageQueue[1] and Chat.MessageQueue[1]['Player'] and Chat.MessageQueue[1]['Player'].Position.Y.Scale < 0 then
|
||||
return true
|
||||
else
|
||||
return false
|
||||
end
|
||||
return false
|
||||
end
|
||||
|
||||
-- This is to precompute all playerName space strings
|
||||
-- This is used to offset the message by exactly this + 2 spacestrings
|
||||
function Chat:ComputeSpaceString(pLabel)
|
||||
local tLabel = Gui.Create'TextButton'
|
||||
{
|
||||
Size = UDim2.new(0, pLabel.AbsoluteSize.X, 0, pLabel.AbsoluteSize.Y);
|
||||
FontSize = self.Configuration.FontSize;
|
||||
Parent = self.RenderFrame;
|
||||
BackgroundTransparency = 1.0;
|
||||
Text = nString;
|
||||
};
|
||||
local nString = " "
|
||||
while tLabel.TextBounds.X < pLabel.TextBounds.X do
|
||||
nString = nString .. " "
|
||||
tLabel.Text = nString
|
||||
end
|
||||
self.CachedSpaceStrings_List[pLabel.Text] = nString
|
||||
return nString
|
||||
end
|
||||
|
||||
|
||||
|
||||
function Chat:ScreenSizeChanged()
|
||||
while self.Frame.AbsoluteSize.Y > 120 do
|
||||
self.Frame.Size = self.Frame.Size - UDim2.new(0, 0, 0.005, 0)
|
||||
end
|
||||
end
|
||||
|
||||
-- Create the initial Chat stuff
|
||||
-- Done only once
|
||||
function Chat:CreateGui()
|
||||
self.Gui = WaitForChild(CoreGuiService, 'RobloxGui')
|
||||
self.Frame = Gui.Create'Frame'
|
||||
{
|
||||
Name = 'ChatFrame';
|
||||
Size = self.Configuration.Size;
|
||||
Position = UDim2.new(0, 0, 0, 5);
|
||||
BackgroundTransparency = 1.0;
|
||||
--ClipsDescendants = true;
|
||||
ZIndex = 0.0;
|
||||
Parent = self.Gui;
|
||||
|
||||
Gui.Create'ImageLabel'
|
||||
{
|
||||
Name = 'Background';
|
||||
Image = 'http://www.jarfeh.xyz/asset/?id=97120937'; --96551212';
|
||||
Size = UDim2.new(1.3, 0, 1.64, 0);
|
||||
Position = UDim2.new(0, 0, 0, 0);
|
||||
BackgroundTransparency = 1.0;
|
||||
ZIndex = 0.0;
|
||||
Visible = false
|
||||
};
|
||||
|
||||
Gui.Create'Frame'
|
||||
{
|
||||
Name = 'Border';
|
||||
Size = UDim2.new(1, 0, 0, 1);
|
||||
Position = UDim2.new(0, 0, 0.8, 0);
|
||||
BackgroundTransparency = 0.0;
|
||||
BackgroundColor3 = Color3.new(236/255, 236/255, 236/255);
|
||||
BorderSizePixel = 0.0;
|
||||
Visible = false;
|
||||
};
|
||||
|
||||
Gui.Create'Frame'
|
||||
{
|
||||
Name = 'ChatRenderFrame';
|
||||
Size = UDim2.new(1.02, 0, 1.01, 0);
|
||||
Position = UDim2.new(0, 0, 0, 0);
|
||||
BackgroundTransparency = 1.0;
|
||||
ClipsDescendants = true;
|
||||
ZIndex = 0.0;
|
||||
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
self.RenderFrame = self.Frame.ChatRenderFrame
|
||||
if Chat:IsTouchDevice() then
|
||||
self.Frame.Position = self.Configuration.Position;
|
||||
self.RenderFrame.Size = UDim2.new(1, 0, 1, 0)
|
||||
elseif self.Frame.AbsoluteSize.Y > 120 then
|
||||
Chat:ScreenSizeChanged()
|
||||
self.Gui.Changed:connect(function(property)
|
||||
if property == 'AbsoluteSize' then
|
||||
Chat:ScreenSizeChanged()
|
||||
end
|
||||
end)
|
||||
end
|
||||
|
||||
if Player.ChatMode == Enum.ChatMode.TextAndMenu then
|
||||
if Chat:IsTouchDevice() then
|
||||
Chat:CreateTouchButton()
|
||||
else
|
||||
Chat:CreateChatBar()
|
||||
--Chat:CreateSafeChatGui()
|
||||
end
|
||||
|
||||
if self.ChatBar then
|
||||
self.ChatBar.FocusLost:connect(function(enterPressed)
|
||||
Chat.GotFocus = false
|
||||
if Chat:IsTouchDevice() then
|
||||
self.ChatBar.Visible = false
|
||||
self.TapToChatLabel.Visible = true
|
||||
|
||||
if self.TouchLabelBackground then
|
||||
self.TouchLabelBackground.Visible = true
|
||||
end
|
||||
end
|
||||
if enterPressed and self.ChatBar.Text ~= "" then
|
||||
if PlayersService.ClassicChat then
|
||||
pcall(function() PlayersService:Chat(self.ChatBar.Text) end)
|
||||
elseif PlayersService.BubbleChat then
|
||||
-- do nothing
|
||||
end
|
||||
if self.ClickToChatButton then
|
||||
self.ClickToChatButton.Visible = true
|
||||
end
|
||||
self.ChatBar.Text = ""
|
||||
end
|
||||
Spawn(function()
|
||||
wait(5.0)
|
||||
if not Chat.GotFocus then
|
||||
Chat.Frame.Background.Visible = false
|
||||
end
|
||||
end)
|
||||
end)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function Chat:FindButtonTree(scButton, rootList)
|
||||
local list = {}
|
||||
rootList = rootList or self.SafeChatTree
|
||||
for button, _ in pairs(rootList) do
|
||||
if button == scButton then
|
||||
list = rootList[button]
|
||||
elseif type(rootList[button]) == 'table' then
|
||||
list = Chat:FindButtonTree(scButton, rootList[button])
|
||||
end
|
||||
end
|
||||
return list
|
||||
end
|
||||
|
||||
function Chat:ToggleSafeChatMenu(scButton)
|
||||
local list = Chat:FindButtonTree(scButton, self.SafeChatTree)
|
||||
if list then
|
||||
for button, _ in pairs(list) do
|
||||
if button:IsA('TextButton') or button:IsA('ImageButton') then
|
||||
button.Visible = not button.Visible
|
||||
end
|
||||
end
|
||||
return true
|
||||
end
|
||||
return false
|
||||
end
|
||||
|
||||
function Chat:CreateSafeChatOptions(list, rootButton)
|
||||
local text_List = {}
|
||||
level = level or 0
|
||||
local count = 0
|
||||
text_List[rootButton] = {}
|
||||
text_List[rootButton][1] = list[1]
|
||||
rootButton = rootButton or self.SafeChatButton
|
||||
for msg, _ in pairs(list) do
|
||||
if type(msg) == 'string' then
|
||||
local chatText = Gui.Create'TextButton'
|
||||
{
|
||||
Name = msg;
|
||||
Text = msg;
|
||||
Size = UDim2.new(0, 100, 0, 20);
|
||||
TextXAlignment = Enum.TextXAlignment.Center;
|
||||
TextColor3 = Color3.new(0.2, 0.1, 0.1);
|
||||
BackgroundTransparency = 0.5;
|
||||
BackgroundColor3 = Color3.new(1, 1, 1);
|
||||
Parent = self.SafeChatFrame;
|
||||
Visible = false;
|
||||
Position = UDim2.new(0, rootButton.Position.X.Scale + 105, 0, rootButton.Position.Y.Scale - ((count - 3) * 100));
|
||||
};
|
||||
|
||||
count = count + 1
|
||||
|
||||
if type(list[msg]) == 'table' then
|
||||
text_List[rootButton][chatText] = Chat:CreateSafeChatOptions(list[msg], chatText)
|
||||
else
|
||||
--table.insert(text_List[chatText], true)
|
||||
end
|
||||
chatText.MouseEnter:connect(function()
|
||||
Chat:ToggleSafeChatMenu(chatText)
|
||||
end)
|
||||
|
||||
chatText.MouseLeave:connect(function()
|
||||
Chat:ToggleSafeChatMenu(chatText)
|
||||
end)
|
||||
|
||||
chatText.MouseButton1Click:connect(function()
|
||||
local lList = Chat:FindButtonTree(chatText)
|
||||
if lList then
|
||||
for i, v in pairs(lList) do
|
||||
end
|
||||
else
|
||||
end
|
||||
pcall(function() PlayersService:Chat(lList[1]) end)
|
||||
end)
|
||||
end
|
||||
end
|
||||
return text_List
|
||||
end
|
||||
|
||||
function Chat:CreateSafeChatGui()
|
||||
self.SafeChatFrame = Gui.Create'Frame'
|
||||
{
|
||||
Name = 'SafeChatFrame';
|
||||
Size = UDim2.new(1, 0, 1, 0);
|
||||
Parent = self.Gui;
|
||||
BackgroundTransparency = 1.0;
|
||||
|
||||
Gui.Create'ImageButton'
|
||||
{
|
||||
Name = 'SafeChatButton';
|
||||
Size = UDim2.new(0, 44, 0, 31);
|
||||
Position = UDim2.new(0, 1, 0.35, 0);
|
||||
BackgroundTransparency = 1.0;
|
||||
Image = 'http://www.jarfeh.xyz/asset/?id=97080365';
|
||||
};
|
||||
}
|
||||
|
||||
self.SafeChatButton = self.SafeChatFrame.SafeChatButton
|
||||
-- safe chat button is the root of this tree
|
||||
self.SafeChatTree[self.SafeChatButton] = Chat:CreateSafeChatOptions(self.SafeChat_List, self.SafeChatButton)
|
||||
|
||||
self.SafeChatButton.MouseButton1Click:connect(function()
|
||||
Chat:ToggleSafeChatMenu(self.SafeChatButton)
|
||||
end)
|
||||
|
||||
end
|
||||
|
||||
-- Scrolling function
|
||||
-- Applies a speed(velocity) to have nice scrolling effect
|
||||
function Input:OnMouseScroll()
|
||||
Spawn(function()
|
||||
-- How long should the speed last?
|
||||
while Input.Speed ~=0 do
|
||||
if Input.Speed > 1 then
|
||||
while Input.Speed > 0 do
|
||||
Input.Speed = Input.Speed - 1
|
||||
wait(0.25)
|
||||
end
|
||||
elseif Input.Speed < 0 then
|
||||
while Input.Speed < 0 do
|
||||
Input.Speed = Input.Speed + 1
|
||||
wait(0.25)
|
||||
end
|
||||
end
|
||||
wait()
|
||||
end
|
||||
end)
|
||||
if Chat:CheckIfInBounds(Input.Speed) then
|
||||
return
|
||||
end
|
||||
Chat:ScrollQueue()
|
||||
end
|
||||
|
||||
function Input:ApplySpeed(value)
|
||||
Input.Speed = Input.Speed + value
|
||||
if not self.Simulating then
|
||||
Input:OnMouseScroll()
|
||||
end
|
||||
end
|
||||
|
||||
function Input:Initialize()
|
||||
self.Mouse.WheelBackward:connect(function()
|
||||
Input:ApplySpeed(self.Configuration.DefaultSpeed)
|
||||
end)
|
||||
|
||||
self.Mouse.WheelForward:connect(function()
|
||||
Input:ApplySpeed(self.Configuration.DefaultSpeed)
|
||||
end)
|
||||
end
|
||||
|
||||
function Chat:FindMessageInSafeChat(message, list)
|
||||
local foundMessage = false
|
||||
for msg, _ in pairs(list) do
|
||||
if msg == message then
|
||||
return true
|
||||
end
|
||||
if type(list[msg]) == 'table' then
|
||||
foundMessage = Chat:FindMessageInSafeChat(message, list[msg])
|
||||
if foundMessage then
|
||||
return true
|
||||
end
|
||||
end
|
||||
end
|
||||
return foundMessage
|
||||
end
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
-- RobloxLock everything so users can't delete them(?)
|
||||
function Chat:LockAllFields(gui)
|
||||
local children = gui:GetChildren()
|
||||
for i = 1, #children do
|
||||
children[i].RobloxLocked = true
|
||||
if #children[i]:GetChildren() > 0 then
|
||||
Chat:LockAllFields(children[i])
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
-- Constructor
|
||||
-- This function initializes everything
|
||||
function Chat:Initialize()
|
||||
Chat:CreateGui()
|
||||
self.EventListener = PlayersService.PlayerChatted:connect(function(...)
|
||||
-- This event has 4 callback arguments
|
||||
-- Enum.PlayerChatType.All, chatPlayer, message, targetPlayer
|
||||
Chat:PlayerChatted(...)
|
||||
|
||||
end)
|
||||
|
||||
-- Initialize input for us
|
||||
Input:Initialize()
|
||||
-- Eww, everytime a player is added, you have to redo the connection
|
||||
-- Seems this is not automatic
|
||||
Game.Players.ChildAdded:connect(function()
|
||||
Chat.EventListener:disconnect()
|
||||
self.EventListener = PlayersService.PlayerChatted:connect(function(...)
|
||||
-- This event has 4 callback arguments
|
||||
-- Enum.PlayerChatType.All, chatPlayer, message, targetPlayer
|
||||
Chat:PlayerChatted(...)
|
||||
end)
|
||||
end)
|
||||
|
||||
Spawn(function()
|
||||
Chat:CullThread()
|
||||
end)
|
||||
|
||||
self.Frame.RobloxLocked = true
|
||||
Chat:LockAllFields(self.Frame)
|
||||
self.Frame.DescendantAdded:connect(function(descendant)
|
||||
Chat:LockAllFields(descendant)
|
||||
end)
|
||||
end
|
||||
|
||||
Chat:Initialize()
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
@ -1 +0,0 @@
|
|||
0 0 0 00 0 0 0
|
||||
|
|
@ -1,3 +0,0 @@
|
|||
-----BEGIN RSA PRIVATE KEY-----
|
||||
MIICXQIBAAKBgQDAWrd/TwGJULsVRo06rCpznNmW4zLJK6LwkfTvG3wURFFBj9E9zuaKAOzHVRrHsWKJhq2BxSUze7OClgzgzFLRQHhRQFKn/skLPrV85bFakoK/dnt9h/Jyn2cD2A8Za6q90O3h9FSy9mLvCN07g07IXtauYZfOXvqyqOn4rAeUJQIDAQABAoGBAISbxddZo0iERIW1XtXtLVMI9iUEutVfZPSO2xogi5j5RD97o5gF1H+dhZ8iN9UloDYJiAJn5G6qwCWtxnEPy6NO4lMDgFMQtlpIIW9mafZ7m+AueYJtgO5elLUnFbOA39OcvFUleL9ded42yuB2wfsGdKl85+mHvn8j4zTmT0+9AkEA3H7NBFhIVf3Vj6iLXwPmamhou8T8b+HSXop0krrP/jDw/wHbl0DEJbQv+ypYdoXJo8XS2Hs39z20pCEsUo2/NwJBAN9T5aWXmVnymbdNUCDMjjer2d6Ey9ARyFgB07xHSod+HWlSCES8pcWwZZrP/I4cf2CEiAInfgak0kNNWLOWnYMCQDJEoj7UVaFtHiwDM8r0m6o0pXPxY8+p/wjYrdzpxBNiWv74EHT6Kf2ih7HOJJ7Yv3Cb4AbEiKzQH4evnGgxsp8CQQDRPK+ad/DLn0p5vMvoDv7oFfCoVM8IAMEuA3g3nKutSnGP7bWlgQHnuB9Z7qf3FagZ69HqAspGu0HsoJkMmX61AkAO5wTd+rja0MP7rT5xNVYBALtdYLWowBov4NCN7BVDkd0JzeTjMtDerirvEDuzDBrbyFtKV5rZjZpuotFc+5/t
|
||||
-----END RSA PRIVATE KEY-----
|
||||
|
|
@ -1,69 +0,0 @@
|
|||
<?php
|
||||
ob_start();
|
||||
function sign($data) {
|
||||
$PrivKey = file_get_contents("./PrivKey.pem");
|
||||
openssl_sign($data, $signature, $PrivKey, OPENSSL_ALGO_SHA1);
|
||||
echo sprintf("%%%s%%%s", base64_encode($signature), $data);
|
||||
}
|
||||
ini_set('user_agent', 'Roblox/WinInet'); // required for some audios
|
||||
|
||||
$id = (int)($_GET["id"] ?? die(json_encode(["message" => "Error handling your request."])));
|
||||
$version = isset($_GET["version"]) ? filter_var($_GET["version"], FILTER_SANITIZE_NUMBER_INT, FILTER_NULL_ON_FAILURE) : -1;
|
||||
|
||||
|
||||
if (file_exists($_SERVER["DOCUMENT_ROOT"] . "/asset/" . $id)){
|
||||
$file = file_get_contents($_SERVER["DOCUMENT_ROOT"] . "/asset/" . $id);
|
||||
if (isset($_GET["sign"]) == true){
|
||||
sign($file);
|
||||
}else if($id == 1){
|
||||
sign($file);
|
||||
}else if($id == 2){
|
||||
sign($file);
|
||||
}else if($id == 3){
|
||||
sign($file);
|
||||
}else if($id == 4){
|
||||
sign($file);
|
||||
}else if($id == 5){
|
||||
sign($file);
|
||||
}else if($id == 7){
|
||||
sign($file);
|
||||
}else if($id == 6){
|
||||
sign($file);
|
||||
}else if($id == 8){
|
||||
sign($file);
|
||||
}else if($id == 9){
|
||||
sign($file);
|
||||
}else if($id == 10){
|
||||
sign($file);
|
||||
}else if($id == 11){
|
||||
sign($file);
|
||||
}else if($id == 12){
|
||||
sign($file);
|
||||
}else if($id == 13){
|
||||
sign($file);
|
||||
}else if($id == 14){
|
||||
sign($file);
|
||||
}else if($id == 15){
|
||||
sign($file);
|
||||
}else if($id == 16){
|
||||
sign($file);
|
||||
}else if($id == 17){
|
||||
sign($file);
|
||||
}else if($id == 18){
|
||||
sign($file);
|
||||
}else if($id == 19){
|
||||
sign($file);
|
||||
}else if($id == 20){
|
||||
sign($file);
|
||||
}else if ($id == 200) {
|
||||
sign($file);
|
||||
}else if ($id == 201) {
|
||||
sign($file);
|
||||
}else{
|
||||
echo $file;
|
||||
}
|
||||
}else{
|
||||
header("Location: https://assetdelivery.roblox.com/v1/asset/?id=$id&version=$version");
|
||||
die();
|
||||
}
|
||||
?>
|
||||
Loading…
Reference in New Issue