本文整理汇总了C++中CVarDefCont类的典型用法代码示例。如果您正苦于以下问题:C++ CVarDefCont类的具体用法?C++ CVarDefCont怎么用?C++ CVarDefCont使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了CVarDefCont类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: ADDTOCALLSTACK
int CChar::NPC_GetTrainMax( const CChar * pStudent, SKILL_TYPE Skill ) const
{
ADDTOCALLSTACK("CChar::NPC_GetTrainMax");
// What is the max I can train to ?
int iMax;
int iMaxAllowed;
CVarDefCont * pValue = GetKey("OVERRIDE.TRAINSKILLMAXPERCENT",true);
if ( pValue )
{
iMax = static_cast<int>(IMULDIV( pValue->GetValNum(), Skill_GetBase(Skill), 100 ));
} else {
iMax = IMULDIV( g_Cfg.m_iTrainSkillPercent, Skill_GetBase(Skill), 100 );
}
pValue = GetKey("OVERRIDE.TRAINSKILLMAX",true);
if ( pValue )
{
iMaxAllowed = static_cast<int>(pValue->GetValNum());
} else {
iMaxAllowed = g_Cfg.m_iTrainSkillMax;
}
if ( iMax > iMaxAllowed )
return minimum(iMaxAllowed, pStudent->Skill_GetMax(Skill));
// Is this more that the student can take ?
return minimum(iMax, pStudent->Skill_GetMax(Skill));
}
开发者ID:swak,项目名称:Source,代码行数:29,代码来源:CCharNPCStatus.cpp
示例2: ADDTOCALLSTACK
// ---------------------------------------------------------
bool CPartyDef::DeclineEvent( CChar * pCharDecline, CGrayUID uidInviter ) // static
{
ADDTOCALLSTACK("CPartyDef::DeclineEvent");
// This should happen after a timeout as well.
// " You notify %s that you do not wish to join the party"
CChar * pCharInviter = uidInviter.CharFind();
if ( !pCharInviter || !pCharDecline )
return( false );
if ( uidInviter == pCharDecline->GetUID() )
return( false );
CVarDefCont * sTempVal = pCharInviter->GetTagDefs()->GetKey("PARTY_LASTINVITE");
if ( !sTempVal )
return( false );
if ((DWORD)sTempVal->GetValNum() != (DWORD)pCharDecline->GetUID())
return( false );
// Remove the key
pCharInviter->DeleteKey("PARTY_LASTINVITE");
TCHAR * sTemp = Str_GetTemp();
sprintf(sTemp, g_Cfg.GetDefaultMsg(DEFMSG_PARTY_DECLINE_2), static_cast<LPCTSTR>(pCharInviter->GetName()));
pCharDecline->SysMessage( sTemp );
sTemp = Str_GetTemp();
sprintf(sTemp, g_Cfg.GetDefaultMsg(DEFMSG_PARTY_DECLINE_1), static_cast<LPCTSTR>(pCharDecline->GetName()));
pCharInviter->SysMessage( sTemp );
return( true );
}
开发者ID:roberpot,项目名称:Source,代码行数:31,代码来源:CQuest.cpp
示例3: GetNpcAiFlags
int CCharNPC::GetNpcAiFlags( const CChar *pChar ) const
{
CVarDefCont *pVar = pChar->GetKey( "OVERRIDE.NPCAI", true );
if (pVar != NULL)
return static_cast<int>(pVar->GetValNum());
return g_Cfg.m_iNpcAi;
}
开发者ID:zolter,项目名称:Source,代码行数:7,代码来源:CCharNPC.cpp
示例4: ADDTOCALLSTACK
void CVarDefMap::ClearKeys(LPCTSTR mask)
{
ADDTOCALLSTACK("CVarDefMap::ClearKeys");
if ( mask && *mask )
{
if ( !m_Container.size() )
return;
CGString sMask(mask);
sMask.MakeLower();
DefSet::iterator i = m_Container.begin();
CVarDefCont * pVarBase = NULL;
while ( i != m_Container.end() )
{
pVarBase = NULL;
pVarBase = (*i);
if ( pVarBase && ( strstr(pVarBase->GetKey(), sMask.GetPtr()) ) )
{
DeleteAtIterator(i);
i = m_Container.begin();
}
else
{
++i;
}
}
}
else
{
Empty();
}
}
开发者ID:roberpot,项目名称:Source,代码行数:35,代码来源:CVarDefMap.cpp
示例5: ADDTOCALLSTACK
bool CResourceDef::SetResourceName( LPCTSTR pszName )
{
ADDTOCALLSTACK("CResourceDef::SetResourceName");
ASSERT(pszName);
// This is the global def for this item.
for ( size_t i = 0; pszName[i]; i++ )
{
if ( i >= EXPRESSION_MAX_KEY_LEN )
{
DEBUG_ERR(( "Too long DEFNAME=%s\n", pszName ));
return( false );
}
if ( ! _ISCSYM(pszName[i]))
{
DEBUG_ERR(( "Bad chars in DEFNAME=%s\n", pszName ));
return( false );
}
}
int iVarNum;
CVarDefCont * pVarKey = g_Exp.m_VarDefs.GetKey( pszName );
if ( pVarKey )
{
if ( (DWORD)pVarKey->GetValNum() == GetResourceID().GetPrivateUID() )
{
return( true );
}
if ( RES_GET_INDEX(pVarKey->GetValNum()) == GetResourceID().GetResIndex())
{
DEBUG_WARN(( "The DEFNAME=%s has a strange type mismatch? 0%llx!=0%lx\n", pszName, pVarKey->GetValNum(), GetResourceID().GetPrivateUID() ));
}
else
{
DEBUG_WARN(( "The DEFNAME=%s already exists! 0%llx!=0%x\n", pszName, RES_GET_INDEX(pVarKey->GetValNum()), GetResourceID().GetResIndex() ));
}
iVarNum = g_Exp.m_VarDefs.SetNum( pszName, GetResourceID().GetPrivateUID() );
}
else
{
iVarNum = g_Exp.m_VarDefs.SetNumNew( pszName, GetResourceID().GetPrivateUID() );
}
if ( iVarNum < 0 )
return( false );
SetResourceVar( dynamic_cast <const CVarDefContNum*>( g_Exp.m_VarDefs.GetAt( iVarNum )));
return( true );
}
开发者ID:roberpot,项目名称:Source,代码行数:52,代码来源:CResourceBase.cpp
示例6: ADDTOCALLSTACK
LPCTSTR CStoneMember::GetPrivName() const
{
ADDTOCALLSTACK("CStoneMember::GetPrivName");
STONEPRIV_TYPE iPriv = GetPriv();
TemporaryString sDefname;
sprintf(sDefname, "STONECONFIG_PRIVNAME_PRIVID-%d", static_cast<int>(iPriv));
CVarDefCont * pResult = g_Exp.m_VarDefs.GetKey(sDefname);
if (pResult)
return pResult->GetValStr();
else
pResult = g_Exp.m_VarDefs.GetKey("STONECONFIG_PRIVNAME_PRIVUNK");
return ( pResult == NULL ) ? "" : pResult->GetValStr();
}
开发者ID:WangXYZ,项目名称:SphereServer_Source,代码行数:16,代码来源:CItemStone.cpp
示例7: IsValidGameObjDef
bool IsValidGameObjDef( LPCTSTR pszTest )
{
if (!IsSimpleNumberString(pszTest))
{
CVarDefCont * pVarBase = g_Exp.m_VarDefs.CheckParseKey( pszTest );
if ( pVarBase == NULL )
return false;
TCHAR ch = *pVarBase->GetValStr();
if (( ! ch ) || ( ch == '<'))
return false;
RESOURCE_ID rid = g_Cfg.ResourceGetID( RES_QTY, pszTest);
if (( rid.GetResType() != RES_CHARDEF ) && ( rid.GetResType() != RES_ITEMDEF ) && ( rid.GetResType() != RES_SPAWN ) && ( rid.GetResType() != RES_TEMPLATE ))
return false;
}
return true;
}
开发者ID:DarkLotus,项目名称:Source,代码行数:18,代码来源:CExpression.cpp
示例8: ADDTOCALLSTACK
int CChar::NPC_GetVendorMarkup() const
{
ADDTOCALLSTACK("CChar::NPC_GetVendorMarkup");
// This vendor marks stuff up/down this percentage.
// When vendor sells to players this is the markup value.
//
// RETURN:
// +100% = double price
// 0% = default price
// -100% = free
if ( IsStatFlag(STATF_Pet) ) // not on a hired vendor
return 0;
// Use char value
CVarDefCont *pVar = m_TagDefs.GetKey("VENDORMARKUP");
if ( pVar )
return static_cast<int>(pVar->GetValNum());
// Use region value
if ( m_pArea )
{
pVar = m_pArea->m_TagDefs.GetKey("VENDORMARKUP");
if ( pVar )
return static_cast<int>(pVar->GetValNum());
}
// Use chardef value
CCharBase *pCharDef = Char_GetDef();
if ( pCharDef )
{
pVar = pCharDef->m_TagDefs.GetKey("VENDORMARKUP");
if ( pVar )
return static_cast<int>(pVar->GetValNum());
}
// Use default value
return 15;
}
开发者ID:bucketyied,项目名称:Source,代码行数:39,代码来源:CCharNPCStatus.cpp
示例9: ADDTOCALLSTACK
bool CClient::r_WriteVal( LPCTSTR pszKey, CGString & sVal, CTextConsole * pSrc )
{
ADDTOCALLSTACK("CClient::r_WriteVal");
EXC_TRY("WriteVal");
int index;
if ( !strnicmp("CTAG.", pszKey, 5) ) // CTAG.xxx - client tag
{
if ( pszKey[4] != '.' )
return( false );
pszKey += 5;
CVarDefCont *vardef = m_TagDefs.GetKey(pszKey);
sVal = vardef ? vardef->GetValStr() : "";
return true;
}
if ( !strnicmp("CTAG0.", pszKey, 6) ) // CTAG0.xxx - client tag
{
if ( pszKey[5] != '.' )
return( false );
pszKey += 6;
CVarDefCont *vardef = m_TagDefs.GetKey(pszKey);
sVal = vardef ? vardef->GetValStr() : "0";
return true;
}
if ( !strnicmp( "TARGP", pszKey, 5 ) && ( pszKey[5] == '\0' || pszKey[5] == '.' ) )
index = CC_TARGP;
else if ( !strnicmp( "SCREENSIZE", pszKey, 10 ) && ( pszKey[10] == '\0' || pszKey[10] == '.' ) )
index = CC_SCREENSIZE;
else if ( !strnicmp( "REPORTEDCLIVER", pszKey, 14 ) && ( pszKey[14] == '\0' || pszKey[14] == '.' ) )
index = CC_REPORTEDCLIVER;
else
index = FindTableSorted( pszKey, sm_szLoadKeys, COUNTOF(sm_szLoadKeys)-1 );
switch (index)
{
case CC_ALLMOVE:
sVal.FormatVal( IsPriv( PRIV_ALLMOVE ));
break;
case CC_ALLSHOW:
sVal.FormatVal( IsPriv( PRIV_ALLSHOW ));
break;
case CC_CLIENTIS3D:
sVal.FormatVal( GetNetState()->isClient3D() );
break;
case CC_CLIENTISKR:
sVal.FormatVal( GetNetState()->isClientKR() );
break;
case CC_CLIENTISSA:
sVal.FormatVal( GetNetState()->isClientSA() );
break;
case CC_CLIENTVERSION:
{
TCHAR szVersion[ 128 ];
sVal = m_Crypt.WriteClientVer( szVersion );
}
break;
case CC_DEBUG:
sVal.FormatVal( IsPriv( PRIV_DEBUG ));
break;
case CC_DETAIL:
sVal.FormatVal( IsPriv( PRIV_DETAIL ));
break;
case CC_GM: // toggle your GM status on/off
sVal.FormatVal( IsPriv( PRIV_GM ));
break;
case CC_HEARALL:
sVal.FormatVal( IsPriv( PRIV_HEARALL ));
break;
case CC_LASTEVENT:
sVal.FormatLLVal( m_timeLastEvent.GetTimeRaw() );
break;
case CC_PRIVSHOW:
// Show my priv title.
sVal.FormatVal( ! IsPriv( PRIV_PRIV_NOSHOW ));
break;
case CC_REPORTEDCLIVER:
{
pszKey += strlen(sm_szLoadKeys[index]);
GETNONWHITESPACE( pszKey );
int iCliVer = (GetNetState()->getReportedVersion() & 0xFFFFFF0);
if ( pszKey[0] != '\0' )
iCliVer = GetNetState()->getReportedVersion();
TCHAR szVersion[128];
sVal = CCrypt::WriteClientVerString( iCliVer, szVersion );
}
break;
case CC_SCREENSIZE:
{
if ( pszKey[10] == '.' )
{
pszKey += strlen(sm_szLoadKeys[index]);
SKIP_SEPARATORS(pszKey);
if ( !strnicmp("X", pszKey, 1) )
sVal.Format( "%lu", m_ScreenSize.x );
else if ( !strnicmp("Y", pszKey, 1) )
//.........这里部分代码省略.........
开发者ID:MortalROs,项目名称:Source,代码行数:101,代码来源:CClient.cpp
示例10: ADDTOCALLSTACK
bool CClient::r_WriteVal(LPCTSTR pszKey, CGString &sVal, CTextConsole *pSrc)
{
ADDTOCALLSTACK("CClient::r_WriteVal");
EXC_TRY("WriteVal");
if ( !strnicmp("CTAG.", pszKey, 5) )
{
if ( pszKey[4] != '.' )
return false;
pszKey += 5;
CVarDefCont *pVar = m_TagDefs.GetKey(pszKey);
sVal = pVar ? pVar->GetValStr() : "";
return true;
}
if ( !strnicmp("CTAG0.", pszKey, 6) )
{
if ( pszKey[5] != '.' )
return false;
pszKey += 6;
CVarDefCont *pVar = m_TagDefs.GetKey(pszKey);
sVal = pVar ? pVar->GetValStr() : "0";
return true;
}
int index;
if ( !strnicmp("TARGP", pszKey, 5) && ((pszKey[5] == '\0') || (pszKey[5] == '.')) )
index = CC_TARGP;
else if ( !strnicmp("SCREENSIZE", pszKey, 10) && ((pszKey[10] == '\0') || (pszKey[10] == '.')) )
index = CC_SCREENSIZE;
else if ( !strnicmp("REPORTEDCLIVER", pszKey, 14) && ((pszKey[14] == '\0') || (pszKey[14] == '.')) )
index = CC_REPORTEDCLIVER;
else
index = FindTableSorted(pszKey, sm_szLoadKeys, COUNTOF(sm_szLoadKeys) - 1);
switch ( index )
{
case CC_ALLMOVE:
sVal.FormatVal(IsPriv(PRIV_ALLMOVE));
break;
case CC_ALLSHOW:
sVal.FormatVal(IsPriv(PRIV_ALLSHOW));
break;
case CC_CLIENTIS3D:
sVal.FormatVal(m_NetState->isClient3D());
break;
case CC_CLIENTISKR:
sVal.FormatVal(m_NetState->isClientKR());
break;
case CC_CLIENTISSA:
sVal.FormatVal(m_NetState->isClientEnhanced());
break;
case CC_CLIENTVERSION:
{
TCHAR szVersion[128];
sVal = m_Crypt.WriteClientVerString(m_Crypt.GetClientVer(), szVersion);
break;
}
case CC_DEBUG:
sVal.FormatVal(IsPriv(PRIV_DEBUG));
break;
case CC_DETAIL:
sVal.FormatVal(IsPriv(PRIV_DETAIL));
break;
case CC_GM:
sVal.FormatVal(IsPriv(PRIV_GM));
break;
case CC_HEARALL:
sVal.FormatVal(IsPriv(PRIV_HEARALL));
break;
case CC_LASTEVENT:
sVal.FormatLLVal(m_timeLastEvent.GetTimeRaw());
break;
case CC_PRIVSHOW:
sVal.FormatVal(!IsPriv(PRIV_PRIV_NOSHOW));
break;
case CC_REPORTEDCLIVER:
{
pszKey += 14;
GETNONWHITESPACE(pszKey);
DWORD dwCliVer = m_NetState->getReportedVersion();
if ( pszKey[0] == '\0' )
{
// Return full version string (eg: 5.0.2d)
TCHAR szVersion[128];
sVal = CCrypt::WriteClientVerString(dwCliVer, szVersion);
}
else
{
// Return raw version number (eg: 5.0.2d = 5000204)
sVal.FormatUVal(dwCliVer);
}
break;
}
case CC_SCREENSIZE:
{
if ( pszKey[10] == '.' )
{
pszKey += 10;
//.........这里部分代码省略.........
开发者ID:bucketyied,项目名称:Source,代码行数:101,代码来源:CClient.cpp
示例11: ADDTOCALLSTACK
bool CCharPlayer::r_WriteVal( CChar * pChar, LPCTSTR pszKey, CGString & sVal )
{
ADDTOCALLSTACK("CCharPlayer::r_WriteVal");
EXC_TRY("WriteVal");
if ( !pChar || !GetAccount() )
return false;
if ( !strnicmp(pszKey, "SKILLCLASS.", 11) )
{
return GetSkillClass()->r_WriteVal(pszKey + 11, sVal, pChar);
}
else if ( ( !strnicmp(pszKey, "GUILD", 5) ) || ( !strnicmp(pszKey, "TOWN", 4) ) )
{
bool bIsGuild = !strnicmp(pszKey, "GUILD", 5);
pszKey += bIsGuild ? 5 : 4;
if ( *pszKey == 0 )
{
CItemStone *pMyGuild = pChar->Guild_Find(bIsGuild ? MEMORY_GUILD : MEMORY_TOWN);
if ( pMyGuild ) sVal.FormatHex((DWORD)pMyGuild->GetUID());
else sVal.FormatVal(0);
return true;
}
else if ( *pszKey == '.' )
{
pszKey += 1;
CItemStone *pMyGuild = pChar->Guild_Find(bIsGuild ? MEMORY_GUILD : MEMORY_TOWN);
if ( pMyGuild ) return pMyGuild->r_WriteVal(pszKey, sVal, pChar);
}
return false;
}
switch ( FindTableHeadSorted( pszKey, sm_szLoadKeys, COUNTOF( sm_szLoadKeys )-1 ))
{
case CPC_ACCOUNT:
sVal = GetAccount()->GetName();
return( true );
case CPC_DEATHS:
sVal.FormatVal( m_wDeaths );
return( true );
case CPC_DSPEECH:
m_Speech.WriteResourceRefList( sVal );
return( true );
case CPC_KILLS:
sVal.FormatVal( m_wMurders );
return( true );
case CPC_KRTOOLBARSTATUS:
sVal.FormatVal( m_bKrToolbarEnabled );
return true;
case CPC_ISDSPEECH:
if ( pszKey[9] != '.' )
return( false );
pszKey += 10;
sVal = m_Speech.ContainsResourceName(RES_SPEECH, pszKey) ? "1" : "0";
return( true );
case CPC_LASTUSED:
sVal.FormatLLVal( - g_World.GetTimeDiff( m_timeLastUsed ) / TICK_PER_SEC );
return( true );
case CPC_PFLAG:
sVal.FormatVal(m_pflag);
return( true );
case CPC_PROFILE:
{
TCHAR szLine[SCRIPT_MAX_LINE_LEN-16];
Str_MakeUnFiltered( szLine, m_sProfile, sizeof(szLine));
sVal = szLine;
}
return( true );
case CPC_REFUSETRADES:
{
CVarDefCont * pVar = pChar->GetDefKey(pszKey, true);
sVal.FormatLLVal(pVar ? pVar->GetValNum() : 0);
}
return( true );
case CPC_SKILLCLASS:
sVal = GetSkillClass()->GetResourceName();
return( true );
case CPC_SKILLLOCK:
{
// "SkillLock[alchemy]"
SKILL_TYPE skill = Skill_GetLockType( pszKey );
if ( skill <= SKILL_NONE )
return( false );
sVal.FormatVal( Skill_GetLock( skill ));
} return( true );
case CPC_SPEEDMODE:
sVal.FormatVal( m_speedMode );
return( true );
case CPC_STATLOCK:
{
// "StatLock[str]"
STAT_TYPE stat = Stat_GetLockType( pszKey );
if (( stat <= STAT_NONE ) || ( stat >= STAT_BASE_QTY ))
return( false );
sVal.FormatVal( Stat_GetLock( stat ));
} return( true );
default:
if ( FindTableSorted( pszKey, CCharNPC::sm_szLoadKeys, COUNTOF( CCharNPC::sm_szLoadKeys )-1 ) >= 0 )
{
sVal = "0";
//.........这里部分代码省略.........
开发者ID:zolter,项目名称:Source,代码行数:101,代码来源:CCharNPC.cpp
示例12: ADDTOCALLSTACK
bool CChar::Use_Train_Dummy( CItem * pItem, bool fSetup )
{
ADDTOCALLSTACK("CChar::Use_Train_Dummy");
// IT_TRAIN_DUMMY
// Dummy animation timer prevents over dclicking.
ASSERT(pItem);
SKILL_TYPE skill = Fight_GetWeaponSkill();
if ( g_Cfg.IsSkillFlag(skill, SKF_RANGED) ) // do not allow archery training on dummys
{
SysMessageDefault(DEFMSG_ITEMUSE_TDUMMY_ARCH);
return false;
}
char skilltag[32];
sprintf(skilltag, "OVERRIDE.PracticeMax.SKILL_%d", skill &~0xD2000000);
CVarDefCont *pSkillTag = pItem->GetKey(skilltag, true);
int iMaxSkill = pSkillTag ? static_cast<int>(pSkillTag->GetValNum()) : g_Cfg.m_iSkillPracticeMax;
if ( Skill_GetBase(skill) > iMaxSkill )
{
SysMessageDefault(DEFMSG_ITEMUSE_TDUMMY_SKILL);
return false;
}
if ( !pItem->IsTopLevel() )
{
baddumy:
SysMessageDefault(DEFMSG_ITEMUSE_TDUMMY_P);
return false ;
}
// Check location
int dx = GetTopPoint().m_x - pItem->GetTopPoint().m_x;
int dy = GetTopPoint().m_y - pItem->GetTopPoint().m_y;
if ( pItem->GetDispID() == ITEMID_DUMMY1 )
{
if ( !(!dx && abs(dy) < 2) )
goto baddumy;
}
else
{
if ( !(!dy && abs(dx) < 2) )
goto baddumy;
}
if ( fSetup )
{
if ( Skill_GetActive() == NPCACT_TRAINING )
return true;
UpdateAnimate(ANIM_ATTACK_WEAPON);
m_Act_TargPrv = m_uidWeapon;
m_Act_Targ = pItem->GetUID();
Skill_Start(NPCACT_TRAINING);
}
else
{
pItem->SetAnim(static_cast<ITEMID_TYPE>(pItem->GetID() + 1), 3 * TICK_PER_SEC);
pItem->Sound(0x033);
Skill_UseQuick(skill, Calc_GetRandLLVal(40));
}
return true;
}
开发者ID:DarkLotus,项目名称:Source,代码行数:63,代码来源:CCharUse.cpp
示例13: ADDTOCALLSTACK
//.........这里部分代码省略.........
SKIP_SEPARATORS( pszKey );
size_t iRect = Exp_GetVal( pszKey );
if ( iRect <= 0 )
{
sVal = m_rectUnion.Write();
return true;
}
iRect -= 1;
if ( !m_Rects.IsValidIndex( iRect ) )
{
sVal.FormatVal( 0 );
return true;
}
sVal = m_Rects[iRect].Write();
return( true );
}
case RC_SAFE:
sVal.FormatVal( IsFlag(REGION_FLAG_SAFE));
break;
case RC_TAGCOUNT:
sVal.FormatVal( static_cast<long>(m_TagDefs.GetCount()) );
break;
case RC_TAGAT:
{
pszKey += 5; // eat the 'TAGAT'
if ( *pszKey == '.' ) // do we have an argument?
{
SKIP_SEPARATORS( pszKey );
size_t iQty = static_cast<size_t>( Exp_GetVal( pszKey ) );
if ( iQty >= m_TagDefs.GetCount() )
return( false ); // trying to get non-existant tag
CVarDefCont * pTagAt = m_TagDefs.GetAt( iQty );
if ( !pTagAt )
return( false ); // trying to get non-existant tag
SKIP_SEPARATORS( pszKey );
if ( ! *pszKey )
{
sVal.Format("%s=%s", pTagAt->GetKey(), pTagAt->GetValStr());
return( true );
}
else if ( !strnicmp( pszKey, "KEY", 3 )) // key?
{
sVal = pTagAt->GetKey();
return( true );
}
else if ( !strnicmp( pszKey, "VAL", 3 )) // val?
{
sVal = pTagAt->GetValStr();
return( true );
}
}
return( false );
}
break;
case RC_TAG0:
fZero = true;
++pszKey;
// fall through
case RC_TAG: // "TAG" = get/set a local tag.
{
if ( pszKey[3] != '.' )
return( false );
开发者ID:bucketyied,项目名称:Source,代码行数:67,代码来源:CRegion.cpp
示例14: ADDTOCALLSTACK
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;
}
开发者ID:nefthon,项目名称:Source,代码行数:72,代码来源:CCharNPCAct_Vendor.cpp
示例15: ADDTOCALLSTACK
bool CPartyDef::r_WriteVal( LPCTSTR pszKey, CGString &sVal, CTextConsole *pSrc )
{
ADDTOCALLSTACK("CPartyDef::r_WriteVal");
EXC_TRY("WriteVal");
CScriptObj *pRef;
if ( r_GetRef(pszKey, pRef) )
{
if ( pRef == NULL ) // good command but bad link.
{
sVal = "0";
return true;
}
if ( pszKey[0] == '\0' ) // we where just testing the ref.
{
CObjBase *pObj = dynamic_cast<CObjBase *>(pRef);
if ( pObj )
sVal.FormatHex(static_cast<DWORD>(pObj->GetUID()));
else
sVal.FormatVal(1);
return true;
}
return pRef->r_WriteVal(pszKey, sVal, pSrc);
}
bool fZero = false;
switch ( FindTableHeadSorted(pszKey, sm_szLoadKeys, COUNTOF(sm_szLoadKeys) - 1) )
{
case PDC_ISSAMEPARTYOF:
{
pszKey += 13;
GETNONWHITESPACE(pszKey);
if ( pszKey[0] != '\0' )
{
CGrayUID uidToCheck = static_cast<CGrayUID>(Exp_GetVal(pszKey));
CChar *pCharToCheck = uidToCheck.CharFind();
sVal.FormatVal(pCharToCheck && (pCharToCheck->m_pParty == this));
}
else
return false;
} break;
case PDC_MEMBERS:
sVal.FormatVal(m_Chars.GetCharCount());
break;
case PDC_SPEECHFILTER:
sVal = m_pSpeechFunction.IsEmpty() ? "" : m_pSpeechFunction;
break;
case PDC_TAG0:
fZero = true;
pszKey++;
case PDC_TAG:
{
if ( pszKey[3] != '.' )
return false;
pszKey += 4;
sVal = m_TagDefs.GetKeyStr(pszKey, fZero);
} break;
case PDC_TAGAT:
{
pszKey += 5; // eat the 'TAGAT'
if ( *pszKey == '.' ) // do we have an argument?
{
SKIP_SEPARATORS(pszKey);
size_t iQty = static_cast<size_t>(Exp_GetVal(pszKey));
if ( iQty >= m_TagDefs.GetCount() )
return false; // trying to get non-existant tag
CVarDefCont *pTagAt = m_TagDefs.GetAt(iQty);
if ( !pTagAt )
return false; // trying to get non-existant tag
SKIP_SEPARATORS(pszKey);
if ( !*pszKey )
{
sVal.Format("%s=%s", pTagAt->GetKey(), pTagAt->GetValStr());
return true;
}
else if ( !strnicmp(pszKey, "KEY", 3) )
{
sVal = pTagAt->GetKey();
return true;
}
else if ( !strnicmp(pszKey, "VAL", 3) )
{
sVal = pTagAt->GetValStr();
return true;
}
}
return false;
}
case PDC_TAGCOUNT:
sVal.FormatVal(m_TagDefs.GetCount());
break;
//.........这里部分代码省略.........
开发者ID:dac247,项目名称:SphereServer-Source,代码行数:101,代码来源:CParty.cpp
注:本文中的CVarDefCont类示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论