本文整理汇总了C++中CGrayUID::CharFind方法的典型用法代码示例。如果您正苦于以下问题:C++ CGrayUID::CharFind方法的具体用法?C++ CGrayUID::CharFind怎么用?C++ CGrayUID::CharFind使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CGrayUID
的用法示例。
在下文中一共展示了CGrayUID::CharFind方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: DelObj
void CItemSpawn::DelObj( CGrayUID uid )
{
ADDTOCALLSTACK("CitemSpawn:DelObj");
if ( !uid.IsValidUID() )
return;
for ( unsigned char i = 0; i < GetCount(); i++ )
{
if ( m_obj[i].IsValidUID() && m_obj[i] == uid ) // found this uid, proceeding to clear it
{
if (GetType() == IT_SPAWN_CHAR) // IT_SPAWN_ITEM uses 'more2' to store how much items to spawn at once, so we must not touch it.
m_itSpawnChar.m_current--; // found this UID in the spawn's list, decreasing CChar's count only in this case
while ( m_obj[i + 1].IsValidUID() ) // searching for any entry higher than this one...
{
m_obj[i] = m_obj[i + 1]; // and moving it 1 position to keep values 'together'.
i++;
}
m_obj[i].InitUID(); // Finished moving higher entries (if any) so we free the last entry.
break;
}
}
if (uid.ItemFind())
uid.ItemFind()->m_uidSpawnItem.InitUID();
else if (uid.CharFind())
{
uid.CharFind()->m_uidSpawnItem.InitUID();
uid.CharFind()->StatFlag_Clear(STATF_Spawned);
}
}
示例2: AddObj
void CItemSpawn::AddObj( CGrayUID uid )
{
ADDTOCALLSTACK("CitemSpawn:AddObj");
unsigned char iMax = GetAmount() > 0 ? static_cast<unsigned char>(GetAmount()) : 1;
bool bIsSpawnChar = GetType() == IT_SPAWN_CHAR;
if (!uid)
return;
if ( bIsSpawnChar )
{
if ( !uid.CharFind()->m_pNPC) // Only adding NPCs to IT_SPAWN_CHAR..
return;
if ( uid.CharFind()->m_uidSpawnItem.ItemFind() ) //... if they doesn't have a SpawnItem already.
return;
} else if( !uid.ItemFind() ) // Only adding Items to IT_SPAWN_ITEM
return;
for ( unsigned char i = 0; i < iMax; i++ )
{
if ( m_obj[i] == uid ) // Not adding me again
return;
if ( !m_obj[i].ObjFind() )
{
m_obj[i] = uid;
if (bIsSpawnChar)
{
m_itSpawnChar.m_current++;
uid.CharFind()->StatFlag_Set(STATF_Spawned);
}
uid.ObjFind()->m_uidSpawnItem = GetUID();
break;
}
}
}
示例3: AddObj
// Storing one UID in Spawn's m_obj[]
void CItemSpawn::AddObj( CGrayUID uid )
{
ADDTOCALLSTACK("CitemSpawn:AddObj");
unsigned char iMax = GetAmount() > 0 ? static_cast<unsigned char>(GetAmount()) : 1;
iMax += 1; // We must give a +1 to create a 'free slot'
bool bIsSpawnChar = GetType() == IT_SPAWN_CHAR;
if (bIsSpawnChar )
{
if (!uid || !uid.CharFind()->m_pNPC) // Only adding UIDs...
return;
}
if ( uid.ObjFind()->m_uidSpawnItem.ItemFind() ) //... which doesn't have a SpawnItem already
return;
for ( unsigned char i = 0; i < iMax; i++ )
{
if ( m_obj[i] == uid ) // Not adding me again
return;
if ( !m_obj[i].ObjFind() )
{
m_obj[i] = uid;
if (bIsSpawnChar)
{
m_itSpawnChar.m_current++;
uid.CharFind()->StatFlag_Set(STATF_Spawned);
}
uid.ObjFind()->m_uidSpawnItem = GetUID();
break;
}
}
}
示例4: AddObj
void CItemSpawn::AddObj(CGrayUID uid)
{
ADDTOCALLSTACK("CitemSpawn:AddObj");
// NOTE: This function is also called when loading spawn items
// on server startup. In this case, some objs UID still invalid
// (not loaded yet) so just proceed without any checks.
bool bIsSpawnChar = IsType(IT_SPAWN_CHAR);
if ( !g_Serv.IsLoading() )
{
if ( !uid.IsValidUID() )
return;
if ( bIsSpawnChar ) // IT_SPAWN_CHAR can only spawn NPCs
{
CChar *pChar = uid.CharFind();
if ( !pChar || !pChar->m_pNPC )
return;
}
else if ( !uid.ItemFind() ) // IT_SPAWN_ITEM can only spawn items
return;
CItemSpawn *pPrevSpawn = static_cast<CItemSpawn*>(uid.ObjFind()->m_uidSpawnItem.ItemFind());
if ( pPrevSpawn )
{
if ( pPrevSpawn == this ) // obj already linked to this spawn
return;
pPrevSpawn->DelObj(uid); // obj linked to other spawn, remove the link before proceed
}
}
BYTE iMax = maximum(GetAmount(), 1);
for (BYTE i = 0; i < iMax; i++ )
{
if ( !m_obj[i].IsValidUID() )
{
m_obj[i] = uid;
m_currentSpawned++;
// objects are linked to the spawn at each server start
if ( !g_Serv.IsLoading() )
{
uid.ObjFind()->m_uidSpawnItem = GetUID();
if ( bIsSpawnChar )
{
CChar *pChar = uid.CharFind();
ASSERT(pChar->m_pNPC);
pChar->StatFlag_Set(STATF_Spawned);
pChar->m_ptHome = GetTopPoint();
pChar->m_pNPC->m_Home_Dist_Wander = static_cast<WORD>(m_itSpawnChar.m_DistMax);
}
}
break;
}
}
if ( !g_Serv.IsLoading() )
ResendTooltip();
}
示例5: RemoveMember
bool CPartyDef::RemoveMember( CGrayUID uidRemove, CGrayUID uidCommand )
{
ADDTOCALLSTACK("CPartyDef::RemoveMember");
// ARGS:
// uidRemove = Who is being removed.
// uidCommand = who removed this person (only the master or self can remove)
//
// NOTE: remove of the master will cause the party to disband.
if ( m_Chars.GetCharCount() <= 0 )
return false;
CGrayUID uidMaster = GetMaster();
if ( (uidRemove != uidCommand) && (uidCommand != uidMaster) )
return false;
CChar *pCharRemove = uidRemove.CharFind();
if ( !pCharRemove )
return false;
if ( !IsInParty(pCharRemove) )
return false;
if ( uidRemove == uidMaster )
return Disband(uidMaster);
CChar *pSrc = uidCommand.CharFind();
if ( pSrc && IsTrigUsed(TRIGGER_PARTYREMOVE) )
{
CScriptTriggerArgs args;
if ( pCharRemove->OnTrigger(CTRIG_PartyRemove, pSrc, &args) == TRIGRET_RET_TRUE )
return false;
}
if ( IsTrigUsed(TRIGGER_PARTYLEAVE) )
{
if ( pCharRemove->OnTrigger(CTRIG_PartyLeave, pCharRemove, 0) == TRIGRET_RET_TRUE )
return false;
}
// Remove it from the party
SendRemoveList(pCharRemove, true);
DetachChar(pCharRemove);
pCharRemove->SysMessageDefault(DEFMSG_PARTY_LEAVE_2);
TCHAR *pszMsg = Str_GetTemp();
sprintf(pszMsg, g_Cfg.GetDefaultMsg(DEFMSG_PARTY_LEAVE_1), pCharRemove->GetName());
SysMessageAll(pszMsg);
if ( m_Chars.GetCharCount() <= 1 )
{
// Disband the party
SysMessageAll(g_Cfg.GetDefaultMsg(DEFMSG_PARTY_LEAVE_LAST_PERSON));
return Disband(uidMaster);
}
return true;
}
示例6: DeclineEvent
// ---------------------------------------------------------
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 );
}
示例7: DelObj
void CItemSpawn::DelObj(CGrayUID uid)
{
ADDTOCALLSTACK("CitemSpawn:DelObj");
if ( !uid.IsValidUID() )
return;
BYTE iMax = GetCount();
for ( BYTE i = 0; i < iMax; i++ )
{
if ( m_obj[i] != uid )
continue;
CObjBase *pObj = uid.ObjFind();
pObj->m_uidSpawnItem.InitUID();
m_currentSpawned--;
if ( GetType() == IT_SPAWN_CHAR )
uid.CharFind()->StatFlag_Clear(STATF_Spawned);
while ( m_obj[i + 1].IsValidUID() ) // searching for any entry higher than this one...
{
m_obj[i] = m_obj[i + 1]; // and moving it 1 position to keep values 'together'.
i++;
}
m_obj[i].InitUID(); // Finished moving higher entries (if any) so we free the last entry.
break;
}
ResendTooltip();
}
示例8: MessageEvent
// ---------------------------------------------------------
bool CPartyDef::MessageEvent( CGrayUID uidDst, CGrayUID uidSrc, const NCHAR * pText, int ilenmsg )
{
ADDTOCALLSTACK("CPartyDef::MessageEvent");
UNREFERENCED_PARAMETER(ilenmsg);
if ( pText == NULL )
return( false );
if ( uidDst && !IsInParty( uidDst.CharFind() ) )
return( false );
CChar * pFrom = uidSrc.CharFind();
CChar * pTo = NULL;
if ( uidDst != (DWORD) 0 )
pTo = uidDst.CharFind();
TCHAR * szText = Str_GetTemp();
CvtNUNICODEToSystem( szText, MAX_TALK_BUFFER, pText, MAX_TALK_BUFFER );
if ( ! m_pSpeechFunction.IsEmpty() )
{
TRIGRET_TYPE tr = TRIGRET_RET_FALSE;
CScriptTriggerArgs Args;
Args.m_iN1 = uidSrc;
Args.m_iN2 = uidDst;
Args.m_s1 = szText;
Args.m_s1_raw = szText;
if ( r_Call(m_pSpeechFunction, &g_Serv, &Args, NULL, &tr) )
{
if ( tr == TRIGRET_RET_TRUE )
return( false );
}
}
if ( g_Log.IsLoggedMask( LOGM_PLAYER_SPEAK ))
g_Log.Event( LOGM_PLAYER_SPEAK, "%lx:'%s' Says '%s' in party to '%s'\n", pFrom->GetClient()->GetSocketID(), pFrom->GetName(), szText, pTo ? pTo->GetName() : "all" );
sprintf(szText, g_Cfg.GetDefaultMsg( DEFMSG_PARTY_MSG ), pText);
PacketPartyChat cmd(pFrom, pText);
if ( pTo != NULL )
SendMemberMsg(pTo, &cmd);
else
SendAll(&cmd);
return( true );
}
示例9: Disband
bool CPartyDef::Disband( CGrayUID uidMaster )
{
ADDTOCALLSTACK("CPartyDef::Disband");
// Make sure i am the master.
if ( m_Chars.GetCharCount() <= 0 )
return false;
if ( GetMaster() != uidMaster )
return false;
CChar *pMaster = GetMaster().CharFind();
if ( pMaster && IsTrigUsed(TRIGGER_PARTYDISBAND) )
{
CScriptTriggerArgs args;
if ( pMaster->OnTrigger(CTRIG_PartyDisband, pMaster, &args) == TRIGRET_RET_TRUE )
return false;
}
SysMessageAll(g_Cfg.GetDefaultMsg(DEFMSG_PARTY_DISBANDED));
CChar *pSrc = uidMaster.CharFind();
size_t iQty = m_Chars.GetCharCount();
ASSERT(iQty > 0);
CChar *pChar = NULL;
for ( size_t i = 0; i < iQty; i++ )
{
pChar = m_Chars.GetChar(i).CharFind();
if ( !pChar )
continue;
if ( IsTrigUsed(TRIGGER_PARTYREMOVE) )
{
CScriptTriggerArgs args;
args.m_iN1 = 1;
pChar->OnTrigger(CTRIG_PartyRemove, pSrc, &args);
}
SendRemoveList(pChar, true);
DetachChar(pChar);
}
delete this; // should remove itself from the world list.
return true;
}
示例10:
CStoneMember::CStoneMember( CItemStone * pStone, CGrayUID uid, STONEPRIV_TYPE iType, LPCTSTR pTitle, CGrayUID loyaluid, bool fVal1, bool fVal2, int nAccountGold)
{
m_uidLinkTo = uid;
m_sTitle = pTitle;
m_iPriv = iType;
m_uidLoyalTo = loyaluid;
// union.
if ( iType == STONEPRIV_ENEMY )
{
m_Enemy.m_fTheyDeclared = fVal1;
m_Enemy.m_fWeDeclared = fVal2;
}
else
{
m_Member.m_fAbbrev = fVal1;
m_Member.m_iVoteTally = fVal2; // Temporary space to calculate votes.
}
m_Member.m_iAccountGold = nAccountGold;
if ( ! g_Serv.IsLoading() && pStone->GetMemoryType())
{
CChar * pChar = uid.CharFind();
if ( pChar != NULL )
{
pChar->Memory_AddObjTypes(pStone, static_cast<WORD>(pStone->GetMemoryType()));
if ( pStone->IsTopLevel())
{
pChar->m_ptHome = pStone->GetTopPoint(); // Our new home.
}
}
}
pStone->InsertTail( this );
}
示例11: r_LoadVal
bool CStoneMember::r_LoadVal( CScript & s ) // Load an item Script
{
ADDTOCALLSTACK("CStoneMember::r_LoadVal");
EXC_TRY("LoadVal");
STMM_TYPE iIndex = (STMM_TYPE) FindTableSorted( s.GetKey(), sm_szLoadKeys, COUNTOF( sm_szLoadKeys )-1 );
if ( GetLinkUID().IsChar() )
{
switch ( iIndex )
{
case STMM_ACCOUNTGOLD:
SetAccountGold(s.GetArgVal());
break;
case STMM_LOYALTO:
{
CGrayUID uid = s.GetArgVal();
SetLoyalTo(uid.CharFind());
}
break;
case STMM_PRIV:
SetPriv(static_cast<STONEPRIV_TYPE>(s.GetArgVal()));
break;
case STMM_TITLE:
SetTitle(s.GetArgStr());
break;
case STMM_SHOWABBREV:
SetAbbrev( s.GetArgVal() ? 1 : 0 );
break;
default:
return false;
}
}
else if ( GetLinkUID().IsItem() )
{
switch ( iIndex )
{
case STMM_GUILD_THEYALLIANCE:
break;
case STMM_GUILD_THEYWAR:
SetTheyDeclared(s.GetArgVal() ? true : false);
break;
case STMM_GUILD_WEALLIANCE:
break;
case STMM_GUILD_WEWAR:
SetWeDeclared(s.GetArgVal() ? true : false);
break;
default:
return false;
}
}
return true;
EXC_CATCH;
EXC_DEBUG_START;
EXC_ADD_SCRIPT;
EXC_DEBUG_END;
return false;
}
示例12: r_Verb
bool CPartyDef::r_Verb( CScript &s, CTextConsole *pSrc )
{
ADDTOCALLSTACK("CPartyDef::r_Verb");
EXC_TRY("Verb");
ASSERT(pSrc);
LPCTSTR pszKey = s.GetKey();
CScriptObj *pRef;
if ( r_GetRef(pszKey, pRef) )
{
if ( pszKey[0] )
{
if ( !pRef )
return true;
CScript script(pszKey, s.GetArgStr());
return pRef->r_Verb(script, pSrc);
}
}
int iIndex = FindTableSorted(pszKey, sm_szVerbKeys, COUNTOF(sm_szVerbKeys) - 1);
switch ( iIndex )
{
case PDV_ADDMEMBER:
case PDV_ADDMEMBERFORCED:
{
bool bForced = (iIndex == PDV_ADDMEMBERFORCED);
CGrayUID toAdd = static_cast<CGrayUID>(s.GetArgVal());
CChar *pCharAdd = toAdd.CharFind();
CChar *pCharMaster = GetMaster().CharFind();
if ( !pCharAdd || IsInParty(pCharAdd) )
return false;
if ( pCharMaster && !bForced )
pCharMaster->SetKeyNum("PARTY_LASTINVITE", (long long)toAdd);
return CPartyDef::AcceptEvent(pCharAdd, GetMaster(), bForced);
} break;
case PDV_CLEARTAGS:
{
LPCTSTR pszArg = s.GetArgStr();
SKIP_SEPARATORS(pszArg);
m_TagDefs.ClearKeys(pszArg);
} break;
case PDV_CREATE:
return true;
case PDV_DISBAND:
return Disband(GetMaster());
case PDV_MESSAGE:
break;
case PDV_REMOVEMEMBER:
{
CGrayUID toRemove;
LPCTSTR pszArg = s.GetArgStr();
if ( *pszArg == '@' )
{
pszArg++;
size_t nMember = Exp_GetVal(pszArg);
if ( !m_Chars.IsValidIndex(nMember) )
return false;
toRemove = m_Chars.GetChar(nMember);
}
else
toRemove = static_cast<CGrayUID>(s.GetArgVal());
if ( toRemove )
return RemoveMember(toRemove, GetMaster());
return false;
} break;
case PDV_SETMASTER:
{
CGrayUID newMaster;
LPCTSTR pszArg = s.GetArgStr();
if ( *pszArg == '@' )
{
pszArg++;
size_t nMember = Exp_GetVal(pszArg);
if ( nMember == 0 || !m_Chars.IsValidIndex(nMember) )
return false;
newMaster = m_Chars.GetChar(nMember);
}
else
newMaster = static_cast<CGrayUID>(s.GetArgVal());
if ( newMaster )
return SetMaster(newMaster.CharFind());
return false;
} break;
case PDV_SYSMESSAGE:
{
//.........这里部分代码省略.........
示例13: r_WriteVal
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;
//.........这里部分代码省略.........
示例14: AcceptEvent
bool CPartyDef::AcceptEvent( CChar *pCharAccept, CGrayUID uidInviter, bool bForced ) // static
{
ADDTOCALLSTACK("CPartyDef::AcceptEvent");
// We are accepting the invite to join a party
// No security checks if bForced -> true !!!
// Party master is only one that can add ! GetChar(0)
CChar *pCharInviter = uidInviter.CharFind();
if ( !pCharInviter || !pCharInviter->m_pClient || !pCharAccept || !pCharAccept->m_pClient || (pCharInviter == pCharAccept) )
return false;
CPartyDef *pParty = pCharInviter->m_pParty;
if ( !bForced )
{
CVarDefCont *sTempVal = pCharInviter->GetTagDefs()->GetKey("PARTY_LASTINVITE");
if ( !sTempVal || (static_cast<CGrayUID>(sTempVal->GetValNum()) != pCharAccept->GetUID()) )
return false;
pCharInviter->DeleteKey("PARTY_LASTINVITE");
if ( !pCharInviter->CanSee(pCharAccept) )
return false;
}
if ( pCharAccept->m_pParty ) // already in a party
{
if ( pParty == pCharAccept->m_pParty ) // already in this party
return true;
if ( bForced )
{
pCharAccept->m_pParty->RemoveMember(pCharAccept->GetUID(), pCharAccept->GetUID());
pCharAccept->m_pParty = NULL;
}
else
return false;
}
TCHAR *pszMsg = Str_GetTemp();
sprintf(pszMsg, g_Cfg.GetDefaultMsg(DEFMSG_PARTY_JOINED), pCharAccept->GetName());
if ( !pParty )
{
// Create the party now.
pParty = new CPartyDef(pCharInviter, pCharAccept);
ASSERT(pParty);
g_World.m_Parties.InsertHead(pParty);
pCharInviter->SysMessage(pszMsg);
}
else
{
// Add to existing party
if ( pParty->IsPartyFull() || (!bForced && !pParty->IsPartyMaster(pCharInviter)) )
return false;
pParty->SysMessageAll(pszMsg); // tell everyone already in the party about this
pParty->AcceptMember(pCharAccept);
}
pCharAccept->SysMessageDefault(DEFMSG_PARTY_ADDED);
return true;
}
示例15: r_Verb
//.........这里部分代码省略.........
if ( pszArgs[0] != '\0' )
{
pMember = STATIC_CAST <CStoneMember *>(GetHead());
CScript scriptVerb( pszArgs );
for (; pMember != NULL; pMember = pMember->GetNext())
{
if ( !pMember->GetLinkUID().IsChar() )
continue;
if ( iFlags == -1 )
{
pMember->r_Verb(scriptVerb, pSrc);
}
else if ( pMember->GetPriv() == static_cast<STONEPRIV_TYPE>(iFlags) )
{
pMember->r_Verb(scriptVerb, pSrc);
}
}
}
else
{
g_Log.EventError("ItemStone::AllMembers empty args.\n");
return false;
}
}
}
}
break;
case ISV_APPLYTOJOIN:
if ( s.HasArgs())
{
CGrayUID pMemberUid = s.GetArgVal();
CChar * pMemberChar = pMemberUid.CharFind();
if ( pMemberChar )
{
AddRecruit( pMemberChar, STONEPRIV_CANDIDATE );
}
}
break;
case ISV_CHANGEALIGN:
if ( s.HasArgs())
{
SetAlignType(static_cast<STONEALIGN_TYPE>(s.GetArgVal()));
TCHAR *pszMsg = Str_GetTemp();
sprintf(pszMsg, "%s is now a %s %s\n", static_cast<LPCTSTR>(GetName()), static_cast<LPCTSTR>(GetAlignName()), static_cast<LPCTSTR>(GetTypeName()));
Speak(pszMsg);
}
break;
case ISV_DECLAREPEACE:
if ( s.HasArgs())
{
CGrayUID pMemberUid = s.GetArgVal();
WeDeclarePeace(pMemberUid);
}
break;
case ISV_DECLAREWAR:
if ( s.HasArgs())
{
CGrayUID pMemberUid = s.GetArgVal();
CItem * pEnemyItem = pMemberUid.ItemFind();
if ( pEnemyItem )
{
CItemStone * pNewEnemy = dynamic_cast<CItemStone*>(pEnemyItem);
if ( pNewEnemy )
{