本文整理汇总了C++中P_ITEM::AddItem方法的典型用法代码示例。如果您正苦于以下问题:C++ P_ITEM::AddItem方法的具体用法?C++ P_ITEM::AddItem怎么用?C++ P_ITEM::AddItem使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类P_ITEM
的用法示例。
在下文中一共展示了P_ITEM::AddItem方法的11个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: dropOnBanker
void cDragItems::dropOnBanker( P_CLIENT client, P_ITEM pItem, P_CHAR pBanker )
{
P_CHAR pChar = client->player();
// No cheque ? >> Put into bank
if( ( pItem->id() != 0x14F0 ) && ( pItem->type() != 1000 ) )
{
P_ITEM bankBox = pChar->getBankBox();
if( bankBox )
bankBox->AddItem( pItem );
else
bounceItem( client, pItem );
pBanker->talk( QString( "The %1 is now in thy bank box" ).arg( pItem->getName() ) );
return;
}
// No Value ?!
if( !pItem->value )
{
pBanker->talk( "This cheque does not have any value!" );
bounceItem( client, pItem );
return;
}
pChar->giveGold( pItem->value, true );
pBanker->talk( QString( "%1 I have cashed thy cheque and deposited %2 gold." ).arg( pChar->name.c_str() ).arg( pItem->amount() ) );
pItem->ReduceAmount();
statwindow( client->socket(), pChar );
}
示例2: clearalltrades
void cTrade::clearalltrades()
{
AllItemsIterator iterItems;
for (iterItems.Begin(); !iterItems.atEnd(); iterItems++)
{
P_ITEM pi = iterItems.GetData();
if (pi->type==1 && pi->pos.x==26 && pi->pos.y==0 && pi->pos.z==0 &&
pi->id()==0x1E5E)
{
P_CHAR pc = FindCharBySerial(pi->contserial);
P_ITEM pBackpack = Packitem(pc);
SERIAL serial = pi->serial;
unsigned int ci;
vector<SERIAL> vecContainer = contsp.getData(serial);
for (ci = 0; ci < vecContainer.size(); ci++)
{
P_ITEM pj = FindItemBySerial(vecContainer[ci]);
if (pj != NULL)
if ((pj->contserial==serial))
{
if(pBackpack != NULL)
{
pBackpack->AddItem(pj);
}
}
}
iterItems--; // Iterator will became invalid when deletting.
Items->DeleItem(pi);
clConsole.send("Trade cleared\n");
}
}
}
示例3: ItemDroppedOnBanker
static bool ItemDroppedOnBanker(P_CLIENT ps, PKGx08 *pp, P_ITEM pi)
{
UOXSOCKET s=ps->GetSocket();
CHARACTER cc=ps->GetCurrChar();
P_CHAR pc_currchar = MAKE_CHARREF_LRV(cc,true);
int t=calcCharFromSer(pp->Tserial);
P_ITEM bankbox = pc_currchar->GetBankBox();
int amt = pi->amount;
int value = pi->value;
if (pi->id() == 0x14F0 && pi->type == 1000)
{
const P_ITEM pi_n = Items->SpawnItem(DEREF_P_CHAR(pc_currchar), DEREF_P_CHAR(pc_currchar),value,"#",1,0x0E,0xED,0,0,0,0);
if(pi_n == NULL) return false;
sprintf((char*)temp,"%s I have cashed your check and deposited %i gold.",pc_currchar->name, value);
npctalk(s,t,(char*)temp,0);
bankbox->AddItem(pi_n);
statwindow(s, DEREF_P_CHAR(pc_currchar));
return true;
}
else
{
if (pi->id() == 0x0EED)
{
sprintf((char*)temp,"%s you have deposited %i gold.",pc_currchar->name, amt);
npctalk(s,t,(char*)temp,0);
bankbox->AddItem(pi);
statwindow(s, DEREF_P_CHAR(pc_currchar));
return true;
}
else
{
sprintf((char*)temp,"Sorry %s i can only deposit gold",pc_currchar->name);
npctalk(s,t,(char*)temp,0);
Sndbounce5(s);
if (ps->IsDragging())
{
ps->ResetDragging();
item_bounce5(s,pi);
return true;
}
}
return true;
}
}
示例4:
bool cCharStuff::cBankerAI::BankCheck(int c, P_CHAR pBanker, const string& comm)
{
P_CHAR pc_currchar = currchar[c];
int beginoffset ;
int endoffset ;
int value =0 ;
string value2;
if ((beginoffset=comm.find_first_of("0123456789")) != string::npos)
{
if ((endoffset=comm.find_first_not_of("0123456789",beginoffset))== string::npos)
endoffset = comm.length();
value2= comm.substr(beginoffset,endoffset-beginoffset) ;
value = str2num(value2) ;
}
int d = pc_currchar->CountBankGold();
{
int goldcount = value;
if (goldcount < 5000 || goldcount > 1000000)
{
sprintf(temp, "%s you can only get checks worth 5000gp to 1000000gp.", pc_currchar->name.c_str());
npctalk(c, pBanker, temp, 1);
return false;
}
if (d >= goldcount)
{
const P_ITEM pi = Items->SpawnItem(c, pc_currchar, 1, "bank check", 0, 0x14, 0xF0, 0, 0, 0); // bank check
if (pi != NULL)
pi->type = 1000;
pi->setId(0x14F0);
pi->color = 0x0099;
pi->priv |= 0x02;
pi->value = goldcount;
DeleBankItem(pc_currchar, 0x0EED, 0, goldcount);
P_ITEM bankbox = pc_currchar->GetBankBox();
bankbox->AddItem(pi);
statwindow(c, pc_currchar);
sprintf(temp, "%s your check has been placed in your bankbox, it is worth %i.", pc_currchar->name.c_str(), goldcount);
npctalk(c, pBanker, temp, 1);
return true;
}
else
sprintf(temp, "%s you have insufficent funds!", pc_currchar->name.c_str());
npctalk(c, pBanker, temp, 1);
return true;
}
}
示例5: ItemDroppedOnSelf
static bool ItemDroppedOnSelf(NXWCLIENT ps, PKGx08 *pp, P_ITEM pi)
{
if (ps == NULL) return false;
VALIDATEPIR(pi, false);
// NXWSOCKET s=ps->toInt();
// CHARACTER cc=ps->currCharIdx();
P_CHAR pc = ps->currChar(); // MAKE_CHAR_REF(cc);
VALIDATEPCR(pc, false);
Location charpos = pc->getPosition();
if (pi->getId() >= 0x4000 ) // crashfix , prevents putting multi-objects ni your backback
{
ps->sysmsg(TRANSLATE("Hey, putting houses in your pack crashes your back and client !"));
pi->MoveTo( charpos );
pi->Refresh();//AntiChrist
return true;
}
// if (pi->glow>0) // glowing items
// {
// pc->addHalo(pi);
// pc->glowHalo(pi);
// }
P_ITEM pack = pc->getBackpack();
if (pack==NULL) // if player has no pack, put it at its feet
{
pi->MoveTo( charpos );
pi->Refresh();
}
else
{
pack->AddItem(pi); // player has a pack, put it in there
weights::NewCalc(pc);//AntiChrist bugfixes
statwindow(pc,pc);
pc->playSFX( itemsfx(pi->getId()) );
}
return true;
}
示例6: ItemDroppedOnSelf
static bool ItemDroppedOnSelf(P_CLIENT ps, PKGx08 *pp, P_ITEM pi)
{
UOXSOCKET s=ps->GetSocket();
CHARACTER cc=ps->GetCurrChar();
P_CHAR pc_currchar = MAKE_CHARREF_LRV(cc,true);
if (pi->id1>=0x40) // crashfix , prevents putting multi-objects ni your backback
{
sysmessage(s,"Hey, putting houses in your pack crashes your back and client !");
pi->MoveTo(pc_currchar->pos.x,pc_currchar->pos.y,pc_currchar->pos.z);
RefreshItem(pi);//AntiChrist
return true;
}
if (pi->glow>0) // glowing items
{
pc_currchar->addHalo(pi);
pc_currchar->glowHalo(pi);
}
P_ITEM pack = Packitem(pc_currchar); // LB ...
if (pack == NULL) // if player has no pack, put it at its feet
{
pi->MoveTo(pc_currchar->pos.x,pc_currchar->pos.y,pc_currchar->pos.z);
RefreshItem(pi);//AntiChrist
}
else
{
pack->AddItem(pi); // player has a pack, put it in there
Weight->NewCalc(DEREF_P_CHAR(pc_currchar));//AntiChrist bugfixes
statwindow(s,DEREF_P_CHAR(pc_currchar));
itemsfx(s, pi->id());
}
return true;
}
示例7: putInto
/*
\brief Put an item into this container
\author Endymion
\param pi the containet where put into
\note do refresh
\remarks is inverse of additem
*/
void cItem::putInto( P_ITEM pi )
{
VALIDATEPI(pi);
pi->AddItem( this );
}
示例8: ItemDroppedOnChar
static bool ItemDroppedOnChar(P_CLIENT ps, PKGx08 *pp, P_ITEM pi)
{
UOXSOCKET s=ps->GetSocket();
CHARACTER cc=ps->GetCurrChar();
P_CHAR pc_currchar = MAKE_CHARREF_LRV(cc,true);
P_CHAR pTC=FindCharBySerial(pp->Tserial); // the targeted character
if (!pTC) return true;
if (DEREF_P_CHAR(pTC)!=DEREF_P_CHAR(pc_currchar))
{
if (pTC->isNpc())
{
if(!pTC->isHuman())
{
ItemDroppedOnPet( ps, pp, pi);
}
else // Item dropped on a Human character
{
// Item dropped on a Guard (possible bounty quest)
if( ( pTC->isNpc() ) && ( pTC->npcaitype == 4 ) )
{
if (!ItemDroppedOnGuard( ps, pp, pi) )
{
Sndbounce5(s);
if (ps->IsDragging())
{
ps->ResetDragging();
item_bounce5(s,pi);
}
}
return true;
}
if ( pTC->npcaitype == 5 )
{
if (!ItemDroppedOnBeggar( ps, pp, pi))
{
Sndbounce5(s);
if (ps->IsDragging())
{
ps->ResetDragging();
item_bounce5(s,pi);
}
}
return true;
}
if ( pTC->npcaitype == 8 )
{
if (!ItemDroppedOnBanker( ps, pp, pi))
{
Sndbounce5(s);
if (ps->IsDragging())
{
ps->ResetDragging();
item_bounce5(s,pi);
}
}
return true;
}
//This crazy training stuff done by Anthracks ([email protected])
if(pc_currchar->trainer!=pTC->serial)
{
npctalk(s, DEREF_P_CHAR(pTC), "Thank thee kindly, but I have done nothing to warrant a gift.",0);
Sndbounce5(s);
if (ps->IsDragging())
{
ps->ResetDragging();
item_bounce5(s,pi);
}
return true;
}
else // The player is training from this NPC
{
ItemDroppedOnTrainer( ps, pp, pi);
return true;
}
}//if human or not
}
else // dropped on another player
{
// By Polygon: Avoid starting the trade if GM drops item on logged on char (crash fix)
if ((pc_currchar->isGM()) && !online(DEREF_P_CHAR(pTC)))
{
// Drop the item in the players pack instead
// Get the pack
P_ITEM pack = Packitem(pTC);
if (pack != NULL) // Valid pack?
{
pack->AddItem(pi); // Add it
Weight->NewCalc(DEREF_P_CHAR(pTC));
}
else // No pack, give it back to the GM
{
pack = Packitem(pc_currchar);
if (pack != NULL) // Valid pack?
{
pack->AddItem(pi); // Add it
Weight->NewCalc(DEREF_P_CHAR(pc_currchar));
}
else // Even GM has no pack?
//.........这里部分代码省略.........
示例9: pack_item
//.........这里部分代码省略.........
pi->getName(temp);
else
strcpy((char*)temp, pi->name);
if(!(strcmp((char*)temp,(char*)temp2)) || !(strcmp((char*)temp,"All-Spell Scroll")))
{
sysmessage(s,"You already have that spell!");
item_bounce6(ps,pItem);
return;
}
}
}
}
}
// player run vendors
if (!(pCont->pileable && pItem->pileable && pCont->id()==pItem->id()
|| (pCont->type!=1 && pCont->type!=9)))
{
j=DEREF_P_CHAR(GetPackOwner(pCont));
if (j>-1) // bugkilling, LB, was j=!-1, arghh, C !!!
{
if (chars[j].npcaitype==17 && chars[j].isNpc() && pc_currchar->Owns(&chars[j]))
{
pc_currchar->inputitem = pItem->serial;
pc_currchar->inputmode = cChar::enPricing;
sysmessage(s, "Set a price for this item.");
}
}
short xx=pp->TxLoc;
short yy=pp->TyLoc;
pCont->AddItem(pItem,xx,yy);
itemsfx(s, pItem->id());// see itemsfx() for details - Dupois Added Oct 09, 1998
statwindow(s,DEREF_P_CHAR(pc_currchar));
}
// end of player run vendors
else
// - Unlocked item spawner or unlockable item spawner
if (pCont->type==63 || pCont->type==65 || pCont->type==66)
{
pItem->SetContSerial(pp->Tserial);
// lb bugfix
pItem->pos.x=pp->TxLoc;
pItem->pos.y=pp->TyLoc;
pItem->pos.z=pp->TzLoc;
SndRemoveitem(pItem->serial);
RefreshItem(pItem);//AntiChrist
itemsfx(s, pItem->id());
}
else // - Pileable
if (pCont->pileable && pItem->pileable && pCont->id()==pItem->id())
{
if ((pCont->amount+pItem->amount) > 65535)
{
pItem->amount -= (65535-pCont->amount);
Commands->DupeItem(s, pCont, pItem->amount);
pCont->amount = 65535;
Items->DeleItem(pItem);
}
示例10: 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();
}
}
示例11: ItemDroppedOnChar
//.........这里部分代码省略.........
return true;
}
else // The player is training from this NPC
{
ItemDroppedOnTrainer( ps, pp, pi);
}
}
if ( pTC->isHirable() )
{
// test if gold is enough
if ( pi->amount < pTC->getHireFee() )
{
pTC->talk(s, TRANSLATE("I need much more gold if i shall be working for you !"),0);
Sndbounce5(s);
if (ps->isDragging())
{
ps->resetDragging();
item_bounce5(s,pi);
}
return true;
}
else if ( pi->amount >= pTC->getHireFee() )
{
if ( pi->amount > pTC->getHireFee() )
{
pi->amount=(UI16)(pi->amount - pTC->getHireFee());
pTC->talk(s, TRANSLATE("Thank thee kindly, but this is more than i need for the day."),0);
Sndbounce5(s);
if (ps->isDragging())
{
ps->resetDragging();
item_bounce5(s,pi);
}
}
pTC->setOwner(pc_currchar);
tempfx::add(pTC,
pc_currchar,
tempfx::NPC_HIRECOST,
0,
0,
0,
0,
(UI16)(MY_CLOCKS_PER_SEC*secondsperuominute*60*24 )); // call callback every uo day
return true;
}
}
}//if human or not
}
else // dropped on another player
{
// By Polygon: Avoid starting the trade if GM drops item on logged on char (crash fix)
if ((pc_currchar->IsGM()) && !pTC->IsOnline())
{
// Drop the item in the players pack instead
// Get the pack
P_ITEM pack = pTC->getBackpack();
if (pack != NULL) // Valid pack?
{
pack->AddItem(pi); // Add it
weights::NewCalc(pTC);
}
else // No pack, give it back to the GM
{
pack = pc_currchar->getBackpack();
if (pack != NULL) // Valid pack?
{
pack->AddItem(pi); // Add it
weights::NewCalc(pc_currchar);
}
else // Even GM has no pack?
{
// Drop it to it's feet
pi->MoveTo( charpos );
pi->Refresh();
}
}
}
else
{
//<Luxor>: secure trade
P_ITEM tradeCont = tradestart(pc_currchar, pTC);
if (ISVALIDPI(tradeCont)) {
tradeCont->AddItem( pi, 30, 30 );
} else {
Sndbounce5(s);
if (ps->isDragging()) {
ps->resetDragging();
UpdateStatusWindow(s,pi);
}
}
//</Luxor>
}
}
}
else // dumping stuff to his own backpack !
{
ItemDroppedOnSelf( ps, pp, pi);
}
return true;
}