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

模拟服务器

开发平台:

C/C++

  1. //---------------------------------------------------------------------------
  2. // Sword3 Engine (c) 2003 by Kingsoft
  3. //
  4. // File: KRelayProtocol.h
  5. // Date: 2003.06.02
  6. // Code: xiemaopei
  7. //---------------------------------------------------------------------------
  8. #ifndef KPLAYERPROTOCOL_H
  9. #define KPLAYERPROTOCOL_H
  10. #pragma pack(push, 1)
  11. enum PROTOCOL_FAMILY
  12. {
  13. pf_normal = 0,
  14. pf_relay,
  15. pf_gameworld,
  16. pf_gamemaster,
  17. pf_playercommunity,
  18. pf_chat, //reserved
  19. pf_tong,
  20. pf_friend,
  21. pf_extend,
  22. };
  23. struct EXTEND_HEADER
  24. {
  25. BYTE ProtocolFamily; //协议所属的家族
  26. BYTE ProtocolID; //协议名称
  27. };
  28. enum ROUTESERVER_METHOD //用于relay之间转换之用
  29. {
  30. rm_account_id = 1, //根据帐号映射为相应标识(tagEnterGame2, tagLeaveGame2同步路由数据)
  31. rm_map_id, //根据地图映射为相应标识(通过网关来取得路由数据)
  32. rm_role_id, //根据角色映射为相应标识(tagEnterGame2, tagLeaveGame2同步路由数据)
  33. rm_gm, //直接发给GM的东东
  34. };
  35. // 协议id:relay_c2c_data  (变长协议)
  36. // 协议id:relay_s2c_loseway  (变长协议) nToIP 不能广播
  37. struct RELAY_DATA : EXTEND_HEADER
  38. {
  39. DWORD nToIP; //255.255.255.255是广播, 0.0.0.0是目的地已经到达
  40. DWORD nToRelayID; //0是网内广播, -1是网外广播
  41. DWORD nFromIP; //0.0.0.0时表明刚进入Relay体系,Relay会填写nFromIP和nFromRelayID
  42. DWORD nFromRelayID;
  43. WORD routeDateLength; //要转发数据长度,数据从结构结尾处开始
  44. //对应要转发的协议包数据
  45. };
  46. // 协议id:relay_c2c_askwaydata  (变长协议)
  47. struct RELAY_ASKWAY_DATA : EXTEND_HEADER
  48. {
  49. DWORD nFromIP; //0.0.0.0时表明刚进入Relay体系,Relay会填写nFromIP和nFromRelayID
  50. DWORD nFromRelayID;
  51. DWORD seekRelayCount; //查找经历的Relay的个数,到-1时为不可达
  52. WORD seekMethod; //指定查找方法
  53. WORD wMethodDataLength; //方法所需数据长度,数据从结构结尾处开始
  54. WORD routeDateLength; //要转发数据长度,数据从方法所需数据结尾处开始
  55. //对应方法所需数据
  56. //转发数据
  57. };
  58. ////////////////////////////////////////////////////////
  59. //pf_playercommunity
  60. //extend protocol package's header
  61. struct tagExtendProtoHeader
  62. {
  63. BYTE ProtocolType; //c2s_extend / s2c_extend
  64. WORD wLength;
  65. //extend pckg
  66. };
  67. #define __X_NAME_LEN_ 32
  68. //c2s_extend 包到达GameSvr时,GameSvr向包后添加此结构,以表明包来源
  69. struct tagPlusSrcInfo
  70. {
  71. DWORD nameid;
  72. unsigned long lnID;
  73. };
  74. //playercomm_c2s_querychannelid
  75. //普通Channel:不以''开头的名称为普通Channel名称
  76. //特殊Channel:(区分大小写)
  77. //队伍:Tnnnn,其中nnnn为队伍ID
  78. //门派:Fnnnn,其中nnnn为门派ID
  79. //同屏:S
  80. struct PLAYERCOMM_QUERYCHANNELID : EXTEND_HEADER
  81. {
  82. char channel[__X_NAME_LEN_];
  83. };
  84. //playercomm_s2c_notifychannelid
  85. struct PLAYERCOMM_NOTIFYCHANNELID : EXTEND_HEADER
  86. {
  87. char channel[__X_NAME_LEN_];
  88. DWORD channelid;
  89. BYTE cost;
  90. };
  91. //playercomm_c2s_freechannelid
  92. struct PLAYERCOMM_FREECHANNELID : EXTEND_HEADER
  93. {
  94. DWORD channelid;
  95. };
  96. //playercomm_c2s_subscribe
  97. struct PLAYERCOMM_SUBSCRIBE : EXTEND_HEADER
  98. {
  99. DWORD channelid;
  100. BOOL subscribe;
  101. };
  102. //playercomm_s2c_gmquerychannelid
  103. struct PLAYERCOMM_GMQUERYCHANNELID : EXTEND_HEADER
  104. {
  105. char channel[__X_NAME_LEN_];
  106. BYTE force;
  107. };
  108. //playercomm_s2c_gmfreechannelid
  109. struct PLAYERCOMM_GMFREECHANNELID : EXTEND_HEADER
  110. {
  111. DWORD channelid;
  112. };
  113. //playercomm_s2c_gmlisten
  114. struct PLAYERCOMM_GMSUBSCRIBE : EXTEND_HEADER
  115. {
  116. DWORD channelid;
  117. BOOL subscribe;
  118. };
  119. struct CHAT_MSG_EX : EXTEND_HEADER
  120. {
  121. char m_szSourceName[__X_NAME_LEN_]; // 来源玩家角色名字
  122. char m_szAccountName[__X_NAME_LEN_]; // 来源玩家账号名字
  123. WORD SentenceLength;
  124. //所说内容
  125. };
  126. #pragma pack(pop)
  127. #endif