View difference between Paste ID: VW95wrRe and 7vqwBrSM
SHOW: | | - or go back to the newest paste.
1
--//====================================================\\--
2
--||			   CREATED BY SHACKLUSTER
3
--\\====================================================//--
4
--https://github.com/Mokiros/roblox-FE-compatibility
5
if game:GetService("RunService"):IsClient() then error("Script must be server-side in order to work; use h/ and not hl/") end
6
local Player,game,owner = owner,game
7
local RealPlayer = Player
8
do print("FE Compatibility code V2 by Mokiros")local RealPlayer=RealPlayer;script.Parent=RealPlayer.Character;local a=function(b)b[1].f[b[2]]=nil end;local c={__index={disconnect=a,Disconnect=a}}local d={__index={Connect=function(b,e)local f=tostring(math.random(0,10000))while b.f[f]do f=tostring(math.random(0,10000))end;b.f[f]=e;return setmetatable({b,f},c)end}}d.__index.connect=d.__index.Connect;local function g()return setmetatable({f={}},d)end;local h={Hit=CFrame.new(),KeyUp=g(),KeyDown=g(),Button1Up=g(),Button1Down=g(),Button2Up=g(),Button2Down=g()}h.keyUp=h.KeyUp;h.keyDown=h.KeyDown;local i={InputBegan=g(),InputEnded=g()}local CAS={Actions={},BindAction=function(self,j,k,l,...)CAS.Actions[j]=k and{Name=j,Function=k,Keys={...}}or nil end}CAS.UnbindAction=CAS.BindAction;local function m(self,n,...)for o,e in pairs(self[n].f)do e(...)end end;h.T=m;i.T=m;local p=Instance.new("RemoteEvent")p.Name="UserInput_Event"p.OnServerEvent:Connect(function(q,r)if q~=RealPlayer then return end;h.Target=r.e;h.Hit=r.d;if not r.f then local s=r.c==Enum.UserInputState.Begin;if r.b==Enum.UserInputType.MouseButton1 then return h:T(s and"Button1Down"or"Button1Up")end;if r.b==Enum.UserInputType.MouseButton2 then return h:T(s and"Button2Down"or"Button2Up")end;for o,t in pairs(CAS.Actions)do for o,u in pairs(t.Keys)do if u==r.a then t.Function(t.Name,r.c,r)end end end;h:T(s and"KeyDown"or"KeyUp",r.a.Name:lower())i:T(s and"InputBegan"or"InputEnded",r,false)end end)p.Parent=NLS([==[local a=script:WaitForChild("UserInput_Event")local b=owner:GetMouse()local c=game:GetService("UserInputService")local d=function(e,f)if f then return end;a:FireServer({a=e.KeyCode,b=e.UserInputType,c=e.UserInputState,d=b.Hit,e=b.Target})end;c.InputBegan:Connect(d)c.InputEnded:Connect(d)local g,h;local i=game:GetService("RunService").Heartbeat;while true do if g~=b.Hit or h~=b.Target then g,h=b.Hit,b.Target;a:FireServer({f=1,Target=h,d=g})end;for j=1,2 do i:Wait()end end]==],script)local v=game;local w={__index=function(self,u)local x=rawget(self,"_RealService")if x then return typeof(x[u])=="function"and function(o,...)return x[u](x,...)end or x[u]end end,__newindex=function(self,u,y)local x=rawget(self,"_RealService")if x then x[u]=y end end}local function z(t,A)t._RealService=typeof(A)=="string"and v:GetService(A)or A;return setmetatable(t,w)end;local B={GetService=function(self,x)return rawget(self,x)or v:GetService(x)end,Players=z({LocalPlayer=z({GetMouse=function(self)return h end},Player)},"Players"),UserInputService=z(i,"UserInputService"),ContextActionService=z(CAS,"ContextActionService"),RunService=z({_btrs={},RenderStepped=v:GetService("RunService").Heartbeat,BindToRenderStep=function(self,j,o,k)self._btrs[j]=self.Heartbeat:Connect(k)end,UnbindFromRenderStep=function(self,j)self._btrs[j]:Disconnect()end},"RunService")}rawset(B.Players,"localPlayer",B.Players.LocalPlayer)B.service=B.GetService;z(B,game)game,owner=B,B.Players.LocalPlayer end
9
10
11
Class_Name=string.reverse"ihS-ihS yB tidE "
12
13
wait(0.2)
14
15
16
Bonniee = Instance.new("ForceField", game.Players.LocalPlayer.Character)
17
Bonniee.Visible = false
18
local nel = game.Players.LocalPlayer.Character.Humanoid
19
nel.MaxHealth = math.huge
20
Player = game:GetService("Players").LocalPlayer
21
PlayerGui = Player.PlayerGui
22
Cam = workspace.CurrentCamera
23
Backpack = Player.Backpack
24
Character = Player.Character
25
Humanoid = Character.Humanoid
26
Mouse = Player:GetMouse()
27
RootPart = Character["HumanoidRootPart"]
28
Torso = Character["Torso"]
29
Head = Character["Head"]
30
RightArm = Character["Right Arm"]
31
LeftArm = Character["Left Arm"]
32
RightLeg = Character["Right Leg"]
33
LeftLeg = Character["Left Leg"]
34
RootJoint = RootPart["RootJoint"]
35
Neck = Torso["Neck"]
36
RightShoulder = Torso["Right Shoulder"]
37
LeftShoulder = Torso["Left Shoulder"]
38
RightHip = Torso["Right Hip"]
39
LeftHip = Torso["Left Hip"]
40
41
IT = Instance.new
42
CF = CFrame.new
43
VT = Vector3.new
44
RAD = math.rad
45
C3 = Color3.new
46
UD2 = UDim2.new
47
BRICKC = BrickColor.new
48
ANGLES = CFrame.Angles
49
EULER = CFrame.fromEulerAnglesXYZ
50
COS = math.cos
51
ACOS = math.acos
52
SIN = math.sin
53
ASIN = math.asin
54
ABS = math.abs
55
MRANDOM = math.random
56
FLOOR = math.floor
57
58
function CreateMesh(MESH, PARENT, MESHTYPE, MESHID, TEXTUREID, SCALE, OFFSET)
59
	local NEWMESH = IT(MESH)
60
	if MESH == "SpecialMesh" then
61
		NEWMESH.MeshType = MESHTYPE
62
		if MESHID ~= "nil" and MESHID ~= "" then
63
			NEWMESH.MeshId = "http://www.roblox.com/asset/?id="..MESHID
64
		end
65
		if TEXTUREID ~= "nil" and TEXTUREID ~= "" then
66
			NEWMESH.TextureId = "http://www.roblox.com/asset/?id="..TEXTUREID
67
		end
68
	end
69
	NEWMESH.Offset = OFFSET or VT(0, 0, 0)
70
	NEWMESH.Scale = SCALE
71
	NEWMESH.Parent = PARENT
72
	return NEWMESH
73
end
74
75
function CreatePart(FORMFACTOR, PARENT, MATERIAL, REFLECTANCE, TRANSPARENCY, BRICKCOLOR, NAME, SIZE, ANCHOR)
76
	local NEWPART = IT("Part")
77
	NEWPART.formFactor = FORMFACTOR
78
	NEWPART.Reflectance = REFLECTANCE
79
	NEWPART.Transparency = TRANSPARENCY
80
	NEWPART.CanCollide = false
81
	NEWPART.Locked = true
82
	NEWPART.Anchored = true
83
	if ANCHOR == false then
84
		NEWPART.Anchored = false
85
	end
86
	NEWPART.BrickColor = BRICKC(tostring(BRICKCOLOR))
87
	NEWPART.Name = NAME
88
	NEWPART.Size = SIZE
89
	NEWPART.Position = Torso.Position
90
	NEWPART.Material = MATERIAL
91
	NEWPART:BreakJoints()
92
	NEWPART.Parent = PARENT
93
	return NEWPART
94
end
95
96
--//=================================\\
97
--||		  CUSTOMIZATION
98
--\\=================================//
99
100
warn(Class_Name.." #4817")
101
Player_Size = 1 --Size of the player.
102
Animation_Speed = 3
103
Frame_Speed = 1 / 60 -- (1 / 30) OR (1 / 60)
104
105
local Speed = 16
106
local Effects2 = {}
107
108
--//=================================\\
109
--|| 	  END OF CUSTOMIZATION
110
--\\=================================//
111
112
	local function weldBetween(a, b)
113
	    local weldd = Instance.new("ManualWeld")
114
	    weldd.Part0 = a
115
	    weldd.Part1 = b
116
	    weldd.C0 = CFrame.new()
117
	    weldd.C1 = b.CFrame:inverse() * a.CFrame
118
	    weldd.Parent = a
119
	    return weldd
120
	end
121
122
--//=================================\\
123
--|| 	      USEFUL VALUES
124
--\\=================================//
125
126
local ROOTC0 = CF(0, 0, 0) * ANGLES(RAD(-90), RAD(0), RAD(180))
127
local NECKC0 = CF(0, 1, 0) * ANGLES(RAD(-90), RAD(0), RAD(180))
128
local RIGHTSHOULDERC0 = CF(-0.5, 0, 0) * ANGLES(RAD(0), RAD(90), RAD(0))
129
local LEFTSHOULDERC0 = CF(0.5, 0, 0) * ANGLES(RAD(0), RAD(-90), RAD(0))
130
local CHANGEDEFENSE = 0
131
local CHANGEDAMAGE = 0
132
local CHANGEMOVEMENT = 0
133
local ANIM = "Idle"
134
local ATTACK = false
135
local EQUIPPED = false
136
local HOLD = false
137
local COMBO = 1
138
local Rooted = false
139
local SINE = 0
140
local KEYHOLD = false
141
local CHANGE = 2 / Animation_Speed
142
local WALKINGANIM = false
143
local WALK = 0
144
local VALUE1 = false
145
local VALUE2 = false
146
local ROBLOXIDLEANIMATION = IT("Animation")
147
ROBLOXIDLEANIMATION.Name = "Roblox Idle Animation"
148
ROBLOXIDLEANIMATION.AnimationId = "http://www.roblox.com/asset/?id=180435571"
149
--ROBLOXIDLEANIMATION.Parent = Humanoid
150
local WEAPONGUI = IT("ScreenGui", PlayerGui)
151
WEAPONGUI.Name = "Weapon GUI"
152
local Weapon = IT("Model")
153
Weapon.Name = "Adds"
154
local Effects = IT("Folder", Weapon)
155
Effects.Name = "Effects"
156
local ANIMATOR = Humanoid.Animator
157
local ANIMATE = Character.Animate
158
local HITPLAYERSOUNDS = {--[["199149137", "199149186", "199149221", "199149235", "199149269", "199149297"--]]"263032172", "263032182", "263032200", "263032221", "263032252", "263033191"}
159
local HITARMORSOUNDS = {"199149321", "199149338", "199149367", "199149409", "199149452"}
160
local HITWEAPONSOUNDS = {"199148971", "199149025", "199149072", "199149109", "199149119"}
161
local HITBLOCKSOUNDS = {"199148933", "199148947"}
162
local UNANCHOR = true
163
164
local SKILLTEXTCOLOR = C3(0,0,0)
165
166
local SONGS = {"1113734859","203547439","1343405182","1183179337","946737865","1110421128"}
167
local SONGPLAYING = false
168
local SELECTEDSONG = 1
169
170
--//=================================\\
171
--\\=================================//
172
173
174
--//=================================\\
175
--|| SAZERENOS' ARTIFICIAL HEARTBEAT
176
--\\=================================//
177
178
ArtificialHB = Instance.new("BindableEvent", script)
179
ArtificialHB.Name = "ArtificialHB"
180
181
script:WaitForChild("ArtificialHB")
182
183
frame = Frame_Speed
184
tf = 0
185
allowframeloss = false
186
tossremainder = false
187
lastframe = tick()
188
script.ArtificialHB:Fire()
189
190
game:GetService("RunService").Heartbeat:connect(function(s, p)
191
	tf = tf + s
192
	if tf >= frame then
193
		if allowframeloss then
194
			script.ArtificialHB:Fire()
195
			lastframe = tick()
196
		else
197
			for i = 1, math.floor(tf / frame) do
198
				script.ArtificialHB:Fire()
199
			end
200
		lastframe = tick()
201
		end
202
		if tossremainder then
203
			tf = 0
204
		else
205
			tf = tf - frame * math.floor(tf / frame)
206
		end
207
	end
208
end)
209
210
--//=================================\\
211
--\\=================================//
212
213
214
215
216
217
--//=================================\\
218
--|| 	      SOME FUNCTIONS
219
--\\=================================//
220
221
function Raycast(POSITION, DIRECTION, RANGE, IGNOREDECENDANTS)
222
	return workspace:FindPartOnRay(Ray.new(POSITION, DIRECTION.unit * RANGE), IGNOREDECENDANTS)
223
end
224
225
function PositiveAngle(NUMBER)
226
	if NUMBER >= 0 then
227
		NUMBER = 0
228
	end
229
	return NUMBER
230
end
231
232
function NegativeAngle(NUMBER)
233
	if NUMBER <= 0 then
234
		NUMBER = 0
235
	end
236
	return NUMBER
237
end
238
239
function Swait(NUMBER)
240
	if NUMBER == 0 or NUMBER == nil then
241
		ArtificialHB.Event:wait()
242
	else
243
		for i = 1, NUMBER do
244
			ArtificialHB.Event:wait()
245
		end
246
	end
247
end
248
249
function QuaternionFromCFrame(cf)
250
	local mx, my, mz, m00, m01, m02, m10, m11, m12, m20, m21, m22 = cf:components()
251
	local trace = m00 + m11 + m22
252
	if trace > 0 then 
253
		local s = math.sqrt(1 + trace)
254
		local recip = 0.5 / s
255
		return (m21 - m12) * recip, (m02 - m20) * recip, (m10 - m01) * recip, s * 0.5
256
	else
257
		local i = 0
258
		if m11 > m00 then
259
			i = 1
260
		end
261
		if m22 > (i == 0 and m00 or m11) then
262
			i = 2
263
		end
264
		if i == 0 then
265
			local s = math.sqrt(m00 - m11 - m22 + 1)
266
			local recip = 0.5 / s
267
			return 0.5 * s, (m10 + m01) * recip, (m20 + m02) * recip, (m21 - m12) * recip
268
		elseif i == 1 then
269
			local s = math.sqrt(m11 - m22 - m00 + 1)
270
			local recip = 0.5 / s
271
			return (m01 + m10) * recip, 0.5 * s, (m21 + m12) * recip, (m02 - m20) * recip
272
		elseif i == 2 then
273
			local s = math.sqrt(m22 - m00 - m11 + 1)
274
			local recip = 0.5 / s return (m02 + m20) * recip, (m12 + m21) * recip, 0.5 * s, (m10 - m01) * recip
275
		end
276
	end
277
end
278
 
279
function QuaternionToCFrame(px, py, pz, x, y, z, w)
280
	local xs, ys, zs = x + x, y + y, z + z
281
	local wx, wy, wz = w * xs, w * ys, w * zs
282
	local xx = x * xs
283
	local xy = x * ys
284
	local xz = x * zs
285
	local yy = y * ys
286
	local yz = y * zs
287
	local zz = z * zs
288
	return CFrame.new(px, py, pz, 1 - (yy + zz), xy - wz, xz + wy, xy + wz, 1 - (xx + zz), yz - wx, xz - wy, yz + wx, 1 - (xx + yy))
289
end
290
 
291
function QuaternionSlerp(a, b, t)
292
	local cosTheta = a[1] * b[1] + a[2] * b[2] + a[3] * b[3] + a[4] * b[4]
293
	local startInterp, finishInterp;
294
	if cosTheta >= 0.0001 then
295
		if (1 - cosTheta) > 0.0001 then
296
			local theta = ACOS(cosTheta)
297
			local invSinTheta = 1 / SIN(theta)
298
			startInterp = SIN((1 - t) * theta) * invSinTheta
299
			finishInterp = SIN(t * theta) * invSinTheta
300
		else
301
			startInterp = 1 - t
302
			finishInterp = t
303
		end
304
	else
305
		if (1 + cosTheta) > 0.0001 then
306
			local theta = ACOS(-cosTheta)
307
			local invSinTheta = 1 / SIN(theta)
308
			startInterp = SIN((t - 1) * theta) * invSinTheta
309
			finishInterp = SIN(t * theta) * invSinTheta
310
		else
311
			startInterp = t - 1
312
			finishInterp = t
313
		end
314
	end
315
	return a[1] * startInterp + b[1] * finishInterp, a[2] * startInterp + b[2] * finishInterp, a[3] * startInterp + b[3] * finishInterp, a[4] * startInterp + b[4] * finishInterp
316
end
317
318
function Clerp(a, b, t)
319
	local qa = {QuaternionFromCFrame(a)}
320
	local qb = {QuaternionFromCFrame(b)}
321
	local ax, ay, az = a.x, a.y, a.z
322
	local bx, by, bz = b.x, b.y, b.z
323
	local _t = 1 - t
324
	return QuaternionToCFrame(_t * ax + t * bx, _t * ay + t * by, _t * az + t * bz, QuaternionSlerp(qa, qb, t))
325
end
326
327
function CreateFrame(PARENT, TRANSPARENCY, BORDERSIZEPIXEL, POSITION, SIZE, COLOR, BORDERCOLOR, NAME)
328
	local frame = IT("Frame")
329
	frame.BackgroundTransparency = TRANSPARENCY
330
	frame.BorderSizePixel = BORDERSIZEPIXEL
331
	frame.Position = POSITION
332
	frame.Size = SIZE
333
	frame.BackgroundColor3 = COLOR
334
	frame.BorderColor3 = BORDERCOLOR
335
	frame.Name = NAME
336
	frame.Parent = PARENT
337
	return frame
338
end
339
340
function CreateLabel(PARENT, TEXT, TEXTCOLOR, TEXTFONTSIZE, TEXTFONT, TRANSPARENCY, BORDERSIZEPIXEL, STROKETRANSPARENCY, NAME)
341
	local label = IT("TextLabel")
342
	label.BackgroundTransparency = 1
343
	label.Size = UD2(1, 0, 1, 0)
344
	label.Position = UD2(0, 0, 0, 0)
345
	label.TextColor3 = TEXTCOLOR
346
	label.TextStrokeTransparency = STROKETRANSPARENCY
347
	label.TextTransparency = TRANSPARENCY
348
	label.FontSize = TEXTFONTSIZE
349
	label.Font = TEXTFONT
350
	label.BorderSizePixel = BORDERSIZEPIXEL
351
	label.TextScaled = false
352
	label.Text = TEXT
353
	label.Name = NAME
354
	label.Parent = PARENT
355
	return label
356
end
357
358
function NoOutlines(PART)
359
	PART.TopSurface, PART.BottomSurface, PART.LeftSurface, PART.RightSurface, PART.FrontSurface, PART.BackSurface = 10, 10, 10, 10, 10, 10
360
end
361
362
363
function CreateWeldOrSnapOrMotor(TYPE, PARENT, PART0, PART1, C0, C1)
364
	local NEWWELD = IT(TYPE)
365
	NEWWELD.Part0 = PART0
366
	NEWWELD.Part1 = PART1
367
	NEWWELD.C0 = C0
368
	NEWWELD.C1 = C1
369
	NEWWELD.Parent = PARENT
370
	return NEWWELD
371
end
372
373
function CreateSound(ID, PARENT, VOLUME, PITCH, DEBRISTIME)
374
	local NEWSOUND = nil
375
	coroutine.resume(coroutine.create(function()
376
		NEWSOUND = IT("Sound", PARENT)
377
		NEWSOUND.Volume = VOLUME
378
		NEWSOUND.Pitch = PITCH
379
		NEWSOUND.SoundId = "http://www.roblox.com/asset/?id="..ID
380
		Swait()
381
		NEWSOUND:play()
382
		NEWSOUND.Name = "Audio"
383
		if DEBRISTIME ~= nil then
384
			game:GetService("Debris"):AddItem(NEWSOUND, DEBRISTIME)
385
		end
386
	end))
387
	return NEWSOUND
388
end
389
390
function CFrameFromTopBack(at, top, back)
391
	local right = top:Cross(back)
392
	return CF(at.x, at.y, at.z, right.x, top.x, back.x, right.y, top.y, back.y, right.z, top.z, back.z)
393
end
394
395
function MagicSphere(SIZE,WAIT,CFRAME,COLOR,GROW)
396
	local wave = CreatePart(3, Effects, "Neon", 0, 0, BRICKC(COLOR), "Effect", VT(1,1,1), true)
397
	local mesh = CreateMesh("SpecialMesh", wave, "Sphere", "", "", SIZE, VT(0,0,0))
398
	wave.CFrame = CFRAME
399
	coroutine.resume(coroutine.create(function(PART)
400
		for i = 1, WAIT do
401
			Swait()
402
			mesh.Scale = mesh.Scale + GROW
403
			wave.Transparency = wave.Transparency + (1/WAIT)
404
			if wave.Transparency > 0.99 then
405
				wave:remove()
406
			end
407
		end
408
	end))
409
end
410
411
function MagicBlock(SIZE,WAIT,CFRAME,COLOR,GROW)
412
	local wave = CreatePart(3, Effects, "Neon", 0, 0, BRICKC(COLOR), "Effect", VT(SIZE,SIZE,SIZE), true)
413
	local mesh = IT("BlockMesh",wave)
414
	wave.CFrame = CFRAME
415
	coroutine.resume(coroutine.create(function(PART)
416
		for i = 1, WAIT do
417
			Swait()
418
			mesh.Scale = mesh.Scale + GROW
419
			wave.CFrame = CFRAME * ANGLES(RAD(math.random(-360,360)),RAD(math.random(-360,360)),RAD(math.random(-360,360)))
420
			wave.Transparency = wave.Transparency + (1/WAIT)
421
			if wave.Transparency > 0.99 then
422
				wave:remove()
423
			end
424
		end
425
	end))
426
end
427
428
function Slice(KIND,SIZE,WAIT,CFRAME,COLOR,GROW)
429
	local wave = CreatePart(3, Effects, "Neon", 0, 0.5, BRICKC(COLOR), "Effect", VT(1,1,1), true)
430
	local mesh = nil
431
	if KIND == "Base" then
432
 		mesh = CreateMesh("SpecialMesh", wave, "FileMesh", "448386996", "", VT(0,SIZE/10,SIZE/10), VT(0,0,0))
433
	elseif KIND == "Thin" then
434
 		mesh = CreateMesh("SpecialMesh", wave, "FileMesh", "662586858", "", VT(SIZE/10,0,SIZE/10), VT(0,0,0))
435
	elseif KIND == "Round" then
436
 		mesh = CreateMesh("SpecialMesh", wave, "FileMesh", "662585058", "", VT(SIZE/10,0,SIZE/10), VT(0,0,0))
437
	end
438
	wave.CFrame = CFRAME
439
	coroutine.resume(coroutine.create(function(PART)
440
		for i = 1, WAIT do
441
			Swait()
442
			mesh.Scale = mesh.Scale + GROW/10
443
			wave.Transparency = wave.Transparency + (0.5/WAIT)
444
			if wave.Transparency > 0.99 then
445
				wave:remove()
446
			end
447
		end
448
	end))
449
end
450
451
function MakeForm(PART,TYPE)
452
	if TYPE == "Cyl" then
453
		local MSH = IT("CylinderMesh",PART)
454
	elseif TYPE == "Ball" then
455
		local MSH = IT("SpecialMesh",PART)
456
		MSH.MeshType = "Sphere"
457
	elseif TYPE == "Wedge" then
458
		local MSH = IT("SpecialMesh",PART)
459
		MSH.MeshType = "Wedge"
460
	end
461
end
462
463
function CheckTableForString(Table, String)
464
	for i, v in pairs(Table) do
465
		if string.find(string.lower(String), string.lower(v)) then
466
			return true
467
		end
468
	end
469
	return false
470
end
471
472
function CheckIntangible(Hit)
473
	local ProjectileNames = {"Water", "Arrow", "Projectile", "Effect", "Rail", "Lightning", "Bullet"}
474
	if Hit and Hit.Parent then
475
		if ((not Hit.CanCollide or CheckTableForString(ProjectileNames, Hit.Name)) and not Hit.Parent:FindFirstChild("Humanoid")) then
476
			return true
477
		end
478
	end
479
	return false
480
end
481
482
Debris = game:GetService("Debris")
483
484
function CastZapRay(StartPos, Vec, Length, Ignore, DelayIfHit)
485
	local Direction = CFrame.new(StartPos, Vec).lookVector
486
	local Ignore = ((type(Ignore) == "table" and Ignore) or {Ignore})
487
	local RayHit, RayPos, RayNormal = game:GetService("Workspace"):FindPartOnRayWithIgnoreList(Ray.new(StartPos, Direction * Length), Ignore)
488
	if RayHit and CheckIntangible(RayHit) then
489
		if DelayIfHit then
490
			wait()
491
		end
492
		RayHit, RayPos, RayNormal = CastZapRay((RayPos + (Vec * 0.01)), Vec, (Length - ((StartPos - RayPos).magnitude)), Ignore, DelayIfHit)
493
	end
494
	return RayHit, RayPos, RayNormal
495
end
496
497
function turnto(position)
498
	RootPart.CFrame=CFrame.new(RootPart.CFrame.p,VT(position.X,RootPart.Position.Y,position.Z)) * CFrame.new(0, 0, 0)
499
end
500
501
--//=================================\\
502
--||	     WEAPON CREATION
503
--\\=================================//
504
505
506
for _, c in pairs(Weapon:GetChildren()) do
507
	if c.ClassName == "Part" then
508
		c.CustomPhysicalProperties = PhysicalProperties.new(0, 0, 0, 0, 0)
509
	end
510
end
511
512
local Radio = CreatePart(1, Weapon, "Marble", 0, 0, "Pearl", "RAD-io", VT(.1,0.2,0.1),false)
513
CreateWeldOrSnapOrMotor("Weld", Radio, Torso, Radio, CF(0, 0, 1) * ANGLES(RAD(0), RAD(180), RAD(45)), CF(0, 0, 0))
514
local RADIOMESH = CreateMesh("SpecialMesh", Radio, "FileMesh", "1082816", "2766467", VT(1,1,1), VT(0,0,0))
515
516
Weapon.Parent = Character
517
518
Humanoid.Died:connect(function()
519
	ATTACK = true
520
end)
521
522
local SKILL1FRAME = CreateFrame(WEAPONGUI, 1 , 2, UD2(0.10, 0, 0.80, 0), UD2(0.26, 0, 0.07, 0), C3(0,0,0), C3(0, 0, 0), "Skill 1 Frame")
523
local SKILL2FRAME = CreateFrame(WEAPONGUI, 1, 2, UD2(0.60, 0, 0.80, 0), UD2(0.26, 0, 0.07, 0), C3(0,0,0), C3(0, 0, 0), "Skill 2 Frame")
524
local SKILL3FRAME = CreateFrame(WEAPONGUI, 1, 2, UD2(0.23, 0, 0.93, 0), UD2(0.26, 0, 0.07, 0), C3(0,0,0), C3(0, 0, 0), "Skill 3 Frame")
525
local SKILL4FRAME = CreateFrame(WEAPONGUI, 1, 2, UD2(0.50, 0, 0.93, 0), UD2(0.26, 0, 0.07, 0), C3(0,0,0), C3(0, 0, 0), "Skill 4 Frame")
526
527
local SKILL1TEXT = CreateLabel(SKILL1FRAME, "[Z] sitt", SKILLTEXTCOLOR, 8, "Cartoon", 0, 2, 1, "Text 1")
528
local SKILL2TEXT = CreateLabel(SKILL2FRAME, "[B] Wut", SKILLTEXTCOLOR, 8, "Cartoon", 0, 2, 1, "Text 2")
529
local SKILL3TEXT = CreateLabel(SKILL3FRAME, "[C] Toggle Radio (Open,off)", SKILLTEXTCOLOR, 8, "Cartoon", 0, 2, 1, "Text 3")
530
local SKILL4TEXT = CreateLabel(SKILL4FRAME, "[V] Change song", SKILLTEXTCOLOR, 8, "Cartoon", 0, 2, 1, "Text 4")
531
532
local INFOFRAME = CreateFrame(WEAPONGUI, 1, 2, UD2(0.365, 0, 0, 0), UD2(0.26, 0, 0.07, 0), C3(0,0,0), C3(0, 0, 0), "Skill 4 Frame")
533
local INFOTEXT = CreateLabel(INFOFRAME, "Say 'AddSong:ID' to add da song", SKILLTEXTCOLOR, 6, "SciFi", 0, 2, 1, "Text HA")
534
535
local INFOFRAME = CreateFrame(WEAPONGUI, 1, 2, UD2(0.365, 0, 0.1, 0), UD2(0.26, 0, 0.07, 0), C3(0,0,0), C3(0, 0, 0), "Skill 4 Frame")
536
local INFOTEXT = CreateLabel(INFOFRAME, "Say 'RSong:Number' to remove da song", SKILLTEXTCOLOR, 6, "SciFi", 0, 2, 1, "Text HA")
537
538
539
--//=================================\\
540
--||	ATTACK FUNCTIONS AND STUFF
541
--\\=================================//
542
543
function onChatted(msg)
544
	if msg:sub(1,8) == "AddSong:" then
545
		local ID = msg:sub(9)
546
		table.insert(SONGS,ID)
547
		SELECTEDSONG = #SONGS
548
	end
549
	if msg:sub(1,11) == "RemoveSong:" then
550
		local ID = msg:sub(12)
551
		if ID <= #SONGS then
552
			table.remove(SONGS,ID)
553
		end
554
	end
555
end
556
Player.Chatted:connect(onChatted)
557
function sitt()
558
	local SITT = CreateSound("188959311", Torso, 0.8, 1, 30)
559
	ATTACK = true
560
	repeat Swait() until SITT.TimePosition > .1
561
	VALUE1 = true
562
	ATTACK = false
563
end
564
565
function mostworryingindeed()
566
	ATTACK = true
567
	VALUE2 = true
568
	CreateSound("188959311", Torso, 10, 1, 6)
569
	for i = 1, 35 do
570
		Swait()
571
		RightArm.Transparency = RightArm.Transparency + 1/35
572
		LeftArm.Transparency = LeftArm.Transparency + 1/35
573
		RightShoulder.C0 = Clerp(RightShoulder.C0, CF(150, 0.5, 0) * ANGLES(RAD(-25), RAD(0), RAD(12)) * RIGHTSHOULDERC0, 0.15 / Animation_Speed)
574
		LeftShoulder.C0 = Clerp(LeftShoulder.C0, CF(-150, 0.5, 0) * ANGLES(RAD(-25), RAD(0), RAD(-12)) * LEFTSHOULDERC0, 0.15 / Animation_Speed)
575
	end
576
	for i = 1, 150 do
577
		Swait()
578
		RightArm.Transparency = RightArm.Transparency - 1/100
579
		LeftArm.Transparency = LeftArm.Transparency - 1/100
580
		RightShoulder.C0 = Clerp(RightShoulder.C0, CF(1.2, 1, -0.1) * ANGLES(RAD(155), RAD(-25), RAD(-12)) * RIGHTSHOULDERC0, 0.15 / Animation_Speed)
581
		LeftShoulder.C0 = Clerp(LeftShoulder.C0, CF(-1.2, 1, -0.1) * ANGLES(RAD(155), RAD(25), RAD(12)) * LEFTSHOULDERC0, 0.15 / Animation_Speed)
582
	end
583
	RightArm.Transparency = 0
584
	LeftArm.Transparency = 0
585
	local SITT = CreateSound("501536185", Torso, 10, 1, 6)
586
	Swait(2)
587
	repeat Swait() until SITT.Playing == false
588
	VALUE2 = false
589
	ATTACK = false
590
end
591
592
--//=================================\\
593
--||	  ASSIGN THINGS TO KEYS
594
--\\=================================//
595
596
function MouseDown(Mouse)
597
	if ATTACK == false then
598
	end
599
end
600
601
function MouseUp(Mouse)
602
HOLD = false
603
end
604
605
function KeyDown(Key)
606
	KEYHOLD = true
607
	if Key == "z" and ATTACK == false then
608
		if VALUE1 == false then
609
			sitt()
610
		else
611
			VALUE1 = false
612
		end
613
	end
614
615
	if Key == "b" and ATTACK == false then
616
		mostworryingindeed()
617
	end
618
619
	if Key == "c" and ATTACK == false then
620
		if SONGPLAYING == false then
621
			SONGPLAYING = true
622
			local SONG = CreateSound(SONGS[SELECTEDSONG], Radio, 10, 1, nil)
623
			SONG.Looped = true
624
		else
625
			if Radio:FindFirstChild("Audio") then
626
				Radio.Audio:remove()
627
			end
628
			SONGPLAYING = false
629
		end
630
	end
631
632
	if Key == "v" and ATTACK == false then
633
		SELECTEDSONG = SELECTEDSONG + 1
634
	end
635
end
636
637
function KeyUp(Key)
638
	KEYHOLD = false
639
end
640
641
	Mouse.Button1Down:connect(function(NEWKEY)
642
		MouseDown(NEWKEY)
643
	end)
644
	Mouse.Button1Up:connect(function(NEWKEY)
645
		MouseUp(NEWKEY)
646
	end)
647
	Mouse.KeyDown:connect(function(NEWKEY)
648
		KeyDown(NEWKEY)
649
	end)
650
	Mouse.KeyUp:connect(function(NEWKEY)
651
		KeyUp(NEWKEY)
652
	end)
653
654
--//=================================\\
655
--\\=================================//
656
657
658
function unanchor()
659
	if UNANCHOR == true then
660
		g = Character:GetChildren()
661
		for i = 1, #g do
662
			if g[i].ClassName == "Part" then
663
				g[i].Anchored = false
664
			end
665
		end
666
	end
667
end
668
669
670
--//=================================\\
671
--||	WRAP THE WHOLE SCRIPT UP
672
--\\=================================//
673
674
Humanoid.Changed:connect(function(Jump)
675
	if Jump == "Jump" and (Disable_Jump == true) then
676
		Humanoid.Jump = false
677
	end
678
end)
679
680
while true do
681
	Swait()
682
	ANIMATE.Parent = nil
683
	local IDLEANIMATION = Humanoid:LoadAnimation(ROBLOXIDLEANIMATION)
684
	IDLEANIMATION:Play()
685
	SINE = SINE + CHANGE
686
	local TORSOVELOCITY = (RootPart.Velocity * VT(1, 0, 1)).magnitude
687
	local TORSOVERTICALVELOCITY = RootPart.Velocity.y
688
	local LV = Torso.CFrame:pointToObjectSpace(Torso.Velocity - Torso.Position)
689
	local HITFLOOR = Raycast(RootPart.Position, (CF(RootPart.Position, RootPart.Position + VT(0, -1, 0))).lookVector, 4 * Player_Size, Character)
690
	local WALKSPEEDVALUE = 6 / (Humanoid.WalkSpeed / 16)
691
	if VALUE1 == false then
692
		if VALUE2 == false then
693
			RightShoulder.C0 = Clerp(RightShoulder.C0, CF(1.5, 0.5, 0) * ANGLES(RAD(-25), RAD(0), RAD(12)) * RIGHTSHOULDERC0, 0.15 / Animation_Speed)
694
			LeftShoulder.C0 = Clerp(LeftShoulder.C0, CF(-1.5, 0.5, 0) * ANGLES(RAD(-25), RAD(0), RAD(-12)) * LEFTSHOULDERC0, 0.15 / Animation_Speed)
695
		end
696
		HipHeight = 3
697
		Rooted = false
698
		RootJoint.C0 = Clerp(RootJoint.C0,ROOTC0 * CF(0, 0, 1 + 0.35 * COS(SINE / 42)) * ANGLES(RAD(-25), RAD(0), RAD(0)), 0.15 / Animation_Speed)
699
		Neck.C0 = Clerp(Neck.C0, NECKC0 * CF(0, 0, 0 + ((1) - 1)) * ANGLES(RAD(25 - 2.5 * SIN(SINE / 12)), RAD(0), RAD(0)), 0.15 / Animation_Speed)
700
		RightHip.C0 = Clerp(RightHip.C0, CF(1, 0, -1) * ANGLES(RAD(-25), RAD(90), RAD(0)) * ANGLES(RAD(-8), RAD(0), RAD(0)), 0.15 / Animation_Speed)
701
		LeftHip.C0 = Clerp(LeftHip.C0, CF(-1, -1, -0.01) * ANGLES(RAD(-25), RAD(-90), RAD(0)) * ANGLES(RAD(-8), RAD(0), RAD(0)), 0.15 / Animation_Speed)
702
	else
703
		if VALUE2 == false then
704
			RightShoulder.C0 = Clerp(RightShoulder.C0, CF(1.5, 0, 0) * ANGLES(RAD(-25), RAD(0), RAD(12)) * RIGHTSHOULDERC0, 1 / Animation_Speed)
705
			LeftShoulder.C0 = Clerp(LeftShoulder.C0, CF(-1.5, 0, 0) * ANGLES(RAD(-25), RAD(0), RAD(-12)) * LEFTSHOULDERC0, 1 / Animation_Speed)
706
		end
707
		Rooted = true
708
		HipHeight = 0
709
		RootJoint.C0 = Clerp(RootJoint.C0,ROOTC0 * CF(0, 0, -1.5) * ANGLES(RAD(-15), RAD(0), RAD(0)), 1 / Animation_Speed)
710
		Neck.C0 = Clerp(Neck.C0, NECKC0 * CF(0, 0, 0 + ((1) - 1)) * ANGLES(RAD(0 - 2.5 * SIN(SINE / 12)), RAD(0), RAD(0)), 1 / Animation_Speed)
711
		RightHip.C0 = Clerp(RightHip.C0, CF(1, -1, -0.01) * ANGLES(RAD(75), RAD(90), RAD(0)) * ANGLES(RAD(-8), RAD(0), RAD(0)), 1 / Animation_Speed)
712
		LeftHip.C0 = Clerp(LeftHip.C0, CF(-1, -1, -0.01) * ANGLES(RAD(75), RAD(-90), RAD(0)) * ANGLES(RAD(-8), RAD(0), RAD(0)), 1/ Animation_Speed)
713
	end
714
	unanchor()
715
	Humanoid.MaxHealth = "inf"
716
	Humanoid.Health = "inf"
717
	if Rooted == false then
718
		Disable_Jump = false
719
		Humanoid.WalkSpeed = Speed
720
	elseif Rooted == true then
721
		Disable_Jump = true
722
		Humanoid.WalkSpeed = 0
723
	end
724
	if SELECTEDSONG > #SONGS then
725
		SELECTEDSONG = 1
726
	end
727
	if SONGPLAYING == true then
728
		local SONG = Radio:FindFirstChild("Audio")
729
		if SONG ~= nil then
730
			SONG.Playing = true
731
			if SONG.SoundId ~= "rbxassetid://"..SONGS[SELECTEDSONG] then
732
				SONG.SoundId = "rbxassetid://"..SONGS[SELECTEDSONG]
733
				SONG:Play()
734
			end
735
			RADIOMESH.Scale = VT(3,3,3)+(VT(1,1,1)*SONG.PlaybackLoudness/100)
736
		end
737
	else
738
		RADIOMESH.Scale = VT(3,3,3)
739
	end
740
end
741
742
--//=================================\\
743
--\\=================================//
744
745
746
747
748
749
--//====================================================\\--
750
--||			  		 END OF SCRIPT
751
--\\====================================================//--