From 133bf4fec20951372c404e5d1b69e258d8169c5f Mon Sep 17 00:00:00 2001 From: Marco Hladik Date: Sat, 8 May 2021 17:46:20 +0200 Subject: [PATCH] Simplify prediction code with the help from upstream SDK changes. --- src/client/game_event.qc | 4 +- src/client/vgui_chooseteam.qc | 18 +- src/server/gamerules_multiplayer.qc | 6 +- src/server/hostage_entity.qc | 2 +- src/server/item_suit.qc | 9 +- src/server/player.qc | 14 +- src/server/radio.h | 8 +- src/server/server.qc | 3 +- src/server/spawn.qc | 15 +- src/shared/equipment.qc | 3 +- src/shared/fx_impact.qc | 2 +- src/shared/player.h | 727 +++++++++------------------- src/shared/w_ak47.qc | 22 +- src/shared/w_aug.qc | 18 +- src/shared/w_awp.qc | 30 +- src/shared/w_deagle.qc | 31 +- src/shared/w_elites.qc | 40 +- src/shared/w_fiveseven.qc | 26 +- src/shared/w_flashbang.qc | 3 +- src/shared/w_g3sg1.qc | 26 +- src/shared/w_glock18.qc | 31 +- src/shared/w_hegrenade.qc | 3 +- src/shared/w_knife.qc | 27 +- src/shared/w_m3.qc | 6 +- src/shared/w_m4a1.qc | 45 +- src/shared/w_mac10.qc | 26 +- src/shared/w_mp5.qc | 32 +- src/shared/w_p228.qc | 35 +- src/shared/w_p90.qc | 32 +- src/shared/w_para.qc | 32 +- src/shared/w_scout.qc | 38 +- src/shared/w_sg550.qc | 46 +- src/shared/w_sg552.qc | 49 +- src/shared/w_smokegrenade.qc | 3 +- src/shared/w_tmp.qc | 34 +- src/shared/w_ump45.qc | 32 +- src/shared/w_usp45.qc | 48 +- src/shared/w_xm1014.qc | 14 +- 38 files changed, 605 insertions(+), 935 deletions(-) diff --git a/src/client/game_event.qc b/src/client/game_event.qc index 4f458a5..4710992 100644 --- a/src/client/game_event.qc +++ b/src/client/game_event.qc @@ -77,10 +77,10 @@ switch (fHeader) { FX_BreakModel(count, vecPos, vSize, [0,0,0], fStyle); break; case EV_IMPACT: - int iType; + impactType_t iType; vector vOrigin, vNormal; - iType = (int)readbyte(); + iType = (impactType_t)readbyte(); vOrigin[0] = readcoord(); vOrigin[1] = readcoord(); vOrigin[2] = readcoord(); diff --git a/src/client/vgui_chooseteam.qc b/src/client/vgui_chooseteam.qc index 683d4f9..5cf7661 100644 --- a/src/client/vgui_chooseteam.qc +++ b/src/client/vgui_chooseteam.qc @@ -18,56 +18,56 @@ static CUIWindow winChooseTeam; static CUIWindow winCTTeam; static CUIWindow winTTeam; -void +void T_Skin1(void) { sendevent("GamePlayerSpawn", "f", 1); winTTeam.Hide(); } -void +void T_Skin2(void) { sendevent("GamePlayerSpawn", "f", 2); winTTeam.Hide(); } -void +void T_Skin3(void) { sendevent("GamePlayerSpawn", "f", 3); winTTeam.Hide(); } -void +void T_Skin4(void) { sendevent("GamePlayerSpawn", "f", 4); winTTeam.Hide(); } -void +void CT_Skin1(void) { sendevent("GamePlayerSpawn", "f", 5); winCTTeam.Hide(); } -void +void CT_Skin2(void) { sendevent("GamePlayerSpawn", "f", 6); winCTTeam.Hide(); } -void +void CT_Skin3(void) { sendevent("GamePlayerSpawn", "f", 7); winCTTeam.Hide(); } -void +void CT_Skin4(void) { sendevent("GamePlayerSpawn", "f", 8); winCTTeam.Hide(); } -void +void VGUI_GoSpectator(void) { sendevent("GamePlayerSpawn", "f", 0); diff --git a/src/server/gamerules_multiplayer.qc b/src/server/gamerules_multiplayer.qc index 9451da6..c68a342 100644 --- a/src/server/gamerules_multiplayer.qc +++ b/src/server/gamerules_multiplayer.qc @@ -936,7 +936,8 @@ CSEv_JoinTeam_f Event Handling, called by the Client codebase via 'sendevent' ================= */ -void CSEv_JoinTeam_f(float flChar) +void +CSEv_JoinTeam_f(float flChar) { CSMultiplayerRules rules = (CSMultiplayerRules)g_grMode; player pl = (player)self; @@ -1004,7 +1005,8 @@ void CSEv_JoinTeam_f(float flChar) } } -void CSEv_JoinAuto(void) +void +CSEv_JoinAuto(void) { int ct_count = 0; int t_count = 1; diff --git a/src/server/hostage_entity.qc b/src/server/hostage_entity.qc index 0184df6..fce7b96 100644 --- a/src/server/hostage_entity.qc +++ b/src/server/hostage_entity.qc @@ -159,7 +159,7 @@ hostage_entity::Pain(void) Money_AddMoney((base_player)g_dmg_eAttacker, -(g_dmg_iDamage * 25)); } -void +void hostage_entity::Death(void) { WarnAllies(); diff --git a/src/server/item_suit.qc b/src/server/item_suit.qc index 6af786b..add8a51 100644 --- a/src/server/item_suit.qc +++ b/src/server/item_suit.qc @@ -22,7 +22,8 @@ class item_suit:CBaseTrigger virtual void(void) Respawn; }; -void item_suit::touch(void) +void +item_suit::touch(void) { player pl = (player)other; @@ -48,7 +49,8 @@ void item_suit::touch(void) } } -void item_suit::Respawn(void) +void +item_suit::Respawn(void) { SetSolid(SOLID_TRIGGER); SetMovetype(MOVETYPE_TOSS); @@ -60,7 +62,8 @@ void item_suit::Respawn(void) nextthink = -1; } -void item_suit::item_suit(void) +void +item_suit::item_suit(void) { model = "models/w_kevlar.mdl"; precache_sound("items/tr_kevlar.wav"); diff --git a/src/server/player.qc b/src/server/player.qc index 6bd06f1..c4d5f20 100644 --- a/src/server/player.qc +++ b/src/server/player.qc @@ -19,7 +19,8 @@ UseWorkaround ==================== */ -void UseWorkaround(entity eTarget) +void +UseWorkaround(entity eTarget) { eActivator = self; entity eOldSelf = self; @@ -33,7 +34,8 @@ void UseWorkaround(entity eTarget) Player_UseDown ==================== */ -void Player_UseDown(void) +void +Player_UseDown(void) { if (self.health <= 0) { return; @@ -67,14 +69,18 @@ void Player_UseDown(void) Player_UseUp ==================== */ -void Player_UseUp(void) { +void +Player_UseUp(void) +{ if (!(self.flags & FL_USE_RELEASED)) { self.flags |= FL_USE_RELEASED; } } void Weapons_Draw(void); -void CSEv_PlayerSwitchWeapon_i(int w) + +void +CSEv_PlayerSwitchWeapon_i(int w) { player pl = (player)self; pl.activeweapon = w; diff --git a/src/server/radio.h b/src/server/radio.h index 1a900c2..53d441a 100644 --- a/src/server/radio.h +++ b/src/server/radio.h @@ -1,4 +1,4 @@ -void Radio_BroadcastMessage(float fMessage) -void Radio_TeamMessage(float fMessage, float fTeam) -float Radio_DefaultStart(void) -void Radio_StartMessage(void) +void Radio_BroadcastMessage(float fMessage); +void Radio_TeamMessage(float fMessage, float fTeam); +float Radio_DefaultStart(void); +void Radio_StartMessage(void); diff --git a/src/server/server.qc b/src/server/server.qc index a3ac87b..2cd6966 100644 --- a/src/server/server.qc +++ b/src/server/server.qc @@ -24,7 +24,8 @@ Game_InitRules(void) } } -void Game_Worldspawn(void) +void +Game_Worldspawn(void) { precache_model("models/player/arctic/arctic.mdl"); precache_model("models/player/gign/gign.mdl"); diff --git a/src/server/spawn.qc b/src/server/spawn.qc index 97bce39..0b074f4 100644 --- a/src/server/spawn.qc +++ b/src/server/spawn.qc @@ -21,7 +21,8 @@ info_player_start Counter-Terrorist Spawnpoints ================= */ -void info_player_start(void) +void +info_player_start(void) { if (autocvar_fcs_swapteams == TRUE) { self.classname = "info_player_deathmatch"; @@ -36,7 +37,8 @@ info_player_deathmatch Terrorist Spawnpoints ================= */ -void info_player_deathmatch(void) +void +info_player_deathmatch(void) { if (autocvar_fcs_swapteams == TRUE) { self.classname = "info_player_start"; @@ -45,14 +47,16 @@ void info_player_deathmatch(void) } /* Counter-Strike: Source compat */ -void info_player_counterterrorist(void) +void +info_player_counterterrorist(void) { setorigin(self, self.origin + [0,0,32]); self.classname = "info_player_start"; info_player_start(); } -void info_player_terrorist(void) +void +info_player_terrorist(void) { setorigin(self, self.origin + [0,0,32]); self.classname = "info_player_deathmatch"; @@ -64,6 +68,7 @@ void info_player_terrorist(void) info_vip_start ================= */ -void info_vip_start(void) +void +info_vip_start(void) { } diff --git a/src/shared/equipment.qc b/src/shared/equipment.qc index f87c377..10282d2 100755 --- a/src/shared/equipment.qc +++ b/src/shared/equipment.qc @@ -15,7 +15,8 @@ */ #ifdef SERVER -void CSEv_PlayerBuyEquipment_f(float fID) { +void +CSEv_PlayerBuyEquipment_f(float fID) { /* if (Rules_BuyingPossible() == FALSE) { return; } diff --git a/src/shared/fx_impact.qc b/src/shared/fx_impact.qc index cdefcbd..58e32b2 100644 --- a/src/shared/fx_impact.qc +++ b/src/shared/fx_impact.qc @@ -42,7 +42,7 @@ FX_Impact_Init(void) #endif void -FX_Impact(int iType, vector vecPos, vector vNormal) +FX_Impact(impactType_t iType, vector vecPos, vector vNormal) { #ifdef SERVER WriteByte(MSG_MULTICAST, SVC_CGAMEPACKET); diff --git a/src/shared/player.h b/src/shared/player.h index ebb0c70..e1e44ba 100644 --- a/src/shared/player.h +++ b/src/shared/player.h @@ -41,154 +41,61 @@ enumflags PLAYER_CSSHOTTIME }; -enumflags -{ - AMMO1_USP45, - AMMO1_GLOCK18, - AMMO1_DEAGLE, - AMMO1_P228, - AMMO1_ELITES, - AMMO1_FIVESEVEN, - AMMO1_M3, - AMMO1_XM1014, - AMMO1_MP5, - AMMO1_P90, - AMMO1_UMP45, - AMMO1_MAC10, - AMMO1_TMP, - AMMO1_AK47, - AMMO1_SG552, - AMMO1_M4A1, - AMMO1_AUG, - AMMO1_SCOUT, - AMMO1_AWP, - AMMO1_G3SG1, - AMMO1_SG550, - AMMO1_PARA, -}; - -enumflags -{ - AMMO2_50AE, - AMMO2_762MM, - AMMO2_556MM, - AMMO2_556MMBOX, - AMMO2_338MAG, - AMMO2_9MM, - AMMO2_BUCKSHOT, - AMMO2_45ACP, - AMMO2_357SIG, - AMMO2_57MM, - AMMO2_HEGRENADE, - AMMO2_FBGRENADE, - AMMO2_SMOKEGRENADE, -}; - -enumflags -{ - AMMO3_MODE_USP45, - AMMO3_MODE_M4A1, - AMMO3_MODE_GLOCK18, -}; - noref int input_sequence; class player:base_player { int ingame; - int ammo_50ae; - int ammo_50ae_net; - int ammo_762mm; - int ammo_762mm_net; - int ammo_556mm; - int ammo_556mm_net; - int ammo_556mmbox; - int ammo_556mmbox_net; - int ammo_338mag; - int ammo_338mag_net; - int ammo_9mm; - int ammo_9mm_net; - int ammo_buckshot; - int ammo_buckshot_net; - int ammo_45acp; - int ammo_45acp_net; - int ammo_357sig; - int ammo_357sig_net; - int ammo_57mm; - int ammo_57mm_net; - int ammo_hegrenade; - int ammo_hegrenade_net; - int ammo_fbgrenade; - int ammo_fbgrenade_net; - int ammo_smokegrenade; - int ammo_smokegrenade_net; + PREDICTED_INT(usp45_mag); + PREDICTED_INT(glock18_mag); + PREDICTED_INT(deagle_mag); + PREDICTED_INT(p228_mag); + PREDICTED_INT(elites_mag); + PREDICTED_INT(fiveseven_mag); + PREDICTED_INT(m3_mag); + PREDICTED_INT(xm1014_mag); + PREDICTED_INT(mp5_mag); + PREDICTED_INT(p90_mag); + PREDICTED_INT(ump45_mag); + PREDICTED_INT(mac10_mag); + PREDICTED_INT(tmp_mag); + PREDICTED_INT(ak47_mag); + PREDICTED_INT(sg552_mag); + PREDICTED_INT(m4a1_mag); + PREDICTED_INT(aug_mag); + PREDICTED_INT(scout_mag); + PREDICTED_INT(awp_mag); + PREDICTED_INT(g3sg1_mag); + PREDICTED_INT(sg550_mag); + PREDICTED_INT(para_mag); - /* Weapon specific */ - int usp45_mag; - int usp45_mag_net; - int glock18_mag; - int glock18_mag_net; - int deagle_mag; - int deagle_mag_net; - int p228_mag; - int p228_mag_net; - int elites_mag; - int elites_mag_net; - int fiveseven_mag; - int fiveseven_mag_net; - int m3_mag; - int m3_mag_net; - int xm1014_mag; - int xm1014_mag_net; - int mp5_mag; - int mp5_mag_net; - int p90_mag; - int p90_mag_net; - int ump45_mag; - int ump45_mag_net; - int mac10_mag; - int mac10_mag_net; - int tmp_mag; - int tmp_mag_net; - int ak47_mag; - int ak47_mag_net; - int sg552_mag; - int sg552_mag_net; - int m4a1_mag; - int m4a1_mag_net; - int aug_mag; - int aug_mag_net; - int scout_mag; - int scout_mag_net; - int awp_mag; - int awp_mag_net; - int g3sg1_mag; - int g3sg1_mag_net; - int sg550_mag; - int sg550_mag_net; - int para_mag; - int para_mag_net; + PREDICTED_INT(ammo_50ae); + PREDICTED_INT(ammo_762mm); + PREDICTED_INT(ammo_556mm); + PREDICTED_INT(ammo_556mmbox); + PREDICTED_INT(ammo_338mag); + PREDICTED_INT(ammo_9mm); + PREDICTED_INT(ammo_buckshot); + PREDICTED_INT(ammo_45acp); + PREDICTED_INT(ammo_357sig); + PREDICTED_INT(ammo_57mm); + PREDICTED_INT(ammo_hegrenade); + PREDICTED_INT(ammo_fbgrenade); + PREDICTED_INT(ammo_smokegrenade); - int mode_usp45; - int mode_usp45_net; - int mode_m4a1; - int mode_m4a1_net; - int mode_glock18; - int mode_glock18_net; + PREDICTED_INT(mode_usp45); + PREDICTED_INT(mode_m4a1); + PREDICTED_INT(mode_glock18); + PREDICTED_INT(mode_temp); - int mode_temp; - int mode_temp_net; + PREDICTED_INT(cs_shotmultiplier); + PREDICTED_FLOAT(cs_shottime); - int cs_shotmultiplier; - int cs_shotmultiplier_net; - float cs_shottime; - float cs_shottime_net; - - float anim_top; float anim_top_net; - float anim_top_time; float anim_top_time_net; - float anim_top_delay; float anim_top_delay_net; - float anim_bottom; float anim_bottom_net; - float anim_bottom_time; float anim_bottom_time_net; + PREDICTED_FLOAT(anim_top); + PREDICTED_FLOAT(anim_top_time); + PREDICTED_FLOAT(anim_top_delay); + PREDICTED_FLOAT(anim_bottom); + PREDICTED_FLOAT(anim_bottom_time); #ifdef CLIENT /* External model */ @@ -205,7 +112,7 @@ class player:base_player virtual void(void) draw; virtual float() predraw; virtual void(void) postdraw; - virtual void(float) ReceiveEntity; + virtual void(float, float) ReceiveEntity; virtual void(void) PredictPreFrame; virtual void(void) PredictPostFrame; #else @@ -227,65 +134,9 @@ player::ReceiveEntity ================= */ void -player::ReceiveEntity(float new) +player::ReceiveEntity(float new, float fl) { - float fl; - - /* seed for our prediction table */ - sequence = servercommandframe; - - fl = readfloat(); - - /* HACK: we need to make this more reliable */ - if (fl == UPDATE_ALL) { - /* we respawned */ - gravity = __NULL__; - } - - if (fl & PLAYER_MODELINDEX) - modelindex = readshort(); - - if (fl & PLAYER_ORIGIN) { - origin[0] = readcoord(); - origin[1] = readcoord(); - } - - if (fl & PLAYER_ORIGIN_Z) - origin[2] = readcoord(); - if (fl & PLAYER_ANGLES_X) - v_angle[0] = pitch = readfloat(); - if (fl & PLAYER_ANGLES_Y) { - angles[1] = readfloat(); - v_angle[1] = readfloat(); - } - if (fl & PLAYER_ANGLES_Z) { - angles[2] = readfloat(); - v_angle[1] = readfloat(); - } - - if (fl & PLAYER_VELOCITY) { - velocity[0] = readcoord(); - velocity[1] = readcoord(); - } - - if (fl & PLAYER_VELOCITY_Z) - velocity[2] = readcoord(); - if (fl & PLAYER_FLAGS) { - flags = readfloat(); - gflags = readfloat(); - } - if (fl & PLAYER_WEAPON) - activeweapon = readbyte(); - if (fl & PLAYER_ITEMS) - g_items = (__variant)readfloat(); - if (fl & PLAYER_HEALTH) - health = readbyte(); - if (fl & PLAYER_ARMOR) - armor = readbyte(); - if (fl & PLAYER_MOVETYPE) - movetype = readbyte(); - if (fl & PLAYER_VIEWOFS) - view_ofs[2] = readfloat(); + base_player::ReceiveEntity(new, fl); /* animation */ if (fl & PLAYER_TOPFRAME) { @@ -370,56 +221,58 @@ so we can roll them back later. void player::PredictPreFrame(void) { - usp45_mag_net = usp45_mag; - glock18_mag_net = glock18_mag; - deagle_mag_net = deagle_mag; - p228_mag_net = p228_mag; - elites_mag_net = elites_mag; - fiveseven_mag_net = fiveseven_mag; - m3_mag_net = m3_mag; - xm1014_mag_net = xm1014_mag; - mp5_mag_net = mp5_mag; - p90_mag_net = p90_mag; - ump45_mag_net = ump45_mag; - mac10_mag_net = mac10_mag; - tmp_mag_net = tmp_mag; - ak47_mag_net = ak47_mag; - sg552_mag_net = sg552_mag; - m4a1_mag_net = m4a1_mag; - aug_mag_net = aug_mag; - scout_mag_net = scout_mag; - awp_mag_net = awp_mag; - g3sg1_mag_net = g3sg1_mag; - sg550_mag_net = sg550_mag; - para_mag_net = para_mag; + base_player::PredictPreFrame(); - ammo_50ae_net = ammo_50ae; - ammo_762mm_net = ammo_762mm; - ammo_556mm_net = ammo_556mm; - ammo_556mmbox_net = ammo_556mmbox; - ammo_338mag_net = ammo_338mag; - ammo_9mm_net = ammo_9mm; - ammo_buckshot_net = ammo_buckshot; - ammo_45acp_net = ammo_45acp; - ammo_357sig_net = ammo_357sig; - ammo_57mm_net = ammo_57mm; - ammo_hegrenade_net = ammo_hegrenade; - ammo_fbgrenade_net = ammo_fbgrenade; - ammo_smokegrenade_net = ammo_smokegrenade; + SAVE_STATE(usp45_mag); + SAVE_STATE(glock18_mag); + SAVE_STATE(deagle_mag); + SAVE_STATE(p228_mag); + SAVE_STATE(elites_mag); + SAVE_STATE(fiveseven_mag); + SAVE_STATE(m3_mag); + SAVE_STATE(xm1014_mag); + SAVE_STATE(mp5_mag); + SAVE_STATE(p90_mag); + SAVE_STATE(ump45_mag); + SAVE_STATE(mac10_mag); + SAVE_STATE(tmp_mag); + SAVE_STATE(ak47_mag); + SAVE_STATE(sg552_mag); + SAVE_STATE(m4a1_mag); + SAVE_STATE(aug_mag); + SAVE_STATE(scout_mag); + SAVE_STATE(awp_mag); + SAVE_STATE(g3sg1_mag); + SAVE_STATE(sg550_mag); + SAVE_STATE(para_mag); - mode_usp45_net = mode_usp45; - mode_m4a1_net = mode_m4a1; - mode_glock18_net = mode_glock18; - mode_temp_net = mode_temp; + SAVE_STATE(ammo_50ae); + SAVE_STATE(ammo_762mm); + SAVE_STATE(ammo_556mm); + SAVE_STATE(ammo_556mmbox); + SAVE_STATE(ammo_338mag); + SAVE_STATE(ammo_9mm); + SAVE_STATE(ammo_buckshot); + SAVE_STATE(ammo_45acp); + SAVE_STATE(ammo_357sig); + SAVE_STATE(ammo_57mm); + SAVE_STATE(ammo_hegrenade); + SAVE_STATE(ammo_fbgrenade); + SAVE_STATE(ammo_smokegrenade); - cs_shotmultiplier_net = cs_shotmultiplier; - cs_shottime_net = cs_shottime; + SAVE_STATE(mode_usp45); + SAVE_STATE(mode_m4a1); + SAVE_STATE(mode_glock18); + SAVE_STATE(mode_temp); - anim_top_net = anim_top; - anim_top_delay_net = anim_top_delay; - anim_top_time_net = anim_top_time; - anim_bottom_net = anim_bottom; - anim_bottom_time_net = anim_bottom_time; + SAVE_STATE(cs_shotmultiplier); + SAVE_STATE(cs_shottime); + + SAVE_STATE(anim_top); + SAVE_STATE(anim_top_time); + SAVE_STATE(anim_top_delay); + SAVE_STATE(anim_bottom); + SAVE_STATE(anim_bottom_time); } /* @@ -432,117 +285,65 @@ Where we roll back our values to the ones last sent/verified by the server. void player::PredictPostFrame(void) { - usp45_mag = usp45_mag_net; - glock18_mag = glock18_mag_net; - deagle_mag = deagle_mag_net; - p228_mag = p228_mag_net; - elites_mag = elites_mag_net; - fiveseven_mag = fiveseven_mag_net; - m3_mag = m3_mag_net; - xm1014_mag = xm1014_mag_net; - mp5_mag = mp5_mag_net; - p90_mag = p90_mag_net; - ump45_mag = ump45_mag_net; - mac10_mag = mac10_mag_net; - tmp_mag = tmp_mag_net; - ak47_mag = ak47_mag_net; - sg552_mag = sg552_mag_net; - m4a1_mag = m4a1_mag_net; - aug_mag = aug_mag_net; - scout_mag = scout_mag_net; - awp_mag = awp_mag_net; - g3sg1_mag = g3sg1_mag_net; - sg550_mag = sg550_mag_net; - para_mag = para_mag_net; + base_player::PredictPostFrame(); - ammo_50ae = ammo_50ae_net; - ammo_762mm = ammo_762mm_net; - ammo_556mm = ammo_556mm_net; - ammo_556mmbox = ammo_556mmbox_net; - ammo_338mag = ammo_338mag_net; - ammo_9mm = ammo_9mm_net; - ammo_buckshot = ammo_buckshot_net; - ammo_45acp = ammo_45acp_net; - ammo_357sig = ammo_357sig_net; - ammo_57mm = ammo_57mm_net; - ammo_hegrenade = ammo_hegrenade_net; - ammo_fbgrenade = ammo_fbgrenade_net; - ammo_smokegrenade = ammo_smokegrenade_net; + ROLL_BACK(usp45_mag); + ROLL_BACK(glock18_mag); + ROLL_BACK(deagle_mag); + ROLL_BACK(p228_mag); + ROLL_BACK(elites_mag); + ROLL_BACK(fiveseven_mag); + ROLL_BACK(m3_mag); + ROLL_BACK(xm1014_mag); + ROLL_BACK(mp5_mag); + ROLL_BACK(p90_mag); + ROLL_BACK(ump45_mag); + ROLL_BACK(mac10_mag); + ROLL_BACK(tmp_mag); + ROLL_BACK(ak47_mag); + ROLL_BACK(sg552_mag); + ROLL_BACK(m4a1_mag); + ROLL_BACK(aug_mag); + ROLL_BACK(scout_mag); + ROLL_BACK(awp_mag); + ROLL_BACK(g3sg1_mag); + ROLL_BACK(sg550_mag); + ROLL_BACK(para_mag); - mode_usp45 = mode_usp45_net; - mode_m4a1 = mode_m4a1_net; - mode_glock18 = mode_glock18_net; - mode_temp = mode_temp_net; + ROLL_BACK(ammo_50ae); + ROLL_BACK(ammo_762mm); + ROLL_BACK(ammo_556mm); + ROLL_BACK(ammo_556mmbox); + ROLL_BACK(ammo_338mag); + ROLL_BACK(ammo_9mm); + ROLL_BACK(ammo_buckshot); + ROLL_BACK(ammo_45acp); + ROLL_BACK(ammo_357sig); + ROLL_BACK(ammo_57mm); + ROLL_BACK(ammo_hegrenade); + ROLL_BACK(ammo_fbgrenade); + ROLL_BACK(ammo_smokegrenade); - cs_shotmultiplier = cs_shotmultiplier_net; - cs_shottime = cs_shottime_net; + ROLL_BACK(mode_usp45); + ROLL_BACK(mode_m4a1); + ROLL_BACK(mode_glock18); + ROLL_BACK(mode_temp); - anim_top = anim_top_net; - anim_top_delay = anim_top_delay_net; - anim_top_time = anim_top_time_net; - anim_bottom = anim_bottom_net; - anim_bottom_time = anim_bottom_time_net; + ROLL_BACK(cs_shotmultiplier); + ROLL_BACK(cs_shottime); + + ROLL_BACK(anim_top); + ROLL_BACK(anim_top_time); + ROLL_BACK(anim_top_delay); + ROLL_BACK(anim_bottom); + ROLL_BACK(anim_bottom_time); } #else void player::EvaluateEntity(void) { - SendFlags |= PLAYER_KEEPALIVE; - - if (old_modelindex != modelindex) - SendFlags |= PLAYER_MODELINDEX; - - if (old_origin[0] != origin[0]) - SendFlags |= PLAYER_ORIGIN; - - if (old_origin[1] != origin[1]) - SendFlags |= PLAYER_ORIGIN; - - if (old_origin[2] != origin[2]) - SendFlags |= PLAYER_ORIGIN_Z; - - if (old_angles[0] != v_angle[0]) - SendFlags |= PLAYER_ANGLES_X; - - if (old_angles[1] != angles[1]) - SendFlags |= PLAYER_ANGLES_Y; - - if (old_angles[2] != angles[2]) - SendFlags |= PLAYER_ANGLES_Z; - - if (old_velocity[0] != velocity[0]) - SendFlags |= PLAYER_VELOCITY; - - if (old_velocity[1] != velocity[1]) - SendFlags |= PLAYER_VELOCITY; - - if (old_velocity[2] != velocity[2]) - SendFlags |= PLAYER_VELOCITY_Z; - - if (old_flags != flags) - SendFlags |= PLAYER_FLAGS; - - if (old_gflags != gflags) - SendFlags |= PLAYER_FLAGS; - - if (old_activeweapon != activeweapon) - SendFlags |= PLAYER_WEAPON; - - if (old_items != g_items) - SendFlags |= PLAYER_ITEMS; - - if (old_health != health) - SendFlags |= PLAYER_HEALTH; - - if (old_armor != armor) - SendFlags |= PLAYER_ARMOR; - - if (old_movetype != movetype) - SendFlags |= PLAYER_MOVETYPE; - - if (old_viewofs != view_ofs[2]) - SendFlags |= PLAYER_VIEWOFS; + base_player::EvaluateEntity(); /* animation */ if (anim_bottom_net != anim_bottom || anim_bottom_time != anim_bottom_time_net) @@ -551,160 +352,144 @@ player::EvaluateEntity(void) SendFlags |= PLAYER_TOPFRAME; /* ammo 1 type updates */ - if (glock18_mag_net != glock18_mag) + if (ATTR_CHANGED(glock18_mag)) SendFlags |= PLAYER_AMMO1; - if (usp45_mag_net != usp45_mag) + else if (ATTR_CHANGED(usp45_mag)) SendFlags |= PLAYER_AMMO1; - if (glock18_mag_net != glock18_mag) + else if (ATTR_CHANGED(glock18_mag)) SendFlags |= PLAYER_AMMO1; - if (deagle_mag_net != deagle_mag) + else if (ATTR_CHANGED(deagle_mag)) SendFlags |= PLAYER_AMMO1; - if (p228_mag_net != p228_mag) + else if (ATTR_CHANGED(p228_mag)) SendFlags |= PLAYER_AMMO1; - if (elites_mag_net != elites_mag) + else if (ATTR_CHANGED(elites_mag)) SendFlags |= PLAYER_AMMO1; - if (fiveseven_mag_net != fiveseven_mag) + else if (ATTR_CHANGED(fiveseven_mag)) SendFlags |= PLAYER_AMMO1; - if (m3_mag_net != m3_mag) + else if (ATTR_CHANGED(m3_mag)) SendFlags |= PLAYER_AMMO1; - if (xm1014_mag_net != xm1014_mag) + else if (ATTR_CHANGED(xm1014_mag)) SendFlags |= PLAYER_AMMO1; - if (mp5_mag_net != mp5_mag) + else if (ATTR_CHANGED(mp5_mag)) SendFlags |= PLAYER_AMMO1; - if (p90_mag_net != p90_mag) + else if (ATTR_CHANGED(p90_mag)) SendFlags |= PLAYER_AMMO1; - if (ump45_mag_net != ump45_mag) + else if (ATTR_CHANGED(ump45_mag)) SendFlags |= PLAYER_AMMO1; - if (mac10_mag_net != mac10_mag) + else if (ATTR_CHANGED(mac10_mag)) SendFlags |= PLAYER_AMMO1; - if (tmp_mag_net != tmp_mag) + else if (ATTR_CHANGED(tmp_mag)) SendFlags |= PLAYER_AMMO1; - if (ak47_mag_net != ak47_mag) + else if (ATTR_CHANGED(ak47_mag)) SendFlags |= PLAYER_AMMO1; - if (sg552_mag_net != sg552_mag) + else if (ATTR_CHANGED(sg552_mag)) SendFlags |= PLAYER_AMMO1; - if (m4a1_mag_net != m4a1_mag) + else if (ATTR_CHANGED(m4a1_mag)) SendFlags |= PLAYER_AMMO1; - if (aug_mag_net != aug_mag) + else if (ATTR_CHANGED(aug_mag)) SendFlags |= PLAYER_AMMO1; - if (scout_mag_net != scout_mag) + else if (ATTR_CHANGED(scout_mag)) SendFlags |= PLAYER_AMMO1; - if (awp_mag_net != awp_mag) + else if (ATTR_CHANGED(awp_mag)) SendFlags |= PLAYER_AMMO1; - if (g3sg1_mag_net != g3sg1_mag) + else if (ATTR_CHANGED(g3sg1_mag)) SendFlags |= PLAYER_AMMO1; - if (sg550_mag_net != sg550_mag) + else if (ATTR_CHANGED(sg550_mag)) SendFlags |= PLAYER_AMMO1; - if (para_mag_net != para_mag) + else if (ATTR_CHANGED(para_mag)) SendFlags |= PLAYER_AMMO1; - if (ammo_50ae_net != ammo_50ae) + if (ATTR_CHANGED(ammo_50ae)) SendFlags |= PLAYER_AMMO2; - if (ammo_762mm_net != ammo_762mm) + else if (ATTR_CHANGED(ammo_762mm)) SendFlags |= PLAYER_AMMO2; - if (ammo_556mm_net != ammo_556mm) + else if (ATTR_CHANGED(ammo_556mm)) SendFlags |= PLAYER_AMMO2; - if (ammo_556mmbox_net != ammo_556mmbox) + else if (ATTR_CHANGED(ammo_556mmbox)) SendFlags |= PLAYER_AMMO2; - if (ammo_338mag_net != ammo_338mag) + else if (ATTR_CHANGED(ammo_338mag)) SendFlags |= PLAYER_AMMO2; - if (ammo_9mm_net != ammo_9mm) + else if (ATTR_CHANGED(ammo_9mm)) SendFlags |= PLAYER_AMMO2; - if (ammo_buckshot_net != ammo_buckshot) + else if (ATTR_CHANGED(ammo_buckshot)) SendFlags |= PLAYER_AMMO2; - if (ammo_45acp_net != ammo_45acp) + else if (ATTR_CHANGED(ammo_45acp)) SendFlags |= PLAYER_AMMO2; - if (ammo_357sig_net != ammo_357sig) + else if (ATTR_CHANGED(ammo_357sig)) SendFlags |= PLAYER_AMMO2; - if (ammo_57mm_net != ammo_57mm) + else if (ATTR_CHANGED(ammo_57mm)) SendFlags |= PLAYER_AMMO2; - if (ammo_hegrenade_net != ammo_hegrenade) + else if (ATTR_CHANGED(ammo_hegrenade)) SendFlags |= PLAYER_AMMO2; - if (ammo_fbgrenade_net != ammo_fbgrenade) + else if (ATTR_CHANGED(ammo_fbgrenade)) SendFlags |= PLAYER_AMMO2; - if (ammo_smokegrenade_net != ammo_smokegrenade) + else if (ATTR_CHANGED(ammo_smokegrenade)) SendFlags |= PLAYER_AMMO2; - if (mode_usp45_net != mode_usp45) + if (ATTR_CHANGED(mode_usp45)) SendFlags |= PLAYER_AMMO3; - if (mode_m4a1_net != mode_m4a1) + else if (ATTR_CHANGED(mode_m4a1)) SendFlags |= PLAYER_AMMO3; - if (mode_glock18_net != mode_glock18) + else if (ATTR_CHANGED(mode_glock18)) SendFlags |= PLAYER_AMMO3; - if (mode_temp_net != mode_temp) + else if (ATTR_CHANGED(mode_temp)) SendFlags |= PLAYER_AMMO3; - if (cs_shotmultiplier != cs_shotmultiplier_net) + + if (ATTR_CHANGED(cs_shotmultiplier)) SendFlags |= PLAYER_CSSHOT; - if (cs_shottime != cs_shottime_net) + if (ATTR_CHANGED(cs_shottime)) SendFlags |= PLAYER_CSSHOTTIME; - old_modelindex = modelindex; - old_origin = origin; - old_angles = angles; - old_angles[0] = v_angle[0]; - old_velocity = velocity; - old_flags = flags; - old_gflags = gflags; - old_activeweapon = activeweapon; - old_items = g_items; - old_health = health; - old_armor = armor; - old_movetype = movetype; - old_viewofs = view_ofs[2]; - old_baseframe = baseframe; - old_frame = frame; + SAVE_STATE(usp45_mag); + SAVE_STATE(glock18_mag); + SAVE_STATE(deagle_mag); + SAVE_STATE(p228_mag); + SAVE_STATE(elites_mag); + SAVE_STATE(fiveseven_mag); + SAVE_STATE(m3_mag); + SAVE_STATE(xm1014_mag); + SAVE_STATE(mp5_mag); + SAVE_STATE(p90_mag); + SAVE_STATE(ump45_mag); + SAVE_STATE(mac10_mag); + SAVE_STATE(tmp_mag); + SAVE_STATE(ak47_mag); + SAVE_STATE(sg552_mag); + SAVE_STATE(m4a1_mag); + SAVE_STATE(aug_mag); + SAVE_STATE(scout_mag); + SAVE_STATE(awp_mag); + SAVE_STATE(g3sg1_mag); + SAVE_STATE(sg550_mag); + SAVE_STATE(para_mag); - glock18_mag_net = glock18_mag; - usp45_mag_net = usp45_mag; - glock18_mag_net = glock18_mag; - deagle_mag_net = deagle_mag; - p228_mag_net = p228_mag; - elites_mag_net = elites_mag; - fiveseven_mag_net = fiveseven_mag; - m3_mag_net = m3_mag; - xm1014_mag_net = xm1014_mag; - mp5_mag_net = mp5_mag; - p90_mag_net = p90_mag; - ump45_mag_net = ump45_mag; - mac10_mag_net = mac10_mag; - tmp_mag_net = tmp_mag; - ak47_mag_net = ak47_mag; - sg552_mag_net = sg552_mag; - m4a1_mag_net = m4a1_mag; - aug_mag_net = aug_mag; - scout_mag_net = scout_mag; - awp_mag_net = awp_mag; - g3sg1_mag_net = g3sg1_mag; - sg550_mag_net = sg550_mag; - para_mag_net = para_mag; + SAVE_STATE(ammo_50ae); + SAVE_STATE(ammo_762mm); + SAVE_STATE(ammo_556mm); + SAVE_STATE(ammo_556mmbox); + SAVE_STATE(ammo_338mag); + SAVE_STATE(ammo_9mm); + SAVE_STATE(ammo_buckshot); + SAVE_STATE(ammo_45acp); + SAVE_STATE(ammo_357sig); + SAVE_STATE(ammo_57mm); + SAVE_STATE(ammo_hegrenade); + SAVE_STATE(ammo_fbgrenade); + SAVE_STATE(ammo_smokegrenade); - ammo_50ae_net = ammo_50ae; - ammo_762mm_net = ammo_762mm; - ammo_556mm_net = ammo_556mm; - ammo_556mmbox_net = ammo_556mmbox; - ammo_338mag_net = ammo_338mag; - ammo_9mm_net = ammo_9mm; - ammo_buckshot_net = ammo_buckshot; - ammo_45acp_net = ammo_45acp; - ammo_357sig_net = ammo_357sig; - ammo_57mm_net = ammo_57mm; - ammo_hegrenade_net = ammo_hegrenade; - ammo_fbgrenade_net = ammo_fbgrenade; - ammo_smokegrenade_net = ammo_smokegrenade; + SAVE_STATE(mode_usp45); + SAVE_STATE(mode_m4a1); + SAVE_STATE(mode_glock18); + SAVE_STATE(mode_temp); - mode_usp45_net = mode_usp45; - mode_m4a1_net = mode_m4a1; - mode_glock18_net = mode_glock18; - mode_temp_net = mode_temp; + SAVE_STATE(cs_shotmultiplier); + SAVE_STATE(cs_shottime); - cs_shotmultiplier_net = cs_shotmultiplier; - cs_shottime_net = cs_shottime; - - anim_top_net = anim_top; - anim_top_delay_net = anim_top_delay; - anim_top_time_net = anim_top_time; - anim_bottom_net = anim_bottom; - anim_bottom_time_net = anim_bottom_time; + SAVE_STATE(anim_top); + SAVE_STATE(anim_top_time); + SAVE_STATE(anim_top_delay); + SAVE_STATE(anim_bottom); + SAVE_STATE(anim_bottom_time); if (g_cs_gamestate != GAME_FREEZE) { if (progress <= 0.0f) { @@ -743,47 +528,7 @@ player::SendEntity(entity ePEnt, float fChanged) WriteByte(MSG_ENTITY, ENT_PLAYER); WriteFloat(MSG_ENTITY, fChanged); - /* really trying to get our moneys worth with 23 bits of mantissa */ - if (fChanged & PLAYER_MODELINDEX) - WriteShort(MSG_ENTITY, modelindex); - if (fChanged & PLAYER_ORIGIN) { - WriteCoord(MSG_ENTITY, origin[0]); - WriteCoord(MSG_ENTITY, origin[1]); - } - if (fChanged & PLAYER_ORIGIN_Z) - WriteCoord(MSG_ENTITY, origin[2]); - if (fChanged & PLAYER_ANGLES_X) - WriteFloat(MSG_ENTITY, v_angle[0]); - if (fChanged & PLAYER_ANGLES_Y) { - WriteFloat(MSG_ENTITY, angles[1]); - WriteFloat(MSG_ENTITY, v_angle[1]); - } - if (fChanged & PLAYER_ANGLES_Z) { - WriteFloat(MSG_ENTITY, angles[2]); - WriteFloat(MSG_ENTITY, v_angle[2]); - } - if (fChanged & PLAYER_VELOCITY) { - WriteCoord(MSG_ENTITY, velocity[0]); - WriteCoord(MSG_ENTITY, velocity[1]); - } - if (fChanged & PLAYER_VELOCITY_Z) - WriteCoord(MSG_ENTITY, velocity[2]); - if (fChanged & PLAYER_FLAGS) { - WriteFloat(MSG_ENTITY, flags); - WriteFloat(MSG_ENTITY, gflags); - } - if (fChanged & PLAYER_WEAPON) - WriteByte(MSG_ENTITY, activeweapon); - if (fChanged & PLAYER_ITEMS) - WriteFloat(MSG_ENTITY, (__variant)g_items); - if (fChanged & PLAYER_HEALTH) - WriteByte(MSG_ENTITY, bound(0, health, 255)); - if (fChanged & PLAYER_ARMOR) - WriteByte(MSG_ENTITY, armor); - if (fChanged & PLAYER_MOVETYPE) - WriteByte(MSG_ENTITY, movetype); - if (fChanged & PLAYER_VIEWOFS) - WriteFloat(MSG_ENTITY, view_ofs[2]); + base_player::SendEntity(ePEnt, fChanged); if (fChanged & PLAYER_TOPFRAME) { WriteByte(MSG_ENTITY, anim_top); diff --git a/src/shared/w_ak47.qc b/src/shared/w_ak47.qc index 8c070ce..4690f4f 100644 --- a/src/shared/w_ak47.qc +++ b/src/shared/w_ak47.qc @@ -28,7 +28,8 @@ Terrorists only weapon */ #ifdef CLIENT -void w_rifle_ejectshell(void) +void +w_rifle_ejectshell(void) { static void w_rifle_ejectshell_death(void) { remove(self); @@ -157,9 +158,6 @@ w_ak47_primary(void) float accuracy = Cstrike_CalculateAccuracy(pl, 200); pl.ak47_mag--; -#ifdef CLIENT - View_SetMuzzleflash(MUZZLE_RIFLE); - int r = (float)input_sequence % 3; switch (r) { case 0: @@ -172,16 +170,18 @@ w_ak47_primary(void) Weapons_ViewAnimation(AK47_SHOOT3); break; } - View_AddEvent(w_rifle_ejectshell, 0.0f); -#else - TraceAttack_SetPenetrationPower(1); - TraceAttack_FireBullets(1, pl.origin + pl.view_ofs, 36, [accuracy,accuracy], WEAPON_AK47); if (self.flags & FL_CROUCHING) Animation_PlayerTop(pl, ANIM_SHOOT_AK47, 0.45f); else Animation_PlayerTop(pl, ANIM_CROUCH_SHOOT_AK47, 0.45f); - + +#ifdef CLIENT + View_SetMuzzleflash(MUZZLE_RIFLE); + View_AddEvent(w_rifle_ejectshell, 0.0f); +#else + TraceAttack_SetPenetrationPower(1); + TraceAttack_FireBullets(1, pl.origin + pl.view_ofs, 36, [accuracy,accuracy], WEAPON_AK47); Sound_Play(pl, CHAN_WEAPON, "weapon_ak47.fire"); #endif @@ -204,9 +204,9 @@ w_ak47_reload(void) return; } -#ifdef CLIENT Weapons_ViewAnimation(AK47_RELOAD); -#else + +#ifdef SERVER Weapons_ReloadWeapon(pl, player::ak47_mag, player::ammo_762mm, 30); #endif diff --git a/src/shared/w_aug.qc b/src/shared/w_aug.qc index e9601bc..300ec3c 100644 --- a/src/shared/w_aug.qc +++ b/src/shared/w_aug.qc @@ -124,9 +124,6 @@ w_aug_primary(void) float accuracy = Cstrike_CalculateAccuracy(pl, 215); pl.aug_mag--; -#ifdef CLIENT - View_SetMuzzleflash(MUZZLE_RIFLE); - int r = (float)input_sequence % 3; switch (r) { case 0: @@ -139,16 +136,18 @@ w_aug_primary(void) Weapons_ViewAnimation(AUG_SHOOT3); break; } - View_AddEvent(w_rifle_ejectshell, 0.0f); -#else - TraceAttack_SetPenetrationPower(1); - TraceAttack_FireBullets(1, pl.origin + pl.view_ofs, 32, [accuracy,accuracy], WEAPON_AUG); if (self.flags & FL_CROUCHING) Animation_PlayerTop(pl, ANIM_SHOOT_RIFLE, 0.45f); else Animation_PlayerTop(pl, ANIM_CROUCH_SHOOT_RIFLE, 0.45f); +#ifdef CLIENT + View_SetMuzzleflash(MUZZLE_RIFLE); + View_AddEvent(w_rifle_ejectshell, 0.0f); +#else + TraceAttack_SetPenetrationPower(1); + TraceAttack_FireBullets(1, pl.origin + pl.view_ofs, 32, [accuracy,accuracy], WEAPON_AUG); Sound_Play(pl, CHAN_WEAPON, "weapon_aug.fire"); #endif @@ -190,10 +189,9 @@ w_aug_reload(void) if (!pl.ammo_762mm) { return; } - -#ifdef CLIENT Weapons_ViewAnimation(AUG_RELOAD); -#else + +#ifdef SERVER Weapons_ReloadWeapon(pl, player::aug_mag, player::ammo_762mm, 30); #endif diff --git a/src/shared/w_awp.qc b/src/shared/w_awp.qc index f2424b3..5c643fc 100644 --- a/src/shared/w_awp.qc +++ b/src/shared/w_awp.qc @@ -27,7 +27,8 @@ Price: $4750 */ #ifdef CLIENT -void w_sniper_ejectshell(void) +void +w_sniper_ejectshell(void) { static void w_sniper_ejectshelldeath(void) { remove(self); @@ -212,9 +213,6 @@ w_awp_primary(void) float accuracy = Cstrike_CalculateAccuracy(pl, -1); pl.awp_mag--; -#ifdef CLIENT - View_SetMuzzleflash(MUZZLE_RIFLE); - int r = (float)input_sequence % 3; switch (r) { case 0: @@ -227,16 +225,19 @@ w_awp_primary(void) Weapons_ViewAnimation(AWP_SHOOT3); break; } - View_AddEvent(w_sniper_ejectshell, 0.9f); -#else - TraceAttack_SetPenetrationPower(2); - TraceAttack_FireBullets(1, pl.origin + pl.view_ofs, 115, [accuracy,accuracy], WEAPON_AWP); if (self.flags & FL_CROUCHING) Animation_PlayerTop(pl, ANIM_SHOOT_RIFLE, 0.45f); else Animation_PlayerTop(pl, ANIM_CROUCH_SHOOT_RIFLE, 0.45f); +#ifdef CLIENT + View_SetMuzzleflash(MUZZLE_RIFLE); + View_AddEvent(w_sniper_ejectshell, 0.9f); +#else + TraceAttack_SetPenetrationPower(2); + TraceAttack_FireBullets(1, pl.origin + pl.view_ofs, 115, [accuracy,accuracy], WEAPON_AWP); + Sound_Play(pl, CHAN_WEAPON, "weapon_awp.fire"); #endif @@ -249,19 +250,16 @@ w_awp_reload(void) { player pl = (player)self; - if (pl.w_attack_next > 0.0) { + if (pl.w_attack_next > 0.0) return; - } - if (pl.awp_mag >= 10) { + if (pl.awp_mag >= 10) return; - } - if (!pl.ammo_338mag) { + if (!pl.ammo_338mag) return; - } -#ifdef CLIENT Weapons_ViewAnimation(AWP_RELOAD); -#else + +#ifdef SERVER Weapons_ReloadWeapon(pl, player::awp_mag, player::ammo_338mag, 10); #endif diff --git a/src/shared/w_deagle.qc b/src/shared/w_deagle.qc index d22e06c..94cc194 100644 --- a/src/shared/w_deagle.qc +++ b/src/shared/w_deagle.qc @@ -27,7 +27,8 @@ Price: $650 */ #ifdef CLIENT -void w_pistol_ejectshell(void) +void +w_pistol_ejectshell(void) { static void w_pistol_ejectshell_death(void) { remove(self); @@ -144,24 +145,17 @@ w_deagle_primary(void) { player pl = (player)self; - if (pl.w_attack_next > 0.0) { + if (pl.w_attack_next > 0.0) return; - } - - if (pl.gflags & GF_SEMI_TOGGLED) { + if (pl.gflags & GF_SEMI_TOGGLED) return; - } - if (!pl.deagle_mag) { + if (!pl.deagle_mag) return; - } Cstrike_ShotMultiplierAdd(pl, 1); float accuracy = Cstrike_CalculateAccuracy(pl, 200); pl.deagle_mag--; -#ifdef CLIENT - View_SetMuzzleflash(MUZZLE_RIFLE); - if (pl.deagle_mag <= 0) { Weapons_ViewAnimation(DEAGLE_SHOOT_EMPTY); } else { @@ -175,16 +169,18 @@ w_deagle_primary(void) break; } } - View_AddEvent(w_pistol_ejectshell, 0.0f); -#else - TraceAttack_SetPenetrationPower(1); - TraceAttack_FireBullets(1, pl.origin + pl.view_ofs, 54, [accuracy,accuracy], WEAPON_DEAGLE); if (self.flags & FL_CROUCHING) Animation_PlayerTop(pl, ANIM_CROUCH_SHOOT_ONEHAND, 0.45f); else Animation_PlayerTop(pl, ANIM_SHOOT_ONEHAND, 0.45f); +#ifdef CLIENT + View_SetMuzzleflash(MUZZLE_RIFLE); + View_AddEvent(w_pistol_ejectshell, 0.0f); +#else + TraceAttack_SetPenetrationPower(1); + TraceAttack_FireBullets(1, pl.origin + pl.view_ofs, 54, [accuracy,accuracy], WEAPON_DEAGLE); Sound_Play(pl, CHAN_WEAPON, "weapon_deagle.fire"); #endif @@ -207,10 +203,9 @@ w_deagle_reload(void) if (!pl.ammo_50ae) { return; } - -#ifdef CLIENT Weapons_ViewAnimation(DEAGLE_RELOAD); -#else + +#ifdef SERVER Weapons_ReloadWeapon(pl, player::deagle_mag, player::ammo_50ae, 7); #endif diff --git a/src/shared/w_elites.qc b/src/shared/w_elites.qc index c768c60..4063dc5 100644 --- a/src/shared/w_elites.qc +++ b/src/shared/w_elites.qc @@ -27,7 +27,8 @@ Price: $1000 */ #ifdef CLIENT -void w_elites_ejectshell(int side) +void +w_elites_ejectshell(int side) { static void w_elites_ejectshell_death(void) { remove(self); @@ -57,12 +58,14 @@ void w_elites_ejectshell(int side) setorigin(eShell, gettaginfo(pSeat->m_eViewModel, pSeat->m_iVMBones + 1 + side)); } -void w_pistol_ejectshell_left(void) +void +w_pistol_ejectshell_left(void) { w_elites_ejectshell(1); } -void w_pistol_ejectshell_right(void) +void +w_pistol_ejectshell_right(void) { w_elites_ejectshell(0); } @@ -181,9 +184,6 @@ w_elites_primary(void) float accuracy = Cstrike_CalculateAccuracy(pl, 200); pl.elites_mag--; -#ifdef CLIENT - View_SetMuzzleflash(MUZZLE_RIFLE); - int r = (float)input_sequence % 5; if (pl.mode_temp) { if (pl.elites_mag <= 0) { @@ -207,7 +207,6 @@ w_elites_primary(void) break; } } - View_AddEvent(w_pistol_ejectshell_left, 0.0f); } else { if (pl.elites_mag <= 0) { Weapons_ViewAnimation(ELITES_SHOOT_RIGHTLAST); @@ -230,11 +229,7 @@ w_elites_primary(void) break; } } - View_AddEvent(w_pistol_ejectshell_right, 0.0f); } -#else - TraceAttack_SetPenetrationPower(0); - TraceAttack_FireBullets(1, pl.origin + pl.view_ofs, 45, [accuracy,accuracy], WEAPON_ELITES); if (self.flags & FL_CROUCHING) { if (pl.mode_temp) @@ -248,6 +243,16 @@ w_elites_primary(void) Animation_PlayerTop(pl, ANIM_SHOOT_DUALPISTOLS, 0.45f); } +#ifdef CLIENT + View_SetMuzzleflash(MUZZLE_RIFLE); + + if (pl.mode_temp) + View_AddEvent(w_pistol_ejectshell_left, 0.0f); + else + View_AddEvent(w_pistol_ejectshell_right, 0.0f); +#else + TraceAttack_SetPenetrationPower(0); + TraceAttack_FireBullets(1, pl.origin + pl.view_ofs, 45, [accuracy,accuracy], WEAPON_ELITES); Sound_Play(pl, CHAN_WEAPON, "weapon_elites.fire"); #endif @@ -261,19 +266,16 @@ w_elites_reload(void) { player pl = (player)self; - if (pl.w_attack_next > 0.0) { + if (pl.w_attack_next > 0.0) return; - } - if (pl.elites_mag >= 30) { + if (pl.elites_mag >= 30) return; - } - if (!pl.ammo_9mm) { + if (!pl.ammo_9mm) return; - } -#ifdef CLIENT Weapons_ViewAnimation(ELITES_RELOAD); -#else + +#ifdef SERVER Weapons_ReloadWeapon(pl, player::elites_mag, player::ammo_9mm, 30); #endif diff --git a/src/shared/w_fiveseven.qc b/src/shared/w_fiveseven.qc index 8f04c8a..aa6f5ae 100644 --- a/src/shared/w_fiveseven.qc +++ b/src/shared/w_fiveseven.qc @@ -127,9 +127,6 @@ w_fiveseven_primary(void) float accuracy = Cstrike_CalculateAccuracy(pl, 200); pl.fiveseven_mag--; -#ifdef CLIENT - View_SetMuzzleflash(MUZZLE_RIFLE); - if (pl.fiveseven_mag <= 0) { Weapons_ViewAnimation(FIVESEVEN_SHOOT_EMPTY); } else { @@ -143,16 +140,18 @@ w_fiveseven_primary(void) break; } } - View_AddEvent(w_pistol_ejectshell, 0.0f); -#else - TraceAttack_SetPenetrationPower(0); - TraceAttack_FireBullets(1, pl.origin + pl.view_ofs, 25, [accuracy,accuracy], WEAPON_FIVESEVEN); if (self.flags & FL_CROUCHING) Animation_PlayerTop(pl, ANIM_SHOOT_ONEHAND, 0.45f); else Animation_PlayerTop(pl, ANIM_CROUCH_SHOOT_ONEHAND, 0.45f); +#ifdef CLIENT + View_SetMuzzleflash(MUZZLE_RIFLE); + View_AddEvent(w_pistol_ejectshell, 0.0f); +#else + TraceAttack_SetPenetrationPower(0); + TraceAttack_FireBullets(1, pl.origin + pl.view_ofs, 25, [accuracy,accuracy], WEAPON_FIVESEVEN); Sound_Play(pl, CHAN_WEAPON, "weapon_fiveseven.fire"); #endif @@ -166,19 +165,16 @@ w_fiveseven_reload(void) { player pl = (player)self; - if (pl.w_attack_next > 0.0) { + if (pl.w_attack_next > 0.0) return; - } - if (pl.fiveseven_mag >= 20) { + if (pl.fiveseven_mag >= 20) return; - } - if (!pl.ammo_57mm) { + if (!pl.ammo_57mm) return; - } -#ifdef CLIENT Weapons_ViewAnimation(FIVESEVEN_RELOAD); -#else + +#ifdef SERVER Weapons_ReloadWeapon(pl, player::fiveseven_mag, player::ammo_57mm, 20); #endif diff --git a/src/shared/w_flashbang.qc b/src/shared/w_flashbang.qc index eab4bc1..7048345 100644 --- a/src/shared/w_flashbang.qc +++ b/src/shared/w_flashbang.qc @@ -98,7 +98,8 @@ w_flashbang_draw(void) } #ifdef SERVER -void w_flashbang_throw(void) +void +w_flashbang_throw(void) { static void flashbang_explode(void) { diff --git a/src/shared/w_g3sg1.qc b/src/shared/w_g3sg1.qc index 3c187fd..c55c885 100644 --- a/src/shared/w_g3sg1.qc +++ b/src/shared/w_g3sg1.qc @@ -122,9 +122,6 @@ w_g3sg1_primary(void) float accuracy = Cstrike_CalculateAccuracy(pl, 200); pl.g3sg1_mag--; -#ifdef CLIENT - View_SetMuzzleflash(MUZZLE_RIFLE); - int r = (float)input_sequence % 2; switch (r) { case 0: @@ -134,16 +131,18 @@ w_g3sg1_primary(void) Weapons_ViewAnimation(SCOUT_SHOOT2); break; } - View_AddEvent(w_rifle_ejectshell, 0.0f); -#else - TraceAttack_SetPenetrationPower(2); - TraceAttack_FireBullets(1, pl.origin + pl.view_ofs, 80, [accuracy,accuracy], WEAPON_G3SG1); if (self.flags & FL_CROUCHING) Animation_PlayerTop(pl, ANIM_SHOOT_RIFLE, 0.45f); else Animation_PlayerTop(pl, ANIM_CROUCH_SHOOT_RIFLE, 0.45f); +#ifdef CLIENT + View_SetMuzzleflash(MUZZLE_RIFLE); + View_AddEvent(w_rifle_ejectshell, 0.0f); +#else + TraceAttack_SetPenetrationPower(2); + TraceAttack_FireBullets(1, pl.origin + pl.view_ofs, 80, [accuracy,accuracy], WEAPON_G3SG1); Sound_Play(pl, CHAN_WEAPON, "weapon_g3sg1.fire"); #endif @@ -174,19 +173,16 @@ w_g3sg1_reload(void) { player pl = (player)self; - if (pl.w_attack_next > 0.0) { + if (pl.w_attack_next > 0.0) return; - } - if (pl.g3sg1_mag >= 20) { + if (pl.g3sg1_mag >= 20) return; - } - if (!pl.ammo_762mm) { + if (!pl.ammo_762mm) return; - } -#ifdef CLIENT Weapons_ViewAnimation(G3SG1_RELOAD); -#else + +#ifdef SERVER Weapons_ReloadWeapon(pl, player::g3sg1_mag, player::ammo_762mm, 20); Weapons_UpdateAmmo(pl, pl.g3sg1_mag, pl.ammo_762mm, -1); #endif diff --git a/src/shared/w_glock18.qc b/src/shared/w_glock18.qc index a4e4062..3d7b2b9 100644 --- a/src/shared/w_glock18.qc +++ b/src/shared/w_glock18.qc @@ -109,6 +109,7 @@ w_glock18_draw(void) { player pl = (player)self; Weapons_SetModel("models/v_glock18.mdl"); + int r = (float)input_sequence % 2; switch (r) { case 0: @@ -130,16 +131,12 @@ w_glock18_primary(void) { player pl = (player)self; - if (pl.w_attack_next > 0.0) { + if (pl.w_attack_next > 0.0) return; - } - - if (pl.gflags & GF_SEMI_TOGGLED) { + if (pl.gflags & GF_SEMI_TOGGLED) return; - } - if (!pl.glock18_mag) { + if (!pl.glock18_mag) return; - } int shotcount = (pl.mode_glock18) ? 3 : 1; @@ -177,15 +174,15 @@ w_glock18_primary(void) pl.w_attack_next = 0.15f; } -#ifdef CLIENT - View_SetMuzzleflash(MUZZLE_RIFLE); - View_AddEvent(w_pistol_ejectshell, 0.0f); -#else if (pl.flags & FL_CROUCHING) Animation_PlayerTop(pl, ANIM_SHOOT_ONEHAND, 0.45f); else Animation_PlayerTop(pl, ANIM_CROUCH_SHOOT_ONEHAND, 0.45f); +#ifdef CLIENT + View_SetMuzzleflash(MUZZLE_RIFLE); + View_AddEvent(w_pistol_ejectshell, 0.0f); +#else if (pl.mode_glock18) { Sound_Play(pl, CHAN_WEAPON, "weapon_glock18.burstfire"); } else { @@ -226,17 +223,13 @@ w_glock18_reload(void) { player pl = (player)self; - if (pl.w_attack_next > 0.0) { + if (pl.w_attack_next > 0.0) return; - } - if (pl.glock18_mag >= 20) { + if (pl.glock18_mag >= 20) return; - } - if (!pl.ammo_9mm) { + if (!pl.ammo_9mm) return; - } -#ifdef CLIENT int r = (float)input_sequence % 2; switch (r) { case 0: @@ -246,8 +239,8 @@ w_glock18_reload(void) Weapons_ViewAnimation(GLOCK_RELOAD2); break; } -#else +#ifdef SERVER Weapons_ReloadWeapon(pl, player::glock18_mag, player::ammo_9mm, 20); Weapons_UpdateAmmo(pl, pl.glock18_mag, pl.ammo_9mm, -1); #endif diff --git a/src/shared/w_hegrenade.qc b/src/shared/w_hegrenade.qc index d593b80..09dbe0f 100644 --- a/src/shared/w_hegrenade.qc +++ b/src/shared/w_hegrenade.qc @@ -98,7 +98,8 @@ w_hegrenade_draw(void) } #ifdef SERVER -void w_hegrenade_throw(void) +void +w_hegrenade_throw(void) { static void hegrenade_explode(void) { diff --git a/src/shared/w_knife.qc b/src/shared/w_knife.qc index 2c824d8..ee22dff 100644 --- a/src/shared/w_knife.qc +++ b/src/shared/w_knife.qc @@ -79,10 +79,8 @@ w_knife_deathmsg(void) void w_knife_draw(void) { -#ifdef CLIENT Weapons_SetModel("models/v_knife.mdl"); Weapons_ViewAnimation(KNIFE_DRAW); -#endif } void @@ -95,7 +93,6 @@ w_knife_primary(void) } pl.w_attack_next = 0.7f; -#ifdef CLIENT int r = (float)input_sequence % 2; switch (r) { case 0: @@ -105,7 +102,13 @@ w_knife_primary(void) Weapons_ViewAnimation(KNIFE_SLASH2); break; } -#else + + if (self.flags & FL_CROUCHING) + Animation_PlayerTop(pl, ANIM_CROUCH_SHOOT_KNIFE, 1.33f); + else + Animation_PlayerTop(pl, ANIM_SHOOT_KNIFE, 1.33f); + +#ifdef SERVER vector src; Weapons_MakeVectors(); src = pl.origin + pl.view_ofs; @@ -113,11 +116,6 @@ w_knife_primary(void) Sound_Play(pl, CHAN_WEAPON, "weapon_knife.miss"); - if (self.flags & FL_CROUCHING) - Animation_PlayerTop(pl, ANIM_CROUCH_SHOOT_KNIFE, 1.33f); - else - Animation_PlayerTop(pl, ANIM_SHOOT_KNIFE, 1.33f); - if (trace_fraction >= 1.0) { return; } @@ -145,10 +143,15 @@ w_knife_secondary(void) } pl.w_attack_next = 1.2f; -#ifdef CLIENT + Weapons_ViewAnimation(KNIFE_STAB); -#else - + + if (self.flags & FL_CROUCHING) + Animation_PlayerTop(pl, ANIM_CROUCH_SHOOT_KNIFE, 1.33f); + else + Animation_PlayerTop(pl, ANIM_SHOOT_KNIFE, 1.33f); + +#ifdef SERVER vector src; Weapons_MakeVectors(); src = pl.origin + pl.view_ofs; diff --git a/src/shared/w_m3.qc b/src/shared/w_m3.qc index 5787d4f..5718d40 100644 --- a/src/shared/w_m3.qc +++ b/src/shared/w_m3.qc @@ -27,7 +27,8 @@ Price: $1700 */ #ifdef CLIENT -void w_m3_ejectshell(void) +void +w_m3_ejectshell(void) { static void w_m3_ejectshell_death(void) { remove(self); @@ -243,9 +244,6 @@ w_m3_release(void) pl.m3_mag++; pl.ammo_buckshot--; w_m3_updateammo(pl); -#ifdef SERVER - //Sound_Play(pl, CHAN_WEAPON, "weapon_m3.insertshell"); -#endif if (pl.ammo_buckshot <= 0 || pl.m3_mag >= 8) { pl.mode_temp = M3S_RELOAD_END; } diff --git a/src/shared/w_m4a1.qc b/src/shared/w_m4a1.qc index f795d25..fd16fb2 100644 --- a/src/shared/w_m4a1.qc +++ b/src/shared/w_m4a1.qc @@ -139,15 +139,6 @@ w_m4a1_primary(void) float accuracy = Cstrike_CalculateAccuracy(pl, 220); pl.m4a1_mag--; - /* actual firing */ -#ifdef CLIENT - if (pl.mode_m4a1 == 1) { - View_SetMuzzleflash(0); - } else { - View_SetMuzzleflash(MUZZLE_RIFLE); - } - - /* this stuff is predicted */ int r = (float)input_sequence % 3; if (pl.mode_m4a1 == 1) { switch (r) { @@ -174,6 +165,19 @@ w_m4a1_primary(void) break; } } + + if (self.flags & FL_CROUCHING) + Animation_PlayerTop(pl, ANIM_SHOOT_RIFLE, 0.45f); + else + Animation_PlayerTop(pl, ANIM_CROUCH_SHOOT_RIFLE, 0.45f); + + /* actual firing */ +#ifdef CLIENT + if (pl.mode_m4a1 == 1) { + View_SetMuzzleflash(0); + } else { + View_SetMuzzleflash(MUZZLE_RIFLE); + } View_AddEvent(w_rifle_ejectshell, 0.0f); #else /* Different sounds without silencer */ @@ -185,11 +189,6 @@ w_m4a1_primary(void) TraceAttack_SetPenetrationPower(1); TraceAttack_FireBullets(1, pl.origin + pl.view_ofs, 33, [accuracy,accuracy], WEAPON_M4A1); - - if (self.flags & FL_CROUCHING) - Animation_PlayerTop(pl, ANIM_SHOOT_RIFLE, 0.45f); - else - Animation_PlayerTop(pl, ANIM_CROUCH_SHOOT_RIFLE, 0.45f); #endif pl.w_attack_next = 0.0875f; @@ -224,23 +223,19 @@ w_m4a1_reload(void) { player pl = (player)self; - if (pl.w_attack_next > 0.0) { + if (pl.w_attack_next > 0.0) return; - } - if (pl.m4a1_mag >= 30) { + if (pl.m4a1_mag >= 30) return; - } - if (!pl.ammo_556mm) { + if (!pl.ammo_556mm) return; - } -#ifdef CLIENT - if (pl.mode_m4a1 == 1) { + if (pl.mode_m4a1 == 1) Weapons_ViewAnimation(M4A1_RELOAD); - } else { + else Weapons_ViewAnimation(M4A1_RELOADUNSIL); - } -#else + +#ifdef SERVER Weapons_ReloadWeapon(pl, player::m4a1_mag, player::ammo_556mm, 30); #endif diff --git a/src/shared/w_mac10.qc b/src/shared/w_mac10.qc index 2a8087c..f494918 100644 --- a/src/shared/w_mac10.qc +++ b/src/shared/w_mac10.qc @@ -123,9 +123,6 @@ w_mac10_primary(void) float accuracy = Cstrike_CalculateAccuracy(pl, 200); pl.mac10_mag--; -#ifdef CLIENT - View_SetMuzzleflash(MUZZLE_RIFLE); - int r = (float)input_sequence % 3; switch (r) { case 0: @@ -138,16 +135,18 @@ w_mac10_primary(void) Weapons_ViewAnimation(MAC10_SHOOT3); break; } - View_AddEvent(w_pistol_ejectshell, 0.0f); -#else - TraceAttack_SetPenetrationPower(0); - TraceAttack_FireBullets(1, pl.origin + pl.view_ofs, 29, [accuracy,accuracy], WEAPON_MAC10); if (self.flags & FL_CROUCHING) Animation_PlayerTop(pl, ANIM_SHOOT_MP5, 0.45f); else Animation_PlayerTop(pl, ANIM_CROUCH_SHOOT_MP5, 0.45f); +#ifdef CLIENT + View_SetMuzzleflash(MUZZLE_RIFLE); + View_AddEvent(w_pistol_ejectshell, 0.0f); +#else + TraceAttack_SetPenetrationPower(0); + TraceAttack_FireBullets(1, pl.origin + pl.view_ofs, 29, [accuracy,accuracy], WEAPON_MAC10); Sound_Play(pl, CHAN_WEAPON, "weapon_mac10.fire"); #endif @@ -160,19 +159,16 @@ w_mac10_reload(void) { player pl = (player)self; - if (pl.w_attack_next > 0.0) { + if (pl.w_attack_next > 0.0) return; - } - if (pl.mac10_mag >= 30) { + if (pl.mac10_mag >= 30) return; - } - if (!pl.ammo_45acp) { + if (!pl.ammo_45acp) return; - } -#ifdef CLIENT Weapons_ViewAnimation(MAC10_RELOAD); -#else + +#ifdef SERVER Weapons_ReloadWeapon(pl, player::mac10_mag, player::ammo_45acp, 30); Weapons_UpdateAmmo(pl, pl.mac10_mag, pl.ammo_45acp, -1); #endif diff --git a/src/shared/w_mp5.qc b/src/shared/w_mp5.qc index b98e631..4aba7e8 100644 --- a/src/shared/w_mp5.qc +++ b/src/shared/w_mp5.qc @@ -112,20 +112,15 @@ w_mp5_primary(void) { player pl = (player)self; - if (pl.w_attack_next > 0.0) { + if (pl.w_attack_next > 0.0) return; - } - if (!pl.mp5_mag) { + if (!pl.mp5_mag) return; - } Cstrike_ShotMultiplierAdd(pl, 1); float accuracy = Cstrike_CalculateAccuracy(pl, 220); pl.mp5_mag--; -#ifdef CLIENT - View_SetMuzzleflash(MUZZLE_RIFLE); - int r = (float)input_sequence % 3; switch (r) { case 0: @@ -138,16 +133,18 @@ w_mp5_primary(void) Weapons_ViewAnimation(MP5_SHOOT3); break; } - View_AddEvent(w_pistol_ejectshell, 0.0f); -#else - TraceAttack_SetPenetrationPower(0); - TraceAttack_FireBullets(1, pl.origin + pl.view_ofs, 26, [accuracy,accuracy], WEAPON_MP5); if (self.flags & FL_CROUCHING) Animation_PlayerTop(pl, ANIM_SHOOT_MP5, 0.45f); else Animation_PlayerTop(pl, ANIM_CROUCH_SHOOT_MP5, 0.45f); +#ifdef CLIENT + View_SetMuzzleflash(MUZZLE_RIFLE); + View_AddEvent(w_pistol_ejectshell, 0.0f); +#else + TraceAttack_SetPenetrationPower(0); + TraceAttack_FireBullets(1, pl.origin + pl.view_ofs, 26, [accuracy,accuracy], WEAPON_MP5); Sound_Play(pl, CHAN_WEAPON, "weapon_mp5.fire"); #endif @@ -160,19 +157,16 @@ w_mp5_reload(void) { player pl = (player)self; - if (pl.w_attack_next > 0.0) { + if (pl.w_attack_next > 0.0) return; - } - if (pl.mp5_mag >= 30) { + if (pl.mp5_mag >= 30) return; - } - if (!pl.ammo_9mm) { + if (!pl.ammo_9mm) return; - } -#ifdef CLIENT Weapons_ViewAnimation(MP5_RELOAD); -#else + +#ifdef SERVER Weapons_ReloadWeapon(pl, player::mp5_mag, player::ammo_9mm, 30); Weapons_UpdateAmmo(pl, pl.mp5_mag, pl.ammo_9mm, -1); #endif diff --git a/src/shared/w_p228.qc b/src/shared/w_p228.qc index 638cfcb..e50176f 100644 --- a/src/shared/w_p228.qc +++ b/src/shared/w_p228.qc @@ -113,23 +113,17 @@ w_p228_primary(void) { player pl = (player)self; - if (pl.w_attack_next > 0.0) { + if (pl.w_attack_next > 0.0) return; - } - if (pl.gflags & GF_SEMI_TOGGLED) { + if (pl.gflags & GF_SEMI_TOGGLED) return; - } - if (!pl.p228_mag) { + if (!pl.p228_mag) return; - } Cstrike_ShotMultiplierAdd(pl, 1); float accuracy = Cstrike_CalculateAccuracy(pl, 200); pl.p228_mag--; -#ifdef CLIENT - View_SetMuzzleflash(MUZZLE_RIFLE); - if (pl.p228_mag <= 0) { Weapons_ViewAnimation(P228_SHOOT_EMPTY); } else { @@ -146,16 +140,18 @@ w_p228_primary(void) break; } } - View_AddEvent(w_pistol_ejectshell, 0.0f); -#else - TraceAttack_SetPenetrationPower(0); - TraceAttack_FireBullets(1, pl.origin + pl.view_ofs, 40, [accuracy,accuracy], WEAPON_P228); if (self.flags & FL_CROUCHING) Animation_PlayerTop(pl, ANIM_SHOOT_ONEHAND, 0.45f); else Animation_PlayerTop(pl, ANIM_CROUCH_SHOOT_ONEHAND, 0.45f); +#ifdef CLIENT + View_SetMuzzleflash(MUZZLE_RIFLE); + View_AddEvent(w_pistol_ejectshell, 0.0f); +#else + TraceAttack_SetPenetrationPower(0); + TraceAttack_FireBullets(1, pl.origin + pl.view_ofs, 40, [accuracy,accuracy], WEAPON_P228); Sound_Play(pl, CHAN_WEAPON, "weapon_p228.fire"); #endif @@ -169,19 +165,16 @@ w_p228_reload(void) { player pl = (player)self; - if (pl.w_attack_next > 0.0) { + if (pl.w_attack_next > 0.0) return; - } - if (pl.p228_mag >= 30) { + if (pl.p228_mag >= 30) return; - } - if (!pl.ammo_357sig) { + if (!pl.ammo_357sig) return; - } -#ifdef CLIENT Weapons_ViewAnimation(P228_RELOAD); -#else + +#ifdef SERVER Weapons_ReloadWeapon(pl, player::p228_mag, player::ammo_357sig, 13); Weapons_UpdateAmmo(pl, pl.p228_mag, pl.ammo_357sig, -1); #endif diff --git a/src/shared/w_p90.qc b/src/shared/w_p90.qc index 4858203..cd059a4 100644 --- a/src/shared/w_p90.qc +++ b/src/shared/w_p90.qc @@ -112,20 +112,15 @@ w_p90_primary(void) { player pl = (player)self; - if (pl.w_attack_next > 0.0) { + if (pl.w_attack_next > 0.0) return; - } - if (!pl.p90_mag) { + if (!pl.p90_mag) return; - } Cstrike_ShotMultiplierAdd(pl, 1); float accuracy = Cstrike_CalculateAccuracy(pl, 175); pl.p90_mag--; -#ifdef CLIENT - View_SetMuzzleflash(MUZZLE_RIFLE); - int r = (float)input_sequence % 3; switch (r) { case 0: @@ -138,16 +133,18 @@ w_p90_primary(void) Weapons_ViewAnimation(P90_SHOOT3); break; } - View_AddEvent(w_pistol_ejectshell, 0.0f); -#else - TraceAttack_SetPenetrationPower(0); - TraceAttack_FireBullets(1, pl.origin + pl.view_ofs, 26, [accuracy,accuracy], WEAPON_P90); if (self.flags & FL_CROUCHING) Animation_PlayerTop(pl, ANIM_SHOOT_MP5, 0.45f); else Animation_PlayerTop(pl, ANIM_CROUCH_SHOOT_MP5, 0.45f); +#ifdef CLIENT + View_SetMuzzleflash(MUZZLE_RIFLE); + View_AddEvent(w_pistol_ejectshell, 0.0f); +#else + TraceAttack_SetPenetrationPower(0); + TraceAttack_FireBullets(1, pl.origin + pl.view_ofs, 26, [accuracy,accuracy], WEAPON_P90); Sound_Play(pl, CHAN_WEAPON, "weapon_p90.fire"); #endif @@ -160,19 +157,16 @@ w_p90_reload(void) { player pl = (player)self; - if (pl.w_attack_next > 0.0) { + if (pl.w_attack_next > 0.0) return; - } - if (pl.p90_mag >= 50) { + if (pl.p90_mag >= 50) return; - } - if (!pl.ammo_57mm) { + if (!pl.ammo_57mm) return; - } -#ifdef CLIENT Weapons_ViewAnimation(P90_RELOAD); -#else + +#ifdef SERVER Weapons_ReloadWeapon(pl, player::p90_mag, player::ammo_57mm, 50); Weapons_UpdateAmmo(pl, pl.p90_mag, pl.ammo_57mm, -1); #endif diff --git a/src/shared/w_para.qc b/src/shared/w_para.qc index a07db22..4ccb01d 100644 --- a/src/shared/w_para.qc +++ b/src/shared/w_para.qc @@ -111,20 +111,15 @@ w_para_primary(void) { player pl = (player)self; - if (pl.w_attack_next > 0.0) { + if (pl.w_attack_next > 0.0) return; - } - if (!pl.para_mag) { + if (!pl.para_mag) return; - } Cstrike_ShotMultiplierAdd(pl, 1); float accuracy = Cstrike_CalculateAccuracy(pl, 175); pl.para_mag--; -#ifdef CLIENT - View_SetMuzzleflash(MUZZLE_RIFLE); - int r = (float)input_sequence % 2; switch (r) { case 0: @@ -134,16 +129,18 @@ w_para_primary(void) Weapons_ViewAnimation(SCOUT_SHOOT2); break; } - View_AddEvent(w_rifle_ejectshell, 0.0f); -#else - TraceAttack_SetPenetrationPower(1); - TraceAttack_FireBullets(1, pl.origin + pl.view_ofs, 35, [accuracy,accuracy], WEAPON_PARA); if (self.flags & FL_CROUCHING) Animation_PlayerTop(pl, ANIM_CROUCH_SHOOT_PARA, 0.45f); else Animation_PlayerTop(pl, ANIM_SHOOT_PARA, 0.45f); +#ifdef CLIENT + View_SetMuzzleflash(MUZZLE_RIFLE); + View_AddEvent(w_rifle_ejectshell, 0.0f); +#else + TraceAttack_SetPenetrationPower(1); + TraceAttack_FireBullets(1, pl.origin + pl.view_ofs, 35, [accuracy,accuracy], WEAPON_PARA); Sound_Play(pl, CHAN_WEAPON, "weapon_para.fire"); #endif @@ -156,19 +153,16 @@ w_para_reload(void) { player pl = (player)self; - if (pl.w_attack_next > 0.0) { + if (pl.w_attack_next > 0.0) return; - } - if (pl.para_mag >= 100) { + if (pl.para_mag >= 100) return; - } - if (!pl.ammo_556mmbox) { + if (!pl.ammo_556mmbox) return; - } -#ifdef CLIENT Weapons_ViewAnimation(PARA_RELOAD); -#else + +#ifdef SERVER Weapons_ReloadWeapon(pl, player::para_mag, player::ammo_556mmbox, 100); Weapons_UpdateAmmo(pl, pl.para_mag, pl.ammo_556mmbox, -1); #endif diff --git a/src/shared/w_scout.qc b/src/shared/w_scout.qc index ee32b0f..91be9af 100644 --- a/src/shared/w_scout.qc +++ b/src/shared/w_scout.qc @@ -140,22 +140,21 @@ void w_scout_secondary(void) { player pl = (player)self; - if (pl.w_attack_next) { + + if (pl.w_attack_next) return; - } #ifdef SSQC Sound_Play(pl, CHAN_WEAPON, "weapon_awp.zoom"); #endif /* Simple toggle of fovs */ - if (pl.mode_temp == 1) { + if (pl.mode_temp == 1) pl.mode_temp = 2; - } else if (pl.mode_temp == 2) { + else if (pl.mode_temp == 2) pl.mode_temp = 0; - } else { + else pl.mode_temp = 1; - } pl.w_attack_next = 0.3f; pl.w_idle_next = 0.0f; @@ -179,9 +178,6 @@ w_scout_primary(void) float accuracy = Cstrike_CalculateAccuracy(pl, 200); pl.scout_mag--; -#ifdef CLIENT - View_SetMuzzleflash(MUZZLE_RIFLE); - int r = (float)input_sequence % 2; switch (r) { case 0: @@ -191,16 +187,19 @@ w_scout_primary(void) Weapons_ViewAnimation(SCOUT_SHOOT2); break; } - View_AddEvent(w_rifle_ejectshell, 0.5f); -#else - TraceAttack_SetPenetrationPower(2); - TraceAttack_FireBullets(1, pl.origin + pl.view_ofs, 75, [accuracy,accuracy], WEAPON_SCOUT); if (self.flags & FL_CROUCHING) Animation_PlayerTop(pl, ANIM_SHOOT_RIFLE, 0.45f); else Animation_PlayerTop(pl, ANIM_CROUCH_SHOOT_RIFLE, 0.45f); + +#ifdef CLIENT + View_SetMuzzleflash(MUZZLE_RIFLE); + View_AddEvent(w_rifle_ejectshell, 0.5f); +#else + TraceAttack_SetPenetrationPower(2); + TraceAttack_FireBullets(1, pl.origin + pl.view_ofs, 75, [accuracy,accuracy], WEAPON_SCOUT); Sound_Play(pl, CHAN_WEAPON, "weapon_scout.fire"); #endif @@ -213,19 +212,16 @@ w_scout_reload(void) { player pl = (player)self; - if (pl.w_attack_next > 0.0) { + if (pl.w_attack_next > 0.0) return; - } - if (pl.scout_mag >= 10) { + if (pl.scout_mag >= 10) return; - } - if (!pl.ammo_762mm) { + if (!pl.ammo_762mm) return; - } -#ifdef CLIENT Weapons_ViewAnimation(SCOUT_RELOAD); -#else + +#ifdef SERVER Weapons_ReloadWeapon(pl, player::scout_mag, player::ammo_762mm, 10); Weapons_UpdateAmmo(pl, pl.scout_mag, pl.ammo_762mm, -1); #endif diff --git a/src/shared/w_sg550.qc b/src/shared/w_sg550.qc index bc72939..e9b41cf 100644 --- a/src/shared/w_sg550.qc +++ b/src/shared/w_sg550.qc @@ -111,20 +111,15 @@ w_sg550_primary(void) { player pl = (player)self; - if (pl.w_attack_next > 0.0) { + if (pl.w_attack_next > 0.0) return; - } - if (!pl.sg550_mag) { + if (!pl.sg550_mag) return; - } Cstrike_ShotMultiplierAdd(pl, 1); float accuracy = Cstrike_CalculateAccuracy(pl, 200); pl.sg550_mag--; -#ifdef CLIENT - View_SetMuzzleflash(MUZZLE_RIFLE); - int r = (float)input_sequence % 2; switch (r) { case 0: @@ -134,16 +129,19 @@ w_sg550_primary(void) Weapons_ViewAnimation(SCOUT_SHOOT2); break; } - View_AddEvent(w_rifle_ejectshell, 0.0f); -#else - TraceAttack_SetPenetrationPower(1); - TraceAttack_FireBullets(1, pl.origin + pl.view_ofs, 70, [accuracy,accuracy], WEAPON_SG550); if (self.flags & FL_CROUCHING) Animation_PlayerTop(pl, ANIM_SHOOT_RIFLE, 0.45f); else Animation_PlayerTop(pl, ANIM_CROUCH_SHOOT_RIFLE, 0.45f); + +#ifdef CLIENT + View_SetMuzzleflash(MUZZLE_RIFLE); + View_AddEvent(w_rifle_ejectshell, 0.0f); +#else + TraceAttack_SetPenetrationPower(1); + TraceAttack_FireBullets(1, pl.origin + pl.view_ofs, 70, [accuracy,accuracy], WEAPON_SG550); Sound_Play(pl, CHAN_WEAPON, "weapon_sg550.fire"); #endif @@ -155,17 +153,18 @@ void w_sg550_secondary(void) { player pl = (player)self; - if (pl.w_attack_next) { + + if (pl.w_attack_next) return; - } + /* Simple toggle of fovs */ - if (pl.viewzoom == 1.0f) { + if (pl.viewzoom == 1.0f) pl.viewzoom = 0.45f; - } else if (pl.viewzoom == 0.45f) { + else if (pl.viewzoom == 0.45f) pl.viewzoom = 0.1f; - } else { + else pl.viewzoom = 1.0f; - } + pl.w_attack_next = 0.5f; } @@ -174,19 +173,16 @@ w_sg550_reload(void) { player pl = (player)self; - if (pl.w_attack_next > 0.0) { + if (pl.w_attack_next > 0.0) return; - } - if (pl.sg550_mag >= 30) { + if (pl.sg550_mag >= 30) return; - } - if (!pl.ammo_556mm) { + if (!pl.ammo_556mm) return; - } -#ifdef CLIENT Weapons_ViewAnimation(SG550_RELOAD); -#else + +#ifdef SERVER Weapons_ReloadWeapon(pl, player::sg550_mag, player::ammo_556mm, 30); Weapons_UpdateAmmo(pl, pl.sg550_mag, pl.ammo_556mm, -1); #endif diff --git a/src/shared/w_sg552.qc b/src/shared/w_sg552.qc index 49659eb..489e9f1 100644 --- a/src/shared/w_sg552.qc +++ b/src/shared/w_sg552.qc @@ -112,20 +112,15 @@ w_sg552_primary(void) { player pl = (player)self; - if (pl.w_attack_next > 0.0) { + if (pl.w_attack_next > 0.0) return; - } - if (!pl.sg552_mag) { + if (!pl.sg552_mag) return; - } Cstrike_ShotMultiplierAdd(pl, 1); float accuracy = Cstrike_CalculateAccuracy(pl, 220); pl.sg552_mag--; -#ifdef CLIENT - View_SetMuzzleflash(MUZZLE_RIFLE); - int r = (float)input_sequence % 3; switch (r) { case 0: @@ -138,24 +133,26 @@ w_sg552_primary(void) Weapons_ViewAnimation(SG552_SHOOT3); break; } - View_AddEvent(w_rifle_ejectshell, 0.0f); -#else - TraceAttack_SetPenetrationPower(1); - TraceAttack_FireBullets(1, pl.origin + pl.view_ofs, 33, [accuracy,accuracy], WEAPON_SG552); if (self.flags & FL_CROUCHING) Animation_PlayerTop(pl, ANIM_SHOOT_RIFLE, 0.45f); else Animation_PlayerTop(pl, ANIM_CROUCH_SHOOT_RIFLE, 0.45f); +#ifdef CLIENT + View_SetMuzzleflash(MUZZLE_RIFLE); + View_AddEvent(w_rifle_ejectshell, 0.0f); +#else + TraceAttack_SetPenetrationPower(1); + TraceAttack_FireBullets(1, pl.origin + pl.view_ofs, 33, [accuracy,accuracy], WEAPON_SG552); Sound_Play(pl, CHAN_WEAPON, "weapon_sg552.fire"); #endif - if (pl.viewzoom == 1.0f) { + if (pl.viewzoom == 1.0f) pl.w_attack_next = 0.0825f; - } else { + else pl.w_attack_next = 0.15f; - } + pl.w_idle_next = pl.w_attack_next; } @@ -163,15 +160,16 @@ void w_sg552_secondary(void) { player pl = (player)self; - if (pl.w_attack_next) { + + if (pl.w_attack_next) return; - } + /* Simple toggle of fovs */ - if (pl.viewzoom == 1.0f) { + if (pl.viewzoom == 1.0f) pl.viewzoom = 0.2f; - } else { + else pl.viewzoom = 1.0f; - } + pl.w_attack_next = 0.5f; } @@ -180,19 +178,16 @@ w_sg552_reload(void) { player pl = (player)self; - if (pl.w_attack_next > 0.0) { + if (pl.w_attack_next > 0.0) return; - } - if (pl.sg552_mag >= 30) { + if (pl.sg552_mag >= 30) return; - } - if (!pl.ammo_556mm) { + if (!pl.ammo_556mm) return; - } -#ifdef CLIENT Weapons_ViewAnimation(SG552_RELOAD); -#else + +#ifdef SERVER Weapons_ReloadWeapon(pl, player::sg552_mag, player::ammo_556mm, 30); Weapons_UpdateAmmo(pl, pl.sg552_mag, pl.ammo_556mm, -1); #endif diff --git a/src/shared/w_smokegrenade.qc b/src/shared/w_smokegrenade.qc index 30f786e..6ac3ae0 100644 --- a/src/shared/w_smokegrenade.qc +++ b/src/shared/w_smokegrenade.qc @@ -98,7 +98,8 @@ w_smokegrenade_draw(void) } #ifdef SERVER -void w_smokegrenade_throw(void) +void +w_smokegrenade_throw(void) { static void smokegrenade_explode(void) { diff --git a/src/shared/w_tmp.qc b/src/shared/w_tmp.qc index b059fce..f10c7ab 100644 --- a/src/shared/w_tmp.qc +++ b/src/shared/w_tmp.qc @@ -112,22 +112,15 @@ w_tmp_primary(void) { player pl = (player)self; - if (pl.w_attack_next > 0.0) { + if (pl.w_attack_next > 0.0) return; - } - - /* ammo check */ - if (!pl.tmp_mag) { + if (!pl.tmp_mag) return; - } Cstrike_ShotMultiplierAdd(pl, 1); float accuracy = Cstrike_CalculateAccuracy(pl, 200); pl.tmp_mag--; -#ifdef CLIENT - View_SetMuzzleflash(MUZZLE_RIFLE); - int r = (float)input_sequence % 3; switch (r) { case 0: @@ -140,16 +133,18 @@ w_tmp_primary(void) Weapons_ViewAnimation(TMP_SHOOT3); break; } - View_AddEvent(w_pistol_ejectshell, 0.0f); -#else - TraceAttack_SetPenetrationPower(0); - TraceAttack_FireBullets(1, pl.origin + pl.view_ofs, 26, [accuracy,accuracy], WEAPON_TMP); if (self.flags & FL_CROUCHING) Animation_PlayerTop(pl, ANIM_SHOOT_MP5, 0.45f); else Animation_PlayerTop(pl, ANIM_CROUCH_SHOOT_MP5, 0.45f); +#ifdef CLIENT + View_SetMuzzleflash(MUZZLE_RIFLE); + View_AddEvent(w_pistol_ejectshell, 0.0f); +#else + TraceAttack_SetPenetrationPower(0); + TraceAttack_FireBullets(1, pl.origin + pl.view_ofs, 26, [accuracy,accuracy], WEAPON_TMP); Sound_Play(pl, CHAN_WEAPON, "weapon_tmp.fire"); #endif @@ -162,19 +157,16 @@ w_tmp_reload(void) { player pl = (player)self; - if (pl.w_attack_next > 0.0) { + if (pl.w_attack_next > 0.0) return; - } - if (pl.tmp_mag >= 30) { + if (pl.tmp_mag >= 30) return; - } - if (!pl.ammo_9mm) { + if (!pl.ammo_9mm) return; - } -#ifdef CLIENT Weapons_ViewAnimation(TMP_RELOAD); -#else + +#ifdef SERVER Weapons_ReloadWeapon(pl, player::tmp_mag, player::ammo_9mm, 30); Weapons_UpdateAmmo(pl, pl.tmp_mag, pl.ammo_9mm, -1); #endif diff --git a/src/shared/w_ump45.qc b/src/shared/w_ump45.qc index 78c01a2..1dc7482 100644 --- a/src/shared/w_ump45.qc +++ b/src/shared/w_ump45.qc @@ -112,14 +112,10 @@ w_ump45_primary(void) { player pl = (player)self; - if (pl.w_attack_next > 0.0) { + if (pl.w_attack_next > 0.0) return; - } - - /* ammo check */ - if (!pl.ump45_mag) { + if (!pl.ump45_mag) return; - } Cstrike_ShotMultiplierAdd(pl, 1); float accuracy = Cstrike_CalculateAccuracy(pl, 210); @@ -138,18 +134,17 @@ w_ump45_primary(void) break; } + if (self.flags & FL_CROUCHING) + Animation_PlayerTop(pl, ANIM_SHOOT_MP5, 0.45f); + else + Animation_PlayerTop(pl, ANIM_CROUCH_SHOOT_MP5, 0.45f); + #ifdef CLIENT View_SetMuzzleflash(MUZZLE_RIFLE); View_AddEvent(w_pistol_ejectshell, 0.0f); #else TraceAttack_SetPenetrationPower(0); TraceAttack_FireBullets(1, pl.origin + pl.view_ofs, 30, [accuracy,accuracy], WEAPON_UMP45); - - if (self.flags & FL_CROUCHING) - Animation_PlayerTop(pl, ANIM_SHOOT_MP5, 0.45f); - else - Animation_PlayerTop(pl, ANIM_CROUCH_SHOOT_MP5, 0.45f); - Sound_Play(pl, CHAN_WEAPON, "weapon_ump45.fire"); #endif @@ -162,19 +157,16 @@ w_ump45_reload(void) { player pl = (player)self; - if (pl.w_attack_next > 0.0) { + if (pl.w_attack_next > 0.0) return; - } - if (pl.ump45_mag >= 25) { + if (pl.ump45_mag >= 25) return; - } - if (!pl.ammo_45acp) { + if (!pl.ammo_45acp) return; - } -#ifdef CLIENT Weapons_ViewAnimation(UMP45_RELOAD); -#else + +#ifdef SERVER Weapons_ReloadWeapon(pl, player::ump45_mag, player::ammo_45acp, 25); Weapons_UpdateAmmo(pl, pl.ump45_mag, pl.ammo_45acp, -1); #endif diff --git a/src/shared/w_usp45.qc b/src/shared/w_usp45.qc index aff5f63..7d8f7c2 100644 --- a/src/shared/w_usp45.qc +++ b/src/shared/w_usp45.qc @@ -130,18 +130,12 @@ w_usp45_primary(void) { player pl = (player)self; - if (pl.w_attack_next > 0.0) { + if (pl.w_attack_next > 0.0) return; - } - - if (pl.gflags & GF_SEMI_TOGGLED) { + if (pl.gflags & GF_SEMI_TOGGLED) return; - } - - /* ammo check */ - if (!pl.usp45_mag) { + if (!pl.usp45_mag) return; - } Cstrike_ShotMultiplierAdd(pl, 1); float accuracy = Cstrike_CalculateAccuracy(pl, 200); @@ -183,6 +177,11 @@ w_usp45_primary(void) } } + if (self.flags & FL_CROUCHING) + Animation_PlayerTop(pl, ANIM_SHOOT_ONEHAND, 0.45f); + else + Animation_PlayerTop(pl, ANIM_CROUCH_SHOOT_ONEHAND, 0.45f); + #ifdef CLIENT if (pl.mode_usp45 == 1) { View_SetMuzzleflash(0); @@ -202,11 +201,6 @@ w_usp45_primary(void) /* actual firing */ TraceAttack_SetPenetrationPower(0); TraceAttack_FireBullets(1, pl.origin + pl.view_ofs, 33, [accuracy,accuracy], WEAPON_USP45); - - if (self.flags & FL_CROUCHING) - Animation_PlayerTop(pl, ANIM_SHOOT_ONEHAND, 0.45f); - else - Animation_PlayerTop(pl, ANIM_CROUCH_SHOOT_ONEHAND, 0.45f); #endif pl.gflags |= GF_SEMI_TOGGLED; @@ -219,19 +213,17 @@ w_usp45_secondary(void) { player pl = (player)self; - if (pl.w_attack_next > 0) { + if (pl.w_attack_next > 0) return; - } /* toggle silencer */ pl.mode_usp45 = 1 - pl.mode_usp45; /* play the animation */ - if (pl.mode_usp45) { + if (pl.mode_usp45) Weapons_ViewAnimation(USP45_ADDSIL); - } else { + else Weapons_ViewAnimation(USP45_DETACHSIL); - } pl.w_attack_next = 3.1f; pl.w_idle_next = pl.w_attack_next; @@ -242,23 +234,19 @@ w_usp45_reload(void) { player pl = (player)self; - if (pl.w_attack_next > 0.0) { + if (pl.w_attack_next > 0.0) return; - } - if (pl.usp45_mag >= 12) { + if (pl.usp45_mag >= 12) return; - } - if (!pl.ammo_45acp) { + if (!pl.ammo_45acp) return; - } -#ifdef CLIENT - if (pl.mode_usp45 == 1) { + if (pl.mode_usp45 == 1) Weapons_ViewAnimation(USP45_RELOAD); - } else { + else Weapons_ViewAnimation(USP45_RELOADUNSIL); - } -#else + +#ifdef SERVER Weapons_ReloadWeapon(pl, player::usp45_mag, player::ammo_45acp, 12); #endif diff --git a/src/shared/w_xm1014.qc b/src/shared/w_xm1014.qc index c9cfbe3..4df7060 100644 --- a/src/shared/w_xm1014.qc +++ b/src/shared/w_xm1014.qc @@ -27,7 +27,8 @@ Price: $3000 */ #ifdef CLIENT -void w_xm1014_ejectshell(void) +void +w_xm1014_ejectshell(void) { static void w_xm1014_ejectshell_death(void) { remove(self); @@ -178,18 +179,17 @@ w_xm1014_primary(void) break; } + if (self.flags & FL_CROUCHING) + Animation_PlayerTop(pl, ANIM_SHOOT_SHOTGUN, 0.45f); + else + Animation_PlayerTop(pl, ANIM_CROUCH_SHOOT_SHOTGUN, 0.45f); + #ifdef CLIENT View_SetMuzzleflash(MUZZLE_RIFLE); View_AddEvent(w_xm1014_ejectshell, 0.0f); #else TraceAttack_SetPenetrationPower(0); TraceAttack_FireBullets(6, pl.origin + pl.view_ofs, 22, [accuracy,accuracy], WEAPON_XM1014); - - if (self.flags & FL_CROUCHING) - Animation_PlayerTop(pl, ANIM_SHOOT_SHOTGUN, 0.45f); - else - Animation_PlayerTop(pl, ANIM_CROUCH_SHOOT_SHOTGUN, 0.45f); - Sound_Play(pl, CHAN_WEAPON, "weapon_xm1014.fire"); #endif