本文整理汇总了C++中Inventory::findItem方法的典型用法代码示例。如果您正苦于以下问题:C++ Inventory::findItem方法的具体用法?C++ Inventory::findItem怎么用?C++ Inventory::findItem使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Inventory
的用法示例。
在下文中一共展示了Inventory::findItem方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: execute
////////////////////////////////////////////////////////////////////////////////
// 액션을 실행한다.
////////////////////////////////////////////////////////////////////////////////
void ActionTradeGiftBox::execute(Creature * pCreature1 , Creature * pCreature2)
throw(Error)
{
__BEGIN_TRY
Assert(pCreature1 != NULL);
Assert(pCreature2 != NULL);
Assert(pCreature1->isNPC());
Assert(pCreature2->isPC());
PlayerCreature* pPC = dynamic_cast<PlayerCreature*>(pCreature2);
Assert(pPC != NULL);
Player* pPlayer = pPC->getPlayer();
Assert(pPlayer != NULL);
Inventory* pInventory = pPC->getInventory();
Assert(pInventory != NULL);
Zone* pZone = pPC->getZone();
Assert(pZone != NULL);
FlagSet* pFlagSet = pPC->getFlagSet();
Item::ItemClass ItemClass;
ItemType_t ItemType;
OptionType_t OptionType;
Item* pItem;
Item* pGiftBoxItem;
// 이미 선물을 교환해 갔다면
if (pFlagSet->isOn(FLAGSET_TRADE_GIFT_BOX_2002_12 ) )
{
GCNPCResponse response;
response.setCode(NPC_RESPONSE_TRADE_GIFT_BOX_ALREADY_TRADE);
pPlayer->sendPacket(&response);
GCNPCResponse quit;
quit.setCode(NPC_RESPONSE_QUIT_DIALOGUE);
pPlayer->sendPacket(&quit);
return;
}
// 빨간 선물 상자가 있는지 확인한다.
CoordInven_t X,Y;
pGiftBoxItem = pInventory->findItem(Item::ITEM_CLASS_EVENT_GIFT_BOX, 1, X, Y);
if (pGiftBoxItem == NULL )
{
GCNPCResponse response;
response.setCode(NPC_RESPONSE_TRADE_GIFT_BOX_NO_ITEM);
pPlayer->sendPacket(&response);
GCNPCResponse quit;
quit.setCode(NPC_RESPONSE_QUIT_DIALOGUE);
pPlayer->sendPacket(&quit);
return;
}
LuaSelectItem* pLuaSelectItem = NULL;
string luaFileName;
if (pPC->isSlayer() )
{
// 루아에 슬레이어 능력치의 합을 set한다.
Slayer* pSlayer = dynamic_cast<Slayer*>(pPC);
Assert(pSlayer != NULL);
Attr_t sum = pSlayer->getSTR(ATTR_BASIC )
+ pSlayer->getDEX(ATTR_BASIC )
+ pSlayer->getINT(ATTR_BASIC);
m_pLuaSlayerItem->setSum(sum);
pLuaSelectItem = m_pLuaSlayerItem;
luaFileName = m_SlayerFilename;
}
else if (pPC->isVampire() )
{
// 루아에 뱀파이어의 레벨을 set한다.
Vampire* pVampire = dynamic_cast<Vampire*>(pPC);
Assert(pVampire != NULL);
int level = pVampire->getLevel();
m_pLuaVampireItem->setLevel(level);
pLuaSelectItem = m_pLuaVampireItem;
luaFileName = m_VampireFilename;
}
//--------------------------------------------------------
// 속도 체크를 위해서 1000번 돌려보는 코드
// 결과는.. 0.07초 정도 나왔다. 감덩~ -_-;
/*
Timeval beforeTime;
getCurrentTime(beforeTime);
//.........这里部分代码省略.........
示例2: execute
////////////////////////////////////////////////////////////////////////////////
// 액션을 실행한다.
////////////////////////////////////////////////////////////////////////////////
void ActionTradeLairItem::execute(Creature * pCreature1 , Creature * pCreature2)
throw(Error)
{
__BEGIN_TRY
Assert(pCreature1 != NULL);
Assert(pCreature2 != NULL);
Assert(pCreature1->isNPC());
Assert(pCreature2->isPC());
if (m_Type <= 5 )
{
SYSTEM_RETURN_IF_NOT(SYSTEM_MASTER_LAIR);
}
PlayerCreature* pPC = dynamic_cast<PlayerCreature*>(pCreature2);
Assert(pPC != NULL);
Player* pPlayer = pPC->getPlayer();
Assert(pPlayer != NULL);
GCNPCResponse okpkt;
pPlayer->sendPacket(&okpkt);
StringStream message;
/*
GCSystemMessage gcSystemMessage;
gcSystemMessage.setMessage("아직 지원되지 않는 기능입니다");
pPlayer->sendPacket(&gcSystemMessage);
*/
//cout << "ActionTradeLairItem" << ":" << m_Type;
Inventory* pInventory = pPC->getInventory();
// 먼저 아이템을 가지고 있는가를 체크한다.
Item* pMasterItem = NULL;
MonsterType_t MonsterType = 0;
Item* pItem1 = NULL;
bool bUpgrade = false;
// 옵션에 따라서 다른 아이템을 검사해야 한다.
// 코난 : 팬던트/ 비쥬만 체크한다.
// 브리콜라카스: 테페즈 펜던트/비쥬만 체크해야 한다
// 카임 : 바토리 팬던트/비쥬만 체크해야 한다.
if (m_Type == 0) // 코난, 비쥬
{
pMasterItem = pInventory->findItem(Item::ITEM_CLASS_QUEST_ITEM, 0);
MonsterType = BATORI_TYPE;
if (pMasterItem == NULL )
{
pMasterItem = pInventory->findItem(Item::ITEM_CLASS_QUEST_ITEM, 2);
MonsterType = TEPEZ_TYPE;
if (pMasterItem == NULL )
{
pMasterItem = pInventory->findItem(Item::ITEM_CLASS_QUEST_ITEM, 8); //질드레 비쥬
MonsterType = GDR_TYPE;
bUpgrade = true;
}
}
}
else if (m_Type == 1) // 코난, 팬던트
{
pMasterItem = pInventory->findItem(Item::ITEM_CLASS_QUEST_ITEM, 1);
MonsterType = BATORI_TYPE;
if (pMasterItem == NULL)
{
pMasterItem = pInventory->findItem(Item::ITEM_CLASS_QUEST_ITEM, 3);
MonsterType = TEPEZ_TYPE;
if (pMasterItem == NULL )
{
pMasterItem = pInventory->findItem(Item::ITEM_CLASS_QUEST_ITEM, 9); //질드레 펜던트
MonsterType = GDR_TYPE;
bUpgrade = true;
}
}
}
else if (m_Type == 2) // 브리콜라카스, 비쥬
{
pMasterItem = pInventory->findItem(Item::ITEM_CLASS_QUEST_ITEM, 2);
// if (pMasterItem == NULL ) pMasterItem = pInventory->findItem(Item::ITEM_CLASS_QUEST_ITEM, 8); //질드레 비쥬
MonsterType = TEPEZ_TYPE;
}
else if (m_Type == 3) // 브리콜라카스, 팬던트
{
pMasterItem = pInventory->findItem(Item::ITEM_CLASS_QUEST_ITEM, 3);
// if (pMasterItem == NULL ) pMasterItem = pInventory->findItem(Item::ITEM_CLASS_QUEST_ITEM, 9); //질드레 펜던트
MonsterType = TEPEZ_TYPE;
}
else if (m_Type == 4) // 카임, 비쥬
{
//.........这里部分代码省略.........