mirror of
https://github.com/s1lentq/ReGameDLL_CS.git
synced 2025-03-03 17:25:24 +03:00
commit
a9d5e3bb4a
@ -1,4 +1,4 @@
|
|||||||
# ReGameDLL_CS
|
# ReGameDLL_CS [/statusIcon)](http://teamcity.rehlds.org/viewType.html?buildTypeId=ReGameDLLCs_Publish&guest=1)
|
||||||
Reverse-engineered gamedll (mp.dll / Counter-Strike)
|
Reverse-engineered gamedll (mp.dll / Counter-Strike)
|
||||||
|
|
||||||
## What is this?
|
## What is this?
|
||||||
|
19
dist/game.cfg
vendored
19
dist/game.cfg
vendored
@ -30,3 +30,22 @@ mp_maxmoney 16000
|
|||||||
// Example setting: "ae" - blocks round time and bomb round end checks
|
// Example setting: "ae" - blocks round time and bomb round end checks
|
||||||
// Default value: "0"
|
// Default value: "0"
|
||||||
mp_round_infinite 0
|
mp_round_infinite 0
|
||||||
|
|
||||||
|
// Disable grenade damage through walls
|
||||||
|
// 0 - disabled
|
||||||
|
// 1 - enabled
|
||||||
|
// Default value: "0"
|
||||||
|
mp_hegrenade_penetration 0
|
||||||
|
|
||||||
|
// Drop a grenade after player death
|
||||||
|
// 0 - disabled
|
||||||
|
// 1 - enabled (only the first slot grenades)
|
||||||
|
// 2 - drop a everyone
|
||||||
|
// Default value: "0"
|
||||||
|
mp_nadedrops 0
|
||||||
|
|
||||||
|
// Player cannot respawn until next round
|
||||||
|
// if more than N seconds has elapsed since the beginning round
|
||||||
|
//
|
||||||
|
// Default value: "20"
|
||||||
|
mp_roundrespawn_time 20
|
||||||
|
@ -46,26 +46,12 @@ task publishPrepareFiles {
|
|||||||
into 'publish/publishRoot'
|
into 'publish/publishRoot'
|
||||||
}
|
}
|
||||||
|
|
||||||
//hlsdk
|
//cssdk
|
||||||
//project.file('publish/publishRoot/hlsdk').mkdirs()
|
project.file('publish/publishRoot/cssdk').mkdirs()
|
||||||
//copy {
|
copy {
|
||||||
// from 'regamedll/common'
|
from 'regamedll/extra/cssdk'
|
||||||
// into 'publish/publishRoot/hlsdk/common'
|
into 'publish/publishRoot/cssdk'
|
||||||
//}
|
}
|
||||||
//copy {
|
|
||||||
// from 'regamedll/dlls'
|
|
||||||
// into 'publish/publishRoot/hlsdk/dlls'
|
|
||||||
//}
|
|
||||||
//copy {
|
|
||||||
// from 'regamedll/pm_shared'
|
|
||||||
// into 'publish/publishRoot/hlsdk/pm_shared'
|
|
||||||
//}
|
|
||||||
//copy {
|
|
||||||
// from 'regamedll/public'
|
|
||||||
// into 'publish/publishRoot/hlsdk/public'
|
|
||||||
// include 'interface.h', 'interface.cpp', 'FileSystem.h'
|
|
||||||
//}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -104,7 +104,7 @@ void setupToolchain(NativeBinarySpec b)
|
|||||||
b.lib LazyNativeDepSet.create(dep_cppunitlite, 'cppunitlite', b.buildType.name, true)
|
b.lib LazyNativeDepSet.create(dep_cppunitlite, 'cppunitlite', b.buildType.name, true)
|
||||||
}
|
}
|
||||||
|
|
||||||
cfg.singleDefines 'USE_BREAKPAD_HANDLER', 'DEDICATED', 'REGAMEDLL_SELF', 'CLIENT_WEAPONS'
|
cfg.singleDefines 'USE_BREAKPAD_HANDLER', 'DEDICATED', 'REGAMEDLL_SELF', 'REGAMEDLL_API', 'CLIENT_WEAPONS'
|
||||||
|
|
||||||
if (cfg instanceof MsvcToolchainConfig)
|
if (cfg instanceof MsvcToolchainConfig)
|
||||||
{
|
{
|
||||||
@ -146,7 +146,8 @@ void setupToolchain(NativeBinarySpec b)
|
|||||||
'_vsnprintf': 'vsnprintf',
|
'_vsnprintf': 'vsnprintf',
|
||||||
'_write' : 'write',
|
'_write' : 'write',
|
||||||
'_close' : 'close',
|
'_close' : 'close',
|
||||||
'_vsnwprintf' : 'vswprintf'
|
'_vsnwprintf' : 'vswprintf',
|
||||||
|
'_access' : 'access'
|
||||||
])
|
])
|
||||||
|
|
||||||
cfg.linkerOptions.args '-no-opt-class-analysis'
|
cfg.linkerOptions.args '-no-opt-class-analysis'
|
||||||
|
@ -45,19 +45,11 @@ typedef float float_precision;
|
|||||||
|
|
||||||
#endif // PLAY_GAMEDLL
|
#endif // PLAY_GAMEDLL
|
||||||
|
|
||||||
/* <42b7f> ../common/mathlib.h:3 */
|
|
||||||
typedef float vec_t;
|
typedef float vec_t;
|
||||||
|
|
||||||
/* <42b91> ../common/mathlib.h:6 */
|
|
||||||
typedef vec_t vec3_t[3];
|
typedef vec_t vec3_t[3];
|
||||||
|
|
||||||
/* <80013> ../common/mathlib.h:8 */
|
|
||||||
typedef vec_t vec4_t[4];
|
typedef vec_t vec4_t[4];
|
||||||
|
|
||||||
/* <42bac> ../common/mathlib.h:18 */
|
|
||||||
typedef int fixed16_t;
|
typedef int fixed16_t;
|
||||||
|
|
||||||
/* <42bb7> ../common/mathlib.h:60 */
|
|
||||||
typedef union DLONG_u
|
typedef union DLONG_u
|
||||||
{
|
{
|
||||||
int i[2];
|
int i[2];
|
||||||
|
@ -32,7 +32,7 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
typedef enum
|
typedef enum Activity_s
|
||||||
{
|
{
|
||||||
ACT_INVALID = -1,
|
ACT_INVALID = -1,
|
||||||
|
|
||||||
|
@ -12,7 +12,7 @@ TYPEDESCRIPTION CAirtank::m_SaveData[] =
|
|||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
LINK_ENTITY_TO_CLASS(item_airtank, CAirtank);
|
LINK_ENTITY_TO_CLASS(item_airtank, CAirtank, CCSAirtank);
|
||||||
IMPLEMENT_SAVERESTORE(CAirtank, CGrenade);
|
IMPLEMENT_SAVERESTORE(CAirtank, CGrenade);
|
||||||
|
|
||||||
void CAirtank::__MAKE_VHOOK(Spawn)()
|
void CAirtank::__MAKE_VHOOK(Spawn)()
|
||||||
|
@ -24,7 +24,7 @@ BOOL C9MMAmmo::__MAKE_VHOOK(AddAmmo)(CBaseEntity *pOther)
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
LINK_ENTITY_TO_CLASS(ammo_9mm, C9MMAmmo);
|
LINK_ENTITY_TO_CLASS(ammo_9mm, C9MMAmmo, CCS9MMAmmo);
|
||||||
|
|
||||||
void CBuckShotAmmo::__MAKE_VHOOK(Spawn)()
|
void CBuckShotAmmo::__MAKE_VHOOK(Spawn)()
|
||||||
{
|
{
|
||||||
@ -50,7 +50,7 @@ BOOL CBuckShotAmmo::__MAKE_VHOOK(AddAmmo)(CBaseEntity *pOther)
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
LINK_ENTITY_TO_CLASS(ammo_buckshot, CBuckShotAmmo);
|
LINK_ENTITY_TO_CLASS(ammo_buckshot, CBuckShotAmmo, CCSBuckShotAmmo);
|
||||||
|
|
||||||
void C556NatoAmmo::__MAKE_VHOOK(Spawn)()
|
void C556NatoAmmo::__MAKE_VHOOK(Spawn)()
|
||||||
{
|
{
|
||||||
@ -76,7 +76,7 @@ BOOL C556NatoAmmo::__MAKE_VHOOK(AddAmmo)(CBaseEntity *pOther)
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
LINK_ENTITY_TO_CLASS(ammo_556nato, C556NatoAmmo);
|
LINK_ENTITY_TO_CLASS(ammo_556nato, C556NatoAmmo, CCS556NatoAmmo);
|
||||||
|
|
||||||
void C556NatoBoxAmmo::__MAKE_VHOOK(Spawn)()
|
void C556NatoBoxAmmo::__MAKE_VHOOK(Spawn)()
|
||||||
{
|
{
|
||||||
@ -102,7 +102,7 @@ BOOL C556NatoBoxAmmo::__MAKE_VHOOK(AddAmmo)(CBaseEntity *pOther)
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
LINK_ENTITY_TO_CLASS(ammo_556natobox, C556NatoBoxAmmo);
|
LINK_ENTITY_TO_CLASS(ammo_556natobox, C556NatoBoxAmmo, CCS556NatoBoxAmmo);
|
||||||
|
|
||||||
void C762NatoAmmo::__MAKE_VHOOK(Spawn)()
|
void C762NatoAmmo::__MAKE_VHOOK(Spawn)()
|
||||||
{
|
{
|
||||||
@ -128,7 +128,7 @@ BOOL C762NatoAmmo::__MAKE_VHOOK(AddAmmo)(CBaseEntity *pOther)
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
LINK_ENTITY_TO_CLASS(ammo_762nato, C762NatoAmmo);
|
LINK_ENTITY_TO_CLASS(ammo_762nato, C762NatoAmmo, CCS762NatoAmmo);
|
||||||
|
|
||||||
void C45ACPAmmo::__MAKE_VHOOK(Spawn)()
|
void C45ACPAmmo::__MAKE_VHOOK(Spawn)()
|
||||||
{
|
{
|
||||||
@ -154,7 +154,7 @@ BOOL C45ACPAmmo::__MAKE_VHOOK(AddAmmo)(CBaseEntity *pOther)
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
LINK_ENTITY_TO_CLASS(ammo_45acp, C45ACPAmmo);
|
LINK_ENTITY_TO_CLASS(ammo_45acp, C45ACPAmmo, CCS45ACPAmmo);
|
||||||
|
|
||||||
void C50AEAmmo::__MAKE_VHOOK(Spawn)()
|
void C50AEAmmo::__MAKE_VHOOK(Spawn)()
|
||||||
{
|
{
|
||||||
@ -180,7 +180,7 @@ BOOL C50AEAmmo::__MAKE_VHOOK(AddAmmo)(CBaseEntity *pOther)
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
LINK_ENTITY_TO_CLASS(ammo_50ae, C50AEAmmo);
|
LINK_ENTITY_TO_CLASS(ammo_50ae, C50AEAmmo, CCS50AEAmmo);
|
||||||
|
|
||||||
void C338MagnumAmmo::__MAKE_VHOOK(Spawn)()
|
void C338MagnumAmmo::__MAKE_VHOOK(Spawn)()
|
||||||
{
|
{
|
||||||
@ -206,7 +206,7 @@ BOOL C338MagnumAmmo::__MAKE_VHOOK(AddAmmo)(CBaseEntity *pOther)
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
LINK_ENTITY_TO_CLASS(ammo_338magnum, C338MagnumAmmo);
|
LINK_ENTITY_TO_CLASS(ammo_338magnum, C338MagnumAmmo, CCS338MagnumAmmo);
|
||||||
|
|
||||||
void C57MMAmmo::__MAKE_VHOOK(Spawn)()
|
void C57MMAmmo::__MAKE_VHOOK(Spawn)()
|
||||||
{
|
{
|
||||||
@ -232,7 +232,7 @@ BOOL C57MMAmmo::__MAKE_VHOOK(AddAmmo)(CBaseEntity *pOther)
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
LINK_ENTITY_TO_CLASS(ammo_57mm, C57MMAmmo);
|
LINK_ENTITY_TO_CLASS(ammo_57mm, C57MMAmmo, CCS57MMAmmo);
|
||||||
|
|
||||||
void C357SIGAmmo::__MAKE_VHOOK(Spawn)()
|
void C357SIGAmmo::__MAKE_VHOOK(Spawn)()
|
||||||
{
|
{
|
||||||
@ -258,4 +258,4 @@ BOOL C357SIGAmmo::__MAKE_VHOOK(AddAmmo)(CBaseEntity *pOther)
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
LINK_ENTITY_TO_CLASS(ammo_357sig, C357SIGAmmo);
|
LINK_ENTITY_TO_CLASS(ammo_357sig, C357SIGAmmo, CCS357SIGAmmo);
|
||||||
|
@ -101,7 +101,9 @@ int CBaseAnimating::LookupSequence(const char *label)
|
|||||||
return ::LookupSequence(pmodel, label);
|
return ::LookupSequence(pmodel, label);
|
||||||
}
|
}
|
||||||
|
|
||||||
void CBaseAnimating::ResetSequenceInfo()
|
LINK_HOOK_CLASS_VOID_CHAIN2(CBaseAnimating, ResetSequenceInfo)
|
||||||
|
|
||||||
|
void CBaseAnimating::__API_HOOK(ResetSequenceInfo)()
|
||||||
{
|
{
|
||||||
void *pmodel = GET_MODEL_PTR(ENT(pev));
|
void *pmodel = GET_MODEL_PTR(ENT(pev));
|
||||||
|
|
||||||
|
@ -32,6 +32,19 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
enum MONSTERSTATE
|
||||||
|
{
|
||||||
|
MONSTERSTATE_NONE = 0,
|
||||||
|
MONSTERSTATE_IDLE,
|
||||||
|
MONSTERSTATE_COMBAT,
|
||||||
|
MONSTERSTATE_ALERT,
|
||||||
|
MONSTERSTATE_HUNT,
|
||||||
|
MONSTERSTATE_PRONE,
|
||||||
|
MONSTERSTATE_SCRIPT,
|
||||||
|
MONSTERSTATE_PLAYDEAD,
|
||||||
|
MONSTERSTATE_DEAD
|
||||||
|
};
|
||||||
|
|
||||||
void RadiusFlash(Vector vecSrc, entvars_t *pevInflictor, entvars_t *pevAttacker, float flDamage, int iClassIgnore = 0, int bitsDamageType = 0);
|
void RadiusFlash(Vector vecSrc, entvars_t *pevInflictor, entvars_t *pevAttacker, float flDamage, int iClassIgnore = 0, int bitsDamageType = 0);
|
||||||
void RadiusDamage(Vector vecSrc, entvars_t *pevInflictor, entvars_t *pevAttacker, float flDamage, float flRadius, int iClassIgnore, int bitsDamageType);
|
void RadiusDamage(Vector vecSrc, entvars_t *pevInflictor, entvars_t *pevAttacker, float flDamage, float flRadius, int iClassIgnore, int bitsDamageType);
|
||||||
void RadiusDamage2(Vector vecSrc, entvars_t *pevInflictor, entvars_t *pevAttacker, float flDamage, float flRadius, int iClassIgnore, int bitsDamageType);
|
void RadiusDamage2(Vector vecSrc, entvars_t *pevInflictor, entvars_t *pevAttacker, float flDamage, float flRadius, int iClassIgnore, int bitsDamageType);
|
||||||
|
@ -31,10 +31,10 @@ TYPEDESCRIPTION CPendulum::m_SaveData[] =
|
|||||||
// BModelOrigin - calculates origin of a bmodel from absmin/size because all bmodel origins are 0 0 0
|
// BModelOrigin - calculates origin of a bmodel from absmin/size because all bmodel origins are 0 0 0
|
||||||
Vector VecBModelOrigin(entvars_t *pevBModel)
|
Vector VecBModelOrigin(entvars_t *pevBModel)
|
||||||
{
|
{
|
||||||
return pevBModel->absmin + (pevBModel->size * 0.5);
|
return pevBModel->absmin + (pevBModel->size * 0.5f);
|
||||||
}
|
}
|
||||||
|
|
||||||
LINK_ENTITY_TO_CLASS(func_wall, CFuncWall);
|
LINK_ENTITY_TO_CLASS(func_wall, CFuncWall, CCSFuncWall);
|
||||||
|
|
||||||
void CFuncWall::__MAKE_VHOOK(Spawn)()
|
void CFuncWall::__MAKE_VHOOK(Spawn)()
|
||||||
{
|
{
|
||||||
@ -58,7 +58,7 @@ void CFuncWall::__MAKE_VHOOK(Use)(CBaseEntity *pActivator, CBaseEntity *pCaller,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
LINK_ENTITY_TO_CLASS(func_wall_toggle, CFuncWallToggle);
|
LINK_ENTITY_TO_CLASS(func_wall_toggle, CFuncWallToggle, CCSFuncWallToggle);
|
||||||
|
|
||||||
void CFuncWallToggle::__MAKE_VHOOK(Spawn)()
|
void CFuncWallToggle::__MAKE_VHOOK(Spawn)()
|
||||||
{
|
{
|
||||||
@ -107,7 +107,7 @@ void CFuncWallToggle::__MAKE_VHOOK(Use)(CBaseEntity *pActivator, CBaseEntity *pC
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
LINK_ENTITY_TO_CLASS(func_conveyor, CFuncConveyor);
|
LINK_ENTITY_TO_CLASS(func_conveyor, CFuncConveyor, CCSFuncConveyor);
|
||||||
|
|
||||||
void CFuncConveyor::__MAKE_VHOOK(Spawn)()
|
void CFuncConveyor::__MAKE_VHOOK(Spawn)()
|
||||||
{
|
{
|
||||||
@ -154,7 +154,7 @@ void CFuncConveyor::__MAKE_VHOOK(Use)(CBaseEntity *pActivator, CBaseEntity *pCal
|
|||||||
UpdateSpeed(pev->speed);
|
UpdateSpeed(pev->speed);
|
||||||
}
|
}
|
||||||
|
|
||||||
LINK_ENTITY_TO_CLASS(func_illusionary, CFuncIllusionary);
|
LINK_ENTITY_TO_CLASS(func_illusionary, CFuncIllusionary, CCSFuncIllusionary);
|
||||||
|
|
||||||
void CFuncIllusionary::__MAKE_VHOOK(KeyValue)(KeyValueData *pkvd)
|
void CFuncIllusionary::__MAKE_VHOOK(KeyValue)(KeyValueData *pkvd)
|
||||||
{
|
{
|
||||||
@ -184,7 +184,7 @@ void CFuncIllusionary::__MAKE_VHOOK(Spawn)()
|
|||||||
// MAKE_STATIC(ENT(pev));
|
// MAKE_STATIC(ENT(pev));
|
||||||
}
|
}
|
||||||
|
|
||||||
LINK_ENTITY_TO_CLASS(func_monsterclip, CFuncMonsterClip);
|
LINK_ENTITY_TO_CLASS(func_monsterclip, CFuncMonsterClip, CCSFuncMonsterClip);
|
||||||
|
|
||||||
void CFuncMonsterClip::__MAKE_VHOOK(Spawn)()
|
void CFuncMonsterClip::__MAKE_VHOOK(Spawn)()
|
||||||
{
|
{
|
||||||
@ -198,8 +198,7 @@ void CFuncMonsterClip::__MAKE_VHOOK(Spawn)()
|
|||||||
pev->flags |= FL_MONSTERCLIP;
|
pev->flags |= FL_MONSTERCLIP;
|
||||||
}
|
}
|
||||||
|
|
||||||
LINK_ENTITY_TO_CLASS(func_rotating, CFuncRotating);
|
LINK_ENTITY_TO_CLASS(func_rotating, CFuncRotating, CCSFuncRotating);
|
||||||
|
|
||||||
IMPLEMENT_SAVERESTORE(CFuncRotating, CBaseEntity);
|
IMPLEMENT_SAVERESTORE(CFuncRotating, CBaseEntity);
|
||||||
|
|
||||||
void CFuncRotating::__MAKE_VHOOK(KeyValue)(KeyValueData *pkvd)
|
void CFuncRotating::__MAKE_VHOOK(KeyValue)(KeyValueData *pkvd)
|
||||||
@ -602,7 +601,7 @@ void CFuncRotating::__MAKE_VHOOK(Blocked)(CBaseEntity *pOther)
|
|||||||
pOther->TakeDamage(pev, pev, pev->dmg, DMG_CRUSH);
|
pOther->TakeDamage(pev, pev, pev->dmg, DMG_CRUSH);
|
||||||
}
|
}
|
||||||
|
|
||||||
LINK_ENTITY_TO_CLASS(func_pendulum, CPendulum);
|
LINK_ENTITY_TO_CLASS(func_pendulum, CPendulum, CCSPendulum);
|
||||||
IMPLEMENT_SAVERESTORE(CPendulum, CBaseEntity);
|
IMPLEMENT_SAVERESTORE(CPendulum, CBaseEntity);
|
||||||
|
|
||||||
void CPendulum::__MAKE_VHOOK(KeyValue)(KeyValueData *pkvd)
|
void CPendulum::__MAKE_VHOOK(KeyValue)(KeyValueData *pkvd)
|
||||||
|
@ -1,5 +1,12 @@
|
|||||||
#include "precompiled.h"
|
#include "precompiled.h"
|
||||||
|
|
||||||
|
#ifdef REGAMEDLL_ADD
|
||||||
|
// Give 3rd-party to get the virtual table of the object.
|
||||||
|
// Example: AMXModX module: Hamsandwich
|
||||||
|
// RegisterHam(Ham_Spawn, "bot", "CCSBot__Spawn", 1);
|
||||||
|
LINK_ENTITY_TO_CLASS(bot, CCSBot, CAPI_CSBot);
|
||||||
|
#endif
|
||||||
|
|
||||||
// Return the number of bots following the given player
|
// Return the number of bots following the given player
|
||||||
int GetBotFollowCount(CBasePlayer *leader)
|
int GetBotFollowCount(CBasePlayer *leader)
|
||||||
{
|
{
|
||||||
@ -68,7 +75,7 @@ bool CCSBot::__MAKE_VHOOK(Jump)(bool mustJump)
|
|||||||
// NOTE: We dont want to directly call Attack() here, or the bots will have super-human reaction times when injured
|
// NOTE: We dont want to directly call Attack() here, or the bots will have super-human reaction times when injured
|
||||||
int CCSBot::__MAKE_VHOOK(TakeDamage)(entvars_t *pevInflictor, entvars_t *pevAttacker, float flDamage, int bitsDamageType)
|
int CCSBot::__MAKE_VHOOK(TakeDamage)(entvars_t *pevInflictor, entvars_t *pevAttacker, float flDamage, int bitsDamageType)
|
||||||
{
|
{
|
||||||
CBaseEntity *attacker = GetClassPtr((CBaseEntity *)pevInflictor);
|
CBaseEntity *attacker = GetClassPtr<CCSEntity>((CBaseEntity *)pevInflictor);
|
||||||
|
|
||||||
// if we were attacked by a teammate, rebuke
|
// if we were attacked by a teammate, rebuke
|
||||||
if (attacker->IsPlayer())
|
if (attacker->IsPlayer())
|
||||||
|
@ -421,8 +421,6 @@ class CCSBot: public CBot
|
|||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
CCSBot(); // constructor initializes all values to zero
|
CCSBot(); // constructor initializes all values to zero
|
||||||
|
|
||||||
public:
|
|
||||||
virtual int TakeDamage(entvars_t *pevInflictor, entvars_t *pevAttacker, float flDamage, int bitsDamageType); // invoked when injured by something (EXTEND) - returns the amount of damage inflicted
|
virtual int TakeDamage(entvars_t *pevInflictor, entvars_t *pevAttacker, float flDamage, int bitsDamageType); // invoked when injured by something (EXTEND) - returns the amount of damage inflicted
|
||||||
virtual void Killed(entvars_t *pevAttacker, int iGib); // invoked when killed (EXTEND)
|
virtual void Killed(entvars_t *pevAttacker, int iGib); // invoked when killed (EXTEND)
|
||||||
virtual void RoundRespawn();
|
virtual void RoundRespawn();
|
||||||
@ -967,6 +965,7 @@ private:
|
|||||||
NUM_LOOK_AT_SPOT_STATES
|
NUM_LOOK_AT_SPOT_STATES
|
||||||
}
|
}
|
||||||
m_lookAtSpotState;
|
m_lookAtSpotState;
|
||||||
|
|
||||||
Vector m_lookAtSpot; // the spot we're currently looking at
|
Vector m_lookAtSpot; // the spot we're currently looking at
|
||||||
PriorityType m_lookAtSpotPriority;
|
PriorityType m_lookAtSpotPriority;
|
||||||
float m_lookAtSpotDuration; // how long we need to look at the spot
|
float m_lookAtSpotDuration; // how long we need to look at the spot
|
||||||
@ -1525,12 +1524,12 @@ inline float CCSBot::GetFeetZ() const
|
|||||||
{
|
{
|
||||||
if (IsCrouching())
|
if (IsCrouching())
|
||||||
{
|
{
|
||||||
const Vector crouch = Vector(0, 0, -StepHeight);
|
const Vector crouch(0, 0, -StepHeight);
|
||||||
return (pev->origin + crouch).z;
|
return (pev->origin + crouch).z;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
const Vector stand = Vector(0, 0, -HalfHumanHeight);
|
const Vector stand(0, 0, -HalfHumanHeight);
|
||||||
return (pev->origin + stand).z;
|
return (pev->origin + stand).z;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -419,6 +419,14 @@ bool BotPhraseManager::Initialize(const char *filename, int bankIndex)
|
|||||||
char baseDir[RadioPathLen] = "";
|
char baseDir[RadioPathLen] = "";
|
||||||
char compositeFilename[RadioPathLen];
|
char compositeFilename[RadioPathLen];
|
||||||
|
|
||||||
|
#ifdef REGAMEDLL_ADD
|
||||||
|
char soundDir[MAX_PATH];
|
||||||
|
char filePath[MAX_PATH];
|
||||||
|
|
||||||
|
GET_GAME_DIR(soundDir);
|
||||||
|
Q_strcat(soundDir, "\\sound\\");
|
||||||
|
#endif
|
||||||
|
|
||||||
// Parse the BotChatter.db into BotPhrase collections
|
// Parse the BotChatter.db into BotPhrase collections
|
||||||
while (true)
|
while (true)
|
||||||
{
|
{
|
||||||
@ -567,8 +575,8 @@ bool BotPhraseManager::Initialize(const char *filename, int bankIndex)
|
|||||||
FREE_FILE(phraseDataFile);
|
FREE_FILE(phraseDataFile);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
token = MP_COM_GetToken();
|
|
||||||
|
|
||||||
|
token = MP_COM_GetToken();
|
||||||
GameEventType event = NameToGameEvent(token);
|
GameEventType event = NameToGameEvent(token);
|
||||||
if (event <= EVENT_START_RADIO_1 || event >= EVENT_END_RADIO)
|
if (event <= EVENT_START_RADIO_1 || event >= EVENT_END_RADIO)
|
||||||
{
|
{
|
||||||
@ -578,7 +586,6 @@ bool BotPhraseManager::Initialize(const char *filename, int bankIndex)
|
|||||||
}
|
}
|
||||||
|
|
||||||
radioEvent = event;
|
radioEvent = event;
|
||||||
|
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -593,6 +600,13 @@ bool BotPhraseManager::Initialize(const char *filename, int bankIndex)
|
|||||||
if (!Q_stricmp(token, "End"))
|
if (!Q_stricmp(token, "End"))
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
#ifdef REGAMEDLL_ADD
|
||||||
|
Q_snprintf(filePath, sizeof(filePath), "%s%s%s", soundDir, baseDir, token);
|
||||||
|
|
||||||
|
if (Q_access(filePath, 0) != 0)
|
||||||
|
continue;
|
||||||
|
#endif
|
||||||
|
|
||||||
// found a phrase - add it to the collection
|
// found a phrase - add it to the collection
|
||||||
BotSpeakable *speak = new BotSpeakable;
|
BotSpeakable *speak = new BotSpeakable;
|
||||||
if (baseDir[0])
|
if (baseDir[0])
|
||||||
|
@ -347,7 +347,7 @@ void CCSBotManager::__MAKE_VHOOK(ClientDisconnect)(CBasePlayer *pPlayer)
|
|||||||
|
|
||||||
FREE_PRIVATE(pPlayer->edict());
|
FREE_PRIVATE(pPlayer->edict());
|
||||||
|
|
||||||
CBasePlayer *player = GetClassPtr((CBasePlayer *)temp);
|
CBasePlayer *player = GetClassPtr<CCSPlayer>((CBasePlayer *)temp);
|
||||||
AddEntityHashValue(player->pev, STRING(player->pev->classname), CLASSNAME);
|
AddEntityHashValue(player->pev, STRING(player->pev->classname), CLASSNAME);
|
||||||
player->pev->flags = FL_DORMANT;
|
player->pev->flags = FL_DORMANT;
|
||||||
}
|
}
|
||||||
@ -376,7 +376,7 @@ void CCSBotManager::__MAKE_VHOOK(ServerCommand)(const char *pcmd)
|
|||||||
|
|
||||||
if (FStrEq(pcmd, "bot_about"))
|
if (FStrEq(pcmd, "bot_about"))
|
||||||
{
|
{
|
||||||
Q_sprintf(buffer, "\n--------------------------------------------------------------------------\nThe Official Counter-Strike Bot V%d.%02d\nCreated by Michael S. Booth\nWeb: www.turtlerockstudios.com\\csbot\nE-mail: csbot@turtlerockstudios.com\n--------------------------------------------------------------------------\n\n", CSBOT_VERSION_MAJOR, CSBOT_VERSION_MINOR);
|
Q_sprintf(buffer, "\n--------------------------------------------------------------------------\nThe Official Counter-Strike Bot V%d.%02d\nCreated by Michael S. Booth\nWeb: www.turtlerockstudios.com\\csbot\nE-mail: csbot@turtlerockstudios.com\n--------------------------------------------------------------------------\n\n", BOT_VERSION_MAJOR, BOT_VERSION_MINOR);
|
||||||
CONSOLE_ECHO(buffer);
|
CONSOLE_ECHO(buffer);
|
||||||
HintMessageToAllPlayers(buffer);
|
HintMessageToAllPlayers(buffer);
|
||||||
}
|
}
|
||||||
@ -681,7 +681,7 @@ void CCSBotManager::__MAKE_VHOOK(ServerCommand)(const char *pcmd)
|
|||||||
if ((pEntity->pev->flags & FL_DORMANT) == FL_DORMANT)
|
if ((pEntity->pev->flags & FL_DORMANT) == FL_DORMANT)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
CBasePlayer *playerOrBot = GetClassPtr((CBasePlayer *)pEntity->pev);
|
CBasePlayer *playerOrBot = GetClassPtr<CCSPlayer>((CBasePlayer *)pEntity->pev);
|
||||||
|
|
||||||
if (playerOrBot->IsBot())
|
if (playerOrBot->IsBot())
|
||||||
{
|
{
|
||||||
@ -1189,7 +1189,7 @@ bool CCSBotManager::AddBot(const BotProfile *profile, BotProfileTeamType team)
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
CCSBot *pBot = CreateBot<CCSBot>(profile);
|
CCSBot *pBot = CreateBot<CCSBot, CAPI_CSBot>(profile);
|
||||||
if (pBot == NULL)
|
if (pBot == NULL)
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
|
@ -409,7 +409,7 @@ NOXREF bool CCSBot::FindApproachPointNearestPath(Vector *pos)
|
|||||||
if (m_approachPointCount == 0)
|
if (m_approachPointCount == 0)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
Vector target = Vector(0, 0, 0), close;
|
Vector target(0, 0, 0), close;
|
||||||
float targetRangeSq = 0.0f;
|
float targetRangeSq = 0.0f;
|
||||||
bool found = false;
|
bool found = false;
|
||||||
|
|
||||||
|
@ -633,7 +633,7 @@ int CCSBot::FindOurPositionOnPath(Vector *close, bool local) const
|
|||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
Vector along, toFeet;
|
Vector along, toFeet;
|
||||||
Vector feet = Vector(pev->origin.x, pev->origin.y, GetFeetZ());
|
Vector feet(pev->origin.x, pev->origin.y, GetFeetZ());
|
||||||
Vector eyes = feet + Vector(0, 0, HalfHumanHeight); // in case we're crouching
|
Vector eyes = feet + Vector(0, 0, HalfHumanHeight); // in case we're crouching
|
||||||
Vector pos;
|
Vector pos;
|
||||||
const Vector *from, *to;
|
const Vector *from, *to;
|
||||||
@ -857,7 +857,7 @@ int CCSBot::FindPathPoint(float aheadRange, Vector *point, int *prevIndex)
|
|||||||
Vector initDir = m_path[ startIndex ].pos - m_path[ startIndex - 1 ].pos;
|
Vector initDir = m_path[ startIndex ].pos - m_path[ startIndex - 1 ].pos;
|
||||||
initDir.NormalizeInPlace();
|
initDir.NormalizeInPlace();
|
||||||
|
|
||||||
Vector feet = Vector(pev->origin.x, pev->origin.y, GetFeetZ());
|
Vector feet(pev->origin.x, pev->origin.y, GetFeetZ());
|
||||||
Vector eyes = feet + Vector(0, 0, HalfHumanHeight);
|
Vector eyes = feet + Vector(0, 0, HalfHumanHeight);
|
||||||
float rangeSoFar = 0;
|
float rangeSoFar = 0;
|
||||||
|
|
||||||
@ -1172,7 +1172,7 @@ void CCSBot::FeelerReflexAdjustment(Vector *goalPosition)
|
|||||||
// correct the sideways vector
|
// correct the sideways vector
|
||||||
lat = CrossProduct(dir, normal);
|
lat = CrossProduct(dir, normal);
|
||||||
|
|
||||||
Vector feet = Vector(pev->origin.x, pev->origin.y, GetFeetZ());
|
Vector feet(pev->origin.x, pev->origin.y, GetFeetZ());
|
||||||
feet.z += feelerHeight;
|
feet.z += feelerHeight;
|
||||||
|
|
||||||
Vector from = feet + feelerOffset * lat;
|
Vector from = feet + feelerOffset * lat;
|
||||||
|
@ -53,7 +53,7 @@ TYPEDESCRIPTION CEnvSpark::m_SaveData[] =
|
|||||||
#endif // HOOK_GAMEDLL
|
#endif // HOOK_GAMEDLL
|
||||||
|
|
||||||
IMPLEMENT_SAVERESTORE(CEnvGlobal, CBaseEntity);
|
IMPLEMENT_SAVERESTORE(CEnvGlobal, CBaseEntity);
|
||||||
LINK_ENTITY_TO_CLASS(env_global, CEnvGlobal);
|
LINK_ENTITY_TO_CLASS(env_global, CEnvGlobal, CCSEnvGlobal);
|
||||||
|
|
||||||
void CEnvGlobal::__MAKE_VHOOK(KeyValue)(KeyValueData *pkvd)
|
void CEnvGlobal::__MAKE_VHOOK(KeyValue)(KeyValueData *pkvd)
|
||||||
{
|
{
|
||||||
@ -135,7 +135,7 @@ void CEnvGlobal::__MAKE_VHOOK(Use)(CBaseEntity *pActivator, CBaseEntity *pCaller
|
|||||||
}
|
}
|
||||||
|
|
||||||
IMPLEMENT_SAVERESTORE(CMultiSource, CBaseEntity);
|
IMPLEMENT_SAVERESTORE(CMultiSource, CBaseEntity);
|
||||||
LINK_ENTITY_TO_CLASS(multisource, CMultiSource);
|
LINK_ENTITY_TO_CLASS(multisource, CMultiSource, CCSMultiSource);
|
||||||
|
|
||||||
// Cache user-entity-field values until spawn is called.
|
// Cache user-entity-field values until spawn is called.
|
||||||
void CMultiSource::__MAKE_VHOOK(KeyValue)(KeyValueData *pkvd)
|
void CMultiSource::__MAKE_VHOOK(KeyValue)(KeyValueData *pkvd)
|
||||||
@ -425,7 +425,7 @@ int CBaseButton::__MAKE_VHOOK(TakeDamage)(entvars_t *pevInflictor, entvars_t *pe
|
|||||||
// 1) wooden clunk
|
// 1) wooden clunk
|
||||||
// 2) metallic click
|
// 2) metallic click
|
||||||
// 3) in-out
|
// 3) in-out
|
||||||
LINK_ENTITY_TO_CLASS(func_button, CBaseButton);
|
LINK_ENTITY_TO_CLASS(func_button, CBaseButton, CCSButton);
|
||||||
|
|
||||||
void CBaseButton::__MAKE_VHOOK(Spawn)()
|
void CBaseButton::__MAKE_VHOOK(Spawn)()
|
||||||
{
|
{
|
||||||
@ -789,7 +789,7 @@ void CBaseButton::ButtonBackHome()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
LINK_ENTITY_TO_CLASS(func_rot_button, CRotButton);
|
LINK_ENTITY_TO_CLASS(func_rot_button, CRotButton, CCSRotButton);
|
||||||
|
|
||||||
void CRotButton::__MAKE_VHOOK(Spawn)()
|
void CRotButton::__MAKE_VHOOK(Spawn)()
|
||||||
{
|
{
|
||||||
@ -856,7 +856,7 @@ void CRotButton::__MAKE_VHOOK(Spawn)()
|
|||||||
}
|
}
|
||||||
|
|
||||||
IMPLEMENT_SAVERESTORE(CMomentaryRotButton, CBaseToggle);
|
IMPLEMENT_SAVERESTORE(CMomentaryRotButton, CBaseToggle);
|
||||||
LINK_ENTITY_TO_CLASS(momentary_rot_button, CMomentaryRotButton);
|
LINK_ENTITY_TO_CLASS(momentary_rot_button, CMomentaryRotButton, CCSMomentaryRotButton);
|
||||||
|
|
||||||
void CMomentaryRotButton::__MAKE_VHOOK(Spawn)()
|
void CMomentaryRotButton::__MAKE_VHOOK(Spawn)()
|
||||||
{
|
{
|
||||||
@ -1071,8 +1071,8 @@ void CMomentaryRotButton::UpdateSelfReturn(float value)
|
|||||||
}
|
}
|
||||||
|
|
||||||
IMPLEMENT_SAVERESTORE(CEnvSpark, CBaseEntity);
|
IMPLEMENT_SAVERESTORE(CEnvSpark, CBaseEntity);
|
||||||
LINK_ENTITY_TO_CLASS(env_spark, CEnvSpark);
|
LINK_ENTITY_TO_CLASS(env_spark, CEnvSpark, CCSEnvSpark);
|
||||||
LINK_ENTITY_TO_CLASS(env_debris, CEnvSpark);
|
LINK_ENTITY_TO_CLASS(env_debris, CEnvSpark, CCSEnvSpark);
|
||||||
|
|
||||||
void CEnvSpark::__MAKE_VHOOK(Spawn)()
|
void CEnvSpark::__MAKE_VHOOK(Spawn)()
|
||||||
{
|
{
|
||||||
@ -1154,7 +1154,7 @@ void CEnvSpark::SparkStop(CBaseEntity *pActivator, CBaseEntity *pCaller, USE_TYP
|
|||||||
SetThink(NULL);
|
SetThink(NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
LINK_ENTITY_TO_CLASS(button_target, CButtonTarget);
|
LINK_ENTITY_TO_CLASS(button_target, CButtonTarget, CCSButtonTarget);
|
||||||
|
|
||||||
void CButtonTarget::__MAKE_VHOOK(Spawn)()
|
void CButtonTarget::__MAKE_VHOOK(Spawn)()
|
||||||
{
|
{
|
||||||
|
@ -34,8 +34,8 @@
|
|||||||
|
|
||||||
#define SF_BUTTON_DONTMOVE 1
|
#define SF_BUTTON_DONTMOVE 1
|
||||||
#define SF_ROTBUTTON_NOTSOLID 1
|
#define SF_ROTBUTTON_NOTSOLID 1
|
||||||
#define SF_BUTTON_TOGGLE 32 // button stays pushed until reactivated
|
#define SF_BUTTON_TOGGLE 32 // button stays pushed until reactivated
|
||||||
#define SF_BUTTON_SPARK_IF_OFF 64 // button sparks in OFF state
|
#define SF_BUTTON_SPARK_IF_OFF 64 // button sparks in OFF state
|
||||||
#define SF_BUTTON_TOUCH_ONLY 256 // button only fires as a result of USE key.
|
#define SF_BUTTON_TOUCH_ONLY 256 // button only fires as a result of USE key.
|
||||||
|
|
||||||
#define SF_GLOBAL_SET 1 // Set global state to initial state on spawn
|
#define SF_GLOBAL_SET 1 // Set global state to initial state on spawn
|
||||||
@ -170,7 +170,6 @@ public:
|
|||||||
|
|
||||||
public:
|
public:
|
||||||
static TYPEDESCRIPTION IMPL(m_SaveData)[1];
|
static TYPEDESCRIPTION IMPL(m_SaveData)[1];
|
||||||
|
|
||||||
float m_flDelay;
|
float m_flDelay;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -62,6 +62,8 @@ static DLL_FUNCTIONS gFunctionTable =
|
|||||||
static NEW_DLL_FUNCTIONS gNewDLLFunctions
|
static NEW_DLL_FUNCTIONS gNewDLLFunctions
|
||||||
{
|
{
|
||||||
&OnFreeEntPrivateData,
|
&OnFreeEntPrivateData,
|
||||||
|
&GameDLLShutdown,
|
||||||
|
NULL,
|
||||||
NULL,
|
NULL,
|
||||||
NULL
|
NULL
|
||||||
};
|
};
|
||||||
@ -283,7 +285,7 @@ void printEntities()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
NOINLINE edict_t *CREATE_NAMED_ENTITY(string_t iClass)
|
NOINLINE edict_t *EXT_FUNC CREATE_NAMED_ENTITY(string_t iClass)
|
||||||
{
|
{
|
||||||
edict_t *named = g_engfuncs.pfnCreateNamedEntity(iClass);
|
edict_t *named = g_engfuncs.pfnCreateNamedEntity(iClass);
|
||||||
if (named != NULL)
|
if (named != NULL)
|
||||||
@ -1080,4 +1082,5 @@ void OnFreeEntPrivateData(edict_t *pEnt)
|
|||||||
|
|
||||||
pEntity->UpdateOnRemove();
|
pEntity->UpdateOnRemove();
|
||||||
RemoveEntityHashValue(pEntity->pev, STRING(pEntity->pev->classname), CLASSNAME);
|
RemoveEntityHashValue(pEntity->pev, STRING(pEntity->pev->classname), CLASSNAME);
|
||||||
|
Regamedll_FreeEntities(pEntity);
|
||||||
}
|
}
|
||||||
|
@ -39,16 +39,19 @@
|
|||||||
#undef CREATE_NAMED_ENTITY
|
#undef CREATE_NAMED_ENTITY
|
||||||
#undef REMOVE_ENTITY
|
#undef REMOVE_ENTITY
|
||||||
|
|
||||||
|
// These are caps bits to indicate what an object's capabilities (currently used for save/restore and level transitions)
|
||||||
#define FCAP_CUSTOMSAVE 0x00000001
|
#define FCAP_CUSTOMSAVE 0x00000001
|
||||||
#define FCAP_ACROSS_TRANSITION 0x00000002
|
#define FCAP_ACROSS_TRANSITION 0x00000002 // should transfer between transitions
|
||||||
#define FCAP_MUST_SPAWN 0x00000004
|
#define FCAP_MUST_SPAWN 0x00000004 // Spawn after restore
|
||||||
#define FCAP_DONT_SAVE 0x80000000
|
#define FCAP_DONT_SAVE 0x80000000 // Don't save this
|
||||||
#define FCAP_IMPULSE_USE 0x00000008
|
#define FCAP_IMPULSE_USE 0x00000008 // can be used by the player
|
||||||
#define FCAP_CONTINUOUS_USE 0x00000010
|
#define FCAP_CONTINUOUS_USE 0x00000010 // can be used by the player
|
||||||
#define FCAP_ONOFF_USE 0x00000020
|
#define FCAP_ONOFF_USE 0x00000020 // can be used by the player
|
||||||
#define FCAP_DIRECTIONAL_USE 0x00000040
|
#define FCAP_DIRECTIONAL_USE 0x00000040 // Player sends +/- 1 when using (currently only tracktrains)
|
||||||
#define FCAP_MASTER 0x00000080
|
#define FCAP_MASTER 0x00000080 // Can be used to "master" other entities (like multisource)
|
||||||
#define FCAP_FORCE_TRANSITION 0x00000080
|
|
||||||
|
// UNDONE: This will ignore transition volumes (trigger_transition), but not the PVS!!!
|
||||||
|
#define FCAP_FORCE_TRANSITION 0x00000080 // ALWAYS goes across transitions
|
||||||
|
|
||||||
#define SetThink(a)\
|
#define SetThink(a)\
|
||||||
m_pfnThink = static_cast<void (CBaseEntity::*)()>(a)
|
m_pfnThink = static_cast<void (CBaseEntity::*)()>(a)
|
||||||
@ -62,6 +65,7 @@
|
|||||||
#define SetMoveDone(a)\
|
#define SetMoveDone(a)\
|
||||||
m_pfnCallWhenMoveDone = static_cast<void (CBaseToggle::*)()>(a)
|
m_pfnCallWhenMoveDone = static_cast<void (CBaseToggle::*)()>(a)
|
||||||
|
|
||||||
|
// for Classify
|
||||||
#define CLASS_NONE 0
|
#define CLASS_NONE 0
|
||||||
#define CLASS_MACHINE 1
|
#define CLASS_MACHINE 1
|
||||||
#define CLASS_PLAYER 2
|
#define CLASS_PLAYER 2
|
||||||
@ -74,10 +78,10 @@
|
|||||||
#define CLASS_ALIEN_PREDATOR 9
|
#define CLASS_ALIEN_PREDATOR 9
|
||||||
#define CLASS_INSECT 10
|
#define CLASS_INSECT 10
|
||||||
#define CLASS_PLAYER_ALLY 11
|
#define CLASS_PLAYER_ALLY 11
|
||||||
#define CLASS_PLAYER_BIOWEAPON 12
|
#define CLASS_PLAYER_BIOWEAPON 12 // hornets and snarks.launched by players
|
||||||
#define CLASS_ALIEN_BIOWEAPON 13
|
#define CLASS_ALIEN_BIOWEAPON 13 // hornets and snarks.launched by the alien menace
|
||||||
#define CLASS_VEHICLE 14
|
#define CLASS_VEHICLE 14
|
||||||
#define CLASS_BARNACLE 99
|
#define CLASS_BARNACLE 99 // special because no one pays attention to it, and it eats a wide cross-section of creatures.
|
||||||
|
|
||||||
#define GIB_HEALTH_VALUE -30
|
#define GIB_HEALTH_VALUE -30
|
||||||
|
|
||||||
@ -102,37 +106,43 @@
|
|||||||
#define bits_CAP_FLY (1<<15)
|
#define bits_CAP_FLY (1<<15)
|
||||||
#define bits_CAP_DOORS_GROUP (bits_CAP_USE | bits_CAP_AUTO_DOORS | bits_CAP_OPEN_DOORS)
|
#define bits_CAP_DOORS_GROUP (bits_CAP_USE | bits_CAP_AUTO_DOORS | bits_CAP_OPEN_DOORS)
|
||||||
|
|
||||||
#define DMG_GENERIC 0
|
#define SF_NORESPAWN (1<<30) // set this bit on guns and stuff that should never respawn.
|
||||||
#define DMG_CRUSH (1<<0)
|
|
||||||
#define DMG_BULLET (1<<1)
|
|
||||||
#define DMG_SLASH (1<<2)
|
|
||||||
#define DMG_BURN (1<<3)
|
|
||||||
#define DMG_FREEZE (1<<4)
|
|
||||||
#define DMG_FALL (1<<5)
|
|
||||||
#define DMG_BLAST (1<<6)
|
|
||||||
#define DMG_CLUB (1<<7)
|
|
||||||
#define DMG_SHOCK (1<<8)
|
|
||||||
#define DMG_SONIC (1<<9)
|
|
||||||
#define DMG_ENERGYBEAM (1<<10)
|
|
||||||
#define DMG_NEVERGIB (1<<12)
|
|
||||||
#define DMG_ALWAYSGIB (1<<13)
|
|
||||||
#define DMG_DROWN (1<<14)
|
|
||||||
#define DMG_TIMEBASED (~(0x3FFF))
|
|
||||||
|
|
||||||
#define DMG_PARALYZE (1<<15)
|
#define DMG_GENERIC 0 // generic damage was done
|
||||||
#define DMG_NERVEGAS (1<<16)
|
#define DMG_CRUSH (1<<0) // crushed by falling or moving object
|
||||||
#define DMG_POISON (1<<17)
|
#define DMG_BULLET (1<<1) // shot
|
||||||
#define DMG_RADIATION (1<<18)
|
#define DMG_SLASH (1<<2) // cut, clawed, stabbed
|
||||||
#define DMG_DROWNRECOVER (1<<19)
|
#define DMG_BURN (1<<3) // heat burned
|
||||||
#define DMG_ACID (1<<20)
|
#define DMG_FREEZE (1<<4) // frozen
|
||||||
#define DMG_SLOWBURN (1<<21)
|
#define DMG_FALL (1<<5) // fell too far
|
||||||
#define DMG_SLOWFREEZE (1<<22)
|
#define DMG_BLAST (1<<6) // explosive blast damage
|
||||||
#define DMG_MORTAR (1<<23)
|
#define DMG_CLUB (1<<7) // crowbar, punch, headbutt
|
||||||
|
#define DMG_SHOCK (1<<8) // electric shock
|
||||||
|
#define DMG_SONIC (1<<9) // sound pulse shockwave
|
||||||
|
#define DMG_ENERGYBEAM (1<<10) // laser or other high energy beam
|
||||||
|
#define DMG_NEVERGIB (1<<12) // with this bit OR'd in, no damage type will be able to gib victims upon death
|
||||||
|
#define DMG_ALWAYSGIB (1<<13) // with this bit OR'd in, any damage type can be made to gib victims upon death
|
||||||
|
#define DMG_DROWN (1<<14) // Drowning
|
||||||
|
|
||||||
|
// time-based damage
|
||||||
|
#define DMG_TIMEBASED (~(0x3FFF)) // mask for time-based damage
|
||||||
|
|
||||||
|
#define DMG_PARALYZE (1<<15) // slows affected creature down
|
||||||
|
#define DMG_NERVEGAS (1<<16) // nerve toxins, very bad
|
||||||
|
#define DMG_POISON (1<<17) // blood poisioning
|
||||||
|
#define DMG_RADIATION (1<<18) // radiation exposure
|
||||||
|
#define DMG_DROWNRECOVER (1<<19) // drowning recovery
|
||||||
|
#define DMG_ACID (1<<20) // toxic chemicals or acid burns
|
||||||
|
#define DMG_SLOWBURN (1<<21) // in an oven
|
||||||
|
#define DMG_SLOWFREEZE (1<<22) // in a subzero freezer
|
||||||
|
#define DMG_MORTAR (1<<23) // Hit by air raid (done to distinguish grenade from mortar)
|
||||||
#define DMG_EXPLOSION (1<<24)
|
#define DMG_EXPLOSION (1<<24)
|
||||||
#define DMG_GIB_CORPSE (DMG_CRUSH | DMG_FALL | DMG_BLAST | DMG_SONIC | DMG_CLUB)
|
|
||||||
#define DMG_SHOWNHUD (DMG_POISON | DMG_ACID | DMG_FREEZE | DMG_SLOWFREEZE | DMG_DROWN | DMG_BURN | DMG_SLOWBURN | DMG_NERVEGAS | DMG_RADIATION | DMG_SHOCK)
|
|
||||||
|
|
||||||
#define SF_NORESPAWN (1 << 30)
|
// these are the damage types that are allowed to gib corpses
|
||||||
|
#define DMG_GIB_CORPSE (DMG_CRUSH | DMG_FALL | DMG_BLAST | DMG_SONIC | DMG_CLUB)
|
||||||
|
|
||||||
|
// these are the damage types that have client hud art
|
||||||
|
#define DMG_SHOWNHUD (DMG_POISON | DMG_ACID | DMG_FREEZE | DMG_SLOWFREEZE | DMG_DROWN | DMG_BURN | DMG_SLOWBURN | DMG_NERVEGAS | DMG_RADIATION | DMG_SHOCK)
|
||||||
|
|
||||||
#define AIRTIME 12 // lung full of air lasts this many seconds
|
#define AIRTIME 12 // lung full of air lasts this many seconds
|
||||||
#define PARALYZE_DURATION 2 // number of 2 second intervals to take damage
|
#define PARALYZE_DURATION 2 // number of 2 second intervals to take damage
|
||||||
@ -166,9 +176,11 @@
|
|||||||
#define itbd_SlowFreeze 7
|
#define itbd_SlowFreeze 7
|
||||||
#define CDMG_TIMEBASED 8
|
#define CDMG_TIMEBASED 8
|
||||||
|
|
||||||
#define GIB_NORMAL 0
|
// when calling KILLED(), a value that governs gib behavior is expected to be
|
||||||
#define GIB_NEVER 1
|
// one of these three values
|
||||||
#define GIB_ALWAYS 2
|
#define GIB_NORMAL 0 // gib if entity was overkilled
|
||||||
|
#define GIB_NEVER 1 // never gib, no matter how much death damage is done ( freezing, etc )
|
||||||
|
#define GIB_ALWAYS 2 // always gib ( Houndeye Shock, Barnacle Bite )
|
||||||
|
|
||||||
#define SF_ITEM_USE_ONLY 256
|
#define SF_ITEM_USE_ONLY 256
|
||||||
|
|
||||||
@ -181,49 +193,6 @@
|
|||||||
#define EXPORT /**/
|
#define EXPORT /**/
|
||||||
#endif // _WIN32
|
#endif // _WIN32
|
||||||
|
|
||||||
enum hash_types_e { CLASSNAME };
|
|
||||||
|
|
||||||
typedef struct hash_item_s
|
|
||||||
{
|
|
||||||
entvars_t *pev;
|
|
||||||
struct hash_item_s *next;
|
|
||||||
struct hash_item_s *lastHash;
|
|
||||||
int pevIndex;
|
|
||||||
|
|
||||||
} hash_item_t;
|
|
||||||
|
|
||||||
typedef struct locksounds
|
|
||||||
{
|
|
||||||
string_t sLockedSound;
|
|
||||||
string_t sLockedSentence;
|
|
||||||
string_t sUnlockedSound;
|
|
||||||
string_t sUnlockedSentence;
|
|
||||||
int iLockedSentence;
|
|
||||||
int iUnlockedSentence;
|
|
||||||
float flwaitSound;
|
|
||||||
float flwaitSentence;
|
|
||||||
BYTE bEOFLocked;
|
|
||||||
BYTE bEOFUnlocked;
|
|
||||||
|
|
||||||
} locksound_t;
|
|
||||||
|
|
||||||
typedef enum
|
|
||||||
{
|
|
||||||
USE_OFF,
|
|
||||||
USE_ON,
|
|
||||||
USE_SET,
|
|
||||||
USE_TOGGLE,
|
|
||||||
|
|
||||||
} USE_TYPE;
|
|
||||||
|
|
||||||
typedef enum
|
|
||||||
{
|
|
||||||
TRAIN_SAFE,
|
|
||||||
TRAIN_BLOCKING,
|
|
||||||
TRAIN_FOLLOWING
|
|
||||||
|
|
||||||
} TRAIN_CODE;
|
|
||||||
|
|
||||||
class CGrenade;
|
class CGrenade;
|
||||||
class CBaseEntity;
|
class CBaseEntity;
|
||||||
class CBaseMonster;
|
class CBaseMonster;
|
||||||
@ -234,8 +203,8 @@ class CSquadMonster;
|
|||||||
class CCineMonster;
|
class CCineMonster;
|
||||||
class CSound;
|
class CSound;
|
||||||
|
|
||||||
class EHANDLE
|
// EHANDLE. Safe way to point to CBaseEntities who may die between frames
|
||||||
{
|
class EHANDLE {
|
||||||
public:
|
public:
|
||||||
edict_t *Get();
|
edict_t *Get();
|
||||||
edict_t *Set(edict_t *pent);
|
edict_t *Set(edict_t *pent);
|
||||||
@ -252,8 +221,8 @@ private:
|
|||||||
int m_serialnumber;
|
int m_serialnumber;
|
||||||
};
|
};
|
||||||
|
|
||||||
class CBaseEntity
|
// Base Entity. All entity types derive from this
|
||||||
{
|
class CBaseEntity {
|
||||||
public:
|
public:
|
||||||
virtual void Spawn() {}
|
virtual void Spawn() {}
|
||||||
virtual void Precache() {}
|
virtual void Precache() {}
|
||||||
@ -299,36 +268,15 @@ public:
|
|||||||
virtual BOOL IsNetClient() { return FALSE; }
|
virtual BOOL IsNetClient() { return FALSE; }
|
||||||
virtual const char *TeamID() { return ""; }
|
virtual const char *TeamID() { return ""; }
|
||||||
virtual CBaseEntity *GetNextTarget();
|
virtual CBaseEntity *GetNextTarget();
|
||||||
virtual void Think()
|
virtual void Think() { if (m_pfnThink) (this->*m_pfnThink)(); }
|
||||||
{
|
virtual void Touch(CBaseEntity *pOther) { if (m_pfnTouch) (this->*m_pfnTouch)(pOther); }
|
||||||
if (m_pfnThink)
|
virtual void Use(CBaseEntity *pActivator, CBaseEntity *pCaller, USE_TYPE useType = USE_OFF, float value = 0.0f) { if (m_pfnUse) (this->*m_pfnUse)(pActivator, pCaller, useType, value); }
|
||||||
{
|
virtual void Blocked(CBaseEntity *pOther) { if (m_pfnBlocked) (this->*m_pfnBlocked)(pOther); }
|
||||||
(this->*m_pfnThink)();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
virtual void Touch(CBaseEntity *pOther)
|
|
||||||
{
|
|
||||||
if (m_pfnTouch)
|
|
||||||
{
|
|
||||||
(this->*m_pfnTouch)(pOther);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
virtual void Use(CBaseEntity *pActivator, CBaseEntity *pCaller, USE_TYPE useType = USE_OFF, float value = 0.0f)
|
|
||||||
{
|
|
||||||
if (m_pfnUse)
|
|
||||||
{
|
|
||||||
(this->*m_pfnUse)(pActivator, pCaller, useType, value);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
virtual void Blocked(CBaseEntity *pOther)
|
|
||||||
{
|
|
||||||
if (m_pfnBlocked)
|
|
||||||
{
|
|
||||||
(this->*m_pfnBlocked)(pOther);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
virtual CBaseEntity *Respawn() { return NULL; }
|
virtual CBaseEntity *Respawn() { return NULL; }
|
||||||
|
|
||||||
|
// used by monsters that are created by the MonsterMaker
|
||||||
virtual void UpdateOwner() {}
|
virtual void UpdateOwner() {}
|
||||||
|
|
||||||
virtual BOOL FBecomeProne() { return FALSE; }
|
virtual BOOL FBecomeProne() { return FALSE; }
|
||||||
virtual Vector Center() { return (pev->absmax + pev->absmin) * 0.5f; }
|
virtual Vector Center() { return (pev->absmax + pev->absmin) * 0.5f; }
|
||||||
virtual Vector EyePosition() { return (pev->origin + pev->view_ofs); }
|
virtual Vector EyePosition() { return (pev->origin + pev->view_ofs); }
|
||||||
@ -358,6 +306,7 @@ public:
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
// allow engine to allocate instance data
|
||||||
void *operator new(size_t stAllocateBlock, entvars_t *pevnew) { return ALLOC_PRIVATE(ENT(pevnew), stAllocateBlock); }
|
void *operator new(size_t stAllocateBlock, entvars_t *pevnew) { return ALLOC_PRIVATE(ENT(pevnew), stAllocateBlock); }
|
||||||
void operator delete(void *pMem, entvars_t *pevnew) { pevnew->flags |= FL_KILLME; }
|
void operator delete(void *pMem, entvars_t *pevnew) { pevnew->flags |= FL_KILLME; }
|
||||||
void UpdateOnRemove();
|
void UpdateOnRemove();
|
||||||
@ -384,28 +333,29 @@ public:
|
|||||||
{
|
{
|
||||||
CBaseEntity *pEntity = Instance(pevMonster);
|
CBaseEntity *pEntity = Instance(pevMonster);
|
||||||
if (pEntity != NULL)
|
if (pEntity != NULL)
|
||||||
{
|
|
||||||
return pEntity->MyMonsterPointer();
|
return pEntity->MyMonsterPointer();
|
||||||
}
|
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
CBaseMonster *GetMonsterPointer(edict_t *pentMonster)
|
CBaseMonster *GetMonsterPointer(edict_t *pentMonster)
|
||||||
{
|
{
|
||||||
CBaseEntity *pEntity = Instance(pentMonster);
|
CBaseEntity *pEntity = Instance(pentMonster);
|
||||||
if (pEntity)
|
if (pEntity != NULL)
|
||||||
return pEntity->MyMonsterPointer();
|
return pEntity->MyMonsterPointer();
|
||||||
|
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
static CBaseEntity *Create(char *szName, const Vector &vecOrigin, const Vector &vecAngles, edict_t *pentOwner = NULL);
|
static CBaseEntity *Create(char *szName, const Vector &vecOrigin, const Vector &vecAngles, edict_t *pentOwner = NULL);
|
||||||
edict_t *edict() { return ENT(pev); }
|
edict_t *edict() { return ENT(pev); }
|
||||||
EOFFSET eoffset() { return OFFSET(pev); }
|
EOFFSET eoffset() { return OFFSET(pev); }
|
||||||
int entindex() { return ENTINDEX(edict()); }
|
int entindex() { return ENTINDEX(edict()); }
|
||||||
|
|
||||||
public:
|
public:
|
||||||
entvars_t *pev;
|
entvars_t *pev; // Don't need to save/restore this pointer, the engine resets it
|
||||||
CBaseEntity *m_pGoalEnt;
|
|
||||||
CBaseEntity *m_pLink;
|
// path corners
|
||||||
|
CBaseEntity *m_pGoalEnt; // path corner we are heading towards
|
||||||
|
CBaseEntity *m_pLink; // used for temporary link-list operations.
|
||||||
|
|
||||||
static TYPEDESCRIPTION IMPL(m_SaveData)[5];
|
static TYPEDESCRIPTION IMPL(m_SaveData)[5];
|
||||||
|
|
||||||
@ -414,6 +364,7 @@ public:
|
|||||||
void (CBaseEntity::*m_pfnUse)(CBaseEntity *pActivator, CBaseEntity *pCaller, USE_TYPE useType, float value);
|
void (CBaseEntity::*m_pfnUse)(CBaseEntity *pActivator, CBaseEntity *pCaller, USE_TYPE useType, float value);
|
||||||
void (CBaseEntity::*m_pfnBlocked)(CBaseEntity *pOther);
|
void (CBaseEntity::*m_pfnBlocked)(CBaseEntity *pOther);
|
||||||
|
|
||||||
|
// We use this variables to store each ammo count.
|
||||||
int *current_ammo;
|
int *current_ammo;
|
||||||
float currentammo;
|
float currentammo;
|
||||||
int maxammo_buckshot;
|
int maxammo_buckshot;
|
||||||
@ -436,17 +387,20 @@ public:
|
|||||||
int ammo_57mm;
|
int ammo_57mm;
|
||||||
int maxammo_357sig;
|
int maxammo_357sig;
|
||||||
int ammo_357sig;
|
int ammo_357sig;
|
||||||
|
|
||||||
|
// Special stuff for grenades and knife.
|
||||||
float m_flStartThrow;
|
float m_flStartThrow;
|
||||||
float m_flReleaseThrow;
|
float m_flReleaseThrow;
|
||||||
int m_iSwing;
|
int m_iSwing;
|
||||||
|
|
||||||
|
// client has left the game
|
||||||
bool has_disconnected;
|
bool has_disconnected;
|
||||||
};
|
};
|
||||||
|
|
||||||
inline int FNullEnt(CBaseEntity *ent) { return (ent == NULL || FNullEnt(ent->edict())); }
|
inline int FNullEnt(CBaseEntity *ent) { return (ent == NULL || FNullEnt(ent->edict())); }
|
||||||
inline int FNullEnt(EHANDLE hent) { return (hent == NULL || FNullEnt(OFFSET(hent.Get()))); }
|
inline int FNullEnt(EHANDLE hent) { return (hent == NULL || FNullEnt(OFFSET(hent.Get()))); }
|
||||||
|
|
||||||
class CPointEntity: public CBaseEntity
|
class CPointEntity: public CBaseEntity {
|
||||||
{
|
|
||||||
public:
|
public:
|
||||||
virtual void Spawn();
|
virtual void Spawn();
|
||||||
virtual int ObjectCaps() { return (CBaseEntity::ObjectCaps() & ~FCAP_ACROSS_TRANSITION); }
|
virtual int ObjectCaps() { return (CBaseEntity::ObjectCaps() & ~FCAP_ACROSS_TRANSITION); }
|
||||||
@ -459,25 +413,25 @@ public:
|
|||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
class CMultiSource: public CPointEntity
|
// MultiSouce
|
||||||
{
|
class CMultiSource: public CPointEntity {
|
||||||
public:
|
public:
|
||||||
virtual void Spawn();
|
virtual void Spawn();
|
||||||
virtual void KeyValue(KeyValueData *pkvd);
|
virtual void KeyValue(KeyValueData *pkvd);
|
||||||
virtual void Use(CBaseEntity *pActivator, CBaseEntity *pCaller, USE_TYPE useType, float value);
|
|
||||||
virtual int ObjectCaps() { return (CPointEntity::ObjectCaps() | FCAP_MASTER); }
|
|
||||||
virtual BOOL IsTriggered(CBaseEntity *pActivator);
|
|
||||||
virtual int Save(CSave &save);
|
virtual int Save(CSave &save);
|
||||||
virtual int Restore(CRestore &restore);
|
virtual int Restore(CRestore &restore);
|
||||||
|
virtual int ObjectCaps() { return (CPointEntity::ObjectCaps() | FCAP_MASTER); }
|
||||||
|
virtual BOOL IsTriggered(CBaseEntity *pActivator);
|
||||||
|
virtual void Use(CBaseEntity *pActivator, CBaseEntity *pCaller, USE_TYPE useType, float value);
|
||||||
|
|
||||||
#ifdef HOOK_GAMEDLL
|
#ifdef HOOK_GAMEDLL
|
||||||
|
|
||||||
void Spawn_();
|
void Spawn_();
|
||||||
void KeyValue_(KeyValueData *pkvd);
|
void KeyValue_(KeyValueData *pkvd);
|
||||||
void Use_(CBaseEntity *pActivator, CBaseEntity *pCaller, USE_TYPE useType, float value);
|
|
||||||
BOOL IsTriggered_(CBaseEntity *pActivator);
|
|
||||||
int Save_(CSave &save);
|
int Save_(CSave &save);
|
||||||
int Restore_(CRestore &restore);
|
int Restore_(CRestore &restore);
|
||||||
|
BOOL IsTriggered_(CBaseEntity *pActivator);
|
||||||
|
void Use_(CBaseEntity *pActivator, CBaseEntity *pCaller, USE_TYPE useType, float value);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -493,8 +447,8 @@ public:
|
|||||||
string_t m_globalstate;
|
string_t m_globalstate;
|
||||||
};
|
};
|
||||||
|
|
||||||
class CBaseDelay: public CBaseEntity
|
// generic Delay entity.
|
||||||
{
|
class CBaseDelay: public CBaseEntity {
|
||||||
public:
|
public:
|
||||||
virtual void KeyValue(KeyValueData *pkvd);
|
virtual void KeyValue(KeyValueData *pkvd);
|
||||||
virtual int Save(CSave &save);
|
virtual int Save(CSave &save);
|
||||||
@ -518,8 +472,7 @@ public:
|
|||||||
int m_iszKillTarget;
|
int m_iszKillTarget;
|
||||||
};
|
};
|
||||||
|
|
||||||
class CBaseAnimating: public CBaseDelay
|
class CBaseAnimating: public CBaseDelay {
|
||||||
{
|
|
||||||
public:
|
public:
|
||||||
virtual int Save(CSave &save);
|
virtual int Save(CSave &save);
|
||||||
virtual int Restore(CRestore &restore);
|
virtual int Restore(CRestore &restore);
|
||||||
@ -533,13 +486,15 @@ public:
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
public:
|
public:
|
||||||
float StudioFrameAdvance(float flInterval = 0.0f);
|
// Basic Monster Animation functions
|
||||||
|
float StudioFrameAdvance(float flInterval = 0.0f); // accumulate animation frame time from last time called until now
|
||||||
BOOL GetSequenceFlags();
|
BOOL GetSequenceFlags();
|
||||||
int LookupActivity(int activity);
|
int LookupActivity(int activity);
|
||||||
int LookupActivityHeaviest(int activity);
|
int LookupActivityHeaviest(int activity);
|
||||||
int LookupSequence(const char *label);
|
int LookupSequence(const char *label);
|
||||||
void ResetSequenceInfo();
|
void ResetSequenceInfo();
|
||||||
void DispatchAnimEvents(float flFutureInterval = 0.1f);
|
void ResetSequenceInfo_();
|
||||||
|
void DispatchAnimEvents(float flFutureInterval = 0.1f); // Handle events that have happend since last time called up until X seconds into the future
|
||||||
float SetBoneController(int iController, float flValue = 0.0f);
|
float SetBoneController(int iController, float flValue = 0.0f);
|
||||||
void InitBoneControllers();
|
void InitBoneControllers();
|
||||||
|
|
||||||
@ -556,15 +511,16 @@ public:
|
|||||||
public:
|
public:
|
||||||
static TYPEDESCRIPTION IMPL(m_SaveData)[5];
|
static TYPEDESCRIPTION IMPL(m_SaveData)[5];
|
||||||
|
|
||||||
float m_flFrameRate;
|
// animation needs
|
||||||
float m_flGroundSpeed;
|
float m_flFrameRate; // computed FPS for current sequence
|
||||||
float m_flLastEventCheck;
|
float m_flGroundSpeed; // computed linear movement rate for current sequence
|
||||||
BOOL m_fSequenceFinished;
|
float m_flLastEventCheck; // last time the event list was checked
|
||||||
BOOL m_fSequenceLoops;
|
BOOL m_fSequenceFinished; // flag set when StudioAdvanceFrame moves across a frame boundry
|
||||||
|
BOOL m_fSequenceLoops; // true if the sequence loops
|
||||||
};
|
};
|
||||||
|
|
||||||
class CBaseToggle: public CBaseAnimating
|
// generic Toggle entity.
|
||||||
{
|
class CBaseToggle: public CBaseAnimating {
|
||||||
public:
|
public:
|
||||||
virtual void KeyValue(KeyValueData *pkvd);
|
virtual void KeyValue(KeyValueData *pkvd);
|
||||||
virtual int Save(CSave &save);
|
virtual int Save(CSave &save);
|
||||||
@ -596,39 +552,39 @@ public:
|
|||||||
static TYPEDESCRIPTION IMPL(m_SaveData)[19];
|
static TYPEDESCRIPTION IMPL(m_SaveData)[19];
|
||||||
|
|
||||||
TOGGLE_STATE m_toggle_state;
|
TOGGLE_STATE m_toggle_state;
|
||||||
float m_flActivateFinished;
|
float m_flActivateFinished; // like attack_finished, but for doors
|
||||||
float m_flMoveDistance;
|
float m_flMoveDistance; // how far a door should slide or rotate
|
||||||
float m_flWait;
|
float m_flWait;
|
||||||
float m_flLip;
|
float m_flLip;
|
||||||
float m_flTWidth;
|
float m_flTWidth; // for plats
|
||||||
float m_flTLength;
|
float m_flTLength; // for plats
|
||||||
|
|
||||||
Vector m_vecPosition1;
|
Vector m_vecPosition1;
|
||||||
Vector m_vecPosition2;
|
Vector m_vecPosition2;
|
||||||
Vector m_vecAngle1;
|
Vector m_vecAngle1;
|
||||||
Vector m_vecAngle2;
|
Vector m_vecAngle2;
|
||||||
int m_cTriggersLeft;
|
|
||||||
|
int m_cTriggersLeft; // trigger_counter only, # of activations remaining
|
||||||
float m_flHeight;
|
float m_flHeight;
|
||||||
EHANDLE m_hActivator;
|
EHANDLE m_hActivator;
|
||||||
void (CBaseToggle::*m_pfnCallWhenMoveDone)();
|
void (CBaseToggle::*m_pfnCallWhenMoveDone)();
|
||||||
Vector m_vecFinalDest;
|
Vector m_vecFinalDest;
|
||||||
Vector m_vecFinalAngle;
|
Vector m_vecFinalAngle;
|
||||||
int m_bitsDamageInflict;
|
|
||||||
string_t m_sMaster;
|
int m_bitsDamageInflict; // DMG_ damage type that the door or tigger does
|
||||||
|
|
||||||
|
string_t m_sMaster; // If this button has a master switch, this is the targetname.
|
||||||
|
// A master switch must be of the multisource type. If all
|
||||||
|
// of the switches in the multisource have been triggered, then
|
||||||
|
// the button will be allowed to operate. Otherwise, it will be
|
||||||
|
// deactivated.
|
||||||
};
|
};
|
||||||
|
|
||||||
#include "basemonster.h"
|
#include "basemonster.h"
|
||||||
|
|
||||||
// Generic Button
|
// Generic Button
|
||||||
class CBaseButton: public CBaseToggle
|
class CBaseButton: public CBaseToggle {
|
||||||
{
|
|
||||||
enum BUTTON_CODE
|
|
||||||
{
|
|
||||||
BUTTON_NOTHING,
|
|
||||||
BUTTON_ACTIVATE,
|
|
||||||
BUTTON_RETURN
|
|
||||||
};
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
virtual void Spawn();
|
virtual void Spawn();
|
||||||
virtual void Precache();
|
virtual void Precache();
|
||||||
virtual void KeyValue(KeyValueData *pkvd);
|
virtual void KeyValue(KeyValueData *pkvd);
|
||||||
@ -669,6 +625,7 @@ public:
|
|||||||
void EXPORT ButtonBackHome();
|
void EXPORT ButtonBackHome();
|
||||||
void EXPORT ButtonUse(CBaseEntity *pActivator, CBaseEntity *pCaller, USE_TYPE useType, float value);
|
void EXPORT ButtonUse(CBaseEntity *pActivator, CBaseEntity *pCaller, USE_TYPE useType, float value);
|
||||||
|
|
||||||
|
enum BUTTON_CODE { BUTTON_NOTHING, BUTTON_ACTIVATE, BUTTON_RETURN };
|
||||||
BUTTON_CODE ButtonResponseToTouch();
|
BUTTON_CODE ButtonResponseToTouch();
|
||||||
|
|
||||||
public:
|
public:
|
||||||
@ -685,8 +642,8 @@ public:
|
|||||||
int m_sounds;
|
int m_sounds;
|
||||||
};
|
};
|
||||||
|
|
||||||
class CWorld: public CBaseEntity
|
// This spawns first when each level begins.
|
||||||
{
|
class CWorld: public CBaseEntity {
|
||||||
public:
|
public:
|
||||||
virtual void Spawn();
|
virtual void Spawn();
|
||||||
virtual void Precache();
|
virtual void Precache();
|
||||||
@ -702,22 +659,37 @@ public:
|
|||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
template <class T>
|
#ifdef REGAMEDLL_SELF
|
||||||
|
extern class CCSEntity **g_GameEntities;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// Converts a entvars_t * to a class pointer
|
||||||
|
// It will allocate the class and entity if necessary
|
||||||
|
template <class TWrap, class T>
|
||||||
T *GetClassPtr(T *a)
|
T *GetClassPtr(T *a)
|
||||||
{
|
{
|
||||||
entvars_t *pev = (entvars_t *)a;
|
entvars_t *pev = (entvars_t *)a;
|
||||||
if (!pev)
|
|
||||||
|
// allocate entity if necessary
|
||||||
|
if (pev == NULL)
|
||||||
pev = VARS(CREATE_ENTITY());
|
pev = VARS(CREATE_ENTITY());
|
||||||
|
|
||||||
|
// get the private data
|
||||||
a = (T *)GET_PRIVATE(ENT(pev));
|
a = (T *)GET_PRIVATE(ENT(pev));
|
||||||
|
|
||||||
if (!a)
|
if (!a)
|
||||||
{
|
{
|
||||||
|
// allocate private data
|
||||||
a = new(pev) T;
|
a = new(pev) T;
|
||||||
a->pev = pev;
|
a->pev = pev;
|
||||||
|
|
||||||
|
#ifdef REGAMEDLL_SELF
|
||||||
|
g_GameEntities[a->entindex()] = new TWrap (a);
|
||||||
|
#endif
|
||||||
|
|
||||||
#if defined(HOOK_GAMEDLL) && defined(_WIN32) && !defined(REGAMEDLL_UNIT_TESTS)
|
#if defined(HOOK_GAMEDLL) && defined(_WIN32) && !defined(REGAMEDLL_UNIT_TESTS)
|
||||||
VirtualTableInit((void *)a, stripClass(typeid(T).name()));
|
VirtualTableInit((void *)a, stripClass(typeid(T).name()));
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return a;
|
return a;
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -115,7 +115,7 @@ int CMD_ARGC_();
|
|||||||
const char *CMD_ARGV_(int i);
|
const char *CMD_ARGV_(int i);
|
||||||
void set_suicide_frame(entvars_t *pev);
|
void set_suicide_frame(entvars_t *pev);
|
||||||
void TeamChangeUpdate(CBasePlayer *player, int team_id);
|
void TeamChangeUpdate(CBasePlayer *player, int team_id);
|
||||||
void BlinkAccount(CBasePlayer *player, int numBlinks);
|
void BlinkAccount(CBasePlayer *player, int numBlinks = 2);
|
||||||
BOOL ClientConnect(edict_t *pEntity, const char *pszName, const char *pszAddress, char *szRejectReason);
|
BOOL ClientConnect(edict_t *pEntity, const char *pszName, const char *pszAddress, char *szRejectReason);
|
||||||
void ClientDisconnect(edict_t *pEntity);
|
void ClientDisconnect(edict_t *pEntity);
|
||||||
void respawn(entvars_t *pev, BOOL fCopyCorpse = FALSE);
|
void respawn(entvars_t *pev, BOOL fCopyCorpse = FALSE);
|
||||||
@ -132,6 +132,7 @@ void Host_Say(edict_t *pEntity, int teamonly);
|
|||||||
void DropSecondary(CBasePlayer *pPlayer);
|
void DropSecondary(CBasePlayer *pPlayer);
|
||||||
void DropPrimary(CBasePlayer *pPlayer);
|
void DropPrimary(CBasePlayer *pPlayer);
|
||||||
bool CanBuyThis(CBasePlayer *pPlayer, int iWeapon);
|
bool CanBuyThis(CBasePlayer *pPlayer, int iWeapon);
|
||||||
|
bool CanBuyThis_(CBasePlayer *pPlayer, int iWeapon);
|
||||||
void BuyPistol(CBasePlayer *pPlayer, int iSlot);
|
void BuyPistol(CBasePlayer *pPlayer, int iSlot);
|
||||||
void BuyShotgun(CBasePlayer *pPlayer, int iSlot);
|
void BuyShotgun(CBasePlayer *pPlayer, int iSlot);
|
||||||
void BuySubMachineGun(CBasePlayer *pPlayer, int iSlot);
|
void BuySubMachineGun(CBasePlayer *pPlayer, int iSlot);
|
||||||
@ -190,4 +191,19 @@ void CreateInstancedBaselines();
|
|||||||
int InconsistentFile(const edict_t *player, const char *filename, char *disconnect_message);
|
int InconsistentFile(const edict_t *player, const char *filename, char *disconnect_message);
|
||||||
int AllowLagCompensation();
|
int AllowLagCompensation();
|
||||||
|
|
||||||
|
inline const char *GetTeamName(int team)
|
||||||
|
{
|
||||||
|
switch (team)
|
||||||
|
{
|
||||||
|
case CT:
|
||||||
|
return "CT";
|
||||||
|
case TERRORIST:
|
||||||
|
return "TERRORIST";
|
||||||
|
case SPECTATOR:
|
||||||
|
return "SPECTATOR";
|
||||||
|
default:
|
||||||
|
return "UNASSIGNED";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#endif // CLIENT_H
|
#endif // CLIENT_H
|
||||||
|
@ -15,17 +15,15 @@ void CGib::LimitVelocity()
|
|||||||
|
|
||||||
NOXREF void CGib::SpawnStickyGibs(entvars_t *pevVictim, Vector vecOrigin, int cGibs)
|
NOXREF void CGib::SpawnStickyGibs(entvars_t *pevVictim, Vector vecOrigin, int cGibs)
|
||||||
{
|
{
|
||||||
int i;
|
|
||||||
|
|
||||||
if (g_Language == LANGUAGE_GERMAN)
|
if (g_Language == LANGUAGE_GERMAN)
|
||||||
{
|
{
|
||||||
// no sticky gibs in germany right now!
|
// no sticky gibs in germany right now!
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (i = 0; i < cGibs; ++i)
|
for (int i = 0; i < cGibs; ++i)
|
||||||
{
|
{
|
||||||
CGib *pGib = GetClassPtr((CGib *)NULL);
|
CGib *pGib = GetClassPtr<CCSGib>((CGib *)NULL);
|
||||||
|
|
||||||
pGib->Spawn("models/stickygib.mdl");
|
pGib->Spawn("models/stickygib.mdl");
|
||||||
pGib->pev->body = RANDOM_LONG(0, 2);
|
pGib->pev->body = RANDOM_LONG(0, 2);
|
||||||
@ -67,7 +65,7 @@ NOXREF void CGib::SpawnStickyGibs(entvars_t *pevVictim, Vector vecOrigin, int cG
|
|||||||
|
|
||||||
pGib->pev->movetype = MOVETYPE_TOSS;
|
pGib->pev->movetype = MOVETYPE_TOSS;
|
||||||
pGib->pev->solid = SOLID_BBOX;
|
pGib->pev->solid = SOLID_BBOX;
|
||||||
UTIL_SetSize(pGib->pev, Vector (0, 0,0), Vector (0, 0, 0));
|
UTIL_SetSize(pGib->pev, Vector(0, 0,0), Vector(0, 0, 0));
|
||||||
pGib->SetTouch(&CGib::StickyGibTouch);
|
pGib->SetTouch(&CGib::StickyGibTouch);
|
||||||
pGib->SetThink(NULL);
|
pGib->SetThink(NULL);
|
||||||
}
|
}
|
||||||
@ -78,7 +76,7 @@ NOXREF void CGib::SpawnStickyGibs(entvars_t *pevVictim, Vector vecOrigin, int cG
|
|||||||
|
|
||||||
void CGib::SpawnHeadGib(entvars_t *pevVictim)
|
void CGib::SpawnHeadGib(entvars_t *pevVictim)
|
||||||
{
|
{
|
||||||
CGib *pGib = GetClassPtr((CGib *)NULL);
|
CGib *pGib = GetClassPtr<CCSGib>((CGib *)NULL);
|
||||||
|
|
||||||
if (g_Language == LANGUAGE_GERMAN)
|
if (g_Language == LANGUAGE_GERMAN)
|
||||||
{
|
{
|
||||||
@ -139,9 +137,9 @@ void CGib::SpawnHeadGib(entvars_t *pevVictim)
|
|||||||
void CGib::SpawnRandomGibs(entvars_t *pevVictim, int cGibs, int human)
|
void CGib::SpawnRandomGibs(entvars_t *pevVictim, int cGibs, int human)
|
||||||
{
|
{
|
||||||
int cSplat;
|
int cSplat;
|
||||||
for (cSplat = 0; cSplat < cGibs; cSplat++)
|
for (cSplat = 0; cSplat < cGibs; ++cSplat)
|
||||||
{
|
{
|
||||||
CGib *pGib = GetClassPtr((CGib *)NULL);
|
CGib *pGib = GetClassPtr<CCSGib>((CGib *)NULL);
|
||||||
|
|
||||||
if (g_Language == LANGUAGE_GERMAN)
|
if (g_Language == LANGUAGE_GERMAN)
|
||||||
{
|
{
|
||||||
@ -613,9 +611,10 @@ void CGib::WaitTillLand()
|
|||||||
{
|
{
|
||||||
SetThink(&CBaseEntity::SUB_StartFadeOut);
|
SetThink(&CBaseEntity::SUB_StartFadeOut);
|
||||||
pev->nextthink = gpGlobals->time + m_lifeTime;
|
pev->nextthink = gpGlobals->time + m_lifeTime;
|
||||||
|
#ifndef REGAMEDLL_FIXES
|
||||||
if (m_bloodColor != DONT_BLEED)
|
if (m_bloodColor != DONT_BLEED)
|
||||||
CSoundEnt::InsertSound(bits_SOUND_MEAT, pev->origin, 384, 25);
|
CSoundEnt::InsertSound(bits_SOUND_MEAT, pev->origin, 384, 25);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
pev->nextthink = gpGlobals->time + 0.5f;
|
pev->nextthink = gpGlobals->time + 0.5f;
|
||||||
@ -733,9 +732,6 @@ int CBaseMonster::__MAKE_VHOOK(TakeHealth)(float flHealth, int bitsDamageType)
|
|||||||
// When a monster is poisoned via an arrow etc it takes all the poison damage at once.
|
// When a monster is poisoned via an arrow etc it takes all the poison damage at once.
|
||||||
int CBaseMonster::__MAKE_VHOOK(TakeDamage)(entvars_t *pevInflictor, entvars_t *pevAttacker, float flDamage, int bitsDamageType)
|
int CBaseMonster::__MAKE_VHOOK(TakeDamage)(entvars_t *pevInflictor, entvars_t *pevAttacker, float flDamage, int bitsDamageType)
|
||||||
{
|
{
|
||||||
float flTake;
|
|
||||||
Vector vecDir;
|
|
||||||
|
|
||||||
if (pev->takedamage == DAMAGE_NO)
|
if (pev->takedamage == DAMAGE_NO)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
@ -751,13 +747,13 @@ int CBaseMonster::__MAKE_VHOOK(TakeDamage)(entvars_t *pevInflictor, entvars_t *p
|
|||||||
}
|
}
|
||||||
|
|
||||||
// LATER: make armor consideration here!
|
// LATER: make armor consideration here!
|
||||||
flTake = flDamage;
|
float flTake = flDamage;
|
||||||
|
|
||||||
// set damage type sustained
|
// set damage type sustained
|
||||||
m_bitsDamageType |= bitsDamageType;
|
m_bitsDamageType |= bitsDamageType;
|
||||||
|
|
||||||
// grab the vector of the incoming attack. ( pretend that the inflictor is a little lower than it really is, so the body will tend to fly upward a bit).
|
// grab the vector of the incoming attack. ( pretend that the inflictor is a little lower than it really is, so the body will tend to fly upward a bit).
|
||||||
vecDir = Vector(0, 0, 0);
|
Vector vecDir(0, 0, 0);
|
||||||
|
|
||||||
if (!FNullEnt(pevInflictor))
|
if (!FNullEnt(pevInflictor))
|
||||||
{
|
{
|
||||||
@ -848,7 +844,7 @@ int CBaseMonster::__MAKE_VHOOK(TakeDamage)(entvars_t *pevInflictor, entvars_t *p
|
|||||||
int CBaseMonster::DeadTakeDamage(entvars_t *pevInflictor, entvars_t *pevAttacker, float flDamage, int bitsDamageType)
|
int CBaseMonster::DeadTakeDamage(entvars_t *pevInflictor, entvars_t *pevAttacker, float flDamage, int bitsDamageType)
|
||||||
{
|
{
|
||||||
// grab the vector of the incoming attack. ( pretend that the inflictor is a little lower than it really is, so the body will tend to fly upward a bit).
|
// grab the vector of the incoming attack. ( pretend that the inflictor is a little lower than it really is, so the body will tend to fly upward a bit).
|
||||||
Vector vecDir = Vector(0, 0, 0);
|
Vector vecDir(0, 0, 0);
|
||||||
|
|
||||||
if (!FNullEnt(pevInflictor))
|
if (!FNullEnt(pevInflictor))
|
||||||
{
|
{
|
||||||
@ -902,6 +898,31 @@ float CBaseMonster::DamageForce(float damage)
|
|||||||
return force;
|
return force;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void EXT_FUNC PlayerBlind(CBasePlayer *pPlayer, entvars_t *pevInflictor, entvars_t *pevAttacker, float fadeTime, float fadeHold, int alpha, Vector &color)
|
||||||
|
{
|
||||||
|
UTIL_ScreenFade(pPlayer, color, fadeTime, fadeHold, alpha, 0);
|
||||||
|
|
||||||
|
for (int i = 1; i <= gpGlobals->maxClients; ++i)
|
||||||
|
{
|
||||||
|
CBasePlayer *pObserver = static_cast<CBasePlayer *>(UTIL_PlayerByIndex(i));
|
||||||
|
|
||||||
|
if (!pObserver || !pObserver->IsObservingPlayer(pPlayer))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if (!fadetoblack.value)
|
||||||
|
{
|
||||||
|
UTIL_ScreenFade(pObserver, color, fadeTime, fadeHold, alpha, 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pPlayer->Blind(fadeTime * 0.33, fadeHold, fadeTime, alpha);
|
||||||
|
|
||||||
|
if (TheBots != NULL)
|
||||||
|
{
|
||||||
|
TheBots->OnEvent(EVENT_PLAYER_BLINDED_BY_FLASHBANG, pPlayer);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void RadiusFlash(Vector vecSrc, entvars_t *pevInflictor, entvars_t *pevAttacker, float flDamage, int iClassIgnore, int bitsDamageType)
|
void RadiusFlash(Vector vecSrc, entvars_t *pevInflictor, entvars_t *pevAttacker, float flDamage, int iClassIgnore, int bitsDamageType)
|
||||||
{
|
{
|
||||||
CBaseEntity *pEntity = NULL;
|
CBaseEntity *pEntity = NULL;
|
||||||
@ -947,12 +968,16 @@ void RadiusFlash(Vector vecSrc, entvars_t *pevInflictor, entvars_t *pevAttacker,
|
|||||||
vecSpot = pPlayer->BodyTarget(vecSrc);
|
vecSpot = pPlayer->BodyTarget(vecSrc);
|
||||||
UTIL_TraceLine(vecSrc, vecSpot, dont_ignore_monsters, ENT(pevInflictor), &tr);
|
UTIL_TraceLine(vecSrc, vecSpot, dont_ignore_monsters, ENT(pevInflictor), &tr);
|
||||||
|
|
||||||
|
g_ReGameHookchains.m_RadiusFlash_TraceLine.callChain(NULL, pPlayer, pevInflictor, pevAttacker, vecSrc, vecSpot, &tr);
|
||||||
|
|
||||||
if (tr.flFraction != 1.0f && tr.pHit != pPlayer->pev->pContainingEntity)
|
if (tr.flFraction != 1.0f && tr.pHit != pPlayer->pev->pContainingEntity)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
|
#ifndef REGAMEDLL_FIXES
|
||||||
UTIL_TraceLine(vecSpot, vecSrc, dont_ignore_monsters, tr.pHit, &tr2);
|
UTIL_TraceLine(vecSpot, vecSrc, dont_ignore_monsters, tr.pHit, &tr2);
|
||||||
|
|
||||||
if (tr2.flFraction >= 1.0)
|
if (tr2.flFraction >= 1.0)
|
||||||
|
#endif
|
||||||
{
|
{
|
||||||
if (tr.fStartSolid)
|
if (tr.fStartSolid)
|
||||||
{
|
{
|
||||||
@ -999,27 +1024,8 @@ void RadiusFlash(Vector vecSrc, entvars_t *pevInflictor, entvars_t *pevAttacker,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
UTIL_ScreenFade(pPlayer, Vector(255, 255, 255), fadeTime, fadeHold, alpha, 0);
|
Vector color(255, 255, 255);
|
||||||
|
g_ReGameHookchains.m_PlayerBlind.callChain(PlayerBlind, pPlayer, pevInflictor, pevAttacker, fadeTime, fadeHold, alpha, color);
|
||||||
for (int i = 1; i <= gpGlobals->maxClients; ++i)
|
|
||||||
{
|
|
||||||
CBasePlayer *pObserver = static_cast<CBasePlayer *>(UTIL_PlayerByIndex(i));
|
|
||||||
|
|
||||||
if (!pObserver || !pObserver->IsObservingPlayer(pPlayer))
|
|
||||||
continue;
|
|
||||||
|
|
||||||
if (!fadetoblack.value)
|
|
||||||
{
|
|
||||||
UTIL_ScreenFade(pObserver, Vector(255, 255, 255), fadeTime, fadeHold, alpha, 0);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
pPlayer->Blind(fadeTime * 0.33, fadeHold, fadeTime, alpha);
|
|
||||||
|
|
||||||
if (TheBots != NULL)
|
|
||||||
{
|
|
||||||
TheBots->OnEvent(EVENT_PLAYER_BLINDED_BY_FLASHBANG, pPlayer);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1029,8 +1035,6 @@ float GetAmountOfPlayerVisible(Vector vecSrc, CBaseEntity *entity)
|
|||||||
float retval = 0.0f;
|
float retval = 0.0f;
|
||||||
TraceResult tr;
|
TraceResult tr;
|
||||||
Vector spot;
|
Vector spot;
|
||||||
Vector2D dir;
|
|
||||||
Vector2D perp;
|
|
||||||
|
|
||||||
const float topOfHead = 25.0f;
|
const float topOfHead = 25.0f;
|
||||||
const float standFeet = 34.0f;
|
const float standFeet = 34.0f;
|
||||||
@ -1069,11 +1073,10 @@ float GetAmountOfPlayerVisible(Vector vecSrc, CBaseEntity *entity)
|
|||||||
if (tr.flFraction == 1.0f)
|
if (tr.flFraction == 1.0f)
|
||||||
retval += 0.2f;
|
retval += 0.2f;
|
||||||
|
|
||||||
dir = (entity->pev->origin - vecSrc).Make2D();
|
Vector2D dir = (entity->pev->origin - vecSrc).Make2D();
|
||||||
dir.NormalizeInPlace();
|
dir.NormalizeInPlace();
|
||||||
|
|
||||||
perp.x = -dir.y * edgeOffset;
|
Vector2D perp(-dir.y * edgeOffset, dir.x * edgeOffset);
|
||||||
perp.y = dir.x * edgeOffset;
|
|
||||||
|
|
||||||
spot = entity->pev->origin + Vector(perp.x, perp.y, 0);
|
spot = entity->pev->origin + Vector(perp.x, perp.y, 0);
|
||||||
|
|
||||||
@ -1137,7 +1140,16 @@ void RadiusDamage(Vector vecSrc, entvars_t *pevInflictor, entvars_t *pevAttacker
|
|||||||
damageRatio = GetAmountOfPlayerVisible(vecSrc, pEntity);
|
damageRatio = GetAmountOfPlayerVisible(vecSrc, pEntity);
|
||||||
}
|
}
|
||||||
|
|
||||||
float length = (vecSrc - pEntity->pev->origin).Length();
|
damageRatio = GetAmountOfPlayerVisible(vecSrc, pEntity);
|
||||||
|
|
||||||
|
float length;
|
||||||
|
#ifdef REGAMEDLL_ADD
|
||||||
|
// allow to damage breakable objects
|
||||||
|
if (FClassnameIs(pEntity->pev, "func_breakable"))
|
||||||
|
length = (vecSrc - pEntity->Center()).Length();
|
||||||
|
else
|
||||||
|
#endif
|
||||||
|
length = (vecSrc - pEntity->pev->origin).Length();
|
||||||
|
|
||||||
if (useLOS)
|
if (useLOS)
|
||||||
{
|
{
|
||||||
@ -1150,12 +1162,28 @@ void RadiusDamage(Vector vecSrc, entvars_t *pevInflictor, entvars_t *pevAttacker
|
|||||||
flAdjustedDamage = (flRadius - length) * (flRadius - length) * 1.25 / (flRadius * flRadius) * (damageRatio * flDamage) * 1.5;
|
flAdjustedDamage = (flRadius - length) * (flRadius - length) * 1.25 / (flRadius * flRadius) * (damageRatio * flDamage) * 1.5;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
{
|
||||||
flAdjustedDamage = flDamage - length * falloff;
|
flAdjustedDamage = flDamage - length * falloff;
|
||||||
|
#ifdef REGAMEDLL_ADD
|
||||||
|
// disable grenade damage through walls?
|
||||||
|
if (hegrenade_penetration.string[0] == '1' && (bitsDamageType & DMG_EXPLOSION))
|
||||||
|
{
|
||||||
|
UTIL_TraceLine(vecSrc, pEntity->pev->origin, ignore_monsters, NULL, &tr);
|
||||||
|
|
||||||
|
if (tr.flFraction != 1.0f)
|
||||||
|
flAdjustedDamage = 0.0f;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
if (flAdjustedDamage < 0)
|
if (flAdjustedDamage < 0)
|
||||||
flAdjustedDamage = 0;
|
flAdjustedDamage = 0;
|
||||||
|
|
||||||
pEntity->TakeDamage(pevInflictor, pevAttacker, flAdjustedDamage, bitsDamageType);
|
#ifdef REGAMEDLL_FIXES
|
||||||
|
if (flAdjustedDamage > 0)
|
||||||
|
#endif
|
||||||
|
pEntity->TakeDamage(pevInflictor, pevAttacker, flAdjustedDamage, bitsDamageType);
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1468,7 +1496,7 @@ void CBaseEntity::FireBullets(ULONG cShots, Vector vecSrc, Vector vecDirShooting
|
|||||||
ClearMultiDamage();
|
ClearMultiDamage();
|
||||||
gMultiDamage.type = (DMG_BULLET | DMG_NEVERGIB);
|
gMultiDamage.type = (DMG_BULLET | DMG_NEVERGIB);
|
||||||
|
|
||||||
for (ULONG iShot = 1; iShot <= cShots; iShot++)
|
for (ULONG iShot = 1; iShot <= cShots; ++iShot)
|
||||||
{
|
{
|
||||||
int spark = 0;
|
int spark = 0;
|
||||||
|
|
||||||
|
@ -187,10 +187,10 @@ void CBaseDoor::__MAKE_VHOOK(KeyValue)(KeyValueData *pkvd)
|
|||||||
// 2) base
|
// 2) base
|
||||||
// 3) stone chain
|
// 3) stone chain
|
||||||
// 4) screechy metal
|
// 4) screechy metal
|
||||||
LINK_ENTITY_TO_CLASS(func_door, CBaseDoor);
|
LINK_ENTITY_TO_CLASS(func_door, CBaseDoor, CCSDoor);
|
||||||
|
|
||||||
// func_water - same as a door.
|
// func_water - same as a door.
|
||||||
LINK_ENTITY_TO_CLASS(func_water, CBaseDoor);
|
LINK_ENTITY_TO_CLASS(func_water, CBaseDoor, CCSDoor);
|
||||||
|
|
||||||
void CBaseDoor::__MAKE_VHOOK(Spawn)()
|
void CBaseDoor::__MAKE_VHOOK(Spawn)()
|
||||||
{
|
{
|
||||||
@ -767,7 +767,7 @@ void CBaseDoor::__MAKE_VHOOK(Blocked)(CBaseEntity *pOther)
|
|||||||
|
|
||||||
if (FClassnameIs(pentTarget, "func_door") || FClassnameIs(pentTarget, "func_door_rotating"))
|
if (FClassnameIs(pentTarget, "func_door") || FClassnameIs(pentTarget, "func_door_rotating"))
|
||||||
{
|
{
|
||||||
pDoor = GetClassPtr((CBaseDoor *)VARS(pentTarget));
|
pDoor = GetClassPtr<CCSDoor>((CBaseDoor *)VARS(pentTarget));
|
||||||
|
|
||||||
if (pDoor->m_flWait >= 0)
|
if (pDoor->m_flWait >= 0)
|
||||||
{
|
{
|
||||||
@ -840,7 +840,7 @@ void CBaseDoor::__MAKE_VHOOK(Blocked)(CBaseEntity *pOther)
|
|||||||
// 2) base
|
// 2) base
|
||||||
// 3) stone chain
|
// 3) stone chain
|
||||||
// 4) screechy metal
|
// 4) screechy metal
|
||||||
LINK_ENTITY_TO_CLASS(func_door_rotating, CRotDoor);
|
LINK_ENTITY_TO_CLASS(func_door_rotating, CRotDoor, CCSRotDoor);
|
||||||
|
|
||||||
void CRotDoor::__MAKE_VHOOK(Restart)()
|
void CRotDoor::__MAKE_VHOOK(Restart)()
|
||||||
{
|
{
|
||||||
@ -938,7 +938,7 @@ void CRotDoor::__MAKE_VHOOK(SetToggleState)(int state)
|
|||||||
UTIL_SetOrigin(pev, pev->origin);
|
UTIL_SetOrigin(pev, pev->origin);
|
||||||
}
|
}
|
||||||
|
|
||||||
LINK_ENTITY_TO_CLASS(momentary_door, CMomentaryDoor);
|
LINK_ENTITY_TO_CLASS(momentary_door, CMomentaryDoor, CCSMomentaryDoor);
|
||||||
IMPLEMENT_SAVERESTORE(CMomentaryDoor, CBaseToggle);
|
IMPLEMENT_SAVERESTORE(CMomentaryDoor, CBaseToggle);
|
||||||
|
|
||||||
void CMomentaryDoor::__MAKE_VHOOK(Spawn)()
|
void CMomentaryDoor::__MAKE_VHOOK(Spawn)()
|
||||||
|
@ -61,8 +61,8 @@ TYPEDESCRIPTION CGibShooter::m_SaveData[] =
|
|||||||
|
|
||||||
#endif // HOOK_GAMEDLL
|
#endif // HOOK_GAMEDLL
|
||||||
|
|
||||||
LINK_ENTITY_TO_CLASS(info_target, CPointEntity);
|
LINK_ENTITY_TO_CLASS(info_target, CPointEntity, CCSPointEntity);
|
||||||
LINK_ENTITY_TO_CLASS(env_bubbles, CBubbling);
|
LINK_ENTITY_TO_CLASS(env_bubbles, CBubbling, CCSBubbling);
|
||||||
IMPLEMENT_SAVERESTORE(CBubbling, CBaseEntity);
|
IMPLEMENT_SAVERESTORE(CBubbling, CBaseEntity);
|
||||||
|
|
||||||
void CBubbling::__MAKE_VHOOK(Spawn)()
|
void CBubbling::__MAKE_VHOOK(Spawn)()
|
||||||
@ -154,7 +154,7 @@ void CBubbling::FizzThink()
|
|||||||
pev->nextthink = gpGlobals->time + 2.5f - (0.1f * m_frequency);
|
pev->nextthink = gpGlobals->time + 2.5f - (0.1f * m_frequency);
|
||||||
}
|
}
|
||||||
|
|
||||||
LINK_ENTITY_TO_CLASS(beam, CBeam);
|
LINK_ENTITY_TO_CLASS(beam, CBeam, CCSBeam);
|
||||||
|
|
||||||
void CBeam::__MAKE_VHOOK(Spawn)()
|
void CBeam::__MAKE_VHOOK(Spawn)()
|
||||||
{
|
{
|
||||||
@ -218,7 +218,7 @@ const Vector &CBeam::GetEndPos()
|
|||||||
CBeam *CBeam::BeamCreate(const char *pSpriteName, int width)
|
CBeam *CBeam::BeamCreate(const char *pSpriteName, int width)
|
||||||
{
|
{
|
||||||
// Create a new entity with CBeam private data
|
// Create a new entity with CBeam private data
|
||||||
CBeam *pBeam = GetClassPtr((CBeam *)NULL);
|
CBeam *pBeam = GetClassPtr<CCSBeam>((CBeam *)NULL);
|
||||||
|
|
||||||
MAKE_STRING_CLASS("beam", pBeam->pev);
|
MAKE_STRING_CLASS("beam", pBeam->pev);
|
||||||
pBeam->BeamInit(pSpriteName, width);
|
pBeam->BeamInit(pSpriteName, width);
|
||||||
@ -350,8 +350,8 @@ void CBeam::DoSparks(const Vector &start, const Vector &end)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
LINK_ENTITY_TO_CLASS(env_lightning, CLightning);
|
LINK_ENTITY_TO_CLASS(env_lightning, CLightning, CCSLightning);
|
||||||
LINK_ENTITY_TO_CLASS(env_beam, CLightning);
|
LINK_ENTITY_TO_CLASS(env_beam, CLightning, CCSLightning);
|
||||||
IMPLEMENT_SAVERESTORE(CLightning, CBeam);
|
IMPLEMENT_SAVERESTORE(CLightning, CBeam);
|
||||||
|
|
||||||
void CLightning::__MAKE_VHOOK(Spawn)()
|
void CLightning::__MAKE_VHOOK(Spawn)()
|
||||||
@ -715,7 +715,7 @@ void CLightning::RandomArea()
|
|||||||
for (int iLoops = 0; iLoops < 10; iLoops++)
|
for (int iLoops = 0; iLoops < 10; iLoops++)
|
||||||
{
|
{
|
||||||
Vector vecSrc = pev->origin;
|
Vector vecSrc = pev->origin;
|
||||||
Vector vecDir1 = Vector(RANDOM_FLOAT(-1, 1), RANDOM_FLOAT(-1, 1), RANDOM_FLOAT(-1, 1));
|
Vector vecDir1(RANDOM_FLOAT(-1, 1), RANDOM_FLOAT(-1, 1), RANDOM_FLOAT(-1, 1));
|
||||||
vecDir1 = vecDir1.Normalize();
|
vecDir1 = vecDir1.Normalize();
|
||||||
|
|
||||||
TraceResult tr1;
|
TraceResult tr1;
|
||||||
@ -756,7 +756,7 @@ void CLightning::RandomPoint(Vector &vecSrc)
|
|||||||
{
|
{
|
||||||
for (int iLoops = 0; iLoops < 10; iLoops++)
|
for (int iLoops = 0; iLoops < 10; iLoops++)
|
||||||
{
|
{
|
||||||
Vector vecDir1 = Vector(RANDOM_FLOAT(-1, 1), RANDOM_FLOAT(-1, 1), RANDOM_FLOAT(-1, 1));
|
Vector vecDir1(RANDOM_FLOAT(-1, 1), RANDOM_FLOAT(-1, 1), RANDOM_FLOAT(-1, 1));
|
||||||
vecDir1 = vecDir1.Normalize();
|
vecDir1 = vecDir1.Normalize();
|
||||||
|
|
||||||
TraceResult tr1;
|
TraceResult tr1;
|
||||||
@ -846,7 +846,7 @@ void CLightning::BeamUpdateVars()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
LINK_ENTITY_TO_CLASS(env_laser, CLaser);
|
LINK_ENTITY_TO_CLASS(env_laser, CLaser, CCSLaser);
|
||||||
IMPLEMENT_SAVERESTORE(CLaser, CBeam);
|
IMPLEMENT_SAVERESTORE(CLaser, CBeam);
|
||||||
|
|
||||||
void CLaser::__MAKE_VHOOK(Spawn)()
|
void CLaser::__MAKE_VHOOK(Spawn)()
|
||||||
@ -1005,7 +1005,7 @@ void CLaser::StrikeThink()
|
|||||||
pev->nextthink = gpGlobals->time + 0.1f;
|
pev->nextthink = gpGlobals->time + 0.1f;
|
||||||
}
|
}
|
||||||
|
|
||||||
LINK_ENTITY_TO_CLASS(env_glow, CGlow);
|
LINK_ENTITY_TO_CLASS(env_glow, CGlow, CCSGlow);
|
||||||
IMPLEMENT_SAVERESTORE(CGlow, CPointEntity);
|
IMPLEMENT_SAVERESTORE(CGlow, CPointEntity);
|
||||||
|
|
||||||
void CGlow::__MAKE_VHOOK(Spawn)()
|
void CGlow::__MAKE_VHOOK(Spawn)()
|
||||||
@ -1044,7 +1044,7 @@ void CGlow::Animate(float frames)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
LINK_ENTITY_TO_CLASS(env_bombglow, CBombGlow);
|
LINK_ENTITY_TO_CLASS(env_bombglow, CBombGlow, CCSBombGlow);
|
||||||
|
|
||||||
void CBombGlow::__MAKE_VHOOK(Spawn)()
|
void CBombGlow::__MAKE_VHOOK(Spawn)()
|
||||||
{
|
{
|
||||||
@ -1096,7 +1096,7 @@ void CBombGlow::__MAKE_VHOOK(Think)()
|
|||||||
pev->nextthink = gpGlobals->time + 0.05f;
|
pev->nextthink = gpGlobals->time + 0.05f;
|
||||||
}
|
}
|
||||||
|
|
||||||
LINK_ENTITY_TO_CLASS(env_sprite, CSprite);
|
LINK_ENTITY_TO_CLASS(env_sprite, CSprite, CCSSprite);
|
||||||
IMPLEMENT_SAVERESTORE(CSprite, CPointEntity);
|
IMPLEMENT_SAVERESTORE(CSprite, CPointEntity);
|
||||||
|
|
||||||
void CSprite::__MAKE_VHOOK(Spawn)()
|
void CSprite::__MAKE_VHOOK(Spawn)()
|
||||||
@ -1160,7 +1160,7 @@ void CSprite::SpriteInit(const char *pSpriteName, const Vector &origin)
|
|||||||
|
|
||||||
CSprite *CSprite::SpriteCreate(const char *pSpriteName, const Vector &origin, BOOL animate)
|
CSprite *CSprite::SpriteCreate(const char *pSpriteName, const Vector &origin, BOOL animate)
|
||||||
{
|
{
|
||||||
CSprite *pSprite = GetClassPtr((CSprite *)NULL);
|
CSprite *pSprite = GetClassPtr<CCSSprite>((CSprite *)NULL);
|
||||||
pSprite->SpriteInit(pSpriteName, origin);
|
pSprite->SpriteInit(pSpriteName, origin);
|
||||||
|
|
||||||
MAKE_STRING_CLASS("env_sprite", pSprite->pev);
|
MAKE_STRING_CLASS("env_sprite", pSprite->pev);
|
||||||
@ -1273,7 +1273,7 @@ void CSprite::__MAKE_VHOOK(Use)(CBaseEntity *pActivator, CBaseEntity *pCaller, U
|
|||||||
}
|
}
|
||||||
|
|
||||||
IMPLEMENT_SAVERESTORE(CGibShooter, CBaseDelay);
|
IMPLEMENT_SAVERESTORE(CGibShooter, CBaseDelay);
|
||||||
LINK_ENTITY_TO_CLASS(gibshooter, CGibShooter);
|
LINK_ENTITY_TO_CLASS(gibshooter, CGibShooter, CCSGibShooter);
|
||||||
|
|
||||||
void CGibShooter::__MAKE_VHOOK(Precache)()
|
void CGibShooter::__MAKE_VHOOK(Precache)()
|
||||||
{
|
{
|
||||||
@ -1345,7 +1345,7 @@ CGib *CGibShooter::__MAKE_VHOOK(CreateGib)()
|
|||||||
if (CVAR_GET_FLOAT("violence_hgibs") == 0)
|
if (CVAR_GET_FLOAT("violence_hgibs") == 0)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
CGib *pGib = GetClassPtr((CGib *)NULL);
|
CGib *pGib = GetClassPtr<CCSGib>((CGib *)NULL);
|
||||||
|
|
||||||
pGib->Spawn("models/hgibs.mdl");
|
pGib->Spawn("models/hgibs.mdl");
|
||||||
pGib->m_bloodColor = BLOOD_COLOR_RED;
|
pGib->m_bloodColor = BLOOD_COLOR_RED;
|
||||||
@ -1425,7 +1425,7 @@ void CGibShooter::ShootThink()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
LINK_ENTITY_TO_CLASS(env_shooter, CEnvShooter);
|
LINK_ENTITY_TO_CLASS(env_shooter, CEnvShooter, CCSEnvShooter);
|
||||||
|
|
||||||
void CEnvShooter::__MAKE_VHOOK(KeyValue)(KeyValueData *pkvd)
|
void CEnvShooter::__MAKE_VHOOK(KeyValue)(KeyValueData *pkvd)
|
||||||
{
|
{
|
||||||
@ -1474,7 +1474,7 @@ void CEnvShooter::__MAKE_VHOOK(Precache)()
|
|||||||
|
|
||||||
CGib *CEnvShooter::__MAKE_VHOOK(CreateGib)()
|
CGib *CEnvShooter::__MAKE_VHOOK(CreateGib)()
|
||||||
{
|
{
|
||||||
CGib *pGib = GetClassPtr((CGib *)NULL);
|
CGib *pGib = GetClassPtr<CCSGib>((CGib *)NULL);
|
||||||
|
|
||||||
pGib->Spawn(STRING(pev->model));
|
pGib->Spawn(STRING(pev->model));
|
||||||
|
|
||||||
@ -1497,7 +1497,7 @@ CGib *CEnvShooter::__MAKE_VHOOK(CreateGib)()
|
|||||||
return pGib;
|
return pGib;
|
||||||
}
|
}
|
||||||
|
|
||||||
LINK_ENTITY_TO_CLASS(test_effect, CTestEffect);
|
LINK_ENTITY_TO_CLASS(test_effect, CTestEffect, CCSTestEffect);
|
||||||
|
|
||||||
void CTestEffect::__MAKE_VHOOK(Spawn)()
|
void CTestEffect::__MAKE_VHOOK(Spawn)()
|
||||||
{
|
{
|
||||||
@ -1571,7 +1571,7 @@ void CTestEffect::__MAKE_VHOOK(Use)(CBaseEntity *pActivator, CBaseEntity *pCalle
|
|||||||
m_flStartTime = gpGlobals->time;
|
m_flStartTime = gpGlobals->time;
|
||||||
}
|
}
|
||||||
|
|
||||||
LINK_ENTITY_TO_CLASS(env_blood, CBlood);
|
LINK_ENTITY_TO_CLASS(env_blood, CBlood, CCSBlood);
|
||||||
|
|
||||||
void CBlood::__MAKE_VHOOK(Spawn)()
|
void CBlood::__MAKE_VHOOK(Spawn)()
|
||||||
{
|
{
|
||||||
@ -1659,7 +1659,7 @@ void CBlood::__MAKE_VHOOK(Use)(CBaseEntity *pActivator, CBaseEntity *pCaller, US
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
LINK_ENTITY_TO_CLASS(env_shake, CShake);
|
LINK_ENTITY_TO_CLASS(env_shake, CShake, CCSShake);
|
||||||
|
|
||||||
void CShake::__MAKE_VHOOK(Spawn)()
|
void CShake::__MAKE_VHOOK(Spawn)()
|
||||||
{
|
{
|
||||||
@ -1703,7 +1703,7 @@ void CShake::__MAKE_VHOOK(Use)(CBaseEntity *pActivator, CBaseEntity *pCaller, US
|
|||||||
UTIL_ScreenShake(pev->origin, Amplitude(), Frequency(), Duration(), Radius());
|
UTIL_ScreenShake(pev->origin, Amplitude(), Frequency(), Duration(), Radius());
|
||||||
}
|
}
|
||||||
|
|
||||||
LINK_ENTITY_TO_CLASS(env_fade, CFade);
|
LINK_ENTITY_TO_CLASS(env_fade, CFade, CCSFade);
|
||||||
|
|
||||||
void CFade::__MAKE_VHOOK(Spawn)()
|
void CFade::__MAKE_VHOOK(Spawn)()
|
||||||
{
|
{
|
||||||
@ -1752,7 +1752,7 @@ void CFade::__MAKE_VHOOK(Use)(CBaseEntity *pActivator, CBaseEntity *pCaller, USE
|
|||||||
SUB_UseTargets(this, USE_TOGGLE, 0);
|
SUB_UseTargets(this, USE_TOGGLE, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
LINK_ENTITY_TO_CLASS(env_message, CMessage);
|
LINK_ENTITY_TO_CLASS(env_message, CMessage, CCSMessage);
|
||||||
|
|
||||||
void CMessage::__MAKE_VHOOK(Spawn)()
|
void CMessage::__MAKE_VHOOK(Spawn)()
|
||||||
{
|
{
|
||||||
@ -1845,7 +1845,7 @@ void CMessage::__MAKE_VHOOK(Use)(CBaseEntity *pActivator, CBaseEntity *pCaller,
|
|||||||
SUB_UseTargets(this, USE_TOGGLE, 0);
|
SUB_UseTargets(this, USE_TOGGLE, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
LINK_ENTITY_TO_CLASS(env_funnel, CEnvFunnel);
|
LINK_ENTITY_TO_CLASS(env_funnel, CEnvFunnel, CCSEnvFunnel);
|
||||||
|
|
||||||
void CEnvFunnel::__MAKE_VHOOK(Precache)()
|
void CEnvFunnel::__MAKE_VHOOK(Precache)()
|
||||||
{
|
{
|
||||||
@ -1891,7 +1891,7 @@ void CEnvBeverage::__MAKE_VHOOK(Precache)()
|
|||||||
PRECACHE_SOUND("weapons/g_bounce3.wav");
|
PRECACHE_SOUND("weapons/g_bounce3.wav");
|
||||||
}
|
}
|
||||||
|
|
||||||
LINK_ENTITY_TO_CLASS(env_beverage, CEnvBeverage);
|
LINK_ENTITY_TO_CLASS(env_beverage, CEnvBeverage, CCSEnvBeverage);
|
||||||
|
|
||||||
void CEnvBeverage::__MAKE_VHOOK(Use)(CBaseEntity *pActivator, CBaseEntity *pCaller, USE_TYPE useType, float value)
|
void CEnvBeverage::__MAKE_VHOOK(Use)(CBaseEntity *pActivator, CBaseEntity *pCaller, USE_TYPE useType, float value)
|
||||||
{
|
{
|
||||||
@ -1933,7 +1933,7 @@ void CItemSoda::__MAKE_VHOOK(Precache)()
|
|||||||
;
|
;
|
||||||
}
|
}
|
||||||
|
|
||||||
LINK_ENTITY_TO_CLASS(item_sodacan, CItemSoda);
|
LINK_ENTITY_TO_CLASS(item_sodacan, CItemSoda, CCSItemSoda);
|
||||||
|
|
||||||
void CItemSoda::__MAKE_VHOOK(Spawn)()
|
void CItemSoda::__MAKE_VHOOK(Spawn)()
|
||||||
{
|
{
|
||||||
|
@ -175,7 +175,7 @@ inline void *GET_PRIVATE(edict_t *pent)
|
|||||||
#define DELTA_FINDFIELD (*g_engfuncs.pfnDeltaFindField)
|
#define DELTA_FINDFIELD (*g_engfuncs.pfnDeltaFindField)
|
||||||
#define DELTA_SETBYINDEX (*g_engfuncs.pfnDeltaSetFieldByIndex)
|
#define DELTA_SETBYINDEX (*g_engfuncs.pfnDeltaSetFieldByIndex)
|
||||||
#define DELTA_UNSETBYINDEX (*g_engfuncs.pfnDeltaUnsetFieldByIndex)
|
#define DELTA_UNSETBYINDEX (*g_engfuncs.pfnDeltaUnsetFieldByIndex)
|
||||||
#define REMOVE_KEY_VALUE (*g_engfuncs.pfnInfo_RemoveKey)
|
#define REMOVE_KEY_VALUE (*g_engfuncs.pfnInfo_RemoveKey)
|
||||||
#define SET_PHYSICS_KEY_VALUE (*g_engfuncs.pfnSetPhysicsKeyValue)
|
#define SET_PHYSICS_KEY_VALUE (*g_engfuncs.pfnSetPhysicsKeyValue)
|
||||||
#define ENGINE_GETPHYSINFO (*g_engfuncs.pfnGetPhysicsInfoString)
|
#define ENGINE_GETPHYSINFO (*g_engfuncs.pfnGetPhysicsInfoString)
|
||||||
#define ENGINE_SETGROUPMASK (*g_engfuncs.pfnSetGroupMask)
|
#define ENGINE_SETGROUPMASK (*g_engfuncs.pfnSetGroupMask)
|
||||||
|
@ -13,7 +13,7 @@ TYPEDESCRIPTION CEnvExplosion::m_SaveData[] =
|
|||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
LINK_ENTITY_TO_CLASS(spark_shower, CShower);
|
LINK_ENTITY_TO_CLASS(spark_shower, CShower, CCSShower);
|
||||||
|
|
||||||
void CShower::__MAKE_VHOOK(Spawn)()
|
void CShower::__MAKE_VHOOK(Spawn)()
|
||||||
{
|
{
|
||||||
@ -68,7 +68,7 @@ void CShower::__MAKE_VHOOK(Touch)(CBaseEntity *pOther)
|
|||||||
}
|
}
|
||||||
|
|
||||||
IMPLEMENT_SAVERESTORE(CEnvExplosion, CBaseMonster);
|
IMPLEMENT_SAVERESTORE(CEnvExplosion, CBaseMonster);
|
||||||
LINK_ENTITY_TO_CLASS(env_explosion, CEnvExplosion);
|
LINK_ENTITY_TO_CLASS(env_explosion, CEnvExplosion, CCSEnvExplosion);
|
||||||
|
|
||||||
void CEnvExplosion::__MAKE_VHOOK(KeyValue)(KeyValueData *pkvd)
|
void CEnvExplosion::__MAKE_VHOOK(KeyValue)(KeyValueData *pkvd)
|
||||||
{
|
{
|
||||||
|
78
regamedll/dlls/extdef.h
Normal file
78
regamedll/dlls/extdef.h
Normal file
@ -0,0 +1,78 @@
|
|||||||
|
/*
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or modify it
|
||||||
|
* under the terms of the GNU General Public License as published by the
|
||||||
|
* Free Software Foundation; either version 2 of the License, or (at
|
||||||
|
* your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful, but
|
||||||
|
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
* General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program; if not, write to the Free Software Foundation,
|
||||||
|
* Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
*
|
||||||
|
* In addition, as a special exception, the author gives permission to
|
||||||
|
* link the code of this program with the Half-Life Game Engine ("HL
|
||||||
|
* Engine") and Modified Game Libraries ("MODs") developed by Valve,
|
||||||
|
* L.L.C ("Valve"). You must obey the GNU General Public License in all
|
||||||
|
* respects for all of the code used other than the HL Engine and MODs
|
||||||
|
* from Valve. If you modify this file, you may extend this exception
|
||||||
|
* to your version of the file, but you are not obligated to do so. If
|
||||||
|
* you do not wish to do so, delete this exception statement from your
|
||||||
|
* version.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
enum hash_types_e { CLASSNAME };
|
||||||
|
|
||||||
|
// Things that toggle (buttons/triggers/doors) need this
|
||||||
|
enum TOGGLE_STATE { TS_AT_TOP, TS_AT_BOTTOM, TS_GOING_UP, TS_GOING_DOWN };
|
||||||
|
|
||||||
|
typedef struct hash_item_s
|
||||||
|
{
|
||||||
|
entvars_t *pev;
|
||||||
|
struct hash_item_s *next;
|
||||||
|
struct hash_item_s *lastHash;
|
||||||
|
int pevIndex;
|
||||||
|
|
||||||
|
} hash_item_t;
|
||||||
|
|
||||||
|
typedef struct locksounds
|
||||||
|
{
|
||||||
|
string_t sLockedSound;
|
||||||
|
string_t sLockedSentence;
|
||||||
|
string_t sUnlockedSound;
|
||||||
|
string_t sUnlockedSentence;
|
||||||
|
int iLockedSentence;
|
||||||
|
int iUnlockedSentence;
|
||||||
|
float flwaitSound;
|
||||||
|
float flwaitSentence;
|
||||||
|
BYTE bEOFLocked;
|
||||||
|
BYTE bEOFUnlocked;
|
||||||
|
|
||||||
|
} locksound_t;
|
||||||
|
|
||||||
|
typedef struct hudtextparms_s
|
||||||
|
{
|
||||||
|
float x;
|
||||||
|
float y;
|
||||||
|
int effect;
|
||||||
|
byte r1,g1,b1,a1;
|
||||||
|
byte r2,g2,b2,a2;
|
||||||
|
float fadeinTime;
|
||||||
|
float fadeoutTime;
|
||||||
|
float holdTime;
|
||||||
|
float fxTime;
|
||||||
|
int channel;
|
||||||
|
|
||||||
|
} hudtextparms_t;
|
||||||
|
|
||||||
|
enum USE_TYPE { USE_OFF, USE_ON, USE_SET, USE_TOGGLE };
|
||||||
|
enum TRAIN_CODE { TRAIN_SAFE, TRAIN_BLOCKING, TRAIN_FOLLOWING };
|
||||||
|
enum IGNORE_MONSTERS { ignore_monsters = 1, dont_ignore_monsters = 0, missile = 2 };
|
||||||
|
enum IGNORE_GLASS { ignore_glass = 1, dont_ignore_glass = 0 };
|
||||||
|
enum { point_hull = 0, human_hull = 1, large_hull = 2, head_hull = 3 };
|
@ -169,7 +169,7 @@ void CBreakable::__MAKE_VHOOK(KeyValue)(KeyValueData *pkvd)
|
|||||||
CBaseDelay::KeyValue(pkvd);
|
CBaseDelay::KeyValue(pkvd);
|
||||||
}
|
}
|
||||||
|
|
||||||
LINK_ENTITY_TO_CLASS(func_breakable, CBreakable);
|
LINK_ENTITY_TO_CLASS(func_breakable, CBreakable, CCSBreakable);
|
||||||
IMPLEMENT_SAVERESTORE(CBreakable, CBaseEntity);
|
IMPLEMENT_SAVERESTORE(CBreakable, CBaseEntity);
|
||||||
|
|
||||||
void CBreakable::__MAKE_VHOOK(Spawn)()
|
void CBreakable::__MAKE_VHOOK(Spawn)()
|
||||||
@ -848,7 +848,7 @@ int CBreakable::__MAKE_VHOOK(DamageDecal)(int bitsDamageType)
|
|||||||
return CBaseEntity::DamageDecal(bitsDamageType);
|
return CBaseEntity::DamageDecal(bitsDamageType);
|
||||||
}
|
}
|
||||||
|
|
||||||
LINK_ENTITY_TO_CLASS(func_pushable, CPushable);
|
LINK_ENTITY_TO_CLASS(func_pushable, CPushable, CCSPushable);
|
||||||
IMPLEMENT_SAVERESTORE(CPushable, CBreakable);
|
IMPLEMENT_SAVERESTORE(CPushable, CBreakable);
|
||||||
|
|
||||||
void CPushable::__MAKE_VHOOK(Spawn)()
|
void CPushable::__MAKE_VHOOK(Spawn)()
|
||||||
|
@ -37,7 +37,7 @@
|
|||||||
|
|
||||||
// func breakable
|
// func breakable
|
||||||
#define SF_BREAK_TRIGGER_ONLY 1 // may only be broken by trigger
|
#define SF_BREAK_TRIGGER_ONLY 1 // may only be broken by trigger
|
||||||
#define SF_BREAK_TOUCH 2 // can be 'crashed through' by running player (plate glass)
|
#define SF_BREAK_TOUCH 2 // can be 'crashed through' by running player (plate glass)
|
||||||
#define SF_BREAK_PRESSURE 4 // can be broken by a player standing on it
|
#define SF_BREAK_PRESSURE 4 // can be broken by a player standing on it
|
||||||
#define SF_BREAK_CROWBAR 256 // instant break if hit with crowbar
|
#define SF_BREAK_CROWBAR 256 // instant break if hit with crowbar
|
||||||
|
|
||||||
|
@ -654,7 +654,7 @@ void CFuncTank::StopRotSound()
|
|||||||
pev->spawnflags &= ~SF_TANK_SOUNDON;
|
pev->spawnflags &= ~SF_TANK_SOUNDON;
|
||||||
}
|
}
|
||||||
|
|
||||||
LINK_ENTITY_TO_CLASS(func_tank, CFuncTankGun);
|
LINK_ENTITY_TO_CLASS(func_tank, CFuncTankGun, CCSFuncTankGun);
|
||||||
|
|
||||||
void CFuncTankGun::__MAKE_VHOOK(Fire)(const Vector &barrelEnd, const Vector &forward, entvars_t *pevAttacker)
|
void CFuncTankGun::__MAKE_VHOOK(Fire)(const Vector &barrelEnd, const Vector &forward, entvars_t *pevAttacker)
|
||||||
{
|
{
|
||||||
@ -693,7 +693,7 @@ void CFuncTankGun::__MAKE_VHOOK(Fire)(const Vector &barrelEnd, const Vector &for
|
|||||||
CFuncTank::Fire(barrelEnd, forward, pevAttacker);
|
CFuncTank::Fire(barrelEnd, forward, pevAttacker);
|
||||||
}
|
}
|
||||||
|
|
||||||
LINK_ENTITY_TO_CLASS(func_tanklaser, CFuncTankLaser);
|
LINK_ENTITY_TO_CLASS(func_tanklaser, CFuncTankLaser, CCSFuncTankLaser);
|
||||||
IMPLEMENT_SAVERESTORE(CFuncTankLaser, CFuncTank);
|
IMPLEMENT_SAVERESTORE(CFuncTankLaser, CFuncTank);
|
||||||
|
|
||||||
void CFuncTankLaser::__MAKE_VHOOK(Activate)()
|
void CFuncTankLaser::__MAKE_VHOOK(Activate)()
|
||||||
@ -789,7 +789,7 @@ void CFuncTankLaser::__MAKE_VHOOK(Fire)(const Vector &barrelEnd, const Vector &f
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
LINK_ENTITY_TO_CLASS(func_tankrocket, CFuncTankRocket);
|
LINK_ENTITY_TO_CLASS(func_tankrocket, CFuncTankRocket, CCSFuncTankRocket);
|
||||||
|
|
||||||
void CFuncTankRocket::__MAKE_VHOOK(Precache)()
|
void CFuncTankRocket::__MAKE_VHOOK(Precache)()
|
||||||
{
|
{
|
||||||
@ -819,7 +819,7 @@ void CFuncTankRocket::__MAKE_VHOOK(Fire)(const Vector &barrelEnd, const Vector &
|
|||||||
CFuncTank::Fire(barrelEnd, forward, pev);
|
CFuncTank::Fire(barrelEnd, forward, pev);
|
||||||
}
|
}
|
||||||
|
|
||||||
LINK_ENTITY_TO_CLASS(func_tankmortar, CFuncTankMortar);
|
LINK_ENTITY_TO_CLASS(func_tankmortar, CFuncTankMortar, CCSFuncTankMortar);
|
||||||
|
|
||||||
void CFuncTankMortar::__MAKE_VHOOK(KeyValue)(KeyValueData *pkvd)
|
void CFuncTankMortar::__MAKE_VHOOK(KeyValue)(KeyValueData *pkvd)
|
||||||
{
|
{
|
||||||
@ -847,9 +847,7 @@ void CFuncTankMortar::__MAKE_VHOOK(Fire)(const Vector &barrelEnd, const Vector &
|
|||||||
UTIL_MakeAimVectors(pev->angles);
|
UTIL_MakeAimVectors(pev->angles);
|
||||||
|
|
||||||
TankTrace(barrelEnd, forward, gTankSpread[m_spread], tr);
|
TankTrace(barrelEnd, forward, gTankSpread[m_spread], tr);
|
||||||
|
|
||||||
ExplosionCreate(tr.vecEndPos, pev->angles, edict(), pev->impulse, TRUE);
|
ExplosionCreate(tr.vecEndPos, pev->angles, edict(), pev->impulse, TRUE);
|
||||||
|
|
||||||
CFuncTank::Fire(barrelEnd, forward, pev);
|
CFuncTank::Fire(barrelEnd, forward, pev);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -857,7 +855,7 @@ void CFuncTankMortar::__MAKE_VHOOK(Fire)(const Vector &barrelEnd, const Vector &
|
|||||||
CFuncTank::Fire(barrelEnd, forward, pev);
|
CFuncTank::Fire(barrelEnd, forward, pev);
|
||||||
}
|
}
|
||||||
|
|
||||||
LINK_ENTITY_TO_CLASS(func_tankcontrols, CFuncTankControls);
|
LINK_ENTITY_TO_CLASS(func_tankcontrols, CFuncTankControls, CCSFuncTankControls);
|
||||||
IMPLEMENT_SAVERESTORE(CFuncTankControls, CBaseEntity);
|
IMPLEMENT_SAVERESTORE(CFuncTankControls, CBaseEntity);
|
||||||
|
|
||||||
void CFuncTankControls::__MAKE_VHOOK(Use)(CBaseEntity *pActivator, CBaseEntity *pCaller, USE_TYPE useType, float value)
|
void CFuncTankControls::__MAKE_VHOOK(Use)(CBaseEntity *pActivator, CBaseEntity *pCaller, USE_TYPE useType, float value)
|
||||||
|
@ -162,9 +162,7 @@ public:
|
|||||||
virtual void Fire(const Vector &barrelEnd, const Vector &forward, entvars_t *pevAttacker);
|
virtual void Fire(const Vector &barrelEnd, const Vector &forward, entvars_t *pevAttacker);
|
||||||
|
|
||||||
#ifdef HOOK_GAMEDLL
|
#ifdef HOOK_GAMEDLL
|
||||||
|
|
||||||
void Fire_(const Vector &barrelEnd, const Vector &forward, entvars_t *pevAttacker);
|
void Fire_(const Vector &barrelEnd, const Vector &forward, entvars_t *pevAttacker);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
};
|
};
|
||||||
@ -252,7 +250,6 @@ public:
|
|||||||
|
|
||||||
public:
|
public:
|
||||||
static TYPEDESCRIPTION IMPL(m_SaveData)[1];
|
static TYPEDESCRIPTION IMPL(m_SaveData)[1];
|
||||||
|
|
||||||
CFuncTank *m_pTank;
|
CFuncTank *m_pTank;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -95,9 +95,12 @@ cvar_t sk_scientist_heal3 = { "sk_scientist_heal3", "0", 0, 0.0f, NULL };
|
|||||||
|
|
||||||
#ifdef REGAMEDLL_ADD
|
#ifdef REGAMEDLL_ADD
|
||||||
|
|
||||||
cvar_t game_version = { "game_version", APP_VERSION_STRD, FCVAR_SERVER, 0.0f, NULL };
|
cvar_t game_version = { "game_version", APP_VERSION_STRD, FCVAR_SERVER, 0.0f, nullptr };
|
||||||
cvar_t maxmoney = { "mp_maxmoney", "16000", FCVAR_SERVER, 0.0f, NULL };
|
cvar_t maxmoney = { "mp_maxmoney", "16000", FCVAR_SERVER, 0.0f, nullptr };
|
||||||
cvar_t round_infinite = { "mp_round_infinite", "0", FCVAR_SERVER, 0.0f, NULL };
|
cvar_t round_infinite = { "mp_round_infinite", "0", FCVAR_SERVER, 0.0f, nullptr };
|
||||||
|
cvar_t hegrenade_penetration = { "mp_hegrenade_penetration", "0", 0, 0.0f, nullptr };
|
||||||
|
cvar_t nadedrops = { "mp_nadedrops", "0", 0, 0.0f, nullptr };
|
||||||
|
cvar_t roundrespawn_time = { "mp_roundrespawn_time", "20", 0, 20.0f, nullptr };
|
||||||
|
|
||||||
void GameDLL_Version_f()
|
void GameDLL_Version_f()
|
||||||
{
|
{
|
||||||
@ -222,6 +225,9 @@ void EXT_FUNC GameDLLInit()
|
|||||||
CVAR_REGISTER(&game_version);
|
CVAR_REGISTER(&game_version);
|
||||||
CVAR_REGISTER(&maxmoney);
|
CVAR_REGISTER(&maxmoney);
|
||||||
CVAR_REGISTER(&round_infinite);
|
CVAR_REGISTER(&round_infinite);
|
||||||
|
CVAR_REGISTER(&hegrenade_penetration);
|
||||||
|
CVAR_REGISTER(&nadedrops);
|
||||||
|
CVAR_REGISTER(&roundrespawn_time);
|
||||||
|
|
||||||
// print version
|
// print version
|
||||||
CONSOLE_ECHO("ReGameDLL build: " __TIME__ " " __DATE__ " (" APP_VERSION_STRD ")\n");
|
CONSOLE_ECHO("ReGameDLL build: " __TIME__ " " __DATE__ " (" APP_VERSION_STRD ")\n");
|
||||||
@ -233,3 +239,8 @@ void EXT_FUNC GameDLLInit()
|
|||||||
Tutor_RegisterCVars();
|
Tutor_RegisterCVars();
|
||||||
Hostage_RegisterCVars();
|
Hostage_RegisterCVars();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void EXT_FUNC GameDLLShutdown()
|
||||||
|
{
|
||||||
|
Regamedll_FreeEntities();
|
||||||
|
}
|
||||||
|
@ -135,9 +135,13 @@ extern cvar_t sk_scientist_heal3;
|
|||||||
|
|
||||||
extern cvar_t maxmoney;
|
extern cvar_t maxmoney;
|
||||||
extern cvar_t round_infinite;
|
extern cvar_t round_infinite;
|
||||||
|
extern cvar_t hegrenade_penetration;
|
||||||
|
extern cvar_t nadedrops;
|
||||||
|
extern cvar_t roundrespawn_time;
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
void GameDLLInit();
|
void GameDLLInit();
|
||||||
|
void GameDLLShutdown();
|
||||||
|
|
||||||
#endif // GAME_H
|
#endif // GAME_H
|
||||||
|
@ -113,7 +113,9 @@ void CGameRules::__MAKE_VHOOK(RefreshSkillData)()
|
|||||||
gSkillData.healthkitCapacity = 15;
|
gSkillData.healthkitCapacity = 15;
|
||||||
}
|
}
|
||||||
|
|
||||||
CGameRules *InstallGameRules()
|
LINK_HOOK_CHAIN2(CGameRules *, InstallGameRules);
|
||||||
|
|
||||||
|
CGameRules *__API_HOOK(InstallGameRules)()
|
||||||
{
|
{
|
||||||
SERVER_COMMAND("exec game.cfg\n");
|
SERVER_COMMAND("exec game.cfg\n");
|
||||||
SERVER_EXECUTE();
|
SERVER_EXECUTE();
|
||||||
|
@ -34,8 +34,6 @@
|
|||||||
|
|
||||||
#include "game_shared/voice_gamemgr.h"
|
#include "game_shared/voice_gamemgr.h"
|
||||||
|
|
||||||
#define COM_TOKEN_LEN 1500
|
|
||||||
|
|
||||||
#define MAX_RULE_BUFFER 1024
|
#define MAX_RULE_BUFFER 1024
|
||||||
#define MAX_VOTE_MAPS 100
|
#define MAX_VOTE_MAPS 100
|
||||||
#define MAX_VIP_QUEUES 5
|
#define MAX_VIP_QUEUES 5
|
||||||
@ -52,6 +50,7 @@
|
|||||||
#define ITEM_RESPAWN_TIME 30
|
#define ITEM_RESPAWN_TIME 30
|
||||||
#define WEAPON_RESPAWN_TIME 20
|
#define WEAPON_RESPAWN_TIME 20
|
||||||
#define AMMO_RESPAWN_TIME 20
|
#define AMMO_RESPAWN_TIME 20
|
||||||
|
#define ROUND_RESPAWN_TIME 20
|
||||||
|
|
||||||
// longest the intermission can last, in seconds
|
// longest the intermission can last, in seconds
|
||||||
#define MAX_INTERMISSION_TIME 120
|
#define MAX_INTERMISSION_TIME 120
|
||||||
@ -64,7 +63,7 @@
|
|||||||
#define MAX_MOTD_LENGTH 1536 // (MAX_MOTD_CHUNK * 4)
|
#define MAX_MOTD_LENGTH 1536 // (MAX_MOTD_CHUNK * 4)
|
||||||
|
|
||||||
// custom enum
|
// custom enum
|
||||||
#define WINNER_NONE 0
|
#define WINNER_NONE 0
|
||||||
#define WINNER_DRAW 1
|
#define WINNER_DRAW 1
|
||||||
|
|
||||||
enum
|
enum
|
||||||
@ -76,9 +75,10 @@ enum
|
|||||||
|
|
||||||
// custom enum
|
// custom enum
|
||||||
// used for EndRoundMessage() logged messages
|
// used for EndRoundMessage() logged messages
|
||||||
enum ScenarionEventEndRound
|
enum ScenarioEventEndRound
|
||||||
{
|
{
|
||||||
ROUND_TARGET_BOMB = 1,
|
ROUND_NONE,
|
||||||
|
ROUND_TARGET_BOMB,
|
||||||
ROUND_VIP_ESCAPED,
|
ROUND_VIP_ESCAPED,
|
||||||
ROUND_VIP_ASSASSINATED,
|
ROUND_VIP_ASSASSINATED,
|
||||||
ROUND_TERRORISTS_ESCAPED,
|
ROUND_TERRORISTS_ESCAPED,
|
||||||
@ -502,21 +502,44 @@ public:
|
|||||||
public:
|
public:
|
||||||
// Checks if it still needs players to start a round, or if it has enough players to start rounds.
|
// Checks if it still needs players to start a round, or if it has enough players to start rounds.
|
||||||
// Starts a round and returns true if there are enough players.
|
// Starts a round and returns true if there are enough players.
|
||||||
bool NeededPlayersCheck(bool &bNeededPlayers);
|
bool NeededPlayersCheck();
|
||||||
|
|
||||||
// Setup counts for m_iNumTerrorist, m_iNumCT, m_iNumSpawnableTerrorist, m_iNumSpawnableCT, etc.
|
// Setup counts for m_iNumTerrorist, m_iNumCT, m_iNumSpawnableTerrorist, m_iNumSpawnableCT, etc.
|
||||||
void InitializePlayerCounts(int &NumAliveTerrorist, int &NumAliveCT, int &NumDeadTerrorist, int &NumDeadCT);
|
void InitializePlayerCounts(int &NumAliveTerrorist, int &NumAliveCT, int &NumDeadTerrorist, int &NumDeadCT);
|
||||||
|
|
||||||
// Check to see if the round is over for the various game types. Terminates the round
|
// Check to see if the round is over for the various game types. Terminates the round
|
||||||
// and returns true if the round should end.
|
// and returns true if the round should end.
|
||||||
bool PrisonRoundEndCheck(int NumAliveTerrorist, int NumAliveCT, int NumDeadTerrorist, int NumDeadCT, bool bNeededPlayers);
|
bool PrisonRoundEndCheck(int NumAliveTerrorist, int NumAliveCT, int NumDeadTerrorist, int NumDeadCT);
|
||||||
bool BombRoundEndCheck(bool bNeededPlayers);
|
bool BombRoundEndCheck();
|
||||||
bool HostageRescueRoundEndCheck(bool bNeededPlayers);
|
bool HostageRescueRoundEndCheck();
|
||||||
bool VIPRoundEndCheck(bool bNeededPlayers);
|
bool VIPRoundEndCheck();
|
||||||
|
|
||||||
// Check to see if the teams exterminated each other. Ends the round and returns true if so.
|
// Check to see if the teams exterminated each other. Ends the round and returns true if so.
|
||||||
bool TeamExterminationCheck(int NumAliveTerrorist, int NumAliveCT, int NumDeadTerrorist, int NumDeadCT, bool bNeededPlayers);
|
bool TeamExterminationCheck(int NumAliveTerrorist, int NumAliveCT, int NumDeadTerrorist, int NumDeadCT);
|
||||||
void TerminateRound(float tmDelay, int iWinStatus);
|
|
||||||
|
// for internal functions API
|
||||||
|
bool NeededPlayersCheck_internal(int winStatus, ScenarioEventEndRound event, float tmDelay);
|
||||||
|
|
||||||
|
bool VIP_Escaped_internal(int winStatus, ScenarioEventEndRound event, float tmDelay);
|
||||||
|
bool VIP_Died_internal(int winStatus, ScenarioEventEndRound event, float tmDelay);
|
||||||
|
bool VIP_NotEscaped_internal(int winStatus, ScenarioEventEndRound event, float tmDelay);
|
||||||
|
|
||||||
|
bool Prison_Escaped_internal(int winStatus, ScenarioEventEndRound event, float tmDelay);
|
||||||
|
bool Prison_PreventEscape_internal(int winStatus, ScenarioEventEndRound event, float tmDelay);
|
||||||
|
bool Prison_NotEscaped_internal(int winStatus, ScenarioEventEndRound event, float tmDelay);
|
||||||
|
bool Prison_Neutralized_internal(int winStatus, ScenarioEventEndRound event, float tmDelay);
|
||||||
|
|
||||||
|
bool Target_Bombed_internal(int winStatus, ScenarioEventEndRound event, float tmDelay);
|
||||||
|
bool Target_Saved_internal(int winStatus, ScenarioEventEndRound event, float tmDelay);
|
||||||
|
bool Target_Defused_internal(int winStatus, ScenarioEventEndRound event, float tmDelay);
|
||||||
|
|
||||||
|
// Team extermination
|
||||||
|
bool Round_Cts_internal(int winStatus, ScenarioEventEndRound event, float tmDelay);
|
||||||
|
bool Round_Ts_internal(int winStatus, ScenarioEventEndRound event, float tmDelay);
|
||||||
|
bool Round_Draw_internal(int winStatus, ScenarioEventEndRound event, float tmDelay);
|
||||||
|
|
||||||
|
bool Hostage_Rescue_internal(int winStatus, ScenarioEventEndRound event, float tmDelay);
|
||||||
|
bool Hostage_NotRescued_internal(int winStatus, ScenarioEventEndRound event, float tmDelay);
|
||||||
|
|
||||||
// Check various conditions to end the map.
|
// Check various conditions to end the map.
|
||||||
bool CheckGameOver();
|
bool CheckGameOver();
|
||||||
@ -563,6 +586,40 @@ public:
|
|||||||
bool IsMatchStarted() { return (m_fTeamCount != 0.0f || m_fCareerRoundMenuTime != 0.0f || m_fCareerMatchMenuTime != 0.0f); }
|
bool IsMatchStarted() { return (m_fTeamCount != 0.0f || m_fCareerRoundMenuTime != 0.0f || m_fCareerMatchMenuTime != 0.0f); }
|
||||||
void SendMOTDToClient(edict_t *client);
|
void SendMOTDToClient(edict_t *client);
|
||||||
|
|
||||||
|
inline void TerminateRound(float tmDelay, int iWinStatus)
|
||||||
|
{
|
||||||
|
m_iRoundWinStatus = iWinStatus;
|
||||||
|
m_fTeamCount = gpGlobals->time + tmDelay;
|
||||||
|
m_bRoundTerminating = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
inline float GetRoundRespawnTime() const
|
||||||
|
{
|
||||||
|
#ifdef REGAMEDLL_ADD
|
||||||
|
return roundrespawn_time.value;
|
||||||
|
#else
|
||||||
|
return ROUND_RESPAWN_TIME;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
// allow the mode of fire on a friendly player (FFA)
|
||||||
|
inline bool IsFriendlyFireAttack() const
|
||||||
|
{
|
||||||
|
#ifdef REGAMEDLL_ADD
|
||||||
|
if (friendlyfire.string[0] == '2')
|
||||||
|
return true;
|
||||||
|
#endif
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
inline bool HasRoundInfinite(bool time_expired = false) const
|
||||||
|
{
|
||||||
|
#ifdef REGAMEDLL_ADD
|
||||||
|
if (round_infinite.string[0] == '1' || (time_expired && (UTIL_ReadFlags(round_infinite.string) & SCENARIO_BLOCK_TIME_EXPRIRED)))
|
||||||
|
return true;
|
||||||
|
#endif
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
bool HasRoundTimeExpired();
|
bool HasRoundTimeExpired();
|
||||||
bool IsBombPlanted();
|
bool IsBombPlanted();
|
||||||
@ -653,6 +710,10 @@ protected:
|
|||||||
int m_iRoundWinDifference;
|
int m_iRoundWinDifference;
|
||||||
float m_fCareerMatchMenuTime;
|
float m_fCareerMatchMenuTime;
|
||||||
bool m_bSkipSpawn;
|
bool m_bSkipSpawn;
|
||||||
|
|
||||||
|
// custom
|
||||||
|
bool m_bNeededPlayers;
|
||||||
|
float m_flEscapeRatio;
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef struct mapcycle_item_s
|
typedef struct mapcycle_item_s
|
||||||
@ -706,6 +767,7 @@ public:
|
|||||||
extern CGameRules *g_pGameRules;
|
extern CGameRules *g_pGameRules;
|
||||||
|
|
||||||
CGameRules *InstallGameRules();
|
CGameRules *InstallGameRules();
|
||||||
|
CGameRules *InstallGameRules_();
|
||||||
|
|
||||||
inline CHalfLifeMultiplay *CSGameRules()
|
inline CHalfLifeMultiplay *CSGameRules()
|
||||||
{
|
{
|
||||||
|
@ -26,7 +26,7 @@ TYPEDESCRIPTION CGrenade::m_SaveData[] =
|
|||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
LINK_ENTITY_TO_CLASS(grenade, CGrenade);
|
LINK_ENTITY_TO_CLASS(grenade, CGrenade, CCSGrenade);
|
||||||
|
|
||||||
void CGrenade::Explode(Vector vecSrc, Vector vecAim)
|
void CGrenade::Explode(Vector vecSrc, Vector vecAim)
|
||||||
{
|
{
|
||||||
@ -51,8 +51,10 @@ void CGrenade::Explode(TraceResult *pTrace, int bitsDamageType)
|
|||||||
}
|
}
|
||||||
|
|
||||||
int iContents = UTIL_PointContents(pev->origin);
|
int iContents = UTIL_PointContents(pev->origin);
|
||||||
CSoundEnt::InsertSound(bits_SOUND_COMBAT, pev->origin, NORMAL_EXPLOSION_VOLUME, 3);
|
|
||||||
|
|
||||||
|
#ifndef REGAMEDLL_FIXES
|
||||||
|
CSoundEnt::InsertSound(bits_SOUND_COMBAT, pev->origin, NORMAL_EXPLOSION_VOLUME, 3);
|
||||||
|
#endif
|
||||||
entvars_t *pevOwner = VARS(pev->owner);
|
entvars_t *pevOwner = VARS(pev->owner);
|
||||||
|
|
||||||
if (TheBots != NULL)
|
if (TheBots != NULL)
|
||||||
@ -166,8 +168,10 @@ void CGrenade::Explode2(TraceResult *pTrace, int bitsDamageType)
|
|||||||
|
|
||||||
// Sound! for everyone
|
// Sound! for everyone
|
||||||
EMIT_SOUND(ENT(pev), CHAN_WEAPON, "weapons/c4_explode1.wav", VOL_NORM, 0.25);
|
EMIT_SOUND(ENT(pev), CHAN_WEAPON, "weapons/c4_explode1.wav", VOL_NORM, 0.25);
|
||||||
CSoundEnt::InsertSound(bits_SOUND_COMBAT, pev->origin, NORMAL_EXPLOSION_VOLUME, 3);
|
|
||||||
|
|
||||||
|
#ifndef REGAMEDLL_FIXES
|
||||||
|
CSoundEnt::InsertSound(bits_SOUND_COMBAT, pev->origin, NORMAL_EXPLOSION_VOLUME, 3);
|
||||||
|
#endif
|
||||||
entvars_t *pevOwner = VARS(pev->owner);
|
entvars_t *pevOwner = VARS(pev->owner);
|
||||||
|
|
||||||
pev->owner = NULL;
|
pev->owner = NULL;
|
||||||
@ -257,8 +261,9 @@ void CGrenade::Explode3(TraceResult *pTrace, int bitsDamageType)
|
|||||||
WRITE_BYTE(TE_EXPLFLAG_NONE); // flags
|
WRITE_BYTE(TE_EXPLFLAG_NONE); // flags
|
||||||
MESSAGE_END();
|
MESSAGE_END();
|
||||||
|
|
||||||
|
#ifndef REGAMEDLL_FIXES
|
||||||
CSoundEnt::InsertSound(bits_SOUND_COMBAT, pev->origin, NORMAL_EXPLOSION_VOLUME, 3);
|
CSoundEnt::InsertSound(bits_SOUND_COMBAT, pev->origin, NORMAL_EXPLOSION_VOLUME, 3);
|
||||||
|
#endif
|
||||||
entvars_t *pevOwner = VARS(pev->owner);
|
entvars_t *pevOwner = VARS(pev->owner);
|
||||||
|
|
||||||
if (TheBots != NULL)
|
if (TheBots != NULL)
|
||||||
@ -310,7 +315,10 @@ NOXREF void CGrenade::SG_Explode(TraceResult *pTrace, int bitsDamageType)
|
|||||||
}
|
}
|
||||||
|
|
||||||
int iContents = UTIL_PointContents(pev->origin);
|
int iContents = UTIL_PointContents(pev->origin);
|
||||||
|
|
||||||
|
#ifndef REGAMEDLL_FIXES
|
||||||
CSoundEnt::InsertSound(bits_SOUND_COMBAT, pev->origin, NORMAL_EXPLOSION_VOLUME, 3);
|
CSoundEnt::InsertSound(bits_SOUND_COMBAT, pev->origin, NORMAL_EXPLOSION_VOLUME, 3);
|
||||||
|
#endif
|
||||||
|
|
||||||
// can't traceline attack owner if this is set
|
// can't traceline attack owner if this is set
|
||||||
pev->owner = NULL;
|
pev->owner = NULL;
|
||||||
@ -517,7 +525,9 @@ void CGrenade::DetonateUse(CBaseEntity *pActivator, CBaseEntity *pCaller, USE_TY
|
|||||||
|
|
||||||
void CGrenade::PreDetonate()
|
void CGrenade::PreDetonate()
|
||||||
{
|
{
|
||||||
|
#ifndef REGAMEDLL_FIXES
|
||||||
CSoundEnt::InsertSound(bits_SOUND_DANGER, pev->origin, 400, 0.3);
|
CSoundEnt::InsertSound(bits_SOUND_DANGER, pev->origin, 400, 0.3);
|
||||||
|
#endif
|
||||||
|
|
||||||
SetThink(&CGrenade::Detonate);
|
SetThink(&CGrenade::Detonate);
|
||||||
pev->nextthink = gpGlobals->time + 1.0f;
|
pev->nextthink = gpGlobals->time + 1.0f;
|
||||||
@ -626,7 +636,9 @@ void CGrenade::DangerSoundThink()
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifndef REGAMEDLL_FIXES
|
||||||
CSoundEnt::InsertSound(bits_SOUND_DANGER, pev->origin + pev->velocity * 0.5, pev->velocity.Length(), 0.2);
|
CSoundEnt::InsertSound(bits_SOUND_DANGER, pev->origin + pev->velocity * 0.5, pev->velocity.Length(), 0.2);
|
||||||
|
#endif
|
||||||
pev->nextthink = gpGlobals->time + 0.2f;
|
pev->nextthink = gpGlobals->time + 0.2f;
|
||||||
|
|
||||||
if (pev->waterlevel != 0)
|
if (pev->waterlevel != 0)
|
||||||
@ -655,6 +667,7 @@ void CGrenade::BounceTouch(CBaseEntity *pOther)
|
|||||||
vecTestVelocity = pev->velocity;
|
vecTestVelocity = pev->velocity;
|
||||||
vecTestVelocity.z *= 0.7f;
|
vecTestVelocity.z *= 0.7f;
|
||||||
|
|
||||||
|
#ifndef REGAMEDLL_FIXES
|
||||||
if (!m_fRegisteredSound && vecTestVelocity.Length() <= 60.0f)
|
if (!m_fRegisteredSound && vecTestVelocity.Length() <= 60.0f)
|
||||||
{
|
{
|
||||||
// grenade is moving really slow. It's probably very close to where it will ultimately stop moving.
|
// grenade is moving really slow. It's probably very close to where it will ultimately stop moving.
|
||||||
@ -664,7 +677,7 @@ void CGrenade::BounceTouch(CBaseEntity *pOther)
|
|||||||
CSoundEnt::InsertSound(bits_SOUND_DANGER, pev->origin, pev->dmg / 0.4f, 0.3);
|
CSoundEnt::InsertSound(bits_SOUND_DANGER, pev->origin, pev->dmg / 0.4f, 0.3);
|
||||||
m_fRegisteredSound = TRUE;
|
m_fRegisteredSound = TRUE;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
if (pev->flags & FL_ONGROUND)
|
if (pev->flags & FL_ONGROUND)
|
||||||
{
|
{
|
||||||
// add a bit of static friction
|
// add a bit of static friction
|
||||||
@ -745,10 +758,12 @@ void CGrenade::TumbleThink()
|
|||||||
StudioFrameAdvance();
|
StudioFrameAdvance();
|
||||||
pev->nextthink = gpGlobals->time + 0.1f;
|
pev->nextthink = gpGlobals->time + 0.1f;
|
||||||
|
|
||||||
|
#ifndef REGAMEDLL_FIXES
|
||||||
if (pev->dmgtime - 1 < gpGlobals->time)
|
if (pev->dmgtime - 1 < gpGlobals->time)
|
||||||
{
|
{
|
||||||
CSoundEnt::InsertSound(bits_SOUND_DANGER, pev->origin + pev->velocity * (pev->dmgtime - gpGlobals->time), 400, 0.1);
|
CSoundEnt::InsertSound(bits_SOUND_DANGER, pev->origin + pev->velocity * (pev->dmgtime - gpGlobals->time), 400, 0.1);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
if (pev->dmgtime <= gpGlobals->time)
|
if (pev->dmgtime <= gpGlobals->time)
|
||||||
{
|
{
|
||||||
@ -783,10 +798,12 @@ void CGrenade::SG_TumbleThink()
|
|||||||
StudioFrameAdvance();
|
StudioFrameAdvance();
|
||||||
pev->nextthink = gpGlobals->time + 0.1f;
|
pev->nextthink = gpGlobals->time + 0.1f;
|
||||||
|
|
||||||
|
#ifndef REGAMEDLL_FIXES
|
||||||
if (pev->dmgtime - 1 < gpGlobals->time)
|
if (pev->dmgtime - 1 < gpGlobals->time)
|
||||||
{
|
{
|
||||||
CSoundEnt::InsertSound(bits_SOUND_DANGER, pev->origin + pev->velocity * (pev->dmgtime - gpGlobals->time), 400, 0.1);
|
CSoundEnt::InsertSound(bits_SOUND_DANGER, pev->origin + pev->velocity * (pev->dmgtime - gpGlobals->time), 400, 0.1);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
if (pev->dmgtime <= gpGlobals->time)
|
if (pev->dmgtime <= gpGlobals->time)
|
||||||
{
|
{
|
||||||
@ -822,7 +839,7 @@ void CGrenade::__MAKE_VHOOK(Spawn)()
|
|||||||
|
|
||||||
NOXREF CGrenade *CGrenade::ShootContact(entvars_t *pevOwner, Vector vecStart, Vector vecVelocity)
|
NOXREF CGrenade *CGrenade::ShootContact(entvars_t *pevOwner, Vector vecStart, Vector vecVelocity)
|
||||||
{
|
{
|
||||||
CGrenade *pGrenade = GetClassPtr((CGrenade *)NULL);
|
CGrenade *pGrenade = GetClassPtr<CCSGrenade>((CGrenade *)NULL);
|
||||||
pGrenade->Spawn();
|
pGrenade->Spawn();
|
||||||
|
|
||||||
// contact grenades arc lower
|
// contact grenades arc lower
|
||||||
@ -850,7 +867,7 @@ NOXREF CGrenade *CGrenade::ShootContact(entvars_t *pevOwner, Vector vecStart, Ve
|
|||||||
|
|
||||||
CGrenade *CGrenade::ShootTimed2(entvars_t *pevOwner, Vector vecStart, Vector vecVelocity, float time, int iTeam, unsigned short usEvent)
|
CGrenade *CGrenade::ShootTimed2(entvars_t *pevOwner, Vector vecStart, Vector vecVelocity, float time, int iTeam, unsigned short usEvent)
|
||||||
{
|
{
|
||||||
CGrenade *pGrenade = GetClassPtr((CGrenade *)NULL);
|
CGrenade *pGrenade = GetClassPtr<CCSGrenade>((CGrenade *)NULL);
|
||||||
pGrenade->Spawn();
|
pGrenade->Spawn();
|
||||||
|
|
||||||
UTIL_SetOrigin(pGrenade->pev, vecStart);
|
UTIL_SetOrigin(pGrenade->pev, vecStart);
|
||||||
@ -884,7 +901,7 @@ CGrenade *CGrenade::ShootTimed2(entvars_t *pevOwner, Vector vecStart, Vector vec
|
|||||||
|
|
||||||
CGrenade *CGrenade::ShootTimed(entvars_t *pevOwner, Vector vecStart, Vector vecVelocity, float time)
|
CGrenade *CGrenade::ShootTimed(entvars_t *pevOwner, Vector vecStart, Vector vecVelocity, float time)
|
||||||
{
|
{
|
||||||
CGrenade *pGrenade = GetClassPtr((CGrenade *)NULL);
|
CGrenade *pGrenade = GetClassPtr<CCSGrenade>((CGrenade *)NULL);
|
||||||
pGrenade->Spawn();
|
pGrenade->Spawn();
|
||||||
|
|
||||||
UTIL_SetOrigin(pGrenade->pev, vecStart);
|
UTIL_SetOrigin(pGrenade->pev, vecStart);
|
||||||
@ -928,7 +945,7 @@ void CGrenade::__MAKE_VHOOK(Use)(CBaseEntity *pActivator, CBaseEntity *pCaller,
|
|||||||
if (!m_bIsC4)
|
if (!m_bIsC4)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
CBasePlayer *player = GetClassPtr((CBasePlayer *)pActivator->pev);
|
CBasePlayer *player = GetClassPtr<CCSPlayer>((CBasePlayer *)pActivator->pev);
|
||||||
|
|
||||||
// For CTs to defuse the c4
|
// For CTs to defuse the c4
|
||||||
if (player->m_iTeam != CT)
|
if (player->m_iTeam != CT)
|
||||||
@ -1002,7 +1019,7 @@ void CGrenade::__MAKE_VHOOK(Use)(CBaseEntity *pActivator, CBaseEntity *pCaller,
|
|||||||
|
|
||||||
CGrenade *CGrenade::ShootSatchelCharge(entvars_t *pevOwner, Vector vecStart, Vector vecAngles)
|
CGrenade *CGrenade::ShootSatchelCharge(entvars_t *pevOwner, Vector vecStart, Vector vecAngles)
|
||||||
{
|
{
|
||||||
CGrenade *pGrenade = GetClassPtr((CGrenade *)NULL);
|
CGrenade *pGrenade = GetClassPtr<CCSGrenade>((CGrenade *)NULL);
|
||||||
pGrenade->pev->movetype = MOVETYPE_TOSS;
|
pGrenade->pev->movetype = MOVETYPE_TOSS;
|
||||||
|
|
||||||
MAKE_STRING_CLASS("grenade", pGrenade->pev);
|
MAKE_STRING_CLASS("grenade", pGrenade->pev);
|
||||||
@ -1056,7 +1073,7 @@ CGrenade *CGrenade::ShootSatchelCharge(entvars_t *pevOwner, Vector vecStart, Vec
|
|||||||
|
|
||||||
CGrenade *CGrenade::ShootSmokeGrenade(entvars_t *pevOwner, Vector vecStart, Vector vecVelocity, float time, unsigned short usEvent)
|
CGrenade *CGrenade::ShootSmokeGrenade(entvars_t *pevOwner, Vector vecStart, Vector vecVelocity, float time, unsigned short usEvent)
|
||||||
{
|
{
|
||||||
CGrenade *pGrenade = GetClassPtr((CGrenade *)NULL);
|
CGrenade *pGrenade = GetClassPtr<CCSGrenade>((CGrenade *)NULL);
|
||||||
pGrenade->Spawn();
|
pGrenade->Spawn();
|
||||||
|
|
||||||
UTIL_SetOrigin(pGrenade->pev, vecStart);
|
UTIL_SetOrigin(pGrenade->pev, vecStart);
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
*/
|
*/
|
||||||
#ifndef HOOK_GAMEDLL
|
#ifndef HOOK_GAMEDLL
|
||||||
|
|
||||||
const Vector g_vecZero = Vector(0, 0, 0);
|
const Vector g_vecZero(0, 0, 0);
|
||||||
NOXREF u_long g_ulFrameCount = 0;
|
NOXREF u_long g_ulFrameCount = 0;
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -17,7 +17,7 @@ TYPEDESCRIPTION CRecharge::m_SaveData[] =
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
IMPLEMENT_SAVERESTORE(CRecharge, CBaseEntity);
|
IMPLEMENT_SAVERESTORE(CRecharge, CBaseEntity);
|
||||||
LINK_ENTITY_TO_CLASS(func_recharge, CRecharge);
|
LINK_ENTITY_TO_CLASS(func_recharge, CRecharge, CCSRecharge);
|
||||||
|
|
||||||
void CRecharge::__MAKE_VHOOK(KeyValue)(KeyValueData *pkvd)
|
void CRecharge::__MAKE_VHOOK(KeyValue)(KeyValueData *pkvd)
|
||||||
{
|
{
|
||||||
|
@ -31,8 +31,8 @@ void CGenericCycler::__MAKE_VHOOK(Spawn)()
|
|||||||
GenericCyclerSpawn((char *)STRING(pev->model), Vector(-16, -16, 0), Vector(16, 16, 72));
|
GenericCyclerSpawn((char *)STRING(pev->model), Vector(-16, -16, 0), Vector(16, 16, 72));
|
||||||
}
|
}
|
||||||
|
|
||||||
LINK_ENTITY_TO_CLASS(cycler, CGenericCycler);
|
LINK_ENTITY_TO_CLASS(cycler, CGenericCycler, CCSGenericCycler);
|
||||||
LINK_ENTITY_TO_CLASS(cycler_prdroid, CCyclerProbe);
|
LINK_ENTITY_TO_CLASS(cycler_prdroid, CCyclerProbe, CCSCyclerProbe);
|
||||||
|
|
||||||
void CCyclerProbe::__MAKE_VHOOK(Spawn)()
|
void CCyclerProbe::__MAKE_VHOOK(Spawn)()
|
||||||
{
|
{
|
||||||
@ -161,7 +161,7 @@ int CCycler::__MAKE_VHOOK(TakeDamage)(entvars_t *pevInflictor, entvars_t *pevAtt
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
LINK_ENTITY_TO_CLASS(cycler_sprite, CCyclerSprite);
|
LINK_ENTITY_TO_CLASS(cycler_sprite, CCyclerSprite, CCSCyclerSprite);
|
||||||
IMPLEMENT_SAVERESTORE(CCyclerSprite, CBaseEntity);
|
IMPLEMENT_SAVERESTORE(CCyclerSprite, CBaseEntity);
|
||||||
|
|
||||||
void CCyclerSprite::__MAKE_VHOOK(Spawn)()
|
void CCyclerSprite::__MAKE_VHOOK(Spawn)()
|
||||||
@ -242,7 +242,7 @@ void CCyclerSprite::Animate(float frames)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
LINK_ENTITY_TO_CLASS(cycler_weapon, CWeaponCycler);
|
LINK_ENTITY_TO_CLASS(cycler_weapon, CWeaponCycler, CCSWeaponCycler);
|
||||||
|
|
||||||
void CWeaponCycler::__MAKE_VHOOK(Spawn)()
|
void CWeaponCycler::__MAKE_VHOOK(Spawn)()
|
||||||
{
|
{
|
||||||
@ -303,7 +303,7 @@ void CWeaponCycler::__MAKE_VHOOK(SecondaryAttack)()
|
|||||||
}
|
}
|
||||||
|
|
||||||
IMPLEMENT_SAVERESTORE(CWreckage, CBaseToggle);
|
IMPLEMENT_SAVERESTORE(CWreckage, CBaseToggle);
|
||||||
LINK_ENTITY_TO_CLASS(cycler_wreckage, CWreckage);
|
LINK_ENTITY_TO_CLASS(cycler_wreckage, CWreckage, CCSWreckage);
|
||||||
|
|
||||||
void CWreckage::__MAKE_VHOOK(Spawn)()
|
void CWreckage::__MAKE_VHOOK(Spawn)()
|
||||||
{
|
{
|
||||||
|
@ -16,7 +16,7 @@ TYPEDESCRIPTION CWallHealth::m_SaveData[] =
|
|||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
LINK_ENTITY_TO_CLASS(item_healthkit, CHealthKit);
|
LINK_ENTITY_TO_CLASS(item_healthkit, CHealthKit, CCSHealthKit);
|
||||||
|
|
||||||
void CHealthKit::__MAKE_VHOOK(Spawn)()
|
void CHealthKit::__MAKE_VHOOK(Spawn)()
|
||||||
{
|
{
|
||||||
@ -54,7 +54,7 @@ BOOL CHealthKit::__MAKE_VHOOK(MyTouch)(CBasePlayer *pPlayer)
|
|||||||
}
|
}
|
||||||
|
|
||||||
IMPLEMENT_SAVERESTORE(CWallHealth, CBaseEntity);
|
IMPLEMENT_SAVERESTORE(CWallHealth, CBaseEntity);
|
||||||
LINK_ENTITY_TO_CLASS(func_healthcharger, CWallHealth);
|
LINK_ENTITY_TO_CLASS(func_healthcharger, CWallHealth, CCSWallHealth);
|
||||||
|
|
||||||
void CWallHealth::__MAKE_VHOOK(KeyValue)(KeyValueData *pkvd)
|
void CWallHealth::__MAKE_VHOOK(KeyValue)(KeyValueData *pkvd)
|
||||||
{
|
{
|
||||||
|
@ -13,8 +13,8 @@ int g_iHostageNumber = 0;
|
|||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
LINK_ENTITY_TO_CLASS(hostage_entity, CHostage);
|
LINK_ENTITY_TO_CLASS(hostage_entity, CHostage, CCSHostage);
|
||||||
LINK_ENTITY_TO_CLASS(monster_scientist, CHostage);
|
LINK_ENTITY_TO_CLASS(monster_scientist, CHostage, CCSHostage);
|
||||||
|
|
||||||
void CHostage::__MAKE_VHOOK(Spawn)()
|
void CHostage::__MAKE_VHOOK(Spawn)()
|
||||||
{
|
{
|
||||||
@ -229,7 +229,7 @@ void CHostage::IdleThink()
|
|||||||
player = (CBasePlayer *)m_improv->GetFollowLeader();
|
player = (CBasePlayer *)m_improv->GetFollowLeader();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
player = GetClassPtr((CBasePlayer *)m_hTargetEnt->pev);
|
player = GetClassPtr<CCSPlayer>((CBasePlayer *)m_hTargetEnt->pev);
|
||||||
|
|
||||||
if (player == NULL || player->m_iTeam == CT)
|
if (player == NULL || player->m_iTeam == CT)
|
||||||
{
|
{
|
||||||
@ -428,7 +428,7 @@ int CHostage::__MAKE_VHOOK(TakeDamage)(entvars_t *pevInflictor, entvars_t *pevAt
|
|||||||
|
|
||||||
if (pevAttacker != NULL)
|
if (pevAttacker != NULL)
|
||||||
{
|
{
|
||||||
CBaseEntity *pAttackingEnt = GetClassPtr((CBaseEntity *)pevAttacker);
|
CBaseEntity *pAttackingEnt = GetClassPtr<CCSEntity>((CBaseEntity *)pevAttacker);
|
||||||
|
|
||||||
if (pAttackingEnt->Classify() == CLASS_VEHICLE)
|
if (pAttackingEnt->Classify() == CLASS_VEHICLE)
|
||||||
{
|
{
|
||||||
@ -442,7 +442,7 @@ int CHostage::__MAKE_VHOOK(TakeDamage)(entvars_t *pevInflictor, entvars_t *pevAt
|
|||||||
|
|
||||||
if (pAttackingEnt->IsPlayer())
|
if (pAttackingEnt->IsPlayer())
|
||||||
{
|
{
|
||||||
pAttacker = GetClassPtr((CBasePlayer *)pevAttacker);
|
pAttacker = GetClassPtr<CCSPlayer>((CBasePlayer *)pevAttacker);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -820,7 +820,7 @@ void CHostage::DoFollow()
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
pFollowing = GetClassPtr((CBaseEntity *)m_hTargetEnt->pev);
|
pFollowing = GetClassPtr<CCSEntity>((CBaseEntity *)m_hTargetEnt->pev);
|
||||||
m_LocalNav->SetTargetEnt(pFollowing);
|
m_LocalNav->SetTargetEnt(pFollowing);
|
||||||
|
|
||||||
vecDest = pFollowing->pev->origin;
|
vecDest = pFollowing->pev->origin;
|
||||||
@ -913,7 +913,7 @@ void CHostage::MoveToward(const Vector &vecLoc)
|
|||||||
Vector vecAng;
|
Vector vecAng;
|
||||||
float_precision flDist;
|
float_precision flDist;
|
||||||
|
|
||||||
pFollowing = GetClassPtr((CBaseEntity *)m_hTargetEnt->pev);
|
pFollowing = GetClassPtr<CCSEntity>((CBaseEntity *)m_hTargetEnt->pev);
|
||||||
vecMove = vecLoc - pev->origin;
|
vecMove = vecLoc - pev->origin;
|
||||||
vecAng = UTIL_VecToAngles(vecMove);
|
vecAng = UTIL_VecToAngles(vecMove);
|
||||||
vecAng = Vector(0, vecAng.y, 0);
|
vecAng = Vector(0, vecAng.y, 0);
|
||||||
@ -976,7 +976,7 @@ void CHostage::NavReady()
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
pFollowing = GetClassPtr((CBaseEntity *)m_hTargetEnt->pev);
|
pFollowing = GetClassPtr<CCSEntity>((CBaseEntity *)m_hTargetEnt->pev);
|
||||||
vecDest = pFollowing->pev->origin;
|
vecDest = pFollowing->pev->origin;
|
||||||
|
|
||||||
if (!(pFollowing->pev->flags & FL_ONGROUND))
|
if (!(pFollowing->pev->flags & FL_ONGROUND))
|
||||||
@ -1035,7 +1035,7 @@ void CHostage::SendHostagePositionMsg()
|
|||||||
if (pEntity->pev->flags == FL_DORMANT)
|
if (pEntity->pev->flags == FL_DORMANT)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
CBasePlayer *pTempPlayer = GetClassPtr((CBasePlayer *)pEntity->pev);
|
CBasePlayer *pTempPlayer = GetClassPtr<CCSPlayer>((CBasePlayer *)pEntity->pev);
|
||||||
|
|
||||||
if (pTempPlayer->pev->deadflag == DEAD_NO && pTempPlayer->m_iTeam == CT)
|
if (pTempPlayer->pev->deadflag == DEAD_NO && pTempPlayer->m_iTeam == CT)
|
||||||
{
|
{
|
||||||
@ -1065,7 +1065,7 @@ void CHostage::SendHostageEventMsg()
|
|||||||
if (pEntity->pev->flags == FL_DORMANT)
|
if (pEntity->pev->flags == FL_DORMANT)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
CBasePlayer *pTempPlayer = GetClassPtr((CBasePlayer *)pEntity->pev);
|
CBasePlayer *pTempPlayer = GetClassPtr<CCSPlayer>((CBasePlayer *)pEntity->pev);
|
||||||
|
|
||||||
if (pTempPlayer->pev->deadflag == DEAD_NO && pTempPlayer->m_iTeam == CT)
|
if (pTempPlayer->pev->deadflag == DEAD_NO && pTempPlayer->m_iTeam == CT)
|
||||||
{
|
{
|
||||||
@ -1082,7 +1082,7 @@ void CHostage::SendHostageEventMsg()
|
|||||||
void CHostage::Wiggle()
|
void CHostage::Wiggle()
|
||||||
{
|
{
|
||||||
TraceResult tr;
|
TraceResult tr;
|
||||||
Vector vec = Vector(0, 0, 0);
|
Vector vec(0, 0, 0);
|
||||||
Vector wiggle_directions[] =
|
Vector wiggle_directions[] =
|
||||||
{
|
{
|
||||||
Vector(50, 0, 0),
|
Vector(50, 0, 0),
|
||||||
|
@ -1349,7 +1349,7 @@ void CHostageImprov::__MAKE_VHOOK(OnTouch)(CBaseEntity *other)
|
|||||||
{
|
{
|
||||||
const float lookAheadRange = 30.0f;
|
const float lookAheadRange = 30.0f;
|
||||||
float ground;
|
float ground;
|
||||||
Vector normal = Vector(0, 0, 1);
|
Vector normal(0, 0, 1);
|
||||||
Vector alongFloor;
|
Vector alongFloor;
|
||||||
TraceResult result;
|
TraceResult result;
|
||||||
bool isStep = false;
|
bool isStep = false;
|
||||||
@ -1385,7 +1385,7 @@ void CHostageImprov::__MAKE_VHOOK(OnTouch)(CBaseEntity *other)
|
|||||||
if (isStep)
|
if (isStep)
|
||||||
{
|
{
|
||||||
float stepAheadGround = pos.z;
|
float stepAheadGround = pos.z;
|
||||||
Vector stepAheadNormal = Vector(0, 0, stepAheadGround);
|
Vector stepAheadNormal(0, 0, stepAheadGround);
|
||||||
|
|
||||||
m_inhibitObstacleAvoidance.Start(0.5);
|
m_inhibitObstacleAvoidance.Start(0.5);
|
||||||
|
|
||||||
|
@ -33,7 +33,7 @@ CLocalNav::CLocalNav(CHostage *pOwner)
|
|||||||
|
|
||||||
CLocalNav::~CLocalNav()
|
CLocalNav::~CLocalNav()
|
||||||
{
|
{
|
||||||
delete m_nodeArr;
|
delete[] m_nodeArr;
|
||||||
m_nodeArr = NULL;
|
m_nodeArr = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -801,7 +801,7 @@ void CLocalNav::Think()
|
|||||||
|
|
||||||
if (hCallback)
|
if (hCallback)
|
||||||
{
|
{
|
||||||
CHostage *pHostage = GetClassPtr((CHostage *)hCallback->pev);
|
CHostage *pHostage = GetClassPtr<CCSHostage>((CHostage *)hCallback->pev);
|
||||||
|
|
||||||
if (++qptr == MAX_HOSTAGES_NAV)
|
if (++qptr == MAX_HOSTAGES_NAV)
|
||||||
qptr = 0;
|
qptr = 0;
|
||||||
@ -830,7 +830,7 @@ void CLocalNav::RequestNav(CHostage *pCaller)
|
|||||||
|
|
||||||
for (int i = 0; i < tot_inqueue; ++i)
|
for (int i = 0; i < tot_inqueue; ++i)
|
||||||
{
|
{
|
||||||
CHostage *pQueueItem = GetClassPtr((CHostage *)_queue[curr]->pev);
|
CHostage *pQueueItem = GetClassPtr<CCSHostage>((CHostage *)_queue[curr]->pev);
|
||||||
|
|
||||||
if (pQueueItem == pCaller)
|
if (pQueueItem == pCaller)
|
||||||
return;
|
return;
|
||||||
@ -859,7 +859,7 @@ void CLocalNav::HostagePrethink()
|
|||||||
{
|
{
|
||||||
if (hostages[ iCount ] != NULL)
|
if (hostages[ iCount ] != NULL)
|
||||||
{
|
{
|
||||||
GetClassPtr((CHostage *)hostages[ iCount ]->pev)->PreThink();
|
GetClassPtr<CCSHostage>((CHostage *)hostages[ iCount ]->pev)->PreThink();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
#include "precompiled.h"
|
#include "precompiled.h"
|
||||||
|
|
||||||
LINK_ENTITY_TO_CLASS(world_items, CWorldItem);
|
LINK_ENTITY_TO_CLASS(world_items, CWorldItem, CCSWorldItem);
|
||||||
|
|
||||||
void CWorldItem::__MAKE_VHOOK(KeyValue)(KeyValueData *pkvd)
|
void CWorldItem::__MAKE_VHOOK(KeyValue)(KeyValueData *pkvd)
|
||||||
{
|
{
|
||||||
@ -142,7 +142,7 @@ BOOL CItemSuit::__MAKE_VHOOK(MyTouch)(CBasePlayer *pPlayer)
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
LINK_ENTITY_TO_CLASS(item_suit, CItemSuit);
|
LINK_ENTITY_TO_CLASS(item_suit, CItemSuit, CCSItemSuit);
|
||||||
|
|
||||||
void CItemBattery::__MAKE_VHOOK(Spawn)()
|
void CItemBattery::__MAKE_VHOOK(Spawn)()
|
||||||
{
|
{
|
||||||
@ -189,7 +189,7 @@ BOOL CItemBattery::__MAKE_VHOOK(MyTouch)(CBasePlayer *pPlayer)
|
|||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
LINK_ENTITY_TO_CLASS(item_battery, CItemBattery);
|
LINK_ENTITY_TO_CLASS(item_battery, CItemBattery, CCSItemBattery);
|
||||||
|
|
||||||
void CItemAntidote::__MAKE_VHOOK(Spawn)()
|
void CItemAntidote::__MAKE_VHOOK(Spawn)()
|
||||||
{
|
{
|
||||||
@ -211,7 +211,7 @@ BOOL CItemAntidote::__MAKE_VHOOK(MyTouch)(CBasePlayer *pPlayer)
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
LINK_ENTITY_TO_CLASS(item_antidote, CItemAntidote);
|
LINK_ENTITY_TO_CLASS(item_antidote, CItemAntidote, CCSItemAntidote);
|
||||||
|
|
||||||
void CItemSecurity::__MAKE_VHOOK(Spawn)()
|
void CItemSecurity::__MAKE_VHOOK(Spawn)()
|
||||||
{
|
{
|
||||||
@ -231,7 +231,7 @@ BOOL CItemSecurity::__MAKE_VHOOK(MyTouch)(CBasePlayer *pPlayer)
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
LINK_ENTITY_TO_CLASS(item_security, CItemSecurity);
|
LINK_ENTITY_TO_CLASS(item_security, CItemSecurity, CCSItemSecurity);
|
||||||
|
|
||||||
void CItemLongJump::__MAKE_VHOOK(Spawn)()
|
void CItemLongJump::__MAKE_VHOOK(Spawn)()
|
||||||
{
|
{
|
||||||
@ -268,7 +268,7 @@ BOOL CItemLongJump::__MAKE_VHOOK(MyTouch)(CBasePlayer *pPlayer)
|
|||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
LINK_ENTITY_TO_CLASS(item_longjump, CItemLongJump);
|
LINK_ENTITY_TO_CLASS(item_longjump, CItemLongJump, CCSItemLongJump);
|
||||||
|
|
||||||
void CItemKevlar::__MAKE_VHOOK(Spawn)()
|
void CItemKevlar::__MAKE_VHOOK(Spawn)()
|
||||||
{
|
{
|
||||||
@ -306,7 +306,7 @@ BOOL CItemKevlar::__MAKE_VHOOK(MyTouch)(CBasePlayer *pPlayer)
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
LINK_ENTITY_TO_CLASS(item_kevlar, CItemKevlar);
|
LINK_ENTITY_TO_CLASS(item_kevlar, CItemKevlar, CCSItemKevlar);
|
||||||
|
|
||||||
void CItemAssaultSuit::__MAKE_VHOOK(Spawn)()
|
void CItemAssaultSuit::__MAKE_VHOOK(Spawn)()
|
||||||
{
|
{
|
||||||
@ -343,7 +343,7 @@ BOOL CItemAssaultSuit::__MAKE_VHOOK(MyTouch)(CBasePlayer *pPlayer)
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
LINK_ENTITY_TO_CLASS(item_assaultsuit, CItemAssaultSuit);
|
LINK_ENTITY_TO_CLASS(item_assaultsuit, CItemAssaultSuit, CCSItemAssaultSuit);
|
||||||
|
|
||||||
void CItemThighPack::__MAKE_VHOOK(Spawn)()
|
void CItemThighPack::__MAKE_VHOOK(Spawn)()
|
||||||
{
|
{
|
||||||
@ -386,4 +386,4 @@ BOOL CItemThighPack::__MAKE_VHOOK(MyTouch)(CBasePlayer *pPlayer)
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
LINK_ENTITY_TO_CLASS(item_thighpack, CItemThighPack);
|
LINK_ENTITY_TO_CLASS(item_thighpack, CItemThighPack, CCSItemThighPack);
|
||||||
|
@ -13,7 +13,7 @@ TYPEDESCRIPTION CLight::m_SaveData[] =
|
|||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
LINK_ENTITY_TO_CLASS(light, CLight);
|
LINK_ENTITY_TO_CLASS(light, CLight, CCSLight);
|
||||||
IMPLEMENT_SAVERESTORE(CLight, CPointEntity);
|
IMPLEMENT_SAVERESTORE(CLight, CPointEntity);
|
||||||
|
|
||||||
// Cache user-entity-field values until spawn is called.
|
// Cache user-entity-field values until spawn is called.
|
||||||
@ -106,8 +106,8 @@ void CLight::__MAKE_VHOOK(Use)(CBaseEntity *pActivator, CBaseEntity *pCaller, US
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
LINK_ENTITY_TO_CLASS(light_spot, CLight);
|
LINK_ENTITY_TO_CLASS(light_spot, CLight, CCSLight);
|
||||||
LINK_ENTITY_TO_CLASS(light_environment, CEnvLight);
|
LINK_ENTITY_TO_CLASS(light_environment, CEnvLight, CCSEnvLight);
|
||||||
|
|
||||||
void CEnvLight::__MAKE_VHOOK(KeyValue)(KeyValueData *pkvd)
|
void CEnvLight::__MAKE_VHOOK(KeyValue)(KeyValueData *pkvd)
|
||||||
{
|
{
|
||||||
|
@ -39,9 +39,9 @@ class CLight: public CPointEntity
|
|||||||
public:
|
public:
|
||||||
virtual void Spawn();
|
virtual void Spawn();
|
||||||
virtual void Restart();
|
virtual void Restart();
|
||||||
|
virtual void KeyValue(KeyValueData *pkvd);
|
||||||
virtual int Save(CSave &save);
|
virtual int Save(CSave &save);
|
||||||
virtual int Restore(CRestore &restore);
|
virtual int Restore(CRestore &restore);
|
||||||
virtual void KeyValue(KeyValueData *pkvd);
|
|
||||||
virtual void Use(CBaseEntity *pActivator, CBaseEntity *pCaller, USE_TYPE useType, float value);
|
virtual void Use(CBaseEntity *pActivator, CBaseEntity *pCaller, USE_TYPE useType, float value);
|
||||||
|
|
||||||
#ifdef HOOK_GAMEDLL
|
#ifdef HOOK_GAMEDLL
|
||||||
|
@ -73,7 +73,7 @@ void CRuleBrushEntity::__MAKE_VHOOK(Spawn)()
|
|||||||
CRuleEntity::Spawn();
|
CRuleEntity::Spawn();
|
||||||
}
|
}
|
||||||
|
|
||||||
LINK_ENTITY_TO_CLASS(game_score, CGameScore);
|
LINK_ENTITY_TO_CLASS(game_score, CGameScore, CCSGameScore);
|
||||||
|
|
||||||
void CGameScore::__MAKE_VHOOK(Spawn)()
|
void CGameScore::__MAKE_VHOOK(Spawn)()
|
||||||
{
|
{
|
||||||
@ -110,7 +110,7 @@ void CGameScore::__MAKE_VHOOK(Use)(CBaseEntity *pActivator, CBaseEntity *pCaller
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
LINK_ENTITY_TO_CLASS(game_end, CGameEnd);
|
LINK_ENTITY_TO_CLASS(game_end, CGameEnd, CCSGameEnd);
|
||||||
|
|
||||||
void CGameEnd::__MAKE_VHOOK(Use)(CBaseEntity *pActivator, CBaseEntity *pCaller, USE_TYPE useType, float value)
|
void CGameEnd::__MAKE_VHOOK(Use)(CBaseEntity *pActivator, CBaseEntity *pCaller, USE_TYPE useType, float value)
|
||||||
{
|
{
|
||||||
@ -120,7 +120,7 @@ void CGameEnd::__MAKE_VHOOK(Use)(CBaseEntity *pActivator, CBaseEntity *pCaller,
|
|||||||
g_pGameRules->EndMultiplayerGame();
|
g_pGameRules->EndMultiplayerGame();
|
||||||
}
|
}
|
||||||
|
|
||||||
LINK_ENTITY_TO_CLASS(game_text, CGameText);
|
LINK_ENTITY_TO_CLASS(game_text, CGameText, CCSGameText);
|
||||||
IMPLEMENT_SAVERESTORE(CGameText, CRulePointEntity);
|
IMPLEMENT_SAVERESTORE(CGameText, CRulePointEntity);
|
||||||
|
|
||||||
void CGameText::__MAKE_VHOOK(KeyValue)(KeyValueData *pkvd)
|
void CGameText::__MAKE_VHOOK(KeyValue)(KeyValueData *pkvd)
|
||||||
@ -211,7 +211,7 @@ void CGameText::__MAKE_VHOOK(Use)(CBaseEntity *pActivator, CBaseEntity *pCaller,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
LINK_ENTITY_TO_CLASS(game_team_master, CGameTeamMaster);
|
LINK_ENTITY_TO_CLASS(game_team_master, CGameTeamMaster, CCSGameTeamMaster);
|
||||||
|
|
||||||
void CGameTeamMaster::__MAKE_VHOOK(KeyValue)(KeyValueData *pkvd)
|
void CGameTeamMaster::__MAKE_VHOOK(KeyValue)(KeyValueData *pkvd)
|
||||||
{
|
{
|
||||||
@ -301,7 +301,7 @@ BOOL CGameTeamMaster::TeamMatch(CBaseEntity *pActivator)
|
|||||||
return UTIL_TeamsMatch(pActivator->TeamID(), TeamID());
|
return UTIL_TeamsMatch(pActivator->TeamID(), TeamID());
|
||||||
}
|
}
|
||||||
|
|
||||||
LINK_ENTITY_TO_CLASS(game_team_set, CGameTeamSet);
|
LINK_ENTITY_TO_CLASS(game_team_set, CGameTeamSet, CCSGameTeamSet);
|
||||||
|
|
||||||
void CGameTeamSet::__MAKE_VHOOK(Use)(CBaseEntity *pActivator, CBaseEntity *pCaller, USE_TYPE useType, float value)
|
void CGameTeamSet::__MAKE_VHOOK(Use)(CBaseEntity *pActivator, CBaseEntity *pCaller, USE_TYPE useType, float value)
|
||||||
{
|
{
|
||||||
@ -323,7 +323,7 @@ void CGameTeamSet::__MAKE_VHOOK(Use)(CBaseEntity *pActivator, CBaseEntity *pCall
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
LINK_ENTITY_TO_CLASS(game_zone_player, CGamePlayerZone);
|
LINK_ENTITY_TO_CLASS(game_zone_player, CGamePlayerZone, CCSGamePlayerZone);
|
||||||
IMPLEMENT_SAVERESTORE(CGamePlayerZone, CRuleBrushEntity);
|
IMPLEMENT_SAVERESTORE(CGamePlayerZone, CRuleBrushEntity);
|
||||||
|
|
||||||
void CGamePlayerZone::__MAKE_VHOOK(KeyValue)(KeyValueData *pkvd)
|
void CGamePlayerZone::__MAKE_VHOOK(KeyValue)(KeyValueData *pkvd)
|
||||||
@ -410,7 +410,7 @@ void CGamePlayerZone::__MAKE_VHOOK(Use)(CBaseEntity *pActivator, CBaseEntity *pC
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
LINK_ENTITY_TO_CLASS(game_player_hurt, CGamePlayerHurt);
|
LINK_ENTITY_TO_CLASS(game_player_hurt, CGamePlayerHurt, CCSGamePlayerHurt);
|
||||||
|
|
||||||
void CGamePlayerHurt::__MAKE_VHOOK(Use)(CBaseEntity *pActivator, CBaseEntity *pCaller, USE_TYPE useType, float value)
|
void CGamePlayerHurt::__MAKE_VHOOK(Use)(CBaseEntity *pActivator, CBaseEntity *pCaller, USE_TYPE useType, float value)
|
||||||
{
|
{
|
||||||
@ -433,7 +433,7 @@ void CGamePlayerHurt::__MAKE_VHOOK(Use)(CBaseEntity *pActivator, CBaseEntity *pC
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
LINK_ENTITY_TO_CLASS(game_counter, CGameCounter);
|
LINK_ENTITY_TO_CLASS(game_counter, CGameCounter, CCSGameCounter);
|
||||||
|
|
||||||
void CGameCounter::__MAKE_VHOOK(Spawn)()
|
void CGameCounter::__MAKE_VHOOK(Spawn)()
|
||||||
{
|
{
|
||||||
@ -479,7 +479,7 @@ void CGameCounter::__MAKE_VHOOK(Use)(CBaseEntity *pActivator, CBaseEntity *pCall
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
LINK_ENTITY_TO_CLASS(game_counter_set, CGameCounterSet);
|
LINK_ENTITY_TO_CLASS(game_counter_set, CGameCounterSet, CCSGameCounterSet);
|
||||||
|
|
||||||
void CGameCounterSet::__MAKE_VHOOK(Use)(CBaseEntity *pActivator, CBaseEntity *pCaller, USE_TYPE useType, float value)
|
void CGameCounterSet::__MAKE_VHOOK(Use)(CBaseEntity *pActivator, CBaseEntity *pCaller, USE_TYPE useType, float value)
|
||||||
{
|
{
|
||||||
@ -494,7 +494,7 @@ void CGameCounterSet::__MAKE_VHOOK(Use)(CBaseEntity *pActivator, CBaseEntity *pC
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
LINK_ENTITY_TO_CLASS(game_player_equip, CGamePlayerEquip);
|
LINK_ENTITY_TO_CLASS(game_player_equip, CGamePlayerEquip, CCSGamePlayerEquip);
|
||||||
|
|
||||||
void CGamePlayerEquip::__MAKE_VHOOK(KeyValue)(KeyValueData *pkvd)
|
void CGamePlayerEquip::__MAKE_VHOOK(KeyValue)(KeyValueData *pkvd)
|
||||||
{
|
{
|
||||||
@ -560,7 +560,7 @@ void CGamePlayerEquip::__MAKE_VHOOK(Use)(CBaseEntity *pActivator, CBaseEntity *p
|
|||||||
EquipPlayer(pActivator);
|
EquipPlayer(pActivator);
|
||||||
}
|
}
|
||||||
|
|
||||||
LINK_ENTITY_TO_CLASS(game_player_team, CGamePlayerTeam);
|
LINK_ENTITY_TO_CLASS(game_player_team, CGamePlayerTeam, CCSGamePlayerTeam);
|
||||||
|
|
||||||
const char *CGamePlayerTeam::TargetTeamName(const char *pszTargetName)
|
const char *CGamePlayerTeam::TargetTeamName(const char *pszTargetName)
|
||||||
{
|
{
|
||||||
|
@ -32,7 +32,7 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
typedef struct
|
typedef struct MonsterEvent_s
|
||||||
{
|
{
|
||||||
int event;
|
int event;
|
||||||
char *options;
|
char *options;
|
||||||
|
@ -17,7 +17,7 @@ TYPEDESCRIPTION CFuncMortarField::m_SaveData[] =
|
|||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
LINK_ENTITY_TO_CLASS(func_mortar_field, CFuncMortarField);
|
LINK_ENTITY_TO_CLASS(func_mortar_field, CFuncMortarField, CCSFuncMortarField);
|
||||||
IMPLEMENT_SAVERESTORE(CFuncMortarField, CBaseToggle);
|
IMPLEMENT_SAVERESTORE(CFuncMortarField, CBaseToggle);
|
||||||
|
|
||||||
void CFuncMortarField::__MAKE_VHOOK(KeyValue)(KeyValueData *pkvd)
|
void CFuncMortarField::__MAKE_VHOOK(KeyValue)(KeyValueData *pkvd)
|
||||||
@ -144,15 +144,16 @@ void CFuncMortarField::FieldUse(CBaseEntity *pActivator, CBaseEntity *pCaller, U
|
|||||||
CBaseEntity *pMortar = Create("monster_mortar", tr.vecEndPos, Vector(0, 0, 0), pentOwner);
|
CBaseEntity *pMortar = Create("monster_mortar", tr.vecEndPos, Vector(0, 0, 0), pentOwner);
|
||||||
pMortar->pev->nextthink = gpGlobals->time + t;
|
pMortar->pev->nextthink = gpGlobals->time + t;
|
||||||
t += RANDOM_FLOAT(0.2, 0.5);
|
t += RANDOM_FLOAT(0.2, 0.5);
|
||||||
|
#ifndef REGAMEDLL_FIXES
|
||||||
if (i == 0)
|
if (i == 0)
|
||||||
{
|
{
|
||||||
CSoundEnt::InsertSound(bits_SOUND_DANGER, tr.vecEndPos, 400, 0.3);
|
CSoundEnt::InsertSound(bits_SOUND_DANGER, tr.vecEndPos, 400, 0.3);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
LINK_ENTITY_TO_CLASS(monster_mortar, CMortar);
|
LINK_ENTITY_TO_CLASS(monster_mortar, CMortar, CCSMortar);
|
||||||
|
|
||||||
void CMortar::__MAKE_VHOOK(Spawn)()
|
void CMortar::__MAKE_VHOOK(Spawn)()
|
||||||
{
|
{
|
||||||
|
@ -149,7 +149,7 @@ void CBaseMonster::__MAKE_VHOOK(Look)(int iDistance)
|
|||||||
CBaseEntity *pSightEnt = NULL;
|
CBaseEntity *pSightEnt = NULL;
|
||||||
CBaseEntity *pList[100];
|
CBaseEntity *pList[100];
|
||||||
|
|
||||||
Vector delta = Vector(iDistance, iDistance, iDistance);
|
Vector delta(iDistance, iDistance, iDistance);
|
||||||
|
|
||||||
// Find only monsters/clients in box, NOT limited to PVS
|
// Find only monsters/clients in box, NOT limited to PVS
|
||||||
int count = UTIL_EntitiesInBox(pList, ARRAYSIZE(pList), pev->origin - delta, pev->origin + delta, (FL_CLIENT | FL_MONSTER));
|
int count = UTIL_EntitiesInBox(pList, ARRAYSIZE(pList), pev->origin - delta, pev->origin + delta, (FL_CLIENT | FL_MONSTER));
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -1,6 +1,8 @@
|
|||||||
#include "precompiled.h"
|
#include "precompiled.h"
|
||||||
|
|
||||||
int GetForceCamera_api(CBasePlayer *pObserver)
|
LINK_HOOK_CHAIN(int, GetForceCamera, (CBasePlayer *pObserver), pObserver);
|
||||||
|
|
||||||
|
int __API_HOOK(GetForceCamera)(CBasePlayer *pObserver)
|
||||||
{
|
{
|
||||||
int retVal;
|
int retVal;
|
||||||
|
|
||||||
@ -17,27 +19,20 @@ int GetForceCamera_api(CBasePlayer *pObserver)
|
|||||||
return retVal;
|
return retVal;
|
||||||
}
|
}
|
||||||
|
|
||||||
int GetForceCamera(CBasePlayer *pObserver)
|
LINK_HOOK_CLASS_CHAIN(CBaseEntity *, CBasePlayer, Observer_IsValidTarget, (int iPlayerIndex, bool bSameTeam), iPlayerIndex, bSameTeam);
|
||||||
{
|
|
||||||
return g_ReGameHookchains.m_GetForceCamera.callChain(GetForceCamera_api, pObserver);
|
|
||||||
}
|
|
||||||
|
|
||||||
CBasePlayer *Observer_IsValidTarget_api(CBasePlayer *pPlayer, CBasePlayer *pEntity, int iPlayerIndex, bool bSameTeam)
|
CBaseEntity *CBasePlayer::__API_HOOK(Observer_IsValidTarget)(int iPlayerIndex, bool bSameTeam)
|
||||||
{
|
|
||||||
// Don't spec observers or players who haven't picked a class yet
|
|
||||||
if (!pEntity || pEntity == pPlayer || pEntity->has_disconnected || pEntity->IsObserver() || (pEntity->pev->effects & EF_NODRAW) || pEntity->m_iTeam == UNASSIGNED || (bSameTeam && pEntity->m_iTeam != pPlayer->m_iTeam))
|
|
||||||
return NULL;
|
|
||||||
|
|
||||||
return pEntity;
|
|
||||||
}
|
|
||||||
|
|
||||||
CBaseEntity *CBasePlayer::Observer_IsValidTarget(int iPlayerIndex, bool bSameTeam)
|
|
||||||
{
|
{
|
||||||
if (iPlayerIndex > gpGlobals->maxClients || iPlayerIndex < 1)
|
if (iPlayerIndex > gpGlobals->maxClients || iPlayerIndex < 1)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
CBasePlayer *pEnt = static_cast<CBasePlayer *>(UTIL_PlayerByIndex(iPlayerIndex));
|
CBasePlayer *pPlayer = static_cast<CBasePlayer *>(UTIL_PlayerByIndex(iPlayerIndex));
|
||||||
return g_ReGameHookchains.m_Observer_IsValidTarget.callChain(Observer_IsValidTarget_api, this, pEnt, iPlayerIndex, bSameTeam);
|
|
||||||
|
// Don't spec observers or players who haven't picked a class yet
|
||||||
|
if (!pPlayer || pPlayer == this || pPlayer->has_disconnected || pPlayer->IsObserver() || (pPlayer->pev->effects & EF_NODRAW) || pPlayer->m_iTeam == UNASSIGNED || (bSameTeam && pPlayer->m_iTeam != m_iTeam))
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
return pPlayer;
|
||||||
}
|
}
|
||||||
|
|
||||||
void UpdateClientEffects(CBasePlayer *pObserver, int oldMode)
|
void UpdateClientEffects(CBasePlayer *pObserver, int oldMode)
|
||||||
|
@ -37,6 +37,7 @@
|
|||||||
#define CAMERA_MODE_SPEC_ONLY_FRIST_PERSON 2
|
#define CAMERA_MODE_SPEC_ONLY_FRIST_PERSON 2
|
||||||
|
|
||||||
int GetForceCamera(CBasePlayer *pObserver);
|
int GetForceCamera(CBasePlayer *pObserver);
|
||||||
|
int GetForceCamera_(CBasePlayer *pObserver);
|
||||||
void UpdateClientEffects(CBasePlayer *pObserver, int oldMode);
|
void UpdateClientEffects(CBasePlayer *pObserver, int oldMode);
|
||||||
|
|
||||||
#endif // OBSERVER_H
|
#endif // OBSERVER_H
|
||||||
|
@ -21,7 +21,7 @@ TYPEDESCRIPTION CPathTrack::m_SaveData[] =
|
|||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
LINK_ENTITY_TO_CLASS(path_corner, CPathCorner);
|
LINK_ENTITY_TO_CLASS(path_corner, CPathCorner, CCSPathCorner);
|
||||||
IMPLEMENT_SAVERESTORE(CPathCorner, CPointEntity);
|
IMPLEMENT_SAVERESTORE(CPathCorner, CPointEntity);
|
||||||
|
|
||||||
void CPathCorner::__MAKE_VHOOK(KeyValue)(KeyValueData *pkvd)
|
void CPathCorner::__MAKE_VHOOK(KeyValue)(KeyValueData *pkvd)
|
||||||
@ -41,7 +41,7 @@ void CPathCorner::__MAKE_VHOOK(Spawn)()
|
|||||||
}
|
}
|
||||||
|
|
||||||
IMPLEMENT_SAVERESTORE(CPathTrack, CBaseEntity);
|
IMPLEMENT_SAVERESTORE(CPathTrack, CBaseEntity);
|
||||||
LINK_ENTITY_TO_CLASS(path_track, CPathTrack);
|
LINK_ENTITY_TO_CLASS(path_track, CPathTrack, CCSPathTrack);
|
||||||
|
|
||||||
void CPathTrack::__MAKE_VHOOK(KeyValue)(KeyValueData *pkvd)
|
void CPathTrack::__MAKE_VHOOK(KeyValue)(KeyValueData *pkvd)
|
||||||
{
|
{
|
||||||
|
@ -232,7 +232,7 @@ void CFuncPlat::CallHitBottom()
|
|||||||
HitBottom();
|
HitBottom();
|
||||||
}
|
}
|
||||||
|
|
||||||
LINK_ENTITY_TO_CLASS(func_plat, CFuncPlat);
|
LINK_ENTITY_TO_CLASS(func_plat, CFuncPlat, CCSFuncPlat);
|
||||||
|
|
||||||
#define noiseMovement noise
|
#define noiseMovement noise
|
||||||
#define noiseStopMoving noise1
|
#define noiseStopMoving noise1
|
||||||
@ -325,7 +325,7 @@ void CFuncPlat::__MAKE_VHOOK(Spawn)()
|
|||||||
|
|
||||||
void PlatSpawnInsideTrigger(entvars_t *pevPlatform)
|
void PlatSpawnInsideTrigger(entvars_t *pevPlatform)
|
||||||
{
|
{
|
||||||
GetClassPtr((CPlatTrigger *)NULL)->SpawnInsideTrigger(GetClassPtr((CFuncPlat *)pevPlatform));
|
GetClassPtr<CCSPlatTrigger>((CPlatTrigger *)NULL)->SpawnInsideTrigger(GetClassPtr<CCSFuncPlat>((CFuncPlat *)pevPlatform));
|
||||||
}
|
}
|
||||||
|
|
||||||
// Create a trigger entity for a platform.
|
// Create a trigger entity for a platform.
|
||||||
@ -511,7 +511,7 @@ void CFuncPlat::__MAKE_VHOOK(Blocked)(CBaseEntity *pOther)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
LINK_ENTITY_TO_CLASS(func_platrot, CFuncPlatRot);
|
LINK_ENTITY_TO_CLASS(func_platrot, CFuncPlatRot, CCSFuncPlatRot);
|
||||||
IMPLEMENT_SAVERESTORE(CFuncPlatRot, CFuncPlat);
|
IMPLEMENT_SAVERESTORE(CFuncPlatRot, CFuncPlat);
|
||||||
|
|
||||||
void CFuncPlatRot::SetupRotation()
|
void CFuncPlatRot::SetupRotation()
|
||||||
@ -588,7 +588,7 @@ void CFuncPlatRot::RotMove(Vector &destAngle, float time)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
LINK_ENTITY_TO_CLASS(func_train, CFuncTrain);
|
LINK_ENTITY_TO_CLASS(func_train, CFuncTrain, CCSFuncTrain);
|
||||||
IMPLEMENT_SAVERESTORE(CFuncTrain, CBasePlatTrain);
|
IMPLEMENT_SAVERESTORE(CFuncTrain, CBasePlatTrain);
|
||||||
|
|
||||||
void CFuncTrain::__MAKE_VHOOK(KeyValue)(KeyValueData *pkvd)
|
void CFuncTrain::__MAKE_VHOOK(KeyValue)(KeyValueData *pkvd)
|
||||||
@ -885,7 +885,7 @@ void CFuncTrain::__MAKE_VHOOK(OverrideReset)()
|
|||||||
}
|
}
|
||||||
|
|
||||||
IMPLEMENT_SAVERESTORE(CFuncTrackTrain, CBaseEntity);
|
IMPLEMENT_SAVERESTORE(CFuncTrackTrain, CBaseEntity);
|
||||||
LINK_ENTITY_TO_CLASS(func_tracktrain, CFuncTrackTrain);
|
LINK_ENTITY_TO_CLASS(func_tracktrain, CFuncTrackTrain, CCSFuncTrackTrain);
|
||||||
|
|
||||||
void CFuncTrackTrain::__MAKE_VHOOK(KeyValue)(KeyValueData *pkvd)
|
void CFuncTrackTrain::__MAKE_VHOOK(KeyValue)(KeyValueData *pkvd)
|
||||||
{
|
{
|
||||||
@ -1546,7 +1546,7 @@ void CFuncTrackTrain::__MAKE_VHOOK(Precache)()
|
|||||||
m_usAdjustPitch = PRECACHE_EVENT(1, "events/train.sc");
|
m_usAdjustPitch = PRECACHE_EVENT(1, "events/train.sc");
|
||||||
}
|
}
|
||||||
|
|
||||||
LINK_ENTITY_TO_CLASS(func_traincontrols, CFuncTrainControls);
|
LINK_ENTITY_TO_CLASS(func_traincontrols, CFuncTrainControls, CCSFuncTrainControls);
|
||||||
|
|
||||||
void CFuncTrainControls::Find()
|
void CFuncTrainControls::Find()
|
||||||
{
|
{
|
||||||
@ -1587,7 +1587,7 @@ BOOL CFuncTrackChange::__MAKE_VHOOK(IsTogglePlat)()
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
LINK_ENTITY_TO_CLASS(func_trackchange, CFuncTrackChange);
|
LINK_ENTITY_TO_CLASS(func_trackchange, CFuncTrackChange, CCSFuncTrackChange);
|
||||||
IMPLEMENT_SAVERESTORE(CFuncTrackChange, CFuncPlatRot);
|
IMPLEMENT_SAVERESTORE(CFuncTrackChange, CFuncPlatRot);
|
||||||
|
|
||||||
void CFuncTrackChange::__MAKE_VHOOK(Spawn)()
|
void CFuncTrackChange::__MAKE_VHOOK(Spawn)()
|
||||||
@ -1924,7 +1924,7 @@ void CFuncTrackChange::__MAKE_VHOOK(HitTop)()
|
|||||||
EnableUse();
|
EnableUse();
|
||||||
}
|
}
|
||||||
|
|
||||||
LINK_ENTITY_TO_CLASS(func_trackautochange, CFuncTrackAuto);
|
LINK_ENTITY_TO_CLASS(func_trackautochange, CFuncTrackAuto, CCSFuncTrackAuto);
|
||||||
|
|
||||||
// Auto track change
|
// Auto track change
|
||||||
void CFuncTrackAuto::__MAKE_VHOOK(UpdateAutoTargets)(int toggleState)
|
void CFuncTrackAuto::__MAKE_VHOOK(UpdateAutoTargets)(int toggleState)
|
||||||
@ -2015,7 +2015,7 @@ void CFuncTrackAuto::__MAKE_VHOOK(Use)(CBaseEntity *pActivator, CBaseEntity *pCa
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
LINK_ENTITY_TO_CLASS(func_guntarget, CGunTarget);
|
LINK_ENTITY_TO_CLASS(func_guntarget, CGunTarget, CCSGunTarget);
|
||||||
IMPLEMENT_SAVERESTORE(CGunTarget, CBaseMonster);
|
IMPLEMENT_SAVERESTORE(CGunTarget, CBaseMonster);
|
||||||
|
|
||||||
void CGunTarget::__MAKE_VHOOK(Spawn)()
|
void CGunTarget::__MAKE_VHOOK(Spawn)()
|
||||||
|
@ -234,8 +234,8 @@ public:
|
|||||||
virtual void EXPORT GoUp();
|
virtual void EXPORT GoUp();
|
||||||
virtual void EXPORT GoDown();
|
virtual void EXPORT GoDown();
|
||||||
|
|
||||||
virtual void HitBottom();
|
|
||||||
virtual void HitTop();
|
virtual void HitTop();
|
||||||
|
virtual void HitBottom();
|
||||||
virtual void UpdateAutoTargets(int toggleState);
|
virtual void UpdateAutoTargets(int toggleState);
|
||||||
|
|
||||||
#ifdef HOOK_GAMEDLL
|
#ifdef HOOK_GAMEDLL
|
||||||
|
@ -140,46 +140,6 @@ TYPEDESCRIPTION CBasePlayer::m_playerSaveData[] =
|
|||||||
DEFINE_FIELD(CBasePlayer, m_iJoiningState, FIELD_INTEGER),
|
DEFINE_FIELD(CBasePlayer, m_iJoiningState, FIELD_INTEGER),
|
||||||
};
|
};
|
||||||
|
|
||||||
WeaponStruct g_weaponStruct[ MAX_WEAPONS ] =
|
|
||||||
{
|
|
||||||
{ 0, 0, 0, 0, 0 },
|
|
||||||
|
|
||||||
{ WEAPON_P228, P228_PRICE, TERRORIST|CT, AUTOBUYCLASS_SECONDARY, AMMO_357SIG_PRICE },
|
|
||||||
{ WEAPON_SCOUT, SCOUT_PRICE, TERRORIST|CT, AUTOBUYCLASS_PRIMARY, AMMO_762MM_PRICE },
|
|
||||||
{ WEAPON_XM1014, XM1014_PRICE, TERRORIST|CT, AUTOBUYCLASS_PRIMARY, AMMO_BUCKSHOT_PRICE },
|
|
||||||
{ WEAPON_MAC10, MAC10_PRICE, CT, AUTOBUYCLASS_PRIMARY, AMMO_45ACP_PRICE },
|
|
||||||
{ WEAPON_AUG, AUG_PRICE, TERRORIST, AUTOBUYCLASS_PRIMARY, AMMO_556MM_PRICE },
|
|
||||||
{ WEAPON_ELITE, ELITE_PRICE, CT, AUTOBUYCLASS_SECONDARY, AMMO_9MM_PRICE },
|
|
||||||
{ WEAPON_FIVESEVEN, FIVESEVEN_PRICE, TERRORIST|CT, AUTOBUYCLASS_SECONDARY, AMMO_57MM_PRICE },
|
|
||||||
{ WEAPON_UMP45, UMP45_PRICE, TERRORIST, AUTOBUYCLASS_PRIMARY, AMMO_45ACP_PRICE },
|
|
||||||
{ WEAPON_SG550, SG550_PRICE, TERRORIST, AUTOBUYCLASS_PRIMARY, AMMO_556MM_PRICE },
|
|
||||||
{ WEAPON_USP, USP_PRICE, TERRORIST|CT, AUTOBUYCLASS_SECONDARY, AMMO_45ACP_PRICE },
|
|
||||||
{ WEAPON_GLOCK18, GLOCK18_PRICE, TERRORIST|CT, AUTOBUYCLASS_SECONDARY, AMMO_9MM_PRICE },
|
|
||||||
{ WEAPON_MP5N, MP5NAVY_PRICE, TERRORIST|CT, AUTOBUYCLASS_PRIMARY, AMMO_9MM_PRICE },
|
|
||||||
{ WEAPON_AWP, AWP_PRICE, TERRORIST|CT, AUTOBUYCLASS_PRIMARY, AMMO_338MAG_PRICE },
|
|
||||||
{ WEAPON_M249, M249_PRICE, TERRORIST|CT, AUTOBUYCLASS_PRIMARY, AMMO_556MM_PRICE },
|
|
||||||
{ WEAPON_M3, M3_PRICE, TERRORIST|CT, AUTOBUYCLASS_PRIMARY, AMMO_BUCKSHOT_PRICE },
|
|
||||||
{ WEAPON_M4A1, M4A1_PRICE, TERRORIST, AUTOBUYCLASS_PRIMARY, AMMO_556MM_PRICE },
|
|
||||||
{ WEAPON_TMP, TMP_PRICE, TERRORIST, AUTOBUYCLASS_PRIMARY, AMMO_9MM_PRICE },
|
|
||||||
{ WEAPON_G3SG1, G3SG1_PRICE, CT, AUTOBUYCLASS_PRIMARY, AMMO_762MM_PRICE },
|
|
||||||
{ WEAPON_DEAGLE, DEAGLE_PRICE, TERRORIST|CT, AUTOBUYCLASS_SECONDARY, AMMO_50AE_PRICE },
|
|
||||||
{ WEAPON_SG552, SG552_PRICE, CT, AUTOBUYCLASS_PRIMARY, AMMO_556MM_PRICE },
|
|
||||||
{ WEAPON_AK47, AK47_PRICE, CT, AUTOBUYCLASS_PRIMARY, AMMO_762MM_PRICE },
|
|
||||||
{ WEAPON_P90, P90_PRICE, TERRORIST|CT, AUTOBUYCLASS_PRIMARY, AMMO_57MM_PRICE },
|
|
||||||
{ WEAPON_FAMAS, FAMAS_PRICE, TERRORIST, AUTOBUYCLASS_PRIMARY, AMMO_556MM_PRICE },
|
|
||||||
{ WEAPON_GALIL, GALIL_PRICE, CT, AUTOBUYCLASS_PRIMARY, AMMO_556MM_PRICE },
|
|
||||||
// TODO: this have bug, the cost of galil $2000, but not $2250
|
|
||||||
|
|
||||||
{ WEAPON_SHIELDGUN, SHIELDGUN_PRICE, TERRORIST, AUTOBUYCLASS_PRIMARY, 0 },
|
|
||||||
|
|
||||||
{ 0, 0, 0, 0, 0 },
|
|
||||||
{ 0, 0, 0, 0, 0 },
|
|
||||||
{ 0, 0, 0, 0, 0 },
|
|
||||||
{ 0, 0, 0, 0, 0 },
|
|
||||||
{ 0, 0, 0, 0, 0 },
|
|
||||||
{ 0, 0, 0, 0, 0 }
|
|
||||||
};
|
|
||||||
|
|
||||||
char *CDeadHEV::m_szPoses[] =
|
char *CDeadHEV::m_szPoses[] =
|
||||||
{
|
{
|
||||||
"deadback",
|
"deadback",
|
||||||
@ -323,7 +283,7 @@ void WriteSigonMessages()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
LINK_ENTITY_TO_CLASS(player, CBasePlayer);
|
LINK_ENTITY_TO_CLASS(player, CBasePlayer, CCSPlayer);
|
||||||
|
|
||||||
void SendItemStatus(CBasePlayer *pPlayer)
|
void SendItemStatus(CBasePlayer *pPlayer)
|
||||||
{
|
{
|
||||||
@ -481,7 +441,7 @@ CBasePlayer *CBasePlayer::GetNextRadioRecipient(CBasePlayer *pStartPlayer)
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
bool bSend = false;
|
bool bSend = false;
|
||||||
CBasePlayer *pPlayer = GetClassPtr((CBasePlayer *)pEntity->pev);
|
CBasePlayer *pPlayer = GetClassPtr<CCSPlayer>((CBasePlayer *)pEntity->pev);
|
||||||
|
|
||||||
if (pEntity->IsPlayer())
|
if (pEntity->IsPlayer())
|
||||||
{
|
{
|
||||||
@ -535,7 +495,7 @@ void CBasePlayer::Radio(const char *msg_id, const char *msg_verbose, short pitch
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
bool bSend = false;
|
bool bSend = false;
|
||||||
CBasePlayer *pPlayer = GetClassPtr((CBasePlayer *)pEntity->pev);
|
CBasePlayer *pPlayer = GetClassPtr<CCSPlayer>((CBasePlayer *)pEntity->pev);
|
||||||
|
|
||||||
if (pPlayer == NULL)
|
if (pPlayer == NULL)
|
||||||
continue;
|
continue;
|
||||||
@ -716,9 +676,11 @@ void CBasePlayer::DeathSound()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
LINK_HOOK_CLASS_CHAIN(int, CBasePlayer, TakeHealth, (float flHealth, int bitsDamageType), flHealth, bitsDamageType);
|
||||||
|
|
||||||
// override takehealth
|
// override takehealth
|
||||||
// bitsDamageType indicates type of damage healed.
|
// bitsDamageType indicates type of damage healed.
|
||||||
int CBasePlayer::__MAKE_VHOOK(TakeHealth)(float flHealth, int bitsDamageType)
|
int CBasePlayer::__API_VHOOK(TakeHealth)(float flHealth, int bitsDamageType)
|
||||||
{
|
{
|
||||||
return CBaseMonster::TakeHealth(flHealth, bitsDamageType);
|
return CBaseMonster::TakeHealth(flHealth, bitsDamageType);
|
||||||
}
|
}
|
||||||
@ -742,7 +704,9 @@ bool CBasePlayer::IsHittingShield(Vector &vecDirection, TraceResult *ptr)
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void CBasePlayer::__MAKE_VHOOK(TraceAttack)(entvars_t *pevAttacker, float flDamage, Vector vecDir, TraceResult *ptr, int bitsDamageType)
|
LINK_HOOK_CLASS_VOID_CHAIN(CBasePlayer, TraceAttack, (entvars_t *pevAttacker, float flDamage, Vector vecDir, TraceResult *ptr, int bitsDamageType), pevAttacker, flDamage, vecDir, ptr, bitsDamageType);
|
||||||
|
|
||||||
|
void CBasePlayer::__API_VHOOK(TraceAttack)(entvars_t *pevAttacker, float flDamage, VectorRef vecDir, TraceResult *ptr, int bitsDamageType)
|
||||||
{
|
{
|
||||||
bool bShouldBleed = true;
|
bool bShouldBleed = true;
|
||||||
bool bShouldSpark = false;
|
bool bShouldSpark = false;
|
||||||
@ -946,11 +910,13 @@ void LogAttack(CBasePlayer *pAttacker, CBasePlayer *pVictim, int teamAttack, int
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
LINK_HOOK_CLASS_CHAIN(int, CBasePlayer, TakeDamage, (entvars_t *pevInflictor, entvars_t *pevAttacker, float flDamage, int bitsDamageType), pevInflictor, pevAttacker, flDamage, bitsDamageType);
|
||||||
|
|
||||||
// Take some damage.
|
// Take some damage.
|
||||||
// NOTE: each call to TakeDamage with bitsDamageType set to a time-based damage
|
// NOTE: each call to TakeDamage with bitsDamageType set to a time-based damage
|
||||||
// type will cause the damage time countdown to be reset. Thus the ongoing effects of poison, radiation
|
// type will cause the damage time countdown to be reset. Thus the ongoing effects of poison, radiation
|
||||||
// etc are implemented with subsequent calls to TakeDamage using DMG_GENERIC.
|
// etc are implemented with subsequent calls to TakeDamage using DMG_GENERIC.
|
||||||
int CBasePlayer::__MAKE_VHOOK(TakeDamage)(entvars_t *pevInflictor, entvars_t *pevAttacker, float flDamage, int bitsDamageType)
|
int CBasePlayer::__API_VHOOK(TakeDamage)(entvars_t *pevInflictor, entvars_t *pevAttacker, float flDamage, int bitsDamageType)
|
||||||
{
|
{
|
||||||
int fTookDamage;
|
int fTookDamage;
|
||||||
float flRatio = ARMOR_RATIO;
|
float flRatio = ARMOR_RATIO;
|
||||||
@ -981,20 +947,15 @@ int CBasePlayer::__MAKE_VHOOK(TakeDamage)(entvars_t *pevInflictor, entvars_t *pe
|
|||||||
|
|
||||||
if (bitsDamageType & DMG_EXPLOSION)
|
if (bitsDamageType & DMG_EXPLOSION)
|
||||||
{
|
{
|
||||||
CBaseEntity *temp = GetClassPtr((CBaseEntity *)pevInflictor);
|
CBaseEntity *temp = GetClassPtr<CCSEntity>((CBaseEntity *)pevInflictor);
|
||||||
|
|
||||||
if (!Q_strcmp(STRING(temp->pev->classname), "grenade"))
|
if (!Q_strcmp(STRING(temp->pev->classname), "grenade"))
|
||||||
{
|
{
|
||||||
CGrenade *pGrenade = GetClassPtr((CGrenade *)pevInflictor);
|
CGrenade *pGrenade = GetClassPtr<CCSGrenade>((CGrenade *)pevInflictor);
|
||||||
|
|
||||||
if (CVAR_GET_FLOAT("mp_friendlyfire"))
|
if (CVAR_GET_FLOAT("mp_friendlyfire"))
|
||||||
{
|
{
|
||||||
#ifdef REGAMEDLL_ADD
|
if (!CSGameRules()->IsFriendlyFireAttack() && pGrenade->m_iTeam == m_iTeam)
|
||||||
if (friendlyfire.string[0] == '2')
|
|
||||||
bTeamAttack = FALSE;
|
|
||||||
else
|
|
||||||
#endif
|
|
||||||
if (pGrenade->m_iTeam == m_iTeam)
|
|
||||||
bTeamAttack = TRUE;
|
bTeamAttack = TRUE;
|
||||||
|
|
||||||
pAttack = dynamic_cast<CBasePlayer *>(CBasePlayer::Instance(pevAttacker));
|
pAttack = dynamic_cast<CBasePlayer *>(CBasePlayer::Instance(pevAttacker));
|
||||||
@ -1146,17 +1107,13 @@ int CBasePlayer::__MAKE_VHOOK(TakeDamage)(entvars_t *pevInflictor, entvars_t *pe
|
|||||||
if (!IsAlive())
|
if (!IsAlive())
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
pAttacker = GetClassPtr((CBaseEntity *)pevAttacker);
|
pAttacker = GetClassPtr<CCSEntity>((CBaseEntity *)pevAttacker);
|
||||||
|
|
||||||
if (pAttacker->IsPlayer())
|
if (pAttacker->IsPlayer())
|
||||||
{
|
{
|
||||||
pAttack = GetClassPtr((CBasePlayer *)pevAttacker);
|
pAttack = GetClassPtr<CCSPlayer>((CBasePlayer *)pevAttacker);
|
||||||
|
|
||||||
bool bAttackFFA = false;
|
bool bAttackFFA = CSGameRules()->IsFriendlyFireAttack();
|
||||||
#ifdef REGAMEDLL_ADD
|
|
||||||
if (friendlyfire.string[0] == '2')
|
|
||||||
bAttackFFA = true;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// warn about team attacks
|
// warn about team attacks
|
||||||
if (pAttack != this && pAttack->m_iTeam == m_iTeam && !bAttackFFA)
|
if (pAttack != this && pAttack->m_iTeam == m_iTeam && !bAttackFFA)
|
||||||
@ -1185,7 +1142,7 @@ int CBasePlayer::__MAKE_VHOOK(TakeDamage)(entvars_t *pevInflictor, entvars_t *pe
|
|||||||
if (FNullEnt(pBasePlayer->edict()))
|
if (FNullEnt(pBasePlayer->edict()))
|
||||||
break;
|
break;
|
||||||
|
|
||||||
CBasePlayer *basePlayer = GetClassPtr((CBasePlayer *)pBasePlayer->pev);
|
CBasePlayer *basePlayer = GetClassPtr<CCSPlayer>((CBasePlayer *)pBasePlayer->pev);
|
||||||
|
|
||||||
if (basePlayer->m_iTeam == m_iTeam)
|
if (basePlayer->m_iTeam == m_iTeam)
|
||||||
{
|
{
|
||||||
@ -1386,17 +1343,20 @@ void packPlayerItem(CBasePlayer *pPlayer, CBasePlayerItem *pItem, bool packAmmo)
|
|||||||
const char *modelName = GetCSModelName(pItem->m_iId);
|
const char *modelName = GetCSModelName(pItem->m_iId);
|
||||||
if (modelName != NULL)
|
if (modelName != NULL)
|
||||||
{
|
{
|
||||||
|
// create a box to pack the stuff into.
|
||||||
CWeaponBox *pWeaponBox = (CWeaponBox *)CBaseEntity::Create("weaponbox", pPlayer->pev->origin, pPlayer->pev->angles, ENT(pPlayer->pev));
|
CWeaponBox *pWeaponBox = (CWeaponBox *)CBaseEntity::Create("weaponbox", pPlayer->pev->origin, pPlayer->pev->angles, ENT(pPlayer->pev));
|
||||||
|
|
||||||
|
// don't let weaponbox tilt.
|
||||||
pWeaponBox->pev->angles.x = 0;
|
pWeaponBox->pev->angles.x = 0;
|
||||||
pWeaponBox->pev->angles.z = 0;
|
pWeaponBox->pev->angles.z = 0;
|
||||||
|
|
||||||
pWeaponBox->pev->velocity = pPlayer->pev->velocity * 0.75;
|
pWeaponBox->pev->velocity = pPlayer->pev->velocity * 0.75f;
|
||||||
|
|
||||||
pWeaponBox->SetThink(&CWeaponBox::Kill);
|
pWeaponBox->SetThink(&CWeaponBox::Kill);
|
||||||
pWeaponBox->pev->nextthink = gpGlobals->time + 300.0f;
|
pWeaponBox->pev->nextthink = gpGlobals->time + 300.0f;
|
||||||
pWeaponBox->PackWeapon(pItem);
|
pWeaponBox->PackWeapon(pItem); // now pack all of the items in the lists
|
||||||
|
|
||||||
|
// pack the ammo
|
||||||
if (packAmmo)
|
if (packAmmo)
|
||||||
{
|
{
|
||||||
pWeaponBox->PackAmmo(MAKE_STRING(IMPL_CLASS(CBasePlayerItem, ItemInfoArray)[pItem->m_iId].pszAmmo1), pPlayer->m_rgAmmo[pItem->PrimaryAmmoIndex()]);
|
pWeaponBox->PackAmmo(MAKE_STRING(IMPL_CLASS(CBasePlayerItem, ItemInfoArray)[pItem->m_iId].pszAmmo1), pPlayer->m_rgAmmo[pItem->PrimaryAmmoIndex()]);
|
||||||
@ -1405,8 +1365,64 @@ void packPlayerItem(CBasePlayer *pPlayer, CBasePlayerItem *pItem, bool packAmmo)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef REGAMEDLL_ADD
|
||||||
|
void packPlayerNade(CBasePlayer *pPlayer, CBasePlayerItem *pItem, bool packAmmo)
|
||||||
|
{
|
||||||
|
if (pItem == NULL)
|
||||||
|
return;
|
||||||
|
|
||||||
|
const char *modelName = GetCSModelName(pItem->m_iId);
|
||||||
|
if (modelName != NULL)
|
||||||
|
{
|
||||||
|
float flOffset = 0.0f;
|
||||||
|
switch (pItem->m_iId)
|
||||||
|
{
|
||||||
|
case WEAPON_HEGRENADE:
|
||||||
|
flOffset = 14.0f;
|
||||||
|
break;
|
||||||
|
case WEAPON_FLASHBANG:
|
||||||
|
flOffset = 0.0f;
|
||||||
|
break;
|
||||||
|
case WEAPON_SMOKEGRENADE:
|
||||||
|
flOffset = -14.0f;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
Vector vecAngles = pPlayer->pev->angles;
|
||||||
|
Vector dir(Q_cos(vecAngles.y) * flOffset, Q_sin(vecAngles.y) * flOffset, 0.0f);
|
||||||
|
|
||||||
|
vecAngles.x = 0.0f;
|
||||||
|
vecAngles.y += 45.0f;
|
||||||
|
|
||||||
|
// create a box to pack the stuff into.
|
||||||
|
CWeaponBox *pWeaponBox = (CWeaponBox *)CBaseEntity::Create("weaponbox", pPlayer->pev->origin + dir, vecAngles, ENT(pPlayer->pev));
|
||||||
|
|
||||||
|
// don't let weaponbox tilt.
|
||||||
|
pWeaponBox->pev->angles.x = 0;
|
||||||
|
pWeaponBox->pev->angles.z = 0;
|
||||||
|
|
||||||
|
pWeaponBox->pev->velocity = pPlayer->pev->velocity * 0.75f;
|
||||||
|
|
||||||
|
pWeaponBox->SetThink(&CWeaponBox::Kill);
|
||||||
|
pWeaponBox->pev->nextthink = gpGlobals->time + 300.0f;
|
||||||
|
pWeaponBox->PackWeapon(pItem); // now pack all of the items in the lists
|
||||||
|
|
||||||
|
// pack the ammo
|
||||||
|
if (packAmmo)
|
||||||
|
{
|
||||||
|
pWeaponBox->PackAmmo(MAKE_STRING(IMPL_CLASS(CBasePlayerItem, ItemInfoArray)[pItem->m_iId].pszAmmo1), pPlayer->m_rgAmmo[pItem->PrimaryAmmoIndex()]);
|
||||||
|
}
|
||||||
|
SET_MODEL(ENT(pWeaponBox->pev), modelName);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// PackDeadPlayerItems - call this when a player dies to
|
||||||
|
// pack up the appropriate weapons and ammo items, and to
|
||||||
|
// destroy anything that shouldn't be packed.
|
||||||
void CBasePlayer::PackDeadPlayerItems()
|
void CBasePlayer::PackDeadPlayerItems()
|
||||||
{
|
{
|
||||||
|
// get the game rules
|
||||||
bool bPackGun = (g_pGameRules->DeadPlayerWeapons(this) != GR_PLR_DROP_GUN_NO);
|
bool bPackGun = (g_pGameRules->DeadPlayerWeapons(this) != GR_PLR_DROP_GUN_NO);
|
||||||
bool bPackAmmo = (g_pGameRules->DeadPlayerAmmo(this) != GR_PLR_DROP_AMMO_NO);
|
bool bPackAmmo = (g_pGameRules->DeadPlayerAmmo(this) != GR_PLR_DROP_AMMO_NO);
|
||||||
|
|
||||||
@ -1422,8 +1438,9 @@ void CBasePlayer::PackDeadPlayerItems()
|
|||||||
int nBestWeight = 0;
|
int nBestWeight = 0;
|
||||||
CBasePlayerItem *pBestItem = NULL;
|
CBasePlayerItem *pBestItem = NULL;
|
||||||
|
|
||||||
for (int n = 0; n < MAX_ITEM_TYPES; n++)
|
for (int n = 0; n < MAX_ITEM_TYPES; ++n)
|
||||||
{
|
{
|
||||||
|
// there's a weapon here. Should I pack it?
|
||||||
CBasePlayerItem *pPlayerItem = m_rgpPlayerItems[ n ];
|
CBasePlayerItem *pPlayerItem = m_rgpPlayerItems[ n ];
|
||||||
|
|
||||||
while (pPlayerItem != NULL)
|
while (pPlayerItem != NULL)
|
||||||
@ -1441,19 +1458,43 @@ void CBasePlayer::PackDeadPlayerItems()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
// drop a grenade after death
|
// drop a grenade after death
|
||||||
else if (pPlayerItem->iItemSlot() == GRENADE_SLOT && g_bIsCzeroGame)
|
else if (pPlayerItem->iItemSlot() == GRENADE_SLOT)
|
||||||
packPlayerItem(this, pPlayerItem, true);
|
{
|
||||||
|
if (g_bIsCzeroGame)
|
||||||
|
packPlayerItem(this, pPlayerItem, true);
|
||||||
|
#ifdef REGAMEDLL_ADD
|
||||||
|
else
|
||||||
|
{
|
||||||
|
switch ((int)nadedrops.value)
|
||||||
|
{
|
||||||
|
case 1:
|
||||||
|
packPlayerItem(this, pPlayerItem, true);
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
{
|
||||||
|
CBasePlayerItem *pNext = pPlayerItem->m_pNext;
|
||||||
|
packPlayerNade(this, pPlayerItem, true);
|
||||||
|
pPlayerItem = pNext;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
pPlayerItem = pPlayerItem->m_pNext;
|
pPlayerItem = pPlayerItem->m_pNext;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
packPlayerItem(this, pBestItem, bPackAmmo);
|
packPlayerItem(this, pBestItem, bPackAmmo);
|
||||||
}
|
}
|
||||||
|
|
||||||
RemoveAllItems(TRUE);
|
RemoveAllItems(TRUE);
|
||||||
}
|
}
|
||||||
|
|
||||||
void CBasePlayer::GiveDefaultItems()
|
LINK_HOOK_CLASS_VOID_CHAIN2(CBasePlayer, GiveDefaultItems);
|
||||||
|
|
||||||
|
void CBasePlayer::__API_HOOK(GiveDefaultItems)()
|
||||||
{
|
{
|
||||||
RemoveAllItems(FALSE);
|
RemoveAllItems(FALSE);
|
||||||
m_bHasPrimary = false;
|
m_bHasPrimary = false;
|
||||||
@ -1605,7 +1646,7 @@ void CBasePlayer::SetProgressBarTime(int time)
|
|||||||
if (FNullEnt(pPlayer->edict()))
|
if (FNullEnt(pPlayer->edict()))
|
||||||
break;
|
break;
|
||||||
|
|
||||||
CBasePlayer *player = GetClassPtr((CBasePlayer *)pPlayer->pev);
|
CBasePlayer *player = GetClassPtr<CCSPlayer>((CBasePlayer *)pPlayer->pev);
|
||||||
|
|
||||||
if (player->IsObserver() == OBS_IN_EYE && player->pev->iuser2 == myIndex)
|
if (player->IsObserver() == OBS_IN_EYE && player->pev->iuser2 == myIndex)
|
||||||
{
|
{
|
||||||
@ -1645,7 +1686,7 @@ void CBasePlayer::SetProgressBarTime2(int time, float timeElapsed)
|
|||||||
if (FNullEnt(pPlayer->edict()))
|
if (FNullEnt(pPlayer->edict()))
|
||||||
break;
|
break;
|
||||||
|
|
||||||
CBasePlayer *player = GetClassPtr((CBasePlayer *)pPlayer->pev);
|
CBasePlayer *player = GetClassPtr<CCSPlayer>((CBasePlayer *)pPlayer->pev);
|
||||||
|
|
||||||
if (player->IsObserver() == OBS_IN_EYE && player->pev->iuser2 == myIndex)
|
if (player->IsObserver() == OBS_IN_EYE && player->pev->iuser2 == myIndex)
|
||||||
{
|
{
|
||||||
@ -1840,7 +1881,9 @@ void CBasePlayer::SendFOV(int fov)
|
|||||||
MESSAGE_END();
|
MESSAGE_END();
|
||||||
}
|
}
|
||||||
|
|
||||||
void CBasePlayer::__MAKE_VHOOK(Killed)(entvars_t *pevAttacker, int iGib)
|
LINK_HOOK_CLASS_VOID_CHAIN(CBasePlayer, Killed, (entvars_t *pevAttacker, int iGib), pevAttacker, iGib);
|
||||||
|
|
||||||
|
void CBasePlayer::__API_VHOOK(Killed)(entvars_t *pevAttacker, int iGib)
|
||||||
{
|
{
|
||||||
m_canSwitchObserverModes = false;
|
m_canSwitchObserverModes = false;
|
||||||
|
|
||||||
@ -1937,13 +1980,14 @@ void CBasePlayer::__MAKE_VHOOK(Killed)(entvars_t *pevAttacker, int iGib)
|
|||||||
m_pTank = NULL;
|
m_pTank = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifndef REGAMEDLL_FIXES
|
||||||
CSound *pSound = CSoundEnt::SoundPointerForIndex(CSoundEnt::ClientSoundIndex(edict()));
|
CSound *pSound = CSoundEnt::SoundPointerForIndex(CSoundEnt::ClientSoundIndex(edict()));
|
||||||
|
|
||||||
if (pSound != NULL)
|
if (pSound != NULL)
|
||||||
{
|
{
|
||||||
pSound->Reset();
|
pSound->Reset();
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
SetAnimation(PLAYER_DIE);
|
SetAnimation(PLAYER_DIE);
|
||||||
|
|
||||||
if (m_pActiveItem != NULL && m_pActiveItem->m_pPlayer != NULL)
|
if (m_pActiveItem != NULL && m_pActiveItem->m_pPlayer != NULL)
|
||||||
@ -2153,7 +2197,9 @@ BOOL CBasePlayer::IsBombGuy()
|
|||||||
return m_bHasC4;
|
return m_bHasC4;
|
||||||
}
|
}
|
||||||
|
|
||||||
void CBasePlayer::SetAnimation(PLAYER_ANIM playerAnim)
|
LINK_HOOK_CLASS_VOID_CHAIN(CBasePlayer, SetAnimation, (PLAYER_ANIM playerAnim), playerAnim);
|
||||||
|
|
||||||
|
void CBasePlayer::__API_HOOK(SetAnimation)(PLAYER_ANIM playerAnim)
|
||||||
{
|
{
|
||||||
int animDesired;
|
int animDesired;
|
||||||
float speed;
|
float speed;
|
||||||
@ -2858,7 +2904,7 @@ NOXREF void CBasePlayer::ThrowWeapon(char *pszItemName)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
LINK_ENTITY_TO_CLASS(weapon_shield, CWShield);
|
LINK_ENTITY_TO_CLASS(weapon_shield, CWShield, CCSShield);
|
||||||
|
|
||||||
void CWShield::__MAKE_VHOOK(Spawn)()
|
void CWShield::__MAKE_VHOOK(Spawn)()
|
||||||
{
|
{
|
||||||
@ -2910,7 +2956,9 @@ void CWShield::__MAKE_VHOOK(Touch)(CBaseEntity *pOther)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void CBasePlayer::GiveShield(bool bDeploy)
|
LINK_HOOK_CLASS_VOID_CHAIN(CBasePlayer, GiveShield, (bool bDeploy), bDeploy);
|
||||||
|
|
||||||
|
void CBasePlayer::__API_HOOK(GiveShield)(bool bDeploy)
|
||||||
{
|
{
|
||||||
m_bOwnsShield = true;
|
m_bOwnsShield = true;
|
||||||
m_bHasPrimary = true;
|
m_bHasPrimary = true;
|
||||||
@ -3023,7 +3071,9 @@ NOXREF void CBasePlayer::ThrowPrimary()
|
|||||||
DropShield();
|
DropShield();
|
||||||
}
|
}
|
||||||
|
|
||||||
void CBasePlayer::AddAccount(int amount, bool bTrackChange)
|
LINK_HOOK_CLASS_VOID_CHAIN(CBasePlayer, AddAccount, (int amount, bool bTrackChange), amount, bTrackChange);
|
||||||
|
|
||||||
|
void CBasePlayer::__API_HOOK(AddAccount)(int amount, bool bTrackChange)
|
||||||
{
|
{
|
||||||
m_iAccount += amount;
|
m_iAccount += amount;
|
||||||
|
|
||||||
@ -3285,21 +3335,7 @@ void CBasePlayer::JoiningThink()
|
|||||||
|
|
||||||
MESSAGE_BEGIN(MSG_ALL, gmsgTeamInfo);
|
MESSAGE_BEGIN(MSG_ALL, gmsgTeamInfo);
|
||||||
WRITE_BYTE(entindex());
|
WRITE_BYTE(entindex());
|
||||||
switch (m_iTeam)
|
WRITE_STRING(GetTeamName(m_iTeam));
|
||||||
{
|
|
||||||
case CT:
|
|
||||||
WRITE_STRING("CT");
|
|
||||||
break;
|
|
||||||
case TERRORIST:
|
|
||||||
WRITE_STRING("TERRORIST");
|
|
||||||
break;
|
|
||||||
case SPECTATOR:
|
|
||||||
WRITE_STRING("SPECTATOR");
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
WRITE_STRING("UNASSIGNED");
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
MESSAGE_END();
|
MESSAGE_END();
|
||||||
|
|
||||||
MESSAGE_BEGIN(MSG_ALL, gmsgLocation);
|
MESSAGE_BEGIN(MSG_ALL, gmsgLocation);
|
||||||
@ -3366,12 +3402,14 @@ void CBasePlayer::Disappear()
|
|||||||
m_pTank = NULL;
|
m_pTank = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifndef REGAMEDLL_FIXES
|
||||||
CSound *pSound = CSoundEnt::SoundPointerForIndex(CSoundEnt::ClientSoundIndex(edict()));
|
CSound *pSound = CSoundEnt::SoundPointerForIndex(CSoundEnt::ClientSoundIndex(edict()));
|
||||||
|
|
||||||
if (pSound)
|
if (pSound)
|
||||||
{
|
{
|
||||||
pSound->Reset();
|
pSound->Reset();
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
m_fSequenceFinished = TRUE;
|
m_fSequenceFinished = TRUE;
|
||||||
pev->modelindex = m_modelIndexPlayer;
|
pev->modelindex = m_modelIndexPlayer;
|
||||||
@ -3517,7 +3555,9 @@ void CBasePlayer::PlayerDeathThink()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void CBasePlayer::__MAKE_VHOOK(RoundRespawn)()
|
LINK_HOOK_CLASS_VOID_CHAIN2(CBasePlayer, RoundRespawn);
|
||||||
|
|
||||||
|
void CBasePlayer::__API_VHOOK(RoundRespawn)()
|
||||||
{
|
{
|
||||||
m_canSwitchObserverModes = true;
|
m_canSwitchObserverModes = true;
|
||||||
|
|
||||||
@ -3861,7 +3901,9 @@ void CBasePlayer::HostageUsed()
|
|||||||
m_flDisplayHistory |= DHF_HOSTAGE_USED;
|
m_flDisplayHistory |= DHF_HOSTAGE_USED;
|
||||||
}
|
}
|
||||||
|
|
||||||
void CBasePlayer::__MAKE_VHOOK(Jump)()
|
LINK_HOOK_CLASS_VOID_CHAIN2(CBasePlayer, Jump);
|
||||||
|
|
||||||
|
void CBasePlayer::__API_VHOOK(Jump)()
|
||||||
{
|
{
|
||||||
if (pev->flags & FL_WATERJUMP)
|
if (pev->flags & FL_WATERJUMP)
|
||||||
return;
|
return;
|
||||||
@ -3931,19 +3973,32 @@ NOXREF void FixPlayerCrouchStuck(edict_t *pPlayer)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void CBasePlayer::__MAKE_VHOOK(Duck)()
|
LINK_HOOK_CLASS_VOID_CHAIN2(CBasePlayer, Duck);
|
||||||
|
|
||||||
|
void CBasePlayer::__API_VHOOK(Duck)()
|
||||||
{
|
{
|
||||||
if (pev->button & IN_DUCK)
|
if (pev->button & IN_DUCK)
|
||||||
SetAnimation(PLAYER_WALK);
|
SetAnimation(PLAYER_WALK);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
LINK_HOOK_CLASS_CHAIN2(int, CBasePlayer, ObjectCaps);
|
||||||
|
|
||||||
|
int CBasePlayer::__API_VHOOK(ObjectCaps)()
|
||||||
|
{
|
||||||
|
return (CBaseMonster::ObjectCaps() & ~FCAP_ACROSS_TRANSITION);
|
||||||
|
}
|
||||||
|
|
||||||
|
LINK_HOOK_CLASS_CHAIN2(int, CBasePlayer, Classify);
|
||||||
|
|
||||||
// ID's player as such.
|
// ID's player as such.
|
||||||
int CBasePlayer::__MAKE_VHOOK(Classify)()
|
int CBasePlayer::__API_VHOOK(Classify)()
|
||||||
{
|
{
|
||||||
return CLASS_PLAYER;
|
return CLASS_PLAYER;
|
||||||
}
|
}
|
||||||
|
|
||||||
void CBasePlayer::__MAKE_VHOOK(AddPoints)(int score, BOOL bAllowNegativeScore)
|
LINK_HOOK_CLASS_VOID_CHAIN(CBasePlayer, AddPoints, (int score, BOOL bAllowNegativeScore), score, bAllowNegativeScore);
|
||||||
|
|
||||||
|
void CBasePlayer::__API_VHOOK(AddPoints)(int score, BOOL bAllowNegativeScore)
|
||||||
{
|
{
|
||||||
// Positive score always adds
|
// Positive score always adds
|
||||||
if (score < 0 && !bAllowNegativeScore)
|
if (score < 0 && !bAllowNegativeScore)
|
||||||
@ -3970,7 +4025,9 @@ void CBasePlayer::__MAKE_VHOOK(AddPoints)(int score, BOOL bAllowNegativeScore)
|
|||||||
MESSAGE_END();
|
MESSAGE_END();
|
||||||
}
|
}
|
||||||
|
|
||||||
void CBasePlayer::__MAKE_VHOOK(AddPointsToTeam)(int score, BOOL bAllowNegativeScore)
|
LINK_HOOK_CLASS_VOID_CHAIN(CBasePlayer, AddPointsToTeam, (int score, BOOL bAllowNegativeScore), score, bAllowNegativeScore);
|
||||||
|
|
||||||
|
void CBasePlayer::__API_VHOOK(AddPointsToTeam)(int score, BOOL bAllowNegativeScore)
|
||||||
{
|
{
|
||||||
int index = entindex();
|
int index = entindex();
|
||||||
|
|
||||||
@ -4058,7 +4115,9 @@ bool CBasePlayer::CanPlayerBuy(bool display)
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void CBasePlayer::__MAKE_VHOOK(PreThink)()
|
LINK_HOOK_CLASS_VOID_CHAIN2(CBasePlayer, PreThink);
|
||||||
|
|
||||||
|
void CBasePlayer::__API_VHOOK(PreThink)()
|
||||||
{
|
{
|
||||||
// These buttons have changed this frame
|
// These buttons have changed this frame
|
||||||
int buttonsChanged = (m_afButtonLast ^ pev->button);
|
int buttonsChanged = (m_afButtonLast ^ pev->button);
|
||||||
@ -4529,9 +4588,8 @@ void CBasePlayer::UpdatePlayerSound()
|
|||||||
{
|
{
|
||||||
int iBodyVolume;
|
int iBodyVolume;
|
||||||
int iVolume;
|
int iVolume;
|
||||||
CSound *pSound;
|
|
||||||
|
|
||||||
pSound = CSoundEnt::SoundPointerForIndex(CSoundEnt::ClientSoundIndex(edict()));
|
CSound *pSound = CSoundEnt::SoundPointerForIndex(CSoundEnt::ClientSoundIndex(edict()));
|
||||||
|
|
||||||
if (!pSound)
|
if (!pSound)
|
||||||
{
|
{
|
||||||
@ -4633,7 +4691,9 @@ void CBasePlayer::UpdatePlayerSound()
|
|||||||
gpGlobals->v_forward.z = 0;
|
gpGlobals->v_forward.z = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void CBasePlayer::__MAKE_VHOOK(PostThink)()
|
LINK_HOOK_CLASS_VOID_CHAIN2(CBasePlayer, PostThink);
|
||||||
|
|
||||||
|
void CBasePlayer::__API_VHOOK(PostThink)()
|
||||||
{
|
{
|
||||||
// intermission or finale
|
// intermission or finale
|
||||||
if (g_fGameOver)
|
if (g_fGameOver)
|
||||||
@ -4703,10 +4763,12 @@ void CBasePlayer::__MAKE_VHOOK(PostThink)()
|
|||||||
|
|
||||||
if (pev->flags & FL_ONGROUND)
|
if (pev->flags & FL_ONGROUND)
|
||||||
{
|
{
|
||||||
|
#ifndef REGAMEDLL_FIXES
|
||||||
if (m_flFallVelocity > 64.0f && !g_pGameRules->IsMultiplayer())
|
if (m_flFallVelocity > 64.0f && !g_pGameRules->IsMultiplayer())
|
||||||
{
|
{
|
||||||
CSoundEnt::InsertSound(bits_SOUND_PLAYER, pev->origin, m_flFallVelocity, 0.2);
|
CSoundEnt::InsertSound(bits_SOUND_PLAYER, pev->origin, m_flFallVelocity, 0.2);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
m_flFallVelocity = 0;
|
m_flFallVelocity = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -4724,7 +4786,11 @@ void CBasePlayer::__MAKE_VHOOK(PostThink)()
|
|||||||
|
|
||||||
StudioFrameAdvance();
|
StudioFrameAdvance();
|
||||||
CheckPowerups();
|
CheckPowerups();
|
||||||
|
|
||||||
|
// s1lent: this is useless for CS 1.6
|
||||||
|
#ifndef REGAMEDLL_FIXES
|
||||||
UpdatePlayerSound();
|
UpdatePlayerSound();
|
||||||
|
#endif
|
||||||
|
|
||||||
pt_end:
|
pt_end:
|
||||||
#ifdef CLIENT_WEAPONS
|
#ifdef CLIENT_WEAPONS
|
||||||
@ -4973,7 +5039,9 @@ void SetScoreAttrib(CBasePlayer *dest, CBasePlayer *src)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void CBasePlayer::__MAKE_VHOOK(Spawn)()
|
LINK_HOOK_CLASS_VOID_CHAIN2(CBasePlayer, Spawn);
|
||||||
|
|
||||||
|
void CBasePlayer::__API_VHOOK(Spawn)()
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
@ -5258,21 +5326,7 @@ void CBasePlayer::__MAKE_VHOOK(Spawn)()
|
|||||||
|
|
||||||
MESSAGE_BEGIN(MSG_ALL, gmsgTeamInfo);
|
MESSAGE_BEGIN(MSG_ALL, gmsgTeamInfo);
|
||||||
WRITE_BYTE(entindex());
|
WRITE_BYTE(entindex());
|
||||||
switch (m_iTeam)
|
WRITE_STRING(GetTeamName(m_iTeam));
|
||||||
{
|
|
||||||
case CT:
|
|
||||||
WRITE_STRING("CT");
|
|
||||||
break;
|
|
||||||
case TERRORIST:
|
|
||||||
WRITE_STRING("TERRORIST");
|
|
||||||
break;
|
|
||||||
case SPECTATOR:
|
|
||||||
WRITE_STRING("SPECTATOR");
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
WRITE_STRING("UNASSIGNED");
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
MESSAGE_END();
|
MESSAGE_END();
|
||||||
|
|
||||||
UpdateLocation(true);
|
UpdateLocation(true);
|
||||||
@ -5314,8 +5368,11 @@ void CBasePlayer::__MAKE_VHOOK(Spawn)()
|
|||||||
m_flLastCommandTime[i] = -1;
|
m_flLastCommandTime[i] = -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
void CBasePlayer::__MAKE_VHOOK(Precache)()
|
LINK_HOOK_CLASS_VOID_CHAIN2(CBasePlayer, Precache);
|
||||||
|
|
||||||
|
void CBasePlayer::__API_VHOOK(Precache)()
|
||||||
{
|
{
|
||||||
|
#ifndef REGAMEDLL_FIXES
|
||||||
// in the event that the player JUST spawned, and the level node graph
|
// in the event that the player JUST spawned, and the level node graph
|
||||||
// was loaded, fix all of the node graph pointers before the game starts.
|
// was loaded, fix all of the node graph pointers before the game starts.
|
||||||
|
|
||||||
@ -5331,7 +5388,7 @@ void CBasePlayer::__MAKE_VHOOK(Precache)()
|
|||||||
ALERT(at_console, "**Graph Pointers Set!\n");
|
ALERT(at_console, "**Graph Pointers Set!\n");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
// SOUNDS / MODELS ARE PRECACHED in ClientPrecache() (game specific)
|
// SOUNDS / MODELS ARE PRECACHED in ClientPrecache() (game specific)
|
||||||
// because they need to precache before any clients have connected
|
// because they need to precache before any clients have connected
|
||||||
|
|
||||||
@ -5654,7 +5711,7 @@ void CSprayCan::Spawn(entvars_t *pevOwner)
|
|||||||
pev->owner = ENT(pevOwner);
|
pev->owner = ENT(pevOwner);
|
||||||
pev->frame = 0;
|
pev->frame = 0;
|
||||||
|
|
||||||
pev->nextthink = gpGlobals->time + 0.1;
|
pev->nextthink = gpGlobals->time + 0.1f;
|
||||||
EMIT_SOUND(ENT(pev), CHAN_VOICE, "player/sprayer.wav", VOL_NORM, ATTN_NORM);
|
EMIT_SOUND(ENT(pev), CHAN_VOICE, "player/sprayer.wav", VOL_NORM, ATTN_NORM);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -5692,7 +5749,7 @@ void CSprayCan::__MAKE_VHOOK(Think)()
|
|||||||
UTIL_Remove(this);
|
UTIL_Remove(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
pev->nextthink = gpGlobals->time + 0.1;
|
pev->nextthink = gpGlobals->time + 0.1f;
|
||||||
}
|
}
|
||||||
|
|
||||||
void CBloodSplat::Spawn(entvars_t *pevOwner)
|
void CBloodSplat::Spawn(entvars_t *pevOwner)
|
||||||
@ -5702,7 +5759,7 @@ void CBloodSplat::Spawn(entvars_t *pevOwner)
|
|||||||
pev->owner = ENT(pevOwner);
|
pev->owner = ENT(pevOwner);
|
||||||
|
|
||||||
SetThink(&CBloodSplat::Spray);
|
SetThink(&CBloodSplat::Spray);
|
||||||
pev->nextthink = gpGlobals->time + 0.1;
|
pev->nextthink = gpGlobals->time + 0.1f;
|
||||||
}
|
}
|
||||||
|
|
||||||
void CBloodSplat::Spray()
|
void CBloodSplat::Spray()
|
||||||
@ -5716,10 +5773,12 @@ void CBloodSplat::Spray()
|
|||||||
}
|
}
|
||||||
|
|
||||||
SetThink(&CBloodSplat::SUB_Remove);
|
SetThink(&CBloodSplat::SUB_Remove);
|
||||||
pev->nextthink = gpGlobals->time + 0.1;
|
pev->nextthink = gpGlobals->time + 0.1f;
|
||||||
}
|
}
|
||||||
|
|
||||||
void CBasePlayer::GiveNamedItem(const char *pszName)
|
LINK_HOOK_CLASS_VOID_CHAIN(CBasePlayer, GiveNamedItem, (const char *pszName), pszName);
|
||||||
|
|
||||||
|
void CBasePlayer::__API_HOOK(GiveNamedItem)(const char *pszName)
|
||||||
{
|
{
|
||||||
string_t istr = MAKE_STRING(pszName);
|
string_t istr = MAKE_STRING(pszName);
|
||||||
edict_t *pent = CREATE_NAMED_ENTITY(istr);
|
edict_t *pent = CREATE_NAMED_ENTITY(istr);
|
||||||
@ -5803,7 +5862,9 @@ void CBasePlayer::ForceClientDllUpdate()
|
|||||||
HandleSignals();
|
HandleSignals();
|
||||||
}
|
}
|
||||||
|
|
||||||
void CBasePlayer::__MAKE_VHOOK(ImpulseCommands)()
|
LINK_HOOK_CLASS_VOID_CHAIN2(CBasePlayer, ImpulseCommands);
|
||||||
|
|
||||||
|
void CBasePlayer::__API_VHOOK(ImpulseCommands)()
|
||||||
{
|
{
|
||||||
TraceResult tr;
|
TraceResult tr;
|
||||||
|
|
||||||
@ -5863,7 +5924,7 @@ void CBasePlayer::__MAKE_VHOOK(ImpulseCommands)()
|
|||||||
{
|
{
|
||||||
// line hit something, so paint a decal
|
// line hit something, so paint a decal
|
||||||
m_flNextDecalTime = gpGlobals->time + CVAR_GET_FLOAT("decalfrequency");
|
m_flNextDecalTime = gpGlobals->time + CVAR_GET_FLOAT("decalfrequency");
|
||||||
CSprayCan *pCan = GetClassPtr((CSprayCan *)NULL);
|
CSprayCan *pCan = GetClassPtr<CCSSprayCan>((CSprayCan *)NULL);
|
||||||
pCan->Spawn(pev);
|
pCan->Spawn(pev);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@ -5991,11 +6052,13 @@ void CBasePlayer::CheatImpulseCommands(int iImpulse)
|
|||||||
// show shortest paths for entire level to nearest node
|
// show shortest paths for entire level to nearest node
|
||||||
Create("node_viewer_human", pev->origin, pev->angles);
|
Create("node_viewer_human", pev->origin, pev->angles);
|
||||||
break;
|
break;
|
||||||
|
#ifndef REGAMEDLL_FIXES
|
||||||
case 199:
|
case 199:
|
||||||
// show nearest node and all connections
|
// show nearest node and all connections
|
||||||
ALERT(at_console, "%d\n", WorldGraph.FindNearestNode(pev->origin, bits_NODE_LAND));
|
ALERT(at_console, "%d\n", WorldGraph.FindNearestNode(pev->origin, bits_NODE_LAND));
|
||||||
WorldGraph.ShowNodeConnections(WorldGraph.FindNearestNode(pev->origin, bits_NODE_LAND));
|
WorldGraph.ShowNodeConnections(WorldGraph.FindNearestNode(pev->origin, bits_NODE_LAND));
|
||||||
break;
|
break;
|
||||||
|
#endif
|
||||||
case 202:
|
case 202:
|
||||||
{
|
{
|
||||||
// Random blood splatter
|
// Random blood splatter
|
||||||
@ -6005,7 +6068,7 @@ void CBasePlayer::CheatImpulseCommands(int iImpulse)
|
|||||||
if (tr.flFraction != 1.0f)
|
if (tr.flFraction != 1.0f)
|
||||||
{
|
{
|
||||||
// line hit something, so paint a decal
|
// line hit something, so paint a decal
|
||||||
CBloodSplat *pBlood = GetClassPtr((CBloodSplat *)NULL);
|
CBloodSplat *pBlood = GetClassPtr<CCSBloodSplat>((CBloodSplat *)NULL);
|
||||||
pBlood->Spawn(pev);
|
pBlood->Spawn(pev);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@ -6024,7 +6087,7 @@ void CBasePlayer::CheatImpulseCommands(int iImpulse)
|
|||||||
case 204:
|
case 204:
|
||||||
{
|
{
|
||||||
TraceResult tr;
|
TraceResult tr;
|
||||||
Vector dir = Vector(0, 0, 1);
|
Vector dir(0, 0, 1);
|
||||||
|
|
||||||
UTIL_BloodDrips(pev->origin, dir, BLOOD_COLOR_RED, 2000);
|
UTIL_BloodDrips(pev->origin, dir, BLOOD_COLOR_RED, 2000);
|
||||||
|
|
||||||
@ -6151,8 +6214,10 @@ void CBasePlayer::HandleSignals()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
LINK_HOOK_CLASS_CHAIN(BOOL, CBasePlayer, AddPlayerItem, (CBasePlayerItem *pItem), pItem);
|
||||||
|
|
||||||
// Add a weapon to the player (Item == Weapon == Selectable Object)
|
// Add a weapon to the player (Item == Weapon == Selectable Object)
|
||||||
BOOL CBasePlayer::__MAKE_VHOOK(AddPlayerItem)(CBasePlayerItem *pItem)
|
BOOL CBasePlayer::__API_VHOOK(AddPlayerItem)(CBasePlayerItem *pItem)
|
||||||
{
|
{
|
||||||
CBasePlayerItem *pInsert = m_rgpPlayerItems[ pItem->iItemSlot() ];
|
CBasePlayerItem *pInsert = m_rgpPlayerItems[ pItem->iItemSlot() ];
|
||||||
while (pInsert != NULL)
|
while (pInsert != NULL)
|
||||||
@ -6214,7 +6279,9 @@ BOOL CBasePlayer::__MAKE_VHOOK(AddPlayerItem)(CBasePlayerItem *pItem)
|
|||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
BOOL CBasePlayer::__MAKE_VHOOK(RemovePlayerItem)(CBasePlayerItem *pItem)
|
LINK_HOOK_CLASS_CHAIN(BOOL, CBasePlayer, RemovePlayerItem, (CBasePlayerItem *pItem), pItem);
|
||||||
|
|
||||||
|
BOOL CBasePlayer::__API_VHOOK(RemovePlayerItem)(CBasePlayerItem *pItem)
|
||||||
{
|
{
|
||||||
if (m_pActiveItem == pItem)
|
if (m_pActiveItem == pItem)
|
||||||
{
|
{
|
||||||
@ -6249,8 +6316,10 @@ BOOL CBasePlayer::__MAKE_VHOOK(RemovePlayerItem)(CBasePlayerItem *pItem)
|
|||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
LINK_HOOK_CLASS_CHAIN(int, CBasePlayer, GiveAmmo, (int iCount, char *szName, int iMax), iCount, szName, iMax);
|
||||||
|
|
||||||
// Returns the unique ID for the ammo, or -1 if error
|
// Returns the unique ID for the ammo, or -1 if error
|
||||||
int CBasePlayer::__MAKE_VHOOK(GiveAmmo)(int iCount, char *szName, int iMax)
|
int CBasePlayer::__API_VHOOK(GiveAmmo)(int iCount, char *szName, int iMax)
|
||||||
{
|
{
|
||||||
if (pev->flags & FL_SPECTATOR)
|
if (pev->flags & FL_SPECTATOR)
|
||||||
return -1;
|
return -1;
|
||||||
@ -6460,12 +6529,14 @@ void CBasePlayer::SendWeatherInfo()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
LINK_HOOK_CLASS_VOID_CHAIN2(CBasePlayer, UpdateClientData);
|
||||||
|
|
||||||
// resends any changed player HUD info to the client.
|
// resends any changed player HUD info to the client.
|
||||||
// Called every frame by PlayerPreThink
|
// Called every frame by PlayerPreThink
|
||||||
// Also called at start of demo recording and playback by
|
// Also called at start of demo recording and playback by
|
||||||
// ForceClientDllUpdate to ensure the demo gets messages
|
// ForceClientDllUpdate to ensure the demo gets messages
|
||||||
// reflecting all of the HUD state info.
|
// reflecting all of the HUD state info.
|
||||||
void CBasePlayer::__MAKE_VHOOK(UpdateClientData)()
|
void CBasePlayer::__API_VHOOK(UpdateClientData)()
|
||||||
{
|
{
|
||||||
if (m_fInitHUD)
|
if (m_fInitHUD)
|
||||||
{
|
{
|
||||||
@ -6757,7 +6828,7 @@ void CBasePlayer::__MAKE_VHOOK(UpdateClientData)()
|
|||||||
m_tmNextRadarUpdate = gpGlobals->time + 1.0f;
|
m_tmNextRadarUpdate = gpGlobals->time + 1.0f;
|
||||||
|
|
||||||
#ifdef REGAMEDLL_ADD
|
#ifdef REGAMEDLL_ADD
|
||||||
if (friendlyfire.string[0] == '2')
|
if (CSGameRules()->IsFriendlyFireAttack())
|
||||||
vecOrigin = g_vecZero;
|
vecOrigin = g_vecZero;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -6771,7 +6842,7 @@ void CBasePlayer::__MAKE_VHOOK(UpdateClientData)()
|
|||||||
if (!pEntity || i == entindex())
|
if (!pEntity || i == entindex())
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
CBasePlayer *pPlayer = GetClassPtr((CBasePlayer *)pEntity->pev);
|
CBasePlayer *pPlayer = GetClassPtr<CCSPlayer>((CBasePlayer *)pEntity->pev);
|
||||||
|
|
||||||
if (pPlayer->pev->flags == FL_DORMANT)
|
if (pPlayer->pev->flags == FL_DORMANT)
|
||||||
continue;
|
continue;
|
||||||
@ -6832,7 +6903,9 @@ void CBasePlayer::EnableControl(BOOL fControl)
|
|||||||
pev->flags &= ~FL_FROZEN;
|
pev->flags &= ~FL_FROZEN;
|
||||||
}
|
}
|
||||||
|
|
||||||
void CBasePlayer::__MAKE_VHOOK(ResetMaxSpeed)()
|
LINK_HOOK_CLASS_VOID_CHAIN2(CBasePlayer, ResetMaxSpeed);
|
||||||
|
|
||||||
|
void CBasePlayer::__API_VHOOK(ResetMaxSpeed)()
|
||||||
{
|
{
|
||||||
float speed;
|
float speed;
|
||||||
|
|
||||||
@ -6973,7 +7046,9 @@ int CBasePlayer::GetCustomDecalFrames()
|
|||||||
return m_nCustomSprayFrames;
|
return m_nCustomSprayFrames;
|
||||||
}
|
}
|
||||||
|
|
||||||
void CBasePlayer::__MAKE_VHOOK(Blind)(float duration, float holdTime, float fadeTime, int alpha)
|
LINK_HOOK_CLASS_VOID_CHAIN(CBasePlayer, Blind, (float duration, float holdTime, float fadeTime, int alpha), duration, holdTime, fadeTime, alpha);
|
||||||
|
|
||||||
|
void CBasePlayer::__API_VHOOK(Blind)(float duration, float holdTime, float fadeTime, int alpha)
|
||||||
{
|
{
|
||||||
m_blindUntilTime = gpGlobals->time + duration;
|
m_blindUntilTime = gpGlobals->time + duration;
|
||||||
m_blindStartTime = gpGlobals->time;
|
m_blindStartTime = gpGlobals->time;
|
||||||
@ -7199,7 +7274,7 @@ void CBasePlayer::DropPlayerItem(const char *pszItemName)
|
|||||||
|
|
||||||
if (pEntity->pev->flags != FL_DORMANT)
|
if (pEntity->pev->flags != FL_DORMANT)
|
||||||
{
|
{
|
||||||
CBasePlayer *pOther = GetClassPtr((CBasePlayer *)pEntity->pev);
|
CBasePlayer *pOther = GetClassPtr<CCSPlayer>((CBasePlayer *)pEntity->pev);
|
||||||
|
|
||||||
if (pOther->pev->deadflag == DEAD_NO && pOther->m_iTeam == TERRORIST)
|
if (pOther->pev->deadflag == DEAD_NO && pOther->m_iTeam == TERRORIST)
|
||||||
{
|
{
|
||||||
@ -7379,21 +7454,7 @@ void CBasePlayer::SwitchTeam()
|
|||||||
|
|
||||||
MESSAGE_BEGIN(MSG_ALL, gmsgTeamInfo);
|
MESSAGE_BEGIN(MSG_ALL, gmsgTeamInfo);
|
||||||
WRITE_BYTE(entindex());
|
WRITE_BYTE(entindex());
|
||||||
switch (m_iTeam)
|
WRITE_STRING(GetTeamName(m_iTeam));
|
||||||
{
|
|
||||||
case CT:
|
|
||||||
WRITE_STRING("CT");
|
|
||||||
break;
|
|
||||||
case TERRORIST:
|
|
||||||
WRITE_STRING("TERRORIST");
|
|
||||||
break;
|
|
||||||
case SPECTATOR:
|
|
||||||
WRITE_STRING("SPECTATOR");
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
WRITE_STRING("UNASSIGNED");
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
MESSAGE_END();
|
MESSAGE_END();
|
||||||
|
|
||||||
if (TheBots != NULL)
|
if (TheBots != NULL)
|
||||||
@ -7544,7 +7605,7 @@ void CDeadHEV::__MAKE_VHOOK(KeyValue)(KeyValueData *pkvd)
|
|||||||
CBaseMonster::KeyValue(pkvd);
|
CBaseMonster::KeyValue(pkvd);
|
||||||
}
|
}
|
||||||
|
|
||||||
LINK_ENTITY_TO_CLASS(monster_hevsuit_dead, CDeadHEV);
|
LINK_ENTITY_TO_CLASS(monster_hevsuit_dead, CDeadHEV, CCSDeadHEV);
|
||||||
|
|
||||||
void CDeadHEV::__MAKE_VHOOK(Spawn)()
|
void CDeadHEV::__MAKE_VHOOK(Spawn)()
|
||||||
{
|
{
|
||||||
@ -7571,7 +7632,7 @@ void CDeadHEV::__MAKE_VHOOK(Spawn)()
|
|||||||
MonsterInitDead();
|
MonsterInitDead();
|
||||||
}
|
}
|
||||||
|
|
||||||
LINK_ENTITY_TO_CLASS(player_weaponstrip, CStripWeapons);
|
LINK_ENTITY_TO_CLASS(player_weaponstrip, CStripWeapons, CCSStripWeapons);
|
||||||
|
|
||||||
void CStripWeapons::__MAKE_VHOOK(Use)(CBaseEntity *pActivator, CBaseEntity *pCaller, USE_TYPE useType, float value)
|
void CStripWeapons::__MAKE_VHOOK(Use)(CBaseEntity *pActivator, CBaseEntity *pCaller, USE_TYPE useType, float value)
|
||||||
{
|
{
|
||||||
@ -7592,7 +7653,7 @@ void CStripWeapons::__MAKE_VHOOK(Use)(CBaseEntity *pActivator, CBaseEntity *pCal
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
LINK_ENTITY_TO_CLASS(player_loadsaved, CRevertSaved);
|
LINK_ENTITY_TO_CLASS(player_loadsaved, CRevertSaved, CCSRevertSaved);
|
||||||
IMPLEMENT_SAVERESTORE(CRevertSaved, CPointEntity);
|
IMPLEMENT_SAVERESTORE(CRevertSaved, CPointEntity);
|
||||||
|
|
||||||
void CRevertSaved::__MAKE_VHOOK(KeyValue)(KeyValueData *pkvd)
|
void CRevertSaved::__MAKE_VHOOK(KeyValue)(KeyValueData *pkvd)
|
||||||
@ -7669,7 +7730,7 @@ void CInfoIntermission::__MAKE_VHOOK(Think)()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
LINK_ENTITY_TO_CLASS(info_intermission, CInfoIntermission);
|
LINK_ENTITY_TO_CLASS(info_intermission, CInfoIntermission, CCSInfoIntermission);
|
||||||
|
|
||||||
void CBasePlayer::StudioEstimateGait()
|
void CBasePlayer::StudioEstimateGait()
|
||||||
{
|
{
|
||||||
@ -8222,12 +8283,14 @@ void CBasePlayer::AddAutoBuyData(const char *str)
|
|||||||
if (len < sizeof(m_autoBuyString) - 1)
|
if (len < sizeof(m_autoBuyString) - 1)
|
||||||
{
|
{
|
||||||
if (len > 0)
|
if (len > 0)
|
||||||
m_autoBuyString[ len ] = ' ';
|
{
|
||||||
|
Q_strncat(m_autoBuyString, " ", len);
|
||||||
|
}
|
||||||
|
|
||||||
#ifndef REGAMEDLL_FIXES
|
#ifndef REGAMEDLL_FIXES
|
||||||
Q_strncat(m_autoBuyString, str, sizeof(m_autoBuyString) - len);
|
Q_strncat(m_autoBuyString, str, sizeof(m_autoBuyString) - Q_strlen(m_autoBuyString));
|
||||||
#else
|
#else
|
||||||
Q_strncat(m_autoBuyString, str, sizeof(m_autoBuyString) - len - 1);
|
Q_strncat(m_autoBuyString, str, sizeof(m_autoBuyString) - Q_strlen(m_autoBuyString) - 1);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -8241,7 +8304,7 @@ void CBasePlayer::InitRebuyData(const char *str)
|
|||||||
|
|
||||||
if (m_rebuyString != NULL)
|
if (m_rebuyString != NULL)
|
||||||
{
|
{
|
||||||
delete m_rebuyString;
|
delete[] m_rebuyString;
|
||||||
m_rebuyString = NULL;
|
m_rebuyString = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -258,25 +258,9 @@ enum sbar_data
|
|||||||
SBAR_END
|
SBAR_END
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef enum
|
enum MusicState { SILENT, CALM, INTENSE };
|
||||||
{
|
|
||||||
SILENT,
|
|
||||||
CALM,
|
|
||||||
INTENSE
|
|
||||||
|
|
||||||
} MusicState;
|
class CStripWeapons: public CPointEntity {
|
||||||
|
|
||||||
struct WeaponStruct
|
|
||||||
{
|
|
||||||
int m_type;
|
|
||||||
int m_price;
|
|
||||||
int m_side;
|
|
||||||
int m_slot;
|
|
||||||
int m_ammoPrice;
|
|
||||||
};
|
|
||||||
|
|
||||||
class CStripWeapons: public CPointEntity
|
|
||||||
{
|
|
||||||
public:
|
public:
|
||||||
virtual void Use(CBaseEntity *pActivator, CBaseEntity *pCaller, USE_TYPE useType, float value);
|
virtual void Use(CBaseEntity *pActivator, CBaseEntity *pCaller, USE_TYPE useType, float value);
|
||||||
|
|
||||||
@ -288,8 +272,7 @@ public:
|
|||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
class CInfoIntermission: public CPointEntity
|
class CInfoIntermission: public CPointEntity {
|
||||||
{
|
|
||||||
public:
|
public:
|
||||||
virtual void Spawn();
|
virtual void Spawn();
|
||||||
virtual void Think();
|
virtual void Think();
|
||||||
@ -303,8 +286,7 @@ public:
|
|||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
class CDeadHEV: public CBaseMonster
|
class CDeadHEV: public CBaseMonster {
|
||||||
{
|
|
||||||
public:
|
public:
|
||||||
virtual void Spawn();
|
virtual void Spawn();
|
||||||
virtual void KeyValue(KeyValueData *pkvd);
|
virtual void KeyValue(KeyValueData *pkvd);
|
||||||
@ -323,8 +305,7 @@ public:
|
|||||||
static char *m_szPoses[4];
|
static char *m_szPoses[4];
|
||||||
};
|
};
|
||||||
|
|
||||||
class CSprayCan: public CBaseEntity
|
class CSprayCan: public CBaseEntity {
|
||||||
{
|
|
||||||
public:
|
public:
|
||||||
virtual void Think();
|
virtual void Think();
|
||||||
virtual int ObjectCaps()
|
virtual int ObjectCaps()
|
||||||
@ -342,21 +323,19 @@ public:
|
|||||||
void Spawn(entvars_t *pevOwner);
|
void Spawn(entvars_t *pevOwner);
|
||||||
};
|
};
|
||||||
|
|
||||||
class CBloodSplat: public CBaseEntity
|
class CBloodSplat: public CBaseEntity {
|
||||||
{
|
|
||||||
public:
|
public:
|
||||||
void Spawn(entvars_t *pevOwner);
|
void Spawn(entvars_t *pevOwner);
|
||||||
void Spray();
|
void Spray();
|
||||||
};
|
};
|
||||||
|
|
||||||
class CBasePlayer: public CBaseMonster
|
class CBasePlayer: public CBaseMonster {
|
||||||
{
|
|
||||||
public:
|
public:
|
||||||
virtual void Spawn();
|
virtual void Spawn();
|
||||||
virtual void Precache();
|
virtual void Precache();
|
||||||
virtual int Save(CSave &save);
|
virtual int Save(CSave &save);
|
||||||
virtual int Restore(CRestore &restore);
|
virtual int Restore(CRestore &restore);
|
||||||
virtual int ObjectCaps() { return (CBaseMonster::ObjectCaps() & ~FCAP_ACROSS_TRANSITION); }
|
virtual int ObjectCaps();
|
||||||
virtual int Classify();
|
virtual int Classify();
|
||||||
virtual void TraceAttack(entvars_t *pevAttacker, float flDamage, Vector vecDir, TraceResult *ptr, int bitsDamageType);
|
virtual void TraceAttack(entvars_t *pevAttacker, float flDamage, Vector vecDir, TraceResult *ptr, int bitsDamageType);
|
||||||
virtual int TakeDamage(entvars_t *pevInflictor, entvars_t *pevAttacker, float flDamage, int bitsDamageType);
|
virtual int TakeDamage(entvars_t *pevInflictor, entvars_t *pevAttacker, float flDamage, int bitsDamageType);
|
||||||
@ -392,14 +371,14 @@ public:
|
|||||||
virtual void Blind(float flUntilTime, float flHoldTime, float flFadeTime, int iAlpha);
|
virtual void Blind(float flUntilTime, float flHoldTime, float flFadeTime, int iAlpha);
|
||||||
virtual void OnTouchingWeapon(CWeaponBox *pWeapon) { }
|
virtual void OnTouchingWeapon(CWeaponBox *pWeapon) { }
|
||||||
|
|
||||||
#ifdef HOOK_GAMEDLL
|
#if defined(REGAMEDLL_API) || defined(HOOK_GAMEDLL)
|
||||||
|
|
||||||
void Spawn_();
|
void Spawn_();
|
||||||
void Precache_();
|
void Precache_();
|
||||||
|
int ObjectCaps_();
|
||||||
|
int Classify_();
|
||||||
int Save_(CSave &save);
|
int Save_(CSave &save);
|
||||||
int Restore_(CRestore &restore);
|
int Restore_(CRestore &restore);
|
||||||
int Classify_();
|
void TraceAttack_(entvars_t *pevAttacker, float flDamage, VectorRef vecDir, TraceResult *ptr, int bitsDamageType);
|
||||||
void TraceAttack_(entvars_t *pevAttacker, float flDamage, Vector vecDir, TraceResult *ptr, int bitsDamageType);
|
|
||||||
int TakeDamage_(entvars_t *pevInflictor, entvars_t *pevAttacker, float flDamage, int bitsDamageType);
|
int TakeDamage_(entvars_t *pevInflictor, entvars_t *pevAttacker, float flDamage, int bitsDamageType);
|
||||||
int TakeHealth_(float flHealth, int bitsDamageType);
|
int TakeHealth_(float flHealth, int bitsDamageType);
|
||||||
void Killed_(entvars_t *pevAttacker, int iGib);
|
void Killed_(entvars_t *pevAttacker, int iGib);
|
||||||
@ -408,27 +387,28 @@ public:
|
|||||||
BOOL AddPlayerItem_(CBasePlayerItem *pItem);
|
BOOL AddPlayerItem_(CBasePlayerItem *pItem);
|
||||||
BOOL RemovePlayerItem_(CBasePlayerItem *pItem);
|
BOOL RemovePlayerItem_(CBasePlayerItem *pItem);
|
||||||
int GiveAmmo_(int iAmount,char *szName,int iMax);
|
int GiveAmmo_(int iAmount,char *szName,int iMax);
|
||||||
const char *TeamID_();
|
|
||||||
BOOL FBecomeProne_();
|
|
||||||
int Illumination_();
|
|
||||||
void ResetMaxSpeed_();
|
void ResetMaxSpeed_();
|
||||||
void Jump_();
|
void Jump_();
|
||||||
void Duck_();
|
void Duck_();
|
||||||
void PreThink_();
|
void PreThink_();
|
||||||
void PostThink_();
|
void PostThink_();
|
||||||
Vector GetGunPosition_();
|
|
||||||
void UpdateClientData_();
|
void UpdateClientData_();
|
||||||
void ImpulseCommands_();
|
void ImpulseCommands_();
|
||||||
void RoundRespawn_();
|
void RoundRespawn_();
|
||||||
Vector GetAutoaimVector_(float flDelta);
|
|
||||||
void Blind_(float flUntilTime, float flHoldTime, float flFadeTime, int iAlpha);
|
void Blind_(float flUntilTime, float flHoldTime, float flFadeTime, int iAlpha);
|
||||||
|
const char *TeamID_();
|
||||||
#endif // HOOK_GAMEDLL
|
BOOL FBecomeProne_();
|
||||||
|
int Illumination_();
|
||||||
|
Vector GetGunPosition_();
|
||||||
|
Vector GetAutoaimVector_(float flDelta);
|
||||||
|
#endif
|
||||||
|
|
||||||
public:
|
public:
|
||||||
void SpawnClientSideCorpse();
|
void SpawnClientSideCorpse();
|
||||||
void Observer_FindNextPlayer(bool bReverse, const char *name = NULL);
|
void Observer_FindNextPlayer(bool bReverse, const char *name = NULL);
|
||||||
CBaseEntity *Observer_IsValidTarget(int iPlayerIndex, bool bSameTeam);
|
CBaseEntity *Observer_IsValidTarget(int iPlayerIndex, bool bSameTeam);
|
||||||
|
CBaseEntity *Observer_IsValidTarget_(int iPlayerIndex, bool bSameTeam);
|
||||||
|
|
||||||
void Observer_HandleButtons();
|
void Observer_HandleButtons();
|
||||||
void Observer_SetMode(int iMode);
|
void Observer_SetMode(int iMode);
|
||||||
void Observer_CheckTarget();
|
void Observer_CheckTarget();
|
||||||
@ -441,6 +421,7 @@ public:
|
|||||||
void ThrowWeapon(char *pszItemName);
|
void ThrowWeapon(char *pszItemName);
|
||||||
void ThrowPrimary();
|
void ThrowPrimary();
|
||||||
void AddAccount(int amount, bool bTrackChange = true);
|
void AddAccount(int amount, bool bTrackChange = true);
|
||||||
|
void AddAccount_(int amount, bool bTrackChange = true);
|
||||||
void Disappear();
|
void Disappear();
|
||||||
void MakeVIP();
|
void MakeVIP();
|
||||||
bool CanPlayerBuy(bool display = false);
|
bool CanPlayerBuy(bool display = false);
|
||||||
@ -454,6 +435,7 @@ public:
|
|||||||
void RenewItems();
|
void RenewItems();
|
||||||
void PackDeadPlayerItems();
|
void PackDeadPlayerItems();
|
||||||
void GiveDefaultItems();
|
void GiveDefaultItems();
|
||||||
|
void GiveDefaultItems_();
|
||||||
void RemoveAllItems(BOOL removeSuit);
|
void RemoveAllItems(BOOL removeSuit);
|
||||||
void SetBombIcon(BOOL bFlash = FALSE);
|
void SetBombIcon(BOOL bFlash = FALSE);
|
||||||
void SetProgressBarTime(int time);
|
void SetProgressBarTime(int time);
|
||||||
@ -480,6 +462,7 @@ public:
|
|||||||
void UpdatePlayerSound();
|
void UpdatePlayerSound();
|
||||||
void DeathSound();
|
void DeathSound();
|
||||||
void SetAnimation(PLAYER_ANIM playerAnim);
|
void SetAnimation(PLAYER_ANIM playerAnim);
|
||||||
|
void SetAnimation_(PLAYER_ANIM playerAnim);
|
||||||
void SetWeaponAnimType(const char *szExtention) { Q_strcpy(m_szAnimExtention, szExtention); }
|
void SetWeaponAnimType(const char *szExtention) { Q_strcpy(m_szAnimExtention, szExtention); }
|
||||||
void CheatImpulseCommands(int iImpulse);
|
void CheatImpulseCommands(int iImpulse);
|
||||||
void StartDeathCam();
|
void StartDeathCam();
|
||||||
@ -496,6 +479,7 @@ public:
|
|||||||
void ItemPreFrame();
|
void ItemPreFrame();
|
||||||
void ItemPostFrame();
|
void ItemPostFrame();
|
||||||
void GiveNamedItem(const char *pszName);
|
void GiveNamedItem(const char *pszName);
|
||||||
|
void GiveNamedItem_(const char *pszName);
|
||||||
void EnableControl(BOOL fControl);
|
void EnableControl(BOOL fControl);
|
||||||
bool HintMessage(const char *pMessage, BOOL bDisplayIfPlayerDead = FALSE, BOOL bOverride = FALSE);
|
bool HintMessage(const char *pMessage, BOOL bDisplayIfPlayerDead = FALSE, BOOL bOverride = FALSE);
|
||||||
void SendAmmoUpdate();
|
void SendAmmoUpdate();
|
||||||
@ -543,6 +527,7 @@ public:
|
|||||||
void RemoveShield();
|
void RemoveShield();
|
||||||
void DropShield(bool bDeploy = true);
|
void DropShield(bool bDeploy = true);
|
||||||
void GiveShield(bool bDeploy = true);
|
void GiveShield(bool bDeploy = true);
|
||||||
|
void GiveShield_(bool bDeploy = true);
|
||||||
bool IsHittingShield(Vector &vecDirection, TraceResult *ptr);
|
bool IsHittingShield(Vector &vecDirection, TraceResult *ptr);
|
||||||
bool SelectSpawnSpot(const char *pEntClassName, CBaseEntity* &pSpot);
|
bool SelectSpawnSpot(const char *pEntClassName, CBaseEntity* &pSpot);
|
||||||
bool IsReloading()
|
bool IsReloading()
|
||||||
|
@ -35,10 +35,10 @@
|
|||||||
class CRevertSaved: public CPointEntity
|
class CRevertSaved: public CPointEntity
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
void KeyValue(KeyValueData *pkvd);
|
virtual void KeyValue(KeyValueData *pkvd);
|
||||||
int Save(CSave &save);
|
virtual int Save(CSave &save);
|
||||||
int Restore(CRestore &restore);
|
virtual int Restore(CRestore &restore);
|
||||||
void Use(CBaseEntity *pActivator, CBaseEntity *pCaller, USE_TYPE useType, float value);
|
virtual void Use(CBaseEntity *pActivator, CBaseEntity *pCaller, USE_TYPE useType, float value);
|
||||||
|
|
||||||
#ifdef HOOK_GAMEDLL
|
#ifdef HOOK_GAMEDLL
|
||||||
|
|
||||||
|
@ -76,7 +76,7 @@ char grgchTextureType[ CTEXTURESMAX ];
|
|||||||
int fTextureTypeInit;
|
int fTextureTypeInit;
|
||||||
int gcTextures;
|
int gcTextures;
|
||||||
|
|
||||||
LINK_ENTITY_TO_CLASS(ambient_generic, CAmbientGeneric);
|
LINK_ENTITY_TO_CLASS(ambient_generic, CAmbientGeneric, CCSAmbientGeneric);
|
||||||
IMPLEMENT_SAVERESTORE(CAmbientGeneric, CBaseEntity);
|
IMPLEMENT_SAVERESTORE(CAmbientGeneric, CBaseEntity);
|
||||||
|
|
||||||
// -1 : "Default"
|
// -1 : "Default"
|
||||||
@ -851,7 +851,7 @@ void CAmbientGeneric::__MAKE_VHOOK(KeyValue)(KeyValueData *pkvd)
|
|||||||
CBaseEntity::KeyValue(pkvd);
|
CBaseEntity::KeyValue(pkvd);
|
||||||
}
|
}
|
||||||
|
|
||||||
LINK_ENTITY_TO_CLASS(env_sound, CEnvSound);
|
LINK_ENTITY_TO_CLASS(env_sound, CEnvSound, CCSEnvSound);
|
||||||
IMPLEMENT_SAVERESTORE(CEnvSound, CBaseEntity);
|
IMPLEMENT_SAVERESTORE(CEnvSound, CBaseEntity);
|
||||||
|
|
||||||
void CEnvSound::__MAKE_VHOOK(KeyValue)(KeyValueData *pkvd)
|
void CEnvSound::__MAKE_VHOOK(KeyValue)(KeyValueData *pkvd)
|
||||||
@ -872,7 +872,7 @@ void CEnvSound::__MAKE_VHOOK(KeyValue)(KeyValueData *pkvd)
|
|||||||
// and can see the given player entity (pevTarget)
|
// and can see the given player entity (pevTarget)
|
||||||
BOOL FEnvSoundInRange(entvars_t *pev, entvars_t *pevTarget, float *pflRange)
|
BOOL FEnvSoundInRange(entvars_t *pev, entvars_t *pevTarget, float *pflRange)
|
||||||
{
|
{
|
||||||
CEnvSound *pSound = GetClassPtr((CEnvSound *)pev);
|
CEnvSound *pSound = GetClassPtr<CCSEnvSound>((CEnvSound *)pev);
|
||||||
Vector vecSpot1 = pev->origin + pev->view_ofs;
|
Vector vecSpot1 = pev->origin + pev->view_ofs;
|
||||||
Vector vecSpot2 = pevTarget->origin + pevTarget->view_ofs;
|
Vector vecSpot2 = pevTarget->origin + pevTarget->view_ofs;
|
||||||
Vector vecRange;
|
Vector vecRange;
|
||||||
@ -922,7 +922,7 @@ void CEnvSound::__MAKE_VHOOK(Think)()
|
|||||||
goto env_sound_Think_slow;
|
goto env_sound_Think_slow;
|
||||||
}
|
}
|
||||||
|
|
||||||
CBasePlayer *pPlayer = GetClassPtr((CBasePlayer *)VARS(pentPlayer));
|
CBasePlayer *pPlayer = GetClassPtr<CCSPlayer>((CBasePlayer *)VARS(pentPlayer));
|
||||||
float flRange;
|
float flRange;
|
||||||
|
|
||||||
// check to see if this is the sound entity that is
|
// check to see if this is the sound entity that is
|
||||||
@ -1809,7 +1809,7 @@ float TEXTURETYPE_PlaySound(TraceResult *ptr, Vector vecSrc, Vector vecEnd, int
|
|||||||
return fvolbar;
|
return fvolbar;
|
||||||
}
|
}
|
||||||
|
|
||||||
LINK_ENTITY_TO_CLASS(speaker, CSpeaker);
|
LINK_ENTITY_TO_CLASS(speaker, CSpeaker, CCSSpeaker);
|
||||||
IMPLEMENT_SAVERESTORE(CSpeaker, CBaseEntity);
|
IMPLEMENT_SAVERESTORE(CSpeaker, CBaseEntity);
|
||||||
|
|
||||||
// ambient_generic - general-purpose user-defined static sound
|
// ambient_generic - general-purpose user-defined static sound
|
||||||
|
@ -50,7 +50,7 @@
|
|||||||
|
|
||||||
#define SPEAKER_START_SILENT 1 // wait for trigger 'on' to start announcements
|
#define SPEAKER_START_SILENT 1 // wait for trigger 'on' to start announcements
|
||||||
|
|
||||||
#define LFO_SQUARE 1 // square
|
#define LFO_SQUARE 1 // square
|
||||||
#define LFO_TRIANGLE 2 // triangle
|
#define LFO_TRIANGLE 2 // triangle
|
||||||
#define LFO_RANDOM 3 // random
|
#define LFO_RANDOM 3 // random
|
||||||
|
|
||||||
|
@ -1,8 +1,15 @@
|
|||||||
#include "precompiled.h"
|
#include "precompiled.h"
|
||||||
|
|
||||||
CSoundEnt *pSoundEnt;
|
/*
|
||||||
|
* Globals initialization
|
||||||
|
*/
|
||||||
|
#ifndef HOOK_GAMEDLL
|
||||||
|
|
||||||
LINK_ENTITY_TO_CLASS(soundent, CSoundEnt);
|
CSoundEnt *pSoundEnt = NULL;
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
LINK_ENTITY_TO_CLASS(soundent, CSoundEnt, CCSSoundEnt);
|
||||||
|
|
||||||
// CSound - Clear - zeros all fields for a sound
|
// CSound - Clear - zeros all fields for a sound
|
||||||
void CSound::Clear()
|
void CSound::Clear()
|
||||||
|
@ -79,7 +79,6 @@ public:
|
|||||||
class CSoundEnt: public CBaseEntity
|
class CSoundEnt: public CBaseEntity
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
|
||||||
virtual void Spawn();
|
virtual void Spawn();
|
||||||
virtual void Precache();
|
virtual void Precache();
|
||||||
virtual int ObjectCaps() { return FCAP_DONT_SAVE; }
|
virtual int ObjectCaps() { return FCAP_DONT_SAVE; }
|
||||||
|
@ -50,15 +50,15 @@ void CNullEntity::__MAKE_VHOOK(Spawn)()
|
|||||||
REMOVE_ENTITY(ENT(pev));
|
REMOVE_ENTITY(ENT(pev));
|
||||||
}
|
}
|
||||||
|
|
||||||
LINK_ENTITY_TO_CLASS(info_null, CNullEntity);
|
LINK_ENTITY_TO_CLASS(info_null, CNullEntity, CCSNullEntity);
|
||||||
|
|
||||||
// These are the new entry points to entities.
|
// These are the new entry points to entities.
|
||||||
LINK_ENTITY_TO_CLASS(info_player_deathmatch, CBaseDMStart);
|
LINK_ENTITY_TO_CLASS(info_player_deathmatch, CBaseDMStart, CCSDMStart);
|
||||||
LINK_ENTITY_TO_CLASS(info_player_start, CPointEntity);
|
LINK_ENTITY_TO_CLASS(info_player_start, CPointEntity, CCSPointEntity);
|
||||||
LINK_ENTITY_TO_CLASS(info_vip_start, CBaseDMStart);
|
LINK_ENTITY_TO_CLASS(info_vip_start, CBaseDMStart, CCSDMStart);
|
||||||
LINK_ENTITY_TO_CLASS(info_landmark, CPointEntity);
|
LINK_ENTITY_TO_CLASS(info_landmark, CPointEntity, CCSPointEntity);
|
||||||
LINK_ENTITY_TO_CLASS(info_hostage_rescue, CPointEntity);
|
LINK_ENTITY_TO_CLASS(info_hostage_rescue, CPointEntity, CCSPointEntity);
|
||||||
LINK_ENTITY_TO_CLASS(info_bomb_target, CPointEntity);
|
LINK_ENTITY_TO_CLASS(info_bomb_target, CPointEntity, CCSPointEntity);
|
||||||
|
|
||||||
void CBaseDMStart::__MAKE_VHOOK(KeyValue)(KeyValueData *pkvd)
|
void CBaseDMStart::__MAKE_VHOOK(KeyValue)(KeyValueData *pkvd)
|
||||||
{
|
{
|
||||||
@ -81,6 +81,7 @@ BOOL CBaseDMStart::__MAKE_VHOOK(IsTriggered)(CBaseEntity *pEntity)
|
|||||||
// This updates global tables that need to know about entities being removed
|
// This updates global tables that need to know about entities being removed
|
||||||
void CBaseEntity::UpdateOnRemove()
|
void CBaseEntity::UpdateOnRemove()
|
||||||
{
|
{
|
||||||
|
#ifndef REGAMEDLL_FIXES
|
||||||
if (pev->flags & FL_GRAPHED)
|
if (pev->flags & FL_GRAPHED)
|
||||||
{
|
{
|
||||||
// this entity was a LinkEnt in the world node graph, so we must remove it from
|
// this entity was a LinkEnt in the world node graph, so we must remove it from
|
||||||
@ -94,6 +95,7 @@ void CBaseEntity::UpdateOnRemove()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
if (pev->globalname)
|
if (pev->globalname)
|
||||||
{
|
{
|
||||||
@ -180,7 +182,7 @@ void FireTargets(const char *targetName, CBaseEntity *pActivator, CBaseEntity *p
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
LINK_ENTITY_TO_CLASS(DelayedUse, CBaseDelay);
|
LINK_ENTITY_TO_CLASS(DelayedUse, CBaseDelay, CCSDelay);
|
||||||
|
|
||||||
void CBaseDelay::SUB_UseTargets(CBaseEntity *pActivator, USE_TYPE useType, float value)
|
void CBaseDelay::SUB_UseTargets(CBaseEntity *pActivator, USE_TYPE useType, float value)
|
||||||
{
|
{
|
||||||
@ -192,7 +194,7 @@ void CBaseDelay::SUB_UseTargets(CBaseEntity *pActivator, USE_TYPE useType, float
|
|||||||
if (m_flDelay != 0)
|
if (m_flDelay != 0)
|
||||||
{
|
{
|
||||||
// create a temp object to fire at a later time
|
// create a temp object to fire at a later time
|
||||||
CBaseDelay *pTemp = GetClassPtr((CBaseDelay *)NULL);
|
CBaseDelay *pTemp = GetClassPtr<CCSDelay>((CBaseDelay *)NULL);
|
||||||
|
|
||||||
MAKE_STRING_CLASS("DelayedUse", pTemp->pev);
|
MAKE_STRING_CLASS("DelayedUse", pTemp->pev);
|
||||||
|
|
||||||
|
@ -329,7 +329,7 @@ void CHalfLifeTraining::__MAKE_VHOOK(CheckWinConditions)()
|
|||||||
}
|
}
|
||||||
|
|
||||||
IMPLEMENT_SAVERESTORE(CBaseGrenCatch, CBaseEntity);
|
IMPLEMENT_SAVERESTORE(CBaseGrenCatch, CBaseEntity);
|
||||||
LINK_ENTITY_TO_CLASS(func_grencatch, CBaseGrenCatch);
|
LINK_ENTITY_TO_CLASS(func_grencatch, CBaseGrenCatch, CCSGrenCatch);
|
||||||
|
|
||||||
void CBaseGrenCatch::__MAKE_VHOOK(Spawn)()
|
void CBaseGrenCatch::__MAKE_VHOOK(Spawn)()
|
||||||
{
|
{
|
||||||
@ -458,7 +458,7 @@ void CFuncWeaponCheck::__MAKE_VHOOK(Spawn)()
|
|||||||
}
|
}
|
||||||
|
|
||||||
IMPLEMENT_SAVERESTORE(CFuncWeaponCheck, CBaseEntity);
|
IMPLEMENT_SAVERESTORE(CFuncWeaponCheck, CBaseEntity);
|
||||||
LINK_ENTITY_TO_CLASS(func_weaponcheck, CFuncWeaponCheck);
|
LINK_ENTITY_TO_CLASS(func_weaponcheck, CFuncWeaponCheck, CCSFuncWeaponCheck);
|
||||||
|
|
||||||
void CFuncWeaponCheck::__MAKE_VHOOK(Touch)(CBaseEntity *pOther)
|
void CFuncWeaponCheck::__MAKE_VHOOK(Touch)(CBaseEntity *pOther)
|
||||||
{
|
{
|
||||||
|
@ -36,7 +36,6 @@ class CHalfLifeTraining: public CHalfLifeMultiplay
|
|||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
CHalfLifeTraining();
|
CHalfLifeTraining();
|
||||||
|
|
||||||
virtual BOOL IsMultiplayer() { return FALSE; }
|
virtual BOOL IsMultiplayer() { return FALSE; }
|
||||||
virtual BOOL IsDeathmatch();
|
virtual BOOL IsDeathmatch();
|
||||||
virtual void InitHUD(CBasePlayer *pl);
|
virtual void InitHUD(CBasePlayer *pl);
|
||||||
|
@ -68,7 +68,7 @@ TYPEDESCRIPTION CTriggerCamera::m_SaveData[] =
|
|||||||
char st_szNextMap[cchMapNameMost];
|
char st_szNextMap[cchMapNameMost];
|
||||||
char st_szNextSpot[cchMapNameMost];
|
char st_szNextSpot[cchMapNameMost];
|
||||||
|
|
||||||
LINK_ENTITY_TO_CLASS(func_friction, CFrictionModifier);
|
LINK_ENTITY_TO_CLASS(func_friction, CFrictionModifier, CCSFrictionModifier);
|
||||||
IMPLEMENT_SAVERESTORE(CFrictionModifier, CBaseEntity);
|
IMPLEMENT_SAVERESTORE(CFrictionModifier, CBaseEntity);
|
||||||
|
|
||||||
void CFrictionModifier::__MAKE_VHOOK(Spawn)()
|
void CFrictionModifier::__MAKE_VHOOK(Spawn)()
|
||||||
@ -103,7 +103,7 @@ void CFrictionModifier::__MAKE_VHOOK(KeyValue)(KeyValueData *pkvd)
|
|||||||
CBaseEntity::KeyValue(pkvd);
|
CBaseEntity::KeyValue(pkvd);
|
||||||
}
|
}
|
||||||
|
|
||||||
LINK_ENTITY_TO_CLASS(trigger_auto, CAutoTrigger);
|
LINK_ENTITY_TO_CLASS(trigger_auto, CAutoTrigger, CCSAutoTrigger);
|
||||||
IMPLEMENT_SAVERESTORE(CAutoTrigger, CBaseDelay);
|
IMPLEMENT_SAVERESTORE(CAutoTrigger, CBaseDelay);
|
||||||
|
|
||||||
void CAutoTrigger::__MAKE_VHOOK(KeyValue)(KeyValueData *pkvd)
|
void CAutoTrigger::__MAKE_VHOOK(KeyValue)(KeyValueData *pkvd)
|
||||||
@ -157,7 +157,7 @@ void CAutoTrigger::__MAKE_VHOOK(Think)()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
LINK_ENTITY_TO_CLASS(trigger_relay, CTriggerRelay);
|
LINK_ENTITY_TO_CLASS(trigger_relay, CTriggerRelay, CCSTriggerRelay);
|
||||||
IMPLEMENT_SAVERESTORE(CTriggerRelay, CBaseDelay);
|
IMPLEMENT_SAVERESTORE(CTriggerRelay, CBaseDelay);
|
||||||
|
|
||||||
void CTriggerRelay::__MAKE_VHOOK(KeyValue)(KeyValueData *pkvd)
|
void CTriggerRelay::__MAKE_VHOOK(KeyValue)(KeyValueData *pkvd)
|
||||||
@ -197,7 +197,7 @@ void CTriggerRelay::__MAKE_VHOOK(Use)(CBaseEntity *pActivator, CBaseEntity *pCal
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
LINK_ENTITY_TO_CLASS(multi_manager, CMultiManager);
|
LINK_ENTITY_TO_CLASS(multi_manager, CMultiManager, CCSMultiManager);
|
||||||
IMPLEMENT_SAVERESTORE(CMultiManager, CBaseToggle);
|
IMPLEMENT_SAVERESTORE(CMultiManager, CBaseToggle);
|
||||||
|
|
||||||
void CMultiManager::__MAKE_VHOOK(KeyValue)(KeyValueData *pkvd)
|
void CMultiManager::__MAKE_VHOOK(KeyValue)(KeyValueData *pkvd)
|
||||||
@ -336,7 +336,7 @@ void CMultiManager::ManagerThink()
|
|||||||
|
|
||||||
CMultiManager *CMultiManager::Clone()
|
CMultiManager *CMultiManager::Clone()
|
||||||
{
|
{
|
||||||
CMultiManager *pMulti = GetClassPtr((CMultiManager *)NULL);
|
CMultiManager *pMulti = GetClassPtr<CCSMultiManager>((CMultiManager *)NULL);
|
||||||
|
|
||||||
edict_t *pEdict = pMulti->pev->pContainingEntity;
|
edict_t *pEdict = pMulti->pev->pContainingEntity;
|
||||||
Q_memcpy(pMulti->pev, pev, sizeof(*pev));
|
Q_memcpy(pMulti->pev, pev, sizeof(*pev));
|
||||||
@ -374,7 +374,7 @@ void CMultiManager::ManagerUse(CBaseEntity *pActivator, CBaseEntity *pCaller, US
|
|||||||
pev->nextthink = gpGlobals->time;
|
pev->nextthink = gpGlobals->time;
|
||||||
}
|
}
|
||||||
|
|
||||||
LINK_ENTITY_TO_CLASS(env_render, CRenderFxManager);
|
LINK_ENTITY_TO_CLASS(env_render, CRenderFxManager, CCSRenderFxManager);
|
||||||
|
|
||||||
void CRenderFxManager::__MAKE_VHOOK(Spawn)()
|
void CRenderFxManager::__MAKE_VHOOK(Spawn)()
|
||||||
{
|
{
|
||||||
@ -408,7 +408,7 @@ void CRenderFxManager::__MAKE_VHOOK(Use)(CBaseEntity *pActivator, CBaseEntity *p
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
LINK_ENTITY_TO_CLASS(trigger, CBaseTrigger);
|
LINK_ENTITY_TO_CLASS(trigger, CBaseTrigger, CCSTrigger);
|
||||||
|
|
||||||
void CBaseTrigger::InitTrigger()
|
void CBaseTrigger::InitTrigger()
|
||||||
{
|
{
|
||||||
@ -453,8 +453,8 @@ void CBaseTrigger::__MAKE_VHOOK(KeyValue)(KeyValueData *pkvd)
|
|||||||
CBaseToggle::KeyValue(pkvd);
|
CBaseToggle::KeyValue(pkvd);
|
||||||
}
|
}
|
||||||
|
|
||||||
LINK_ENTITY_TO_CLASS(trigger_hurt, CTriggerHurt);
|
LINK_ENTITY_TO_CLASS(trigger_hurt, CTriggerHurt, CCSTriggerHurt);
|
||||||
LINK_ENTITY_TO_CLASS(trigger_monsterjump, CTriggerMonsterJump);
|
LINK_ENTITY_TO_CLASS(trigger_monsterjump, CTriggerMonsterJump, CCSTriggerMonsterJump);
|
||||||
|
|
||||||
void CTriggerMonsterJump::__MAKE_VHOOK(Spawn)()
|
void CTriggerMonsterJump::__MAKE_VHOOK(Spawn)()
|
||||||
{
|
{
|
||||||
@ -511,7 +511,7 @@ void CTriggerMonsterJump::__MAKE_VHOOK(Touch)(CBaseEntity *pOther)
|
|||||||
pev->nextthink = gpGlobals->time;
|
pev->nextthink = gpGlobals->time;
|
||||||
}
|
}
|
||||||
|
|
||||||
LINK_ENTITY_TO_CLASS(trigger_cdaudio, CTriggerCDAudio);
|
LINK_ENTITY_TO_CLASS(trigger_cdaudio, CTriggerCDAudio, CCSTriggerCDAudio);
|
||||||
|
|
||||||
// Changes tracks or stops CD when player touches
|
// Changes tracks or stops CD when player touches
|
||||||
// HACK: overloaded HEALTH to avoid adding new field
|
// HACK: overloaded HEALTH to avoid adding new field
|
||||||
@ -575,7 +575,7 @@ void CTriggerCDAudio::PlayTrack()
|
|||||||
UTIL_Remove(this);
|
UTIL_Remove(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
LINK_ENTITY_TO_CLASS(target_cdaudio, CTargetCDAudio);
|
LINK_ENTITY_TO_CLASS(target_cdaudio, CTargetCDAudio, CCSTargetCDAudio);
|
||||||
|
|
||||||
void CTargetCDAudio::__MAKE_VHOOK(KeyValue)(KeyValueData *pkvd)
|
void CTargetCDAudio::__MAKE_VHOOK(KeyValue)(KeyValueData *pkvd)
|
||||||
{
|
{
|
||||||
@ -693,7 +693,7 @@ void CTriggerHurt::RadiationThink()
|
|||||||
// reset origin
|
// reset origin
|
||||||
if (!FNullEnt(pentPlayer))
|
if (!FNullEnt(pentPlayer))
|
||||||
{
|
{
|
||||||
pPlayer = GetClassPtr((CBasePlayer *)VARS(pentPlayer));
|
pPlayer = GetClassPtr<CCSPlayer>((CBasePlayer *)VARS(pentPlayer));
|
||||||
|
|
||||||
pevTarget = VARS(pentPlayer);
|
pevTarget = VARS(pentPlayer);
|
||||||
|
|
||||||
@ -852,7 +852,7 @@ void CBaseTrigger::HurtTouch(CBaseEntity *pOther)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
LINK_ENTITY_TO_CLASS(trigger_multiple, CTriggerMultiple);
|
LINK_ENTITY_TO_CLASS(trigger_multiple, CTriggerMultiple, CCSTriggerMultiple);
|
||||||
|
|
||||||
void CTriggerMultiple::__MAKE_VHOOK(Spawn)()
|
void CTriggerMultiple::__MAKE_VHOOK(Spawn)()
|
||||||
{
|
{
|
||||||
@ -882,11 +882,11 @@ void CTriggerMultiple::__MAKE_VHOOK(Spawn)()
|
|||||||
//}
|
//}
|
||||||
//else
|
//else
|
||||||
{
|
{
|
||||||
SetTouch(&CTriggerMultiple::MultiTouch);
|
SetTouch(&CTriggerMultiple::MultiTouch);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
LINK_ENTITY_TO_CLASS(trigger_once, CTriggerOnce);
|
LINK_ENTITY_TO_CLASS(trigger_once, CTriggerOnce, CCSTriggerOnce);
|
||||||
|
|
||||||
void CTriggerOnce::__MAKE_VHOOK(Spawn)()
|
void CTriggerOnce::__MAKE_VHOOK(Spawn)()
|
||||||
{
|
{
|
||||||
@ -1007,7 +1007,7 @@ void CBaseTrigger::CounterUse(CBaseEntity *pActivator, CBaseEntity *pCaller, USE
|
|||||||
ActivateMultiTrigger(m_hActivator);
|
ActivateMultiTrigger(m_hActivator);
|
||||||
}
|
}
|
||||||
|
|
||||||
LINK_ENTITY_TO_CLASS(trigger_counter, CTriggerCounter);
|
LINK_ENTITY_TO_CLASS(trigger_counter, CTriggerCounter, CCSTriggerCounter);
|
||||||
|
|
||||||
void CTriggerCounter::__MAKE_VHOOK(Spawn)()
|
void CTriggerCounter::__MAKE_VHOOK(Spawn)()
|
||||||
{
|
{
|
||||||
@ -1023,7 +1023,7 @@ void CTriggerCounter::__MAKE_VHOOK(Spawn)()
|
|||||||
SetUse(&CTriggerCounter::CounterUse);
|
SetUse(&CTriggerCounter::CounterUse);
|
||||||
}
|
}
|
||||||
|
|
||||||
LINK_ENTITY_TO_CLASS(trigger_transition, CTriggerVolume);
|
LINK_ENTITY_TO_CLASS(trigger_transition, CTriggerVolume, CCSTriggerVolume);
|
||||||
|
|
||||||
// Define space that travels across a level transition
|
// Define space that travels across a level transition
|
||||||
void CTriggerVolume::__MAKE_VHOOK(Spawn)()
|
void CTriggerVolume::__MAKE_VHOOK(Spawn)()
|
||||||
@ -1038,7 +1038,7 @@ void CTriggerVolume::__MAKE_VHOOK(Spawn)()
|
|||||||
pev->modelindex = 0;
|
pev->modelindex = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
LINK_ENTITY_TO_CLASS(fireanddie, CFireAndDie);
|
LINK_ENTITY_TO_CLASS(fireanddie, CFireAndDie, CCSFireAndDie);
|
||||||
|
|
||||||
void CFireAndDie::__MAKE_VHOOK(Spawn)()
|
void CFireAndDie::__MAKE_VHOOK(Spawn)()
|
||||||
{
|
{
|
||||||
@ -1057,7 +1057,7 @@ void CFireAndDie::__MAKE_VHOOK(Think)()
|
|||||||
UTIL_Remove(this);
|
UTIL_Remove(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
LINK_ENTITY_TO_CLASS(trigger_changelevel, CChangeLevel);
|
LINK_ENTITY_TO_CLASS(trigger_changelevel, CChangeLevel, CCSChangeLevel);
|
||||||
IMPLEMENT_SAVERESTORE(CChangeLevel, CBaseTrigger);
|
IMPLEMENT_SAVERESTORE(CChangeLevel, CBaseTrigger);
|
||||||
|
|
||||||
// Cache user-entity-field values until spawn is called.
|
// Cache user-entity-field values until spawn is called.
|
||||||
@ -1184,7 +1184,7 @@ void CChangeLevel::ChangeLevelNow(CBaseEntity *pActivator)
|
|||||||
// Create an entity to fire the changetarget
|
// Create an entity to fire the changetarget
|
||||||
if (m_changeTarget)
|
if (m_changeTarget)
|
||||||
{
|
{
|
||||||
CFireAndDie *pFireAndDie = GetClassPtr((CFireAndDie *)NULL);
|
CFireAndDie *pFireAndDie = GetClassPtr<CCSFireAndDie>((CFireAndDie *)NULL);
|
||||||
|
|
||||||
if (pFireAndDie)
|
if (pFireAndDie)
|
||||||
{
|
{
|
||||||
@ -1324,7 +1324,7 @@ int CChangeLevel::ChangeList(LEVELLIST *pLevelList, int maxList)
|
|||||||
|
|
||||||
while (!FNullEnt(pentChangelevel))
|
while (!FNullEnt(pentChangelevel))
|
||||||
{
|
{
|
||||||
CChangeLevel *pTrigger = GetClassPtr((CChangeLevel *)VARS(pentChangelevel));
|
CChangeLevel *pTrigger = GetClassPtr<CCSChangeLevel>((CChangeLevel *)VARS(pentChangelevel));
|
||||||
|
|
||||||
if (pTrigger != NULL)
|
if (pTrigger != NULL)
|
||||||
{
|
{
|
||||||
@ -1426,11 +1426,11 @@ NOXREF void NextLevel()
|
|||||||
if (FNullEnt(pent))
|
if (FNullEnt(pent))
|
||||||
{
|
{
|
||||||
gpGlobals->mapname = ALLOC_STRING("start");
|
gpGlobals->mapname = ALLOC_STRING("start");
|
||||||
pChange = GetClassPtr((CChangeLevel *)NULL);
|
pChange = GetClassPtr<CCSChangeLevel>((CChangeLevel *)NULL);
|
||||||
Q_strcpy(pChange->m_szMapName, "start");
|
Q_strcpy(pChange->m_szMapName, "start");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
pChange = GetClassPtr((CChangeLevel *)VARS(pent));
|
pChange = GetClassPtr<CCSChangeLevel>((CChangeLevel *)VARS(pent));
|
||||||
|
|
||||||
Q_strcpy(st_szNextMap, pChange->m_szMapName);
|
Q_strcpy(st_szNextMap, pChange->m_szMapName);
|
||||||
g_fGameOver = TRUE;
|
g_fGameOver = TRUE;
|
||||||
@ -1442,7 +1442,7 @@ NOXREF void NextLevel()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
LINK_ENTITY_TO_CLASS(func_ladder, CLadder);
|
LINK_ENTITY_TO_CLASS(func_ladder, CLadder, CCSLadder);
|
||||||
|
|
||||||
void CLadder::__MAKE_VHOOK(KeyValue)(KeyValueData *pkvd)
|
void CLadder::__MAKE_VHOOK(KeyValue)(KeyValueData *pkvd)
|
||||||
{
|
{
|
||||||
@ -1474,7 +1474,7 @@ void CLadder::__MAKE_VHOOK(Spawn)()
|
|||||||
pev->movetype = MOVETYPE_PUSH;
|
pev->movetype = MOVETYPE_PUSH;
|
||||||
}
|
}
|
||||||
|
|
||||||
LINK_ENTITY_TO_CLASS(trigger_push, CTriggerPush);
|
LINK_ENTITY_TO_CLASS(trigger_push, CTriggerPush, CCSTriggerPush);
|
||||||
|
|
||||||
void CTriggerPush::__MAKE_VHOOK(KeyValue)(KeyValueData *pkvd)
|
void CTriggerPush::__MAKE_VHOOK(KeyValue)(KeyValueData *pkvd)
|
||||||
{
|
{
|
||||||
@ -1615,7 +1615,7 @@ void CBaseTrigger::TeleportTouch(CBaseEntity *pOther)
|
|||||||
pevToucher->velocity = pevToucher->basevelocity = g_vecZero;
|
pevToucher->velocity = pevToucher->basevelocity = g_vecZero;
|
||||||
}
|
}
|
||||||
|
|
||||||
LINK_ENTITY_TO_CLASS(trigger_teleport, CTriggerTeleport);
|
LINK_ENTITY_TO_CLASS(trigger_teleport, CTriggerTeleport, CCSTriggerTeleport);
|
||||||
|
|
||||||
void CTriggerTeleport::__MAKE_VHOOK(Spawn)()
|
void CTriggerTeleport::__MAKE_VHOOK(Spawn)()
|
||||||
{
|
{
|
||||||
@ -1623,8 +1623,8 @@ void CTriggerTeleport::__MAKE_VHOOK(Spawn)()
|
|||||||
SetTouch(&CTriggerTeleport::TeleportTouch);
|
SetTouch(&CTriggerTeleport::TeleportTouch);
|
||||||
}
|
}
|
||||||
|
|
||||||
LINK_ENTITY_TO_CLASS(info_teleport_destination, CPointEntity);
|
LINK_ENTITY_TO_CLASS(info_teleport_destination, CPointEntity, CCSPointEntity);
|
||||||
LINK_ENTITY_TO_CLASS(func_buyzone, CBuyZone);
|
LINK_ENTITY_TO_CLASS(func_buyzone, CBuyZone, CCSBuyZone);
|
||||||
|
|
||||||
void CBuyZone::__MAKE_VHOOK(Spawn)()
|
void CBuyZone::__MAKE_VHOOK(Spawn)()
|
||||||
{
|
{
|
||||||
@ -1651,7 +1651,7 @@ void CBuyZone::BuyTouch(CBaseEntity *pOther)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
LINK_ENTITY_TO_CLASS(func_bomb_target, CBombTarget);
|
LINK_ENTITY_TO_CLASS(func_bomb_target, CBombTarget, CCSBombTarget);
|
||||||
|
|
||||||
void CBombTarget::__MAKE_VHOOK(Spawn)()
|
void CBombTarget::__MAKE_VHOOK(Spawn)()
|
||||||
{
|
{
|
||||||
@ -1680,7 +1680,7 @@ void CBombTarget::BombTargetUse(CBaseEntity *pActivator, CBaseEntity *pCaller, U
|
|||||||
SUB_UseTargets(NULL, USE_TOGGLE, 0);
|
SUB_UseTargets(NULL, USE_TOGGLE, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
LINK_ENTITY_TO_CLASS(func_hostage_rescue, CHostageRescue);
|
LINK_ENTITY_TO_CLASS(func_hostage_rescue, CHostageRescue, CCSHostageRescue);
|
||||||
|
|
||||||
void CHostageRescue::__MAKE_VHOOK(Spawn)()
|
void CHostageRescue::__MAKE_VHOOK(Spawn)()
|
||||||
{
|
{
|
||||||
@ -1701,7 +1701,7 @@ void CHostageRescue::HostageRescueTouch(CBaseEntity *pOther)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
LINK_ENTITY_TO_CLASS(func_escapezone, CEscapeZone);
|
LINK_ENTITY_TO_CLASS(func_escapezone, CEscapeZone, CCSEscapeZone);
|
||||||
|
|
||||||
void CEscapeZone::__MAKE_VHOOK(Spawn)()
|
void CEscapeZone::__MAKE_VHOOK(Spawn)()
|
||||||
{
|
{
|
||||||
@ -1746,7 +1746,7 @@ void CEscapeZone::EscapeTouch(CBaseEntity *pOther)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
LINK_ENTITY_TO_CLASS(func_vip_safetyzone, CVIP_SafetyZone);
|
LINK_ENTITY_TO_CLASS(func_vip_safetyzone, CVIP_SafetyZone, CCSVIP_SafetyZone);
|
||||||
|
|
||||||
void CVIP_SafetyZone::__MAKE_VHOOK(Spawn)()
|
void CVIP_SafetyZone::__MAKE_VHOOK(Spawn)()
|
||||||
{
|
{
|
||||||
@ -1774,7 +1774,7 @@ void CVIP_SafetyZone::VIP_SafetyTouch(CBaseEntity *pOther)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
LINK_ENTITY_TO_CLASS(trigger_autosave, CTriggerSave);
|
LINK_ENTITY_TO_CLASS(trigger_autosave, CTriggerSave, CCSTriggerSave);
|
||||||
|
|
||||||
void CTriggerSave::__MAKE_VHOOK(Spawn)()
|
void CTriggerSave::__MAKE_VHOOK(Spawn)()
|
||||||
{
|
{
|
||||||
@ -1802,7 +1802,7 @@ void CTriggerSave::SaveTouch(CBaseEntity *pOther)
|
|||||||
SERVER_COMMAND("autosave\n");
|
SERVER_COMMAND("autosave\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
LINK_ENTITY_TO_CLASS(trigger_endsection, CTriggerEndSection);
|
LINK_ENTITY_TO_CLASS(trigger_endsection, CTriggerEndSection, CCSTriggerEndSection);
|
||||||
|
|
||||||
void CTriggerEndSection::EndSectionUse(CBaseEntity *pActivator, CBaseEntity *pCaller, USE_TYPE useType, float value)
|
void CTriggerEndSection::EndSectionUse(CBaseEntity *pActivator, CBaseEntity *pCaller, USE_TYPE useType, float value)
|
||||||
{
|
{
|
||||||
@ -1864,7 +1864,7 @@ void CTriggerEndSection::__MAKE_VHOOK(KeyValue)(KeyValueData *pkvd)
|
|||||||
CBaseTrigger::KeyValue(pkvd);
|
CBaseTrigger::KeyValue(pkvd);
|
||||||
}
|
}
|
||||||
|
|
||||||
LINK_ENTITY_TO_CLASS(trigger_gravity, CTriggerGravity);
|
LINK_ENTITY_TO_CLASS(trigger_gravity, CTriggerGravity, CCSTriggerGravity);
|
||||||
|
|
||||||
void CTriggerGravity::__MAKE_VHOOK(Spawn)()
|
void CTriggerGravity::__MAKE_VHOOK(Spawn)()
|
||||||
{
|
{
|
||||||
@ -1881,7 +1881,7 @@ void CTriggerGravity::GravityTouch(CBaseEntity *pOther)
|
|||||||
pOther->pev->gravity = pev->gravity;
|
pOther->pev->gravity = pev->gravity;
|
||||||
}
|
}
|
||||||
|
|
||||||
LINK_ENTITY_TO_CLASS(trigger_changetarget, CTriggerChangeTarget);
|
LINK_ENTITY_TO_CLASS(trigger_changetarget, CTriggerChangeTarget, CCSTriggerChangeTarget);
|
||||||
IMPLEMENT_SAVERESTORE(CTriggerChangeTarget, CBaseDelay);
|
IMPLEMENT_SAVERESTORE(CTriggerChangeTarget, CBaseDelay);
|
||||||
|
|
||||||
void CTriggerChangeTarget::__MAKE_VHOOK(KeyValue)(KeyValueData *pkvd)
|
void CTriggerChangeTarget::__MAKE_VHOOK(KeyValue)(KeyValueData *pkvd)
|
||||||
@ -1917,7 +1917,7 @@ void CTriggerChangeTarget::__MAKE_VHOOK(Use)(CBaseEntity *pActivator, CBaseEntit
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
LINK_ENTITY_TO_CLASS(trigger_camera, CTriggerCamera);
|
LINK_ENTITY_TO_CLASS(trigger_camera, CTriggerCamera, CCSTriggerCamera);
|
||||||
IMPLEMENT_SAVERESTORE(CTriggerCamera, CBaseDelay);
|
IMPLEMENT_SAVERESTORE(CTriggerCamera, CBaseDelay);
|
||||||
|
|
||||||
void CTriggerCamera::__MAKE_VHOOK(Spawn)()
|
void CTriggerCamera::__MAKE_VHOOK(Spawn)()
|
||||||
@ -2185,10 +2185,10 @@ void CTriggerCamera::Move()
|
|||||||
pev->velocity = ((pev->movedir * pev->speed) * fraction) + (pev->velocity * (1 - fraction));
|
pev->velocity = ((pev->movedir * pev->speed) * fraction) + (pev->velocity * (1 - fraction));
|
||||||
}
|
}
|
||||||
|
|
||||||
LINK_ENTITY_TO_CLASS(env_snow, CWeather);
|
LINK_ENTITY_TO_CLASS(env_snow, CWeather, CCSWeather);
|
||||||
LINK_ENTITY_TO_CLASS(func_snow, CWeather);
|
LINK_ENTITY_TO_CLASS(func_snow, CWeather, CCSWeather);
|
||||||
LINK_ENTITY_TO_CLASS(env_rain, CWeather);
|
LINK_ENTITY_TO_CLASS(env_rain, CWeather, CCSWeather);
|
||||||
LINK_ENTITY_TO_CLASS(func_rain, CWeather);
|
LINK_ENTITY_TO_CLASS(func_rain, CWeather, CCSWeather);
|
||||||
|
|
||||||
void CWeather::__MAKE_VHOOK(Spawn)()
|
void CWeather::__MAKE_VHOOK(Spawn)()
|
||||||
{
|
{
|
||||||
@ -2231,4 +2231,4 @@ void CClientFog::__MAKE_VHOOK(Spawn)()
|
|||||||
pev->rendermode = kRenderTransTexture;
|
pev->rendermode = kRenderTransTexture;
|
||||||
}
|
}
|
||||||
|
|
||||||
LINK_ENTITY_TO_CLASS(env_fog, CClientFog);
|
LINK_ENTITY_TO_CLASS(env_fog, CClientFog, CCSClientFog);
|
||||||
|
@ -39,14 +39,14 @@
|
|||||||
#define MAX_ENTITY 512 // We can only ever move 512 entities across a transition
|
#define MAX_ENTITY 512 // We can only ever move 512 entities across a transition
|
||||||
|
|
||||||
// triggers
|
// triggers
|
||||||
#define SF_TRIGGER_ALLOWMONSTERS 1 // monsters allowed to fire this trigger
|
#define SF_TRIGGER_ALLOWMONSTERS 1 // monsters allowed to fire this trigger
|
||||||
#define SF_TRIGGER_NOCLIENTS 2 // players not allowed to fire this trigger
|
#define SF_TRIGGER_NOCLIENTS 2 // players not allowed to fire this trigger
|
||||||
#define SF_TRIGGER_PUSHABLES 4 // only pushables can fire this trigger
|
#define SF_TRIGGER_PUSHABLES 4 // only pushables can fire this trigger
|
||||||
|
|
||||||
#define SF_TRIGGER_PUSH_START_OFF 2 // spawnflag that makes trigger_push spawn turned OFF
|
#define SF_TRIGGER_PUSH_START_OFF 2 // spawnflag that makes trigger_push spawn turned OFF
|
||||||
#define SF_TRIGGER_HURT_TARGETONCE 1 // Only fire hurt target once
|
#define SF_TRIGGER_HURT_TARGETONCE 1 // Only fire hurt target once
|
||||||
#define SF_TRIGGER_HURT_START_OFF 2 // spawnflag that makes trigger_push spawn turned OFF
|
#define SF_TRIGGER_HURT_START_OFF 2 // spawnflag that makes trigger_push spawn turned OFF
|
||||||
#define SF_TRIGGER_HURT_NO_CLIENTS 8 // spawnflag that makes trigger_push spawn turned OFF
|
#define SF_TRIGGER_HURT_NO_CLIENTS 8 // spawnflag that makes trigger_push spawn turned OFF
|
||||||
#define SF_TRIGGER_HURT_CLIENTONLYFIRE 16 // trigger hurt will only fire its target if it is hurting a client
|
#define SF_TRIGGER_HURT_CLIENTONLYFIRE 16 // trigger hurt will only fire its target if it is hurting a client
|
||||||
#define SF_TRIGGER_HURT_CLIENTONLYTOUCH 32 // only clients may touch this trigger.
|
#define SF_TRIGGER_HURT_CLIENTONLYTOUCH 32 // only clients may touch this trigger.
|
||||||
|
|
||||||
@ -744,7 +744,7 @@ public:
|
|||||||
};
|
};
|
||||||
|
|
||||||
void PlayCDTrack(int iTrack);
|
void PlayCDTrack(int iTrack);
|
||||||
int BuildChangeList(LEVELLIST * pLevelList, int maxList);
|
int BuildChangeList(LEVELLIST *pLevelList, int maxList);
|
||||||
void NextLevel();
|
void NextLevel();
|
||||||
|
|
||||||
#endif // TRIGGERS_H
|
#endif // TRIGGERS_H
|
||||||
|
@ -409,7 +409,7 @@ CBaseEntity *UTIL_FindEntityByString_Old(CBaseEntity *pStartEntity, const char *
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
CBaseEntity *UTIL_FindEntityByString(CBaseEntity *pStartEntity, const char *szKeyword, const char *szValue)
|
CBaseEntity *EXT_FUNC UTIL_FindEntityByString(CBaseEntity *pStartEntity, const char *szKeyword, const char *szValue)
|
||||||
{
|
{
|
||||||
edict_t *pentEntity;
|
edict_t *pentEntity;
|
||||||
int startEntityIndex;
|
int startEntityIndex;
|
||||||
@ -421,7 +421,7 @@ CBaseEntity *UTIL_FindEntityByString(CBaseEntity *pStartEntity, const char *szKe
|
|||||||
|
|
||||||
startEntityIndex = ENTINDEX(pentEntity);
|
startEntityIndex = ENTINDEX(pentEntity);
|
||||||
|
|
||||||
//it best each entity list
|
// it best each entity list
|
||||||
if (*szKeyword == 'c')
|
if (*szKeyword == 'c')
|
||||||
{
|
{
|
||||||
int hash;
|
int hash;
|
||||||
@ -1456,7 +1456,7 @@ void UTIL_PrecacheOther(const char *szClassname)
|
|||||||
REMOVE_ENTITY(pent);
|
REMOVE_ENTITY(pent);
|
||||||
}
|
}
|
||||||
|
|
||||||
void UTIL_LogPrintf(char *fmt, ...)
|
void UTIL_LogPrintf(const char *fmt, ...)
|
||||||
{
|
{
|
||||||
va_list argptr;
|
va_list argptr;
|
||||||
static char string[1024];
|
static char string[1024];
|
||||||
@ -1938,7 +1938,7 @@ void CSave::BufferData(const char *pdata, int size)
|
|||||||
int CRestore::ReadField(void *pBaseData, TYPEDESCRIPTION *pFields, int fieldCount, int startField, int size, char *pName, void *pData)
|
int CRestore::ReadField(void *pBaseData, TYPEDESCRIPTION *pFields, int fieldCount, int startField, int size, char *pName, void *pData)
|
||||||
{
|
{
|
||||||
float time = 0.0f;
|
float time = 0.0f;
|
||||||
Vector position = Vector(0, 0, 0);
|
Vector position(0, 0, 0);
|
||||||
|
|
||||||
if (m_pdata)
|
if (m_pdata)
|
||||||
{
|
{
|
||||||
|
@ -123,7 +123,7 @@ extern globalvars_t *gpGlobals;
|
|||||||
#define SF_BRUSH_ROTATE_Z_AXIS 4
|
#define SF_BRUSH_ROTATE_Z_AXIS 4
|
||||||
#define SF_BRUSH_ROTATE_X_AXIS 8
|
#define SF_BRUSH_ROTATE_X_AXIS 8
|
||||||
#define SF_PENDULUM_AUTO_RETURN 16
|
#define SF_PENDULUM_AUTO_RETURN 16
|
||||||
#define SF_PENDULUM_PASSABLE 32
|
#define SF_PENDULUM_PASSABLE 32
|
||||||
|
|
||||||
#define SF_BRUSH_ROTATE_SMALLRADIUS 128
|
#define SF_BRUSH_ROTATE_SMALLRADIUS 128
|
||||||
#define SF_BRUSH_ROTATE_MEDIUMRADIUS 256
|
#define SF_BRUSH_ROTATE_MEDIUMRADIUS 256
|
||||||
@ -158,75 +158,15 @@ extern globalvars_t *gpGlobals;
|
|||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define LINK_ENTITY_TO_CLASS(mapClassName, DLLClassName)\
|
#define REGAMEDLL_ALLOC_FUNC
|
||||||
|
#define LINK_ENTITY_TO_CLASS(mapClassName, DLLClassName, DLLClassWrapName)\
|
||||||
C_DLLEXPORT void EXT_FUNC mapClassName(entvars_t *pev);\
|
C_DLLEXPORT void EXT_FUNC mapClassName(entvars_t *pev);\
|
||||||
void mapClassName(entvars_t *pev)\
|
void mapClassName(entvars_t *pev)\
|
||||||
{\
|
{\
|
||||||
GetClassPtr((DLLClassName *)pev);\
|
REGAMEDLL_ALLOC_FUNC\
|
||||||
|
GetClassPtr<DLLClassWrapName>((DLLClassName *)pev);\
|
||||||
}
|
}
|
||||||
|
|
||||||
typedef enum
|
|
||||||
{
|
|
||||||
ignore_monsters = 1,
|
|
||||||
dont_ignore_monsters = 0,
|
|
||||||
missile = 2
|
|
||||||
|
|
||||||
} IGNORE_MONSTERS;
|
|
||||||
|
|
||||||
typedef enum
|
|
||||||
{
|
|
||||||
ignore_glass = 1,
|
|
||||||
dont_ignore_glass = 0
|
|
||||||
|
|
||||||
} IGNORE_GLASS;
|
|
||||||
|
|
||||||
enum
|
|
||||||
{
|
|
||||||
point_hull = 0,
|
|
||||||
human_hull = 1,
|
|
||||||
large_hull = 2,
|
|
||||||
head_hull = 3
|
|
||||||
};
|
|
||||||
|
|
||||||
typedef enum
|
|
||||||
{
|
|
||||||
MONSTERSTATE_NONE = 0,
|
|
||||||
MONSTERSTATE_IDLE,
|
|
||||||
MONSTERSTATE_COMBAT,
|
|
||||||
MONSTERSTATE_ALERT,
|
|
||||||
MONSTERSTATE_HUNT,
|
|
||||||
MONSTERSTATE_PRONE,
|
|
||||||
MONSTERSTATE_SCRIPT,
|
|
||||||
MONSTERSTATE_PLAYDEAD,
|
|
||||||
MONSTERSTATE_DEAD
|
|
||||||
|
|
||||||
} MONSTERSTATE;
|
|
||||||
|
|
||||||
// Things that toggle (buttons/triggers/doors) need this
|
|
||||||
typedef enum
|
|
||||||
{
|
|
||||||
TS_AT_TOP,
|
|
||||||
TS_AT_BOTTOM,
|
|
||||||
TS_GOING_UP,
|
|
||||||
TS_GOING_DOWN,
|
|
||||||
|
|
||||||
} TOGGLE_STATE;
|
|
||||||
|
|
||||||
typedef struct hudtextparms_s
|
|
||||||
{
|
|
||||||
float x;
|
|
||||||
float y;
|
|
||||||
int effect;
|
|
||||||
byte r1,g1,b1,a1;
|
|
||||||
byte r2,g2,b2,a2;
|
|
||||||
float fadeinTime;
|
|
||||||
float fadeoutTime;
|
|
||||||
float holdTime;
|
|
||||||
float fxTime;
|
|
||||||
int channel;
|
|
||||||
|
|
||||||
} hudtextparms_t;
|
|
||||||
|
|
||||||
class UTIL_GroupTrace
|
class UTIL_GroupTrace
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
@ -237,35 +177,14 @@ private:
|
|||||||
int m_oldgroupop;
|
int m_oldgroupop;
|
||||||
};
|
};
|
||||||
|
|
||||||
inline edict_t *FIND_ENTITY_BY_CLASSNAME(edict_t *entStart, const char *pszName)
|
// Inlines
|
||||||
{
|
inline edict_t *FIND_ENTITY_BY_CLASSNAME(edict_t *entStart, const char *pszName) { return FIND_ENTITY_BY_STRING(entStart, "classname", pszName); }
|
||||||
return FIND_ENTITY_BY_STRING(entStart, "classname", pszName);
|
inline edict_t *FIND_ENTITY_BY_TARGETNAME(edict_t *entStart, const char *pszName) { return FIND_ENTITY_BY_STRING(entStart, "targetname", pszName); }
|
||||||
}
|
|
||||||
|
|
||||||
inline edict_t *FIND_ENTITY_BY_TARGETNAME(edict_t *entStart, const char *pszName)
|
inline edict_t *ENT(const entvars_t *pev) { return pev->pContainingEntity; }
|
||||||
{
|
inline edict_t *ENT(EOFFSET eoffset) { return (*g_engfuncs.pfnPEntityOfEntOffset)(eoffset); }
|
||||||
return FIND_ENTITY_BY_STRING(entStart, "targetname", pszName);
|
inline EOFFSET OFFSET(const edict_t *pent) { return (*g_engfuncs.pfnEntOffsetOfPEntity)(pent); }
|
||||||
}
|
inline EOFFSET OFFSET(const entvars_t *pev) { return OFFSET(ENT(pev)); }
|
||||||
|
|
||||||
inline edict_t *ENT(const entvars_t *pev)
|
|
||||||
{
|
|
||||||
return pev->pContainingEntity;
|
|
||||||
}
|
|
||||||
|
|
||||||
inline edict_t *ENT(EOFFSET eoffset)
|
|
||||||
{
|
|
||||||
return (*g_engfuncs.pfnPEntityOfEntOffset)(eoffset);
|
|
||||||
}
|
|
||||||
|
|
||||||
inline EOFFSET OFFSET(const edict_t *pent)
|
|
||||||
{
|
|
||||||
return (*g_engfuncs.pfnEntOffsetOfPEntity)(pent);
|
|
||||||
}
|
|
||||||
|
|
||||||
inline EOFFSET OFFSET(const entvars_t *pev)
|
|
||||||
{
|
|
||||||
return OFFSET(ENT(pev));
|
|
||||||
}
|
|
||||||
|
|
||||||
inline entvars_t *VARS(edict_t *pent)
|
inline entvars_t *VARS(edict_t *pent)
|
||||||
{
|
{
|
||||||
@ -275,69 +194,26 @@ inline entvars_t *VARS(edict_t *pent)
|
|||||||
return &pent->v;
|
return &pent->v;
|
||||||
}
|
}
|
||||||
|
|
||||||
inline entvars_t *VARS(EOFFSET eoffset)
|
inline entvars_t *VARS(EOFFSET eoffset) { return VARS(ENT(eoffset)); }
|
||||||
{
|
inline int ENTINDEX(const edict_t *pEdict) { return (*g_engfuncs.pfnIndexOfEdict)(pEdict); }
|
||||||
return VARS(ENT(eoffset));
|
inline edict_t *INDEXENT(int iEdictNum) { return (*g_engfuncs.pfnPEntityOfEntIndex)(iEdictNum); }
|
||||||
}
|
inline void MESSAGE_BEGIN(int msg_dest, int msg_type, const float *pOrigin, entvars_t *ent) { MESSAGE_BEGIN(msg_dest, msg_type, pOrigin, ENT(ent)); }
|
||||||
|
inline BOOL FNullEnt(EOFFSET eoffset) { return (eoffset == 0); }
|
||||||
inline int ENTINDEX(const edict_t *pEdict)
|
inline BOOL FNullEnt(entvars_t *pev) { return (pev == NULL || FNullEnt(OFFSET(pev))); }
|
||||||
{
|
inline BOOL FNullEnt(const edict_t *pent) { return (pent == NULL || FNullEnt(OFFSET(pent))); }
|
||||||
return (*g_engfuncs.pfnIndexOfEdict)(pEdict);
|
inline BOOL FStringNull(int iString) { return (iString == iStringNull); }
|
||||||
}
|
inline BOOL FStrEq(const char *sz1, const char *sz2) { return (Q_strcmp(sz1, sz2) == 0); }
|
||||||
|
inline BOOL FClassnameIs(entvars_t *pev, const char *szClassname) { return FStrEq(STRING(pev->classname), szClassname); }
|
||||||
inline edict_t *INDEXENT(int iEdictNum)
|
inline BOOL FClassnameIs(edict_t *pent, const char *szClassname) { return FStrEq(STRING(VARS(pent)->classname), szClassname); }
|
||||||
{
|
inline void UTIL_MakeVectorsPrivate(Vector vecAngles, float *p_vForward, float *p_vRight, float *p_vUp) { g_engfuncs.pfnAngleVectors(vecAngles, p_vForward, p_vRight, p_vUp); }
|
||||||
return (*g_engfuncs.pfnPEntityOfEntIndex)(iEdictNum);
|
|
||||||
}
|
|
||||||
|
|
||||||
inline void MESSAGE_BEGIN(int msg_dest, int msg_type, const float *pOrigin, entvars_t *ent)
|
|
||||||
{
|
|
||||||
MESSAGE_BEGIN(msg_dest, msg_type, pOrigin, ENT(ent));
|
|
||||||
}
|
|
||||||
|
|
||||||
inline BOOL FNullEnt(EOFFSET eoffset)
|
|
||||||
{
|
|
||||||
return (eoffset == 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
inline BOOL FNullEnt(entvars_t *pev)
|
|
||||||
{
|
|
||||||
return (pev == NULL || FNullEnt(OFFSET(pev)));
|
|
||||||
}
|
|
||||||
|
|
||||||
inline BOOL FNullEnt(const edict_t *pent)
|
|
||||||
{
|
|
||||||
return (pent == NULL || FNullEnt(OFFSET(pent)));
|
|
||||||
}
|
|
||||||
|
|
||||||
inline BOOL FStringNull(int iString)
|
|
||||||
{
|
|
||||||
return (iString == iStringNull);
|
|
||||||
}
|
|
||||||
|
|
||||||
inline BOOL FStrEq(const char *sz1, const char *sz2)
|
|
||||||
{
|
|
||||||
return (Q_strcmp(sz1, sz2) == 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
inline BOOL FClassnameIs(entvars_t *pev, const char *szClassname)
|
|
||||||
{
|
|
||||||
return FStrEq(STRING(pev->classname), szClassname);
|
|
||||||
}
|
|
||||||
|
|
||||||
inline BOOL FClassnameIs(edict_t *pent, const char *szClassname)
|
|
||||||
{
|
|
||||||
// TODO: check is null?
|
|
||||||
return FStrEq(STRING(VARS(pent)->classname), szClassname);
|
|
||||||
}
|
|
||||||
|
|
||||||
inline void UTIL_MakeVectorsPrivate(Vector vecAngles, float *p_vForward, float *p_vRight, float *p_vUp)
|
|
||||||
{
|
|
||||||
g_engfuncs.pfnAngleVectors(vecAngles, p_vForward, p_vRight, p_vUp);
|
|
||||||
}
|
|
||||||
|
|
||||||
extern void EMIT_SOUND_DYN(edict_t *entity, int channel, const char *sample, float volume, float attenuation, int flags, int pitch);
|
extern void EMIT_SOUND_DYN(edict_t *entity, int channel, const char *sample, float volume, float attenuation, int flags, int pitch);
|
||||||
|
|
||||||
|
// NOTE: use EMIT_SOUND_DYN to set the pitch of a sound. Pitch of 100
|
||||||
|
// is no pitch shift. Pitch > 100 up to 255 is a higher pitch, pitch < 100
|
||||||
|
// down to 1 is a lower pitch. 150 to 70 is the realistic range.
|
||||||
|
// EMIT_SOUND_DYN with pitch != 100 should be used sparingly, as it's not quite as
|
||||||
|
// fast as EMIT_SOUND (the pitchshift mixer is not native coded).
|
||||||
inline void EMIT_SOUND(edict_t *entity, int channel, const char *sample, float volume, float attenuation)
|
inline void EMIT_SOUND(edict_t *entity, int channel, const char *sample, float volume, float attenuation)
|
||||||
{
|
{
|
||||||
EMIT_SOUND_DYN(entity, channel, sample, volume, attenuation, 0, PITCH_NORM);
|
EMIT_SOUND_DYN(entity, channel, sample, volume, attenuation, 0, PITCH_NORM);
|
||||||
@ -436,7 +312,7 @@ void UTIL_BubbleTrail(Vector from, Vector to, int count);
|
|||||||
void UTIL_Remove(CBaseEntity *pEntity);
|
void UTIL_Remove(CBaseEntity *pEntity);
|
||||||
BOOL UTIL_IsValidEntity(edict_t *pent);
|
BOOL UTIL_IsValidEntity(edict_t *pent);
|
||||||
void UTIL_PrecacheOther(const char *szClassname);
|
void UTIL_PrecacheOther(const char *szClassname);
|
||||||
void UTIL_LogPrintf(char *fmt, ...);
|
void UTIL_LogPrintf(const char *fmt, ...);
|
||||||
float UTIL_DotPoints(const Vector &vecSrc, const Vector &vecCheck, const Vector &vecDir);
|
float UTIL_DotPoints(const Vector &vecSrc, const Vector &vecCheck, const Vector &vecDir);
|
||||||
void UTIL_StripToken(const char *pKey, char *pDest);
|
void UTIL_StripToken(const char *pKey, char *pDest);
|
||||||
void EntvarsKeyvalue(entvars_t *pev, KeyValueData *pkvd);
|
void EntvarsKeyvalue(entvars_t *pev, KeyValueData *pkvd);
|
||||||
|
@ -42,7 +42,7 @@ void FixupAngles2(Vector &v)
|
|||||||
}
|
}
|
||||||
|
|
||||||
IMPLEMENT_SAVERESTORE(CFuncVehicle, CBaseEntity);
|
IMPLEMENT_SAVERESTORE(CFuncVehicle, CBaseEntity);
|
||||||
LINK_ENTITY_TO_CLASS(func_vehicle, CFuncVehicle);
|
LINK_ENTITY_TO_CLASS(func_vehicle, CFuncVehicle, CCSFuncVehicle);
|
||||||
|
|
||||||
void CFuncVehicle::__MAKE_VHOOK(KeyValue)(KeyValueData *pkvd)
|
void CFuncVehicle::__MAKE_VHOOK(KeyValue)(KeyValueData *pkvd)
|
||||||
{
|
{
|
||||||
@ -943,7 +943,7 @@ void CFuncVehicle::__MAKE_VHOOK(Precache)()
|
|||||||
m_usAdjustPitch = PRECACHE_EVENT(1, "events/vehicle.sc");
|
m_usAdjustPitch = PRECACHE_EVENT(1, "events/vehicle.sc");
|
||||||
}
|
}
|
||||||
|
|
||||||
LINK_ENTITY_TO_CLASS(func_vehiclecontrols, CFuncVehicleControls);
|
LINK_ENTITY_TO_CLASS(func_vehiclecontrols, CFuncVehicleControls, CCSFuncVehicleControls);
|
||||||
|
|
||||||
void CFuncVehicleControls::Find()
|
void CFuncVehicleControls::Find()
|
||||||
{
|
{
|
||||||
|
@ -63,27 +63,32 @@ MULTIDAMAGE gMultiDamage;
|
|||||||
// MaxAmmoCarry - pass in a name and this function will tell
|
// MaxAmmoCarry - pass in a name and this function will tell
|
||||||
// you the maximum amount of that type of ammunition that a
|
// you the maximum amount of that type of ammunition that a
|
||||||
// player can carry.
|
// player can carry.
|
||||||
int MaxAmmoCarry(int iszName)
|
int MaxAmmoCarry(const char *szName)
|
||||||
{
|
{
|
||||||
for (int i = 0; i < MAX_WEAPONS; ++i)
|
for (int i = 0; i < MAX_WEAPONS; ++i)
|
||||||
{
|
{
|
||||||
ItemInfo *info = &IMPL_CLASS(CBasePlayerItem, ItemInfoArray)[ i ];
|
ItemInfo *info = &IMPL_CLASS(CBasePlayerItem, ItemInfoArray)[ i ];
|
||||||
|
|
||||||
if (info->pszAmmo1 && !Q_strcmp(STRING(iszName), info->pszAmmo1))
|
if (info->pszAmmo1 && !Q_strcmp(szName, info->pszAmmo1))
|
||||||
{
|
{
|
||||||
return info->iMaxAmmo1;
|
return info->iMaxAmmo1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (info->pszAmmo2 && !Q_strcmp(STRING(iszName), info->pszAmmo2))
|
if (info->pszAmmo2 && !Q_strcmp(szName, info->pszAmmo2))
|
||||||
{
|
{
|
||||||
return info->iMaxAmmo2;
|
return info->iMaxAmmo2;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
ALERT(at_console, "MaxAmmoCarry() doesn't recognize '%s'!\n", STRING(iszName));
|
ALERT(at_console, "MaxAmmoCarry() doesn't recognize '%s'!\n", szName);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int MaxAmmoCarry(int iszName)
|
||||||
|
{
|
||||||
|
return MaxAmmoCarry(STRING(iszName));
|
||||||
|
}
|
||||||
|
|
||||||
// ClearMultiDamage - resets the global multi damage accumulator
|
// ClearMultiDamage - resets the global multi damage accumulator
|
||||||
void ClearMultiDamage()
|
void ClearMultiDamage()
|
||||||
{
|
{
|
||||||
@ -309,7 +314,9 @@ void W_Precache()
|
|||||||
{
|
{
|
||||||
Q_memset(IMPL_CLASS(CBasePlayerItem, ItemInfoArray), 0, sizeof(IMPL_CLASS(CBasePlayerItem, ItemInfoArray)));
|
Q_memset(IMPL_CLASS(CBasePlayerItem, ItemInfoArray), 0, sizeof(IMPL_CLASS(CBasePlayerItem, ItemInfoArray)));
|
||||||
Q_memset(IMPL_CLASS(CBasePlayerItem, AmmoInfoArray), 0, sizeof(IMPL_CLASS(CBasePlayerItem, AmmoInfoArray)));
|
Q_memset(IMPL_CLASS(CBasePlayerItem, AmmoInfoArray), 0, sizeof(IMPL_CLASS(CBasePlayerItem, AmmoInfoArray)));
|
||||||
|
|
||||||
giAmmoIndex = 0;
|
giAmmoIndex = 0;
|
||||||
|
WeaponInfoReset();
|
||||||
|
|
||||||
// custom items...
|
// custom items...
|
||||||
|
|
||||||
@ -1491,6 +1498,7 @@ void CBasePlayerWeapon::__MAKE_VHOOK(RetireWeapon)()
|
|||||||
// GetNextAttackDelay - An accurate way of calcualting the next attack time.
|
// GetNextAttackDelay - An accurate way of calcualting the next attack time.
|
||||||
float CBasePlayerWeapon::GetNextAttackDelay(float delay)
|
float CBasePlayerWeapon::GetNextAttackDelay(float delay)
|
||||||
{
|
{
|
||||||
|
#ifndef REGAMEDLL_FIXES
|
||||||
if (m_flLastFireTime == 0.0f || m_flNextPrimaryAttack == -1.0f)
|
if (m_flLastFireTime == 0.0f || m_flNextPrimaryAttack == -1.0f)
|
||||||
{
|
{
|
||||||
// At this point, we are assuming that the client has stopped firing
|
// At this point, we are assuming that the client has stopped firing
|
||||||
@ -1498,6 +1506,7 @@ float CBasePlayerWeapon::GetNextAttackDelay(float delay)
|
|||||||
m_flPrevPrimaryAttack = delay;
|
m_flPrevPrimaryAttack = delay;
|
||||||
m_flLastFireTime = gpGlobals->time;
|
m_flLastFireTime = gpGlobals->time;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef REGAMEDLL_BUILD_6153
|
#ifdef REGAMEDLL_BUILD_6153
|
||||||
|
|
||||||
@ -1529,7 +1538,7 @@ float CBasePlayerWeapon::GetNextAttackDelay(float delay)
|
|||||||
return flNextAttack;
|
return flNextAttack;
|
||||||
}
|
}
|
||||||
|
|
||||||
LINK_ENTITY_TO_CLASS(weaponbox, CWeaponBox);
|
LINK_ENTITY_TO_CLASS(weaponbox, CWeaponBox, CCSWeaponBox);
|
||||||
IMPLEMENT_SAVERESTORE(CWeaponBox, CBaseEntity);
|
IMPLEMENT_SAVERESTORE(CWeaponBox, CBaseEntity);
|
||||||
|
|
||||||
void CWeaponBox::__MAKE_VHOOK(Precache)()
|
void CWeaponBox::__MAKE_VHOOK(Precache)()
|
||||||
@ -1566,7 +1575,7 @@ void CWeaponBox::BombThink()
|
|||||||
if (!pEntity->IsPlayer() || pEntity->IsDormant())
|
if (!pEntity->IsPlayer() || pEntity->IsDormant())
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
CBasePlayer *pTempPlayer = GetClassPtr((CBasePlayer *)pEntity->pev);
|
CBasePlayer *pTempPlayer = GetClassPtr<CCSPlayer>((CBasePlayer *)pEntity->pev);
|
||||||
|
|
||||||
if (pTempPlayer->pev->deadflag == DEAD_NO && pTempPlayer->m_iTeam == TERRORIST)
|
if (pTempPlayer->pev->deadflag == DEAD_NO && pTempPlayer->m_iTeam == TERRORIST)
|
||||||
{
|
{
|
||||||
@ -1716,7 +1725,7 @@ void CWeaponBox::__MAKE_VHOOK(Touch)(CBaseEntity *pOther)
|
|||||||
if (pEntity->pev->flags == FL_DORMANT)
|
if (pEntity->pev->flags == FL_DORMANT)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
CBasePlayer *pTempPlayer = GetClassPtr((CBasePlayer *)pEntity->pev);
|
CBasePlayer *pTempPlayer = GetClassPtr<CCSPlayer>((CBasePlayer *)pEntity->pev);
|
||||||
|
|
||||||
if (pTempPlayer->pev->deadflag == DEAD_NO && pTempPlayer->m_iTeam == TERRORIST)
|
if (pTempPlayer->pev->deadflag == DEAD_NO && pTempPlayer->m_iTeam == TERRORIST)
|
||||||
{
|
{
|
||||||
@ -1814,6 +1823,11 @@ void CWeaponBox::__MAKE_VHOOK(Touch)(CBaseEntity *pOther)
|
|||||||
{
|
{
|
||||||
if (!FStringNull(m_rgiszAmmo[n]))
|
if (!FStringNull(m_rgiszAmmo[n]))
|
||||||
{
|
{
|
||||||
|
#ifdef REGAMEDLL_FIXES
|
||||||
|
if (m_rgAmmo[n] < MaxAmmoCarry(m_rgiszAmmo[n]))
|
||||||
|
continue;
|
||||||
|
#endif
|
||||||
|
|
||||||
// there's some ammo of this type.
|
// there's some ammo of this type.
|
||||||
pPlayer->GiveAmmo(m_rgAmmo[n], (char *)STRING(m_rgiszAmmo[n]), MaxAmmoCarry(m_rgiszAmmo[n]));
|
pPlayer->GiveAmmo(m_rgAmmo[n], (char *)STRING(m_rgiszAmmo[n]), MaxAmmoCarry(m_rgiszAmmo[n]));
|
||||||
|
|
||||||
@ -1923,9 +1937,9 @@ int CWeaponBox::GiveAmmo(int iCount, char *szName, int iMax, int *pIndex)
|
|||||||
if (iCount == 0 || iAdd > 0)
|
if (iCount == 0 || iAdd > 0)
|
||||||
{
|
{
|
||||||
m_rgAmmo[i] += iAdd;
|
m_rgAmmo[i] += iAdd;
|
||||||
|
|
||||||
return i;
|
return i;
|
||||||
}
|
}
|
||||||
|
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1995,6 +2009,29 @@ void CWeaponBox::__MAKE_VHOOK(SetObjectCollisionBox)()
|
|||||||
pev->absmax = pev->origin + Vector(16, 16, 16);
|
pev->absmax = pev->origin + Vector(16, 16, 16);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
char *armouryItemModels[] = {
|
||||||
|
"models/w_mp5.mdl",
|
||||||
|
"models/w_tmp.mdl",
|
||||||
|
"models/w_p90.mdl",
|
||||||
|
"models/w_mac10.mdl",
|
||||||
|
"models/w_ak47.mdl",
|
||||||
|
"models/w_sg552.mdl",
|
||||||
|
"models/w_m4a1.mdl",
|
||||||
|
"models/w_aug.mdl",
|
||||||
|
"models/w_scout.mdl",
|
||||||
|
"models/w_g3sg1.mdl",
|
||||||
|
"models/w_awp.mdl",
|
||||||
|
"models/w_m3.mdl",
|
||||||
|
"models/w_xm1014.mdl",
|
||||||
|
"models/w_m249.mdl",
|
||||||
|
"models/w_flashbang.mdl",
|
||||||
|
"models/w_hegrenade.mdl",
|
||||||
|
"models/w_kevlar.mdl",
|
||||||
|
"models/w_assault.mdl",
|
||||||
|
"models/w_smokegrenade.mdl",
|
||||||
|
"models/w_kevlar.mdl",
|
||||||
|
};
|
||||||
|
|
||||||
void CArmoury::__MAKE_VHOOK(Spawn)()
|
void CArmoury::__MAKE_VHOOK(Spawn)()
|
||||||
{
|
{
|
||||||
Precache();
|
Precache();
|
||||||
@ -2003,31 +2040,9 @@ void CArmoury::__MAKE_VHOOK(Spawn)()
|
|||||||
|
|
||||||
UTIL_SetSize(pev, Vector(-16, -16, 0), Vector(16, 16, 16));
|
UTIL_SetSize(pev, Vector(-16, -16, 0), Vector(16, 16, 16));
|
||||||
UTIL_SetOrigin(pev, pev->origin);
|
UTIL_SetOrigin(pev, pev->origin);
|
||||||
SetTouch(&CArmoury::ArmouryTouch);
|
|
||||||
|
|
||||||
switch (m_iItem)
|
SetTouch(&CArmoury::ArmouryTouch);
|
||||||
{
|
SET_MODEL(ENT(pev), armouryItemModels[m_iItem]);
|
||||||
case ARMOURY_MP5NAVY: SET_MODEL(ENT(pev), "models/w_mp5.mdl"); break;
|
|
||||||
case ARMOURY_TMP: SET_MODEL(ENT(pev), "models/w_tmp.mdl"); break;
|
|
||||||
case ARMOURY_P90: SET_MODEL(ENT(pev), "models/w_p90.mdl"); break;
|
|
||||||
case ARMOURY_MAC10: SET_MODEL(ENT(pev), "models/w_mac10.mdl"); break;
|
|
||||||
case ARMOURY_AK47: SET_MODEL(ENT(pev), "models/w_ak47.mdl"); break;
|
|
||||||
case ARMOURY_SG552: SET_MODEL(ENT(pev), "models/w_sg552.mdl"); break;
|
|
||||||
case ARMOURY_M4A1: SET_MODEL(ENT(pev), "models/w_m4a1.mdl"); break;
|
|
||||||
case ARMOURY_AUG: SET_MODEL(ENT(pev), "models/w_aug.mdl"); break;
|
|
||||||
case ARMOURY_SCOUT: SET_MODEL(ENT(pev), "models/w_scout.mdl"); break;
|
|
||||||
case ARMOURY_G3SG1: SET_MODEL(ENT(pev), "models/w_g3sg1.mdl"); break;
|
|
||||||
case ARMOURY_AWP: SET_MODEL(ENT(pev), "models/w_awp.mdl"); break;
|
|
||||||
case ARMOURY_M3: SET_MODEL(ENT(pev), "models/w_m3.mdl"); break;
|
|
||||||
case ARMOURY_XM1014: SET_MODEL(ENT(pev), "models/w_xm1014.mdl"); break;
|
|
||||||
case ARMOURY_M249: SET_MODEL(ENT(pev), "models/w_m249.mdl"); break;
|
|
||||||
case ARMOURY_FLASHBANG: SET_MODEL(ENT(pev), "models/w_flashbang.mdl"); break;
|
|
||||||
case ARMOURY_HEGRENADE: SET_MODEL(ENT(pev), "models/w_hegrenade.mdl"); break;
|
|
||||||
case ARMOURY_KEVLAR: SET_MODEL(ENT(pev), "models/w_kevlar.mdl"); break;
|
|
||||||
case ARMOURY_ASSAULT: SET_MODEL(ENT(pev), "models/w_assault.mdl"); break;
|
|
||||||
case ARMOURY_SMOKEGRENADE: SET_MODEL(ENT(pev), "models/w_smokegrenade.mdl"); break;
|
|
||||||
default: SET_MODEL(ENT(pev), "models/w_kevlar.mdl"); break;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (m_iCount <= 0)
|
if (m_iCount <= 0)
|
||||||
{
|
{
|
||||||
@ -2093,31 +2108,32 @@ void CArmoury::__MAKE_VHOOK(Restart)()
|
|||||||
|
|
||||||
void CArmoury::__MAKE_VHOOK(Precache)()
|
void CArmoury::__MAKE_VHOOK(Precache)()
|
||||||
{
|
{
|
||||||
switch (m_iItem)
|
PRECACHE_MODEL(armouryItemModels[m_iItem]);
|
||||||
{
|
|
||||||
case ARMOURY_MP5NAVY: PRECACHE_MODEL("models/w_mp5.mdl"); break;
|
|
||||||
case ARMOURY_TMP: PRECACHE_MODEL("models/w_tmp.mdl"); break;
|
|
||||||
case ARMOURY_P90: PRECACHE_MODEL("models/w_p90.mdl"); break;
|
|
||||||
case ARMOURY_MAC10: PRECACHE_MODEL("models/w_mac10.mdl"); break;
|
|
||||||
case ARMOURY_AK47: PRECACHE_MODEL("models/w_ak47.mdl"); break;
|
|
||||||
case ARMOURY_SG552: PRECACHE_MODEL("models/w_sg552.mdl"); break;
|
|
||||||
case ARMOURY_M4A1: PRECACHE_MODEL("models/w_m4a1.mdl"); break;
|
|
||||||
case ARMOURY_AUG: PRECACHE_MODEL("models/w_aug.mdl"); break;
|
|
||||||
case ARMOURY_SCOUT: PRECACHE_MODEL("models/w_scout.mdl"); break;
|
|
||||||
case ARMOURY_G3SG1: PRECACHE_MODEL("models/w_g3sg1.mdl"); break;
|
|
||||||
case ARMOURY_AWP: PRECACHE_MODEL("models/w_awp.mdl"); break;
|
|
||||||
case ARMOURY_M3: PRECACHE_MODEL("models/w_m3.mdl"); break;
|
|
||||||
case ARMOURY_XM1014: PRECACHE_MODEL("models/w_xm1014.mdl"); break;
|
|
||||||
case ARMOURY_M249: PRECACHE_MODEL("models/w_m249.mdl"); break;
|
|
||||||
case ARMOURY_FLASHBANG: PRECACHE_MODEL("models/w_flashbang.mdl"); break;
|
|
||||||
case ARMOURY_HEGRENADE: PRECACHE_MODEL("models/w_hegrenade.mdl"); break;
|
|
||||||
case ARMOURY_KEVLAR: PRECACHE_MODEL("models/w_kevlar.mdl"); break;
|
|
||||||
case ARMOURY_ASSAULT: PRECACHE_MODEL("models/w_assault.mdl"); break;
|
|
||||||
case ARMOURY_SMOKEGRENADE: PRECACHE_MODEL("models/w_smokegrenade.mdl"); break;
|
|
||||||
default: PRECACHE_MODEL("models/w_kevlar.mdl"); break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
struct ArmouryItemStruct
|
||||||
|
{
|
||||||
|
const char *entityName;
|
||||||
|
char *ammoName;
|
||||||
|
int giveAmount;
|
||||||
|
MaxAmmoType maxRounds;
|
||||||
|
} armouryItemInfo[] = {
|
||||||
|
{ "weapon_mp5navy", "9mm", 60, MAX_AMMO_9MM }, // ARMOURY_MP5NAVY
|
||||||
|
{ "weapon_tmp", "9mm", 60, MAX_AMMO_9MM }, // ARMOURY_TMP
|
||||||
|
{ "weapon_p90", "57mm", 50, MAX_AMMO_57MM }, // ARMOURY_P90
|
||||||
|
{ "weapon_mac10", "45acp", 60, MAX_AMMO_45ACP }, // ARMOURY_MAC10
|
||||||
|
{ "weapon_ak47", "762Nato", 60, MAX_AMMO_762NATO }, // ARMOURY_AK47
|
||||||
|
{ "weapon_sg552", "556Nato", 60, MAX_AMMO_556NATO }, // ARMOURY_SG552
|
||||||
|
{ "weapon_m4a1", "556Nato", 60, MAX_AMMO_556NATO }, // ARMOURY_M4A1
|
||||||
|
{ "weapon_aug", "556Nato", 60, MAX_AMMO_556NATO }, // ARMOURY_AUG
|
||||||
|
{ "weapon_scout", "762Nato", 30, MAX_AMMO_762NATO }, // ARMOURY_SCOUT
|
||||||
|
{ "weapon_g3sg1", "762Nato", 30, MAX_AMMO_762NATO }, // ARMOURY_G3SG1
|
||||||
|
{ "weapon_awp", "338Magnum", 20, MAX_AMMO_338MAGNUM }, // ARMOURY_AWP
|
||||||
|
{ "weapon_m3", "buckshot", 24, MAX_AMMO_BUCKSHOT }, // ARMOURY_M3
|
||||||
|
{ "weapon_xm1014", "buckshot", 24, MAX_AMMO_BUCKSHOT }, // ARMOURY_XM1014
|
||||||
|
{ "weapon_m249", "556NatoBox", 60, MAX_AMMO_556NATOBOX }, // ARMOURY_M249
|
||||||
|
};
|
||||||
|
|
||||||
void CArmoury::ArmouryTouch(CBaseEntity *pOther)
|
void CArmoury::ArmouryTouch(CBaseEntity *pOther)
|
||||||
{
|
{
|
||||||
if (!pOther->IsPlayer())
|
if (!pOther->IsPlayer())
|
||||||
@ -2128,80 +2144,26 @@ void CArmoury::ArmouryTouch(CBaseEntity *pOther)
|
|||||||
if (p->m_bIsVIP)
|
if (p->m_bIsVIP)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
// weapons
|
||||||
if (m_iCount > 0 && m_iItem <= ARMOURY_M249)
|
if (m_iCount > 0 && m_iItem <= ARMOURY_M249)
|
||||||
{
|
{
|
||||||
if (p->m_bHasPrimary)
|
if (p->m_bHasPrimary)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
m_iCount--;
|
m_iCount--;
|
||||||
|
auto item = &armouryItemInfo[m_iItem];
|
||||||
|
|
||||||
switch (m_iItem)
|
p->GiveNamedItem(item->entityName);
|
||||||
{
|
p->GiveAmmo(item->giveAmount, item->ammoName, item->maxRounds);
|
||||||
case ARMOURY_MP5NAVY:
|
|
||||||
p->GiveNamedItem("weapon_mp5navy");
|
|
||||||
p->GiveAmmo(60, "9mm", MAX_AMMO_9MM);
|
|
||||||
break;
|
|
||||||
case ARMOURY_TMP:
|
|
||||||
p->GiveNamedItem("weapon_tmp");
|
|
||||||
p->GiveAmmo(60, "9mm", MAX_AMMO_9MM);
|
|
||||||
break;
|
|
||||||
case ARMOURY_P90:
|
|
||||||
p->GiveNamedItem("weapon_p90");
|
|
||||||
p->GiveAmmo(50, "57mm", MAX_AMMO_57MM);
|
|
||||||
break;
|
|
||||||
case ARMOURY_MAC10:
|
|
||||||
p->GiveNamedItem("weapon_mac10");
|
|
||||||
p->GiveAmmo(60, "45acp", MAX_AMMO_45ACP);
|
|
||||||
break;
|
|
||||||
case ARMOURY_AK47:
|
|
||||||
p->GiveNamedItem("weapon_ak47");
|
|
||||||
p->GiveAmmo(60, "762Nato", MAX_AMMO_762NATO);
|
|
||||||
break;
|
|
||||||
case ARMOURY_SG552:
|
|
||||||
p->GiveNamedItem("weapon_sg552");
|
|
||||||
p->GiveAmmo(60, "556Nato", MAX_AMMO_556NATO);
|
|
||||||
break;
|
|
||||||
case ARMOURY_M4A1:
|
|
||||||
p->GiveNamedItem("weapon_m4a1");
|
|
||||||
p->GiveAmmo(60, "556Nato", MAX_AMMO_556NATO);
|
|
||||||
break;
|
|
||||||
case ARMOURY_AUG:
|
|
||||||
p->GiveNamedItem("weapon_aug");
|
|
||||||
p->GiveAmmo(60, "556Nato", MAX_AMMO_556NATO);
|
|
||||||
break;
|
|
||||||
case ARMOURY_SCOUT:
|
|
||||||
p->GiveNamedItem("weapon_scout");
|
|
||||||
p->GiveAmmo(30, "762Nato", MAX_AMMO_762NATO);
|
|
||||||
break;
|
|
||||||
case ARMOURY_G3SG1:
|
|
||||||
p->GiveNamedItem("weapon_g3sg1");
|
|
||||||
p->GiveAmmo(30, "762Nato", MAX_AMMO_762NATO);
|
|
||||||
break;
|
|
||||||
case ARMOURY_AWP:
|
|
||||||
p->GiveNamedItem("weapon_awp");
|
|
||||||
p->GiveAmmo(20, "338Magnum", MAX_AMMO_338MAGNUM);
|
|
||||||
break;
|
|
||||||
case ARMOURY_M3:
|
|
||||||
p->GiveNamedItem("weapon_m3");
|
|
||||||
p->GiveAmmo(24, "buckshot", MAX_AMMO_BUCKSHOT);
|
|
||||||
break;
|
|
||||||
case ARMOURY_XM1014:
|
|
||||||
p->GiveNamedItem("weapon_xm1014");
|
|
||||||
p->GiveAmmo(24, "buckshot", MAX_AMMO_BUCKSHOT);
|
|
||||||
break;
|
|
||||||
case ARMOURY_M249:
|
|
||||||
p->GiveNamedItem("weapon_m249");
|
|
||||||
p->GiveAmmo(60, "556NatoBox", MAX_AMMO_556NATOBOX);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
// items & grenades
|
||||||
else if (m_iCount > 0 && m_iItem >= ARMOURY_FLASHBANG)
|
else if (m_iCount > 0 && m_iItem >= ARMOURY_FLASHBANG)
|
||||||
{
|
{
|
||||||
switch (m_iItem)
|
switch (m_iItem)
|
||||||
{
|
{
|
||||||
case ARMOURY_FLASHBANG:
|
case ARMOURY_FLASHBANG:
|
||||||
{
|
{
|
||||||
if (p->AmmoInventory(p->GetAmmoIndex("Flashbang")) >= 2)
|
if (p->AmmoInventory(p->GetAmmoIndex("Flashbang")) >= MaxAmmoCarry("Flashbang"))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
p->GiveNamedItem("weapon_flashbang");
|
p->GiveNamedItem("weapon_flashbang");
|
||||||
@ -2210,7 +2172,7 @@ void CArmoury::ArmouryTouch(CBaseEntity *pOther)
|
|||||||
}
|
}
|
||||||
case ARMOURY_HEGRENADE:
|
case ARMOURY_HEGRENADE:
|
||||||
{
|
{
|
||||||
if (p->AmmoInventory(p->GetAmmoIndex("HEGrenade")) >= 1)
|
if (p->AmmoInventory(p->GetAmmoIndex("HEGrenade")) >= MaxAmmoCarry("HEGrenade"))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
p->GiveNamedItem("weapon_hegrenade");
|
p->GiveNamedItem("weapon_hegrenade");
|
||||||
@ -2237,7 +2199,7 @@ void CArmoury::ArmouryTouch(CBaseEntity *pOther)
|
|||||||
}
|
}
|
||||||
case ARMOURY_SMOKEGRENADE:
|
case ARMOURY_SMOKEGRENADE:
|
||||||
{
|
{
|
||||||
if (p->AmmoInventory(p->GetAmmoIndex("SmokeGrenade")) >= 1)
|
if (p->AmmoInventory(p->GetAmmoIndex("SmokeGrenade")) >= MaxAmmoCarry("SmokeGrenade"))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
p->GiveNamedItem("weapon_smokegrenade");
|
p->GiveNamedItem("weapon_smokegrenade");
|
||||||
@ -2269,4 +2231,4 @@ void CArmoury::__MAKE_VHOOK(KeyValue)(KeyValueData *pkvd)
|
|||||||
CBaseEntity::KeyValue(pkvd);
|
CBaseEntity::KeyValue(pkvd);
|
||||||
}
|
}
|
||||||
|
|
||||||
LINK_ENTITY_TO_CLASS(armoury_entity, CArmoury);
|
LINK_ENTITY_TO_CLASS(armoury_entity, CArmoury, CCSArmoury);
|
||||||
|
@ -32,9 +32,6 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "weapontype.h"
|
|
||||||
#include "wpn_shared.h"
|
|
||||||
|
|
||||||
class CBasePlayer;
|
class CBasePlayer;
|
||||||
|
|
||||||
#define MAX_WEAPONS 32
|
#define MAX_WEAPONS 32
|
||||||
@ -73,6 +70,9 @@ class CBasePlayer;
|
|||||||
// spawn flags
|
// spawn flags
|
||||||
#define SF_DETONATE 0x0001 // Grenades flagged with this will be triggered when the owner calls detonateSatchelCharges
|
#define SF_DETONATE 0x0001 // Grenades flagged with this will be triggered when the owner calls detonateSatchelCharges
|
||||||
|
|
||||||
|
#include "weapontype.h"
|
||||||
|
#include "wpn_shared.h"
|
||||||
|
|
||||||
// custom enum
|
// custom enum
|
||||||
enum ArmouryItemPack
|
enum ArmouryItemPack
|
||||||
{
|
{
|
||||||
@ -95,6 +95,7 @@ enum ArmouryItemPack
|
|||||||
ARMOURY_KEVLAR,
|
ARMOURY_KEVLAR,
|
||||||
ARMOURY_ASSAULT,
|
ARMOURY_ASSAULT,
|
||||||
ARMOURY_SMOKEGRENADE,
|
ARMOURY_SMOKEGRENADE,
|
||||||
|
ARMOURY_END
|
||||||
};
|
};
|
||||||
|
|
||||||
struct ItemInfo
|
struct ItemInfo
|
||||||
@ -400,17 +401,17 @@ public:
|
|||||||
|
|
||||||
int m_iPlayEmptySound;
|
int m_iPlayEmptySound;
|
||||||
int m_fFireOnEmpty;
|
int m_fFireOnEmpty;
|
||||||
float m_flNextPrimaryAttack;
|
float m_flNextPrimaryAttack; // soonest time ItemPostFrame will call PrimaryAttack
|
||||||
float m_flNextSecondaryAttack;
|
float m_flNextSecondaryAttack; // soonest time ItemPostFrame will call SecondaryAttack
|
||||||
float m_flTimeWeaponIdle;
|
float m_flTimeWeaponIdle; // soonest time ItemPostFrame will call WeaponIdle
|
||||||
int m_iPrimaryAmmoType;
|
int m_iPrimaryAmmoType; // "primary" ammo index into players m_rgAmmo[]
|
||||||
int m_iSecondaryAmmoType;
|
int m_iSecondaryAmmoType; // "secondary" ammo index into players m_rgAmmo[]
|
||||||
int m_iClip;
|
int m_iClip; // number of shots left in the primary weapon clip, -1 it not used
|
||||||
int m_iClientClip;
|
int m_iClientClip; // the last version of m_iClip sent to hud dll
|
||||||
int m_iClientWeaponState;
|
int m_iClientWeaponState; // the last version of the weapon state sent to hud dll (is current weapon, is on target)
|
||||||
int m_fInReload;
|
int m_fInReload; // Are we in the middle of a reload;
|
||||||
int m_fInSpecialReload;
|
int m_fInSpecialReload; // Are we in the middle of a reload for the shotguns
|
||||||
int m_iDefaultAmmo;
|
int m_iDefaultAmmo; // how much ammo you get when you pick up this weapon as placed by a level designer.
|
||||||
int m_iShellId;
|
int m_iShellId;
|
||||||
float m_fMaxSpeed;
|
float m_fMaxSpeed;
|
||||||
bool m_bDelayFire;
|
bool m_bDelayFire;
|
||||||
@ -431,6 +432,8 @@ public:
|
|||||||
float m_flDecreaseShotsFired;
|
float m_flDecreaseShotsFired;
|
||||||
unsigned short m_usFireGlock18;
|
unsigned short m_usFireGlock18;
|
||||||
unsigned short m_usFireFamas;
|
unsigned short m_usFireFamas;
|
||||||
|
|
||||||
|
// hle time creep vars
|
||||||
float m_flPrevPrimaryAttack;
|
float m_flPrevPrimaryAttack;
|
||||||
float m_flLastFireTime;
|
float m_flLastFireTime;
|
||||||
};
|
};
|
||||||
@ -553,7 +556,7 @@ public:
|
|||||||
virtual int GetItemInfo(ItemInfo *p);
|
virtual int GetItemInfo(ItemInfo *p);
|
||||||
virtual BOOL Deploy();
|
virtual BOOL Deploy();
|
||||||
virtual float GetMaxSpeed() { return MP5N_MAX_SPEED; }
|
virtual float GetMaxSpeed() { return MP5N_MAX_SPEED; }
|
||||||
int iItemSlot() { return PRIMARY_WEAPON_SLOT; }
|
virtual int iItemSlot() { return PRIMARY_WEAPON_SLOT; }
|
||||||
virtual void PrimaryAttack();
|
virtual void PrimaryAttack();
|
||||||
virtual void Reload();
|
virtual void Reload();
|
||||||
virtual void WeaponIdle();
|
virtual void WeaponIdle();
|
||||||
@ -1584,6 +1587,7 @@ public:
|
|||||||
|
|
||||||
public:
|
public:
|
||||||
int m_iShell;
|
int m_iShell;
|
||||||
|
private:
|
||||||
unsigned short m_usFireELITE_LEFT;
|
unsigned short m_usFireELITE_LEFT;
|
||||||
unsigned short m_usFireELITE_RIGHT;
|
unsigned short m_usFireELITE_RIGHT;
|
||||||
};
|
};
|
||||||
@ -1672,7 +1676,6 @@ public:
|
|||||||
public:
|
public:
|
||||||
void UMP45Fire(float flSpread, float flCycleTime, BOOL fUseAutoAim);
|
void UMP45Fire(float flSpread, float flCycleTime, BOOL fUseAutoAim);
|
||||||
|
|
||||||
public:
|
|
||||||
int m_iShell;
|
int m_iShell;
|
||||||
int iShellOn;
|
int iShellOn;
|
||||||
|
|
||||||
@ -1718,8 +1721,6 @@ public:
|
|||||||
|
|
||||||
public:
|
public:
|
||||||
void SG550Fire(float flSpread, float flCycleTime, BOOL fUseAutoAim);
|
void SG550Fire(float flSpread, float flCycleTime, BOOL fUseAutoAim);
|
||||||
|
|
||||||
public:
|
|
||||||
int m_iShell;
|
int m_iShell;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
@ -1840,6 +1841,8 @@ void FindHullIntersection(const Vector &vecSrc, TraceResult &tr, float *mins, fl
|
|||||||
void AnnounceFlashInterval(float interval, float offset = 0);
|
void AnnounceFlashInterval(float interval, float offset = 0);
|
||||||
|
|
||||||
int MaxAmmoCarry(int iszName);
|
int MaxAmmoCarry(int iszName);
|
||||||
|
int MaxAmmoCarry(const char *szName);
|
||||||
|
|
||||||
void ClearMultiDamage();
|
void ClearMultiDamage();
|
||||||
void ApplyMultiDamage(entvars_t *pevInflictor, entvars_t *pevAttacker);
|
void ApplyMultiDamage(entvars_t *pevInflictor, entvars_t *pevAttacker);
|
||||||
void AddMultiDamage(entvars_t *pevInflictor, CBaseEntity *pEntity, float flDamage, int bitsDamageType);
|
void AddMultiDamage(entvars_t *pevInflictor, CBaseEntity *pEntity, float flDamage, int bitsDamageType);
|
||||||
|
@ -5,6 +5,46 @@
|
|||||||
*/
|
*/
|
||||||
#ifndef HOOK_GAMEDLL
|
#ifndef HOOK_GAMEDLL
|
||||||
|
|
||||||
|
WeaponStruct g_weaponStruct[ MAX_WEAPONS ] =
|
||||||
|
{
|
||||||
|
{ 0, 0, 0, 0, 0 },
|
||||||
|
|
||||||
|
{ WEAPON_P228, P228_PRICE, TERRORIST|CT, AUTOBUYCLASS_SECONDARY, AMMO_357SIG_PRICE },
|
||||||
|
{ WEAPON_SCOUT, SCOUT_PRICE, TERRORIST|CT, AUTOBUYCLASS_PRIMARY, AMMO_762MM_PRICE },
|
||||||
|
{ WEAPON_XM1014, XM1014_PRICE, TERRORIST|CT, AUTOBUYCLASS_PRIMARY, AMMO_BUCKSHOT_PRICE },
|
||||||
|
{ WEAPON_MAC10, MAC10_PRICE, CT, AUTOBUYCLASS_PRIMARY, AMMO_45ACP_PRICE },
|
||||||
|
{ WEAPON_AUG, AUG_PRICE, TERRORIST, AUTOBUYCLASS_PRIMARY, AMMO_556MM_PRICE },
|
||||||
|
{ WEAPON_ELITE, ELITE_PRICE, CT, AUTOBUYCLASS_SECONDARY, AMMO_9MM_PRICE },
|
||||||
|
{ WEAPON_FIVESEVEN, FIVESEVEN_PRICE, TERRORIST|CT, AUTOBUYCLASS_SECONDARY, AMMO_57MM_PRICE },
|
||||||
|
{ WEAPON_UMP45, UMP45_PRICE, TERRORIST, AUTOBUYCLASS_PRIMARY, AMMO_45ACP_PRICE },
|
||||||
|
{ WEAPON_SG550, SG550_PRICE, TERRORIST, AUTOBUYCLASS_PRIMARY, AMMO_556MM_PRICE },
|
||||||
|
{ WEAPON_USP, USP_PRICE, TERRORIST|CT, AUTOBUYCLASS_SECONDARY, AMMO_45ACP_PRICE },
|
||||||
|
{ WEAPON_GLOCK18, GLOCK18_PRICE, TERRORIST|CT, AUTOBUYCLASS_SECONDARY, AMMO_9MM_PRICE },
|
||||||
|
{ WEAPON_MP5N, MP5NAVY_PRICE, TERRORIST|CT, AUTOBUYCLASS_PRIMARY, AMMO_9MM_PRICE },
|
||||||
|
{ WEAPON_AWP, AWP_PRICE, TERRORIST|CT, AUTOBUYCLASS_PRIMARY, AMMO_338MAG_PRICE },
|
||||||
|
{ WEAPON_M249, M249_PRICE, TERRORIST|CT, AUTOBUYCLASS_PRIMARY, AMMO_556MM_PRICE },
|
||||||
|
{ WEAPON_M3, M3_PRICE, TERRORIST|CT, AUTOBUYCLASS_PRIMARY, AMMO_BUCKSHOT_PRICE },
|
||||||
|
{ WEAPON_M4A1, M4A1_PRICE, TERRORIST, AUTOBUYCLASS_PRIMARY, AMMO_556MM_PRICE },
|
||||||
|
{ WEAPON_TMP, TMP_PRICE, TERRORIST, AUTOBUYCLASS_PRIMARY, AMMO_9MM_PRICE },
|
||||||
|
{ WEAPON_G3SG1, G3SG1_PRICE, CT, AUTOBUYCLASS_PRIMARY, AMMO_762MM_PRICE },
|
||||||
|
{ WEAPON_DEAGLE, DEAGLE_PRICE, TERRORIST|CT, AUTOBUYCLASS_SECONDARY, AMMO_50AE_PRICE },
|
||||||
|
{ WEAPON_SG552, SG552_PRICE, CT, AUTOBUYCLASS_PRIMARY, AMMO_556MM_PRICE },
|
||||||
|
{ WEAPON_AK47, AK47_PRICE, CT, AUTOBUYCLASS_PRIMARY, AMMO_762MM_PRICE },
|
||||||
|
{ WEAPON_P90, P90_PRICE, TERRORIST|CT, AUTOBUYCLASS_PRIMARY, AMMO_57MM_PRICE },
|
||||||
|
{ WEAPON_FAMAS, FAMAS_PRICE, TERRORIST, AUTOBUYCLASS_PRIMARY, AMMO_556MM_PRICE },
|
||||||
|
{ WEAPON_GALIL, GALIL_PRICE, CT, AUTOBUYCLASS_PRIMARY, AMMO_556MM_PRICE },
|
||||||
|
// TODO: this have bug, the cost of galil $2000, but not $2250
|
||||||
|
|
||||||
|
{ WEAPON_SHIELDGUN, SHIELDGUN_PRICE, TERRORIST, AUTOBUYCLASS_PRIMARY, 0 },
|
||||||
|
|
||||||
|
{ 0, 0, 0, 0, 0 },
|
||||||
|
{ 0, 0, 0, 0, 0 },
|
||||||
|
{ 0, 0, 0, 0, 0 },
|
||||||
|
{ 0, 0, 0, 0, 0 },
|
||||||
|
{ 0, 0, 0, 0, 0 },
|
||||||
|
{ 0, 0, 0, 0, 0 }
|
||||||
|
};
|
||||||
|
|
||||||
AutoBuyInfoStruct g_autoBuyInfo[] =
|
AutoBuyInfoStruct g_autoBuyInfo[] =
|
||||||
{
|
{
|
||||||
{ AUTOBUYCLASS_PRIMARY|AUTOBUYCLASS_RIFLE, "galil", "weapon_galil" },
|
{ AUTOBUYCLASS_PRIMARY|AUTOBUYCLASS_RIFLE, "galil", "weapon_galil" },
|
||||||
@ -184,35 +224,36 @@ WeaponClassAliasInfo weaponClassAliasInfo[] =
|
|||||||
{ NULL, WEAPONCLASS_NONE }
|
{ NULL, WEAPONCLASS_NONE }
|
||||||
};
|
};
|
||||||
|
|
||||||
WeaponInfoStruct weaponInfo[] =
|
WeaponInfoStruct weaponInfo[27];
|
||||||
|
WeaponInfoStruct weaponInfo_default[] =
|
||||||
{
|
{
|
||||||
{ WEAPON_P228, P228_PRICE, AMMO_357SIG_PRICE, AMMO_357SIG_BUY, P228_MAX_CLIP, MAX_AMMO_357SIG, AMMO_357SIG, "weapon_p228" },
|
{ WEAPON_P228, P228_PRICE, AMMO_357SIG_PRICE, AMMO_357SIG_BUY, P228_MAX_CLIP, MAX_AMMO_357SIG, AMMO_357SIG, "weapon_p228", "ammo_357sig" },
|
||||||
{ WEAPON_GLOCK, GLOCK18_PRICE, AMMO_9MM_PRICE, AMMO_9MM_BUY, GLOCK18_MAX_CLIP, MAX_AMMO_9MM, AMMO_9MM, "weapon_glock18" },
|
{ WEAPON_GLOCK, GLOCK18_PRICE, AMMO_9MM_PRICE, AMMO_9MM_BUY, GLOCK18_MAX_CLIP, MAX_AMMO_9MM, AMMO_9MM, "weapon_glock18", "ammo_9mm" },
|
||||||
{ WEAPON_GLOCK18, GLOCK18_PRICE, AMMO_9MM_PRICE, AMMO_9MM_BUY, GLOCK18_MAX_CLIP, MAX_AMMO_9MM, AMMO_9MM, "weapon_glock18" },
|
{ WEAPON_GLOCK18, GLOCK18_PRICE, AMMO_9MM_PRICE, AMMO_9MM_BUY, GLOCK18_MAX_CLIP, MAX_AMMO_9MM, AMMO_9MM, "weapon_glock18", "ammo_9mm" },
|
||||||
{ WEAPON_SCOUT, SCOUT_PRICE, AMMO_762MM_PRICE, AMMO_762NATO_BUY, SCOUT_MAX_CLIP, MAX_AMMO_762NATO, AMMO_762NATO, "weapon_scout" },
|
{ WEAPON_SCOUT, SCOUT_PRICE, AMMO_762MM_PRICE, AMMO_762NATO_BUY, SCOUT_MAX_CLIP, MAX_AMMO_762NATO, AMMO_762NATO, "weapon_scout", "ammo_762nato" },
|
||||||
{ WEAPON_XM1014, XM1014_PRICE, AMMO_BUCKSHOT_PRICE, AMMO_BUCKSHOT_BUY, XM1014_MAX_CLIP, MAX_AMMO_BUCKSHOT, AMMO_BUCKSHOT, "weapon_xm1014" },
|
{ WEAPON_XM1014, XM1014_PRICE, AMMO_BUCKSHOT_PRICE, AMMO_BUCKSHOT_BUY, XM1014_MAX_CLIP, MAX_AMMO_BUCKSHOT, AMMO_BUCKSHOT, "weapon_xm1014", "ammo_buckshot" },
|
||||||
{ WEAPON_MAC10, MAC10_PRICE, AMMO_45ACP_PRICE, AMMO_45ACP_BUY, MAC10_MAX_CLIP, MAX_AMMO_45ACP, AMMO_45ACP, "weapon_mac10" },
|
{ WEAPON_MAC10, MAC10_PRICE, AMMO_45ACP_PRICE, AMMO_45ACP_BUY, MAC10_MAX_CLIP, MAX_AMMO_45ACP, AMMO_45ACP, "weapon_mac10", "ammo_45acp" },
|
||||||
{ WEAPON_AUG, AUG_PRICE, AMMO_556MM_PRICE, AMMO_556NATO_BUY, AUG_MAX_CLIP, MAX_AMMO_556NATO, AMMO_556NATO, "weapon_aug" },
|
{ WEAPON_AUG, AUG_PRICE, AMMO_556MM_PRICE, AMMO_556NATO_BUY, AUG_MAX_CLIP, MAX_AMMO_556NATO, AMMO_556NATO, "weapon_aug", "ammo_556nato" },
|
||||||
{ WEAPON_ELITE, ELITE_PRICE, AMMO_9MM_PRICE, AMMO_9MM_BUY, ELITE_MAX_CLIP, MAX_AMMO_9MM, AMMO_9MM, "weapon_elite" },
|
{ WEAPON_ELITE, ELITE_PRICE, AMMO_9MM_PRICE, AMMO_9MM_BUY, ELITE_MAX_CLIP, MAX_AMMO_9MM, AMMO_9MM, "weapon_elite", "ammo_ammo_9mm" },
|
||||||
{ WEAPON_FIVESEVEN, FIVESEVEN_PRICE, AMMO_57MM_PRICE, AMMO_57MM_BUY, FIVESEVEN_MAX_CLIP, MAX_AMMO_57MM, AMMO_57MM, "weapon_fiveseven" },
|
{ WEAPON_FIVESEVEN, FIVESEVEN_PRICE, AMMO_57MM_PRICE, AMMO_57MM_BUY, FIVESEVEN_MAX_CLIP, MAX_AMMO_57MM, AMMO_57MM, "weapon_fiveseven", "ammo_57mm" },
|
||||||
{ WEAPON_UMP45, UMP45_PRICE, AMMO_45ACP_PRICE, AMMO_45ACP_BUY, UMP45_MAX_CLIP, MAX_AMMO_45ACP, AMMO_45ACP, "weapon_ump45" },
|
{ WEAPON_UMP45, UMP45_PRICE, AMMO_45ACP_PRICE, AMMO_45ACP_BUY, UMP45_MAX_CLIP, MAX_AMMO_45ACP, AMMO_45ACP, "weapon_ump45", "ammo_45acp" },
|
||||||
{ WEAPON_SG550, SG550_PRICE, AMMO_556MM_PRICE, AMMO_556NATO_BUY, SG550_MAX_CLIP, MAX_AMMO_556NATO, AMMO_556NATO, "weapon_sg550" },
|
{ WEAPON_SG550, SG550_PRICE, AMMO_556MM_PRICE, AMMO_556NATO_BUY, SG550_MAX_CLIP, MAX_AMMO_556NATO, AMMO_556NATO, "weapon_sg550", "ammo_556nato" },
|
||||||
{ WEAPON_GALIL, GALIL_PRICE, AMMO_556MM_PRICE, AMMO_556NATO_BUY, GALIL_MAX_CLIP, MAX_AMMO_556NATO, AMMO_556NATO, "weapon_galil" },
|
{ WEAPON_GALIL, GALIL_PRICE, AMMO_556MM_PRICE, AMMO_556NATO_BUY, GALIL_MAX_CLIP, MAX_AMMO_556NATO, AMMO_556NATO, "weapon_galil", "ammo_556nato" },
|
||||||
{ WEAPON_FAMAS, FAMAS_PRICE, AMMO_556MM_PRICE, AMMO_556NATO_BUY, FAMAS_MAX_CLIP, MAX_AMMO_556NATO, AMMO_556NATO, "weapon_famas" },
|
{ WEAPON_FAMAS, FAMAS_PRICE, AMMO_556MM_PRICE, AMMO_556NATO_BUY, FAMAS_MAX_CLIP, MAX_AMMO_556NATO, AMMO_556NATO, "weapon_famas", "ammo_556nato" },
|
||||||
{ WEAPON_USP, USP_PRICE, AMMO_45ACP_PRICE, AMMO_45ACP_BUY, USP_MAX_CLIP, MAX_AMMO_45ACP, AMMO_45ACP, "weapon_usp" },
|
{ WEAPON_USP, USP_PRICE, AMMO_45ACP_PRICE, AMMO_45ACP_BUY, USP_MAX_CLIP, MAX_AMMO_45ACP, AMMO_45ACP, "weapon_usp", "ammo_45acp" },
|
||||||
{ WEAPON_AWP, AWP_PRICE, AMMO_338MAG_PRICE, AMMO_338MAG_BUY, AWP_MAX_CLIP, MAX_AMMO_338MAGNUM, AMMO_338MAGNUM, "weapon_awp" },
|
{ WEAPON_AWP, AWP_PRICE, AMMO_338MAG_PRICE, AMMO_338MAG_BUY, AWP_MAX_CLIP, MAX_AMMO_338MAGNUM, AMMO_338MAGNUM, "weapon_awp", "ammo_338magnum" },
|
||||||
{ WEAPON_MP5N, MP5NAVY_PRICE, AMMO_9MM_PRICE, AMMO_9MM_BUY, MP5N_MAX_CLIP, MAX_AMMO_9MM, AMMO_9MM, "weapon_mp5navy" },
|
{ WEAPON_MP5N, MP5NAVY_PRICE, AMMO_9MM_PRICE, AMMO_9MM_BUY, MP5N_MAX_CLIP, MAX_AMMO_9MM, AMMO_9MM, "weapon_mp5navy", "ammo_9mm" },
|
||||||
{ WEAPON_M249, M249_PRICE, AMMO_556MM_PRICE, AMMO_556NATOBOX_BUY, M249_MAX_CLIP, MAX_AMMO_556NATOBOX, AMMO_556NATOBOX, "weapon_m249" },
|
{ WEAPON_M249, M249_PRICE, AMMO_556MM_PRICE, AMMO_556NATOBOX_BUY, M249_MAX_CLIP, MAX_AMMO_556NATOBOX, AMMO_556NATOBOX, "weapon_m249", "ammo_556natobox" },
|
||||||
{ WEAPON_M3, M3_PRICE, AMMO_BUCKSHOT_PRICE, AMMO_BUCKSHOT_BUY, M3_MAX_CLIP, MAX_AMMO_BUCKSHOT, AMMO_BUCKSHOT, "weapon_m3" },
|
{ WEAPON_M3, M3_PRICE, AMMO_BUCKSHOT_PRICE, AMMO_BUCKSHOT_BUY, M3_MAX_CLIP, MAX_AMMO_BUCKSHOT, AMMO_BUCKSHOT, "weapon_m3", "ammo_buckshot" },
|
||||||
{ WEAPON_M4A1, M4A1_PRICE, AMMO_556MM_PRICE, AMMO_556NATO_BUY, M4A1_MAX_CLIP, MAX_AMMO_556NATO, AMMO_556NATO, "weapon_m4a1" },
|
{ WEAPON_M4A1, M4A1_PRICE, AMMO_556MM_PRICE, AMMO_556NATO_BUY, M4A1_MAX_CLIP, MAX_AMMO_556NATO, AMMO_556NATO, "weapon_m4a1", "ammo_556nato" },
|
||||||
{ WEAPON_TMP, TMP_PRICE, AMMO_9MM_PRICE, AMMO_9MM_BUY, TMP_MAX_CLIP, MAX_AMMO_9MM, AMMO_9MM, "weapon_tmp" },
|
{ WEAPON_TMP, TMP_PRICE, AMMO_9MM_PRICE, AMMO_9MM_BUY, TMP_MAX_CLIP, MAX_AMMO_9MM, AMMO_9MM, "weapon_tmp", "ammo_9mm" },
|
||||||
{ WEAPON_G3SG1, G3SG1_PRICE, AMMO_762MM_PRICE, AMMO_762NATO_BUY, G3SG1_MAX_CLIP, MAX_AMMO_762NATO, AMMO_762NATO, "weapon_g3sg1" },
|
{ WEAPON_G3SG1, G3SG1_PRICE, AMMO_762MM_PRICE, AMMO_762NATO_BUY, G3SG1_MAX_CLIP, MAX_AMMO_762NATO, AMMO_762NATO, "weapon_g3sg1", "ammo_762nato" },
|
||||||
{ WEAPON_DEAGLE, DEAGLE_PRICE, AMMO_50AE_PRICE, AMMO_50AE_BUY, DEAGLE_MAX_CLIP, MAX_AMMO_50AE, AMMO_50AE, "weapon_deagle" },
|
{ WEAPON_DEAGLE, DEAGLE_PRICE, AMMO_50AE_PRICE, AMMO_50AE_BUY, DEAGLE_MAX_CLIP, MAX_AMMO_50AE, AMMO_50AE, "weapon_deagle", "ammo_50ae" },
|
||||||
{ WEAPON_SG552, SG552_PRICE, AMMO_556MM_PRICE, AMMO_556NATO_BUY, SG552_MAX_CLIP, MAX_AMMO_556NATO, AMMO_556NATO, "weapon_sg552" },
|
{ WEAPON_SG552, SG552_PRICE, AMMO_556MM_PRICE, AMMO_556NATO_BUY, SG552_MAX_CLIP, MAX_AMMO_556NATO, AMMO_556NATO, "weapon_sg552", "ammo_556nato" },
|
||||||
{ WEAPON_AK47, AK47_PRICE, AMMO_762MM_PRICE, AMMO_762NATO_BUY, AK47_MAX_CLIP, MAX_AMMO_762NATO, AMMO_762NATO, "weapon_ak47" },
|
{ WEAPON_AK47, AK47_PRICE, AMMO_762MM_PRICE, AMMO_762NATO_BUY, AK47_MAX_CLIP, MAX_AMMO_762NATO, AMMO_762NATO, "weapon_ak47", "ammo_762nato" },
|
||||||
{ WEAPON_P90, P90_PRICE, AMMO_57MM_PRICE, AMMO_57MM_BUY, P90_MAX_CLIP, MAX_AMMO_57MM, AMMO_57MM, "weapon_p90" },
|
{ WEAPON_P90, P90_PRICE, AMMO_57MM_PRICE, AMMO_57MM_BUY, P90_MAX_CLIP, MAX_AMMO_57MM, AMMO_57MM, "weapon_p90", "ammo_57mm" },
|
||||||
{ WEAPON_SHIELDGUN, SHIELDGUN_PRICE, 0, 0, 0, 0, -1, NULL },
|
{ WEAPON_SHIELDGUN, SHIELDGUN_PRICE, 0, 0, 0, 0, AMMO_NONE, "weapon_shield", nullptr },
|
||||||
{ 0, 0, 0, 0, 0, 0, -1, NULL }
|
{ 0, 0, 0, 0, 0, 0, AMMO_NONE, nullptr, nullptr }
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // HOOK_GAMEDLL
|
#endif // HOOK_GAMEDLL
|
||||||
@ -332,7 +373,7 @@ bool IsSecondaryWeapon(int id)
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
WeaponInfoStruct *GetWeaponInfo(int weaponID)
|
WeaponInfoStruct *EXT_FUNC GetWeaponInfo(int weaponID)
|
||||||
{
|
{
|
||||||
for (int i = 0; weaponInfo[i].id != 0; ++i)
|
for (int i = 0; weaponInfo[i].id != 0; ++i)
|
||||||
{
|
{
|
||||||
@ -343,6 +384,13 @@ WeaponInfoStruct *GetWeaponInfo(int weaponID)
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void WeaponInfoReset()
|
||||||
|
{
|
||||||
|
#ifndef HOOK_GAMEDLL
|
||||||
|
Q_memcpy(weaponInfo, weaponInfo_default, sizeof(weaponInfo));
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
bool CanBuyWeaponByMaptype(int playerTeam, WeaponIdType weaponID, bool useAssasinationRestrictions)
|
bool CanBuyWeaponByMaptype(int playerTeam, WeaponIdType weaponID, bool useAssasinationRestrictions)
|
||||||
{
|
{
|
||||||
if (useAssasinationRestrictions)
|
if (useAssasinationRestrictions)
|
||||||
|
@ -256,6 +256,7 @@ enum MaxAmmoType
|
|||||||
|
|
||||||
enum AmmoType
|
enum AmmoType
|
||||||
{
|
{
|
||||||
|
AMMO_NONE = -1,
|
||||||
AMMO_BUCKSHOT,
|
AMMO_BUCKSHOT,
|
||||||
AMMO_9MM,
|
AMMO_9MM,
|
||||||
AMMO_556NATO,
|
AMMO_556NATO,
|
||||||
@ -359,6 +360,15 @@ enum Bullet
|
|||||||
BULLET_PLAYER_357SIG,
|
BULLET_PLAYER_357SIG,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct WeaponStruct
|
||||||
|
{
|
||||||
|
int m_type;
|
||||||
|
int m_price;
|
||||||
|
int m_side;
|
||||||
|
int m_slot;
|
||||||
|
int m_ammoPrice;
|
||||||
|
};
|
||||||
|
|
||||||
struct AutoBuyInfoStruct
|
struct AutoBuyInfoStruct
|
||||||
{
|
{
|
||||||
AutoBuyClassType m_class;
|
AutoBuyClassType m_class;
|
||||||
@ -393,11 +403,17 @@ struct WeaponInfoStruct
|
|||||||
int buyClipSize;
|
int buyClipSize;
|
||||||
int gunClipSize;
|
int gunClipSize;
|
||||||
int maxRounds;
|
int maxRounds;
|
||||||
int ammoType;
|
AmmoType ammoType;
|
||||||
char *entityName;
|
char *entityName;
|
||||||
|
|
||||||
|
#ifndef HOOK_GAMEDLL
|
||||||
|
const char *ammoName;
|
||||||
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
extern AutoBuyInfoStruct g_autoBuyInfo[35];
|
extern AutoBuyInfoStruct g_autoBuyInfo[35];
|
||||||
|
extern WeaponStruct g_weaponStruct[MAX_WEAPONS];
|
||||||
|
extern WeaponInfoStruct weaponInfo[27];
|
||||||
|
|
||||||
// WeaponType
|
// WeaponType
|
||||||
WeaponIdType AliasToWeaponID(const char *alias);
|
WeaponIdType AliasToWeaponID(const char *alias);
|
||||||
@ -409,5 +425,6 @@ bool IsPrimaryWeapon(int id);
|
|||||||
bool IsSecondaryWeapon(int id);
|
bool IsSecondaryWeapon(int id);
|
||||||
WeaponInfoStruct *GetWeaponInfo(int weaponID);
|
WeaponInfoStruct *GetWeaponInfo(int weaponID);
|
||||||
bool CanBuyWeaponByMaptype(int playerTeam, WeaponIdType weaponID, bool useAssasinationRestrictions);
|
bool CanBuyWeaponByMaptype(int playerTeam, WeaponIdType weaponID, bool useAssasinationRestrictions);
|
||||||
|
void WeaponInfoReset();
|
||||||
|
|
||||||
#endif // WEAPONTYPE_H
|
#endif // WEAPONTYPE_H
|
||||||
|
@ -80,7 +80,7 @@ public:
|
|||||||
void EXPORT TriggerDecal(CBaseEntity *pActivator, CBaseEntity *pCaller, USE_TYPE useType, float value);
|
void EXPORT TriggerDecal(CBaseEntity *pActivator, CBaseEntity *pCaller, USE_TYPE useType, float value);
|
||||||
};
|
};
|
||||||
|
|
||||||
LINK_ENTITY_TO_CLASS(infodecal, CDecal);
|
LINK_ENTITY_TO_CLASS(infodecal, CDecal, CCSDecal);
|
||||||
|
|
||||||
void CDecal::Spawn()
|
void CDecal::Spawn()
|
||||||
{
|
{
|
||||||
@ -173,7 +173,7 @@ public:
|
|||||||
virtual int ObjectCaps() { return FCAP_DONT_SAVE; }
|
virtual int ObjectCaps() { return FCAP_DONT_SAVE; }
|
||||||
};
|
};
|
||||||
|
|
||||||
LINK_ENTITY_TO_CLASS(bodyque, CCorpse);
|
LINK_ENTITY_TO_CLASS(bodyque, CCorpse, CCSCorpse);
|
||||||
|
|
||||||
static void InitBodyQue()
|
static void InitBodyQue()
|
||||||
{
|
{
|
||||||
@ -410,7 +410,12 @@ void EXT_FUNC ResetGlobalState()
|
|||||||
gInitHUD = TRUE;
|
gInitHUD = TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
LINK_ENTITY_TO_CLASS(worldspawn, CWorld);
|
#pragma push_macro("REGAMEDLL_ALLOC_FUNC")
|
||||||
|
#define REGAMEDLL_ALLOC_FUNC Regamedll_AllocEntities(gpGlobals->maxEntities);
|
||||||
|
|
||||||
|
LINK_ENTITY_TO_CLASS(worldspawn, CWorld, CCSWorld);
|
||||||
|
|
||||||
|
#pragma pop_macro("REGAMEDLL_ALLOC_FUNC")
|
||||||
|
|
||||||
void CWorld::__MAKE_VHOOK(Spawn)()
|
void CWorld::__MAKE_VHOOK(Spawn)()
|
||||||
{
|
{
|
||||||
@ -425,7 +430,7 @@ void CWorld::__MAKE_VHOOK(Spawn)()
|
|||||||
int flength = 0;
|
int flength = 0;
|
||||||
char *pFile = (char *)LOAD_FILE_FOR_ME(UTIL_VarArgs("maps/%s.txt", STRING(gpGlobals->mapname)), &flength);
|
char *pFile = (char *)LOAD_FILE_FOR_ME(UTIL_VarArgs("maps/%s.txt", STRING(gpGlobals->mapname)), &flength);
|
||||||
|
|
||||||
if (pFile && flength != NULL)
|
if (pFile != NULL && flength)
|
||||||
{
|
{
|
||||||
Q_strncpy(g_szMapBriefingText, pFile, ARRAYSIZE(g_szMapBriefingText) - 2);
|
Q_strncpy(g_szMapBriefingText, pFile, ARRAYSIZE(g_szMapBriefingText) - 2);
|
||||||
|
|
||||||
@ -475,11 +480,13 @@ void CWorld::__MAKE_VHOOK(Precache)()
|
|||||||
|
|
||||||
g_pGameRules = InstallGameRules();
|
g_pGameRules = InstallGameRules();
|
||||||
|
|
||||||
|
// s1lent: What is the essence of soundent in CS 1.6? I think this is for NPC monsters.
|
||||||
|
#ifndef REGAMEDLL_FIXES
|
||||||
// UNDONE why is there so much Spawn code in the Precache function? I'll just keep it here
|
// UNDONE why is there so much Spawn code in the Precache function? I'll just keep it here
|
||||||
|
|
||||||
// LATER - do we want a sound ent in deathmatch? (sjb)
|
// LATER - do we want a sound ent in deathmatch? (sjb)
|
||||||
//pSoundEnt = CBaseEntity::Create("soundent", g_vecZero, g_vecZero, edict());
|
//pSoundEnt = CBaseEntity::Create("soundent", g_vecZero, g_vecZero, edict());
|
||||||
pSoundEnt = GetClassPtr((CSoundEnt *)NULL);
|
pSoundEnt = GetClassPtr<CCSSoundEnt>((CSoundEnt *)NULL);
|
||||||
|
|
||||||
if (pSoundEnt == NULL)
|
if (pSoundEnt == NULL)
|
||||||
{
|
{
|
||||||
@ -489,7 +496,7 @@ void CWorld::__MAKE_VHOOK(Precache)()
|
|||||||
{
|
{
|
||||||
pSoundEnt->Spawn();
|
pSoundEnt->Spawn();
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
InitBodyQue();
|
InitBodyQue();
|
||||||
|
|
||||||
// init sentence group playback stuff from sentences.txt.
|
// init sentence group playback stuff from sentences.txt.
|
||||||
@ -593,6 +600,7 @@ void CWorld::__MAKE_VHOOK(Precache)()
|
|||||||
for (int i = 0; i < ARRAYSIZE(gDecals); ++i)
|
for (int i = 0; i < ARRAYSIZE(gDecals); ++i)
|
||||||
gDecals[i].index = DECAL_INDEX(gDecals[i].name);
|
gDecals[i].index = DECAL_INDEX(gDecals[i].name);
|
||||||
|
|
||||||
|
#ifndef REGAMEDLL_FIXES
|
||||||
// init the WorldGraph.
|
// init the WorldGraph.
|
||||||
WorldGraph.InitGraph();
|
WorldGraph.InitGraph();
|
||||||
|
|
||||||
@ -616,6 +624,7 @@ void CWorld::__MAKE_VHOOK(Precache)()
|
|||||||
ALERT(at_console, "\n*Graph Loaded!\n");
|
ALERT(at_console, "\n*Graph Loaded!\n");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
if (pev->speed > 0)
|
if (pev->speed > 0)
|
||||||
CVAR_SET_FLOAT("sv_zmax", pev->speed);
|
CVAR_SET_FLOAT("sv_zmax", pev->speed);
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
#include "precompiled.h"
|
#include "precompiled.h"
|
||||||
|
|
||||||
LINK_ENTITY_TO_CLASS(weapon_ak47, CAK47);
|
LINK_ENTITY_TO_CLASS(weapon_ak47, CAK47, CCSAK47);
|
||||||
|
|
||||||
void CAK47::__MAKE_VHOOK(Spawn)()
|
void CAK47::__MAKE_VHOOK(Spawn)()
|
||||||
{
|
{
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
#include "precompiled.h"
|
#include "precompiled.h"
|
||||||
|
|
||||||
LINK_ENTITY_TO_CLASS(weapon_aug, CAUG);
|
LINK_ENTITY_TO_CLASS(weapon_aug, CAUG, CCSAUG);
|
||||||
|
|
||||||
void CAUG::__MAKE_VHOOK(Spawn)()
|
void CAUG::__MAKE_VHOOK(Spawn)()
|
||||||
{
|
{
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
#include "precompiled.h"
|
#include "precompiled.h"
|
||||||
|
|
||||||
LINK_ENTITY_TO_CLASS(weapon_awp, CAWP);
|
LINK_ENTITY_TO_CLASS(weapon_awp, CAWP, CCSAWP);
|
||||||
|
|
||||||
void CAWP::__MAKE_VHOOK(Spawn)()
|
void CAWP::__MAKE_VHOOK(Spawn)()
|
||||||
{
|
{
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
#include "precompiled.h"
|
#include "precompiled.h"
|
||||||
|
|
||||||
LINK_ENTITY_TO_CLASS(weapon_c4, CC4);
|
LINK_ENTITY_TO_CLASS(weapon_c4, CC4, CCSC4);
|
||||||
|
|
||||||
void CC4::__MAKE_VHOOK(Spawn)()
|
void CC4::__MAKE_VHOOK(Spawn)()
|
||||||
{
|
{
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
#include "precompiled.h"
|
#include "precompiled.h"
|
||||||
|
|
||||||
LINK_ENTITY_TO_CLASS(weapon_deagle, CDEAGLE);
|
LINK_ENTITY_TO_CLASS(weapon_deagle, CDEAGLE, CCSDEAGLE);
|
||||||
|
|
||||||
void CDEAGLE::__MAKE_VHOOK(Spawn)()
|
void CDEAGLE::__MAKE_VHOOK(Spawn)()
|
||||||
{
|
{
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
#include "precompiled.h"
|
#include "precompiled.h"
|
||||||
|
|
||||||
LINK_ENTITY_TO_CLASS(weapon_elite, CELITE);
|
LINK_ENTITY_TO_CLASS(weapon_elite, CELITE, CCSELITE);
|
||||||
|
|
||||||
void CELITE::__MAKE_VHOOK(Spawn)()
|
void CELITE::__MAKE_VHOOK(Spawn)()
|
||||||
{
|
{
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
#include "precompiled.h"
|
#include "precompiled.h"
|
||||||
|
|
||||||
LINK_ENTITY_TO_CLASS(weapon_famas, CFamas);
|
LINK_ENTITY_TO_CLASS(weapon_famas, CFamas, CCSFamas);
|
||||||
|
|
||||||
void CFamas::__MAKE_VHOOK(Spawn)()
|
void CFamas::__MAKE_VHOOK(Spawn)()
|
||||||
{
|
{
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
#include "precompiled.h"
|
#include "precompiled.h"
|
||||||
|
|
||||||
LINK_ENTITY_TO_CLASS(weapon_fiveseven, CFiveSeven);
|
LINK_ENTITY_TO_CLASS(weapon_fiveseven, CFiveSeven, CCSFiveSeven);
|
||||||
|
|
||||||
void CFiveSeven::__MAKE_VHOOK(Spawn)()
|
void CFiveSeven::__MAKE_VHOOK(Spawn)()
|
||||||
{
|
{
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
#include "precompiled.h"
|
#include "precompiled.h"
|
||||||
|
|
||||||
LINK_ENTITY_TO_CLASS(weapon_flashbang, CFlashbang);
|
LINK_ENTITY_TO_CLASS(weapon_flashbang, CFlashbang, CCSFlashbang);
|
||||||
|
|
||||||
void CFlashbang::__MAKE_VHOOK(Spawn)()
|
void CFlashbang::__MAKE_VHOOK(Spawn)()
|
||||||
{
|
{
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
#include "precompiled.h"
|
#include "precompiled.h"
|
||||||
|
|
||||||
LINK_ENTITY_TO_CLASS(weapon_g3sg1, CG3SG1);
|
LINK_ENTITY_TO_CLASS(weapon_g3sg1, CG3SG1, CCSG3SG1);
|
||||||
|
|
||||||
void CG3SG1::__MAKE_VHOOK(Spawn)()
|
void CG3SG1::__MAKE_VHOOK(Spawn)()
|
||||||
{
|
{
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
#include "precompiled.h"
|
#include "precompiled.h"
|
||||||
|
|
||||||
LINK_ENTITY_TO_CLASS(weapon_galil, CGalil);
|
LINK_ENTITY_TO_CLASS(weapon_galil, CGalil, CCSGalil);
|
||||||
|
|
||||||
void CGalil::__MAKE_VHOOK(Spawn)()
|
void CGalil::__MAKE_VHOOK(Spawn)()
|
||||||
{
|
{
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
#include "precompiled.h"
|
#include "precompiled.h"
|
||||||
|
|
||||||
LINK_ENTITY_TO_CLASS(weapon_glock18, CGLOCK18);
|
LINK_ENTITY_TO_CLASS(weapon_glock18, CGLOCK18, CCSGLOCK18);
|
||||||
|
|
||||||
void CGLOCK18::__MAKE_VHOOK(Spawn)()
|
void CGLOCK18::__MAKE_VHOOK(Spawn)()
|
||||||
{
|
{
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
#include "precompiled.h"
|
#include "precompiled.h"
|
||||||
|
|
||||||
LINK_ENTITY_TO_CLASS(weapon_hegrenade, CHEGrenade);
|
LINK_ENTITY_TO_CLASS(weapon_hegrenade, CHEGrenade, CCSHEGrenade);
|
||||||
|
|
||||||
void CHEGrenade::__MAKE_VHOOK(Spawn)()
|
void CHEGrenade::__MAKE_VHOOK(Spawn)()
|
||||||
{
|
{
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
#include "precompiled.h"
|
#include "precompiled.h"
|
||||||
|
|
||||||
LINK_ENTITY_TO_CLASS(weapon_knife, CKnife);
|
LINK_ENTITY_TO_CLASS(weapon_knife, CKnife, CCSKnife);
|
||||||
|
|
||||||
void CKnife::__MAKE_VHOOK(Spawn)()
|
void CKnife::__MAKE_VHOOK(Spawn)()
|
||||||
{
|
{
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
#include "precompiled.h"
|
#include "precompiled.h"
|
||||||
|
|
||||||
LINK_ENTITY_TO_CLASS(weapon_m249, CM249);
|
LINK_ENTITY_TO_CLASS(weapon_m249, CM249, CCSM249);
|
||||||
|
|
||||||
void CM249::__MAKE_VHOOK(Spawn)()
|
void CM249::__MAKE_VHOOK(Spawn)()
|
||||||
{
|
{
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
#include "precompiled.h"
|
#include "precompiled.h"
|
||||||
|
|
||||||
LINK_ENTITY_TO_CLASS(weapon_m3, CM3);
|
LINK_ENTITY_TO_CLASS(weapon_m3, CM3, CCSM3);
|
||||||
|
|
||||||
void CM3::__MAKE_VHOOK(Spawn)()
|
void CM3::__MAKE_VHOOK(Spawn)()
|
||||||
{
|
{
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
#include "precompiled.h"
|
#include "precompiled.h"
|
||||||
|
|
||||||
LINK_ENTITY_TO_CLASS(weapon_m4a1, CM4A1);
|
LINK_ENTITY_TO_CLASS(weapon_m4a1, CM4A1, CCSM4A1);
|
||||||
|
|
||||||
void CM4A1::__MAKE_VHOOK(Spawn)()
|
void CM4A1::__MAKE_VHOOK(Spawn)()
|
||||||
{
|
{
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
#include "precompiled.h"
|
#include "precompiled.h"
|
||||||
|
|
||||||
LINK_ENTITY_TO_CLASS(weapon_mac10, CMAC10);
|
LINK_ENTITY_TO_CLASS(weapon_mac10, CMAC10, CCSMAC10);
|
||||||
|
|
||||||
void CMAC10::__MAKE_VHOOK(Spawn)()
|
void CMAC10::__MAKE_VHOOK(Spawn)()
|
||||||
{
|
{
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
#include "precompiled.h"
|
#include "precompiled.h"
|
||||||
|
|
||||||
LINK_ENTITY_TO_CLASS(weapon_mp5navy, CMP5N);
|
LINK_ENTITY_TO_CLASS(weapon_mp5navy, CMP5N, CCSMP5N);
|
||||||
|
|
||||||
void CMP5N::__MAKE_VHOOK(Spawn)()
|
void CMP5N::__MAKE_VHOOK(Spawn)()
|
||||||
{
|
{
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
#include "precompiled.h"
|
#include "precompiled.h"
|
||||||
|
|
||||||
LINK_ENTITY_TO_CLASS(weapon_p228, CP228);
|
LINK_ENTITY_TO_CLASS(weapon_p228, CP228, CCSP228);
|
||||||
|
|
||||||
void CP228::__MAKE_VHOOK(Spawn)()
|
void CP228::__MAKE_VHOOK(Spawn)()
|
||||||
{
|
{
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
#include "precompiled.h"
|
#include "precompiled.h"
|
||||||
|
|
||||||
LINK_ENTITY_TO_CLASS(weapon_p90, CP90);
|
LINK_ENTITY_TO_CLASS(weapon_p90, CP90, CCSP90);
|
||||||
|
|
||||||
void CP90::__MAKE_VHOOK(Spawn)()
|
void CP90::__MAKE_VHOOK(Spawn)()
|
||||||
{
|
{
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
#include "precompiled.h"
|
#include "precompiled.h"
|
||||||
|
|
||||||
LINK_ENTITY_TO_CLASS(weapon_scout, CSCOUT);
|
LINK_ENTITY_TO_CLASS(weapon_scout, CSCOUT, CCSSCOUT);
|
||||||
|
|
||||||
void CSCOUT::__MAKE_VHOOK(Spawn)()
|
void CSCOUT::__MAKE_VHOOK(Spawn)()
|
||||||
{
|
{
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user