Moved weapon specific animation code to the respective weapon files for FreeHL

This commit is contained in:
Marco Cawthorne 2019-08-07 00:20:42 -07:00
parent 921ec444a2
commit 021d985a2e
25 changed files with 186 additions and 214 deletions

View file

@ -12,6 +12,7 @@ valve/defs.h
../materials.h
../events.h
../entities.h
../shared/valve/animations.h
defs.h
../gs-entbase/server.src

View file

@ -12,6 +12,7 @@ valve/defs.h
../materials.h
../events.h
../entities.h
../shared/valve/animations.h
defs.h
../gs-entbase/server.src

View file

@ -27,7 +27,7 @@ void Game_PlayerPreThink(void)
}
void Game_PlayerPostThink(void)
{
Animation_PlayerUpdate();
self.SendFlags = 1;
}
void Game_RunClientCommand(void)

View file

@ -12,6 +12,7 @@ valve/defs.h
../materials.h
../events.h
../entities.h
../shared/valve/animations.h
defs.h
../gs-entbase/server.src

View file

@ -193,6 +193,13 @@ void w_cannon_crosshair(void)
#endif
}
float w_cannon_aimanim(void)
{
#ifdef SSQC
return self.flags & FL_CROUCHING ? ANIM_CR_AIMSHOTGUN : ANIM_AIMSHOTGUN;
#endif
}
void w_cannon_hudpic(int s, vector pos)
{
#ifdef CSQC
@ -222,5 +229,6 @@ weapon_t w_cannon =
__NULL__,
w_cannon_pmodel,
w_cannon_deathmsg,
w_cannon_aimanim,
w_cannon_hudpic
};

View file

@ -137,6 +137,13 @@ void w_chainsaw_release(void)
#endif
}
float w_chainsaw_aimanim(void)
{
#ifdef SSQC
return self.flags & FL_CROUCHING ? ANIM_CR_AIMSQUEAK : ANIM_AIMSQUEAK;
#endif
}
void w_chainsaw_hudpic(int s, vector pos)
{
#ifdef CSQC
@ -166,6 +173,7 @@ weapon_t w_chainsaw =
__NULL__,
w_chainsaw_pmodel,
w_chainsaw_deathmsg,
w_chainsaw_aimanim,
w_chainsaw_hudpic
};

View file

@ -200,6 +200,13 @@ void w_hammer_release(void)
#endif
}
float w_hammer_aimanim(void)
{
#ifdef SSQC
return self.flags & FL_CROUCHING ? ANIM_CR_AIMCROWBAR : ANIM_AIMCROWBAR;
#endif
}
void w_hammer_hudpic(int s, vector pos)
{
#ifdef CSQC
@ -229,5 +236,6 @@ weapon_t w_hammer =
__NULL__,
w_hammer_pmodel,
w_hammer_deathmsg,
w_hammer_aimanim,
w_hammer_hudpic
};

View file

@ -26,6 +26,7 @@ typedef struct
string() wmodel;
string() pmodel;
string() deathmsg;
float() aimanim;
void(int, vector) hudpic;
} weapon_t;

View file

@ -6,86 +6,10 @@
*
****/
.float baseframe_time;
.float baseframe_old;
.float frame_time;
.float frame_old;
.float fWasCrouching;
enum {
ANIM_LOOKIDLE,
ANIM_IDLE,
ANIM_DEEPIDLE,
ANIM_RUN2,
ANIM_WALK2HANDED,
ANIM_2HANDSHOT,
ANIM_CRAWL,
ANIM_CROUCHIDLE,
ANIM_JUMP,
ANIM_LONGJUMP,
ANIM_SWIM,
ANIM_TREADWATER,
ANIM_RUN,
ANIM_WALK,
ANIM_AIM2,
ANIM_SHOOT2,
ANIM_AIM1,
ANIM_SHOOT1,
ANIM_DIESIMPLE,
ANIM_DIEBACKWARDS1,
ANIM_DIEBACKWARDS2,
ANIM_DIEFORWARD,
ANIM_DIEHEADSHOT,
ANIM_DIESPIN,
ANIM_DIEGUTSHOT,
ANIM_AIMCROWBAR,
ANIM_SHOOTCROWBAR,
ANIM_CR_AIMCROWBAR,
ANIM_CR_SHOOTCROWBAR,
ANIM_AIMTRIPMINE,
ANIM_SHOOTTRIPMINE,
ANIM_CR_AIMTRIPMINE,
ANIM_CR_SHOOTTRIPMINE,
ANIM_AIM1HAND,
ANIM_SHOOT1HAND,
ANIM_CR_AIM1HAND,
ANIM_CR_SHOOT1HAND,
ANIM_AIMPYTHON,
ANIM_SHOOTPYTHON,
ANIM_CR_AIMPYTHON,
ANIM_CR_SHOOTPYTHON,
ANIM_AIMSHOTGUN,
ANIM_SHOOTSHOTGUN,
ANIM_CR_AIMSHOTGUN,
ANIM_CR_SHOOTSHOTGUN,
ANIM_AIMGAUSS,
ANIM_SHOOTGAUSS,
ANIM_CR_AIMGAUSS,
ANIM_CR_SHOOTGAUSS,
ANIM_AIMMP5,
ANIM_SHOOTMP5,
ANIM_CR_AIMMP5,
ANIM_CR_SHOOTMP5,
ANIM_AIMRPG,
ANIM_SHOOTRPG,
ANIM_CR_AIMRPG,
ANIM_CR_SHOOTRPG,
ANIM_AIMEGON,
ANIM_SHOOTEGON,
ANIM_CR_AIMEGON,
ANIM_CR_SHOOTEGON,
ANIM_AIMSQUEAK,
ANIM_SHOOTSQUEAK,
ANIM_CR_AIMSQUEAK,
ANIM_CR_SHOOTSQUEAK,
ANIM_AIMHIVE,
ANIM_SHOOTHIVE,
ANIM_CR_AIMHIVE,
ANIM_CR_SHOOTHIVE,
ANIM_AIMBOW,
ANIM_SHOOTBOW,
ANIM_CR_AIMBOW,
ANIM_CR_SHOOTBOW
};
// For lerping, sigh
#ifdef CSQC
.float frame_last;
@ -114,54 +38,10 @@ void Animation_PlayerUpdate( void ) {
self.basebone = 16;
#ifdef SSQC
// TODO: Make this faster
if ( self.baseframe_time < time ) {
if ( self.frame_time < time ) {
player pl = (player)self;
int i = pl.activeweapon;
switch ( i ) {
case WEAPON_CROWBAR:
self.frame = self.flags & FL_CROUCHING ? ANIM_CR_AIMCROWBAR : ANIM_AIMCROWBAR;
break;
case WEAPON_GLOCK:
self.frame = self.flags & FL_CROUCHING ? ANIM_CR_AIM1HAND : ANIM_AIM1HAND;
break;
case WEAPON_PYTHON:
self.frame = self.flags & FL_CROUCHING ? ANIM_CR_AIMPYTHON : ANIM_AIMPYTHON;
break;
case WEAPON_MP5:
self.frame = self.flags & FL_CROUCHING ? ANIM_CR_AIMMP5 : ANIM_AIMMP5;
break;
case WEAPON_SHOTGUN:
self.frame = self.flags & FL_CROUCHING ? ANIM_CR_AIMSHOTGUN : ANIM_AIMSHOTGUN;
break;
case WEAPON_CROSSBOW:
self.frame = self.flags & FL_CROUCHING ? ANIM_CR_AIMBOW : ANIM_AIMBOW;
break;
case WEAPON_RPG:
self.frame = self.flags & FL_CROUCHING ? ANIM_CR_AIMRPG : ANIM_AIMRPG;
break;
case WEAPON_GAUSS:
self.frame = self.flags & FL_CROUCHING ? ANIM_CR_AIMGAUSS : ANIM_AIMGAUSS;
break;
case WEAPON_EGON:
self.frame = self.flags & FL_CROUCHING ? ANIM_CR_AIMEGON : ANIM_AIMEGON;
break;
case WEAPON_HORNETGUN:
self.frame = self.flags & FL_CROUCHING ? ANIM_CR_AIMHIVE : ANIM_AIMHIVE;
break;
case WEAPON_HANDGRENADE:
self.frame = self.flags & FL_CROUCHING ? ANIM_CR_AIMCROWBAR : ANIM_AIMCROWBAR;
break;
case WEAPON_SATCHEL:
self.frame = self.flags & FL_CROUCHING ? ANIM_CR_AIMCROWBAR : ANIM_AIMCROWBAR;
break;
case WEAPON_TRIPMINE:
self.frame = self.flags & FL_CROUCHING ? ANIM_CR_AIMTRIPMINE : ANIM_AIMTRIPMINE;
break;
case WEAPON_SNARK:
self.frame = self.flags & FL_CROUCHING ? ANIM_CR_AIMSQUEAK : ANIM_AIMSQUEAK;
break;
}
self.baseframe_old = self.frame;
self.frame = Weapons_GetAim(pl.activeweapon);
self.frame_old = self.frame;
}
if ( !( self.flags & FL_ONGROUND ) ) {
@ -241,8 +121,8 @@ void Animation_PlayerUpdate( void ) {
// Force the code above to update if we switched positions
if ( self.fWasCrouching != ( self.flags & FL_CROUCHING ) ) {
self.baseframe_old = 0;
self.baseframe_time = 0;
self.frame_old = 0;
self.frame_time = 0;
self.fWasCrouching = ( self.flags & FL_CROUCHING );
}
@ -260,91 +140,11 @@ Changes the animation sequence for the upper body part
=================
*/
void Animation_PlayerTop( float fFrame ) {
self.baseframe = fFrame;
self.baseframe_old = fFrame;
self.frame = fFrame;
self.frame_old = fFrame;
}
void Animation_PlayerTopTemp( float fFrame, float fTime ) {
self.baseframe = fFrame;
self.baseframe_time = time + fTime;
}
void Animation_ShootWeapon( entity ePlayer ) {
/*switch ( Weapon_GetAnimType( ePlayer.weapon ) ) {
case ATYPE_AK47:
ePlayer.baseframe = ePlayer.flags & FL_CROUCHING ? ANIM_CROUCH_SHOOT_AK47 : ANIM_SHOOT_AK47;
break;
case ATYPE_C4:
ePlayer.baseframe = ePlayer.flags & FL_CROUCHING ? ANIM_CROUCH_SHOOT_C4 : ANIM_SHOOT_C4;
break;
case ATYPE_CARBINE:
ePlayer.baseframe = ePlayer.flags & FL_CROUCHING ? ANIM_CROUCH_SHOOT_CARBINE : ANIM_SHOOT_CARBINE;
break;
case ATYPE_DUALPISTOLS:
ePlayer.baseframe = ePlayer.flags & FL_CROUCHING ? ANIM_CROUCH_SHOOT_DUALPISTOLS : ANIM_SHOOT_DUALPISTOLS;
break;
case ATYPE_GRENADE:
ePlayer.baseframe = ePlayer.flags & FL_CROUCHING ? ANIM_CROUCH_SHOOT_GRENADE : ANIM_SHOOT_GRENADE;
break;
case ATYPE_KNIFE:
ePlayer.baseframe = ePlayer.flags & FL_CROUCHING ? ANIM_CROUCH_SHOOT_KNIFE : ANIM_SHOOT_KNIFE;
break;
case ATYPE_MP5:
ePlayer.baseframe = ePlayer.flags & FL_CROUCHING ? ANIM_CROUCH_SHOOT_MP5 : ANIM_SHOOT_MP5;
break;
case ATYPE_ONEHAND:
ePlayer.baseframe = ePlayer.flags & FL_CROUCHING ? ANIM_CROUCH_SHOOT_ONEHAND : ANIM_SHOOT_ONEHAND;
break;
case ATYPE_PARA:
ePlayer.baseframe = ePlayer.flags & FL_CROUCHING ? ANIM_CROUCH_SHOOT_PARA : ANIM_SHOOT_PARA;
break;
case ATYPE_RIFLE:
ePlayer.baseframe = ePlayer.flags & FL_CROUCHING ? ANIM_CROUCH_SHOOT_RIFLE : ANIM_SHOOT_RIFLE;
break;
case ATYPE_SHOTGUN:
ePlayer.baseframe = ePlayer.flags & FL_CROUCHING ? ANIM_CROUCH_SHOOT_SHOTGUN : ANIM_SHOOT_SHOTGUN;
break;
}
ePlayer.baseframe_time = time + Weapon_GetFireRate( ePlayer.weapon );*/
}
void Animation_ReloadWeapon( entity ePlayer ) {
/*switch ( Weapon_GetAnimType( ePlayer.weapon ) ) {
case ATYPE_AK47:
ePlayer.baseframe = ePlayer.flags & FL_CROUCHING ? ANIM_CROUCH_RELOAD_AK47 : ANIM_RELOAD_AK47;
break;
case ATYPE_C4:
ePlayer.baseframe = ePlayer.flags & FL_CROUCHING ? ANIM_CROUCH_AIM_C4 : ANIM_AIM_C4;
break;
case ATYPE_CARBINE:
ePlayer.baseframe = ePlayer.flags & FL_CROUCHING ? ANIM_CROUCH_RELOAD_CARBINE : ANIM_RELOAD_CARBINE;
break;
case ATYPE_DUALPISTOLS:
ePlayer.baseframe = ePlayer.flags & FL_CROUCHING ? ANIM_CROUCH_RELOAD_DUALPISTOLS : ANIM_RELOAD_DUALPISTOLS;
break;
case ATYPE_GRENADE:
ePlayer.baseframe = ePlayer.flags & FL_CROUCHING ? ANIM_CROUCH_AIM_GRENADE : ANIM_AIM_GRENADE;
break;
case ATYPE_KNIFE:
ePlayer.baseframe = ePlayer.flags & FL_CROUCHING ? ANIM_CROUCH_AIM_KNIFE : ANIM_AIM_KNIFE;
break;
case ATYPE_MP5:
ePlayer.baseframe = ePlayer.flags & FL_CROUCHING ? ANIM_CROUCH_RELOAD_MP5 : ANIM_RELOAD_MP5;
break;
case ATYPE_ONEHAND:
ePlayer.baseframe = ePlayer.flags & FL_CROUCHING ? ANIM_CROUCH_RELOAD_ONEHAND : ANIM_RELOAD_ONEHAND;
break;
case ATYPE_PARA:
ePlayer.baseframe = ePlayer.flags & FL_CROUCHING ? ANIM_CROUCH_RELOAD_PARA : ANIM_RELOAD_PARA;
break;
case ATYPE_RIFLE:
ePlayer.baseframe = ePlayer.flags & FL_CROUCHING ? ANIM_CROUCH_RELOAD_RIFLE : ANIM_RELOAD_RIFLE;
break;
case ATYPE_SHOTGUN:
ePlayer.baseframe = ePlayer.flags & FL_CROUCHING ? ANIM_CROUCH_RELOAD_SHOTGUN : ANIM_RELOAD_SHOTGUN;
break;
}
ePlayer.baseframe_time = time + Weapon_GetReloadTime( ePlayer.weapon );*/
}
self.frame = fFrame;
self.frame_time = time + fTime;
}

View file

@ -204,6 +204,13 @@ void w_crossbow_crosshair(void)
#endif
}
float w_crossbow_aimanim(void)
{
#ifdef SSQC
return self.flags & FL_CROUCHING ? ANIM_CR_AIMBOW : ANIM_AIMBOW;
#endif
}
void w_crossbow_hudpic(int s, vector pos)
{
#ifdef CSQC
@ -233,6 +240,7 @@ weapon_t w_crossbow =
w_crossbow_wmodel,
w_crossbow_pmodel,
w_crossbow_deathmsg,
w_crossbow_aimanim,
w_crossbow_hudpic
};

View file

@ -100,6 +100,11 @@ void w_crowbar_primary(void)
vector src = pl.origin + pl.view_ofs;
traceline(src, src + (v_forward * 32), FALSE, pl);
if (self.flags & FL_CROUCHING)
Animation_PlayerTopTemp(ANIM_SHOOTCROWBAR, 0.5f);
else
Animation_PlayerTopTemp(ANIM_CR_SHOOTCROWBAR, 0.42f);
Weapons_PlaySound(pl, CHAN_WEAPON, "weapons/cbar_miss1.wav", 1, ATTN_NORM);
if (trace_fraction >= 1.0) {
@ -153,6 +158,13 @@ void w_crowbar_release(void)
#endif
}
float w_crowbar_aimanim(void)
{
#ifdef SSQC
return self.flags & FL_CROUCHING ? ANIM_CR_AIMCROWBAR : ANIM_AIMCROWBAR;
#endif
}
void w_crowbar_hudpic(int s, vector pos)
{
#ifdef CSQC
@ -182,6 +194,7 @@ weapon_t w_crowbar =
w_crowbar_wmodel,
w_crowbar_pmodel,
w_crowbar_deathmsg,
w_crowbar_aimanim,
w_crowbar_hudpic
};

View file

@ -83,6 +83,13 @@ void w_egon_crosshair(void)
#endif
}
float w_egon_aimanim(void)
{
#ifdef SSQC
return self.flags & FL_CROUCHING ? ANIM_CR_AIMEGON : ANIM_AIMEGON;
#endif
}
void w_egon_hudpic(int s, vector pos)
{
#ifdef CSQC
@ -112,6 +119,7 @@ weapon_t w_egon =
w_egon_wmodel,
w_egon_pmodel,
w_egon_deathmsg,
w_egon_aimanim,
w_egon_hudpic
};

View file

@ -112,6 +112,13 @@ void w_gauss_crosshair(void)
#endif
}
float w_gauss_aimanim(void)
{
#ifdef SSQC
return self.flags & FL_CROUCHING ? ANIM_CR_AIMGAUSS : ANIM_AIMGAUSS;
#endif
}
void w_gauss_hudpic(int s, vector pos)
{
#ifdef CSQC
@ -141,6 +148,7 @@ weapon_t w_gauss =
w_gauss_wmodel,
w_gauss_pmodel,
w_gauss_deathmsg,
w_gauss_aimanim,
w_gauss_hudpic
};

View file

@ -94,7 +94,12 @@ void w_glock_primary(void)
TraceAttack_FireBullets(1, pl.origin + pl.view_ofs, 8, [0.01,0,01]);
pl.glock_mag--;
if (self.flags & FL_CROUCHING)
Animation_PlayerTopTemp(ANIM_SHOOT1HAND, 0.45f);
else
Animation_PlayerTopTemp(ANIM_CR_SHOOT1HAND, 0.45f);
Weapons_PlaySound(pl, CHAN_WEAPON, "weapons/pl_gun3.wav", 1, ATTN_NORM);
Weapons_UpdateAmmo(pl, pl.glock_mag, pl.ammo_9mm, __NULL__);
#endif
@ -131,6 +136,12 @@ void w_glock_secondary(void)
pl.glock_mag--;
if (self.flags & FL_CROUCHING)
Animation_PlayerTopTemp(ANIM_SHOOT1HAND, 0.45f);
else
Animation_PlayerTopTemp(ANIM_CR_SHOOT1HAND, 0.45f);
Weapons_PlaySound(pl, CHAN_WEAPON, "weapons/pl_gun3.wav", 1, ATTN_NORM);
Weapons_UpdateAmmo(pl, pl.glock_mag, pl.ammo_9mm, __NULL__);
#endif
@ -192,6 +203,14 @@ void w_glock_release(void)
pl.w_idle_next = 10.0f;
#endif
}
float w_glock_aimanim(void)
{
#ifdef SSQC
return self.flags & FL_CROUCHING ? ANIM_CR_AIM1HAND : ANIM_AIM1HAND;
#endif
}
void w_glock_hud(void)
{
#ifdef CSQC
@ -231,6 +250,7 @@ weapon_t w_glock =
w_glock_wmodel,
w_glock_pmodel,
w_glock_deathmsg,
w_glock_aimanim,
w_glock_hudpic
};

View file

@ -70,6 +70,12 @@ void w_handgrenade_reload(void)
void w_handgrenade_release(void)
{
}
float w_handgrenade_aimanim(void)
{
#ifdef SSQC
return self.flags & FL_CROUCHING ? ANIM_CR_AIMCROWBAR : ANIM_AIMCROWBAR;
#endif
}
void w_handgrenade_hudpic(int s, vector pos)
{
@ -100,6 +106,7 @@ weapon_t w_handgrenade =
w_handgrenade_wmodel,
w_handgrenade_pmodel,
w_handgrenade_deathmsg,
w_handgrenade_aimanim,
w_handgrenade_hudpic
};

View file

@ -135,6 +135,13 @@ void w_hornetgun_crosshair(void)
#endif
}
float w_hornetgun_aimanim(void)
{
#ifdef SSQC
return self.flags & FL_CROUCHING ? ANIM_CR_AIMHIVE : ANIM_AIMHIVE;
#endif
}
void w_hornetgun_hudpic(int s, vector pos)
{
#ifdef CSQC
@ -164,6 +171,7 @@ weapon_t w_hornetgun =
w_hornetgun_wmodel,
w_hornetgun_pmodel,
w_hornetgun_deathmsg,
w_hornetgun_aimanim,
w_hornetgun_hudpic
};

View file

@ -193,6 +193,13 @@ void w_mp5_crosshair(void)
#endif
}
float w_mp5_aimanim(void)
{
#ifdef SSQC
return self.flags & ANIM_CR_AIMMP5 ? ANIM_CR_AIMCROWBAR : ANIM_AIMMP5;
#endif
}
void w_mp5_hudpic(int s, vector pos)
{
#ifdef CSQC
@ -221,6 +228,7 @@ weapon_t w_mp5 = {
w_mp5_wmodel,
w_mp5_pmodel,
w_mp5_deathmsg,
w_mp5_aimanim,
w_mp5_hudpic
};

View file

@ -153,6 +153,13 @@ void w_python_crosshair(void)
#endif
}
float w_python_aimanim(void)
{
#ifdef SSQC
return self.flags & FL_CROUCHING ? ANIM_CR_AIMPYTHON : ANIM_AIMPYTHON;
#endif
}
void w_python_hudpic(int s, vector pos)
{
#ifdef CSQC
@ -182,6 +189,7 @@ weapon_t w_python =
w_python_wmodel,
w_python_pmodel,
w_python_deathmsg,
w_python_aimanim,
w_python_hudpic
};

View file

@ -74,6 +74,13 @@ void w_rpg_release(void)
}
float w_rpg_aimanim(void)
{
#ifdef SSQC
return self.flags & FL_CROUCHING ? ANIM_CR_AIMRPG : ANIM_AIMRPG;
#endif
}
void w_rpg_hudpic(int s, vector pos)
{
#ifdef CSQC
@ -115,6 +122,7 @@ weapon_t w_rpg =
w_rpg_wmodel,
w_rpg_pmodel,
w_rpg_deathmsg,
w_rpg_aimanim,
w_rpg_hudpic
};

View file

@ -164,6 +164,14 @@ void w_satchel_release(void)
#endif
}
float w_satchel_aimanim(void)
{
#ifdef SSQC
return self.flags & FL_CROUCHING ? ANIM_CR_AIMSQUEAK : ANIM_AIMSQUEAK;
#endif
}
void w_satchel_hudpic(int s, vector pos)
{
#ifdef CSQC
@ -193,6 +201,7 @@ weapon_t w_satchel =
w_satchel_wmodel,
w_satchel_pmodel,
w_satchel_deathmsg,
w_satchel_aimanim,
w_satchel_hudpic
};

View file

@ -146,6 +146,13 @@ void w_shotgun_crosshair(void)
#endif
}
float w_shotgun_aimanim(void)
{
#ifdef SSQC
return self.flags & FL_CROUCHING ? ANIM_CR_AIMSHOTGUN : ANIM_AIMSHOTGUN;
#endif
}
void w_shotgun_hudpic(int s, vector pos)
{
#ifdef CSQC
@ -175,6 +182,7 @@ weapon_t w_shotgun =
w_shotgun_wmodel,
w_shotgun_pmodel,
w_shotgun_deathmsg,
w_shotgun_aimanim,
w_shotgun_hudpic
};

View file

@ -87,6 +87,15 @@ string w_snark_deathmsg(void)
{
return "";
}
float w_snark_aimanim(void)
{
#ifdef SSQC
return self.flags & FL_CROUCHING ? ANIM_CR_AIMSQUEAK : ANIM_AIMSQUEAK;
#endif
}
void w_snark_hudpic(int s, vector pos)
{
#ifdef CSQC
@ -116,6 +125,7 @@ weapon_t w_snark =
w_snark_wmodel,
w_snark_pmodel,
w_snark_deathmsg,
w_snark_aimanim,
w_snark_hudpic
};

View file

@ -92,6 +92,13 @@ void w_tripmine_release(void)
}
}
float w_tripmine_aimanim(void)
{
#ifdef SSQC
return self.flags & FL_CROUCHING ? ANIM_CR_AIMTRIPMINE : ANIM_AIMTRIPMINE;
#endif
}
void w_tripmine_hudpic(int s, vector pos)
{
#ifdef CSQC
@ -121,6 +128,7 @@ weapon_t w_tripmine =
w_tripmine_wmodel,
w_tripmine_pmodel,
w_tripmine_deathmsg,
w_tripmine_aimanim,
w_tripmine_hudpic
};

View file

@ -122,6 +122,17 @@ string Weapons_GetDeathmessage(int id)
return "";
}
#ifdef SSQC
float Weapons_GetAim(int id)
{
if (g_weapons[id].aimanim != __NULL__) {
return g_weapons[id].aimanim();
}
return 0;
}
#endif
#ifdef CSQC
void Weapons_HUDPic(int id, int s, vector pos)
{

View file

@ -26,6 +26,7 @@ typedef struct
string() wmodel;
string() pmodel;
string() deathmsg;
float() aimanim;
void(int, vector) hudpic;
} weapon_t;
@ -78,6 +79,7 @@ int Weapons_IsPresent(player pl, int w);
#ifdef SSQC
void Weapons_InitItem(int w);
float Weapons_GetAim(int w);
void Weapons_AddItem(player pl, int w);
string Weapons_GetWorldmodel(int id);
void Weapons_UpdateAmmo(player pl, int a1, int a2, int a3);