Dive anims, satchel pack, camera fix
This commit is contained in:
parent
36c8d47b0e
commit
a7d0c55142
|
@ -0,0 +1,29 @@
|
||||||
|
|
||||||
|
---------------------
|
||||||
|
-- Your Name is Benny
|
||||||
|
---------------------
|
||||||
|
|
||||||
|
AddCSLuaFile()
|
||||||
|
|
||||||
|
ENT.Type = "anim"
|
||||||
|
ENT.Base = "base_anim"
|
||||||
|
|
||||||
|
function ENT:Initialize()
|
||||||
|
self:SetModel("models/hunter/blocks/cube025x025x025.mdl")
|
||||||
|
|
||||||
|
if SERVER then
|
||||||
|
self:PhysicsInit( SOLID_VPHYSICS )
|
||||||
|
|
||||||
|
local phy = self:GetPhysicsObject()
|
||||||
|
|
||||||
|
phy:Wake()
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function ENT:Detonate()
|
||||||
|
local effectdata = EffectData()
|
||||||
|
effectdata:SetOrigin( self:GetPos() )
|
||||||
|
util.Effect( "Explosion", effectdata, nil, true )
|
||||||
|
|
||||||
|
self:Remove()
|
||||||
|
end
|
|
@ -104,7 +104,7 @@ end
|
||||||
function SWEP:SecondaryAttack()
|
function SWEP:SecondaryAttack()
|
||||||
local p = self:GetOwner()
|
local p = self:GetOwner()
|
||||||
if self:ItemR() then
|
if self:ItemR() then
|
||||||
--self:ItemR("Attack2")
|
self:ItemR("AttackAlt")
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -21,7 +21,7 @@ function CamSpot( ang, pos )
|
||||||
local tr = {
|
local tr = {
|
||||||
start = pos,
|
start = pos,
|
||||||
endpos = pos + (f*cam_f:GetFloat()) + (r*cam_r:GetFloat()) + (u*cam_u:GetFloat()),
|
endpos = pos + (f*cam_f:GetFloat()) + (r*cam_r:GetFloat()) + (u*cam_u:GetFloat()),
|
||||||
filter = ply,
|
filter = LocalPlayer(), -- ply,
|
||||||
mins = m1,
|
mins = m1,
|
||||||
maxs = m2,
|
maxs = m2,
|
||||||
}
|
}
|
||||||
|
|
|
@ -40,6 +40,22 @@ local function hRect( x, y, w, h )
|
||||||
surface.DrawRect( x, y, w, h )
|
surface.DrawRect( x, y, w, h )
|
||||||
end
|
end
|
||||||
|
|
||||||
|
local function hTRect( x, y, w, h )
|
||||||
|
gx, gy = hXY()
|
||||||
|
x = (x or 0) + gx
|
||||||
|
y = (y or 0) + gy
|
||||||
|
|
||||||
|
surface.DrawTexturedRect( x, y, w, h )
|
||||||
|
end
|
||||||
|
|
||||||
|
local function hTrRect( x, y, w, h, d )
|
||||||
|
gx, gy = hXY()
|
||||||
|
x = (x or 0) + gx
|
||||||
|
y = (y or 0) + gy
|
||||||
|
|
||||||
|
surface.DrawTexturedRectRotated( x, y, w, h, d )
|
||||||
|
end
|
||||||
|
|
||||||
local function hORect( x, y, w, h, r )
|
local function hORect( x, y, w, h, r )
|
||||||
gx, gy = hXY()
|
gx, gy = hXY()
|
||||||
x = (x or 0) + gx
|
x = (x or 0) + gx
|
||||||
|
@ -105,6 +121,9 @@ local translate_letters = {
|
||||||
["shift"] = "speed",
|
["shift"] = "speed",
|
||||||
}
|
}
|
||||||
|
|
||||||
|
local xhair_dot = Material( "benny/hud/xhair/dotx.png", "mips smooth" )
|
||||||
|
local xhair_dot_shadow = Material( "benny/hud/xhair/dot_s.png", "mips smooth" )
|
||||||
|
|
||||||
local function commoncode( set )
|
local function commoncode( set )
|
||||||
for index, letter in ipairs( set ) do
|
for index, letter in ipairs( set ) do
|
||||||
local lettercode = input.GetKeyCode( letter )
|
local lettercode = input.GetKeyCode( letter )
|
||||||
|
@ -161,14 +180,18 @@ function GM:HUDPaint()
|
||||||
if v.GetClip2 then
|
if v.GetClip2 then
|
||||||
draw.SimpleText( v:GetClip2() .. "/" .. v.Class.ClipSize2, "HUD_16", x + 10, y + 60/2 + (4), COLOR_MAIN, TEXT_ALIGN_LEFT, TEXT_ALIGN_CENTER )
|
draw.SimpleText( v:GetClip2() .. "/" .. v.Class.ClipSize2, "HUD_16", x + 10, y + 60/2 + (4), COLOR_MAIN, TEXT_ALIGN_LEFT, TEXT_ALIGN_CENTER )
|
||||||
end
|
end
|
||||||
local drawer = ""
|
|
||||||
|
|
||||||
drawer = drawer .. v:GetClip()
|
|
||||||
drawer = drawer .. "+" .. (v:GetSlideState() == SLIDE_FORWARD and 1 or 0)
|
if v.GetClip then
|
||||||
drawer = drawer .. "/"
|
local drawer = ""
|
||||||
drawer = drawer .. v.Class.ClipSize
|
|
||||||
draw.SimpleText( drawer, "HUD_16", x + 10, y + 60/2 + (16), COLOR_MAIN, TEXT_ALIGN_LEFT, TEXT_ALIGN_CENTER )
|
drawer = drawer .. v:GetClip()
|
||||||
draw.SimpleText( v:GetFiremode(), "HUD_16", x + 120 - 10, y + 60/2 + (16), COLOR_MAIN, TEXT_ALIGN_RIGHT, TEXT_ALIGN_CENTER )
|
drawer = drawer .. "+" .. (v:GetSlideState() == SLIDE_FORWARD and 1 or 0)
|
||||||
|
drawer = drawer .. "/"
|
||||||
|
drawer = drawer .. v.Class.ClipSize
|
||||||
|
draw.SimpleText( drawer, "HUD_16", x + 10, y + 60/2 + (16), COLOR_MAIN, TEXT_ALIGN_LEFT, TEXT_ALIGN_CENTER )
|
||||||
|
draw.SimpleText( v:GetFiremode(), "HUD_16", x + 120 - 10, y + 60/2 + (16), COLOR_MAIN, TEXT_ALIGN_RIGHT, TEXT_ALIGN_CENTER )
|
||||||
|
end
|
||||||
end
|
end
|
||||||
S_Pop()
|
S_Pop()
|
||||||
end
|
end
|
||||||
|
@ -230,27 +253,17 @@ function GM:HUDPaint()
|
||||||
filter = p,
|
filter = p,
|
||||||
} ).HitPos:ToScreen()
|
} ).HitPos:ToScreen()
|
||||||
|
|
||||||
local cx, cy = trac.x, trac.y
|
for i=1, 2 do
|
||||||
S_Push( cx, cy )
|
local shadowtime = i==1
|
||||||
local size = 8
|
local traac = shadowtime and trac2 or trac
|
||||||
surface.SetDrawColor( color_white )
|
local cx, cy = traac.x, traac.y
|
||||||
hRect( -size/2, -size/2, size, size )
|
S_Push( cx, cy )
|
||||||
|
local lol = shadowtime and 0 or 255
|
||||||
local wep = handler:ItemR()
|
surface.SetDrawColor( lol, lol, lol )
|
||||||
if wep and wep.Class.FirearmHelper then
|
surface.SetMaterial( shadowtime and xhair_dot_shadow or xhair_dot )
|
||||||
local x, y = hXY( 0, 16 )
|
hTrRect( 0, 0, 64, 64, 0 )
|
||||||
draw.SimpleText( (!wep:GetLoaded() and "Unloaded") or ((wep:GetSlideState() != SLIDE_FORWARD) and "Cycle") or "", "HUD_24", x, y, COLOR_MAIN, TEXT_ALIGN_CENTER )
|
S_Pop()
|
||||||
end
|
end
|
||||||
S_Pop()
|
|
||||||
|
|
||||||
local cx, cy = trac2.x, trac2.y
|
|
||||||
S_Push( cx, cy )
|
|
||||||
local size = 4
|
|
||||||
surface.SetDrawColor( 255, 127, 127 )
|
|
||||||
hRect( -size/2, -size/2, size, size )
|
|
||||||
S_Pop()
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if stack:Size() != 0 then print("Stack unfinished.") end
|
if stack:Size() != 0 then print("Stack unfinished.") end
|
||||||
return
|
return
|
||||||
|
|
|
@ -64,6 +64,9 @@ AddItem( "base", {
|
||||||
["Attack"] = function( class, ent, handler )
|
["Attack"] = function( class, ent, handler )
|
||||||
end,
|
end,
|
||||||
|
|
||||||
|
["AttackAlt"] = function( class, ent, handler )
|
||||||
|
end,
|
||||||
|
|
||||||
["Think"] = function( class, ent, handler )
|
["Think"] = function( class, ent, handler )
|
||||||
end,
|
end,
|
||||||
|
|
||||||
|
@ -74,23 +77,23 @@ AddItem( "base", {
|
||||||
local AnimationLookup = {
|
local AnimationLookup = {
|
||||||
["fire"] = {
|
["fire"] = {
|
||||||
["handgun"] = "fire_handgun",
|
["handgun"] = "fire_handgun",
|
||||||
["rifle"] = "fire_rifle",
|
["rifle"] = "rifle_fire",
|
||||||
},
|
},
|
||||||
["reload"] = {
|
["reload"] = {
|
||||||
["handgun"] = "reload_handgun",
|
["handgun"] = "reload_handgun",
|
||||||
["rifle"] = "reload_handgun",
|
["rifle"] = "rifle_reload",
|
||||||
},
|
},
|
||||||
["reload_rack"] = {
|
["reload_rack"] = {
|
||||||
["handgun"] = "reload_handgun_rack",
|
["handgun"] = "reload_handgun_rack",
|
||||||
["rifle"] = "reload_handgun_rack",
|
["rifle"] = "rifle_reload_rack",
|
||||||
},
|
},
|
||||||
["reload_insert"] = {
|
["reload_insert"] = {
|
||||||
["handgun"] = "reload_handgun_insert",
|
["handgun"] = "reload_handgun_insert",
|
||||||
["rifle"] = "reload_handgun_insert",
|
["rifle"] = "rifle_reload_insert",
|
||||||
},
|
},
|
||||||
["deploy"] = {
|
["deploy"] = {
|
||||||
["handgun"] = "deploy_handgun",
|
["handgun"] = "deploy_handgun",
|
||||||
["rifle"] = "deploy_handgun",
|
["rifle"] = "rifle_deploy",
|
||||||
},
|
},
|
||||||
["holster"] = {
|
["holster"] = {
|
||||||
["handgun"] = "holster_handgun",
|
["handgun"] = "holster_handgun",
|
||||||
|
@ -140,6 +143,12 @@ AddItem( "base_firearm", {
|
||||||
BurstAuto = false,
|
BurstAuto = false,
|
||||||
BurstDelay = 0,
|
BurstDelay = 0,
|
||||||
|
|
||||||
|
FireSound = "benny/weapons/m16a2/01.ogg",
|
||||||
|
MagOutSound = "benny/weapons/m16a2/magout.ogg",
|
||||||
|
MagInSound = "benny/weapons/m16a2/magin.ogg",
|
||||||
|
BoltDropSound = "benny/weapons/m16a2/cock.ogg",
|
||||||
|
BoltPullSound = "benny/weapons/fnc/cock.ogg",
|
||||||
|
|
||||||
["Initialize"] = function( class, ent, handler )
|
["Initialize"] = function( class, ent, handler )
|
||||||
ITEMS["base"].Initialize( class, ent, handler )
|
ITEMS["base"].Initialize( class, ent, handler )
|
||||||
|
|
||||||
|
@ -231,29 +240,29 @@ AddItem( "base_firearm", {
|
||||||
|
|
||||||
|
|
||||||
if ent:GetDelay() > CurTime() then return end
|
if ent:GetDelay() > CurTime() then return end
|
||||||
ent:SetDelay( CurTime() + 0.5 )
|
ent:SetDelay( CurTime() + 0.6 )
|
||||||
|
|
||||||
local ply = handler:GetOwner()
|
local ply = handler:GetOwner()
|
||||||
|
|
||||||
if (ent:GetClip() > 0) and ent:GetSlideState() == SLIDE_BACK then
|
if (ent:GetClip() > 0) and ent:GetSlideState() == SLIDE_BACK then
|
||||||
handler:EmitSound( "benny/weapons/1911/slidedrop.ogg", 70, 100, 0.4, CHAN_STATIC )
|
handler:EmitSound( class.BoltDropSound, 70, 100, 0.4, CHAN_STATIC )
|
||||||
ent:SetSlideState( SLIDE_FORWARD )
|
ent:SetSlideState( SLIDE_FORWARD )
|
||||||
ent:SetClip( ent:GetClip() - 1 )
|
ent:SetClip( ent:GetClip() - 1 )
|
||||||
ply:AddVCDSequenceToGestureSlot( GESTURE_SLOT_ATTACK_AND_RELOAD, ply:LookupSequence( AnimationLookup["reload_rack"][class.HoldType] ), 0, true )
|
ply:AddVCDSequenceToGestureSlot( GESTURE_SLOT_ATTACK_AND_RELOAD, ply:LookupSequence( AnimationLookup["reload_rack"][class.HoldType] ), 0, true )
|
||||||
elseif (ent:GetClip() > 0) and ent:GetSlideState() == SLIDE_EMPTY then
|
elseif (ent:GetClip() > 0) and ent:GetSlideState() == SLIDE_EMPTY then
|
||||||
handler:EmitSound( "benny/weapons/glock/cock.ogg", 70, 100, 0.4, CHAN_STATIC )
|
handler:EmitSound( class.BoltPullSound, 70, 100, 0.4, CHAN_STATIC )
|
||||||
ent:SetSlideState( SLIDE_FORWARD )
|
ent:SetSlideState( SLIDE_FORWARD )
|
||||||
ent:SetClip( ent:GetClip() - 1 )
|
ent:SetClip( ent:GetClip() - 1 )
|
||||||
ply:AddVCDSequenceToGestureSlot( GESTURE_SLOT_ATTACK_AND_RELOAD, ply:LookupSequence( AnimationLookup["reload_rack"][class.HoldType] ), 0, true )
|
ply:AddVCDSequenceToGestureSlot( GESTURE_SLOT_ATTACK_AND_RELOAD, ply:LookupSequence( AnimationLookup["reload_rack"][class.HoldType] ), 0, true )
|
||||||
elseif ent:GetLoaded() then
|
elseif ent:GetLoaded() then
|
||||||
handler:EmitSound( "benny/weapons/1911/magout.ogg", 70, 100, 0.4, CHAN_STATIC )
|
handler:EmitSound( class.MagOutSound, 70, 100, 0.4, CHAN_STATIC )
|
||||||
ent:SetLoaded( false )
|
ent:SetLoaded( false )
|
||||||
ent:SetClip( 0 )
|
ent:SetClip( 0 )
|
||||||
ply:AddVCDSequenceToGestureSlot( GESTURE_SLOT_ATTACK_AND_RELOAD, ply:LookupSequence( AnimationLookup["reload"][class.HoldType] ), 0, true )
|
ply:AddVCDSequenceToGestureSlot( GESTURE_SLOT_ATTACK_AND_RELOAD, ply:LookupSequence( AnimationLookup["reload"][class.HoldType] ), 0, true )
|
||||||
else
|
else
|
||||||
handler:EmitSound( "benny/weapons/1911/magin.ogg", 70, 100, 0.4, CHAN_STATIC )
|
handler:EmitSound( class.MagInSound, 70, 100, 0.4, CHAN_STATIC )
|
||||||
ent:SetLoaded( true )
|
ent:SetLoaded( true )
|
||||||
ent:SetRefillTime( CurTime() + 0.25 )
|
ent:SetRefillTime( CurTime() + 0.5 )
|
||||||
ply:AddVCDSequenceToGestureSlot( GESTURE_SLOT_ATTACK_AND_RELOAD, ply:LookupSequence( AnimationLookup["reload_insert"][class.HoldType] ), 0, true )
|
ply:AddVCDSequenceToGestureSlot( GESTURE_SLOT_ATTACK_AND_RELOAD, ply:LookupSequence( AnimationLookup["reload_insert"][class.HoldType] ), 0, true )
|
||||||
end
|
end
|
||||||
end,
|
end,
|
||||||
|
@ -267,6 +276,8 @@ AddItem( "base_firearm", {
|
||||||
end,
|
end,
|
||||||
|
|
||||||
["Holster"] = function( class, ent, handler )
|
["Holster"] = function( class, ent, handler )
|
||||||
|
ent:SetRefillTime( 0 )
|
||||||
|
|
||||||
handler:EmitSound( "weapons/m4a1/m4a1_deploy.wav", 70, 125, 0.4, CHAN_STATIC )
|
handler:EmitSound( "weapons/m4a1/m4a1_deploy.wav", 70, 125, 0.4, CHAN_STATIC )
|
||||||
ent:SetDelay( CurTime() + 0.25 )
|
ent:SetDelay( CurTime() + 0.25 )
|
||||||
|
|
||||||
|
@ -354,6 +365,53 @@ AddItem( "base_firearm_ubgl", {
|
||||||
end,
|
end,
|
||||||
})
|
})
|
||||||
|
|
||||||
|
AddItem( "satchels", {
|
||||||
|
PrintName = "#Item.satchels.Name",
|
||||||
|
Description = "#Item.satchels.Description",
|
||||||
|
Category = "utility",
|
||||||
|
Base = "base",
|
||||||
|
|
||||||
|
Model = "models/benny/weapons/testgun.mdl",
|
||||||
|
HoldType = "handgun",
|
||||||
|
|
||||||
|
Vars = {
|
||||||
|
["Float"] = {
|
||||||
|
"Delay",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
["Attack"] = function( class, ent, handler )
|
||||||
|
if ent:GetDelay() > CurTime() then return end
|
||||||
|
ent:SetDelay( CurTime() + 0.5 )
|
||||||
|
|
||||||
|
if SERVER then
|
||||||
|
for k, v in ipairs( ents.FindByClass( "b-satchel" ) ) do
|
||||||
|
if v:GetOwner() == ent:GetOwner() then
|
||||||
|
v:Detonate()
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
|
||||||
|
["AttackAlt"] = function( class, ent, handler )
|
||||||
|
if ent:GetDelay() > CurTime() then return end
|
||||||
|
ent:SetDelay( CurTime() + 0.5 )
|
||||||
|
|
||||||
|
local ply = ent:GetOwner()
|
||||||
|
if SERVER then
|
||||||
|
local bomb = ents.Create("b-satchel")
|
||||||
|
bomb:SetPos( ply:EyePos() + (ply:GetAimVector() * 32) )
|
||||||
|
bomb:SetAngles( ply:EyeAngles() )
|
||||||
|
bomb:SetOwner( ply )
|
||||||
|
bomb:Spawn()
|
||||||
|
|
||||||
|
local phy = bomb:GetPhysicsObject()
|
||||||
|
phy:SetVelocity( ply:GetAimVector() * 400 )
|
||||||
|
phy:SetAngleVelocity( Vector( 0, 360, 0 ) )
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
|
||||||
AddItem( "mk23", {
|
AddItem( "mk23", {
|
||||||
PrintName = "#Item.mk23.Name",
|
PrintName = "#Item.mk23.Name",
|
||||||
Description = "#Item.mk23.Description",
|
Description = "#Item.mk23.Description",
|
||||||
|
@ -370,6 +428,10 @@ AddItem( "mk23", {
|
||||||
"benny/weapons/usp/02.ogg",
|
"benny/weapons/usp/02.ogg",
|
||||||
"benny/weapons/usp/03.ogg",
|
"benny/weapons/usp/03.ogg",
|
||||||
},
|
},
|
||||||
|
MagOutSound = "benny/weapons/1911/magout.ogg",
|
||||||
|
MagInSound = "benny/weapons/1911/magin.ogg",
|
||||||
|
BoltDropSound = "benny/weapons/1911/slidedrop.ogg",
|
||||||
|
BoltPullSound = "benny/weapons/glock/cock.ogg",
|
||||||
|
|
||||||
Accuracy = 5/60,
|
Accuracy = 5/60,
|
||||||
BurstCount = 1,
|
BurstCount = 1,
|
||||||
|
@ -383,7 +445,7 @@ AddItem( "fnc", {
|
||||||
Description = "#Item.fnc.Description",
|
Description = "#Item.fnc.Description",
|
||||||
Base = "base_firearm_ubgl",
|
Base = "base_firearm_ubgl",
|
||||||
|
|
||||||
Model = "models/weapons/w_rif_ar556.mdl",
|
Model = "models/benny/weapons/testrifle2.mdl",--"models/weapons/w_rif_ar556.mdl",
|
||||||
HoldType = "rifle",
|
HoldType = "rifle",
|
||||||
|
|
||||||
ClipSize = 30,
|
ClipSize = 30,
|
||||||
|
@ -405,7 +467,7 @@ AddItem( "m16a2", {
|
||||||
Description = "#Item.m16a2.Description",
|
Description = "#Item.m16a2.Description",
|
||||||
Base = "base_firearm",
|
Base = "base_firearm",
|
||||||
|
|
||||||
Model = "models/weapons/w_rif_m16a2.mdl",
|
Model = "models/benny/weapons/testrifle3.mdl",--"models/weapons/w_rif_m16a2.mdl",
|
||||||
HoldType = "rifle",
|
HoldType = "rifle",
|
||||||
|
|
||||||
ClipSize = 30,
|
ClipSize = 30,
|
||||||
|
@ -443,6 +505,10 @@ AddItem( "spas12", {
|
||||||
"benny/weapons/spas12/02.ogg",
|
"benny/weapons/spas12/02.ogg",
|
||||||
"benny/weapons/spas12/03.ogg",
|
"benny/weapons/spas12/03.ogg",
|
||||||
},
|
},
|
||||||
|
MagOutSound = "benny/weapons/spas12/magout-01.ogg",
|
||||||
|
MagInSound = "benny/weapons/spas12/magout-02.ogg",
|
||||||
|
BoltDropSound = "benny/weapons/spas12/magin.ogg",
|
||||||
|
BoltPullSound = "benny/weapons/glock/magin.ogg",
|
||||||
|
|
||||||
Accuracy = 8,
|
Accuracy = 8,
|
||||||
Accuracy_Add = 0.4,
|
Accuracy_Add = 0.4,
|
||||||
|
|
|
@ -14,3 +14,6 @@ L["#Item.m16a2.Description"] = "Rugged burst rifle"
|
||||||
|
|
||||||
L["#Item.spas12.Name"] = "SPAS-12"
|
L["#Item.spas12.Name"] = "SPAS-12"
|
||||||
L["#Item.spas12.Description"] = "Chrome-lined autoshotgun"
|
L["#Item.spas12.Description"] = "Chrome-lined autoshotgun"
|
||||||
|
|
||||||
|
L["#Item.satchels.Name"] = "Satchels"
|
||||||
|
L["#Item.satchels.Description"] = "Packs of bombs and a detonator"
|
|
@ -142,8 +142,10 @@ function GM:UpdateAnimation( ply, vel, maxseqgroundspeed )
|
||||||
local normal = vel:GetNormalized()
|
local normal = vel:GetNormalized()
|
||||||
local len2d = vel:Length2D()
|
local len2d = vel:Length2D()
|
||||||
normal:Rotate( Angle( 0, -ply:EyeAngles().y, 0 ) )
|
normal:Rotate( Angle( 0, -ply:EyeAngles().y, 0 ) )
|
||||||
ply:SetPoseParameter( "move_x", normal.x * (len2d/200) )
|
|
||||||
ply:SetPoseParameter( "move_y", normal.y * (len2d/200) )
|
local speed = (len2d/200)
|
||||||
|
ply:SetPoseParameter( "move_x", normal.x * speed )
|
||||||
|
ply:SetPoseParameter( "move_y", normal.y * speed )
|
||||||
|
|
||||||
ply:SetAllowFullRotation( true )
|
ply:SetAllowFullRotation( true )
|
||||||
ply:SetAngles( Angle( 0, ply:EyeAngles().y, 0 ) )
|
ply:SetAngles( Angle( 0, ply:EyeAngles().y, 0 ) )
|
||||||
|
@ -208,6 +210,10 @@ function GM:CalcMainActivity( ply, velocity )
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
|
if ply:GetInDive() then
|
||||||
|
plyTable.CalcSeqOverride = ply:LookupSequence( "dive_idle" )
|
||||||
|
end
|
||||||
|
|
||||||
plyTable.m_bWasOnGround = ply:IsOnGround()
|
plyTable.m_bWasOnGround = ply:IsOnGround()
|
||||||
plyTable.m_bWasNoclipping = ( ply:GetMoveType() == MOVETYPE_NOCLIP && !ply:InVehicle() )
|
plyTable.m_bWasNoclipping = ( ply:GetMoveType() == MOVETYPE_NOCLIP && !ply:InVehicle() )
|
||||||
|
|
||||||
|
@ -264,8 +270,8 @@ end
|
||||||
|
|
||||||
hook.Add("Move", "Benny_Move", function( ply, mv )
|
hook.Add("Move", "Benny_Move", function( ply, mv )
|
||||||
ply:SetHull( Vector( -8, -8, 0 ), Vector( 8, 8, 72 ) )
|
ply:SetHull( Vector( -8, -8, 0 ), Vector( 8, 8, 72 ) )
|
||||||
ply:SetHullDuck( Vector( -8, -8, 0 ), Vector( 8, 8, 16 ) )
|
ply:SetHullDuck( Vector( -8, -8, 0 ), Vector( 8, 8, 32 ) )
|
||||||
if mv:KeyPressed( IN_SPEED ) and !ply:GetInDive() then
|
if mv:KeyDown( IN_SPEED ) and !ply:GetInDive() and (ply:GetDivedAt() + 0.5 <= CurTime()) then
|
||||||
local cool = Vector( mv:GetForwardSpeed(), -mv:GetSideSpeed(), 0 )
|
local cool = Vector( mv:GetForwardSpeed(), -mv:GetSideSpeed(), 0 )
|
||||||
cool:Normalize()
|
cool:Normalize()
|
||||||
cool:Rotate( Angle( 0, mv:GetMoveAngles().y, 0 ) )
|
cool:Rotate( Angle( 0, mv:GetMoveAngles().y, 0 ) )
|
||||||
|
@ -275,6 +281,7 @@ hook.Add("Move", "Benny_Move", function( ply, mv )
|
||||||
ply:SetGroundEntity( NULL )
|
ply:SetGroundEntity( NULL )
|
||||||
ply:SetInDive( true )
|
ply:SetInDive( true )
|
||||||
ply:SetDivedAt( CurTime() )
|
ply:SetDivedAt( CurTime() )
|
||||||
|
ply:AddVCDSequenceToGestureSlot( GESTURE_SLOT_JUMP, ply:LookupSequence( "dive_start" ), 0, true )
|
||||||
if (SERVER) or (CLIENT and IsFirstTimePredicted()) then
|
if (SERVER) or (CLIENT and IsFirstTimePredicted()) then
|
||||||
local rfil = nil
|
local rfil = nil
|
||||||
if SERVER then
|
if SERVER then
|
||||||
|
@ -296,13 +303,15 @@ hook.Add("Move", "Benny_Move", function( ply, mv )
|
||||||
ply:EmitSound("npc/combine_soldier/gear1.wav", 70, 100, .25, nil, nil, nil, rfil)
|
ply:EmitSound("npc/combine_soldier/gear1.wav", 70, 100, .25, nil, nil, nil, rfil)
|
||||||
end
|
end
|
||||||
ply:SetInDive(false)
|
ply:SetInDive(false)
|
||||||
|
ply:SetDivedAt( CurTime() )
|
||||||
|
ply:AddVCDSequenceToGestureSlot( GESTURE_SLOT_JUMP, ply:LookupSequence( "dive_end" ), 0, true )
|
||||||
end
|
end
|
||||||
if !ply:OnGround() and ply:GetInDive() then
|
--if !ply:OnGround() and ply:GetInDive() then
|
||||||
local da = ply:GetDivedAt()
|
-- local da = ply:GetDivedAt()
|
||||||
local supertime = math.Remap( CurTime(), da + 0.5, da + 1, 300, 0 )
|
-- local supertime = math.Remap( CurTime(), da + 0.5, da + 1, 300, 0 )
|
||||||
supertime = math.Clamp( supertime, 0, 300 )
|
-- supertime = math.Clamp( supertime, 0, 300 )
|
||||||
local vel = mv:GetVelocity()
|
-- local vel = mv:GetVelocity()
|
||||||
vel.z = vel.z + supertime*FrameTime()
|
-- vel.z = vel.z + supertime*FrameTime()
|
||||||
mv:SetVelocity( vel )
|
-- mv:SetVelocity( vel )
|
||||||
end
|
--end
|
||||||
end)
|
end)
|
Loading…
Reference in New Issue