CoreShell.h
Upload User: dzyhzl
Upload Date: 2019-04-29
Package Size: 56270k
Code Size: 25k
Development Platform:

C/C++

  1. /*****************************************************************************************
  2. // 外界访问Core接口方法定义
  3. // Copyright : Kingsoft 2002
  4. // Author :   Wooy(Wu yue)
  5. // CreateTime: 2002-9-12
  6. ------------------------------------------------------------------------------------------
  7. 外界(如界面系统)通过此接口从Core获取游戏世界数据。
  8. 包含伍个接口函数CoreOperationRequest、CoreGetGameData、CoreDrawGameObj、CoreProcessInput
  9. 与CoreSetCallDataChangedNofify。
  10. CoreOperationRequest用于发送对游戏的操作请求。参数uOper为操作的id,其值为梅举类型
  11. GAMEOPERATION_INDEX的取值之一。参数uParam以及nParam的具体含义依据uOper的取值情况而定。
  12. 如果成功发送操作请求,函数返回非0值,否则返回0值。这些请求都要求Core立即接受,Core的
  13. 客户不保证通过此函数发送的数据在函数调用之后依然有效。
  14. 获知游戏数据有两种方式,一种是调用接口函数CoreGetGameData主动获取,另外一种是注册
  15. 通知函数,当游戏数据变更的时候,被注册的通知函数就会被调用,不一定在调用通知函数的同时
  16. 传递改变的游戏数据。并且两种方式所处里的数据项范围并不相同。
  17.     接口函数CoreGetGameData参数uDataId表示获取游戏数据的数据项内容索引,其值为梅举类型
  18. GAMEDATA_INDEX的取值之一。参数uParam、nParam以及函数返回值的具体含义依据uDataId的取值
  19. 情况而定。
  20.     注册通知函数的接口方法为CoreSetCallDataChangedNofify。参数pNotifyFunc为通知函数的
  21. 指针。返回值为非0值表示注册成功,否则表示失败。传入参数pNotifyFunc的值入为0,则已经注
  22. 册的通知函数将被取消。通过通知函数通知发生游戏数据改变的时候,不一定同时通过通知函数
  23. 传送数据改变。设计原则上是如果改变的数据内容少,可以方便简单地通过通知函数的参数传递的,
  24. 则随通知函数传递;否则只是发送通知而已,并不传送改变的游戏的
  25. CoreDrawGameObj用于绘制单个游戏对象。参数uObjGenre指出对象的类属,uId指出对象的id,
  26. x、y指出绘制范围的左上角坐标,Width、Heightn指出了绘制范围的大小,Param用于额外的参数传
  27. 递,其含义将依赖于具体要绘制的对象类型。
  28. *****************************************************************************************/
  29. #pragma once
  30. //=========================================================
  31. // Core外部客户向core获取游戏数据的数据项内容索引定义
  32. //=========================================================
  33. //各数据项索引的相关参数uParam与nParam如果在注释中未提及,则传递定值0。
  34. //如果特别指明返回值含义,则成功获取数据返回1,未成功返回0。
  35. enum GAMEDATA_INDEX
  36. {
  37. GDI_GAME_OBJ_DESC = 1, //游戏对象描述说明文本串
  38. //uParam = (KUiObjAtContRegion*) 描述游戏对象的结构数据的指针,其中KUiObjAtContRegion::Region的数据固定为0,无意义。
  39. //nParam = (char*) 指向一个缓冲区的指针,其空间不少于1024字节。
  40. GDI_GAME_OBJ_DESC_INCLUDE_TRADEINFO, //游戏对象描述说明文本串(包含交易相关信息)
  41. //参数含义同GDI_GAME_OBJ_DESC
  42. GDI_GAME_OBJ_DESC_INCLUDE_REPAIRINFO, //游戏对象描述说明文本串(包含修理相关信息)
  43. //参数含义同GDI_GAME_OBJ_DESC
  44. GDI_GAME_OBJ_LIGHT_PROP, //对象的光源属性数据
  45. //uParam = (KUiGameObject*) 描述游戏对象的结构数据的指针
  46. //nParam = to be def
  47. GDI_PLAYER_BASE_INFO, //主角的一些不易变的数据
  48. //uParam = (KUiPlayerBaseInfo*)pInfo
  49. GDI_PLAYER_RT_INFO, //主角的一些易变的数据
  50. //uParam = (KUiPlayerRuntimeInfo*)pInfo
  51. GDI_PLAYER_RT_ATTRIBUTE, //主角的一些易变的属性数据
  52. //uParam = (KUiPlayerAttribute*)pInfo
  53. GDI_PLAYER_IMMED_ITEMSKILL, //主角的立即使用物品与武功
  54. //uParam = (KUiPlayerImmedItemSkill*)pInfo
  55. GDI_PLAYER_HOLD_MONEY, //主角随身携带的钱
  56. //nRet = 主角随身携带的钱
  57. GDI_PLAYER_IS_MALE, //主角是否男性
  58. //nRet = (int)(bool)bMale 是否男性
  59. // from now on, flying add this item, get the information whether
  60. // a player can ride a horse.
  61. GDI_PLAYER_CAN_RIDE, //主角是否可以骑马马
  62. //nRet = (int)bCanRide 是否可以
  63. //0 - 不可以骑马哦
  64. //1 - 可以哦
  65. GDI_ITEM_TAKEN_WITH, //主角随身携带的物品等
  66. //uParam = (KUiObjAtRegion*) pInfo -> KUiObjAtRegion结构数组的指针,KUiObjAtRegion
  67. // 结构用于存储物品的数据及其放置区域位置信息。
  68. //nParam = pInfo数组中包含KUiObjAtRegion结构的数目
  69. //Return = 如果返回值小于等于传入参数nParam,其值表示pInfo数组中的前多少个KUiObjAtRegion
  70. // 结构被填充了有效的数据;否则表示需要传入包含多少个KUiObjAtRegion结构的数组
  71. // 才够存储全部的随身携带的物品信息。
  72. GDI_ITEM_IN_STORE_BOX, //储物箱里的物品
  73. //参数及返回值含义同GDI_ITEM_TAKEN_WITH的
  74. GDI_EQUIPMENT, //主角装备物品
  75. //uParam = (KUiObjAtRegion*)pInfo -> 包含11个元素的KUiObjAtRegion结构数组指针,
  76. // KUiObjAtRegion结构用于存储装备的数据和放置位置信息。
  77. // KUiObjAtRegion::Region::h = 0
  78. // KUiObjAtRegion::Region::v 表示属于哪个位置的装备,其值为梅举类型
  79. // UI_EQUIPMENT_POSITION的取值之一。请参看UI_EQUIPMENT_POSITION的注释。
  80. //Return =  其值表示pInfo数组中的前多少个KUiObjAtRegion结构被填充了有效的数据。
  81. GDI_TRADE_NPC_ITEM, //npc列出来交易的物品
  82. //uParam = (KUiObjAtContRegion*) pInfo -> KUiObjAtContRegion结构数组的指针,KUiObjAtContRegion
  83. // 结构用于存储物品的数据及其放置区域位置信息。
  84. // 其中KUiObjAtContRegion::nContainer值表示第几页的物品
  85. //nParam = pInfo数组中包含KUiObjAtContRegion结构的数目
  86. //Return = 如果返回值小于等于传入参数nParam,其值表示pInfo数组中的前多少个KUiObjAtContRegion
  87. // 结构被填充了有效的数据;否则表示需要传入包含多少个KUiObjAtContRegion结构的数组
  88. // 才够存储全部的npc列出来交易的物品信息。
  89. GDI_TRADE_ITEM_PRICE, //交易物品的价格
  90. //uParam = (KUiObjAtContRegion*) pItemInfo -> 用于指出是哪处的哪个物品
  91. //nParam = (KUiItemBuySelInfo*) pPriceInfo -> 用于接收物品名称交易价格等信息
  92. //Return = (int)(bool) 可否交易
  93. GDI_REPAIR_ITEM_PRICE, //修理物品的价格
  94. //uParam = (KUiObjAtContRegion*) pItemInfo -> 用于指出是哪处的哪个物品
  95. //nParam = (KUiItemBuySelInfo*) pPriceInfo -> 用于接收物品名称修理费用等信息
  96. //Return = (int)(bool) 可否修理
  97. GDI_TRADE_OPER_DATA, //交易操作相关的数据
  98. //uParam = (UI_TRADE_OPER_DATA)eOper 具体含义见UI_TRADE_OPER_DATA
  99. //nParam 具体应用与含义由uParam的取值状况决定,见UI_TRADE_OPER_DATA的说明
  100. //Return 具体含义由uParam的取值状况决定,见UI_TRADE_OPER_DATA的说明
  101. GDI_LIVE_SKILL_BASE, //主角的生活技能数据
  102. //uParam = (KUiPlayerLiveSkillBase*) pInfo -> 主角的生活技能数据
  103. GDI_LIVE_SKILLS, //主角掌握的各项生活技能
  104. //uParam = (KUiSkillData*) pSkills -> 包含10个KUiSkillData的数组用于存储各项生活技能的的数据。
  105. GDI_FIGHT_SKILL_POINT, //剩余战斗技能点数
  106. //Return = 剩余战斗技能点数
  107. GDI_FIGHT_SKILLS, //主角掌握的各项战斗技能
  108. //uParam = (KUiSkillData*) pSkills -> 包含50个KUiSkillData的数组用于存储各项战斗的数据。
  109. GDI_CUSTOM_SKILLS, //主角的自创武功
  110. //uParam = (KUiSkillData*) pSkills -> 包含5个KUiSkillData的数组用于存储各项自创武功的数据。
  111. GDI_LEFT_ENABLE_SKILLS, //可以设置在左键的(物理攻击)技能
  112. //uParam = (KUiSkillData*) pSkills -> 包含65个KUiSkillData的数组用于存储各技能的数据。
  113. // KUiSkillData::nLevel用来表述技能显示在第几行
  114. //Return = 返回有效数据的Skills的数目
  115. GDI_RIGHT_ENABLE_SKILLS, //可设置在右键的技能
  116. //uParam = (KUiSkillData*) pSkills -> 包含65个KUiSkillData的数组用于存储各技能的数据。
  117. // KUiSkillData::nLevel用来表述技能显示在第几行
  118. //Return = 返回有效数据的Skills的数目
  119. GDI_TEAM_INFO, //主角所在的队伍信息
  120. //uParam = (KUiPlayerTeam*)pTeam -> 队伍信息
  121. //Return = bInTeam, 如果为非0值表示主角在队伍中,pTeam结构是否被填充信息。
  122. // 如果为0值表示主角不在队伍中,pTeam结构未被填充有效信息。
  123. GDI_TEAM_MEMBER_LIST, //获取主角所在队伍成员列表
  124. //uParam = (KUiPlayerItem*)pList -> 人员信息列表
  125. // KUiPlayerItem::nData = (int)(bool)bCaptain 是否是队长
  126. //nParam = pList数组中包含KUiPlayerItem结构的数目
  127. //Return = 如果返回值小于等于传入参数nParam,其值表示pList数组中的前多少个KUiPlayerItem
  128. // 结构被填充了有效的数据;否则表示需要传入包含多少个KUiPlayerItem结构的数组
  129. // 才够存储全部的成员信息。
  130. GDI_TEAM_REFUSE_INVITE_STATUS,//获取拒绝邀请的状态
  131. //Return = (int)(bool)bEnableRefuse 为真值表示拒绝状态生效,否则表示不拒绝。
  132. GDI_TEAM_TOJOIN_LIST, //获取主角所在队伍加入列表
  133. //参数含义同GDI_NEARBY_PLAYER_LIST
  134. GDI_NEARBY_PLAYER_LIST, //获取周围玩家的列表
  135. //uParam = (KUiPlayerItem*)pList -> 人员信息列表
  136. // KUiPlayerItem::nData = 0
  137. //nParam = pList数组中包含KUiPlayerItem结构的数目
  138. //Return = 如果返回值小于等于传入参数nParam,其值表示pList数组中的前多少个KUiPlayerItem
  139. // 结构被填充了有效的数据;否则表示需要传入包含多少个KUiPlayerItem结构的数组
  140. // 才够存储全部人员信息。
  141. GDI_NEARBY_IDLE_PLAYER_LIST,//获取周围孤单可受邀请的玩家的列表
  142. //参数含义同GDI_NEARBY_PLAYER_LIST
  143. GDI_NEARBY_NOT_FRIEND_LIST,//获取周围非好友的玩家列表
  144. //参数含义同GDI_NEARBY_PLAYER_LIST
  145. GDI_PLAYER_LEADERSHIP, //主角统帅能力相关的数据
  146. //uParam = (KUiPlayerLeaderShip*) -> 主角统帅能力相关的数据结构指针
  147. GDI_NPC_RES, //NPC资源
  148. //In GetGameData: uParam = (RoleBaseInfo*)
  149. //In FreeGameData: uParam = (KNpcRes *)
  150. GDI_ITEM_IN_ENVIRO_PROP, //获得物品在某个环境位置的属性状态
  151. //uParam = (KUiGameObject*)pObj(当nParam==0时)物品的信息
  152. //uParam = (KUiObjAtContRegion*)pObj(当nParam!=0时)物品的信息
  153. // 此时KUiObjAtContRegion::Region的数据固定为0,无意义。
  154. //nParam = (int)(bool)bJustTry  是否只是尝试放置
  155. //Return = (ITEM_IN_ENVIRO_PROP)eProp 物品的属性状态
  156. GDI_CHAT_SEND_CHANNEL_LIST, //玩家可以发送消息的聊天频道的列表
  157. //uParam = (KUiChatChannel*) pList -> KUiChatChannel结构数组的指针
  158. //nParam = pList数组中包含KUiChatChannel结构的数目
  159. //Return = 如果返回值小于等于传入参数nParam,其值表示pInfo数组中的前多少个KUiChatChannel
  160. // 结构被填充了有效的数据;否则表示需要传入包含多少个KUiChatChannel结构的数组
  161. // 才够存储全部的指定频道信息。
  162. GDI_CHAT_RECEIVE_CHANNEL_LIST, //玩家可以订阅的消息频道的列表
  163. //参数及返回值含义同GDI_CHAT_SEND_CHANNEL_LIST
  164. GDI_CHAT_CURRENT_SEND_CHANNEL, //获取当前发送消息的频道的信息
  165. //uParam = (KUiChatChannel*) pChannelInfo 指向用于填充频道的信息的结构空间
  166. GDI_CHAT_GROUP_INFO, //聊天的好友分组信息
  167. //从nParam给定的索引开始查找第一个有效的分组,返回该分组的信息与分组索引。
  168. //uParam = (KUiChatGroupInfo*) pGroupInfo 分组信息
  169. //nParam = nIndex 欲获取的分组的索引
  170. //Return = 实际返回数据的分组的索引,如果未获得则返回-1
  171. GDI_CHAT_FRIENDS_IN_AGROUP, //聊天一个好友分组中好友的信息
  172. //uParam = (KUiPlayerItem*)pList -> 人员信息列表
  173. // KUiPlayerItem::nData = (CHAT_STATUS)eFriendStatus 好友的当前状态
  174. //nParam = 要获取列表的好友分组的索引
  175. //Return = 其值表示pList数组中的前多少个KUiPlayerItem结构被填充了有效的数据.
  176. GDI_SCENE_TIME_INFO, //当前主角所处的地域时间环境
  177. //uParam = (KUiSceneTimeInfo*)pInfo
  178. };
  179. //=========================================================
  180. // Core外部客户向core获取游戏数据的数据项内容索引定义
  181. //=========================================================
  182. //各数据项索引的相关参数uParam与nParam如果在注释中未提及,则传递定值0。
  183. enum GAMEDATA_CHANGED_NOTIFY_INDEX
  184. {
  185. GDCNI_HOLD_OBJECT = 1, //拿起了某个对象
  186. //uParam = (KUiGameObject*)pObject -> 对象信息,如果取值为0,表示放弃手上拿的东西
  187. GDCNI_PLAYER_BASE_INFO, //主角的一些不易变的数据, see also GDI_PLAYER_BASE_INFO
  188. GDCNI_PLAYER_RT_ATTRIBUTE, //主角的一些易变的属性数据, see also GDI_PLAYER_RT_ATTRIBUTE
  189. GDCNI_PLAYER_IMMED_ITEMSKILL,//主角的立即使用物品与武功
  190. //uParam = (KUiGameObject*)pInfo 物品或者武功的数据
  191. //nParam = 哪个位置的物品或者武功 当nParam >=0 时候 nParam表示第nParam个立即物品
  192. // 当nParam = -1 时,表示为左手武功,-2时为右手武功
  193. GDCNI_OBJECT_CHANGED, //某处物品的新增或者减少
  194. //uParam = (KUiObjAtContRegion*)pInfo -> 物品数据及其放置区域位置信息
  195. //          当pInfo->eContainer == UOC_EQUIPTMENT时
  196. // KUiObjAtRegion::Region::h 表示属于第几套装备
  197. // KUiObjAtRegion::Region::v 表示属于哪个位置的装备,其值为枚举类型
  198. // UI_EQUIPMENT_POSITION的取值之一。请参看UI_EQUIPMENT_POSITION的注释。
  199. //nParam = bAdd -> 0值表示减少这个物品,非0值表示增加这个物品
  200. GDCNI_CONTAINER_OBJECT_CHANGED, //整个面板里的东西全部更新
  201. //uParam = (UIOBJECT_CONTAINER)eContainer; //面板位置
  202. GDCNI_LIVE_SKILL_BASE, //生活技能数值变化
  203. GDCNI_FIGHT_SKILL_POINT, //剩余战斗技能点数变化
  204. //nParam = 新的剩余战斗技能点数
  205. GDCNI_SKILL_CHANGE, //新掌握了一个技能/技能升級
  206. //uParam = (KUiSkillData*)pSkill -> 新掌握的技能
  207. //nParam = 新技能在同類中的排序位置
  208. GDCNI_PLAYER_LEADERSHIP, //主角统帅能力相关的数据发生变化
  209. GDCNI_TEAM, //队伍信息发生变化(队伍解散、玩家脱离这个队伍,队长权利转给别人等,关注别人的队伍等)
  210. //uParam = (KUiPlayerTeam*)pTeam -> 队伍信息,可以为NULL,表示玩家脱离了队伍
  211. GDCNI_TEAM_NEARBY_LIST, //附近队伍的列表
  212. //uParam = (KUiTeamItem*)pList 存队伍信息的数组
  213. //nParam = nCount 队伍的数目
  214. GDCNI_TRADE_START, //与玩家交易开始
  215. //uParam = (KUiPlayerItem*) pPlayer对方的信息
  216. GDCNI_TRADE_DESIRE_ITEM, //对方增减想交易的物品
  217. //uParam = (KUiObjAtRegion*) pObject -> 物品信息,其中坐标信息为在交易界面中的坐标
  218. //nParam = bAdd -> 0值表示减少,1值表示增加
  219. //Remark : 如果物品是金钱的话,则KUiObjAtRegion::Obj::uId表示把金钱额调整为这个值,且nParam无意义。
  220. GDCNI_TRADE_OPER_DATA, //交易操作相关的(状态)数据发生变化
  221. //uParam = (const char*) pInfoText 提示的文字,如"对方解除锁定"等
  222. GDCNI_TRADE_END, //交易结束
  223. //nParam = (int)(bool)bTraded 是否进行了交易
  224. GDCNI_NPC_TRADE, //与npc交易开始
  225. //nParam = (bool)bStart 是否交易为交易开始,如果取值非真表示交易(关闭)结束
  226. GDCNI_NPC_TRADE_ITEM, //npc交易物品的变化
  227. //通过调用iCoreShell::GetGameData,使参数uDataId为GDI_TRADE_NPC_ITEM,来获取新的物品信息。
  228. GDCNI_GAME_START, //进入游戏世界
  229. GDCNI_GAME_QUIT, //离开了游戏世界
  230. GDCNI_QUESTION_CHOOSE, //问题选择
  231. //uParam = (KUiQuestionAndAnswer*)pQuestionAndAnswer
  232. GDCNI_SPEAK_WORDS, //npc说话内容
  233. //uParam = (KUiInformationParam*) pWordDataList 指向KUiInformationParam数组
  234. //nParam = pWordDataList包含KUiInformationParam元素的数目
  235. GDCNI_INFORMATION, //新的信息来到(弹出专门的消息框)
  236. //uParam = (KUiInformationParam*)pInformation //消息内容
  237. GDCNI_MSG_ARRIVAL, //新(聊天内容窗口)消息来到
  238. //uParam = (cons char*)pMsgBuff 消息内容缓冲区
  239. //nParam = (KUiMsgParam*)pMsgParam 消息参数
  240. GDCNI_SEND_CHAT_CHANNEL, //当前发送消息的频道改变了
  241. GDCNI_CHAT_GROUP, //聊天好友分组发生变化
  242. GDCNI_CHAT_FRIEND, //聊天好友发生变化
  243. //nParam = nGroupIndex 发生好友变化的分组的索引
  244. GDCNI_CHAT_FRIEND_STATUS, //聊天好友状态发生变化
  245. //uParam = (KUiPlayerItem*)pFriend 发生状态变化的好友
  246. // KUiPlayerItem::nData = (CHAT_STATUS)eFriendStatus 好友的当前状态
  247. //nParam = nGroupIndex 好友所属于的组的索引
  248. GDCNI_CHAT_MESSAGE, //好有发来的讯息
  249. //uParam = (KUiChatMessage*)pMessage 消息数据
  250. //nParam = (KUiPlayerItem*)pFriend   发来讯息的好友
  251. GDCNI_SYSTEM_MESSAGE, //系统消息
  252. //uParam = (KSystemMessage*)pMsg 系统消息的内容
  253. //nParam = (void*)pParamBuf 指向一个参数缓冲区,缓冲内数据含义依据pMsg的内容而定,
  254. // 参看KSystemMessage的注释说明,缓冲区的大小由pMsg->byParamSize给出。
  255. GDCNI_SWITCH_CURSOR, //切换鼠标指针图形
  256. //nParam = Ui???鼠标.ini中给出的图形索引数值
  257. GDCNI_OPEN_STORE_BOX, //打开储物箱
  258. GDCNI_SWITCHING_SCENEPLACE, //地图切换
  259. //nParam = (int)(bool)bStart 为非0值表示开始地图切换,为0值表示结束地图切换
  260. GDCNI_MISSION_RECORD, //要求纪录下此任务提示信息
  261. //uParam = (const char* )pContent 存储任务提示信息的缓冲区,(字符串为控制符已经编码的字符串)
  262. //nParam = pContent内有效内容的长度(单位:字节),(不包括字符串结尾符号)长度最大一定不超过255字节
  263. };
  264. enum GAMEDEBUGCONTROL
  265. {
  266. DEBUG_SHOWINFO = 1,
  267. DEBUG_SHOWOBSTACLE,
  268. };
  269. //=========================================================
  270. // Core外部客户对core的操作请求的索引定义
  271. //=========================================================
  272. enum GAMEOPERATION_INDEX
  273. {
  274. GOI_EXIT_GAME = 1, //离开游戏
  275. //uParam = bIpSpotExit
  276. GOI_SWITCH_OBJECT_QUERY, //交换
  277. //uParam = (KUiObjAtContRegion*)pObject1 -> 拿起的物品操作前的信息
  278. //如果无拿起的东西,则uParam = 0
  279. //nParam = (KUiObjAtContRegion*)pObject2 -> 放下的物品操作后的信息
  280. //如果无放下的东西,则nParam = 0
  281. //nRet = bSwitchable -> 是否可交换
  282. GOI_SWITCH_OBJECT, //交换
  283. //uParam = (KUiObjAtContRegion*)pObject1 -> 拿起的物品操作前的信息
  284. //nParam = (KUiObjAtContRegion*)pObject2 -> 放下的物品操作后的信息
  285. //nRet = bSwitched -> 是否交换了
  286. GOI_REJECT_OBJECT, //丢弃物品
  287. //uParam = (KUiObjAtContRegion*)pObject -> 欲丢弃的物品
  288. GOI_MONEY_INOUT_STORE_BOX, //从StoreBox存取钱
  289. //uParam = (unsigned int)bIn 为非0值时表示存入,否则表示取出
  290. //nParam = 钱的数额
  291. GOI_PLAYER_ACTION, //玩家执行/取消某个动作
  292. //uParam = (PLAYER_ACTION_LIST)eAction 动作标识
  293. GOI_PLAYER_RENASCENCE, //玩家重生
  294. //nParam = (int)(bool)bBackTown 是否回城
  295. GOI_INFORMATION_CONFIRM_NOTIFY, //消息获得确认的通知
  296. GOI_QUESTION_CHOOSE, //问题选择答案
  297. //nParma = nAnswerIndex
  298. GOI_USE_ITEM, //使用物品
  299. //uParam = (KUiObjAtRegion*)pInfo -> 物品的数据以及物品原来摆放的位置
  300. //nParam = 物品使用前放置的位置,取值为枚举类型UIOBJECT_CONTAINER。
  301. GOI_WEAR_EQUIP, //穿上装备
  302. //uParam = (KUiObjAtRegion*)pInfo -> 装备的数据和放置位置信息
  303. // KUiObjAtRegion::Region::h 表示属于第几套装备
  304. // KUiObjAtRegion::Region::v 表示属于哪个位置的装备,其值为梅举类型
  305. // UI_EQUIPMENT_POSITION的取值之一。请参看UI_EQUIPMENT_POSITION的注释。
  306. GOI_USE_SKILL, //施展武功/技能
  307. //uParam = (KUiGameObject*)pInfo -> 技能数据
  308. //nParam = (目前只传0值。)鼠标指针当前坐标(绝对坐标),横坐标在低16位,纵坐标在高16位。(像素点坐标)
  309. GOI_SET_IMMDIA_SKILL, //设置立即技能
  310. //uParam = (KUiGameObject*)pSKill, 技能信息
  311. //nParam = 立即位置,0表示为左键技能,1表示为右键技能
  312. GOI_TONE_UP_SKILL, //增强一种技能,,一次加一点
  313. //uParam = 技能类属
  314. //nParam = (uint)技能id
  315. GOI_TONE_UP_ATTRIBUTE, //增强一些属性的值,一次加一点
  316. //uParam = 表示要增强的是哪个属性,取值为UI_PLAYER_ATTRIBUTE的梅举值之一
  317. //===========组队相关==================
  318. GOI_TEAM_COLLECT_NEARBY_LIST,//获取周围队伍的列表
  319. GOI_TRAM_REFUSE_INVITE, //拒绝别人邀请自己加入队伍
  320. //nParam = (int)(bool)bEnableRefuse 为真值表示拒绝状态生效,否则表示不拒绝。
  321. GOI_TEAM_APPLY, //申请加入她人队伍
  322. //uParam = (KUiTeamItem*) 要申请加入的队伍的信息
  323. GOI_TEAM_NEW, //新组队伍
  324. //uParam = (const char*)pTeamName -> 新组队伍的名称
  325. GOI_TEAM_APPOINT, //任命队长,只有队长调用才有效果
  326. //uParam = (KUiPlayerItem*)pPlayer -> 新队长的信息
  327. // KUiPlayerItem::nData = 0
  328. GOI_TEAM_INVITE, //邀请别人加入队伍,只有队长调用才有效果
  329. //uParam = (KUiPlayerItem*)pPlayer -> 要邀请的人的信息
  330. // KUiPlayerItem::nData = 0
  331. GOI_TEAM_KICK, //踢除队里的一个队员,只有队长调用才有效果
  332. //uParam = (KUiPlayerItem*)pPlayer -> 要踢除的队员的信息
  333. // KUiPlayerItem::nData = 0
  334. GOI_TEAM_APPROVE, //批准他人加入队伍,只有队长调用才有效果
  335. //uParam = (KUiPlayerItem*)pPlayer -> 要欲批准的人信息
  336. // KUiPlayerItem::nData = 0
  337. //nParam = (int)(bool)bApprove -> 是否批准了
  338. GOI_TEAM_LEAVE, //离开队伍
  339. GOI_TEAM_CLOSE, //关闭组队,只有队长调用才有效果
  340. //nParam = (int)(bool)bClose 为真值表示处于关闭状态,否则表示不处于关闭状态
  341. GOI_TEAM_INVITE_RESPONSE, //对组队邀请的回复
  342. //uParam = (KUiPlayerItem*)pTeamLeader 发出组队邀请的队长
  343. //nParam = (int)(bool)bAccept 是否接受邀请
  344. //============(与其它玩家)交易相关================
  345. GOI_TRADE_INVITE_RESPONSE, //答应/拒绝交易请求
  346. //uParam = (KUiPlayerItem*)pRequestPlayer 发出请求的玩家
  347. //nParam = (int)(bool)bAccept 是否接受请求
  348. GOI_TRADE_DESIRE_ITEM, //增减一个欲卖出的物品
  349. //uParam = (KUiObjAtRegion*) pObject -> 物品信息,其中坐标信息为在交易界面中的坐标
  350. //nParam = bAdd -> 0值表示减少,1值表示增加
  351. //Remark : 如果物品是金钱的话,则KUiObjAtRegion::Obj::uId表示把金钱额调整为这个值,且nParam无意义。
  352. GOI_TRADE_WILLING, //有无交易意向
  353. //uParam = (const char*)pszTradMsg 关于交易消息一句话,当bWilling为true时有效
  354. //nParam = (int)(bool)bWilling 是否期待交易(叫卖)
  355. GOI_TRADE_LOCK, //锁定交易
  356. //nParam = (int)(bool)bLock 是否锁定
  357. GOI_TRADE, //交易
  358. //nParam = (int)(bool)bTrading
  359. GOI_TRADE_CANCEL, //交易取消
  360. //============(与npc)交易相关================
  361. GOI_TRADE_NPC_BUY, //向npc买物品
  362. //uParam = (KUiGameObject*)pObj -> 物品信息
  363. GOI_TRADE_NPC_SELL, //卖物品给npc
  364. //uParam = (KUiObjAtContRegion*)pObj -> 物品信息
  365. GOI_TRADE_NPC_REPAIR, //修理物品
  366. //uParam = (KUiObjAtContRegion*) pObj -> 想要的物品的信息
  367. GOI_TRADE_NPC_CLOSE, //结束交易
  368. GOI_DROP_ITEM_QUERY, //查询是否可以丢某个东西到游戏窗口
  369. //uParam = (KUiGameObject*)pObject -> 物品信息
  370. //nParam = 被拖动东西的当前坐标(绝对坐标),横坐标在低16位,纵坐标在高16位。(像素点坐标)
  371. //Return = 是否可以放下
  372. // GOI_DROP_ITEM, //放置物品到游戏窗口
  373. //参数含义同GOI_DROP_ITEM_QUERY参数含义相同
  374. //Return = 是否东西被放下了
  375. GOI_SEND_MSG, //发送消息
  376. //uParam = (const char*)pMsgBuff 消息内容缓冲区
  377. //nParam = (KUiMsgParam*)pMsgParam 消息参数
  378. //============聊天相关================
  379. GOI_SET_SEND_CHAT_CHANNEL, //设置当前发送消息的频道
  380. //uParam = (KUiChatChannel*) pChannelInfo 要设置的频道的信息
  381. GOI_SET_SEND_WHISPER_CHANNEL,//设置当前发送消息的频道为与某人单聊
  382. //uParam = (KUiPlayerItem*) pFriend
  383. GOI_SET_RECEIVE_CHAT_CHANNEL,//设置订阅/取消消息频道
  384. //uParam = (KUiChatChannel*) pChannelInfo 要设置的频道的信息
  385. //nParam = (int)(bool) bEnable 是否订阅
  386. GOI_CHAT_GROUP_NEW, //新建聊天好友组
  387. //uParam = (const char*) pGroupName
  388. //Return = (int)(bool) bSuccessed
  389. GOI_CHAT_GROUP_RENAME, //重命名聊天好友组
  390. //uParam = (const char*) pGroupName
  391. //nParam = nIndex 组索引
  392. //Return = (int)(bool) bSuccessed
  393. GOI_CHAT_GROUP_DELETE, //删除聊天好友组
  394. //nParam = nIndex 组索引
  395. //Return = (int)(bool) bSuccessed
  396. GOI_CHAT_FRIEND_ADD, //新添加聊天好友
  397. //uParam = (KUiPlayerItem*)pFriend
  398. // KUiPlayerItem::nData = 0
  399. GOI_CHAT_FRIEND_DELETE, //删除聊天好友
  400. //uParam = (KUiPlayerItem*)pFriend
  401. // KUiPlayerItem::nData = 0
  402. //nParam = nGroupIndex 好友所在的组的索引
  403. //Return = (int)(bool) bSuccessed
  404. GOI_CHAT_FRIEND_MOVE, //好友移到新组
  405. //uParam = (KUiPlayerItem*)pFriend
  406. // KUiPlayerItem::nData = 0
  407. //nParam = nGroupIndex 好友所到的新组的索引
  408. //Return = (int)(bool) bSuccessed
  409. GOI_CHAT_SET_STATUS, //切换聊天状态
  410. //uParam = (CHAT_STATUS)eStatus 新的聊天状态
  411. GOI_CHAT_WORDS_TO_FRIEND, //发给好友一条讯息
  412. //uParam = (KUiChatMessage*)pMessage 消息数据
  413. //nParam = (KUiPlayerItem*)pFriend   发来讯息的好友
  414. GOI_CHAT_FRIEND_INVITE, //对别人要加自己为好友的回复
  415. //uParam = (KUiPlayerItem*)pRequestPlayer 发出请求的玩家
  416. //nParam = (int)(bool)bAccept 是否接受请求
  417. GOI_OPTION_SETTING, //选项设置
  418. //uParam = (OPTIONS_LIST)eOptionItem 要设置的选项
  419. //nParam = (int)nValue 设置的值,其含义依赖于eOptionItem的含义
  420. // 参看OPTIONS_LIST各值的注释
  421. GOI_IS_SCENE_MAP_SHOWING, //设置场景的小地图是否显示的状态
  422. //uParam = uShowElem, //显示哪些内容,取值为SCENE_PLACE_MAP_ELEM枚举的一个或多个的组合。
  423. //SCENE_PLACE_MAP_ELEM在GameDataDef.h中定义
  424. //浏览小地图与其它一些项是互斥的
  425. //nParam = 低16位表示显示的宽度,高16位表示显示的高度(单位:像素点)
  426. GOI_PAINT_SCENE_MAP, //绘制场景的小地图
  427. //nParam = (KUiRegion*) h 与 v 表示绘制起始点在屏幕上横纵坐标坐标(单位:像素点),Width与Height值无意义
  428. //nParam = (KUiRegion*) pMapRegion 绘制地图的哪个范围,只在浏览小地图绘制时有效
  429. //Return = (int)(bool)bHaveMap 返回值表示当前场景是否有小地图
  430. GOI_PLAY_SOUND, //播放声音
  431. //uParam = (const char*)pszFileName
  432. GOI_GAMESPACE_DISCONNECTED, //游戏世界断开连接了
  433. };
  434. //-------游戏世界数据改变的通知函数原型---------
  435. struct IClientCallback
  436. {
  437. virtual void CoreDataChanged(unsigned int uDataId, unsigned int uParam, int nParam) = 0;
  438. virtual void ChannelMessageArrival(DWORD nChannelID, char* szSendName, const char* pMsgBuff, unsigned short nMsgLength) = 0;
  439. virtual void MSNMessageArrival(char* szSourceName, char* szSendName, const char* pMsgBuff, unsigned short nMsgLength) = 0;
  440. virtual void NotifyChannelID(char* ChannelName, DWORD channelid) = 0;
  441. };
  442. struct _declspec (novtable) iCoreShell
  443. {
  444. virtual int  GetProtocolSize(BYTE byProtocol) = 0;
  445. virtual int  Debug(unsigned int uDataId, unsigned int uParam, int nParam) = 0;
  446. //向游戏发送操作
  447. virtual int  OperationRequest(unsigned int uOper, unsigned int uParam, int nParam) = 0;
  448. //发送输入设备的输入操作消息
  449. virtual void ProcessInput(unsigned int uMsg, unsigned int uParam, int nParam) = 0;
  450. //找x, y所指的Player
  451. virtual int FindSelectPlayer(int x, int y, void* pReturn) = 0;
  452. //找Name指定的Player
  453. virtual int FindSpecialPlayer(char* Name, void* pReturn) = 0;
  454. virtual int ChatSpecialPlayer(void* pPlayer, const char* pMsgBuff, unsigned short nMsgLength) = 0;
  455. //从游戏世界获取数据
  456. virtual int  GetGameData(unsigned int uDataId, unsigned int uParam, int nParam) = 0;
  457. virtual int  FreeGameData(unsigned int uDataId, unsigned int uParam, int nParam) = 0;
  458. //绘制游戏对象
  459. virtual void DrawGameObj(unsigned int uObjGenre, unsigned int uId, int x, int y, int Width, int Height, int nParam) = 0;
  460. //绘制游戏世界
  461. virtual void DrawGameSpace() = 0;
  462. virtual DWORD GetPing() = 0;
  463. virtual void SendPing() = 0;
  464. //设置游戏世界数据改变的通知函数
  465. virtual int  SetCallDataChangedNofify(IClientCallback* pNotifyFunc) = 0;
  466. //接受与分派处理网络消息
  467. virtual void NetMsgCallbackFunc(void* pMsgData) = 0;
  468. //设置绘图接口实例的指针
  469. virtual void SetRepresentShell(struct iRepresentShell* pRepresent) = 0;
  470. virtual void SetMusicInterface(void* pMusicInterface) = 0;
  471. virtual void SetRepresentAreaSize(int nWidth, int nHeight) = 0;
  472. //日常活动,core如果要寿终正寝则返回0,否则返回非0值
  473. virtual int  Breathe() = 0;
  474. //释放接口对象
  475. virtual void Release() = 0;
  476. virtual void SetClient(LPVOID pClient) = 0;
  477. virtual void SendNewDataToServer(void* pData, int nLength) = 0;
  478. };
  479. #ifndef CORE_EXPORTS
  480. //获取iCoreShell接口实例的指针
  481. extern "C" iCoreShell* CoreGetShell();
  482. #else
  483. //对外发送游戏世界数据发生改变的通知
  484. void CoreDataChanged(unsigned int uDataId, unsigned int uParam, int nParam);
  485. #endif