#pragma once //================================================================================================= // MasterServer ±¸Á¶Ã¼ // - MasterServer¿¡¼­ »ç¿ëÇÏ´Â ±¸Á¶Ã¼ Á¤ÀÇ //================================================================================================= #include // À̰ÍÀº »ç¿ëÇÏÁö ¾Ê°í ÀÖ´Ù. ÀÏ´ÜÀº Á¤ÀǸ¸ ³öµÐ´Ù. ±¸ÇöºÎ´Â Á¦°ÅÇÏÀÚ. // RTT ¸í·É ¼öÇà Á¦ÇÑ Å¸ÀÔ enum eRTTARESTRICT_TYPE { eRTTARESTRICT_ALL = 0, eRTTARESTRICT_NOTICE, eRTTARESTRICT_DROPUSER, // ÇöÀç USERDISCONN°ú °ãÃļ­ ¾È ¾²ÀÌ´Â µí? eRTTARESTRICT_USERCOUNT, eRTTARESTRICT_BATTLEZONEINFO, eRTTARESTRICT_ARMORKIT, eRTTARESTRICT_ABUSE, eRTTARESTRICT_USERMONEY, eRTTARESTRICT_SERVERSHUTDOWN, eRTTARESTRICT_USERDISCONN, eRTTARESTRICT_GMSCOMMAND, }; // // // class MasterServerEx; // struct MSG_GM_OPERATION_FUNCRESTRICT_CMD; struct MSG_MX_FUNCRESTRICT_RELOAD_ANS; // // // #ifndef __WAVERIX_FUNCTION_RESTRICT_EXTENDED__ //struct sRESTRICT_MGR //{ // // // static const DWORD mc_FUNCRESTRICT_DATABLOCK_MAX_INDEX = 31; // static const DWORD mc_FUNCRESTRICT_DATABLOCK_MAX_SIZE = mc_FUNCRESTRICT_DATABLOCK_MAX_INDEX+1; // static const DWORD mc_FUNCRESTRICT_DATABLOCK_ALLOWED_MASK = eFUNCTIONALRESTRICT_ALL; // // // // // 32°³ °ü·Ã BitMask, ÀÌ °³¼ö¸¦ ³Ñ¾î°¡°Ô µÇ¸é, ¹è¿­·Î ÀüȯÇϰųª DWORD64·Î ÀüȯÇÏÀÚ. // DWORD m_dwFuncRestrict; // // // // inline VOID Clear() // { // m_dwFuncRestrict = 0; // } // // // // inline VOID FunctionAllow( eFUNCTIONALRESTRICT_TYPE functionType ) // { // DWORD dwFunc = (DWORD)functionType; // if( mc_FUNCRESTRICT_DATABLOCK_ALLOWED_MASK & dwFunc ) // { // m_dwFuncRestrict |= dwFunc; // } // } // // inline VOID FunctionRestrict( eFUNCTIONALRESTRICT_TYPE functionType ) // { // DWORD dwFunc = (DWORD)functionType; // if( mc_FUNCRESTRICT_DATABLOCK_ALLOWED_MASK & dwFunc ) // { // m_dwFuncRestrict &= ~dwFunc; // } // } // // inline BOOL IsFunctionAllowd( eFUNCTIONALRESTRICT_TYPE functionType ) // { // DWORD dwFunc = (DWORD)functionType; // if( mc_FUNCRESTRICT_DATABLOCK_ALLOWED_MASK & dwFunc ) // { // return TRUE; // } // return FALSE; // } // // // // // Packet¸¸µé±â ·çƾ Ãß°¡ÇÒ °Í. // struct MakePacket // { // // °ÔÀÓ¼­¹ö·Î º¸³¾ Á¤º¸ ¸¸µé±â // static VOID Make_GM_OPERATION_FUNCRESTRICT_CMD( sRESTRICT_MGR* pBLOCK, MSG_GM_OPERATION_FUNCRESTRICT_CMD* pMsgCMD ); // // // AccountDB·ÎºÎÅÍ ¹ÞÀº ±â´É Á¦ÇÑ ÆÐŶÀ» ÅëÇØ Á¤º¸ ¼³Á¤ // static VOID Parse_MX_FUNCRESTRICT_RELOAD_ANS( sRESTRICT_MGR* pBLOCK, MSG_MX_FUNCRESTRICT_RELOAD_ANS* pMsgANS, BOOL bFromFile, BOOL bLogging = FALSE ); // // // ÆÄÀϷκÎÅÍ ±â´ÉÁ¦ÇÑÀ» ÀоîµéÀÌ´Â °æ¿ì 󸮷çƾ : Parse_MX -> Make_GM -> SendToGameServer ·çƾÀÌ Æ÷ÇԵȴÙ. // static VOID Read_FUNCRESTRICT_FROM_FILE( sRESTRICT_MGR* pBLOCK, BOOL bLogging = FALSE ); // }; // // // // // // //}; #else //__WAVERIX_FUNCTION_RESTRICT_EXTENDED__ struct sRESTRICT_MGR { #define DECL_RESTRICT_CONST_T static const DWORD DECL_RESTRICT_CONST_T FUNCRESTRICT_DATABLOCK_LAST_CODE_ID = 25; //eFUNCTIONALRESTRICT_TYPEÀÇ MAXÀÇ Shift¼öÄ¡¿Í °°¾Æ¾ß ÇÑ´Ù. DECL_RESTRICT_CONST_T FUNCRESTRICT_DATABLOCK_UPPERBOUND = FUNCRESTRICT_DATABLOCK_LAST_CODE_ID+1; ////////////////////////////////////////////////////////////////////////// // util::BitSetOperation m_FunctionRestrictTable; ////////////////////////////////////////////////////////////////////////// // inline VOID Clear() { m_FunctionRestrictTable.ClearAll(); } // inline VOID FunctionAllow( eFUNCTIONALRESTRICT_TYPE functionType ) { DWORD dwFunc = (DWORD)functionType; if( FUNCRESTRICT_DATABLOCK_UPPERBOUND > dwFunc ) m_FunctionRestrictTable.Set( dwFunc ); } inline VOID FunctionRestrict( eFUNCTIONALRESTRICT_TYPE functionType ) { DWORD dwFunc = (DWORD)functionType; if( FUNCRESTRICT_DATABLOCK_UPPERBOUND > dwFunc ) m_FunctionRestrictTable.UnSet( dwFunc ); } inline BOOL IsFunctionAllowd( eFUNCTIONALRESTRICT_TYPE functionType ) { DWORD dwFunc = (DWORD)functionType; return m_FunctionRestrictTable.IsSet( dwFunc ); } // // Packet¸¸µé±â ·çƾ Ãß°¡ÇÒ °Í. struct MakePacket { // °ÔÀÓ¼­¹ö·Î º¸³¾ Á¤º¸ ¸¸µé±â static VOID Make_GM_OPERATION_FUNCRESTRICT_CMD( sRESTRICT_MGR* pBLOCK, MSG_GM_OPERATION_FUNCRESTRICT_CMD* pMsgCMD ); // AccountDB·ÎºÎÅÍ ¹ÞÀº ±â´É Á¦ÇÑ ÆÐŶÀ» ÅëÇØ Á¤º¸ ¼³Á¤ static VOID Parse_MX_FUNCRESTRICT_RELOAD_ANS( sRESTRICT_MGR* pBLOCK, MSG_MX_FUNCRESTRICT_RELOAD_ANS* pMsgANS, BOOL bFromFile, BOOL bLogging = FALSE ); // ÆÄÀϷκÎÅÍ ±â´ÉÁ¦ÇÑÀ» ÀоîµéÀÌ´Â °æ¿ì 󸮷çƾ : Parse_MX -> Make_GM -> SendToGameServer ·çƾÀÌ Æ÷ÇԵȴÙ. static VOID Read_FUNCRESTRICT_FROM_FILE( sRESTRICT_MGR* pBLOCK, BOOL bLogging = FALSE ); }; // // // #undef DECL_RESTRICT_CONST_T }; #endif //__WAVERIX_FUNCTION_RESTRICT_EXTENDED__