CoreServerShell.h
上传用户:dzyhzl
上传日期:2019-04-29
资源大小:56270k
文件大小:7k
源码类别:

模拟服务器

开发平台:

C/C++

  1. /*****************************************************************************************
  2. // 外界访问服务版Core的接口方法定义
  3. // Copyright : Kingsoft 2002
  4. // Author :   Wooy(Wu yue)
  5. // CreateTime: 2002-12-20
  6. ------------------------------------------------------------------------------------------
  7. 外界(如界面系统)通过此接口从Core获取游戏世界数据。
  8. *****************************************************************************************/
  9. #ifndef CORESERVERSHELL_H
  10. #define CORESERVERSHELL_H
  11. #include "CoreServerDataDef.h"
  12. //=========================================================
  13. // Core外部客户对core的操作请求的索引定义
  14. //=========================================================
  15. enum SERVER_SHELL_OPERATION_INDEX
  16. {
  17. SSOI_LAUNCH = 1, //启动服务
  18. SSOI_SHUTDOWN, //关闭服务
  19. SSOI_BROADCASTING, //boardcasting
  20. //uParam = (char*)pMessage
  21. //nParam = (int)nMsgLen
  22. SSOI_RELOAD_WELCOME_MSG, //reload the server's welcome msg
  23. SSOI_TONG_CREATE, // relay 帮会创建成功,通知 core 进行相应的处理
  24. SSOI_TONG_REFUSE_ADD, // 拒绝帮会加入申请
  25. SSOI_TONG_ADD, // relay 帮会成员添加成功,通知 core 进行相应的处理
  26. };
  27. //=========================================================
  28. // Core外部客户向core获取游戏数据的数据项内容索引定义
  29. //=========================================================
  30. //各数据项索引的相关参数uParam与nParam如果在注释中未提及,则传递定值0。
  31. //如果特别指明返回值含义,则成功获取数据返回1,未成功返回0。
  32. enum GAMEDATA_INDEX
  33. {
  34. SGDI_CHARACTER_NAME,
  35. //uParam = (char*) buffer to retrive character name
  36. //nParam = Client index
  37. //Return = bIsExistCharacter
  38. SGDI_LOADEDMAP_ID,
  39. SGDI_CHARACTER_ACCOUNT,
  40. SGDI_CHARACTER_ID,
  41. SGDI_CHARACTER_NETID,
  42. SGDI_CHARACTER_EXTPOINT,
  43. SGDI_CHARACTER_EXTPOINTCHANGED,
  44. //uParam = (char*) id buffer 
  45. // 传入帮会建立参数,返回条件是否成立
  46. // uParam : struct STONG_SERVER_TO_CORE_APPLY_CREATE point
  47. // return : 条件是否成立
  48. SGDI_TONG_APPLY_CREATE,
  49. // 申请加入帮会
  50. // uParam : struct STONG_SERVER_TO_CORE_APPLY_ADD point
  51. SGDI_TONG_APPLY_ADD,
  52. // 判断加入帮会条件是否合适
  53. // uParam : 传入的 char point ,用于接收帮会名称
  54. // nParam : struct STONG_SERVER_TO_CORE_CHECK_ADD_CONDITION point
  55. SGDI_TONG_CHECK_ADD_CONDITION,
  56. // 获得帮会信息
  57. // uParam : 传入的 STONG_SERVER_TO_CORE_GET_INFO point
  58. SGDI_TONG_GET_INFO,
  59. // 判断是否有任命权利
  60. // uParam : 传入的 TONG_APPLY_INSTATE_COMMAND point
  61. // nParam : PlayerIndex
  62. SGDI_TONG_INSTATE_POWER,
  63. // 被任命,帮会数据变化
  64. // uParam : 传入的 STONG_SERVER_TO_CORE_BE_INSTATED point
  65. SGDI_TONG_BE_INSTATED,
  66. // 判断是否有踢人权利
  67. // uParam : 传入的 TONG_APPLY_KICK_COMMAND point
  68. // nParam : PlayerIndex
  69. SGDI_TONG_KICK_POWER,
  70. // 被踢出帮会
  71. // uParam : 传入的 STONG_SERVER_TO_CORE_BE_KICKED point
  72. SGDI_TONG_BE_KICKED,
  73. // 离开帮会判断
  74. // uParam : 传入的 TONG_APPLY_LEAVE_COMMAND point
  75. // nParam : PlayerIndex
  76. SGDI_TONG_LEAVE_POWER,
  77. // 离开帮会
  78. // uParam : 传入的 STONG_SERVER_TO_CORE_LEAVE point
  79. SGDI_TONG_LEAVE,
  80. // 能否传位判断
  81. // uParam : 传入的 TONG_APPLY_CHANGE_MASTER_COMMAND point
  82. // nParam : PlayerIndex
  83. SGDI_TONG_CHANGE_MASTER_POWER,
  84. // 能否接受传位判断
  85. // uParam : 传入的 STONG_SERVER_TO_CORE_CHECK_GET_MASTER_POWER point
  86. SGDI_TONG_GET_MASTER_POWER,
  87. // 传位导致身份改变
  88. // uParam : 传入的 STONG_SERVER_TO_CORE_CHANGE_AS point
  89. SGDI_TONG_CHANGE_AS,
  90. // 帮主换了
  91. // uParam : 传入的 STONG_SERVER_TO_CORE_CHANGE_MASTER point
  92. SGDI_TONG_CHANGE_MASTER,
  93. // 获得帮会名字符串转换成的 dword
  94. // nParam : PlayerIndex
  95. SGDI_TONG_GET_TONG_NAMEID,
  96. // 登陆时候获得帮会信息
  97. // uParam : 传入的 STONG_SERVER_TO_CORE_LOGIN point
  98. SGDI_TONG_LOGIN,
  99. // 通知core发送某玩家的帮会信息
  100. // nParam : player index
  101. SGDI_TONG_SEND_SELF_INFO,
  102. };
  103. #ifdef _STANDALONE
  104. class IClient;
  105. #else
  106. struct IClient;
  107. #endif
  108. #ifndef _STANDALONE
  109. struct _declspec (novtable) iCoreServerShell
  110. #else
  111. struct iCoreServerShell
  112. #endif
  113. {
  114. virtual int  GetLoopRate() = 0;
  115. virtual void GetGuid(int nIndex, void* pGuid) = 0;
  116. virtual DWORD GetExchangeMap(int nIndex) = 0;
  117. virtual bool IsPlayerLoginTimeOut(int nIndex) = 0;
  118. virtual void RemovePlayerLoginTimeOut(int nIndex) = 0;
  119. virtual bool IsPlayerExchangingServer(int nIndex) = 0;
  120. virtual void ProcessClientMessage(int nIndex, const char* pChar, int nSize) = 0;
  121. virtual void ProcessNewClientMessage(IClient* pTransfer, DWORD dwFromIP, DWORD dwFromRelayID, int nPlayerIndex, const char* pChar, int nSize) = 0;
  122. virtual void SendNetMsgToTransfer(IClient* pClient) = 0;
  123. virtual void SendNetMsgToChat(IClient* pClient) = 0;
  124. virtual void SendNetMsgToTong(IClient* pClient) = 0;
  125. virtual void ProcessBroadcastMessage(const char* pChar, int nSize) = 0;
  126. virtual void ProcessExecuteMessage(const char* pChar, int nSize) = 0;
  127. virtual void ClientDisconnect(int nIndex) = 0;
  128. virtual void RemoveQuitingPlayer(int nIndex) = 0;
  129. virtual void* SavePlayerDataAtOnce(int nIndex) = 0;
  130. virtual bool IsCharacterQuiting(int nIndex) = 0;
  131. virtual bool CheckProtocolSize(const char* pChar, int nSize) = 0;
  132. virtual bool PlayerDbLoading(int nPlayerIndex, int bSyncEnd, int& nStep, unsigned int& nParam) = 0;
  133. virtual int  AttachPlayer(const unsigned long lnID, GUID* pGuid) = 0;
  134. virtual void GetPlayerIndexByGuid(GUID* pGuid, int* pnIndex, int* plnID) = 0;
  135. virtual void AddPlayerToWorld(int nIndex) = 0;
  136. virtual void* PreparePlayerForExchange(int nIndex) = 0;
  137. virtual void PreparePlayerForLoginFailed(int nIndex) = 0;
  138. virtual void RemovePlayerForExchange(int nIndex) = 0;
  139. virtual void RecoverPlayerExchange(int nIndex) = 0;
  140. virtual int  AddCharacter(int nExtPoint, int nChangeExtPoint, void* pBuffer, GUID* pGuid) = 0;
  141. virtual int  AddTempTaskValue(int nIndex, const char* pData) = 0;
  142. //向游戏发送操作
  143. virtual int  OperationRequest(unsigned int uOper, unsigned int uParam, int nParam) = 0;
  144. //获取连接状况
  145. virtual int  GetConnectInfo(KCoreConnectInfo* pInfo) = 0;
  146. // virtual BOOL ValidPingTime(int nIndex) = 0;
  147. //从游戏世界获取数据
  148. virtual int  GetGameData(unsigned int uDataId, unsigned int uParam, int nParam) = 0;
  149. //日常活动,core如果要寿终正寝则返回0,否则返回非0值
  150. virtual int  Breathe() = 0;
  151. //释放接口对象
  152. virtual void Release() = 0;
  153. virtual void SetSaveStatus(int nIndex, UINT uStatus) = 0;
  154. virtual UINT GetSaveStatus(int nIndex) = 0;
  155. virtual BOOL GroupChat(IClient* pClient, DWORD FromIP, unsigned long FromRelayID, DWORD channid, BYTE tgtcls, DWORD tgtid, const void* pData, size_t size) = 0;
  156. virtual void SetLadder(void* pData, size_t uSize) = 0;
  157. virtual BOOL PayForSpeech(int nIndex, int nType) = 0;
  158. };
  159. #ifndef CORE_EXPORTS
  160. //获取iCoreShell接口实例的指针
  161. #ifndef __linxu
  162. extern "C" 
  163. #endif
  164. iCoreServerShell* CoreGetServerShell();
  165. #endif
  166. #endif