📄 guild.cpp
字号:
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 + -