View difference between Paste ID: i6MZQPN3 and pB1me4Jb
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,Mouse,mouse,UserInputService,ContextActionService = owner
3
do
4
	print("FE Compatibility code by Mokiros")
5
	script.Parent = Player.Character
6
7
	--RemoteEvent for communicating
8
	local Event = Instance.new("RemoteEvent")
9
	Event.Name = "UserInput_Event"
10
11
	--Fake event to make stuff like Mouse.KeyDown work
12
	local function fakeEvent()
13
		local t = {_fakeEvent=true,Connect=function(self,f)self.Function=f end}
14
		t.connect = t.Connect
15
		return t
16
	end
17
18
	--Creating fake input objects with fake variables
19
    local m = {Target=nil,Hit=CFrame.new(),KeyUp=fakeEvent(),KeyDown=fakeEvent(),Button1Up=fakeEvent(),Button1Down=fakeEvent()}
20
	local UIS = {InputBegan=fakeEvent(),InputEnded=fakeEvent()}
21
	local CAS = {Actions={},BindAction=function(self,name,fun,touch,...)
22
		CAS.Actions[name] = fun and {Name=name,Function=fun,Keys={...}} or nil
23
	end}
24
	--Merged 2 functions into one by checking amount of arguments
25
	CAS.UnbindAction = CAS.BindAction
26
27
	--This function will trigger the events that have been :Connect()'ed
28
	local function te(self,ev,...)
29
		local t = m[ev]
30
		if t and t._fakeEvent and t.Function then
31
			t.Function(...)
32
		end
33
	end
34
	m.TrigEvent = te
35
	UIS.TrigEvent = te
36
37
	Event.OnServerEvent:Connect(function(plr,io)
38
	    if plr~=Player then return end
39
		if io.isMouse then
40
			m.Target = io.Target
41
			m.Hit = io.Hit
42
		else
43
			local b = io.UserInputState == Enum.UserInputState.Begin
44
			if io.UserInputType == Enum.UserInputType.MouseButton1 then
45
				return m:TrigEvent(b and "Button1Down" or "Button1Up")
46
			end
47
			for _,t in pairs(CAS.Actions) do
48
				for _,k in pairs(t.Keys) do
49
					if k==io.KeyCode then
50
						t.Function(t.Name,io.UserInputState,io)
51
					end
52
				end
53
			end
54
			m:TrigEvent(b and "KeyDown" or "KeyUp",io.KeyCode.Name:lower())
55
			UIS:TrigEvent(b and "InputBegan" or "InputEnded",io,false)
56
	    end
57
	end)
58
	Event.Parent = NLS([==[
59
	local Player = game:GetService("Players").LocalPlayer
60
	local Event = script:WaitForChild("UserInput_Event")
61
62
	local UIS = game:GetService("UserInputService")
63
	local input = function(io,a)
64
		if a then return end
65
		--Since InputObject is a client-side instance, we create and pass table instead
66
		Event:FireServer({KeyCode=io.KeyCode,UserInputType=io.UserInputType,UserInputState=io.UserInputState})
67
	end
68
	UIS.InputBegan:Connect(input)
69
	UIS.InputEnded:Connect(input)
70
71
	local Mouse = Player:GetMouse()
72
	local h,t
73
	--Give the server mouse data 30 times every second, but only if the values changed
74
	--If player is not moving their mouse, client won't fire events
75
	while wait(1/30) do
76
		if h~=Mouse.Hit or t~=Mouse.Target then
77
			h,t=Mouse.Hit,Mouse.Target
78
			Event:FireServer({isMouse=true,Target=t,Hit=h})
79
		end
80
	end]==],Player.Character)
81
	Mouse,mouse,UserInputService,ContextActionService = m,m,UIS,CAS
82
end
83
84
plr = owner
85
char = plr.Character
86
hum = char.Humanoid
87
local cam = game.Workspace.CurrentCamera
88
Camera = cam
89
local CamInterrupt = false
90
local TwoD = false
91
local TargetInfo = {nil, nil}
92
cam.CameraType = "Custom"
93
t = char.Torso
94
h = char.Head
95
ra = char["Right Arm"]
96
la = char["Left Arm"]
97
rl = char["Right Leg"]
98
ll = char["Left Leg"]
99
tors = char.Torso
100
lleg = char["Left Leg"]
101
root = char.HumanoidRootPart
102
hed = char.Head
103
rleg = char["Right Leg"]
104
rarm = char["Right Arm"]
105
larm = char["Left Arm"]
106
radian = math.rad
107
random = math.random
108
Vec3 = Vector3.new
109
Inst = Instance.new
110
cFrame = CFrame.new
111
Euler = CFrame.fromEulerAnglesXYZ
112
vt = Vector3.new
113
bc = BrickColor.new
114
br = BrickColor.random
115
it = Instance.new
116
cf = CFrame.new
117
RW, LW = Instance.new("Weld"), Instance.new("Weld")
118
RW.Name = "Right Shoulder"
119
LW.Name = "Left Shoulder"
120
LH = tors["Left Hip"]
121
RH = tors["Right Hip"]
122
player = Player
123
ch = Character
124
RSH = char.Torso["Right Shoulder"]
125
LSH = char.Torso["Left Shoulder"]
126
RSH.Parent = nil
127
LSH.Parent = nil
128
RW.Name = "Right Shoulder"
129
RW.Part0 = char.Torso
130
RW.C0 = cf(1.5, 0.5, 0)
131
RW.C1 = cf(0, 0.5, 0)
132
RW.Part1 = char["Right Arm"]
133
RW.Parent = char.Torso
134
LW.Name = "Left Shoulder"
135
LW.Part0 = char.Torso
136
LW.C0 = cf(-1.5, 0.5, 0)
137
LW.C1 = cf(0, 0.5, 0)
138
LW.Part1 = char["Left Arm"]
139
LW.Parent = char.Torso
140
Player = owner
141
Character = Player.Character
142
PlayerGui = Player.PlayerGui
143
Backpack = Player.Backpack
144
Torso = Character.Torso
145
Head = Character.Head
146
Humanoid = Character.Humanoid
147
m = Instance.new("Model", Character)
148
LeftArm = Character["Left Arm"]
149
LeftLeg = Character["Left Leg"]
150
RightArm = Character["Right Arm"]
151
RightLeg = Character["Right Leg"]
152
LS = Torso["Left Shoulder"]
153
LH = Torso["Left Hip"]
154
RS = Torso["Right Shoulder"]
155
RH = Torso["Right Hip"]
156
Face = Head.face
157
Neck = Torso.Neck
158
it = Instance.new
159
attacktype = 1
160
vt = Vector3.new
161
cf = CFrame.new
162
euler = CFrame.fromEulerAnglesXYZ
163
angles = CFrame.Angles
164
cloaked = false
165
necko = cf(0, 1, 0, -1, 0, 0, 0, 0, 1, 0, 1, 0)
166
necko2 = cf(0, -0.5, 0, -1, 0, 0, 0, 0, 1, 0, 1, 0)
167
LHC0 = cf(-1, -1, 0, 0, 0, -1, 0, 1, 0, 1, 0, 0)
168
LHC1 = cf(-0.5, 1, 0, 0, 0, -1, 0, 1, 0, 1, 0, 0)
169
RHC0 = cf(1, -1, 0, 0, 0, 1, 0, 1, 0, -1, 0, 0)
170
RHC1 = cf(0.5, 1, 0, 0, 0, 1, 0, 1, 0, -1, 0, 0)
171
RootPart = Character.HumanoidRootPart
172
RootJoint = RootPart.RootJoint
173
sine = 0
174
RootCF = euler(-1.57, 0, 3.14)
175
deb = false
176
177
local part = it("Part", char)
178
local mesh = it("SpecialMesh", part)
179
hits = it("Sound", part)
180
swing = it("Sound", part)
181
182
mesh.MeshId = "http://www.roblox.com/asset/?id=54983181"
183
mesh.TextureId = "http://www.roblox.com/asset/?id=55764440"
184
mesh.Scale = vt(2,2,2)
185
part.Size = vt(1,1,5)
186
part.CanCollide = false
187
hits.SoundId = "rbxassetid://1621591319"
188
hits.Volume = 1
189
hits.TimePosition = 1
190
swing.SoundId = "rbxassetid://4571259077"
191
swing.Volume = 2
192
193
function createHitbox()
194
local hitbox1 = Instance.new("Part", part)
195
hitbox1.Size = vt(1,1,5)
196-
hitbox1.Transparency = .7
196+
hitbox1.Transparency = 1
197
hitbox1.CanCollide = false
198
weld(part,hitbox1,part.CFrame,part.CFrame)
199
hitbox1.Touched:Connect(function(hit)
200
if hit.Parent:FindFirstChild("Humanoid") then
201
hitbox1:Destroy()
202
print("hit")
203
hits:Play()
204
vel = Instance.new("BodyVelocity", workspace)
205
angvel = Instance.new("BodyAngularVelocity", workspace)
206
if hit.Parent.Name ~= plr.Name then
207
e = hit.Parent:FindFirstChild("Torso")
208
angvel.Parent = e
209
angvel.MaxTorque = Vector3.new(99999999999999900000000000000,99999999999999999999999999999990,900000000000000000000000000)
210
vel.Parent = e
211
vel.MaxForce = Vector3.new(99999999999999900000000000000,99999999999999999999999999999990,900000000000000000000000000)
212
vel.Velocity = (char.HumanoidRootPart.CFrame.lookVector * 500)
213
for i = 1,100 do
214
wait(0.001)
215
angvel.AngularVelocity = angvel.AngularVelocity + Vector3.new(0,2,0)
216
angvel.AngularVelocity = angvel.AngularVelocity + Vector3.new(0,0,2)
217
angvel.AngularVelocity = angvel.AngularVelocity + Vector3.new(2,0,2)
218
e.CFrame = e.CFrame + vt(0,5,0)
219
end
220
wait(20)
221
vel:Destroy()
222
angvel:Destroy()
223
end	
224
end
225
end)
226
return hitbox1
227
end
228
229
function weld(part0, part1, c0, c1)
230
local weld = Instance.new("Weld", char)
231
weld.Part0 = part0
232
weld.Part1 = part1
233
weld.C0 = c0
234
weld.C1 = c1
235
return weld
236
end
237
238
function planb(part0, part1, c0)
239
local weld = Instance.new("ManualWeld", char)
240
weld.Part0 = part0
241
weld.Part1 = part1
242
weld.C0 = c0
243
return weld
244
end
245
246
planb(ra, part, cf(part.CFrame.X, part.CFrame.Y - .5, part.CFrame.Z - 2) * angles(math.rad(180),math.rad(0),math.rad(0)))
247
248
function clerp(a, b, t)
249
	local qa = {
250
		QuaternionFromCFrame(a)
251
	}
252
	local qb = {
253
		QuaternionFromCFrame(b)
254
	}
255
	local ax, ay, az = a.x, a.y, a.z
256
	local bx, by, bz = b.x, b.y, b.z
257
	local _t = 1 - t
258
	return QuaternionToCFrame(_t * ax + t * bx, _t * ay + t * by, _t * az + t * bz, QuaternionSlerp(qa, qb, t))
259
end
260
261
function QuaternionFromCFrame(cf)
262
	local mx, my, mz, m00, m01, m02, m10, m11, m12, m20, m21, m22 = cf:components()
263
	local trace = m00 + m11 + m22
264
	if trace > 0 then
265
		local s = math.sqrt(1 + trace)
266
		local recip = 0.5 / s
267
		return (m21 - m12) * recip, (m02 - m20) * recip, (m10 - m01) * recip, s * 0.5
268
	else
269
		local i = 0
270
		if m00 < m11 then
271
			i = 1
272
		end
273
		if m22 > (i == 0 and m00 or m11) then
274
			i = 2
275
		end
276
		if i == 0 then
277
			local s = math.sqrt(m00 - m11 - m22 + 1)
278
			local recip = 0.5 / s
279
			return 0.5 * s, (m10 + m01) * recip, (m20 + m02) * recip, (m21 - m12) * recip
280
		elseif i == 1 then
281
			local s = math.sqrt(m11 - m22 - m00 + 1)
282
			local recip = 0.5 / s
283
			return (m01 + m10) * recip, 0.5 * s, (m21 + m12) * recip, (m02 - m20) * recip
284
		elseif i == 2 then
285
			local s = math.sqrt(m22 - m00 - m11 + 1)
286
			local recip = 0.5 / s
287
			return (m02 + m20) * recip, (m12 + m21) * recip, 0.5 * s, (m10 - m01) * recip
288
		end
289
	end
290
end
291
292
function QuaternionToCFrame(px, py, pz, x, y, z, w)
293
	local xs, ys, zs = x + x, y + y, z + z
294
	local wx, wy, wz = w * xs, w * ys, w * zs
295
	local xx = x * xs
296
	local xy = x * ys
297
	local xz = x * zs
298
	local yy = y * ys
299
	local yz = y * zs
300
	local zz = z * zs
301
	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))
302
end
303
304
function QuaternionSlerp(a, b, t)
305
	local cosTheta = a[1] * b[1] + a[2] * b[2] + a[3] * b[3] + a[4] * b[4]
306
	local startInterp, finishInterp
307
	if cosTheta >= 1.0E-4 then
308
		if 1 - cosTheta > 1.0E-4 then
309
			local theta = math.acos(cosTheta)
310
			local invSinTheta = 1 / math.sin(theta)
311
			startInterp = math.sin((1 - t) * theta) * invSinTheta
312
			finishInterp = math.sin(t * theta) * invSinTheta
313
		else
314
			startInterp = 1 - t
315
			finishInterp = t
316
		end
317
	elseif 1 + cosTheta > 1.0E-4 then
318
		local theta = math.acos(-cosTheta)
319
		local invSinTheta = 1 / math.sin(theta)
320
		startInterp = math.sin((t - 1) * theta) * invSinTheta
321
		finishInterp = math.sin(t * theta) * invSinTheta
322
	else
323
		startInterp = t - 1
324
		finishInterp = t
325
	end
326
	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
327
end
328
329
function swait(num)
330
	if num == 0 or num == nil then
331
		game:service("RunService").Stepped:wait(0)
332
	else
333
		for i = 0, num do
334
			game:service("RunService").Stepped:wait(0)
335
		end
336
	end
337
end
338
339
for i = 0, 2, 0.1 do
340
swait()
341
RH.C0 = clerp(RH.C0, cf(1, -1 - 0.05 * math.cos(sine / 28), 0) * angles(math.rad(0), math.rad(90), math.rad(0)) * angles(math.rad(-2.5), math.rad(0), math.rad(0)), 0.4)
342
LH.C0 = clerp(LH.C0, cf(-1, -1 - 0.05 * math.cos(sine / 28), 0) * angles(math.rad(0), math.rad(-90), math.rad(0)) * angles(math.rad(-2.5), math.rad(0), math.rad(0)), 0.4)
343
RW.C0 = clerp(RW.C0, cf(1.5, 0.5 + 0.1 * math.cos(sine / 28), 0) * angles(math.rad(210), math.rad(0), math.rad(-10)), 0.4)
344
LW.C0 = clerp(LW.C0, cf(0, 0.7, -.5) * angles(math.rad(130), math.rad(50), math.rad(90)), 0.4)
345
end
346
347
Mouse.Button1Down:connect(function()
348
if not deb then
349
deb = true
350
hum.WalkSpeed = 0
351
swing:Play()
352
hitbox = createHitbox()
353
for i = 0, 2, 0.1 do
354
swait()
355
RW.C0 = clerp(RW.C0, cf(1.5, 0.5, -.5) * angles(math.rad(50), math.rad(0), math.rad(-30)), 0.4)
356
LW.C0 = clerp(LW.C0, cf(0, 0.2, -.5) * angles(math.rad(90), math.rad(90), math.rad(-30)), 0.4)
357
end
358
wait(0.3)
359
hum.WalkSpeed = 16
360
hitbox:Destroy()
361
for i = 0, 2, 0.1 do
362
swait()
363
RW.C0 = clerp(RW.C0, cf(1.5, 0.5 + 0.1 * math.cos(sine / 28), 0) * angles(math.rad(210), math.rad(0), math.rad(-10)), 0.4)
364
LW.C0 = clerp(LW.C0, cf(0, 0.7, -.5) * angles(math.rad(130), math.rad(50), math.rad(90)), 0.4)
365
end
366
deb = false
367
end
368
end)