From d4a67061d20b1ca2ce075305e2a08a9ee17b40f0 Mon Sep 17 00:00:00 2001 From: RadWolfie Date: Thu, 9 Jan 2014 14:28:37 -0600 Subject: [PATCH] Add-on API 3.1 --- Add-on API.h | 10 ++-- Add-on API.lib | Bin 47074 -> 11594 bytes admin.h | 25 +++------ command.h | 16 +++--- database.h | 90 ++++++++++++------------------ haloEngine.h | 102 +++++++++++++++++----------------- iniFile.h | 46 ++++++---------- object.h | 23 +++----- player.h | 43 +++++++-------- struct.h | 105 ++++++++++++++++++----------------- util.h | 145 ++++++++++++++++++++++++++++--------------------- 11 files changed, 290 insertions(+), 315 deletions(-) diff --git a/Add-on API.h b/Add-on API.h index 077e99e..511a7da 100644 --- a/Add-on API.h +++ b/Add-on API.h @@ -19,7 +19,7 @@ #include "database.h" #include "object.h" #include "player.h" -typedef toggle (WINAPIC *CmdFunc)(Player::PlayerInfo plI, util::ArgContainer arg,char chatRconRemote, short stage, LPVOID stack, bool* showChat); +typedef toggle (WINAPIC *CmdFunc)(IPlayer::PlayerInfo plI, util::ArgContainer arg,char chatRconRemote, short stage, LPVOID stack, bool* showChat); #include "admin.h" #include "command.h" @@ -76,10 +76,10 @@ namespace addon { } extern "C" dllAPI addon::versionEAO EXTversion = { sizeof(addon::versionEAO), //size - 3, //requiredAPI (required) - 3, //general (optional, set to 0 if not using) - 1, //iniFile (optional, set to 0 if not using) - 2, //database (optional, set to 0 if not using) + 4, //requiredAPI (required) + 4, //general (optional, set to 0 if not using) + 2, //iniFile (optional, set to 0 if not using) + 3, //database (optional, set to 0 if not using) 0, //external (optional, set to 0 if not using) 0, //reserved 0 }; //reserved diff --git a/Add-on API.lib b/Add-on API.lib index 6a7fe15bb88a145644c6115fef0b20ba85933ebb..14d8ae9789e36c0d2ed55351207fdce69cc69f72 100644 GIT binary patch literal 11594 zcmcIqOH3R`8ve02_69o%YsX&vWQ?%^gE5Z*+pCplhL=IX-~hHGE7D|O8kpUApka{M zDAG!nmD4K9AxGc#l4DMZ6y=aZZjro^_Ow!@jdIE%@+rzKkMHm5dUVfpO}EF4^wIVB zyS}Qw{;K-xZ!Y{bS6$z_)qXAE|BZ~@xH+1M<1 z^E{CY@OA>HIz4=ZCvf_xhsSsVXAXIIgeT)yfwOBwE}r5Eocmbd{4w;C@t#1}G?5F` zcL9kG4|{krz7@DIOXT7cJb~_$9?(uV<9mUNix>yc^OL}(heR&E!V|cB#lweqGJY1g za+=5m#&Cu4qrku_kqhW&02qY+Twv^jkF(kNJ9n3sSF_VID^tt!cUPB|vvXHx_G*;P zF5X*MsIR7fy7i)Vb?)Bc8`=EqGY!$a`JiGsm-B#_htLR{Pz4@u2`8VZx+f9n)l^Ii`(-{YkzarF+!b^HFt}- ze>hdHkttb|$(IUcuJ97FTn%@7UL{4{rc;}ro}8+b%OERM@N#{LDY;TBp-)0aq;>7o ze7P`NC}KohuX3r>aHhHmidqiCt)_Qtg6-Sd!r813My_?BCm^akZ zL@bq>Zro1F?VT~irgE8Lv9f;0DakdZ^D}R)X7c%^@@k>vRFRSr_2s^jX{YGaV64J` z8&=I$s-;}*ey)l^>|pm0qQO#M{y{@2l+IQi$LPMwE<4-B+`6M$*Lg2>ubi(0YrQf< zLh<^`yj-vr`ITCAwK7?$6rEgIH6JK6v#N=kxu zJ18;JLfadKa(-oZ4Gql}syj8X)R#1rL~8*_#khstcWJk_y^FofOpA7O$y{Z}Cn54u zYG-R|%US%cGT)TnBesVyuO%BqBTM`R%;6Y+hvG3B#O zz-fE;IMI_6MBl(Wxpj`{(|)42dx?G+B>E1X)%$%!&wyo=e}VD@(%n5o9{`_UghvE# z>j}_#is&QYD7=!#z@allkAPo+wX;M|fsfJtF|_#}Fx`bb&;jpc5BL_Cy+HH{aIzaR z!1ur+IDP`x!%IY80aq>)eF*#voQ7xg2>20L9YBA81p56LfHO*eqGNQNUZ)dulKxDc zbc#;X8TtdArE_$i{zzSvpbOMZ7paFX(Pe6*1F_%fr9SGX4tkYdqboE(gLIXK=o%fO zqx1^BOzm`pUZP!9U?REJaeAsYF-4sW8_Ash7sZF(j~IP7eP zR>Ko0=&$TLiJ_EHTG54}yeTedzJ%q$4pY@^LRwu>%K)9`sy z*3nEbhU*u_voo9$i{B+X70sWL(oNhYDb~~(5*w?wCXx49P?#eWaC;iwhkRBA!x7E< zO4Y8fEKUe%yAyeBeZG8{Q=^*I_9)&n%~18oEL3lr7HYg3>T(E~fUBS=0_BRucg67( z#AW`=lxSO&o7W}nVo2rck}xMjv}JWBgh-v+U|vepkn~~&aZ+JK6M9NJ~yjWEOm)a$Rs+UyfvjtPl+Kh6gRRmlrI)NH?CR4 zEqPk}4BQob9q-jO&5EIN=`K9W1E31SNB~_Q>j!` zEn1imW(!0-GJ2MD>IE=$*D*cN?dw!Trm>KH4q;5h@pw$$w*jTB_^Zoi;p~oPZ_9v? zCQ+$~WSxX!t-V2{8 z2z>{?^=PHV-v=yA2)6r~%pt{R8g0Deuup=}xi1i@2c%L_E!x7u-j@z{nuB?fEbM2Q zU%gb@@mG%J{9!*f81-mr@3e3YHQ;JVdzKyHHRkfgZuUoiuSgzWc&`O6i`~7dx!jQ9 z{;*tQ79*0?0*mFu9`>`iF|rnzELs~8Oe*@eKP>F2o8NO=U79cmudW6 z)WX77dBtKb(AX?vAr`=)FAh|RIOp^0%H}^E;r3+&Ra3+sL(-xt4(owK{_9jLES9~D z?O{_U rOKW?W<&HMZEb=pnQd0aon$4PLG)HUW2=UDD&%kbMH|u@e(Zl#1?X-%1 literal 47074 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 diff --git a/admin.h b/admin.h index 836742a..c13cdbb 100644 --- a/admin.h +++ b/admin.h @@ -5,25 +5,14 @@ #define LOGINFAIL 0 #define LOGINPASS 1 -extern "C" class dllport Admin { +extern "C" class IAdmin { public: - Admin(); - ~Admin(); - Admin(Admin const &); - short unlimit; - bool reqUser; - bool reqAddr; - bool reqPort; - bool reqLoginAddr; - bool reqLoginPort; - bool reqRemoteAddr; - bool reqRemotePort; - toggle WINAPIC isPlayerAuthorized(Player::PlayerInfo* plI, wchar_t* cmd, util::ArgContainer* arg, CmdFunc* func); - toggle WINAPIC UsernameExist(wchar_t username[]); - toggle WINAPIC Add(wchar_t hashW[], wchar_t IP_Addr[], wchar_t IP_Port[], wchar_t username[],wchar_t password[],short level,bool remote, bool pass_force); - toggle WINAPIC Del(wchar_t username[]); - toggle WINAPIC Login(Player::PlayerInfo& plI, char chatRconRemote, wchar_t user[], wchar_t pass[]); + virtual toggle WINAPIC isPlayerAuthorized(IPlayer::PlayerInfo* plI, const wchar_t* cmd, util::ArgContainer* arg, CmdFunc* func)=0; + virtual toggle WINAPIC UsernameExist(wchar_t username[])=0; + virtual toggle WINAPIC Add(wchar_t hashW[32], wchar_t IP_Addr[15], wchar_t IP_Port[6], wchar_t username[24],wchar_t password[],short level,bool remote, bool pass_force)=0; + virtual toggle WINAPIC Del(wchar_t username[24])=0; + virtual toggle WINAPIC Login(IPlayer::PlayerInfo& plI, char chatRconRemote, wchar_t user[], wchar_t pass[])=0; }; -extern "C" dllport Admin* admin; +extern "C" dllport IAdmin* pIAdmin; #endif \ No newline at end of file diff --git a/command.h b/command.h index 14b0779..1dba650 100644 --- a/command.h +++ b/command.h @@ -7,15 +7,13 @@ struct helpInfo { wchar_t info[4][255]; }; #pragma pack(pop) -extern "C" class Command { +extern "C" class ICommand { public: - Command(); - ~Command(); - dllport bool WINAPIC Add(const wchar_t command[], CmdFunc func, const wchar_t section[], unsigned short min, unsigned short max, bool allowOverride, GAME_MODE_S mode); - dllport bool WINAPIC Del(CmdFunc func, const wchar_t funcName[]); - dllport bool WINAPIC ReloadLevel(); - dllport bool WINAPIC AliasAdd(const wchar_t* command, const wchar_t* alias); - dllport bool WINAPIC AliasDel(const wchar_t* command, const wchar_t* alias); + virtual bool WINAPIC Add(const wchar_t command[], CmdFunc func, const wchar_t section[], unsigned short min, unsigned short max, bool allowOverride, GAME_MODE_S mode)=0; + virtual bool WINAPIC Del(CmdFunc func, const wchar_t funcName[])=0; + virtual bool WINAPIC ReloadLevel()=0; + virtual bool WINAPIC AliasAdd(const wchar_t* command, const wchar_t* alias)=0; + virtual bool WINAPIC AliasDel(const wchar_t* command, const wchar_t* alias)=0; }; -extern "C" dllport Command* command; +extern "C" dllport ICommand* pICommand; #endif \ No newline at end of file diff --git a/database.h b/database.h index 23ff812..6040d62 100644 --- a/database.h +++ b/database.h @@ -1,8 +1,6 @@ #ifndef databaseH #define databaseH -extern const char dbErrorConnectionLost[]; - extern "C" namespace DBSQL { //-- //#pragma comment(lib,"Msvcrt.lib") //Basically bypass the error of vsnprintf... Replace the odbccp32.lib file with vista SDK!!! @@ -18,65 +16,47 @@ extern "C" namespace DBSQL { #define IS_SQL_OK(res) (res==SQL_SUCCESS_WITH_INFO || res==SQL_SUCCESS) #define SAFE_STR(str) ((str==NULL) ? _T("") : str) //-- - void EXTHookDatabaseEnabled(); - void EXTHookDatabaseDisabled(); - bool EXTIsHookDatabase(); - void EXTUnloadDatabase(); - - class dllport DBConnection { + + class IDBConnection { public: - bool WINAPIC Connect(LPCWSTR MDBPath,LPCWSTR User=L"", LPCWSTR Pass=L"",bool Exclusive=0); + virtual bool WINAPIC Connect(LPCWSTR MDBPath,LPCWSTR User=L"", LPCWSTR Pass=L"",bool Exclusive=0)=0; //bool Connect(LPCTSTR svSource); - DBConnection(); - ~DBConnection(); - DBConnection& operator=(DBConnection const&); - void WINAPIC Disconnect(); - void WINAPIC STMTStatus(); - void WINAPIC Check(); - SQLHDBC WINAPIC HDBC() { - return m_hDBC; - } + //static DBConnection& operator=(DBConnection const&); + virtual void WINAPIC Disconnect()=0; + virtual void WINAPIC STMTStatus()=0; + virtual void WINAPIC Check()=0; + virtual SQLHDBC WINAPIC HDBC()=0; + //static IDBConnection dllport WINAPIC getIDBConnection(); private: - SQLRETURN m_nReturn; // Internal SQL Error code - SQLHENV m_hEnv; // Handle to environment - SQLHDBC m_hDBC; // Handle to database connection + //IDBConnection(); + //~IDBConnection(); }; - /*extern "C" class MDBConnection { - };*/ - class dllport DBStmt { - private: - SQLHSTMT m_hStmt; - int m_nStmt; + class IDBStmt { public: - DBStmt(); - ~DBStmt(); - DBStmt& operator=(DBStmt const&); - DBStmt(SQLHDBC hDBCLink); - bool WINAPIC IsValid(); - USHORT WINAPIC GetColumnCount(); - DWORD WINAPIC GetChangedRowCount(); - bool WINAPIC Query(LPCWSTR strSQL); - bool WINAPIC Fetch(); - bool WINAPIC FetchRow(UINT nRow); - bool WINAPIC FetchPrevious(); - bool WINAPIC FetchNext(); - bool WINAPIC FetchRow(ULONG nRow,bool Absolute=1); - bool WINAPIC FetchFirst(); - bool WINAPIC FetchLast(); - bool WINAPIC Cancel(); - /*bool SetPos(SQLSETPOSIROW irow); - bool OpenCursor(); - bool CloseCursor();*/ + virtual void Release(); + virtual bool WINAPIC IsValid()=0; + virtual USHORT WINAPIC GetColumnCount()=0; + virtual DWORD WINAPIC GetChangedRowCount()=0; + virtual bool WINAPIC Query(LPCWSTR strSQL)=0; + virtual bool WINAPIC Fetch()=0; + virtual bool WINAPIC FetchRow(UINT nRow)=0; + virtual bool WINAPIC FetchPrevious()=0; + virtual bool WINAPIC FetchNext()=0; + virtual bool WINAPIC FetchRow(ULONG nRow,bool Absolute=1)=0; + virtual bool WINAPIC FetchFirst()=0; + virtual bool WINAPIC FetchLast()=0; + virtual bool WINAPIC Cancel()=0; - bool WINAPIC BindColumn(USHORT Column, LPVOID pBuffer, ULONG pBufferSize, LONG * pReturnedBufferSize=NULL, USHORT nType=SQL_C_TCHAR); - USHORT WINAPIC GetColumnByName(LPCTSTR Column); - bool WINAPIC GetData(USHORT Column, LPVOID pBuffer, ULONG pBufLen, LONG * dataLen=NULL, int Type=SQL_C_DEFAULT); - int WINAPIC GetColumnType( USHORT Column ); - DWORD WINAPIC GetColumnSize( USHORT Column ); - DWORD WINAPIC GetColumnScale( USHORT Column ); - bool WINAPIC GetColumnName( USHORT Column, LPTSTR Name, SHORT NameLen ); - bool WINAPIC IsColumnNullable( USHORT Column ); + virtual bool WINAPIC BindColumn(USHORT Column, LPVOID pBuffer, ULONG pBufferSize, LONG * pReturnedBufferSize=NULL, USHORT nType=SQL_C_TCHAR)=0; + virtual USHORT WINAPIC GetColumnByName(LPCTSTR Column)=0; + virtual bool WINAPIC GetData(USHORT Column, LPVOID pBuffer, ULONG pBufLen, LONG * dataLen=NULL, int Type=SQL_C_DEFAULT)=0; + virtual int WINAPIC GetColumnType( USHORT Column )=0; + virtual DWORD WINAPIC GetColumnSize( USHORT Column )=0; + virtual DWORD WINAPIC GetColumnScale( USHORT Column )=0; + virtual bool WINAPIC GetColumnName( USHORT Column, LPTSTR Name, SHORT NameLen )=0; + virtual bool WINAPIC IsColumnNullable( USHORT Column )=0; }; + dllport IDBConnection* WINAPIC getIDBConnection(); + dllport IDBStmt* WINAPIC getIDBStmt(); }; -extern "C" dllport DBSQL::DBConnection iDB; #endif \ No newline at end of file diff --git a/haloEngine.h b/haloEngine.h index 7295b93..28a2a7f 100644 --- a/haloEngine.h +++ b/haloEngine.h @@ -1,23 +1,23 @@ #ifndef haloEngineH #define haloEngineH -#define CANTJOINSERVER 0 -#define INVALIDCONREQUEST 1 -#define PASSWORDREJECTED 2 -#define SERVERFULL 3 -#define CDINVALID 4 -#define CDINUSED 5 -#define OPBANNED 6 -#define OPKICKED 7 -#define VIDEOTEST 8 -#define CPSAVED 9 -#define ADDRESSINVALID 10 -#define PROFILEREQUIRED 11 -#define INCOMPATIBLENETWORK 12 -#define OLDERCVER 13 -#define NEWERCVER 14 -#define ADMINREQUIREDPATCH 15 -#define REQUESTDELETESAVED 16 +#define REJECT_CANTJOINSERVER 0 +#define REJECT_INVALIDCONREQUEST 1 +#define REJECT_PASSWORDREJECTED 2 +#define REJECT_SERVERFULL 3 +#define REJECT_CDINVALID 4 +#define REJECT_CDINUSED 5 +#define REJECT_OPBANNED 6 +#define REJECT_OPKICKED 7 +#define REJECT_VIDEOTEST 8 +#define REJECT_CPSAVED 9 +#define REJECT_ADDRESSINVALID 10 +#define REJECT_PROFILEREQUIRED 11 +#define REJECT_INCOMPATIBLENETWORK 12 +#define REJECT_OLDERCVER 13 +#define REJECT_NEWERCVER 14 +#define REJECT_ADMINREQUIREDPATCH 15 +#define REJECT_REQUESTDELETESAVED 16 #define HALO_UNKNOWN 0 #define HALO_TRIAL 1 @@ -40,7 +40,8 @@ #define DIRECTS8 IDirectSound #endif -extern "C" class dllport HaloEngine { // For Add-on API interface support + +extern "C" class IHaloEngine { // For Add-on API interface support public: GlobalServer* globalServer; PlayerAlter* playerAlter; @@ -58,42 +59,41 @@ extern "C" class dllport HaloEngine { // For Add-on API interface support BYTE haloGameVersion; bool isDedi; ConsoleColorStruct* consoleColor; - DIRECTX9** DirectX9; - DIRECTI8** DirectInput8; - DIRECTS8** DirectSound8; - HaloEngine(); + DIRECTX9* DirectX9; + DIRECTI8* DirectInput8; + DIRECTS8* DirectSound8; //Halo Simulate Functions Begin - DWORD WINAPIC BuildPacket(LPBYTE output, DWORD arg1, DWORD packettype, DWORD arg3, LPBYTE dataPtr, DWORD arg4, DWORD arg5, DWORD arg6); - void WINAPIC AddPacketToPlayerQueue(DWORD player, LPBYTE packet, DWORD packetCode, DWORD arg1, DWORD arg2, DWORD arg3, DWORD arg4, DWORD arg5); - void WINAPIC AddPacketToGlobalQueue(LPBYTE packet, DWORD packetCode, DWORD arg1, DWORD arg2, DWORD arg3, DWORD arg4, DWORD arg5); - void WINAPIC DispatchRcon(rconData& d, Player::PlayerInfo& plI); - void WINAPIC DispatchPlayer(chatData& d, int len, Player::PlayerInfo& plI); - void WINAPIC DispatchGlobal(chatData& d, int len); - bool WINAPIC sendRejectCode(MachineHeader* mH, DWORD code); - void WINAPIC GetCDHash(MachineHeader &mH, char hashKey[33]); - void WINAPIC SetObjectSpawnPlayerX(playerindex pl_ind); - void WINAPIC Kill(Player::PlayerInfo plI); - bool WINAPIC SetIdle(); - bool WINAPIC MapNext(); - bool WINAPIC Exec(const char* cmd); - void WINAPIC GetServerPassword(wchar_t pass[8]); - void WINAPIC SetServerPassword(wchar_t pass[8]); - void WINAPIC GetRconPassword(char pass[8]); - void WINAPIC SetRconPassword(char pass[8]); - bool WINAPIC BanPlayer(Player::PlayerExtended &plEx, tm &gmtm); - bool WINAPIC BanCDkey(wchar_t CDHash[33], tm &gmtm); - bool WINAPIC BanIP(wchar_t IP_Addr[16], tm &gmtm); - int WINAPIC BanIPGetId(wchar_t IP_Addr[16]); - int WINAPIC BanCDkeyGetId(wchar_t CDHash[33]); - bool WINAPIC UnbanID(int ID); + virtual DWORD WINAPIC BuildPacket(LPBYTE output, DWORD arg1, DWORD packettype, DWORD arg3, LPBYTE dataPtr, DWORD arg4, DWORD arg5, DWORD arg6)=0; + virtual void WINAPIC AddPacketToPlayerQueue(DWORD player, LPBYTE packet, DWORD packetCode, DWORD arg1, DWORD arg2, DWORD arg3, DWORD arg4, DWORD arg5)=0; + virtual void WINAPIC AddPacketToGlobalQueue(LPBYTE packet, DWORD packetCode, DWORD arg1, DWORD arg2, DWORD arg3, DWORD arg4, DWORD arg5)=0; + virtual void WINAPIC DispatchRcon(rconData& d, IPlayer::PlayerInfo& plI)=0; + virtual void WINAPIC DispatchPlayer(chatData& d, int len, IPlayer::PlayerInfo& plI)=0; + virtual void WINAPIC DispatchGlobal(chatData& d, int len)=0; + virtual bool WINAPIC sendRejectCode(MachineHeader* mH, DWORD code)=0; + virtual void WINAPIC GetCDHash(MachineHeader &mH, char hashKey[33])=0; + virtual void WINAPIC SetObjectSpawnPlayerX(playerindex pl_ind)=0; + virtual void WINAPIC Kill(IPlayer::PlayerInfo plI)=0; + virtual bool WINAPIC SetIdle()=0; + virtual bool WINAPIC MapNext()=0; + virtual bool WINAPIC Exec(const char* cmd)=0; + virtual void WINAPIC GetServerPassword(wchar_t pass[8])=0; + virtual void WINAPIC SetServerPassword(wchar_t pass[8])=0; + virtual void WINAPIC GetRconPassword(char pass[8])=0; + virtual void WINAPIC SetRconPassword(char pass[8])=0; + virtual bool WINAPIC BanPlayer(IPlayer::PlayerExtended &plEx, tm &gmtm)=0; + virtual bool WINAPIC BanCDkey(wchar_t CDHash[33], tm &gmtm)=0; + virtual bool WINAPIC BanIP(wchar_t IP_Addr[16], tm &gmtm)=0; + virtual int WINAPIC BanIPGetId(wchar_t IP_Addr[16])=0; + virtual int WINAPIC BanCDkeyGetId(wchar_t CDHash[33])=0; + virtual bool WINAPIC UnbanID(int ID)=0; //char* WINAPIC GetCDHash(Player::PlayerInfo& plI); - void WINAPIC GetIP(MachineHeader& mH, BYTE m_ip[4]); - void WINAPIC GetPort(MachineHeader& mH, WORD& m_port); + virtual void WINAPIC GetIP(MachineHeader& mH, BYTE m_ip[4])=0; + virtual void WINAPIC GetPort(MachineHeader& mH, WORD& m_port)=0; //Halo Simulate Functions End - bool WINAPIC EXTAddOnGetInfoIndex(size_t index, addon::addonInfo &getInfo); - bool WINAPIC EXTAddOnGetInfoByName(wchar_t name[], addon::addonInfo &getInfo); - bool WINAPIC EXTAddOnReloadDll(wchar_t name[128]); + virtual bool WINAPIC EXTAddOnGetInfoIndex(size_t index, addon::addonInfo &getInfo)=0; + virtual bool WINAPIC EXTAddOnGetInfoByName(wchar_t name[], addon::addonInfo &getInfo)=0; + virtual bool WINAPIC EXTAddOnReloadDll(wchar_t name[128])=0; }; -extern "C" dllport HaloEngine* haloEngine; +extern "C" dllport IHaloEngine* pIHaloEngine; #endif \ No newline at end of file diff --git a/iniFile.h b/iniFile.h index db86ca5..e8ac852 100644 --- a/iniFile.h +++ b/iniFile.h @@ -3,7 +3,7 @@ #define INIFILELENMAX 512 -extern "C" class dllport CIniFile { +extern "C" class ICIniFile { public: #pragma pack(push,1) struct Record { @@ -18,34 +18,22 @@ extern "C" class dllport CIniFile { pound = L'#', semiColon = L';' }; - CIniFile(); - ~CIniFile(); - CIniFile(CIniFile const&); - CIniFile& operator=(CIniFile const&); - void WINAPIC Close(); - bool WINAPIC Open(wchar_t const fileName[]); - bool WINAPIC Create(wchar_t const fileName[]); - bool WINAPIC Delete(wchar_t const fileName[]); - bool WINAPIC Content(const wchar_t*& content, size_t &len); - bool WINAPIC SectionAdd(wchar_t const sectionName[]); - bool WINAPIC SectionDelete(wchar_t const sectionName[]); - bool WINAPIC SectionExist(wchar_t const sectionName[]); - bool WINAPIC ValueExist(wchar_t const keyName[], const wchar_t sectionName[]); - bool WINAPIC ValueSet(wchar_t const keyName[], wchar_t valueName[], const wchar_t sectionName[]); - bool WINAPIC ValueGet(wchar_t const keyName[], wchar_t valueName[], const wchar_t sectionName[]); - bool WINAPIC Save(); - bool WINAPIC Load(); - void WINAPIC Clear(); -private: - wchar_t tempFileName[INIFILELENMAX]; - const wchar_t* strFileContentW; - DWORD size; - HANDLE hFile; - HANDLE hFileMap; -#pragma warning( push ) -#pragma warning( disable : 4251) - util::dynamicStack* content; -#pragma warning( pop ) + virtual void WINAPIC Release(); + virtual void WINAPIC Close()=0; + virtual bool WINAPIC Open(wchar_t const fileName[])=0; + virtual bool WINAPIC Create(wchar_t const fileName[])=0; + virtual bool WINAPIC Delete(wchar_t const fileName[])=0; + virtual bool WINAPIC Content(const wchar_t*& content, size_t &len)=0; + virtual bool WINAPIC SectionAdd(wchar_t const sectionName[])=0; + virtual bool WINAPIC SectionDelete(wchar_t const sectionName[])=0; + virtual bool WINAPIC SectionExist(wchar_t const sectionName[])=0; + virtual bool WINAPIC ValueExist(wchar_t const keyName[], const wchar_t sectionName[])=0; + virtual bool WINAPIC ValueSet(wchar_t const keyName[], wchar_t valueName[], const wchar_t sectionName[])=0; + virtual bool WINAPIC ValueGet(wchar_t const keyName[], wchar_t valueName[], const wchar_t sectionName[])=0; + virtual bool WINAPIC Save()=0; + virtual bool WINAPIC Load()=0; + virtual void WINAPIC Clear()=0; }; +extern "C" dllport ICIniFile* WINAPIC getICIniFile(); #endif \ No newline at end of file diff --git a/object.h b/object.h index 4e9c4f1..e3b1715 100644 --- a/object.h +++ b/object.h @@ -1,8 +1,7 @@ #ifndef objectH #define objectH #include "player.h" //Required in order to obtain playerInfo structure. - -extern "C" class Object { +extern "C" class IObject { public: // Structure definitions #pragma pack(push, 1) @@ -66,18 +65,14 @@ extern "C" class Object { vect3 scale; }; #pragma pack(pop) - Object(); - ~Object(); - Object& operator=(Object const &); - ObjectS* WINAPIC GetObjectAddress(int mode, ident obj_id); - hTagHeader* WINAPIC LookupTag(ident objectTag); - hTagHeader* WINAPIC LookupTagTypeName(const char* tagType, const char* tag); - void WINAPIC Delete(ident obj_id); - void WINAPIC Copy(ident obj_id, Player::PlayerInfo plI); - bool WINAPIC Eject(ident obj_id); - void WINAPIC Update(ident obj_id); - //void WINAPIC Drop(ident obj_id); + virtual ObjectS* WINAPIC GetObjectAddress(int mode, ident obj_id)=0; + virtual hTagHeader* WINAPIC LookupTag(ident objectTag)=0; + virtual hTagHeader* WINAPIC LookupTagTypeName(const char* tagType, const char* tag)=0; + virtual void WINAPIC Delete(ident obj_id)=0; + virtual void WINAPIC Copy(ident obj_id, IPlayer::PlayerInfo plI)=0; + virtual bool WINAPIC Eject(ident obj_id)=0; + virtual void WINAPIC Update(ident obj_id)=0; }; -extern "C" dllport Object* object; +extern "C" dllport IObject* pIObject; #endif \ No newline at end of file diff --git a/player.h b/player.h index b57506c..acf0dcf 100644 --- a/player.h +++ b/player.h @@ -10,7 +10,7 @@ #define MSG_ERROR 6 #define MSG_ALERT 7 -extern "C" class Player { +extern "C" class IPlayer { public: #pragma pack(push,1) struct PlayerExtended { @@ -74,27 +74,26 @@ extern "C" class Player { PlayerInfo plList[32]; }; #pragma pack(pop) - Player(); - ~Player(); - Player& operator=(Player const &); - PlayerInfo WINAPIC getPlayerMindex(machineindex m_ind); - PlayerInfo WINAPIC getPlayer(DWORD playerId); - PlayerInfo WINAPIC getPlayerIdent(ident pl_Tag); - PlayerInfo WINAPIC getPlayerByNickname(const wchar_t nickname[]); - PlayerInfo WINAPIC getPlayerByUsername(const wchar_t username[]); - PlayerInfo WINAPIC getPlayerByUniqueID(long uniqueID); - short WINAPIC StrToPlayerList(const wchar_t src[], util::dynamicStack &plMatch, Player::PlayerInfo* plOwner); - int WINAPIC GetIDFullName(wchar_t fullName[]); - int WINAPIC GetIDIpAddress(wchar_t ipAddress[]); - int WINAPIC GetIDPort(wchar_t port[]); - void WINAPIC GetFullNameID(int ID, wchar_t fullName[13]); - void WINAPIC GetIpAddressID(int ID, wchar_t ipAddress[16]); - void WINAPIC GetPortID(int ID, wchar_t port[10]); - bool WINAPIC Update(PlayerInfo& plI); - bool WINAPIC setNickname(PlayerInfo& plI, wchar_t nickname[]); - bool WINAPIC sendCustomMsg(char formatMsg, toggle chatRconRemote, PlayerInfo& plI, const wchar_t *Msg, ...); - bool WINAPIC isAdmin(machineindex m_ind); + virtual PlayerInfo WINAPIC getPlayerMindex(machineindex m_ind)=0; + virtual PlayerInfo WINAPIC getPlayer(DWORD playerId)=0; + virtual PlayerInfo WINAPIC getPlayerIdent(ident pl_Tag)=0; + virtual PlayerInfo WINAPIC getPlayerByNickname(const wchar_t nickname[])=0; + virtual PlayerInfo WINAPIC getPlayerByUsername(const wchar_t username[])=0; + virtual PlayerInfo WINAPIC getPlayerByUniqueID(long uniqueID)=0; + virtual short WINAPIC StrToPlayerList(const wchar_t src[], util::dynamicStack &plMatch, IPlayer::PlayerInfo* plOwner)=0; + virtual int WINAPIC GetIDFullName(wchar_t fullName[])=0; + virtual int WINAPIC GetIDIpAddress(wchar_t ipAddress[])=0; + virtual int WINAPIC GetIDPort(wchar_t port[])=0; + virtual void WINAPIC GetFullNameID(int ID, wchar_t fullName[13])=0; + virtual void WINAPIC GetIpAddressID(int ID, wchar_t ipAddress[16])=0; + virtual void WINAPIC GetPortID(int ID, wchar_t port[10])=0; + virtual bool WINAPIC Update(PlayerInfo& plI)=0; + virtual bool WINAPIC setNickname(PlayerInfo& plI, wchar_t nickname[])=0; + virtual bool WINAPIC sendCustomMsg(char formatMsg, toggle chatRconRemote, PlayerInfo& plI, const wchar_t *Msg, ...)=0; + virtual bool WINAPIC isAdmin(machineindex m_ind)=0; + virtual PlayerInfo WINAPIC getPlayerByBipedTagCurrent(ident bipedTag)=0; + virtual PlayerInfo WINAPIC getPlayerByBipedTagPrevious(ident bipedTag)=0; }; -extern "C" dllport Player* player; +extern "C" dllport IPlayer* pIPlayer; #endif \ No newline at end of file diff --git a/struct.h b/struct.h index 1c9a1ab..e1a06b2 100644 --- a/struct.h +++ b/struct.h @@ -419,55 +419,62 @@ static_assert_check(sizeof(actionFlags) == 0x02, "Incorrect size of aFlag"); struct BipedS { - ObjectS sObject; // 0x0000 - long Unknown[4]; // 0x01F4 - short IsInvisible; // 0x0204 normal = 0x41 invis = 0x51 (bitfield?) - char Flashlight; // 0x0206 - char Frozen; // 0x0207 - actionFlags actionBits; // 0x0208 & 0x0209 - char Unknown1[2]; // 0x020A - long UnknownCounter1; // 0x020C - long UnknownLongs1[5]; // 0x0210 - vect3 RightVect; // 0x0224 - vect3 UpVect; // 0x0230 - vect3 LookVect; // 0x023C - vect3 ZeroVect; // 0x0248 - vect3 RealLookVect; // 0x0254 - vect3 UnknownVect3; // 0x0260 - char Unknown2[140]; // 0x026C - ident PrimaryWeapon; // 0x02F8 - ident SecondaryWeapon; // 0x02FC - ident ThirdWeapon; // 0x0300 - ident FourthWeapon; // 0x0304 - long UnknownLongs2[5]; // 0x0308 - char grenadeIndex; // 0x031C - char grenadeIndex1; // 0x031D - char grenade0; // 0x031E - char grenade1; // 0x031F - char Zoom; // 0x0320 - char Zoom1; // 0x0321 - char Unknown3[2]; // 0x0322 - ident SlaveController; // 0x0324 - char Unknown4[552]; // 0x0328 - bone LeftThigh; // 0x0550 - bone RightThigh; // 0x0584 - bone Pelvis; // 0x05B8 - bone LeftCalf; // 0x05EC - bone RightCalf; // 0x0620 - bone Spine; // 0x0654 - bone LeftClavicle; // 0x0688 - bone LeftFoot; // 0x06BC - bone Neck; // 0x06F0 - bone RightClavicle; // 0x0724 - bone RightFoot; // 0x0758 - bone Head; // 0x078C - bone LeftUpperArm; // 0x07C0 - bone RightUpperArm; // 0x07F4 - bone LeftLowerArm; // 0x0828 - bone RightLowerArm; // 0x085C - bone LeftHand; // 0x0890 - bone RightHand; // 0x08C4 - char Unknown5[1216]; // 0x08F8 //Missing 0x092C? + ObjectS sObject; // 0x0000 + long Unknown[4]; // 0x01F4 + short IsInvisible; // 0x0204 normal = 0x41 invis = 0x51 (bitfield?) + char Flashlight; // 0x0206 + char Frozen; // 0x0207 + actionFlags actionBits; // 0x0208 & 0x0209 + char Unknown1[2]; // 0x020A + long UnknownCounter1; // 0x020C + long UnknownLongs1[5]; // 0x0210 + vect3 RightVect; // 0x0224 + vect3 UpVect; // 0x0230 + vect3 LookVect; // 0x023C + vect3 ZeroVect; // 0x0248 + vect3 RealLookVect; // 0x0254 + vect3 UnknownVect3; // 0x0260 + char Unknown2[134]; // 0x026C + WORD CurWeaponIndex0; // 0x02F2 (Do not attempt to edit this, will crash Halo) + WORD CurWeaponIndex1; // 0x02F4 (Read only) + WORD Unknown6; // 0x02F6 + ident PrimaryWeapon; // 0x02F8 + ident SecondaryWeapon; // 0x02FC + ident ThirdWeapon; // 0x0300 + ident FourthWeapon; // 0x0304 + DWORD PrimaryWeaponLastUse; // 0x0308 + DWORD SecondaryWeaponLastUse; // 0x030C + DWORD ThirdWeaponLastUse; // 0x0310 + DWORD FourthWeaponLastUse; // 0x0314 + long UnknownLongs2; // 0x031C + char grenadeIndex; // 0x031C + char grenadeIndex1; // 0x031D + char grenade0; // 0x031E + char grenade1; // 0x031F + char Zoom; // 0x0320 + char Zoom1; // 0x0321 + char Unknown3[2]; // 0x0322 + ident SlaveController; // 0x0324 + char Unknown4[552]; // 0x0328 + bone LeftThigh; // 0x0550 + bone RightThigh; // 0x0584 + bone Pelvis; // 0x05B8 + bone LeftCalf; // 0x05EC + bone RightCalf; // 0x0620 + bone Spine; // 0x0654 + bone LeftClavicle; // 0x0688 + bone LeftFoot; // 0x06BC + bone Neck; // 0x06F0 + bone RightClavicle; // 0x0724 + bone RightFoot; // 0x0758 + bone Head; // 0x078C + bone LeftUpperArm; // 0x07C0 + bone RightUpperArm; // 0x07F4 + bone LeftLowerArm; // 0x0828 + bone RightLowerArm; // 0x085C + bone LeftHand; // 0x0890 + bone RightHand; // 0x08C4 + char Unknown5[1216]; // 0x08F8 //Missing 0x092C? }; // Size - 3564(0x0DEC) bytes //Major WIP Halo Structure Begin diff --git a/util.h b/util.h index a7644d0..bf281e5 100644 --- a/util.h +++ b/util.h @@ -1,13 +1,25 @@ #ifndef utilH #define utilH +#define WINAPIC __cdecl + +//Attempt to fix the new/delete operator. +/*inline void * __cdecl operator new(size_t _count) { + return my_operator_new_replacement(_count); +} +inline void __cdecl operator delete(void * _ptr) { + my_operator_delete_replacement(_ptr); +}*/ + namespace util { - static char colon = ':'; - static char newline = '\n'; - static char pipe = '|'; - static wchar_t commaW = L','; - static wchar_t me[] = L"me"; + + static const char colon = ':'; + static const char newline = '\n'; + static const char pipe = '|'; + static const wchar_t commaW = L','; + static const wchar_t me[] = L"me"; static const wchar_t backslash = L'\\'; + static const wchar_t dotW = L'.'; static GAME_MODE_S modeAll = {1,1,1}; static GAME_MODE_S modeSingle = {1, 0, 0}; static GAME_MODE_S modeSingleMulti = {1, 1, 0}; @@ -16,11 +28,8 @@ namespace util { static GAME_MODE_S modeMultiHost = {0,1,1}; static GAME_MODE_S modeHost = {0,0,1}; #define PI 3.141592653589793f - #define TOGGLE(val, on) val = (on==-1 ? !val : on) - - extern "C" void dllport *Alloc(size_t Size); - extern "C" void dllport Free(void* Address); - + extern "C" dllport void* WINAPIC AllocMem(size_t Size); + extern "C" dllport void WINAPIC FreeMem(void* Address); extern "C" class dllport ArgContainer { private: wchar_t* args[10]; @@ -28,47 +37,23 @@ namespace util { public: size_t argc; ArgContainer(); + //dllport ArgContainer(const ArgContainer&); + //ArgContainer(const ArgContainer&); ArgContainer(const wchar_t arg[]); ArgContainer(const wchar_t arg[], int numArrayLink); ArgContainer(ArgContainer const ©); wchar_t* WINAPIC operator[](size_t i); ArgContainer& WINAPIC operator=(ArgContainer const ©); + //ArgContainer& operator=(ArgContainer ©); + //ArgContainer(wchar_t arg[]); + //wchar_t* operator[](size_t i); ArgContainer WINAPIC operator*(); - virtual ~ArgContainer(); - }; - - extern "C" void dllport toCharW(char* charA, int len, wchar_t* charW); - extern "C" void dllport toCharA(wchar_t* charW, int len, char* charA); - extern "C" toggle dllport StrToBooleanA(const char str[]); - extern "C" toggle dllport StrToBooleanW(const wchar_t str[]); - extern "C" toggle dllport StrToTeamA(const char str[]); - extern "C" toggle dllport StrToTeamW(const wchar_t str[]); - extern "C" void dllport ReplaceA(char* regStr); - extern "C" void dllport ReplaceW(wchar_t* regStr); - extern "C" void dllport ReplaceUndoA(char* regStr); - extern "C" void dllport ReplaceUndoW(wchar_t* regStr); - extern "C" bool dllport isnumberA(const char* str); - extern "C" bool dllport isnumberW(const wchar_t* str); - extern "C" bool dllport hashCheckA(const char* str); - extern "C" bool dllport hashCheckW(const wchar_t* str); - extern "C" void dllport shiftStrA(char regStr[], int len, int pos, int lenShift, bool leftRight); - extern "C" void dllport shiftStrW(wchar_t regStr[], int len, int pos, int lenShift, bool leftRight); - extern "C" void dllport regexReplaceW(wchar_t regStr[], bool isDB); - extern "C" bool dllport regexMatchW(wchar_t srcStr[], wchar_t regex[]); - extern "C" bool dllport regexiMatchW(wchar_t srcStr[], wchar_t regex[]); - extern "C" bool dllport FormatVarArgsA(const char* _Format, va_list ArgList, char* writeTo); - extern "C" bool dllport FormatVarArgsW(const wchar_t* _Format, va_list ArgList, wchar_t* writeTo); - extern "C" bool dllport dirExistsW(const wchar_t dirName[]); - #pragma pack(push,1) - struct haloConsole { - int r; - char output[1024]; + ~ArgContainer(); }; - #pragma pack(pop) - template class ThreadSafeObject { public: + //inline ThreadSafeObject(){} inline ThreadSafeObject(T* type):m_type(type){InitializeCriticalSection(&m_cs);} ~ThreadSafeObject() { EnterCriticalSection (&m_cs); @@ -91,6 +76,8 @@ namespace util { private: T* m_type; CRITICAL_SECTION m_cs; + //ThreadSafeObject(const ThreadSafeObject&):m_type(new T){InitializeCriticalSection(&m_cs);} + //ThreadSafeObject& operator=(const ThreadSafeObject&); }; template class dynamicStack { @@ -113,8 +100,8 @@ namespace util { stack = NULL; return; } else { - stack = (d_stack*)util::Alloc(sizeof(d_stack)); - stack->d_type = (T*)util::Alloc(sizeof(T)); + stack = (d_stack*)util::AllocMem(sizeof(d_stack)); + stack->d_type = (T*)util::AllocMem(sizeof(T)); *stack->d_type = *scan->d_type; scan = scan->next_d_type; stack->next_d_type = NULL; @@ -122,8 +109,8 @@ namespace util { } while(scan) { - d_stack* newStack = (d_stack*)util::Alloc(sizeof(d_stack)); - newStack->d_type = (T*)util::Alloc(sizeof(T)); + d_stack* newStack = (d_stack*)util::AllocMem(sizeof(d_stack)); + newStack->d_type = (T*)util::AllocMem(sizeof(T)); *newStack->d_type = *clone->d_type; newStack->next_d_type = NULL; clone->next_d_type = newStack; @@ -139,8 +126,8 @@ namespace util { class const_iterator; void push_back(T type) { if (!stack) { - stack = (d_stack*)util::Alloc(sizeof(d_stack)); - stack->d_type = (T*)util::Alloc(sizeof(T)); + stack = (d_stack*)util::AllocMem(sizeof(d_stack)); + stack->d_type = (T*)util::AllocMem(sizeof(T)); *stack->d_type = type; stack->next_d_type = NULL; } else { @@ -148,8 +135,8 @@ namespace util { while (src->next_d_type) { src = src->next_d_type; } - d_stack* newSrc = (d_stack*)util::Alloc(sizeof(d_stack)); - newSrc->d_type = (T*)util::Alloc(sizeof(T)); + d_stack* newSrc = (d_stack*)util::AllocMem(sizeof(d_stack)); + newSrc->d_type = (T*)util::AllocMem(sizeof(T)); *newSrc->d_type = type; newSrc->next_d_type = NULL; src->next_d_type = newSrc; @@ -159,8 +146,8 @@ namespace util { if (stack) { d_stack* src = stack; d_stack* nextSrc = stack->next_d_type; - util::Free(stack->d_type); - util::Free(stack); + util::FreeMem(stack->d_type); + util::FreeMem(stack); stack = nextSrc; } } @@ -182,8 +169,8 @@ namespace util { prevSrc->next_d_type = src->next_d_type; } else stack = src->next_d_type; - util::Free(src->d_type); - util::Free(src); + util::FreeMem(src->d_type); + util::FreeMem(src); } return isDel; } @@ -239,8 +226,8 @@ namespace util { prevSrc->next_d_type = src->next_d_type; } else stack = prevSrc = src->next_d_type; - util::Free(src->d_type); - util::Free(src); + util::FreeMem(src->d_type); + util::FreeMem(src); return prevSrc; } prevSrc = src; @@ -276,8 +263,8 @@ namespace util { void insert(iterator iter, T newData) { d_stack* insert; if (iter!=NULL) { - insert = (d_stack*)util::Alloc(sizeof(d_stack)); - insert->d_type = (T*)util::Alloc(sizeof(T)); + insert = (d_stack*)util::AllocMem(sizeof(d_stack)); + insert->d_type = (T*)util::AllocMem(sizeof(T)); *insert->d_type = newData; insert->next_d_type = iter.ptr_->next_d_type; iter.ptr_->next_d_type = insert; @@ -285,8 +272,8 @@ namespace util { } else { d_stack* src = stack; if (!src) { - stack = (d_stack*)util::Alloc(sizeof(d_stack)); - stack->d_type = (T*)util::Alloc(sizeof(T)); + stack = (d_stack*)util::AllocMem(sizeof(d_stack)); + stack->d_type = (T*)util::AllocMem(sizeof(T)); *stack->d_type = newData; stack->next_d_type = NULL; return; @@ -299,8 +286,8 @@ namespace util { } if (!src) src = stack; - insert = (d_stack*)util::Alloc(sizeof(d_stack)); - insert->d_type = (T*)util::Alloc(sizeof(T)); + insert = (d_stack*)util::AllocMem(sizeof(d_stack)); + insert->d_type = (T*)util::AllocMem(sizeof(T)); *insert->d_type = newData; insert->next_d_type = src->next_d_type; src->next_d_type = insert; @@ -312,14 +299,15 @@ namespace util { d_stack* holder = NULL; while (src) { if (src->d_type) - util::Free(src->d_type); + util::FreeMem(src->d_type); holder = src; src = src->next_d_type; - util::Free(holder); + util::FreeMem(holder); } stack=NULL; } } + //example of https:// gist.github.com/jeetsukumaran/307264 with nessary modifications. class iterator { private: d_stack* ptr_; @@ -397,6 +385,37 @@ namespace util { }; }; + + extern "C" dllport void WINAPIC toCharW(const char* charA, int len, wchar_t* charW); + extern "C" dllport void WINAPIC toCharA(const wchar_t* charW, int len, char* charA); + extern "C" dllport toggle WINAPIC StrToBooleanA(const char str[]); + extern "C" dllport toggle WINAPIC StrToBooleanW(const wchar_t str[]); + extern "C" dllport toggle WINAPIC StrToTeamA(const char str[]); + extern "C" dllport toggle WINAPIC StrToTeamW(const wchar_t str[]); + extern "C" dllport void WINAPIC ReplaceA(char* regStr); + extern "C" dllport void WINAPIC ReplaceW(wchar_t* regStr); + extern "C" dllport void WINAPIC ReplaceUndoA(char* regStr); + extern "C" dllport void WINAPIC ReplaceUndoW(wchar_t* regStr); + extern "C" dllport bool WINAPIC isnumberA(const char* str); + extern "C" dllport bool WINAPIC isnumberW(const wchar_t* str); + extern "C" dllport bool WINAPIC hashCheckA(const char* str); + extern "C" dllport bool WINAPIC hashCheckW(const wchar_t* str); + extern "C" dllport void WINAPIC shiftStrA(char regStr[], int len, int pos, int lenShift, bool leftRight); + extern "C" dllport void WINAPIC shiftStrW(wchar_t regStr[], int len, int pos, int lenShift, bool leftRight); + extern "C" dllport void WINAPIC regexReplaceW(wchar_t regStr[], bool isDB); + extern "C" dllport bool WINAPIC regexMatchW(wchar_t srcStr[], wchar_t regex[]); + extern "C" dllport bool WINAPIC regexiMatchW(wchar_t srcStr[], wchar_t regex[]); + + #pragma pack(push,1) + struct haloConsole { + int r; + char output[1024]; + }; + #pragma pack(pop) + + extern "C" dllport bool WINAPIC FormatVarArgsA(const char* _Format, va_list ArgList, char* writeTo); + extern "C" dllport bool WINAPIC FormatVarArgsW(const wchar_t* _Format, va_list ArgList, wchar_t* writeTo); + extern "C" dllport bool WINAPIC dirExistsW(const wchar_t dirName[]); extern "C" dllport bool WINAPIC findSubStrFirstA(const char* dest, const char* src); extern "C" dllport bool WINAPIC findSubStrFirstW(const wchar_t* dest, const wchar_t* src); }