Advertisement
V3rmLua33

Safe guard

Jan 31st, 2015
343
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. --SafeGuard Version 1.1.0 rewrite 3 Development Build 4
  2. local licenseKey = "105s106c106o107t107t103k106i105d"
  3. local g = game
  4. local plyrs = g:service("Players")
  5. local ws = g:service("Workspace")
  6. local lg = g:service("Lighting")
  7. local sgu = g:service("StarterGui")
  8. local sp = g:service("StarterPack")
  9. local d = g:service("Debris")
  10. local ss = g:service("SoundService")
  11. local sc = g:service("ScriptContext")
  12.  
  13. if not script then
  14.     local h = Instance.new("Message",Workspace)
  15.     h.Text = "SafeGuard 1.1.0 rw3 FATAL ERROR | script is undefined!"
  16.     wait(4)
  17.     h:destroy()
  18. end
  19.  
  20. local s = script
  21. local sbk = script
  22.  
  23. if shared.SG_GENV == nil then
  24.     shared.SG_GENV = {}
  25.     shared.SG_GENV.math = math
  26.     shared.SG_GENV.string = string
  27.     shared.SG_GENV.table = table
  28.     shared.SG_GENV.game = game
  29. end
  30.  
  31. math = shared.SG_GENV.math
  32. string = shared.SG_GENV.string
  33. table = shared.SG_GENV.table
  34.  
  35. if not script.Parent == nil then wait(.5) script:destroy() end
  36. wait(1)
  37.  
  38. sg = {}
  39. sg.Functions = {}
  40. sg.Settings = {}
  41. sg.Data = {}
  42. sg.EmergeControl = {}
  43. sg.Services = {}
  44. sg.Commands = {}
  45. sg.Modules = {}
  46. sg.Players = {}
  47. sg.Sounds = {
  48.     ["Beep"] = "http://www.roblox.com/asset/?id=15666462",
  49.     ["Five"] = "http://www.roblox.com/asset/?id=29445395",
  50.     ["Four"] = "http://www.roblox.com/asset/?id=29445378",
  51.     ["Three"] = "http://www.roblox.com/asset/?id=29445358",
  52.     ["Two"] = "http://www.roblox.com/asset/?id=29445339",
  53.     ["One"] = "http://www.roblox.com/asset/?id=29445305"}
  54. sg.Init = {}
  55.  
  56. sg.Settings.ProtectedUnit = "scottkid"
  57. sg.Settings.Service = "disabled"
  58. sg.Settings.EmergeControl = "disabled"
  59. sg.Settings.sysActivated = "check"
  60. sg.Settings.sysCreators = {}
  61. sg.Settings.MaxNumOfNotifications = 8
  62. sg.Settings.NotificationsEnabled = true
  63. sg.Settings.BreakLoop = false
  64.  
  65. sg.Data.curVer = "1.1.0 rw3"
  66. sg.Data.NotAllowed = {"ikiled"}
  67. sg.Data.UpdateModels = {}
  68. sg.Data.LoadedScript = {}
  69. sg.Data.Services = {"BadgeService","CoreGui","StarterGui","ChangeHistoryService","Chat","CollectionService","ContentFilter","ContentProvider","ControllerService","Debris","FlagStandService","FriendService","Geometry","GuiService","GuidRegistryService","InsertService","Lighting","LocalBackpack","MeshContentProvider","NetworkClient","NetworkServer","Workspace","PhysicsService","RunService","ScriptContext","ScriptInformationProvider","Selection","SocialService","SoundService","SpawnerService","Stats","StarterPack","Teams","TeleportService","TextService","Timer","VirtualUser","Visit","RenderHooksService"}
  70. sg.Data.UpdateModuleAsset = nil
  71. sg.Data.AccessDenied = "Access Denied to "..sg.Data.curVer.." instance! | Code used - "
  72. sg.Data.AccessCode = "access1234"
  73. sg.Data.LastUpdatedNum = 1369011221
  74. sg.Data.LastUpdatedInfo = {
  75.     ["Minutes"] = math.floor(sg.Data.LastUpdatedNum/(60)),
  76.     ["Hours"] = math.floor(sg.Data.LastUpdatedNum/(60*60)),
  77.     ["Days"] = math.floor(sg.Data.LastUpdatedNum/(60*60*24))
  78. }
  79. sg.Data.PermissionLevels = {
  80.     ["System"] = 5,
  81.     ["Administrator"] = 4,
  82.     ["Moderator"] = 3,
  83.     ["Trusted User"] = 2,
  84.     ["User"] = 1,
  85.     ["Unprivildged User"] = 0,
  86.     ["Banned"] = -1
  87. }
  88.  
  89. sg.Preregistered = {
  90.     ["iiXynx"] = "Administrator",
  91.     ["chucky4523"] = "Administrator"
  92. }
  93.  
  94.  
  95.  
  96. setmetatable(sg,{__call = function() return script end})
  97. sg.Functions.AddNewScript = function(ins)
  98.     if ins == script then return end
  99.     if ins:isA"Script" or ins:isA"LocalScript" then
  100.         if not ins:findFirstChild("DSource") then return end
  101.         sg.Data.LoadedScript[ins.Name] = ins
  102.         sg.Functions.gNotification("New Script "..ins:GetFullName().." was added to the database!")
  103.     end
  104. end
  105.  
  106. game.DescendantAdded:connect(sg.Functions.AddNewScript)
  107.  
  108. sg.Functions.AntiChange = function(p)
  109.     if p == "Parent" then
  110.         script:destroy()
  111.         script.Changed:connect(sg.Functions.AntiChange)
  112.         pcall(function() sg.Functions.ReconnectConnections() end)
  113.     elseif p == "Disabled" then
  114.         script.Disabled = false
  115.     else
  116.         script.Archivable = false
  117.         script.Name = "SafeGuard "..sg.Data.curVer
  118.     end
  119. end
  120.  
  121. sg.Functions.AntiRemove = function(i)
  122.     if i == script then
  123.         script:destroy()
  124.         script.Changed:connect(sg.Functions.AntiRemove)
  125.         pcall(function() sg.Functions.ReconnectConnections() end)
  126.     end
  127. end
  128.  
  129. sg.Functions.ReconnectConnections = function()
  130.     for i,v in pairs(plyrs:GetPlayers()) do
  131.         coroutine.wrap(function()
  132.             pcall(function()
  133.                 while v.PlayerGui["SafeGuard_GUI"]["Msg"] do
  134.                     v.PlayerGui["SafeGuard_GUI"]["Msg"]:destroy()
  135.                 end
  136.             end)
  137.         end)()
  138.         coroutine.wrap(function()
  139.             pcall(function()
  140.                 v.Chatted:connect(function(chat,ins) sg.Functions.OnChatted(chat,v) end)
  141.             end)
  142.         end)()
  143.         coroutine.wrap(function()
  144.             pcall(function() v.PlayerGui["SafeGuard_GUI"]:destroy() end)
  145.             local a = Instance.new("ScreenGui",v.PlayerGui)
  146.             a.Name = "SafeGuard_GUI"
  147.         end)()
  148.         wait()
  149.         sg.Functions.Notification(v,"Your connections were reconnected!")
  150.     end
  151.     plyrs.PlayerAdded:connect(function(p) sg.Functions.RegisterPlayer(p,1) end)
  152. end
  153.  
  154. script.Changed:connect(sg.Functions.AntiChange)
  155. script.Parent.DescendantRemoving:connect(sg.Functions.AntiRemove)
  156.  
  157. sg.Functions.PlaySound = function(soundName)
  158.     if not sg.Sounds[soundName] then return end
  159.     if not ws[soundName] then
  160.         local s = Instance.new("Sound",ws)
  161.         s.Name = soundName
  162.         s.SoundId = sg.Sounds[soundName]
  163.         s.Volume = 1
  164.         s.Pitch = 1
  165.     end
  166.     wait()
  167.     if not ws[soundName] then return end
  168.     pcall(function() ws[soundName]:play() end)
  169. end
  170.  
  171. sg.Functions.TripleBeep = function()
  172.     coroutine.wrap(function()
  173.         for i=1,3 do
  174.             pcall(function() sg.Functions.PlaySound("Beep") end)
  175.             wait(.1)
  176.         end
  177.     end)()
  178. end
  179.  
  180. sg.Functions.CountDown = function()
  181.     coroutine.wrap(function()
  182.         sg.Functions.PlaySound("Five")
  183.         wait(1)
  184.         sg.Functions.PlaySound("Four")
  185.         wait(1)
  186.         sg.Functions.PlaySound("Three")
  187.         wait(1)
  188.         sg.Functions.PlaySound("Two")
  189.         wait(1)
  190.         sg.Functions.PlaySound("One")
  191.         wait(1)
  192.     end)()
  193. end
  194.  
  195. sg.Functions.CreateModule = function(moduleName,loadFunction,unloadFunction,permissionLevel,description)
  196.     sg.Modules[moduleName] = {
  197.         ["Load"] = loadFunction,
  198.         ["Unload"] = unloadFunction,
  199.         ["PermissionLevel"] = permissionLevel,
  200.         ["Description"] = description,
  201.     ["Call"] = {}}
  202.     if not sg.Modules[moduleName] then sg.Functions.gNotification("Failed to create module "..moduleName.."!") return end
  203. end
  204.  
  205. sg.Functions.LoadModule = function(moduleName)
  206.     local modu = sg.Functions.GetModule(moduleName)
  207.     if not modu then return end
  208.     Func,Error = loadstring(modu:Load(modu.Call))
  209.     setfenv(Func,{__ENV = getfenv(1)})
  210. end
  211.  
  212.    
  213.  
  214. sg.Functions.GetModule = function(moduleName)
  215.     if not sg.Modules[moduleName] then sg.Functions.gNotification("Couldn't find Module "..moduleName.."!") return end
  216.     return sg.Modules[moduleName]
  217. end
  218.  
  219. sg.Functions.AddCommand = function(commandName,commandChat,callFunc,permissionRequirement,description)
  220.     sg.Commands[commandName] = {
  221.         ["CommandName"] = commandName,
  222.         ["CommandChatCall"] = commandChat,
  223.         ["CommandFunction"] = callFunc,
  224.         ["CommandPermissionRequirement"] = permissionRequirement,
  225.     ["CommandDescription"] = description}
  226.     if not sg.Commands[commandName] then
  227.         sg.Functions.gNotification("Unable to add command "..commandName.."!")
  228.     end
  229. end
  230.  
  231. sg.Functions.GetCommand = function(commandName)
  232.     if not sg.Commands[commandName] then return "NONEXISTANT_COMMAND" end
  233.     return sg.Commands[commandName]
  234. end
  235.  
  236. sg.Functions.SandboxLoadstring = function(Source)
  237.     local Func = loadstring(Source or "")
  238.     setfenv(Func,{___ENV = getfenv(1)})
  239.     return coroutine.wrap(Func)
  240. end
  241.  
  242. sg.Functions.Loadstring = function(source,Speaker)
  243.     local Func,error = loadstring(source)
  244.     if error == nil then
  245.         coroutine.wrap(function()
  246.             Func()
  247.         end)()
  248.         sg.Functions.Notification(Speaker,"QuickScript successful!")
  249.     else
  250.         sg.Functions.Notification(Speaker,"QuickScript failed! ERROR - "..tostring(error))
  251.     end
  252. end
  253.  
  254. sg.Functions.GetMaxScreenSize = function(player)
  255.     if not player:FindFirstChild("PlayerGui") then
  256.         pcall(function()
  257.             Instance.new("PlayerGui",player)
  258.         end)
  259.         pcall(function()
  260.             local a = Instance.new("ScreenGui",player["PlayerGui"])
  261.             a.Name = "SafeGuard_GUI"
  262.         end)
  263.     end
  264.     if not player:FindFirstChild("PlayerGui") then return end
  265.     if not player["PlayerGui"]:findFirstChild("SafeGuard_GUI") then
  266.         pcall(function()
  267.             local a = Instance.new("ScreenGui",player["PlayerGui"])
  268.             a.Name = "SafeGuard_GUI"
  269.         end)
  270.     end
  271.     if not player["PlayerGui"]:FindFirstChild("SafeGuard_GUI") then return end
  272.     local sg = player["PlayerGui"]["SafeGuard_GUI"]
  273.     local frame = Instance.new("Frame",sg)
  274.     frame.Visible = false
  275.     frame.Size = UDim2.new(1,0,1,0)
  276.     local maxSize = frame.AbsoluteSize
  277.     frame:destroy()
  278.     print(maxSize)
  279.     return mmaxSize
  280. end    
  281.  
  282. sg.Functions.GetMaxScreenPosition = function(player)
  283.     if not player:FindFirstChild("PlayerGui") then
  284.         pcall(function()
  285.             Instance.new("PlayerGui",player)
  286.         end)
  287.         pcall(function()
  288.             local a = Instance.new("ScreenGui",player["PlayerGui"])
  289.             a.Name = "SafeGuard_GUI"
  290.         end)
  291.     end
  292.     if not player:FindFirstChild("PlayerGui") then return end
  293.     if not player["PlayerGui"]:findFirstChild("SafeGuard_GUI") then
  294.         pcall(function()
  295.             local a = Instance.new("ScreenGui",player["PlayerGui"])
  296.             a.Name = "SafeGuard_GUI"
  297.         end)
  298.     end
  299.     if not player["PlayerGui"]:FindFirstChild("SafeGuard_GUI") then return end
  300.     local sg = player["PlayerGui"]["SafeGuard_GUI"]
  301.     local frame = Instance.new("Frame",sg)
  302.     frame.Visible = false
  303.     frame.Position = UDim2.new(1,0,1,0)
  304.     local maxPosition = frame.AbsolutePosition
  305.     frame:destroy()
  306.     print(maxPosition)
  307.     return maxPosition
  308. end    
  309.  
  310.  
  311. sg.Functions.RegisterPlayer = function(player,playerPermissionLevel)
  312.     if player.Name == sg.Settings.ProtectedUnit then playerPermissionLevel = "Administrator" end
  313.     if sg.Preregistered[player.Name] then playerPermissionLevel = sg.Preregistered[player.Name] end
  314.     if sg.Players[player.Name] then
  315.         sg.Players[player.Name]["PlayerInstance"] = player
  316.         coroutine.wrap(function()
  317.             pcall(function() player["PlayerGui"]["SafeGuard_GUI"]:destroy() end)
  318.             pcall(function() local a = Instance.new("ScreenGui",player.PlayerGui) a.Name = "SafeGuard_GUI" end)
  319.         end)()
  320.         if sg.Functions.CheckIfBanned(player.Name) then return end
  321.         sg.Functions.CheckScriptingAllowed(player.Name)
  322.         if pcall(function() player.Chatted:connect(function(chat,ins) sg.Functions.OnChatted(chat,player) end) end) then
  323.             sg.Functions.gNotification("Welcome back "..player.Name.."!")
  324.         else
  325.             sg.Functions.gNotification("Welcome back "..player.Name.."!")
  326.             sg.Functions.Notification("It appears we failed to connect your commands! Please report this to SafeGuardAB!")
  327.         end
  328.         return
  329.     end    
  330.     sg.Players[player.Name] = {
  331.         ["PlayerInstance"] = player,
  332.         ["PlayerName"] = player.Name,
  333.         ["PlayerFullName"] = player:GetFullName(),
  334.         ["PermissionLevel"] = sg.Data.PermissionLevels[playerPermissionLevel],
  335.         ["UserID"] = player.userId,
  336.         ["isBanned"] = false,
  337.         ["scriptingAllowed"] = true,
  338.         ["MaxUDim2Size"] = sg.Functions.GetMaxScreenSize(player),
  339.         ["MaxUDim2Position"] = sg.Functions.GetMaxScreenPosition(player)}
  340.         if not sg.Players[player.Name] then
  341.             sg.Functions.gNotification("Failed to create Player Index for Player "..player.Name.."!")
  342.             sg.Functions.Notification(player,"I was unable to create your Registeration. Please report this error to SafeGuardAB!")
  343.             wait(3)
  344.             player:destroy()
  345.         else
  346.             if sg.Functions.CheckIfBanned(player.Name) then return end
  347.             sg.Functions.gNotification("Everyone welcome "..player.Name.." to the server!")
  348.             sg.Functions.Notification(player,"SafeGuard has successfully registered you! Your permission level is "..sg.Players[player.Name].PermissionLevel.."!")
  349.             wait(3)
  350.             sg.Functions.Notification(player,"Connecting your Commands...")
  351.             if pcall(function() player.Chatted:connect(function(chat,ins) sg.Functions.OnChatted(chat,player) end) end) == false then
  352.                 sg.Functions.Notification(player,"Failed to connect your commands! Please report this error to SafeGuardAB!")
  353.             else
  354.                 sg.Functions.Notification(player,"Your commands were connected successfully! Permission Level - "..sg.Players[player.Name]["PermissionLevel"]..". |")
  355.             end
  356.         end
  357. end
  358.  
  359. sg.Functions.GetPlayer = function(playerName)
  360.     if not sg.Players[playerName] then return "NONEXISTANT_PLAYER" end
  361.     return sg.Players[playerName]
  362. end
  363.  
  364. sg.Functions.GetPlayerInstance = function(playerName)
  365.     if not sg.Players[playerName] then return "NONEXISTANT_PLAYER" end
  366.     return sg.Players[playerName].PlayerInstance
  367. end
  368.  
  369. sg.Functions.CheckIfBanned = function(playerName)
  370.     local p = sg.Functions.GetPlayer(playerName)
  371.     if p == "NONEXISTANT_PLAYER" then
  372.         for i,v in pairs(sg.Data.NotAllowed) do
  373.             if v:lower() == playerName:lower() then
  374.                 return true
  375.             end
  376.         end
  377.     end
  378.     if p.isBanned == true then
  379.         ypcall(function() plyrs:findFirstChild(p["PlayerName"]):destroy() end)
  380.         sg.Functions.gNotification("Player "..p["PlayerName"].." is banned from this server!")
  381.         return true
  382.     else
  383.         return false
  384.     end
  385. end
  386.            
  387. sg.Functions.gNotification = function(message)
  388.     if sg.Settings.NotificationsEnabled == false then return end
  389.     --sg.Functions.TripleBeep()
  390.         for i,v in pairs(plyrs:GetChildren()) do
  391.             if not v:findFirstChild("PlayerGui") then pcall(function() Instance.new("PlayerGui",v) end) end
  392.             if not v:findFirstChild("PlayerGui") then return end
  393.             if not v["PlayerGui"]:findFirstChild("SafeGuard_GUI") then local a = Instance.new("ScreenGui",v.PlayerGui) a.Name = "SafeGuard_GUI" end
  394.             if not v["PlayerGui"]:findFirstChild("SafeGuard_GUI") then return end
  395.             if not v.PlayerGui["SafeGuard_GUI"]:findFirstChild("MsgFrame") then local b = Instance.new("Frame",v.PlayerGui["SafeGuard_GUI"]) b.Name = "MsgFrame" end
  396.             if not v.PlayerGui["SafeGuard_GUI"]:findFirstChild("MsgFrame") then return end
  397.         coroutine.wrap(function()
  398.             local pro = sg.Functions.GetPlayer(v.Name)
  399.             if pro == "NONEXISTANT_PLAYER" then return end
  400.             local gui = v["PlayerGui"]["SafeGuard_GUI"]["MsgFrame"]
  401.             local f = Instance.new("Frame",gui)
  402.             f.Name = "Msg"
  403.             f.ZIndex = 7
  404.             f.Visible = false
  405.             local t = Instance.new("TextButton",f)
  406.             t.Name = "MessageBox"
  407.             t.Text = "SafeGuard "..sg.Data.curVer.." | "..tostring(message)
  408.             t.FontSize = "Size12"
  409.             f.Visible = false
  410.             f.ZIndex = 7
  411.             t.TextWrap = true
  412.             t.Size = UDim2.new(0,1000,0,50)
  413.             f.Position = UDim2.new(0,0,0,-51)
  414.             f.Visible = true
  415.             local Clicked = false
  416.             local mouseOver = false    
  417.             coroutine.wrap(function()
  418.                 t.MouseEnter:connect(function()
  419.                     mouseOver = true
  420.                     t.BackgroundColor3 = BrickColor.new("Bright red").Color
  421.                     t.Text = "Click to dismiss!"
  422.                 end)
  423.                 t.MouseLeave:connect(function()
  424.                     mouseOver = false
  425.                     t.BackgroundColor3 = BrickColor.new("Medium stone grey").Color
  426.                     t.Text = "SafeGuard "..sg.Data.curVer.." | "..tostring(message)
  427.                 end)                       
  428.             end)()
  429.             t.MouseButton1Click:connect(function()
  430.                 Clicked = true
  431.                 t.Text = ""
  432.                 t:TweenPosition(UDim2.new(0,0,0,-51),"Out","Quad",1.5)
  433.                 for i=1,10 do
  434.                     t.BackgroundTransparency = t.BackgroundTransparency + .1
  435.                     wait(.01)
  436.                 end
  437.                 wait()
  438.                 f:destroy()
  439.             end)
  440.             coroutine.wrap(function()
  441.                 local ins = #gui:GetChildren()
  442.                 if ins <= sg.Settings.MaxNumOfNotifications then
  443.                     local t = 50*ins+300
  444.                     f:TweenPosition(UDim2.new(0,0,0,t))
  445.                 else
  446.                     f:destroy()
  447.                     print("Too many")
  448.                 end
  449.             end)()             
  450.             coroutine.wrap(function()
  451.                 wait(8)
  452.                 while wait() do
  453.                     if mouseOver == false then 
  454.                         t.BackgroundColor3 = BrickColor.new("Bright red").Color
  455.                         t.Text = "Click to dismiss!"
  456.                         wait(1.5)
  457.                         t.BackgroundColor3 = BrickColor.new("Medium stone grey").Color
  458.                         t.Text = "SafeGuard "..sg.Data.curVer.." | "..tostring(message)
  459.                         wait(3)
  460.                     end
  461.                 end
  462.             end)()
  463.         end)()
  464.         end
  465. end
  466.  
  467.  
  468.  
  469. sg.Functions.Notification = function(v,message)
  470.     if pcall(function() v:findFirstChild("PlayerGui") end) == false then return end
  471.         if not v:findFirstChild("PlayerGui") then pcall(function() Instance.new("PlayerGui",v) end) end
  472.         if not v:findFirstChild("PlayerGui") then return end
  473.         if not v["PlayerGui"]:findFirstChild("SafeGuard_GUI") then local a = Instance.new("ScreenGui",v.PlayerGui) a.Name = "SafeGuard_GUI" end
  474.         if not v["PlayerGui"]:findFirstChild("SafeGuard_GUI") then return end
  475.         if not v.PlayerGui["SafeGuard_GUI"]:findFirstChild("MsgFrame") then local b = Instance.new("Frame",v.PlayerGui["SafeGuard_GUI"]) b.Name = "MsgFrame" end
  476.         if not v.PlayerGui["SafeGuard_GUI"]:findFirstChild("MsgFrame") then return end
  477.         coroutine.wrap(function()
  478.             local gui = v["PlayerGui"]["SafeGuard_GUI"]["MsgFrame"]
  479.             local f = Instance.new("Frame",gui)
  480.             f.Name = "Msg"
  481.             f.ZIndex = 7
  482.             f.Visible = false
  483.             local t = Instance.new("TextButton",f)
  484.             t.Name = "MessageBox"
  485.             t.Text = "SafeGuard "..sg.Data.curVer.." | "..tostring(message)
  486.             t.FontSize = "Size12"
  487.             f.Visible = false
  488.             f.ZIndex = 7
  489.             t.TextWrap = true
  490.             t.Size = UDim2.new(0,1000,0,50)
  491.             f.Position = UDim2.new(0,0,0,-51)
  492.             f.Position = UDim2.new(0,0,0,-51)
  493.             f.Visible = true
  494.             local Clicked = false
  495.             local mouseOver = false    
  496.             coroutine.wrap(function()
  497.                 t.MouseEnter:connect(function()
  498.                     mouseOver = true
  499.                     t.BackgroundColor3 = BrickColor.new("Bright red").Color
  500.                     t.Text = "Click to dismiss!"
  501.                 end)
  502.                 t.MouseLeave:connect(function()
  503.                     mouseOver = false
  504.                     t.BackgroundColor3 = BrickColor.new("Medium stone grey").Color
  505.                     t.Text = "SafeGuard "..sg.Data.curVer.." | "..tostring(message)
  506.                 end)                       
  507.             end)()
  508.             t.MouseButton1Click:connect(function()
  509.                 Clicked = true
  510.                 t.Text = ""
  511.                 t:TweenPosition(UDim2.new(0,0,0,-51),"Out","Quad",1.5)
  512.                 for i=1,10 do
  513.                     t.BackgroundTransparency = t.BackgroundTransparency + .1
  514.                     wait(.01)
  515.                 end
  516.                 wait()
  517.                 f:destroy()
  518.             end)
  519.             coroutine.wrap(function()
  520.                 local ins = #gui:GetChildren()
  521.                 if ins <= sg.Settings.MaxNumOfNotifications then
  522.                     local t = 50*ins+300
  523.                     f:TweenPosition(UDim2.new(0,0,0,t))
  524.                 else
  525.                     f:destroy()
  526.                     print("Too many")
  527.                 end
  528.             end)()                     
  529.             coroutine.wrap(function()
  530.                 wait(8)
  531.                 while wait() do
  532.                     if mouseOver == false then 
  533.                         t.BackgroundColor3 = BrickColor.new("Bright red").Color
  534.                         t.Text = "Click to dismiss!"
  535.                         wait(1.5)
  536.                         t.BackgroundColor3 = BrickColor.new("Medium stone grey").Color
  537.                         t.Text = "SafeGuard "..sg.Data.curVer.." | "..tostring(message)
  538.                         wait(3)
  539.                     end
  540.                 end
  541.             end)()
  542.         end)()
  543. end
  544.  
  545.  
  546. sg.Functions.DismissNotifications = function()
  547.     for i,v in pairs(sg.Players) do
  548.         coroutine.wrap(function() pcall(function()
  549.             for i,v in pairs(v.PlayerInstance.PlayerGui["SafeGuard_GUI"]:GetChildren()) do
  550.                 if v.Name == "Msg" then
  551.                     v:destroy()
  552.                 end
  553.             end
  554.         end) end)()
  555.     end
  556. end
  557.  
  558. sg.Functions.FindProtected = function()
  559.     local p = plyrs:FindFirstChild(sg.Settings.ProtectedUnit)
  560.     if not p then return false end
  561.     if not p:isA"Player" then return false
  562.     else
  563.         return true
  564.     end
  565. end
  566.  
  567. sg.Functions.ProtectionRun = function()
  568.     local timeLeft = 30
  569.     if sg.Settings.Service == "disabled" then return end
  570.     --We will add EmergeControl later on.
  571.     if not sg.Functions.FindProtected() then
  572.         sg.Functions.CreateGlobalMessageBox()
  573.             sg.Functions.UpdateGlobalMessage("Could not find Protected Player "..sg.Settings.ProtectedUnit.."!")
  574.             wait(1)
  575.             wait(1)
  576.             wait(1)
  577.         while not sg.Functions.FindProtected() do
  578.             if timeLeft == 5 then sg.Functions.CountDown() end
  579.             if timeLeft >= 0 then
  580.                 sg.Functions.UpdateGlobalMessage(timeLeft.." second(s) until cleaning server and removing ScriptBuilder!")
  581.                 wait(1)
  582.                 timeLeft = timeLeft - 1
  583.             else
  584.                 break
  585.             end
  586.         end
  587.         if not sg.Functions.FindProtected() then
  588.             sg.Functions.UpdateGlobalMessage("Cleaning server and removing ScriptBuilder...")
  589.             for i,v in pairs(plyrs:GetPlayers()) do
  590.                 coroutine.wrap(function()
  591.                     pcall(function() sg.Functions.noSB(v) end)
  592.                 end)()
  593.             end
  594.             pcall(function() sg.Functions.CleanGame() end)
  595.         else
  596.             sg.Settings.BreakLoop = true
  597.             sg.Functions.UpdateGlobalMessage("Found Protected Player "..sg.Settings.ProtectedUnit.."!")
  598.             wait(3)
  599.             sg.Functions.UpdateGlobalMessage("System returning to idle!")
  600.             wait(2)
  601.             sg.Functions.DismissGlobalMessage()
  602.         end
  603.         timeLeft = 240
  604.         while not sg.Functions.ProtectedUnit() do
  605.             if timeLeft == 5 then sg.Functions.CountDown() end
  606.             if timeLeft >= 0 then
  607.                 sg.Functions.UpdateGlobalMessage(timeLeft.." second(s) until SHUTDOWN!")
  608.                 wait(1)
  609.                 timeLeft = timeLeft - 1
  610.             else
  611.                 break
  612.             end
  613.         end
  614.         if not sg.Functions.ProtectedUnit() then
  615.             sg.Functions.UpdateGlobalMessage("EXECUTING SERVER SHUTDOWN!")
  616.             wait(2)
  617.             Instance.new("Manu"..tostring("al").."Surfa"..tostring("ceJoint").."Instance",ws)
  618.         else
  619.             sg.Settings.BreakLoop = true
  620.             sg.Functions.UpdateGlobalMessage("Found Protected Player "..sg.Settings.ProtectedUnit.."!")
  621.             wait(3)
  622.             sg.Functions.UpdateGlobalMessage("System returning to idle!")
  623.             wait(2)
  624.             sg.Functions.DismissGlobalMessage()
  625.         end
  626.     end
  627. end        
  628.  
  629. sg.Functions.CleanGame = function()
  630.     if #sg.Data.LoadedScripts == 0 then return end
  631.     for i,v in pairs(sg.Data.LoadedScripts) do
  632.         v.Disabled = true
  633.         v:destroy()
  634.     end
  635. end
  636.  
  637. sg.Functions.noSB = function(v)
  638.     if not v then return end
  639.     coroutine.wrap(function()
  640.         while wait(.5) do
  641.             if sg.Settings.BreakLoop == true then break end
  642.             ypcall(function() v["PlayerGui"]["SBGUI"]:destroy() end)
  643.             pcall(function()
  644.                 v.DescendantAdded:connect(function(a)
  645.                     if a.Name == "SBGUI" then
  646.                         a:destroy()
  647.                     end
  648.                 end)
  649.             end)
  650.         end
  651.     end)()
  652. end
  653.  
  654. sg.Functions.CreateMessageBox = function(pl,title,msg)
  655.     local p = sg.Functions.GetPlayer(pl)
  656.     if title == nil then title = "SafeGuard Global Message" end
  657.     if msg == nil then msg = "Waiting for Update..." end
  658.     if not p then return end
  659.     if not p["PlayerInstance"] then return end
  660.     if not p["PlayerInstance"]:findFirstChild("PlayerGui") then pcall(function() Instance.new("PlayerGui",p["PlayerInstance"]) end) end
  661.     if not p["PlayerInstance"]:findFirstChild("PlayerGui") then return end
  662.     if not p["PlayerInstance"]["PlayerGui"]:findFirstChild("SafeGuard_GUI") then Instance.new("ScreenGui",p["PlayerInstance"]["PlayerGui"]).Name = "SafeGuard_GUI" end
  663.     if not p["PlayerInstance"]["PlayerGui"]:findFirstChild("SafeGuard_GUI") then return end
  664.     local sg = p["PlayerInstance"]["PlayerGui"]["SafeGuard_GUI"]
  665.     local f = Instance.new("Frame",sg)
  666.     f.Name = "SMsg"
  667.     f.Visible = false
  668.     local title = Instance.new("TextLabel",f)
  669.     title.Name = title
  670.     local box = Instance.new("TextLabel",f)
  671.     box.Name = "Box"
  672.     title.Position = UDim2.new(0,-600,0,-250)
  673.     title.Size = UDim2.new(0,600,0,50)
  674.     box.Position = UDim2.new(0,-600,0,-300)
  675.     box.Size = UDim2.new(0,600,0,100)
  676.     title.FontSize = "Size18"
  677.     box.FontSize = "Size14"
  678.     box.TextWrap = true
  679.     f.Visible = true
  680.     box:TweenPosition(UDim2.new(0,0,0,200))
  681.     title:TweenPosition(UDim2.new(0,0,0,150))
  682.     title.Text = tostring(title)
  683.     box.Text = tostring(msg)
  684. end
  685.  
  686. sg.Functions.CheckScriptingAllowed = function(playerName)
  687.     local p = sg.Functions.GetPlayer(playerName)
  688.     if p == "NONEXISTANT_PLAYER" then return end
  689.     if p.ScriptingAllowed == false then
  690.         p["PlayerInstance"].DescendantAdded:connect(function(ins)
  691.             if p["PlayerInstance"].ScriptingAllowed == true then return end
  692.             if ins:isA"Script" or ins:isA"LocalScript" then
  693.                 if not ins:findFirstChild("DSource") then return end
  694.                 ins:destroy()
  695.             end
  696.         end)
  697.         sg.Functions.Notification(p.PlayerInstance,"You are not allowed to script!")
  698.     end
  699. end
  700.  
  701. sg.Functions.CreateGlobalMessageBox = function()
  702.     for i,v in pairs(plyrs:GetPlayers()) do
  703.         coroutine.wrap(function()
  704.             pcall(function() sg.Functions.CreateMessageBox(v.Name,nil,nil) end)
  705.             wait()
  706.         end)()
  707.     end
  708. end
  709.  
  710. sg.Functions.UpdateGlobalMessage = function(msg)
  711.     for i,v in pairs(plyrs:GetPlayers()) do
  712.         coroutine.wrap(function()
  713.             if not v:findFirstChild("PlayerGui") then sg.Functions.CreateMessageBox(v,nil,nil) end
  714.             if not v["PlayerGui"]:findFirstChild("SafeGuard_GUI") then sg.Functions.CreateMessageBox(v,nil,nil) wait() end
  715.             pcall(function() v["PlayerGui"]["SafeGuard_GUI"]["SMsg"]["Box"].Text = tostring(msg) end)
  716.         end)()
  717.     end
  718. end    
  719.  
  720. sg.Functions.DismissGlobalMessageBox = function()
  721.     for i,v in pairs(plyrs:GetPlayers()) do
  722.         coroutine.wrap(function()
  723.             pcall(function() v["PlayerGui"]["SafeGuard_GUI"]["SMsg"]:destroy() end)
  724.         end)()
  725.     end
  726. end
  727.  
  728. sg.Functions.LoadServices = function()
  729.     for i,v in pairs(sg.Data.Services) do
  730.         if pcall(function() sg.Services[v] = game:service(v) end) then
  731.             print("Loaded "..tostring(v).."!")
  732.         else
  733.             print("Failed to load "..tostring(v).."!")
  734.         end
  735.     end
  736. end
  737.  
  738. sg.Functions.GetSplit = function(msg)
  739.     return msg:find(";") or nil
  740. end
  741.  
  742. sg.Functions.GetPlayers = function(msg,speaker)
  743.     local pl = {}
  744.     if msg == nil or msg == "" then sg.Functions.Notification(speaker,"Invaild command!") return end
  745.     if msg == "all;" then
  746.         for i,v in pairs(plyrs:GetPlayers()) do
  747.             pl[#pl+1] = v
  748.         end
  749.     elseif msg == "others;" then
  750.         for i,v in pairs(plyrs:GetPlayers()) do
  751.             if not v == speaker then
  752.                 pl[#pl+1] = v
  753.             end
  754.         end
  755.     else
  756.         for i,v in pairs(plyrs:GetChildren()) do
  757.             if string.match(v.Name:sub(1,msg:len()):lower(),msg) then
  758.                 pl[#pl+1] = v
  759.                 break
  760.             end
  761.         end
  762.     end
  763.     return pl
  764. end
  765.  
  766. sg.Functions.OnChatted = function(msg,speaker)
  767.     if msg == nil then sg.Functions.gNotification("Could not process command! The message didn't exist!") return end
  768.     if speaker == nil then sg.Functions.gNotification("How did we get a command but no speaker? Well, that just happened. =/") return end
  769.     local c = msg:lower()
  770.     plyr = sg.Functions.GetPlayer(speaker.Name)
  771.     if plyr == "NONEXISTANT_PLAYER" then sg.Functions.gNotification("Attempted to use variable plyr (A nil value)") return end
  772.     if c:sub(1,5) == "sudo;" then
  773.         if plyr.PermissionLevel >= sg.Data.PermissionLevels.Administrator then
  774.             for i,v in pairs(sg.Commands) do
  775.                 if c:sub(6,v.CommandChatCall:len()+7) == v.CommandChatCall..";" then
  776.                     if v.CommandPermissionRequirement > sg.Data.PermissionLevels.Administrator then
  777.                         local Ran,Error = coroutine.resume(coroutine.create(function()
  778.                             v.CommandFunction(msg:sub(v.CommandChatCall:len()+13),speaker)
  779.                         end))
  780.                         if not Ran then
  781.                             sg.Functions.Notification(speaker,"An error occured - "..tostring(Error).." |")
  782.                         end
  783.                         if Error then
  784.                             sg.Functions.Notification(speaker,"An error occured - "..tostring(Error).." |")
  785.                         end
  786.                         break
  787.                     else
  788.                         sg.Functions.Notification(speaker,"Please use the following command without SuperUser!")
  789.                     end
  790.                 end
  791.             end
  792.         else
  793.             sg.Functions.Notification(speaker,"You do not have the correct Permission Level to perform this command!")
  794.             if plyr.PermissionLevel == 4 then
  795.                 sg.Functions.Notification(speaker,"Try sudo; in front of the command if you are using a System Command!")
  796.             end
  797.         end
  798.     else
  799.         for i,v in pairs(sg.Commands) do
  800.             if c:sub(1,v.CommandChatCall:len()+1) == v.CommandChatCall:lower()..";" then
  801.                 if plyr.PermissionLevel >=  v.CommandPermissionRequirement then
  802.                     local Ran,Error = coroutine.resume(coroutine.create(function()
  803.                         v.CommandFunction(msg:sub(v.CommandChatCall:len()+2),speaker)
  804.                     end))
  805.                     if not Ran then
  806.                         sg.Functions.Notification(speaker,"An error occured - "..tostring(Error).." |")
  807.                     end
  808.                     if Error then
  809.                         sg.Functions.Notification(speaker,"An error occured - "..tostring(Error).." |")
  810.                     end
  811.                 else
  812.                     sg.Functions.Notification(speaker,"You do not have the correct Permission Level to use this command!")
  813.                     sg.Functions.Notification(speaker,"Required Level - "..v.CommandPermissionRequirement.." | Your Level - "..plyr.PermissionLevel.." |")
  814.                 end
  815.             end
  816.         end
  817.     end
  818. end
  819.  
  820. sg.Functions.AddCommand("System Status","sys;status",function(msg,speaker)
  821.     sg.Functions.Notification(speaker,"SafeGuard Version "..sg.Data.curVer.." | Protection Status - "..sg.Settings.Service:upper().." |")
  822. end,
  823. 1,"Defines the System Status")
  824.  
  825.  
  826. sg.Functions.AddCommand("Destroy SafeGuard","sys;destroy()",function(msg,speaker)
  827.     sg.Functions.Notification(speaker,"SafeGuard shutdown confirmed!")
  828.     wait(3)
  829.     sg.Functions.gNotification("SafeGuard "..sg.Data.curVer.." is shutting down!")
  830.     wait(3)
  831.     for i,v in pairs(plyrs:GetPlayers()) do
  832.         pcall(function() v.PlayerGui["SafeGuard_GUI"]:destroy() end)
  833.     end
  834.     sg = nil
  835.     script = nil
  836.     error("Shutdown Complete")
  837. end,
  838. 5,"Shutdowns SafeGuard")
  839.  
  840. sg.Functions.AddCommand("Toggle SafeGuard Service","sys;pro;on",function(msg,speaker)
  841.     if sg.Settings.Service == "disabled" then
  842.         sg.Settings.Service = "enabled"
  843.         sg.Functions.Notification(speaker,"SafeGuard Protection Service is now ENABLED!")
  844.     else
  845.         sg.Functions.Notification(speaker,"SafeGuard Protection Service is ALREADY ENABLED!")
  846.     end
  847. end,
  848. 5,"Enables SafeGuard Protection Service")
  849.  
  850. sg.Functions.AddCommand("Disabled SafeGuard Service","sys;pro;off",function(msg,speaker)
  851.     if sg.Settings.Service == "enabled" then
  852.         sg.Settings.Service = "disabled"
  853.         sg.Functions.Notification(speaker,"SafeGuard Protection Service is now DISABLED!")
  854.     else
  855.         sg.Functions.Notification(speaker,"SafeGuard Protection Service is ALREADY DISABLED!")
  856.     end
  857. end,
  858. 5,"Disables SafeGuard Protection Service")
  859.  
  860. sg.Functions.AddCommand("Respawn Player","pres",function(msg,speaker)
  861.     if msg == nil or msg == "" or msg == " " then sg.Functions.Notification(speaker,"Invaild Message! Please define a player!") return end
  862.     local tbl = sg.Functions.GetPlayers(msg,speaker)
  863.     if #tbl == 0 then sg.Functions.Notification(speaker,"No Players found!") return end
  864.     for i,v in pairs(tbl) do
  865.         v:LoadCharacter()
  866.     end
  867. end,
  868. 2,"Reloads the Player")
  869.  
  870. sg.Functions.AddCommand("Self Respawn","sres",function(msg,speaker)
  871.     speaker:LoadCharacter()
  872.     wait()
  873.     sg.Functions.Notification(speaker,"Your character was reloaded!")
  874. end,
  875. 1,"Reloads the speakers character")
  876.  
  877. sg.Functions.AddCommand("Clean Indexed Scripts","server;cleanindex",function(msg,speaker)
  878.     for i,v in pairs(sg.Data.LoadedScript) do
  879.         v.Disabled = true
  880.         v:destroy()
  881.     end
  882.     sg.Functions.Notification(speaker,"All indexed scripts clean!")
  883. end,
  884. 4,"Cleans and removes all indexed scripts!")
  885.  
  886. sg.Functions.AddCommand("Disable Indexed Scripts","server;disableindex",function(msg,speaker)
  887.     for i,v in pairs(sg.Data.LoadedScript) do
  888.         v.Disabled = true
  889.     end
  890.     sg.Functions.Notification(speaker,"All indexed scripts disabled!")
  891. end,
  892. 4,"Disables all indexed scripts!")
  893.  
  894. sg.Functions.AddCommand("Player Message","pmsg",function(msg,speaker)
  895.     sg.Functions.gNotification(speaker.Name.." - "..msg)
  896. end,
  897. 2,"Displays a global notification with the following message!")
  898.  
  899. sg.Functions.AddCommand("Lock Server Scripting","server;lock",function(msg,speaker)
  900.     if pcall(function() sc.ScriptsDisabled = true end) == false then
  901.         sg.Functions.Notification(speaker,"Failed to lock server! Cannot set ScriptsDisabled to true!")
  902.     else
  903.         sg.Functions.Notification(speaker,"Server locked successfully!")
  904.         sg.Functions.gNotification("Server is now locked. New scripts cannot run!")
  905.     end
  906. end,
  907. 4,"Prevents users from using scripts")
  908.  
  909. sg.Functions.AddCommand("Unlock Server Scripting","server;unlock",function(msg,speaker)
  910.     if pcall(function() sc.ScriptsDisabled = false end) == false then
  911.         sg.Functions.Notification(speaker,"Failed to unlock server! Cannot set ScriptsDisabled to false!")
  912.     else
  913.         sg.Functions.Notification(speaker,"Server locked successfully!")
  914.         sg.Functions.gNotification("Server is now unlocked. New scripts can run!")
  915.     end
  916. end,
  917. 4,"Allows users to use scripts")
  918.  
  919. sg.Functions.AddCommand("Ban Player","bp",function(msg,speaker)
  920.     if msg == nil or msg == "" then sg.Functions.Notification(speaker,"Please define a vaild message!") return end
  921.     local pn = nil
  922.     for i,v in pairs(plyrs:GetPlayers()) do
  923.         if v.Name:sub(1,msg:len()):lower() == msg:lower() then
  924.             pn = v.Name
  925.         end
  926.     end
  927.     if not pn then sg.Functions.Notification(speaker,"That player doesn't exist!") return end
  928.     local p = sg.Functions.GetPlayer(pn)
  929.     if p == "NONEXISTANT_PLAYER" then return end
  930.     if pcall(function() p.isBanned = true p.PlayerInstance:destroy() end) then
  931.         sg.Functions.Notification(speaker,"Player "..p.PlayerName.." was banned from this server!")
  932.     else
  933.         sg.Functions.Notification(speaker,"Failed to ban player "..p.PlayerName.."!")
  934.     end
  935. end,
  936. 4,"Bans player from the game.")
  937.  
  938. sg.Functions.AddCommand("Unban Player","ubp",function(msg,speaker)
  939.     if msg == nil or msg == "" then sg.Functions.Notification(speaker,"Please define a vaild player!") return end
  940.     local p = sg.Functions.GetPlayer(msg)
  941.     if p == "NONEXISTANT_PLAYER" then sg.Functions.Notification(speaker,"That player doesn't exist in the database!") return end
  942.     if p.isBanned == true then
  943.         p.isBanned = false
  944.         sg.Functions.Notification(speaker,"Player "..p.PlayerName.." is now unbanned from this server!")
  945.     else
  946.         sg.Functions.Notification(speaker,"That player isn't banned!")
  947.     end
  948. end,
  949. 4,"Unbans a Player from the server")
  950.  
  951. sg.Functions.AddCommand("Kick Player","kp",function(msg,speaker)
  952.     if msg == nil or msg == "" then sg.Functions.Notification(speaker,"Please define a vaild player!") return end
  953.     local name = nil
  954.     for i,v in pairs(plyrs:GetPlayers()) do
  955.         if v.Name:sub(1,msg:len()):lower() == msg:lower() then
  956.             name = v.Name
  957.         end
  958.     end
  959.     if not name then sg.Functions.Notification(speaker,"That player doesn't exist!") return end
  960.     local p = sg.Functions.GetPlayer(name)
  961.     if p == "NONEXISTANT_PLAYER" then sg.Functions.Notification(speaker,"That player doesn't exist in the database!") return end
  962.     if pcall(function() p.PlayerInstance:destroy() end) then
  963.         sg.Functions.Notification(speaker,p.PlayerName.." was removed from the server!")
  964.     else
  965.         sg.Functions.Notification(speaker,"Failed to remove "..p.PlayerName.."!")
  966.     end
  967. end,
  968. 3,"Kicks a player from the game.")
  969.  
  970.        
  971.  
  972. sg.Functions.LoadServices()
  973.  
  974. --Now to add commands!
  975.  
  976. --Initializing system services
  977. script.Name = "SafeGuard "..sg.Data.curVer
  978. shared.SafeGuard = {}
  979. if not type(shared.SafeGuard) == "table" then shared.SafeGuard = {} end
  980.  
  981. shared.SafeGuard.GetInstance = function(code)
  982.     if not code == sg.Data.AccessCode then
  983.         sg.Functions.gNotification(sg.Data.AccessDenied, code)
  984.         return nil
  985.     else
  986.         return script, script.Parent
  987.     end
  988. end
  989.  
  990. shared.SafeGuard.DestroySafeguard = function(code)
  991.     if not code == sg.Data.AccessCode then
  992.         sg.Functions.gNotification(sg.Data.AccessDenied, code)
  993.         return nil
  994.     else
  995.         sg.Functions.gNotification("SafeGuard is shutting down!")
  996.         wait(4)
  997.         for i,v in pairs(plyrs:GetPlayers()) do
  998.             pcall(function() v.PlayerGui["SafeGuard_GUI"]:destroy() end)
  999.         end
  1000.         shared.SafeGuard = nil
  1001.         script:destroy()
  1002.         sg = nil
  1003.         script = nil
  1004.         error("Destroy Complete!")
  1005.     end
  1006. end
  1007.        
  1008.            
  1009. --[[
  1010. sg.Data.FinishedTime = tick()
  1011. sg.Data.TimeToLoad = sg.Data.FinishedTime - LoadTime
  1012. print("SafeGuard "..sg.Data.curVer.." loaded in "..sg.Data.TimeToLoad.." second(s)!")
  1013. ]]
  1014. --sg.Functions.VerifyKey()
  1015.  
  1016.  
  1017. for i,v in pairs(plyrs:GetPlayers()) do
  1018.     coroutine.wrap(function()
  1019.     coroutine.wrap(function()
  1020.         if not v:FindFirstChild("PlayerGui") then return end
  1021.         if not v["PlayerGui"]:FindFirstChild("SafeGuard_GUI") then local a = Instance.new("ScreenGui",v.PlayerGui) a.Name = "SafeGuard_GUI" end
  1022.         if not v["PlayerGui"]:FindFirstChild("SafeGuard_GUI") then return end
  1023.         local s = v.PlayerGui["SafeGuard_GUI"]
  1024.         local f = Instance.new("Frame",s)
  1025.         f.Name = "LoadedFrame"
  1026.         f.Visible = false
  1027.         local title = Instance.new("TextLabel",f)
  1028.         local body1 = Instance.new("TextLabel",f)
  1029.         local body2 = Instance.new("TextLabel",f)
  1030.         title.FontSize = "Size18"
  1031.         title.Text = "SafeGuard Ver "..sg.Data.curVer
  1032.         title.TextYAlignment = "Bottom"
  1033.         body1.FontSize = "Size12"
  1034.         body1.Text = "Advancements into protection"
  1035.         body1.TextYAlignment = "Center"
  1036.         body2.FontSize = "Size18"
  1037.         body2.Text = "Has successfully loaded!"
  1038.         body2.TextYAlignment = "Top"
  1039.         title.BorderSizePixel = 0
  1040.         body1.BorderSizePixel = 0
  1041.         body2.BorderSizePixel = 0
  1042.         title.Size = UDim2.new(0,600,0,50)
  1043.         body1.Size = UDim2.new(0,600,0,25)
  1044.         body2.Size = UDim2.new(0,600,0,25)
  1045.         title.Position = UDim2.new(0,200,0,0)
  1046.         body1.Position = UDim2.new(0,200,0,50)
  1047.         body2.Position = UDim2.new(0,200,0,75)
  1048.         f.Position = UDim2.new(0,0,0,-101)
  1049.         wait()
  1050.         f.Visible = true
  1051.         f:TweenPosition(UDim2.new(0,0,0,200))
  1052.         wait(1.2)
  1053.         wait(10)
  1054.         coroutine.wrap(function()
  1055.             f:TweenPosition(UDim2.new(0,0,0,-101))
  1056.             for i=1,10 do
  1057.                 title.BackgroundTransparency = title.BackgroundTransparency + .1
  1058.                 body1.BackgroundTransparency = body1.BackgroundTransparency + .1
  1059.                 body2.BackgroundTransparency = body2.BackgroundTransparency + .1
  1060.                 wait(.01)
  1061.             end
  1062.             wait()
  1063.             f:destroy()
  1064.         end)()
  1065.     end)()
  1066.     sg.Functions.RegisterPlayer(v,"User")
  1067.     end)()
  1068. end
  1069.  
  1070. plyrs.PlayerAdded:connect(function(p) sg.Functions.RegisterPlayer(p,"User") end)
  1071. plyrs.PlayerRemoving:connect(function(p) sg.Functions.gNotification("Bye "..p.Name.."!") end)
  1072.  
  1073.  
  1074. coroutine.wrap(function()
  1075.     while wait(1) do
  1076.         if sg.Settings.Service == "enabled" then
  1077.             sg.Functions.ProtectionRun()
  1078.         end
  1079.     end
  1080. end)()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement