Features
Just simple hook of sentry gun's bullet fire. You can increase amounts of bullet or make sentry fire laser instead of firing bullet. I plan to make sub-plugins for this.
Forwards
PHP Code:
/**
* Called before CBaseEntity::FireBullets().
*
* @param sentry Sentry entity index.
* @param builder Sentry builder index.
* @param shots Number of bullets.
* @param src Start point of bullet fire.
* @param dirShooting Direction of bullet fire.
* @param spread Spread of bullet fire.
* @param distance Distance of bullet's max reach.
* @param tracerFreq Tracer Frequency. Set to 0, no bullet tracer.
* @param damage Damage of per bullet.
* @param playerDamage Damage to be used instead of m_flDamage if we hit a player.
* @param flags See FireBulletsFlags_t.
* @param damageForceScale Damage's force scale. But it doesn't seem to affect alive player?
* @param attacker Attacker index. Unless it's a special situation, it is builder. If builder isn't valid, it is sentry.
* @param ignoreEnt Define target who bullet will ignore. Default value is -1(none).
*
* @return Plugin_Stop or Plugin_Handled to block shooting bullet.
* Plugin_Changed to change parameters.
* Plugin_Continue is nothing happen.
*/
forward Action TF2_SentryFireBullet(int sentry, int builder, int &shots, float src[3], const float dirShooting[3], float spread[3], float &distance, int &tracerFreq, float &damage, int &playerDamage, int &flags, float &damageForceScale, int &attacker, int &ignoreEnt);
forward void TF2_SentryFireBulletPost(int sentry, int builder, int shots, const float src[3], const float dirShooting[3], const float spread[3], float distance, int tracerFreq, float damage, int playerDamage, int flags, float damageForceScale, int attacker, int ignoreEnt);
Credits
- nosoop: Help dealing with in-memory structs and dhooks_gameconf_shim to avoid global hook conflicts.
- AzulFlamaWallon: Gave idea to make this.
Dependancy
- sourcemod 1.11+ (Because it use DHooks with detour support)
- stocksoup(compile only)