Advertisement
Guest User

lua_shared.h

a guest
Mar 15th, 2015
1,241
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 14.57 KB | None | 0 0
  1. #ifndef __GLua_H__
  2. #define __GLua_H__
  3.  
  4. #define LUA_FUNCTION(_func_)    int _func_(lua_State* state)
  5. #define LUA state->luabase
  6. #define _G  -10002
  7.  
  8. #ifdef GMMODULE
  9. #ifdef _WIN32
  10. #define  DLL_EXPORT extern "C" __declspec( dllexport )
  11. #else
  12. #define DLL_EXPORT  extern "C" __attribute__((visibility("default")))  
  13. #endif
  14. #define GMOD_MODULE_OPEN() DLL_EXPORT int gmod13_open(lua_State* state)
  15. #define GMOD_MODULE_CLOSE() DLL_EXPORT int gmod13_close(lua_State* state)
  16. #endif
  17.  
  18. class CBaseLuaInterface;
  19. class ILuaObject;
  20. class ILuaBase;
  21.  
  22. class lua_State
  23. {
  24. public:
  25.     char        header[69];
  26.     ILuaBase*   luabase;
  27. };
  28.  
  29. class UserData
  30. {
  31. public:
  32.     void*           data;
  33.     unsigned char   type;
  34. };
  35.  
  36. enum
  37. {
  38.     LUA_CLIENT = 0,
  39.     LUA_SERVER = 1,
  40.     LUA_MENU = 2
  41. };
  42.  
  43. enum
  44. {
  45.     SPECIAL_GLOB,
  46.     SPECIAL_ENV,
  47.     SPECIAL_REG,
  48. };
  49.  
  50. enum
  51. {
  52.     TYPE_INVALID = -1,
  53.     TYPE_NIL,
  54.     TYPE_BOOL,
  55.     TYPE_LIGHTUSERDATA,
  56.     TYPE_NUMBER,
  57.     TYPE_STRING,
  58.     TYPE_TABLE,
  59.     TYPE_FUNCTION,
  60.     TYPE_USERDATA,
  61.     TYPE_THREAD,
  62.  
  63.     TYPE_ENTITY,
  64.     TYPE_VECTOR,
  65.     TYPE_ANGLE,
  66.     TYPE_PHYSOBJ,
  67.     TYPE_SAVE,
  68.     TYPE_RESTORE,
  69.     TYPE_DAMAGEINFO,
  70.     TYPE_EFFECTDATA,
  71.     TYPE_MOVEDATA,
  72.     TYPE_RECIPIENTFILTER,
  73.     TYPE_USERCMD,
  74.     TYPE_SCRIPTEDVEHICLE,
  75.  
  76.     TYPE_MATERIAL,
  77.     TYPE_PANEL,
  78.     TYPE_PARTICLE,
  79.     TYPE_PARTICLEEMITTER,
  80.     TYPE_TEXTURE,
  81.     TYPE_USERMSG,
  82.  
  83.     TYPE_CONVAR,
  84.     TYPE_IMESH,
  85.     TYPE_MATRIX,
  86.     TYPE_SOUND,
  87.     TYPE_PIXELVISHANDLE,
  88.     TYPE_DLIGHT,
  89.     TYPE_VIDEO,
  90.     TYPE_FILE,
  91.  
  92.     TYPE_PLAYER = TYPE_ENTITY,
  93. };
  94.  
  95. static char* lua_typename[] =
  96. {
  97.     "nil",
  98.     "bool",
  99.     "lightuserdata",
  100.     "number",
  101.     "string",
  102.     "table",
  103.     "function",
  104.     "userdata",
  105.     "thread",
  106.     "entity",
  107.     "vector",
  108.     "angle",
  109.     "physobj",
  110.     "save",
  111.     "restore",
  112.     "damageinfo",
  113.     "effectdata",
  114.     "movedata",
  115.     "recipientfilter",
  116.     "usercmd",
  117.     "vehicle",
  118.     "material",
  119.     "panel",
  120.     "particle",
  121.     "particleemitter",
  122.     "texture",
  123.     "usermsg",
  124.     "convar",
  125.     "mesh",
  126.     "matrix",
  127.     "sound",
  128.     "pixelvishandle",
  129.     "dlight",
  130.     "video",
  131.     "file"
  132. };
  133.  
  134. typedef int(*CFunc) (lua_State* state);
  135.  
  136. class HLuaError;
  137. class CLuaGameCallback
  138. {
  139. private:
  140.     virtual ILuaObject* CLuaGameCallback::CreateLuaObject(void) = 0;
  141.     virtual void CLuaGameCallback::DestroyLuaObject(ILuaObject *) = 0;
  142.     virtual void CLuaGameCallback::ErrorPrint(char  const*, bool) = 0;
  143.     virtual void CLuaGameCallback::Msg(char  const*, bool) = 0;
  144.     virtual void CLuaGameCallback::MsgColour(char  const* Color) = 0; //Color const&
  145.     virtual void CLuaGameCallback::LuaError(HLuaError *) = 0;
  146.     virtual void CLuaGameCallback::InterfaceCreated(CBaseLuaInterface *) = 0;
  147. };
  148.  
  149. class CBaseLuaInterface
  150. {
  151. public:
  152.     virtual void*   Top(void) = 0;  // 0
  153.     virtual void*   Push(int) = 0;  // 1
  154.     virtual void*   Pop(int stackpos = 1) = 0;  // 2
  155.     virtual void*   GetTable(int) = 0;  // 3
  156.     virtual void*   GetField(int, char  const*) = 0;    // 4
  157.     virtual void*   SetField(int, char  const*) = 0;    // 5
  158.     virtual void*   CreateTable(void) = 0;  // 6
  159.     virtual void*   SetTable(int) = 0;  // 7
  160.     virtual void*   SetMetaTable(int) = 0;  // 8
  161.     virtual ILuaObject* GetMetaTable(int) = 0;  // 9
  162.     virtual void*   Call(int, int) = 0; // 10
  163.     virtual void*   PCall(int, int, int) = 0;   // 11
  164.     virtual void*   Equal(int, int) = 0;    // 12
  165.     virtual void*   RawEqual(int, int) = 0; // 13
  166.     virtual void*   Insert(int) = 0;    // 14
  167.     virtual void*   Remove(int) = 0;    // 15
  168.     virtual void*   Next(int) = 0;  // 16
  169.     virtual void*   NewUserdata(unsigned int) = 0;  // 17
  170.     virtual void*   ThrowError(char  const*) = 0;   // 18
  171.     virtual void*   CheckType(int, int) = 0;    // 19
  172.     virtual void*   ArgError(int, char  const*) = 0;    // 20
  173.     virtual void*   RawGet(int) = 0;    // 21
  174.     virtual void*   RawSet(int) = 0;    // 22
  175.     virtual const char* GetString(int, unsigned int *) = 0; // 23
  176.     virtual double  GetNumber(int) = 0; // 24
  177.     virtual bool    GetBool(int) = 0;   // 25
  178.     virtual CFunc   GetCFunction(int) = 0;  // 26
  179.     virtual void*   GetUserdata(int) = 0;   // 27
  180.     virtual void    PushNil(void) = 0;  // 28
  181.     virtual void    PushString(char  const*, unsigned int iLen = 0) = 0;    // 29
  182.     virtual void    PushNumber(double) = 0; // 30
  183.     virtual void    PushBool(bool) = 0; // 31
  184.     virtual void    PushCFunction(CFunc) = 0;   // 32
  185.     virtual void    PushCClosure(CFunc, int) = 0;   // 33
  186.     virtual void    PushUserdata(void*) = 0;    // 34
  187.     virtual void*   ReferenceCreate(void) = 0;  // 35
  188.     virtual void*   ReferenceFree(int) = 0; // 36
  189.     virtual void*   ReferencePush(int) = 0; // 37
  190.     virtual void*   PushSpecial(int) = 0;   // 38
  191.     virtual void*   IsType(int, int) = 0;   // 39
  192.     virtual void*   GetType(int) = 0;   // 40
  193.     virtual void*   GetTypeName(int) = 0;   // 41
  194.     virtual void*   CreateMetaTableType(char  const*, int) = 0; // 42
  195.     virtual void*   CheckString(int) = 0;   // 43
  196.     virtual void*   CheckNumber(int) = 0;   // 44
  197.     virtual void*   ObjLen(int) = 0;    // 45
  198.     virtual void*   AddThreadedCall(void*) = 0; // 46
  199.     virtual void*   Init(void *, bool) = 0; // 47
  200.     virtual void*   Shutdown(void) = 0; // 48
  201.     virtual void*   Cycle(void) = 0;    // 49
  202.     virtual lua_State*  GetLuaState(void) = 0;  // 50
  203.     virtual void*   Global(void) = 0;   // 51
  204.     virtual ILuaObject* GetObject(int) = 0; // 52
  205.     virtual void*   DELETE_ME_5437(int) = 0;    // 53
  206.     virtual void*   _DELETE_ME2466(int) = 0;    // 54
  207.     virtual void*   PushLuaObject(ILuaObject *) = 0;    // 55
  208.     virtual void*   PushLuaFunction(CFunc) = 0; // 56
  209.     virtual void*   LuaError(char  const*, int) = 0;    // 57
  210.     virtual void*   TypeError(char  const*, int) = 0;   // 58
  211.     virtual void*   CallInternal(int, int) = 0; // 59
  212.     virtual void*   CallInternalNoReturns(int) = 0; // 60
  213.     virtual void*   CallInternalGetBool(int) = 0;   // 61
  214.     virtual void*   CallInternalGetString(int) = 0; // 62
  215.     virtual void*   CallInternalGet(int, ILuaObject *) = 0; // 63
  216.     virtual void*   _DELETE_ME(ILuaObject *, void *) = 0;   // 64
  217.     virtual void*   NewGlobalTable(char  const*) = 0;   // 65
  218.     virtual void*   NewTemporaryObject(void) = 0;   // 66
  219.     virtual void*   isUserData(int) = 0;    // 67
  220.     virtual void*   GetMetaTableObject(char  const*, int) = 0;  // 68
  221.     virtual void*   GetMetaTableObject(int) = 0;    // 69
  222.     virtual void*   GetReturn(int) = 0; // 70
  223.     virtual void*   IsServer(void) = 0; // 71
  224.     virtual void*   IsClient(void) = 0; // 72
  225.     virtual void*   IsDedicatedServer(void) = 0;    // 73
  226.     virtual void*   DestroyObject(ILuaObject *) = 0;    // 74
  227.     virtual void*   CreateObject(void) = 0; // 75
  228.     virtual void*   SetMember(ILuaObject *, ILuaObject *, ILuaObject *) = 0;    // 76
  229.     virtual void*   GetNewTable(void) = 0;  // 77
  230.     virtual void*   SetMember(ILuaObject *, float) = 0; // 78
  231.     virtual void*   SetMember(ILuaObject *, float, ILuaObject *) = 0;   // 79
  232.     virtual void*   SetMember(ILuaObject *, char  const*) = 0;  // 80
  233.     virtual void*   SetMember(ILuaObject *, char  const*, ILuaObject *) = 0;    // 81
  234.     virtual void*   SetIsServer(bool) = 0;  // 82
  235.     virtual void*   PushLong(long) = 0; // 83
  236.     virtual void*   GetFlags(int) = 0;  // 84
  237.     virtual void*   FindOnObjectsMetaTable(int, int) = 0;   // 85
  238.     virtual void*   FindObjectOnTable(int, int) = 0;    // 86
  239.     virtual void*   SetMemberFast(ILuaObject *, int, int) = 0;  // 87
  240.     virtual void*   RunString(char  const*, char  const*, char  const*, bool, bool) = 0;    // 88
  241.     virtual void*   IsEqual(ILuaObject *, ILuaObject *) = 0;    // 89
  242.     virtual void*   Error(char  const*) = 0;    // 90
  243.     virtual void*   GetStringOrError(int) = 0;  // 91
  244.     virtual void*   RunLuaModule(char  const*) = 0; // 92
  245.     virtual void*   FindAndRunScript(char  const*, bool, bool, char  const*) = 0;   // 93
  246.     virtual void*   SetPathID(char  const*) = 0;    // 94
  247.     virtual void*   GetPathID(void) = 0;    // 95
  248.     virtual void*   ErrorNoHalt(char  const*, ...) = 0; // 96
  249.     virtual void*   Msg(char  const*, ...) = 0; // 97
  250.     virtual void*   PushPath(char  const*) = 0; // 98
  251.     virtual void*   PopPath(void) = 0;  // 99
  252.     virtual void*   GetPath(void) = 0;  // 100
  253.     virtual void*   GetColor(int) = 0;  // 101
  254.     virtual void*   PushColor(int, int, int, int) = 0;  // 102
  255.     virtual void*   GetStack(int, void *) = 0;  // 103
  256.     virtual void*   GetInfo(char  const*, void *) = 0;  // 104
  257.     virtual void*   GetLocal(void *, int) = 0;  // 105
  258.     virtual void*   GetUpvalue(int, int) = 0;   // 106
  259.     virtual void*   RunStringEx(char  const*, char  const*, char  const*, bool, bool, bool) = 0;    // 107
  260.     virtual void*   DELETE_ME1(char  const*, int) = 0;  // 108
  261.     virtual void*   GetDataString(int, void **) = 0;    // 109
  262.     virtual void*   ErrorFromLua(char  const*, ...) = 0;    // 110
  263.     virtual void*   GetCurrentLocation(void) = 0;   // 111
  264.     virtual void*   MsgColour(void*, char  const*, ...) = 0;    // 112
  265.     virtual void*   SetState(lua_State *) = 0;  // 113
  266.     virtual void*   DELETE_ME2(void) = 0;   // 114
  267.     virtual void*   GetCurrentFile(char &) = 0; // 115
  268.     virtual void*   CompileString(void*, char const&) = 0;  // 116
  269.     virtual void*   ThreadLock(void) = 0;   // 117
  270.     virtual void*   ThreadUnlock(void) = 0; // 118
  271.     virtual void*   CallFunctionProtected(int, int, bool) = 0;  // 119
  272.     virtual void*   Require(char  const*) = 0;  // 120
  273.     virtual void*   GetActualTypeName(int) = 0; // 121
  274.     virtual void*   SetupInfiniteLoopProtection(void) = 0;  // 122
  275.     CLuaGameCallback *m_pCallback;
  276. };
  277.  
  278. class CLuaShared
  279. {
  280. public:
  281.     virtual void *CLuaShared::Init(void * (*)(char  const*, int *), bool, void *, void *); // 0
  282.     virtual void *CLuaShared::Shutdown(void); // 1
  283.     virtual void *CLuaShared::DumpStats(void); // 2
  284.     virtual void *CLuaShared::CreateLuaInterface(unsigned char, bool); // 3
  285.     virtual void *CLuaShared::CloseLuaInterface(CBaseLuaInterface *);
  286.     virtual void padding00() = 0;
  287.     virtual CBaseLuaInterface *CLuaShared::GetLuaInterface(unsigned char);
  288.     virtual void *CLuaShared::LoadFile(std::string  const&, std::string  const&, bool, bool);
  289.     virtual void *CLuaShared::GetCache(std::string  const&);
  290.     virtual void *CLuaShared::MountLua(char  const*);
  291.     virtual void *CLuaShared::MountLuaAdd(char  const*, char  const*);
  292.     virtual void *CLuaShared::UnMountLua(char  const*);
  293.     virtual void *CLuaShared::SetFileContents(char  const*, char  const*);
  294.     virtual void *CLuaShared::SetLuaFindHook(void *);
  295.     virtual void padding01() = 0;
  296. };
  297.  
  298. class ILuaBase
  299. {
  300. public:
  301.     virtual int         Top(void) = 0;
  302.     virtual void        Push(int iStackPos) = 0;
  303.     virtual void        Pop(int iAmt = 1) = 0;
  304.     virtual void*       GetTable(int iStackPos) = 0;
  305.     virtual void        GetField(int iStackPos, const char* strName) = 0;
  306.     virtual void        SetField(int iStackPos, const char* strName) = 0;
  307.     virtual void        CreateTable() = 0;
  308.     virtual void        SetTable(int i) = 0;
  309.     virtual void        SetMetaTable(int i) = 0;
  310.     virtual bool        GetMetaTable(int i) = 0;
  311.     virtual void        Call(int iArgs, int iResults) = 0;
  312.     virtual int         PCall(int iArgs, int iResults, int iErrorFunc) = 0;
  313.     virtual int         Equal(int iA, int iB) = 0;
  314.     virtual int         RawEqual(int iA, int iB) = 0;
  315.     virtual void        Insert(int iStackPos) = 0;
  316.     virtual void        Remove(int iStackPos) = 0;
  317.     virtual int         Next(int iStackPos) = 0;
  318.     virtual void*       NewUserdata(unsigned int iSize) = 0;
  319.     virtual void        ThrowError(const char* strError) = 0;
  320.     virtual void        CheckType(int iStackPos, int iType) = 0;
  321.     virtual void        ArgError(int iArgNum, const char* strMessage) = 0;
  322.     virtual void        RawGet(int iStackPos) = 0;
  323.     virtual void        RawSet(int iStackPos) = 0;
  324.     virtual const char*     GetString(int iStackPos = -1, unsigned int* iOutLen = NULL) = 0;
  325.     virtual double          GetNumber(int iStackPos = -1) = 0;
  326.     virtual bool            GetBool(int iStackPos = -1) = 0;
  327.     virtual CFunc           GetCFunction(int iStackPos = -1) = 0;
  328.     virtual void*           GetUserdata(int iStackPos = -1) = 0;
  329.     virtual void        PushNil() = 0;
  330.     virtual void        PushString(const char* val, unsigned int iLen = 0) = 0;
  331.     virtual void        PushNumber(double val) = 0;
  332.     virtual void        PushBool(bool val) = 0;
  333.     virtual void        PushCFunction(CFunc val) = 0;
  334.     virtual void        PushCClosure(CFunc val, int iVars) = 0;
  335.     virtual void        PushUserdata(void*) = 0;
  336.     virtual int         ReferenceCreate() = 0;
  337.     virtual void        ReferenceFree(int i) = 0;
  338.     virtual void        ReferencePush(int i) = 0;
  339.     virtual void        PushSpecial(int iType) = 0;
  340.     virtual bool            IsType(int iStackPos, int iType) = 0;
  341.     virtual int             GetType(int iStackPos) = 0;
  342.     virtual const char*     GetTypeName(int iType) = 0;
  343.     virtual void            CreateMetaTableType(const char* strName, int iType) = 0;
  344.     virtual const char*     CheckString(int iStackPos = -1) = 0;
  345.     virtual double          CheckNumber(int iStackPos = -1) = 0; //44
  346.     virtual void            unk45(void) = 0;
  347.     virtual void            unk46(void) = 0;
  348.     virtual void            unk47(void) = 0;
  349.     virtual void            unk48(void) = 0;
  350.     virtual void            unk49(void) = 0;
  351.     virtual void            unk50(void) = 0;
  352.     virtual void            unk51(void) = 0;
  353.     virtual void            unk52(void) = 0;
  354.     virtual void            unk53(void) = 0;
  355.     virtual void            unk54(void) = 0;
  356.     virtual void            unk55(void) = 0;
  357.     virtual void            unk56(void) = 0;
  358.     virtual void            unk57(void) = 0;
  359.     virtual void            unk58(void) = 0;
  360.     virtual void            unk59(void) = 0;
  361.     virtual void            unk60(void) = 0;
  362.     virtual void            unk61(void) = 0;
  363.     virtual void            unk62(void) = 0;
  364.     virtual void            unk63(void) = 0;
  365.     virtual void            unk64(void) = 0;
  366.     virtual void            unk65(void) = 0;
  367.     virtual void            unk66(void) = 0;
  368.     virtual void            unk67(void) = 0;
  369.     virtual void            unk68(void) = 0;
  370.     virtual void            unk69(void) = 0;
  371.     virtual void            unk70(void) = 0;
  372.     virtual void            unk71(void) = 0;
  373.     virtual void            unk72(void) = 0;
  374.     virtual void            unk73(void) = 0;
  375.     virtual void            unk74(void) = 0;
  376.     virtual void            unk75(void) = 0;
  377.     virtual void            unk76(void) = 0;
  378.     virtual void            unk77(void) = 0;
  379.     virtual void            unk78(void) = 0;
  380.     virtual void            unk79(void) = 0;
  381.     virtual void            unk80(void) = 0;
  382.     virtual void            unk81(void) = 0;
  383.     virtual void            unk82(void) = 0;
  384.     virtual void            unk83(void) = 0;
  385.     virtual void            unk84(void) = 0;
  386.     virtual void            unk85(void) = 0;
  387.     virtual void            unk86(void) = 0;
  388.     virtual void            unk87(void) = 0;
  389.     virtual bool            RunString(const char* pszFilename, const char* pszPath, const char* pszStringToRun, bool bRun = true, bool bShowErrors = true) = 0;
  390.     virtual void            unk89(void) = 0;
  391.     virtual void            unk90(void) = 0;
  392.     virtual void            unk91(void) = 0;
  393.     virtual void            unk92(void) = 0;
  394.     virtual bool            FindAndRunScript(const char* path, bool bRun = true, bool bShowErrors = true, const char* pszType = "!CLIENT") = 0;
  395.     CLuaGameCallback *m_pCallback;
  396. };
  397.  
  398. #endif
  399.  
  400. //HMODULE LuaShared_modhandle = GetModuleHandle("lua_shared.dll");
  401. //if (LuaShared_modhandle != NULL)
  402. //{
  403. //  typedef void* (*CreateInterfaceFn)(const char *name, int *returncode);
  404. //  CreateInterfaceFn LuaShared_createinter = (CreateInterfaceFn)GetProcAddress(LuaShared_modhandle, "CreateInterface");
  405. //  if (pLuaShared != NULL)
  406. //  {
  407. //      CLuaShared* LuaShared = (CLuaShared*)LuaShared_createinter("LUASHARED003", NULL);
  408. //      if (LuaShared != NULL)
  409. //      {
  410. //          CBaseLuaInterface* ClientLua = LuaShared->GetLuaInterface(LUA_CLIENT);
  411. //          if (ClientLua != NULL)
  412. //          {
  413. //              lua_state* state = ClientLua->GetLuaState();
  414. //             
  415. //              // Do your shit here.
  416. //              // Use ClientLua to interact with the Lua Interface.
  417. //              // Use LUA to interact with the Lua State. Same way modules interact with it. Example: LUA->PushNumber(1)
  418. //          }
  419. //      }
  420. //  }
  421. //}
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement