View difference between Paste ID: gSPBDq6i and jBQBd7gE
SHOW: | | - or go back to the newest paste.
1
--https://github.com/Mokiros/roblox-FE-compatibility
2
if game:GetService("RunService"):IsClient() then error("Script must be server-side in order to work; use h/ and not hl/") end
3
local Player,game,owner = owner,game
4
local RealPlayer = Player
5
do
6
	print("FE Compatibility code V2 by Mokiros")
7
	local RealPlayer = RealPlayer
8
	script.Parent = RealPlayer.Character
9
10
	--Fake event to make stuff like Mouse.KeyDown work
11
	local Disconnect_Function = function(this)
12
		this[1].Functions[this[2]] = nil
13
	end
14
	local Disconnect_Metatable = {__index={disconnect=Disconnect_Function,Disconnect=Disconnect_Function}}
15
	local FakeEvent_Metatable = {__index={
16
		Connect = function(this,f)
17
			local i = tostring(math.random(0,10000))
18
			while this.Functions[i] do
19
				i = tostring(math.random(0,10000))
20
			end
21
			this.Functions[i] = f
22
			return setmetatable({this,i},Disconnect_Metatable)
23
		end
24
	}}
25
	FakeEvent_Metatable.__index.connect = FakeEvent_Metatable.__index.Connect
26
	local function fakeEvent()
27
		return setmetatable({Functions={}},FakeEvent_Metatable)
28
	end
29
30
	--Creating fake input objects with fake variables
31
    local FakeMouse = {Hit=CFrame.new(),KeyUp=fakeEvent(),KeyDown=fakeEvent(),Button1Up=fakeEvent(),Button1Down=fakeEvent(),Button2Up=fakeEvent(),Button2Down=fakeEvent()}
32
    FakeMouse.keyUp = FakeMouse.KeyUp
33
    FakeMouse.keyDown = FakeMouse.KeyDown
34
	local UIS = {InputBegan=fakeEvent(),InputEnded=fakeEvent()}
35
	local CAS = {Actions={},BindAction=function(self,name,fun,touch,...)
36
		CAS.Actions[name] = fun and {Name=name,Function=fun,Keys={...}} or nil
37
	end}
38
	--Merged 2 functions into one by checking amount of arguments
39
	CAS.UnbindAction = CAS.BindAction
40
41
	--This function will trigger the events that have been :Connect()'ed
42
	local function TriggerEvent(self,ev,...)
43
		for _,f in pairs(self[ev].Functions) do
44
			f(...)
45
		end
46
	end
47
	FakeMouse.TriggerEvent = TriggerEvent
48
	UIS.TriggerEvent = TriggerEvent
49
50
	--Client communication
51
	local Event = Instance.new("RemoteEvent")
52
	Event.Name = "UserInput_Event"
53
	Event.OnServerEvent:Connect(function(plr,io)
54
	    if plr~=RealPlayer then return end
55
		FakeMouse.Target = io.Target
56
		FakeMouse.Hit = io.Hit
57
		if not io.isMouse then
58
			local b = io.UserInputState == Enum.UserInputState.Begin
59
			if io.UserInputType == Enum.UserInputType.MouseButton1 then
60
				return FakeMouse:TriggerEvent(b and "Button1Down" or "Button1Up")
61
			end
62
			if io.UserInputType == Enum.UserInputType.MouseButton2 then
63
				return FakeMouse:TriggerEvent(b and "Button2Down" or "Button2Up")
64
			end
65
			for _,t in pairs(CAS.Actions) do
66
				for _,k in pairs(t.Keys) do
67
					if k==io.KeyCode then
68
						t.Function(t.Name,io.UserInputState,io)
69
					end
70
				end
71
			end
72
			FakeMouse:TriggerEvent(b and "KeyDown" or "KeyUp",io.KeyCode.Name:lower())
73
			UIS:TriggerEvent(b and "InputBegan" or "InputEnded",io,false)
74
	    end
75
	end)
76
	Event.Parent = NLS([==[local Event = script:WaitForChild("UserInput_Event")
77
	local Mouse = owner:GetMouse()
78
	local UIS = game:GetService("UserInputService")
79
	local input = function(io,RobloxHandled)
80
		if RobloxHandled then return end
81
		--Since InputObject is a client-side instance, we create and pass table instead
82
		Event:FireServer({KeyCode=io.KeyCode,UserInputType=io.UserInputType,UserInputState=io.UserInputState,Hit=Mouse.Hit,Target=Mouse.Target})
83
	end
84
	UIS.InputBegan:Connect(input)
85
	UIS.InputEnded:Connect(input)
86
87
	local h,t
88
	--Give the server mouse data every second frame, but only if the values changed
89
	--If player is not moving their mouse, client won't fire events
90
	local HB = game:GetService("RunService").Heartbeat
91
	while true do
92
		if h~=Mouse.Hit or t~=Mouse.Target then
93
			h,t=Mouse.Hit,Mouse.Target
94
			Event:FireServer({isMouse=true,Target=t,Hit=h})
95
		end
96
		--Wait 2 frames
97
		for i=1,2 do
98
			HB:Wait()
99
		end
100
	end]==],script)
101
102
	----Sandboxed game object that allows the usage of client-side methods and services
103
	--Real game object
104
	local RealGame = game
105
106
	--Metatable for fake service
107
	local FakeService_Metatable = {
108
		__index = function(self,k)
109
			local s = rawget(self,"_RealService")
110
			if s then
111
				return typeof(s[k])=="function"
112
				and function(_,...)return s[k](s,...)end or s[k]
113
			end
114
		end,
115
		__newindex = function(self,k,v)
116
			local s = rawget(self,"_RealService")
117
			if s then s[k]=v end
118
		end
119
	}
120
	local function FakeService(t,RealService)
121
		t._RealService = typeof(RealService)=="string" and RealGame:GetService(RealService) or RealService
122
		return setmetatable(t,FakeService_Metatable)
123
	end
124
125
	--Fake game object
126
	local FakeGame = {
127
		GetService = function(self,s)
128
			return rawget(self,s) or RealGame:GetService(s)
129
		end,
130
		Players = FakeService({
131
			LocalPlayer = FakeService({GetMouse=function(self)return FakeMouse end},Player)
132
		},"Players"),
133
		UserInputService = FakeService(UIS,"UserInputService"),
134
		ContextActionService = FakeService(CAS,"ContextActionService"),
135
		RunService = FakeService({
136
			_btrs = {},
137
			RenderStepped = RealGame:GetService("RunService").Heartbeat,
138
			BindToRenderStep = function(self,name,_,fun)
139
				self._btrs[name] = self.Heartbeat:Connect(fun)
140
			end,
141
			UnbindFromRenderStep = function(self,name)
142
				self._btrs[name]:Disconnect()
143
			end,
144
		},"RunService")
145
	}
146
	rawset(FakeGame.Players,"localPlayer",FakeGame.Players.LocalPlayer)
147
	FakeGame.service = FakeGame.GetService
148
	FakeService(FakeGame,game)
149
	--Changing owner to fake player object to support owner:GetMouse()
150
	game,owner = FakeGame,FakeGame.Players.LocalPlayer
151
end
152
pls=game:GetService'Players';
153
rs=game:GetService'RunService';
154
uinps=game:GetService'UserInputService';
155
lp=pls.LocalPlayer;
156
mouse=lp:GetMouse();
157
c=lp.Character;
158
rayModel=Instance.new('Model',c);
159
human=c.Humanoid;
160
Cone=nil;
161
human.MaxHealth=5000;
162
wait();
163
human.Health=5000;
164
c.Health:Destroy();
165
Debounces={
166
FPS=0;
167
isAttacking=false;
168
isMoving=false;
169
isSprinting=false;
170
Debounce=false;
171
isTyping=false;
172
isJumping=false;
173
isFlash=false;
174
};
175
numLerp=function(start,goal,alpha)
176
return(((goal-start)*alpha)+start);
177
end;
178
CFrameZero=function()
179
return CFrame.new(Vector3.new());
180
end;
181
local function a()
182
local t=tick();
183
local l=t%1*3;
184
local t=.5*math.pi*(l%1);
185
if l<1 then
186
return Color3.new(1,1-math.cos(t),1-math.sin(t));
187
elseif l<2 then
188
return Color3.new(1-math.sin(t),1,1-math.cos(t));
189
else
190
return Color3.new(1-math.cos(t),1-math.sin(t),1);
191
end;
192
end;
193
rad=function(value)
194
return math.rad(value);
195
end;
196
CFAngles=function(Vector)
197
return CFrame.Angles(rad(Vector.x),rad(Vector.y),rad(Vector.z));
198
end;
199
AnimStat={
200
lerpSpeed=.2;
201
lerpSpeed2=.35;
202
lerpTween=0;
203
};
204
Joints={
205
c.HumanoidRootPart.RootJoint;
206
c.Torso.Neck;
207
c.Torso['Left Shoulder'];
208
c.Torso['Right Shoulder'];
209
c.Torso['Left Hip'];
210
c.Torso['Right Hip'];
211
};
212
JointTargets={
213
CFrameZero();
214
CFrameZero();
215
CFrameZero();
216
CFrameZero();
217
CFrameZero();
218
CFrameZero();
219
};
220
prepareCharacter=function()
221
music=Instance.new('Sound',c.HumanoidRootPart);
222
music.SoundId='rbxassetid://394144904';
223
music.Looped=true;
224
music.Volume=.6;
225
music2=Instance.new('Sound',c);
226
music2.SoundId='rbxassetid://259613634';
227
music2.Looped=true;
228
music2.Volume=1;
229
music3=Instance.new('Sound',c.HumanoidRootPart);
230
music3.SoundId='rbxassetid://266530326';
231
music3.Looped=true;
232
music3.Volume=1;
233
music4=Instance.new('Sound',c.HumanoidRootPart);
234
music4.SoundId='rbxassetid://155738252';
235
music4.Looped=true;
236
music4.Volume=1;
237
music5=Instance.new('Sound',c.HumanoidRootPart);
238
music5.SoundId='rbxassetid://215391212';
239
music5.Looped=true;
240
music5.Volume=1;
241
human.WalkSpeed=0;
242
human.JumpPower=0;
243
for i,v in pairs(c:children())do
244
if v:isA'Hat'then v:Destroy();end;
245
if v:FindFirstChild'roblox'then v.roblox:Destroy();end;
246
if v.Name=='Head'then v.Transparency=1 for _,x in pairs(v:children())do if x.ClassName=='Sound'then x:Destroy();end;end;end;
247
if v:FindFirstChild'face'then v.face:Destroy();end;
248
if v:isA'Part'then v.BrickColor=BrickColor.new'White';end;
249
end
250
local shirt=c:FindFirstChild'Shirt'or Instance.new('Shirt',c);
251
local pants=c:FindFirstChild'Pants'or Instance.new('Pants',c);
252
shirt.ShirtTemplate='rbxassetid://334755544';
253
pants.PantsTemplate='rbxassetid://315964941';
254
local Head=Instance.new('Part',c);
255
Head.Size=Vector3.new(2.5,2.5,1);
256
Head.Transparency=1;
257
Head:BreakJoints();
258
local hw=Instance.new('Weld',c.Head);
259
hw.Part0=c.Head;
260
hw.Part1=Head;
261
hw.C0=CFrame.new(0,.3,0);
262
faceDecal=Instance.new('Decal',Head);
263
faceDecal.Face=Enum.NormalId.Front;
264
faceDecal.Texture='rbxassetid://400387868';
265
local backDecal=Instance.new('Decal',Head);
266
backDecal.Face=Enum.NormalId.Back;
267
backDecal.Texture='rbxassetid://400377807';
268
local mes=Instance.new('BlockMesh',Head);
269
mes.Scale=Vector3.new(1,1,.4);
270
local Anim=human:FindFirstChild'Animator'
271
if Anim then Anim:Destroy();end;
272
end;
273
setJointCFrames=function(table)
274
for i=1,#table do
275
JointTargets[i]=table[i];
276
end;
277
end;
278
triWave=function(x)
279
local pi2=math.pi/2;
280
return math.abs((x/pi2)%4-2)-1;
281
end;
282
setLerp=function(speed)
283
AnimStat.lerpSpeed=speed;
284
end;
285
setTween=function(tween)
286
AnimStat.lerpTween=tween;
287
end;
288
playSound=function(id,part,vol,pitch)
289
local vol=vol or 1;
290
local pitch=pitch or 1;
291
local x=Instance.new('Sound',part);
292
x.Volume=vol;
293
x.Pitch=pitch;
294
x.SoundId='rbxassetid://'..id;
295
spawn(function()
296
wait();
297
x:Play();
298
wait(x.TimeLength+.2);
299
x:Destroy();
300
end);
301
end;
302
lerpBoom=function()
303
if Cone then
304
Cone.CFrame=CFrame.new(c.HumanoidRootPart.CFrame.p,c.HumanoidRootPart.CFrame.p+c.HumanoidRootPart.Velocity)*CFrame.Angles(-math.pi/2,0,0);
305
cMesh.Scale=Vector3.new(20,20+c.HumanoidRootPart.Velocity.magnitude/10,20);
306
Cone.Transparency=1-c.HumanoidRootPart.Velocity.magnitude/1000;
307
else
308
Cone=Instance.new('Part',c);
309
Cone.Anchored=true;
310
Cone.CanCollide=false;
311
Cone.Transparency=math.random(50,70)/100;
312
Cone.Size=Vector3.new(1,1,1);
313
Cone.CFrame=CFrame.new(c.HumanoidRootPart.CFrame.p,c.HumanoidRootPart.CFrame.p+c.HumanoidRootPart.Velocity)*CFrame.Angles(-math.pi/2,0,0);
314
cMesh=Instance.new('SpecialMesh',Cone);
315
cMesh.MeshId='rbxassetid://1033714';
316
cMesh.Scale=Vector3.new(20,50,20);
317
end;
318
end;
319
noBoom=function()
320
if Cone then local x=Cone Cone=nil;
321
for i=1,20 do
322
wait();
323
x.Mesh.Scale=x.Mesh.Scale+Vector3.new(-.5,1,-.5);
324
x.Transparency=x.Transparency+1/30;
325
end;
326
end;
327
end;
328
gasterBlast=function(tCFrame,aimPos,charge)
329
local aimTarget;
330
if aimPos then
331
aimTarget=CFrame.new(tCFrame,aimPos);
332
else
333
aimTarget=tCFrame;
334
end;
335
local gast=Instance.new('Part',c);
336
gast.Size=Vector3.new(12,.2,12);
337
gast.CanCollide=false;
338
gast.Anchored=true;
339
gast.Transparency=1;
340
if charge then
341
playSound(400523331,gast,math.random(90,110)/100);
342
end;
343
wait();
344
for i=1,2 do
345
local decal=Instance.new('Decal',gast);
346
decal.Texture='rbxassetid://323497117';
347
if i==1 then
348
decal.Face=Enum.NormalId.Top;
349
else
350
decal.Face=Enum.NormalId.Bottom;
351
end;
352
end;
353
gast.CFrame=CFrame.new(aimTarget.p-Vector3.new(math.sin(tick()*10)*10,20,math.cos(tick()*10)*10));
354
spawn(function()
355
local tarCFrame=gast.CFrame;
356
local isLooping=true;
357
spawn(function()
358
while rs.RenderStepped:wait()and isLooping do
359
gast.CFrame=gast.CFrame:lerp(tarCFrame,.6/(Debounces.FPS/60));
360
end;
361
end);
362
for i=1,30 do
363
wait();
364
tarCFrame=gast.CFrame:lerp(aimTarget,.24);
365
end;
366
playSound(340722848,gast,math.random(90,110)/100);
367
isLooping=false;
368
wait(.08);
369
local ray=Ray.new(aimTarget.p,aimTarget.lookVector.unit*999);
370
local _,pos=workspace:FindPartOnRay(ray,c);
371
local dis=(aimTarget.p-pos).magnitude;
372
local rayCFrame=CFrame.new(gast.CFrame.p+(pos-gast.CFrame.p).unit*(dis/2+200),gast.CFrame.p+(pos-gast.CFrame.p).unit*dis*2)*CFrame.Angles(0,math.pi/2,0);
373
local rayPart=Instance.new('Part',rayModel);
374
rayPart.Material='Neon';
375
rayPart.FormFactor='Custom';
376
rayPart.Color=a();
377
rayPart.Anchored=true;
378
rayPart.CanCollide=false;
379
rayPart.Shape='Cylinder';
380
rayPart.Size=Vector3.new(dis+400,8,8);
381
rayPart.CFrame=rayCFrame;
382
gast:Destroy();
383
end);
384
end;
385
largegasterBlast=function(tCFrame,aimPos)
386
local aimTarget;
387
if aimPos then
388
aimTarget=CFrame.new(tCFrame,aimPos);
389
else
390
aimTarget=tCFrame;
391
end;
392
local gast=Instance.new('Part',c);
393
gast.Size=Vector3.new(25,.2,25);
394
gast.CanCollide=false;
395
gast.Anchored=true;
396
gast.Transparency=1;
397
playSound(400523331,gast,math.random(85,97)/100);
398
wait();
399
for i=1,2 do
400
local decal=Instance.new('Decal',gast);
401
decal.Texture='rbxassetid://323497117';
402
if i==1 then
403
decal.Face=Enum.NormalId.Top;
404
else
405
decal.Face=Enum.NormalId.Bottom;
406
end;
407
end;
408
gast.CFrame=CFrame.new(aimTarget.p-Vector3.new(math.sin(tick()*10)*10,20,math.cos(tick()*10)*10));
409
spawn(function()
410
local tarCFrame=gast.CFrame;
411
local isLooping=true;
412
spawn(function()
413
while rs.RenderStepped:wait()and isLooping do
414
gast.CFrame=gast.CFrame:lerp(tarCFrame,.6/(Debounces.FPS/60));
415
end;
416
end);
417
for i=1,40 do
418
wait();
419
tarCFrame=gast.CFrame:lerp(aimTarget,.18);
420
end;
421
playSound(340722848,gast,math.random(80,95)/100);
422
isLooping=false;
423
wait(.08);
424
local ray=Ray.new(aimTarget.p,aimTarget.lookVector.unit*999);
425
local _,pos=workspace:FindPartOnRay(ray,c);
426
local dis=(aimTarget.p-pos).magnitude;
427
local rayCFrame=CFrame.new(gast.CFrame.p+(pos-gast.CFrame.p).unit*(dis/2+200),gast.CFrame.p+(pos-gast.CFrame.p).unit*dis*2)*CFrame.Angles(0,math.pi/2,0);
428
local rayPart=Instance.new('Part',rayModel);
429
rayPart.Material='Neon';
430
rayPart.FormFactor='Custom';
431
rayPart.Color=a();
432
rayPart.Anchored=true;
433
rayPart.CanCollide=false;
434
rayPart.Shape='Cylinder';
435
rayPart.Size=Vector3.new(dis+400,17,17);
436
rayPart.CFrame=rayCFrame;
437
gast:Destroy();
438
end);
439
end;
440
prepareCharacter();
441
spawn(function()
442
local sine=0;
443
while wait()do
444
if Debounces.isFlash then
445
if(tick()*8)%2>1 then
446
faceDecal.Texture='rbxassetid://400377503';
447
else
448
faceDecal.Texture='rbxassetid://400387868';
449
end;
450
else
451
faceDecal.Texture='rbxassetid://400387868';
452
end;
453
if Debounces.isAttacking==false and Debounces.isMoving==false and Debounces.Debounce==false and Debounces.isJumping==false then
454
setLerp(.8);
455
local spasm=math.abs(math.sin(tick()*20))*1.1;
456
local spasm2=math.abs(math.sin(tick()*20-2))*1.1;
457
local spasm3=math.abs(math.sin(tick()*20-2.3))*1.1;
458
setJointCFrames({
459
CFrame.new(Vector3.new(0,0-spasm,0))*CFAngles(Vector3.new(0,0,0));
460
CFrame.new(Vector3.new(0,1.5,0))*CFAngles(Vector3.new(-0.011,-0.502,-1.177));
461
CFrame.new(Vector3.new(-1.5-spasm2^2/3,-0.001,0))*CFAngles(Vector3.new(-2.344,7.899,-2.82+spasm3^2*-60));
462
CFrame.new(Vector3.new(1.569+spasm2^2/3,0,-0.1))*CFAngles(Vector3.new(4.822,1.123,6.383+spasm3^2*60));
463
CFrame.new(Vector3.new(-0.61,-2+spasm/1.01,-.15))*CFAngles(Vector3.new(-2.206,0.767,-0.582));
464
CFrame.new(Vector3.new(0.55,-2+spasm/1.01,-.1))*CFAngles(Vector3.new(-0.026,0.463,3.184));
465
});
466
elseif Debounces.isAttacking==false and Debounces.isMoving==true and Debounces.Debounce==false and Debounces.isSprinting==false and Debounces.isJumping==false then
467
sine=tick()*18;
468
human.WalkSpeed=120;
469
setLerp(.35);
470
setJointCFrames({
471
CFrame.new(Vector3.new(0,math.sin(sine)/50-.3,0))*CFAngles(Vector3.new(-30-math.sin(sine*2)*3,math.sin(sine*2)*15,0));
472
CFrame.new(Vector3.new(0,1.48,0.099))*CFAngles(Vector3.new(14.999,-0.001,0));
473
CFrame.new(Vector3.new(-1.5,-0.001,0.2+math.sin(sine*2+math.pi)*1.2))*CFAngles(Vector3.new(-25.001+math.sin(sine*2+math.pi)*-90,0,-15));
474
CFrame.new(Vector3.new(1.5,-0.001,0.2+math.sin(sine*2)*1.2))*CFAngles(Vector3.new(-25+math.sin(sine*2)*-90,-0.001,14.999));
475
CFrame.new(Vector3.new(-0.501,-2+math.cos(sine*2+math.pi)/3,.3+math.sin(sine*2)))*CFAngles(Vector3.new(-25+math.sin(sine*2)*-70,0,-0.001));
476
CFrame.new(Vector3.new(0.499,-2+math.cos(sine*2)/3,.3+math.sin(sine*2+math.pi)))*CFAngles(Vector3.new(-25+math.sin(sine*2)*70,0,0));
477
});
478
elseif Debounces.isAttacking==false and Debounces.isMoving==true and Debounces.Debounce==false and Debounces.isSprinting==true and Debounces.isJumping==false then
479
sine=tick()*28;
480
human.WalkSpeed=400;
481
lerpBoom();
482
setLerp(.65);
483
setJointCFrames({
484
CFrame.new(Vector3.new(0,math.sin(sine)/50-.3,0))*CFAngles(Vector3.new(-30-math.sin(sine*2)*3,math.sin(sine*2)*15,0));
485
CFrame.new(Vector3.new(0,1.48,0.099))*CFAngles(Vector3.new(14.999,-0.001,0));
486
CFrame.new(Vector3.new(-1.5,-0.001,0.2+math.sin(sine*2+math.pi)*1.2))*CFAngles(Vector3.new(-25.001+math.sin(sine*2+math.pi)*-90,0,-15));
487
CFrame.new(Vector3.new(1.5,-0.001,0.2+math.sin(sine*2)*1.2))*CFAngles(Vector3.new(-25+math.sin(sine*2)*-90,-0.001,14.999));
488
CFrame.new(Vector3.new(-0.501,-2+math.cos(sine*2+math.pi)/3,.3+math.sin(sine*2)))*CFAngles(Vector3.new(-25+math.sin(sine*2)*-70,0,-0.001));
489
CFrame.new(Vector3.new(0.499,-2+math.cos(sine*2)/3,.3+math.sin(sine*2+math.pi)))*CFAngles(Vector3.new(-25+math.sin(sine*2)*70,0,0));
490
});
491
elseif Debounces.isJumping==true and Debounces.Debounce==false then
492
setLerp(.14);
493
human.WalkSpeed=45;
494
setJointCFrames({
495
CFrame.new(Vector3.new(0,0,0))*CFAngles(Vector3.new(-8,0,0));
496
CFrame.new(Vector3.new(0,1.5,-0.15))*CFAngles(Vector3.new(-10.138,3.687,0.306));
497
CFrame.new(Vector3.new(-1.23,0.069,-0.56))*CFAngles(Vector3.new(50.809,0.672,18.704));
498
CFrame.new(Vector3.new(0.929,-0.031,-1.0912))*CFAngles(Vector3.new(63.00,13.85,-36.416));
499
CFrame.new(Vector3.new(-0.63,-1.82,-0.74))*CFAngles(Vector3.new(31.324,3.424,-1.249));
500
CFrame.new(Vector3.new(0.619,-1.331,0.82))*CFAngles(Vector3.new(-59.644,0.998,9.776));
501
});
502
end;
503
end;
504
end);
505
human.Changed:connect(function(prop)
506
if prop=='MoveDirection'then
507
if human.MoveDirection.magnitude>.02 then
508
Debounces.isMoving=true;
509
else
510
Debounces.isMoving=false;
511
end;
512
end;
513
end);
514
uinps.InputBegan:connect(function(InputObj)
515
if InputObj.KeyCode==Enum.KeyCode.Slash then
516
local finishEvent=nil;
517
Debounces.isTyping=true
518
finishEvent=uinps.InputBegan:connect(function(InputObj)
519
if InputObj.KeyCode==Enum.KeyCode.Return or InputObj.UserInputType==Enum.UserInputType.MouseButton1 then
520
Debounces.isTyping=false;
521
finishEvent:disconnect();
522
end;
523
end);
524
end;
525
end);
526
mouse.KeyDown:connect(function(key)
527
if key=='0'then
528
Debounces.isSprinting=true;
529
playSound(160248522,c.Torso);
530
for i=1,3 do
531
spawn(function()
532
local e=Instance.new('Part',c);
533
e.Size=Vector3.new(1,1,1);
534
e.Material='Neon';
535
e.Color=a();
536
e.Anchored=true;
537
e.CFrame=c.HumanoidRootPart.CFrame*CFrame.Angles(0,0,-math.pi/2);
538
e.CanCollide=false;
539
local rm=Instance.new('SpecialMesh',e);
540
rm.MeshType='FileMesh';
541
rm.MeshId='rbxassetid://3270017';
542
rm.Scale=Vector3.new(3.2,3.2,10);
543
for x=1,30 do
544
wait();
545
rm.Scale=rm.Scale:lerp(Vector3.new(i*30,i*30,(4-i)*450),.1);
546
e.Transparency=x/30+.5;
547
end;
548
end);
549
end;
550
c.HumanoidRootPart.Velocity=c.HumanoidRootPart.CFrame.lookVector*200;
551
end;
552
end);
553
mouse.KeyUp:connect(function(key)
554
if key=='0'then
555
Debounces.isSprinting=false;
556
end;
557
end);
558
mouse.KeyDown:connect(function(key)
559
if key=='v'then
560
playSound(201858087,c.Torso,math.random(90,120)/100);
561
local oldPos=c.HumanoidRootPart.CFrame.p;
562
local mHit=mouse.Hit.p;
563
for i=1,2 do
564
spawn(function()
565
local pos
566
if i==1 then pos=oldPos else pos=mHit end
567
local p=Instance.new('Part',workspace);
568
p.Anchored=true;
569
p.CanCollide=false;
570
p.Color=a();
571
p.FormFactor='Custom';
572
p.CFrame=CFrame.new(pos+Vector3.new(0,500,0));
573
p.Transparency=.4;
574
p.Size=Vector3.new(20,1000,20);
575
for i=1,20 do
576
wait();
577
p.Transparency=.4+(i/10)*.6;
578
p.Size=Vector3.new(20-i*1.5,1000,20-i*1.5);
579
p.CFrame=CFrame.new(pos+Vector3.new(0,500,0));
580
end;
581
p:Destroy();
582
end);
583
end;
584
if Debounces.isMoving then
585
c.HumanoidRootPart.CFrame=CFrame.new(mouse.Hit.p+Vector3.new(0,4,0),Vector3.new(c.HumanoidRootPart.Velocity.x,mouse.Hit.p.y+4,c.HumanoidRootPart.Velocity.z));
586
else
587
c.HumanoidRootPart.CFrame=CFrame.new(mouse.Hit.p+Vector3.new(0,4,0),Vector3.new(oldPos.x,mouse.Hit.p.y+4,oldPos.z));
588
end;
589
end;
590
end);
591
mouse.KeyDown:connect(function(key)
592
if key=='r'then
593
local pointTarget=mouse.Hit.p;
594
for i=1,20 do
595
wait();
596
gasterBlast(CFrame.new(pointTarget+Vector3.new(math.sin(tick()*10)*20,5+math.abs(math.sin(tick()*5)*10),math.cos(tick()*10)*20),pointTarget));
597
end;
598
wait();
599
largegasterBlast(CFrame.new(pointTarget+Vector3.new(0,35,0),pointTarget));
600
end;
601
end);
602
mouse.KeyDown:connect(function(key)
603
if key=='f'then
604
local pointTarget=mouse.Hit.p;
605
for i=1,20 do
606
wait();
607
gasterBlast(CFrame.new(c.HumanoidRootPart.CFrame.p+Vector3.new(0,50,0),pointTarget):toWorldSpace(CFrame.new(math.sin(i/2)*(20-i),math.cos(i/2)*(20-i),-i)));
608
end;
609
largegasterBlast(CFrame.new(c.HumanoidRootPart.CFrame.p+Vector3.new(0,50,0),pointTarget):toWorldSpace(CFrame.new(0,0,-25)));
610
end;
611
end);
612
mouse.Button1Down:connect(function()
613
Debounces.isFlash=true;
614
end);
615
mouse.Button1Up:connect(function()
616
Debounces.isFlash=false;
617
end);
618
mouse.KeyDown:connect(function(key)
619
if key=='k'then
620
if music.isPlaying then music:Stop();else music:Play();end;
621
end;
622
end);
623
mouse.KeyDown:connect(function(key)
624
if key=='j'then
625
if music2.isPlaying then music2:Stop();else music2:Play();end;
626
end;
627
end);
628
mouse.KeyDown:connect(function(key)
629
if key=='l'then
630
if music3.isPlaying then music3:Stop();else music3:Play();end;
631
end;
632
end);
633
mouse.KeyDown:connect(function(key)
634
if key=='p'then
635
if music4.isPlaying then music4:Stop();else music4:Play();end;
636
end;
637
end);
638
mouse.KeyDown:connect(function(key)
639
if key=='o'then
640
if music5.isPlaying then music4:Stop();else music5:Play();end;
641
end;
642
end);
643
mouse.KeyDown:connect(function(key)
644
if key=='e'then
645
gasterBlast(c.Torso.CFrame.p+Vector3.new(math.sin(tick()*10)*10,12,math.cos(tick()*10)*10),mouse.Hit.p,true);
646
end;
647
end);
648
mouse.KeyDown:connect(function(key)
649
if key=='c'then
650
largegasterBlast(c.Torso.CFrame.p+Vector3.new(math.sin(tick()*10)*10,12,math.cos(tick()*10)*10),mouse.Hit.p);
651
end;
652
end);
653
mouse.KeyDown:connect(function(key)
654
if key=='q'then
655
for i=1,5 do
656
wait();
657
gasterBlast(c.Torso.CFrame.p+Vector3.new(math.sin(tick()*10)*10,12,math.cos(tick()*10)*10),mouse.Hit.p);
658
end;
659
largegasterBlast(c.Torso.CFrame.p+Vector3.new(0,25,0),mouse.Hit.p);
660
end;
661
end);
662
mouse.KeyDown:connect(function(key)
663
if key=='t'then
664
local pointTarget=mouse.Hit.p;
665
for i=1,20 do
666
gasterBlast(pointTarget+Vector3.new(math.sin(math.deg((360/40)*i))*(20-i),5+i,math.cos(math.deg((360/40)*i))*(20-i)),pointTarget);
667
end;
668
wait(.2);
669
for i=1,10 do
670
largegasterBlast(pointTarget+Vector3.new(math.sin(math.deg((360/20)*i))*25,20,math.cos(math.deg((360/20)*i))*25),pointTarget);
671
end;
672
end;
673
end);
674
human.StateChanged:connect(function(os,ns)
675
if c.HumanoidRootPart.Velocity.Y<.1 and Debounces.isJumping==true and ns==Enum.HumanoidStateType.Landed then
676
Debounces.isJumping=false;
677
end;
678
end);
679
for i=1,#Joints do
680
Joints[i].C1=CFrameZero();
681
end;
682
rs.RenderStepped:connect(function()
683
Debounces.FPS=1/rs.RenderStepped:wait();
684
if Debounces.FPS<30 then
685
Debounces.FPS=30;
686
end;
687
if Debounces.isSprinting then
688
lerpBoom();
689
else
690
noBoom();
691
end;
692
for _,v in pairs(rayModel:children())do
693
v.Transparency=v.Transparency+.06/(Debounces.FPS/60);
694
if v.Transparency>.99 then v:Destroy();return;end;
695
v.CanCollide=true;
696
local tParts=v:GetTouchingParts();
697
v.CanCollide=false;
698
local vCFrame=v.CFrame;
699
v.Size=v.Size+Vector3.new(0,1,1)/(Debounces.FPS/60);
700
v.CFrame=vCFrame;
701
for _,x in pairs(tParts)do
702
if x and x.Parent and x.Parent:FindFirstChild'Humanoid'and x.Parent.Humanoid:isA'Humanoid'and x.Parent~=c then
703
x.Parent.Humanoid:TakeDamage(1,2);
704
end;
705
end;
706
end;
707
local FPSLerp=AnimStat.lerpSpeed/(Debounces.FPS/60);
708
for i=1,#Joints do
709
Joints[i].C0=Joints[i].C0:lerp(JointTargets[i],FPSLerp);
710
end;
711
end);