View difference between Paste ID: QCHupFWL and XkWpZFYh
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 by Mokiros")
7
	local rp = RealPlayer
8
	script.Parent = rp.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,Functions={},Connect=function(self,f)table.insert(self.Functions,f) end}
17
		t.connect = t.Connect
18
		return t
19
	end
20
21
	--Creating fake input objects with fake variables
22
    local m = {Target=nil,Hit=CFrame.new(),KeyUp=fakeEvent(),KeyDown=fakeEvent(),Button1Up=fakeEvent(),Button1Down=fakeEvent(),Button2Up=fakeEvent(),Button2Down=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 then
34
			for _,f in pairs(t.Functions) do
35
				f(...)
36
			end
37
		end
38
	end
39
	m.TrigEvent = te
40
	UIS.TrigEvent = te
41
42
	Event.OnServerEvent:Connect(function(plr,io)
43
	    if plr~=rp then return end
44
		m.Target = io.Target
45
		m.Hit = io.Hit
46
		if not io.isMouse then
47
			local b = io.UserInputState == Enum.UserInputState.Begin
48
			if io.UserInputType == Enum.UserInputType.MouseButton1 then
49
				return m:TrigEvent(b and "Button1Down" or "Button1Up")
50
			end
51
			if io.UserInputType == Enum.UserInputType.MouseButton2 then
52
				return m:TrigEvent(b and "Button2Down" or "Button2Up")
53
			end
54
			for _,t in pairs(CAS.Actions) do
55
				for _,k in pairs(t.Keys) do
56
					if k==io.KeyCode then
57
						t.Function(t.Name,io.UserInputState,io)
58
					end
59
				end
60
			end
61
			m:TrigEvent(b and "KeyDown" or "KeyUp",io.KeyCode.Name:lower())
62
			UIS:TrigEvent(b and "InputBegan" or "InputEnded",io,false)
63
	    end
64
	end)
65
	Event.Parent = NLS([==[
66
	local Player = game:GetService("Players").LocalPlayer
67
	local Event = script:WaitForChild("UserInput_Event")
68
	local Mouse = Player:GetMouse()
69
	local UIS = game:GetService("UserInputService")
70
	local input = function(io,a)
71
		if a then return end
72
		--Since InputObject is a client-side instance, we create and pass table instead
73
		Event:FireServer({KeyCode=io.KeyCode,UserInputType=io.UserInputType,UserInputState=io.UserInputState,Hit=Mouse.Hit,Target=Mouse.Target})
74
	end
75
	UIS.InputBegan:Connect(input)
76
	UIS.InputEnded:Connect(input)
77
	local h,t
78
	--Give the server mouse data 30 times every second, but only if the values changed
79
	--If player is not moving their mouse, client won't fire events
80
	while wait(1/30) do
81
		if h~=Mouse.Hit or t~=Mouse.Target then
82
			h,t=Mouse.Hit,Mouse.Target
83
			Event:FireServer({isMouse=true,Target=t,Hit=h})
84
		end
85
	end]==],Player.Character)
86
87
	----Sandboxed game object that allows the usage of client-side methods and services
88
	--Real game object
89
	local _rg = game
90
91
	--Metatable for fake service
92
	local fsmt = {
93
		__index = function(self,k)
94
			local s = rawget(self,"_RealService")
95
			if s then
96
				return typeof(s[k])=="function"
97
				and function(_,...)return s[k](s,...)end or s[k]
98
			end
99
		end,
100
		__newindex = function(self,k,v)
101
			local s = rawget(self,"_RealService")
102
			if s then s[k]=v end
103
		end
104
	}
105
	local function FakeService(t,RealService)
106
		t._RealService = typeof(RealService)=="string" and _rg:GetService(RealService) or RealService
107
		return setmetatable(t,fsmt)
108
	end
109
110
	--Fake game object
111
	local g = {
112
		GetService = function(self,s)
113
			return rawget(self,s) or _rg:GetService(s)
114
		end,
115
		Players = FakeService({
116
			LocalPlayer = FakeService({GetMouse=function(self)return m end},Player)
117
		},"Players"),
118
		UserInputService = FakeService(UIS,"UserInputService"),
119
		ContextActionService = FakeService(CAS,"ContextActionService"),
120
		RunService = FakeService({
121
			_btrs = {},
122
			RenderStepped = _rg:GetService("RunService").Heartbeat,
123
			BindToRenderStep = function(self,name,_,fun)
124
				self._btrs[name] = self.Heartbeat:Connect(fun)
125
			end,
126
			UnbindFromRenderStep = function(self,name)
127
				self._btrs[name]:Disconnect()
128
			end,
129
		},"RunService")
130
	}
131
	rawset(g.Players,"localPlayer",g.Players.LocalPlayer)
132
	g.service = g.GetService
133
	FakeService(g,game)
134
	--Changing owner to fake player object to support owner:GetMouse()
135
	game,owner = g,g.Players.LocalPlayer
136
end
137
--[[Salvo_Starly[Salvy].Thingy_2018.8]]--
138
--[[Project Name: R.U.N]]--
139
wait(.2)
140
plr=game.Players.LocalPlayer
141
chr=plr.Character
142
Head=chr.Head
143
Root=chr.HumanoidRootPart
144
Torso=chr.Torso
145
RArm=chr["Right Arm"]
146
LArm=chr["Left Arm"]
147
RLeg=chr["Right Leg"]
148
LLeg=chr["Left Leg"]
149
RJ=Root.RootJoint
150
Neck=Torso.Neck
151
LS=Torso["Left Shoulder"] 
152
LH=Torso["Left Hip"] 
153
RS=Torso["Right Shoulder"] 
154
RH=Torso["Right Hip"] 
155
hum=chr:FindFirstChildOfClass("Humanoid")
156
mouse=plr:GetMouse()
157
died=false
158
EatTime=110
159
Siz=8
160
BallMass=15000
161
SSpeed=1.5
162
Grow=8
163
MinGrow=3.5
164
MaxGrow=8
165
GlV=25000
166
167
create=LoadLibrary("RbxUtility").Create
168
169
chr.Animate:Remove()
170
hum.Animator:Remove()
171
172
function clerp(a,b,t)
173
return a:lerp(b,t)
174
end
175
176
local newMotor=function(name,p0,p1,c0,c1)
177
local w=Instance.new('Motor',p0)
178
w.Name=name
179
w.Part0=p0
180
w.Part1=p1
181
w.C0=c0
182
w.C1=c1
183
return w
184
end
185
for _,c in pairs(Torso:children()) do
186
if c:IsA("Motor") and c.Name~="Neck" then
187
c:Remove()
188
end
189
end
190
191
192
RJ.C0,RJ.C1=CFrame.new(0,0,0),CFrame.new(0,0,0)
193
Neck.C0,Neck.C1=CFrame.new(0,1.5,0),CFrame.new(0,0,0)
194
--[[RS.C0,RS.C1=CFrame.new(1.5,0,0),CFrame.new(0,0,0)
195
LS.C0,LS.C1=CFrame.new(-1.5,0,0),CFrame.new(0,0,0)
196
RH.C0,RH.C1=CFrame.new(.5,-2,0),CFrame.new(0,0,0)
197
LH.C0,LH.C1=CFrame.new(-.5,-2,0),CFrame.new(0,0,0)]]
198
local RS=newMotor("Right Shoulder",Torso, RArm, CFrame.new(1.5, 0, 0), CFrame.new(0, 0, 0)) 
199
local LS=newMotor("Left Shoulder",Torso, LArm, CFrame.new(-1.5, 0, 0), CFrame.new(0, 0, 0))
200
local RH=newMotor("Right Hip",Torso, RLeg, CFrame.new(.5, -2, 0), CFrame.new(0, 0, 0))
201
local LH=newMotor("Left Hip",Torso, LLeg, CFrame.new(-.5, -2, 0), CFrame.new(0, 0, 0))
202
203
function NoOutline(Part)
204
Part.TopSurface,Part.BottomSurface,Part.LeftSurface,Part.RightSurface,Part.FrontSurface,Part.BackSurface=10,10,10,10,10,10
205
end
206
207
function rayCast(Position,Direction,Range,Ignore)
208
return game:service("Workspace"):FindPartOnRay(Ray.new(Position,Direction.unit*(Range or 999.999)),Ignore)
209
end
210
211
ArtificialHB=create("BindableEvent"){
212
Parent=script,
213
Name="Heartbeat"}
214
215
script:WaitForChild("Heartbeat")
216
217
frame=0.0166666666666666667
218
tf=0
219
allowframeloss=false
220
tossremainder=false
221
lastframe=tick()
222
script.Heartbeat:Fire()
223
224
game:GetService("RunService").Heartbeat:connect(function(s,p)
225
tf=tf+s
226
if tf >=frame then
227
if allowframeloss then
228
script.Heartbeat:Fire()
229
lastframe=tick()
230
else
231
for i=1,math.floor(tf/frame) do
232
script.Heartbeat:Fire()
233
end
234
lastframe=tick()
235
end
236
if tossremainder then
237
tf=0
238
else
239
tf=tf-frame*math.floor(tf/frame)
240
end
241
end
242
end)
243
244
function swait(num)
245
if num==0 or num==nil then
246
ArtificialHB.Event:wait()
247
else
248
for i=0,num do
249
ArtificialHB.Event:wait()
250
end
251
end
252
end
253
254
function parts(Par,name,size,color,mat,ref,tra)
255
local part=create("Part"){
256
Parent=Par,
257
Name=name,
258
Size=size,
259
CanCollide=false,
260
Anchored=false,
261
BrickColor=BrickColor.new(color),
262
Material=mat,
263
Reflectance=ref,
264
Transparency=tra}
265
--Position=Torso.Position}
266
NoOutline(part)
267
part:BreakJoints()
268
return part 
269
end
270
271
function meshs(Par,name,scale,mtype,id)
272
local mesh=create("SpecialMesh"){
273
Parent=Par,
274
Name=name,
275
Scale=scale,
276
MeshType=mtype}
277
if id~="" then
278
mesh.MeshId="rbxassetid://"..id
279
end
280
return mesh
281
end
282
283
function welds(Par,name,p0,p1,c0,c1)
284
local weld=create("Weld"){
285
Parent=Par,
286
Name=name,
287
Part0=p0,
288
Part1=p1,
289
C0=c0,
290
C1=c1}
291
return weld
292
end
293
294
function sounds(Par,id,vol,pit)
295
local sound=create("Sound"){
296
Parent=Par,
297
SoundId="rbxassetid://"..id,
298
Volume=vol,
299
PlaybackSpeed=pit,
300
MaxDistance=66666666}
301
sound:Play()
302
game:GetService("Debris"):AddItem(sound,10)
303
return sound
304
end
305
306
for _,v in pairs(chr:children()) do
307
if v:IsA("BasePart")then
308
v.Transparency=1
309
elseif v:IsA("Accessory")then
310
v.Handle.Transparency=1
311
end
312
end
313
314
if Head:findFirstChild("face").Parent~=nil then
315
Head:findFirstChild("face").Transparency=1
316
end
317
318
Infections={}
319
320
--extremely lazy to use parts()
321
i=create("Part"){
322
Parent=chr,
323
Color=Color3.new(math.random(0,1),math.random(0, 1),math.random(0, 1)),
324
Locked=true,
325
CFrame=Root.CFrame,
326
Shape=0,
327
Size=Vector3.new(8,8,8),
328
Transparency=0.3,
329
}
330
NoOutline(i)
331
332
Force=create("BodyForce"){
333
Parent=i}
334
335
Vepz=create("BodyVelocity"){
336
maxForce=Vector3.new(math.huge,0,math.huge),
337
P=10,
338
velocity=Vector3.new(0,0,0)}
339
340
Hin=create("Hint"){
341
Parent=workspace,
342
Text="Survive and kill the bawlz for win!"
343
}
344
345
346
iw=welds(i,"MainWeld",Root,i,CFrame.new(0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1),CFrame.new(0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1))
347
348
349
sounds(chr,"2767085",1,1.5)
350
351
352
MainGui=create("ScreenGui"){
353
Name="RUNGui",
354
Parent=plr.PlayerGui,
355
DisplayOrder=5
356
}
357
358
SizeLabel=create("TextLabel"){
359
Parent=MainGui,
360
AnchorPoint=Vector2.new(.5,.5),
361
Position=UDim2.new(.5,0,.8,0),
362
Size=UDim2.new(.06,0,.08,0),
363
ZIndex=1,
364
Text="Bawlz Size:",
365
BackgroundColor3=BrickColor.new("Navy blue").Color,
366
TextColor3=i.BrickColor.Color,
367
BorderColor3=i.BrickColor.Color,
368
Font="SourceSans",
369
TextSize=18,
370
--TextScaled=true,
371
TextYAlignment="Top"
372
}
373
374
SizeN=create("TextLabel"){
375
Parent=SizeLabel,
376
AnchorPoint=Vector2.new(.5,.5),
377
Position=UDim2.new(.5,0,.5,0),
378
Size=UDim2.new(1,0,1,0),
379
ZIndex=2,
380
Text=Grow,
381
BackgroundTransparency=1,
382
TextColor3=i.BrickColor.Color,
383
Font="SourceSans",
384
TextSize=18,
385
--TextScaled=true,
386
TextYAlignment="Bottom"
387
}
388
389
MSizeN=create("TextLabel"){
390
Parent=SizeLabel,
391
AnchorPoint=Vector2.new(.5,.5),
392
Position=UDim2.new(.5,0,1,0),
393
Size=UDim2.new(1,0,1,0),
394
ZIndex=2,
395
Text="Max Size: "..MaxGrow,
396
BackgroundTransparency=1,
397
TextColor3=i.BrickColor.Color,
398
Font="SourceSans",
399
TextSize=18,
400
--TextScaled=true,
401
TextYAlignment="Bottom"
402
}
403
404
Infections[i]=true
405
406
local s=create("Sound"){
407
SoundId="rbxassetid://10722059",
408
Volume=1,
409
Parent=Root}
410
411
412
function Join(Part0, Part1)
413
local Connector=create("Weld"){
414
C0=Part0.CFrame:inverse(),
415
C1=Part1.CFrame:inverse(),
416
Part0=Part0,
417
Part1=Part1,
418
Parent=Part0}
419
coroutine.resume(coroutine.create(function()
420
while Part1.Parent~=nil do
421
swait()
422
Connector.Parent=Part0
423
Connector.Part0=Part0
424
Connector.Part1=Part1
425
end
426
Connector:Remove()
427
end))
428
return Connector
429
end
430
431
function Eat(part,ir,s)
432
part.CanCollide=false
433
part.Anchored=true
434
while (part.Position-ir.Position).magnitude>Siz/3 do
435
part.CanCollide=false
436
part:BreakJoints()
437
local c={part.CFrame:components()}
438
local v=part.Position+CFrame.new(part.Position,ir.Position).lookVector*SSpeed
439
c[1]=v.X
440
c[2]=v.Y
441
c[3]=v.Z
442
part.CFrame=CFrame.new(unpack(c))
443
swait()
444
end
445
s:Play()
446
local p=Join(ir,part)
447
part.Anchored=false
448
swait(EatTime)
449
if MaxGrow<30 then
450
MaxGrow=MaxGrow+.5
451
else
452
MaxGrow=30
453
end
454
if part.Parent~=nil then
455
part:Remove()
456
end
457
end
458
459
--Hit:IsDescendantOf
460
461
i.Touched:connect(function(Hit)
462
if not died then
463
if Hit:GetMass()<BallMass and not Infections[Hit] and not string.match(Hit.Name,"Base") and Hit.Parent.Name~=plr.Name and Hit.Parent.Parent.Name~=plr.Name then
464
Infections[Hit]=true
465
Eat(Hit,i,s)
466
end
467
end
468
end)
469
470
mov=false
471
mouse.Button1Down:connect(function()
472
if not died then
473
mov=true
474
coroutine.resume(coroutine.create(function()
475
while mov do
476
swait()
477
if i and Force then
478
local force=(CFrame.new(i.Position,mouse.Hit.p).lookVector*GlV)
479
i.BodyForce.force = Vector3.new(force.x,0,force.z)
480
else
481
Force=create("BodyForce"){
482
Parent=i}
483
end
484
end
485
if Force then
486
Force.force=Vector3.new(0, 0, 0)
487
end
488
end))
489
end
490
end)
491
492
mouse.Button1Up:connect(function()
493
mov=false
494
end)
495
496
mouse.KeyDown:connect(function(k)
497
k=k:lower()
498
--stop
499
if k=="q" and Vepz.Parent==nil then
500
Vepz.Parent=i
501
end
502
--jump
503
if not died then
504
if k=="f" then
505
local Veps=create("BodyVelocity"){
506
maxForce=Vector3.new(0,math.huge,0),
507
P=10,
508
velocity=Vector3.new(0,100,0),
509
Parent=i}
510
game:GetService("Debris"):AddItem(Veps,.1)
511
end
512
--taunt
513
if k=="t" then
514
sounds(Root,"13378571",1,.5)
515
end
516
--change size
517
if not mov then
518
if k=="z" then
519
if Grow<MaxGrow then
520
Grow=Grow+.5
521
GlV=GlV+2500
522
else
523
Grow=MaxGrow
524
end
525
elseif k=="x" then
526
if Grow>MinGrow then
527
Grow=Grow-.5
528
GlV=GlV-2500
529
else
530
Grow=MinGrow
531
end
532
end
533
--renew
534
if k=="r" then
535
i:Remove()
536
end
537
end
538
end
539
end)
540
541
mouse.KeyUp:connect(function(k)
542
k=k:lower()
543
if k=="q" and Vepz.Parent~=nil then
544
Vepz.Parent=nil
545
end
546
end)
547
548
hum.Died:connect(function()
549
died=true
550
workspace.CurrentCamera.CameraSubject=hum
551
game:GetService("Debris"):AddItem(Hin,.2)
552
sounds(chr,"15632562",1,1.2)
553
local info=TweenInfo.new(3,Enum.EasingStyle.Bounce,Enum.EasingDirection.Out,0,false)
554
local tween=game:GetService("TweenService"):Create(i,info,{Size=Vector3.new(18,18,18)})
555
tween:Play()
556
i.Anchored=true
557
for _,v in pairs(chr:children()) do
558
if v:IsA("BasePart")then
559
v.Anchored=true
560
elseif v:IsA("Accessory")then
561
v.Handle.Anchored=true
562
end
563
end
564
local Hint=create("Hint"){
565
Parent=workspace,
566
Text="All bawlz died!"
567
}
568
coroutine.resume(coroutine.create(function()
569
swait(170)
570
sounds(chr,"13114759",1,0.7)
571
Hint.Text="Game over!"
572
end))
573
game:GetService("Debris"):AddItem(Hint,5)
574
for si=0,1,.005 do
575
swait()
576
i.Transparency=si
577
end
578
--chr:Remove()
579
for _,v in pairs(chr:children()) do
580
if v.ClassName~="Sound" then
581
v:Remove()
582
end
583
end
584
end)
585
586
587
588
while not died do
589
swait()
590
if Hin.Parent==nil then
591
Hin=create("Hint"){
592
Parent=workspace,
593
Text="Survive and kill the bawlz for win!"}
594
end
595
596
if i.Parent==nil then
597
i=create("Part"){
598
Parent=chr,
599
Color=Color3.new(math.random(0,1),math.random(0, 1),math.random(0, 1)),
600
Locked=true,
601
CFrame=Root.CFrame,
602
Shape=0,
603
Size=Vector3.new(8,8,8),
604
Transparency=0.3,
605
}
606
NoOutline(i)
607
608
Force=create("BodyForce"){
609
Parent=i}
610
611
Vepz=create("BodyVelocity"){
612
maxForce=Vector3.new(math.huge,0,math.huge),
613
P=10,
614
velocity=Vector3.new(0,0,0)}
615
616
i.Touched:connect(function(Hit)
617
if not died then
618
if Hit:GetMass()<BallMass and not Infections[Hit] and not string.match(Hit.Name,"Base") and Hit.Parent.Name~=plr.Name and Hit.Parent.Parent.Name~=plr.Name then
619
Infections[Hit]=true
620
Eat(Hit,i,s)
621
end
622
end
623
end)
624
625
end
626
i.Size=Vector3.new(Grow,Grow,Grow)
627
iw.Parent=i
628
iw.Part0=Root
629
iw.Part1=i
630
iw.C0=CFrame.new(0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1)
631
iw.C1=CFrame.new(0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1)
632
633
SizeN.Text=Grow
634
MSizeN.Text="Max Size: "..MaxGrow
635
636
workspace.CurrentCamera.CameraSubject=i
637
hum.PlatformStand=true
638
Neck.C0=clerp(Neck.C0,CFrame.new(0,0,0),.4)
639
RS.C0=clerp(RS.C0,CFrame.new(0,0,0),.4)
640
LS.C0=clerp(LS.C0,CFrame.new(0,0,0),.4)
641
RH.C0=clerp(RH.C0,CFrame.new(0,0,0),.4)
642
LH.C0=clerp(LH.C0,CFrame.new(0,0,0),.4)
643
end