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

模拟服务器

开发平台:

C/C++

  1. #ifndef KItemSetH
  2. #define KItemSetH
  3. #include "KLinkArray.h"
  4. #define IN
  5. #define OUT
  6. class KItem;
  7. enum enumAbrade
  8. {
  9. enumAbradeAttack = 0,
  10. enumAbradeDefend,
  11. enumAbradeMove,
  12. enumAbradeNum,
  13. };
  14. // 玩家之间交易进行时,用于判断玩家物品栏能否放下买进的物品
  15. typedef struct
  16. {
  17. int m_nIdx;
  18. int m_nX;
  19. int m_nY;
  20. int m_nWidth;
  21. int m_nHeight;
  22. } TRADE_ITEM_INFO;
  23. typedef struct
  24. {
  25. int nPriceScale;
  26. int nMagicScale;
  27. } REPAIR_ITEM_PARAM;
  28. class KItemSet
  29. {
  30. private:
  31. DWORD m_dwIDCreator; // ID生成器,用于客户端与服务器端的交流
  32. KLinkArray m_FreeIdx; // 可用表
  33. KLinkArray m_UseIdx; // 已用表
  34. public:
  35. int m_nItemAbradeRate[enumAbradeNum][itempart_num];
  36. REPAIR_ITEM_PARAM m_sRepairParam;
  37. #ifdef _SERVER
  38. // 玩家之间交易进行时,用于判断玩家物品栏能否放下买进的物品
  39. TRADE_ITEM_INFO *m_psItemInfo;
  40. // 玩家之间交易进行时,用于判断玩家物品栏能否放下买进的物品
  41. TRADE_ITEM_INFO *m_psBackItemInfo;
  42. // copy m_psItemInfo to m_psBackItemInfo
  43. void BackItemInfo();
  44. // 用于玩家被PK死亡后的惩罚计算,掉落随身物品
  45. PlayerItem m_sLoseItemFromEquipmentRoom[EQUIPMENT_ROOM_WIDTH * EQUIPMENT_ROOM_HEIGHT];
  46. // 用于玩家被PK死亡后的惩罚计算,掉落穿在身上的装备
  47. PlayerItem m_sLoseEquipItem[itempart_num];
  48. #endif
  49. public:
  50. KItemSet();
  51. ~KItemSet();
  52. void Init();
  53. int GetItemCount(IN int nItemGenre = -1);
  54. int SearchID(IN DWORD dwID);
  55. int Add(KItem* pItem);
  56. int Add(IN int nItemGenre, IN int nSeries, IN int nLevel, IN int nLuck, IN int nDetail = -1, IN int nParticular = -1, IN int* pnMagicLevel = NULL, IN int nVersion = 0, IN UINT nRandomSeed = 0);
  57. void Remove(IN int nIdx);
  58. int GetAbradeRange(IN int nType, IN int nPart);
  59. private:
  60. void SetID(IN int nIdx);
  61. int FindFree();
  62. };
  63. extern KItemSet ItemSet;
  64. #endif