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

模拟服务器

开发平台:

C/C++

  1. /*****************************************************************************************
  2. // 外界访问Core用到数据结构等的定义
  3. // Copyright : Kingsoft 2002
  4. // Author :   Wooy(Wu yue)
  5. // CreateTime: 2002-9-12
  6. ------------------------------------------------------------------------------------------
  7. 一些定义可能处于在游戏世界各模块的头文件中,请在此处包含那个头文件,并请那样的头文件
  8. 不要包含一些与游戏世界对外无关的内容。
  9.     开发过程中游戏世界的外部客户在未获得游戏世界接口完整定义的情况下,会现先直接在此文件
  10. 定义它需要的数据定义,游戏世界各模块可根据自身需要与设计把定义作修改或移动到模块内的对外
  11. 头文件,并在此建立充要的包含。
  12. *****************************************************************************************/
  13. #ifndef GAMEDATADEF_H
  14. #define GAMEDATADEF_H
  15. #include "CoreObjGenreDef.h"
  16. #include "CoreUseNameDef.h"
  17. #define ITEM_VERSION 1
  18. #define _CHAT_SCRIPT_OPEN
  19. #define MAX_TEAM_MEMBER 7 // 最大队员数量(不包括队长)
  20. #define MAX_SENTENCE_LENGTH 256 // 聊天每个语句最大长度
  21. #define FILE_NAME_LENGTH 80
  22. #define PLAYER_PICKUP_CLIENT_DISTANCE 63
  23. #define defMAX_EXEC_OBJ_SCRIPT_DISTANCE 200
  24. #define defMAX_PLAYER_SEND_MOVE_FRAME 5
  25. #define PLAYER_PICKUP_SERVER_DISTANCE 40000
  26. #define MAX_INT 0x7fffffff
  27. #define ROLE_NO 2
  28. #define PLAYER_MALE_NPCTEMPLATEID -1
  29. #define PLAYER_FEMALE_NPCTEMPLATEID -2
  30. #define PLAYER_SHARE_EXP_DISTANCE 768
  31. #define MAX_DEATH_PUNISH_PK_VALUE 10 // PK处罚,PK值从 0 到 10
  32. enum ITEM_PART
  33. {
  34. itempart_head = 0, // 头
  35. itempart_body, // 身体
  36. itempart_belt, // 腰带
  37. itempart_weapon, // 武器
  38. itempart_foot,
  39. itempart_cuff,
  40. itempart_amulet,
  41. itempart_ring1,
  42. itempart_ring2,
  43. itempart_pendant,
  44. itempart_horse,
  45. itempart_num,
  46. };
  47. typedef struct
  48. {
  49. int nIdx;
  50. int nPlace;
  51. int nX;
  52. int nY;
  53. } PlayerItem;
  54. enum INVENTORY_ROOM
  55. {
  56. room_equipment = 0, // 装备栏
  57. room_repository, // 贮物箱
  58. room_trade, // 交易栏
  59. room_tradeback, // 交易过程中装备栏的备份
  60. room_trade1, // 交易过程中对方的交易栏
  61. room_immediacy, // 快捷物品
  62. room_num, // 空间数量
  63. };
  64. enum ITEM_POSITION
  65. {
  66. pos_hand = 1, // 手上
  67. pos_equip, // 装备着的
  68. pos_equiproom, // 道具栏
  69. pos_repositoryroom, // 贮物箱
  70. pos_traderoom, // 交易栏
  71. pos_trade1, // 交易过程中对方的交易栏
  72. pos_immediacy, // 快捷物品
  73. };
  74. #define MAX_HAND_ITEM 1
  75. #define EQUIPMENT_ROOM_WIDTH 6
  76. #define EQUIPMENT_ROOM_HEIGHT 10
  77. #define MAX_EQUIPMENT_ITEM (EQUIPMENT_ROOM_WIDTH * EQUIPMENT_ROOM_HEIGHT)
  78. #define REPOSITORY_ROOM_WIDTH 6
  79. #define REPOSITORY_ROOM_HEIGHT 10
  80. #define MAX_REPOSITORY_ITEM (REPOSITORY_ROOM_WIDTH * REPOSITORY_ROOM_HEIGHT)
  81. #define TRADE_ROOM_WIDTH 10
  82. #define TRADE_ROOM_HEIGHT 4
  83. #define MAX_TRADE_ITEM (TRADE_ROOM_WIDTH * TRADE_ROOM_HEIGHT)
  84. #define MAX_TRADE1_ITEM MAX_TRADE_ITEM
  85. #define IMMEDIACY_ROOM_WIDTH 3
  86. #define IMMEDIACY_ROOM_HEIGHT 1
  87. #define MAX_IMMEDIACY_ITEM (IMMEDIACY_ROOM_WIDTH * IMMEDIACY_ROOM_HEIGHT)
  88. #define MAX_PLAYER_ITEM_RESERVED 32
  89. #define MAX_PLAYER_ITEM (MAX_EQUIPMENT_ITEM + MAX_REPOSITORY_ITEM + MAX_TRADE_ITEM + MAX_TRADE1_ITEM + MAX_IMMEDIACY_ITEM + itempart_num + MAX_HAND_ITEM + MAX_PLAYER_ITEM_RESERVED)
  90. #define REMOTE_REVIVE_TYPE 0
  91. #define LOCAL_REVIVE_TYPE 1
  92. #define MAX_MELEE_WEAPON 6
  93. #define MAX_RANGE_WEAPON 3
  94. #define MAX_ARMOR 14
  95. #define MAX_HELM 14
  96. #define MAX_RING 1
  97. #define MAX_BELT 2
  98. #define MAX_PENDANT 2
  99. #define MAX_AMULET 2
  100. #define MAX_CUFF 2
  101. #define MAX_BOOT 4
  102. #define MAX_HORSE 6
  103. #define MAX_NPC_TYPE 300
  104. #define MAX_NPC_LEVEL 100
  105. #define MAX_NPC_DIR 64
  106. #define MAX_WEAPON MAX_MELEE_WEAPON + MAX_RANGE_WEAPON
  107. #define MAX_SKILL_STATE 10
  108. #define MAX_NPC_HEIGHT 128
  109. #define MAX_RESIST 95
  110. #define MAX_HIT_PERCENT 95
  111. #define MIN_HIT_PERCENT 5
  112. #define MAX_NPC_RECORDER_STATE 8 //最大Npc可以记录下来的状态数量;
  113. #define PLAYER_MOVE_DO_NOT_MANAGE_DISTANCE 5
  114. #define NORMAL_NPC_PART_NO 5 // 普通npc图像默认为只有一个部件,这是第几个
  115. #ifndef _SERVER
  116. #define C_REGION_X(x) (LOWORD(SubWorld[0].m_Region[ (x) ].m_RegionID))
  117. #define C_REGION_Y(y) (HIWORD(SubWorld[0].m_Region[ (y) ].m_RegionID))
  118. #endif
  119. enum
  120. {
  121. CHAT_S_STOP = 0, // 非聊天状态
  122. CHAT_S_SCREEN, // 与同屏幕玩家聊天
  123. CHAT_S_SINGLE, // 与同服务器某玩家私聊
  124. CHAT_S_TEAM, // 与队伍全体成员交谈
  125. CHAT_S_NUM, // 聊天状态中类数
  126. };
  127. enum PLAYER_INSTANT_STATE
  128. {
  129. enumINSTANT_STATE_LEVELUP = 0,
  130. enumINSTANT_STATE_REVIVE,
  131. enumINSTANT_STATE_CREATE_TEAM,
  132. enumINSTANT_STATE_LOGIN,
  133. enumINSTANT_STATE_NUM,
  134. };
  135. enum CHAT_STATUS
  136. {
  137. CHAT_S_ONLINE = 0, //在线
  138. CHAT_S_BUSY, //忙碌
  139. CHAT_S_HIDE, //隐身
  140. CHAT_S_LEAVE, //离开
  141. CHAT_S_DISCONNECT, //掉线
  142. };
  143. // 注意:此枚举不允许更改(by zroc)
  144. enum OBJ_ATTRIBYTE_TYPE
  145. {
  146. series_metal = 0, // 金系
  147. series_wood, // 木系
  148. series_water, // 水系
  149. series_fire, // 火系
  150. series_earth, // 土系
  151. series_num,
  152. };
  153. enum OBJ_GENDER
  154. {
  155. OBJ_G_MALE = 0, //雄性,男的
  156. OBJ_G_FEMALE, //雌的,女的
  157. };
  158. enum NPCCAMP
  159. {
  160. camp_begin, // 新手阵营(加入门派前的玩家)
  161. camp_justice, // 正派阵营
  162. camp_evil, // 邪派阵营
  163. camp_balance, // 中立阵营
  164. camp_free, // 杀手阵营(出师后的玩家)
  165. camp_animal, // 野兽阵营
  166. camp_event, // 路人阵营
  167. camp_num, // 阵营数
  168. };
  169. enum ITEM_IN_ENVIRO_PROP
  170. {
  171. IIEP_NORMAL = 0, //一般/正常/可用
  172. IIEP_NOT_USEABLE, //不可用/不可装配
  173. IIEP_SPECIAL, //特定的不同情况
  174. };
  175. #define GOD_MAX_OBJ_TITLE_LEN 1024 //128临时改为1024为了兼容旧代码 to be modified
  176. #define GOD_MAX_OBJ_PROP_LEN 516
  177. #define GOD_MAX_OBJ_DESC_LEN 516
  178. //==================================
  179. // 游戏对象的描述
  180. //==================================
  181. struct KGameObjDesc
  182. {
  183. char szTitle[GOD_MAX_OBJ_TITLE_LEN]; //标题,名称
  184. char szProp[GOD_MAX_OBJ_PROP_LEN]; //属性,每行可以tab划分为靠左与靠右对齐两部分
  185. char szDesc[GOD_MAX_OBJ_DESC_LEN]; //描述
  186. };
  187. //==================================
  188. // 问题与可选答案
  189. //==================================
  190. struct KUiAnswer
  191. {
  192. char AnswerText[256]; //可选答案文字(可以包含控制符)
  193. int AnswerLen; //可选答案存储长度(包括控制符,不包含结束符)
  194. };
  195. struct KUiQuestionAndAnswer
  196. {
  197. char Question[512]; //问题文字(可以包含控制符)
  198. int QuestionLen; //问题文字存储长度(包括控制符,不包含结束符)
  199. int AnswerCount; //可选答案的数目
  200. KUiAnswer Answer[1]; //候选答案
  201. };
  202. //==================================
  203. // 简略表示游戏对象的结构
  204. //==================================
  205. struct KUiGameObject
  206. {
  207. unsigned int uGenre; //对象类属
  208. unsigned int uId; //对象id
  209. // int  nData; //与对象实例相关的某数据
  210. };
  211. //==================================
  212. // 以坐标表示的一个区域范围
  213. //==================================
  214. struct KUiRegion
  215. {
  216. int h; //左上角起点横坐标
  217. int v; //左上角起点纵坐标
  218. int Width; //区域横宽
  219. int Height; //区域纵宽
  220. };
  221. //==================================
  222. // 可以游戏对象容纳的地方
  223. //==================================
  224. enum UIOBJECT_CONTAINER
  225. {
  226. UOC_IN_HAND = 1, //手中拿着
  227. UOC_GAMESPACE, //游戏窗口
  228. UOC_IMMEDIA_ITEM, //快捷物品
  229. UOC_IMMEDIA_SKILL, //快捷武功0->右键武功,1,2...-> F1,F2...快捷武功
  230. UOC_ITEM_TAKE_WITH, //随身携带
  231. UOC_TO_BE_TRADE, //要被买卖,买卖面板上
  232. UOC_OTHER_TO_BE_TRADE, //买卖面板上,别人要卖给自己的,
  233. UOC_EQUIPTMENT, //身上装备
  234. UOC_NPC_SHOP, //npc买卖场所
  235. UOC_STORE_BOX, //储物箱
  236. UOC_SKILL_LIST, //列出全部拥有技能的窗口,技能窗口
  237. UOC_SKILL_TREE, //左、右可用技能树
  238. };
  239. //==================================
  240. // iCoreShell::GetGameData函数调用,uDataId取值为GDI_TRADE_DATA时,
  241. // uParam的许可取值列表
  242. // 注释中的Return:行表示相关的GetGameData调用的返回值的含义
  243. //==================================
  244. enum UI_TRADE_OPER_DATA
  245. {
  246. UTOD_IS_WILLING, //是否交易意向(叫卖中)
  247. //Return: 返回自己是否处于叫卖中的布尔值
  248. UTOD_IS_LOCKED, //自己是否处于已锁定状态
  249. //Return: 返回自己是否处于已锁定状态的布尔值
  250. UTOD_IS_TRADING, //是否可以正在等待交易操作(交易是否已确定)
  251. //Return: 返回是否正在等待交易操作(交易是否已确定)
  252. UTOD_IS_OTHER_LOCKED, //对方是否已经处于锁定状态
  253. //Return: 返回对方是否已经处于锁定状态的布尔值
  254. };
  255. //==================================
  256. // 买卖物品
  257. //==================================
  258. struct KUiItemBuySelInfo
  259. {
  260. char szItemName[64]; //物品名称
  261. int nPrice; //买卖价钱,正值为卖价格,负值表示买入的价格为(-nPrice)
  262. };
  263. //==================================
  264. // 表示某个游戏对象在坐标区域范围的信息结构
  265. //==================================
  266. struct KUiObjAtRegion
  267. {
  268. KUiGameObject Obj;
  269. KUiRegion Region;
  270. };
  271. struct KUiObjAtContRegion : public KUiObjAtRegion
  272. {
  273. union
  274. {
  275. UIOBJECT_CONTAINER eContainer; 
  276. int nContainer;
  277. };
  278. };
  279. struct KUiMsgParam
  280. {
  281. unsigned char eGenre; //取值范围为枚举类型MSG_GENRE_LIST,见MsgGenreDef.h文件
  282. unsigned char cChatPrefixLen;
  283. unsigned short nMsgLength;
  284. char szName[32];
  285. #define CHAT_MSG_PREFIX_MAX_LEN 16
  286. unsigned char cChatPrefix[CHAT_MSG_PREFIX_MAX_LEN];
  287. };
  288. struct KUiInformationParam
  289. {
  290. char sInformation[256]; //消息文字内容
  291. char sConfirmText[64]; //确认消息(按钮)的标题文字
  292. short nInforLen; //消息文字内容的存储长度
  293. bool bNeedConfirmNotify; //是否要发回确认消息(给core)
  294. bool bReserved; //保留,值固定为0
  295. };
  296. enum PLAYER_ACTION_LIST
  297. {
  298. PA_NONE = 0, //无动作
  299. PA_RUN  = 0x01, //跑
  300. PA_SIT  = 0x02, //打坐
  301. PA_RIDE = 0x04, //骑(马)
  302. };
  303. //==================================
  304. // 系统消息分类
  305. //==================================
  306. enum SYS_MESSAGE_TYPE
  307. {
  308. SMT_NORMAL = 0, //不参加分类的消息
  309. SMT_SYSTEM, //系统,连接相关
  310. SMT_PLAYER, //玩家相关
  311. SMT_TEAM, //组队相关
  312. SMT_FRIEND, //聊天好友相关
  313. SMT_MISSION, //任务相关
  314. SMT_CLIQUE, //帮派相关
  315. };
  316. //==================================
  317. // 系统消息响应方式
  318. //==================================
  319. enum SYS_MESSAGE_CONFIRM_TYPE
  320. {
  321. SMCT_NONE, //在对话消息窗口直接掠过,不需要响应。
  322. SMCT_CLICK, //点击图标后立即删除。
  323. SMCT_MSG_BOX, //点击图标后弹出消息框。
  324. SMCT_UI_RENASCENCE, //选择重生
  325. SMCT_UI_ATTRIBUTE, //打开属性页面
  326. SMCT_UI_SKILLS, //打开技能页面
  327. SMCT_UI_ATTRIBUTE_SKILLS,//打开属性页面技能页面
  328. SMCT_UI_TEAM_INVITE, //答应或拒绝加入队伍的邀请,
  329. // pParamBuf 指向一个KUiPlayerItem结构的数据,表示邀情人(队长)
  330. SMCT_UI_TEAM_APPLY, //答应或拒绝加入队伍的申请,
  331. // pParamBuf 指向一个KUiPlayerItem结构的数据,表示申请人
  332. SMCT_UI_TEAM, //打开队伍管理面板
  333. SMCT_UI_INTERVIEW, //打开聊天对话界面,
  334. // pParamBuf 指向一个KUiPlayerItem结构的数据,表示发来消息的好友
  335. SMCT_UI_FRIEND_INVITE, //批准或拒绝别人加自己为好友
  336. // pParamBuf 指向一个KUiPlayerItem结构的数据,表示发出好友邀请的人
  337. SMCT_UI_TRADE, //答应或拒绝交易的请求,
  338. // pParamBuf 指向一个KUiPlayerItem结构的数据,表示发出交易邀请的人
  339. SMCT_DISCONNECT, //断线
  340. SMCT_UI_TONG_JOIN_APPLY,//答应或拒绝加入帮会的申请
  341. };
  342. //==================================
  343. // 系统消息
  344. //==================================
  345. struct KSystemMessage
  346. {
  347. char szMessage[64]; //消息文本
  348. unsigned int uReservedForUi; //界面使用的数据域,core里填0即可
  349. unsigned char eType; //消息分类取值来自枚举类型 SYS_MESSAGE_TYPE
  350. unsigned char byConfirmType; //响应类型
  351. unsigned char byPriority; //优先级,数值越大,表示优先级越高
  352. unsigned char byParamSize; //伴随GDCNI_SYSTEM_MESSAGE消息的pParamBuf所指参数缓冲区空间的大小。
  353. };
  354. //==================================
  355. // 聊天频道的描述
  356. //==================================
  357. struct KUiChatChannel
  358. {
  359. int  nChannelNo;
  360. unsigned int uChannelId;
  361. union
  362. {
  363. int  nChannelIndex;
  364. int  nIsSubscibed; //是否被订阅
  365. };
  366. char  cTitle[32];
  367. };
  368. //==================================
  369. // 聊天好友的一个分组的信息
  370. //==================================
  371. struct KUiChatGroupInfo
  372. {
  373. char szTitle[32]; //分组的名称
  374. int nNumFriend; //组内好友的数目
  375. };
  376. //==================================
  377. // 好友发来的聊天话语
  378. //==================================
  379. struct KUiChatMessage
  380. {
  381. unsigned int uColor;
  382. short nContentLen;
  383. char szContent[256];
  384. };
  385. //==================================
  386. // 主角的一些不易变的数据
  387. //==================================
  388. struct KUiPlayerBaseInfo
  389. {
  390. char Agname[32]; //绰号
  391. char Name[32]; //名字
  392. char Title[32]; //称号
  393. int nCurFaction;// 当前加入门派 id ,如果为 -1 ,当前没有在门派中
  394. int nRankInWorld;//江湖排名值,值为0表示未上排名板
  395. unsigned int nCurTong;// 当前加入帮派name id ,如果为 0 ,当前没有在帮派中
  396. };
  397. //==================================
  398. // 主角的一些易变的数据
  399. //==================================
  400. struct KUiPlayerRuntimeInfo
  401. {
  402. int nLifeFull; //生命满值
  403. int nLife; //生命
  404. int nManaFull; //内力满值
  405. int nMana; //内力
  406. int nStaminaFull; //体力满值
  407. int nStamina; //体力
  408. int nAngryFull; //怒满值
  409. int nAngry; //怒
  410. int nExperienceFull; //经验满值
  411. int nExperience; //当前经验值
  412. int nCurLevelExperience;//当前级别升级需要的经验值
  413. unsigned char byActionDisable;//是否不可进行各种动作,为枚举PLAYER_ACTION_LIST取值的组合
  414. unsigned char byAction; //正在进行的行为动作,为枚举PLAYER_ACTION_LIST取值的组合
  415. unsigned short wReserved; //保留
  416. };
  417. //==================================
  418. // 主角的一些属性数据索引
  419. //==================================
  420. enum UI_PLAYER_ATTRIBUTE
  421. {
  422. UIPA_STRENGTH = 0, //力量
  423. UIPA_DEXTERITY, //敏捷
  424. UIPA_VITALITY, //活力
  425. UIPA_ENERGY, //精力
  426. };
  427. //==================================
  428. // 主角的一些易变的属性数据
  429. //==================================
  430. struct KUiPlayerAttribute
  431. {
  432. int nMoney; //银两
  433. int nLevel; //等级
  434. char StatusDesc[16]; //状态描述
  435. int nBARemainPoint; //基本属性剩余点数
  436. int nStrength; //力量
  437. int nDexterity; //敏捷
  438. int nVitality; //活力
  439. int nEnergy; //精力
  440. int nKillMAX; //最大杀伤力
  441. int nKillMIN; //最小杀伤力
  442. int nRightKillMax; //右键最大杀伤力
  443. int nRightKillMin; //右键最小杀伤力
  444. int nAttack; //攻击力
  445. int nDefence; //防御力
  446. int nMoveSpeed; //移动速度
  447. int nAttackSpeed; //攻击速度
  448. int nPhyDef; //物理防御
  449. int nCoolDef; //冰冻防御
  450. int nLightDef; //闪电防御
  451. int nFireDef; //火焰防御
  452. int nPoisonDef; //毒素防御
  453. };
  454. //==================================
  455. // 主角的立即使用物品与武功
  456. //==================================
  457. struct KUiPlayerImmedItemSkill
  458. {
  459. KUiGameObject ImmediaItem[3];
  460. KUiGameObject IMmediaSkill[2];
  461. };
  462. //==================================
  463. // 主角装备安换的位置
  464. //==================================
  465. enum UI_EQUIPMENT_POSITION
  466. {
  467. UIEP_HEAD = 0, //头戴
  468. UIEP_HAND = 1, //手持
  469. UIEP_NECK = 2, //脖子
  470. UIEP_FINESSE = 3, //手腕
  471. UIEP_BODY = 4, //身穿
  472. UIEP_WAIST = 5, //腰部
  473. UIEP_FINGER1 = 6, //手指甲
  474. UIEP_FINGER2 = 7, //手指乙
  475. UIEP_WAIST_DECOR= 8,//腰坠
  476. UIEP_FOOT = 9, //脚踩
  477. UIEP_HORSE = 10, //马匹
  478. };
  479. //==================================
  480. // 主角的生活技能数据
  481. //==================================
  482. struct KUiPlayerLiveSkillBase
  483. {
  484. int nRemainPoint; //剩余技能点数
  485. int nLiveExperience; //当前技能经验值
  486. int nLiveExperienceFull; //升到下级需要的经验值
  487. };
  488. //==================================
  489. // 单项技能数据
  490. //==================================
  491. struct KUiSkillData : public KUiGameObject
  492. {
  493. union
  494. {
  495. int nLevel;
  496. int nData;
  497. };
  498. };
  499. //==================================
  500. // 一个队伍中最多包含成员的数目
  501. //==================================
  502. #define PLAYER_TEAM_MAX_MEMBER 8
  503. //==================================
  504. // 统帅能力相关的数据
  505. //==================================
  506. struct KUiPlayerLeaderShip
  507. {
  508. int nLeaderShipLevel; //统帅力等级
  509. int nLeaderShipExperience; //统帅力经验值
  510. int nLeaderShipExperienceFull; //升到下级需要的经验值
  511. };
  512. //==================================
  513. // 一个玩家角色项
  514. //==================================
  515. struct KUiPlayerItem
  516. {
  517. char Name[32]; //玩家角色姓名
  518. unsigned int uId; //玩家角色id
  519. int nIndex; //玩家角色索引
  520. int nData; //此玩家相关的一项数值,含义与具体的应用位置有关
  521. };
  522. //==================================
  523. // 组队信息的描述
  524. //==================================
  525. struct KUiTeamItem
  526. {
  527. KUiPlayerItem Leader;
  528. };
  529. //==================================
  530. // 队伍信息
  531. //==================================
  532. struct KUiPlayerTeam
  533. {
  534. bool bTeamLeader; //玩家自己是否队长
  535. char cNumMember; //队员数目
  536. char cNumTojoin; //欲加入的人员的数目
  537. bool bOpened; //队伍是否允许其他人加入
  538. int nTeamServerID; //队伍在服务器上的id,用于标识该队伍,-1 为空
  539. int nCaptainPower;
  540. };
  541. //==================================
  542. // 魔法属性
  543. //==================================
  544. #ifndef MAGICATTRIB
  545. #define MAGICATTRIB
  546. struct KMagicAttrib
  547. {
  548. int nAttribType; //属性类型
  549. int nValue[3]; //属性参数
  550. KMagicAttrib(){nValue[0] = nValue[1] = nValue[2] = nAttribType = 0;};
  551. };
  552. #else
  553. struct KMagicAttrib;
  554. #endif
  555. /* 这是旧的代码,新的已经放在KNpcGold里面处理了
  556. //==================================
  557. // NPC加强
  558. //==================================
  559. struct KNpcEnchant
  560. {
  561. int nExp; // 经验
  562. int nLife; // 生命
  563. int nLifeReplenish; // 回血
  564. int nAttackRating; // 命中
  565. int nDefense; // 防御
  566. int nMinDamage;
  567. int nMaxDamage;
  568. int TreasureNumber; // 装备
  569. int AuraSkill; // 光环
  570. int DamageEnhance; // 伤害
  571. int SpeedEnhance; // 速度
  572. int SelfResist; // 自身抗性
  573. int ConquerResist; // 相生抗性
  574. #ifndef _SERVER
  575. char NameModify[32]; // 改名
  576. #endif
  577. };
  578. //==================================
  579. // NPC单项加强
  580. //==================================
  581. struct KNpcSpeicalEnchant
  582. {
  583. int ValueModify;
  584. char NameModify[16];
  585. };
  586. */
  587. struct KMapPos
  588. {
  589. int nSubWorld;
  590. int nRegion;
  591. int nMapX;
  592. int nMapY;
  593. int nOffX;
  594. int nOffY;
  595. };
  596. //==================================
  597. // 选项设置项
  598. //==================================
  599. enum OPTIONS_LIST
  600. {
  601. OPTION_PERSPECTIVE, //透视模式  nParam = (int)(bool)bEnable 是否开启
  602. OPTION_DYNALIGHT, //动态光影 nParam = (int)(bool)bEnable 是否开启
  603. OPTION_MUSIC_VALUE, //音乐音量 nParam = 音量大小(取值为0到-10000)
  604. OPTION_SOUND_VALUE, //音效音量 nParam = 音量大小(取值为0到-10000)
  605. OPTION_BRIGHTNESS, //亮度调节 nParam = 亮度大小(取值为0到-100)
  606. OPTION_WEATHER, //天气效果开关 nParam = (int)(bool)bEnable 是否开启
  607. };
  608. //==================================
  609. // 所处的地域时间环境信息
  610. //==================================
  611. struct KUiSceneTimeInfo
  612. {
  613. char szSceneName[32]; //场景名
  614. int nSceneId; //场景id
  615. int nScenePos0; //场景当前坐标(东)
  616. int nScenePos1; //场景当前坐标(南)
  617. int nGameSpaceTime; //以分钟为单位
  618. };
  619. //==================================
  620. // 光源信息
  621. //==================================
  622. //整数表示的三维点坐标
  623. struct KPosition3
  624. {
  625. int nX;
  626. int nY;
  627. int nZ;
  628. };
  629. struct KLightInfo
  630. {
  631. KPosition3 oPosition; // 光源位置
  632. DWORD dwColor; // 光源颜色及亮度
  633. long  nRadius; // 作用半径
  634. };
  635. //小地图的显示内容项
  636. enum SCENE_PLACE_MAP_ELEM
  637. SCENE_PLACE_MAP_ELEM_NONE = 0x00, //无东西
  638. SCENE_PLACE_MAP_ELEM_PIC = 0x01, //显示缩略图
  639. SCENE_PLACE_MAP_ELEM_CHARACTER = 0x02, //显示人物
  640. SCENE_PLACE_MAP_ELEM_PARTNER = 0x04, //显示同队伍人
  641. };
  642. //场景的地图信息
  643. struct KSceneMapInfo
  644. {
  645. int nScallH; //真实场景相对于地图的横向放大比例
  646. int nScallV; //真实场景相对于地图的纵向放大比例
  647. int nFocusMinH;
  648. int nFocusMinV;
  649. int nFocusMaxH;
  650. int nFocusMaxV;
  651. int nOrigFocusH;
  652. int nOrigFocusV;
  653. int nFocusOffsetH;
  654. int nFocusOffsetV;
  655. };
  656. enum NPC_RELATION
  657. {
  658. relation_none = 1,
  659. relation_self = 2,
  660. relation_ally = 4,
  661. relation_enemy = 8,
  662. relation_dialog = 16,
  663. relation_all = relation_none | relation_ally | relation_enemy | relation_self | relation_dialog,
  664. relation_num,
  665. };
  666. enum NPCKIND
  667. {
  668. kind_normal = 0 ,
  669. kind_player,
  670. kind_partner,
  671. kind_dialoger, //对话者
  672. kind_bird,
  673. kind_mouse,
  674. /*kind_melee = 0x0004,
  675. kind_range = 0x0008,
  676. kind_escape = 0x0010,
  677. kind_bird = 0x0020,
  678. */
  679.     kind_num
  680. };
  681. enum // 物件类型
  682. {
  683. Obj_Kind_MapObj = 0, // 地图物件,主要用于地图动画
  684. Obj_Kind_Body, // npc 的尸体
  685. Obj_Kind_Box, // 宝箱
  686. Obj_Kind_Item, // 掉在地上的装备
  687. Obj_Kind_Money, // 掉在地上的钱
  688. Obj_Kind_LoopSound, // 循环音效
  689. Obj_Kind_RandSound, // 随机音效
  690. Obj_Kind_Light, // 光源(3D模式中发光的东西)
  691. Obj_Kind_Door, // 门类
  692. Obj_Kind_Trap, // 陷阱
  693. Obj_Kind_Prop, // 小道具,可重生
  694. Obj_Kind_Num, // 物件的种类数
  695. };
  696. //主角身份地位等一些关键属性项
  697. enum PLAYER_BRIEF_PROP
  698. {
  699. PBP_LEVEL = 1, //登级变化 nParam表示当前等级
  700. PBP_FACTION, //门派 nParam表示门派属性,如果nParam为-1表示没有门派
  701. PBP_CLIQUE, //帮派 nParam为非0值表示入了帮派,0值表示脱离了帮派
  702. };
  703. //新闻消息的类型定义
  704. enum NEWS_MESSAGE_TYPE
  705. {
  706. NEWSMESSAGE_NORMAL, //一般消息,显示(一次)就消息消亡了
  707. //无时间参数
  708. NEWSMESSAGE_COUNTING, //倒计(秒)数消息,计数到0时,就消息就消亡了。
  709. //时间参数中的数据结构中仅秒数据有效,倒计数以秒为单位。
  710. NEWSMESSAGE_TIMEEND, //定时消息,定时到时,消息就消完了,否则每半分钟显示一次。
  711. //时间参数表示消亡的指定时间。
  712. };
  713. #define MAX_MESSAGE_LENGTH 512
  714. struct KNewsMessage
  715. {
  716. int nType; //消息类型
  717. char sMsg[MAX_MESSAGE_LENGTH]; //消息内容
  718. int nMsgLen; //消息内容存储长度
  719. };
  720. struct KRankIndex
  721. {
  722. bool bValueAppened; //每一项是否有没有额外数据
  723. bool bSortFlag; //每一项是否有没有升降标记
  724. unsigned short usIndexId; //排名项ID数值
  725. };
  726. #define MAX_RANK_MESSAGE_STRING_LENGTH 128
  727. struct KRankMessage
  728. {
  729. char szMsg[MAX_RANK_MESSAGE_STRING_LENGTH]; // 文字内容
  730. unsigned short usMsgLen; // 文字内容的长度
  731. short cSortFlag; // 旗标值,QOO_RANK_DATA的时候表示出升降,负值表示降,正值表示升,0值表示位置未变
  732. int nValueAppend; // 此项附带的值
  733. };
  734. struct KMissionRecord
  735. {
  736. char sContent[256]; //存储任务提示信息的缓冲区,(字符串为控制符已经编码的字符串)
  737. int nContentLen; //sContent内有效内容的长度(单位:字节),长度最大一定不超过256字节
  738. unsigned int uValue; //关联数值
  739. };
  740. //---------------------------- 帮会相关 ------------------------
  741. #define defTONG_MAX_DIRECTOR 7
  742. #define defTONG_MAX_MANAGER 56
  743. #define defTONG_ONE_PAGE_MAX_NUM 7
  744. #define defTONG_STR_LENGTH 32
  745. #define defTONG_NAME_MAX_LENGTH 8
  746. enum TONG_MEMBER_FIGURE
  747. {
  748. enumTONG_FIGURE_MEMBER, // 帮众
  749. enumTONG_FIGURE_MANAGER, // 队长
  750. enumTONG_FIGURE_DIRECTOR, // 长老
  751. enumTONG_FIGURE_MASTER, // 帮主
  752. enumTONG_FIGURE_NUM,
  753. };
  754. enum
  755. {
  756. enumTONG_APPLY_INFO_ID_SELF, // 申请查询自身信息
  757. enumTONG_APPLY_INFO_ID_MASTER, // 申请查询帮主信息
  758. enumTONG_APPLY_INFO_ID_DIRECTOR, // 申请查询长老信息
  759. enumTONG_APPLY_INFO_ID_MANAGER, // 申请查询队长信息
  760. enumTONG_APPLY_INFO_ID_MEMBER, // 申请查询帮众信息(一批帮众)
  761. enumTONG_APPLY_INFO_ID_ONE, // 申请查询某帮会成员信息(一个帮众)
  762. enumTONG_APPLY_INFO_ID_TONG_HEAD, // 申请查询某帮会信息,用于申请加入帮会
  763. enumTONG_APPLY_INFO_ID_NUM,
  764. };
  765. enum
  766. {
  767. enumTONG_CREATE_ERROR_ID1, // Player[m_nPlayerIndex].m_nIndex <= 0
  768. enumTONG_CREATE_ERROR_ID2, // 交易过程中
  769. enumTONG_CREATE_ERROR_ID3, // 帮会名问题
  770. enumTONG_CREATE_ERROR_ID4, // 帮会阵营问题
  771. enumTONG_CREATE_ERROR_ID5, // 已经是帮会成员
  772. enumTONG_CREATE_ERROR_ID6, // 自己的阵营问题
  773. enumTONG_CREATE_ERROR_ID7, // 等级问题
  774. enumTONG_CREATE_ERROR_ID8, // 钱问题
  775. enumTONG_CREATE_ERROR_ID9, // 组队不能建帮会
  776. enumTONG_CREATE_ERROR_ID10, // 帮会模块出错
  777. enumTONG_CREATE_ERROR_ID11, // 名字字符串出错
  778. enumTONG_CREATE_ERROR_ID12, // 名字字符串过长
  779. enumTONG_CREATE_ERROR_ID13, // 帮会同名错误
  780. enumTONG_CREATE_ERROR_ID14, // 帮会产生失败
  781. };
  782. //帮派信息
  783. struct KTongInfo
  784. {
  785. char  szName[8]; //帮会名字
  786. char  szMasterName[32]; //帮主名字
  787. int   nFaction; //帮会阵营
  788. int   nMoney; //帮会资金
  789. int   nReserve[2];
  790. int   nMemberCount;         //帮众数量
  791. int   nManagerCount;        //队长数量
  792. int   nDirectorCount;       //长老数量
  793. int   nFigure;              //待删除
  794. };
  795. //对帮内成员做的动作,或改变自己与帮会的关系的动作
  796. enum TONG_ACTION_TYPE
  797. {
  798. TONG_ACTION_DISMISS,       //踢人
  799. TONG_ACTION_ASSIGN,        //任命
  800. TONG_ACTION_DEMISE,        //传位
  801. TONG_ACTION_LEAVE,         //离帮
  802. TONG_ACTION_RECRUIT,       //招人状态
  803. TONG_ACTION_APPLY,         //申请加入
  804. };
  805. //对帮内成员做的动作,或改变自己与帮会的关系的动作时的参数
  806. struct KTongOperationParam
  807. {
  808. TONG_ACTION_TYPE eOper; //操作项
  809. int                 nData[4];
  810. char szPassword[32]; //操作项需要的密码,如果对应的操作项不需要密码,则直接填密码为空。
  811. };
  812. //帮会成员项
  813. struct KTongMemberItem : public KUiPlayerItem
  814. {
  815. char szAgname[64]; //在帮内的职务/称号
  816. };
  817. //某个玩家与XX的关系,(XX可以是帮会,队伍等等)
  818. struct KUiPlayerRelationWithOther : KUiPlayerItem
  819. {
  820. int nRelation;
  821. int nParam;
  822. };
  823. //通用的带名称描述游戏对象的结构
  824. struct KUiGameObjectWithName
  825. {
  826. char szName[32];
  827. char szString[32];
  828. int nData;
  829. int nParam;
  830. unsigned int  uParam;
  831. };
  832. //-------------------------- 帮会相关 end ----------------------
  833. #endif