Create main.lua
This commit is contained in:
parent
e1453d22fa
commit
061f24db9f
|
|
@ -0,0 +1,128 @@
|
|||
--[[
|
||||
The following legacy code is created by blocco.
|
||||
|
||||
It contains many comments for documentation purposes.
|
||||
It is to be used for educational purposes.
|
||||
|
||||
This code is from RBXPri (Blocco Edition).
|
||||
This file is "main.lua".
|
||||
--]]
|
||||
|
||||
-- in case I want people to know what they're using
|
||||
local showVersion, versionString=false, "RBXPri Server/Client (Blocco Edition) v0.7.3";
|
||||
|
||||
-- robloxLock recursively RobloxLocks objects, no biggie
|
||||
function robloxLock(obj)
|
||||
local function lock(nobj)
|
||||
for i, v in pairs(nobj:children()) do
|
||||
v.RobloxLocked=true;
|
||||
lock(v);
|
||||
end
|
||||
end
|
||||
obj.RobloxLocked=true;
|
||||
lock(obj);
|
||||
end
|
||||
|
||||
-- This is a sort of Locally Persistent Data set-up.
|
||||
-- UserSettings() stores all of its data locally and it is persistent, so I exploited this to create locally persistent data
|
||||
rd_clbcks={};
|
||||
RbxData={};
|
||||
|
||||
-- nam = name of value, cs = type of value, val = value of value; this creates or overrides data, it returns nothing
|
||||
RbxData.SetValue=function(nam, cs, val)
|
||||
local defVals={String=""; Int=0; Number=0; Bool=false; Object=nil}
|
||||
if cs == nil or defVals[cs] == val then
|
||||
if RbxData.GetValue(nam) ~= nil then
|
||||
UserSettings()[nam].Parent = nil
|
||||
for i, v in pairs(rd_clbcks) do v(nam) end
|
||||
return
|
||||
elseif RbxData.GetValue(nam) == nil then
|
||||
for i, v in pairs(rd_clbcks) do v(nam) end
|
||||
return
|
||||
end
|
||||
end;
|
||||
local valo;
|
||||
if RbxData.GetValue(nam) == nil then
|
||||
valo=Instance.new(cs .. "Value", UserSettings());
|
||||
valo.Name = nam;
|
||||
else
|
||||
valo=UserSettings()[nam];
|
||||
end
|
||||
valo.Value = val;
|
||||
for i, v in pairs(rd_clbcks) do v(nam) end
|
||||
end;
|
||||
|
||||
-- this finds the data and returns it
|
||||
RbxData.GetValue=function(nam)
|
||||
return UserSettings():FindFirstChild(nam) and UserSettings()[nam].Value or nil;
|
||||
end;
|
||||
|
||||
-- in case you want to know when your data changes
|
||||
RbxData.AddChangeCallback=function(fn)
|
||||
if type(fn) ~= "function" then return end;
|
||||
getfenv(fn).disconnect = function() for i, v in pairs(rb_clbcks) do if v == fn then table.remove(rb_clbcks, i) end end end;
|
||||
rd_clbcks[#rd_clbcks+1]=fn;
|
||||
end
|
||||
|
||||
-- set up the UI base so that stuff can be put in it
|
||||
local uiBase = Instance.new("ScreenGui");
|
||||
uiBase.Name = "RPUI";
|
||||
uiBase.Parent = game.CoreGui;
|
||||
|
||||
-- btnShield is so I can capture the mouse when people are interacting with the menu and they want to "click out" of it
|
||||
local btnShield=Instance.new("TextButton");
|
||||
btnShield.Name = "UIShield";
|
||||
btnShield.Size = UDim2.new(2, 0, 2, 0);
|
||||
btnShield.Position = UDim2.new(-0.5, 0, -0.5, 0);
|
||||
btnShield.BackgroundTransparency = 1;
|
||||
btnShield.TextTransparency = 1;
|
||||
btnShield.Visible = false;
|
||||
btnShield.Parent = uiBase;
|
||||
|
||||
-- create threads for these files
|
||||
coroutine.resume(coroutine.create(function() dofile("rbxasset://rpui//cjoin.lua") end));
|
||||
coroutine.resume(coroutine.create(function() dofile("rbxasset://rpui//rptp.lua") end));
|
||||
coroutine.resume(coroutine.create(function() dofile("rbxasset://rpui//menu.lua") end));
|
||||
|
||||
-- we don't want the default UI getting in our way
|
||||
game.CoreGui.RobloxGui.Parent = nil;
|
||||
|
||||
-- that robloxLock function we defined up there came in handy, huh? :P
|
||||
-- it's to prevent people from changing my UI unauthorized, because the RBXPri client had little to no security
|
||||
robloxLock(uiBase);
|
||||
uiBase.AncestryChanged:connect(function()robloxLock(uiBase)end)
|
||||
uiBase.DescendantAdded:connect(function()robloxLock(uiBase)end)
|
||||
uiBase.DescendantRemoving:connect(function()robloxLock(uiBase)end)
|
||||
|
||||
-- It was neat for me to have showVersion at the top so I didn't have to waste energy scrolling all the way down here
|
||||
if showVersion then
|
||||
local versionLabel = Instance.new("TextLabel");
|
||||
versionLabel.Text = versionString;
|
||||
versionLabel.Name = "VersionLabel";
|
||||
versionLabel.Size = UDim2.new(0, 420, 0, 20);
|
||||
versionLabel.Position = UDim2.new(0, 15, 1, -35);
|
||||
versionLabel.BackgroundTransparency = 1;
|
||||
versionLabel.Font = "Arial";
|
||||
versionLabel.FontSize = "Size24";
|
||||
versionLabel.TextXAlignment = "Left";
|
||||
versionLabel.TextTransparency = 0.5;
|
||||
versionLabel.TextColor3 = Color3.new(0.85, 0.85, 0.85)
|
||||
versionLabel.ZIndex = 10;
|
||||
local versionLabelShadow = versionLabel:Clone();
|
||||
versionLabelShadow.Name = "VersionLabelShadow";
|
||||
versionLabelShadow.TextColor3 = Color3.new(0, 0, 0);
|
||||
versionLabelShadow.TextTransparency = 0.9;
|
||||
versionLabelShadow.Position = UDim2.new(0, 2, 0, 2);
|
||||
versionLabelShadow.Parent = versionLabel;
|
||||
versionLabel.Parent = uiBase;
|
||||
versionLabelShadow.ZIndex = 9;
|
||||
|
||||
versionLabel.MouseEnter:connect(function()
|
||||
versionLabel.TextTransparency = 0.1;
|
||||
versionLabelShadow.TextTransparency = 0.6;
|
||||
end)
|
||||
versionLabel.MouseLeave:connect(function()
|
||||
versionLabel.TextTransparency = 0.5;
|
||||
versionLabelShadow.TextTransparency = 0.9;
|
||||
end)
|
||||
end
|
||||
Loading…
Reference in New Issue