mirror of
https://github.com/mapbase-source/source-sdk-2013.git
synced 2024-12-25 22:35:31 +03:00
Clientside vscript additions:
Added C_BaseCombatCharacter script desc Added boundary checks for script funcs
This commit is contained in:
parent
0ae9c8bc8e
commit
4b8f386c94
@ -178,3 +178,39 @@ BEGIN_PREDICTION_DATA( C_BaseCombatCharacter )
|
||||
DEFINE_PRED_ARRAY( m_hMyWeapons, FIELD_EHANDLE, MAX_WEAPONS, FTYPEDESC_INSENDTABLE ),
|
||||
|
||||
END_PREDICTION_DATA()
|
||||
|
||||
#ifdef MAPBASE_VSCRIPT
|
||||
|
||||
BEGIN_ENT_SCRIPTDESC( C_BaseCombatCharacter, CBaseEntity, "" )
|
||||
DEFINE_SCRIPTFUNC_NAMED( ScriptGetAmmoCount, "GetAmmoCount", "" )
|
||||
DEFINE_SCRIPTFUNC_NAMED( ScriptGetActiveWeapon, "GetActiveWeapon", "" )
|
||||
DEFINE_SCRIPTFUNC_NAMED( ScriptGetWeapon, "GetWeapon", "" )
|
||||
END_SCRIPTDESC();
|
||||
|
||||
|
||||
int C_BaseCombatCharacter::ScriptGetAmmoCount( int i )
|
||||
{
|
||||
Assert( i == -1 || i < MAX_AMMO_SLOTS );
|
||||
|
||||
if ( i < 0 || i >= MAX_AMMO_SLOTS )
|
||||
return NULL;
|
||||
|
||||
return GetAmmoCount( i );
|
||||
}
|
||||
|
||||
HSCRIPT C_BaseCombatCharacter::ScriptGetActiveWeapon()
|
||||
{
|
||||
return ToHScript( GetActiveWeapon() );
|
||||
}
|
||||
|
||||
HSCRIPT C_BaseCombatCharacter::ScriptGetWeapon( int i )
|
||||
{
|
||||
Assert( i >= 0 && i < MAX_WEAPONS );
|
||||
|
||||
if ( i < 0 || i >= MAX_WEAPONS )
|
||||
return NULL;
|
||||
|
||||
return ToHScript( GetWeapon(i) );
|
||||
}
|
||||
|
||||
#endif
|
||||
|
@ -29,6 +29,9 @@ class C_BaseCombatCharacter : public C_BaseFlex
|
||||
public:
|
||||
DECLARE_CLIENTCLASS();
|
||||
DECLARE_PREDICTABLE();
|
||||
#ifdef MAPBASE_VSCRIPT
|
||||
DECLARE_ENT_SCRIPTDESC();
|
||||
#endif
|
||||
|
||||
C_BaseCombatCharacter( void );
|
||||
virtual ~C_BaseCombatCharacter( void );
|
||||
@ -99,6 +102,12 @@ public:
|
||||
virtual void GetGlowEffectColor( float *r, float *g, float *b );
|
||||
#endif // GLOWS_ENABLE
|
||||
|
||||
#ifdef MAPBASE_VSCRIPT
|
||||
int ScriptGetAmmoCount( int i );
|
||||
HSCRIPT ScriptGetActiveWeapon();
|
||||
HSCRIPT ScriptGetWeapon( int i );
|
||||
#endif
|
||||
|
||||
public:
|
||||
|
||||
float m_flNextAttack;
|
||||
|
@ -151,11 +151,11 @@ ScriptHook_t CBaseCombatCharacter::g_Hook_RelationshipPriority;
|
||||
|
||||
BEGIN_ENT_SCRIPTDESC( CBaseCombatCharacter, CBaseFlex, "The base class shared by players and NPCs." )
|
||||
|
||||
DEFINE_SCRIPTFUNC_NAMED( GetScriptActiveWeapon, "GetActiveWeapon", "Get the character's active weapon entity." )
|
||||
DEFINE_SCRIPTFUNC_NAMED( ScriptGetActiveWeapon, "GetActiveWeapon", "Get the character's active weapon entity." )
|
||||
DEFINE_SCRIPTFUNC( WeaponCount, "Get the number of weapons a character possesses." )
|
||||
DEFINE_SCRIPTFUNC_NAMED( GetScriptWeaponIndex, "GetWeapon", "Get a specific weapon in the character's inventory." )
|
||||
DEFINE_SCRIPTFUNC_NAMED( GetScriptWeaponByType, "FindWeapon", "Find a specific weapon in the character's inventory by its classname." )
|
||||
DEFINE_SCRIPTFUNC_NAMED( GetScriptAllWeapons, "GetAllWeapons", "Get the character's weapon inventory." )
|
||||
DEFINE_SCRIPTFUNC_NAMED( ScriptGetWeapon, "GetWeapon", "Get a specific weapon in the character's inventory." )
|
||||
DEFINE_SCRIPTFUNC_NAMED( ScriptGetWeaponByType, "FindWeapon", "Find a specific weapon in the character's inventory by its classname." )
|
||||
DEFINE_SCRIPTFUNC_NAMED( ScriptGetAllWeapons, "GetAllWeapons", "Get the character's weapon inventory." )
|
||||
DEFINE_SCRIPTFUNC_NAMED( ScriptGetCurrentWeaponProficiency, "GetCurrentWeaponProficiency", "Get the character's current proficiency (accuracy) with their current weapon." )
|
||||
|
||||
DEFINE_SCRIPTFUNC_NAMED( Weapon_ShootPosition, "ShootPosition", "Get the character's shoot position." )
|
||||
@ -174,7 +174,7 @@ BEGIN_ENT_SCRIPTDESC( CBaseCombatCharacter, CBaseFlex, "The base class shared by
|
||||
DEFINE_SCRIPTFUNC_NAMED( ScriptRelationPriority, "GetRelationPriority", "Get a character's relationship priority for a specific entity." )
|
||||
DEFINE_SCRIPTFUNC_NAMED( ScriptSetRelationship, "SetRelationship", "Set a character's relationship with a specific entity." )
|
||||
|
||||
DEFINE_SCRIPTFUNC_NAMED( GetScriptVehicleEntity, "GetVehicleEntity", "Get the entity for a character's current vehicle if they're in one." )
|
||||
DEFINE_SCRIPTFUNC_NAMED( ScriptGetVehicleEntity, "GetVehicleEntity", "Get the entity for a character's current vehicle if they're in one." )
|
||||
|
||||
DEFINE_SCRIPTFUNC_NAMED( ScriptInViewCone, "InViewCone", "Check if the specified position is in the character's viewcone." )
|
||||
DEFINE_SCRIPTFUNC_NAMED( ScriptEntInViewCone, "EntInViewCone", "Check if the specified entity is in the character's viewcone." )
|
||||
@ -4430,28 +4430,33 @@ void CBaseCombatCharacter::DoMuzzleFlash()
|
||||
#ifdef MAPBASE_VSCRIPT
|
||||
//-----------------------------------------------------------------------------
|
||||
//-----------------------------------------------------------------------------
|
||||
HSCRIPT CBaseCombatCharacter::GetScriptActiveWeapon()
|
||||
HSCRIPT CBaseCombatCharacter::ScriptGetActiveWeapon()
|
||||
{
|
||||
return ToHScript( GetActiveWeapon() );
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
//-----------------------------------------------------------------------------
|
||||
HSCRIPT CBaseCombatCharacter::GetScriptWeaponIndex( int i )
|
||||
HSCRIPT CBaseCombatCharacter::ScriptGetWeapon( int i )
|
||||
{
|
||||
Assert( i >= 0 && i < MAX_WEAPONS );
|
||||
|
||||
if ( i < 0 || i >= MAX_WEAPONS )
|
||||
return NULL;
|
||||
|
||||
return ToHScript( GetWeapon( i ) );
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
//-----------------------------------------------------------------------------
|
||||
HSCRIPT CBaseCombatCharacter::GetScriptWeaponByType( const char *pszWeapon, int iSubType )
|
||||
HSCRIPT CBaseCombatCharacter::ScriptGetWeaponByType( const char *pszWeapon, int iSubType )
|
||||
{
|
||||
return ToHScript( Weapon_OwnsThisType( pszWeapon, iSubType ) );
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
//-----------------------------------------------------------------------------
|
||||
void CBaseCombatCharacter::GetScriptAllWeapons( HSCRIPT hTable )
|
||||
void CBaseCombatCharacter::ScriptGetAllWeapons( HSCRIPT hTable )
|
||||
{
|
||||
for (int i=0;i<MAX_WEAPONS;i++)
|
||||
{
|
||||
@ -4520,6 +4525,11 @@ void CBaseCombatCharacter::ScriptEquipWeapon( HSCRIPT hWeapon )
|
||||
//-----------------------------------------------------------------------------
|
||||
int CBaseCombatCharacter::ScriptGetAmmoCount( int iType ) const
|
||||
{
|
||||
Assert( iType == -1 || iType < MAX_AMMO_SLOTS );
|
||||
|
||||
if ( iType < 0 || iType >= MAX_AMMO_SLOTS )
|
||||
return 0;
|
||||
|
||||
return GetAmmoCount( iType );
|
||||
}
|
||||
|
||||
@ -4527,11 +4537,10 @@ int CBaseCombatCharacter::ScriptGetAmmoCount( int iType ) const
|
||||
//-----------------------------------------------------------------------------
|
||||
void CBaseCombatCharacter::ScriptSetAmmoCount( int iType, int iCount )
|
||||
{
|
||||
if (iType == -1)
|
||||
{
|
||||
Warning("%i is not a valid ammo type\n", iType);
|
||||
Assert( iType == -1 || iType < MAX_AMMO_SLOTS );
|
||||
|
||||
if ( iType < 0 || iType >= MAX_AMMO_SLOTS )
|
||||
return;
|
||||
}
|
||||
|
||||
return SetAmmoCount( iCount, iType );
|
||||
}
|
||||
@ -4590,7 +4599,7 @@ void CBaseCombatCharacter::ScriptSetRelationship( HSCRIPT pTarget, int dispositi
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
//-----------------------------------------------------------------------------
|
||||
HSCRIPT CBaseCombatCharacter::GetScriptVehicleEntity()
|
||||
HSCRIPT CBaseCombatCharacter::ScriptGetVehicleEntity()
|
||||
{
|
||||
return ToHScript( GetVehicleEntity() );
|
||||
}
|
||||
|
@ -420,10 +420,10 @@ public:
|
||||
virtual void DoMuzzleFlash();
|
||||
|
||||
#ifdef MAPBASE_VSCRIPT
|
||||
HSCRIPT GetScriptActiveWeapon();
|
||||
HSCRIPT GetScriptWeaponIndex( int i );
|
||||
HSCRIPT GetScriptWeaponByType( const char *pszWeapon, int iSubType = 0 );
|
||||
void GetScriptAllWeapons( HSCRIPT hTable );
|
||||
HSCRIPT ScriptGetActiveWeapon();
|
||||
HSCRIPT ScriptGetWeapon( int i );
|
||||
HSCRIPT ScriptGetWeaponByType( const char *pszWeapon, int iSubType = 0 );
|
||||
void ScriptGetAllWeapons( HSCRIPT hTable );
|
||||
int ScriptGetCurrentWeaponProficiency() { return GetCurrentWeaponProficiency(); }
|
||||
|
||||
void ScriptDropWeapon( HSCRIPT hWeapon );
|
||||
@ -439,7 +439,7 @@ public:
|
||||
int ScriptRelationPriority( HSCRIPT pTarget );
|
||||
void ScriptSetRelationship( HSCRIPT pTarget, int disposition, int priority );
|
||||
|
||||
HSCRIPT GetScriptVehicleEntity();
|
||||
HSCRIPT ScriptGetVehicleEntity();
|
||||
|
||||
bool ScriptInViewCone( const Vector &vecSpot ) { return FInViewCone( vecSpot ); }
|
||||
bool ScriptEntInViewCone( HSCRIPT pEntity ) { return FInViewCone( ToEnt( pEntity ) ); }
|
||||
|
@ -2949,15 +2949,33 @@ END_PREDICTION_DATA()
|
||||
IMPLEMENT_NETWORKCLASS_ALIASED( BaseCombatWeapon, DT_BaseCombatWeapon )
|
||||
|
||||
#ifdef MAPBASE_VSCRIPT
|
||||
|
||||
// Don't allow client to use Set functions.
|
||||
// They will only cause visual discrepancies,
|
||||
// and will be reverted on the next update from the server.
|
||||
#ifdef GAME_DLL
|
||||
#define DEFINE_SCRIPTFUNC_SV( p1, p2 ) DEFINE_SCRIPTFUNC( p1, p2 )
|
||||
#define DEFINE_SCRIPTFUNC_NAMED_SV( p1, p2, p3 ) DEFINE_SCRIPTFUNC_NAMED( p1, p2, p3 )
|
||||
|
||||
#define DEFINE_SCRIPTFUNC_CL( p1, p2 )
|
||||
#define DEFINE_SCRIPTFUNC_NAMED_CL( p1, p2, p3 )
|
||||
#else
|
||||
#define DEFINE_SCRIPTFUNC_SV( p1, p2 )
|
||||
#define DEFINE_SCRIPTFUNC_NAMED_SV( p1, p2, p3 )
|
||||
|
||||
#define DEFINE_SCRIPTFUNC_CL( p1, p2 ) DEFINE_SCRIPTFUNC( p1, p2 )
|
||||
#define DEFINE_SCRIPTFUNC_NAMED_CL( p1, p2, p3 ) DEFINE_SCRIPTFUNC_NAMED( p1, p2, p3 )
|
||||
#endif
|
||||
|
||||
BEGIN_ENT_SCRIPTDESC( CBaseCombatWeapon, CBaseAnimating, "The base class for all equippable weapons." )
|
||||
|
||||
DEFINE_SCRIPTFUNC_NAMED( ScriptGetOwner, "GetOwner", "Get the weapon's owner." )
|
||||
DEFINE_SCRIPTFUNC_NAMED( ScriptSetOwner, "SetOwner", "Set the weapon's owner." )
|
||||
DEFINE_SCRIPTFUNC_NAMED_SV( ScriptSetOwner, "SetOwner", "Set the weapon's owner." )
|
||||
|
||||
DEFINE_SCRIPTFUNC( Clip1, "Get the weapon's current primary ammo." )
|
||||
DEFINE_SCRIPTFUNC( Clip2, "Get the weapon's current secondary ammo." )
|
||||
DEFINE_SCRIPTFUNC_NAMED( ScriptSetClip1, "SetClip1", "Set the weapon's current primary ammo." )
|
||||
DEFINE_SCRIPTFUNC_NAMED( ScriptSetClip2, "SetClip2", "Set the weapon's current secondary ammo." )
|
||||
DEFINE_SCRIPTFUNC_NAMED_SV( ScriptSetClip1, "SetClip1", "Set the weapon's current primary ammo." )
|
||||
DEFINE_SCRIPTFUNC_NAMED_SV( ScriptSetClip2, "SetClip2", "Set the weapon's current secondary ammo." )
|
||||
DEFINE_SCRIPTFUNC( GetMaxClip1, "Get the weapon's maximum primary ammo." )
|
||||
DEFINE_SCRIPTFUNC( GetMaxClip2, "Get the weapon's maximum secondary ammo." )
|
||||
DEFINE_SCRIPTFUNC( GetDefaultClip1, "Get the weapon's default primary ammo." )
|
||||
@ -2968,18 +2986,16 @@ BEGIN_ENT_SCRIPTDESC( CBaseCombatWeapon, CBaseAnimating, "The base class for all
|
||||
DEFINE_SCRIPTFUNC( HasSecondaryAmmo, "Check if the weapon currently has ammo or doesn't need secondary ammo." )
|
||||
DEFINE_SCRIPTFUNC( UsesPrimaryAmmo, "Check if the weapon uses primary ammo." )
|
||||
DEFINE_SCRIPTFUNC( UsesSecondaryAmmo, "Check if the weapon uses secondary ammo." )
|
||||
DEFINE_SCRIPTFUNC( GiveDefaultAmmo, "Fill the weapon back up to default ammo." )
|
||||
DEFINE_SCRIPTFUNC_SV( GiveDefaultAmmo, "Fill the weapon back up to default ammo." )
|
||||
|
||||
DEFINE_SCRIPTFUNC( UsesClipsForAmmo1, "Check if the weapon uses clips for primary ammo." )
|
||||
DEFINE_SCRIPTFUNC( UsesClipsForAmmo2, "Check if the weapon uses clips for secondary ammo." )
|
||||
|
||||
#ifndef CLIENT_DLL
|
||||
DEFINE_SCRIPTFUNC( GetPrimaryAmmoType, "Get the weapon's primary ammo type." )
|
||||
DEFINE_SCRIPTFUNC( GetSecondaryAmmoType, "Get the weapon's secondary ammo type." )
|
||||
#endif
|
||||
|
||||
DEFINE_SCRIPTFUNC( GetSubType, "Get the weapon's subtype." )
|
||||
DEFINE_SCRIPTFUNC( SetSubType, "Set the weapon's subtype." )
|
||||
DEFINE_SCRIPTFUNC_SV( SetSubType, "Set the weapon's subtype." )
|
||||
|
||||
DEFINE_SCRIPTFUNC( GetFireRate, "Get the weapon's firing rate." )
|
||||
DEFINE_SCRIPTFUNC( AddViewKick, "Applies the weapon's view kick." )
|
||||
@ -2988,16 +3004,18 @@ BEGIN_ENT_SCRIPTDESC( CBaseCombatWeapon, CBaseAnimating, "The base class for all
|
||||
DEFINE_SCRIPTFUNC( GetViewModel, "Get the weapon's view model." )
|
||||
|
||||
DEFINE_SCRIPTFUNC( GetWeight, "Get the weapon's weight." )
|
||||
DEFINE_SCRIPTFUNC( GetPrintName, "" )
|
||||
|
||||
DEFINE_SCRIPTFUNC_CL( GetSlot, "" )
|
||||
DEFINE_SCRIPTFUNC_CL( GetPosition, "" )
|
||||
|
||||
DEFINE_SCRIPTFUNC( CanBePickedUpByNPCs, "Check if the weapon can be picked up by NPCs." )
|
||||
|
||||
#ifndef CLIENT_DLL
|
||||
DEFINE_SCRIPTFUNC( CapabilitiesGet, "Get the capabilities the weapon currently possesses." )
|
||||
#endif
|
||||
DEFINE_SCRIPTFUNC_SV( CapabilitiesGet, "Get the capabilities the weapon currently possesses." )
|
||||
|
||||
DEFINE_SCRIPTFUNC( HasWeaponIdleTimeElapsed, "Returns true if the idle time has elapsed." )
|
||||
DEFINE_SCRIPTFUNC( GetWeaponIdleTime, "Returns the next time WeaponIdle() will run." )
|
||||
DEFINE_SCRIPTFUNC( SetWeaponIdleTime, "Sets the next time WeaponIdle() will run." )
|
||||
DEFINE_SCRIPTFUNC_SV( SetWeaponIdleTime, "Sets the next time WeaponIdle() will run." )
|
||||
|
||||
DEFINE_SCRIPTFUNC_NAMED( ScriptWeaponClassify, "WeaponClassify", "Returns the weapon's classify class from the WEPCLASS_ constant group" )
|
||||
DEFINE_SCRIPTFUNC_NAMED( ScriptWeaponSound, "WeaponSound", "Plays one of the weapon's sounds." )
|
||||
@ -3014,22 +3032,22 @@ BEGIN_ENT_SCRIPTDESC( CBaseCombatWeapon, CBaseAnimating, "The base class for all
|
||||
DEFINE_SCRIPTFUNC( IsViewModelSequenceFinished, "Returns true if the current view model animation is finished." )
|
||||
|
||||
DEFINE_SCRIPTFUNC( FiresUnderwater, "Returns true if this weapon can fire underwater." )
|
||||
DEFINE_SCRIPTFUNC( SetFiresUnderwater, "Sets whether this weapon can fire underwater." )
|
||||
DEFINE_SCRIPTFUNC_SV( SetFiresUnderwater, "Sets whether this weapon can fire underwater." )
|
||||
DEFINE_SCRIPTFUNC( AltFiresUnderwater, "Returns true if this weapon can alt-fire underwater." )
|
||||
DEFINE_SCRIPTFUNC( SetAltFiresUnderwater, "Sets whether this weapon can alt-fire underwater." )
|
||||
DEFINE_SCRIPTFUNC_SV( SetAltFiresUnderwater, "Sets whether this weapon can alt-fire underwater." )
|
||||
DEFINE_SCRIPTFUNC( MinRange1, "Returns the closest this weapon can be used." )
|
||||
DEFINE_SCRIPTFUNC( SetMinRange1, "Sets the closest this weapon can be used." )
|
||||
DEFINE_SCRIPTFUNC_SV( SetMinRange1, "Sets the closest this weapon can be used." )
|
||||
DEFINE_SCRIPTFUNC( MinRange2, "Returns the closest this weapon can be used." )
|
||||
DEFINE_SCRIPTFUNC( SetMinRange2, "Sets the closest this weapon can be used." )
|
||||
DEFINE_SCRIPTFUNC_SV( SetMinRange2, "Sets the closest this weapon can be used." )
|
||||
DEFINE_SCRIPTFUNC( ReloadsSingly, "Returns true if this weapon reloads 1 round at a time." )
|
||||
DEFINE_SCRIPTFUNC( SetReloadsSingly, "Sets whether this weapon reloads 1 round at a time." )
|
||||
DEFINE_SCRIPTFUNC_SV( SetReloadsSingly, "Sets whether this weapon reloads 1 round at a time." )
|
||||
DEFINE_SCRIPTFUNC( FireDuration, "Returns the amount of time that the weapon has sustained firing." )
|
||||
DEFINE_SCRIPTFUNC( SetFireDuration, "Sets the amount of time that the weapon has sustained firing." )
|
||||
DEFINE_SCRIPTFUNC_SV( SetFireDuration, "Sets the amount of time that the weapon has sustained firing." )
|
||||
|
||||
DEFINE_SCRIPTFUNC( NextPrimaryAttack, "Returns the next time PrimaryAttack() will run when the player is pressing +ATTACK." )
|
||||
DEFINE_SCRIPTFUNC( SetNextPrimaryAttack, "Sets the next time PrimaryAttack() will run when the player is pressing +ATTACK." )
|
||||
DEFINE_SCRIPTFUNC_SV( SetNextPrimaryAttack, "Sets the next time PrimaryAttack() will run when the player is pressing +ATTACK." )
|
||||
DEFINE_SCRIPTFUNC( NextSecondaryAttack, "Returns the next time SecondaryAttack() will run when the player is pressing +ATTACK2." )
|
||||
DEFINE_SCRIPTFUNC( SetNextSecondaryAttack, "Sets the next time SecondaryAttack() will run when the player is pressing +ATTACK2." )
|
||||
DEFINE_SCRIPTFUNC_SV( SetNextSecondaryAttack, "Sets the next time SecondaryAttack() will run when the player is pressing +ATTACK2." )
|
||||
|
||||
END_SCRIPTDESC();
|
||||
#endif
|
||||
|
Loading…
Reference in New Issue
Block a user