summaryrefslogtreecommitdiff
path: root/cheat/gmod/CLuaInterface.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'cheat/gmod/CLuaInterface.hpp')
-rw-r--r--cheat/gmod/CLuaInterface.hpp246
1 files changed, 246 insertions, 0 deletions
diff --git a/cheat/gmod/CLuaInterface.hpp b/cheat/gmod/CLuaInterface.hpp
new file mode 100644
index 0000000..adc0f7b
--- /dev/null
+++ b/cheat/gmod/CLuaInterface.hpp
@@ -0,0 +1,246 @@
+#pragma once
+
+#include <cstdint>
+#include <string>
+
+#include "vector.hpp"
+#include "color.hpp"
+
+#define LUA_REGISTRYINDEX (-10000)
+#define LUA_ENVIRONINDEX (-10001)
+#define LUA_GLOBALSINDEX (-10002)
+
+class CLuaInterface;
+
+enum STATE_TYPE
+{
+ LUA_CLIENT = 0,
+ LUA_SERVER,
+ LUA_MENU
+};
+
+
+enum LUA_SPECIAL
+{
+ SPECIAL_GLOB,
+ SPECIAL_ENV,
+ SPECIAL_REG,
+};
+
+
+enum LUA_TYPE : int8_t {
+ TYPE_INVALID = -1,
+ TYPE_NIL,
+ TYPE_BOOL,
+ TYPE_LIGHTUSERDATA,
+ TYPE_NUMBER,
+ _TYPE_STRING,
+ TYPE_TABLE,
+ TYPE_FUNCTION,
+ TYPE_USERDATA,
+ TYPE_THREAD,
+
+ TYPE_ENTITY,
+ TYPE_VECTOR,
+ TYPE_ANGLE,
+ TYPE_PHYSOBJ,
+ TYPE_SAVE,
+ TYPE_RESTORE,
+ TYPE_DAMAGEINFO,
+ TYPE_EFFECTDATA,
+ TYPE_MOVEDATA,
+ TYPE_RECIPIENTFILTER,
+ TYPE_USERCMD,
+ TYPE_SCRIPTEDVEHICLE,
+
+ TYPE_MATERIAL,
+ TYPE_PANEL,
+ TYPE_PARTICLE,
+ TYPE_PARTICLEEMITTER,
+ TYPE_TEXTURE,
+ TYPE_USERMSG,
+
+ TYPE_CONVAR,
+ TYPE_IMESH,
+ TYPE_MATRIX,
+ TYPE_SOUND,
+ TYPE_PIXELVISHANDLE,
+ TYPE_DLIGHT,
+ TYPE_VIDEO,
+ TYPE_FILE,
+
+ TYPE_COUNT,
+
+ TYPE_PLAYER = TYPE_ENTITY,
+};
+
+struct lua_State
+{
+ uint8_t header[ 69 ];
+ CLuaInterface* m_lua_base;
+};
+
+struct UserData
+{
+ void* data;
+ LUA_TYPE type;
+};
+
+using CLuaFunction = int( __cdecl* )( lua_State* );
+
+class CLuaInterface
+{
+public:
+ virtual int Top( void ) = 0;
+ virtual void Push( int iStackPos ) = 0;
+ virtual void Pop( int iAmt = 1 ) = 0;
+ virtual void GetTable( int iStackPos ) = 0;
+ virtual void GetField( int iStackPos, const char* strName ) = 0;
+ virtual void SetField( int iStackPos, const char* strName ) = 0;
+ virtual void CreateTable( ) = 0;
+ virtual void SetTable( int i ) = 0;
+ virtual void SetMetaTable( int i ) = 0;
+ virtual bool GetMetaTable( int i ) = 0;
+ virtual void Call( int iArgs, int iResults ) = 0;
+ virtual int PCall( int iArgs, int iResults, int iErrorFunc ) = 0;
+ virtual int Equal( int iA, int iB ) = 0;
+ virtual int RawEqual( int iA, int iB ) = 0;
+ virtual void Insert( int iStackPos ) = 0;
+ virtual void Remove( int iStackPos ) = 0;
+ virtual int Next( int iStackPos ) = 0;
+ virtual void* NewUserdata( unsigned int iSize ) = 0;
+ virtual void ThrowError( const char* strError ) = 0;
+ virtual void CheckType( int iStackPos, int iType ) = 0;
+ virtual void ArgError( int iArgNum, const char* strMessage ) = 0;
+ virtual void RawGet( int iStackPos ) = 0;
+ virtual void RawSet( int iStackPos ) = 0;
+
+ virtual const char* GetString( int iStackPos = -1, unsigned int* iOutLen = NULL ) = 0;
+ virtual double GetNumber( int iStackPos = -1 ) = 0;
+ virtual bool GetBool( int iStackPos = -1 ) = 0;
+ virtual CLuaFunction* GetCFunction( int iStackPos = -1 ) = 0;
+ virtual void* GetUserdata( int iStackPos = -1 ) = 0;
+
+ virtual void PushNil( ) = 0;
+ virtual void PushString( const char* val, unsigned int iLen = 0 ) = 0;
+ virtual void PushNumber( double val ) = 0;
+ virtual void PushBool( bool val ) = 0;
+ virtual void PushCFunction( CLuaFunction* val ) = 0;
+ virtual void PushCClosure( CLuaFunction* val, int iVars ) = 0;
+ virtual void PushUserdata( void* ) = 0;
+
+ //
+ // If you create a reference - don't forget to free it!
+ //
+ virtual int ReferenceCreate( ) = 0;
+ virtual void ReferenceFree( int i ) = 0;
+ virtual void ReferencePush( int i ) = 0;
+
+ //
+ // Push a special value onto the top of the stack ( see below )
+ //
+ virtual void PushSpecial( int iType ) = 0;
+
+ //
+ // For type enums see Types.h
+ //
+ virtual bool IsType( int iStackPos, int iType ) = 0;
+ virtual int GetType( int iStackPos ) = 0;
+ virtual const char* GetTypeName( int iType ) = 0;
+
+ //
+ // Creates a new meta table of string and type and leaves it on the stack.
+ // Will return the old meta table of this name if it already exists.
+ //
+ virtual void CreateMetaTableType( const char* strName, int iType ) = 0;
+
+ //
+ // Like Get* but throws errors and returns if they're not of the expected type
+ //
+ virtual const char* CheckString( int iStackPos = -1 ) = 0;
+ virtual double CheckNumber( int iStackPos = -1 ) = 0;
+
+
+ virtual void ObjLen( int ) = 0;
+ virtual void GetAngle( int ) = 0;
+ virtual void GetVector( int ) = 0;
+ virtual void PushAngle( vec3_t const& ) = 0;
+ virtual void PushVector( vec3_t const& ) = 0;
+ virtual void SetState( lua_State * ) = 0;
+ virtual void CreateMetaTable( char const* ) = 0;
+ virtual void PushMetaTable( int ) = 0;
+ virtual void PushUserType( void *, int ) = 0;
+ virtual void SetUserType( int, void * ) = 0;
+ virtual void Init( void *, bool ) = 0;
+ virtual void Shutdown( void ) = 0;
+ virtual void Cycle( void ) = 0;
+ virtual void Global( void ) = 0;
+ virtual void* GetObject( int ) = 0;
+ virtual void PushLuaObject( void * ) = 0;
+ virtual void PushLuaFunction( CLuaFunction ) = 0;
+ virtual void LuaError( char const*, int ) = 0;
+ virtual void TypeError( char const*, int ) = 0;
+ virtual void CallInternal( int, int ) = 0;
+ virtual void CallInternalNoReturns( int ) = 0;
+ virtual void CallInternalGetBool( int ) = 0;
+ virtual void CallInternalGetString( int ) = 0;
+ virtual void CallInternalGet( int, void * ) = 0;
+ virtual void NewGlobalTable( char const* ) = 0;
+ virtual void NewTemporaryObject( void ) = 0;
+ virtual void isUserData( int ) = 0;
+ virtual void GetMetaTableObject( char const*, int ) = 0;
+ virtual void GetMetaTableObject( int ) = 0;
+ virtual void GetReturn( int ) = 0;
+ virtual void IsServer( void ) = 0;
+ virtual void IsClient( void ) = 0;
+ virtual void IsDedicatedServer( void ) = 0;
+ virtual void DestroyObject( void * ) = 0;
+ virtual void CreateObject( void ) = 0;
+ virtual void SetMember( void *, void *, void * ) = 0;
+ virtual void GetNewTable( void ) = 0;
+ virtual void SetMember( void *, float ) = 0;
+ virtual void SetMember( void *, float, void * ) = 0;
+ virtual void SetMember( void *, char const* ) = 0;
+ virtual void SetMember( void *, char const*, void * ) = 0;
+ virtual void SetIsServer( bool ) = 0;
+ virtual void PushLong( long ) = 0;
+ virtual void GetFlags( int ) = 0;
+ virtual void FindOnObjectsMetaTable( int, int ) = 0;
+ virtual void FindObjectOnTable( int, int ) = 0;
+ virtual void SetMemberFast( void *, int, int ) = 0;
+ virtual void RunString( char const* filename, char const* path, char const* stringtoun, bool run = true, bool showerrors = true ) = 0;
+ virtual void IsEqual( void *, void * ) = 0;
+ virtual void Error( char const* ) = 0;
+ virtual void GetStringOrError( int ) = 0;
+ virtual void RunLuaModule( char const* ) = 0;
+ virtual void FindAndRunScript( const char* path, bool run = true, bool showerrors = true, const char* type = "!CLIENT" ) = 0;
+ virtual void SetPathID( char const* ) = 0;
+ virtual void GetPathID( void ) = 0;
+ virtual void ErrorNoHalt( char const*, ... ) = 0;
+ virtual void Msg( char const*, ... ) = 0;
+ virtual void PushPath( char const* ) = 0;
+ virtual void PopPath( void ) = 0;
+ virtual void GetPath( void ) = 0;
+ virtual void GetColor( int ) = 0;
+ virtual void PushColor( clr_t ) = 0;
+ virtual int GetStack( int, void * ) = 0;
+ virtual void GetInfo( char const*, void * ) = 0;
+ virtual void GetLocal( void *, int ) = 0;
+ virtual void GetUpvalue( int, int ) = 0;
+ virtual void RunStringEx( void*, char const* filename, char const* path, char const* torun, bool run, bool showerrors, bool idk, bool idk2 ) = 0;
+ virtual void GetDataString( int, void ** ) = 0;
+ virtual void ErrorFromLua( char const*, ... ) = 0;
+ virtual void GetCurrentLocation( void ) = 0;
+ virtual void MsgColour( clr_t const&, char const*, ... ) = 0;
+ virtual void GetCurrentFile( std::string & ) = 0;
+ virtual void CompileString( int &, std::string const& ) = 0;
+ virtual void CallFunctionProtected( int, int, bool ) = 0;
+ virtual void Require( char const* ) = 0;
+ virtual void GetActualTypeName( int ) = 0;
+ virtual void PreCreateTable( int, int ) = 0;
+ virtual void PushPooledString( int ) = 0;
+ virtual void GetPooledString( int ) = 0;
+ virtual void AddThreadedCall( void * ) = 0;
+
+ lua_State* L;
+};