?? vampire.cpp
字號(hào):
// 撈傈 飯駭狼 牢器甫 罐酒柯促. VampEXPInfo* pBeforeVampEXPInfo = g_pVampEXPInfoManager->getVampEXPInfo(m_Level - 1); // 撈傈 飯駭狼 醚 版氰摹 + 格釬 版氰摹 函拳樊 = 泅犁 穿利 版氰摹 m_Exp = pBeforeVampEXPInfo->getAccumExp() + (pVampEXPInfo->getGoalExp() - m_GoalExp); //file << "薦瀝等 穿利 版氰摹 : " << (int)m_Exp << endl; //file << "薦瀝等 格釬 版氰摹 : " << (int)m_GoalExp << endl; //file << endl; //file.close(); // by sigi. 2002.5.15// StringStream attrsave;// attrsave << "Exp = " << (int)m_Exp;// tinysave(attrsave.toString()); char pField[80]; sprintf(pField, "Exp=%lu", m_Exp); tinysave(pField); }*/ // rank啊 0撈擱 檬扁藹撈 汲瀝登瘤 臼疽促綽 狼固撈促. by sigi. 2002.9.13 if (getRank()==0) { saveInitialRank(); } // 肋給等 拌鞭闌 犁煉瀝 秦霖促./* RankEXPInfo* pRankEXPInfo = g_pRankEXPInfoManager[RANK_TYPE_VAMPIRE]->getRankEXPInfo(m_Rank); if ((pRankEXPInfo->getAccumExp() != m_RankExp + m_RankGoalExp) && m_Rank > 1 && m_Rank < VAMPIRE_MAX_RANK) { //ofstream file("軌橇瓷仿摹煉瀝.txt", ios::out | ios::app); //file << "NAME:" << m_Name << endl; //file << "==VampEXP==" << endl; //file << "泅犁飯駭狼醚版氰摹 : " << (int)pVampEXPInfo->getAccumExp() << endl; //file << "泅犁 穿利 版氰摹 : " << (int)m_Exp << endl; //file << "泅犁 格釬 版氰摹 : " << (int)m_GoalExp << endl; // 撈傈 飯駭狼 牢器甫 罐酒柯促. RankEXPInfo* pBeforeRankEXPInfo = g_pRankEXPInfoManager[RANK_TYPE_VAMPIRE]->getRankEXPInfo(m_Rank - 1); // 撈傈 飯駭狼 醚 版氰摹 + 格釬 版氰摹 函拳樊 = 泅犁 穿利 版氰摹 m_RankExp = pBeforeRankEXPInfo->getAccumExp() + (pRankEXPInfo->getGoalExp() - m_RankGoalExp); //file << "薦瀝等 穿利 版氰摹 : " << (int)m_Exp << endl; //file << "薦瀝等 格釬 版氰摹 : " << (int)m_GoalExp << endl; //file << endl; //file.close(); char pField[80]; sprintf(pField, "RankExp=%lu", m_RankExp); tinysave(pField); }*/ initAllStat(); // 傈里 曼啊 Flag 眉農(nóng) if ( RaceWarLimiter::isInPCList( this ) ) { setFlag( Effect::EFFECT_CLASS_RACE_WAR_JOIN_TICKET ); } if (m_pZone->isHolyLand() && g_pWarSystem->hasActiveRaceWar() && !isFlag( Effect::EFFECT_CLASS_RACE_WAR_JOIN_TICKET )) { ZONE_COORD ResurrectCoord; g_pResurrectLocationManager->getPosition( this, ResurrectCoord ); setZoneID( ResurrectCoord.id ); setX( ResurrectCoord.x ); setY( ResurrectCoord.y ); } return true; __END_CATCH}//----------------------------------------------------------------------//----------------------------------------------------------------------void Vampire::save () const throw (Error){ __BEGIN_TRY __ENTER_CRITICAL_SECTION(m_Mutex) Statement* pStmt; //-------------------------------------------------------------------------------- // 軌頗撈絹 瀝焊甫 歷厘茄促. //-------------------------------------------------------------------------------- BEGIN_DB { StringStream sql; sql << "UPDATE Vampire SET" //<< " BatColor = " << (int)m_BatColor //<< ", SkinColor = " << (int)m_SkinColor //<< ", STR = " << (int)m_STR[ATTR_MAX] //<< ", DEX = " << (int)m_DEX[ATTR_MAX] //<< ", INTE = " << (int)m_INT[ATTR_MAX] << " CurrentHP = " << (int)m_HP[ATTR_CURRENT] << ", HP = " << (int)m_HP[ATTR_MAX] << ", SilverDamage = " << (int)m_SilverDamage //<< ", Fame = " << (int)m_Fame //<< ", Exp = " << (int)m_Exp //<< ", ExpOffset = " << (int)m_ExpOffset //<< ", Rank = " << (int)m_Rank //<< ", RankExp = " << (int)m_RankExp //<< ", Level = " << (int)m_Level //<< ", Bonus = " << (int)m_Bonus //<< ", Gold = " << (int)m_Gold << ", ZoneID = " << (int)getZoneID() << ", XCoord = " << (int)m_X << ", YCoord = " << (int)m_Y //<< ", Sight = " << (int)m_Sight// << ", F5 = " << (int)m_HotKey[0]// << ", F6 = " << (int)m_HotKey[1]// << ", F7 = " << (int)m_HotKey[2]// << ", F8 = " << (int)m_HotKey[3]// << ", F9 = " << (int)m_HotKey[4]// << ", F10 = " << (int)m_HotKey[5]// << ", F11 = " << (int)m_HotKey[6]// << ", F12 = " << (int)m_HotKey[7] << " WHERE Name = '" << m_Name << "'"; //<< ", InMagics = '" << ??? << "'" pStmt = g_pDatabaseManager->getConnection("DARKEDEN")->createStatement(); pStmt->executeQuery(sql.toString()); //Assert(pStmt->getAffectedRowCount() != 1); SAFE_DELETE(pStmt); } END_DB(pStmt) /* //---------------------------------------------------------------------- // 酒撈袍闌 技撈宏茄促. //---------------------------------------------------------------------- //-------------------------------------------------- // 牢亥配府狼 酒撈袍甸闌 技撈宏 茄促. //-------------------------------------------------- m_pInventory->save(m_Name); */ //-------------------------------------------------- // 撈棋飄甫 技撈宏 茄促. //-------------------------------------------------- m_pEffectManager->save(m_Name); __LEAVE_CRITICAL_SECTION(m_Mutex) __END_CATCH}//----------------------------------------------------------------------// tinysave//----------------------------------------------------------------------void Vampire::tinysave(const string & field) // by sigi. 2002.5.15 const throw(Error){ __BEGIN_TRY Statement* pStmt = NULL; BEGIN_DB { pStmt = g_pDatabaseManager->getConnection("DARKEDEN")->createStatement(); pStmt->executeQuery("UPDATE Vampire SET %s WHERE Name='%s'", field.c_str(), m_Name.c_str()); SAFE_DELETE(pStmt); } END_DB(pStmt) __END_CATCH}////////////////////////////////////////////////////////////////////////////////////// 膠懦 包訪 竊薦////////////////////////////////////////////////////////////////////////////////////// 漂瀝 Skill闌 府畔茄促.VampireSkillSlot* Vampire::getSkill (SkillType_t SkillType) const throw(){ __BEGIN_TRY hash_map<SkillType_t, VampireSkillSlot*>::const_iterator itr = m_SkillSlot.find(SkillType); if (itr != m_SkillSlot.end()) { return itr->second; } return NULL; __END_CATCH}// 漂瀝 Skill闌 add 茄促void Vampire::addSkill(SkillType_t SkillType) throw(){ __BEGIN_TRY switch (SkillType) { case SKILL_UN_BURROW: case SKILL_UN_TRANSFORM: case SKILL_UN_INVISIBILITY: case SKILL_THROW_HOLY_WATER: case SKILL_EAT_CORPSE: //case SKILL_HOWL: filelog("VampireError.log", "SkillType[%d], %s", SkillType, toString().c_str()); Assert(false); break; default: break; } hash_map<SkillType_t, VampireSkillSlot*>::iterator itr = m_SkillSlot.find(SkillType); if (itr == m_SkillSlot.end()) { SkillInfo* pSkillInfo = g_pSkillInfoManager->getSkillInfo(SkillType); Turn_t Delay = pSkillInfo->getMaxDelay(); VampireSkillSlot* pVampireSkillSlot = new VampireSkillSlot; pVampireSkillSlot->setName(m_Name); pVampireSkillSlot->setSkillType(SkillType); pVampireSkillSlot->setInterval(Delay); pVampireSkillSlot->setRunTime(); pVampireSkillSlot->create(m_Name); m_SkillSlot[SkillType] = pVampireSkillSlot; } __END_CATCH}// 漂瀝 SkillSlot闌 磊悼欄肺 后 澆兒闌 茫酒 持綽促.void Vampire::addSkill(VampireSkillSlot* pVampireSkillSlot) throw(){ __BEGIN_TRY SkillType_t SkillType = pVampireSkillSlot->getSkillType(); switch (SkillType) { case SKILL_UN_BURROW: case SKILL_UN_TRANSFORM: case SKILL_UN_INVISIBILITY: case SKILL_THROW_HOLY_WATER: case SKILL_EAT_CORPSE:// case SKILL_HOWL: filelog("VampireError.log", "SkillType[%d], %s", SkillType, toString().c_str()); Assert(false); break; default: break; } hash_map<SkillType_t, VampireSkillSlot*>::iterator itr = m_SkillSlot.find(pVampireSkillSlot->getSkillType()); if (itr == m_SkillSlot.end()) { m_SkillSlot[pVampireSkillSlot->getSkillType()] = pVampireSkillSlot; } // 2002.1.16 by sigi else { delete pVampireSkillSlot; } __END_CATCH}// 己瘤膠懦闌 瘤況林綽 竊薦促.void Vampire::removeCastleSkill(SkillType_t SkillType) throw(){ __BEGIN_TRY // 己瘤 膠懦父 瘤匡 薦 樂促. if ( g_pCastleSkillInfoManager->getZoneID( SkillType ) == 0 ) return; hash_map<SkillType_t, VampireSkillSlot*>::iterator itr = m_SkillSlot.find(SkillType); if (itr != m_SkillSlot.end()) { VampireCastleSkillSlot* pCastleSkillSlot = dynamic_cast<VampireCastleSkillSlot*>(itr->second); SAFE_DELETE( pCastleSkillSlot ); m_SkillSlot.erase( itr ); } __END_CATCH}// 愛絆 樂綽 葛電 己瘤膠懦闌 瘤況林綽 竊薦撈促.void Vampire::removeAllCastleSkill() throw(){ __BEGIN_TRY hash_map<SkillType_t, VampireSkillSlot*>::iterator itr = m_SkillSlot.begin(); while ( itr != m_SkillSlot.end() ) { if ( itr->second != NULL ) { VampireSkillSlot* pSkillSlot = itr->second; if ( g_pCastleSkillInfoManager->getZoneID( pSkillSlot->getSkillType() ) == 0 ) { // 己瘤膠懦撈 酒聰擱 促瀾鉑肺 逞絹埃促. ++itr; continue; } // 己瘤膠懦撈擱 瘤況霖促. 館汗磊 葷儈俊 林狼 SAFE_DELETE( pSkillSlot ); hash_map<SkillType_t, VampireSkillSlot*>::iterator prevItr = itr; ++itr; m_SkillSlot.erase( prevItr ); } else { // 撈扒 鋼鱉.... Assert 秦具 登瘤 臼唱 -_-; Assert(false); } } __END_CATCH}////////////////////////////////////////////////////////////////////////////////////// 酒撈袍 饅/嘔 包訪 竊薦//////////////////////////////////////////////////////////////////////////////////////----------------------------------------------------------------------//// Vampire::WearItem()//// Item闌 厘饅芒俊 厘饅矯虐絆 瓷仿摹甫 拌魂茄促.////----------------------------------------------------------------------void Vampire::wearItem(WearPart Part, Item* pItem) throw(){ __BEGIN_TRY Assert(pItem != NULL); Item* pPrevItem = NULL; Item* pLeft = NULL; Item* pRight = NULL; // 泅犁 扁裙俊輯綽...瓷仿摹啊 葛磊扼歹扼檔 酒撈袍闌 公煉扒 葷儈且 薦綽 // 樂促. 竅瘤父 酒撈袍俊 狼茄 瓷仿摹啊 利儈撈 登瘤 臼綽促. // 弊礬骨肺 老竄 酒撈袍闌 秦寸竅綽 厘饅芒俊促 籠絹持綽促. // vampire 公扁 眠啊. 2002.8.16. by sigi // 劇頰 公扁老 版快俊綽 劇頰 厘饅芒俊促 竅唱狼 酒撈袍 器牢磐甫 且寸... if (isTwohandWeapon(pItem)) { // 劇頰俊 酒撈袍闌 甸絆 樂闌 版快 if (isWear(WEAR_RIGHTHAND) && isWear(WEAR_LEFTHAND)) { pLeft = getWearItem(WEAR_RIGHTHAND); pRight = getWearItem(WEAR_LEFTHAND); // 劇頰 公扁甫 甸絆 樂闌 版快 if (pLeft == pRight) { // 夸備茄 酒撈袍闌 厘饅 器牢飄俊 持絆, m_pWearItem[WEAR_RIGHTHAND] = pItem; m_pWearItem[WEAR_LEFTHAND] = pItem; // by sigi. 2002.5.15 char pField[80]; //pItem->save(m_Name, STORAGE_GEAR, 0, Part, 0); sprintf(pField, "Storage=%d, X=%d", STORAGE_GEAR, Part); pItem->tinysave(pField); // 盔貳 樂帶 酒撈袍闌 付快膠 器牢磐俊 崔酒 霖促. addItemToExtraInventorySlot(pLeft); //pLeft->save(m_Name, STORAGE_EXTRASLOT, 0, 0, 0); sprintf(pField, "Storage=%d", STORAGE_EXTRASLOT); pLeft->tinysave(pField); } // 成成 else { // 劇頰俊 八苞 規(guī)菩甫 甸絆 樂菌綽單...劇頰 公扁甫 甸妨絆 竅擱, // 八籃 付快膠 器牢磐俊 崔酒臨 薦 樂瘤父, 規(guī)菩綽 絹痘霸 且 薦啊 絕促. // 牢亥配府俊 持絹拎具 且 刨單, 瘤陛 寸厘籃 絹痘霸 且 瘤甫 葛福擺匙... // 傲 澇闌 薦 絕促綽 菩哦闌 焊郴林磊... //cerr << "劇頰俊 漠苞 規(guī)菩甫 甸絆 樂絹輯, 劇頰 公扁甫 厘饅且 薦 絕嚼聰促." << endl; return; } } // 劇頰俊 酒撈袍闌 甸絆 樂瘤 臼闌 版快 else { char pField[80]; // 坷弗率俊 酒撈袍闌 甸絆 樂闌 版快 if (isWear(WEAR_RIGHTHAND)) { pRight = getWearItem(WEAR_RIGHTHAND); // 夸備茄 酒撈袍闌 厘饅 器牢飄俊 持綽促. m_pWearItem[WEAR_RIGHTHAND] = pItem; m_pWearItem[WEAR_LEFTHAND] = pItem; // by sigi. 2002.5.15 //pItem->save(m_Name, STORAGE_GEAR, 0, Part, 0); sprintf(pField, "Storage=%d, X=%d", STORAGE_GEAR, Part); pItem->tinysave(pField); // 盔貳 樂帶 酒撈袍闌 付快膠 器牢磐俊 崔酒 霖促. addItemToExtraInventorySlot(pRight); //pRight->save(m_Name, STORAGE_EXTRASLOT, 0, 0, 0); sprintf(pField, "Storage=%d", STORAGE_EXTRASLOT); pRight->tinysave(pField); } // 哭率俊 酒撈袍闌 甸絆 樂闌 版快 else if (isWear(WEAR_LEFTHAND)) { pLeft = getWearItem(WEAR_LEFTHAND); // 夸備茄 酒撈袍闌 厘饅 器牢飄俊 持綽促. m_pWearItem[WEAR_RIGHTHAND] = pItem; m_pWearItem[WEAR_LEFTHAND] = pItem; // by sigi. 2002.5.15 //pItem->save(m_Name, STORAGE_GEAR, 0, Part, 0); sprintf(pField, "Storage=%d, X=%d", STORAGE_GEAR, Part); pItem->tinysave(pField); // 盔貳 樂帶 酒撈袍闌 付快膠 器牢磐俊 崔酒 霖促. addItemToExtraInventorySlot(pLeft); //pLeft->save(m_Name, STORAGE_EXTRASLOT, 0, 0, 0); sprintf(pField, "Storage=%d", STORAGE_EXTRASLOT); pLeft->tinysave(pField); } // 酒公率檔 酒撈袍闌 甸絆 樂瘤 臼闌 版快 else
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -