View difference between Paste ID: VJtDfRsJ and CETxakY6
SHOW: | | - or go back to the newest paste.
1
-- This script has been converted to FE by iPxter
2
3
4-
s = Instance.new("ScreenGui", game.Players.LocalPlayer.PlayerGui)
4+
if game:GetService("RunService"):IsClient() then error("Script must be server-side in order to work; use h/ and not hl/") end
5
local Player,Mouse,mouse,UserInputService,ContextActionService = owner
6
do
7
	print("FE Compatibility code by Mokiros | Translated to FE by iPxter")
8
	script.Parent = Player.Character
9
10
	--RemoteEvent for communicating
11
	local Event = Instance.new("RemoteEvent")
12
	Event.Name = "UserInput_Event"
13
14
	--Fake event to make stuff like Mouse.KeyDown work
15
	local function fakeEvent()
16
		local t = {_fakeEvent=true,Connect=function(self,f)self.Function=f end}
17
		t.connect = t.Connect
18
		return t
19
	end
20
21-
if game.Players.LocalPlayer.PlayerGui:findFirstChild("Explorer") then 
21+
	--Creating fake input objects with fake variables
22-
	game.Players.LocalPlayer.PlayerGui:findFirstChild("Explorer"):Remove() 
22+
    local m = {Target=nil,Hit=CFrame.new(),KeyUp=fakeEvent(),KeyDown=fakeEvent(),Button1Up=fakeEvent(),Button1Down=fakeEvent()}
23
	local UIS = {InputBegan=fakeEvent(),InputEnded=fakeEvent()}
24
	local CAS = {Actions={},BindAction=function(self,name,fun,touch,...)
25
		CAS.Actions[name] = fun and {Name=name,Function=fun,Keys={...}} or nil
26
	end}
27
	--Merged 2 functions into one by checking amount of arguments
28
	CAS.UnbindAction = CAS.BindAction
29
30
	--This function will trigger the events that have been :Connect()'ed
31
	local function te(self,ev,...)
32
		local t = m[ev]
33
		if t and t._fakeEvent and t.Function then
34
			t.Function(...)
35
		end
36
	end
37
	m.TrigEvent = te
38
	UIS.TrigEvent = te
39
40
	Event.OnServerEvent:Connect(function(plr,io)
41
	    if plr~=Player then return end
42
		if io.isMouse then
43
			m.Target = io.Target
44
			m.Hit = io.Hit
45
		else
46
			local b = io.UserInputState == Enum.UserInputState.Begin
47
			if io.UserInputType == Enum.UserInputType.MouseButton1 then
48
				return m:TrigEvent(b and "Button1Down" or "Button1Up")
49
			end
50
			for _,t in pairs(CAS.Actions) do
51
				for _,k in pairs(t.Keys) do
52
					if k==io.KeyCode then
53
						t.Function(t.Name,io.UserInputState,io)
54
					end
55
				end
56
			end
57
			m:TrigEvent(b and "KeyDown" or "KeyUp",io.KeyCode.Name:lower())
58
			UIS:TrigEvent(b and "InputBegan" or "InputEnded",io,false)
59
	    end
60
	end)
61
	Event.Parent = NLS([==[
62
	local Player = game:GetService("Players").LocalPlayer
63
	local Event = script:WaitForChild("UserInput_Event")
64
65
	local UIS = game:GetService("UserInputService")
66
	local input = function(io,a)
67
		if a then return end
68
		--Since InputObject is a client-side instance, we create and pass table instead
69
		Event:FireServer({KeyCode=io.KeyCode,UserInputType=io.UserInputType,UserInputState=io.UserInputState})
70
	end
71
	UIS.InputBegan:Connect(input)
72
	UIS.InputEnded:Connect(input)
73
74
	local Mouse = Player:GetMouse()
75
	local h,t
76
	--Give the server mouse data 30 times every second, but only if the values changed
77
	--If player is not moving their mouse, client won't fire events
78
	while wait(1/30) do
79
		if h~=Mouse.Hit or t~=Mouse.Target then
80
			h,t=Mouse.Hit,Mouse.Target
81
			Event:FireServer({isMouse=true,Target=t,Hit=h})
82
		end
83
	end]==],Player.Character)
84
	Mouse,mouse,UserInputService,ContextActionService = m,m,UIS,CAS
85
end
86
87
TextProperties = {"ClassName", "Name", "Value", "Text", "Reflectance", "Transparency", "Heat", "TeamName", "WalkSpeed", "Health", "MaxHealth", "Size", "Position", "AccountAge", "RobloxLocked", "TeamColor", "userId", "Brightness", "Ambient", "TimeOfDay", "FieldOfView", "CameraType", "LinkedSource"}
88
BoolProperties = {"Anchored", "CanCollide", "Disabled", "Jump", "Sit", "Visible", "Enabled", "Locked", "FilteringEnabled", "StreamingEnabled", "GlobalShadows"}
89
BrickColorProperties = {"BrickColor", "Color", "TeamColor", "Texture", "Value"}
90
s = Instance.new("ScreenGui", game.Players.wrrrryyyyyyyyyyyyyyy.PlayerGui)
91
pgr = Instance.new("TextButton")
92
pgr.Parent = s
93
pgr.Size = UDim2.new(0,100,0,40)
94
pgr.Position = UDim2.new(0,30,0,440)
95
pgr.Text="Explorer"
96
pgr.BackgroundTransparency = 0.3
97
pgr.TextColor = BrickColor.new("White")
98
pgr.BackgroundColor = BrickColor.new("Really Black")
99
pgr.BorderColor = BrickColor.new("Black")
100
pgr.Font = "ArialBold"
101
pgr.FontSize = "Size14"
102
pgr.TextStrokeColor3 = Color3.new(0/0,0/0,0/0)
103
pgr.TextStrokeTransparency = 0.3
104
pgr.BorderSizePixel = 1
105
pgr.BorderColor = BrickColor.new("White")
106
107
if game.Players.wrrrryyyyyyyyyyyyyyy.PlayerGui:findFirstChild("Explorer") then 
108
	game.Players.wrrrryyyyyyyyyyyyyyy.PlayerGui:findFirstChild("Explorer"):Remove() 
109
end
110
111
local Cloned
112
local Deleted
113
local DeleteParent
114
local Player
115
local Search
116
local ScriptSearch
117
local Gui
118
local Cloned = nil
119
local Deleted = nil
120
local DeleteParent = nil
121
local Current = 0
122
local CurrentOption = 0
123
124
function Clear()
125
	if Gui then 
126
		Gui:Remove() 
127
	end
128
	Current = 0
129
	CurrentOption = 0
130
end
131
132
function AddButton(N, Function, Color, Copy)
133
	if not N then 
134
		error("RenderButton - No Name Specified")
135
	end
136
	if not Function then 
137
		error("RenderButton - No Function Specified") 
138
	end
139
	if not Color then 
140
		Color = Color3.new(1, 1, 1) 
141
	end
142
	if Copy == nil then 
143
		Copy = true 
144
	end
145
	P = Instance.new("TextButton")
146
	if Copy then
147
		P.Size = UDim2.new(0, 110, 0, 20)
148
	else
149
		P.Size = UDim2.new(0, 130, 0, 20)
150
	end
151
	P.Text = N.Name
152
	P.Name = N.Name
153
	P.Parent = Gui
154
	P.BackgroundColor3 = Color
155
	P.TextColor3 = Color3.new(0, 0, 0)
156
	P.BackgroundTransparency = 0.5
157
	P.Position = UDim2.new(0, ((math.modf(Current/30))*150)+300, 0, 50+(20*((Current%30)-1)))
158
	P.MouseButton1Click:connect(function() 
159
		Function(P) 
160
	end)
161
	D = Instance.new("TextButton")
162
	D.Size = UDim2.new(0, 20, 0, 20)
163
	D.Text = "X"
164
	D.Name = N.Name
165
	D.Parent = Gui
166
	D.BackgroundColor3 = Color3.new(1, 0, 0)
167
	D.TextColor3 = Color3.new(0, 0, 0)
168
	D.BackgroundTransparency = 0.5
169
	D.Position = UDim2.new(0, ((math.modf(Current/30))*150)+300+130, 0, 50+(20*((Current%30)-1)))
170
	D.MouseButton1Click:connect(function()
171
		Deleted = N
172
		DeleteParent = N.Parent
173
		N.Parent = nil
174
		Clear()
175
		Search(DeleteParent)
176
	end)
177
	if Copy then
178
		C = Instance.new("TextButton")
179
		C.Size = UDim2.new(0, 20, 0, 20)
180
		C.Text = "C"
181
		C.Name = N.Name
182
		C.Parent = Gui
183
		C.BackgroundColor3 = Color3.new(0, 1, 0.5)
184
		C.TextColor3 = Color3.new(0, 0, 0)
185
		C.BackgroundTransparency = 0.5
186
		C.Position = UDim2.new(0, ((math.modf(Current/30))*150)+300+110, 0, 50+(20*((Current%30)-1)))
187
		C.MouseButton1Click:connect(function()
188
			Cloned = N
189
			Clear()
190
			Search(N.Parent)
191
		end)
192
	end
193
	Current = Current + 1
194
	return P
195
end
196
	
197
function AddOption(N, Function, Color, Text)
198
	if not N then 
199
		error("RenderButton - No Name Specified") 
200
	end
201
	if not Color then 
202
		Color = Color3.new(1, 1, 1) 
203
	end
204
	if Text == nil then 
205
		Text = false 
206
	end
207
	if Text then
208
		P = Instance.new("TextBox")
209
	else
210
		P = Instance.new("TextButton")
211-
	Gui.Parent = game.Players.LocalPlayer.PlayerGui
211+
212
	P.Text = N
213
	P.Name = N
214
	P.Parent = Gui
215
	P.BackgroundColor3 = Color
216
	P.TextColor3 = Color3.new(0, 0, 0)
217
	P.BackgroundTransparency = 0.5
218
	P.Size = UDim2.new(0, 150, 0, 20)
219
	P.Position = UDim2.new(0, ((math.modf(CurrentOption/30))*150)+150, 0, 50+(20*((CurrentOption%30)-1)))
220
	if not Text and Function then
221
		P.MouseButton1Click:connect(function() Function(P) end)
222
	end
223
	CurrentOption = CurrentOption + 1
224
	return P
225
end
226
227
function AddTextOption(Obj, Prop)
228
	local Ob = Obj
229
	local Pro = Prop
230
	if type(Ob[Pro]) == "number" or type(Ob[Pro]) == "string" then
231
		CurrentOption = CurrentOption + 1
232
		local T = AddOption(Ob[Pro], nil, Color3.new(0.1, 0.4, 0.1), true)
233
		CurrentOption = CurrentOption - 2
234
		local O = AddOption("Change "..Pro..":", function() Ob[Pro] = T.Text end, Color3.new(0.1, 0.8, 0.1), false)
235
		CurrentOption = CurrentOption + 1
236
	end
237
end
238
239
function AddBrickColorOption(Obj, Prop)
240
	local Ob = Obj
241
	local Pro = Prop
242
	if BrickColor.new(tostring(Ob[Pro])) == Ob[Pro] then
243
		CurrentOption = CurrentOption + 1
244
		local T = AddOption(tostring(Ob[Pro]), nil, Color3.new(0.1, 0.4, 0.1), true)
245
		CurrentOption = CurrentOption - 2
246
		local O = AddOption("Change "..Pro..":", function() Ob[Pro] = BrickColor.new(T.Text) end, Color3.new(0.1, 0.8, 0.1), false)
247
		CurrentOption = CurrentOption + 1
248
	end
249
end
250
251
function AddBoolOption(Obj, Prop)
252
	local Ob = Obj
253
	local Pro = Prop
254
	if type(Ob[Pro]) == "boolean" then
255
		local O = AddOption(Pro..": "..tostring(Ob[Pro]), nil, Color3.new(0.1, 0.8, 0.1), false)
256
		O.MouseButton1Click:connect(function()
257
			if Ob[Pro] then
258
				Ob[Pro] = false
259
				O.Text = Pro..": false"
260
			else
261
				Ob[Pro] = true
262
				O.Text = Pro..": true"
263
			end
264
		end)
265
	end
266
end
267
268
function TestProperty(Obj, Property)
269
	Success = pcall(function() 
270
		if Obj[Property] then 
271
			return 
272
		end 
273
	end)
274-
		Gui.Parent = game.Players.LocalPlayer.PlayerGui
274+
275
end
276
277
function LoadOptions(Object)
278
	for Num, Prop in pairs(TextProperties) do
279
		if TestProperty(Object, Prop) then
280
			AddTextOption(Object, Prop)
281
		end
282
	end
283
	for Num, Prop in pairs(BoolProperties) do
284
		if TestProperty(Object, Prop) then
285
			AddBoolOption(Object, Prop)
286
		end
287
	end
288
	for Num, Prop in pairs(BrickColorProperties) do
289
		if TestProperty(Object, Prop) then
290
			AddBrickColorOption(Object, Prop)
291
		end
292
	end
293
end
294
295
function Search(Object)
296
	Gui = Instance.new("ScreenGui")
297
	Gui.Parent = game.Players.wrrrryyyyyyyyyyyyyyy.PlayerGui
298
	Gui.Name = "Explorer"
299
	if Object ~= game then
300
		AddOption("Back", function() 
301
			Clear(); 
302
			Search(Object.Parent) 
303
		end, Color3.new(0.5, 1, 1), false)
304
	end
305
	AddOption("Reload", function() Clear(); Search(Object); end, Color3.new(0.2, 1, 0.2), false)
306
	if Cloned then
307
		AddOption("Paste", function() Cloned:Clone().Parent = Object; Clear(); Search(Object); end, Color3.new(0.5, 1, 1), false)
308
	end
309
	if Deleted then
310
		AddOption("Undo", function() Deleted.Parent = DeleteParent; Deleted = nil; DeletedParent = nil; Clear(); Search(Object); end, Color3.new(1, 0.6, 0.1), false)
311
	end
312
	if Object:IsA("Player") then
313
		AddOption("Goto Character", function() Clear(); if Object.Character then Search(Object.Character); end end, Color3.new(1, 1, 1), false)
314
	end
315
	if Object:IsA("LocalScript") then
316
		AddOption("EditScript", function() Clear(); ScriptSearch(Object); end, Color3.new(1, 1, 1), false)
317
	end
318
	if Object:IsA("Terrain") then
319
		AddOption("Clear", function() Object:Clear(); end, Color3.new(1, 1, 1), false)
320
	end
321
	LoadOptions(Object)
322
	AddOption("Close", Clear, Color3.new(1, 0.2, 0), false)
323
	if not Object:IsA("Workspace") or not Object:IsA("Player") then
324
		for Num, Obj in pairs(Object:GetChildren()) do
325
			--if not Obj:IsA("BasePart") or not Object.Parent == game.Workspace then
326
			if true then
327
				if Obj:IsA("LocalScript") then
328
					AddButton(Obj, function() Clear(); Search(Obj); end, Color3.new(1, 0, 0), true)
329
				elseif Obj:IsA("Script") or Obj:IsA("StarterScript") or Obj:IsA("CoreScript") then
330
					AddButton(Obj, function() Clear(); Search(Obj); end, Color3.new(0.5, 0.5, 0.8), true)
331
				elseif Obj.Parent == game then
332
					AddButton(Obj, function() Clear(); Search(Obj); end, Color3.new(1, 1, 1), false)
333
				else
334
					AddButton(Obj, function() Clear(); Search(Obj); end, Color3.new(1, 1, 1), true)
335
				end
336
			end
337
		end
338
	end
339
	function MoveUp(Place, Amount)
340
		for i,v in pairs(Place:GetChildren()) do
341
			if v:IsA("TextLabel") or v:IsA("TextBox") then
342
				v.Position = v.Position + UDim2.new(0,0,0,-Amount)
343
			end
344
		end
345
	end
346
	function MoveDown(Place, Amount)
347
		for i,v in pairs(Place:GetChildren()) do
348
			if v:IsA("TextLabel") or v:IsA("TextBox") then
349
				v.Position = v.Position + UDim2.new(0,0,0,Amount)
350
			end
351
		end
352
	end
353
	i=0
354
	function ScriptSearch(S)
355
		Script2 = S
356
		Script = Script2.Source
357
		Table = {}
358
		Enabled = true
359
		Gui = Instance.new("ScreenGui")
360
		Gui.Parent = game.Players.wrrrryyyyyyyyyyyyyyy.PlayerGui
361
		Gui.Name = "Explorer"
362
		while Enabled do
363
			Start, End = string.find(Script, '\n')
364
			print(Start, End)
365
			if Start and End then
366
				table.insert(Table, string.sub(Script, 1, End))
367
				New = string.sub(Script, End+1, string.len(Script))
368
				Script = New
369
			else
370
				Enabled = false
371
				table.insert(Table, string.sub(Script, 1, End))
372
				print("Finished")
373
			end
374
		end
375
		P = Instance.new("TextLabel")
376
		P.Size = UDim2.new(0, 500, 0, 20)
377
		P.Text = Script2.Name
378
		P.Name = "Script Line"
379
		P.Parent = Gui
380
		P.BackgroundColor3 = Color3.new(1, 1, 1)
381
		P.TextColor3 = Color3.new(0, 0, 0)
382
		P.BackgroundTransparency = 0.5
383
		P.Position = UDim2.new(0.5, -250, 0, 150+(20*(i-1)))
384
		P.TextXAlignment = "Left"
385
		i=i+1
386
		New = {}
387
		for I,Val in pairs(Table) do
388
			print(Val)
389
			P = Instance.new("TextBox")
390
			P.ClearTextOnFocus = false
391
			P.Size = UDim2.new(0, 500, 0, 20)
392
			P.Text = Val
393
			P.Name = "Script Line"
394
			P.Parent = Gui
395
			P.BackgroundColor3 = Color3.new(1, 1, 1)
396
			P.TextColor3 = Color3.new(0, 0, 0)
397
			P.BackgroundTransparency = 0.5
398
			P.Position = UDim2.new(0.5, -250, 0, 150+(20*(i-1)))
399
			P.TextXAlignment = "Left"
400
			table.insert(New, P)
401
			i=i+1
402
		end
403
		i=1
404
		P = Instance.new("TextButton")
405
		P.Size = UDim2.new(0, 20, 0, 20)
406
		P.Text = "^"
407
		P.Name = "Scroll"
408
		P.Parent = Gui
409
		P.BackgroundColor3 = Color3.new(1, 1, 1)
410
		P.TextColor3 = Color3.new(0, 0, 0)
411
		P.BackgroundTransparency = 0.5
412
		P.Position = UDim2.new(0.5, -270, 0, 150+(20*(i-1)))
413
		P.MouseButton1Click:connect(function() 
414
			MoveUp(Gui, -20) 
415
		end)
416
		i=i+1
417
		P = Instance.new("TextButton")
418
		P.Size = UDim2.new(0, 20, 0, 20)
419
		P.Text = "v"
420
		P.Name = "Scroll"
421
		P.Parent = Gui
422
		P.BackgroundColor3 = Color3.new(1, 1, 1)
423
		P.TextColor3 = Color3.new(0, 0, 0)
424
		P.BackgroundTransparency = 0.5
425
		P.Position = UDim2.new(0.5, -270, 0, 150+(20*(i-1)))
426
		P.MouseButton1Click:connect(function() 
427
			MoveDown(Gui, -20) 
428
		end)
429
		i=i+1
430
		P = Instance.new("TextButton")
431
		P.Size = UDim2.new(0, 20, 0, 20)
432
		P.Text = "^^"
433
		P.Name = "Scroll"
434
		P.Parent = Gui
435
		P.BackgroundColor3 = Color3.new(1, 1, 1)
436
		P.TextColor3 = Color3.new(0, 0, 0)
437
		P.BackgroundTransparency = 0.5
438
		P.Position = UDim2.new(0.5, -270, 0, 150+(20*(i-1)))
439
		P.MouseButton1Click:connect(function() 
440
			MoveUp(Gui, -200) 
441
		end)
442
		i=i+1
443
		P = Instance.new("TextButton")
444
		P.Size = UDim2.new(0, 20, 0, 20)
445
		P.Text = "vv"
446
		P.Name = "Scroll"
447
		P.Parent = Gui
448
		P.BackgroundColor3 = Color3.new(1, 1, 1)
449
		P.TextColor3 = Color3.new(0, 0, 0)
450
		P.BackgroundTransparency = 0.5
451
		P.Position = UDim2.new(0.5, -270, 0, 150+(20*(i-1)))
452
		P.MouseButton1Click:connect(function() 
453
			MoveDown(Gui, -200) 
454
		end)
455
		i=i+1
456
		P = Instance.new("TextButton")
457
		P.Size = UDim2.new(0, 20, 0, 20)
458
		P.Text = "S"
459
		P.Name = "Save"
460
		P.Parent = Gui
461
		P.BackgroundColor3 = Color3.new(0, 1, 0)
462
		P.TextColor3 = Color3.new(0, 0, 0)
463
		P.BackgroundTransparency = 0.5
464
		P.Position = UDim2.new(0.5, -270, 0, 150+(20*(i-1)))
465
		P.MouseButton1Click:connect(function()
466
			StringS = ""
467
			for Num, Obj in pairs(New) do
468
				StringS = StringS..Obj.Text..'\n'
469
			end
470
			S.Source = StringS
471
			S.Disabled = true
472
			S.Disabled = false
473
		end)
474
		i=i+1
475
		P = Instance.new("TextButton")
476
		P.Size = UDim2.new(0, 20, 0, 20)
477
		P.Text = "x"
478
		P.Name = "Back"
479
		P.Parent = Gui
480
		P.BackgroundColor3 = Color3.new(1, 0.2, 0)
481
		P.TextColor3 = Color3.new(0, 0, 0)
482
		P.BackgroundTransparency = 0.5
483
		P.Position = UDim2.new(0.5, -270, 0, 150+(20*(i-1)))
484
		P.MouseButton1Click:connect(function()
485
			Clear()
486
			i=0
487
			Search(S)
488
		end)
489
		i=i+1
490
	end
491
end
492
493
pgr.MouseButton1Click:connect(function()
494
	Clear()
495
	Search(game)
496
end)