Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- --https://github.com/Mokiros/roblox-FE-compatibility
- if game:GetService("RunService"):IsClient() then error("Script must be server-side in order to work; use h/ and not hl/") end
- local Player,game,owner = owner,game
- local RealPlayer = Player
- do
- print("FE Compatibility code V2 by Mokiros")
- local RealPlayer = RealPlayer
- script.Parent = RealPlayer.Character
- --Fake event to make stuff like Mouse.KeyDown work
- local Disconnect_Function = function(this)
- this[1].Functions[this[2]] = nil
- end
- local Disconnect_Metatable = {__index={disconnect=Disconnect_Function,Disconnect=Disconnect_Function}}
- local FakeEvent_Metatable = {__index={
- Connect = function(this,f)
- local i = tostring(math.random(0,10000))
- while this.Functions[i] do
- i = tostring(math.random(0,10000))
- end
- this.Functions[i] = f
- return setmetatable({this,i},Disconnect_Metatable)
- end
- }}
- FakeEvent_Metatable.__index.connect = FakeEvent_Metatable.__index.Connect
- local function fakeEvent()
- return setmetatable({Functions={}},FakeEvent_Metatable)
- end
- --Creating fake input objects with fake variables
- local FakeMouse = {Hit=CFrame.new(),KeyUp=fakeEvent(),KeyDown=fakeEvent(),Button1Up=fakeEvent(),Button1Down=fakeEvent(),Button2Up=fakeEvent(),Button2Down=fakeEvent()}
- FakeMouse.keyUp = FakeMouse.KeyUp
- FakeMouse.keyDown = FakeMouse.KeyDown
- local UIS = {InputBegan=fakeEvent(),InputEnded=fakeEvent()}
- local CAS = {Actions={},BindAction=function(self,name,fun,touch,...)
- CAS.Actions[name] = fun and {Name=name,Function=fun,Keys={...}} or nil
- end}
- --Merged 2 functions into one by checking amount of arguments
- CAS.UnbindAction = CAS.BindAction
- --This function will trigger the events that have been :Connect()'ed
- local function TriggerEvent(self,ev,...)
- for _,f in pairs(self[ev].Functions) do
- f(...)
- end
- end
- FakeMouse.TriggerEvent = TriggerEvent
- UIS.TriggerEvent = TriggerEvent
- --Client communication
- local Event = Instance.new("RemoteEvent")
- Event.Name = "UserInput_Event"
- Event.OnServerEvent:Connect(function(plr,io)
- if plr~=RealPlayer then return end
- FakeMouse.Target = io.Target
- FakeMouse.Hit = io.Hit
- if not io.isMouse then
- local b = io.UserInputState == Enum.UserInputState.Begin
- if io.UserInputType == Enum.UserInputType.MouseButton1 then
- return FakeMouse:TriggerEvent(b and "Button1Down" or "Button1Up")
- end
- if io.UserInputType == Enum.UserInputType.MouseButton2 then
- return FakeMouse:TriggerEvent(b and "Button2Down" or "Button2Up")
- end
- for _,t in pairs(CAS.Actions) do
- for _,k in pairs(t.Keys) do
- if k==io.KeyCode then
- t.Function(t.Name,io.UserInputState,io)
- end
- end
- end
- FakeMouse:TriggerEvent(b and "KeyDown" or "KeyUp",io.KeyCode.Name:lower())
- UIS:TriggerEvent(b and "InputBegan" or "InputEnded",io,false)
- end
- end)
- Event.Parent = NLS([==[local Event = script:WaitForChild("UserInput_Event")
- local Mouse = owner:GetMouse()
- local UIS = game:GetService("UserInputService")
- local input = function(io,RobloxHandled)
- if RobloxHandled then return end
- --Since InputObject is a client-side instance, we create and pass table instead
- Event:FireServer({KeyCode=io.KeyCode,UserInputType=io.UserInputType,UserInputState=io.UserInputState,Hit=Mouse.Hit,Target=Mouse.Target})
- end
- UIS.InputBegan:Connect(input)
- UIS.InputEnded:Connect(input)
- local h,t
- --Give the server mouse data every second frame, but only if the values changed
- --If player is not moving their mouse, client won't fire events
- local HB = game:GetService("RunService").Heartbeat
- while true do
- if h~=Mouse.Hit or t~=Mouse.Target then
- h,t=Mouse.Hit,Mouse.Target
- Event:FireServer({isMouse=true,Target=t,Hit=h})
- end
- --Wait 2 frames
- for i=1,2 do
- HB:Wait()
- end
- end]==],script)
- ----Sandboxed game object that allows the usage of client-side methods and services
- --Real game object
- local RealGame = game
- --Metatable for fake service
- local FakeService_Metatable = {
- __index = function(self,k)
- local s = rawget(self,"_RealService")
- if s then
- return typeof(s[k])=="function"
- and function(_,...)return s[k](s,...)end or s[k]
- end
- end,
- __newindex = function(self,k,v)
- local s = rawget(self,"_RealService")
- if s then s[k]=v end
- end
- }
- local function FakeService(t,RealService)
- t._RealService = typeof(RealService)=="string" and RealGame:GetService(RealService) or RealService
- return setmetatable(t,FakeService_Metatable)
- end
- --Fake game object
- local FakeGame = {
- GetService = function(self,s)
- return rawget(self,s) or RealGame:GetService(s)
- end,
- Players = FakeService({
- LocalPlayer = FakeService({GetMouse=function(self)return FakeMouse end},Player)
- },"Players"),
- UserInputService = FakeService(UIS,"UserInputService"),
- ContextActionService = FakeService(CAS,"ContextActionService"),
- RunService = FakeService({
- _btrs = {},
- RenderStepped = RealGame:GetService("RunService").Heartbeat,
- BindToRenderStep = function(self,name,_,fun)
- self._btrs[name] = self.Heartbeat:Connect(fun)
- end,
- UnbindFromRenderStep = function(self,name)
- self._btrs[name]:Disconnect()
- end,
- },"RunService")
- }
- rawset(FakeGame.Players,"localPlayer",FakeGame.Players.LocalPlayer)
- FakeGame.service = FakeGame.GetService
- FakeService(FakeGame,game)
- --Changing owner to fake player object to support owner:GetMouse()
- game,owner = FakeGame,FakeGame.Players.LocalPlayer
- end
- --// SaviOS by SavageMunkey
- local Host = game:service'Players'.LocalPlayer
- local PlayerMouse = Host:GetMouse()
- local Character = Host.Character
- pcall(function()
- Character.Humanoid['SaviOS'..Host.Name].Disabled=true
- Character.Humanoid['SaviOS'..Host.Name]:Destroy()
- end)
- script.Name='SaviOS'..Host.Name
- local lrs = game:service'RunService'.RenderStepped
- local ud,c3 = UDim2.new,Color3.new
- local OS
- OS = {
- Backgrounds={263065080,122603145,510593355,167312453,119945204,38397690,167312682,192050536,152026398,167312652,120582545,167493039,274050234,454292754,466900315,177053058,229293848,122646263,159102803,321434238,120214481,120480107,129805827,251350099,134993390,294851220,91427420,159103087,161729354,451983167,111563465,224033486,159103552,490565976,419023708,159111488,254890271,72090809,148038665,201380429,235907960,118966085,184001465,158549839,135040161,569012987,124111954,617785055,127976057,157765107,172813012,261956734,229544221,381428334,141204418,130675970,114611763,569627808,165460147,165460277,123128917,65246335,113000488,210624979,86219936,542893768,485873381,133109970,147298379,147297851,133461415,248254225,542822127,536363798,167312652,542895503,89552732,65151650,101805028,103684980,385601310,57939071,304922993,13511519,473575489,256418140,136004272,46076174,497195310,28143702,158772801,557860938,483527125,125134380,129296064,436986440,331063936,162704842,108531974,156021502,546688542,192509200,193859832,78289792,339807971,156513166,305407040,363144648,60043055,621825797,621828236,179089950,501279669,403674379,275918945,247421728,126655771,478203228,25719408,50358414,7460070,415408253,91215756,85243064,135112694,161131570,684101235,467373053,65891746,24960278,318592132,424415675,17266396,64198567,230444445,156269405,179089950,248285466,202899851,156314932,151133945,514648696,};
- Properties = {'AllowClientInsertModels','BrickColor','Color','ShowDevelopmentGui','ResetPlayerGuiOnSpawn','Parent','CustomPhysicalProperties','WaterColor','WaterTransparency','WaterWaveSize','WaterWaveSpeed','AllowThirdPartySales','FilteringEnabled','StreamingEnabled','Gravity','FallenPartsDestroyHeight','Archivable','AbsolutePosition','AbsoluteSize','AccountAge','AccountAgeReplicate','Active','Adornee','AllowAmbientOcclusion','AllowTeamChangeOnTouch','AluminumQuality','AlwaysOnTop','Ambient','AmbientReverb','Anchored','Angularvelocity','AnimationId','Archivable','AreHingesDetected','AttachmentForward','AttachmentPoint','AttachmentPos','AttachmentRight','AttachmentUp','AutoAssignable','AutoButtonColor','AutoColorCharacters','AvailablePhysicalMemory','Axes','BackgroundColor','BackgroundColor3','BackgroundTransparency','BackSurface','BaseTextureId','BaseUrl','Bevel','Roundness','BinType','BlastPressure','BlastRadius','C0','C1','HeadColor','LeftArmColor','RightArmColor','LeftLegColor','RightLegColor','HumanoidRootPartColor','BodyColor','BodyPart','BorderColor','BorderColor3','BorderSizePixel','BottomSurface','BrickColor','Brightness','Browsable','BubbleChat','BubbleChatLifetime','BubbleChatMaxBubbles','Bulge','Button1DownConnectionCount','Button1UpConnectionCount','Button2DownConnectionCount','Button2UpConnectionCount','C0','C1','CameraMode','CameraSubject','CameraType','CanBeDropped','CanCollide','CartoonFactor','CastShadows','CelestialBodiesShown','CFrame','Cframe','Character','CharacterAppearance','CharacterAutoLoads','ChatScrollLength','ClassicChat','ClassName','ClearTextOnFocus','ClipsDescendants','CollisionSoundEnabled','CollisionSoundVolume','Color','ColorShift_Top','ColorShift_Bottom','Bottom','Top','ConstrainedValue','Contro'..'llingHumanoid','ControlMode','ConversationDistance','CoordinateFrame','CorrodedMetalQuality','CPU','CpuCount','CpuSpeed','CreatorId','CreatorType','CurrentAngle','CurrentCamera','CycleOffset','D','DataCap','DataComplexity','DataComplexityLimit','DataCost','DataReady','Deprecated','DeselectedConnectionCount','DesiredAngle','DiamondPlateQuality','Disabled','DistanceFactor','DistributedGameTime','DopplerScale','Draggable','DraggingV1','Duration','EditorFont','EditorFontSize','EditorTabWidth','ElapsedTime','Elasticity','Enabled','ExplosionType','ExtentsOffset','F0','F1','F2','F3','Face','FaceId','Faces','FieldOfView','Focus','FogColor','FogEnd','FogStart','Font','FontSize','Force','FormFactor','Friction','From','FrontSurface','GearGenreSetting','Genre','GeographicLatitude','GfxCard', 'GlobalShadows','Graphic','GrassQuality','Grip','GripForward','GripPos','GripRight','GripUp','Guest','HeadsUpDisplay','Health','Heat','Hit','Humanoid','IceQuality','Icon','IdleConnectionCount','Image','InitialPrompt','InOut','InUse','IsPaused','IsPlaying','JobId','Jump','KeyDownConnectionCount','KeyUpConnectionCount','LeftLeg','LeftRight','LeftSurface','LinkedSource','LocalPlayer','Location','Locked','LODX','LODY','Looped','Material','MaxActivationDistance','MaxCollisionSounds','MaxExtents','MaxForce','MaxHealth','MaxItems','MaxPlayers','MaxSpeed','MaxThrust','MaxTorque','MaxValue','MaxVelocity','MembershipType','MembershipTypeReplicate','MeshId','MeshType','MinValue','Modal','MouseButton1ClickConnectionCount','MouseButton1DownConnectionCount','MouseButton1UpConnectionCount','MouseButton2ClickConnectionCount','MouseButton2DownConnectionCount','MouseButton2UpConnectionCount','MouseDelta','MouseDragConnectionCount','MouseEnterConnectionCount','MouseHit','MouseLeaveConnectionCount','MouseLock','MouseMovedConnectionCount','MouseTarget','MouseTargetFilter','MouseTargetSurface','MoveConnectionCount','MoveState','MultiLine','Name','NameOcclusion','NetworkOw'..'ner','Neutral','NumPlayers','Offset','Opacity','Origin','OsPlatform','OsVer','OutdoorAmbient','OverlayTextureId','P','PantsTemplate','ParamA','ParamB','Parent','PrimaryPart','Part','Part0','Part1','Pitch','PixelShaderModel','PlaceId','PlasticQuality','PlatformStand','PlayCount','PlayerToHideFrom','PlayOnRemove','Point','Port','Position','Preliminary','PrimaryPart','PrivateWorkingSetBytes','Purpose','RAM','Reflectance','ReplicatedSelectedConnectionCount','ResizeableFaces','ResizeIncrement','Resolution','ResponseDialog','RightLeg','RightSurface','RiseVelocity','RobloxLocked','RobloxVersion','RolloffScale','RotVelocity','Scale','Score','ScriptsDisabled','SecondaryColor','Selected','ShadowColor','Shape','Shiny','ShirtTemplate','ShowDeprecatedObjects','ShowDevelopmentGui','ShowPreliminaryObjects','Sides','Sit','Size','SizeConstraint','SizeOffset','SkinColor','SkyboxBk','SkyboxDn','SkyboxFt','SkyboxLf','SkyboxRt','SkyboxUp','SlateQuality','SoundId','Source','SparkleColor','Specular','StarCount','Steer','StickyWheels','StudsBetweenTextures','StudsOffset','StudsPerTileU','StudsPerTileV','Style','Summary','SuperSa'..'feChatReplicate','Surface','Surface0','Surface1','SurfaceInput','Target','TargetFilter','TargetOffset','TargetPoint','TargetRadius','TargetSurface','TeamColor','Terrain','Text','TextBounds','TextColor','TextColor3','TextFits','TextScaled','TextStrokeColor3','TextStrokeTransparency','TextTransparency','Texture','TextureId','TextureSize','TextWrap','TextWrapped','TextXAlignment','TextYAlignment','Throttle','ThrustD','ThrustP','Ticket','Time','TimeOfDay','To','Tone','ToolTip','TopBottom','TopSurface','Torque','HumanoidRootPart','Transparency','TrussDetail','TurnD','TurnP','TurnSpeed','UnitRay','UserDialog','UserId','Value','Version','VertexColor','VideoCaptureEnabled','VideoMemory','VideoQuality','ViewSizeX','ViewSizeY','Visible','Volume','WalkDirection','WalkSpeed','WalkToPart','WalkToPoint','WheelBackwardConnectionCount','WheelForwardConnectionCount','WindowSize','WireRadius','WoodQuality','X','Y','Z'};
- DecalAssets={200182847};
- --//49,51,51,55,115,97,118
- Sounds = {
- 319758951,485859421,191035676,142312040,165065112,166471137,208240682,226788368,193399717,
- 274427825,155949200,209864226,211626338,232560219,172427188,180115728,170968526,
- 148492408,177956804,132399469,218530627,234627720,182411115,188712851,176454530,
- 685204898,736225554,267915404,180795185,263998927,181428192,266427268,215974232,
- 177297354,248794208,262158959,282890395,252612142,252614631,252613867,203275374,
- 244763119,169898604,173060483,181065299,294185225,657230380,574818336,
- };
- RecentlyUsedPrograms={};
- UIs={};
- Logins={
- {'SavageMunkey','abcd12',Color3.new(.1,.1,.1),Color3.new(1,1,1),497195310};--167312453};
- {'Artiecsal','sookithearth',c3(0,0,0),c3(1,1,1),122646263},
- {'Luke_Ames','xXfatphonesXx',c3(.5,0,0),c3(1,1,1),621828236},
- {'Lord_Azure','AzureIsGay',c3(.3,0,0),c3(1,1,1),215152878},
- };
- Administrators={
- 'SavageMunkey',
- 'Aeodile',
- };
- Effects={};
- Functions={};
- Assets={};
- Apps={
- Qeued={};
- Generated={};
- Open={};
- };
- Settings={
- Fonts = {
- Header = 'Code',
- Sub_Header = 'Highway',
- };
- };
- };
- Functions = OS.Functions
- Effects = OS.Effects
- OS.GenCode = math.random()*9e5
- local CurrentPlayerData=nil
- local Official=true
- function Functions:ConvertColor3(r,g,b)
- return c3(1-(1/r),1-(10/g),1-(10/b)) --//derped
- end
- function Functions:ReturnObjectProperties(Object)
- assert(pcall(function()
- assert(game.IsA(Object,'Instance'))
- end),'Should be ROBLOX instance')
- local Returns = {}
- for _, Value in next, OS.Properties do
- if pcall(function() return Object[Value] end) and (type(Object[Value]) ~= 'userdata' or not Object:FindFirstChild(Value)) then
- Returns[Value] = Object[Value]
- end
- end
- return Returns
- end;
- --print(Functions:ConvertColor3(170, 0, 255))
- function Functions:GrabHostData()
- local PlayerData=nil
- local Found=0
- for Index, Data in next, OS.Logins do
- if Data[1] == tostring(Host) then
- PlayerData=Data
- Found=Found+1
- end
- end
- if PlayerData then
- CurrentPlayerData=PlayerData
- else
- Official=false
- CurrentPlayerData={Host.Name,Host.Name:lower():sub(0,5)..'12'..math.random(-50,50),c3(.25,.25,.25),c3(1,1,1),OS.Backgrounds[math.random(1,#OS.Backgrounds)]};
- script:Destroy()
- end
- if Found > 1 then
- error('Found more than one('..Found..') data tables for '..Host.Name,2)
- end
- end
- Functions:GrabHostData()
- table.foreach(CurrentPlayerData,print)
- function Functions:GetPlayerImg(User)
- local ID = 'http://www.roblox.com/Thumbs/Avatar.ashx?x=150&y=200&Format=Png&username='..tostring(User)
- return ID
- end
- ypcall(function()
- --workspace['mon-mon']:Destroy()
- end)
- local Monitor, G, MainFrame
- function Functions:MakeMonitor()
- pcall(function() workspace['mon-mon'..Host.Name]:Destroy() end)
- local sc=Instance.new('Script', workspace)
- sc.Name='mon-mon'..Host.Name
- OS.Assets.FScript=sc
- Monitor = Instance.new('Part', sc)
- Monitor.Size = Vector3.new(24,14,.1)
- Monitor.Anchored = true
- Monitor.Locked=true
- Monitor.Transparency=0
- Monitor.Color=Color3.new(1,1,1)
- Monitor.Material='Neon'
- Monitor.Name='mon-mon'
- Instance.new('SurfaceLight',Monitor).Face='Back'
- Monitor.CanCollide = false
- Monitor.TopSurface,Monitor.BottomSurface=0,0
- local Flat = Instance.new('BlockMesh', Monitor)
- Flat.Scale = Vector3.new(1,1,0)
- spawn(function()
- for i = 0,1.025,.025 do
- --Monitor.Transparency = 1.3-i
- lrs:wait()
- end
- end)
- end
- function Functions:MakeNewUi(Type)
- local Ui = Instance.new(Type)
- local function TypeIsA(Table, Goal)
- for i,v in next, Table do
- if v:lower()==Type:lower() then
- Goal(Ui)
- end
- end
- end
- Ui.ClipsDescendants = true
- Ui.Size = ud(1,0,1,0)
- Ui.BackgroundTransparency = 1
- TypeIsA({'TextButton'}, function(tUi)
- Ui.AutoButtonColor = false
- end)
- Ui.BackgroundColor3 = CurrentPlayerData[3]
- Ui.BorderSizePixel = 0
- TypeIsA({'ImageLabel','ImageButton'}, function(tUi)
- end)
- TypeIsA({'TextButton','TextLabel','TextBox'}, function(tUi)
- tUi.TextColor3 = CurrentPlayerData[4]
- tUi.Font = OS.Settings.Fonts.Header
- tUi.Text=''
- tUi.FontSize = Enum.FontSize.Size18
- end)
- delay(.1,function()
- OS.UIs[Ui.Name]={Ui,true}
- local oUi=Ui
- spawn(function()
- repeat lrs:wait() until Ui.Parent == nil
- OS.UIs[oUi.Name]={nil,false}
- end)
- end)
- Ui.ZIndex=7
- return Ui
- end
- function Functions:Center(Ui)
- local co={Ui.Size.X.Offset/2,
- Ui.Size.Y.Offset/2};
- return ud(.5,-co[1],.5,-co[2])
- end
- function Functions:CenterOffset(Ui, Offset)
- local co={Ui.Size.X.Scale,
- Ui.Size.X.Offset/2,
- Ui.Size.Y.Scale,
- Ui.Size.Y.Offset/2
- };
- return ud(.5+Offset.X.Scale,-co[2]+Offset.X.Offset,.5+Offset.Y.Scale,-co[4]+Offset.Y.Offset)
- end
- local TypeDebs={};
- function Effects:Type(Ui, Text, Type, Delay)
- TypeDebs[Ui]=false
- if Type == 'In' then
- local Continue = true
- for i = 0,#Text do
- if TypeDebs[Ui] then
- Continue = false
- return
- end
- if not Continue then
- return
- end
- Ui.Text = Text:sub(0,i)..'|'
- wait(Delay)
- end
- Ui.Text = Text
- elseif Type == 'Out' then
- local Continue = true
- for i = 0,#Text do
- if TypeDebs[Ui] then
- Continue = false
- return
- end
- if not Continue then
- return
- end
- Ui.Text = Text:sub(0,1-i)..'|'
- wait(Delay)
- end
- Ui.Text = Text
- else
- error'Please enter a TransitionType (Out, In)'
- end
- end
- function Functions:Sound(Id ,Rmv)
- local snd=Instance.new('Sound', Character:WaitForChild'Head' or Monitor or workspace)
- if Rmv then
- for index,o in next, snd.Parent:children() do
- if o:IsA'Sound' and o ~= snd then
- o:Stop()
- o:Destroy()
- end
- end
- end
- snd.EmitterSize=20
- snd.SoundId=Functions:Asset(Id)
- snd.Volume=.6
- delay(8,function()
- if not snd.Looped and snd.IsPlaying==false then
- snd:Stop()
- snd:Destroy()
- end
- end)
- return snd
- end
- function Effects:Underline(Ui, YOffset, XThickness, YThickness, Color, Fade)
- local Label = Functions:MakeNewUi('TextLabel')
- Label.BackgroundColor3 = Color
- Label.BackgroundTransparency=.2
- Label.Size = ud(0,0,0,YThickness)
- Label.Position = Functions:CenterOffset(Label, ud(0,0,0,YOffset))
- Label.Parent = Ui
- Label.ZIndex = 9
- if Fade then
- Label.BackgroundTransparency = 1
- delay(.5,function()
- Label:TweenSizeAndPosition(ud(0,XThickness,0,YThickness),Functions:CenterOffset(Label,ud(0,-XThickness/2,0,YOffset)),'Out','Back',1,true)
- end)
- for i = 0,1.025,.025 do
- Label.BackgroundTransparency = (1.2 - i)
- lrs:wait()
- end
- else
- Label.Size = ud(0,XThickness,0,YThickness)
- Label.Position = Functions:CenterOffset(Label, ud(0,0,0,YOffset))
- end
- return Label
- end
- function Functions:Asset(Id)
- return 'rbxassetid://'..Id
- end
- function Functions:PlayerImage(User)
- return 'http://www.roblox.com/Thumbs/Avatar.ashx?x=150&y=200&Format=Png&username='..tostring(User)
- end
- function Functions:LoginScreenGui(Size,ltbl,Fade)
- if Host.PlayerGui:FindFirstChild'nomnompw' then
- end
- local limit=16
- local SGui = Instance.new('ScreenGui', Host.PlayerGui)
- SGui.Name='nomnompw'
- local Box = Functions:MakeNewUi('TextBox')
- Box.ClearTextOnFocus=true
- Box.TextColor3 = CurrentPlayerData[3]
- Box.TextStrokeTransparency=.9
- Box.Size=Size
- Box.Text = 'Enter your Password'
- Box.Position=Functions:Center(Box)
- Box.BackgroundTransparency=1
- Box.TextStrokeColor3=CurrentPlayerData[3]
- Box.Parent=SGui
- Box.BackgroundColor3 = CurrentPlayerData[4]
- local enabled=true
- if Fade then
- Box.Position = Functions:CenterOffset(Box,ud(0,0,-.4,0))
- for i = 0,1,.05 do
- Box.BackgroundTransparency=1-i
- lrs:wait()
- end
- Box:CaptureFocus()
- end
- local ev
- ev=Box.Focused:connect(function()
- --ev:disconnect()
- Box.ClearTextOnFocus=false
- end)
- local ev2
- local lt=''
- ev2=Box.FocusLost:connect(function()
- if #Box.Text < 1 or Box.Text == 'Enter your Password' then
- Box.Text='Enter your Password'
- Box.ClearTextOnFocus=true
- end
- if Box.Text==CurrentPlayerData[2] then
- ev:disconnect()
- ev2:disconnect()
- Box.Active=false
- Box:TweenPosition(Functions:CenterOffset(Box,ud(0,0,-.55,0)),'Out','Linear',.5,true)
- Box.TextStrokeTransparency=1
- for i = 0,1,.05 do
- Box.BackgroundTransparency=i
- Box.TextTransparency=i
- lrs:wait()
- end
- lt=Box.Text
- SGui:Destroy()
- end
- end)
- Box.BackgroundTransparency=0
- if ltbl.loop then
- while SGui.Parent and enabled do
- lt=Box.Text
- if #Box.Text>limit and Box.Text ~= 'Enter your Password' then
- Box:ReleaseFocus()
- Box.Active=false
- local bft=Box.Text
- Box.Text='Password '..limit..' character limit.'
- wait(2)
- Box.Text=bft:sub(0,limit)
- Box.Active=true
- Box:CaptureFocus()
- end
- if #Box.Text>1 and Box.Text ~= 'Enter your Password' then
- local nt=''
- ltbl.ui.Text=nt
- for i = 1,#Box.Text do
- nt=nt..'*'
- end
- ltbl.ui.Text=nt
- elseif #Box.Text==0 then
- if Box.Text ~= 'Enter your Password' then
- Box.Text='Enter your Password'
- ltbl.ui.Text='Enter your Password'
- Box:ReleaseFocus()
- Box.ClearTextOnFocus=true
- end
- end
- lrs:wait()
- end
- end
- return lt
- end
- function Functions:IfRegistered(Player, Function)
- local Bool = false
- for Index, Data in next, OS.Logins do
- local user=Data[1]
- local pass=Data[2]
- if user == tostring(Player) then
- Bool = true
- end
- end
- Function(Bool)
- end
- function Functions:CreateProgram(Name, Id, Nick, Description, Click)
- table.insert(OS.Apps.Qeued,{tostring(Name), tonumber(Id), tostring(NickName), tostring(Description), Click})
- end;
- local Search
- function Functions:Search(Parent, Function)
- for Index, Object in next, Parent:children() do
- pcall(function()
- Function(Object)
- end)
- Functions:Search(Object, Function)
- end
- end
- function Functions:ShowChar()
- OS.Functions:Search(Character, function(Object)
- if (Object:IsA'BasePart' or Object:IsA'Decal') and Object.Name ~='HumanoidRootPart' then
- Object.Transparency = 0
- end
- end)
- end
- function Functions:HideChar()
- OS.Functions:Search(Character, function(Object)
- if (Object:IsA'BasePart' or Object:IsA'Decal') and Object.Name ~='HumanoidRootPart' then
- Object.Transparency = 1
- end
- end)
- end
- local Notes={};
- Functions:CreateProgram('Notepad++', 43360681, 'N++', 'Notepad for your... "personal" needs?', function(HF,TF,CF)
- local tb = Functions:MakeNewUi('TextButton')
- tb.Parent=CF
- tb.TextWrapped=true
- table.insert(Notes,tb)
- tb.Text = 'Notepad; '..#Notes
- tb.TextColor3=CurrentPlayerData[3]
- tb.BackgroundColor3=CurrentPlayerData[4]
- tb.Font=OS.Settings.Fonts.Sub_Header
- tb.TextStrokeTransparency=.9
- tb.TextStrokeColor3=CurrentPlayerData[3]
- tb.TextXAlignment='Left'
- tb.TextYAlignment='Top'
- local SGui
- tb.MouseButton1Click:connect(function()
- pcall(function()
- SGui:Destroy()
- end)
- if Host.PlayerGui:FindFirstChild'nomnoemnp' then Host.PlayerGui:FindFirstChild'nomnoemnp':Destroy() end
- SGui = Instance.new('ScreenGui', Host.PlayerGui)
- SGui.Name='nomnoemnp'
- local Box = Functions:MakeNewUi('TextBox')
- Box.ClearTextOnFocus=false
- Box.TextColor3 = CurrentPlayerData[3]
- Box.TextStrokeTransparency=.9
- Box.Size=ud(1,0,1,0)
- Box.Position=ud(-1,0,0,0)
- Box.Text = tb.Text
- Box.Visible = false
- Box.TextXAlignment='Left'
- --Box.MultiLine=true
- Box.TextYAlignment='Top'
- Box.BackgroundTransparency=1
- Box.TextStrokeColor3=CurrentPlayerData[3]
- Box.Parent=SGui
- Box.BackgroundColor3 = CurrentPlayerData[4]
- Box:CaptureFocus()
- Box.FocusLost:connect(function()
- SGui:Destroy()
- end)
- local isub = '|'
- local l=false
- spawn(function()
- if tb.Text:sub(#tb.Text,#tb.Text)=='|' then
- tb.Text=tb.Text:sub(1,#tb.Text-1)
- end
- local canc = false
- spawn(function()
- while not canc do
- wait(.6)
- l=not l
- if l == true then
- isub='|'
- else
- isub=''
- end
- end
- end)
- repeat
- tb.Text=Box.Text..isub
- lrs:wait()
- until SGui.Parent ~= Host.PlayerGui
- if l then
- tb.Text=tb.Text:sub(1,#tb.Text-1)
- end
- --print'canc'
- canc=true
- SGui=nil
- end)
- end)
- end)
- --script.Parent=Host.PlayerGui
- Functions:CreateProgram('Calculator', 45545182, 'Calc', 'Math stuff man', function(HF,TF,CF)
- HF.Size = UDim2.new(0,150,0,300)
- end)
- local osEVENT = game:service'SoundService':FindFirstChild'osEVENT'
- if osEVENT==nil then
- osEVENT = Instance.new('RemoteEvent',game:service'SoundService')
- osEVENT.Name='osEVENT'
- end
- if game.PlaceId == 691043264 then
- Functions:CreateProgram('Lua', 71157241, 'LUA', 'Execute stuff...', function(HF,TF,CF)
- local tb = Functions:MakeNewUi('TextButton')
- tb.Parent=CF
- tb.TextWrapped=true
- tb.Text = ''
- tb.TextColor3=CurrentPlayerData[3]
- tb.BackgroundColor3=CurrentPlayerData[4]
- tb.Font=OS.Settings.Fonts.Sub_Header
- tb.Size=ud(.6,0,.9,0)
- tb.TextXAlignment='Left'
- tb.TextYAlignment='Top'
- local run = Functions:MakeNewUi('TextButton')
- run.Parent=CF
- run.Text = 'Run Script'
- run.BackgroundTransparency=0
- run.TextColor3=CurrentPlayerData[4]
- run.BackgroundColor3=CurrentPlayerData[3]
- run.Font=OS.Settings.Fonts.Header
- run.Position=ud(0,0,.95,0)
- run.TextSize=11
- run.Size=ud(.6,0,.05,0)
- local cleartb = Functions:MakeNewUi('TextButton')
- cleartb.Parent=CF
- cleartb.Text = 'Clear Text'
- cleartb.BackgroundTransparency=0
- cleartb.TextColor3=CurrentPlayerData[4]
- cleartb.BackgroundColor3=CurrentPlayerData[3]
- cleartb.Font=OS.Settings.Fonts.Header
- cleartb.Position=ud(0,0,.9,0)
- cleartb.TextSize=11
- cleartb.Size=ud(.6,0,.05,0)
- local ipos = 0
- local timefromlast=0
- local longestx=0
- local clear = Functions:MakeNewUi('TextButton')
- clear.Parent=CF
- clear.Text = 'Clear Output'
- clear.BackgroundTransparency=0
- clear.TextColor3=CurrentPlayerData[4]
- clear.BackgroundColor3=CurrentPlayerData[3]
- clear.Font=OS.Settings.Fonts.Header
- clear.Position=ud(.6,0,.95,0)
- clear.TextSize=11
- clear.Size=ud(.4,0,.05,0)
- local output = Functions:MakeNewUi('ScrollingFrame')
- output.Parent=CF
- output.BackgroundColor3=CurrentPlayerData[3]
- output.Position=ud(.6,0,0,0)
- output.BackgroundTransparency=0
- output.Size=ud(.4,0,.95,0)
- function op(argz)
- local txt,code,clr = argz[1],argz[2],argz[3]
- clr=clr or Color3.new(1,1,1)
- txt=' > '..txt or 'NO_TEXT'
- --print(txt,code,clr)
- local is = (tostring(code)==tostring(OS.GenCode))
- if is then
- timefromlast=0
- local lbl = Functions:MakeNewUi('TextLabel')
- lbl.Parent=output
- lbl.Position=ud(0,0,0,ipos)
- lbl.TextSize=10
- if #txt > longestx then
- longextx=#txt
- end
- --txt=txt:gsub('\n','')
- lbl.TextColor3 = clr
- lbl.TextWrapped=true
- local count=0
- local notting=true
- lbl.TextXAlignment='Left'
- lbl.Text = txt
- lbl.BackgroundTransparency=1
- lbl.Size=ud(33,0,0,lbl.TextBounds.Y+5)
- ipos=ipos+lbl.TextBounds.Y+2
- spawn(function()
- while notting do
- lrs:wait()
- count=count+1
- local asx=output.AbsoluteSize.X
- local tbx=lbl.TextBounds.X
- --print(tbx,asx)
- if tbx > asx then
- lbl.Text=lbl.Text:sub(1+(asx*(count-1)),asx*count)..'\n'..lbl.Text:sub((asx*count)+1)
- else
- notting=false
- end
- end
- end)
- lbl.Size=ud(1,0,0,lbl.TextBounds.Y+5)
- end
- end
- op({'Hello world!', OS.GenCode, Color3.new(1,1,1)})
- clear.MouseButton1Click:connect(function()
- output:ClearAllChildren()
- ipos=0
- longestx=0
- timefromlast=0
- op({'Cleared output', OS.GenCode, BrickColor.new'Dark green'.Color})
- end)
- cleartb.MouseButton1Click:connect(function()
- tb.Text=''
- pcall(function()
- SGui.Text=''
- end)
- end)
- local oev = osEVENT.OnClientEvent:connect(function(Argz)
- op(Argz)
- end)
- spawn(function()
- local ii=0
- repeat lrs:wait()
- timefromlast=timefromlast+.05
- ii=Functions:IntegerLerp(ii,ipos,.15)
- if timefromlast < 5 then
- output.CanvasSize=ud(0,longestx,0,ii)
- output.CanvasPosition=Vector2.new(0,ii)
- end
- until run.Parent ~= CF
- oev:disconnect()
- --print'dis'
- end)
- run.MouseButton1Click:connect(function()
- local lscode = [[
- local owner = game:service'Players':WaitForChild(']]..Host.Name..[[')
- local event = game:service'SoundService':WaitForChild'osEVENT'
- local code = ]]..OS.GenCode..[[
- function print(...)
- local Data, Return = {...}, ""
- for Index,Value in pairs(Data) do
- Return = Return .. tostring(Value) .. (Index < #Data and ", " or "")
- end
- event:FireClient(owner,{Return,code,Color3.new(1,1,1)})
- end
- function warn(...)
- local Data, Return = {...}, ""
- for Index,Value in pairs(Data) do
- Return = Return .. tostring(Value) .. (Index < #Data and ", " or "")
- end
- event:FireClient(owner,{Return,code,Color3.new(1,.5,0)})
- end
- function ferror(...)
- local Data, Return = {...}, ""
- for Index,Value in pairs(Data) do
- Return = Return .. tostring(Value) .. (Index < #Data and ", " or "")
- end
- event:FireClient(owner,{Return,code,Color3.new(.8,0,0)})
- end
- delay(20,function()
- event:FireClient(owner,{'Auto removed script - delay ; 20',code,BrickColor.new'Dark green'.Color})
- script:Destroy()
- end)
- local script = workspace:WaitForChild(']]..tostring(OS.Assets.FScript.Name)..[[')
- ]]
- local formattedcode = [[
- pcall(function()
- local Success, Error = pcall(function()
- ]]..tb.Text..[[
- end)
- if not Success then
- local err = Error
- err=err:gsub('ScriptBuilderScript','OS.sb')
- err=err:gsub('544','1')
- ferror(err)
- local stacks = debug.traceback()
- stacks=stacks:gsub('ScriptBuilderScript','OS.sb')
- event:FireClient(owner,{stacks,code,BrickColor.new'Bright blue'.Color})
- else
- event:FireClient(owner,{'Ran script',code,BrickColor.new'Bright blue'.Color})
- end
- end)
- ]]
- NS(lscode..'\n\n'..formattedcode, workspace)
- end)
- local SGui
- tb.MouseButton1Click:connect(function()
- pcall(function()
- SGui:Destroy()
- end)
- if Host.PlayerGui:FindFirstChild'nomnoemnp' then Host.PlayerGui:FindFirstChild'nomnoemnp':Destroy() end
- SGui = Instance.new('ScreenGui', Host.PlayerGui)
- SGui.Name='nomnoemnp'
- local Box = Functions:MakeNewUi('TextBox')
- Box.ClearTextOnFocus=false
- Box.TextColor3 = CurrentPlayerData[3]
- Box.TextStrokeTransparency=.9
- Box.Size=ud(1,0,1,0)
- Box.Position=ud(-1,0,0,0)
- Box.Text = tb.Text
- Box.Visible = false
- Box.TextXAlignment='Left'
- --Box.MultiLine=true
- Box.TextYAlignment='Top'
- Box.BackgroundTransparency=1
- Box.TextStrokeColor3=CurrentPlayerData[3]
- Box.Parent=SGui
- Box.BackgroundColor3 = CurrentPlayerData[4]
- Box:CaptureFocus()
- Box.FocusLost:connect(function()
- SGui:Destroy()
- end)
- local isub = '|'
- local l=false
- spawn(function()
- if tb.Text:sub(#tb.Text,#tb.Text)=='|' then
- tb.Text=tb.Text:sub(1,#tb.Text-1)
- end
- local canc = false
- spawn(function()
- while not canc do
- wait(.6)
- l=not l
- if l == true then
- isub='|'
- else
- isub=''
- end
- end
- end)
- repeat
- tb.Text=Box.Text..isub
- lrs:wait()
- until SGui.Parent ~= Host.PlayerGui
- if l then
- tb.Text=tb.Text:sub(1,#tb.Text-1)
- end
- canc=true
- SGui=nil
- end)
- end)
- end)
- end
- Functions:CreateProgram('Settings',485882401,'Sett','Also self explanitory...',function(HF,TF,CF)
- end)
- spawn(function()
- local nw={};
- for i,v in next, OS.Backgrounds do
- delay(math.random()*5,function()
- nw[#nw+1]=v
- end)
- end
- repeat wait() until #nw==#OS.Backgrounds
- wait(.5)
- OS.Backgrounds=nw
- Functions:Notification('Formatted OS.Backgrounds', 4)
- end)
- spawn(function()
- local nw={};
- for i,v in next, OS.Sounds do
- delay(math.random()*5,function()
- nw[#nw+1]=v
- end)
- end
- repeat wait() until #nw==#OS.Sounds
- wait(.5)
- OS.Sounds=nw
- Functions:Notification('Formatted OS.Sounds', 4)
- end)
- Functions:CreateProgram('Gallery', 152445445, 'Images', 'View your favorite, saved, and default images', function(HF,TF,CF)
- local title = Functions:MakeNewUi('TextLabel')
- title.TextColor3 = CurrentPlayerData[3]
- title.TextStrokeTransparency=1
- title.Size=ud(1,0,.1,0)
- title.Text = 'Gallery - '..#OS.Backgrounds..' assets total'
- title.TextXAlignment='Center'
- title.TextYAlignment='Center'
- title.Font = OS.Settings.Fonts.Header
- title.BackgroundTransparency=1
- title.Parent=CF
- title.BackgroundColor3 = CurrentPlayerData[4]
- spawn(function()
- wait(1)
- Effects:Underline(title, 15, 300, 2, CurrentPlayerData[3], true)
- end)
- local scroll = Functions:MakeNewUi('ScrollingFrame')
- scroll.Size=ud(1,0,.9,0)
- scroll.Position = ud(0,0,.1,0)
- scroll.BackgroundTransparency=0
- scroll.TopImage=Functions:Asset(317839361)
- scroll.MidImage=Functions:Asset(317839361)
- scroll.BottomImage=Functions:Asset(317839361)
- scroll.ScrollBarThickness = 5
- scroll.Parent=CF
- scroll.BackgroundColor3 = CurrentPlayerData[4]
- local Loaded = 0
- local o,d = 0,0
- local curbg = nil
- local bgs={};
- for i, Id in next, OS.Backgrounds do
- --local Market = game:service'MarketplaceService'
- --local Asset = Market:GetProductInfo(Id)
- local Img = Functions:MakeNewUi('ImageButton')
- Img.Image = Functions:Asset(Id)
- local scl = 2
- local add = .005
- local sx,sy=(.089*scl),(.05*scl)
- Img.Size=ud(sx,0,0,34*2)
- Img.Position = ud(((sx+add)*o)+.05,0,0,((36*2)*d))
- o=o+1
- game:service'RunService'.RenderStepped:wait()
- if sx*(o+1) >= 1 then
- d=d+1
- o=0
- scroll.CanvasSize=ud(0,0,0,((36*2)*d))
- end
- Img.BackgroundColor3 = scroll.BackgroundColor3
- Img.BorderColor3 = CurrentPlayerData[3]
- Img.ImageTransparency=1
- Img.MouseButton1Down:connect(function()
- curbg = Img
- OS.Assets.Background.Image=Functions:Asset(Id)
- end)
- Img.Parent=scroll
- spawn(function()
- for i = 0,1.05,.05 do
- Img.ImageTransparency=1-i
- game:service'RunService'.RenderStepped:wait()
- end
- end)
- bgs[#bgs+1]=Img
- end
- while #bgs > 0 do
- lrs:wait()
- for i,Img in next, bgs do
- if Img == nil or Img.Parent == nil then
- table.remove(bgs,i)
- else
- if curbg == Img then
- Img.BorderSizePixel = 2
- else
- Img.BorderSizePixel=0
- end
- end
- end
- end
- end)
- Functions:CreateProgram('Explorer', 27854793, 'Expl', 'Explore the game\'s children', function(HF,TF,CF)
- local funcs = {};
- local title = Functions:MakeNewUi('TextLabel')
- title.TextColor3 = CurrentPlayerData[3]
- title.TextStrokeTransparency=1
- title.Size=ud(1,0,.2,0)
- title.Text = 'Services'
- title.TextXAlignment='Center'
- title.TextYAlignment='Center'
- title.BackgroundTransparency=1
- title.Parent=CF
- title.BackgroundColor3 = CurrentPlayerData[4]
- spawn(function()
- wait(1)
- Effects:Underline(title, 15, 80, 2, CurrentPlayerData[3], true)
- end)
- local scroll = Functions:MakeNewUi('ScrollingFrame')
- scroll.Size=ud(.8,0,.8,0)
- scroll.Position = ud(.1,0,.2,0)
- scroll.BackgroundTransparency=1
- scroll.TopImage=Functions:Asset(317839361)
- scroll.MidImage=Functions:Asset(317839361)
- scroll.BottomImage=Functions:Asset(317839361)
- scroll.ScrollBarThickness = 5
- scroll.Parent=CF
- scroll.BackgroundColor3 = CurrentPlayerData[4]
- function funcs:w()
- return wait(.05)
- end
- local buttons={};
- local t = 0
- function funcs:clearscroll()
- t=t+1
- buttons={};
- for i,v in next, scroll:children() do
- --funcs:w()
- pcall(function()
- spawn(function()
- v:TweenPosition(ud(1,0,v.Position.Y.Scale,v.Position.Y.Offset),'Out','Quint',2,true)
- for i = 0,1.05,.05 do
- pcall(function()
- v.TextTransparency=v.TextTransparency+.05
- end)
- pcall(function()
- v.BackgroundTransparency=v.BackgroundTransparency+.05
- end)
- pcall(function()
- v.TextStrokeTransparency=v.TextStrokeTransparency+.05
- end)
- lrs:wait()
- end
- v:Destroy()
- end)
- end)
- end
- wait(2)
- end
- function funcs:bt(i,txt,func)
- delay(0,function()
- if t == i then
- --funcs:w()
- local button = Functions:MakeNewUi('TextButton')
- local index = #buttons
- buttons[index+1]=button
- local y = 22*(index)
- scroll.CanvasSize=ud(0,0,0,y)
- button.TextColor3 = CurrentPlayerData[3]
- button.TextStrokeTransparency=.9
- button.Size=ud(1,0,0,20)
- button.Position=ud(1,0,0,y)
- button.Text = txt
- button.TextXAlignment='Left'
- button.TextTransparency=1
- button.TextSize = 12
- button.Font=OS.Settings.Fonts.Header
- --button.TextYAlignment='Top'
- button.BackgroundTransparency=.6
- button.TextStrokeColor3=CurrentPlayerData[3]
- button.Parent=scroll
- button.BackgroundColor3 = CurrentPlayerData[4]
- spawn(function()
- button:TweenPosition(ud(0,0,0,y),'Out','Quint',.5,true)
- for i = 0,1.05,.05 do
- button.TextTransparency=1-i
- lrs:wait()
- end
- end)
- local ev
- ev=button.MouseButton1Click:connect(function()
- ev:disconnect()
- func(button)
- end)
- return button
- else
- return nil
- end
- end)
- end
- function funcs:showoptions(obj)
- funcs:clearscroll()
- local st = t
- if obj:IsA'Instance' then
- title.Text = obj:GetFullName()
- if #obj:children() > 0 then
- local expl=funcs:bt(st,'Explore',function()
- funcs:showchildren(obj)
- end)
- end
- pcall(function()
- if obj ~= game and obj.Parent ~= game then
- local expl=funcs:bt(st,'Destroy',function()
- local par = obj.Parent
- local pn = obj.Name
- pcall(function()
- obj:Destroy()
- end)
- funcs:clearscroll()
- local nst = t
- funcs:bt(nst,'Return to '..pn..'\'s parent object',function()
- funcs:showchildren(par)
- end)
- funcs:bt(nst,'Destroyed '..pn,function()
- end)
- end)
- end
- end)
- if obj ~= game then
- local tag = 'Return to '..obj.Parent.Name..'\'s children'
- if obj.Parent==game then
- tag='Return to explorable services'
- end
- local ret=funcs:bt(st,tag,function()
- funcs:showchildren(obj.Parent)
- end)
- elseif obj.Parent == game then
- funcs:showservs()
- end
- local sprops=funcs:bt(st,'Show Properties',function()
- funcs:clearscroll()
- local st2 = t
- local rett=funcs:bt(st2,'Return to options for '..obj.Name,function()
- funcs:showoptions(obj)
- end)
- local Props = Functions:ReturnObjectProperties(obj)
- Props['Children'] = #obj:children()
- for index, value in next, Props do
- local prop=funcs:bt(st2,tostring(index)..': '..tostring(value),function()
- end)
- end
- end)
- end
- end
- function funcs:showchildren(prnt)
- funcs:clearscroll()
- local st = t
- if prnt:IsA'Instance' then
- local back=funcs:bt(st,'Show me options for '..prnt.Name,function()
- funcs:showoptions(prnt)
- end)
- for i,v in next, prnt:children() do
- pcall(function()
- if prnt:IsA'Instance' then
- local sub=' - '..v.ClassName
- pcall(function()
- if prnt==game then
- sub=''
- end
- end)
- local child=funcs:bt(st,v.Name..sub,function()
- funcs:showoptions(v)
- end)
- end
- end)
- end
- end
- end
- function funcs:showservs()
- funcs:clearscroll()
- local st = t
- local servs = {};
- for i,v in next, game:children() do
- pcall(function()
- if #v:children() > 0 then
- table.insert(servs,v)
- end
- end)
- end
- local child=funcs:bt(st,'SHOW ME ALL THE DAMN SERVICES!',function()
- funcs:showoptions(game)
- end)
- for i,v in next, servs do
- local child = funcs:bt(st,v.Name,function()
- funcs:showoptions(v)
- end)
- end
- end
- funcs:showservs()
- end)
- local Audios={};
- local CurrentPlaying = nil
- function Functions:AddSound(Id)
- for Index, Sound in next, Audios do
- if Sound:IsA'Sound' then
- Sound:Stop()
- Sound.PlayOnRemove=false
- end
- end
- local Sound = Instance.new('Sound', Monitor)
- Sound.SoundId=Functions:Asset(Id)
- Sound.Volume=.9
- CurrentPlaying = Sound
- table.insert(Audios, Sound)
- return Sound
- end
- function Functions:IntegerLerp(a,b,c)
- return a + (b - a) * c;
- end
- Functions:CreateProgram('Messenger',485845332,'MGR','Self explanitory... idiot', function(HF,TF,CF)
- end)
- local cur = nil
- local curSound = nil
- Functions:CreateProgram('SmAudio', 64646186, 'SmA', 'An archive of selected music just for you ;) with extra features as well', function(HF,TF,CF)
- local title = Functions:MakeNewUi('TextLabel')
- title.TextColor3 = CurrentPlayerData[3]
- title.TextStrokeTransparency=1
- title.Size=ud(1,0,.2,0)
- title.Text = 'SmAudio Alpha'
- title.TextXAlignment='Center'
- title.TextYAlignment='Center'
- title.Font = OS.Settings.Fonts.Header
- title.BackgroundTransparency=1
- title.Parent=CF
- title.BackgroundColor3 = CurrentPlayerData[4]
- spawn(function()
- wait(1)
- Effects:Underline(title, 15, 80, 2, CurrentPlayerData[3], true)
- end)
- local scroll = Functions:MakeNewUi('ScrollingFrame')
- scroll.Size=ud(.8,0,.8,0)
- scroll.Position = ud(.1,0,.2,0)
- scroll.BackgroundTransparency=0
- scroll.TopImage=Functions:Asset(317839361)
- scroll.MidImage=Functions:Asset(317839361)
- scroll.BottomImage=Functions:Asset(317839361)
- scroll.ScrollBarThickness = 5
- scroll.Parent=CF
- scroll.BackgroundColor3 = CurrentPlayerData[4]
- local max = 0
- spawn(function()
- local y = 0
- repeat game:service'RunService'.RenderStepped:wait()
- y=Functions:IntegerLerp(y,max,.02)
- --print(max)
- --print(y)
- --scroll.CanvasSize=ud(0,0,0,y)
- until CF.Parent == nil
- end)
- local play,pause,sound = Functions:Asset(745599404),Functions:Asset(745599001),Functions:Asset(176572847)
- local Loaded = 0
- for i, Id in next, OS.Sounds do
- delay((math.random()/(math.random()+.2))*3, function()
- local Market = game:service'MarketplaceService'
- local Asset = Market:GetProductInfo(Id)
- local Song = Functions:MakeNewUi('ImageButton')
- Song.Parent=scroll
- Song.Image = play
- local clr=CurrentPlayerData[3]
- local clr2=CurrentPlayerData[4]
- Song.BackgroundColor3=clr
- Song.Size=ud(0,45,0,45)
- Song.BackgroundTransparency=1
- local y = (Song.Size.Y.Offset+2)*(i-1)
- max=max+(Song.Size.Y.Offset+2)
- local x = Song.Size.X.Offset
- local author = Functions:MakeNewUi('TextLabel')
- author.TextColor3 = CurrentPlayerData[3]
- author.Size=ud(1,-x+10,0,20)
- author.Position = ud(0,x+10,0,y)
- author.Text = 'Author '..Asset.Creator.Name..' ; '..Asset.Creator.Id
- author.TextXAlignment='Left'
- author.TextYAlignment='Center'
- author.TextSize = 16
- author.Font = OS.Settings.Fonts.Header
- author.BackgroundTransparency=1
- author.TextTransparency=1
- author.Parent=scroll
- author.BackgroundColor3 = CurrentPlayerData[3]
- local name = Functions:MakeNewUi('TextLabel')
- name.TextColor3 = CurrentPlayerData[3]
- name.Size=ud(1,-x+10,0,20)
- name.Position = ud(0,x+10,0,y+(author.TextSize+2))
- name.Text = 'Name '..Asset.Name
- name.TextXAlignment='Left'
- name.TextYAlignment='Center'
- name.TextSize = 12
- name.TextTransparency=1
- name.Font = OS.Settings.Fonts.Header
- name.BackgroundTransparency=1
- name.Parent=scroll
- name.BackgroundColor3 = CurrentPlayerData[3]
- local desc = Functions:MakeNewUi('TextLabel')
- desc.TextColor3 = CurrentPlayerData[3]
- local alg = (((name.TextBounds.X+author.TextBounds.X)/1.5)+(10+(author.TextSize+name.TextSize)))
- desc.Size=ud(1,-x-(alg+scroll.ScrollBarThickness),0,46)
- desc.Position = ud(1,0,0,y-1)
- desc.Text = Asset.Creator.Name..': '..Asset.Description
- desc.BorderSizePixel=0
- desc.BorderColor3 = CurrentPlayerData[3]
- desc.TextWrapped=true
- desc.TextXAlignment='Left'
- desc.TextTransparency=1
- desc.TextYAlignment='Top'
- desc.TextSize = 12
- desc.Font = OS.Settings.Fonts.Header
- desc.BackgroundTransparency=1
- desc.Parent=scroll
- desc.BackgroundColor3 = scroll.BackgroundColor3
- desc.ClipsDescendants=false
- local line = Functions:MakeNewUi('TextLabel')
- line.TextColor3 = CurrentPlayerData[3]
- line.Size=ud(0,1,1,0)
- line.Position = ud(0,-4,0,0)
- line.Text = ''
- line.BackgroundTransparency=0
- line.BackgroundColor3 = CurrentPlayerData[3]
- line.Parent=desc
- if Asset.Description=='Audio' or Asset.Description=='RenderMesh' then
- desc:Destroy()
- else
- desc:TweenPosition(ud(0,x+alg,0,y-1),'Out','Quint',1,true)
- end
- Song.Position = ud(0,-x,0,y)
- Song.ZIndex=8
- Song.MouseEnter:connect(function()
- local t=clr2
- local tt=.15
- clr=c3(t.r-tt,t.b-tt,t.g-tt)
- clr2=CurrentPlayerData[3]
- end)
- Song.MouseLeave:connect(function()
- clr=CurrentPlayerData[3]
- clr2=CurrentPlayerData[4]
- end)
- Song.MouseButton1Click:connect(function()
- if cur == Song then
- curSound:Pause()
- cur=nil
- else
- cur=Song
- curSound = Functions:AddSound(Id)
- curSound.Looped = true
- curSound:Play()
- clr=CurrentPlayerData[3]
- clr2=CurrentPlayerData[4]
- end
- end)
- spawn(function()
- for i = 0,1.05,.05 do
- desc.TextTransparency=1-i
- desc.BackgroundTransparency=1-i
- name.TextTransparency=1-i
- author.TextTransparency=1-i
- game:service'RunService'.RenderStepped:wait()
- end
- end)
- spawn(function()
- repeat game:service'RunService'.RenderStepped:wait()
- if cur == Song then
- Song.Image = pause
- else
- Song.Image = play
- end
- Song.BackgroundColor3=Song.BackgroundColor3:lerp(clr,.25)
- Song.ImageColor3=Song.ImageColor3:lerp(clr2,.25)
- until CF.Parent == nil
- end)
- Song:TweenPosition(ud(0,0,0,y),'Out','Quint',.5,true)
- Loaded = Loaded + 1
- end)
- end
- local ii=0
- repeat
- wait()
- title.Text = 'Loading Assets #'..Loaded
- ii=Functions:IntegerLerp(ii,max+10,.04)
- scroll.CanvasSize=ud(0,0,0,ii)
- scroll.CanvasPosition=Vector2.new(0,ii)
- until Loaded == #OS.Sounds
- title.Text = 'SmAudio Beta'
- end)
- function Functions:GeneratePrograms(Distance)
- --print'k'
- local Over, Down=0,0
- for Index, Data in next, OS.Apps.Qeued do
- if Down > 7 then
- return
- end
- local maximized,ump,ums
- lrs:wait()
- local Icon = Functions:MakeNewUi('ImageButton')
- Icon.Image=Functions:PlayerImage(Host)
- Icon.Parent=MainFrame
- Icon.BackgroundColor3=CurrentPlayerData[4]
- Icon.Image=Functions:Asset(Data[2])
- Icon.Size=ud(0,50,0,50)
- Icon.ZIndex=2
- Icon.ImageTransparency=0
- local IconName = Functions:MakeNewUi('TextLabel')
- IconName.Font=OS.Settings.Fonts.Header
- IconName.Parent=Icon
- IconName.TextYAlignment='Bottom'
- IconName.TextSize = 10
- IconName.Text= Data[1]
- IconName.Size=ud(1,0,0,20)
- IconName.Position=ud(0,0,1,-20)
- IconName.ZIndex=2
- local bgtp = 1
- Icon.MouseEnter:connect(function()
- bgtp=.5
- end)
- Icon.MouseLeave:connect(function()
- bgtp=1
- end)
- local oi = bgtp
- lrs:connect(function()
- oi=Functions:IntegerLerp(oi,bgtp,.3)
- Icon.BackgroundTransparency=oi
- end)
- OS.Apps.Generated[Data[1]]=Icon
- if Over >= 13 then
- Down = Down + 1
- Over = 0
- end
- Icon.Position=ud(0,15+(60*(Over)),0,15+(60*(Down)))
- Over = Over + 1
- Icon.ZIndex=2
- local oic
- oic=Icon.MouseButton1Click:connect(function()
- local AlreadyOpen=false
- for Index, Ting in next, OS.Apps.Open do
- for i = 1,#Ting do
- if Data[i] == Ting[i] then
- AlreadyOpen=true
- end
- end
- end
- if AlreadyOpen then
- warn'nop'
- return
- end
- table.insert(OS.Apps.Open,{Data[1],Data[2],Data[3]})
- OS.RecentlyUsedPrograms[Data[4]]=Data
- local HolderFrame = Functions:MakeNewUi('Frame')
- HolderFrame.ZIndex=3
- HolderFrame.BackgroundTransparency=0
- HolderFrame.BorderSizePixel=.1
- HolderFrame.BorderColor3=CurrentPlayerData[3]
- HolderFrame.Size=ud(0,600,0,400)
- HolderFrame.Name='HF'
- HolderFrame.BackgroundColor3=CurrentPlayerData[3]
- HolderFrame.Position = Functions:Center(HolderFrame)
- HolderFrame.Parent = MainFrame
- maximized,ump,ums=false,HolderFrame.Position,HolderFrame.Size
- local function Enable()
- for i,gui in next, MainFrame:children() do
- if gui:IsA'ImageButton' then
- gui.Visible=true
- end
- end
- end
- local function Disable()
- for i,gui in next, MainFrame:children() do
- if gui:IsA'ImageButton' then
- gui.Visible=false
- end
- end
- end
- local ev1
- ev1=HolderFrame.MouseEnter:connect(function()
- --print'k1'
- Disable()
- end)
- local ev2
- ev2=HolderFrame.MouseLeave:connect(function()
- --print'k2'
- Enable()
- end)
- local InfoFrame = Functions:MakeNewUi('Frame')
- InfoFrame.ZIndex=4
- InfoFrame.BackgroundTransparency=0
- InfoFrame.Size=ud(1,0,0,15)
- InfoFrame.Name='TF'
- InfoFrame.BackgroundColor3=CurrentPlayerData[3]
- for i = 1,3 do
- i=i
- local CButt = Functions:MakeNewUi('ImageButton')
- CButt.Image=Functions:Asset(625953771)
- CButt.Parent=InfoFrame
- CButt.ImageTransparency=.15
- local OCF
- --505680534
- spawn(function()
- local up=.75
- local r,g,b=0,0,0
- if (i==1) then
- r,g,b=.8,.01,.01
- elseif (i==2) then
- r,g,b=.95,.95,0
- elseif (i==3) then
- r,g,b=0,.7,0
- end
- CButt.ImageColor3 = c3(r,g,b)
- CButt.MouseEnter:connect(function()
- for i = 0,1,.1 do
- CButt.ImageColor3 = CButt.ImageColor3:lerp(c3(r+up,g+up,b+up),.13)
- lrs:wait()
- end
- end)
- CButt.MouseLeave:connect(function()
- for i = 0,1,.1 do
- CButt.ImageColor3 = CButt.ImageColor3:lerp(c3(r,g,b),.13)
- lrs:wait()
- end
- end)
- end)
- --if not OCF then OCF=function()print'missing func'end;end
- if (i==1) then
- r,g,b=.8,.01,.01
- local evv
- ev1:disconnect()
- ev2:disconnect()
- evv=CButt.MouseButton1Click:connect(function()
- for Index, Ting in next, OS.Apps.Open do
- if Data[1] == Ting[1] then
- table.remove(OS.Apps.Open, Index)
- end
- end
- evv:disconnect()
- local pos = HolderFrame.Position
- HolderFrame.Active=false
- HolderFrame:Destroy()
- end)
- elseif (i==2) then
- r,g,b=.95,.95,0
- local evv
- evv=CButt.MouseButton1Click:connect(function()
- if maximized then
- HolderFrame:TweenSizeAndPosition(ums,ump,'Out','Sine',.3,true)
- maximized=false
- else
- HolderFrame:TweenSizeAndPosition(ud(1,2,1,-50),ud(0,-1,0,-1),'Out','Quint',.3,true)
- maximized=true
- end
- end)
- elseif (i==3) then
- r,g,b=0,.7,0
- local evv
- ev1:disconnect()
- ev2:disconnect()
- for Index, Ting in next, OS.Apps.Open do
- if Data[1] == Ting[1] then
- table.remove(OS.Apps.Open, Index)
- end
- end
- evv=CButt.MouseButton1Click:connect(function()
- evv:disconnect()
- HolderFrame:TweenSizeAndPosition(ud(0,50,0,50),Icon.Position,'Out','Quint',.5,true)
- wait(.2)
- HolderFrame:Destroy()
- end)
- --Functions:AddToTaskBar(Data[1],Data[2],{ump,ums})
- end
- --CButt.MouseButton1Click:connect(OCF)
- CButt.Size=ud(0,12,0,12)
- CButt.Position=Functions:CenterOffset(CButt,ud(.5,-(15*i),0,0))
- --CButt:TweenPosition(Functions:CenterOffset(CButt,ud(0,0,0,-50),'Out','Back',1,true))
- end
- InfoFrame.Parent = HolderFrame
- local InfoIcon = Functions:MakeNewUi('ImageButton')
- InfoIcon.Parent=InfoFrame
- InfoIcon.Image=Functions:Asset(Data[2])
- InfoIcon.Size=ud(0,12,0,12)
- InfoIcon.ImageTransparency=0
- InfoIcon.Position=ud(0,2,0,3)
- InfoIcon.ZIndex=4
- local InfoText = Functions:MakeNewUi('TextButton')
- InfoText.BackgroundTransparency=.5
- InfoText.FontSize='Size12'
- InfoText.Parent=InfoFrame
- InfoText.TextXAlignment='Left'
- InfoText.Text= Data[1]--..' \ '..Data[4]--'*C:\Users\\'..Host.Name..''
- InfoText.Size=ud(1,-40,1,0)
- InfoText.Position=ud(0,16,0,0)
- InfoText.ZIndex=4
- local md=false
- InfoText.MouseButton1Down:connect(function()
- md=true
- local origp=HolderFrame.Position
- local origs=ud(0,600,0,15)
- local origmp=OS.Assets.Mouse.Position
- HolderFrame.Size = ud(0,600,0,400)
- maximized=false
- spawn(function()
- repeat wait() until OS.MouseDown == false
- md=false
- end)
- while md do
- local mp={OS.Assets.Mouse.Position.X.Scale,OS.Assets.Mouse.Position.X.Offset,OS.Assets.Mouse.Position.Y.Scale,OS.Assets.Mouse.Position.Y.Offset};
- local fs={origs.X.Scale,origs.X.Offset,origs.Y.Scale,origs.Y.Offset};
- local fp={origp.X.Scale,origp.X.Offset,origp.Y.Scale,origp.Y.Offset};
- --local a,b=
- local x,y=mp[2]-(fs[2]/2),mp[4]-(fs[4]/2)
- --print(x,y)
- HolderFrame.Position=ud(0,x,0,y)
- lrs:wait()
- end
- end)
- InfoText.MouseButton1Up:connect(function()
- --md=false
- end)
- local ContentFrame = Functions:MakeNewUi('Frame')
- ContentFrame.ZIndex=4
- ContentFrame.BackgroundTransparency=.1
- ContentFrame.Size=ud(1,-2,1,-17)
- ContentFrame.Position=ud(0,1,0,16)
- ContentFrame.Name='CF'
- ContentFrame.BackgroundColor3=CurrentPlayerData[4]
- ContentFrame.Parent = HolderFrame
- Data[5](HolderFrame, TitleFrame, ContentFrame)
- end)
- end
- end
- local AtMainScreen=false
- function Functions:MakeHomeScreen()
- local Background_id = CurrentPlayerData[5]
- local BackgroundImg = Functions:MakeNewUi('ImageLabel')
- BackgroundImg.Image=Functions:Asset(Background_id)
- BackgroundImg.Name='Background'
- BackgroundImg.BackgroundTransparency=1
- BackgroundImg.ImageTransparency = .1
- BackgroundImg.Parent=MainFrame
- BackgroundImg.ZIndex=1
- BackgroundImg.Size=ud(1,0,1,0)
- OS.Assets.Background = BackgroundImg
- for i = 0,1.025,.025 do
- MainFrame.BackgroundTransparency=i
- lrs:wait()
- end
- local TskBar = Functions:MakeNewUi('TextLabel')
- TskBar.Size = ud(1,0,0,52)
- TskBar.Parent = MainFrame
- TskBar.BackgroundColor3 = CurrentPlayerData[3]
- TskBar.BackgroundTransparency = .5
- TskBar.Position = ud(0,0,1,0)
- TskBar.ZIndex = 9
- TskBar:TweenPosition(ud(0,0,1,-52.5),'Out','Quint',1.2,true)
- for i = 0,.15,.05 do
- local TskBarShader = Functions:MakeNewUi('TextLabel')
- TskBarShader.BackgroundTransparency = .8
- TskBarShader.BackgroundColor3 = CurrentPlayerData[4]
- TskBarShader.BorderSizePixel = 0
- TskBarShader.Size = ud(1,0,.05,0)
- TskBarShader.Position = ud(0,0,-i,0)
- delay(.2,function()
- TskBarShader:TweenPosition(ud(0,0,i+5,0),'Out','Quint',.5,true)
- end)
- TskBarShader.ZIndex = 9
- TskBarShader.Name = 'shd'..i
- --TskBar:ClearAllChildren()
- TskBarShader.Parent = TskBar
- end
- --//tem\\
- local TimeLabel = Instance.new'TextLabel'
- TimeLabel.BackgroundTransparency = 1
- TimeLabel.BackgroundColor3 = c3(255,255,255)
- TimeLabel.BorderSizePixel = 0
- TimeLabel.ZIndex = 9
- TimeLabel.TextColor3 = CurrentPlayerData[4]
- TimeLabel.Font = OS.Settings.Fonts.Sub_Header
- TimeLabel.TextScaled = true
- TimeLabel.Name = 'TimeLabel'
- TimeLabel.TextWrapped = true
- TimeLabel.TextStrokeTransparency = .9
- TimeLabel.Text = '00:00:00 PM'
- TimeLabel.Parent = TskBar
- TimeLabel.Size = ud(.08,0,.3,0)
- TimeLabel.Position = ud(.92,-10,0,6)
- local DateLabel = Instance.new'TextLabel'
- DateLabel.BackgroundTransparency = 1
- DateLabel.BackgroundColor3 = c3(255,255,255)
- DateLabel.BorderSizePixel = 0
- DateLabel.ZIndex = 9
- DateLabel.TextColor3 = CurrentPlayerData[4]
- DateLabel.Font = OS.Settings.Fonts.Sub_Header
- DateLabel.TextScaled = true
- DateLabel.Name = 'DateLabel'
- DateLabel.TextWrapped = true
- DateLabel.TextStrokeTransparency = .9
- DateLabel.Text = '00/00/0000'
- DateLabel.Parent = TskBar
- DateLabel.Size = ud(.08,0,.3,0)
- DateLabel.Position = ud(.92,-10,.6,-6)
- local Logo = Functions:MakeNewUi'ImageButton'
- Logo.BackgroundTransparency = 1
- Logo.BackgroundColor3 = CurrentPlayerData[3]
- Logo.BorderSizePixel = 0
- Logo.ZIndex = 10
- Logo.Image = Functions:Asset(265489553)
- --Logo.TextColor3 = CurrentPlayerData[4]
- --Logo.Font = 'Cartoon'
- --Logo.FontSize='Size36'
- Logo.Name = 'Logo'
- --Logo.TextStrokeTransparency = .9
- --Logo.Text = '¶Y'
- Logo.Parent = TskBar
- Logo.Size = ud(0,40,0,50)
- Logo.Position = ud(0,1,0,1)
- local clrcancel=false
- local igc,bgc=CurrentPlayerData[4],CurrentPlayerData[3]
- Logo.MouseEnter:connect(function()
- local continue=true
- clrcancel=true
- clrcancel=false
- spawn(function()
- for i = 0,.57,.07 do
- Logo.BackgroundTransparency=1-i
- lrs:wait()
- end
- end)
- igc,bgc=CurrentPlayerData[3],CurrentPlayerData[4]
- end)
- Logo.MouseLeave:connect(function()
- local continue=true
- clrcancel=true
- clrcancel=false
- spawn(function()
- for i = 0,.57,.07 do
- Logo.BackgroundTransparency=.5+i
- lrs:wait()
- end
- end)
- igc,bgc=CurrentPlayerData[4],CurrentPlayerData[3]
- end)
- local StartFrameHolder = Functions:MakeNewUi('Frame')
- StartFrameHolder.ZIndex=5
- StartFrameHolder.BackgroundTransparency=1
- StartFrameHolder.Size=ud(0,200,.6,0)
- StartFrameHolder.Position = ud(0,0,.4,-52)
- StartFrameHolder.Parent = MainFrame
- local StartFrame = Functions:MakeNewUi('Frame')
- StartFrame.ZIndex=9
- StartFrame.BackgroundTransparency=.5
- StartFrame.Size=ud(1,0,1,0)
- StartFrame.BorderSizePixel=2
- StartFrame.Name='SF'
- StartFrame.BorderColor3=CurrentPlayerData[4]
- StartFrame.Position = ud(0,0,1,0)
- StartFrame.Parent = StartFrameHolder
- local TestButton = Functions:MakeNewUi('TextButton')
- TestButton.ZIndex=6
- TestButton.BackgroundTransparency=.7
- TestButton.Size=ud(1,-6,0,50)
- TestButton.Position = ud(0,3,0,3)
- TestButton.Text='TEST NOTIFICATIONS'
- TestButton.Parent = StartFrame
- TestButton.MouseButton1Click:connect(function()
- Functions:Notification('Just testing the dank re-alignment and stuff, kek.')
- end)
- local sfcc,detection=false,false
- StartFrame.MouseEnter:connect(function()
- detection=false
- sfcc=false
- end)
- StartFrame.MouseLeave:connect(function()
- detection=true
- sfcc=true
- end)
- local Extended=false
- local function Open(trans)
- StartFrame:TweenPosition(ud(0,0,0,0),'Out','Sine',.5,true)
- for i = 0,1.05,.05 do
- for a,b in next, StartFrame:children() do
- if b.Name ~= 'SF' then
- pcall(function()
- b.TextTransparency=b.TextTransparency-.05
- end)
- pcall(function()
- b.BackgroundTransparency=bBackgroundTransparency-.05
- end)
- pcall(function()
- b.ImageTransparency=b.ImageTransparency-.05
- end)
- end
- end
- StartFrame.BackgroundTransparency=1-.05
- lrs:wait()
- end
- StartFrame.BackgroundTransparency=trans
- Extended=true
- end
- local function Close(trans)
- StartFrame:TweenPosition(ud(0,0,1,0),'Out','Sine',.5,true)
- for i = 0,1,.05 do
- for a,b in next, StartFrame:children() do
- if b.Name ~= 'SF' then
- pcall(function()
- b.TextTransparency=b.TextTransparency+.05
- end)
- pcall(function()
- b.BackgroundTransparency=bBackgroundTransparency+.05
- end)
- pcall(function()
- b.ImageTransparency=b.ImageTransparency+.05
- end)
- end
- end
- StartFrame.BackgroundTransparency=trans+.05
- lrs:wait()
- end
- StartFrame.BackgroundTransparency=1
- Extended=false
- end
- local trans=.45
- PlayerMouse.Button1Down:connect(function()
- if sfcc and Extended then
- detection=false
- Close(trans)
- end
- end)
- PlayerMouse.Button2Down:connect(function()
- if sfcc and Extended then
- detection=false
- Close(trans)
- end
- end)
- Logo.MouseButton1Down:connect(function(x,y)
- if Extended then
- Close(trans)
- else
- Open(trans)
- end
- end)
- local Months = {
- "January", "Febreuary", "March", "April", "May", "June",
- "July", "August", "September", "October", "November", "December"
- }
- local MonthDays = {
- 31, 28, 31, 30, 31, 30,
- 31, 31, 30, 31, 30, 31
- }
- function getDay(Date, year)
- local month, date = Date:match("(%a+)%s*(%d+)")
- local DAYS = tonumber(date)
- local leaps = math.floor( (year-2011)/4 - .25 ) + 1
- local Days = {"Saturday", "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday"}
- for _, v in ipairs(MonthDays) do
- if Months[_] == month then break end
- DAYS = DAYS + v
- end
- DAYS = math.floor( DAYS + (year-2017) * 365 ) + leaps
- return Days[ (DAYS%7 == 0 and 7 or DAYS%7) ]
- end
- function getMonthAndDate(days, year)
- local leap = year%4 == 0 and 1 or 0
- local month;
- for _, v in ipairs(MonthDays) do
- if (days-v) < 1 then
- month = Months[_]
- break
- end
- days = days - v
- end
- return month, days
- end
- local LTime,LDate = '',''
- local M = ''
- Time = function()
- local secondsInDay = 60*60*24
- local time = tick()
- local year = math.floor(1970 + time/(365.25*86400))
- local days = math.ceil(((time % (86400*365.25)) )/86400 + 0.25)
- local month, date = getMonthAndDate(days, year)
- local day = getDay(month..date, year)
- local tick = math.fmod(tick(),secondsInDay)
- local hour = math.floor(tick/3600) + 5 + -5
- local minute = math.floor(tick/60 - 60*hour)
- local seconds = math.floor(math.fmod(tick,60))
- if (hour > 12) then
- M = ' PM' hour = hour - 12
- else
- M = ' AM'
- end
- if hour == 0 then
- hour = 12
- end
- if hour == 24 then
- hour = 1
- end
- LTime = string.format("%2.0f:%02.0f",hour,minute)
- local MonthNums = {
- ["January"]=1, ["February"]=2, ["March"]=3, ["April"]=4, ["May"]=5, ["June"]=6,
- ["July"]=7, ["August"]=8, ["September"]=9, ["October"]=10, ["November"]=11, ["December"]=12
- }
- month=MonthNums[month]
- LDate = month..'/'..(days-1)..'/'..year
- TimeLabel.Text = LTime..M
- DateLabel.Text = LDate
- Logo.ImageColor3 = Logo.ImageColor3:lerp(igc,.2)
- Logo.BackgroundColor3 = Logo.BackgroundColor3:lerp(bgc,.2)
- end
- game:service'RunService'.Heartbeat:connect(Time)
- AtMainScreen=true
- local txt=''
- if Official then
- txt='Welcome back, '..CurrentPlayerData[1]..', your last session\'s saved data has been loaded'
- else
- txt='Hello, '..CurrentPlayerData[1]..'. Your data will be saved at the end of this session'
- end
- delay(math.random(1,4),function()
- delay(.3,function()
- Functions:PlayerImgNotification('SavageMunkey', 'Creator & Founder of ¶YaviOS - SavageMunkey')
- end)
- local fr,tl = Functions:Notification(txt,6)
- end)
- Functions:GeneratePrograms({25,20})
- AtMainScreen=true
- return warn'Homescreen Loaded'
- end
- function Functions:PlayerImgNotification(Plr, Type)
- if not AtMainScreen then return end
- local sz=50
- if Type=='join' then
- local fr,tl=Functions:Notification('New Player has joined, '..tostring(Plr)..'.', 4)
- tl.Size=ud(1,-(sz+5),1,0)
- tl.Position=ud(0,sz+5,0,0)
- local UserImage = Functions:MakeNewUi('ImageLabel')
- UserImage.Image=Functions:PlayerImage(tostring(Plr))
- UserImage.Parent=fr
- UserImage.Size=ud(0,sz,1,0)
- UserImage.ImageTransparency=0
- UserImage.Position=ud(0,4,0,0)
- UserImage.ZIndex=8
- wait(4*1.5)
- for i = 0,1.05,.05 do UserImage.ImageTransparency=i lrs:wait() end
- elseif Type=='rmv' then
- local fr,tl=Functions:Notification('Player has left, '..tostring(Plr)..'.', 4)
- tl.Size=ud(1,-(sz+5),1,0)
- tl.Position=ud(0,sz+5,0,0)
- local UserImage = Functions:MakeNewUi('ImageLabel')
- UserImage.Image=Functions:PlayerImage(tostring(Plr))
- UserImage.Parent=fr
- UserImage.Size=ud(0,sz,1,0)
- UserImage.ImageTransparency=0
- UserImage.Position=ud(0,4,0,0)
- UserImage.ZIndex=8
- wait(4*1.5)
- for i = 0,1.05,.05 do UserImage.ImageTransparency=i lrs:wait() end
- else
- local fr,tl=Functions:Notification(Type, 4)
- tl.Size=ud(1,-(sz+5),1,0)
- tl.Position=ud(0,sz+5,0,0)
- local UserImage = Functions:MakeNewUi('ImageLabel')
- UserImage.Image=Functions:PlayerImage(tostring(Plr))
- UserImage.Parent=fr
- UserImage.Size=ud(0,sz,1,0)
- UserImage.ImageTransparency=0
- UserImage.Position=ud(0,4,0,0)
- UserImage.ZIndex=8
- wait(4*1.5)
- for i = 0,1.05,.05 do UserImage.ImageTransparency=i lrs:wait() end
- end
- end
- local Notifications={};
- local Notifs=0
- function Functions:AdjustNotifPositions()
- local upv=0
- for i, data in next, Notifications do
- --warn('('..tostring(ud(1,-200,.8,-(60*upv)))..')',#Notifications)
- pcall(function()
- data[1]:TweenPosition(ud(1,-200,.8,-(60*upv)),'Out','Back',.5,true)
- end)
- upv=upv+1
- wait(.1)
- end
- end
- function Functions:Notification(Text, ExitDelay)
- if not ExitDelay then ExitDelay=4 end
- if not AtMainScreen then return end
- local v=false
- local Frame = Functions:MakeNewUi('Frame')
- Frame.ZIndex=8
- Frame.BackgroundTransparency=.25
- Frame.Size=ud(0,200,0,55)
- Frame.BackgroundColor3=CurrentPlayerData[4]
- Frame.Position = ud(1,0,.8,-(60*Notifs))
- Frame.Parent=MainFrame
- Frame:TweenPosition(ud(1,-200,.8,-(60*Notifs)),'Out','Sine',2,true)
- table.insert(Notifications,{Frame,ud(1,-200,.8,-(60*Notifs))})
- local Shader1 = Functions:MakeNewUi('Frame')
- Shader1.ZIndex=9
- Shader1.BackgroundTransparency=.9
- Shader1.Size=ud(0,2,1,0)
- Shader1.BackgroundColor3=CurrentPlayerData[4]
- Shader1.Position = ud(0,-2,0,0)
- Shader1.Parent=Frame
- local Shader2 = Functions:MakeNewUi('Frame')
- Shader2.ZIndex=9
- Shader2.BackgroundTransparency=.8
- Shader2.Size=ud(0,1,1,0)
- Shader2.BackgroundColor3=CurrentPlayerData[4]
- Shader2.Position = ud(0,-1,0,0)
- Shader2.Parent=Frame
- spawn(function()
- Shader1:TweenPosition(ud(0,0,0,0),'Out','Linear',.4,true)
- wait(.1)
- Shader2:TweenPosition(ud(0,1,0,0),'Out','Linear',.4,true)
- end)
- local TLabel = Functions:MakeNewUi('TextButton')
- TLabel.TextColor3=CurrentPlayerData[4]
- TLabel.Position=ud(0,4,0,0)
- TLabel.ZIndex=9
- TLabel.Active=true
- TLabel.BackgroundTransparency=.98
- TLabel.TextWrapped=true
- TLabel.Size=ud(1,-4,1,0)
- TLabel.TextXAlignment='Left'
- --TLabel.TextYAlignment='Top'
- TLabel.Font=OS.Settings.Fonts.Sub_Header
- TLabel.FontSize='Size12'
- TLabel.TextStrokeColor3=CurrentPlayerData[4]
- TLabel.TextStrokeTransparency=1
- TLabel.TextTransparency=1
- TLabel.Parent=Frame
- Notifs=Notifs+1
- local tic = Functions:Sound(230336790,false)
- tic:Play()
- for i = 0,1.02,.02 do
- Frame.BackgroundColor3=Frame.BackgroundColor3:lerp(CurrentPlayerData[3],.2)
- Frame.BackgroundTransparency=1.5-i
- TLabel.TextStrokeTransparency=1.9-i
- TLabel.TextTransparency=1-i
- lrs:wait()
- end
- local cc=true
- local function Close()
- if (not cc) then return end
- --print'3'
- Frame:TweenPosition(ud(1,0,.8,Frame.Position.Y.Offset),'Out','Sine',3,true)
- for i = 0,1.015,.02 do
- --Frame.BackgroundColor3=Frame.BackgroundColor3:lerp(c3(0,0,0),.2)
- Frame.BackgroundTransparency=.5+i
- Shader1.BackgroundTransparency=.9+i
- Shader2.BackgroundTransparency=.8+i
- TLabel.TextStrokeTransparency=.9+i
- TLabel.TextTransparency=i
- lrs:wait()
- end
- val=true
- Frame:Destroy()
- for i,v in next, Notifications do
- if v[1]==Frame then
- table.remove(Notifications,i)
- end
- end
- Notifs=Notifs-1
- Functions:AdjustNotifPositions()
- end
- local ev
- ev=TLabel.MouseButton1Click:connect(function()
- --print'k'
- spawn(Close)
- wait()
- cc=false
- ev:disconnect()
- end)
- spawn(function()
- if cc then
- Effects:Type(TLabel, Text, 'In',.01)
- wait(ExitDelay*1.2)
- --print'k2'
- spawn(Close)
- wait()
- cc=false
- ev:disconnect()
- end
- end)
- return Frame, TLabel
- end
- function Functions:CreateLogin()
- local BFrame = Functions:MakeNewUi('Frame')
- BFrame.ZIndex=4
- BFrame.BackgroundTransparency=1
- BFrame.Size=ud(1,0,1,0)
- BFrame.Position = ud(0,0,0,0)
- BFrame.Parent=MainFrame
- local TransFrame = Functions:MakeNewUi('Frame')
- TransFrame.ZIndex=8
- TransFrame.BackgroundTransparency=1
- TransFrame.Parent=MainFrame
- local Start = Functions:MakeNewUi('TextButton')
- local txt='Welcome to SaviOS, '..Host.Name..'.'
- Start.Text=txt
- Start.Font=OS.Settings.Fonts.Header
- Start.TextColor3=CurrentPlayerData[4]
- Start.Position=ud(0,0,0,-18)
- Start.BackgroundTransparency=1
- Start.TextTransparency=1
- Start.Parent=BFrame
- local Sub = Functions:MakeNewUi('TextLabel')
- Sub.Parent=BFrame
- Sub.TextColor3=CurrentPlayerData[4]
- Sub.Text='Loading Decal and Sound Assets.'
- Sub.Position=ud(0,0,0,25-18)
- Sub.BackgroundTransparency=1
- Sub.TextTransparency=1
- Sub.ZIndex=6
- local Circ = Functions:MakeNewUi('ImageLabel')
- Circ.Image=Functions:Asset(502107146)
- Circ.Parent=BFrame
- Circ.ImageTransparency=0
- Circ.ImageColor3 = CurrentPlayerData[3]
- Circ.Size=ud(0,350,0,400)
- Circ.Position=Functions:CenterOffset(Circ,ud(0,0,0,0))
- Circ.ZIndex=5
- local con=false
- spawn(function()
- Effects:Type(Start, txt, 'In',.06)
- local nspd=.5
- repeat wait(nspd)
- --Start.Text=txt
- Circ:TweenSizeAndPosition(ud(0,450,0,500),ud(.5,-450/2,.5,-250),'In','Back',nspd,true)
- wait(nspd)
- Circ:TweenSizeAndPosition(ud(0,350,0,400),ud(.5,-350/2,.5,-200),'Out','Quint',nspd,true)
- --Start.Text=txt..'|'
- until con
- end)
- for i = 0,1.025,.025 do
- Start.TextTransparency = 1-i
- MainFrame.BackgroundTransparency = 1-i
- lrs:wait()
- end
- local function finish_Load()
- Particles=false
- Effects:Type(Start, txt, 'Out',.02)
- Start.Text=''
- Circ:TweenSizeAndPosition(ud(0,15,0,20),ud(.5,-15/2,.5,-10),'In','Quint',2,true)
- wait(2)
- Circ:TweenSizeAndPosition(ud(0,950,0,1000),ud(.5,-950/2,.5,-500),'In','Back',1,true)
- wait(.2)
- for i = 0,1.025,.025 do
- Sub.TextTransparency = i
- Circ.ImageTransparency=i
- lrs:wait()
- end
- Circ:Destroy()
- BFrame.Size = ud(0,400,0,210)
- BFrame.Position = Functions:Center(BFrame)
- spawn(function()
- for i = 0,20,.1 do
- MainFrame.BackgroundColor3 = MainFrame.BackgroundColor3:lerp(CurrentPlayerData[3],.1)
- lrs:wait()
- end
- end)
- Sub.Text='Assets['..(#OS.Backgrounds+#OS.Sounds)..'] Loaded.'
- delay(.5,function()
- txt='Click here to begin'
- Effects:Type(Start, txt, 'In',.05)
- delay(.6,function()
- Start.Text=txt
- end)
- end)
- for i = 0,1.025,.025 do
- Sub.TextTransparency = 1-i
- lrs:wait()
- end
- end
- local con2=false
- delay(1,function()
- for i = 0,1.025,.025 do
- Sub.TextTransparency = 1-i
- lrs:wait()
- end
- delay(2,function()
- local tbl1={};
- local tbl2={OS.Backgrounds,OS.Sounds,OS.DecalAssets}
- for _,__ in next, tbl2 do
- for i, Id in next, __ do
- table.insert(tbl1, Id)
- end
- end
- for i,v in next, tbl1 do lrs:wait() end
- con=true
- finish_Load()
- con2=true
- end)
- end)
- repeat lrs:wait() until con2
- Start.TextTransparency = 0
- --MainFrame.Transparency = 0
- local LoginScreen
- local sclick
- sclick=Start.MouseButton1Down:connect(function()
- Sub:TweenPosition(ud(0,0,1,50),'In','Quint',1,true)
- delay(1, function()
- LoginScreen(false)
- end)
- sclick:disconnect()
- end)
- function LoginScreen(NewFrame)
- OS['Login']=LoginScreen
- if NewFrame then
- BFrame = Functions:MakeNewUi('Frame')
- BFrame.ZIndex=4
- BFrame.BackgroundTransparency=1
- BFrame.Size = ud(0,400,0,210)
- BFrame.Position = Functions:Center(BFrame)
- BFrame.Parent=MainFrame
- end
- pcall(function()
- Sub:Destroy()
- for i = 0,1.025,.025 do
- Start.TextTransparency = i
- lrs:wait()
- end
- Start.Parent=nil
- end)
- local UserImage = Functions:MakeNewUi('ImageLabel')
- UserImage.Image=Functions:PlayerImage(Host)
- UserImage.Parent=BFrame
- UserImage.Size=ud(0,100,0,100)
- UserImage.ImageTransparency=1
- UserImage.Position=Functions:CenterOffset(UserImage,ud(0,0,-1,0))
- UserImage:TweenPosition(Functions:CenterOffset(UserImage,ud(0,0,0,-50),'Out','Back',1,true))
- UserImage.ZIndex=8
- local UserImgFrame = Functions:MakeNewUi('ImageLabel')
- UserImgFrame.Image=Functions:Asset(502107146)
- UserImgFrame.Parent=BFrame
- UserImgFrame.ImageTransparency=0
- --UserImgFrame.ImageColor3 = c3(Monitor.Color.r+.2,Monitor.Color.g+.2,Monitor.Color.b+.2)
- UserImgFrame.Size=ud(0,100,0,100)
- UserImgFrame.Position=Functions:CenterOffset(UserImgFrame,ud(0,0,-1,0))
- UserImgFrame:TweenPosition(Functions:CenterOffset(UserImgFrame,ud(0,0,0,-50),'Out','Back',1,true))
- local Username = Functions:MakeNewUi('TextLabel')
- Username.Text = Host.Name
- Username.Parent = BFrame
- Username.TextTransparency=.9
- Username.Position=ud(0,0,1,0)
- Username.ZIndex=9
- Username:TweenPosition(ud(0,0,0,15),'Out','Quint',1,true)
- local Password = Functions:MakeNewUi('TextButton')
- Password.TextTransparency=1
- Password.Parent=BFrame
- Password.Position=ud(0,0,1,0)
- Password.Font=OS.Settings.Fonts.Sub_Header
- Password.TextStrokeColor3 = Password.TextColor3
- Password.MouseEnter:connect(function()
- Password.TextStrokeTransparency=.9
- end)
- Password.MouseLeave:connect(function()
- Password.TextStrokeTransparency=1
- end)
- local canclick=false
- Password.MouseButton1Down:connect(function(x,y)
- if not canclick then
- return
- end
- canclick=false
- --Effects:Particles(x,y)
- local val = Functions:LoginScreenGui(ud(0,400,0,28),{loop=true,ui=Password},true)
- print('dun',val)
- local ss
- ss=function(pp)
- num=0
- for i,v in next,pp:children() do
- num=num+1
- pcall(function()
- spawn(function()
- for i = 0,1.025,.025 do
- if v:IsA'TextButton' or v:IsA'TextBox' or v:IsA'TextLabel' then
- v.TextTransparency = i
- lrs:wait()
- end
- end
- end)
- end)
- pcall(function()
- spawn(function()
- for i = 0,1.025,.025 do
- if v:IsA'ImageLabel' then
- v.ImageTransparency = i
- lrs:wait()
- end
- end
- end)
- end)
- pcall(function()
- v:TweenPosition(ud(2,v.Position.X.Offset,v.Position.Y.Scale,v.Position.Y.Offset),'In','Sine',1,true)
- end)
- wait(.1)
- ss(v)
- end
- return num
- end
- ss(BFrame)
- wait((num+1.5)-(.4*num))
- BFrame:Destroy()
- Functions:MakeHomeScreen()
- return {}
- --canclick=true
- --Gui:Destroy()
- end)
- delay(.1,function()
- Password:TweenPosition(ud(0,0,0,45),'Out','Quint',1,true)
- end)
- spawn(function()
- Effects:Type(Password, 'Enter your Password', 'In',.03)
- canclick=true
- end)
- wait(.3)
- spawn(function()
- Effects:Underline(Username, 20, 70, 2, CurrentPlayerData[4], true)
- end)
- for i = 0,1.025,.01 do
- --UserName.TextTransparency = 1-i
- Password.TextTransparency = 1-i
- Username.TextTransparency = 1-i
- UserImage.ImageTransparency = 1-i
- lrs:wait()
- end
- Functions:IfRegistered(Host.Name, function(bool)
- if bool==true then
- for i = 0,20 do
- UserImgFrame.ImageColor3 = UserImgFrame.ImageColor3:lerp(c3(.25,1,.25),.1)
- lrs:wait()
- end
- elseif bool and not Official then
- for i = 0,20 do
- UserImgFrame.ImageColor3 = UserImgFrame.ImageColor3:lerp(c3(1,.25,.25),.1)
- lrs:wait()
- end
- else
- for i = 0,20 do
- UserImgFrame.ImageColor3 = UserImgFrame.ImageColor3:lerp(c3(.4,0,0),.1)
- lrs:wait()
- end
- end
- end)
- end
- end
- function Functions:Lerp(Speed)
- if Monitor and Monitor.Parent~=nil then
- ypcall(function()
- Monitor.CFrame = Monitor.CFrame:lerp(
- Host.Character.HumanoidRootPart.CFrame *
- CFrame.new(0,5.5,-6.5) *
- CFrame.Angles(-math.rad(12),0,0)
- , Speed)
- end)
- end
- end
- function Functions:Boot()
- script:ClearAllChildren()
- Functions:MakeMonitor()
- G = Instance.new('SurfaceGui', Monitor)
- G.Adornee = Monitor
- G.Face = Enum.NormalId.Back
- MainFrame = Functions:MakeNewUi('Frame')
- MainFrame.ZIndex=1
- MainFrame.BackgroundTransparency=.3
- MainFrame.BackgroundColor3 = CurrentPlayerData[3]
- MainFrame.Parent=G
- spawn(function()
- --wait(2)
- for i = 0,20,.1 do
- MainFrame.BackgroundColor3 = MainFrame.BackgroundColor3:lerp(CurrentPlayerData[4],.1)
- lrs:wait()
- end
- end)
- local MouseFrame = Instance.new('TextLabel', MainFrame)
- MouseFrame.Size = ud(0,5,0,5)
- MouseFrame.BackgroundTransparency = 1
- MouseFrame.Text = ''
- MouseFrame.ZIndex = 9
- MouseFrame.BackgroundColor3=c3(-1,-1,-1)
- MainFrame.MouseMoved:connect(function(x,y)
- if MouseFrame.Parent ~= nil then
- MouseFrame.Position = ud(0,x+3,0,y+6)
- end
- end)
- --200182847
- local MouseInner = Instance.new('ImageLabel', MouseFrame)
- OS.Assets.Mouse=MouseFrame
- MouseInner.Size = ud(0,5,0,5)
- MouseInner.Position = ud(0,-5,0,-7)
- MouseInner.ImageColor3 = CurrentPlayerData[3]
- MouseInner.Image = Functions:Asset(284205403)
- MouseInner.Name = 'AFriendlyMouse1'
- MouseInner.BackgroundTransparency = 1
- MouseInner.ZIndex = 10
- local MouseOuter = Instance.new('ImageLabel', MouseFrame)
- MouseOuter.Size = ud(0,7,0,7)
- MouseOuter.Position = ud(0,-6,0,-8)
- MouseOuter.ImageColor3 = CurrentPlayerData[4]
- MouseOuter.Image = Functions:Asset(284205403)
- MouseOuter.Name = 'AFriendlyMouse2'
- MouseOuter.BackgroundTransparency = 1
- MouseOuter.ZIndex = 9
- local sx,sy=90,100
- local mouseactive=true
- PlayerMouse.Button1Down:connect(function()
- OS.MouseDown = true
- if not mouseactive then return end
- local mus=Functions:Sound(341225236)
- mus.Pitch=3
- mus:Play()
- end)
- PlayerMouse.Button1Up:connect(function()
- OS.MouseDown = false
- if not mouseactive then return end
- local mds=Functions:Sound(341225236)
- mds.Pitch=2.5
- mds:Play()
- local RelativeUi=MouseFrame
- local x,y=RelativeUi.Position.X.Offset,RelativeUi.Position.Y.Offset
- local Circ = Functions:MakeNewUi('ImageLabel')
- Circ.Image=Functions:Asset(284205403)
- Circ.Parent=MainFrame
- Circ.ImageTransparency=0
- Circ.ImageColor3 = CurrentPlayerData[4]
- Circ.Size=ud(0,5,0,5)
- local backx,backy=5,6
- Circ.Position=ud(0,x-backx,0,y-backy)
- Circ.ZIndex=10
- spawn(function()
- Circ:TweenSizeAndPosition(ud(0,sx,0,sy),ud(0,(x-backx)-(sx/2),0,(y-backy)-(sy/2)),'Out','Sine',1,true)
- for i = 0,1.05,.05 do
- Circ.ImageTransparency=i
- lrs:wait()
- end
- Circ:Destroy()
- end)
- end)
- MainFrame.MouseEnter:connect(function(x,y)
- mouseactive=true
- game:service'UserInputService'.MouseIconEnabled=false
- OS.Functions:HideChar()
- end)
- MainFrame.MouseLeave:connect(function(x,y)
- mouseactive=false
- game:service'UserInputService'.MouseIconEnabled=true
- OS.Functions:ShowChar()
- end)
- --Functions:CreateLogin()
- Functions:MakeHomeScreen()
- end
- lrs:connect(function()
- Functions:Lerp(.2)
- end)
- Character.Humanoid.Died:connect(function()
- Monitor.Parent:Destroy()
- game:service'UserInputService'.MouseIconEnabled=true
- script:Destroy()
- end)
- Host.Chatted:connect(function(msg)
- if msg=='g/r' then
- Monitor:Destroy()
- game:service'UserInputService'.MouseIconEnabled=true
- script:Destroy()
- end
- end)
- local plrz=game:service'Players'
- plrz.PlayerAdded:connect(function(Plr)
- Functions:PlayerImgNotification(Plr, 'join')
- end)
- plrz.PlayerRemoving:connect(function(Plr)
- Functions:PlayerImgNotification(Plr, 'rmv')
- end)
- Functions:Boot()
- Host.Chatted:connect(function(msg)
- if msg:lower()=='!reboot' then
- Functions:Boot()
- elseif msg:lower():sub(0,#'!background') == '!background' then
- local id = msg:lower():sub(#'!background'+2)
- OS.UIs['Background'][1].Image=Functions:Asset(tonumber(id))
- end
- end)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement