Create main.lua

This commit is contained in:
blocco 2013-06-29 05:44:47 -04:00
parent e1453d22fa
commit 061f24db9f
1 changed files with 128 additions and 0 deletions

128
rpui/main.lua Normal file
View File

@ -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