int GetWeaponData( struct edict_s *player, struct weapon_data_s *info ) { #if defined( CLIENT_WEAPONS ) int i; weapon_data_t *item; entvars_t *pev = &player->v; CBasePlayer *pl = ( CBasePlayer *) CBasePlayer::Instance( pev ); CBasePlayerWeapon *gun; ItemInfo II; memset( info, 0, 32 * sizeof( weapon_data_t ) ); if ( !pl ) return 1; // go through all of the weapons and make a list of the ones to pack for ( i = 0 ; i < MAX_ITEM_TYPES ; i++ ) { if ( pl->m_rgpPlayerItems[ i ] ) { // there's a weapon here. Should I pack it? CBasePlayerItem *pPlayerItem = pl->m_rgpPlayerItems[ i ]; while ( pPlayerItem ) { gun = (CBasePlayerWeapon *)pPlayerItem->GetWeaponPtr(); if ( gun && gun->UseDecrement() ) { // Get The ID. memset( &II, 0, sizeof( II ) ); gun->GetItemInfo( &II ); if ( II.iId >= 0 && II.iId < 32 ) { item = &info[ II.iId ]; item->m_iId = II.iId; item->m_iClip = gun->m_iClip; item->m_flTimeWeaponIdle = max( gun->m_flTimeWeaponIdle, -0.001 ); item->m_flNextPrimaryAttack = max( gun->m_flNextPrimaryAttack, -0.001 ); item->m_flNextSecondaryAttack = max( gun->m_flNextSecondaryAttack, -0.001 ); item->m_fInReload = gun->m_fInReload; } } pPlayerItem = pPlayerItem->m_pNext; } } } #else memset( info, 0, 32 * sizeof( weapon_data_t ) ); #endif return 1; }