View difference between Paste ID: 9HDKm1ft and Xrh17uyJ
SHOW: | | - or go back to the newest paste.
1
Name = "FirstNamer"
2-
me = game.Players[FirstNamer]
2+
me = game.Players[name]
3
char = me.Character
4
Modelname = "SoulBall"
5
Dist = 2.5
6
Surfaces = {"FrontSurface", "BackSurface", "TopSurface", "BottomSurface", "LeftSurface", "RightSurface"}
7
necko = CFrame.new(0, 1, 0, -1, -0, -0, 0, 0, 1, 0, 1, 0) 
8
able = true
9
ball = nil
10
11
Add = {
12
	Sphere = function(P)
13
		local m = Instance.new("SpecialMesh",P)
14
		m.MeshType = "Sphere"
15
		return m
16
	end,
17
	BF = function(P)
18
		local bf = Instance.new("BodyForce",P)
19
		bf.force = Vector3.new(0, P:GetMass()*187, 0)
20
		return bf
21
	end,
22
	BP = function(P)
23
		local bp = Instance.new("BodyPosition",P)
24
		bp.maxForce = Vector3.new(math.huge, 0, math.huge)
25
		bp.P = 14000
26
		return bp
27
	end,
28
	BG = function(P)
29
		local bg = Instance.new("BodyGyro",P)
30
		bg.maxTorque = Vector3.new(math.huge, math.huge, math.huge)
31
		bg.P = 8000
32
		return bg
33
	end
34
}
35
36
function GetNoobs(Pos, Mag)
37
	local obs = {}
38
	for i,v in pairs(workspace:children()) do
39
		if v:IsA("Model") and v ~= char then
40
			local t, h, j = v:findFirstChild("Torso"), v:findFirstChild("Humanoid"), v:findFirstChild("Hp")
41
			if t ~= nil and h ~= nil and j ~= nil then
42
				local p = nil
43
				local d = Mag
44
				for a,k in pairs(v:children()) do
45
					if k:IsA("BasePart") then
46
						if (k.Position - Pos).magnitude < d then
47
							p = k
48
							d = (k.Position - Pos).magnitude
49
						end
50
					end
51
				end
52
				if p ~= nil then
53
					table.insert(obs, {t, h, j})
54
				end
55
			end
56
		end
57
	end
58
	return obs
59
end
60
61
function Part(Parent, Anchor, Collide, Tran, Ref, Color, X, Y, Z, Break)
62
	local p = Instance.new("Part")
63
	p.formFactor = "Custom"
64
	p.Anchored = Anchor
65
	p.CanCollide = Collide
66
	p.Transparency = Tran
67
	p.Reflectance = Ref
68
	p.BrickColor = BrickColor.new(Color)
69
	for _, Surf in pairs(Surfaces) do
70
		p[Surf] = "Smooth"
71
	end
72
	p.Size = Vector3.new(X, Y, Z)
73
	if Break then
74
		p:BreakJoints()
75
	else p:MakeJoints() end
76
	p.Parent = Parent
77
	return p
78
end
79
80
function Weld(p0, p1, x, y, z, a, b, c)
81
	local w = Instance.new("Weld")
82
	w.Parent = p0
83
	w.Part0 = p0
84
	w.Part1 = p1
85
	w.C1 = CFrame.Angles(a,b,c) * CFrame.new(x,y,z)
86
	return w
87
end
88
89
function ComputePos(pos1, pos2)
90
	local pos3 = Vector3.new(pos2.x, pos1.y, pos2.z)
91
	return CFrame.new(pos1, pos3)
92
end
93
94
for i,v in pairs(char:children()) do
95
	if v.Name == Modelname then
96
		v:remove()
97
	end
98
end
99
100
torso = char.Torso
101
neck = torso.Neck
102
hum = char.Humanoid
103
Rarm = char["Right Arm"]
104
Larm = char["Left Arm"]
105
Rleg = char["Right Leg"]
106
Lleg = char["Left Leg"]
107
108
throwsound = Instance.new("Sound")
109
throwsound.SoundId = "rbxasset://sounds//swordslash.wav"
110
throwsound.Volume = 0.8
111
throwsound.Pitch = 1.2
112
throwsound.Parent = Rarm
113
hitsound = Instance.new("Sound")
114
hitsound.SoundId = "http://www.roblox.com/asset/?id=2801263"
115
hitsound.Volume = 0.55
116
hitsound.Pitch = 1.8
117
118
Mo = Instance.new("Model")
119
Mo.Name = Modelname
120
121
main = Part(Mo, false, false, 0, 0, "Brown", 2, 2, 0.2, true)
122
Weld(torso, main, 0, 0, -0.6, 0, 0, 0)
123
Floor = Part(Mo, false, false, 0, 0, "Reddish brown", 1.95, 0.2, 1, true)
124
Weld(main, Floor, 0, 0.93, -0.4, 0, 0, 0)
125
126
for i=-0.9, 1, 1.8 do
127
	local side = Part(Mo, false, false, 0, 0, "Brown", 0.2, 2, 0.8, true)
128
	Weld(main, side, i, 0, -0.36, 0, 0, 0)
129
end
130
131
for i = -60, 55, 15 do
132
	local ba = Part(Mo, false, false, 0, 0, "Brown", 2, 0.44, 0.2, true)
133
	local wa = Weld(main, ba, 0, 0, 0, 0, 0, 0)
134
	wa.C0 = CFrame.new(0,-0.1,0.1) * CFrame.Angles(math.rad(i),0,0)
135
	wa.C1 = CFrame.new(0,0,-1.1)
136
	for x=-0.9, 1, 1.8 do
137
		local si = Part(Mo, false, false, 0, 0, "Brown", 0.2, 0.5, 0.7, true)
138
		Weld(ba, si, x, 0, 0.34, 0, 0, 0)
139
	end
140
end
141
142
for i = -0.8, 0.85, 1.6 do
143
	for x = -1, 1.1, 2 do
144
		local bah = Part(Mo, false, false, 0, 0, "Reddish brown", 0.45, 0.2, 1.1, true)
145
		Weld(main, bah, i, x, 0.5, 0, 0, 0)
146
	end
147
	for x = -20, 20, 5 do
148
		local p = Part(Mo, false, false, 0, 0, "Reddish brown", 0.45, 0.4, 0.2, true)
149
		local wa = Weld(main, p, 0, 0, 0, 0, 0, 0)
150
		wa.C0 = CFrame.new(i,0,1.2) * CFrame.Angles(math.rad(x),0,0)
151
		wa.C1 = CFrame.new(0,0,2.4)
152
	end
153
end
154
155
for i = 90, -91, -180 do
156
	local pock = Part(Mo, false, false, 0, 0, "Reddish brown", 0.7, 0.8, 0.3, true)
157
	local wa = Weld(main, pock, 0, 0, 0, 0, 0, 0)
158
	wa.C0 = CFrame.new(0, -0.1, 0.5) * CFrame.Angles(0, math.rad(i), 0)
159
	wa.C1 = CFrame.new(0, 0, 1)
160
	local pock2 = Part(Mo, false, false, 0, 0, "Reddish brown", 0.8, 0.4, 0.4, true)
161
	Weld(pock, pock2, 0, -0.25, 0, 0, 0, 0)
162
	local shin = Part(Mo, false, false, 0, 0.05, "Bright yellow", 0.4, 0.2, 0.2, true)
163
	Weld(pock2, shin, 0, -0.06, 0.15, 0, 0, 0)
164
	Add.Sphere(shin)
165
end
166
local lastpart = nil
167
168
for i = -120, 0, 20 do
169
	local p = Part(Mo, false, false, 0, 0, "Reddish brown", 2, 0.47, 0.2, true)
170
	local wa = Weld(main, p, 0, 0, 0, 0, 0, 0)
171
	wa.C0 = CFrame.new(0,0.23,0.5) * CFrame.Angles(math.rad(i),0,0)
172
	wa.C1 = CFrame.new(0,0,-0.9)
173
	lastpart = p
174
end
175
176
shiny = Part(Mo, false, false, 0, 0.05, "Bright yellow", 0.5, 0.3, 0.2, true)
177
Weld(lastpart, shiny, 0, 0, -0.07, 0, 0, 0)
178
179
180
RABrick = Part(Mo, false, false, 1, 0, "White", 0.1, 0.1, 0.1, true)
181
LABrick = Part(Mo, false, false, 1, 0, "White", 0.1, 0.1, 0.1, true)
182
RLBrick = Part(Mo, false, false, 1, 0, "White", 0.1, 0.1, 0.1, true)
183
LLBrick = Part(Mo, false, false, 1, 0, "White", 0.1, 0.1, 0.1, true)
184
185
RABW = Weld(torso, RABrick, -1.5, -0.5, 0, 0, 0, 0)
186
LABW = Weld(torso, LABrick, 1.5, -0.5, 0, 0, 0, 0)
187
RLBW = Weld(torso, RLBrick, -0.5, 1, 0, 0, 0, 0)
188
LLBW = Weld(torso, LLBrick, 0.5, 1, 0, 0, 0, 0)
189
190
RAW = Weld(RABrick, nil, 0, 0.5, 0, 0, 0, 0)
191
LAW = Weld(LABrick, nil, 0, 0.5, 0, 0, 0, 0)
192
RLW = Weld(RLBrick, nil, 0, 1, 0, 0, 0, 0)
193
LLW = Weld(LLBrick, nil, 0, 1, 0, 0, 0, 0)
194
195
Mo.Parent = char
196
197
RAWBattle = nil
198
LAWBattle = nil
199
200
for i=1,6 do
201
local pew = Instance.new("Model",workspace)
202
pew.Name = "Trash"
203
local tr = Instance.new("IntValue",pew)
204
tr.Value = 1
205
tr.Name = "Throwable"
206
local dm = Instance.new("IntValue",tr)
207
dm.Value = 15
208
dm.Name = "Dmg"
209
local bah = Part(pew, false, true, 0, 0, "Brown", 1, 1, 1, true)
210
bah.Position = Vector3.new(0, 20, 0)
211
end
212
213
function SelectAnim()
214
	RAW.Part1 = Rarm
215
	LAW.Part1 = Larm
216
	for i=0,16,2 do
217
		RAW.C0 = CFrame.Angles(0,0,math.rad(i))
218
		LAW.C0 = CFrame.Angles(0,0,math.rad(-i))
219
		wait()
220
	end
221
	if RAWBattle == nil then
222
		RAWBattle = RAW.C0
223
		LAWBattle = LAW.C0
224
	end
225
end
226
227
function DeselectAnim()
228
	for i=16,0,-2 do
229
		RAW.C0 = CFrame.Angles(0,0,math.rad(i))
230
		LAW.C0 = CFrame.Angles(0,0,math.rad(-i))
231
		wait()
232
	end
233
	RAW.Part1 = nil
234
	LAW.Part1 = nil
235
end
236
237
function grab(targ, mouse)
238
	if able and targ.Parent:findFirstChild("Throwable") then
239
		able = false
240
		local blah = true
241
		local pos = nil
242
		mouse.Button1Down:connect(function()
243
			if blah == true then
244
				blah = false
245
			end
246
		end)
247
		coroutine.resume(coroutine.create(function()
248
			wait(4)
249
			blah = false
250
		end))
251
		repeat
252
			wait()
253
			pos = CFrame.new(torso.Position, targ.Position)
254
			pos = pos *  CFrame.new(0,0,-(torso.Position - targ.Position).magnitude + targ.Size.X/2 + 1).p
255
			hum:MoveTo(pos, targ)
256
			if blah == false then
257
				break
258
			end
259
		until (torso.Position - pos).magnitude < 5
260
		hum:MoveTo(torso.Position, torso)
261
		if blah then
262
			local bp = Add.BP(torso)
263
			bp.position = pos
264
			local cf = ComputePos(torso.Position, pos)
265
			local bg = Add.BG(torso)
266
			bg.cframe = cf
267
			RLW.Part1 = Rleg
268
			LLW.Part1 = Lleg
269
			hum.PlatformStand = true
270
			for i=0, 70, 8 do
271
				bg.cframe = ComputePos(torso.Position, pos) * CFrame.Angles(math.rad(-i/1.4), 0, 0)
272
				RLW.C0 = CFrame.Angles(math.rad(i/1.4), 0, math.rad(i/4))
273
				LLW.C0 = CFrame.Angles(math.rad(i/1.4), 0, math.rad(-i/4))
274
				RAW.C0 = RAWBattle * CFrame.Angles(math.rad(i*1.3), 0, math.rad(-i/1.7)) * CFrame.new(0, -i/80, 0)
275
				LAW.C0 = LAWBattle * CFrame.Angles(math.rad(i*1.3), 0, math.rad(i/1.7)) * CFrame.new(0, -i/80, 0)
276
				wait()
277
			end
278
			local w = Weld(Rarm, targ, 0, 1.2, 0, math.random(-15,15)/10, math.random(-15,15)/10, math.random(-15,15)/10)
279
			ball = {targ, w}
280
			targ.CanCollide = false
281
			wait(0.1)
282
			for i=70, 0, -8 do
283
				bg.cframe = ComputePos(torso.Position, pos) * CFrame.Angles(math.rad(-i/1.4), 0, 0)
284
				RLW.C0 = CFrame.Angles(math.rad(i/1.4), 0, math.rad(i/4))
285
				LLW.C0 = CFrame.Angles(math.rad(i/1.4), 0, math.rad(-i/4))
286
				RAW.C0 = RAWBattle * CFrame.Angles(math.rad(i*1.3), 0, math.rad(-i/1.7)) * CFrame.new(0, -i/80, 0)
287
				LAW.C0 = LAWBattle * CFrame.Angles(math.rad(i*1.3), 0, math.rad(i/1.7)) * CFrame.new(0, -i/80, 0)
288
				wait()
289
			end
290
			hum.PlatformStand = false
291
			LLW.Part1 = nil
292
			RLW.Part1 = nil
293
			bp:remove()
294
			bg:remove()
295
		end
296
		able = true
297
	end
298
end
299
300
function throw(Mousepos)
301
	if able then
302
		able = false
303
		local torsopos = torso.CFrame
304
		local bgcf = ComputePos(torsopos.p, Mousepos)
305
		local bg = Add.BG(torso)
306
		
307
		local bp = Add.BP(torso)
308
		bp.position = torsopos.p
309
		
310
		RLW.Part1 = Rleg
311
		LLW.Part1 = Lleg
312
		for i=0,-90,-90/4 do
313
			bg.cframe = bgcf * CFrame.Angles(0,math.rad(i),0)
314
			RAW.C0 = RAWBattle * CFrame.Angles(0,0,math.rad(-i/1.7))
315
			LAW.C0 = LAWBattle * CFrame.Angles(0,0,math.rad(i/1.9))
316
			neck.C0 = necko * CFrame.Angles(0,0,math.rad(-i))
317
			RLW.C0 = CFrame.Angles(0,0,math.rad(-i/4.5))
318
			LLW.C0 = CFrame.Angles(0,0,math.rad(i/4.5))
319
			wait()
320
		end
321
		wait(0.08)
322
		for i = 0, 90, 90/3 do
323
			bg.cframe = bgcf * CFrame.Angles(0,math.rad(i-90),0)
324
			RAW.C0 = RAWBattle * CFrame.Angles(0,0,math.rad(i-(-90/1.7)))
325
			neck.C0 = necko * CFrame.Angles(0,0,math.rad(-i+90))
326
			RLW.C0 = CFrame.Angles(0,0,math.rad(-(i/4.5)-(-90/4.5)))
327
			LLW.C0 = CFrame.Angles(0,0,math.rad((i/4.5)-(90/4.5)))
328
			wait()
329
		end
330
		throwsound:play()
331
		coroutine.resume(coroutine.create(function()
332
			local ta = ball
333
			ta[1].Parent.Parent = workspace
334
			ta[2]:remove()
335
			local c = CFrame.new(ball[1].Position, Mousepos) * CFrame.Angles(math.pi/8.5,0,0)
336
			local mag = (torsopos.p - Mousepos).magnitude
337
			mag = mag-(mag/5)
338
			if mag > 50 then mag = 50 end
339
			local kert = (40+(mag*2))
340
			ta[1].Velocity = c.lookVector * kert
341
			wait()
342
			ta[1].Velocity = c.lookVector * kert
343
			ta[1].CanCollide = true
344
			local abletohit = true
345
			ta[1].Touched:connect(function(hit)
346
				if hit.Parent ~= char and hit.Parent.Parent ~= char and abletohit then
347
					abletohit = false
348
					local pz = ta[1].Position
349
					local bla = Part(workspace, true, false, 1, 0, "White", 0.1, 0.1, 0.1, true)
350
					bla.CFrame = CFrame.new(pz)
351
					local saa = hitsound:clone()
352
					saa.Parent = bla
353
					saa:play()
354
					local toz = GetNoobs(pz, Dist)
355
					for i,v in pairs(toz) do
356
						if ta[1].Throwable:findFirstChild("Dmg") ~= nil then
357
							v[3].Value = v[3].Value - ta[1].Throwable.Dmg.Value
358
						end
359
						local caa = CFrame.new(pz, v[1].Position)
360
						v[1].Velocity = caa.lookVector * 25
361
					end
362
					coroutine.resume(coroutine.create(function()
363
					wait(0.5)
364
					bla:remove()
365
					end))
366
				end
367
			end)
368
		end))
369
		for i = 90, 180, 90/3 do
370
			bg.cframe = bgcf * CFrame.Angles(0,math.rad(i-90),0)
371
			RAW.C0 = RAWBattle * CFrame.Angles(0,0,math.rad(-i-(180/1.7)))
372
			neck.C0 = necko * CFrame.Angles(0,0,math.rad(-i+90))
373
			RLW.C0 = CFrame.Angles(0,0,math.rad((i/4.5)+(-90/4.5)))
374
			LLW.C0 = CFrame.Angles(0,0,math.rad(-(i/4.5)+(90/4.5)))
375
			wait()
376
		end
377
		wait(0.16)
378
		for i = 180, 90, -90/6 do
379
			bg.cframe = bgcf * CFrame.Angles(0,math.rad(i-90),0)
380
			RAW.C0 = RAWBattle * CFrame.Angles(0,0,math.rad(i-90))
381
			neck.C0 = necko * CFrame.Angles(0,0,math.rad(-i+90))
382
			LAW.C0 = LAWBattle * CFrame.Angles(0,0,math.rad(-i/1.9+(90/1.9)))
383
			RLW.C0 = CFrame.Angles(0,0,math.rad((i/4.5)+(-90/4.5)))
384
			LLW.C0 = CFrame.Angles(0,0,math.rad(-(i/4.5)+(90/4.5)))
385
			wait()
386
		end
387
		wait(0.06)
388
		bg:remove()
389
		bp:remove()
390
		RLW.Part1 = nil
391
		LLW.Part1 = nil
392
		RAW.C0 = RAWBattle
393
		LAW.C0 = LAWBattle
394
		neck.C0 = necko
395
		ball = nil
396
		able = true
397
	end
398
end
399
400
function Select(mouse)
401
	SelectAnim()
402
	mouse.Button1Down:connect(function()
403
		if ball ~= nil then
404
			throw(mouse.Hit.p)
405
		else
406
			if mouse.Target ~= nil then
407
				grab(mouse.Target, mouse)
408
			end
409
		end
410
	end)
411
end
412
413
function Deselect(mouse)
414
	DeselectAnim()
415
end
416
417
if not script.Parent:IsA("HopperBin") then
418
	H = Instance.new("HopperBin",me.Backpack)
419
	H.Name = Modelname
420
	script.Parent = H
421
end
422
423
bin = script.Parent
424
425
bin.Selected:connect(Select)
426
bin.Deselected:connect(Deselect)
427
428
function givhp(cha)
429
	local hp = Instance.new("IntValue")
430
	hp.Value = 80
431
	hp.Name = "Hp"
432
	hp.Parent = cha
433
	local atc = true
434
	hp.Changed:connect(function()
435
		print(hp.Value)
436
		if hp.Value <= 0 and atc then
437
			atc = false
438
			hp.Value = 0
439
			local h, t = cha:findFirstChild("Humanoid"), cha:findFirstChild("Torso")
440
			local bp = nil
441
			local bg = nil
442
			if h ~= nil then
443
				h.PlatformStand = true
444
			end
445
			if t ~= nil then
446
				bp = Add.BP(t)
447
				bp.position = t.Position
448
				bg = Add.BG(t)
449
				bg.cframe = CFrame.new(Vector3.new(0, 20, 0), Vector3.new(0, 10, 0))
450
			end
451
			wait(11)
452
			hp.Value = 80
453
			if bp ~= nil then
454
				bp:remove()
455
				bg:remove()
456
			end
457
			if h ~= nil then
458
				h.PlatformStand = false
459
			end
460
			atc = true
461
		end
462
	end)
463
end
464
465
for i,v in pairs(game.Players:GetPlayers()) do
466
	if v.Character then
467
		givhp(v.Character)
468
		v.CharacterAdded:connect(function(c)
469
			givhp(c)
470
		end)
471
	end
472
end
473
game.Players.PlayerAdded:connect(function(p)
474
	p.CharacterAdded:connect(function(c)
475
		givhp(c)
476
	end)
477
end)