mirror of
https://github.com/mapbase-source/source-sdk-2013.git
synced 2024-12-27 15:25:30 +03:00
Refactored the way certain classes and structs are exposed to VScript to make the code less reliant on metamethods and reduce awkward code placement
This commit is contained in:
parent
f1bd6fcf81
commit
256cdfb7af
@ -100,6 +100,10 @@
|
|||||||
#include "items.h"
|
#include "items.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef MAPBASE_VSCRIPT
|
||||||
|
#include "mapbase/vscript_funcs_shared.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
#include "env_debughistory.h"
|
#include "env_debughistory.h"
|
||||||
#include "collisionutils.h"
|
#include "collisionutils.h"
|
||||||
|
|
||||||
@ -729,7 +733,7 @@ HSCRIPT CAI_BaseNPC::VScriptFindEnemyMemory( HSCRIPT pEnemy )
|
|||||||
AI_EnemyInfo_t *info = GetEnemies()->Find( ToEnt(pEnemy) );
|
AI_EnemyInfo_t *info = GetEnemies()->Find( ToEnt(pEnemy) );
|
||||||
if (info)
|
if (info)
|
||||||
{
|
{
|
||||||
hScript = g_pScriptVM->RegisterInstance( info );
|
hScript = g_pScriptVM->RegisterInstance( reinterpret_cast<Script_AI_EnemyInfo_t*>(info) );
|
||||||
}
|
}
|
||||||
|
|
||||||
return hScript;
|
return hScript;
|
||||||
|
@ -146,29 +146,6 @@ BEGIN_SIMPLE_DATADESC( AI_EnemyInfo_t )
|
|||||||
// NOT SAVED nextEMemory
|
// NOT SAVED nextEMemory
|
||||||
END_DATADESC()
|
END_DATADESC()
|
||||||
|
|
||||||
#ifdef MAPBASE_VSCRIPT
|
|
||||||
#define DEFINE_ENEMY_INFO_SCRIPTFUNCS(name, desc) \
|
|
||||||
DEFINE_SCRIPTFUNC_NAMED( Get##name, #name, "Get " desc ) \
|
|
||||||
DEFINE_SCRIPTFUNC( Set##name, "Set " desc )
|
|
||||||
|
|
||||||
BEGIN_SCRIPTDESC_ROOT( AI_EnemyInfo_t, "Accessor for information about an enemy." )
|
|
||||||
DEFINE_SCRIPTFUNC( Enemy, "Get the enemy." )
|
|
||||||
DEFINE_SCRIPTFUNC( SetEnemy, "Set the enemy." )
|
|
||||||
DEFINE_ENEMY_INFO_SCRIPTFUNCS( LastKnownLocation, "the enemy's last known location." )
|
|
||||||
DEFINE_ENEMY_INFO_SCRIPTFUNCS( LastSeenLocation, "the enemy's last seen location." )
|
|
||||||
DEFINE_ENEMY_INFO_SCRIPTFUNCS( TimeLastSeen, "the last time the enemy was seen." )
|
|
||||||
DEFINE_ENEMY_INFO_SCRIPTFUNCS( TimeFirstSeen, "the first time the enemy was seen." )
|
|
||||||
DEFINE_ENEMY_INFO_SCRIPTFUNCS( TimeLastReacquired, "the last time the enemy was reaquired." )
|
|
||||||
DEFINE_ENEMY_INFO_SCRIPTFUNCS( TimeValidEnemy, "the time at which the enemy can be selected (reaction delay)." )
|
|
||||||
DEFINE_ENEMY_INFO_SCRIPTFUNCS( TimeLastReceivedDamageFrom, "the last time damage was received from this enemy." )
|
|
||||||
DEFINE_ENEMY_INFO_SCRIPTFUNCS( TimeAtFirstHand, "the time at which the enemy was seen firsthand." )
|
|
||||||
DEFINE_ENEMY_INFO_SCRIPTFUNCS( DangerMemory, "the memory of danger position w/o enemy pointer." )
|
|
||||||
DEFINE_ENEMY_INFO_SCRIPTFUNCS( EludedMe, "whether the enemy is not at the last known location." )
|
|
||||||
DEFINE_ENEMY_INFO_SCRIPTFUNCS( Unforgettable, "whether the enemy is unforgettable." )
|
|
||||||
DEFINE_ENEMY_INFO_SCRIPTFUNCS( MobbedMe, "whether the enemy was part of a mob at some point." )
|
|
||||||
END_SCRIPTDESC();
|
|
||||||
#endif
|
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
|
|
||||||
CAI_Enemies::CAI_Enemies(void)
|
CAI_Enemies::CAI_Enemies(void)
|
||||||
|
@ -45,29 +45,6 @@ struct AI_EnemyInfo_t
|
|||||||
bool bUnforgettable;
|
bool bUnforgettable;
|
||||||
bool bMobbedMe; // True if enemy was part of a mob at some point
|
bool bMobbedMe; // True if enemy was part of a mob at some point
|
||||||
|
|
||||||
#ifdef MAPBASE_VSCRIPT
|
|
||||||
// Script functions.
|
|
||||||
#define ENEMY_INFO_SCRIPT_FUNCS(type, name, var) \
|
|
||||||
type Get##name() { return var; } \
|
|
||||||
void Set##name( type v ) { var = v; }
|
|
||||||
|
|
||||||
HSCRIPT Enemy() { return ToHScript(hEnemy); }
|
|
||||||
void SetEnemy( HSCRIPT ent ) { hEnemy = ToEnt(ent); }
|
|
||||||
|
|
||||||
ENEMY_INFO_SCRIPT_FUNCS( Vector, LastKnownLocation, vLastKnownLocation );
|
|
||||||
ENEMY_INFO_SCRIPT_FUNCS( Vector, LastSeenLocation, vLastSeenLocation );
|
|
||||||
ENEMY_INFO_SCRIPT_FUNCS( float, TimeLastSeen, timeLastSeen );
|
|
||||||
ENEMY_INFO_SCRIPT_FUNCS( float, TimeFirstSeen, timeFirstSeen );
|
|
||||||
ENEMY_INFO_SCRIPT_FUNCS( float, TimeLastReacquired, timeLastReacquired );
|
|
||||||
ENEMY_INFO_SCRIPT_FUNCS( float, TimeValidEnemy, timeValidEnemy );
|
|
||||||
ENEMY_INFO_SCRIPT_FUNCS( float, TimeLastReceivedDamageFrom, timeLastReceivedDamageFrom );
|
|
||||||
ENEMY_INFO_SCRIPT_FUNCS( float, TimeAtFirstHand, timeAtFirstHand );
|
|
||||||
ENEMY_INFO_SCRIPT_FUNCS( bool, DangerMemory, bDangerMemory );
|
|
||||||
ENEMY_INFO_SCRIPT_FUNCS( bool, EludedMe, bEludedMe );
|
|
||||||
ENEMY_INFO_SCRIPT_FUNCS( bool, Unforgettable, bUnforgettable );
|
|
||||||
ENEMY_INFO_SCRIPT_FUNCS( bool, MobbedMe, bMobbedMe );
|
|
||||||
#endif
|
|
||||||
|
|
||||||
DECLARE_SIMPLE_DATADESC();
|
DECLARE_SIMPLE_DATADESC();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -32,6 +32,9 @@
|
|||||||
#include "gib.h"
|
#include "gib.h"
|
||||||
#include "CRagdollMagnet.h"
|
#include "CRagdollMagnet.h"
|
||||||
#endif
|
#endif
|
||||||
|
#ifdef MAPBASE_VSCRIPT
|
||||||
|
#include "mapbase/vscript_funcs_shared.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
// memdbgon must be the last include file in a .cpp file!!!
|
// memdbgon must be the last include file in a .cpp file!!!
|
||||||
#include "tier0/memdbgon.h"
|
#include "tier0/memdbgon.h"
|
||||||
@ -1296,7 +1299,7 @@ bool CBaseAnimating::ScriptHookHandleAnimEvent( animevent_t *pEvent )
|
|||||||
{
|
{
|
||||||
if (m_ScriptScope.IsInitialized() && g_Hook_HandleAnimEvent.CanRunInScope(m_ScriptScope))
|
if (m_ScriptScope.IsInitialized() && g_Hook_HandleAnimEvent.CanRunInScope(m_ScriptScope))
|
||||||
{
|
{
|
||||||
HSCRIPT hEvent = g_pScriptVM->RegisterInstance( pEvent );
|
HSCRIPT hEvent = g_pScriptVM->RegisterInstance( reinterpret_cast<scriptanimevent_t*>(pEvent) );
|
||||||
|
|
||||||
// event
|
// event
|
||||||
ScriptVariant_t args[] = { hEvent };
|
ScriptVariant_t args[] = { hEvent };
|
||||||
|
@ -9,6 +9,7 @@
|
|||||||
#include "activitylist.h"
|
#include "activitylist.h"
|
||||||
#include "in_buttons.h"
|
#include "in_buttons.h"
|
||||||
#include "rope_shared.h"
|
#include "rope_shared.h"
|
||||||
|
#include "eventlist.h"
|
||||||
#ifdef CLIENT_DLL
|
#ifdef CLIENT_DLL
|
||||||
#include "c_ai_basenpc.h"
|
#include "c_ai_basenpc.h"
|
||||||
#else
|
#else
|
||||||
@ -311,6 +312,17 @@ void RegisterSharedScriptConstants()
|
|||||||
ScriptRegisterConstant( g_pScriptVM, MOVETYPE_OBSERVER, "Move type used in GetMoveType(), etc." );
|
ScriptRegisterConstant( g_pScriptVM, MOVETYPE_OBSERVER, "Move type used in GetMoveType(), etc." );
|
||||||
ScriptRegisterConstant( g_pScriptVM, MOVETYPE_CUSTOM, "Move type used in GetMoveType(), etc." );
|
ScriptRegisterConstant( g_pScriptVM, MOVETYPE_CUSTOM, "Move type used in GetMoveType(), etc." );
|
||||||
|
|
||||||
|
//
|
||||||
|
// Animation Stuff
|
||||||
|
//
|
||||||
|
ScriptRegisterConstant( g_pScriptVM, AE_TYPE_SERVER, "Animation event flag which indicates an event is supposed to be serverside only." );
|
||||||
|
ScriptRegisterConstant( g_pScriptVM, AE_TYPE_SCRIPTED, "Animation event flag with an unknown purpose." );
|
||||||
|
ScriptRegisterConstant( g_pScriptVM, AE_TYPE_SHARED, "Animation event flag which indicates an event is supposed to be shared between the server and client." );
|
||||||
|
ScriptRegisterConstant( g_pScriptVM, AE_TYPE_WEAPON, "Animation event flag which indicates an event is part of a weapon." );
|
||||||
|
ScriptRegisterConstant( g_pScriptVM, AE_TYPE_CLIENT, "Animation event flag which indicates an event is supposed to be clientside only." );
|
||||||
|
ScriptRegisterConstant( g_pScriptVM, AE_TYPE_FACEPOSER, "Animation event flag with an unknown purpose. Presumably related to Faceposer." );
|
||||||
|
ScriptRegisterConstant( g_pScriptVM, AE_TYPE_NEWEVENTSYSTEM, "Animation event flag which indicates an event is using the new system. This is often used by class-specific events from NPCs." );
|
||||||
|
|
||||||
//
|
//
|
||||||
// Ropes
|
// Ropes
|
||||||
//
|
//
|
||||||
|
@ -323,7 +323,7 @@ BEGIN_SCRIPTDESC_ROOT_NAMED( CTraceInfoAccessor, "CGameTrace", "Handle for acces
|
|||||||
DEFINE_SCRIPTFUNC( Destroy, "Deletes this instance. Important for preventing memory leaks." )
|
DEFINE_SCRIPTFUNC( Destroy, "Deletes this instance. Important for preventing memory leaks." )
|
||||||
END_SCRIPTDESC();
|
END_SCRIPTDESC();
|
||||||
|
|
||||||
BEGIN_SCRIPTDESC_ROOT_NAMED( surfacedata_t, "surfacedata_t", "Handle for accessing surface data." )
|
BEGIN_SCRIPTDESC_ROOT_NAMED( scriptsurfacedata_t, "surfacedata_t", "Handle for accessing surface data." )
|
||||||
DEFINE_SCRIPTFUNC( GetFriction, "The surface's friction." )
|
DEFINE_SCRIPTFUNC( GetFriction, "The surface's friction." )
|
||||||
DEFINE_SCRIPTFUNC( GetThickness, "The surface's thickness." )
|
DEFINE_SCRIPTFUNC( GetThickness, "The surface's thickness." )
|
||||||
|
|
||||||
@ -342,16 +342,16 @@ BEGIN_SCRIPTDESC_ROOT_NAMED( surfacedata_t, "surfacedata_t", "Handle for accessi
|
|||||||
DEFINE_SCRIPTFUNC( GetSoundStrain, "The surface's strain sound." )
|
DEFINE_SCRIPTFUNC( GetSoundStrain, "The surface's strain sound." )
|
||||||
END_SCRIPTDESC();
|
END_SCRIPTDESC();
|
||||||
|
|
||||||
const char* surfacedata_t::GetSoundStepLeft() { return physprops->GetString( sounds.stepleft ); }
|
const char* scriptsurfacedata_t::GetSoundStepLeft() { return physprops->GetString( sounds.stepleft ); }
|
||||||
const char* surfacedata_t::GetSoundStepRight() { return physprops->GetString( sounds.stepright ); }
|
const char* scriptsurfacedata_t::GetSoundStepRight() { return physprops->GetString( sounds.stepright ); }
|
||||||
const char* surfacedata_t::GetSoundImpactSoft() { return physprops->GetString( sounds.impactSoft ); }
|
const char* scriptsurfacedata_t::GetSoundImpactSoft() { return physprops->GetString( sounds.impactSoft ); }
|
||||||
const char* surfacedata_t::GetSoundImpactHard() { return physprops->GetString( sounds.impactHard ); }
|
const char* scriptsurfacedata_t::GetSoundImpactHard() { return physprops->GetString( sounds.impactHard ); }
|
||||||
const char* surfacedata_t::GetSoundScrapeSmooth() { return physprops->GetString( sounds.scrapeSmooth ); }
|
const char* scriptsurfacedata_t::GetSoundScrapeSmooth() { return physprops->GetString( sounds.scrapeSmooth ); }
|
||||||
const char* surfacedata_t::GetSoundScrapeRough() { return physprops->GetString( sounds.scrapeRough ); }
|
const char* scriptsurfacedata_t::GetSoundScrapeRough() { return physprops->GetString( sounds.scrapeRough ); }
|
||||||
const char* surfacedata_t::GetSoundBulletImpact() { return physprops->GetString( sounds.bulletImpact ); }
|
const char* scriptsurfacedata_t::GetSoundBulletImpact() { return physprops->GetString( sounds.bulletImpact ); }
|
||||||
const char* surfacedata_t::GetSoundRolling() { return physprops->GetString( sounds.rolling ); }
|
const char* scriptsurfacedata_t::GetSoundRolling() { return physprops->GetString( sounds.rolling ); }
|
||||||
const char* surfacedata_t::GetSoundBreak() { return physprops->GetString( sounds.breakSound ); }
|
const char* scriptsurfacedata_t::GetSoundBreak() { return physprops->GetString( sounds.breakSound ); }
|
||||||
const char* surfacedata_t::GetSoundStrain() { return physprops->GetString( sounds.strainSound ); }
|
const char* scriptsurfacedata_t::GetSoundStrain() { return physprops->GetString( sounds.strainSound ); }
|
||||||
|
|
||||||
BEGIN_SCRIPTDESC_ROOT_NAMED( CSurfaceScriptAccessor, "csurface_t", "Handle for accessing csurface_t info." )
|
BEGIN_SCRIPTDESC_ROOT_NAMED( CSurfaceScriptAccessor, "csurface_t", "Handle for accessing csurface_t info." )
|
||||||
DEFINE_SCRIPTFUNC( Name, "The surface's name." )
|
DEFINE_SCRIPTFUNC( Name, "The surface's name." )
|
||||||
@ -506,16 +506,36 @@ FireBulletsInfo_t *GetFireBulletsInfoFromInfo( HSCRIPT hBulletsInfo )
|
|||||||
}
|
}
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
//
|
// animevent_t
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
CAnimEventTInstanceHelper g_AnimEventTInstanceHelper;
|
CAnimEventTInstanceHelper g_AnimEventTInstanceHelper;
|
||||||
|
|
||||||
BEGIN_SCRIPTDESC_ROOT( animevent_t, "Handle for accessing animevent_t info." )
|
BEGIN_SCRIPTDESC_ROOT( scriptanimevent_t, "Handle for accessing animevent_t info." )
|
||||||
DEFINE_SCRIPT_INSTANCE_HELPER( &g_AnimEventTInstanceHelper )
|
DEFINE_SCRIPT_INSTANCE_HELPER( &g_AnimEventTInstanceHelper )
|
||||||
|
|
||||||
|
DEFINE_SCRIPTFUNC( GetEvent, "Gets the event number." )
|
||||||
|
DEFINE_SCRIPTFUNC( SetEvent, "Sets the event number." )
|
||||||
|
|
||||||
|
DEFINE_SCRIPTFUNC( GetOptions, "Gets the event's options/parameters." )
|
||||||
|
DEFINE_SCRIPTFUNC( SetOptions, "Sets the event's options/parameters." )
|
||||||
|
|
||||||
|
DEFINE_SCRIPTFUNC( GetCycle, "Gets the cycle at which the event happens." )
|
||||||
|
DEFINE_SCRIPTFUNC( SetCycle, "Sets the cycle at which the event happens." )
|
||||||
|
|
||||||
|
DEFINE_SCRIPTFUNC( GetEventTime, "Gets the time the event plays." )
|
||||||
|
DEFINE_SCRIPTFUNC( SetEventTime, "Sets the time the event plays." )
|
||||||
|
|
||||||
|
DEFINE_SCRIPTFUNC( GetType, "Gets the event's type flags. See the 'AE_TYPE_' set of constants for valid flags." )
|
||||||
|
DEFINE_SCRIPTFUNC( SetType, "Sets the event's type flags. See the 'AE_TYPE_' set of constants for valid flags." )
|
||||||
|
|
||||||
|
DEFINE_SCRIPTFUNC( GetSource, "Gets the event's source entity." )
|
||||||
|
DEFINE_SCRIPTFUNC( SetSource, "Sets the event's source entity." )
|
||||||
END_SCRIPTDESC();
|
END_SCRIPTDESC();
|
||||||
|
|
||||||
bool CAnimEventTInstanceHelper::Get( void *p, const char *pszKey, ScriptVariant_t &variant )
|
bool CAnimEventTInstanceHelper::Get( void *p, const char *pszKey, ScriptVariant_t &variant )
|
||||||
{
|
{
|
||||||
|
DevWarning( "VScript animevent_t.%s: animevent_t metamethod members are deprecated! Use 'script_help animevent_t' to see the correct functions.\n", pszKey );
|
||||||
|
|
||||||
animevent_t *ani = ((animevent_t *)p);
|
animevent_t *ani = ((animevent_t *)p);
|
||||||
if (FStrEq( pszKey, "event" ))
|
if (FStrEq( pszKey, "event" ))
|
||||||
variant = ani->event;
|
variant = ani->event;
|
||||||
@ -537,6 +557,8 @@ bool CAnimEventTInstanceHelper::Get( void *p, const char *pszKey, ScriptVariant_
|
|||||||
|
|
||||||
bool CAnimEventTInstanceHelper::Set( void *p, const char *pszKey, ScriptVariant_t &variant )
|
bool CAnimEventTInstanceHelper::Set( void *p, const char *pszKey, ScriptVariant_t &variant )
|
||||||
{
|
{
|
||||||
|
DevWarning( "VScript animevent_t.%s: animevent_t metamethod members are deprecated! Use 'script_help animevent_t' to see the correct functions.\n", pszKey );
|
||||||
|
|
||||||
animevent_t *ani = ((animevent_t *)p);
|
animevent_t *ani = ((animevent_t *)p);
|
||||||
if (FStrEq( pszKey, "event" ))
|
if (FStrEq( pszKey, "event" ))
|
||||||
ani->event = variant;
|
ani->event = variant;
|
||||||
@ -611,7 +633,7 @@ END_SCRIPTDESC();
|
|||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
//
|
//
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
BEGIN_SCRIPTDESC_ROOT( CUserCmd, "Handle for accessing CUserCmd info." )
|
BEGIN_SCRIPTDESC_ROOT_NAMED( CScriptUserCmd, "CUserCmd", "Handle for accessing CUserCmd info." )
|
||||||
DEFINE_SCRIPTFUNC( GetCommandNumber, "For matching server and client commands for debugging." )
|
DEFINE_SCRIPTFUNC( GetCommandNumber, "For matching server and client commands for debugging." )
|
||||||
|
|
||||||
DEFINE_SCRIPTFUNC_NAMED( ScriptGetTickCount, "GetTickCount", "The tick the client created this command." )
|
DEFINE_SCRIPTFUNC_NAMED( ScriptGetTickCount, "GetTickCount", "The tick the client created this command." )
|
||||||
@ -644,6 +666,32 @@ BEGIN_SCRIPTDESC_ROOT( CUserCmd, "Handle for accessing CUserCmd info." )
|
|||||||
DEFINE_SCRIPTFUNC( SetMouseY, "Sets mouse accum in y from create move." )
|
DEFINE_SCRIPTFUNC( SetMouseY, "Sets mouse accum in y from create move." )
|
||||||
END_SCRIPTDESC();
|
END_SCRIPTDESC();
|
||||||
|
|
||||||
|
#ifdef GAME_DLL
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
|
//
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
|
#define DEFINE_ENEMY_INFO_SCRIPTFUNCS(name, desc) \
|
||||||
|
DEFINE_SCRIPTFUNC_NAMED( Get##name, #name, "Get " desc ) \
|
||||||
|
DEFINE_SCRIPTFUNC( Set##name, "Set " desc )
|
||||||
|
|
||||||
|
BEGIN_SCRIPTDESC_ROOT_NAMED( Script_AI_EnemyInfo_t, "AI_EnemyInfo_t", "Accessor for information about an enemy." )
|
||||||
|
DEFINE_SCRIPTFUNC( Enemy, "Get the enemy." )
|
||||||
|
DEFINE_SCRIPTFUNC( SetEnemy, "Set the enemy." )
|
||||||
|
DEFINE_ENEMY_INFO_SCRIPTFUNCS( LastKnownLocation, "the enemy's last known location." )
|
||||||
|
DEFINE_ENEMY_INFO_SCRIPTFUNCS( LastSeenLocation, "the enemy's last seen location." )
|
||||||
|
DEFINE_ENEMY_INFO_SCRIPTFUNCS( TimeLastSeen, "the last time the enemy was seen." )
|
||||||
|
DEFINE_ENEMY_INFO_SCRIPTFUNCS( TimeFirstSeen, "the first time the enemy was seen." )
|
||||||
|
DEFINE_ENEMY_INFO_SCRIPTFUNCS( TimeLastReacquired, "the last time the enemy was reaquired." )
|
||||||
|
DEFINE_ENEMY_INFO_SCRIPTFUNCS( TimeValidEnemy, "the time at which the enemy can be selected (reaction delay)." )
|
||||||
|
DEFINE_ENEMY_INFO_SCRIPTFUNCS( TimeLastReceivedDamageFrom, "the last time damage was received from this enemy." )
|
||||||
|
DEFINE_ENEMY_INFO_SCRIPTFUNCS( TimeAtFirstHand, "the time at which the enemy was seen firsthand." )
|
||||||
|
DEFINE_ENEMY_INFO_SCRIPTFUNCS( DangerMemory, "the memory of danger position w/o enemy pointer." )
|
||||||
|
DEFINE_ENEMY_INFO_SCRIPTFUNCS( EludedMe, "whether the enemy is not at the last known location." )
|
||||||
|
DEFINE_ENEMY_INFO_SCRIPTFUNCS( Unforgettable, "whether the enemy is unforgettable." )
|
||||||
|
DEFINE_ENEMY_INFO_SCRIPTFUNCS( MobbedMe, "whether the enemy was part of a mob at some point." )
|
||||||
|
END_SCRIPTDESC();
|
||||||
|
#endif
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
//
|
//
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
|
@ -11,13 +11,41 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#include "npcevent.h"
|
||||||
|
#ifdef GAME_DLL
|
||||||
|
#include "ai_memory.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
|
// Exposes surfacedata_t to VScript
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
|
struct scriptsurfacedata_t : public surfacedata_t
|
||||||
|
{
|
||||||
|
float GetFriction() { return physics.friction; }
|
||||||
|
float GetThickness() { return physics.thickness; }
|
||||||
|
|
||||||
|
float GetJumpFactor() { return game.jumpFactor; }
|
||||||
|
char GetMaterialChar() { return game.material; }
|
||||||
|
|
||||||
|
const char* GetSoundStepLeft();
|
||||||
|
const char* GetSoundStepRight();
|
||||||
|
const char* GetSoundImpactSoft();
|
||||||
|
const char* GetSoundImpactHard();
|
||||||
|
const char* GetSoundScrapeSmooth();
|
||||||
|
const char* GetSoundScrapeRough();
|
||||||
|
const char* GetSoundBulletImpact();
|
||||||
|
const char* GetSoundRolling();
|
||||||
|
const char* GetSoundBreak();
|
||||||
|
const char* GetSoundStrain();
|
||||||
|
};
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
// Exposes csurface_t to VScript
|
// Exposes csurface_t to VScript
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
class CSurfaceScriptAccessor
|
class CSurfaceScriptAccessor
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
CSurfaceScriptAccessor( csurface_t &surf ) { m_surf = &surf; m_surfaceData = g_pScriptVM->RegisterInstance( physprops->GetSurfaceData( m_surf->surfaceProps ) ); }
|
CSurfaceScriptAccessor( csurface_t &surf ) { m_surf = &surf; m_surfaceData = g_pScriptVM->RegisterInstance( reinterpret_cast<scriptsurfacedata_t*>(physprops->GetSurfaceData( m_surf->surfaceProps )) ); }
|
||||||
~CSurfaceScriptAccessor() { delete m_surfaceData; }
|
~CSurfaceScriptAccessor() { delete m_surfaceData; }
|
||||||
|
|
||||||
// cplane_t stuff
|
// cplane_t stuff
|
||||||
@ -124,6 +152,32 @@ private:
|
|||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
// Exposes animevent_t to VScript
|
// Exposes animevent_t to VScript
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
|
struct scriptanimevent_t : public animevent_t
|
||||||
|
{
|
||||||
|
int GetEvent() { return event; }
|
||||||
|
void SetEvent( int nEvent ) { event = nEvent; }
|
||||||
|
|
||||||
|
const char *GetOptions() { return options; }
|
||||||
|
void SetOptions( const char *pOptions ) { options = pOptions; }
|
||||||
|
|
||||||
|
float GetCycle() { return cycle; }
|
||||||
|
void SetCycle( float flCycle ) { cycle = flCycle; }
|
||||||
|
|
||||||
|
float GetEventTime() { return eventtime; }
|
||||||
|
void SetEventTime( float flEventTime ) { eventtime = flEventTime; }
|
||||||
|
|
||||||
|
int GetType() { return type; }
|
||||||
|
void SetType( int nType ) { eventtime = type; }
|
||||||
|
|
||||||
|
HSCRIPT GetSource() { return ToHScript( pSource ); }
|
||||||
|
void SetSource( HSCRIPT hSource )
|
||||||
|
{
|
||||||
|
CBaseEntity *pEnt = ToEnt( hSource );
|
||||||
|
if (pEnt)
|
||||||
|
pSource = pEnt->GetBaseAnimating();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
class CAnimEventTInstanceHelper : public IScriptInstanceHelper
|
class CAnimEventTInstanceHelper : public IScriptInstanceHelper
|
||||||
{
|
{
|
||||||
bool Get( void *p, const char *pszKey, ScriptVariant_t &variant );
|
bool Get( void *p, const char *pszKey, ScriptVariant_t &variant );
|
||||||
@ -155,7 +209,7 @@ struct ScriptEmitSound_t : public EmitSound_t
|
|||||||
|
|
||||||
bool HasOrigin() { return m_pOrigin ? true : false; }
|
bool HasOrigin() { return m_pOrigin ? true : false; }
|
||||||
const Vector &GetOrigin() { return m_pOrigin ? *m_pOrigin : vec3_origin; }
|
const Vector &GetOrigin() { return m_pOrigin ? *m_pOrigin : vec3_origin; }
|
||||||
void SetOrigin( Vector origin ) { m_pOrigin = &origin; }
|
void SetOrigin( const Vector &origin ) { static Vector tempOrigin; tempOrigin = origin; m_pOrigin = &tempOrigin; }
|
||||||
void ClearOrigin() { m_pOrigin = NULL; }
|
void ClearOrigin() { m_pOrigin = NULL; }
|
||||||
|
|
||||||
float GetSoundTime() { return m_flSoundTime; }
|
float GetSoundTime() { return m_flSoundTime; }
|
||||||
@ -177,4 +231,70 @@ struct ScriptEmitSound_t : public EmitSound_t
|
|||||||
void SetSoundScriptHandle( int hSoundScriptHandle ) { m_hSoundScriptHandle = hSoundScriptHandle; }
|
void SetSoundScriptHandle( int hSoundScriptHandle ) { m_hSoundScriptHandle = hSoundScriptHandle; }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
|
// Exposes CUserCmd to VScript
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
|
class CScriptUserCmd : public CUserCmd
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
int GetCommandNumber() { return command_number; }
|
||||||
|
|
||||||
|
int ScriptGetTickCount() { return tick_count; }
|
||||||
|
|
||||||
|
const QAngle& GetViewAngles() { return viewangles; }
|
||||||
|
void SetViewAngles( const QAngle& val ) { viewangles = val; }
|
||||||
|
|
||||||
|
float GetForwardMove() { return forwardmove; }
|
||||||
|
void SetForwardMove( float val ) { forwardmove = val; }
|
||||||
|
float GetSideMove() { return sidemove; }
|
||||||
|
void SetSideMove( float val ) { sidemove = val; }
|
||||||
|
float GetUpMove() { return upmove; }
|
||||||
|
void SetUpMove( float val ) { upmove = val; }
|
||||||
|
|
||||||
|
int GetButtons() { return buttons; }
|
||||||
|
void SetButtons( int val ) { buttons = val; }
|
||||||
|
int GetImpulse() { return impulse; }
|
||||||
|
void SetImpulse( int val ) { impulse = val; }
|
||||||
|
|
||||||
|
int GetWeaponSelect() { return weaponselect; }
|
||||||
|
void SetWeaponSelect( int val ) { weaponselect = val; }
|
||||||
|
int GetWeaponSubtype() { return weaponsubtype; }
|
||||||
|
void SetWeaponSubtype( int val ) { weaponsubtype = val; }
|
||||||
|
|
||||||
|
int GetRandomSeed() { return random_seed; }
|
||||||
|
|
||||||
|
int GetMouseX() { return mousedx; }
|
||||||
|
void SetMouseX( int val ) { mousedx = val; }
|
||||||
|
int GetMouseY() { return mousedy; }
|
||||||
|
void SetMouseY( int val ) { mousedy = val; }
|
||||||
|
};
|
||||||
|
|
||||||
|
#ifdef GAME_DLL
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
|
// Exposes AI_EnemyInfo_t to VScript
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
|
struct Script_AI_EnemyInfo_t : public AI_EnemyInfo_t
|
||||||
|
{
|
||||||
|
#define ENEMY_INFO_SCRIPT_FUNCS(type, name, var) \
|
||||||
|
type Get##name() { return var; } \
|
||||||
|
void Set##name( type v ) { var = v; }
|
||||||
|
|
||||||
|
HSCRIPT Enemy() { return ToHScript(hEnemy); }
|
||||||
|
void SetEnemy( HSCRIPT ent ) { hEnemy = ToEnt(ent); }
|
||||||
|
|
||||||
|
ENEMY_INFO_SCRIPT_FUNCS( Vector, LastKnownLocation, vLastKnownLocation );
|
||||||
|
ENEMY_INFO_SCRIPT_FUNCS( Vector, LastSeenLocation, vLastSeenLocation );
|
||||||
|
ENEMY_INFO_SCRIPT_FUNCS( float, TimeLastSeen, timeLastSeen );
|
||||||
|
ENEMY_INFO_SCRIPT_FUNCS( float, TimeFirstSeen, timeFirstSeen );
|
||||||
|
ENEMY_INFO_SCRIPT_FUNCS( float, TimeLastReacquired, timeLastReacquired );
|
||||||
|
ENEMY_INFO_SCRIPT_FUNCS( float, TimeValidEnemy, timeValidEnemy );
|
||||||
|
ENEMY_INFO_SCRIPT_FUNCS( float, TimeLastReceivedDamageFrom, timeLastReceivedDamageFrom );
|
||||||
|
ENEMY_INFO_SCRIPT_FUNCS( float, TimeAtFirstHand, timeAtFirstHand );
|
||||||
|
ENEMY_INFO_SCRIPT_FUNCS( bool, DangerMemory, bDangerMemory );
|
||||||
|
ENEMY_INFO_SCRIPT_FUNCS( bool, EludedMe, bEludedMe );
|
||||||
|
ENEMY_INFO_SCRIPT_FUNCS( bool, Unforgettable, bUnforgettable );
|
||||||
|
ENEMY_INFO_SCRIPT_FUNCS( bool, MobbedMe, bMobbedMe );
|
||||||
|
};
|
||||||
|
#endif
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -127,39 +127,6 @@ public:
|
|||||||
impulse = 0;
|
impulse = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef MAPBASE_VSCRIPT // These functions are needed for exposing CUserCmd to VScript.
|
|
||||||
int GetCommandNumber() { return command_number; }
|
|
||||||
|
|
||||||
int ScriptGetTickCount() { return tick_count; }
|
|
||||||
|
|
||||||
const QAngle& GetViewAngles() { return viewangles; }
|
|
||||||
void SetViewAngles( const QAngle& val ) { viewangles = val; }
|
|
||||||
|
|
||||||
float GetForwardMove() { return forwardmove; }
|
|
||||||
void SetForwardMove( float val ) { forwardmove = val; }
|
|
||||||
float GetSideMove() { return sidemove; }
|
|
||||||
void SetSideMove( float val ) { sidemove = val; }
|
|
||||||
float GetUpMove() { return upmove; }
|
|
||||||
void SetUpMove( float val ) { upmove = val; }
|
|
||||||
|
|
||||||
int GetButtons() { return buttons; }
|
|
||||||
void SetButtons( int val ) { buttons = val; }
|
|
||||||
int GetImpulse() { return impulse; }
|
|
||||||
void SetImpulse( int val ) { impulse = val; }
|
|
||||||
|
|
||||||
int GetWeaponSelect() { return weaponselect; }
|
|
||||||
void SetWeaponSelect( int val ) { weaponselect = val; }
|
|
||||||
int GetWeaponSubtype() { return weaponsubtype; }
|
|
||||||
void SetWeaponSubtype( int val ) { weaponsubtype = val; }
|
|
||||||
|
|
||||||
int GetRandomSeed() { return random_seed; }
|
|
||||||
|
|
||||||
int GetMouseX() { return mousedx; }
|
|
||||||
void SetMouseX( int val ) { mousedx = val; }
|
|
||||||
int GetMouseY() { return mousedy; }
|
|
||||||
void SetMouseY( int val ) { mousedy = val; }
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// For matching server and client commands for debugging
|
// For matching server and client commands for debugging
|
||||||
int command_number;
|
int command_number;
|
||||||
|
|
||||||
|
@ -961,30 +961,6 @@ struct surfacedata_t
|
|||||||
surfacegameprops_t game; // Game data / properties
|
surfacegameprops_t game; // Game data / properties
|
||||||
|
|
||||||
surfacesoundhandles_t soundhandles;
|
surfacesoundhandles_t soundhandles;
|
||||||
|
|
||||||
#ifdef MAPBASE_VSCRIPT
|
|
||||||
// These functions are for the VScript class description.
|
|
||||||
|
|
||||||
float GetFriction() { return physics.friction; }
|
|
||||||
float GetThickness() { return physics.thickness; }
|
|
||||||
|
|
||||||
float GetJumpFactor() { return game.jumpFactor; }
|
|
||||||
char GetMaterialChar() { return game.material; }
|
|
||||||
|
|
||||||
#if defined(CLIENT_DLL) || defined(GAME_DLL)
|
|
||||||
const char* GetSoundStepLeft();
|
|
||||||
const char* GetSoundStepRight();
|
|
||||||
const char* GetSoundImpactSoft();
|
|
||||||
const char* GetSoundImpactHard();
|
|
||||||
const char* GetSoundScrapeSmooth();
|
|
||||||
const char* GetSoundScrapeRough();
|
|
||||||
const char* GetSoundBulletImpact();
|
|
||||||
const char* GetSoundRolling();
|
|
||||||
const char* GetSoundBreak();
|
|
||||||
const char* GetSoundStrain();
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#define VPHYSICS_SURFACEPROPS_INTERFACE_VERSION "VPhysicsSurfaceProps001"
|
#define VPHYSICS_SURFACEPROPS_INTERFACE_VERSION "VPhysicsSurfaceProps001"
|
||||||
|
Loading…
Reference in New Issue
Block a user