Guest User

Untitled

a guest
Dec 1st, 2020
47
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.60 KB | None | 0 0
  1. #ifndef __INC_METIN_II_GAME_SHOP_H__
  2. #define __INC_METIN_II_GAME_SHOP_H__
  3.  
  4. enum
  5. {
  6. SHOP_MAX_DISTANCE = 1000
  7. };
  8.  
  9. class CGrid;
  10.  
  11. /* ---------------------------------------------------------------------------------- */
  12. class CShop
  13. {
  14. public:
  15. typedef struct shop_item
  16. {
  17. DWORD vnum; // 아이템 번호
  18. #ifdef FULL_YANG
  19. long long price; // °ˇ°Y
  20. #else
  21. DWORD price; // °ˇ°Y
  22. #endif
  23. #ifdef ENABLE_MULTISHOP
  24. DWORD wPriceVnum;
  25. DWORD wPrice;
  26. #endif
  27. BYTE count; // 아이템 개수
  28.  
  29. LPITEM pkItem;
  30. int itemid; // 아이템 고유아이디
  31.  
  32. shop_item()
  33. {
  34. vnum = 0;
  35. price = 0;
  36. #ifdef ENABLE_MULTISHOP
  37. wPriceVnum = 0;
  38. wPrice = 0;
  39. #endif
  40. count = 0;
  41. itemid = 0;
  42. pkItem = NULL;
  43. }
  44. } SHOP_ITEM;
  45.  
  46. CShop();
  47. virtual ~CShop(); // @fixme139 (+virtual)
  48.  
  49. bool Create(DWORD dwVnum, DWORD dwNPCVnum, TShopItemTable * pItemTable);
  50. void SetShopItems(TShopItemTable * pItemTable, BYTE bItemCount);
  51.  
  52. virtual void SetPCShop(LPCHARACTER ch);
  53. virtual bool IsPCShop() { return m_pkPC ? true : false; }
  54.  
  55. // 게스트 추가/삭제
  56. virtual bool AddGuest(LPCHARACTER ch,DWORD owner_vid, bool bOtherEmpire);
  57. void RemoveGuest(LPCHARACTER ch);
  58.  
  59. // 물건 구입
  60. #ifdef ENABLE_YANG_LIMIT
  61. virtual long long Buy(LPCHARACTER ch, BYTE pos);
  62. #else
  63. virtual int Buy(LPCHARACTER ch, BYTE pos);
  64. #endif
  65.  
  66. // 게스트에게 패킷을 보냄
  67. void BroadcastUpdateItem(BYTE pos);
  68.  
  69. // 판매중인 아이템의 갯수를 알려준다.
  70. int GetNumberByVnum(DWORD dwVnum);
  71.  
  72. // 아이템이 상점에 등록되어 있는지 알려준다.
  73. virtual bool IsSellingItem(DWORD itemID);
  74. #if defined(SHOP_SEARCH)
  75. bool SearchItem(DWORD vnum,long long price,DWORD book);
  76.  
  77. #endif
  78.  
  79. DWORD GetVnum() { return m_dwVnum; }
  80. DWORD GetNPCVnum() { return m_dwNPCVnum; }
  81.  
  82. protected:
  83. void Broadcast(const void * data, int bytes);
  84.  
  85. protected:
  86. DWORD m_dwVnum;
  87. DWORD m_dwNPCVnum;
  88.  
  89. CGrid * m_pGrid;
  90.  
  91. typedef TR1_NS::unordered_map<LPCHARACTER, bool> GuestMapType;
  92. GuestMapType m_map_guest;
  93. std::vector<SHOP_ITEM> m_itemVector; // 이 상점에서 취급하는 물건들
  94.  
  95. LPCHARACTER m_pkPC;
  96.  
  97. #ifdef OFFLINE_SHOP
  98. public:
  99. int GetItemCount();
  100. bool GetItems();
  101. void SetLocked(bool val) { m_bLocked = val; }
  102. bool IsLocked() { return m_bLocked; }
  103. void RemoveGuests(LPCHARACTER except=NULL);
  104. void ClearItems();
  105. void SetPrivShopItems(std::vector<TShopItemTable *> map_shop);
  106. LPCHARACTER GetPC() { return m_pkPC; }
  107. protected:
  108. bool m_bLocked;
  109. #endif
  110.  
  111. };
  112.  
  113. #endif
  114.  
Advertisement
Add Comment
Please, Sign In to add comment