本文整理汇总了C++中NPC::getShopType方法的典型用法代码示例。如果您正苦于以下问题:C++ NPC::getShopType方法的具体用法?C++ NPC::getShopType怎么用?C++ NPC::getShopType使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类NPC
的用法示例。
在下文中一共展示了NPC::getShopType方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: executeNormal
//.........这里部分代码省略.........
SAFE_DELETE(pBeltItem);
}
}
}
}
// Skull 일 경우 Variable Manager 에서 머리값 배수 값으로 가격을 새로 계산한다
if (pItem->getItemClass() == Item::ITEM_CLASS_SKULL)
itemPrice = itemPrice * (g_pVariableManager->getHeadPriceBonus() / 100);
// ItemTrace Log 를 남겨야 한다면 남긴다
if (pItem != NULL && pItem->isTraceItem() )
remainTraceLog(pItem, pCreature->getName() , pNPC->getName(), ITEM_LOG_DELETE, DETAIL_SHOPSELL);
// 플레이어에게 물건값을 지불한다.
// pPC->setGoldEx(playerMoney+itemPrice);
// by sigi. 2002.9.4
pPC->increaseGoldEx(itemPrice);
// 플레이어가 물건 팔 때 처리할 것들을 처리한다.
pPC->sellItem(pItem);
if (pItem->getItemClass() == Item::ITEM_CLASS_MOON_CARD && pItem->getItemType() == 4)
addOlympicStat(pPC, 4, (uint)(itemNumber));
bool bClearDefaultOptionTypes = false;
if (pItem->getItemClass() == Item::ITEM_CLASS_EVENT_ITEM && pItem->getItemType() >= 32 && pItem->getItemType() <= 36)
bClearDefaultOptionTypes = true;
// NPC에게 자리가 충분하다면 플레이어가 판 아이템을 보관한다.
// 운영자 명령어로 만든 아이템은 바로 없앤다.
// 단 스페셜 아이템만을 보관한다. 노말 아이템은 그냥 버림.
// 퀘스트 아이템은 보관하지 않고 버린다.
if (pNPC->getShopType()==SHOPTYPE_NORMAL &&
pItem->getCreateType()!=Item::CREATE_TYPE_CREATE &&
!pItem->getOptionTypeList().empty() &&
!pItem->isTimeLimitItem()) {
bSpecialItem = true;
index = pNPC->getFirstEmptySlot(SHOP_RACK_SPECIAL);
if (index < SHOP_RACK_INDEX_MAX) {
// 아이템을 추가한다.
pNPC->insertShopItem(SHOP_RACK_SPECIAL, index, pItem);
// 스페셜 아이템을 NPC가 진열장에 추가했으므로, 상점 버전이 올라간다.
pNPC->increaseShopVersion(SHOP_RACK_SPECIAL);
////////////////////////////////////////////////////////////////////////////
// 근처의 플레이어들에게는 GCShopBought를...
////////////////////////////////////////////////////////////////////////////
int CenterX = pNPC->getX();
int CenterY = pNPC->getY();
Creature* pNearCreature = NULL;
Player* pNearPlayer = NULL;
GCShopBought boughtpkt;
boughtpkt.setObjectID(NPCID);
if (!pItem->getOptionTypeList().empty()) {
boughtpkt.setShopVersion(pNPC->getShopVersion(SHOP_RACK_SPECIAL));
boughtpkt.setShopType(SHOP_RACK_SPECIAL);
} else {
boughtpkt.setShopVersion(pNPC->getShopVersion(SHOP_RACK_NORMAL));
boughtpkt.setShopType(SHOP_RACK_NORMAL);
}
boughtpkt.setShopIndex(index);
示例2: execute
void CGShopRequestListHandler::execute(CGShopRequestList* pPacket , Player* pPlayer)
throw(ProtocolException , Error)
{
__BEGIN_TRY __BEGIN_DEBUG_EX
#ifdef __GAME_SERVER__
Assert(pPacket != NULL);
Assert(pPlayer != NULL);
// 패킷에서 정보를 뽑아낸다.
ObjectID_t NPCID = pPacket->getObjectID();
ShopRackType_t type = pPacket->getRackType();
// 파라미터 및 패킷에서 뽑아낸 정보를 가공
GamePlayer* pGamePlayer = dynamic_cast<GamePlayer*>(pPlayer);
PlayerCreature* pPC = dynamic_cast<PlayerCreature*>(pGamePlayer->getCreature());
Zone* pZone = pPC->getZone();
Creature* pNPCBase = NULL;
/*
try
{
pNPCBase = pZone->getCreature(NPCID);
}
catch (NoSuchElementException & nsee)
{
pNPCBase = NULL;
}
*/
// NoSuch제거. by sigi. 2002.5.2
pNPCBase = pZone->getCreature(NPCID);
if (pNPCBase == NULL || pNPCBase->isNPC() == false)
{
GCNPCResponse gcNPCResponse;
pPlayer->sendPacket(&gcNPCResponse);
return;
}
NPC* pNPC = dynamic_cast<NPC*>(pNPCBase);
if (type == SHOP_RACK_SPECIAL)
{
// 상품의 리스트를 패킷에다 작성한다.
GCShopList pkt;
pkt.setNPCShopType(pNPC->getShopType());
pkt.setObjectID(NPCID);
pkt.setShopVersion(pNPC->getShopVersion(type));
pkt.setShopType(type);
for (BYTE i=0; i<SHOP_RACK_INDEX_MAX; i++)
{
// 각각의 아이템 정보를 적는다.
Item* pItem = pNPC->getShopItem(type, i);
if (pItem != NULL) pkt.setShopItem(i, pItem);
}
pkt.setMarketCondBuy(pNPC->getMarketCondBuy());
// pkt.setMarketCondSell(pNPC->getMarketCondSell());
pkt.setMarketCondSell(pNPC->getTaxRatio(pPC));
// 패킷을 보내자.
pPlayer->sendPacket(&pkt);
}
else if (type == SHOP_RACK_MYSTERIOUS)
{
// 상품의 리스트를 패킷에다 작성한다.
GCShopListMysterious pkt;
pkt.setObjectID(NPCID);
pkt.setShopVersion(pNPC->getShopVersion(type));
pkt.setShopType(type);
for (BYTE i=0; i<SHOP_RACK_INDEX_MAX; i++)
{
// 각각의 아이템 정보를 적는다.
Item* pItem = pNPC->getShopItem(type, i);
if (pItem != NULL)
pkt.setShopItem(i, pItem);
}
pkt.setMarketCondBuy(pNPC->getMarketCondBuy());
// pkt.setMarketCondSell(pNPC->getMarketCondSell());
pkt.setMarketCondSell(pNPC->getTaxRatio(pPC));
// 패킷을 보내자.
pPlayer->sendPacket(&pkt);
}
else
{
throw ProtocolException("NORMAL shop item list not allowed!!!");
}
#endif
__END_DEBUG_EX __END_CATCH
}