Skip to content

Commit bfdaee8

Browse files
dystopmyohimik
authored andcommitted
API: Added new API funcs (6) and new Hookchains (21) (rehlds#849)
* Added few newest API Hookchains * Added hookchain for PM_CheckWaterJump * Added hookchain for PM_Jump * Added hookchain for PM_Duck * Added hookchain for PM_UnDuck * Added hookchain for ClearMultiDamage * Added hookchain for AddMultiDamage * Added hookchain for ApplyMultiDamage * Added hookchain for CSGameRules::TeamFull * Added hookchain for CSGameRules::TeamStacked * Added hookchain for CSGameRules::PlayerGotWeapon * Added hookchain for CBotManager::OnEvent * Added hookchain for CBasePlayer::EntSelectSpawnPoint * Added hookchain for CBasePlayerWeapon::KickBack * Added hookchain for CBasePlayerWeapon::SendWeaponAnim * Added new PM_* Hookchains * Added PM_WaterJump * Added PM_PlayStepSound * Added PM_AirAccelerate * Added CBasePlayer::CheckTimeBasedDamage * Added CBasePlayerWeapon::ItemPostFrame * Added BuyItem and CSGameRules::Think * AddAmmoNameToAmmoRegistry refactory * Bump minor version in an API bump up to 23
1 parent 73ccfac commit bfdaee8

15 files changed

Lines changed: 494 additions & 121 deletions

File tree

regamedll/dlls/API/CAPI_Impl.cpp

Lines changed: 135 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -30,40 +30,133 @@
3030

3131
CReGameHookchains g_ReGameHookchains;
3232

33-
int EXT_FUNC Cmd_Argc_api() {
33+
void EXT_FUNC Regamedll_ChangeString_api(char *&dest, const char *source)
34+
{
35+
size_t len = Q_strlen(source);
36+
if (dest == nullptr || Q_strlen(dest) != len) {
37+
delete [] dest;
38+
dest = new char [len + 1];
39+
}
40+
41+
Q_strcpy(dest, source);
42+
}
43+
44+
void EXT_FUNC RadiusDamage_api(Vector vecSrc, entvars_t *pevInflictor, entvars_t *pevAttacker, float flDamage, float flRadius, int iClassIgnore, int bitsDamageType)
45+
{
46+
RadiusDamage(vecSrc, pevInflictor, pevAttacker, flDamage, flRadius, iClassIgnore, bitsDamageType);
47+
}
48+
49+
void EXT_FUNC ClearMultiDamage_api()
50+
{
51+
ClearMultiDamage();
52+
}
53+
54+
void EXT_FUNC ApplyMultiDamage_api(entvars_t *pevInflictor, entvars_t *pevAttacker)
55+
{
56+
ApplyMultiDamage(pevInflictor, pevAttacker);
57+
}
58+
59+
void EXT_FUNC AddMultiDamage_api(entvars_t *pevInflictor, CBaseEntity *pEntity, float flDamage, int bitsDamageType)
60+
{
61+
AddMultiDamage(pevInflictor, pEntity, flDamage, bitsDamageType);
62+
}
63+
64+
int EXT_FUNC Cmd_Argc_api()
65+
{
3466
return CMD_ARGC_();
3567
}
3668

37-
const char *EXT_FUNC Cmd_Argv_api(int i) {
69+
const char *EXT_FUNC Cmd_Argv_api(int i)
70+
{
3871
return CMD_ARGV_(i);
3972
}
4073

41-
CGrenade *PlantBomb_api(entvars_t *pevOwner, Vector &vecStart, Vector &vecVelocity) {
74+
CGrenade *EXT_FUNC PlantBomb_api(entvars_t *pevOwner, Vector &vecStart, Vector &vecVelocity)
75+
{
4276
return CGrenade::ShootSatchelCharge(pevOwner, vecStart, vecVelocity);
4377
}
4478

45-
CGib *SpawnHeadGib_api(entvars_t *pevVictim) {
79+
CGib *EXT_FUNC SpawnHeadGib_api(entvars_t *pevVictim)
80+
{
4681
return CGib::SpawnHeadGib(pevVictim);
4782
}
4883

49-
void SpawnRandomGibs_api(entvars_t *pevVictim, int cGibs, int human) {
84+
void EXT_FUNC SpawnRandomGibs_api(entvars_t *pevVictim, int cGibs, int human)
85+
{
5086
CGib::SpawnRandomGibs(pevVictim, cGibs, human);
5187
}
5288

89+
void EXT_FUNC UTIL_RestartOther_api(const char *szClassname)
90+
{
91+
UTIL_RestartOther(szClassname);
92+
}
93+
94+
void EXT_FUNC UTIL_ResetEntities_api()
95+
{
96+
UTIL_ResetEntities();
97+
}
98+
99+
void EXT_FUNC UTIL_RemoveOther_api(const char *szClassname, int nCount)
100+
{
101+
UTIL_RemoveOther(szClassname, nCount);
102+
}
103+
104+
void EXT_FUNC UTIL_DecalTrace_api(TraceResult *pTrace, int decalNumber)
105+
{
106+
UTIL_DecalTrace(pTrace, decalNumber);
107+
}
108+
109+
void EXT_FUNC UTIL_Remove_api(CBaseEntity *pEntity)
110+
{
111+
UTIL_Remove(pEntity);
112+
}
113+
114+
int EXT_FUNC AddAmmoNameToAmmoRegistry_api(const char *szAmmoname)
115+
{
116+
return AddAmmoNameToAmmoRegistry(szAmmoname);
117+
}
118+
119+
void EXT_FUNC TextureTypePlaySound_api(TraceResult *ptr, Vector vecSrc, Vector vecEnd, int iBulletType)
120+
{
121+
TEXTURETYPE_PlaySound(ptr, vecSrc, vecEnd, iBulletType);
122+
}
123+
124+
CWeaponBox *EXT_FUNC CreateWeaponBox_api(CBasePlayerItem *pItem, CBasePlayer *pPlayerOwner, const char *modelName, Vector &origin, Vector &angles, Vector &velocity, float lifeTime, bool packAmmo)
125+
{
126+
return CreateWeaponBox(pItem, pPlayerOwner, modelName, origin, angles, velocity, lifeTime < 0.0 ? CGameRules::GetItemKillDelay() : lifeTime, packAmmo);
127+
}
128+
129+
CGrenade *EXT_FUNC SpawnGrenade_api(WeaponIdType weaponId, entvars_t *pevOwner, Vector &vecSrc, Vector &vecThrow, float time, int iTeam, unsigned short usEvent)
130+
{
131+
switch (weaponId)
132+
{
133+
case WEAPON_HEGRENADE:
134+
return CGrenade::ShootTimed2(pevOwner, vecSrc, vecThrow, time, iTeam, usEvent);
135+
case WEAPON_FLASHBANG:
136+
return CGrenade::ShootTimed(pevOwner, vecSrc, vecThrow, time);
137+
case WEAPON_SMOKEGRENADE:
138+
return CGrenade::ShootSmokeGrenade(pevOwner, vecSrc, vecThrow, time, usEvent);
139+
case WEAPON_C4:
140+
return CGrenade::ShootSatchelCharge(pevOwner, vecSrc, vecThrow);
141+
}
142+
143+
return nullptr;
144+
}
145+
53146
ReGameFuncs_t g_ReGameApiFuncs = {
54-
&CREATE_NAMED_ENTITY,
147+
CREATE_NAMED_ENTITY,
55148

56-
&Regamedll_ChangeString_api,
149+
Regamedll_ChangeString_api,
57150

58-
&RadiusDamage_api,
59-
&ClearMultiDamage_api,
60-
&ApplyMultiDamage_api,
61-
&AddMultiDamage_api,
151+
RadiusDamage_api,
152+
ClearMultiDamage_api,
153+
ApplyMultiDamage_api,
154+
AddMultiDamage_api,
62155

63-
&UTIL_FindEntityByString,
156+
UTIL_FindEntityByString,
64157

65-
&AddEntityHashValue,
66-
&RemoveEntityHashValue,
158+
AddEntityHashValue,
159+
RemoveEntityHashValue,
67160

68161
Cmd_Argc_api,
69162
Cmd_Argv_api,
@@ -76,6 +169,13 @@ ReGameFuncs_t g_ReGameApiFuncs = {
76169
UTIL_RestartOther_api,
77170
UTIL_ResetEntities_api,
78171
UTIL_RemoveOther_api,
172+
UTIL_DecalTrace_api,
173+
UTIL_Remove_api,
174+
175+
AddAmmoNameToAmmoRegistry_api,
176+
TextureTypePlaySound_api,
177+
CreateWeaponBox_api,
178+
SpawnGrenade_api,
79179
};
80180

81181
GAMEHOOK_REGISTRY(CBasePlayer_Spawn);
@@ -210,6 +310,27 @@ GAMEHOOK_REGISTRY(CBasePlayer_JoiningThink);
210310

211311
GAMEHOOK_REGISTRY(FreeGameRules);
212312
GAMEHOOK_REGISTRY(PM_LadderMove);
313+
GAMEHOOK_REGISTRY(PM_WaterJump);
314+
GAMEHOOK_REGISTRY(PM_CheckWaterJump);
315+
GAMEHOOK_REGISTRY(PM_Jump);
316+
GAMEHOOK_REGISTRY(PM_Duck);
317+
GAMEHOOK_REGISTRY(PM_UnDuck);
318+
GAMEHOOK_REGISTRY(PM_PlayStepSound);
319+
GAMEHOOK_REGISTRY(PM_AirAccelerate);
320+
GAMEHOOK_REGISTRY(ClearMultiDamage);
321+
GAMEHOOK_REGISTRY(AddMultiDamage);
322+
GAMEHOOK_REGISTRY(ApplyMultiDamage);
323+
GAMEHOOK_REGISTRY(BuyItem);
324+
GAMEHOOK_REGISTRY(CSGameRules_Think);
325+
GAMEHOOK_REGISTRY(CSGameRules_TeamFull);
326+
GAMEHOOK_REGISTRY(CSGameRules_TeamStacked);
327+
GAMEHOOK_REGISTRY(CSGameRules_PlayerGotWeapon);
328+
GAMEHOOK_REGISTRY(CBotManager_OnEvent);
329+
GAMEHOOK_REGISTRY(CBasePlayer_CheckTimeBasedDamage);
330+
GAMEHOOK_REGISTRY(CBasePlayer_EntSelectSpawnPoint);
331+
GAMEHOOK_REGISTRY(CBasePlayerWeapon_ItemPostFrame);
332+
GAMEHOOK_REGISTRY(CBasePlayerWeapon_KickBack);
333+
GAMEHOOK_REGISTRY(CBasePlayerWeapon_SendWeaponAnim);
213334

214335
int CReGameApi::GetMajorVersion() {
215336
return REGAMEDLL_API_VERSION_MAJOR;
@@ -272,48 +393,4 @@ bool CReGameApi::BGetIGameRules(const char *pchVersion) const
272393
return false;
273394
}
274395

275-
EXT_FUNC void Regamedll_ChangeString_api(char *&dest, const char *source)
276-
{
277-
size_t len = Q_strlen(source);
278-
if (dest == nullptr || Q_strlen(dest) != len) {
279-
delete [] dest;
280-
dest = new char [len + 1];
281-
}
282-
283-
Q_strcpy(dest, source);
284-
}
285-
286-
EXT_FUNC void RadiusDamage_api(Vector vecSrc, entvars_t *pevInflictor, entvars_t *pevAttacker, float flDamage, float flRadius, int iClassIgnore, int bitsDamageType)
287-
{
288-
RadiusDamage(vecSrc, pevInflictor, pevAttacker, flDamage, flRadius, iClassIgnore, bitsDamageType);
289-
}
290-
291-
EXT_FUNC void ClearMultiDamage_api()
292-
{
293-
ClearMultiDamage();
294-
}
295-
296-
EXT_FUNC void ApplyMultiDamage_api(entvars_t *pevInflictor, entvars_t *pevAttacker)
297-
{
298-
ApplyMultiDamage(pevInflictor, pevAttacker);
299-
}
300-
301-
EXT_FUNC void AddMultiDamage_api(entvars_t *pevInflictor, CBaseEntity *pEntity, float flDamage, int bitsDamageType)
302-
{
303-
AddMultiDamage(pevInflictor, pEntity, flDamage, bitsDamageType);
304-
}
305-
306-
EXT_FUNC void UTIL_RestartOther_api(const char *szClassname) {
307-
UTIL_RestartOther(szClassname);
308-
}
309-
310-
EXT_FUNC void UTIL_ResetEntities_api() {
311-
UTIL_ResetEntities();
312-
}
313-
314-
EXT_FUNC void UTIL_RemoveOther_api(const char *szClassname, int nCount)
315-
{
316-
UTIL_RemoveOther(szClassname, nCount);
317-
}
318-
319396
EXPOSE_SINGLE_INTERFACE(CReGameApi, IReGameApi, VRE_GAMEDLL_API_VERSION);

0 commit comments

Comments
 (0)