void CHL2MP_Player::GiveDefaultItems( void ) { EquipSuit(); CBasePlayer::GiveAmmo( 255, "Pistol"); CBasePlayer::GiveAmmo( 45, "SMG1"); CBasePlayer::GiveAmmo( 6, "Buckshot"); CBasePlayer::GiveAmmo( 6, "357" ); GiveNamedItem( "weapon_crowbar" ); GiveNamedItem( "weapon_pistol" ); GiveNamedItem( "weapon_smg1" ); GiveNamedItem( "weapon_physcannon" ); const char *szDefaultWeaponName = engine->GetClientConVarValue( engine->IndexOfEdict( edict() ), "cl_defaultweapon" ); CBaseCombatWeapon *pDefaultWeapon = Weapon_OwnsThisType( szDefaultWeaponName ); if ( pDefaultWeapon ) { Weapon_Switch( pDefaultWeapon ); } else { Weapon_Switch( Weapon_OwnsThisType( "weapon_physcannon" ) ); } }
//----------------------------------------------------------------------------- // Purpose: //----------------------------------------------------------------------------- void CBasePlayer::SelectItem( const char *pstr, int iSubType ) { if (!pstr) return; CBaseCombatWeapon *pItem = Weapon_OwnsThisType( pstr, iSubType ); if (!pItem) return; if( GetObserverMode() != OBS_MODE_NONE ) return;// Observers can't select things. if ( !Weapon_ShouldSelectItem( pItem ) ) return; // FIX, this needs to queue them up and delay // Make sure the current weapon can be holstered if ( GetActiveWeapon() ) { if ( !GetActiveWeapon()->CanHolster() ) return; ResetAutoaim( ); } Weapon_Switch( pItem ); }
void CHL2MP_Player::Weapon_Drop( CBaseCombatWeapon *pWeapon, const Vector *pvecTarget, const Vector *pVelocity ) { //Drop a grenade if it's primed. if ( GetActiveWeapon() ) { CBaseCombatWeapon *pGrenade = Weapon_OwnsThisType("weapon_frag"); if ( GetActiveWeapon() == pGrenade ) { if ( ( m_nButtons & IN_ATTACK ) || (m_nButtons & IN_ATTACK2) ) { DropPrimedFragGrenade( this, pGrenade ); return; } //DHL - Skillet else { pGrenade->Drop( *pVelocity ); return; } } } BaseClass::Weapon_Drop( pWeapon, pvecTarget, pVelocity ); }
void CHL2MP_Player::GiveDefaultItems( void ) { EquipSuit(); //BP En période de construction du mode forts, on ne donne que le physgun if(HL2MPRules()->GetGameType() == GAME_FORTS && HL2MPRules()->IsFortsBuildPhase()) { GiveNamedItem( "weapon_carebearstare" ); Weapon_Switch( Weapon_OwnsThisType( "weapon_carebearstare" ) ); return; } if(HL2MPRules()->IsHumiliation()) { if((HL2MPRules()->IsTeamplay() && HL2MPRules()->GetWinningTeamNumber() == GetTeamNumber()) || (!HL2MPRules()->IsTeamplay() && HL2MPRules()->GetBestPlayer() == this)) GiveNamedItem("weapon_bat"); else GiveNamedItem("weapon_flower"); return; } GiveNamedItem( "weapon_flower" ); if(!HL2MPRules()->OnlyGiveFlower()) { GiveNamedItem( "weapon_uzi" ); CBasePlayer::GiveAmmo( 60, "SMG1"); GiveNamedItem( "weapon_grenade" ); GiveNamedItem( "weapon_grenade" ); GiveNamedItem( "weapon_revolver" ); GiveNamedItem( "weapon_flowerlauncher" ); } const char *szDefaultWeaponName = engine->GetClientConVarValue( engine->IndexOfEdict( edict() ), "cl_defaultweapon" ); CBaseCombatWeapon *pDefaultWeapon = Weapon_OwnsThisType( szDefaultWeaponName ); if ( pDefaultWeapon ) Weapon_Switch( pDefaultWeapon ); else Weapon_Switch( Weapon_OwnsThisType( "weapon_uzi" ) ); }
void CHL2MP_Player::GiveDefaultItems( void ) { EquipSuit(); // CBasePlayer::GiveAmmo( 255, "Pistol"); // CBasePlayer::GiveAmmo( 45, "SMG1"); // CBasePlayer::GiveAmmo( 1, "grenade" ); CBasePlayer::GiveAmmo( 100, "Buckshot"); // CBasePlayer::GiveAmmo( 6, "357" ); CBasePlayer::GiveAmmo( 100, "rpg_round"); CBasePlayer::GiveAmmo( 200, "XBowBolt" ); CBasePlayer::GiveAmmo( 200, "Cells"); GiveNamedItem( "weapon_crowbar" ); GiveNamedItem( "weapon_shotgun" ); GiveNamedItem( "weapon_shotgundouble" ); // GiveNamedItem( "weapon_shaft" ); GiveNamedItem( "weapon_rpg" ); GiveNamedItem( "weapon_grenadelauncher" ); GiveNamedItem( "weapon_nailgun" ); GiveNamedItem( "weapon_nailgunsuper" ); // GiveNamedItem( "weapon_pistol" ); // GiveNamedItem( "weapon_smg1" ); // GiveNamedItem( "weapon_frag" ); // GiveNamedItem( "weapon_physcannon" ); const char *szDefaultWeaponName = engine->GetClientConVarValue( engine->IndexOfEdict( edict() ), "cl_defaultweapon" ); CBaseCombatWeapon *pDefaultWeapon = Weapon_OwnsThisType( szDefaultWeaponName ); if ( pDefaultWeapon ) { Weapon_Switch( pDefaultWeapon ); } else { Weapon_Switch( Weapon_OwnsThisType( "weapon_shotgun" ) ); } }
//----------------------------------------------------------------------------- // Purpose: Player reacts to bumping a weapon. // Input : pWeapon - the weapon that the player bumped into. // Output : Returns true if player picked up the weapon //----------------------------------------------------------------------------- bool CHL2MP_Player::BumpWeapon( CBaseCombatWeapon *pWeapon ) { CBaseCombatCharacter *pOwner = pWeapon->GetOwner(); // Can I have this weapon type? if ( !IsAllowedToPickupWeapons() ) return false; if ( pOwner || !Weapon_CanUse( pWeapon ) || !g_pGameRules->CanHavePlayerItem( this, pWeapon ) ) { if ( gEvilImpulse101 ) UTIL_Remove( pWeapon ); return false; } // Don't let the player fetch weapons through walls (use MASK_SOLID so that you can't pickup through windows) if( !pWeapon->FVisible( this, MASK_SOLID ) && !(GetFlags() & FL_NOTARGET) ) return false; bool bOwnsWeaponAlready = !!Weapon_OwnsThisType( pWeapon->GetClassname(), pWeapon->GetSubType()); if ( bOwnsWeaponAlready == true ) { //If we have room for the ammo, then "take" the weapon too. if ( Weapon_EquipAmmoOnly( pWeapon ) ) { pWeapon->CheckRespawn(); UTIL_Remove( pWeapon ); return true; } else return false; } pWeapon->CheckRespawn(); Weapon_Equip( pWeapon ); if( !FClassnameIs(pWeapon, "weapon_flower") && !FClassnameIs(pWeapon, "weapon_flowerlauncher") && !FClassnameIs(pWeapon, "weapon_uzi") && !FClassnameIs(pWeapon, "weapon_revolver") && !FClassnameIs(pWeapon, "weapon_grenade")) { if(random->RandomInt(0, 5) == 0) PlayAutovocal(NEWWEAPON); } return true; }
void CHL2MP_Player::GiveDefaultItems( void ) { EquipSuit(); CBasePlayer::GiveAmmo( 255, "Pistol"); CBasePlayer::GiveAmmo( 45, "SMG1"); CBasePlayer::GiveAmmo( 1, "grenade" ); CBasePlayer::GiveAmmo( 6, "Buckshot"); CBasePlayer::GiveAmmo( 6, "357" ); if ( GetPlayerModelType() == PLAYER_SOUNDS_METROPOLICE || GetPlayerModelType() == PLAYER_SOUNDS_COMBINESOLDIER ) { GiveNamedItem( "weapon_stunstick" ); } else if ( GetPlayerModelType() == PLAYER_SOUNDS_CITIZEN ) { GiveNamedItem( "weapon_crowbar" ); } GiveNamedItem( "weapon_pistol" ); GiveNamedItem( "weapon_smg1" ); GiveNamedItem( "weapon_frag" ); GiveNamedItem( "weapon_physcannon" ); const char *szDefaultWeaponName = engine->GetClientConVarValue( engine->IndexOfEdict( edict() ), "cl_defaultweapon" ); CBaseCombatWeapon *pDefaultWeapon = Weapon_OwnsThisType( szDefaultWeaponName ); if ( pDefaultWeapon ) { Weapon_Switch( pDefaultWeapon ); } else { Weapon_Switch( Weapon_OwnsThisType( "weapon_physcannon" ) ); } }
//----------------------------------------------------------------------------- // Purpose: Player reacts to bumping a weapon. // Input : pWeapon - the weapon that the player bumped into. // Output : Returns true if player picked up the weapon //----------------------------------------------------------------------------- bool CHL2MP_Player::BumpWeapon( CBaseCombatWeapon *pWeapon ) { CBaseCombatCharacter *pOwner = pWeapon->GetOwner(); // Can I have this weapon type? if ( IsEFlagSet( EFL_NO_WEAPON_PICKUP ) ) return false; if ( pOwner || !Weapon_CanUse( pWeapon ) || !g_pGameRules->CanHavePlayerItem( this, pWeapon ) ) { if ( gEvilImpulse101 ) { UTIL_Remove( pWeapon ); } return false; } // Don't let the player fetch weapons through walls (use MASK_SOLID so that you can't pickup through windows) if( !pWeapon->FVisible( this, MASK_SOLID ) && !(GetFlags() & FL_NOTARGET) ) { return false; } bool bOwnsWeaponAlready = !!Weapon_OwnsThisType( pWeapon->GetClassname(), pWeapon->GetSubType()); if ( bOwnsWeaponAlready == true ) { //If we have room for the ammo, then "take" the weapon too. if ( Weapon_EquipAmmoOnly( pWeapon ) ) { pWeapon->CheckRespawn(); UTIL_Remove( pWeapon ); return true; } else { return false; } } pWeapon->CheckRespawn(); Weapon_Equip( pWeapon ); return true; }
//----------------------------------------------------------------------------- // Purpose: Translate base class activities into combot activites //----------------------------------------------------------------------------- Activity CNPC_CombineAce::NPC_TranslateActivity( Activity eNewActivity ) { // If the special ep2_outland_05 "use march" flag is set, use the more casual marching anim. if ( m_iUseMarch && eNewActivity == ACT_WALK ) { eNewActivity = ACT_WALK_MARCH; } else if (eNewActivity == ACT_IDLE) { SetEyeState(ACE_EYE_DORMANT); if (!IsCrouching() && (m_NPCState == NPC_STATE_COMBAT || m_NPCState == NPC_STATE_ALERT)) { SetEyeState(ACE_EYE_ACTIVATE); eNewActivity = ACT_IDLE_ANGRY; } } else if (eNewActivity == ACT_RANGE_ATTACK1) { SetEyeState(ACE_EYE_ACTIVATE); } else if (eNewActivity == ACT_RANGE_ATTACK2) { SetEyeState(ACE_EYE_ACTIVATE); // grunt is going to a secondary long range attack. This may be a thrown // grenade or fired grenade, we must determine which and pick proper sequence if (Weapon_OwnsThisType("weapon_grenadelauncher")) { return (Activity)ACT_COMBINE_LAUNCH_GRENADE; } else { return (Activity)ACT_COMBINE_THROW_GRENADE; } } return BaseClass::NPC_TranslateActivity( eNewActivity ); }
/** * Debug command to give a named weapon */ void CCSBot::GiveWeapon( const char *weaponAlias ) { const char *translatedAlias = GetTranslatedWeaponAlias( weaponAlias ); char wpnName[128]; Q_snprintf( wpnName, sizeof( wpnName ), "weapon_%s", translatedAlias ); WEAPON_FILE_INFO_HANDLE hWpnInfo = LookupWeaponInfoSlot( wpnName ); if ( hWpnInfo == GetInvalidWeaponInfoHandle() ) { return; } CCSWeaponInfo *pWeaponInfo = dynamic_cast< CCSWeaponInfo* >( GetFileWeaponInfoFromHandle( hWpnInfo ) ); if ( !pWeaponInfo ) { return; } if ( !Weapon_OwnsThisType( wpnName ) ) { CBaseCombatWeapon *pWeapon = Weapon_GetSlot( pWeaponInfo->iSlot ); if ( pWeapon ) { if ( pWeaponInfo->iSlot == WEAPON_SLOT_PISTOL ) { DropPistol(); } else if ( pWeaponInfo->iSlot == WEAPON_SLOT_RIFLE ) { DropRifle(); } } } GiveNamedItem( wpnName ); }
//----------------------------------------------------------------------------- // Purpose: Player reacts to bumping a weapon. // Input : pWeapon - the weapon that the player bumped into. // Output : Returns true if player picked up the weapon //----------------------------------------------------------------------------- bool CSDKPlayer::BumpWeapon( CBaseCombatWeapon *pWeapon ) { CBaseCombatCharacter *pOwner = pWeapon->GetOwner(); // Can I have this weapon type? if ( !IsAllowedToPickupWeapons() ) return false; if ( pOwner || !Weapon_CanUse( pWeapon ) || !g_pGameRules->CanHavePlayerItem( this, pWeapon ) ) { if ( gEvilImpulse101 ) { UTIL_Remove( pWeapon ); } return false; } // Don't let the player fetch weapons through walls (use MASK_SOLID so that you can't pickup through windows) if( !pWeapon->FVisible( this, MASK_SOLID ) && !(GetFlags() & FL_NOTARGET) ) { return false; } // ---------------------------------------- // If I already have it just take the ammo // ---------------------------------------- if (Weapon_OwnsThisType( pWeapon->GetClassname(), pWeapon->GetSubType())) { //Only remove the weapon if we attained ammo from it if ( Weapon_EquipAmmoOnly( pWeapon ) == false ) return false; // Only remove me if I have no ammo left // Can't just check HasAnyAmmo because if I don't use clips, I want to be removed, if ( pWeapon->UsesClipsForAmmo1() && pWeapon->HasPrimaryAmmo() ) return false; UTIL_Remove( pWeapon ); return false; } // ------------------------- // Otherwise take the weapon // ------------------------- else { //Make sure we're not trying to take a new weapon type we already have if ( Weapon_SlotOccupied( pWeapon ) ) { CBaseCombatWeapon *pActiveWeapon = Weapon_GetSlot( WEAPON_PRIMARY_SLOT ); if ( pActiveWeapon != NULL && pActiveWeapon->HasAnyAmmo() == false && Weapon_CanSwitchTo( pWeapon ) ) { Weapon_Equip( pWeapon ); return true; } //Attempt to take ammo if this is the gun we're holding already if ( Weapon_OwnsThisType( pWeapon->GetClassname(), pWeapon->GetSubType() ) ) { Weapon_EquipAmmoOnly( pWeapon ); } return false; } } pWeapon->CheckRespawn(); Weapon_Equip( pWeapon ); return true; }
// correct respawning of weapons bool CHL1MP_Player::BumpWeapon( CBaseCombatWeapon *pWeapon ) { CBaseCombatCharacter *pOwner = pWeapon->GetOwner(); // Can I have this weapon type? if ( !IsAllowedToPickupWeapons() ) { if ( sv_debugweaponpickup.GetBool() ) Msg("sv_debugweaponpickup: IsAllowedToPickupWeapons() returned false\n"); return false; } if ( pOwner || !Weapon_CanUse( pWeapon ) || !g_pGameRules->CanHavePlayerItem( this, pWeapon ) ) { if ( sv_debugweaponpickup.GetBool() && pOwner ) Msg("sv_debugweaponpickup: pOwner\n"); if ( sv_debugweaponpickup.GetBool() && !Weapon_CanUse( pWeapon ) ) Msg("sv_debugweaponpickup: Can't use weapon\n"); if ( sv_debugweaponpickup.GetBool() && !g_pGameRules->CanHavePlayerItem( this, pWeapon ) ) Msg("sv_debugweaponpickup: Gamerules says player can't have item\n"); if ( gEvilImpulse101 ) { UTIL_Remove( pWeapon ); } return false; } // Don't let the player fetch weapons through walls (use MASK_SOLID so that you can't pickup through windows) if( !pWeapon->FVisible( this, MASK_SOLID ) && !(GetFlags() & FL_NOTARGET) ) { if ( sv_debugweaponpickup.GetBool() && !FVisible( this, MASK_SOLID ) ) Msg("sv_debugweaponpickup: Can't fetch weapon through a wall\n"); if ( sv_debugweaponpickup.GetBool() && !(GetFlags() & FL_NOTARGET) ) Msg("sv_debugweaponpickup: NoTarget\n"); return false; } bool bOwnsWeaponAlready = !!Weapon_OwnsThisType( pWeapon->GetClassname(), pWeapon->GetSubType()); if ( bOwnsWeaponAlready == true ) { //If we have room for the ammo, then "take" the weapon too. if ( Weapon_EquipAmmoOnly( pWeapon ) ) { pWeapon->CheckRespawn(); UTIL_Remove( pWeapon ); if ( sv_debugweaponpickup.GetBool() ) Msg("sv_debugweaponpickup: Picking up weapon\n"); return true; } else { if ( sv_debugweaponpickup.GetBool() ) Msg("sv_debugweaponpickup: Owns weapon already\n"); return false; } } pWeapon->CheckRespawn(); Weapon_Equip( pWeapon ); if ( sv_debugweaponpickup.GetBool() ) Msg("sv_debugweaponpickup: Picking up weapon\n"); return true; }