View difference between Paste ID: N2R0ypUe and z3S1pWPn
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
--[[
153
    This was orginally developed by: DoogleFox
154
    And the remastered / edited version by Sincerate#3576
155
    Roblox:177239
156
]]
157
158
local speed = 55 --You can change this value to whatever you want.
159
local FOV = 80 --Change the Field of View for you're player, 70 is default.
160
local Stamina = 6000 --This is the amount of Stamina you will get when you execute the script.
161
--Just sayin' whatever Field of view you set you will eventually get used to.
162
163
local player = game:service("Players").LocalPlayer
164
local mouse = player:GetMouse()
165
local cam = workspace.CurrentCamera
166
local char = player.Character
167
local Torsoz = char:findFirstChild("Torso")
168
local RA = char:findFirstChild("Right Arm")
169
local LA = char:findFirstChild("Left Arm")
170
local RL = char:findFirstChild("Right Leg")
171
local LL = char:findFirstChild("Left Leg")
172
local H = char:findFirstChild("Head")
173
local Hu = char:findFirstChild("Humanoid")
174
local RS = Torsoz:findFirstChild("Right Shoulder")
175
local LS = Torsoz:findFirstChild("Left Shoulder")
176
local RH = Torsoz:findFirstChild("Right Hip")
177
local LH = Torsoz:findFirstChild("Left Hip")
178
local N = Torsoz:findFirstChild("Neck")
179
local NV = Vector3.new(0,0,0)
180
local FOV = 80
181
local Shift, Space, Sitting = false,false,false
182
local GravPoint = 0
183
local Diving = false
184
local DivingCooldown = 0
185
local DivingDir = NV
186
local DivingCF = CFrame.new(0,0,0)
187
local DivingBG, DivingBV
188
local HWallRunning = false
189
local HWRGravDrop = false
190
local HWRLastPart
191
local HWRCooldown = 0
192
local HWRDir
193
local VWallRunning = false
194
local VWRLastPart
195
local VWRCooldown = 0
196
local VWRLeft,VWRRight = false,false
197
local Sliding = false
198
local SlideCooldown = 0
199
local Standing = true
200
local Action = "Standing"
201
local animplus = true
202
local animspeed = 0
203
local animangle = 0.01
204
local Joint1, Joint2, Joint3, Joint4, Joint5
205
local sitting = false
206
207
mouse.KeyDown:connect(function(key)
208
    if key == "m" then
209
        if sitting == false then
210
            sitting = true
211
                sitting = Instance.new("Animation", char)
212
                print("Sitting!")
213
        end
214
    end
215
end)
216
217
mouse.KeyUp:connect(function(key)
218
    if key == "m" then
219
        if sitting == true then
220
            sitting = false
221
            print("Not Sitting Anymore!")
222
            sitting:Destroy()
223
        end
224
    end
225
end)
226
 
227
for i, v in pairs(char:children()) do
228
if (v.className == "LocalScript" and v.Name == "ParkourSkrip") or v.className == "NumberValue" or v.className == "BoolValue" or v.className == "Model" or v.Name == "Animate" then
229
v:remove()
230
end
231
end
232
 
233
local loadids = {112474909, 112474911, 112474909}
234
 
235
local stamina = Stamina
236
local maxstamina = Stamina
237
local defsprint = speed
238
local sprint = defsprint  
239
 
240
local pause = Instance.new("BoolValue", char)
241
pause.Name = "Pause"
242
pause.Value = false
243
local flow = Instance.new("NumberValue", char)
244
flow.Name = "Flow"
245
flow.Value = 0
246
local flowcooldown = 0
247
 
248
local m = Instance.new("Model", char)
249
m.Name = "FlowChainPartz"
250
 
251
local P = Instance.new("Part")
252
P.Name = "TrailPart"
253
P.formFactor = "Custom"
254
P.Size = Vector3.new(0.2,0.2,0.2)
255
P.Locked = true
256
P.Anchored = true
257
P.CanCollide = false
258
P.TopSurface = 0
259
P.BottomSurface = 0
260
 
261
script.Name = "ParkourSkrip"
262
 
263
local hue = 0
264
 
265
function HSV(H,S,V)
266
H = H % 360
267
local C = V * S
268
local H2 = H/60
269
local X = C * (1 - math.abs((H2 %2) -1))
270
local color = Color3.new(0,0,0)
271
if H2 <= 0 then
272
color = Color3.new(C,0,0)
273
elseif 0 <= H2 and H2 <= 1 then
274
color = Color3.new(C,X,0)
275
elseif 1 <= H2 and H2 <= 2 then
276
color = Color3.new(X,C,0)
277
elseif 2 <= H2 and H2 <= 3 then
278
color = Color3.new(0,C,X)
279
elseif 3 <= H2 and H2 <= 4 then
280
color = Color3.new(0,X,C)
281
elseif 4 <= H2 and H2 <= 5 then
282
color = Color3.new(X,0,C)
283
elseif 5 <= H2 and H2 <= 6 then
284
color = Color3.new(C,0,X)
285
end
286
local m = V - C
287
return Color3.new(color.r + m, color.g + m, color.b + m)
288
end
289
 
290
function GetWeld(weld)
291
if weld:findFirstChild("XAngle") == nil then
292
local a = Instance.new("NumberValue", weld)
293
a.Name = "XAngle"
294
end
295
if weld:findFirstChild("YAngle") == nil then
296
local a = Instance.new("NumberValue", weld)
297
a.Name = "YAngle"
298
end
299
if weld:findFirstChild("ZAngle") == nil then
300
local a = Instance.new("NumberValue", weld)
301
a.Name = "ZAngle"
302
end
303
return weld.C0.p, Vector3.new(weld.XAngle.Value, weld.YAngle.Value, weld.ZAngle.Value)
304
end
305
 
306
function SetWeld(weld, i, loops, origpos,origangle, nextpos,nextangle)
307
if weld:findFirstChild("XAngle") == nil then
308
local a = Instance.new("NumberValue", weld)
309
a.Name = "XAngle"
310
end
311
if weld:findFirstChild("YAngle") == nil then
312
local a = Instance.new("NumberValue", weld)
313
a.Name = "YAngle"
314
end
315
if weld:findFirstChild("ZAngle") == nil then
316
local a = Instance.new("NumberValue", weld)
317
a.Name = "ZAngle"
318
end
319
 
320
local tox,toy,toz = 0,0,0
321
if origangle.x > nextangle.x then
322
tox = -math.abs(origangle.x - nextangle.x) /loops*i
323
else
324
tox = math.abs(origangle.x - nextangle.x) /loops*i
325
end
326
if origangle.y > nextangle.y then
327
toy = -math.abs(origangle.y - nextangle.y) /loops*i
328
else
329
toy = math.abs(origangle.y - nextangle.y) /loops*i
330
end
331
if origangle.z > nextangle.z then
332
toz = -math.abs(origangle.z - nextangle.z) /loops*i
333
else
334
toz = math.abs(origangle.z - nextangle.z) /loops*i
335
end
336
 
337
local tox2,toy2,toz2 = 0,0,0
338
if origpos.x > nextpos.x then
339
tox2 = -math.abs(origpos.x - nextpos.x) /loops*i
340
else
341
tox2 = math.abs(origpos.x - nextpos.x) /loops*i
342
end
343
if origpos.y > nextpos.y then
344
toy2 = -math.abs(origpos.y - nextpos.y) /loops*i
345
else
346
toy2 = math.abs(origpos.y - nextpos.y) /loops*i
347
end
348
if origpos.z > nextpos.z then
349
toz2 = -math.abs(origpos.z - nextpos.z) /loops*i
350
else
351
toz2 = math.abs(origpos.z - nextpos.z) /loops*i
352
end
353
 
354
weld.XAngle.Value = origangle.x + tox
355
weld.YAngle.Value = origangle.y + toy
356
weld.ZAngle.Value = origangle.z + toz
357
weld.C0 = CFrame.new(origpos.x + tox2,origpos.y + toy2,origpos.z + toz2) * CFrame.Angles(origangle.x + tox,origangle.y + toy,origangle.z + toz)
358
end
359
 
360
function LoadTextures()
361
local pls = game:service("ContentProvider")
362
for i, v in pairs(loadids) do
363
pls:Preload("http://www.roblox.com/asset/?id="..v)
364
wait(0.04)
365
end
366
end
367
LoadTextures()
368
 
369
function CreateGui()
370
for i, v in pairs(player.PlayerGui:children()) do
371
if v.className == "ScreenGui" and v.Name == "staminaGui" then
372
v:remove()
373
end
374
end
375
local g = Instance.new("ScreenGui", player.PlayerGui)
376
g.Name = "staminaGui"
377
 
378
local c = Instance.new("Frame", g)
379
c.Visible = false
380
c.Size = UDim2.new(0,86,0,320)
381
c.BackgroundTransparency = 1
382
c.Position = UDim2.new(1,-96,0.5,-160)
383
c.Name = "Container"
384
 
385
local t = Instance.new("TextLabel", c)
386
t.Size = UDim2.new(0,0,-0.1,0)
387
t.Position = UDim2.new(0.3,0,0.5,0)
388
t.TextXAlignment = "Right"
389
t.Font = "ArialBold"
390
t.TextTransparency = 0.1
391
t.TextColor3 = Color3.new(0,0.6,0.8)
392
t.TextStrokeColor3 = Color3.new(0,0.2,0.8)
393
t.TextStrokeTransparency = 0.3
394
t.FontSize = 6
395
t.BackgroundTransparency = 1
396
local t2 = t:Clone()
397
t2.Parent = c
398
t2.Size = UDim2.new(0,0,0.1,0)
399
local l = t:Clone()
400
l.Parent = c
401
l.Size = UDim2.new(0,0,0,0)
402
l.Text = "-----"
403
 
404
local f1 = Instance.new("Frame", c)
405
f1.Name = "Backing"
406
f1.ClipsDescendants = true
407
f1.Size = UDim2.new(1,0,0,0)
408
f1.BackgroundColor3 = Color3.new(0.8,0,0)
409
f1.BackgroundTransparency = 1
410
local f1img = Instance.new("ImageLabel", f1)
411
f1img.BackgroundTransparency = 1
412
f1img.Image = "http://www.roblox.com/asset/?id=112474909"
413
f1img.Size = UDim2.new(1,0,0,c.Size.Y.Offset)
414
 
415
local f2 = Instance.new("Frame", c)
416
f2.Name = "Overlay"
417
f2.ClipsDescendants = true
418
f2.Size = UDim2.new(1,0,1,0)
419
f2.BackgroundColor3 = Color3.new(0,0,0.8)
420
f2.BackgroundTransparency = 1
421
local f2img = Instance.new("ImageLabel", f2)
422
f2img.BackgroundTransparency = 1
423
f2img.Image = "http://www.roblox.com/asset/?id=112474911"
424
f2img.Size = UDim2.new(1,0,0,c.Size.Y.Offset)
425
 
426
function Calculate()
427
local ysize = c.Size.Y.Offset
428
local per = (stamina/maxstamina) * c.Size.Y.Offset
429
local rem = (-(stamina/maxstamina-1)) * c.Size.Y.Offset
430
f1.Size = UDim2.new(1,0,0,rem)
431
f2.Size = UDim2.new(1,0,0,per)
432
f2.Position = UDim2.new(0,0,0,rem)
433
f2img.Position = UDim2.new(0,0,0,-rem)
434
t.Text = math.floor(stamina)
435
t2.Text = maxstamina
436
end
437
Calculate()
438
 
439
wait(0.01)
440
c.Visible = true
441
end
442
CreateGui()
443
 
444
player.CharacterAdded:connect(function()
445
char = player.Character
446
Torsoz = char:findFirstChild("Torso")
447
RA = char:findFirstChild("Right Arm")
448
LA = char:findFirstChild("Left Arm")
449
RL = char:findFirstChild("Right Leg")
450
LL = char:findFirstChild("Left Leg")
451
H = char:findFirstChild("Head")
452
Hu = char:findFirstChild("Humanoid")
453
RS = Torsoz:findFirstChild("Right Shoulder")
454
LS = Torsoz:findFirstChild("Left Shoulder")
455
RH = Torsoz:findFirstChild("Right Hip")
456
LH = Torsoz:findFirstChild("Left Hip")
457
N = Torsoz:findFirstChild("Neck")
458
stamina = maxstamina
459
CreateGui()
460
end)
461
 
462
function RAY(pos, dir, startpos, endpos, distleft, collidedlist)
463
collidedlist = collidedlist or {char}
464
startpos = startpos or pos
465
distleft = distleft or dir.unit * dir.magnitude
466
endpos = endpos or pos + distleft
467
local ray = Ray.new(pos, distleft)
468
local hitz,enz = workspace:FindPartOnRayWithIgnoreList(ray, collidedlist)
469
--[[
470
local p = P:Clone()
471
p.Parent = char
472
p.Size = Vector3.new(0.4,0.4,0.4)
473
p.BrickColor = BrickColor.new("Lime green")
474
p.CanCollide = false
475
p.CFrame = CFrame.new(enz)
476
p.Transparency = 0.3
477
]]
478
if hitz ~= nil then
479
if hitz.CanCollide == false then
480
table.insert(collidedlist, hitz)
481
local newpos = enz
482
local newdistleft = distleft - (dir.unit * (pos - newpos).magnitude)
483
if newdistleft ~= NV then
484
return RAY(newpos-(dir*0.01), dir, startpos, endpos, newdistleft+(dir*0.01), collidedlist)
485
end
486
end
487
end
488
 
489
return hitz, enz, ray
490
end
491
 
492
function Sit()
493
Standing = false
494
local hitz,enz = RAY(Torsoz.Position, Vector3.new(0,-4.1,0))
495
local tordir = Vector3.new(Torsoz.CFrame.lookVector.x,0,Torsoz.CFrame.lookVector.z)
496
if (hitz ~= nil and hitz.CanCollide == true) then
497
local cf = CFrame.new(enz+Vector3.new(0,1.28,0), enz+Vector3.new(0,1.28,0)+tordir) * CFrame.Angles(math.pi/6,0,0)
498
local hitz2,enz2 = RAY(enz+Vector3.new(0,2.25,0), tordir*-2.2)
499
Hu.PlatformStand = true
500
Torsoz.CFrame = cf
501
local bp = Instance.new("BodyPosition", Torsoz)
502
bp.Name = "StaminaBodyObject"
503
bp.maxForce = Vector3.new(1/0,1/0,1/0)
504
bp.D = 100
505
bp.position = cf.p
506
local bg = Instance.new("BodyGyro", Torsoz)
507
bg.Name = "StaminaBodyObject"
508
bg.maxTorque = Vector3.new(1/0,1/0,1/0)
509
bg.cframe = cf
510
bg.D = 100
511
SetWeld(Joint1,1,1, NV,NV, Vector3.new(0.34,-1,0.2), Vector3.new((math.pi/2)-(math.pi/6),0,math.pi/8))
512
SetWeld(Joint2,1,1, NV,NV, Vector3.new(-0.34,-1,0.2), Vector3.new((math.pi/2)-(math.pi/6),0,-math.pi/8))
513
 
514
if hitz2 ~= nil and hitz2.CanCollide == true then
515
Joint3.C0 = CFrame.new(0.9,0.4,-0.45) * CFrame.Angles(0,math.pi/2.13,0) * CFrame.Angles(math.pi/2.3,0,0)
516
Joint4.C0 = CFrame.new(-0.9,0.4,-0.4) * CFrame.Angles(0,-math.pi/2.05,0) * CFrame.Angles(math.pi/2.3,0,0)
517
Joint5.C0 = CFrame.new(0,1,0) * CFrame.Angles(-math.pi/8.8,0,0)
518
else
519
SetWeld(Joint3,1,1, NV,NV, Vector3.new(1.4,0.4,0.1), Vector3.new(-(math.pi/6)-(math.pi/10),0,math.pi/9))
520
SetWeld(Joint4,1,1, NV,NV, Vector3.new(-1.4,0.4,0.1), Vector3.new(-(math.pi/6)-(math.pi/10),0,-math.pi/9))
521
SetWeld(Joint5,1,1, NV,NV, Vector3.new(0,1,0), Vector3.new(-math.pi/12,0,0))
522
end
523
 
524
Sitting = true
525
Action = "Sitting"
526
end
527
end
528
 
529
 
530
function Stand()
531
Hu.PlatformStand = false
532
if Sitting == true then
533
local tordir = Torsoz.Position + (Torsoz.CFrame.lookVector*10000)
534
local cf = CFrame.new(Torsoz.Position + Vector3.new(0,1.8,0), Vector3.new(tordir.x,Torsoz.Position.y,tordir.z))
535
Torsoz.CFrame = cf
536
end
537
for i, v in pairs(Torsoz:children()) do
538
if v.Name == "StaminaBodyObject" then
539
v:remove()
540
end
541
end
542
RH.Part0 = nil
543
LH.Part0 = nil
544
RS.Part0 = nil
545
LS.Part0 = nil
546
Joint1.Part0 = Torsoz
547
Joint1.Part1 = RL
548
Joint1.C0 = CFrame.new(0.5,-1,0)
549
Joint1.C1 = CFrame.new(0,1,0)
550
Joint2.Part0 = Torsoz
551
Joint2.Part1 = LL
552
Joint2.C0 = CFrame.new(-0.5,-1,0)
553
Joint2.C1 = CFrame.new(0,1,0)
554
Joint3.Part0 = Torsoz
555
Joint3.Part1 = RA
556
Joint3.C0 = CFrame.new(1.5,0.5,0)
557
Joint3.C1 = CFrame.new(0,0.5,0)
558
Joint4.Part0 = Torsoz
559
Joint4.Part1 = LA
560
Joint4.C0 = CFrame.new(-1.5,0.5,0)
561
Joint4.C1 = CFrame.new(0,0.5,0)
562
Joint5.Part0 = Torsoz
563
Joint5.Part1 = H
564
Joint5.C0 = CFrame.new(0,1,0)
565
Joint5.C1 = CFrame.new(0,-0.5,0)
566
Sitting = false
567
Diving = false
568
Standing = true
569
Action = "Standing"
570
end
571
 
572
--------------------------------------- Dive ----------------------------------
573
 
574
function Dive()
575
stamina = stamina - 10
576
flow.Value = flow.Value + 10
577
if flow.Value > 100 then
578
flow.Value = 100
579
end
580
Standing = false
581
local dir = Vector3.new(Torsoz.CFrame.lookVector.x,0,Torsoz.CFrame.lookVector.z)
582
GravPoint = 18
583
DivingDir = dir
584
local cf = CFrame.new(Torsoz.Position, dir+Vector3.new(0,Torsoz.Position.y,0))
585
DivingCF = cf
586
DivingDir = dir
587
Hu.PlatformStand = true
588
local bv = Instance.new("BodyVelocity", Torsoz)
589
bv.Name = "StaminaBodyObject"
590
bv.maxForce = Vector3.new(1/0,1/0,1/0)
591
bv.velocity = Vector3.new(DivingDir.x*24,GravPoint,DivingDir.z*24)
592
DivingBV = bv
593
local bg = Instance.new("BodyGyro", Torsoz)
594
bg.Name = "StaminaBodyObject"
595
bg.maxTorque = Vector3.new(1/0,1/0,1/0)
596
bg.cframe = CFrame.new(Torsoz.Position, Torsoz.Position+bv.velocity) * CFrame.Angles(-math.pi/2,0,0)
597
bg.D = 100
598
DivingBG = bg
599
 
600
local joint = Joint3
601
joint.C1 = CFrame.new(0,0.5,0)
602
local joint2 = Joint4
603
joint2.C1 = CFrame.new(0,0.5,0)
604
local joint3 = Joint1
605
joint3.C1 = CFrame.new(0,1,0)
606
local joint4 = Joint2
607
joint4.C1 = CFrame.new(0,1,0)
608
 
609
local joint5 = Joint5
610
 
611
Diving = true
612
Action = "Diving"
613
 
614
for i = 1, 8 do
615
SetWeld(joint,i,8, Vector3.new(1.5,0.5,0), NV, Vector3.new(1.45,0.5,0.1), Vector3.new(-0.2,-math.pi/9,math.pi/13))
616
SetWeld(joint2,i,8, Vector3.new(-1.5,0.5,0), NV, Vector3.new(-1.45,0.5,0.1), Vector3.new(-0.2,math.pi/9,-math.pi/13))
617
SetWeld(joint3,i,8, Vector3.new(0.5,-1,0), NV, Vector3.new(0.5,-1,0.03), Vector3.new(-0.2,-math.pi/10,math.pi/14))
618
SetWeld(joint4,i,8, Vector3.new(-0.5,-1,0), NV, Vector3.new(-0.5,-1,0.03), Vector3.new(-0.2,math.pi/10,-math.pi/14))
619
SetWeld(joint5,i,8, Vector3.new(0,1,0), NV, Vector3.new(0,1,0), Vector3.new(0.45,0,0))
620
wait(0.025)
621
end
622
 
623
local counter = 0
624
while Diving == true do
625
counter = counter + 1
626
bg.Parent = Torsoz
627
local hitz, enz = RAY(Torsoz.Position, bv.velocity.unit*4.6)
628
if hitz ~= nil and hitz.CanCollide == true then
629
local hitz2, enz2 = RAY(Torsoz.Position, Vector3.new(0,-4,0))
630
if hitz2 ~= nil then
631
Diving = "Rolling"
632
Action = "DiveRolling"
633
else
634
Torsoz.CFrame = Torsoz.CFrame * CFrame.new(0,-0.3,0)
635
Torsoz.Velocity = NV
636
flow.Value = 0
637
break
638
end
639
end
640
if counter > 190 then
641
break
642
end
643
wait(0.02)
644
end
645
 
646
bv.velocity = (dir*20) + Vector3.new(0,-0.5,0)
647
 
648
local bgcf = bg.cframe
649
local haslanded = false
650
local count = 0
651
 
652
while haslanded == false do
653
bg.cframe = bgcf * CFrame.Angles(-0.3*count,0,0)
654
local hitz, enz = RAY(Torsoz.Position, ((Torsoz.CFrame*CFrame.new(0,-1,0)).p - Torsoz.CFrame.p).unit*1.6)
655
if hitz ~= nil and hitz.CanCollide == true then
656
haslanded = true
657
end
658
local hitz2, enz2 = RAY(Torsoz.Position, Vector3.new(0,-3.8,0))
659
if hitz2 == nil then
660
Torsoz.Velocity = NV
661
break
662
elseif haslanded == true then
663
local bp = Instance.new("BodyPosition", Torsoz)
664
bp.Name = "StaminaJumpFix"
665
bp.maxForce = Vector3.new(0,1/0,0)
666
bp.P = 7000
667
bp.position = enz2 + Vector3.new(0,2.8,0)
668
game:service("Debris"):AddItem(bp, 0.3)
669
else
670
bv.velocity = (dir*20) + Vector3.new(0,-(Torsoz.Position - enz2).magnitude*3,0)
671
 
672
end
673
count = count + 1
674
if count <= 6 then
675
local i = count
676
local j1,j1a = GetWeld(joint)
677
local j2,j2a = GetWeld(joint2)
678
local j3,j3a = GetWeld(joint3)
679
local j4,j4a = GetWeld(joint4)
680
local j5,j5a = GetWeld(joint5)
681
SetWeld(joint,i,6, j1,j1a, Vector3.new(1.35,0.5,-0.2), Vector3.new(math.pi/2.6,0,-math.pi/5.8))
682
SetWeld(joint2,i,6, j2,j2a, Vector3.new(-1.35,0.5,-0.2), Vector3.new(math.pi/2.6,0,math.pi/5.8))
683
SetWeld(joint3,i,6, j3,j3a, Vector3.new(0.51,0.4,-0.6), Vector3.new(-0.1,0,0.05))
684
SetWeld(joint4,i,6, j4,j4a, Vector3.new(-0.51,0.4,-0.6), Vector3.new(-0.1,0,-0.05))
685
SetWeld(joint5,i,6, j5,j5a, Vector3.new(0,1,0), Vector3.new(-0.4,0,0))
686
elseif count >= 50 then
687
break
688
end
689
wait(0.02)
690
end
691
 
692
Torsoz.Velocity = NV
693
 
694
Stand()
695
DivingCooldown = 9
696
end
697
 
698
function FindSurface(part, position)
699
local obj = part.CFrame:pointToObjectSpace(position)
700
local siz = part.Size/2
701
for i,v in pairs(Enum.NormalId:GetEnumItems()) do
702
local vec = Vector3.FromNormalId(v)
703
local wvec = part.CFrame:vectorToWorldSpace(vec)
704
local vz = (obj)/(siz*vec)
705
if (math.abs(vz.X-1) < 0.01 or math.abs(vz.Y-1) < 0.01 or math.abs(vz.Z-1) < 0.01) then
706
return wvec,vec
707
end
708
end
709
if part.className == "WedgePart" then
710
return part.CFrame:vectorToWorldSpace(Vector3.new(0,0.707,-0.707)), Vector3.new(0,0.707,-0.707)
711
end
712
end
713
--[[
714
715
716
function HWallRun(part, pos, side)
717
if (part.className == "Part" and part.Shape == Enum.PartType.Block) or part.className ~= "Part" then
718
flow.Value = flow.Value + 9
719
Standing = false
720
HWallRunning = true
721
Action = "HWallRunning"
722
GravPoint = 10
723
HWRLastPart = part
724
local dir, dirc = FindSurface(part, pos)
725
towall = -dir
726
dir = (CFrame.new(NV, dir) * CFrame.Angles(0,side,0)).lookVector
727
 
728
local bv = Instance.new("BodyVelocity", Torsoz)
729
bv.Name = "StaminaBodyObject"
730
bv.maxForce = Vector3.new(1/0,1/0,1/0)
731
bv.P = 9000
732
bv.velocity = (dir*(sprint-0.5)) + Vector3.new(0,GravPoint,0)
733
local bg = Instance.new("BodyGyro", Torsoz)
734
bg.Name = "StaminaBodyObject"
735
bg.maxTorque = Vector3.new(1/0,1/0,1/0)
736
bg.cframe = CFrame.new(Torsoz.Position+(towall*-2), Torsoz.Position) * CFrame.Angles(0,-side,-side/4.2)
737
bg.D = 100
738
 
739
local sid = Instance.new("Snap")
740
 
741
local joint1 = Joint3
742
if side == -math.pi/2 then
743
SetWeld(joint1,1,1, NV,NV, Vector3.new(1.5,0.5,0), Vector3.new(math.pi/1.3,0.1,math.pi/2.5))
744
else
745
sid = joint1
746
SetWeld(joint1,1,1, NV,NV, Vector3.new(1.4,0.6,0), Vector3.new(-math.pi/12,0,math.pi/7))
747
end
748
local j1c0 = joint1.C0
749
 
750
local joint2 = Joint4
751
if side == math.pi/2 then
752
SetWeld(joint2,1,1, NV,NV, Vector3.new(-1.5,0.5,0), Vector3.new(math.pi/1.3,-0.1,-math.pi/2.5))
753
else
754
sid = joint2
755
SetWeld(joint2,1,1, NV,NV, Vector3.new(-1.4,0.6,0), Vector3.new(-math.pi/12,0,-math.pi/7))
756
end
757
local j2c0 = joint2.C0
758
 
759
local joint3 = Joint1
760
joint3.C1 = CFrame.new(0,1,0)
761
if side == -math.pi/2 then
762
SetWeld(joint3,1,1, NV,NV, Vector3.new(0.5,-0.38,-0.3), Vector3.new(0,math.pi/2,0.14))
763
else
764
SetWeld(joint3,1,1, NV,NV, Vector3.new(0.5,-0.8,-0.2), Vector3.new(0,math.pi/2,0.2))
765
end
766
 
767
local joint4 = Joint2
768
joint4.C1 = CFrame.new(0,1,0)
769
if side == -math.pi/2 then
770
SetWeld(joint4,1,1, NV,NV, Vector3.new(-0.5,-0.8,-0.2), Vector3.new(0,0,0.2))
771
else
772
SetWeld(joint4,1,1, NV,NV, Vector3.new(-0.5,-0.38,-0.3), Vector3.new(0,0,0.14))
773
end
774
 
775
local joint5 = Joint5
776
SetWeld(joint5,1,1,NV,NV,Vector3.new(0,0.9,0),Vector3.new(0,0,side/7))
777
 
778
Torsoz.CFrame = CFrame.new(pos+(towall*-2), pos) * CFrame.Angles(0,-side,-side/2.2)
779
bg.cframe = CFrame.new(pos+(towall*-2), pos) * CFrame.Angles(0,-side,-side/2.2)
780
 
781
local aniangle = 0
782
local aniplus = true
783
local aniangle2 = 0
784
local aniplus2 = true
785
 
786
local prevpart = part
787
HWRLastPart = part
788
while HWallRunning == true do
789
 
790
if aniangle > math.pi then
791
aniplus = false
792
elseif aniangle < -math.pi then
793
aniplus = true  
794
end
795
if aniplus == true then
796
aniangle = aniangle + 0.95
797
elseif aniplus == false then
798
aniangle = aniangle - 0.95
799
end
800
 
801
if aniangle2 > math.pi then
802
aniplus2 = false
803
elseif aniangle2 < -math.pi then
804
aniplus2 = true  
805
end
806
if aniplus2 == true then
807
aniangle2 = aniangle2 + 0.23
808
elseif aniplus2 == false then
809
aniangle2 = aniangle2 - 0.23
810
end
811
 
812
Hu.PlatformStand = true
813
local hitz, enz = RAY(Torsoz.Position, Vector3.new(0,-3,0))
814
local hitz2, enz2 = RAY(Torsoz.Position, towall*3.4)
815
 
816
--- if player ends wall run on ground
817
if hitz ~= nil and hitz.CanCollide == true then
818
bg.cframe = CFrame.new(enz2+(towall*-2), enz2) * CFrame.Angles(0,-side,0)
819
local offset = (bg.cframe.p.y+enz2.y) - bg.cframe.p.y
820
Torsoz.CFrame = CFrame.new(Vector3.new(bg.cframe.p.x,offset,bg.cframe.p.z), enz2) * CFrame.Angles(0,-side,0)
821
Torsoz.Velocity = NV
822
break
823
end
824
 
825
---- if new wall found --------
826
if hitz2 ~= nil and hitz2.CanCollide == true then
827
if hitz2 ~= prevpart then
828
local direct = CFrame.new(Torsoz.Position, Torsoz.Position+dir) * CFrame.Angles(0,side,0)
829
local hitz3, enz3 = RAY(Torsoz.Position, (direct * CFrame.Angles(0,-side/2.3,0)).lookVector*4)
830
if hitz3 ~= nil then
831
Torsoz.CFrame = CFrame.new(enz2+(towall*-2), enz2) * CFrame.Angles(0,-side*1.1,-side/2.2)
832
bg.cframe = CFrame.new(enz2+(towall*-2), enz2) * CFrame.Angles(0,-side*1.1,-side/2.2)
833
dir, dirc = FindSurface(hitz2, enz2)
834
towall = -dir
835
dir = (CFrame.new(NV, dir) * CFrame.Angles(0,side,0)).lookVector
836
prevpart = hitz2
837
HWRLastPart = hitz2
838
else
839
---- if player fails to find new wall to run on
840
Torsoz.CFrame = CFrame.new(Torsoz.Position, Torsoz.Position+dir)
841
bg.cframe = CFrame.new(Torsoz.Position, Torsoz.Position+dir)
842
Torsoz.Velocity = NV
843
HWRCooldown = 5
844
break
845
end
846
end
847
--- continue to wall run
848
Torsoz.CFrame = CFrame.new(enz2+(towall*-2), enz2) * CFrame.Angles(0,-side,-side/2.2)
849
bg.cframe = CFrame.new(enz2+(towall*-2), enz2) * CFrame.Angles(0,-side,-side/2.2)
850
else
851
---- if player ends wall run at end of wall
852
Torsoz.CFrame = CFrame.new(Torsoz.Position, Torsoz.Position+dir)
853
bg.cframe = CFrame.new(Torsoz.Position, Torsoz.Position+dir)
854
Torsoz.Velocity = NV
855
HWRCooldown = 5
856
break
857
end
858
 
859
local hitz3, enz3 = RAY(Torsoz.Position, Torsoz.CFrame.lookVector*2)
860
if hitz3 ~= nil and hitz3.CanCollide == true then
861
Torsoz.CFrame = CFrame.new(Torsoz.Position, Torsoz.Position+dir)
862
bg.cframe = CFrame.new(Torsoz.Position, Torsoz.Position+dir)
863
Torsoz.Velocity = NV
864
HWRCooldown = 5
865
break
866
end
867
 
868
bv.Parent = Torsoz
869
bv.velocity = (dir*(sprint-0.5)) + Vector3.new(0,GravPoint,0)
870
bg.cframe = bg.cframe * CFrame.Angles(aniangle/80,aniangle/80,0)
871
Torsoz.CFrame = Torsoz.CFrame * CFrame.Angles(aniangle/80,aniangle/80,0)
872
local j3,j3a = GetWeld(joint3)
873
local j4,j4a = GetWeld(joint4)
874
SetWeld(joint3,1,1, j3,j3a, j3,Vector3.new(-0.2+(aniangle/4),0,0))
875
SetWeld(joint4,1,1, j4,j4a, j4,Vector3.new(-0.2+(-aniangle/4),0,0))
876
if side == math.pi/2 then
877
local j1,j1a = GetWeld(joint1)
878
SetWeld(joint1,1,1, j1,j1a, j1, Vector3.new(0,0,0.8+(aniangle2/14)))
879
else
880
local j2,j2a = GetWeld(joint2)
881
SetWeld(joint2,1,1, j2,j2a, j2, Vector3.new(0,0,-0.8-(aniangle2/14)))
882
end
883
 
884
wait(0.025)
885
if GravPoint < -100 then
886
bg.cframe = CFrame.new(enz2+(towall*-2), enz2) * CFrame.Angles(0,-side,0)
887
local offset = math.abs((bg.cframe.p.y+enz2.y) - bg.cframe.p.y)
888
Torsoz.CFrame = CFrame.new(Vector3.new(bg.cframe.p.x,offset,bg.cframe.p.z), enz2) * CFrame.Angles(0,-side,0)
889
break
890
end
891
 
892
end
893
 
894
if HWallRunning == "Jumping" then
895
HWRCooldown = 6
896
joint1.C1 = CFrame.new(0,0.5,0)
897
 
898
joint2.C1 = CFrame.new(0,0.5,0)
899
if side == -math.pi/2 then
900
joint2.C0 = CFrame.new(-1.35,0.5,0) * CFrame.Angles(0,side/2.4,-math.pi/3)
901
else
902
joint2.C0 = CFrame.new(-1.35,0.5,0) * CFrame.Angles(0,side/2.4,-math.pi/4)
903
end
904
 
905
joint3.C1 = CFrame.new(0,1,0)
906
if side == -math.pi/2 then
907
joint3.C0 = CFrame.new(0.5,-0.8,0) * CFrame.Angles(0,math.pi+(side/2.4),-math.pi/4)
908
else
909
joint3.C0 = CFrame.new(0.5,-0.8,0) * CFrame.Angles(0,(side/2.4),math.pi/4)
910
end
911
joint4.MaxVelocity = 10
912
joint4.DesiredAngle = 0
913
joint4.C1 = CFrame.new(0,1,0)
914
if side == -math.pi/2 then
915
joint4.C0 = CFrame.new(-0.5,-0.8,0) * CFrame.Angles(0,math.pi+(side/2.4),math.pi/4)
916
else
917
joint4.C0 = CFrame.new(-0.5,-0.8,0) * CFrame.Angles(0,(side/2.4),-math.pi/4)
918
end
919
 
920
local joint5 = Joint5
921
joint5.C1 = CFrame.new(0,-0.5,0) * CFrame.Angles(0,side/2.4,0)
922
joint5.C0 = CFrame.new(0,1,0)
923
 
924
local j1,j1a = GetWeld(joint1)
925
local j2,j2a = GetWeld(joint2)
926
local j3,j3a = GetWeld(joint3)
927
local j4,j4a = GetWeld(joint4)
928
local j5,j5a = GetWeld(joint5)
929
 
930
GravPoint = 26
931
local collidecount = 0
932
local bgangle = side/2
933
local count = 1
934
local dir2 = (CFrame.new(NV, dir) * CFrame.Angles(0,-side/2.4,0)).lookVector
935
HWRDir = dir2
936
bv.velocity = (dir2*(sprint+5)) + Vector3.new(0,GravPoint,0)
937
while HWallRunning == "Jumping" do
938
local hitz, enz = RAY(Torsoz.Position, Vector3.new(0,-4,0))
939
local hitz2, enz2 = RAY(Torsoz.Position, dir2*1.4)
940
if hitz ~= nil and hitz.CanCollide == true then
941
local offset = math.abs(enz.y - Torsoz.CFrame.p.y)
942
Torsoz.CFrame = CFrame.new(enz+Vector3.new(0,2.9,0), enz+Vector3.new(0,2.9,0)+dir2)
943
Torsoz.Velocity = NV
944
break
945
end
946
 
947
if hitz2 ~= nil and hitz2.CanCollide == true then
948
collidecount = collidecount + 1
949
if collidecount == 4 then
950
Torsoz.CFrame = CFrame.new(Torsoz.Position, Torsoz.Position+dir2) * CFrame.new(0,0,0.4)
951
Torsoz.Velocity = Vector3.new(0,Torsoz.Velocity.y,0)
952
HWRCooldown = 5
953
VWRCooldown = 5
954
wait(0.02)
955
break
956
end
957
end
958
 
959
if side/2 > 0 then
960
if bgangle > 0.2 then
961
bgangle = bgangle - 0.055
962
end
963
else
964
if bgangle < -0.2 then
965
bgangle = bgangle + 0.055
966
end
967
end
968
 
969
if count <= 5 then
970
if side == -math.pi/2 then
971
SetWeld(joint1,count,5, j1,j1a, Vector3.new(1.35,0.5,0), Vector3.new(0,side/2.4,math.pi/4))
972
SetWeld(joint2,count,5, j2,j2a, Vector3.new(-1.35,0.5,0), Vector3.new(0,side/2.4,-math.pi/3))
973
SetWeld(joint3,count,5, j3,j3a, Vector3.new(0.5,-0.8,0), Vector3.new(0,-side/1.7,0))
974
joint3.C0 = joint3.C0 * CFrame.Angles((-math.pi/4)/5*count,0,0)
975
SetWeld(joint4,count,5, j4,j4a, Vector3.new(-0.5,-0.8,0), Vector3.new(0,-side/1.7,0))
976
joint4.C0 = joint4.C0 * CFrame.Angles((math.pi/4)/5*count,0,0)
977
else
978
SetWeld(joint1,count,5, j1,j1a, Vector3.new(1.35,0.5,0), Vector3.new(0,side/2.4,math.pi/3))
979
SetWeld(joint2,count,5, j2,j2a, Vector3.new(-1.35,0.5,0), Vector3.new(0,side/2.4,-math.pi/4))
980
SetWeld(joint3,count,5, j3,j3a, Vector3.new(0.5,-0.8,0), Vector3.new(0,-side/1.7,0))
981
joint3.C0 = joint3.C0 * CFrame.Angles((math.pi/4)/5*count,0,0)
982
SetWeld(joint4,count,5, j4,j4a, Vector3.new(-0.5,-0.8,0), Vector3.new(0,-side/1.7,0))
983
joint4.C0 = joint4.C0 * CFrame.Angles((-math.pi/4)/5*count,0,0)
984
end
985
 
986
count = count + 1
987
end
988
 
989
bg.Parent = Torsoz
990
bg.cframe = CFrame.new(NV, dir) * CFrame.Angles(0,side/15,-bgangle)
991
bv.velocity = (dir2*(sprint+5)) + Vector3.new(0,GravPoint,0)
992
if collidecount ~= 0 then
993
bv.velocity = Vector3.new(0,bv.velocity.y,0)
994
end
995
if GravPoint < -120 then
996
break
997
end
998
wait(0.025)
999
end
1000
end
1001
 ]]
1002
1003
1004
function HWallRun(part, pos, side)
1005
if (part.className == "Part" and part.Shape == Enum.PartType.Block) or part.className ~= "Part" then
1006
flow.Value = flow.Value + 9
1007
Standing = false
1008
HWallRunning = true
1009
Action = "HWallRunning"
1010
GravPoint = 10
1011
HWRLastPart = part
1012
local dir, dirc = FindSurface(part, pos)
1013
towall = -dir
1014
dir = (CFrame.new(NV, dir) * CFrame.Angles(0,side,0)).lookVector
1015
 
1016
local bv = Instance.new("BodyVelocity", Torsoz)
1017
bv.Name = "StaminaBodyObject"
1018
bv.maxForce = Vector3.new(1/0,1/0,1/0)
1019
bv.P = 9000
1020
bv.velocity = (dir*(sprint-0.5)) + Vector3.new(0,GravPoint,0)
1021
local bg = Instance.new("BodyGyro", Torsoz)
1022
bg.Name = "StaminaBodyObject"
1023
bg.maxTorque = Vector3.new(1/0,1/0,1/0)
1024
bg.cframe = CFrame.new(Torsoz.Position+(towall*-2), Torsoz.Position) * CFrame.Angles(0,-side,-side/4.2)
1025
bg.D = 100
1026
 
1027
local sid = Instance.new("Snap")
1028
 
1029
local joint1 = Joint3
1030
if side == -math.pi/2 then
1031
SetWeld(joint1,1,1, NV,NV, Vector3.new(1.5,0.5,0), Vector3.new(math.pi/1.3,0.1,math.pi/2.5))
1032
else
1033
sid = joint1
1034
SetWeld(joint1,1,1, NV,NV, Vector3.new(1.4,0.6,0), Vector3.new(-math.pi/12,0,math.pi/7))
1035
end
1036
local j1c0 = joint1.C0
1037
 
1038
local joint2 = Joint4
1039
if side == math.pi/2 then
1040
SetWeld(joint2,1,1, NV,NV, Vector3.new(-1.5,0.5,0), Vector3.new(math.pi/1.3,-0.1,-math.pi/2.5))
1041
else
1042
sid = joint2
1043
SetWeld(joint2,1,1, NV,NV, Vector3.new(-1.4,0.6,0), Vector3.new(-math.pi/12,0,-math.pi/7))
1044
end
1045
local j2c0 = joint2.C0
1046
 
1047
local joint3 = Joint1
1048
joint3.C1 = CFrame.new(0,1,0)
1049
if side == -math.pi/2 then
1050
SetWeld(joint3,1,1, NV,NV, Vector3.new(0.5,-0.38,-0.3), Vector3.new(0,math.pi/2,0.14))
1051
else
1052
SetWeld(joint3,1,1, NV,NV, Vector3.new(0.5,-0.8,-0.2), Vector3.new(0,math.pi/2,0.2))
1053
end
1054
 
1055
local joint4 = Joint2
1056
joint4.C1 = CFrame.new(0,1,0)
1057
if side == -math.pi/2 then
1058
SetWeld(joint4,1,1, NV,NV, Vector3.new(-0.5,-0.8,-0.2), Vector3.new(0,0,0.2))
1059
else
1060
SetWeld(joint4,1,1, NV,NV, Vector3.new(-0.5,-0.38,-0.3), Vector3.new(0,0,0.14))
1061
end
1062
 
1063
local joint5 = Joint5
1064
SetWeld(joint5,1,1,NV,NV,Vector3.new(0,0.9,0),Vector3.new(0,0,side/7))
1065
 
1066
Torsoz.CFrame = CFrame.new(pos+(towall*-2), pos) * CFrame.Angles(0,-side,-side/2.2)
1067
bg.cframe = CFrame.new(pos+(towall*-2), pos) * CFrame.Angles(0,-side,-side/2.2)
1068
 
1069
local aniangle = 0
1070
local aniplus = true
1071
local aniangle2 = 0
1072
local aniplus2 = true
1073
 
1074
local prevpart = part
1075
HWRLastPart = part
1076
while HWallRunning == true do
1077
 
1078
if aniangle > math.pi then
1079
aniplus = false
1080
elseif aniangle < -math.pi then
1081
aniplus = true  
1082
end
1083
if aniplus == true then
1084
aniangle = aniangle + 0.95
1085
elseif aniplus == false then
1086
aniangle = aniangle - 0.95
1087
end
1088
 
1089
if aniangle2 > math.pi then
1090
aniplus2 = false
1091
elseif aniangle2 < -math.pi then
1092
aniplus2 = true  
1093
end
1094
if aniplus2 == true then
1095
aniangle2 = aniangle2 + 0.23
1096
elseif aniplus2 == false then
1097
aniangle2 = aniangle2 - 0.23
1098
end
1099
 
1100
Hu.PlatformStand = true
1101
local hitz, enz = RAY(Torsoz.Position, Vector3.new(0,-3,0))
1102
local hitz2, enz2 = RAY(Torsoz.Position, towall*3.4)
1103
 
1104
--- if player ends wall run on ground
1105
if hitz ~= nil and hitz.CanCollide == true then
1106
bg.cframe = CFrame.new(enz2+(towall*-2), enz2) * CFrame.Angles(0,-side,0)
1107
local offset = (bg.cframe.p.y+enz2.y) - bg.cframe.p.y
1108
Torsoz.CFrame = CFrame.new(Vector3.new(bg.cframe.p.x,offset,bg.cframe.p.z), enz2) * CFrame.Angles(0,-side,0)
1109
Torsoz.Velocity = NV
1110
break
1111
end
1112
 
1113
---- if new wall found --------
1114
if hitz2 ~= nil and hitz2.CanCollide == true then
1115
if hitz2 ~= prevpart then
1116
local direct = CFrame.new(Torsoz.Position, Torsoz.Position+dir) * CFrame.Angles(0,side,0)
1117
local hitz3, enz3 = RAY(Torsoz.Position, (direct * CFrame.Angles(0,-side/2.3,0)).lookVector*4)
1118
if hitz3 ~= nil then
1119
Torsoz.CFrame = CFrame.new(enz2+(towall*-2), enz2) * CFrame.Angles(0,-side*1.1,-side/2.2)
1120
bg.cframe = CFrame.new(enz2+(towall*-2), enz2) * CFrame.Angles(0,-side*1.1,-side/2.2)
1121
dir, dirc = FindSurface(hitz2, enz2)
1122
towall = -dir
1123
dir = (CFrame.new(NV, dir) * CFrame.Angles(0,side,0)).lookVector
1124
prevpart = hitz2
1125
HWRLastPart = hitz2
1126
else
1127
---- if player fails to find new wall to run on
1128
Torsoz.CFrame = CFrame.new(Torsoz.Position, Torsoz.Position+dir)
1129
bg.cframe = CFrame.new(Torsoz.Position, Torsoz.Position+dir)
1130
Torsoz.Velocity = NV
1131
HWRCooldown = 8
1132
break
1133
end
1134
end
1135
--- continue to wall run
1136
Torsoz.CFrame = CFrame.new(enz2+(towall*-2), enz2) * CFrame.Angles(0,-side,-side/2.2)
1137
bg.cframe = CFrame.new(enz2+(towall*-2), enz2) * CFrame.Angles(0,-side,-side/2.2)
1138
else
1139
---- if player ends wall run at end of wall
1140
Torsoz.CFrame = CFrame.new(Torsoz.Position, Torsoz.Position+dir)
1141
bg.cframe = CFrame.new(Torsoz.Position, Torsoz.Position+dir)
1142
Torsoz.Velocity = NV
1143
HWRCooldown = 8
1144
break
1145
end
1146
 
1147
local hitz3, enz3 = RAY(Torsoz.Position, Torsoz.CFrame.lookVector*2)
1148
if hitz3 ~= nil and hitz3.CanCollide == true then
1149
Torsoz.CFrame = CFrame.new(Torsoz.Position, Torsoz.Position+dir)
1150
bg.cframe = CFrame.new(Torsoz.Position, Torsoz.Position+dir)
1151
Torsoz.Velocity = NV
1152
HWRCooldown = 8
1153
break
1154
end
1155
 
1156
bv.Parent = Torsoz
1157
bv.velocity = (dir*(sprint-0.5)) + Vector3.new(0,GravPoint,0)
1158
bg.cframe = bg.cframe * CFrame.Angles(aniangle/80,aniangle/80,0)
1159
Torsoz.CFrame = Torsoz.CFrame * CFrame.Angles(aniangle/80,aniangle/80,0)
1160
local j3,j3a = GetWeld(joint3)
1161
local j4,j4a = GetWeld(joint4)
1162
SetWeld(joint3,1,1, j3,j3a, j3,Vector3.new(-0.2+(aniangle/4),0,0))
1163
SetWeld(joint4,1,1, j4,j4a, j4,Vector3.new(-0.2+(-aniangle/4),0,0))
1164
if side == math.pi/2 then
1165
local j1,j1a = GetWeld(joint1)
1166
SetWeld(joint1,1,1, j1,j1a, j1, Vector3.new(0,0,0.8+(aniangle2/14)))
1167
else
1168
local j2,j2a = GetWeld(joint2)
1169
SetWeld(joint2,1,1, j2,j2a, j2, Vector3.new(0,0,-0.8-(aniangle2/14)))
1170
end
1171
 
1172
wait(0.025)
1173
if GravPoint < -100 then
1174
bg.cframe = CFrame.new(enz2+(towall*-2), enz2) * CFrame.Angles(0,-side,0)
1175
local offset = math.abs((bg.cframe.p.y+enz2.y) - bg.cframe.p.y)
1176
Torsoz.CFrame = CFrame.new(Vector3.new(bg.cframe.p.x,offset,bg.cframe.p.z), enz2) * CFrame.Angles(0,-side,0)
1177
break
1178
end
1179
 
1180
end
1181
 
1182
if HWallRunning == "Jumping" then
1183
HWRCooldown = 6
1184
joint1.C1 = CFrame.new(0,0.5,0)
1185
 
1186
joint2.C1 = CFrame.new(0,0.5,0)
1187
if side == -math.pi/2 then
1188
joint2.C0 = CFrame.new(-1.35,0.5,0) * CFrame.Angles(0,side/2.4,-math.pi/3)
1189
else
1190
joint2.C0 = CFrame.new(-1.35,0.5,0) * CFrame.Angles(0,side/2.4,-math.pi/4)
1191
end
1192
 
1193
joint3.C1 = CFrame.new(0,1,0)
1194
if side == -math.pi/2 then
1195
joint3.C0 = CFrame.new(0.5,-0.8,0) * CFrame.Angles(0,math.pi+(side/2.4),-math.pi/4)
1196
else
1197
joint3.C0 = CFrame.new(0.5,-0.8,0) * CFrame.Angles(0,(side/2.4),math.pi/4)
1198
end
1199
joint4.C1 = CFrame.new(0,1,0)
1200
if side == -math.pi/2 then
1201
joint4.C0 = CFrame.new(-0.5,-0.8,0) * CFrame.Angles(0,math.pi+(side/2.4),math.pi/4)
1202
else
1203
joint4.C0 = CFrame.new(-0.5,-0.8,0) * CFrame.Angles(0,(side/2.4),-math.pi/4)
1204
end
1205
 
1206
local joint5 = Joint5
1207
joint5.C1 = CFrame.new(0,-0.5,0) * CFrame.Angles(0,side/2.4,0)
1208
joint5.C0 = CFrame.new(0,1,0)
1209
 
1210
local j1,j1a = GetWeld(joint1)
1211
local j2,j2a = GetWeld(joint2)
1212
local j3,j3a = GetWeld(joint3)
1213
local j4,j4a = GetWeld(joint4)
1214
local j5,j5a = GetWeld(joint5)
1215
 
1216
GravPoint = 26
1217
local collidecount = 0
1218
local bgangle = side/2
1219
local count = 1
1220
local dir2 = (CFrame.new(NV, dir) * CFrame.Angles(0,-side/2.4,0)).lookVector
1221
HWRDir = dir2
1222
bv.velocity = (dir2*(sprint+5)) + Vector3.new(0,GravPoint,0)
1223
while HWallRunning == "Jumping" do
1224
local hitz, enz = RAY(Torsoz.Position, Vector3.new(0,-4,0))
1225
local hitz2, enz2 = RAY(Torsoz.Position, dir2*1.4)
1226
if hitz ~= nil and hitz.CanCollide == true then
1227
local offset = math.abs(enz.y - Torsoz.CFrame.p.y)
1228
Torsoz.CFrame = CFrame.new(enz+Vector3.new(0,2.9,0), enz+Vector3.new(0,2.9,0)+dir2)
1229
Torsoz.Velocity = NV
1230
break
1231
end
1232
 
1233
if hitz2 ~= nil and hitz2.CanCollide == true then
1234
collidecount = collidecount + 1
1235
if collidecount == 4 then
1236
Torsoz.CFrame = CFrame.new(Torsoz.Position, Torsoz.Position+dir2) * CFrame.new(0,0,0.4)
1237
Torsoz.Velocity = Vector3.new(0,Torsoz.Velocity.y,0)
1238
HWRCooldown = 5
1239
VWRCooldown = 5
1240
wait(0.02)
1241
break
1242
end
1243
end
1244
 
1245
if side/2 > 0 then
1246
if bgangle > 0.2 then
1247
bgangle = bgangle - 0.055
1248
end
1249
else
1250
if bgangle < -0.2 then
1251
bgangle = bgangle + 0.055
1252
end
1253
end
1254
 
1255
if count <= 5 then
1256
if side == -math.pi/2 then
1257
SetWeld(joint1,count,5, j1,j1a, Vector3.new(1.35,0.5,0), Vector3.new(0,side/2.4,math.pi/4))
1258
SetWeld(joint2,count,5, j2,j2a, Vector3.new(-1.35,0.5,0), Vector3.new(0,side/2.4,-math.pi/3))
1259
SetWeld(joint3,count,5, j3,j3a, Vector3.new(0.5,-0.8,0), Vector3.new(0,-side/1.7,0))
1260
joint3.C0 = joint3.C0 * CFrame.Angles((-math.pi/4)/5*count,0,0)
1261
SetWeld(joint4,count,5, j4,j4a, Vector3.new(-0.5,-0.8,0), Vector3.new(0,-side/1.7,0))
1262
joint4.C0 = joint4.C0 * CFrame.Angles((math.pi/4)/5*count,0,0)
1263
else
1264
SetWeld(joint1,count,5, j1,j1a, Vector3.new(1.35,0.5,0), Vector3.new(0,side/2.4,math.pi/3))
1265
SetWeld(joint2,count,5, j2,j2a, Vector3.new(-1.35,0.5,0), Vector3.new(0,side/2.4,-math.pi/4))
1266
SetWeld(joint3,count,5, j3,j3a, Vector3.new(0.5,-0.8,0), Vector3.new(0,-side/1.7,0))
1267
joint3.C0 = joint3.C0 * CFrame.Angles((math.pi/4)/5*count,0,0)
1268
SetWeld(joint4,count,5, j4,j4a, Vector3.new(-0.5,-0.8,0), Vector3.new(0,-side/1.7,0))
1269
joint4.C0 = joint4.C0 * CFrame.Angles((-math.pi/4)/5*count,0,0)
1270
end
1271
 
1272
count = count + 1
1273
end
1274
 
1275
bg.Parent = Torsoz
1276
bg.cframe = CFrame.new(NV, dir) * CFrame.Angles(0,side/15,-bgangle)
1277
bv.velocity = (dir2*(sprint+5)) + Vector3.new(0,GravPoint,0)
1278
if collidecount ~= 0 then
1279
bv.velocity = Vector3.new(0,bv.velocity.y,0)
1280
end
1281
if GravPoint < -120 then
1282
break
1283
end
1284
wait(0.025)
1285
end
1286
end
1287
 
1288
Hu.PlatformStand = false
1289
bv:remove()
1290
 
1291
HWRGravDrop = false
1292
Stand()
1293
HWallRunning = false
1294
end
1295
end
1296
 
1297
function VWR(part, pos)
1298
if (part.className == "Part" and part.Shape == Enum.PartType.Block) or part.className ~= "Part" then
1299
print("VWR Activated")
1300
flow.Value = flow.Value + 9
1301
Standing = false
1302
VWallRunning = true
1303
Action = "VWallRunning"
1304
GravPoint = 0
1305
local percent = 1
1306
VWRLastPart = part
1307
local dir, dirc = FindSurface(part, pos)
1308
towall = -dir
1309
dir = (CFrame.new(NV, -dir) * CFrame.Angles(math.pi/2,0,0)).lookVector
1310
--[[
1311
local p = P:Clone()
1312
p.Parent = char
1313
p.Size = Vector3.new(2,2,2)
1314
p.BrickColor = BrickColor.new("Lime green")
1315
p.CanCollide = false
1316
p.CFrame = part.CFrame * CFrame.new(dirc*5)
1317
p.Transparency = 0.3
1318
]]
1319
local bv = Instance.new("BodyVelocity", Torsoz)
1320
bv.Name = "StaminaBodyObject"
1321
bv.maxForce = Vector3.new(1/0,1/0,1/0)
1322
bv.P = 9000
1323
bv.velocity = (dir*(sprint-1))*percent
1324
 
1325
local bg = Instance.new("BodyGyro", Torsoz)
1326
bg.Name = "StaminaBodyObject"
1327
bg.maxTorque = Vector3.new(1/0,1/0,1/0)
1328
bg.D = 100
1329
local posi = pos + (-towall*1.8)
1330
bg.cframe = CFrame.new(posi, posi+towall) * CFrame.Angles((math.pi/5),0,0)
1331
Torsoz.CFrame = CFrame.new(posi, posi+towall) * CFrame.Angles((math.pi/5),0,0)
1332
 
1333
local joint1 = Joint3
1334
SetWeld(joint1,1,1, NV,NV, Vector3.new(1.4,0.45,-0.1), Vector3.new(-math.pi/3.2,0,math.pi/8))
1335
 
1336
local joint2 = Joint4
1337
SetWeld(joint2,1,1, NV,NV, Vector3.new(-1.4,0.45,-0.1), Vector3.new(-math.pi/3.2,0,-math.pi/8))
1338
 
1339
local joint3 = Joint1
1340
SetWeld(joint3,1,1, NV,NV, Vector3.new(0.48,-0.6,-0.1), Vector3.new(0,math.pi/2,0))
1341
joint3.C1 = CFrame.new(0,0.7,0.2) * CFrame.Angles(0,math.pi/2,0)
1342
 
1343
local joint4 = Joint2
1344
SetWeld(joint4,1,1, NV,NV, Vector3.new(-0.48,-0.6,-0.1), Vector3.new(0,math.pi/2,0))
1345
joint4.C1 = CFrame.new(0,0.7,0.2) * CFrame.Angles(0,math.pi/2,0)
1346
 
1347
local joint5 = Joint5
1348
SetWeld(joint5,1,1, NV,NV, Vector3.new(0,1,0), Vector3.new(math.pi/20,0,0))
1349
 
1350
local aniangle = 0
1351
local aniplus = true
1352
 
1353
while VWallRunning == true do
1354
local hitz, enz = RAY(Torsoz.Position, towall*2.1)
1355
local hitz2, enz2 = RAY(Torsoz.Position, (CFrame.new(NV,towall)*CFrame.Angles(math.pi/2,0,0)).lookVector*2.4)
1356
 
1357
if aniangle > math.pi then
1358
aniplus = false
1359
elseif aniangle < -math.pi then
1360
aniplus = true  
1361
end
1362
if aniplus == true then
1363
aniangle = aniangle + (1.3*(percent+0.2))
1364
elseif aniplus == false then
1365
aniangle = aniangle - (1.3*(percent+0.2))
1366
end
1367
 
1368
bv.velocity = (dir*(sprint-1))*percent
1369
if VWRLeft == true then
1370
bv.velocity = bv.velocity + ((CFrame.new(NV, towall) * CFrame.Angles(0,math.pi/2,0)).lookVector * (11*percent+5))
1371
end
1372
if VWRRight == true then
1373
bv.velocity = bv.velocity - ((CFrame.new(NV, towall) * CFrame.Angles(0,math.pi/2,0)).lookVector * (11*percent+5))
1374
end
1375
 
1376
bg.cframe = CFrame.new(posi, posi+towall) * CFrame.Angles((math.pi/5),0,0) * CFrame.Angles(0,aniangle/60,0)
1377
 
1378
SetWeld(joint1,1,1, NV,NV, Vector3.new(1.4,0.45,-0.1), Vector3.new(-math.pi/3.2,aniangle/52,(math.pi/8)+(aniangle/30)))
1379
SetWeld(joint2,1,1, NV,NV, Vector3.new(-1.4,0.45,-0.1), Vector3.new(-math.pi/3.2,aniangle/52,(-math.pi/8)+(-aniangle/30)))
1380
SetWeld(joint3,1,1, NV,NV, Vector3.new(0.51,-0.75,-(aniangle/30)), Vector3.new(0,math.pi/2,(aniangle/8)-0.3))
1381
SetWeld(joint4,1,1, NV,NV, Vector3.new(-0.51,-0.75,(aniangle/30)), Vector3.new(0,math.pi/2,(-aniangle/8)-0.3))
1382
 
1383
if hitz == nil then
1384
local lv = Torsoz.Position + (Torsoz.CFrame.lookVector*100)
1385
Torsoz.CFrame = CFrame.new(Torsoz.Position, Vector3.new(lv.x,Torsoz.Position.y,lv.z))
1386
break
1387
end
1388
 
1389
if hitz2 ~= nil then
1390
percent = 0
1391
VWallRunning = "Falling"
1392
Action = "VWRFalling"
1393
GravPoint = -7
1394
break
1395
end
1396
 
1397
wait(0.02)
1398
percent = percent - 0.028
1399
if percent <= 0.15 then
1400
VWallRunning = "Falling"
1401
Action = "VWRFalling"
1402
end
1403
end
1404
 
1405
-------------------------- Falling from VWR ------------------------------
1406
if VWallRunning == "Falling" then
1407
GravPoint = GravPoint - 1
1408
local dirpos = (-towall *5) + Vector3.new(0,GravPoint,0)
1409
bv.velocity = CFrame.new(NV, dirpos).lookVector * dirpos.magnitude
1410
 
1411
local j1,j1a = GetWeld(joint1)
1412
local j2,j2a = GetWeld(joint2)
1413
local j3,j3a = GetWeld(joint3)
1414
local j4,j4a = GetWeld(joint4)
1415
local j5,j5a = GetWeld(joint5)
1416
 
1417
local counter = 0
1418
while VWallRunning == "Falling" do
1419
counter = counter + 1
1420
local hitz, enz = RAY(H.Position, Vector3.new(0,-2.4,0))
1421
 
1422
dirpos = (-towall *5) + Vector3.new(0,GravPoint,0)
1423
bv.velocity = CFrame.new(NV, dirpos).lookVector * dirpos.magnitude
1424
if VWRLeft == true then
1425
bv.velocity = bv.velocity + ((CFrame.new(NV, towall) * CFrame.Angles(0,math.pi/2,0)).lookVector * 9)
1426
end
1427
if VWRRight == true then
1428
bv.velocity = bv.velocity - ((CFrame.new(NV, towall) * CFrame.Angles(0,math.pi/2,0)).lookVector * 9)
1429
end
1430
bg.cframe = CFrame.new(NV, (-towall*30) + Vector3.new(0,GravPoint,0)) * CFrame.Angles(-math.pi/2.55,math.pi,0)
1431
 
1432
if counter <= 35 then
1433
SetWeld(joint1,counter,35, j1,j1a, Vector3.new(1.4,0.45,-0.1), Vector3.new(math.pi/9,0,math.pi/9))
1434
SetWeld(joint2,counter,35, j2,j2a, Vector3.new(-1.4,0.45,-0.1), Vector3.new(math.pi/9,0,-math.pi/9))
1435
SetWeld(joint3,counter,35, j3,j3a, Vector3.new(0.5,-0.75,0), Vector3.new(0,math.pi/2,math.pi/9))
1436
joint3.C1 = CFrame.new(0,0.7 + (0.3/35*counter),0.2 - (0.2/35*counter)) * CFrame.Angles(0,math.pi/2,0)
1437
SetWeld(joint4,counter,35, j4,j4a, Vector3.new(-0.5,-0.75,0), Vector3.new(0,math.pi/2,math.pi/9))
1438
joint4.C1 = CFrame.new(0,0.7 + (0.3/35*counter),0.2 - (0.2/35*counter)) * CFrame.Angles(0,math.pi/2,0)
1439
SetWeld(joint5,counter,35, j5,j5a, Vector3.new(0,1,0), Vector3.new(-math.pi/6,0,0))
1440
end
1441
 
1442
if hitz ~= nil then
1443
bv:remove()
1444
Torsoz.CFrame = CFrame.new(enz+Vector3.new(0,2,0), (enz+Vector3.new(0,2,0)) + ((-towall*25) + Vector3.new(0,GravPoint,0))) * CFrame.Angles(-math.pi/2.55,math.pi,0)
1445
Torsoz.Velocity = NV
1446
Torsoz.RotVelocity = NV
1447
local bp = Instance.new("BodyPosition", Torsoz)
1448
bp.maxForce = Vector3.new(1/0,1/0,1/0)
1449
bp.position = Torsoz.CFrame.p
1450
game:service("Debris"):AddItem(bp, 0.16)
1451
flow.Value = 0
1452
break
1453
end
1454
 
1455
if GravPoint > - 180 then
1456
GravPoint = GravPoint - 1.9
1457
end
1458
if counter > 200 then
1459
break
1460
end
1461
wait(0.02)
1462
end
1463
 
1464
local bp = Instance.new("BodyPosition")
1465
 
1466
local counter2 = counter
1467
local bgangleplus = 0
1468
 
1469
local j1,j1a = GetWeld(joint1)
1470
local j2,j2a = GetWeld(joint2)
1471
local j3,j3a = GetWeld(joint3)
1472
local j4,j4a = GetWeld(joint4)
1473
local j5,j5a = GetWeld(joint5)
1474
 
1475
local landingpos
1476
 
1477
while VWallRunning == "BackflipFromFall" do
1478
counter2 = counter2 + 1
1479
local hitz, enz = RAY(H.Position+Vector3.new(0,2,0), Vector3.new(0,-4.4,0))
1480
 
1481
if counter2 - counter < 13 then
1482
bgangleplus = bgangleplus - ((math.pi*1.1)/13)
1483
end
1484
if counter2 - counter <= 13 then
1485
SetWeld(joint1,counter2-counter,13, j1,j1a, Vector3.new(1.4,0.5,0.1), Vector3.new(math.pi/2,0.1,math.pi/2))
1486
SetWeld(joint2,counter2-counter,13, j2,j2a, Vector3.new(-1.4,0.5,0.1), Vector3.new(math.pi/2,-0.1,-math.pi/2))
1487
SetWeld(joint3,counter2-counter,13, j3,j3a, Vector3.new(0.52,-0.3,-0.65), Vector3.new(0,math.pi/2,0))
1488
SetWeld(joint4,counter2-counter,13, j4,j4a, Vector3.new(-0.51,-0.9,-0.05), Vector3.new(0,math.pi/2,0))
1489
SetWeld(joint5,counter2-counter,13, j5,j5a, Vector3.new(0,0.9,0), Vector3.new(-math.pi/7,0,0))
1490
end
1491
 
1492
dirpos = (-towall *5) + Vector3.new(0,GravPoint,0)
1493
--bv.velocity = Vector3.new(0,-2,0)
1494
bv.velocity = CFrame.new(NV, dirpos).lookVector * dirpos.magnitude
1495
if VWRLeft == true then
1496
bv.velocity = bv.velocity + ((CFrame.new(NV, towall) * CFrame.Angles(0,math.pi/2,0)).lookVector * 9)
1497
end
1498
if VWRRight == true then
1499
bv.velocity = bv.velocity - ((CFrame.new(NV, towall) * CFrame.Angles(0,math.pi/2,0)).lookVector * 9)
1500
end
1501
bg.cframe = CFrame.new(NV, (-towall*30) + Vector3.new(0,GravPoint,0)) * CFrame.Angles((-math.pi/2.4) + bgangleplus,math.pi,0)
1502
 
1503
if hitz ~= nil then
1504
bv:remove()
1505
landingpos = enz - (towall*1.3)
1506
if counter2 - counter > 8 then
1507
bp = Instance.new("BodyPosition", Torsoz)
1508
bp.maxForce = Vector3.new(1/0,1/0,1/0)
1509
bp.position = enz+Vector3.new(0,2.4,0) + (-towall*1)
1510
VWallRunning = "LandingFall"
1511
else
1512
Torsoz.CFrame = bg.cframe + (enz+Vector3.new(0,2.3,0))
1513
Torsoz.Velocity = NV
1514
Torsoz.RotVelocity = NV
1515
local bp = Instance.new("BodyPosition", Torsoz)
1516
bp.maxForce = Vector3.new(1/0,1/0,1/0)
1517
bp.position = Torsoz.CFrame.p
1518
game:service("Debris"):AddItem(bp, 0.14)
1519
flow.Value = 0
1520
end
1521
break
1522
end
1523
 
1524
if GravPoint > - 180 then
1525
GravPoint = GravPoint - 1.9
1526
end
1527
if counter2 > 200 then
1528
break
1529
end
1530
wait(0.02)
1531
end
1532
 
1533
if VWallRunning == "LandingFall" then
1534
print("Landing")
1535
 
1536
joint3.C1 = CFrame.new(0,1,0) * CFrame.Angles(0,math.pi/2,0)
1537
joint4.C1 = CFrame.new(0,1,0) * CFrame.Angles(0,math.pi/2,0)
1538
local j1,j1a = GetWeld(joint1)
1539
local j2,j2a = GetWeld(joint2)
1540
local j3,j3a = GetWeld(joint3)
1541
local j4,j4a = GetWeld(joint4)
1542
local j5,j5a = GetWeld(joint5)
1543
 
1544
local a
1545
local mesh
1546
if GravPoint < -70 then
1547
a = P:Clone()
1548
a.Parent = Torsoz
1549
a.Name = "AirLandingEffect"
1550
a.BrickColor = BrickColor.new("Medium stone grey")
1551
a.Transparency = 0.3
1552
a.CFrame = CFrame.new(landingpos+Vector3.new(0,0.4,0))
1553
mesh = Instance.new("SpecialMesh", a)
1554
mesh.MeshId = "http://www.roblox.com/asset/?id=20329976"
1555
mesh.Scale = Vector3.new(0,0,0)
1556
end
1557
 
1558
local bgcf = CFrame.new(NV, Vector3.new(towall.x,0,towall.z))
1559
bg.cframe = bgcf * CFrame.Angles(-math.pi/7,0,0)
1560
local bgval = math.pi/7/2
1561
 
1562
for i = 1, 6 do
1563
Hu.PlatformStand = true
1564
SetWeld(joint1,i,6, j1,j1a, Vector3.new(1.2,0.5,0.2), Vector3.new(math.pi/2,0.5,math.pi/1.2))
1565
SetWeld(joint2,i,6, j2,j2a, Vector3.new(-1.2,0.5,0.2), Vector3.new(math.pi/2,-0.5,-math.pi/1.2))
1566
SetWeld(joint3,i,6, j3,j3a, Vector3.new(0.51,-0.3,-0.8), Vector3.new(0,math.pi/2,-math.pi/7))
1567
SetWeld(joint4,i,6, j4,j4a, Vector3.new(-0.51,-0.8,-0.7), Vector3.new(0,math.pi/2,-math.pi/3))
1568
SetWeld(joint5,i,6, j5,j5a, Vector3.new(0,0.85,0), Vector3.new(-math.pi/8,0,0))
1569
bp.position = bp.position + Vector3.new(0,-0.07,0)
1570
bg.cframe = bgcf * CFrame.Angles((-bgval*2) + (bgval/6*i),0,0)
1571
Torsoz.CFrame = bg.cframe + bp.position
1572
if a ~= nil then
1573
mesh.Scale = mesh.Scale + Vector3.new(1.3,0.35,1.3)
1574
a.Transparency = 0.3 + (0.7/6*i)
1575
end
1576
wait(0.02)
1577
end
1578
if a ~= nil then
1579
a:remove()
1580
end
1581
local j1,j1a = GetWeld(joint1)
1582
local j2,j2a = GetWeld(joint2)
1583
local j3,j3a = GetWeld(joint3)
1584
local j4,j4a = GetWeld(joint4)
1585
local j5,j5a = GetWeld(joint5)
1586
for i = 1, 6 do
1587
Hu.PlatformStand = true
1588
SetWeld(joint1,i,6, j1,j1a, Vector3.new(1.5,0.5,0), Vector3.new(0,0,0))
1589
SetWeld(joint2,i,6, j2,j2a, Vector3.new(-1.5,0.5,0), Vector3.new(0,0,0))
1590
SetWeld(joint3,i,6, j3,j3a, Vector3.new(0.5,-1,0), Vector3.new(0,math.pi/2,0))
1591
SetWeld(joint4,i,6, j4,j4a, Vector3.new(-0.5,-1,0), Vector3.new(0,math.pi/2,0))
1592
SetWeld(joint5,i,6, j5,j5a, Vector3.new(0,1,0), Vector3.new(0,0,0))
1593
bp.position = bp.position + Vector3.new(0,0.1,0)
1594
bg.cframe = bgcf * CFrame.Angles(-bgval + (bgval/6*i),0,0)
1595
Torsoz.CFrame = bg.cframe + bp.position
1596
wait(0.02)
1597
end
1598
 
1599
bp:remove()
1600
end
1601
 
1602
end
1603
 
1604
bv:remove()
1605
bg:remove()
1606
VWallRunning = false
1607
Stand()
1608
end
1609
end
1610
 
1611
function Slide(pos)
1612
flow.Value = flow.Value + 6
1613
Action = "Sliding"
1614
Sliding = true
1615
GravPoint = Torsoz.Velocity.y
1616
local spd = Vector3.new(Torsoz.Velocity.x,0,Torsoz.Velocity.z).magnitude + 10
1617
local dir = Vector3.new(Torsoz.Velocity.x,0,Torsoz.Velocity.z).unit
1618
 
1619
local bv = Instance.new("BodyVelocity", Torsoz)
1620
bv.maxForce = Vector3.new(1/0,1/0,1/0)
1621
bv.velocity = dir*spd
1622
local bg = Instance.new("BodyGyro", Torsoz)
1623
bg.maxTorque = Vector3.new(1/0,1/0,1/0)
1624
bg.cframe = CFrame.new(NV, dir) * CFrame.Angles(math.pi/2.2,0.24,0)
1625
 
1626
local joint1 = Joint1
1627
local joint2 = Joint2
1628
local joint3 = Joint3
1629
local joint4 = Joint4
1630
local joint5 = Joint5
1631
local j1,j1a = GetWeld(joint1)
1632
local j2,j2a = GetWeld(joint2)
1633
 
1634
SetWeld(joint1,1,1, NV,NV, Vector3.new(j1.x,j1.y,j1.z), Vector3.new(j1a.x,math.pi/2,j1a.z))
1635
joint1.C1 = CFrame.new(0,1,0) * CFrame.Angles(0,math.pi/2,0)
1636
SetWeld(joint2,1,1, NV,NV, Vector3.new(j2.x,j2.y,j2.z), Vector3.new(j2a.x,math.pi/2,j2a.z))
1637
joint2.C1 = CFrame.new(0,1,0) * CFrame.Angles(0,math.pi/2,0)
1638
 
1639
local j1,j1a = GetWeld(joint1)
1640
local j2,j2a = GetWeld(joint2)
1641
local j3,j3a = GetWeld(joint3)
1642
local j4,j4a = GetWeld(joint4)
1643
local j5,j5a = GetWeld(joint5)
1644
 
1645
local count = 0
1646
local lastpos
1647
 
1648
while Sliding == true do
1649
count = count + 1
1650
Hu.PlatformStand = true
1651
local hitz1, enz1 = RAY(Torsoz.Position+Vector3.new(0,0.03,0), dir *2.5)
1652
local hitz2, enz2 = RAY(Torsoz.Position-Vector3.new(0,0.2,0), dir *2.5)
1653
local ghitz, genz = RAY(Torsoz.Position, Vector3.new(0,-2.6,0))
1654
bv.velocity = dir*spd + Vector3.new(0,GravPoint,0)
1655
 
1656
if count <= 5 then
1657
SetWeld(joint1,count,5, j1,j1a, Vector3.new(0.5,-0.8,-0.15), Vector3.new(0,(math.pi/2)+0.1,-0.4))
1658
SetWeld(joint2,count,5, j2,j2a, Vector3.new(-0.5,-1,0), Vector3.new(0,(math.pi/2)-0.4,0))
1659
SetWeld(joint3,count,5, j3,j3a, Vector3.new(1.5,0.5,0), Vector3.new(-0.7,-0.24,math.pi/5))
1660
SetWeld(joint4,count,5, j4,j4a, Vector3.new(-1.5,0.5,0), Vector3.new(-0.1,0,-math.pi/1.5))
1661
SetWeld(joint5,count,5, j5,j5a, Vector3.new(0,1,0), Vector3.new(-0.5,-0.2,0))
1662
end
1663
 
1664
if (hitz1 ~= nil and hitz1.CanCollide == true) or (hitz2 ~= nil and  hitz2.CanCollide == true) then
1665
bv:remove()
1666
bg:remove()
1667
Sliding = "HitObject"
1668
end
1669
if ghitz ~= nil then
1670
GravPoint = 0
1671
Torsoz.CFrame = CFrame.new(genz, genz+dir) * CFrame.Angles(math.pi/2.2,0.24,0) + Vector3.new(0,0.7,0)
1672
spd = spd - 0.95
1673
else
1674
if GravPoint > -180 then
1675
GravPoint = GravPoint - 5.6
1676
end
1677
spd = spd - 0.36
1678
end
1679
if spd < 7 then
1680
Sliding = false
1681
end
1682
wait(0.02)
1683
end
1684
 
1685
if Sliding == false then
1686
local j1,j1a = GetWeld(joint1)
1687
local j2,j2a = GetWeld(joint2)
1688
local j3,j3a = GetWeld(joint3)
1689
local j4,j4a = GetWeld(joint4)
1690
local j5,j5a = GetWeld(joint5)
1691
for i = 1, 4 do
1692
SetWeld(joint1,i,4, j1,j1a, Vector3.new(0.5,-1,0), Vector3.new(0,math.pi/2,0))
1693
SetWeld(joint2,i,4, j2,j2a, Vector3.new(-0.5,-1,0), Vector3.new(0,math.pi/2,0))
1694
SetWeld(joint3,i,4, j3,j3a, Vector3.new(1.5,0.5,0), NV)
1695
SetWeld(joint4,i,4, j4,j4a, Vector3.new(-1.5,0.5,0), NV)
1696
SetWeld(joint5,i,4, j5,j5a, Vector3.new(0,1,0), NV)
1697
local hitz, enz = RAY(Torsoz.Position, Vector3.new(0,-2.6,0))
1698
bg.cframe = CFrame.new(NV, dir) * CFrame.Angles((math.pi/2.2) - ((math.pi/2.2)/4*i),0.24 - (0.24/4*i),0)
1699
bv.velocity = dir*spd + Vector3.new(0,GravPoint,0)
1700
 
1701
if hitz ~= nil then
1702
GravPoint = 0
1703
Torsoz.CFrame = CFrame.new(enz, enz+dir) * CFrame.Angles((math.pi/2.2) - ((math.pi/2.2)/4*i),0.24 - (0.24/4*i),0) + Vector3.new(0,0.7+(1.8/4*i),0)
1704
spd = spd - 0.95
1705
else
1706
if GravPoint > -180 then
1707
GravPoint = GravPoint - 5.6
1708
end
1709
spd = spd - 0.36
1710
end
1711
wait(0.02)
1712
end
1713
local hitz, enz = RAY(Torsoz.Position, Vector3.new(0,-2.6,0))
1714
Torsoz.CFrame = CFrame.new(enz, enz+dir) + Vector3.new(0,3,0)
1715
end
1716
bv:remove()
1717
bg:remove()
1718
SlideCooldown = 10
1719
Stand()
1720
end
1721
 
1722
function KD(key)
1723
if pause.Value == false then
1724
if key == string.char(32) then
1725
Space = true
1726
 
1727
local ghitz, genz = RAY(Torsoz.Position, Vector3.new(0,-3.7,0))
1728
local hitz, enz = RAY(Torsoz.Position+Vector3.new(0,1.1,0), Torsoz.CFrame.lookVector*2.3)
1729
local righthitz, rightenz
1730
local lefthitz, leftenz
1731
 
1732
if HWallRunning == false then
1733
righthitz, rightenz = RAY(Torsoz.Position, ((Torsoz.CFrame * CFrame.new(1.5,0,-0.2)).p - Torsoz.CFrame.p).unit*3.9)
1734
lefthitz, leftenz = RAY(Torsoz.Position, ((Torsoz.CFrame * CFrame.new(-1.5,0,-0.2)).p - Torsoz.CFrame.p).unit*3.9)
1735
 
1736
elseif HWallRunning == "Jumping" then
1737
righthitz, rightenz = RAY(Torsoz.Position, ((CFrame.new(Torsoz.Position, Torsoz.Position + HWRDir) * CFrame.new(1.5,0,-0.2)).p - Torsoz.Position).unit*3.9)
1738
lefthitz, leftenz = RAY(Torsoz.Position, ((CFrame.new(Torsoz.Position, Torsoz.Position + HWRDir) * CFrame.new(-1.5,0,-0.2)).p - Torsoz.Position).unit*3.9)
1739
 
1740
end
1741
 
1742
if Action == "Standing" and Shift == true and (hitz == nil or hitz.CanCollide == false) and (righthitz == nil or righthitz.CanCollide == false) and (lefthitz == nil or lefthitz.CanCollide == false) and (ghitz == nil or ghitz.CanCollide == false) and (Torsoz.Velocity.y > 6 and Torsoz.Velocity.y < 50) and DivingCooldown <= 0 then
1743
if stamina >= 10 then
1744
--if Vector3.new(Torsoz.Velocity.x,0,Torsoz.Velocity.z).magnitude > 12 then
1745
Dive()
1746
--end
1747
end
1748
end
1749
 
1750
if hitz == nil and VWallRunning == "Falling" then
1751
VWallRunning = "BackflipFromFall"
1752
end
1753
 
1754
if Shift == true and Torsoz.Velocity.y > -50 and Diving == false and DivingCooldown <= 0 then
1755
local hitz2, enz2 = RAY(Torsoz.Position, Vector3.new(0,-3.5,0))
1756
 
1757
if hitz ~= nil then
1758
if Action == "Standing" and VWRCooldown == 0 then
1759
if hitz2 == nil or hitz2.CanCollide == false then
1760
VWR(hitz, enz)
1761
end
1762
end
1763
end
1764
 
1765
if (HWallRunning == false or (HWallRunning == "Jumping" and (HWRLastPart ~= righthitz or HWRLastPart ~= lefthitz))) and HWRCooldown == 0 and VWallRunning == false then
1766
 
1767
if (hitz == nil or HWallRunning == "Jumping") and ((righthitz ~= nil and righthitz.Parent:findFirstChild("Humanoid") == nil and righthitz.Parent.className ~= "Hat") or (lefthitz ~= nil and lefthitz.Parent:findFirstChild("Humanoid") == nil and lefthitz.Parent.className ~= "Hat")) then
1768
if hitz2 == nil or hitz2.CanCollide == false then
1769
local right = (rightenz - Torsoz.Position).magnitude
1770
local left = (leftenz - Torsoz.Position).magnitude
1771
if right < left then
1772
if HWallRunning == "Jumping" and HWRLastPart ~= righthitz then
1773
HWallRunning = false
1774
while Standing == false do
1775
wait(0.01)
1776
end
1777
print("2nd Right Activated!")
1778
HWallRun(righthitz, rightenz, -math.pi/2)
1779
else
1780
if hitz == nil then
1781
print("Right Activated")
1782
HWallRun(righthitz, rightenz, -math.pi/2)
1783
end
1784
end
1785
elseif left < right then
1786
if HWallRunning == "Jumping" and HWRLastPart ~= lefthitz then
1787
HWallRunning = false
1788
while Standing == false do
1789
wait(0.01)
1790
end
1791
print("2nd Left Activated!")
1792
HWallRun(lefthitz, leftenz, math.pi/2)
1793
else
1794
if hitz == nil then
1795
print("Left Activated")
1796
HWallRun(lefthitz, leftenz, math.pi/2)
1797
end
1798
end
1799
end
1800
end
1801
end
1802
end
1803
 
1804
end
1805
 
1806
if HWallRunning == true then
1807
HWallRunning = "Jumping"
1808
Action = "HWRJumping"
1809
end
1810
 
1811
elseif key == string.char(48) then
1812
Shift = true
1813
elseif key == string.char(50) then
1814
if Action == "Standing" then
1815
Sit()
1816
elseif HWallRunning == true then
1817
HWRGravDrop = true
1818
end
1819
elseif key == string.char(52) then
1820
if Shift == true and Action == "Standing" and SlideCooldown == 0 and Vector3.new(Torsoz.Velocity.x,0,Torsoz.Velocity.z).magnitude > 15 and Torsoz.Velocity.y > -40 then
1821
print("Sliding")
1822
Slide()
1823
end
1824
elseif key == "a" then
1825
VWRLeft = true
1826
elseif key == "d" then
1827
VWRRight = true
1828
end
1829
end
1830
end
1831
 
1832
function KU(key)
1833
if key == string.char(32) then
1834
Space = false
1835
elseif key == string.char(48) then
1836
Shift = false
1837
elseif key == string.char(50) then
1838
if Action == "Sitting" then
1839
Stand()
1840
end
1841
elseif key == string.char(52) then
1842
Sliding = false
1843
elseif key == "a" then
1844
VWRLeft = false
1845
elseif key == "d" then
1846
VWRRight = false
1847
end
1848
end
1849
 
1850
mouse.KeyDown:connect(function(key) KD(key) end)
1851
mouse.KeyUp:connect(function(key) KU(key) end)
1852
 
1853
Joint1 = Instance.new("Snap", Torsoz)
1854
GetWeld(Joint1)
1855
Joint2 = Instance.new("Snap", Torsoz)
1856
GetWeld(Joint2)
1857
Joint3 = Instance.new("Snap", Torsoz)
1858
GetWeld(Joint3)
1859
Joint4 = Instance.new("Snap", Torsoz)
1860
GetWeld(Joint4)
1861
Joint5 = Instance.new("Snap", Torsoz)
1862
GetWeld(Joint5)
1863
Stand()
1864
 
1865
local animatebg = Instance.new("BodyGyro")
1866
animatebg.D = 100
1867
local GravAction = "Idle"
1868
local PrevGravAction = GravAction
1869
 
1870
local prevrapos = (RA.CFrame * CFrame.new(0,-1,0)).p
1871
local prevlapos = (LA.CFrame * CFrame.new(0,-1,0)).p
1872
local hue = 0
1873
local recyclecount = 0
1874
local tickoffset = tick()
1875
local fadetab = {}
1876
local fadetab2 = {}
1877
local animatebgcount = 0
1878
 
1879
for i = 1, 13 do
1880
local p = P:Clone()
1881
p.Name = "Part"..i
1882
local mesh = Instance.new("SpecialMesh", p)
1883
mesh.MeshId = "http://www.roblox.com/Asset/?id=9856898"
1884
mesh.TextureId = "http://www.roblox.com/Asset/?id=48358980"
1885
table.insert(fadetab, {p, mesh})
1886
end
1887
for i = 1, 13 do
1888
local p = P:Clone()
1889
p.Name = "Part"..i
1890
local mesh = Instance.new("SpecialMesh", p)
1891
mesh.MeshId = "http://www.roblox.com/Asset/?id=9856898"
1892
mesh.TextureId = "http://www.roblox.com/Asset/?id=48358980"
1893
table.insert(fadetab2, {p, mesh})
1894
end
1895
 
1896
game:service("RunService").Stepped:connect(function()
1897
GravAction = "Idle"
1898
hue = hue + 3
1899
hue = hue % 360
1900
 
1901
------------- anim angle changing --------
1902
if animangle > math.pi then
1903
animplus = false
1904
elseif animangle < -math.pi then
1905
animplus = true  
1906
end
1907
if animplus == true then
1908
animangle = animangle + animspeed
1909
elseif animplus == false then
1910
animangle = animangle - animspeed
1911
end
1912
 
1913
local hitz, enz = RAY(Torsoz.Position, Vector3.new(0,-3.9,0))
1914
if Shift == true then
1915
Hu.WalkSpeed = sprint
1916
else
1917
Hu.WalkSpeed = 16
1918
end
1919
if (FOV >= 70 and FOV < 74) and Vector3.new(Torsoz.Velocity.x,0,Torsoz.Velocity.z).magnitude > 25 then
1920
FOV = FOV + 1
1921
elseif (FOV <= 74 and FOV > 70) and Vector3.new(Torsoz.Velocity.x,0,Torsoz.Velocity.z).magnitude < 20 then
1922
FOV = FOV - 1
1923
end
1924
if pause.Value == true then
1925
Hu.WalkSpeed = 0
1926
end
1927
if Sitting == true then
1928
local hitz2, enz2 = RAY(Torsoz.Position, Vector3.new(0,-2.2,0))
1929
Hu.PlatformStand = true
1930
if hitz2 == nil then
1931
Stand()
1932
end
1933
end
1934
if Diving == true then
1935
Hu.PlatformStand = true
1936
DivingBV.velocity = Vector3.new(DivingDir.x*(sprint+2),GravPoint,DivingDir.z*(sprint+2))
1937
DivingBG.cframe = CFrame.new(Torsoz.Position, Torsoz.Position+DivingBV.velocity) * CFrame.Angles(-math.pi/2,0,0)
1938
 
1939
if GravPoint > -180 then
1940
GravPoint = GravPoint - 2
1941
end
1942
end
1943
if DivingCooldown > 0 then
1944
DivingCooldown = DivingCooldown - 1
1945
end
1946
if HWallRunning == true then
1947
if HWRGravDrop == false then
1948
GravPoint = GravPoint - 0.4
1949
else
1950
GravPoint = GravPoint - 2
1951
end
1952
elseif HWallRunning == "Jumping" then
1953
GravPoint = GravPoint - 1.7
1954
end
1955
----------------------------- stamina ----------------------------------------
1956
if Vector3.new(Torsoz.Velocity.x, 0, Torsoz.Velocity.z).magnitude > 18 and Action == "Standing" and Shift == true then
1957
if stamina > 0 then
1958
stamina = stamina - 0.5
1959
if stamina < 0 then
1960
Shift = false
1961
stamina = 0
1962
end
1963
else
1964
Shift = false
1965
stamina = 0
1966
end
1967
if Action == "Standing" then
1968
animspeed = 0.85
1969
SetWeld(Joint1,1,1, NV,NV, Vector3.new(0.5,-1,0), Vector3.new(-animangle/4.85,0,0))
1970
SetWeld(Joint2,1,1, NV,NV, Vector3.new(-0.5,-1,0), Vector3.new(animangle/4.85,0,0))
1971
SetWeld(Joint3,1,1, NV,NV, Vector3.new(1.5,0.5,0), Vector3.new(animangle/3.5,0,0))
1972
SetWeld(Joint4,1,1, NV,NV, Vector3.new(-1.5,0.5,0), Vector3.new(-animangle/3.5,0,0))
1973
end
1974
elseif Vector3.new(Torsoz.Velocity.x, 0, Torsoz.Velocity.z).magnitude > 12 and Action ~= "Sliding" then
1975
if stamina < maxstamina then
1976
stamina = stamina + 0.5
1977
if stamina > maxstamina then
1978
stamina = maxstamina
1979
end
1980
else
1981
stamina = maxstamina
1982
end
1983
if Action == "Standing" then
1984
animspeed = 0.65
1985
SetWeld(Joint1,1,1, NV,NV, Vector3.new(0.5,-1,0), Vector3.new(-animangle/7,0,0))
1986
SetWeld(Joint2,1,1, NV,NV, Vector3.new(-0.5,-1,0), Vector3.new(animangle/7,0,0))
1987
SetWeld(Joint3,1,1, NV,NV, Vector3.new(1.5,0.5,0), Vector3.new(animangle/5,0,0))
1988
SetWeld(Joint4,1,1, NV,NV, Vector3.new(-1.5,0.5,0), Vector3.new(-animangle/5,0,0))
1989
end
1990
elseif Vector3.new(Torsoz.Velocity.x, 0, Torsoz.Velocity.z).magnitude < 2 then
1991
animspeed = 0.1
1992
if Action == "Standing" then
1993
SetWeld(Joint1,1,1, NV,NV, Vector3.new(0.5,-1,0), Vector3.new(-animangle/38,0,0))
1994
SetWeld(Joint2,1,1, NV,NV, Vector3.new(-0.5,-1,0), Vector3.new(animangle/38,0,0))
1995
SetWeld(Joint3,1,1, NV,NV, Vector3.new(1.5,0.5,0), Vector3.new(animangle/30,0,0))
1996
SetWeld(Joint4,1,1, NV,NV, Vector3.new(-1.5,0.5,0), Vector3.new(-animangle/30,0,0))
1997
end
1998
if stamina < maxstamina then
1999
if Sitting == false then
2000
stamina = stamina + 0.65
2001
else
2002
stamina = stamina + 1.02
2003
end
2004
if stamina > maxstamina then
2005
stamina = maxstamina
2006
end
2007
else
2008
stamina = maxstamina
2009
end
2010
end
2011
 
2012
if hitz == nil then
2013
if Torsoz.Velocity.y > 1 or (Torsoz.Velocity.y < -1 and Torsoz.Velocity.y > -90) then
2014
if Action == "Standing" then
2015
GravAction = "Rising"
2016
animspeed = 0.1
2017
SetWeld(Joint1,1,1, NV,NV, Vector3.new(0.5,-1,0), Vector3.new(-animangle/38,0,0))
2018
SetWeld(Joint2,1,1, NV,NV, Vector3.new(-0.5,-1,0), Vector3.new(animangle/38,0,0))
2019
SetWeld(Joint3,1,1, NV,NV, Vector3.new(1.5,0.5,0), Vector3.new((math.pi-0.2)+(animangle/30),0,0))
2020
SetWeld(Joint4,1,1, NV,NV, Vector3.new(-1.5,0.5,0), Vector3.new((math.pi-0.2)+(-animangle/30),0,0))
2021
if animatebg.Parent ~= nil then
2022
animatebg.Parent = Torsoz
2023
animatebg.maxTorque = Vector3.new(1/0,10000,1/0)
2024
local lokvec = Torsoz.CFrame.lookVector*100
2025
animatebg.cframe = CFrame.new(NV, Vector3.new(lokvec.x,0,lokvec.z))
2026
animatebg.Parent = nil
2027
end
2028
end
2029
end
2030
end
2031
 
2032
if hitz == nil then
2033
local hitz2, enz2 = RAY(Torsoz.Position, Vector3.new(0,-6,0))
2034
if hitz2 == nil then
2035
if Torsoz.Velocity.y < -90 then
2036
if Action == "Standing" then
2037
GravAction = "Falling"
2038
animspeed = 1.1
2039
animatebg.Parent = Torsoz
2040
animatebg.maxTorque = Vector3.new(1/0,10000,1/0)
2041
local lokvec = Torsoz.CFrame.lookVector*100
2042
animatebg.cframe = CFrame.new(NV, Vector3.new(lokvec.x,0,lokvec.z)) * CFrame.Angles(-math.pi/11,animangle/70,0)
2043
SetWeld(Joint1,1,1, NV,NV, Vector3.new(0.45,-0.8,0), Vector3.new((animangle/27)-0.3,0,0.18))
2044
SetWeld(Joint2,1,1, NV,NV, Vector3.new(-0.45,-0.8,0), Vector3.new((-animangle/27)-0.3,0,-0.18))
2045
SetWeld(Joint3,1,1, NV,NV, Vector3.new(1.4,0.5,0), Vector3.new((math.pi+0.2)+(animangle/26),0,0.18))
2046
SetWeld(Joint4,1,1, NV,NV, Vector3.new(-1.4,0.5,0), Vector3.new((math.pi+0.2)+(-animangle/26),0,-0.18))
2047
end
2048
end
2049
elseif hitz2.CanCollide == true then
2050
if animatebg.Parent ~= nil then
2051
animatebg.Parent = Torsoz
2052
animatebg.maxTorque = Vector3.new(1/0,10000,1/0)
2053
local lokvec = Torsoz.CFrame.lookVector*100
2054
animatebg.cframe = CFrame.new(NV, Vector3.new(lokvec.x,0,lokvec.z))
2055
animatebg.Parent = nil
2056
end
2057
end
2058
end
2059
 
2060
if GravAction == "Idle" and animatebg.Parent ~= nil then
2061
animatebg.Parent = nil
2062
end
2063
 
2064
if math.abs(tickoffset - tick()) > 0.05 then
2065
tickoffset = tick()
2066
local flowcolor = HSV(hue, 0.7,1)
2067
recyclecount = (recyclecount % #fadetab) + 1
2068
if flow.Value > 25 then
2069
local lapos = (LA.CFrame * CFrame.new(0,-1,0)).p
2070
local rapos = (RA.CFrame * CFrame.new(0,-1,0)).p
2071
local p = fadetab[recyclecount]
2072
p[1].Parent = m
2073
p[1].CFrame = CFrame.new((lapos+prevlapos)/2, lapos)
2074
p[2].Scale = Vector3.new(0.5,0.5,(lapos-prevlapos).magnitude*2)
2075
p[2].VertexColor = Vector3.new(flowcolor.r,flowcolor.g,flowcolor.b)
2076
p[1].Transparency = math.abs((flow.Value/120) - 0.8)
2077
p[1].Transparency = p[1].Transparency + (1/#fadetab)
2078
local p = fadetab2[recyclecount]
2079
p[1].Parent = m
2080
p[1].CFrame = CFrame.new((rapos+prevrapos)/2, rapos)
2081
p[2].Scale = Vector3.new(0.5,0.5,(rapos-prevrapos).magnitude*2)
2082
p[2].VertexColor = Vector3.new(flowcolor.r,flowcolor.g,flowcolor.b)
2083
p[1].Transparency = math.abs((flow.Value/120) - 0.8)
2084
p[1].Transparency = p[1].Transparency + (1/#fadetab)
2085
end
2086
 
2087
for i, v in pairs(fadetab) do
2088
if v[1].Transparency < 0.9 then
2089
v[1].Transparency = v[1].Transparency + (1/#fadetab)
2090
fadetab2[i][1].Transparency = fadetab2[i][1].Transparency + (1/#fadetab)
2091
elseif v[1].Transparency ~= 1 then
2092
v[1].Transparency = 1
2093
v[1].Position = Vector3.new(50000,0,0)
2094
fadetab2[i][1].Transparency = 1
2095
fadetab2[i][1].Position = Vector3.new(50000,0,0)
2096
end
2097
end
2098
 
2099
prevrapos = (RA.CFrame * CFrame.new(0,-1,0)).p
2100
prevlapos = (LA.CFrame * CFrame.new(0,-1,0)).p
2101
end
2102
 
2103
if flow.Value > 140 then
2104
if char.Parent ~= nil then
2105
char:remove()
2106
end
2107
end
2108
 
2109
if flowcooldown > 0 then
2110
flowcooldown = flowcooldown - 1
2111
end
2112
if HWRCooldown > 0 then
2113
HWRCooldown = HWRCooldown - 1
2114
end
2115
if VWRCooldown > 0 then
2116
if hitz ~= nil and VWRCooldown > 0 then
2117
VWRCooldown = VWRCooldown - 1
2118
end
2119
end
2120
if SlideCooldown > 0 then
2121
SlideCooldown = SlideCooldown - 1
2122
end
2123
 
2124
if Action == "HWallRunning" or Action == "VWallRunning" then
2125
flow.Value = flow.Value + 0.24
2126
if flow.Value > 100 then
2127
flow.Value = 100
2128
end
2129
flowcooldown = 40
2130
elseif Action == "Diving" then
2131
flowcooldown = 30
2132
elseif Action == "Sliding" then
2133
flowcooldown = 15
2134
elseif Action == "Standing" or Action == "Sitting" then
2135
if flow.Value > 0 and flowcooldown <= 0 then
2136
flow.Value = flow.Value - 0.37
2137
if flow.Value < 0 then
2138
flow.Value = 0
2139
end
2140
end
2141
end
2142
 
2143
cam.FieldOfView = FOV
2144
prevanimbgcount = animatebgcount
2145
sprint = defsprint + ((flow.Value/100)*2.4)
2146
PrevGravAction = GravAction
2147
Calculate()
2148
end)