本文整理汇总了C++中CItem::GetItemKind方法的典型用法代码示例。如果您正苦于以下问题:C++ CItem::GetItemKind方法的具体用法?C++ CItem::GetItemKind怎么用?C++ CItem::GetItemKind使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CItem
的用法示例。
在下文中一共展示了CItem::GetItemKind方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: CheckAutoDivideMoney
int CheckAutoDivideMoney( ItemAttr *item, short int cn ) // 100000을 넘은 아이템 처리
{
CItem *t = ItemUnit( *item );
if( !t ) return 0 ;
if( t->GetItemKind() != IK_MONEY ) return 0;
CHARLIST *ch = &connections[cn].chrlst;
if( !ch ) return 0 ;
if( item->attr[IATTR_DURATION] > MAX_MONEY )
{
ItemAttr *new_item = SearchInv( ch );
if( !new_item )
{
item->attr[IATTR_MUCH] = MAX_MONEY;
}
else
{
memcpy(new_item , item , sizeof( ItemAttr ) );
new_item->attr[IATTR_MUCH] = item->attr[IATTR_DURATION] - MAX_MONEY;
item->attr[IATTR_MUCH] = MAX_MONEY;
if( new_item->attr[IATTR_MUCH] > MAX_MONEY ) CheckAutoDivideMoney( new_item, cn );
return 1;
}
}
return 0;
}
示例2:
CGoods *CPlayer::GetUpdateItem( UINT8 byAttr, UINT16 &wItemID )
{
CItem *pItem = NULL;
//if( EAST_HP==byAttr )
//{
// pItem=GetBag().GetGoodsItem( CSinglePramMgr::Instance()->GetStrengthenHeroHPItemID() );
// wItemID=CSinglePramMgr::Instance()->GetStrengthenHeroHPItemID();
//}
//else
//{
// pItem=GetBag().GetGoodsItem( CSinglePramMgr::Instance()->GetStrengthenHeroAttackItemID() );
// wItemID=CSinglePramMgr::Instance()->GetStrengthenHeroAttackItemID();
//}
if( NULL == pItem )
{
return NULL;
}
if( pItem->GetItemKind() != EIK_GOODS )
{
return NULL;
}
return dynamic_cast<CGoods *>( pItem );
}
示例3: GetMoneyByItem
DWORD GetMoneyByItem( CHARLIST *ch )
{
DWORD money=0;
int type, num;
CItem *t;
for( int i=0; i<3; i++ )
for( int j=0; j<3; j++ )
for( int k=0; k<8; k++ )
{
ItemAttr &item = ch->inv[i][j][k];
if( item.item_no )
{
getItemIndex( item.item_no, type, num );
t = ItemUnit( type, num );
if( t && t->GetItemKind() == IK_MONEY )
{
if( item.item_no == IN_COIN && item.attr[IATTR_MUCH] > 5) // 동전
{
item.item_no = IN_COINS; // 돈 더미로 바꿈
}
else if( item.item_no == IN_COINS && item.attr[IATTR_MUCH] <= 5 ) // 동전 더미
{
item.item_no = IN_COIN;
}
money += item.attr[IATTR_MUCH];
}
}
}
if( ch->handheld.item_no ) // 핸드 부분에 있는 돈 계산
{
ItemAttr &item = ch->handheld;
getItemIndex( item.item_no, type, num );
t = ItemUnit( type, num );
if( t && t->GetItemKind() == IK_MONEY )
{
if( item.item_no == IN_COIN && item.attr[IATTR_MUCH] > 5) item.item_no = IN_COINS;
else if( item.item_no == IN_COINS && item.attr[IATTR_MUCH] <= 5 ) item.item_no = IN_COIN;
money += item.attr[IATTR_MUCH];
}
}
return money;
}
示例4: ItemUnit
ItemAttr *SearchItemOfInvByKind( int kind, CHARLIST *ch )
{
int type, num;
CItem * t;
for( int i=0; i<3; i++ )
for( int j=0; j<3; j++ )
for( int k=0; k<8; k++ )
{
ItemAttr &item = ch->inv[i][j][k];
if( item.item_no )
{
getItemIndex( item.item_no, type, num );
t = ItemUnit( type, num );
if( t && t->GetItemKind() == kind ) return &item;
}
}
return NULL;
}
示例5: UseBox
UINT16 CGoods::UseBox(DT_ITEM_DATA_LIST_CLI2& stBoxItemInfo)
{
SGoodsProp* pstGoodsProp = GetGoodsProp();
if(NULL == pstGoodsProp)
{
RETURN_OTHER_ERR;
}
SItemComposeProp* pstItemComposeProp = CItemComposePropMgr::Instance()->GetProp(pstGoodsProp->wKindID);
if(NULL == pstItemComposeProp)
{
SYS_CRITICAL(_SDT("[%s: %d]: pstItemComposeProp is NULL!"), MSG_MARK);
RETURN_OTHER_ERR;
}
CItemRateMap& mapComposeItem = pstItemComposeProp->mapComposeItem;
if(0 == mapComposeItem.size())
{
SYS_CRITICAL(_SDT("[%s: %d]: mapComposeItem[%d] is 0!"), MSG_MARK, pstGoodsProp->wKindID);
RETURN_OTHER_ERR;
}
INT32 nGap = (INT32)(m_poOwner->GetBag().GetIdleSize()) - (INT32)(mapComposeItem.size());
if(nGap < 0)
{
//判断背包中是否存在该物品,若存在则可少使用一个格子
CBag& oBag = m_poOwner->GetBag();
for(CItemRateMapItr itr = mapComposeItem.begin(); itr != mapComposeItem.end(); itr++)
{
//只有物品有效,装备叠加数为1,则只找Goods
if(oBag.GetGoodsItem(itr->first))
{
nGap++;
}
}
}
//背包容量不足
if(nGap < 0)
{
return ERR_GOODS_USE::ID_BAG_FULL;
}
for(CItemRateMapItr itr = mapComposeItem.begin(); itr != mapComposeItem.end(); itr++)
{
//若是系统可以直接使用的物品,则使用
if(CItemMgr::Instance()->SysUseGoods(m_poOwner, itr->first, itr->second.wItemNum))
{
CItemMgr::Instance()->GetDT_ITEM_DATA_CLI2(itr->first, itr->second.wItemNum, stBoxItemInfo.astItemList[stBoxItemInfo.byItemNum]);
}
else
{
ECreateItemRet eRet;
CItem* poItem = CItemMgr::Instance()->CreateItemIntoBag(m_poOwner, itr->first, itr->second.wItemNum, eRet, 0, CRecordMgr::EAIT_BOX, m_stDT_GOODS_DATA.wKindID);
if(NULL == poItem)
{
//异常
SYS_CRITICAL(_SDT("[%s: %d]: CreateItemIntoBag failed[%d]!"), MSG_MARK, itr->first);
}
//装备没有叠加数,可以直接poEquip->GetDT_EQUIP_DATA_CLI(stEquip);
if(EIK_EQUIP == poItem->GetItemKind())
{
CEquip* poEquip = dynamic_cast<CEquip*>(poItem);
if(NULL == poEquip)
{
//异常
continue;
}
stBoxItemInfo.astItemList[stBoxItemInfo.byItemNum].byItemType = EIK_EQUIP;
DT_EQUIP_DATA_CLI& stEquip = stBoxItemInfo.astItemList[stBoxItemInfo.byItemNum].stItemInfo.stEquip ;
poEquip->GetDT_EQUIP_DATA_CLI(stEquip);
}
else
{
//内部礼包,返回的是礼包的物品
SGoodsProp* pstGoodsProp = CGoodsPropMgr::Instance()->GetPropByPrimaryKey(itr->first);
if((pstGoodsProp) && (EGMK_INNERBOX == pstGoodsProp->byMainKindID))
{
CItemMgr::Instance()->GetDT_ITEM_DATA_CLI2(poItem->GetItemKindID(), 1, stBoxItemInfo.astItemList[stBoxItemInfo.byItemNum]);
}
else
{
CItemMgr::Instance()->GetDT_ITEM_DATA_CLI2(itr->first, itr->second.wItemNum, stBoxItemInfo.astItemList[stBoxItemInfo.byItemNum]);
}
}
}
stBoxItemInfo.byItemNum++;
}
return ERR_GOODS_USE::ID_SUCCESS;
}