本文整理汇总了C++中CItemContainer::Empty方法的典型用法代码示例。如果您正苦于以下问题:C++ CItemContainer::Empty方法的具体用法?C++ CItemContainer::Empty怎么用?C++ CItemContainer::Empty使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CItemContainer
的用法示例。
在下文中一共展示了CItemContainer::Empty方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: NPC_Vendor_Restock
bool CChar::NPC_Vendor_Restock(bool bForce, bool bFillStock)
{
ADDTOCALLSTACK("CChar::NPC_Vendor_Restock");
// Restock this NPC char.
// Then Set the next restock time for this .
if ( m_pNPC == NULL )
return false;
// Make sure that we're a vendor and not a pet
if ( IsStatFlag(STATF_Pet) || !NPC_IsVendor() )
return false;
bool bRestockNow = true;
if ( !bForce && m_pNPC->m_timeRestock.IsTimeValid() )
{
// Restock occurs every 10 minutes of inactivity (unless
// region tag specifies different time)
CRegionWorld *region = GetRegion();
int64 restockIn = 10 * 60 * TICK_PER_SEC;
if( region != NULL )
{
CVarDefCont *vardef = region->m_TagDefs.GetKey("RestockVendors");
if( vardef != NULL )
restockIn = vardef->GetValNum();
if ( region->m_TagDefs.GetKey("NoRestock") != NULL )
bRestockNow = false;
}
if ( m_TagDefs.GetKey("NoRestock") != NULL )
bRestockNow = false;
if (bRestockNow)
bRestockNow = ( CServerTime::GetCurrentTime().GetTimeDiff(m_pNPC->m_timeRestock) > restockIn );
}
// At restock the containers are actually emptied
if ( bRestockNow )
{
m_pNPC->m_timeRestock.Init();
for ( size_t i = 0; i < CountOf(sm_VendorLayers); ++i )
{
CItemContainer *pCont = GetBank(sm_VendorLayers[i]);
if ( !pCont )
return false;
pCont->Empty();
}
}
if ( bFillStock )
{
// An invalid restock time means that the containers are
// waiting to be filled
if ( !m_pNPC->m_timeRestock.IsTimeValid() )
{
if ( IsTrigUsed(TRIGGER_NPCRESTOCK) )
{
CCharBase *pCharDef = Char_GetDef();
ReadScriptTrig(pCharDef, CTRIG_NPCRestock, true);
}
// we need restock vendor money as well
GetBank()->Restock();
}
// remember that the stock was filled (or considered up-to-date)
m_pNPC->m_timeRestock.SetCurrentTime();
}
return true;
}