本文整理汇总了C++中PlayerObject::checkState方法的典型用法代码示例。如果您正苦于以下问题:C++ PlayerObject::checkState方法的具体用法?C++ PlayerObject::checkState怎么用?C++ PlayerObject::checkState使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类PlayerObject
的用法示例。
在下文中一共展示了PlayerObject::checkState方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: handleObjectMenuSelect
void CampTerminal::handleObjectMenuSelect(uint8 messageType,Object* srcObject)
{
PlayerObject* playerObject = dynamic_cast<PlayerObject*>(srcObject);
if(!playerObject || !playerObject->isConnected() || playerObject->getSamplingState() || playerObject->isIncapacitated() || playerObject->isDead()|| playerObject->checkState(CreatureState_Combat))
{
return;
}
if(messageType == radId_serverTerminalManagementDestroy)
{
CampRegion* region = dynamic_cast<CampRegion*>(gWorldManager->getObjectById(this->mCampRegionId));
region->despawnCamp();
return;
}
if(messageType == radId_serverTerminalManagementStatus)
{
mAttributesMenu.clear();
//Camp* camp = dynamic_cast<Camp*>(gWorldManager->getObjectById(this->mCampId));
CampRegion* region = dynamic_cast<CampRegion*>(gWorldManager->getObjectById(this->mCampRegionId));
int8 text[64];
sprintf(text,"Owner: %s",region->getCampOwnerName().getAnsi());
mAttributesMenu.push_back(text);
uint32 time = static_cast<uint32>(region->getUpTime());
uint32 hours = (uint32)time/3600;
time -=(hours*3600);
uint32 minutes = (uint32)(time)/60;
time -=(minutes*60);
uint32 seconds = (uint32)time;
sprintf(text,"Up-Time: %u hours, %u minutes and %u seconds",hours, minutes, seconds);
mAttributesMenu.push_back(text);
sprintf(text,"Total Visitors: %u ", region->getVisitors());
mAttributesMenu.push_back(text);
sprintf(text,"Current Visitors: %u ", region->getCurrentVisitors());
mAttributesMenu.push_back(text);
//sprintf(text,"Healing Modifier: %f ", camp->getHealingModifier());
sprintf(text,"Healing Modifier: 0.65 ");
mAttributesMenu.push_back(text);
gUIManager->createNewListBox(this,"handleMainMenu","Camp status","Below is a summary of the status of the camp.", mAttributesMenu,playerObject,SUI_Window_ListBox);
return;
}
gLogger->logMsgF("CampTerminal: Unhandled MenuSelect: %u",MSG_HIGH,messageType);
}
示例2: update
void CampRegion::update()
{
//Camps have a max timer of 55 minutes
if(gWorldManager->GetCurrentGlobalTick() - mSetUpTime > 3300000)
{
//gLogger->logMsg("55 Minutes OLD! DEATH TO THE CAMP!", BACKGROUND_RED);
despawnCamp();
return;
}
if(mAbandoned)
{
if((gWorldManager->GetCurrentGlobalTick() >= mExpiresTime) && (!mDestroyed))
{
despawnCamp();
}
}
PlayerObject* owner = dynamic_cast<PlayerObject*>(gWorldManager->getObjectById(mOwnerId));
if(!owner)
{
despawnCamp();
return;
}
if(owner->checkState(CreatureState_Combat))
{
//abandon
mAbandoned = true;
mExpiresTime = gWorldManager->GetCurrentGlobalTick(); //There is no grace period for combat.
return;
}
if(!mSubZoneId)
{
mQTRegion = mSI->getQTRegion(mPosition.x,mPosition.z);
mSubZoneId = (uint32)mQTRegion->getId();
mQueryRect = Anh_Math::Rectangle(mPosition.x - mWidth,mPosition.z - mHeight,mWidth*2,mHeight*2);
}
Object* object;
ObjectSet objList;
if(mParentId)
{
mSI->getObjectsInRange(this,&objList,ObjType_Player,mWidth);
}
if(mQTRegion)
{
mQTRegion->mTree->getObjectsInRangeContains(this,&objList,ObjType_Player,&mQueryRect);
}
ObjectSet::iterator objIt = objList.begin();
while(objIt != objList.end())
{
object = (*objIt);
//one xp per player in camp every 2 seconds
if(!mAbandoned)
{
applyHAMHealing(object);
mXp++;
}
if(!(checkKnownObjects(object)))
{
onObjectEnter(object);
std::list<campLink*>::iterator i;
bool alreadyExists = false;
for(i = links.begin(); i != links.end(); i++)
{
if((*i)->objectID == object->getId())
{
alreadyExists = true;
}
}
if(!alreadyExists)
{
//gLogger->logMsg("CREATING A NEW LINK!");
campLink* temp = new campLink;
temp->objectID = object->getId();
temp->lastSeenTime = gWorldManager->GetCurrentGlobalTick();
temp->tickCount = 0;
links.push_back(temp);
}
}
else
{
//gLogger->logMsg("HANDLING TICK!");
//Find the right link
std::list<campLink*>::iterator i;
for(i = links.begin(); i != links.end(); i++)
//.........这里部分代码省略.........
示例3: handleUIEvent
void InsuranceTerminal::handleUIEvent(uint32 action,int32 element,string inputStr,UIWindow* window)
{
// gLogger->logMsgF("InsuranceTerminal::handleUIEvent You are here!",MSG_NORMAL);
if(window == NULL)
{
return;
}
PlayerObject* playerObject = window->getOwner(); // window owner
if(playerObject == NULL || !playerObject->isConnected() || playerObject->getSamplingState() || playerObject->isIncapacitated() || playerObject->isDead()|| playerObject->checkState(CreatureState_Combat))
{
return;
}
switch(window->getWindowType())
{
case SUI_Window_Insurance_Newbie_MessageBox: // Tried to insure item when still having free rounds left.
{
switch(action)
{
case 0: // Yes
{
// Player selected to continue with insurance of item even if no need for.
// gLogger->logMsgF("SUI_Window_Insurance_Newbie_MessageBox Yes",MSG_NORMAL);
// Build the items list and optional use error-messages if needed.
BStringVector insuranceList;
this->getUninsuredItems(playerObject, &insuranceList);
// We should display all uninsured items that can be insured, and that are wearing or carrying in our inventory.
// Items in backpackage or in other containers within our inventory shall also be handled.
gUIManager->createNewListBox(this,"insure","@sui:mnu_insure","Select an item to insure.",insuranceList,playerObject,SUI_Window_Insurance_ListBox, SUI_MB_OKCANCEL);
}
break;
case 1: // No
{
// Player selected to abort, since all items are still treated as insured.
// gLogger->logMsgF("SUI_Window_Insurance_Newbie_MessageBox No",MSG_NORMAL);
}
break;
default:
{
gLogger->logMsgF("SUI_Window_Insurance_Newbie_MessageBox Invalid selection!",MSG_NORMAL);
}
break;
}
}
break;
case SUI_Window_Insurance_ListBox:
{
switch (action)
{
case 0: // OK
{
// Insure one item.
// gLogger->logMsgF("SUI_Window_Insurance_ListBox OK",MSG_NORMAL);
Inventory* inventoryObject = dynamic_cast<Inventory*>(playerObject->getEquipManager()->getEquippedObject(CreatureEquipSlot_Inventory));
Bank* bankObject = dynamic_cast<Bank*>(playerObject->getEquipManager()->getEquippedObject(CreatureEquipSlot_Bank));
if(!inventoryObject || !bankObject)
return;
int32 creditsInInventory = inventoryObject->getCredits();
int32 creditsAtBank = bankObject->getCredits();
if (mSortedInsuranceList.size() == 0)
{
// You have no insurable items.
gMessageLib->sendSystemMessage(playerObject, L"", "error_message", "no_insurables");
}
else if (element > (int32)mSortedInsuranceList.size() - 1 || element < 0)
{
// Unable to process insure item request.
gMessageLib->sendSystemMessage(playerObject, L"", "error_message", "bad_insure_request");
}
else
{
string selectedItemm((mSortedInsuranceList.at(element).first).getAnsi());
selectedItemm.convert(BSTRType_Unicode16);
Object* object = gWorldManager->getObjectById(mSortedInsuranceList.at(element).second);
if (!object)
{
// Invalid object.
// Insure attempt failed.
gMessageLib->sendSystemMessage(playerObject, L"", "error_message", "insure_fail");
break;
}
TangibleObject* tangibleObject = dynamic_cast<TangibleObject*>(object);
if (!tangibleObject)
{
// Not a tangible object.
// Insure attempt failed.
gMessageLib->sendSystemMessage(playerObject, L"", "error_message", "insure_fail");
//.........这里部分代码省略.........
示例4: handleUIEvent
void BankTerminal::handleUIEvent(BString strInventoryCash, BString strBankCash, UIWindow* window)
{
if(window == NULL)
{
return;
}
PlayerObject* playerObject = window->getOwner(); // window owner
if(playerObject == NULL || !playerObject->isConnected() || playerObject->getSamplingState() || playerObject->isIncapacitated() || playerObject->isDead() || playerObject->checkState(CreatureState_Combat))
{
return;
}
// two money movement deltas stands for credits
// variations into bank & inventory.
// casting as signed cause one will be negative.
// when inventoryDelta + bankDelta is not equal to zero,
// that means player treasury has changed since
// the transfer window opened.
// we get the money deltas by parsing the string returned
// by the SUI window
strInventoryCash.convert(BSTRType_ANSI);
strBankCash.convert(BSTRType_ANSI);
int32 inventoryMoneyDelta = atoi(strInventoryCash.getAnsi()) - dynamic_cast<Inventory*>(playerObject->getEquipManager()->getEquippedObject(CreatureEquipSlot_Inventory))->getCredits();
int32 bankMoneyDelta = atoi(strBankCash.getAnsi()) - dynamic_cast<Bank*>(playerObject->getEquipManager()->getEquippedObject(CreatureEquipSlot_Bank))->getCredits();
// the amount transfered must be greater than zero
if(bankMoneyDelta == 0 || inventoryMoneyDelta == 0)
{
return;
}
gTreasuryManager->bankTransfer(inventoryMoneyDelta, bankMoneyDelta, playerObject);
}