2022-03-05 12:44:06 +02:00
|
|
|
|
#ifndef __INC_METIN_II_GAME_SHOP_H__
|
|
|
|
|
#define __INC_METIN_II_GAME_SHOP_H__
|
|
|
|
|
|
|
|
|
|
enum
|
|
|
|
|
{
|
|
|
|
|
SHOP_MAX_DISTANCE = 1000
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
class CGrid;
|
|
|
|
|
|
|
|
|
|
/* ---------------------------------------------------------------------------------- */
|
|
|
|
|
class CShop
|
|
|
|
|
{
|
|
|
|
|
public:
|
|
|
|
|
typedef struct shop_item
|
|
|
|
|
{
|
|
|
|
|
DWORD vnum; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ȣ
|
2022-03-12 11:39:41 +02:00
|
|
|
|
int price; // <20><><EFBFBD><EFBFBD>
|
2022-03-05 12:44:06 +02:00
|
|
|
|
BYTE count; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
|
|
|
|
|
|
|
|
|
LPITEM pkItem;
|
|
|
|
|
int itemid; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̵<EFBFBD>
|
|
|
|
|
|
|
|
|
|
shop_item()
|
|
|
|
|
{
|
|
|
|
|
vnum = 0;
|
|
|
|
|
price = 0;
|
|
|
|
|
count = 0;
|
|
|
|
|
itemid = 0;
|
|
|
|
|
pkItem = NULL;
|
|
|
|
|
}
|
|
|
|
|
} SHOP_ITEM;
|
|
|
|
|
|
|
|
|
|
CShop();
|
|
|
|
|
~CShop();
|
|
|
|
|
|
|
|
|
|
bool Create(DWORD dwVnum, DWORD dwNPCVnum, TShopItemTable * pItemTable);
|
|
|
|
|
void SetShopItems(TShopItemTable * pItemTable, BYTE bItemCount);
|
|
|
|
|
|
|
|
|
|
virtual void SetPCShop(LPCHARACTER ch);
|
|
|
|
|
virtual bool IsPCShop() { return m_pkPC ? true : false; }
|
|
|
|
|
|
|
|
|
|
// <20>Խ<EFBFBD>Ʈ <20>߰<EFBFBD>/<2F><><EFBFBD><EFBFBD>
|
|
|
|
|
virtual bool AddGuest(LPCHARACTER ch,DWORD owner_vid, bool bOtherEmpire);
|
|
|
|
|
void RemoveGuest(LPCHARACTER ch);
|
|
|
|
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
|
|
|
|
virtual int Buy(LPCHARACTER ch, BYTE pos);
|
|
|
|
|
|
|
|
|
|
// <20>Խ<EFBFBD>Ʈ<EFBFBD><C6AE><EFBFBD><EFBFBD> <20><>Ŷ<EFBFBD><C5B6> <20><><EFBFBD><EFBFBD>
|
|
|
|
|
void BroadcastUpdateItem(BYTE pos);
|
|
|
|
|
|
|
|
|
|
// <20>Ǹ<EFBFBD><C7B8><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>˷<EFBFBD><CBB7>ش<EFBFBD>.
|
|
|
|
|
int GetNumberByVnum(DWORD dwVnum);
|
|
|
|
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ϵǾ<CFB5> <20>ִ<EFBFBD><D6B4><EFBFBD> <20>˷<EFBFBD><CBB7>ش<EFBFBD>.
|
|
|
|
|
virtual bool IsSellingItem(DWORD itemID);
|
|
|
|
|
|
|
|
|
|
DWORD GetVnum() { return m_dwVnum; }
|
|
|
|
|
DWORD GetNPCVnum() { return m_dwNPCVnum; }
|
|
|
|
|
|
|
|
|
|
protected:
|
|
|
|
|
void Broadcast(const void * data, int bytes);
|
|
|
|
|
|
|
|
|
|
protected:
|
|
|
|
|
DWORD m_dwVnum;
|
|
|
|
|
DWORD m_dwNPCVnum;
|
|
|
|
|
|
|
|
|
|
CGrid * m_pGrid;
|
|
|
|
|
|
2022-03-06 00:01:03 +02:00
|
|
|
|
typedef std::unordered_map<LPCHARACTER, bool> GuestMapType;
|
2022-03-05 12:44:06 +02:00
|
|
|
|
GuestMapType m_map_guest;
|
|
|
|
|
std::vector<SHOP_ITEM> m_itemVector; // <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD> <20><><EFBFBD>ǵ<EFBFBD>
|
|
|
|
|
|
|
|
|
|
LPCHARACTER m_pkPC;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
#endif
|