示例#1
0
bool CClient::CanHear( const CObjBaseTemplate * pSrc, TALKMODE_TYPE mode ) const
{
	ADDTOCALLSTACK("CClient::CanHear");
	// can we hear this text or sound.

	if ( !IsConnectTypePacket() )
		return( false );
	if ( mode == TALKMODE_BROADCAST || pSrc == NULL )
		return( true );
	if ( m_pChar == NULL )
		return( false );

	if ( IsPriv( PRIV_HEARALL ) &&
		pSrc->IsChar()&&
		( mode == TALKMODE_SYSTEM || mode == TALKMODE_SAY || mode == TALKMODE_WHISPER || mode == TALKMODE_YELL ))
	{
		const CChar * pCharSrc = dynamic_cast <const CChar*> ( pSrc );
		ASSERT(pCharSrc);
		if ( pCharSrc && pCharSrc->IsClient())
		{
			if ( pCharSrc->GetPrivLevel() <= GetPrivLevel())
			{
				return( true );
			}
		}
	}

	return( m_pChar->CanHear( pSrc, mode ));
}
示例#2
0
bool CClient::CanHear( const CObjBaseTemplate * pSrc, TALKMODE_TYPE mode ) const
{
	ADDTOCALLSTACK("CClient::CanHear");
	// can we hear this text or sound.

	if ( !IsConnectTypePacket() )
		return false;
	if ( !pSrc || (mode == TALKMODE_BROADCAST) )
		return true;
	if ( !m_pChar )
		return false;

	if ( IsPriv(PRIV_HEARALL) && pSrc->IsChar() && ((mode == TALKMODE_SYSTEM) || (mode == TALKMODE_SAY) || (mode == TALKMODE_WHISPER) || (mode == TALKMODE_YELL)) )
	{
		const CChar *pCharSrc = dynamic_cast<const CChar *>(pSrc);
		ASSERT(pCharSrc);
		if ( pCharSrc && pCharSrc->m_pClient )
		{
			if ( pCharSrc->GetPrivLevel() <= GetPrivLevel() )
				return true;
		}
	}

	return m_pChar->CanHear(pSrc, mode);
}
示例#3
0
bool CClient::CanHear(const CObjBaseTemplate *pSrc, TALKMODE_TYPE mode) const
{
	ADDTOCALLSTACK("CClient::CanHear");
	// can we hear this text or sound.

	if ( !IsConnectTypePacket() )
		return false;
	if ( !pSrc )
		return true;
	if ( !m_pChar )
		return false;

	if ( IsPriv(PRIV_HEARALL) && pSrc->IsChar() && ((mode == TALKMODE_SAY) || (mode == TALKMODE_WHISPER) || (mode == TALKMODE_YELL)) )
	{
		const CChar *pChar = static_cast<const CChar *>(pSrc);
		if ( GetPrivLevel() >= pChar->GetPrivLevel() )
			return true;
	}

	return m_pChar->CanHear(pSrc, mode);
}