📄 racewar.cpp
字号:
///////////////////////////////////////////////////////////////////// 傈里俊 措茄 傈馆利牢 沥焊 棺 傈里 矫累 棺 辆丰矫 贸府风凭 备泅///////////////////////////////////////////////////////////////////#include <stdio.h>#include "RaceWar.h"#include "Mutex.h"#include "WarSystem.h"#include "Properties.h"#include "DB.h"#include "Assert.h"#include "ZoneGroupManager.h"//#include "HolyLandRaceBonus.h"#include "Zone.h"#include "ZoneGroup.h"#include "ZoneUtil.h"#include "CastleInfoManager.h"#include "ShrineInfoManager.h"#include "ZoneInfoManager.h"#include "PCManager.h"#include "Gpackets/GCWarScheduleList.h"#include "RaceWarInfo.h"#include "HolyLandManager.h"#include "VariableManager.h"#include "RaceWarLimiter.h"#include "RegenZoneManager.h"#include "StringStream.h"#include "Gpackets/GCSystemMessage.h"#include "Gpackets/GCNoticeEvent.h"#include "Cpackets/CGSay.h"//--------------------------------------------------------------------------------//// constructor / destructor////--------------------------------------------------------------------------------RaceWar::RaceWar( WarState warState, WarID_t warID ): War( warState, warID ){}RaceWar::~RaceWar(){}//--------------------------------------------------------------------------------//// executeStart////--------------------------------------------------------------------------------// 傈里捞 矫累窍绰 矫痢俊辑 贸府秦具 瞪 巴甸//// (!) Zone俊 嘿绢乐绰 WarScheduler俊辑 角青登绰 何盒捞骨肺 // 磊脚狼 Zone(己)俊 措茄 贸府绰 lock捞 鞘夸绝促.//--------------------------------------------------------------------------------void RaceWar::executeStart() throw (Error){ __BEGIN_TRY sendWarStartMessage(); // 辆练傈俊辑绰 焊呈胶甫 馋促.// g_pHolyLandRaceBonus->clear(); // 傈里 吝俊绰 NPC啊 荤扼柳促. //g_pCastleInfoManager->deleteAllNPCs(); // 傈里 吝俊绰 己 救俊辑 付备 轿款促~ g_pCastleInfoManager->releaseAllSafeZone(); // 荐龋己窜 焊龋阜捞 葛滴 荤扼柳促. g_pShrineInfoManager->removeAllShrineShield(); // 酒淬狼 己瘤 傈开俊 乔狼 己辑 困摹甫 焊郴霖促. // 捞芭 捞力 WarSystem::addWar 救俊辑 阂矾霖促. // g_pShrineInfoManager->broadcastBloodBibleStatus();// g_pHolyLandManager->sendBloodBibleStatus(); // 酒淬狼 己瘤 傈开俊 矫埃阑 绊沥茄促. g_pHolyLandManager->fixTimeband( g_pVariableManager->getVariable( RACE_WAR_TIMEBAND ) ); g_pHolyLandManager->killAllMonsters(); RegenZoneManager::getInstance()->putTryingPosition(); RegenZoneManager::getInstance()->broadcastStatus(); // hasActiveRaceWar()啊 汲沥登绰 鸥捞怪 锭巩俊.. // WarSystem::addWar()俊辑 角青茄促. // 辆练 傈里俊 曼啊窍瘤 臼绰 荤恩甸阑 郴焊辰促. //g_pHolyLandManager->remainRaceWarPlayers(); // RaceWarHistory Table 俊 扁废 recordRaceWarStart(); __END_CATCH}void RaceWar::recordRaceWarStart() throw (Error){ __BEGIN_TRY Statement* pStmt = NULL; Result* pResult = NULL; BEGIN_DB { pStmt = g_pDatabaseManager->getConnection("DARKEDEN")->createStatement(); pResult = pStmt->executeQuery("SELECT Race, SUM(CurrentNum) FROM RaceWarPCLimit GROUP BY Race"); uint slayerSum = 0; uint vampireSum = 0; uint oustersSum = 0; string slayerOld; string vampireOld; string oustersOld; while (pResult->next()) { uint race = pResult->getInt(1); uint num = pResult->getInt(2); if ( race == 0 ) slayerSum = num; else if ( race == 1 ) vampireSum = num; else if ( race == 2 ) oustersSum = num; } pResult = pStmt->executeQuery("SELECT ID, OwnerRace FROM ShrineInfo"); while (pResult->next()) { uint id = pResult->getInt(1); uint ownerRace = pResult->getInt(2); if ( ownerRace == 0 ) slayerOld = slayerOld + itos(id) + "|"; else if ( ownerRace == 1 ) vampireOld = vampireOld + itos(id) + "|"; else if ( ownerRace == 2 ) oustersOld = oustersOld + itos(id) + "|"; } pStmt->executeQuery("INSERT INTO RaceWarHistory (RaceWarID, SlayerNum, VampireNum, OustersNum, SlayerOldBloodBible, VampireOldBloodBible, OustersOldBloodBible) VALUES ('%s', %d, %d, %d, '%s', '%s', '%s')", getWarStartTime().toStringforWeb().c_str(), slayerSum, vampireSum, oustersSum, slayerOld.c_str(), vampireOld.c_str(), oustersOld.c_str() ); } END_DB(pStmt) __END_CATCH}//--------------------------------------------------------------------------------//// executeEnd////--------------------------------------------------------------------------------// 傈里捞 场唱绰 矫痢俊辑 贸府秦具 瞪 巴甸//--------------------------------------------------------------------------------void RaceWar::executeEnd() throw (Error){ __BEGIN_TRY //---------------------------------------------------------------------------- // 傈里 场车促绰 吧 舅赴促. //---------------------------------------------------------------------------- sendWarEndMessage(); //---------------------------------------------------------------------------- // 辆练傈牢 版快 贸府 //---------------------------------------------------------------------------- // 傈里 脚没陛 阶牢芭绰 绢痘霸 且鳖? 公矫 _-_; // 辆练傈俊辑绰 波柳 焊呈胶甫 促矫 囊促.// g_pHolyLandRaceBonus->refresh(); //---------------------------------------------------------------------------- // 乔狼 己辑 炼阿阑 登倒妨霖促. //---------------------------------------------------------------------------- g_pShrineInfoManager->returnAllBloodBible(); g_pShrineInfoManager->addAllShrineShield(); g_pCastleInfoManager->resetAllSafeZone(); g_pCastleInfoManager->transportAllOtherRace(); //g_pCastleInfoManager->loadAllNPCs(); // 酒淬狼 己瘤 傈开俊 乔狼 己辑 困摹甫 焊郴霖促. //g_pHolyLandManager->sendBloodBibleStatus(); g_pShrineInfoManager->broadcastBloodBibleStatus(); // 酒淬狼 己瘤 傈开俊 绊沥沁带 矫埃阑 促矫 倒赴促. g_pHolyLandManager->resumeTimeband(); // 傈里 曼啊磊 府胶飘甫 葛滴 力芭茄促. RaceWarLimiter::clearPCList(); // 曼啊磊 箭磊甫 0栏肺 官槽促. RaceWarLimiter::getInstance()->clearCurrent(); RegenZoneManager::getInstance()->deleteTryingPosition(); RegenZoneManager::getInstance()->reload(); // 某腐磐甸狼 Flag档 葛滴 力芭茄促. g_pZoneGroupManager->removeFlag( Effect::EFFECT_CLASS_RACE_WAR_JOIN_TICKET ); CGSayHandler::opworld(NULL, "*world *load blood_bible_owner", 0, true); // RaceWarHistory Table 俊 扁废 recordRaceWarEnd(); __END_CATCH}void RaceWar::recordRaceWarEnd() throw (Error){ __BEGIN_TRY Statement* pStmt = NULL; Result* pResult = NULL; BEGIN_DB { pStmt = g_pDatabaseManager->getConnection("DARKEDEN")->createStatement(); pResult = pStmt->executeQuery("SELECT ID, OwnerRace FROM ShrineInfo"); string slayerNew; string vampireNew; string oustersNew; while (pResult->next()) { uint id = pResult->getInt(1); uint ownerRace = pResult->getInt(2); if ( ownerRace == 0 ) slayerNew = slayerNew + itos(id) + "|"; else if ( ownerRace == 1 ) vampireNew = vampireNew + itos(id) + "|"; else if ( ownerRace == 2 ) oustersNew = oustersNew + itos(id) + "|"; } pStmt->executeQuery("UPDATE RaceWarHistory SET SlayerBloodBible = '%s', VampireBloodBible = '%s', OustersBloodBible = '%s' WHERE RaceWarID = '%s'", slayerNew.c_str(), vampireNew.c_str(), oustersNew.c_str(), getWarStartTime().toStringforWeb().c_str() ); } END_DB(pStmt) // script 倒府扁 ぱ.,ぱ system 窃荐甫 静霸 瞪 临捞具 !_! char cmd[100]; sprintf(cmd, "/home/darkeden/vs/bin/script/recordRaceWarHistory.py %s %d %d ", getWarStartTime().toStringforWeb().c_str(), g_pConfig->getPropertyInt("Dimension"), g_pConfig->getPropertyInt("WorldID") ); filelog("script.log", cmd); system(cmd); __END_CATCH}string RaceWar::getWarName() const throw (Error){ __BEGIN_TRY return "辆练埃 傈里"; __END_CATCH}//--------------------------------------------------------------------------------// 傈里 场朝 锭//--------------------------------------------------------------------------------void RaceWar::sendWarEndMessage() const throw (ProtocolException, Error){ __BEGIN_TRY War::sendWarEndMessage(); // 救傈瘤措 秦力 犬牢? 菩哦 GCNoticeEvent gcNoticeEvent; gcNoticeEvent.setCode( NOTICE_EVENT_RACE_WAR_OVER ); g_pZoneGroupManager->broadcast( &gcNoticeEvent ); __END_CATCH}void RaceWar::makeWarScheduleInfo( WarScheduleInfo* pWSI ) const throw (Error){ __BEGIN_TRY pWSI->warType = getWarType(); pWSI->challengerGuildID = 0; pWSI->challengerGuildName = ""; __END_CATCH}void RaceWar::makeWarInfo(WarInfo* pWarInfo) const throw (Error){ __BEGIN_TRY Assert(pWarInfo!=NULL); Assert(pWarInfo->getWarType()==WAR_RACE); RaceWarInfo* pRaceWarInfo = dynamic_cast<RaceWarInfo*>(pWarInfo); Assert(pRaceWarInfo!=NULL); const hash_map<ZoneID_t, CastleInfo*>& castleInfos = g_pCastleInfoManager->getCastleInfos(); hash_map<ZoneID_t, CastleInfo*>::const_iterator itr = castleInfos.begin(); for ( ; itr!=castleInfos.end(); itr++) { CastleInfo* pCastleInfo = itr->second; pRaceWarInfo->addCastleID( pCastleInfo->getZoneID() ); } __END_CATCH}string RaceWar::toString() const throw (Error){ __BEGIN_TRY StringStream msg; msg << "RaceWar(" << "WarID:" << (int)getWarID() << ",State:" << (int)getState() << ")"; return msg.toString(); __END_CATCH}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -