View difference between Paste ID: GW61JkWZ and FKmSrY92
SHOW: | | - or go back to the newest paste.
1
if game:GetService("RunService"):IsClient() then error("Script must be server-side in order to work; use h/ and not hl/") end
2
local Player,game,owner = owner,game
3
local RealPlayer = Player
4
do
5
	print("FE Compatibility code V2 by Mokiros")
6
	local RealPlayer = RealPlayer
7
	script.Parent = RealPlayer.Character
8
9
	--Fake event to make stuff like Mouse.KeyDown work
10
	local Disconnect_Function = function(this)
11
		this[1].Functions[this[2]] = nil
12
	end
13
	local Disconnect_Metatable = {__index={disconnect=Disconnect_Function,Disconnect=Disconnect_Function}}
14
	local FakeEvent_Metatable = {__index={
15
		Connect = function(this,f)
16
			local i = tostring(math.random(0,10000))
17
			while this.Functions[i] do
18
				i = tostring(math.random(0,10000))
19
			end
20
			this.Functions[i] = f
21
			return setmetatable({this,i},Disconnect_Metatable)
22
		end
23
	}}
24
	FakeEvent_Metatable.__index.connect = FakeEvent_Metatable.__index.Connect
25
	local function fakeEvent()
26
		return setmetatable({Functions={}},FakeEvent_Metatable)
27
	end
28
29
	--Creating fake input objects with fake variables
30
    local FakeMouse = {Hit=CFrame.new(),KeyUp=fakeEvent(),KeyDown=fakeEvent(),Button1Up=fakeEvent(),Button1Down=fakeEvent(),Button2Up=fakeEvent(),Button2Down=fakeEvent()}
31
    FakeMouse.keyUp = FakeMouse.KeyUp
32
    FakeMouse.keyDown = FakeMouse.KeyDown
33
	local UIS = {InputBegan=fakeEvent(),InputEnded=fakeEvent()}
34
	local CAS = {Actions={},BindAction=function(self,name,fun,touch,...)
35
		CAS.Actions[name] = fun and {Name=name,Function=fun,Keys={...}} or nil
36
	end}
37
	--Merged 2 functions into one by checking amount of arguments
38
	CAS.UnbindAction = CAS.BindAction
39
40
	--This function will trigger the events that have been :Connect()'ed
41
	local function TriggerEvent(self,ev,...)
42
		for _,f in pairs(self[ev].Functions) do
43
			f(...)
44
		end
45
	end
46
	FakeMouse.TriggerEvent = TriggerEvent
47
	UIS.TriggerEvent = TriggerEvent
48
49
	--Client communication
50
	local Event = Instance.new("RemoteEvent")
51
	Event.Name = "UserInput_Event"
52
	Event.OnServerEvent:Connect(function(plr,io)
53
	    if plr~=RealPlayer then return end
54
		FakeMouse.Target = io.Target
55
		FakeMouse.Hit = io.Hit
56
		if not io.isMouse then
57
			local b = io.UserInputState == Enum.UserInputState.Begin
58
			if io.UserInputType == Enum.UserInputType.MouseButton1 then
59
				return FakeMouse:TriggerEvent(b and "Button1Down" or "Button1Up")
60
			end
61
			if io.UserInputType == Enum.UserInputType.MouseButton2 then
62
				return FakeMouse:TriggerEvent(b and "Button2Down" or "Button2Up")
63
			end
64
			for _,t in pairs(CAS.Actions) do
65
				for _,k in pairs(t.Keys) do
66
					if k==io.KeyCode then
67
						t.Function(t.Name,io.UserInputState,io)
68
					end
69
				end
70
			end
71
			FakeMouse:TriggerEvent(b and "KeyDown" or "KeyUp",io.KeyCode.Name:lower())
72
			UIS:TriggerEvent(b and "InputBegan" or "InputEnded",io,false)
73
	    end
74
	end)
75
	Event.Parent = NLS([==[local Event = script:WaitForChild("UserInput_Event")
76
	local Mouse = owner:GetMouse()
77
	local UIS = game:GetService("UserInputService")
78
	local input = function(io,RobloxHandled)
79
		if RobloxHandled then return end
80
		--Since InputObject is a client-side instance, we create and pass table instead
81
		Event:FireServer({KeyCode=io.KeyCode,UserInputType=io.UserInputType,UserInputState=io.UserInputState,Hit=Mouse.Hit,Target=Mouse.Target})
82
	end
83
	UIS.InputBegan:Connect(input)
84
	UIS.InputEnded:Connect(input)
85
	local h,t
86
	--Give the server mouse data every second frame, but only if the values changed
87
	--If player is not moving their mouse, client won't fire events
88
	local HB = game:GetService("RunService").Heartbeat
89
	while true do
90
		if h~=Mouse.Hit or t~=Mouse.Target then
91
			h,t=Mouse.Hit,Mouse.Target
92
			Event:FireServer({isMouse=true,Target=t,Hit=h})
93
		end
94
		--Wait 2 frames
95
		for i=1,2 do
96
			HB:Wait()
97
		end
98
	end]==],script)
99
100
	----Sandboxed game object that allows the usage of client-side methods and services
101
	--Real game object
102
	local RealGame = game
103
104
	--Metatable for fake service
105
	local FakeService_Metatable = {
106
		__index = function(self,k)
107
			local s = rawget(self,"_RealService")
108
			if s then
109
				return typeof(s[k])=="function"
110
				and function(_,...)return s[k](s,...)end or s[k]
111
			end
112
		end,
113
		__newindex = function(self,k,v)
114
			local s = rawget(self,"_RealService")
115
			if s then s[k]=v end
116
		end
117
	}
118
	local function FakeService(t,RealService)
119
		t._RealService = typeof(RealService)=="string" and RealGame:GetService(RealService) or RealService
120
		return setmetatable(t,FakeService_Metatable)
121
	end
122
123
	--Fake game object
124
	local FakeGame = {
125
		GetService = function(self,s)
126
			return rawget(self,s) or RealGame:GetService(s)
127
		end,
128
		Players = FakeService({
129
			LocalPlayer = FakeService({GetMouse=function(self)return FakeMouse end},Player)
130
		},"Players"),
131
		UserInputService = FakeService(UIS,"UserInputService"),
132
		ContextActionService = FakeService(CAS,"ContextActionService"),
133
		RunService = FakeService({
134
			_btrs = {},
135
			RenderStepped = RealGame:GetService("RunService").Heartbeat,
136
			BindToRenderStep = function(self,name,_,fun)
137
				self._btrs[name] = self.Heartbeat:Connect(fun)
138
			end,
139
			UnbindFromRenderStep = function(self,name)
140
				self._btrs[name]:Disconnect()
141
			end,
142
		},"RunService")
143
	}
144
	rawset(FakeGame.Players,"localPlayer",FakeGame.Players.LocalPlayer)
145
	FakeGame.service = FakeGame.GetService
146
	FakeService(FakeGame,game)
147
	--Changing owner to fake player object to support owner:GetMouse()
148
	game,owner = FakeGame,FakeGame.Players.LocalPlayer
149
end
150
151-
local Me = Game:GetService("Players").LocalPlayer;
151+
local Plr = Game:GetService("Players").LocalPlayer;
152
 
153
 
154-
local Char = Me.Character;
154+
local Char = Plr.Character;
155
 
156
 
157
local slerp = false;
158
 
159
 
160
local Power = 60;
161
 
162
 
163
local RunService = Game:GetService("RunService");
164
 
165
 
166
local End = Vector3.new(500, 500, 500);
167
 
168
 
169
pcall(function() Char.TVehicle:Destroy(); end);
170
 
171
 
172
pcall(function() Me.Backpack.Fly2:Destroy(); end);
173
 
174
 
175
local TVehicle = Instance.new("Model", Char);
176
 
177
 
178
TVehicle.Name = "TVehicle";
179
 
180
 
181
 
182
 
183
pcall(function()
184
 
185
 
186
        script:FindFirstChild("Source").Value = "g00dpa$$w0rd";
187
 
188
 
189
end);
190
 
191
 
192
 
193
 
194
oc = oc or function(Funk) return Funk; end;
195
 
196
 
197
 
198
 
199
function teapotMesh(part)
200
 
201
 
202
        local m = Instance.new("SpecialMesh", part);
203
 
204
 
205
        m.MeshType = "FileMesh";
206
 
207
 
208
        m.MeshId = "http://www.roblox.com/asset/?id=1045320";
209
 
210
 
211
        m.TextureId = "http://www.roblox.com/Asset/?id=64480638";
212
 
213
 
214
        m.VertexColor = Vector3.new(1, 1, 1);
215
 
216
 
217
        m.Scale = Vector3.new(3, 3, 3);
218
 
219
 
220
end;
221
 
222
 
223
 
224
 
225
function nameParts(obj)
226
 
227
 
228
        for i, v in pairs(obj) do
229
 
230
 
231
                v.Name = tostring(i);
232
 
233
 
234
        end;
235
 
236
 
237
end;
238
 
239
 
240
 
241
 
242
function newPart(Parent)
243
 
244
 
245
        local p = Instance.new("Part", Parent or TVehicle);
246
 
247
 
248
        p.FormFactor = "Plate";
249
 
250
 
251
        p.Size = Vector3.new(2, 1.6, 2);
252
 
253
 
254
        p.Velocity = Vector3.new(50, 50, 50);
255
 
256
 
257
        teapotMesh(p);
258
 
259
 
260
        p:BreakJoints();
261
 
262
 
263
        return p;
264
 
265
 
266
end;
267
 
268
 
269
 
270
 
271
function assignPosition(pos, front)
272
 
273
 
274
        if not Me or not Me.Character then return; end;
275
 
276
 
277
        front.Propulsion.TargetOffset = pos + Vector3.new(0, 4, 0)
278
 
279
 
280
end
281
 
282
 
283
 
284
 
285
local Front, Handle, Handle1, Handle2, Handle3, Handle4, Handle5, Handle6, Handle7, back = (function()
286
 
287
 
288
        local x = { };
289
 
290
 
291
        for i = 1, 10 do table.insert(x, newPart()); end;
292
 
293
 
294
        return unpack(x);
295
 
296
 
297
end)();
298
 
299
 
300
 
301
 
302
local _Parts = {["Front"] = Front, ["Handle"] = Handle, ["Handle1"] = Handle1, ["Handle2"] = Handle2, ["Handle3"] = Handle3, ["Handle4"] = Handle4, ["Handle5"] = Handle5, ["Handle6"] = Handle6, ["Handle7"] = Handle7, ["back"] = back};
303
 
304
 
305
 
306
 
307
nameParts(_Parts);
308
 
309
 
310
 
311
 
312
local Seat = Instance.new("Seat", TVehicle);
313
 
314
 
315
Seat.FormFactor = "Plate";
316
 
317
 
318
Seat.Size = Vector3.new(2, 0.4, 2);
319
 
320
 
321
Seat.Transparency = 1;
322
 
323
 
324
 
325
 
326
local BodyGyro = Instance.new("BodyGyro", Seat);
327
 
328
 
329
BodyGyro.D = 500;
330
 
331
 
332
BodyGyro.Name = "Gyro";
333
 
334
 
335
BodyGyro.P = 3000;
336
 
337
 
338
BodyGyro.maxTorque = Vector3.new(4000, 0, 4000);
339
 
340
 
341
 
342
 
343
local RocketPropulsion = Instance.new("RocketPropulsion", Front);
344
 
345
 
346
RocketPropulsion.Name = "Propulsion";
347
 
348
 
349
RocketPropulsion.MaxSpeed = 9001 * 1337;
350
 
351
 
352
RocketPropulsion.ThrustD = 1.5;
353
 
354
 
355
RocketPropulsion.ThrustP = 5;
356
 
357
 
358
RocketPropulsion.TurnD = 500;
359
 
360
 
361
RocketPropulsion.TurnP = 3000;
362
 
363
 
364
RocketPropulsion.CartoonFactor = 1;
365
 
366
 
367
RocketPropulsion.TargetRadius = 10;
368
 
369
 
370
RocketPropulsion.MaxTorque = Vector3.new(4.0000e+005, 4.0000e+005, 0);
371
 
372
 
373
RocketPropulsion.MaxThrust = 4.0000e+005;
374
 
375
 
376
RocketPropulsion.TargetOffset = End;
377
 
378
 
379
 
380
 
381
------ SCRIPT GENERATED CODE -----
382
 
383
 
384
local w = Instance.new("Weld", TVehicle);
385
 
386
 
387
w.C0 = CFrame.new(0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1);
388
 
389
 
390
w.C1 = CFrame.new(0, 0.200000048, -4, 1, 0, 0, 0, 1, 0, 0, 0, 1);
391
 
392
 
393
w.Part0 = Front;
394
 
395
 
396
w.Part1 = Seat;
397
 
398
 
399
local w = Instance.new("Weld", TVehicle);
400
 
401
 
402
w.C0 = CFrame.new(0, 0, 0, -0.0164248906, -1.30787221e-005, -0.999865055, -0.000796274282, 0.999999702, -1.28919441e-021, 0.999864757, 0.000796166831, -0.0164248962);
403
 
404
 
405
w.C1 = CFrame.new(1.99999976, 0.399999619, -5.99999952, -0.0164248906, -1.30787221e-005, -0.999865055, -0.000796274282, 0.999999702, -1.28919441e-021, 0.999864757, 0.000796166831, -0.0164248962);
406
 
407
 
408
w.Part0 = Front;
409
 
410
 
411
w.Part1 = Handle;
412
 
413
 
414
local w = Instance.new("Weld", TVehicle);
415
 
416
 
417
w.C0 = CFrame.new(0, 0, 0, -0.0164248906, -1.30787221e-005, -0.999865055, -0.000796274282, 0.999999702, -1.28919441e-021, 0.999864757, 0.000796166831, -0.0164248962);
418
 
419
 
420
w.C1 = CFrame.new(1.99999976, 0.399999619, -3.99999976, -0.0164248906, -1.30787221e-005, -0.999865055, -0.000796274282, 0.999999702, -1.28919441e-021, 0.999864757, 0.000796166831, -0.0164248962);
421
 
422
 
423
w.Part0 = Front;
424
 
425
 
426
w.Part1 = Handle1;
427
 
428
 
429
local w = Instance.new("Weld", TVehicle);
430
 
431
 
432
w.C0 = CFrame.new(0, 0, 0, -0.0164248906, -1.30787221e-005, -0.999865055, -0.000796274282, 0.999999702, -1.28919441e-021, 0.999864757, 0.000796166831, -0.0164248962);
433
 
434
 
435
w.C1 = CFrame.new(0, 0.400001526, -6, -0.0164248906, -1.30787221e-005, -0.999865055, -0.000796274282, 0.999999702, -1.28919441e-021, 0.999864757, 0.000796166831, -0.0164248962);
436
 
437
 
438
w.Part0 = Front;
439
 
440
 
441
w.Part1 = back;
442
 
443
 
444
local w = Instance.new("Weld", TVehicle);
445
 
446
 
447
w.C0 = CFrame.new(0, 0, 0, -0.0164248906, -1.30787221e-005, -0.999865055, -0.000796274282, 0.999999702, -1.28919441e-021, 0.999864757, 0.000796166831, -0.0164248962);
448
 
449
 
450
w.C1 = CFrame.new(0, 0.600000381, -4, -0.0164248906, -1.30787221e-005, -0.999865055, -0.000796274282, 0.999999702, -1.28919441e-021, 0.999864757, 0.000796166831, -0.0164248962);
451
 
452
 
453
w.Part0 = Front;
454
 
455
 
456
w.Part1 = Handle3;
457
 
458
 
459
local w = Instance.new("Weld", TVehicle);
460
 
461
 
462
w.C0 = CFrame.new(0, 0, 0, -0.0164248906, -1.30787221e-005, -0.999865055, -0.000796274282, 0.999999702, -1.28919441e-021, 0.999864757, 0.000796166831, -0.0164248962);
463
 
464
 
465
w.C1 = CFrame.new(-1.99999976, 0.399999619, -5.99999952, -0.0164248906, -1.30787221e-005, -0.999865055, -0.000796274282, 0.999999702, -1.28919441e-021, 0.999864757, 0.000796166831, -0.0164248962);
466
 
467
 
468
w.Part0 = Front;
469
 
470
 
471
w.Part1 = Handle2;
472
 
473
 
474
local w = Instance.new("Weld", TVehicle);
475
 
476
 
477
w.C0 = CFrame.new(0, 0, 0, -0.0164248906, -1.30787221e-005, -0.999865055, -0.000796274282, 0.999999702, -1.28919441e-021, 0.999864757, 0.000796166831, -0.0164248962);
478
 
479
 
480
w.C1 = CFrame.new(-1.99999976, 0.399999619, -4, -0.0164248906, -1.30787221e-005, -0.999865055, -0.000796274282, 0.999999702, -1.28919441e-021, 0.999864757, 0.000796166831, -0.0164248962);
481
 
482
 
483
w.Part0 = Front;
484
 
485
 
486
w.Part1 = Handle4;
487
 
488
 
489
local w = Instance.new("Weld", TVehicle);
490
 
491
 
492
w.C0 = CFrame.new(0, 0, 0, -0.0164248906, -1.30787221e-005, -0.999865055, -0.000796274282, 0.999999702, -1.28919441e-021, 0.999864757, 0.000796166831, -0.0164248962);
493
 
494
 
495
w.C1 = CFrame.new(2.38418579e-007, 0, -2, -0.0164248906, -1.30787221e-005, -0.999865055, -0.000796274282, 0.999999702, -1.28919441e-021, 0.999864757, 0.000796166831, -0.0164248962);
496
 
497
 
498
w.Part0 = Front;
499
 
500
 
501
w.Part1 = Handle5;
502
 
503
 
504
local w = Instance.new("Weld", TVehicle);
505
 
506
 
507
w.C0 = CFrame.new(0, 0, 0, -0.0164248906, -1.30787221e-005, -0.999865055, -0.000796274282, 0.999999702, -1.28919441e-021, 0.999864757, 0.000796166831, -0.0164248962);
508
 
509
 
510
w.C1 = CFrame.new(1.99999928, 0.400001526, -2, -0.0164248906, -1.30787221e-005, -0.999865055, -0.000796274282, 0.999999702, -1.28919441e-021, 0.999864757, 0.000796166831, -0.0164248962);
511
 
512
 
513
w.Part0 = Front;
514
 
515
 
516
w.Part1 = Handle6;
517
 
518
 
519
local w = Instance.new("Weld", TVehicle);
520
 
521
 
522
w.C0 = CFrame.new(0, 0, 0, -0.0164248906, -1.30787221e-005, -0.999865055, -0.000796274282, 0.999999702, -1.28919441e-021, 0.999864757, 0.000796166831, -0.0164248962);
523
 
524
 
525
w.C1 = CFrame.new(-1.99999976, 0.399999619, -2, -0.0164248906, -1.30787221e-005, -0.999865055, -0.000796274282, 0.999999702, -1.28919441e-021, 0.999864757, 0.000796166831, -0.0164248962);
526
 
527
 
528
w.Part0 = Front;
529
 
530
 
531
w.Part1 = Handle7;
532
 
533
 
534
-- END OF SCRIPT GENERATED CODE --
535
 
536
 
537
 
538
 
539
RocketPropulsion:Fire();
540
 
541
 
542
 
543
 
544
local Bin = Instance.new("HopperBin", Me:FindFirstChild("Backpack"));
545
 
546
 
547
Bin.Name = "Fly2";
548
 
549
 
550
script.Parent = Bin;
551
 
552
 
553
Bin.Selected:connect(function(Mouse)
554
 
555
 
556
        Mouse.Icon = "rbxasset://textures\\ArrowCursor.png"; -- :/
557
 
558
 
559
        Mouse.Button1Down:connect(function()
560
 
561
 
562
                Wait(0); slerp = true;
563
 
564
 
565
                RocketPropulsion.MaxSpeed = Power;
566
 
567
 
568
                while slerp do
569
 
570
 
571
                        RunService.Stepped:wait();
572
 
573
 
574
                        assignPosition(Mouse.Hit.p, Front);
575
 
576
 
577
                end;
578
 
579
 
580
        end);
581
 
582
 
583
        Mouse.Button1Up:connect(function()
584
 
585
 
586
                slerp = false;
587
 
588
 
589
                RocketPropulsion.MaxSpeed = 0;
590
 
591
 
592
        end);
593
 
594
 
595
        Mouse.KeyDown:connect(function(key)
596
 
597
 
598
                if string.lower(key) == "x" then
599
 
600
 
601
                        RocketPropulsion.MaxSpeed = 250;
602
 
603
 
604
                        RocketPropulsion.TargetOffset = Char.Torso.CFrame.p - Vector3.new(10, -2.5, 10);
605
 
606
 
607
                        repeat RunService.Stepped:wait(); until (Char.Torso.CFrame.p - Front.CFrame.p).magnitude <= 10;
608
 
609
 
610
                        RocketPropulsion.MaxSpeed = Power;
611
 
612
 
613
                elseif string.lower(key) == "z" then
614
 
615
 
616
                        if (Char.Torso.CFrame.p - Front.CFrame.p).magnitude <= 25 then
617
 
618
 
619
                                Char.Torso.CFrame = Seat.CFrame;
620
 
621
 
622
                        end;
623
 
624
 
625
                elseif string.lower(key) == "f" then
626
 
627
 
628
                        local teapot = newPart(Workspace);
629
 
630
 
631
                        teapot.Position = Front.Position - Vector3.new(0, 3, 5);
632
 
633
 
634
                        delay(4, function()
635
 
636
 
637
                                local exp = Instance.new("Explosion", Workspace);
638
 
639
 
640
                                exp.BlastPressure = 1000;
641
 
642
 
643
                                exp.BlastRadius = 30;
644
 
645
 
646
                                exp.Position = teapot.Position;
647
 
648
 
649
                                teapot:Destroy();
650
 
651
 
652
                        end);
653
 
654
 
655
                elseif string.lower(key) == "q" then
656
 
657
 
658
                        local teapot = newPart(Workspace);
659
 
660
 
661
                        teapot.CFrame = Front.CFrame * CFrame.new(0, 0, -3);
662
 
663
 
664
                        teapot.Touched:connect(function(p)
665
 
666
 
667
                                if _Parts[p.Name] then return; end;
668
 
669
 
670
                                local exp = Instance.new("Explosion", Workspace);
671
 
672
 
673
                                exp.BlastPressure = 1000;
674
 
675
 
676
                                exp.BlastRadius = 3;
677
 
678
 
679
                                exp.Position = teapot.Position;
680
 
681
 
682
                                teapot:Destroy();
683
 
684
 
685
                        end);
686
 
687
 
688
                        local bv = Instance.new("BodyVelocity", teapot);
689
 
690
 
691
                        bv.maxForce = Vector3.new(1 / 0, 1 / 0, 1 / 0)
692
 
693
 
694
                        bv.velocity = Front.CFrame.lookVector * 100
695
 
696
 
697
                elseif string.lower(key) == "h" then
698
 
699
 
700
                        if not Char.Humanoid.Sit then
701
 
702
 
703
                                RocketPropulsion.MaxSpeed = 9001 * 1337;
704
 
705
 
706
                                RocketPropulsion.TargetOffset = End;
707
 
708
 
709
                        end;
710
 
711
 
712
                end;
713
 
714
 
715
        end);
716
 
717
 
718
end);