View difference between Paste ID: WvUnSbG7 and fLB7nV68
SHOW: | | - or go back to the newest paste.
1
--https://github.com/Mokiros/roblox-FE-compatibility
2
if game:GetService("RunService"):IsClient() then error("Script must be server-side in order to work; use h/ and not hl/") end
3
local Player,Mouse,mouse,UserInputService,ContextActionService = owner
4
local RealPlayer = Player
5
do print("FE Compatibility code by Mokiros")local a=RealPlayer;script.Parent=a.Character;local b=Instance.new("RemoteEvent")b.Name="UserInput_Event"local function c()local d={_fakeEvent=true,Functions={},Connect=function(self,e)table.insert(self.Functions,e)end}d.connect=d.Connect;return d end;local f={Target=nil,Hit=CFrame.new(),KeyUp=c(),KeyDown=c(),Button1Up=c(),Button1Down=c(),Button2Up=c(),Button2Down=c()}local g={InputBegan=c(),InputEnded=c()}local CAS={Actions={},BindAction=function(self,h,i,j,...)CAS.Actions[h]=i and{Name=h,Function=i,Keys={...}}or nil end}CAS.UnbindAction=CAS.BindAction;local function k(self,l,...)local d=f[l]if d and d._fakeEvent then for m,e in pairs(d.Functions)do e(...)end end end;f.TrigEvent=k;g.TrigEvent=k;b.OnServerEvent:Connect(function(n,o)if n~=a then return end;f.Target=o.Target;f.Hit=o.Hit;if not o.isMouse then local p=o.UserInputState==Enum.UserInputState.Begin;if o.UserInputType==Enum.UserInputType.MouseButton1 then return f:TrigEvent(p and"Button1Down"or"Button1Up")end;if o.UserInputType==Enum.UserInputType.MouseButton2 then return f:TrigEvent(p and"Button2Down"or"Button2Up")end;for m,d in pairs(CAS.Actions)do for m,q in pairs(d.Keys)do if q==o.KeyCode then d.Function(d.Name,o.UserInputState,o)end end end;f:TrigEvent(p and"KeyDown"or"KeyUp",o.KeyCode.Name:lower())g:TrigEvent(p and"InputBegan"or"InputEnded",o,false)end end)b.Parent=NLS([==[local a=game:GetService("Players").LocalPlayer;local b=script:WaitForChild("UserInput_Event")local c=a:GetMouse()local d=game:GetService("UserInputService")local e=function(f,g)if g then return end;b:FireServer({KeyCode=f.KeyCode,UserInputType=f.UserInputType,UserInputState=f.UserInputState,Hit=c.Hit,Target=c.Target})end;d.InputBegan:Connect(e)d.InputEnded:Connect(e)local h,i;while wait(1/30)do if h~=c.Hit or i~=c.Target then h,i=c.Hit,c.Target;b:FireServer({isMouse=true,Target=i,Hit=h})end end]==],Player.Character)local r=game;local s={__index=function(self,q)local t=rawget(self,"_RealService")if t then return typeof(t[q])=="function"and function(m,...)return t[q](t,...)end or t[q]end end,__newindex=function(self,q,u)local t=rawget(self,"_RealService")if t then t[q]=u end end}local function v(d,w)d._RealService=typeof(w)=="string"and r:GetService(w)or w;return setmetatable(d,s)end;local x={GetService=function(self,t)return rawget(self,t)or r:GetService(t)end,Players=v({LocalPlayer=v({GetMouse=function(self)return f end},Player)},"Players"),UserInputService=v(g,"UserInputService"),ContextActionService=v(CAS,"ContextActionService"),RunService=v({_btrs={},RenderStepped=r:GetService("RunService").Heartbeat,BindToRenderStep=function(self,h,m,i)self._btrs[h]=self.Heartbeat:Connect(i)end,UnbindFromRenderStep=function(self,h)self._btrs[h]:Disconnect()end},"RunService")}rawset(x.Players,"localPlayer",x.Players.LocalPlayer)x.service=x.GetService;v(x,game)game,owner=x,x.Players.LocalPlayer end
6
7
--// SaviOS by SavageMunkey
8
9
local Host = game:service'Players'.LocalPlayer
10
local PlayerMouse = Host:GetMouse()
11
local Character = Host.Character
12
13
pcall(function()
14
	Character.Humanoid['SaviOS'..Host.Name].Disabled=true
15
	Character.Humanoid['SaviOS'..Host.Name]:Destroy()
16
end)
17
script.Name='SaviOS'..Host.Name
18
19
local lrs = game:service'RunService'.RenderStepped
20
local ud,c3 = UDim2.new,Color3.new
21
22
local OS
23
OS = {
24
	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,};
25
	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'};
26
	DecalAssets={200182847};
27
	--//49,51,51,55,115,97,118
28
	Sounds = {
29
		319758951,485859421,191035676,142312040,165065112,166471137,208240682,226788368,193399717,
30
		274427825,155949200,209864226,211626338,232560219,172427188,180115728,170968526,
31
		148492408,177956804,132399469,218530627,234627720,182411115,188712851,176454530,
32
		685204898,736225554,267915404,180795185,263998927,181428192,266427268,215974232,
33
		177297354,248794208,262158959,282890395,252612142,252614631,252613867,203275374,
34
		244763119,169898604,173060483,181065299,294185225,657230380,574818336,
35
	};
36
	RecentlyUsedPrograms={};
37
	UIs={};
38
	Logins={
39
		{'SavageMunkey','abcd12',Color3.new(.1,.1,.1),Color3.new(1,1,1),497195310};--167312453};
40
		{'Artiecsal','sookithearth',c3(0,0,0),c3(1,1,1),122646263},
41
		{'Luke_Ames','xXfatphonesXx',c3(.5,0,0),c3(1,1,1),621828236},
42
		{'Lord_Azure','AzureIsGay',c3(.3,0,0),c3(1,1,1),215152878},
43
	};
44
	Administrators={
45
		'SavageMunkey',
46
		'Aeodile',
47
	};
48
	Effects={};
49
	Functions={};
50
	Assets={};
51
	Apps={
52
		Qeued={};
53
		Generated={};
54
		Open={};
55
	};
56
	Settings={
57
		Fonts = {
58
			Header = 'Code',
59
			Sub_Header = 'Highway',
60
		}; 
61
	};
62
};
63
64
Functions = OS.Functions
65
Effects = OS.Effects
66
67
OS.GenCode = math.random()*9e5
68
69
local CurrentPlayerData=nil
70
local Official=true
71
72
function Functions:ConvertColor3(r,g,b)
73
	return c3(1-(1/r),1-(10/g),1-(10/b)) --//derped
74
end
75
76
function Functions:ReturnObjectProperties(Object)
77
	assert(pcall(function() 
78
		assert(game.IsA(Object,'Instance')) 
79
	end),'Should be ROBLOX instance')
80
	local Returns = {}
81
	for _, Value in next, OS.Properties do
82
		if pcall(function() return Object[Value] end) and (type(Object[Value]) ~= 'userdata' or not Object:FindFirstChild(Value)) then
83
			Returns[Value] = Object[Value]
84
		end
85
	end
86
	 return Returns
87
end;
88
89
--print(Functions:ConvertColor3(170, 0, 255))
90
91
function Functions:GrabHostData()
92
	local PlayerData=nil
93
	local Found=0
94
	for Index, Data in next, OS.Logins do
95
		if Data[1] == tostring(Host) then
96
			PlayerData=Data
97
			Found=Found+1
98
		end
99
	end
100
	if PlayerData then
101
		CurrentPlayerData=PlayerData
102
	else
103
		Official=false
104
		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)]};
105
		script:Destroy()
106
	end
107
	if Found > 1 then
108
		error('Found more than one('..Found..') data tables for '..Host.Name,2)
109
	end
110
end
111
112
Functions:GrabHostData()
113
114
table.foreach(CurrentPlayerData,print)
115
116
function Functions:GetPlayerImg(User)
117
    local ID = 'http://www.roblox.com/Thumbs/Avatar.ashx?x=150&y=200&Format=Png&username='..tostring(User)
118
	 return ID
119
end
120
121
ypcall(function()
122
	--workspace['mon-mon']:Destroy()
123
end)
124
125
local Monitor, G, MainFrame
126
function Functions:MakeMonitor()
127
	pcall(function() workspace['mon-mon'..Host.Name]:Destroy() end)
128
	local sc=Instance.new('Script', workspace)
129
	sc.Name='mon-mon'..Host.Name
130
	OS.Assets.FScript=sc
131
	Monitor = Instance.new('Part', sc)
132
	Monitor.Size = Vector3.new(24,14,.1)
133
	Monitor.Anchored = true
134
	Monitor.Locked=true
135
	Monitor.Transparency=0
136
	Monitor.Color=Color3.new(1,1,1)
137
	Monitor.Material='Neon'
138
	Monitor.Name='mon-mon'
139
	Instance.new('SurfaceLight',Monitor).Face='Back'
140
	Monitor.CanCollide = false
141
	Monitor.TopSurface,Monitor.BottomSurface=0,0
142
	local Flat = Instance.new('BlockMesh', Monitor)
143
	Flat.Scale = Vector3.new(1,1,0)
144
	spawn(function()
145
		for i = 0,1.025,.025 do
146
			--Monitor.Transparency = 1.3-i
147
			lrs:wait()
148
		end
149
	end)
150
end
151
152
function Functions:MakeNewUi(Type)
153
	local Ui = Instance.new(Type)
154
	
155
	local function TypeIsA(Table, Goal)
156
		for i,v in next, Table do
157
			if v:lower()==Type:lower() then
158
				Goal(Ui)
159
			end
160
		end
161
	end
162
	
163
	Ui.ClipsDescendants = true
164
	Ui.Size = ud(1,0,1,0)
165
	Ui.BackgroundTransparency = 1
166
	TypeIsA({'TextButton'}, function(tUi)
167
		Ui.AutoButtonColor = false
168
	end)
169
	Ui.BackgroundColor3 = CurrentPlayerData[3]
170
	Ui.BorderSizePixel = 0
171
	TypeIsA({'ImageLabel','ImageButton'}, function(tUi)
172
		
173
	end)
174
	TypeIsA({'TextButton','TextLabel','TextBox'}, function(tUi)
175
		tUi.TextColor3 = CurrentPlayerData[4]
176
		tUi.Font = OS.Settings.Fonts.Header
177
		tUi.Text=''
178
		tUi.FontSize = Enum.FontSize.Size18
179
	end)
180
	delay(.1,function()
181
		OS.UIs[Ui.Name]={Ui,true}
182
		local oUi=Ui
183
		spawn(function()
184
			repeat lrs:wait() until Ui.Parent == nil 
185
			OS.UIs[oUi.Name]={nil,false}
186
		end)
187
	end)
188
	Ui.ZIndex=7
189
	return Ui
190
end
191
192
function Functions:Center(Ui)
193
	local co={Ui.Size.X.Offset/2,
194
				Ui.Size.Y.Offset/2};
195
	return ud(.5,-co[1],.5,-co[2])
196
end
197
198
function Functions:CenterOffset(Ui, Offset)
199
	local co={Ui.Size.X.Scale,
200
				Ui.Size.X.Offset/2,
201
				  Ui.Size.Y.Scale,
202
				    Ui.Size.Y.Offset/2
203
	};
204
	return ud(.5+Offset.X.Scale,-co[2]+Offset.X.Offset,.5+Offset.Y.Scale,-co[4]+Offset.Y.Offset)
205
end
206
207
local TypeDebs={};
208
function Effects:Type(Ui, Text, Type, Delay)
209
	TypeDebs[Ui]=false
210
	if Type == 'In' then
211
		local Continue = true
212
		for i = 0,#Text do
213
			if TypeDebs[Ui] then
214
				Continue = false
215
				return
216
			end
217
			if not Continue then 
218
				return
219
			end
220
			Ui.Text = Text:sub(0,i)..'|'
221
			wait(Delay)
222
		end
223
		Ui.Text = Text
224
	elseif Type == 'Out' then
225
		local Continue = true
226
		for i = 0,#Text do
227
			if TypeDebs[Ui] then
228
				Continue = false
229
				return
230
			end
231
			if not Continue then 
232
				return
233
			end
234
			Ui.Text = Text:sub(0,1-i)..'|'
235
			wait(Delay)
236
		end
237
		Ui.Text = Text
238
	else
239
		error'Please enter a TransitionType (Out, In)'
240
	end
241
end
242
243
function Functions:Sound(Id ,Rmv)
244
	local snd=Instance.new('Sound', Character:WaitForChild'Head' or Monitor or workspace)
245
	if Rmv then
246
		for index,o in next, snd.Parent:children() do
247
			if o:IsA'Sound' and o ~= snd then
248
				o:Stop()
249
				o:Destroy()
250
			end
251
		end
252
	end
253
	snd.EmitterSize=20
254
	snd.SoundId=Functions:Asset(Id)
255
	snd.Volume=.6
256
	delay(8,function()
257
		if not snd.Looped and snd.IsPlaying==false then
258
			snd:Stop()
259
			snd:Destroy()
260
		end
261
	end)
262
	return snd
263
end
264
265
function Effects:Underline(Ui, YOffset, XThickness, YThickness, Color, Fade)
266
	local Label = Functions:MakeNewUi('TextLabel')
267
	Label.BackgroundColor3 = Color
268
	Label.BackgroundTransparency=.2
269
	Label.Size = ud(0,0,0,YThickness)
270
	Label.Position = Functions:CenterOffset(Label, ud(0,0,0,YOffset))
271
	Label.Parent = Ui
272
	Label.ZIndex = 9
273
	if Fade then
274
		Label.BackgroundTransparency = 1
275
		delay(.5,function()
276
			Label:TweenSizeAndPosition(ud(0,XThickness,0,YThickness),Functions:CenterOffset(Label,ud(0,-XThickness/2,0,YOffset)),'Out','Back',1,true)
277
		end)
278
		for i = 0,1.025,.025 do
279
			Label.BackgroundTransparency = (1.2 - i)
280
			lrs:wait()
281
		end
282
	else
283
		Label.Size = ud(0,XThickness,0,YThickness)
284
		Label.Position = Functions:CenterOffset(Label, ud(0,0,0,YOffset))
285
	end
286
	return Label
287
end
288
289
function Functions:Asset(Id)
290
	return 'rbxassetid://'..Id
291
end
292
293
function Functions:PlayerImage(User)
294
    return 'http://www.roblox.com/Thumbs/Avatar.ashx?x=150&y=200&Format=Png&username='..tostring(User)
295
end
296
297
function Functions:LoginScreenGui(Size,ltbl,Fade)
298
	if Host.PlayerGui:FindFirstChild'nomnompw' then
299
	end
300
	local limit=16
301
	local SGui = Instance.new('ScreenGui', Host.PlayerGui)
302
	SGui.Name='nomnompw'
303
	local Box = Functions:MakeNewUi('TextBox')
304
	Box.ClearTextOnFocus=true
305
	Box.TextColor3 = CurrentPlayerData[3]
306
	Box.TextStrokeTransparency=.9
307
	Box.Size=Size
308
	Box.Text = 'Enter your Password'
309
	Box.Position=Functions:Center(Box)
310
	Box.BackgroundTransparency=1
311
	Box.TextStrokeColor3=CurrentPlayerData[3]
312
	Box.Parent=SGui
313
	Box.BackgroundColor3 = CurrentPlayerData[4]
314
	local enabled=true
315
	if Fade then
316
		Box.Position = Functions:CenterOffset(Box,ud(0,0,-.4,0))
317
		for i = 0,1,.05 do
318
			Box.BackgroundTransparency=1-i
319
			lrs:wait()
320
		end
321
		Box:CaptureFocus()
322
	end
323
	local ev
324
	ev=Box.Focused:connect(function()
325
		--ev:disconnect()
326
		Box.ClearTextOnFocus=false
327
	end)
328
	local ev2
329
	local lt=''
330
	ev2=Box.FocusLost:connect(function()
331
		if #Box.Text < 1 or Box.Text == 'Enter your Password' then
332
			Box.Text='Enter your Password'
333
			Box.ClearTextOnFocus=true
334
		end
335
		if Box.Text==CurrentPlayerData[2] then
336
			ev:disconnect()
337
			ev2:disconnect()
338
			Box.Active=false
339
			Box:TweenPosition(Functions:CenterOffset(Box,ud(0,0,-.55,0)),'Out','Linear',.5,true)
340
			Box.TextStrokeTransparency=1
341
			for i = 0,1,.05 do
342
				Box.BackgroundTransparency=i
343
				Box.TextTransparency=i
344
				lrs:wait()
345
			end
346
			lt=Box.Text
347
			SGui:Destroy()
348
		end
349
	end)
350
	Box.BackgroundTransparency=0
351
	if ltbl.loop then
352
		while SGui.Parent and enabled do
353
			lt=Box.Text
354
			if #Box.Text>limit and Box.Text ~= 'Enter your Password' then
355
				Box:ReleaseFocus()
356
				Box.Active=false
357
				local bft=Box.Text
358
				Box.Text='Password '..limit..' character limit.'
359
				wait(2)
360
				Box.Text=bft:sub(0,limit)
361
				Box.Active=true
362
				Box:CaptureFocus()
363
			end
364
			if #Box.Text>1 and Box.Text ~= 'Enter your Password' then
365
				local nt=''
366
				ltbl.ui.Text=nt
367
				for i = 1,#Box.Text do
368
					nt=nt..'*'
369
				end
370
				ltbl.ui.Text=nt
371
			elseif #Box.Text==0 then
372
				if Box.Text ~= 'Enter your Password' then
373
					Box.Text='Enter your Password'
374
					ltbl.ui.Text='Enter your Password'
375
					Box:ReleaseFocus()
376
					Box.ClearTextOnFocus=true
377
				end
378
			end
379
			lrs:wait()
380
		end
381
	end
382
	return lt
383
end
384
385
function Functions:IfRegistered(Player, Function)
386
	local Bool = false
387
	for Index, Data in next, OS.Logins do
388
		local user=Data[1]
389
		local pass=Data[2]
390
		if user == tostring(Player) then
391
			Bool = true
392
		end
393
	end
394
	Function(Bool)
395
end
396
397
function Functions:CreateProgram(Name, Id, Nick, Description, Click)
398
	table.insert(OS.Apps.Qeued,{tostring(Name), tonumber(Id), tostring(NickName), tostring(Description), Click})
399
end;
400
401
local Search
402
function Functions:Search(Parent, Function)
403
	for Index, Object in next, Parent:children() do
404
		pcall(function()
405
			Function(Object)
406
		end)
407
		Functions:Search(Object, Function)
408
	end
409
end
410
411
function Functions:ShowChar()
412
	OS.Functions:Search(Character, function(Object)
413
		if (Object:IsA'BasePart' or Object:IsA'Decal') and Object.Name ~='HumanoidRootPart' then
414
			Object.Transparency = 0
415
		end
416
	end)
417
end
418
419
function Functions:HideChar()
420
	OS.Functions:Search(Character, function(Object)
421
		if (Object:IsA'BasePart' or Object:IsA'Decal') and Object.Name ~='HumanoidRootPart' then
422
			Object.Transparency = 1
423
		end
424
	end)
425
end
426
427
local Notes={};
428
Functions:CreateProgram('Notepad++', 43360681, 'N++', 'Notepad for your... "personal" needs?', function(HF,TF,CF)
429
	local tb = Functions:MakeNewUi('TextButton')
430
	tb.Parent=CF
431
	tb.TextWrapped=true
432
	table.insert(Notes,tb)
433
	tb.Text = 'Notepad; '..#Notes
434
	tb.TextColor3=CurrentPlayerData[3]
435
	tb.BackgroundColor3=CurrentPlayerData[4]
436
	tb.Font=OS.Settings.Fonts.Sub_Header
437
	tb.TextStrokeTransparency=.9
438
	tb.TextStrokeColor3=CurrentPlayerData[3]
439
	tb.TextXAlignment='Left'
440
	tb.TextYAlignment='Top'
441
	local SGui
442
	tb.MouseButton1Click:connect(function()
443
		pcall(function()
444
			SGui:Destroy()
445
		end)
446
		if Host.PlayerGui:FindFirstChild'nomnoemnp' then Host.PlayerGui:FindFirstChild'nomnoemnp':Destroy() end
447
		SGui = Instance.new('ScreenGui', Host.PlayerGui)
448
		SGui.Name='nomnoemnp'
449
		local Box = Functions:MakeNewUi('TextBox')
450
		Box.ClearTextOnFocus=false
451
		Box.TextColor3 = CurrentPlayerData[3]
452
		Box.TextStrokeTransparency=.9
453
		Box.Size=ud(1,0,1,0)
454
		Box.Position=ud(-1,0,0,0)
455
		Box.Text = tb.Text
456
		Box.Visible = false
457
		Box.TextXAlignment='Left'
458
		--Box.MultiLine=true
459
		Box.TextYAlignment='Top'
460
		Box.BackgroundTransparency=1
461
		Box.TextStrokeColor3=CurrentPlayerData[3]
462
		Box.Parent=SGui
463
		Box.BackgroundColor3 = CurrentPlayerData[4]
464
		Box:CaptureFocus()
465
		Box.FocusLost:connect(function()
466
			SGui:Destroy()
467
		end)
468
		local isub = '|'
469
		local l=false
470
		spawn(function()
471
			if tb.Text:sub(#tb.Text,#tb.Text)=='|' then
472
				tb.Text=tb.Text:sub(1,#tb.Text-1)
473
			end
474
			local canc = false
475
			spawn(function()
476
				while not canc do
477
					wait(.6)
478
					l=not l
479
					if l == true then
480
						isub='|'
481
					else
482
						isub=''
483
					end
484
				end
485
			end)
486
			repeat
487
				tb.Text=Box.Text..isub
488
				lrs:wait()
489
			until SGui.Parent ~= Host.PlayerGui
490
			if l then
491
				tb.Text=tb.Text:sub(1,#tb.Text-1)
492
			end
493
			--print'canc'
494
			canc=true
495
			SGui=nil
496
		end)
497
	end)
498
end)
499
--script.Parent=Host.PlayerGui
500
501
Functions:CreateProgram('Calculator', 45545182, 'Calc', 'Math stuff man', function(HF,TF,CF)
502
	HF.Size = UDim2.new(0,150,0,300)
503
end)
504
505
local osEVENT = game:service'SoundService':FindFirstChild'osEVENT'
506
if osEVENT==nil then
507
	osEVENT = Instance.new('RemoteEvent',game:service'SoundService')
508
	osEVENT.Name='osEVENT'
509
end
510
511
if game.PlaceId == 691043264 then
512
	Functions:CreateProgram('Lua', 71157241, 'LUA', 'Execute stuff...', function(HF,TF,CF)
513
		local tb = Functions:MakeNewUi('TextButton')
514
		tb.Parent=CF
515
		tb.TextWrapped=true
516
		tb.Text = ''
517
		tb.TextColor3=CurrentPlayerData[3]
518
		tb.BackgroundColor3=CurrentPlayerData[4]
519
		tb.Font=OS.Settings.Fonts.Sub_Header
520
		tb.Size=ud(.6,0,.9,0)
521
		tb.TextXAlignment='Left'
522
		tb.TextYAlignment='Top'
523
	
524
		local run = Functions:MakeNewUi('TextButton')
525
		run.Parent=CF
526
		run.Text = 'Run Script'
527
		run.BackgroundTransparency=0
528
		run.TextColor3=CurrentPlayerData[4]
529
		run.BackgroundColor3=CurrentPlayerData[3]
530
		run.Font=OS.Settings.Fonts.Header
531
		run.Position=ud(0,0,.95,0)
532
		run.TextSize=11
533
		run.Size=ud(.6,0,.05,0)
534
535
		local cleartb = Functions:MakeNewUi('TextButton')
536
		cleartb.Parent=CF
537
		cleartb.Text = 'Clear Text'
538
		cleartb.BackgroundTransparency=0
539
		cleartb.TextColor3=CurrentPlayerData[4]
540
		cleartb.BackgroundColor3=CurrentPlayerData[3]
541
		cleartb.Font=OS.Settings.Fonts.Header
542
		cleartb.Position=ud(0,0,.9,0)
543
		cleartb.TextSize=11
544
		cleartb.Size=ud(.6,0,.05,0)
545
546
		local ipos = 0
547
		local timefromlast=0
548
		local longestx=0
549
		
550
		local clear = Functions:MakeNewUi('TextButton')
551
		clear.Parent=CF
552
		clear.Text = 'Clear Output'
553
		clear.BackgroundTransparency=0
554
		clear.TextColor3=CurrentPlayerData[4]
555
		clear.BackgroundColor3=CurrentPlayerData[3]
556
		clear.Font=OS.Settings.Fonts.Header
557
		clear.Position=ud(.6,0,.95,0)
558
		clear.TextSize=11
559
		clear.Size=ud(.4,0,.05,0)
560
	
561
		local output = Functions:MakeNewUi('ScrollingFrame')
562
		output.Parent=CF
563
		output.BackgroundColor3=CurrentPlayerData[3]
564
		output.Position=ud(.6,0,0,0)
565
		output.BackgroundTransparency=0
566
		output.Size=ud(.4,0,.95,0)
567
568
		function op(argz)
569
			local txt,code,clr = argz[1],argz[2],argz[3]
570
			clr=clr or Color3.new(1,1,1)
571
			txt=' > '..txt or 'NO_TEXT'
572
			--print(txt,code,clr)
573
			local is = (tostring(code)==tostring(OS.GenCode))
574
			if is then
575
				timefromlast=0
576
				local lbl = Functions:MakeNewUi('TextLabel')
577
				lbl.Parent=output
578
				lbl.Position=ud(0,0,0,ipos)
579
				lbl.TextSize=10
580
				if #txt > longestx then
581
					longextx=#txt
582
				end
583
				--txt=txt:gsub('\n','')
584
				lbl.TextColor3 = clr
585
				lbl.TextWrapped=true
586
				local count=0
587
				local notting=true
588
				lbl.TextXAlignment='Left'
589
				lbl.Text = txt
590
				lbl.BackgroundTransparency=1
591
				lbl.Size=ud(33,0,0,lbl.TextBounds.Y+5)
592
				ipos=ipos+lbl.TextBounds.Y+2
593
				spawn(function()
594
					while notting do
595
						lrs:wait()
596
						count=count+1
597
						local asx=output.AbsoluteSize.X
598
						local tbx=lbl.TextBounds.X
599
						--print(tbx,asx)
600
						if tbx > asx then
601
							lbl.Text=lbl.Text:sub(1+(asx*(count-1)),asx*count)..'\n'..lbl.Text:sub((asx*count)+1)
602
						else
603
							notting=false
604
						end
605
					end
606
				end)
607
				lbl.Size=ud(1,0,0,lbl.TextBounds.Y+5)
608
			end
609
		end
610
611
		op({'Hello world!', OS.GenCode, Color3.new(1,1,1)})
612
613
		clear.MouseButton1Click:connect(function()
614
			output:ClearAllChildren()
615
			ipos=0
616
			longestx=0
617
			timefromlast=0
618
			op({'Cleared output', OS.GenCode, BrickColor.new'Dark green'.Color})
619
		end)
620
621
		cleartb.MouseButton1Click:connect(function()
622
			tb.Text=''
623
			pcall(function()
624
				SGui.Text=''
625
			end)
626
		end)
627
628
		local oev = osEVENT.OnClientEvent:connect(function(Argz)
629
			op(Argz)
630
		end)
631
632
		spawn(function()
633
			local ii=0
634
			repeat lrs:wait() 
635
				timefromlast=timefromlast+.05
636
				ii=Functions:IntegerLerp(ii,ipos,.15) 
637
				if timefromlast < 5 then
638
					output.CanvasSize=ud(0,longestx,0,ii)
639
					output.CanvasPosition=Vector2.new(0,ii)
640
				end
641
			until run.Parent ~= CF
642
			oev:disconnect()
643
			--print'dis'
644
		end)
645
	
646
		run.MouseButton1Click:connect(function()
647
			local lscode = [[
648
				local owner = game:service'Players':WaitForChild(']]..Host.Name..[[')
649
				local event = game:service'SoundService':WaitForChild'osEVENT'
650
				local code = ]]..OS.GenCode..[[
651
				function print(...)
652
					local Data, Return = {...}, ""
653
	                for Index,Value in pairs(Data) do
654
	                	Return = Return .. tostring(Value) .. (Index < #Data and ", " or "")
655
	                end
656
	                event:FireClient(owner,{Return,code,Color3.new(1,1,1)})
657
                end
658
                function warn(...)
659
					local Data, Return = {...}, ""
660
	                for Index,Value in pairs(Data) do
661
	                	Return = Return .. tostring(Value) .. (Index < #Data and ", " or "")
662
	                end
663
	                event:FireClient(owner,{Return,code,Color3.new(1,.5,0)})
664
                end
665
                function ferror(...)
666
					local Data, Return = {...}, ""
667
	                for Index,Value in pairs(Data) do
668
	                	Return = Return .. tostring(Value) .. (Index < #Data and ", " or "")
669
	                end
670
	                event:FireClient(owner,{Return,code,Color3.new(.8,0,0)})
671
                end
672
                delay(20,function()
673
                	event:FireClient(owner,{'Auto removed script - delay ; 20',code,BrickColor.new'Dark green'.Color})
674
					script:Destroy()
675
				end)
676
				local script = workspace:WaitForChild(']]..tostring(OS.Assets.FScript.Name)..[[')
677
			]]
678
			local formattedcode = [[
679
				pcall(function()
680
					local Success, Error = pcall(function() 
681
						]]..tb.Text..[[ 
682
					end)
683
					if not Success then
684
						local err = Error
685
						err=err:gsub('ScriptBuilderScript','OS.sb')
686
						err=err:gsub('544','1')
687
						ferror(err)
688
						local stacks = debug.traceback()
689
						stacks=stacks:gsub('ScriptBuilderScript','OS.sb')
690
						event:FireClient(owner,{stacks,code,BrickColor.new'Bright blue'.Color})
691
					else
692
						event:FireClient(owner,{'Ran script',code,BrickColor.new'Bright blue'.Color})
693
					end
694
				end)
695
			]]
696
			NS(lscode..'\n\n'..formattedcode, workspace)
697
		end)
698
		
699
		local SGui
700
		tb.MouseButton1Click:connect(function()
701
			pcall(function()
702
				SGui:Destroy()
703
			end)
704
			if Host.PlayerGui:FindFirstChild'nomnoemnp' then Host.PlayerGui:FindFirstChild'nomnoemnp':Destroy() end
705
			SGui = Instance.new('ScreenGui', Host.PlayerGui)
706
			SGui.Name='nomnoemnp'
707
			local Box = Functions:MakeNewUi('TextBox')
708
			Box.ClearTextOnFocus=false
709
			Box.TextColor3 = CurrentPlayerData[3]
710
			Box.TextStrokeTransparency=.9
711
			Box.Size=ud(1,0,1,0)
712
			Box.Position=ud(-1,0,0,0)
713
			Box.Text = tb.Text
714
			Box.Visible = false
715
			Box.TextXAlignment='Left'
716
			--Box.MultiLine=true
717
			Box.TextYAlignment='Top'
718
			Box.BackgroundTransparency=1
719
			Box.TextStrokeColor3=CurrentPlayerData[3]
720
			Box.Parent=SGui
721
			Box.BackgroundColor3 = CurrentPlayerData[4]
722
			Box:CaptureFocus()
723
			Box.FocusLost:connect(function()
724
				SGui:Destroy()
725
			end)
726
			local isub = '|'
727
			local l=false
728
			spawn(function()
729
				if tb.Text:sub(#tb.Text,#tb.Text)=='|' then
730
					tb.Text=tb.Text:sub(1,#tb.Text-1)
731
				end
732
				local canc = false
733
				spawn(function()
734
					while not canc do
735
						wait(.6)
736
						l=not l
737
						if l == true then
738
							isub='|'
739
						else
740
							isub=''
741
						end
742
					end
743
				end)
744
				repeat
745
					tb.Text=Box.Text..isub
746
					lrs:wait()
747
				until SGui.Parent ~= Host.PlayerGui
748
				if l then
749
					tb.Text=tb.Text:sub(1,#tb.Text-1)
750
				end
751
				canc=true
752
				SGui=nil
753
			end)
754
		end)
755
	end)
756
end
757
758
Functions:CreateProgram('Settings',485882401,'Sett','Also self explanitory...',function(HF,TF,CF)
759
end)
760
761
spawn(function()
762
	local nw={};
763
	for i,v in next, OS.Backgrounds do
764
		delay(math.random()*5,function()
765
			nw[#nw+1]=v
766
		end)
767
	end
768
	repeat wait() until #nw==#OS.Backgrounds
769
	wait(.5)
770
	OS.Backgrounds=nw
771
	Functions:Notification('Formatted OS.Backgrounds', 4)
772
end)
773
774
spawn(function()
775
	local nw={};
776
	for i,v in next, OS.Sounds do
777
		delay(math.random()*5,function()
778
			nw[#nw+1]=v
779
		end)
780
	end
781
	repeat wait() until #nw==#OS.Sounds
782
	wait(.5)
783
	OS.Sounds=nw
784
	Functions:Notification('Formatted OS.Sounds', 4)
785
end)
786
787
Functions:CreateProgram('Gallery', 152445445, 'Images', 'View your favorite, saved, and default images', function(HF,TF,CF)
788
	local title = Functions:MakeNewUi('TextLabel')
789
	title.TextColor3 = CurrentPlayerData[3]
790
	title.TextStrokeTransparency=1
791
	title.Size=ud(1,0,.1,0)
792
	title.Text = 'Gallery - '..#OS.Backgrounds..' assets total'
793
	title.TextXAlignment='Center'
794
	title.TextYAlignment='Center'
795
	title.Font = OS.Settings.Fonts.Header
796
	title.BackgroundTransparency=1
797
	title.Parent=CF
798
	title.BackgroundColor3 = CurrentPlayerData[4]
799
800
	spawn(function()
801
		wait(1)
802
		Effects:Underline(title, 15, 300, 2, CurrentPlayerData[3], true)
803
	end)
804
805
	local scroll = Functions:MakeNewUi('ScrollingFrame')
806
	scroll.Size=ud(1,0,.9,0)
807
	scroll.Position = ud(0,0,.1,0)
808
	scroll.BackgroundTransparency=0
809
	scroll.TopImage=Functions:Asset(317839361)
810
	scroll.MidImage=Functions:Asset(317839361)
811
	scroll.BottomImage=Functions:Asset(317839361)
812
	scroll.ScrollBarThickness = 5
813
	scroll.Parent=CF
814
	scroll.BackgroundColor3 = CurrentPlayerData[4]
815
816
	local Loaded = 0
817
	local o,d = 0,0
818
	local curbg = nil
819
	local bgs={};
820
	for i, Id in next, OS.Backgrounds do
821
		--local Market = game:service'MarketplaceService'
822
		--local Asset = Market:GetProductInfo(Id)
823
		
824
		local Img = Functions:MakeNewUi('ImageButton')
825
		Img.Image = Functions:Asset(Id)
826
		local scl = 2
827
		local add = .005
828
		local sx,sy=(.089*scl),(.05*scl)
829
		Img.Size=ud(sx,0,0,34*2)
830
		Img.Position = ud(((sx+add)*o)+.05,0,0,((36*2)*d))
831
		o=o+1
832
		game:service'RunService'.RenderStepped:wait()
833
		if sx*(o+1) >= 1 then
834
			d=d+1
835
			o=0
836
			scroll.CanvasSize=ud(0,0,0,((36*2)*d))
837
		end
838
		Img.BackgroundColor3 = scroll.BackgroundColor3
839
		Img.BorderColor3 = CurrentPlayerData[3]
840
		Img.ImageTransparency=1
841
		Img.MouseButton1Down:connect(function()
842
			curbg = Img
843
			OS.Assets.Background.Image=Functions:Asset(Id)
844
		end)
845
		Img.Parent=scroll
846
847
		spawn(function()
848
			for i = 0,1.05,.05 do
849
				Img.ImageTransparency=1-i
850
				game:service'RunService'.RenderStepped:wait()
851
			end
852
		end)
853
		bgs[#bgs+1]=Img
854
	end
855
	while #bgs > 0 do
856
		lrs:wait()
857
		for i,Img in next, bgs do
858
			if Img == nil or Img.Parent == nil then
859
				table.remove(bgs,i)
860
			else
861
				if curbg == Img then
862
					Img.BorderSizePixel = 2
863
				else
864
					Img.BorderSizePixel=0
865
				end
866
			end
867
		end
868
	end
869
end)
870
871
Functions:CreateProgram('Explorer', 27854793, 'Expl', 'Explore the game\'s children', function(HF,TF,CF)
872
	local funcs = {};
873
	local title = Functions:MakeNewUi('TextLabel')
874
	title.TextColor3 = CurrentPlayerData[3]
875
	title.TextStrokeTransparency=1
876
	title.Size=ud(1,0,.2,0)
877
	title.Text = 'Services'
878
	title.TextXAlignment='Center'
879
	title.TextYAlignment='Center'
880
	title.BackgroundTransparency=1
881
	title.Parent=CF
882
	title.BackgroundColor3 = CurrentPlayerData[4]
883
884
	spawn(function()
885
		wait(1)
886
		Effects:Underline(title, 15, 80, 2, CurrentPlayerData[3], true)
887
	end)
888
889
	local scroll = Functions:MakeNewUi('ScrollingFrame')
890
	scroll.Size=ud(.8,0,.8,0)
891
	scroll.Position = ud(.1,0,.2,0)
892
	scroll.BackgroundTransparency=1
893
	scroll.TopImage=Functions:Asset(317839361)
894
	scroll.MidImage=Functions:Asset(317839361)
895
	scroll.BottomImage=Functions:Asset(317839361)
896
	scroll.ScrollBarThickness = 5
897
	scroll.Parent=CF
898
	scroll.BackgroundColor3 = CurrentPlayerData[4]
899
900
	function funcs:w()
901
		return wait(.05)
902
	end
903
904
	local buttons={};
905
	local t = 0
906
	function funcs:clearscroll()
907
		t=t+1
908
		buttons={};
909
		for i,v in next, scroll:children() do
910
			--funcs:w()
911
			pcall(function()
912
				spawn(function()
913
					v:TweenPosition(ud(1,0,v.Position.Y.Scale,v.Position.Y.Offset),'Out','Quint',2,true)
914
					for i = 0,1.05,.05 do
915
						pcall(function()
916
							v.TextTransparency=v.TextTransparency+.05
917
						end)
918
						pcall(function()
919
							v.BackgroundTransparency=v.BackgroundTransparency+.05
920
						end)
921
						pcall(function()
922
							v.TextStrokeTransparency=v.TextStrokeTransparency+.05
923
						end)
924
						lrs:wait()
925
					end
926
					v:Destroy()
927
				end)
928
			end)
929
		end
930
		wait(2)
931
	end
932
933
	function funcs:bt(i,txt,func)
934
		delay(0,function()
935
			if t == i then
936
				--funcs:w()
937
				local button = Functions:MakeNewUi('TextButton')
938
				local index = #buttons
939
				buttons[index+1]=button
940
				local y = 22*(index)
941
				scroll.CanvasSize=ud(0,0,0,y)
942
				button.TextColor3 = CurrentPlayerData[3]
943
				button.TextStrokeTransparency=.9
944
				button.Size=ud(1,0,0,20)
945
				button.Position=ud(1,0,0,y)
946
				button.Text = txt
947
				button.TextXAlignment='Left'
948
				button.TextTransparency=1
949
				button.TextSize = 12
950
				button.Font=OS.Settings.Fonts.Header
951
				--button.TextYAlignment='Top'
952
				button.BackgroundTransparency=.6
953
				button.TextStrokeColor3=CurrentPlayerData[3]
954
				button.Parent=scroll
955
				button.BackgroundColor3 = CurrentPlayerData[4]
956
				spawn(function()
957
					button:TweenPosition(ud(0,0,0,y),'Out','Quint',.5,true)
958
					for i = 0,1.05,.05 do
959
						button.TextTransparency=1-i
960
						lrs:wait()
961
					end
962
				end)
963
				local ev
964
				ev=button.MouseButton1Click:connect(function()
965
					ev:disconnect()
966
					func(button)
967
				end)
968
				return button
969
			else
970
				return nil
971
			end
972
		end)
973
	end
974
	
975
	function funcs:showoptions(obj)
976
		funcs:clearscroll()
977
		local st = t
978
		if obj:IsA'Instance' then
979
			title.Text = obj:GetFullName()
980
			if #obj:children() > 0 then
981
				local expl=funcs:bt(st,'Explore',function()
982
					funcs:showchildren(obj)
983
				end)
984
			end
985
			pcall(function()
986
				if obj ~= game and obj.Parent ~= game then
987
					local expl=funcs:bt(st,'Destroy',function()
988
						local par = obj.Parent
989
						local pn = obj.Name
990
						pcall(function()
991
							obj:Destroy()
992
						end)
993
						funcs:clearscroll()
994
						local nst = t
995
						funcs:bt(nst,'Return to '..pn..'\'s parent object',function()
996
							funcs:showchildren(par)
997
						end)
998
						funcs:bt(nst,'Destroyed '..pn,function()
999
						end)
1000
					end)
1001
				end
1002
			end)
1003
			if obj ~= game then
1004
				local tag = 'Return to '..obj.Parent.Name..'\'s children'
1005
				if obj.Parent==game then
1006
					tag='Return to explorable services'
1007
				end
1008
				local ret=funcs:bt(st,tag,function()
1009
					funcs:showchildren(obj.Parent)
1010
				end)
1011
			elseif obj.Parent == game then
1012
				funcs:showservs()
1013
			end
1014
			local sprops=funcs:bt(st,'Show Properties',function()
1015
				funcs:clearscroll()
1016
				local st2 = t
1017
				local rett=funcs:bt(st2,'Return to options for '..obj.Name,function()
1018
					funcs:showoptions(obj)
1019
				end)
1020
				local Props = Functions:ReturnObjectProperties(obj)
1021
				Props['Children'] = #obj:children()
1022
				for index, value in next, Props do
1023
					local prop=funcs:bt(st2,tostring(index)..': '..tostring(value),function()
1024
					end)
1025
				end
1026
			end)
1027
		end
1028
	end
1029
	
1030
	function funcs:showchildren(prnt)
1031
		funcs:clearscroll()
1032
		local st = t
1033
		if prnt:IsA'Instance' then
1034
			local back=funcs:bt(st,'Show me options for '..prnt.Name,function()
1035
				funcs:showoptions(prnt)
1036
			end)
1037
			for i,v in next, prnt:children() do
1038
				pcall(function()
1039
					if prnt:IsA'Instance' then
1040
						local sub=' - '..v.ClassName
1041
						pcall(function()
1042
							if prnt==game then
1043
								sub=''
1044
							end
1045
						end)
1046
						local child=funcs:bt(st,v.Name..sub,function()
1047
							funcs:showoptions(v)
1048
						end)
1049
					end
1050
				end)
1051
			end
1052
		end
1053
	end
1054
	function funcs:showservs()
1055
		funcs:clearscroll()
1056
		local st = t
1057
		local servs = {};
1058
		for i,v in next, game:children() do
1059
			pcall(function()
1060
				if #v:children() > 0 then
1061
					table.insert(servs,v)
1062
				end
1063
			end)
1064
		end
1065
		local child=funcs:bt(st,'SHOW ME ALL THE DAMN SERVICES!',function()
1066
			funcs:showoptions(game)
1067
		end)
1068
		for i,v in next, servs do
1069
			local child = funcs:bt(st,v.Name,function()
1070
				funcs:showoptions(v)
1071
			end)
1072
		end
1073
	end
1074
	funcs:showservs()
1075
end)
1076
1077
local Audios={};
1078
local CurrentPlaying = nil
1079
function Functions:AddSound(Id)
1080
	for Index, Sound in next, Audios do
1081
		if Sound:IsA'Sound' then
1082
			Sound:Stop()
1083
			Sound.PlayOnRemove=false
1084
		end
1085
	end
1086
	local Sound = Instance.new('Sound', Monitor)
1087
	Sound.SoundId=Functions:Asset(Id)
1088
	Sound.Volume=.9
1089
	CurrentPlaying = Sound
1090
	table.insert(Audios, Sound)
1091
	return Sound
1092
end
1093
1094
function Functions:IntegerLerp(a,b,c)
1095
	return a + (b - a) * c;
1096
end
1097
1098
Functions:CreateProgram('Messenger',485845332,'MGR','Self explanitory... idiot', function(HF,TF,CF)
1099
end)
1100
1101
local cur = nil
1102
local curSound = nil
1103
Functions:CreateProgram('SmAudio', 64646186, 'SmA', 'An archive of selected music just for you ;) with extra features as well', function(HF,TF,CF)
1104
	local title = Functions:MakeNewUi('TextLabel')
1105
	title.TextColor3 = CurrentPlayerData[3]
1106
	title.TextStrokeTransparency=1
1107
	title.Size=ud(1,0,.2,0)
1108
	title.Text = 'SmAudio Alpha'
1109
	title.TextXAlignment='Center'
1110
	title.TextYAlignment='Center'
1111
	title.Font = OS.Settings.Fonts.Header
1112
	title.BackgroundTransparency=1
1113
	title.Parent=CF
1114
	title.BackgroundColor3 = CurrentPlayerData[4]
1115
1116
	spawn(function()
1117
		wait(1)
1118
		Effects:Underline(title, 15, 80, 2, CurrentPlayerData[3], true)
1119
	end)
1120
1121
	local scroll = Functions:MakeNewUi('ScrollingFrame')
1122
	scroll.Size=ud(.8,0,.8,0)
1123
	scroll.Position = ud(.1,0,.2,0)
1124
	scroll.BackgroundTransparency=0
1125
	scroll.TopImage=Functions:Asset(317839361)
1126
	scroll.MidImage=Functions:Asset(317839361)
1127
	scroll.BottomImage=Functions:Asset(317839361)
1128
	scroll.ScrollBarThickness = 5
1129
	scroll.Parent=CF
1130
	scroll.BackgroundColor3 = CurrentPlayerData[4]
1131
1132
	local max = 0
1133
	spawn(function()
1134
		local y = 0
1135
		repeat game:service'RunService'.RenderStepped:wait() 
1136
			y=Functions:IntegerLerp(y,max,.02)
1137
			--print(max)
1138
			--print(y)
1139
			--scroll.CanvasSize=ud(0,0,0,y)
1140
		until CF.Parent == nil
1141
	end)
1142
	
1143
	local play,pause,sound = Functions:Asset(745599404),Functions:Asset(745599001),Functions:Asset(176572847)
1144
1145
	local Loaded = 0
1146
	for i, Id in next, OS.Sounds do
1147
		delay((math.random()/(math.random()+.2))*3, function()
1148
			local Market = game:service'MarketplaceService'
1149
			local Asset = Market:GetProductInfo(Id)
1150
			
1151
			local Song = Functions:MakeNewUi('ImageButton')
1152
			Song.Parent=scroll
1153
			Song.Image = play
1154
			local clr=CurrentPlayerData[3]
1155
			local clr2=CurrentPlayerData[4]
1156
			Song.BackgroundColor3=clr
1157
			Song.Size=ud(0,45,0,45)
1158
			Song.BackgroundTransparency=1
1159
	
1160
			local y = (Song.Size.Y.Offset+2)*(i-1)
1161
			max=max+(Song.Size.Y.Offset+2)
1162
			local x = Song.Size.X.Offset
1163
1164
			local author = Functions:MakeNewUi('TextLabel')
1165
			author.TextColor3 = CurrentPlayerData[3]
1166
			author.Size=ud(1,-x+10,0,20)
1167
			author.Position = ud(0,x+10,0,y)
1168
			author.Text = 'Author  '..Asset.Creator.Name..' ; '..Asset.Creator.Id
1169
			author.TextXAlignment='Left'
1170
			author.TextYAlignment='Center'
1171
			author.TextSize = 16
1172
			author.Font = OS.Settings.Fonts.Header
1173
			author.BackgroundTransparency=1
1174
			author.TextTransparency=1
1175
			author.Parent=scroll
1176
			author.BackgroundColor3 = CurrentPlayerData[3]
1177
1178
			local name = Functions:MakeNewUi('TextLabel')
1179
			name.TextColor3 = CurrentPlayerData[3]
1180
			name.Size=ud(1,-x+10,0,20)
1181
			name.Position = ud(0,x+10,0,y+(author.TextSize+2))
1182
			name.Text = 'Name  '..Asset.Name
1183
			name.TextXAlignment='Left'
1184
			name.TextYAlignment='Center'
1185
			name.TextSize = 12
1186
			name.TextTransparency=1
1187
			name.Font = OS.Settings.Fonts.Header
1188
			name.BackgroundTransparency=1
1189
			name.Parent=scroll
1190
			name.BackgroundColor3 = CurrentPlayerData[3]
1191
1192
			local desc = Functions:MakeNewUi('TextLabel')
1193
			desc.TextColor3 = CurrentPlayerData[3]
1194
			local alg = (((name.TextBounds.X+author.TextBounds.X)/1.5)+(10+(author.TextSize+name.TextSize)))
1195
			desc.Size=ud(1,-x-(alg+scroll.ScrollBarThickness),0,46)
1196
			desc.Position = ud(1,0,0,y-1)
1197
			desc.Text = Asset.Creator.Name..': '..Asset.Description
1198
			desc.BorderSizePixel=0
1199
			desc.BorderColor3 = CurrentPlayerData[3]
1200
			desc.TextWrapped=true
1201
			desc.TextXAlignment='Left'
1202
			desc.TextTransparency=1
1203
			desc.TextYAlignment='Top'
1204
			desc.TextSize = 12
1205
			desc.Font = OS.Settings.Fonts.Header
1206
			desc.BackgroundTransparency=1
1207
			desc.Parent=scroll
1208
			desc.BackgroundColor3 = scroll.BackgroundColor3
1209
			desc.ClipsDescendants=false
1210
1211
			local line = Functions:MakeNewUi('TextLabel')
1212
			line.TextColor3 = CurrentPlayerData[3]
1213
			line.Size=ud(0,1,1,0)
1214
			line.Position = ud(0,-4,0,0)
1215
			line.Text = ''
1216
			line.BackgroundTransparency=0
1217
			line.BackgroundColor3 = CurrentPlayerData[3]
1218
			line.Parent=desc
1219
1220
			if Asset.Description=='Audio' or Asset.Description=='RenderMesh' then
1221
				desc:Destroy()
1222
			else
1223
				desc:TweenPosition(ud(0,x+alg,0,y-1),'Out','Quint',1,true)
1224
			end
1225
			
1226
			Song.Position = ud(0,-x,0,y)
1227
			
1228
			Song.ZIndex=8
1229
			Song.MouseEnter:connect(function()
1230
				local t=clr2
1231
				local tt=.15
1232
				clr=c3(t.r-tt,t.b-tt,t.g-tt)
1233
				clr2=CurrentPlayerData[3]
1234
			end)
1235
			Song.MouseLeave:connect(function()
1236
				clr=CurrentPlayerData[3]
1237
				clr2=CurrentPlayerData[4]
1238
			end)
1239
			
1240
			Song.MouseButton1Click:connect(function()
1241
				if cur == Song then
1242
					curSound:Pause()
1243
					cur=nil
1244
				else
1245
					cur=Song
1246
					curSound = Functions:AddSound(Id)
1247
					curSound.Looped = true
1248
					curSound:Play()
1249
					clr=CurrentPlayerData[3]
1250
					clr2=CurrentPlayerData[4]
1251
				end
1252
			end)
1253
1254
			spawn(function()
1255
				for i = 0,1.05,.05 do
1256
					desc.TextTransparency=1-i
1257
					desc.BackgroundTransparency=1-i
1258
					name.TextTransparency=1-i
1259
					author.TextTransparency=1-i
1260
					game:service'RunService'.RenderStepped:wait() 
1261
				end
1262
			end)
1263
			
1264
			spawn(function()
1265
				repeat game:service'RunService'.RenderStepped:wait() 
1266
					if cur == Song then
1267
						Song.Image = pause
1268
					else
1269
						Song.Image = play
1270
					end
1271
					Song.BackgroundColor3=Song.BackgroundColor3:lerp(clr,.25)
1272
					Song.ImageColor3=Song.ImageColor3:lerp(clr2,.25)
1273
				until CF.Parent == nil
1274
			end)
1275
			Song:TweenPosition(ud(0,0,0,y),'Out','Quint',.5,true)
1276
			Loaded = Loaded + 1
1277
		end)
1278
	end
1279
	local ii=0
1280
	repeat 
1281
		wait() 
1282
		title.Text = 'Loading Assets #'..Loaded 
1283
		ii=Functions:IntegerLerp(ii,max+10,.04)
1284
		scroll.CanvasSize=ud(0,0,0,ii)
1285
		scroll.CanvasPosition=Vector2.new(0,ii)
1286
	until Loaded == #OS.Sounds
1287
	title.Text = 'SmAudio Beta'
1288
end)
1289
1290
function Functions:GeneratePrograms(Distance)
1291
	--print'k'
1292
	local Over, Down=0,0
1293
	for Index, Data in next, OS.Apps.Qeued do
1294
		if Down > 7 then 
1295
			return
1296
		end
1297
		local maximized,ump,ums
1298
		lrs:wait()
1299
		local Icon = Functions:MakeNewUi('ImageButton')
1300
		Icon.Image=Functions:PlayerImage(Host)
1301
		Icon.Parent=MainFrame
1302
		Icon.BackgroundColor3=CurrentPlayerData[4]
1303
		Icon.Image=Functions:Asset(Data[2])
1304
		Icon.Size=ud(0,50,0,50)
1305
		Icon.ZIndex=2
1306
		Icon.ImageTransparency=0
1307
		local IconName = Functions:MakeNewUi('TextLabel')
1308
		IconName.Font=OS.Settings.Fonts.Header
1309
		IconName.Parent=Icon
1310
		IconName.TextYAlignment='Bottom'
1311
		IconName.TextSize = 10
1312
		IconName.Text= Data[1]
1313
		IconName.Size=ud(1,0,0,20)
1314
		IconName.Position=ud(0,0,1,-20)
1315
		IconName.ZIndex=2
1316
		local bgtp = 1
1317
		Icon.MouseEnter:connect(function()
1318
			bgtp=.5
1319
		end)
1320
		Icon.MouseLeave:connect(function()
1321
			bgtp=1
1322
		end)
1323
		local oi = bgtp
1324
		lrs:connect(function()
1325
			oi=Functions:IntegerLerp(oi,bgtp,.3)
1326
			Icon.BackgroundTransparency=oi
1327
		end)
1328
		OS.Apps.Generated[Data[1]]=Icon
1329
		if Over >= 13 then
1330
			Down = Down + 1
1331
			Over = 0
1332
		end
1333
		Icon.Position=ud(0,15+(60*(Over)),0,15+(60*(Down)))
1334
		Over = Over + 1
1335
		Icon.ZIndex=2
1336
		local oic
1337
		oic=Icon.MouseButton1Click:connect(function()
1338
			local AlreadyOpen=false
1339
			for Index, Ting in next, OS.Apps.Open do
1340
				for i = 1,#Ting do
1341
					if Data[i] == Ting[i] then
1342
						AlreadyOpen=true
1343
					end
1344
				end
1345
			end
1346
			if AlreadyOpen then
1347
				warn'nop'
1348
				return
1349
			end
1350
			table.insert(OS.Apps.Open,{Data[1],Data[2],Data[3]})
1351
			OS.RecentlyUsedPrograms[Data[4]]=Data
1352
			local HolderFrame = Functions:MakeNewUi('Frame')
1353
			HolderFrame.ZIndex=3
1354
			HolderFrame.BackgroundTransparency=0
1355
			HolderFrame.BorderSizePixel=.1
1356
			HolderFrame.BorderColor3=CurrentPlayerData[3]
1357
			HolderFrame.Size=ud(0,600,0,400)
1358
			HolderFrame.Name='HF'
1359
			HolderFrame.BackgroundColor3=CurrentPlayerData[3]
1360
			HolderFrame.Position = Functions:Center(HolderFrame)
1361
			HolderFrame.Parent = MainFrame
1362
			maximized,ump,ums=false,HolderFrame.Position,HolderFrame.Size
1363
			local function Enable()
1364
				for i,gui in next, MainFrame:children() do
1365
					if gui:IsA'ImageButton' then
1366
						gui.Visible=true
1367
					end
1368
				end
1369
			end
1370
			local function Disable()
1371
				for i,gui in next, MainFrame:children() do
1372
					if gui:IsA'ImageButton' then
1373
						gui.Visible=false
1374
					end
1375
				end
1376
			end
1377
			
1378
			local ev1
1379
			ev1=HolderFrame.MouseEnter:connect(function()
1380
				--print'k1'
1381
				Disable()
1382
			end)
1383
			local ev2
1384
			ev2=HolderFrame.MouseLeave:connect(function()
1385
				--print'k2'
1386
				Enable()
1387
			end)
1388
			local InfoFrame = Functions:MakeNewUi('Frame')
1389
			InfoFrame.ZIndex=4
1390
			InfoFrame.BackgroundTransparency=0
1391
			InfoFrame.Size=ud(1,0,0,15)
1392
			InfoFrame.Name='TF'
1393
			InfoFrame.BackgroundColor3=CurrentPlayerData[3]
1394
			for i = 1,3 do
1395
				i=i
1396
				local CButt = Functions:MakeNewUi('ImageButton')
1397
				CButt.Image=Functions:Asset(625953771)
1398
				CButt.Parent=InfoFrame
1399
				CButt.ImageTransparency=.15
1400
				local OCF
1401
				--505680534
1402
				spawn(function()
1403
					local up=.75
1404
					local r,g,b=0,0,0
1405
					if (i==1) then
1406
						r,g,b=.8,.01,.01
1407
					elseif (i==2) then
1408
						r,g,b=.95,.95,0
1409
					elseif (i==3) then
1410
						r,g,b=0,.7,0
1411
					end
1412
					CButt.ImageColor3 = c3(r,g,b)
1413
					CButt.MouseEnter:connect(function()
1414
						for i = 0,1,.1 do
1415
							CButt.ImageColor3 = CButt.ImageColor3:lerp(c3(r+up,g+up,b+up),.13)
1416
							lrs:wait()
1417
						end
1418
					end)
1419
					CButt.MouseLeave:connect(function()
1420
						for i = 0,1,.1 do
1421
							CButt.ImageColor3 = CButt.ImageColor3:lerp(c3(r,g,b),.13)
1422
							lrs:wait()
1423
						end
1424
					end)
1425
				end)
1426
				--if not OCF then OCF=function()print'missing func'end;end
1427
				if (i==1) then
1428
					r,g,b=.8,.01,.01
1429
					local evv
1430
					ev1:disconnect()
1431
					ev2:disconnect()
1432
					evv=CButt.MouseButton1Click:connect(function()
1433
						for Index, Ting in next, OS.Apps.Open do
1434
							if Data[1] == Ting[1] then
1435
								table.remove(OS.Apps.Open, Index)
1436
							end
1437
						end
1438
						evv:disconnect()
1439
						local pos = HolderFrame.Position
1440
						HolderFrame.Active=false
1441
						HolderFrame:Destroy()
1442
					end)
1443
				elseif (i==2) then
1444
					r,g,b=.95,.95,0
1445
					local evv
1446
					evv=CButt.MouseButton1Click:connect(function()
1447
						if maximized then
1448
							HolderFrame:TweenSizeAndPosition(ums,ump,'Out','Sine',.3,true)
1449
							maximized=false
1450
						else
1451
							HolderFrame:TweenSizeAndPosition(ud(1,2,1,-50),ud(0,-1,0,-1),'Out','Quint',.3,true)
1452
							maximized=true
1453
						end
1454
					end)
1455
				elseif (i==3) then
1456
					r,g,b=0,.7,0
1457
					local evv
1458
					ev1:disconnect()
1459
					ev2:disconnect()
1460
					for Index, Ting in next, OS.Apps.Open do
1461
						if Data[1] == Ting[1] then
1462
							table.remove(OS.Apps.Open, Index)
1463
						end
1464
					end
1465
					evv=CButt.MouseButton1Click:connect(function()
1466
						evv:disconnect()
1467
						HolderFrame:TweenSizeAndPosition(ud(0,50,0,50),Icon.Position,'Out','Quint',.5,true)
1468
						wait(.2)
1469
						HolderFrame:Destroy()
1470
					end)
1471
					--Functions:AddToTaskBar(Data[1],Data[2],{ump,ums})
1472
				end
1473
				--CButt.MouseButton1Click:connect(OCF)
1474
				CButt.Size=ud(0,12,0,12)
1475
				CButt.Position=Functions:CenterOffset(CButt,ud(.5,-(15*i),0,0))
1476
				--CButt:TweenPosition(Functions:CenterOffset(CButt,ud(0,0,0,-50),'Out','Back',1,true))
1477
			end
1478
			InfoFrame.Parent = HolderFrame
1479
			local InfoIcon = Functions:MakeNewUi('ImageButton')
1480
			InfoIcon.Parent=InfoFrame
1481
			InfoIcon.Image=Functions:Asset(Data[2])
1482
			InfoIcon.Size=ud(0,12,0,12)
1483
			InfoIcon.ImageTransparency=0
1484
			InfoIcon.Position=ud(0,2,0,3)
1485
			InfoIcon.ZIndex=4
1486
			local InfoText = Functions:MakeNewUi('TextButton')
1487
			InfoText.BackgroundTransparency=.5
1488
			InfoText.FontSize='Size12'
1489
			InfoText.Parent=InfoFrame
1490
			InfoText.TextXAlignment='Left'
1491
			InfoText.Text= Data[1]--..'  \  '..Data[4]--'*C:\Users\\'..Host.Name..''
1492
			InfoText.Size=ud(1,-40,1,0)
1493
			InfoText.Position=ud(0,16,0,0)
1494
			InfoText.ZIndex=4
1495
			
1496
			local md=false
1497
			InfoText.MouseButton1Down:connect(function()
1498
				md=true
1499
				local origp=HolderFrame.Position
1500
				local origs=ud(0,600,0,15)
1501
				local origmp=OS.Assets.Mouse.Position
1502
				HolderFrame.Size = ud(0,600,0,400)
1503
				maximized=false
1504
				spawn(function()
1505
					repeat wait() until OS.MouseDown == false
1506
					md=false
1507
				end)
1508
				while md do
1509
					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};
1510
					local fs={origs.X.Scale,origs.X.Offset,origs.Y.Scale,origs.Y.Offset};
1511
					local fp={origp.X.Scale,origp.X.Offset,origp.Y.Scale,origp.Y.Offset};
1512
					--local a,b=
1513
					local x,y=mp[2]-(fs[2]/2),mp[4]-(fs[4]/2)
1514
					--print(x,y)
1515
					HolderFrame.Position=ud(0,x,0,y)
1516
					lrs:wait()
1517
				end
1518
			end)
1519
			InfoText.MouseButton1Up:connect(function()
1520
				--md=false
1521
			end)
1522
			local ContentFrame = Functions:MakeNewUi('Frame')
1523
			ContentFrame.ZIndex=4
1524
			ContentFrame.BackgroundTransparency=.1
1525
			ContentFrame.Size=ud(1,-2,1,-17)
1526
			ContentFrame.Position=ud(0,1,0,16)
1527
			ContentFrame.Name='CF'
1528
			ContentFrame.BackgroundColor3=CurrentPlayerData[4]
1529
			ContentFrame.Parent = HolderFrame
1530
			Data[5](HolderFrame, TitleFrame, ContentFrame)
1531
		end)
1532
	end
1533
end
1534
1535
local AtMainScreen=false
1536
function Functions:MakeHomeScreen()
1537
	local Background_id = CurrentPlayerData[5]
1538
	local BackgroundImg = Functions:MakeNewUi('ImageLabel')
1539
	BackgroundImg.Image=Functions:Asset(Background_id)
1540
	BackgroundImg.Name='Background'
1541
	BackgroundImg.BackgroundTransparency=1
1542
	BackgroundImg.ImageTransparency = .1
1543
	BackgroundImg.Parent=MainFrame
1544
	BackgroundImg.ZIndex=1
1545
	BackgroundImg.Size=ud(1,0,1,0)
1546
	OS.Assets.Background = BackgroundImg
1547
	for i = 0,1.025,.025 do
1548
		MainFrame.BackgroundTransparency=i
1549
		lrs:wait()
1550
	end
1551
	local TskBar = Functions:MakeNewUi('TextLabel')
1552
	TskBar.Size = ud(1,0,0,52)
1553
	TskBar.Parent = MainFrame
1554
	TskBar.BackgroundColor3 = CurrentPlayerData[3]
1555
	TskBar.BackgroundTransparency = .5
1556
	TskBar.Position = ud(0,0,1,0)
1557
	TskBar.ZIndex = 9
1558
	TskBar:TweenPosition(ud(0,0,1,-52.5),'Out','Quint',1.2,true)
1559
	for i = 0,.15,.05 do
1560
		local TskBarShader = Functions:MakeNewUi('TextLabel')
1561
		TskBarShader.BackgroundTransparency = .8
1562
		TskBarShader.BackgroundColor3 = CurrentPlayerData[4]
1563
		TskBarShader.BorderSizePixel = 0
1564
		TskBarShader.Size = ud(1,0,.05,0)
1565
		TskBarShader.Position = ud(0,0,-i,0)
1566
		delay(.2,function()
1567
			TskBarShader:TweenPosition(ud(0,0,i+5,0),'Out','Quint',.5,true)
1568
		end)
1569
		TskBarShader.ZIndex = 9
1570
		TskBarShader.Name = 'shd'..i
1571
		--TskBar:ClearAllChildren()
1572
		TskBarShader.Parent = TskBar
1573
	end
1574
	--//tem\\
1575
	local TimeLabel = Instance.new'TextLabel'
1576
	TimeLabel.BackgroundTransparency = 1
1577
	TimeLabel.BackgroundColor3 = c3(255,255,255)
1578
	TimeLabel.BorderSizePixel = 0
1579
	TimeLabel.ZIndex = 9
1580
	TimeLabel.TextColor3 = CurrentPlayerData[4]
1581
	TimeLabel.Font = OS.Settings.Fonts.Sub_Header
1582
	TimeLabel.TextScaled = true
1583
	TimeLabel.Name = 'TimeLabel'
1584
	TimeLabel.TextWrapped = true
1585
	TimeLabel.TextStrokeTransparency = .9
1586
	TimeLabel.Text = '00:00:00  PM'
1587
	TimeLabel.Parent = TskBar
1588
	TimeLabel.Size = ud(.08,0,.3,0)
1589
	TimeLabel.Position = ud(.92,-10,0,6)
1590
	
1591
	local DateLabel = Instance.new'TextLabel'
1592
	DateLabel.BackgroundTransparency = 1
1593
	DateLabel.BackgroundColor3 = c3(255,255,255)
1594
	DateLabel.BorderSizePixel = 0
1595
	DateLabel.ZIndex = 9
1596
	DateLabel.TextColor3 = CurrentPlayerData[4]
1597
	DateLabel.Font = OS.Settings.Fonts.Sub_Header
1598
	DateLabel.TextScaled = true
1599
	DateLabel.Name = 'DateLabel'
1600
	DateLabel.TextWrapped = true
1601
	DateLabel.TextStrokeTransparency = .9
1602
	DateLabel.Text = '00/00/0000'
1603
	DateLabel.Parent = TskBar
1604
	DateLabel.Size = ud(.08,0,.3,0)
1605
	DateLabel.Position = ud(.92,-10,.6,-6)
1606
	
1607
	local Logo = Functions:MakeNewUi'ImageButton'
1608
	Logo.BackgroundTransparency = 1
1609
	Logo.BackgroundColor3 = CurrentPlayerData[3]
1610
	Logo.BorderSizePixel = 0
1611
	Logo.ZIndex = 10
1612
	Logo.Image = Functions:Asset(265489553)
1613
	--Logo.TextColor3 = CurrentPlayerData[4]
1614
	--Logo.Font = 'Cartoon'
1615
	--Logo.FontSize='Size36'
1616
	Logo.Name = 'Logo'
1617
	--Logo.TextStrokeTransparency = .9
1618
	--Logo.Text = '¶Y'
1619
	Logo.Parent = TskBar
1620
	Logo.Size = ud(0,40,0,50)
1621
	Logo.Position = ud(0,1,0,1)
1622
	local clrcancel=false
1623
	local igc,bgc=CurrentPlayerData[4],CurrentPlayerData[3]
1624
	Logo.MouseEnter:connect(function()
1625
		local continue=true
1626
		clrcancel=true
1627
		clrcancel=false
1628
		spawn(function()
1629
			for i = 0,.57,.07 do
1630
				Logo.BackgroundTransparency=1-i
1631
				lrs:wait()
1632
			end
1633
		end)
1634
		igc,bgc=CurrentPlayerData[3],CurrentPlayerData[4]
1635
	end)
1636
	Logo.MouseLeave:connect(function()
1637
		local continue=true
1638
		clrcancel=true
1639
		clrcancel=false
1640
		spawn(function()
1641
			for i = 0,.57,.07 do
1642
				Logo.BackgroundTransparency=.5+i
1643
				lrs:wait()
1644
			end
1645
		end)
1646
		igc,bgc=CurrentPlayerData[4],CurrentPlayerData[3]
1647
	end)
1648
	local StartFrameHolder = Functions:MakeNewUi('Frame')
1649
	StartFrameHolder.ZIndex=5
1650
	StartFrameHolder.BackgroundTransparency=1
1651
	StartFrameHolder.Size=ud(0,200,.6,0)
1652
	StartFrameHolder.Position = ud(0,0,.4,-52)
1653
	StartFrameHolder.Parent = MainFrame
1654
	local StartFrame = Functions:MakeNewUi('Frame')
1655
	StartFrame.ZIndex=9
1656
	StartFrame.BackgroundTransparency=.5
1657
	StartFrame.Size=ud(1,0,1,0)
1658
	StartFrame.BorderSizePixel=2
1659
	StartFrame.Name='SF'
1660
	StartFrame.BorderColor3=CurrentPlayerData[4]
1661
	StartFrame.Position = ud(0,0,1,0)
1662
	StartFrame.Parent = StartFrameHolder
1663
	
1664
	local TestButton = Functions:MakeNewUi('TextButton')
1665
	TestButton.ZIndex=6
1666
	TestButton.BackgroundTransparency=.7
1667
	TestButton.Size=ud(1,-6,0,50)
1668
	TestButton.Position = ud(0,3,0,3)
1669
	TestButton.Text='TEST NOTIFICATIONS'
1670
	TestButton.Parent = StartFrame
1671
	TestButton.MouseButton1Click:connect(function()
1672
		Functions:Notification('Just testing the dank re-alignment and stuff, kek.')
1673
	end)
1674
	
1675
	local sfcc,detection=false,false
1676
	StartFrame.MouseEnter:connect(function()
1677
		detection=false
1678
		sfcc=false
1679
	end)
1680
	StartFrame.MouseLeave:connect(function()
1681
		detection=true
1682
		sfcc=true
1683
	end)
1684
	
1685
	local Extended=false
1686
	local function Open(trans)
1687
		StartFrame:TweenPosition(ud(0,0,0,0),'Out','Sine',.5,true)
1688
		for i = 0,1.05,.05 do
1689
			for a,b in next, StartFrame:children() do
1690
				if b.Name ~= 'SF' then
1691
					pcall(function()
1692
						b.TextTransparency=b.TextTransparency-.05
1693
					end)
1694
					pcall(function()
1695
						b.BackgroundTransparency=bBackgroundTransparency-.05
1696
					end)
1697
					pcall(function()
1698
						b.ImageTransparency=b.ImageTransparency-.05
1699
					end)
1700
				end
1701
			end
1702
			StartFrame.BackgroundTransparency=1-.05
1703
			lrs:wait()
1704
		end
1705
		StartFrame.BackgroundTransparency=trans
1706
		Extended=true
1707
	end
1708
	local function Close(trans)
1709
		StartFrame:TweenPosition(ud(0,0,1,0),'Out','Sine',.5,true)
1710
		for i = 0,1,.05 do
1711
			for a,b in next, StartFrame:children() do
1712
				if b.Name ~= 'SF' then
1713
					pcall(function()
1714
						b.TextTransparency=b.TextTransparency+.05
1715
					end)
1716
					pcall(function()
1717
						b.BackgroundTransparency=bBackgroundTransparency+.05
1718
					end)
1719
					pcall(function()
1720
						b.ImageTransparency=b.ImageTransparency+.05
1721
					end)
1722
				end
1723
			end
1724
			StartFrame.BackgroundTransparency=trans+.05
1725
			lrs:wait()
1726
		end
1727
		StartFrame.BackgroundTransparency=1
1728
		Extended=false
1729
	end
1730
	local trans=.45
1731
	PlayerMouse.Button1Down:connect(function()
1732
		if sfcc and Extended then
1733
			detection=false
1734
			Close(trans)
1735
		end
1736
	end)
1737
	PlayerMouse.Button2Down:connect(function()
1738
		if sfcc and Extended then
1739
			detection=false
1740
			Close(trans)
1741
		end
1742
	end)
1743
	Logo.MouseButton1Down:connect(function(x,y)
1744
		if Extended then
1745
			Close(trans)
1746
		else
1747
			Open(trans)
1748
		end
1749
	end)
1750
	local Months = 	{ 
1751
			"January", "Febreuary", "March", "April", "May", "June",
1752
			"July", "August", "September", "October", "November", "December"
1753
		}
1754
	local MonthDays = { 	
1755
			31, 28, 31, 30, 31, 30, 
1756
			31, 31, 30, 31, 30, 31 
1757
		}
1758
1759
	function getDay(Date, year)
1760
		local month, date = Date:match("(%a+)%s*(%d+)")
1761
		local DAYS = tonumber(date)
1762
		local leaps = math.floor( (year-2011)/4 - .25 ) + 1
1763
		local Days = {"Saturday", "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday"}
1764
		for _, v in ipairs(MonthDays) do
1765
			if Months[_] == month then break end
1766
			DAYS = DAYS + v
1767
		end
1768
		DAYS = math.floor( DAYS + (year-2017) * 365 ) + leaps
1769
		return Days[ (DAYS%7 == 0 and 7 or DAYS%7) ] 
1770
	end
1771
1772
	function getMonthAndDate(days, year)
1773
		local leap = year%4 == 0 and 1 or 0
1774
		local month;
1775
		for _, v in ipairs(MonthDays) do
1776
			if (days-v) < 1 then 
1777
				month = Months[_]
1778
				break 
1779
			end
1780
			days = days - v
1781
		end
1782
		return month, days
1783
	end
1784
	local LTime,LDate = '',''
1785
	local M = ''
1786
	Time = function()
1787
		local secondsInDay = 60*60*24
1788
		local time = tick()
1789
		local year = math.floor(1970 + time/(365.25*86400))
1790
		local days = math.ceil(((time % (86400*365.25)) )/86400 + 0.25)
1791
		local month, date = getMonthAndDate(days, year)
1792
		local day = getDay(month..date, year)
1793
		local tick = math.fmod(tick(),secondsInDay)
1794
		local hour = math.floor(tick/3600) + 5 + -5
1795
		local minute = math.floor(tick/60 - 60*hour)
1796
		local seconds = math.floor(math.fmod(tick,60))
1797
		if (hour > 12) then 
1798
			   M = ' PM' hour = hour - 12 
1799
		else 
1800
			M = ' AM' 
1801
		end
1802
		if hour == 0 then 
1803
			hour = 12 
1804
		end
1805
		if hour == 24 then 
1806
			hour = 1 
1807
		end
1808
		LTime = string.format("%2.0f:%02.0f",hour,minute)
1809
		local MonthNums = 	{ 
1810
			["January"]=1, ["February"]=2, ["March"]=3, ["April"]=4, ["May"]=5, ["June"]=6,
1811
			["July"]=7, ["August"]=8, ["September"]=9, ["October"]=10, ["November"]=11, ["December"]=12
1812
		}
1813
		month=MonthNums[month]
1814
		LDate = month..'/'..(days-1)..'/'..year
1815
		TimeLabel.Text = LTime..M
1816
		DateLabel.Text = LDate
1817
		Logo.ImageColor3 = Logo.ImageColor3:lerp(igc,.2)
1818
		Logo.BackgroundColor3 = Logo.BackgroundColor3:lerp(bgc,.2)
1819
	end
1820
	game:service'RunService'.Heartbeat:connect(Time)
1821
	AtMainScreen=true
1822
	local txt=''
1823
	if Official then
1824
		txt='Welcome back, '..CurrentPlayerData[1]..', your last session\'s saved data has been loaded'
1825
	else
1826
		txt='Hello, '..CurrentPlayerData[1]..'. Your data will be saved at the end of this session'
1827
	end
1828
	delay(math.random(1,4),function()
1829
		delay(.3,function()
1830
			Functions:PlayerImgNotification('SavageMunkey', 'Creator & Founder of ¶YaviOS - SavageMunkey')
1831
		end)
1832
		local fr,tl = Functions:Notification(txt,6)
1833
	end)
1834
	Functions:GeneratePrograms({25,20})
1835
	AtMainScreen=true
1836
	return warn'Homescreen Loaded'
1837
end
1838
1839
function Functions:PlayerImgNotification(Plr, Type)
1840
	if not AtMainScreen then return end
1841
	local sz=50
1842
	if Type=='join' then
1843
		local fr,tl=Functions:Notification('New Player has joined, '..tostring(Plr)..'.', 4)
1844
		tl.Size=ud(1,-(sz+5),1,0)
1845
		tl.Position=ud(0,sz+5,0,0)
1846
		local UserImage = Functions:MakeNewUi('ImageLabel')
1847
		UserImage.Image=Functions:PlayerImage(tostring(Plr))
1848
		UserImage.Parent=fr
1849
		UserImage.Size=ud(0,sz,1,0)
1850
		UserImage.ImageTransparency=0
1851
		UserImage.Position=ud(0,4,0,0)
1852
		UserImage.ZIndex=8
1853
		wait(4*1.5)
1854
		for i = 0,1.05,.05 do UserImage.ImageTransparency=i lrs:wait() end
1855
	elseif Type=='rmv' then
1856
		local fr,tl=Functions:Notification('Player has left, '..tostring(Plr)..'.', 4)
1857
		tl.Size=ud(1,-(sz+5),1,0)
1858
		tl.Position=ud(0,sz+5,0,0)
1859
		local UserImage = Functions:MakeNewUi('ImageLabel')
1860
		UserImage.Image=Functions:PlayerImage(tostring(Plr))
1861
		UserImage.Parent=fr
1862
		UserImage.Size=ud(0,sz,1,0)
1863
		UserImage.ImageTransparency=0
1864
		UserImage.Position=ud(0,4,0,0)
1865
		UserImage.ZIndex=8
1866
		wait(4*1.5)
1867
		for i = 0,1.05,.05 do UserImage.ImageTransparency=i lrs:wait() end
1868
	else
1869
		local fr,tl=Functions:Notification(Type, 4)
1870
		tl.Size=ud(1,-(sz+5),1,0)
1871
		tl.Position=ud(0,sz+5,0,0)
1872
		local UserImage = Functions:MakeNewUi('ImageLabel')
1873
		UserImage.Image=Functions:PlayerImage(tostring(Plr))
1874
		UserImage.Parent=fr
1875
		UserImage.Size=ud(0,sz,1,0)
1876
		UserImage.ImageTransparency=0
1877
		UserImage.Position=ud(0,4,0,0)
1878
		UserImage.ZIndex=8
1879
		wait(4*1.5)
1880
		for i = 0,1.05,.05 do UserImage.ImageTransparency=i lrs:wait() end
1881
	end
1882
end
1883
1884
local Notifications={};
1885
local Notifs=0
1886
1887
function Functions:AdjustNotifPositions()
1888
	local upv=0
1889
	for i, data in next, Notifications do
1890
		--warn('('..tostring(ud(1,-200,.8,-(60*upv)))..')',#Notifications)
1891
		pcall(function()
1892
			data[1]:TweenPosition(ud(1,-200,.8,-(60*upv)),'Out','Back',.5,true)
1893
		end)
1894
		upv=upv+1
1895
		wait(.1)
1896
	end
1897
end
1898
1899
function Functions:Notification(Text, ExitDelay)
1900
	if not ExitDelay then ExitDelay=4 end
1901
	if not AtMainScreen then return end
1902
	local v=false
1903
	local Frame = Functions:MakeNewUi('Frame')
1904
	Frame.ZIndex=8
1905
	Frame.BackgroundTransparency=.25
1906
	Frame.Size=ud(0,200,0,55)
1907
	Frame.BackgroundColor3=CurrentPlayerData[4]
1908
	Frame.Position = ud(1,0,.8,-(60*Notifs))
1909
	Frame.Parent=MainFrame
1910
	Frame:TweenPosition(ud(1,-200,.8,-(60*Notifs)),'Out','Sine',2,true)
1911
	table.insert(Notifications,{Frame,ud(1,-200,.8,-(60*Notifs))})
1912
	local Shader1 = Functions:MakeNewUi('Frame')
1913
	Shader1.ZIndex=9
1914
	Shader1.BackgroundTransparency=.9
1915
	Shader1.Size=ud(0,2,1,0)
1916
	Shader1.BackgroundColor3=CurrentPlayerData[4]
1917
	Shader1.Position = ud(0,-2,0,0)
1918
	Shader1.Parent=Frame
1919
	local Shader2 = Functions:MakeNewUi('Frame')
1920
	Shader2.ZIndex=9
1921
	Shader2.BackgroundTransparency=.8
1922
	Shader2.Size=ud(0,1,1,0)
1923
	Shader2.BackgroundColor3=CurrentPlayerData[4]
1924
	Shader2.Position = ud(0,-1,0,0)
1925
	Shader2.Parent=Frame
1926
	spawn(function()
1927
		Shader1:TweenPosition(ud(0,0,0,0),'Out','Linear',.4,true)
1928
		 wait(.1)
1929
		Shader2:TweenPosition(ud(0,1,0,0),'Out','Linear',.4,true)
1930
	end)
1931
	local TLabel = Functions:MakeNewUi('TextButton')
1932
	TLabel.TextColor3=CurrentPlayerData[4]
1933
	TLabel.Position=ud(0,4,0,0)
1934
	TLabel.ZIndex=9
1935
	TLabel.Active=true
1936
	TLabel.BackgroundTransparency=.98
1937
	TLabel.TextWrapped=true
1938
	TLabel.Size=ud(1,-4,1,0)
1939
	TLabel.TextXAlignment='Left'
1940
	--TLabel.TextYAlignment='Top'
1941
	TLabel.Font=OS.Settings.Fonts.Sub_Header
1942
	TLabel.FontSize='Size12'
1943
	TLabel.TextStrokeColor3=CurrentPlayerData[4]
1944
	TLabel.TextStrokeTransparency=1
1945
	TLabel.TextTransparency=1
1946
	TLabel.Parent=Frame
1947
	Notifs=Notifs+1
1948
	local tic = Functions:Sound(230336790,false)
1949
	tic:Play()
1950
	for i = 0,1.02,.02 do
1951
		Frame.BackgroundColor3=Frame.BackgroundColor3:lerp(CurrentPlayerData[3],.2)
1952
		Frame.BackgroundTransparency=1.5-i
1953
		TLabel.TextStrokeTransparency=1.9-i
1954
		TLabel.TextTransparency=1-i
1955
		lrs:wait()
1956
	end
1957
	local cc=true
1958
	local function Close()
1959
		if (not cc) then return end
1960
		--print'3'
1961
		Frame:TweenPosition(ud(1,0,.8,Frame.Position.Y.Offset),'Out','Sine',3,true)
1962
		for i = 0,1.015,.02 do
1963
			--Frame.BackgroundColor3=Frame.BackgroundColor3:lerp(c3(0,0,0),.2)
1964
			Frame.BackgroundTransparency=.5+i
1965
			Shader1.BackgroundTransparency=.9+i
1966
			Shader2.BackgroundTransparency=.8+i
1967
			TLabel.TextStrokeTransparency=.9+i
1968
			TLabel.TextTransparency=i
1969
			lrs:wait()
1970
		end
1971
		val=true
1972
		Frame:Destroy()
1973
		for i,v in next, Notifications do
1974
			if v[1]==Frame then 
1975
				table.remove(Notifications,i)
1976
			end
1977
		end
1978
		Notifs=Notifs-1
1979
		Functions:AdjustNotifPositions()
1980
	end
1981
	local ev
1982
	ev=TLabel.MouseButton1Click:connect(function()
1983
		--print'k'
1984
		spawn(Close)
1985
		wait()
1986
		cc=false
1987
		ev:disconnect()
1988
	end)
1989
	spawn(function()
1990
		if cc then
1991
			Effects:Type(TLabel, Text, 'In',.01)
1992
			wait(ExitDelay*1.2)
1993
			--print'k2'
1994
			spawn(Close)
1995
			wait()
1996
			cc=false
1997
			ev:disconnect()
1998
		end
1999
	end)
2000
	return Frame, TLabel
2001
end
2002
2003
function Functions:CreateLogin()
2004
	local BFrame = Functions:MakeNewUi('Frame')
2005
	BFrame.ZIndex=4
2006
	BFrame.BackgroundTransparency=1
2007
	BFrame.Size=ud(1,0,1,0)
2008
	BFrame.Position = ud(0,0,0,0)
2009
	BFrame.Parent=MainFrame
2010
	local TransFrame = Functions:MakeNewUi('Frame')
2011
	TransFrame.ZIndex=8
2012
	TransFrame.BackgroundTransparency=1
2013
	TransFrame.Parent=MainFrame
2014
	local Start = Functions:MakeNewUi('TextButton')
2015
	local txt='Welcome to SaviOS, '..Host.Name..'.'
2016
	Start.Text=txt
2017
	Start.Font=OS.Settings.Fonts.Header
2018
	Start.TextColor3=CurrentPlayerData[4]
2019
	Start.Position=ud(0,0,0,-18)
2020
	Start.BackgroundTransparency=1
2021
	Start.TextTransparency=1
2022
	Start.Parent=BFrame
2023
	local Sub = Functions:MakeNewUi('TextLabel')
2024
	Sub.Parent=BFrame
2025
	Sub.TextColor3=CurrentPlayerData[4]
2026
	Sub.Text='Loading Decal and Sound Assets.'
2027
	Sub.Position=ud(0,0,0,25-18)
2028
	Sub.BackgroundTransparency=1
2029
	Sub.TextTransparency=1
2030
	Sub.ZIndex=6
2031
	local Circ = Functions:MakeNewUi('ImageLabel')
2032
	Circ.Image=Functions:Asset(502107146)
2033
	Circ.Parent=BFrame
2034
	Circ.ImageTransparency=0
2035
	Circ.ImageColor3 = CurrentPlayerData[3]
2036
	Circ.Size=ud(0,350,0,400)
2037
	Circ.Position=Functions:CenterOffset(Circ,ud(0,0,0,0))
2038
	Circ.ZIndex=5
2039
	local con=false
2040
	spawn(function()
2041
		Effects:Type(Start, txt, 'In',.06)
2042
		local nspd=.5
2043
		repeat wait(nspd)
2044
			--Start.Text=txt
2045
			Circ:TweenSizeAndPosition(ud(0,450,0,500),ud(.5,-450/2,.5,-250),'In','Back',nspd,true)
2046
			wait(nspd)
2047
			Circ:TweenSizeAndPosition(ud(0,350,0,400),ud(.5,-350/2,.5,-200),'Out','Quint',nspd,true)
2048
			--Start.Text=txt..'|'
2049
		until con
2050
	end)
2051
	for i = 0,1.025,.025 do
2052
		Start.TextTransparency = 1-i
2053
		MainFrame.BackgroundTransparency = 1-i
2054
		lrs:wait()
2055
	end
2056
	local function finish_Load()
2057
		Particles=false
2058
		Effects:Type(Start, txt, 'Out',.02)
2059
		Start.Text=''
2060
		Circ:TweenSizeAndPosition(ud(0,15,0,20),ud(.5,-15/2,.5,-10),'In','Quint',2,true)
2061
		wait(2)
2062
		Circ:TweenSizeAndPosition(ud(0,950,0,1000),ud(.5,-950/2,.5,-500),'In','Back',1,true)
2063
		wait(.2)
2064
		for i = 0,1.025,.025 do
2065
			Sub.TextTransparency = i
2066
			Circ.ImageTransparency=i
2067
			lrs:wait()
2068
		end
2069
		Circ:Destroy()
2070
		BFrame.Size = ud(0,400,0,210)
2071
		BFrame.Position = Functions:Center(BFrame)
2072
		spawn(function()
2073
			for i = 0,20,.1 do
2074
				MainFrame.BackgroundColor3 = MainFrame.BackgroundColor3:lerp(CurrentPlayerData[3],.1)
2075
				lrs:wait()
2076
			end
2077
		end)
2078
		Sub.Text='Assets['..(#OS.Backgrounds+#OS.Sounds)..'] Loaded.'
2079
		delay(.5,function()
2080
			txt='Click here to begin'
2081
			Effects:Type(Start, txt, 'In',.05)
2082
			delay(.6,function()
2083
				Start.Text=txt
2084
			end)
2085
		end)
2086
		for i = 0,1.025,.025 do
2087
			Sub.TextTransparency = 1-i
2088
			lrs:wait()
2089
		end
2090
	end
2091
	local con2=false
2092
	delay(1,function()
2093
		for i = 0,1.025,.025 do
2094
			Sub.TextTransparency = 1-i
2095
			lrs:wait()
2096
		end
2097
		delay(2,function()
2098
			local tbl1={};
2099
			local tbl2={OS.Backgrounds,OS.Sounds,OS.DecalAssets}
2100
			for _,__ in next, tbl2 do 
2101
				for i, Id in next, __ do
2102
					table.insert(tbl1, Id) 
2103
				end
2104
			end
2105
			for i,v in next, tbl1 do lrs:wait() end
2106
			con=true
2107
			finish_Load()
2108
			con2=true
2109
		end)
2110
	end)
2111
	repeat lrs:wait() until con2
2112
	Start.TextTransparency = 0
2113
	--MainFrame.Transparency = 0
2114
	local LoginScreen
2115
	local sclick
2116
	sclick=Start.MouseButton1Down:connect(function()
2117
		Sub:TweenPosition(ud(0,0,1,50),'In','Quint',1,true)
2118
		delay(1, function()
2119
			LoginScreen(false)
2120
		end)
2121
		sclick:disconnect()
2122
	end)
2123
	function LoginScreen(NewFrame)
2124
		OS['Login']=LoginScreen
2125
		if NewFrame then
2126
			BFrame = Functions:MakeNewUi('Frame')
2127
			BFrame.ZIndex=4
2128
			BFrame.BackgroundTransparency=1
2129
			BFrame.Size = ud(0,400,0,210)
2130
			BFrame.Position = Functions:Center(BFrame)
2131
			BFrame.Parent=MainFrame
2132
		end
2133
		pcall(function()
2134
			Sub:Destroy()
2135
			for i = 0,1.025,.025 do
2136
				Start.TextTransparency = i
2137
				lrs:wait()
2138
			end
2139
			Start.Parent=nil
2140
		end)
2141
		local UserImage = Functions:MakeNewUi('ImageLabel')
2142
		UserImage.Image=Functions:PlayerImage(Host)
2143
		UserImage.Parent=BFrame
2144
		UserImage.Size=ud(0,100,0,100)
2145
		UserImage.ImageTransparency=1
2146
		UserImage.Position=Functions:CenterOffset(UserImage,ud(0,0,-1,0))
2147
		UserImage:TweenPosition(Functions:CenterOffset(UserImage,ud(0,0,0,-50),'Out','Back',1,true))
2148
		UserImage.ZIndex=8
2149
		local UserImgFrame = Functions:MakeNewUi('ImageLabel')
2150
		UserImgFrame.Image=Functions:Asset(502107146)
2151
		UserImgFrame.Parent=BFrame
2152
		UserImgFrame.ImageTransparency=0
2153
		--UserImgFrame.ImageColor3 = c3(Monitor.Color.r+.2,Monitor.Color.g+.2,Monitor.Color.b+.2)
2154
		UserImgFrame.Size=ud(0,100,0,100)
2155
		UserImgFrame.Position=Functions:CenterOffset(UserImgFrame,ud(0,0,-1,0))
2156
		UserImgFrame:TweenPosition(Functions:CenterOffset(UserImgFrame,ud(0,0,0,-50),'Out','Back',1,true))
2157
		local Username = Functions:MakeNewUi('TextLabel')
2158
		Username.Text = Host.Name
2159
		Username.Parent = BFrame
2160
		Username.TextTransparency=.9
2161
		Username.Position=ud(0,0,1,0)
2162
		Username.ZIndex=9
2163
		Username:TweenPosition(ud(0,0,0,15),'Out','Quint',1,true)
2164
		local Password = Functions:MakeNewUi('TextButton')
2165
		Password.TextTransparency=1
2166
		Password.Parent=BFrame
2167
		Password.Position=ud(0,0,1,0)
2168
		Password.Font=OS.Settings.Fonts.Sub_Header
2169
		Password.TextStrokeColor3 = Password.TextColor3
2170
		Password.MouseEnter:connect(function()
2171
			Password.TextStrokeTransparency=.9
2172
		end)
2173
		Password.MouseLeave:connect(function()
2174
			Password.TextStrokeTransparency=1
2175
		end)
2176
		local canclick=false
2177
		Password.MouseButton1Down:connect(function(x,y)
2178
			if not canclick then
2179
				return
2180
			end
2181
			canclick=false
2182
			--Effects:Particles(x,y)
2183
			local val = Functions:LoginScreenGui(ud(0,400,0,28),{loop=true,ui=Password},true)
2184
			print('dun',val)
2185
			local ss
2186
			ss=function(pp)
2187
			num=0
2188
			for i,v in next,pp:children() do
2189
				num=num+1
2190
				pcall(function()
2191
					spawn(function()
2192
						for i = 0,1.025,.025 do
2193
							if v:IsA'TextButton' or v:IsA'TextBox' or v:IsA'TextLabel' then
2194
								v.TextTransparency = i
2195
								lrs:wait()
2196
							end
2197
						end
2198
					end)
2199
				end)
2200
				pcall(function()
2201
					spawn(function()
2202
						for i = 0,1.025,.025 do
2203
							if v:IsA'ImageLabel' then
2204
								v.ImageTransparency = i
2205
								lrs:wait()
2206
							end
2207
						end
2208
					end)
2209
				end)
2210
				pcall(function()
2211
				v:TweenPosition(ud(2,v.Position.X.Offset,v.Position.Y.Scale,v.Position.Y.Offset),'In','Sine',1,true)
2212
				end)
2213
				wait(.1)
2214
				ss(v)
2215
			end
2216
			return num
2217
			end
2218
			ss(BFrame)
2219
			wait((num+1.5)-(.4*num))
2220
			BFrame:Destroy()
2221
			Functions:MakeHomeScreen()
2222
			return {}
2223
			--canclick=true
2224
			--Gui:Destroy()
2225
		end)
2226
		delay(.1,function()
2227
			Password:TweenPosition(ud(0,0,0,45),'Out','Quint',1,true)
2228
		end)
2229
		spawn(function()
2230
			Effects:Type(Password, 'Enter your Password', 'In',.03)
2231
			canclick=true
2232
		end)
2233
		wait(.3)
2234
		spawn(function()
2235
			Effects:Underline(Username, 20, 70, 2, CurrentPlayerData[4], true)
2236
		end)
2237
		for i = 0,1.025,.01 do
2238
			--UserName.TextTransparency = 1-i
2239
			Password.TextTransparency = 1-i
2240
			Username.TextTransparency = 1-i
2241
			UserImage.ImageTransparency = 1-i
2242
			lrs:wait()
2243
		end
2244
		Functions:IfRegistered(Host.Name, function(bool)
2245
			if bool==true then
2246
				for i = 0,20 do
2247
					UserImgFrame.ImageColor3 = UserImgFrame.ImageColor3:lerp(c3(.25,1,.25),.1)
2248
					lrs:wait()
2249
				end
2250
			elseif bool and not Official then
2251
				for i = 0,20 do
2252
					UserImgFrame.ImageColor3 = UserImgFrame.ImageColor3:lerp(c3(1,.25,.25),.1)
2253
					lrs:wait()
2254
				end
2255
			else
2256
				for i = 0,20 do
2257
					UserImgFrame.ImageColor3 = UserImgFrame.ImageColor3:lerp(c3(.4,0,0),.1)
2258
					lrs:wait()
2259
				end
2260
			end
2261
		end)
2262
	end
2263
end
2264
2265
function Functions:Lerp(Speed)
2266
	if Monitor and Monitor.Parent~=nil then
2267
		ypcall(function()
2268
			Monitor.CFrame = Monitor.CFrame:lerp(
2269
			Host.Character.HumanoidRootPart.CFrame * 
2270
			CFrame.new(0,5.5,-6.5) *
2271
			CFrame.Angles(-math.rad(12),0,0)
2272
			, Speed)
2273
		end)
2274
	end
2275
end
2276
2277
function Functions:Boot()
2278
	script:ClearAllChildren()
2279
	Functions:MakeMonitor()
2280
	G = Instance.new('SurfaceGui', Monitor)
2281
	G.Adornee = Monitor
2282
	G.Face = Enum.NormalId.Back
2283
	MainFrame = Functions:MakeNewUi('Frame')
2284
	MainFrame.ZIndex=1
2285
	MainFrame.BackgroundTransparency=.3
2286
	MainFrame.BackgroundColor3 = CurrentPlayerData[3]
2287
	MainFrame.Parent=G
2288
	spawn(function()
2289
		--wait(2)
2290
		for i = 0,20,.1 do
2291
			MainFrame.BackgroundColor3 = MainFrame.BackgroundColor3:lerp(CurrentPlayerData[4],.1)
2292
			lrs:wait()
2293
		end
2294
	end)
2295
	local MouseFrame = Instance.new('TextLabel', MainFrame)
2296
	MouseFrame.Size = ud(0,5,0,5)
2297
	MouseFrame.BackgroundTransparency = 1
2298
	MouseFrame.Text = ''
2299
	MouseFrame.ZIndex = 9
2300
	MouseFrame.BackgroundColor3=c3(-1,-1,-1)
2301
	MainFrame.MouseMoved:connect(function(x,y)
2302
		if MouseFrame.Parent ~= nil then
2303
			MouseFrame.Position = ud(0,x+3,0,y+6)
2304
		end
2305
	end)
2306
	--200182847
2307
	local MouseInner = Instance.new('ImageLabel', MouseFrame)
2308
	OS.Assets.Mouse=MouseFrame
2309
	MouseInner.Size = ud(0,5,0,5)
2310
	MouseInner.Position = ud(0,-5,0,-7)
2311
	MouseInner.ImageColor3 = CurrentPlayerData[3]
2312
	MouseInner.Image = Functions:Asset(284205403)
2313
	MouseInner.Name = 'AFriendlyMouse1'
2314
	MouseInner.BackgroundTransparency = 1
2315
	MouseInner.ZIndex = 10
2316
	local MouseOuter = Instance.new('ImageLabel', MouseFrame)
2317
	MouseOuter.Size = ud(0,7,0,7)
2318
	MouseOuter.Position = ud(0,-6,0,-8)
2319
	MouseOuter.ImageColor3 = CurrentPlayerData[4]
2320
	MouseOuter.Image = Functions:Asset(284205403)
2321
	MouseOuter.Name = 'AFriendlyMouse2'
2322
	MouseOuter.BackgroundTransparency = 1
2323
	MouseOuter.ZIndex = 9
2324
	local sx,sy=90,100
2325
	local mouseactive=true
2326
	PlayerMouse.Button1Down:connect(function()
2327
		OS.MouseDown = true
2328
		if not mouseactive then return end
2329
		local mus=Functions:Sound(341225236)
2330
		mus.Pitch=3
2331
		mus:Play()
2332
	end)
2333
	PlayerMouse.Button1Up:connect(function()
2334
		OS.MouseDown = false
2335
		if not mouseactive then return end
2336
		local mds=Functions:Sound(341225236)
2337
		mds.Pitch=2.5
2338
		mds:Play()
2339
		local RelativeUi=MouseFrame
2340
		local x,y=RelativeUi.Position.X.Offset,RelativeUi.Position.Y.Offset
2341
		local Circ = Functions:MakeNewUi('ImageLabel')
2342
		Circ.Image=Functions:Asset(284205403)
2343
		Circ.Parent=MainFrame
2344
		Circ.ImageTransparency=0
2345
		Circ.ImageColor3 = CurrentPlayerData[4]
2346
		Circ.Size=ud(0,5,0,5)
2347
		local backx,backy=5,6
2348
		Circ.Position=ud(0,x-backx,0,y-backy)
2349
		Circ.ZIndex=10
2350
		spawn(function()
2351
			Circ:TweenSizeAndPosition(ud(0,sx,0,sy),ud(0,(x-backx)-(sx/2),0,(y-backy)-(sy/2)),'Out','Sine',1,true)
2352
			for i = 0,1.05,.05 do
2353
				Circ.ImageTransparency=i
2354
				lrs:wait()
2355
			end
2356
			Circ:Destroy()
2357
		end)
2358
	end)
2359
	MainFrame.MouseEnter:connect(function(x,y)
2360
		mouseactive=true
2361
		game:service'UserInputService'.MouseIconEnabled=false
2362
		OS.Functions:HideChar()
2363
	end)
2364
	MainFrame.MouseLeave:connect(function(x,y)
2365
		mouseactive=false
2366
		game:service'UserInputService'.MouseIconEnabled=true
2367
		OS.Functions:ShowChar()
2368
	end)
2369
	--Functions:CreateLogin()
2370
	Functions:MakeHomeScreen()
2371
end
2372
2373
lrs:connect(function()
2374
	Functions:Lerp(.2)
2375
end)
2376
2377
Character.Humanoid.Died:connect(function()
2378
	Monitor.Parent:Destroy()
2379
	game:service'UserInputService'.MouseIconEnabled=true
2380
	script:Destroy()
2381
end)
2382
2383
Host.Chatted:connect(function(msg)
2384
	if msg=='g/r' then
2385
		Monitor:Destroy()
2386
		game:service'UserInputService'.MouseIconEnabled=true
2387
		script:Destroy()
2388
	end
2389
end)
2390
2391
local plrz=game:service'Players'
2392
2393
plrz.PlayerAdded:connect(function(Plr)
2394
	Functions:PlayerImgNotification(Plr, 'join')
2395
end)
2396
2397
plrz.PlayerRemoving:connect(function(Plr)
2398
	Functions:PlayerImgNotification(Plr, 'rmv')
2399
end)
2400
2401
Functions:Boot()
2402
2403
Host.Chatted:connect(function(msg)
2404
	if msg:lower()=='!reboot' then
2405
		Functions:Boot()
2406
	elseif msg:lower():sub(0,#'!background') == '!background' then
2407
		local id = msg:lower():sub(#'!background'+2)
2408
		OS.UIs['Background'][1].Image=Functions:Asset(tonumber(id))
2409
	end
2410
end)