本文整理汇总了C++中P_CHAR::addItem方法的典型用法代码示例。如果您正苦于以下问题:C++ P_CHAR::addItem方法的具体用法?C++ P_CHAR::addItem怎么用?C++ P_CHAR::addItem使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类P_CHAR
的用法示例。
在下文中一共展示了P_CHAR::addItem方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: equipItem
// Tries to equip an item
// if that fails it tries to put the item in the users backpack
// if *that* fails it puts it at the characters feet
// That works for NPCs as well
void equipItem( P_CHAR wearer, P_ITEM item )
{
tile_st tile = TileCache::instance()->getTile( item->id() );
// User cannot wear the item
if ( tile.layer == 0 )
{
if ( wearer->objectType() == enPlayer )
{
P_PLAYER pp = dynamic_cast<P_PLAYER>( wearer );
if ( pp->socket() )
pp->socket()->sysMessage( tr( "You cannot wear that item." ) );
}
item->toBackpack( wearer );
return;
}
cBaseChar::ItemContainer container = wearer->content();
cBaseChar::ItemContainer::const_iterator it( container.begin() );
for ( ; it != container.end(); ++it )
{
P_ITEM equip = *it;
// Unequip the item and free the layer that way
if ( equip && ( equip->layer() == tile.layer ) )
equip->toBackpack( wearer );
}
// *finally* equip the item
wearer->addItem( static_cast<cBaseChar::enLayer>( item->layer() ), item );
}
示例2: equipItem
//.........这里部分代码省略.........
{
if( pWearer == pChar )
socket->sysMessage( tr( "You cannot wear that item, you seem not agile enough" ) );
else
socket->sysMessage( tr( "This person can't wear that item, it seems not agile enough" ) );
socket->bounceItem( pItem, BR_NO_REASON );
return;
}
// Required Intelligence
if( pItem->in() > pWearer->intelligence() )
{
if( pWearer == pChar )
socket->sysMessage( tr( "You cannot wear that item, you seem not smart enough" ) );
else
socket->sysMessage( tr( "This person can't wear that item, it seems not smart enough" ) );
socket->bounceItem( pItem, BR_NO_REASON );
return;
}
// Males can't wear female armor
if( ( pChar->bodyID() == 0x0190 ) && ( pItem->id() >= 0x1C00 ) && ( pItem->id() <= 0x1C0D ) )
{
socket->sysMessage( tr( "You cannot wear female armor." ) );
socket->bounceItem( pItem, BR_NO_REASON );
return;
}
// Needs a check (!)
// Checks for equipment on the same layer
// If there is any it tries to unequip it
// If that fails it cancels
// we also need to check if there is a twohanded weapon if we want to equip another weapon.
UI08 layer = pTile.layer;
bool twohanded = false;
P_ITEM equippedLayerItem = pWearer->atLayer( static_cast<cBaseChar::enLayer>(layer) );
if ( equippedLayerItem )
twohanded = equippedLayerItem->twohanded();
if( twohanded && ( layer == 1 || layer == 2 ) )
{
socket->sysMessage( tr("You can't hold another item while wearing a twohanded weapon!") );
socket->bounceItem( pItem, BR_NO_REASON );
return;
}
// we're equipping so we do the check
if( equippedLayerItem )
{
if( pChar->canPickUp( equippedLayerItem ) )
{
equippedLayerItem->toBackpack( pWearer );
}
else
{
socket->sysMessage( tr( "You can't wear another item there!" ) );
socket->bounceItem( pItem, BR_NO_REASON );
return;
}
}
// At this point we're certain that we can wear the item
pWearer->addItem( static_cast<cBaseChar::enLayer>(pTile.layer), pItem );
// Apply the bonuses
pWearer->giveItemBonus( pItem );
if( pWearer->objectType() == enPlayer )
{
P_PLAYER pp = dynamic_cast<P_PLAYER>(pWearer);
if( pp->socket() )
pp->socket()->sendStatWindow();
}
// I don't think we need to remove the item
// as it's only visible to the current char
// And he looses contact anyway
// Build our packets
cUOTxCharEquipment wearItem;
wearItem.fromItem( pItem );
cUOTxSoundEffect soundEffect;
soundEffect.setSound( 0x57 );
soundEffect.setCoord( pWearer->pos() );
// Send to all sockets in range
// ONLY the new equipped item and the sound-effect
for( cUOSocket *mSock = cNetwork::instance()->first(); mSock; mSock = cNetwork::instance()->next() )
{
if( mSock->player() && ( mSock->player()->dist( pWearer ) <= mSock->player()->visualRange() ) )
{
mSock->send( &wearItem );
mSock->send( &soundEffect );
}
}
}