⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 guild.cpp

📁 天之炼狱1服务器端源文件游戏服务端不完整
💻 CPP
📖 第 1 页 / 共 2 页
字号:
	BEGIN_DB	{		pStmt = g_pDatabaseManager->getConnection("DARKEDEN")->createStatement();		pStmt->executeQuery( "DELETE FROM GuildInfo WHERE GuildID = %d", m_ID );		SAFE_DELETE(pStmt);	}	END_DB(pStmt)		__LEAVE_CRITICAL_SECTION(m_Mutex)	__END_CATCH}#ifdef __SHARED_SERVER__void Guild::saveIntro( const string& intro )	throw(){	__BEGIN_TRY	m_Intro = intro;	Statement* pStmt = NULL;	string modifyIntro = Guild::correctString( intro );	BEGIN_DB	{		pStmt = g_pDatabaseManager->getConnection("DARKEDEN")->createStatement();		pStmt->executeQuery( "UPDATE GuildInfo SET Intro = '%s' WHERE GuildID = %u", modifyIntro.c_str(), m_ID );		SAFE_DELETE(pStmt);	}	END_DB(pStmt)	__END_CATCH}void Guild::tinysave( const char* field ) const	throw(){	__BEGIN_TRY		Statement* pStmt = NULL;	BEGIN_DB	{		pStmt = g_pDatabaseManager->getConnection("DARKEDEN")->createStatement();		pStmt->executeQuery( "UPDATE GuildInfo SET %s WHERE GuildID = %u", field, m_ID );		SAFE_DELETE( pStmt );	}	END_DB( pStmt )	__END_CATCH}#endifGuildMember* Guild::getMember( const string& name ) const	throw(){	__BEGIN_TRY	HashMapGuildMemberConstItor itr;	GuildMember* pGuildMember = NULL;	__ENTER_CRITICAL_SECTION(m_Mutex)		itr = m_Members.find( name );	if ( itr == m_Members.end() )	{		//cout << "Guild::getMember() : NoSuchMember" << endl;		m_Mutex.unlock();		return NULL;	}	pGuildMember = itr->second;	__LEAVE_CRITICAL_SECTION(m_Mutex)		return pGuildMember;	__END_CATCH}GuildMember* Guild::getMember_NOLOCKED( const string& name ) const	throw(){	__BEGIN_TRY	HashMapGuildMemberConstItor itr;	GuildMember* pGuildMember = NULL;	itr = m_Members.find( name );	if ( itr == m_Members.end() )	{		//cerr << "Guild::getMember() : NoSuchMember" << endl;		return NULL;	}	pGuildMember = itr->second;	return pGuildMember;	__END_CATCH}void Guild::addMember( GuildMember* pMember )	throw( DuplicatedException, Error ){	__BEGIN_TRY	__ENTER_CRITICAL_SECTION(m_Mutex)	Assert( pMember );	HashMapGuildMemberConstItor itr;	itr = m_Members.find( pMember->getName() );	if ( itr != m_Members.end() )	{		m_Mutex.unlock();		throw DuplicatedException();	}	m_Members[ pMember->getName() ] = pMember;	GuildMemberRank_t rank = pMember->getRank();		if ( rank == GuildMember::GUILDMEMBER_RANK_NORMAL ||		 rank == GuildMember::GUILDMEMBER_RANK_MASTER ||		 rank == GuildMember::GUILDMEMBER_RANK_SUBMASTER )	{		// 老馆雀盔捞唱 (辑宏)付胶磐啊 眠啊瞪锭 ActiverMemberCount甫 刘啊矫挪促.		m_ActiveMemberCount++;	}	else if ( rank == GuildMember::GUILDMEMBER_RANK_WAIT )	{		// 啊涝 措扁磊啊 眠啊瞪锭 WaitMemberCount 甫 刘啊 矫挪促.		m_WaitMemberCount++;	}	__LEAVE_CRITICAL_SECTION(m_Mutex)	__END_CATCH}void Guild::deleteMember( const string& name )	throw(){	__BEGIN_TRY	__ENTER_CRITICAL_SECTION(m_Mutex)	HashMapGuildMemberItor itr;	itr = m_Members.find( name );	if ( itr == m_Members.end() )	{		cerr << "Guild::deleteMember() : NoSuchElementException" << endl;		m_Mutex.unlock();		return;	}	GuildMemberRank_t rank = itr->second->getRank();	if ( rank == GuildMember::GUILDMEMBER_RANK_NORMAL	  || rank == GuildMember::GUILDMEMBER_RANK_MASTER	  || rank == GuildMember::GUILDMEMBER_RANK_SUBMASTER )	{		// 劝悼吝牢 雀盔荐 墨款磐甫 皑家 矫挪促		m_ActiveMemberCount--;	}	else if ( rank == GuildMember::GUILDMEMBER_RANK_WAIT )	{		m_WaitMemberCount--;	}	SAFE_DELETE( itr->second );	m_Members.erase(itr);	__LEAVE_CRITICAL_SECTION(m_Mutex)	__END_CATCH}void Guild::modifyMember( GuildMember& Member )	throw(){	__BEGIN_TRY	__ENTER_CRITICAL_SECTION(m_Mutex)	HashMapGuildMemberConstItor itr;	itr = m_Members.find( Member.getName() );	if ( itr == m_Members.end() )	{		cerr << "Guild::modifyMember() : NoSuchElementException" << endl;		m_Mutex.unlock();		return;	}	*(itr->second) = Member;	__LEAVE_CRITICAL_SECTION(m_Mutex)	__END_CATCH}void Guild::modifyMemberRank( const string& name, GuildMemberRank_t rank )	throw(){	__BEGIN_TRY		GuildMember* pMember = getMember( name );	if ( pMember == NULL ) return;	GuildMemberRank_t oldRank = pMember->getRank();	if ( oldRank == rank )		return;	if ( oldRank == GuildMember::GUILDMEMBER_RANK_WAIT )	{		m_WaitMemberCount--;	}	else if ( oldRank == GuildMember::GUILDMEMBER_RANK_NORMAL			|| oldRank == GuildMember::GUILDMEMBER_RANK_MASTER			|| oldRank == GuildMember::GUILDMEMBER_RANK_SUBMASTER )	{		m_ActiveMemberCount--;	}		if ( rank == GuildMember::GUILDMEMBER_RANK_WAIT )	{		m_WaitMemberCount++;	}	else if ( rank == GuildMember::GUILDMEMBER_RANK_NORMAL			|| rank == GuildMember::GUILDMEMBER_RANK_MASTER			|| rank == GuildMember::GUILDMEMBER_RANK_SUBMASTER )	{		m_ActiveMemberCount++;	}	pMember->setRank( rank );#ifdef __SHARED_SERVER__	pMember->save();#endif	__END_CATCH}#ifdef __GAME_SERVER__void Guild::addCurrentMember( const string& name )	throw ( DuplicatedException, Error ){	__BEGIN_TRY		__ENTER_CRITICAL_SECTION(m_Mutex)		// 促弗 孤咆胶 结档 瞪 淀茄单.. 蓖满酒..	if ( m_CurrentMembers.end() != find( m_CurrentMembers.begin(), m_CurrentMembers.end(), name ) )	{		m_Mutex.unlock();		return;	}	m_CurrentMembers.push_back( name );	// Guild Member 按眉俊 肺弊柯阑 技泼茄促.	GuildMember* pGuildMember = getMember_NOLOCKED( name );	if ( pGuildMember == NULL ) 	{		m_Mutex.unlock();		return;	}	pGuildMember->setLogOn( true );	__LEAVE_CRITICAL_SECTION(m_Mutex)	__END_CATCH}void Guild::deleteCurrentMember( const string& name )	throw ( NoSuchElementException ){	__BEGIN_TRY		__ENTER_CRITICAL_SECTION(m_Mutex)	list<string>::iterator itr =  find( m_CurrentMembers.begin(), m_CurrentMembers.end(), name );	if ( m_CurrentMembers.end() == itr )	{		m_Mutex.unlock();		return;	}	m_CurrentMembers.erase( itr );	// Guild Member 按眉俊 肺弊坷橇甫 技泼茄促.	GuildMember* pGuildMember = getMember_NOLOCKED( name );	if ( pGuildMember == NULL ) 	{		m_Mutex.unlock();		return;	}	pGuildMember->setLogOn( false );	__LEAVE_CRITICAL_SECTION(m_Mutex)	__END_CATCH}list<string> Guild::getCurrentMembers()	throw(){	__BEGIN_TRY		list<string> cmList;	__ENTER_CRITICAL_SECTION(m_Mutex)	cmList = m_CurrentMembers;	__LEAVE_CRITICAL_SECTION(m_Mutex)	return cmList;	__END_CATCH}#endif#ifdef __SHARED_SERVER__void Guild::makeInfo( GuildInfo2* pGuildInfo )	throw(){	__BEGIN_TRY	__ENTER_CRITICAL_SECTION( m_Mutex )	pGuildInfo->setID( m_ID );	pGuildInfo->setName( m_Name );	pGuildInfo->setType( m_Type );	pGuildInfo->setRace( m_Race );	pGuildInfo->setState( m_State );	pGuildInfo->setServerGroupID( m_ServerGroupID );	pGuildInfo->setZoneID( m_ZoneID );	pGuildInfo->setMaster( m_Master );	pGuildInfo->setDate( m_Date );	pGuildInfo->setIntro( m_Intro );	HashMapGuildMemberConstItor itr = m_Members.begin();	for ( ; itr != m_Members.end(); itr++ )	{		GuildMemberInfo2* pGuildMemberInfo = new GuildMemberInfo2();		pGuildMemberInfo->setGuildID( itr->second->getGuildID() );		pGuildMemberInfo->setName( itr->second->getName() );		pGuildMemberInfo->setRank( itr->second->getRank() );		pGuildMemberInfo->setLogOn( itr->second->getLogOn() );		pGuildInfo->addGuildMemberInfo( pGuildMemberInfo );	}	__LEAVE_CRITICAL_SECTION( m_Mutex )	__END_CATCH}#endifvoid Guild::makeInfo( GuildInfo* pGuildInfo )	throw(){	__BEGIN_TRY		__ENTER_CRITICAL_SECTION( m_Mutex )	pGuildInfo->setGuildID( m_ID );	pGuildInfo->setGuildName( m_Name );	pGuildInfo->setGuildMaster( m_Master );	pGuildInfo->setGuildMemberCount( m_ActiveMemberCount );	__LEAVE_CRITICAL_SECTION( m_Mutex )	__END_CATCH}void Guild::makeMemberInfo( GCGuildMemberList& gcGuildMemberList )	throw(){	__BEGIN_TRY	__ENTER_CRITICAL_SECTION( m_Mutex )	HashMapGuildMember& Members = getMembers();	HashMapGuildMemberConstItor itr = Members.begin();	for ( ; itr != Members.end(); itr++ )	{		GuildMember* pGuildMember = itr->second;		GuildMemberInfo* pGuildMemberInfo = new GuildMemberInfo();		pGuildMemberInfo->setName( pGuildMember->getName() );		pGuildMemberInfo->setRank( pGuildMember->getRank() );		pGuildMemberInfo->setLogOn( pGuildMember->getLogOn() );		gcGuildMemberList.addGuildMemberInfo( pGuildMemberInfo );	}	__LEAVE_CRITICAL_SECTION( m_Mutex )	__END_CATCH}void Guild::expireTimeOutWaitMember( VSDateTime currentDateTime, list<string>& mList )	throw(Error){	__BEGIN_TRY#ifdef __SHARED_SERVER__	HashMapGuildMemberItor itr = m_Members.begin();	while ( itr != m_Members.end() )	{		GuildMember* pGuildMember = itr->second;		if ( pGuildMember->getRank() == GuildMember::GUILDMEMBER_RANK_WAIT		  && pGuildMember->isRequestDateTimeOut( currentDateTime ) )		{			mList.push_back( pGuildMember->getName() );			// wait member count 甫 临牢促.			m_WaitMemberCount--;			pGuildMember->expire();			SAFE_DELETE( pGuildMember );			m_Members.erase( itr++ );		}		else		{			itr++;		}	}#endif	__END_CATCH}string Guild::toString() const	throw(){	__BEGIN_TRY		StringStream msg;	msg << " GuildID = " << m_ID		<< " GuildName = " << m_Name		<< " GuildType = " << (int)m_Type		<< " GuildState = " << (int)m_State		<< " ServerGroupID = " << (int)m_ServerGroupID		<< " GuildZoneID = " << (int)m_ZoneID		<< " Master = " << m_Master		<< " Date = " << m_Date		<< endl;	return msg.toString();	__END_CATCH}string Guild::correctString( const string& str )	throw(){	__BEGIN_TRY	string correct = str;	unsigned int i = 0;	unsigned int size = str.size();	while( i < size )	{		if ( correct[i] == '\\' )		{			correct.replace( i, 1, "\\\\" );			i = i + 2;			size++;		}		else if ( correct[i] == '\'' )		{			correct.replace( i, 1, "\\'" );			i = i + 2;			size++;		}		else 		{			i++;		}	}	return correct;	__END_CATCH}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -