Fix some animations

This commit is contained in:
DPT.Velaron 2018-12-10 15:50:54 +02:00
parent 618e379ebf
commit 184d878a4d
6 changed files with 194 additions and 146 deletions

View File

@ -607,17 +607,24 @@ void EV_TFC_Axe(event_args_t *args)
gEngfuncs.pEventAPI->EV_PushPMStates();
gEngfuncs.pEventAPI->EV_SetSolidPlayers(idx - 1);
gEngfuncs.pEventAPI->EV_SetTraceHull(2);
gEngfuncs.pEventAPI->EV_PlayerTrace(vecSrc, vecEnd, PM_STUDIO_BOX, -1, &tr);
gEngfuncs.pEventAPI->EV_PlayerTrace(vecSrc, vecEnd, PM_NORMAL, -1, &tr);
if (tr.fraction >= 1.0)
{
gEngfuncs.pEventAPI->EV_SetTraceHull(1);
gEngfuncs.pEventAPI->EV_PlayerTrace(vecSrc, vecEnd, PM_STUDIO_BOX, -1, &tr2);
gEngfuncs.pEventAPI->EV_PlayerTrace(vecSrc, vecEnd, PM_NORMAL, -1, &tr2);
if(tr2.fraction < 1.0)
tr = tr2;
}
gEngfuncs.pEventAPI->EV_PopPMStates();
gp_tr_decal[idx-1] = 0;
if(tr.fraction >= 1.0)
{
if (!EV_IsLocal(idx))
{
EV_TFC_PlayAxeSound(idx, classid, origin, 0, 0.0);
return;
}
switch(classid)
{
default:
@ -1070,15 +1077,15 @@ void EV_TFC_BloodDrips(float *vecOrigin, signed int iDamage, long double height)
}
}
enum tfc_assault_e
enum tf_ac_e
{
ASSAULT_IDLE = 0,
ASSAULT_IDLE2,
ASSAULT_SPINUP,
ASSAULT_SPINDOWN,
ASSAULT_FIRE,
ASSAULT_DRAW,
ASSAULT_HOLSTER
AC_IDLE = 0,
AC_IDLE2,
AC_SPINUP,
AC_SPINDOWN,
AC_FIRE,
AC_DRAW,
AC_HOLSTER
};
void EV_TFC_Assault_WindUp(event_args_t *args)
@ -1092,7 +1099,7 @@ void EV_TFC_Assault_WindUp(event_args_t *args)
gEngfuncs.GetClientTime();
g_flSpinUpTime[idx - 1] = 0.0 + 3.5;
if (EV_IsLocal(idx))
gEngfuncs.pEventAPI->EV_WeaponAnimation(ASSAULT_SPINUP, 2);
gEngfuncs.pEventAPI->EV_WeaponAnimation(AC_SPINUP, 2);
g_bACSpinning[idx - 1] = 0;
gEngfuncs.pEventAPI->EV_StopSound(idx, CHAN_STATIC, "weapons/asscan2.wav");
gEngfuncs.pEventAPI->EV_StopSound(idx, CHAN_STATIC, "weapons/asscan4.wav");
@ -1112,10 +1119,10 @@ void EV_TFC_Assault_WindDown(event_args_t *args)
gEngfuncs.GetClientTime();
g_flSpinDownTime[idx - 1] = 0.0 + 3.0;
if(EV_IsLocal(idx))
gEngfuncs.pEventAPI->EV_WeaponAnimation(ASSAULT_SPINDOWN, 2);
gEngfuncs.pEventAPI->EV_WeaponAnimation(AC_SPINDOWN, 2);
}
else if(EV_IsLocal(idx))
gEngfuncs.pEventAPI->EV_WeaponAnimation(ASSAULT_SPINDOWN, 2);
gEngfuncs.pEventAPI->EV_WeaponAnimation(AC_SPINDOWN, 2);
g_bACSpinning[idx - 1] = 0;
gEngfuncs.pEventAPI->EV_StopSound(idx, CHAN_STATIC, "weapons/asscan2.wav");
@ -1160,7 +1167,7 @@ void EV_TFC_Assault_Fire(event_args_t *args)
if(EV_IsLocal(idx))
{
EV_MuzzleFlash();
gEngfuncs.pEventAPI->EV_WeaponAnimation(ASSAULT_FIRE, 2);
gEngfuncs.pEventAPI->EV_WeaponAnimation(AC_FIRE, 2);
}
g_bACSpinning[idx - 1] = 0;
if(oddammo)
@ -1182,7 +1189,7 @@ void EV_TFC_Assault_Spin(event_args_t *args)
idx = args->entindex;
if (EV_IsLocal(idx))
gEngfuncs.pEventAPI->EV_WeaponAnimation(ASSAULT_FIRE, 2);
gEngfuncs.pEventAPI->EV_WeaponAnimation(AC_FIRE, 2);
g_bACSpinning[idx - 1] = 1;
}
@ -1584,20 +1591,20 @@ void EV_TFC_NailgrenadeNail(event_args_t *args)
}
}
enum tfc_grenadelauncher_e
enum tf_gl_e
{
TFGL_IDLE = 0,
TFPL_IDLE,
TFGL_FIRE,
TFPL_FIRE,
TFGL_RELOAD1,
TFGL_RELOAD2,
TFPL_RELOAD1,
TFPL_RELOAD2,
TFGL_DRAW,
TFPL_DRAW,
TFGL_HOLSTER,
TFPL_HOLSTER
GL_IDLE = 0,
PL_IDLE,
GL_FIRE,
PL_FIRE,
GL_RELOAD1,
GL_RELOAD2,
PL_RELOAD1,
PL_RELOAD2,
GL_DRAW,
PL_DRAW,
GL_HOLSTER,
PL_HOLSTER
};
void EV_TFC_GrenadeLauncher(event_args_t *args)
@ -1608,7 +1615,7 @@ void EV_TFC_GrenadeLauncher(event_args_t *args)
idx = args->entindex;
VectorCopy(args->origin, origin);
if(EV_IsLocal(idx))
gEngfuncs.pEventAPI->EV_WeaponAnimation(TFGL_FIRE, 2);
gEngfuncs.pEventAPI->EV_WeaponAnimation(GL_FIRE, 2);
gEngfuncs.pEventAPI->EV_PlaySound(-1, origin, CHAN_WEAPON, "weapons/glauncher.wav", 0.7, 0.8, 0, 100);
if(EV_IsLocal(idx))
V_PunchAxis(0, -2.0);
@ -1622,7 +1629,7 @@ void EV_TFC_PipeLauncher(event_args_t *args)
idx = args->entindex;
VectorCopy(args->origin, origin);
if(EV_IsLocal(idx))
gEngfuncs.pEventAPI->EV_WeaponAnimation(TFPL_FIRE, 2);
gEngfuncs.pEventAPI->EV_WeaponAnimation(PL_FIRE, 2);
gEngfuncs.pEventAPI->EV_PlaySound(-1, origin, CHAN_WEAPON, "weapons/glauncher.wav", 0.7, 0.8, 0, 100);
if(EV_IsLocal(idx))
V_PunchAxis(0, -2.0);

View File

@ -4412,6 +4412,14 @@ BOOL CBasePlayer::SwitchWeapon( CBasePlayerItem *pWeapon )
return TRUE;
}
//=========================================================
//
//=========================================================
void CBasePlayer::TeamFortress_SetSpeed()
{
}
//=========================================================
// Dead HEV suit prop
//=========================================================

View File

@ -324,6 +324,9 @@ public:
float m_flNextChatTime;
bool m_bSentBhopcap; // If false, the player just joined and needs a bhopcap message.
//Team Fortress
void TeamFortress_SetSpeed();
};
#define AUTOAIM_2DEGREES 0.0348994967025

View File

@ -6,47 +6,20 @@
#include "nodes.h"
#include "player.h"
#include "gamerules.h"
#include "tf_defs.h"
LINK_ENTITY_TO_CLASS( tf_weapon_ac, CTFAssaultC )
void CTFAssaultC::Spawn()
{
pev->classname = MAKE_STRING("tf_weapon_ac");
Precache();
m_iId = 17;
m_iId = WEAPON_ASSAULT_CANNON;
m_iDefaultAmmo = 25;
m_iWeaponState = 0;
pev->solid = SOLID_TRIGGER;
}
int CTFAssaultC::GetItemInfo( ItemInfo *p )
{
p->pszAmmo1 = "buckshot";
p->pszName = STRING( pev->classname );
p->iMaxAmmo1 = 200;
p->pszAmmo2 = 0;
p->iMaxAmmo2 = -1;
p->iSlot = 4;
p->iPosition = 3;
p->iFlags = 0;
p->iMaxClip = -1;
p->iId = 17;
p->iWeight = 15;
return 1;
}
void CTFAssaultC::Holster()
{
PLAYBACK_EVENT_FULL(1, ENT(m_pPlayer->pev), m_usWindDown, 0, (float *)&g_vecZero, (float *)&g_vecZero, 0, 0, 0, 0, 1, 0);
m_iWeaponState = 0;
//tfstate
//setspeed
m_fInReload = 0;
m_flTimeWeaponIdle = 2;
m_pPlayer->m_flNextAttack = 0.1;
SendWeaponAnim(ASSAULT_HOLSTER, 1);
}
void CTFAssaultC::Precache()
{
PRECACHE_MODEL("models/v_tfac.mdl");
@ -66,32 +39,25 @@ void CTFAssaultC::Precache()
m_usACStart = PRECACHE_EVENT(1, "events/wpn/tf_acstart.sc");
}
void CTFAssaultC::WeaponIdle( void )
int CTFAssaultC::GetItemInfo( ItemInfo *p )
{
ResetEmptySound();
if(m_flTimeWeaponIdle <= 0.0)
{
if(m_iWeaponState)
{
PLAYBACK_EVENT_FULL(1, ENT(m_pPlayer->pev), m_usWindDown, 0, (float *)&g_vecZero, (float *)&g_vecZero, 0, 0, 0, 0, 0, 0);
m_iWeaponState = 0;
//tfstate
//setspeed
m_flTimeWeaponIdle = 2;
}
else
{
SendWeaponAnim(RANDOM_LONG(0, 1), 1);
m_flTimeWeaponIdle = 12.5;
}
}
p->pszName = STRING(pev->classname);
p->pszAmmo1 = "buckshot";
p->iMaxAmmo1 = 200;
p->pszAmmo2 = 0;
p->iMaxAmmo2 = -1;
p->iMaxClip = -1;
p->iSlot = 4;
p->iPosition = 3;
p->iFlags = 0;
p->iId = WEAPON_ASSAULT_CANNON;
p->iWeight = 15;
return 1;
}
BOOL CTFAssaultC::Deploy()
{
//Velaron: "ac" deploy
return DefaultDeploy( "models/v_tfac.mdl", "models/p_mini.mdl", ASSAULT_DRAW, "mp5", 1 );
return DefaultDeploy( "models/v_tfac.mdl", "models/p_mini.mdl", AC_DRAW, "ac", 1 );
}
int CTFAssaultC::AddToPlayer( CBasePlayer *pPlayer )
@ -106,57 +72,93 @@ int CTFAssaultC::AddToPlayer( CBasePlayer *pPlayer )
return FALSE;
}
void CTFAssaultC::Holster()
{
PLAYBACK_EVENT_FULL(7, ENT(m_pPlayer->pev), m_usWindDown, 0, (float *)&g_vecZero, (float *)&g_vecZero, 0, 0, 0, 0, 1, 0);
m_iWeaponState = 0;
//m_pPlayer->tfstate &= 0xFFFFF7FF;
//m_pPlayer->TeamFortress_SetSpeed();
m_fInReload = 0;
m_flTimeWeaponIdle = 2;
m_pPlayer->m_flNextAttack = 0.1;
SendWeaponAnim(AC_HOLSTER, 1);
}
void CTFAssaultC::WeaponIdle( void )
{
ResetEmptySound();
if(m_flTimeWeaponIdle <= 0.0)
{
if(m_iWeaponState)
{
PLAYBACK_EVENT_FULL(7, ENT(m_pPlayer->pev), m_usWindDown, 0, (float *)&g_vecZero, (float *)&g_vecZero, 0, 0, 0, 0, 0, 0);
m_iWeaponState = 0;
//m_pPlayer->tfstate &= 0xFFFFF7FF;
//m_pPlayer->TeamFortress_SetSpeed();
m_flTimeWeaponIdle = 2;
}
else
{
SendWeaponAnim(RANDOM_LONG(0, 1), 1);
m_flTimeWeaponIdle = 12.5;
}
}
}
void CTFAssaultC::PrimaryAttack()
{
if(m_iWeaponState == 2)
switch(m_iWeaponState)
{
if(m_pPlayer->ammo_buckshot <= 0)
case 2:
{
PLAYBACK_EVENT_FULL(1, ENT(m_pPlayer->pev), m_usStartSpin, 0, (float *)&g_vecZero, (float *)&g_vecZero, 0, 0, 0, 0, 0, 0);
m_iWeaponState = 3;
m_pPlayer->SetAnimation(PLAYER_ATTACK1);
pev->effects &= ~EF_MUZZLEFLASH;
}
else
Fire();
if(m_pPlayer->ammo_buckshot <= 0)
{
PLAYBACK_EVENT_FULL(7, ENT(m_pPlayer->pev), m_usStartSpin, 0, (float *)&g_vecZero, (float *)&g_vecZero, 0, 0, 0, 0, 0, 0);
m_iWeaponState = 3;
m_pPlayer->SetAnimation(PLAYER_ATTACK1);
pev->effects &= ~EF_MUZZLEFLASH;
}
else
Fire();
m_flTimeWeaponIdle = 0.1;
m_flNextPrimaryAttack = UTIL_WeaponTimeBase() + 0.1;
return;
}
if(m_iWeaponState == 3)
{
if(m_pPlayer->ammo_buckshot <= 0)
{
PLAYBACK_EVENT_FULL(1, ENT(m_pPlayer->pev), m_usSpin, 0, (float *)&g_vecZero, (float *)&g_vecZero, 0, 0, 0, 0, 0, 0);
m_pPlayer->SetAnimation(PLAYER_ATTACK1);
}
else
{
m_iWeaponState = 1;
}
m_flTimeWeaponIdle = 0.1;
m_flNextPrimaryAttack = UTIL_WeaponTimeBase() + 0.1;
return;
}
if(m_iWeaponState == 1)
{
if(m_flNextPrimaryAttack > 0.0)
m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 0.1;
m_flNextPrimaryAttack = UTIL_WeaponTimeBase() + 0.1;
return;
}
case 3:
{
if(m_pPlayer->ammo_buckshot <= 0)
{
PLAYBACK_EVENT_FULL(7, ENT(m_pPlayer->pev), m_usSpin, 0, (float *)&g_vecZero, (float *)&g_vecZero, 0, 0, 0, 0, 0, 0);
m_pPlayer->SetAnimation(PLAYER_ATTACK1);
}
else
m_iWeaponState = 1;
m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 0.1;
m_flNextPrimaryAttack = UTIL_WeaponTimeBase() + 0.1;
return;
}
case 1:
{
if(m_flNextPrimaryAttack > 0.0)
return;
PLAYBACK_EVENT_FULL(1, ENT(m_pPlayer->pev), m_usACStart, 0, (float *)&g_vecZero, (float *)&g_vecZero, 0, 0, 0, 0, 0, 0);
m_iWeaponState = 2;
m_flTimeWeaponIdle = 0.1;
m_flNextPrimaryAttack = UTIL_WeaponTimeBase() + 0.1;
return;
PLAYBACK_EVENT_FULL(7, ENT(m_pPlayer->pev), m_usACStart, 0, (float *)&g_vecZero, (float *)&g_vecZero, 0, 0, 0, 0, 0, 0);
m_iWeaponState = 2;
m_flTimeWeaponIdle = 0.1;
m_flNextPrimaryAttack = UTIL_WeaponTimeBase() + 0.1;
return;
}
}
if(m_pPlayer->pev->button & 1)
{
PLAYBACK_EVENT_FULL(1, ENT(m_pPlayer->pev), m_usWindUp, 0, (float *)&g_vecZero, (float *)&g_vecZero, 0, 0, 0, 0, 0, 0);
m_iWeaponState = 1;
//tfstate
//setspeed
//m_pPlayer->tfstate |= 0x800u
//m_pPlayer->TeamFortress_SetSpeed();
}
m_flTimeWeaponIdle = 0.6;
@ -170,16 +172,14 @@ void CTFAssaultC::Fire()
if(m_flNextPrimaryAttack > 0)
return;
PLAYBACK_EVENT_FULL(1, ENT(m_pPlayer->pev), m_usWindUp, 0, (float *)&g_vecZero, (float *)&g_vecZero, 0, 0, 0, 0, m_pPlayer->ammo_buckshot & 1, 0);
PLAYBACK_EVENT_FULL(9, ENT(m_pPlayer->pev), m_usWindUp, 0, (float *)&g_vecZero, (float *)&g_vecZero, 0, 0, 0, 0, m_pPlayer->ammo_buckshot & 1, 0);
m_pPlayer->m_iWeaponVolume = 600;
m_pPlayer->m_iWeaponFlash = 256;
m_pPlayer->pev->effects |= EF_MUZZLEFLASH;
m_pPlayer->SetAnimation(PLAYER_ATTACK1);
UTIL_MakeVectors(m_pPlayer->pev->v_angle);
p_vecSrc.x = gpGlobals->v_up.x * -4.0 + gpGlobals->v_right.x + gpGlobals->v_right.x + m_pPlayer->pev->origin.x + m_pPlayer->pev->view_ofs.x;
p_vecSrc.y = gpGlobals->v_up.y * -4.0 + gpGlobals->v_right.y + gpGlobals->v_right.y + m_pPlayer->pev->origin.y + m_pPlayer->pev->view_ofs.y;
p_vecSrc.z = gpGlobals->v_up.z * -4.0 + gpGlobals->v_right.z + gpGlobals->v_right.z + m_pPlayer->pev->origin.z + m_pPlayer->pev->view_ofs.z;
vecAiming = m_pPlayer->GetAutoaimVector(0.087155744);
p_vecSrc = gpGlobals->v_up * -4.0 + gpGlobals->v_right * 2.0 + m_pPlayer->pev->origin + m_pPlayer->pev->view_ofs;
vecAiming = m_pPlayer->GetAutoaimVector(AUTOAIM_5DEGREES);
vecSpread.x = 0.1;
vecSpread.y = 0.1;
vecSpread.z = 0.0;

View File

@ -6,18 +6,39 @@
#include "nodes.h"
#include "player.h"
#include "gamerules.h"
#include "tf_defs.h"
enum tf_gl_e
{
GL_IDLE = 0,
PL_IDLE,
GL_FIRE,
PL_FIRE,
GL_RELOAD1,
GL_RELOAD2,
PL_RELOAD1,
PL_RELOAD2,
GL_DRAW,
PL_DRAW,
GL_HOLSTER,
PL_HOLSTER
};
LINK_ENTITY_TO_CLASS( tf_weapon_gl, CTFGrenadeLauncher )
void CTFGrenadeLauncher::Spawn()
{
Precache();
SET_MODEL( ENT( pev ), "models/w_gauss.mdl" );
m_iId = 12;
m_iDefaultAmmo = 50;
m_fReloadTime = 0.666667;
pev->solid = SOLID_TRIGGER;
m_iAnim_Deploy = GL_DRAW;
m_iAnim_Holster = GL_HOLSTER;
m_iAnim_Idle = GL_IDLE;
m_iAnim_ReloadDown = GL_RELOAD1;
m_iAnim_ReloadUp = GL_RELOAD2;
}
void CTFGrenadeLauncher::Precache()
@ -59,14 +80,14 @@ void CTFGrenadeLauncher::Holster()
//m_pPlayer->m_iGLClip = m_iClip;
//tfstate?
m_fInSpecialReload = 0;
SendWeaponAnim(10, 1);
SendWeaponAnim(m_iAnim_Holster, 1);
m_flTimeWeaponIdle = 1000;
m_pPlayer->m_flNextAttack = 0.5;
}
BOOL CTFGrenadeLauncher::Deploy()
{
return DefaultDeploy( "models/v_tfgl.mdl", "models/p_glauncher.mdl", 8, "mp5", 1 );
return DefaultDeploy( "models/v_tfgl.mdl", "models/p_glauncher.mdl", m_iAnim_Deploy, "mp5", 1 );
}
void CTFGrenadeLauncher::Reload()
@ -96,7 +117,7 @@ void CTFGrenadeLauncher::Reload()
}
else
{
SendWeaponAnim(4, 1);
SendWeaponAnim(m_iAnim_ReloadDown, 1);
//m_pPlayer->tfstate |= 2;
m_fInSpecialReload = 1;
m_pPlayer->m_flNextAttack = 0.1;
@ -133,7 +154,7 @@ void CTFGrenadeLauncher::WeaponIdle( void )
{
if(m_iClip == 6)
{
SendWeaponAnim(5, 1);
SendWeaponAnim(m_iAnim_ReloadUp, 1);
m_fInSpecialReload = 0;
m_flTimeWeaponIdle = 1.5;
return;
@ -146,15 +167,15 @@ void CTFGrenadeLauncher::WeaponIdle( void )
}
}
m_flTimeWeaponIdle = 3;
SendWeaponAnim(0, 1);
SendWeaponAnim(m_iAnim_Idle, 1);
}
void CTFGrenadeLauncher::PrimaryAttack()
{
if(m_pPlayer->ammo_rockets <= 0)
if(m_iClip <= 0)
{
m_flNextPrimaryAttack = 1;
SendWeaponAnim(0, 1);
SendWeaponAnim(m_iAnim_Idle, 1);
PlayEmptySound();
m_fInSpecialReload = 0;
//tfstate
@ -178,13 +199,17 @@ LINK_ENTITY_TO_CLASS( tf_weapon_pl, CTFPipebombLauncher )
void CTFPipebombLauncher::Spawn()
{
Precache();
SET_MODEL( ENT( pev ), "models/w_gauss.mdl" );
m_iId = 22;
m_iId = WEAPON_PIPEBOMB_LAUNCHER;
m_iDefaultAmmo = 50;
m_fReloadTime = 0.666667;
pev->solid = SOLID_TRIGGER;
m_usFireGL = PRECACHE_EVENT(1, "events/wpn/tf_gl.sc");
m_usFireGL = PRECACHE_EVENT(1, "events/wpn/tf_pipel.sc");
m_iAnim_Holster = PL_HOLSTER;
m_iAnim_Idle = PL_IDLE;
m_iAnim_ReloadDown = PL_RELOAD1;
m_iAnim_ReloadUp = PL_RELOAD2;
m_iAnim_Deploy = PL_DRAW;
}
int CTFPipebombLauncher::GetItemInfo( ItemInfo *p )
@ -198,17 +223,17 @@ int CTFPipebombLauncher::GetItemInfo( ItemInfo *p )
p->iPosition = 4;
p->iFlags = 0;
p->iMaxClip = 6;
p->iId = 22;
p->iId = WEAPON_PIPEBOMB_LAUNCHER;
p->iWeight = 15;
return 1;
}
void CTFPipebombLauncher::PrimaryAttack()
{
if(m_pPlayer->ammo_rockets <= 0)
if(m_iClip <= 0)
{
m_flNextPrimaryAttack = 1;
SendWeaponAnim(0, 1);
SendWeaponAnim(m_iAnim_Idle, 1);
PlayEmptySound();
m_fInSpecialReload = 0;
//tfstate

View File

@ -642,6 +642,11 @@ public:
void Reload(void);
int AddToPlayer(CBasePlayer *pPlayer);
void PrimaryAttack(void);
int m_iAnim_Holster;
int m_iAnim_Idle;
int m_iAnim_ReloadDown;
int m_iAnim_ReloadUp;
int m_iAnim_Deploy;;
private:
unsigned short m_usFireGL;
@ -732,15 +737,15 @@ private:
unsigned short m_usFireIC;
};
enum tfc_assault_e
enum tf_ac_e
{
ASSAULT_IDLE = 0,
ASSAULT_IDLE2,
ASSAULT_SPINUP,
ASSAULT_SPINDOWN,
ASSAULT_FIRE,
ASSAULT_DRAW,
ASSAULT_HOLSTER
AC_IDLE = 0,
AC_IDLE2,
AC_SPINUP,
AC_SPINDOWN,
AC_FIRE,
AC_DRAW,
AC_HOLSTER
};
class CTFAssaultC : public CBasePlayerWeapon