本文整理汇总了C++中P_CHAR::getOwnerSerial32方法的典型用法代码示例。如果您正苦于以下问题:C++ P_CHAR::getOwnerSerial32方法的具体用法?C++ P_CHAR::getOwnerSerial32怎么用?C++ P_CHAR::getOwnerSerial32使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类P_CHAR
的用法示例。
在下文中一共展示了P_CHAR::getOwnerSerial32方法的9个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: init
/*!
\brief initializes pointer maps
\author Luxor
*/
void init()
{
pStableMap.clear();
pContMap.clear();
pMounted.clear();
pOwnCharMap.clear();
pOwnItemMap.clear();
//Chars and Stablers
P_CHAR pc = 0;
cAllObjectsIter objs;
for( objs.rewind(); !objs.IsEmpty(); objs++ )
{
if( isCharSerial( objs.getSerial() ) ) {
pc=(P_CHAR)objs.getObject();
{
if( pc->isStabled() ) {
pStableMap[pc->getStablemaster()].push_back(pc);
}
if( pc->mounted )
pMounted[pc->getOwnerSerial32()]=pc;
P_CHAR own=pointers::findCharBySerial(pc->getOwnerSerial32());
pc->setOwnerSerial32( DEREF_P_CHAR(own), true );
}
}
else {
P_ITEM pi = (P_ITEM)objs.getObject();
updContMap(pi);
P_CHAR own=pointers::findCharBySerial(pi->getOwnerSerial32());
pi->setOwnerSerial32( DEREF_P_CHAR(own), true );
}
}
std::map< SERIAL, P_CHAR >::iterator iter( pMounted.begin() ), end( pMounted.end() );
for( ; iter!=end; iter++)
{
pc = pointers::findCharBySerial(iter->first);
if(ISVALIDPC(pc))
pc->setOnHorse();
}
}
示例2: addToOwnerMap
/*!
\author Endymion
*/
void addToOwnerMap(P_CHAR pet)
{
VALIDATEPC(pet);
SERIAL own=pet->getOwnerSerial32();
if ( own!=INVALID ) {
delFromOwnerMap( pet );
pOwnCharMap[own].push_back(pet);
}
}
示例3: checkWearable
LOGICAL checkWearable(P_CHAR pc, P_ITEM pi)
{
NXWSOCKET s = pc->getSocket();
if (s < 0)
return false;
if( (pi->getId()>>8) >= 0x40) // LB, client crashfix if multi-objects are moved to PD
return false;
tile_st tile;
data::seekTile(pi->getId(), tile);
if( ( clientDimension[s]==3 ) && (tile.quality==0) )
{
pc->sysmsg(TRANSLATE("You can't wear that"));
return false;
}
else
{
P_ITEM outmost = pi->getOutMostCont();
P_CHAR vendor = pointers::findCharBySerial( outmost->getContSerial() );
if( ISVALIDPC( vendor ) && ( vendor->getOwnerSerial32() != pc->getSerial32() ) )
{
return false;
}
}
if ( !pc->IsGM() && pi->st > pc->getStrength() && !pi->isNewbie() ) // now you can equip anything if it's newbie
{
pc->sysmsg(TRANSLATE("You are not strong enough to use that."));
return false;
}
else if ( !pc->IsGM() && !checkItemUsability(pc, pi, ITEM_USE_WEAR) )
{
return false;
}
else if ( (pc->getId() == BODY_MALE) && ( pi->getId()==0x1c00 || pi->getId()==0x1c02 || pi->getId()==0x1c04 || pi->getId()==0x1c06 || pi->getId()==0x1c08 || pi->getId()==0x1c0a || pi->getId()==0x1c0c ) ) // Ripper...so males cant wear female armor
{
pc->sysmsg(TRANSLATE("You cant wear female armor!"));
return false;
}
else if ((((pi->magic==2)||((tile.weight==255)&&(pi->magic!=1))) && !pc->canAllMove()) ||
( (pi->magic==3|| pi->magic==4) && !(pi->getOwnerSerial32()==pc->getSerial32())))
{
return false;
}
return true;
}
示例4: delFromOwnerMap
/*!
\author Endymion
*/
void delFromOwnerMap(P_CHAR pet)
{
VALIDATEPC(pet);
SERIAL own=pet->getOwnerSerial32();
if ( own!=INVALID ) {
std::map<SERIAL, vector <P_CHAR> >::iterator vect( pOwnCharMap.find( own ) );
if( ( vect!=pOwnCharMap.end() ) && !vect->second.empty() )
{
vector<P_CHAR>::iterator iter;
iter = find(vect->second.begin(), vect->second.end(), pet);
if( iter != vect->second.end() )
vect->second.erase(iter);
}
}
}
示例5: target_randomSteal
/*!
\brief Steal random
\author Unknow, updated by Endymion
\param ps the client
\todo add string because it's locked contanier into translate
*/
void Skills::target_randomSteal( NXWCLIENT ps, P_TARGET t )
{
P_CHAR thief=ps->currChar();
VALIDATEPC(thief);
P_CHAR victim = pointers::findCharBySerial( t->getClicked() );
VALIDATEPC(victim);
if (thief->getSerial32() == victim->getSerial32() || thief->getSerial32()==victim->getOwnerSerial32())
{
thief->sysmsg(TRANSLATE("You catch yourself red handed."));
return;
}
if (victim->npcaitype == NPCAI_PLAYERVENDOR)
{
thief->sysmsg(TRANSLATE("You cannot steal from player vendors."));
return;
}
if (victim->IsGMorCounselor() )
{
thief->sysmsg( TRANSLATE("You can't steal from gods."));
return;
}
P_ITEM pack= victim->getBackpack();
if ( !ISVALIDPI(pack))
{
thief->sysmsg(TRANSLATE("bad luck, your victim doesn't have a backpack"));
return;
}
char temp[TEMP_STR_SIZE]; //xan -> this overrides the global temp var
char temp2[TEMP_STR_SIZE]; //xan -> this overrides the global temp var
sprintf(temp, TRANSLATE("You reach into %s's pack to steal something ..."), victim->getCurrentNameC() );
thief->sysmsg(temp);
if ( char_inRange(thief,victim,1) )
{
P_ITEM pi = NULL;
NxwItemWrapper si;
si.fillItemsInContainer( pack, false );
if( si.size()>0 ) {
int ra=rand()%si.size();
int c=0;
for( si.rewind(); !si.isEmpty(); si++ ) {
c++;
if( c==ra ) {
pi=si.getItem();
break;
}
}
}
if( pi==NULL ) {
thief->sysmsg(TRANSLATE("... and discover your victim doesn't have any posessions"));
return;
}
//Endy can't be not valid after this -^ loop, else error
VALIDATEPI(pi);
if( pi->isNewbie() )
{//newbie
thief->sysmsg(TRANSLATE("... and fail because it is of no value to you."));
return;
}
if(pi->isSecureContainer())
{
thief->sysmsg(TRANSLATE("... and fail because it's a locked container."));
return;
}
if ( thief->checkSkill( STEALING,0,999) )
{
// 0 stealing 2 stones, 10 3 stones, 99.9 12 stones, 100 17 stones !!!
int cansteal = thief->skill[STEALING] > 999 ? 1700 : thief->skill[STEALING] + 200;
if ( ((pi->getWeightActual())>cansteal) && !pi->isContainer())//Containers
thief->sysmsg(TRANSLATE("... and fail because it is too heavy."));
else
if(pi->isContainer() && (weights::RecursePacks(pi)>cansteal))
thief->sysmsg(TRANSLATE("... and fail because it is too heavy."));
else
{
if (victim->amxevents[EVENT_CHR_ONSTOLEN])
{
g_bByPass = false;
//.........这里部分代码省略.........
示例6: snooping
/*!
\brief Snoop into container
\author Unknow, completly rewritten by Endymion
\param snooper the snooper
\param cont the contanier
*/
void snooping( P_CHAR snooper, P_ITEM cont )
{
VALIDATEPC(snooper);
NXWCLIENT ps = snooper->getClient();
if( ps == NULL ) return;
NXWSOCKET s = ps->toInt();
VALIDATEPI(cont);
P_CHAR owner = cont->getPackOwner();
VALIDATEPC(owner);
char temp[TEMP_STR_SIZE];
if (snooper->getSerial32() == owner->getSerial32())
snooper->showContainer(cont);
else if (snooper->IsGMorCounselor())
snooper->showContainer(cont);
else
if ((char_inRange(snooper, owner, 2)) ||(item_inRange(snooper, cont, 2)))
{
if ( owner->HasHumanBody() && ( owner->getOwnerSerial32()==snooper->getSerial32()))
snooper->showContainer(cont);
else if ( owner->npcaitype == NPCAI_PLAYERVENDOR)
snooper->showContainer(cont);
else
{
if ((cont->getContSerial()>1) && (cont->getContSerial() != snooper->getSerial32()) )
{
if ( owner->amxevents[EVENT_CHR_ONSNOOPED])
{
g_bByPass = false;
owner->amxevents[EVENT_CHR_ONSNOOPED]->Call( owner->getSerial32(), snooper->getSerial32());
if (g_bByPass==true) return;
}
/*
owner->runAmxEvent( EVENT_CHR_ONSNOOPED, owner->getSerial32(), s);
if (g_bByPass==true)
return;
*/
snooper->objectdelay=SrvParms->snoopdelay * MY_CLOCKS_PER_SEC + uiCurrentTime;
if ( owner->IsGMorCounselor())
{
snooper->sysmsg( TRANSLATE("You can't peek into that container or you'll be jailed."));// AntiChrist
sprintf( temp, TRANSLATE("%s is trying to snoop you!"), snooper->getCurrentNameC());
owner->sysmsg(temp);
return;
}
else if (snooper->checkSkill( SNOOPING, 0, 1000))
{
snooper->showContainer(cont);
snooper->sysmsg( TRANSLATE("You successfully peek into that container."));
}
else
{
snooper->sysmsg( TRANSLATE("You failed to peek into that container."));
if ( owner->npc )
owner->talk(s, TRANSLATE("Art thou attempting to disturb my privacy?"), 0);
else {
sprintf( temp, TRANSLATE("You notice %s trying to peek into your pack!"), snooper->getCurrentNameC());
owner->sysmsg( temp );
}
snooper->IncreaseKarma(-ServerScp::g_nSnoopKarmaLoss);//AntiChrist
snooper->modifyFame(-ServerScp::g_nSnoopFameLoss);//AntiChrist
setCrimGrey(snooper, ServerScp::g_nSnoopWillCriminal);
}
}
}
}
else {
snooper->sysmsg(TRANSLATE("You are too far away!"));
}
}
示例7: target_stealing
/*!
\brief Steal something
\author Unknow, completly rewritten by Endymion
\param ps the client
*/
void Skills::target_stealing( NXWCLIENT ps, P_TARGET t )
{
P_CHAR thief = ps->currChar();
VALIDATEPC(thief);
SERIAL target_serial = t->getClicked();
AMXEXECSVTARGET( thief->getSerial32(),AMXT_SKITARGS,STEALING,AMX_BEFORE);
//steal a char
if ( isCharSerial(target_serial) )
{
Skills::target_randomSteal(ps,t);
return;
}
const P_ITEM pi = pointers::findItemBySerial( target_serial );
VALIDATEPI(pi);
//steal a pickpocket, a steal training dummy
if( pi->getId() == 0x1E2D || pi->getId() == 0x1E2C )
{
Skills::PickPocketTarget(ps);
return;
}
//no stealing for items on layers other than 0 (equipped!) , newbie items, and items not being in containers allowed !
if ( pi->layer!=0 || pi->isNewbie() || pi->isInWorld() )
{
thief->sysmsg(TRANSLATE("You cannot steal that."));
return;
}
P_CHAR victim = pi->getPackOwner();
VALIDATEPC(victim);
if (victim->npcaitype == NPCAI_PLAYERVENDOR)
{
thief->sysmsg(TRANSLATE("You cannot steal from player vendors."));
return;
}
if ( (thief->getSerial32() == victim->getSerial32()) || (thief->getSerial32()==victim->getOwnerSerial32()) )
{
thief->sysmsg(TRANSLATE("You catch yourself red handed."));
return;
}
if (thief->distFrom( victim ) == 1)
{
int result;
R32 we = pi->getWeightActual();
int bonus= (int)( (1800 - we)/5 );
if ( thief->checkSkill( STEALING,0,(1000-bonus)) )
{
// 0 stealing 2 stones, 10 3 stones, 99.9 12 stones, 100 17 stones !!!
int cansteal = thief->skill[STEALING] > 999 ? 1700 : thief->skill[STEALING] + 200;
if ( we > cansteal )
{
thief->sysmsg(TRANSLATE("That is too heavy."));
return;
}
if (pi->amxevents[EVENT_IONSTOLEN]!=NULL)
{
g_bByPass = false;
pi->amxevents[EVENT_IONSTOLEN]->Call(pi->getSerial32(), thief->getSerial32(), victim->getSerial32());
if (g_bByPass==true)
return;
}
if (victim->amxevents[EVENT_CHR_ONSTOLEN])
{
g_bByPass = false;
victim->amxevents[EVENT_CHR_ONSTOLEN]->Call(victim->getSerial32(), thief->getSerial32());
if (g_bByPass==true)
return;
}
/*
pi->runAmxEvent( EVENT_IONSTOLEN, pi->getSerial32(), s, victim->getSerial32() );
if (g_bByPass==true)
return;
victim->runAmxEvent( EVENT_CHR_ONSTOLEN, victim->getSerial32(), s );
if (g_bByPass==true)
return;
*/
P_ITEM pack= thief->getBackpack();
VALIDATEPI(pack);
//.........这里部分代码省略.........
示例8: wear_item
void wear_item(NXWCLIENT ps) // Item is dropped on paperdoll
{
if ( ps == NULL )
return;
NXWSOCKET s = ps->toInt();
if (s < 0)
return;
P_CHAR pc=ps->currChar();
VALIDATEPC( pc );
P_CHAR pck = pointers::findCharBySerPtr(buffer[s]+6);
VALIDATEPC( pck );
if( pck->dead ) //Exploit fix: Dead ppl can't equip anything.
return;
P_ITEM pi=pointers::findItemBySerPtr(buffer[s]+1);
VALIDATEPI(pi);
bool resetDragging = false;
if( (pi->getId()>>8) >= 0x40) // LB, client crashfix if multi-objects are moved to PD
resetDragging = true;
tile_st tile;
int serial/*, letsbounce=0*/; // AntiChrist (5) - new ITEMHAND system
data::seekTile(pi->getId(), tile);
if( ( clientDimension[s]==3 ) && (tile.quality==0) )
{
ps->sysmsg(TRANSLATE("You can't wear that"));
resetDragging = true;
}
else {
P_ITEM outmost = pi->getOutMostCont();
P_CHAR vendor = pointers::findCharBySerial( outmost->getContSerial() );
if( ISVALIDPC( vendor ) && ( vendor->getOwnerSerial32() != pc->getSerial32() ) )
{
resetDragging = true;
}
}
if( resetDragging ) {
Sndbounce5(s);
if (ps->isDragging())
{
ps->resetDragging();
item_bounce4(s,pi);
UpdateStatusWindow(s,pi);
}
return;
}
if ( pck->getSerial32() == pc->getSerial32() || pc->IsGM() )
{
if ( !pc->IsGM() && pi->st > pck->getStrength() && !pi->isNewbie() ) // now you can equip anything if it's newbie
{
ps->sysmsg(TRANSLATE("You are not strong enough to use that."));
resetDragging = true;
}
else if ( !pc->IsGM() && !checkItemUsability(pc, pi, ITEM_USE_WEAR) )
{
resetDragging = true;
}
else if ( (pc->getId() == BODY_MALE) && ( pi->getId()==0x1c00 || pi->getId()==0x1c02 || pi->getId()==0x1c04 || pi->getId()==0x1c06 || pi->getId()==0x1c08 || pi->getId()==0x1c0a || pi->getId()==0x1c0c ) ) // Ripper...so males cant wear female armor
{
ps->sysmsg(TRANSLATE("You cant wear female armor!"));
resetDragging = true;
}
else if ((((pi->magic==2)||((tile.weight==255)&&(pi->magic!=1))) && !pc->canAllMove()) ||
( (pi->magic==3|| pi->magic==4) && !(pi->getOwnerSerial32()==pc->getSerial32())))
{
resetDragging = true;
}
if( resetDragging ) {
Sndbounce5(s);
if (ps->isDragging())
{
ps->resetDragging();
item_bounce4(s,pi);
UpdateStatusWindow(s,pi);
}
return;
}
// - AntiChrist (4) - checks for new ITEMHAND system
// - now you can't equip 2 hnd weapons with 1hnd weapons nor shields!!
serial= pck->getSerial32(); //xan -> k not cc :)
P_ITEM pj = NULL;
P_CHAR pc_currchar= pck;
// P_ITEM pack= pc_currchar->getBackpack();
//<Luxor>
P_ITEM pW = pc_currchar->getWeapon();
if (tile.quality == 1 || tile.quality == 2)
{ //weapons layers
//.........这里部分代码省略.........
示例9: pack_item
void pack_item(NXWCLIENT ps, PKGx08 *pp) // Item is put into container
{
if (ps == NULL) return;
char temp[TEMP_STR_SIZE]; //xan -> this overrides the global temp var
char temp2[TEMP_STR_SIZE]; //xan -> this overrides the global temp var
int serial/*, serhash*/;
tile_st tile;
// bool abort=false;
NXWSOCKET s=ps->toInt();
P_CHAR pc=ps->currChar();
VALIDATEPC(pc);
Location charpos= pc->getPosition();
P_ITEM pack;
P_ITEM pCont = pointers::findItemBySerial(pp->Tserial);
VALIDATEPI(pCont);
P_ITEM pItem = pointers::findItemBySerial(pp->Iserial);
VALIDATEPI(pItem);
if (pItem->getId() >= 0x4000)
{
// abort=true; // LB crashfix that prevents moving multi objcts in BP's
ps->sysmsg(TRANSLATE("Hey, putting houses in your pack crashes your back and client!"));
}
//ndEndy recurse only a time
P_ITEM contOutMost = pCont->getOutMostCont();
P_CHAR contOwner = ( !contOutMost->isInWorld() )? pointers::findCharBySerial( contOutMost->getContSerial() ) : NULL;
if( ISVALIDPC(contOwner) ) {
//if ((contOwner->npcaitype==NPCAI_PLAYERVENDOR) && (contOwner->npc) && (contOwner->getOwnerSerial32()!=pc->getSerial32()) )
if ( contOwner->getSerial32() != pc->getSerial32() && contOwner->getOwnerSerial32() != pc->getSerial32() && !pc->IsGM() ) { // Luxor
ps->sysmsg(TRANSLATE("This aint your backpack!"));
Sndbounce5(s);
if (ps->isDragging()) {
ps->resetDragging();
item_bounce3(pItem);
if (pCont->getId() >= 0x4000)
senditem(s, pCont);
}
return;
}
}
if (pCont->amxevents[EVENT_IONPUTITEM]!=NULL) {
g_bByPass = false;
pCont->amxevents[EVENT_IONPUTITEM]->Call( pCont->getSerial32(), pItem->getSerial32(), pc->getSerial32() );
if (g_bByPass)
{
item_bounce6(ps,pItem);
return;
}
}
/*
g_bByPass = false;
pCont->runAmxEvent( EVENT_IONPUTITEM, pCont->getSerial32(), pItem->getSerial32(), pc->getSerial32() );
if (g_bByPass)
{ //AntiChrist to preview item disappearing
item_bounce6(ps,pItem);
return;
}
*/
if (pCont->layer==0 && pCont->getId() == 0x1E5E &&
pCont->getContSerial()==pc->getSerial32())
{
// Trade window???
serial=calcserial(pCont->moreb1, pCont->moreb2, pCont->moreb3, pCont->moreb4);
if(serial==-1) return;
P_ITEM pi_z = pointers::findItemBySerial(serial);
if (ISVALIDPI(pi_z))
if ((pi_z->morez || pCont->morez))
{
pi_z->morez=0;
pCont->morez=0;
sendtradestatus( pi_z, pCont );
}
}
if(SrvParms->usespecialbank)//only if special bank is activated
{
if(pCont->morey==MOREY_GOLDONLYBANK && pCont->morex==MOREX_BANK && pCont->type==ITYPE_CONTAINER)
{
if ( pItem->getId() == ITEMID_GOLD )
{//if they're gold ok
pc->playSFX( goldsfx(2) );
} else
{//if they're not gold..bounce on ground
ps->sysmsg(TRANSLATE("You can only put golds in this bank box!"));
pItem->setContSerial(-1);
pItem->MoveTo( charpos );
pItem->Refresh();
//.........这里部分代码省略.........