Skip to content

Commit 1aaddea

Browse files
Added new native: rg_fire_buckshots (#204)
* Added new native: `rg_fire_buckshots` * Fix typo * Update CSEntity.h Co-authored-by: Sergey Shorokhov <wopox1337@ya.ru>
1 parent e966296 commit 1aaddea

4 files changed

Lines changed: 103 additions & 1 deletion

File tree

reapi/extra/amxmodx/scripting/include/reapi_gamedll.inc

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -342,6 +342,23 @@ native rg_multidmg_add(const inflictor, const victim, const Float:flDamage, cons
342342
*/
343343
native rg_fire_bullets(const inflictor, const attacker, const shots, Float:vecSrc[3], Float:vecDirShooting[3], Float:vecSpread[3], const Float:flDistance, const Bullet:iBulletType, const iTracerFreq, const iDamage);
344344

345+
/*
346+
* Fires buckshots from entity.
347+
*
348+
* @param inflictor Inflictor is the entity that caused the damage (such as a gun)
349+
* @param attacker Attacker is the entity that triggered the damage (such as the gun's owner)
350+
* @param shots The number of shots
351+
* @param vecSrc The source position of the barrel
352+
* @param vecDirShooting Shooting direction
353+
* @param vecSpread Spread
354+
* @param flDistance Max shot distance
355+
* @param iTracerFreq Tracer frequency
356+
* @param iDamage Damage amount
357+
*
358+
* @noreturn
359+
*/
360+
native rg_fire_buckshots(const inflictor, const attacker, const shots, Float:vecSrc[3], Float:vecDirShooting[3], Float:vecSpread[3], const Float:flDistance, const iTracerFreq, const iDamage);
361+
345362
/*
346363
* Fires bullets from player's weapon.
347364
*

reapi/include/cssdk/dlls/API/CSEntity.h

Lines changed: 39 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,8 +40,46 @@ class CCSEntity
4040

4141
virtual ~CCSEntity() {}
4242
virtual void FireBullets(int iShots, Vector &vecSrc, Vector &vecDirShooting, Vector &vecSpread, float flDistance, int iBulletType, int iTracerFreq, int iDamage, entvars_t *pevAttacker) = 0;
43+
virtual void FireBuckshots(ULONG cShots, Vector &vecSrc, Vector &vecDirShooting, Vector &vecSpread, float flDistance, int iTracerFreq, int iDamage, entvars_t *pevAttacker) = 0;
4344
virtual Vector FireBullets3(Vector &vecSrc, Vector &vecDirShooting, float vecSpread, float flDistance, int iPenetration, int iBulletType, int iDamage, float flRangeModifier, entvars_t *pevAttacker, bool bPistol, int shared_rand) = 0;
4445

46+
#if defined(_MSC_VER)
47+
#pragma region reserve_vfuncs_Region
48+
#endif
49+
virtual void func_reserve1() {};
50+
virtual void func_reserve2() {};
51+
virtual void func_reserve3() {};
52+
virtual void func_reserve4() {};
53+
virtual void func_reserve5() {};
54+
virtual void func_reserve6() {};
55+
virtual void func_reserve7() {};
56+
virtual void func_reserve8() {};
57+
virtual void func_reserve9() {};
58+
virtual void func_reserve10() {};
59+
virtual void func_reserve11() {};
60+
virtual void func_reserve12() {};
61+
virtual void func_reserve13() {};
62+
virtual void func_reserve14() {};
63+
virtual void func_reserve15() {};
64+
virtual void func_reserve16() {};
65+
virtual void func_reserve17() {};
66+
virtual void func_reserve18() {};
67+
virtual void func_reserve19() {};
68+
virtual void func_reserve20() {};
69+
virtual void func_reserve21() {};
70+
virtual void func_reserve22() {};
71+
virtual void func_reserve23() {};
72+
virtual void func_reserve24() {};
73+
virtual void func_reserve25() {};
74+
virtual void func_reserve26() {};
75+
virtual void func_reserve27() {};
76+
virtual void func_reserve28() {};
77+
virtual void func_reserve29() {};
78+
virtual void func_reserve30() {};
79+
#if defined(_MSC_VER)
80+
#pragma endregion
81+
#endif
82+
4583
public:
4684
CBaseEntity *m_pContainingEntity;
4785
};
@@ -74,4 +112,4 @@ class CCSMonster: public CCSToggle
74112

75113
};
76114

77-
#define CSENTITY_API_INTERFACE_VERSION "CSENTITY_API_INTERFACE_VERSION001"
115+
#define CSENTITY_API_INTERFACE_VERSION "CSENTITY_API_INTERFACE_VERSION002"

reapi/src/natives/natives_helper.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,10 @@ class CAmxArg
2828
{
2929
return m_value;
3030
}
31+
operator ULONG() const
32+
{
33+
return ULONG(m_value);
34+
}
3135
operator size_t() const
3236
{
3337
return size_t(m_value);

reapi/src/natives/natives_misc.cpp

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -325,6 +325,48 @@ cell AMX_NATIVE_CALL rg_fire_bullets(AMX *amx, cell *params)
325325
return TRUE;
326326
}
327327

328+
/*
329+
* Fires buckshots from entity.
330+
*
331+
* @param inflictor Inflictor is the entity that caused the damage (such as a gun)
332+
* @param attacker Attacker is the entity that triggered the damage (such as the gun's owner)
333+
* @param shots The number of shots
334+
* @param vecSrc The source position of the barrel
335+
* @param vecDirShooting Shooting direction
336+
* @param vecSpread Spread
337+
* @param flDistance Max shot distance
338+
* @param iTracerFreq Tracer frequency
339+
* @param iDamage Damage amount
340+
*
341+
* @noreturn
342+
*
343+
* native rg_fire_buckshots(const inflictor, const attacker, const shots, Float:vecSrc[3], Float:vecDirShooting[3], Float:vecSpread[3], const Float:flDistance, const iTracerFreq, const iDamage);
344+
*/
345+
cell AMX_NATIVE_CALL rg_fire_buckshots(AMX *amx, cell *params)
346+
{
347+
enum args_e { arg_count, arg_inflictor, arg_attacker, arg_shots, arg_vecSrc, arg_dir, arg_spread, arg_dist, arg_tracefrq, arg_dmg };
348+
349+
CHECK_ISENTITY(arg_inflictor);
350+
CHECK_ISENTITY(arg_attacker);
351+
352+
CAmxArgs args(amx, params);
353+
CBaseEntity *pInflictor = args[arg_inflictor];
354+
355+
pInflictor->m_pEntity->FireBuckshots
356+
(
357+
args[arg_shots],
358+
args[arg_vecSrc],
359+
args[arg_dir],
360+
args[arg_spread],
361+
args[arg_dist],
362+
args[arg_tracefrq],
363+
args[arg_dmg],
364+
args[arg_attacker]
365+
);
366+
367+
return TRUE;
368+
}
369+
328370
/*
329371
* Fires bullets from player's weapon.
330372
*
@@ -2441,6 +2483,7 @@ AMX_NATIVE_INFO Misc_Natives_RG[] =
24412483
{ "rg_multidmg_add", rg_multidmg_add },
24422484

24432485
{ "rg_fire_bullets", rg_fire_bullets },
2486+
{ "rg_fire_buckshots", rg_fire_buckshots },
24442487
{ "rg_fire_bullets3", rg_fire_bullets3 },
24452488

24462489
{ "rg_round_end", rg_round_end },

0 commit comments

Comments
 (0)