本文整理汇总了C++中P_ITEM::setPosition方法的典型用法代码示例。如果您正苦于以下问题:C++ P_ITEM::setPosition方法的具体用法?C++ P_ITEM::setPosition怎么用?C++ P_ITEM::setPosition使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类P_ITEM
的用法示例。
在下文中一共展示了P_ITEM::setPosition方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: AddItem
/*!
\brief Add item to container
\author Endymion
\param pItem the item to add
\param xx the x location or INVALID if use rand pos
\param yy the y location or INVALID if use rand pos
*/
LOGICAL cItem::AddItem(P_ITEM pItem, short xx, short yy)
{
VALIDATEPIR(pItem,false);
NxwSocketWrapper sw;
sw.fillOnline( pItem );
for( sw.rewind(); !sw.isEmpty(); sw++ )
SendDeleteObjectPkt(sw.getSocket(), pItem->getSerial32() );
if (xx!=-1) // use the given position
{
pItem->setContSerial( getSerial32() );
pItem->setPosition(xx, yy, 9);
}
else // no pos given
{
if( !ContainerPileItem(pItem) ) { // try to pile
pItem->SetRandPosInCont(this); // not piled, random pos
pItem->setContSerial( getSerial32() );
}
else
return true; //Luxor: we cannot do a refresh because item was piled
}
pItem->Refresh();
return true;
}
示例2:
// Name: item_bounce3
// Purpose: holds some statements that were COPIED some 50 times
// Remarks: temporary functions to revamp the 30 occurences of the 'bouncing bugfix'
// History: init Duke, 10.8.2000 / bugfix for bonus stats, Xanathar, 05-aug-2001
static void item_bounce3(const P_ITEM pi)
{
VALIDATEPI( pi );
pi->setContSerial( pi->getContSerial(true) );
pi->setPosition( pi->getOldPosition() );
pi->layer=pi->oldlayer;
P_CHAR pc = pointers::findCharBySerial( pi->getContSerial(true) );
if(pc==NULL)
return ;
VALIDATEPC( pc );
if ( pi->layer > 0 )
{
// Xanathar -- add BONUS STATS given by equipped special items
pc->setStrength( pc->getStrength() + pi->st2, true );
//pc->st += pi->st2;
pc->dx += pi->dx2;
pc->in += pi->in2;
// Xanathar -- for poisoned items
if (pi->poisoned)
{
pc->poison += pi->poisoned;
if ( pc->poison < 0)
pc->poison = 0;
}
}
}
示例3: get_item
/*!
\brief Get an item
\author Unknow, revamped by Endymion
\param client the client
*/
void get_item( NXWCLIENT client ) // Client grabs an item
{
if ( client == NULL)
return;
P_CHAR pc_currchar = client->currChar();
VALIDATEPC( pc_currchar );
NXWSOCKET s = client->toInt();
P_ITEM pi = pointers::findItemBySerPtr(buffer[s]+1);
VALIDATEPI(pi);
//Luxor: not-movable items
/*if (pi->magic == 2 || (isCharSerial(pi->getContSerial()) && pi->getContSerial() != pc_currchar->getSerial32()) ) {
if (isCharSerial(pi->getContSerial())) {
P_CHAR pc_i = pointers::findCharBySerial(pi->getContSerial());
if (ISVALIDPC(pc_i))
pc_i->sysmsg("Warning, backpack bug located!");
}
if (client->isDragging()) {
client->resetDragging();
UpdateStatusWindow(s,pi);
}
pi->setContSerial( pi->getContSerial(true) );
pi->setPosition( pi->getOldPosition() );
pi->layer = pi->oldlayer;
pi->Refresh();
return;
}*/
pc_currchar->disturbMed(); // Meditation
tile_st item;
data::seekTile( pi->getId(), item );
// Check if item is equiped
if( pi->getContSerial() == pc_currchar->getSerial32() && pi->layer == item.quality )
{
if( pc_currchar->UnEquip( pi, 1 ) == 1 ) // bypass called
{
if( client->isDragging() )
{
UI08 cmd[1]= {0x29};
client->resetDragging();
Xsend(s, cmd, 1);
UpdateStatusWindow(s,pi);
//AoS/ Network->FlushBuffer(s);
}
return;
}
}
P_CHAR owner=NULL;
P_ITEM container=NULL;
if ( !pi->isInWorld() ) { // Find character owning item
if ( isCharSerial( pi->getContSerial()))
{
owner = pointers::findCharBySerial( pi->getContSerial());
}
else // its an item
{
//Endymion Bugfix:
//before check the container.. but if this cont is a subcont?
//so get the outmostcont and check it else:
//can loot without lose karma in subcont
//can steal in trade ecc
//not very good :P
container = pi->getOutMostCont();
if( isCharSerial( container->getContSerial() ) )
owner=pointers::findCharBySerial( container->getContSerial() );
}
if ( ISVALIDPC( owner ) && owner->getSerial32()!=pc_currchar->getSerial32() )
{
if ( !pc_currchar->IsGM() && owner->getOwnerSerial32() != pc_currchar->getSerial32() )
{// Own serial stuff by Zippy -^ Pack aniamls and vendors.
UI08 bounce[2]= { 0x27, 0x00 };
Xsend(s, bounce, 2);
//AoS/ Network->FlushBuffer(s);
if (client->isDragging())
{
client->resetDragging();
pi->setContSerial(pi->getContSerial(),true,false);
item_bounce3(pi);
UpdateStatusWindow(s,pi);
}
return;
}
}
}
if ( ISVALIDPI( container ) )
//.........这里部分代码省略.........
示例4: pack_item
//.........这里部分代码省略.........
}
if( strncmp(pItem->getCurrentNameC(), "#", 1) )
pItem->getName(temp2);
else
strcpy(temp2,pItem->getCurrentNameC());
NxwItemWrapper sii;
sii.fillItemsInContainer( pCont, false );
for( sii.rewind(); !sii.isEmpty(); sii++ ) {
P_ITEM pi_ci=sii.getItem();
if (ISVALIDPI(pi_ci))
{
if( strncmp(pi_ci->getCurrentNameC(), "#", 1) )
pi_ci->getName(temp);
else
strcpy(temp,pi_ci->getCurrentNameC());
if(!(strcmp(temp,temp2)) || !(strcmp(temp,"All-Spell Scroll")))
{
ps->sysmsg(TRANSLATE("You already have that spell!"));
item_bounce6(ps,pItem);
return;
}
}
// Juliunus, to prevent ppl from wasting scrolls.
if (pItem->amount > 1)
{
ps->sysmsg(TRANSLATE("You can't put more than one scroll at a time in your book."));
item_bounce6(ps,pItem);
return;
}
}
}
pCont->AddItem( pItem );
ps->sendSpellBook(pCont);
return;
}
if (pCont->type == ITYPE_CONTAINER) {
if ( ISVALIDPC(contOwner) )
{
if ( (contOwner->npcaitype==NPCAI_PLAYERVENDOR) && (contOwner->npc) && (contOwner->getOwnerSerial32()==pc->getSerial32()) )
{
pc->fx1= DEREF_P_ITEM(pItem);
pc->fx2=17;
pc->sysmsg(TRANSLATE("Set a price for this item."));
}
}
short xx=pp->TxLoc;
short yy=pp->TyLoc;
pCont->AddItem(pItem,xx,yy);
pc->playSFX( itemsfx(pItem->getId()) );
statwindow(pc,pc);
}
// end of player run vendors
else
// - Unlocked item spawner or unlockable item spawner
if (pCont->type==ITYPE_UNLOCKED_CONTAINER || pCont->type==ITYPE_NODECAY_ITEM_SPAWNER || pCont->type==ITYPE_DECAYING_ITEM_SPAWNER)
{
pCont->AddItem(pItem, pp->TxLoc, pp->TyLoc); //Luxor
pc->playSFX( itemsfx(pItem->getId()) );
}
else // - Pileable
if (pCont->pileable && pItem->pileable)
{
if ( !pCont->PileItem( pItem ) )
{
item_bounce6(ps,pItem);
return;
}
}
else
{
if( pItem->getContSerial( true )==INVALID ) //current cont serial is invalid because is dragging
{
NxwSocketWrapper sw;
sw.fillOnline( pItem->getPosition() );
for( sw.rewind(); !sw.isEmpty(); sw++ )
SendDeleteObjectPkt(sw.getSocket(), pItem->getSerial32() );
mapRegions->remove(pItem);
}
pItem->setPosition( pp->TxLoc, pp->TyLoc, pp->TzLoc);
pItem->setContSerial( pCont->getContSerial() );
pItem->Refresh();
}
}