📄 vampire.cpp
字号:
// 捞傈 饭骇狼 牢器甫 罐酒柯促. 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 眉农 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 { // 剧颊俊 八苞 规菩甫 甸绊 乐菌绰单...剧颊 公扁甫 甸妨绊 窍搁, // 八篮 付快胶 器牢磐俊 崔酒临 荐 乐瘤父, 规菩绰 绢痘霸 且 荐啊 绝促. // 牢亥配府俊 持绢拎具 且 刨单, 瘤陛 寸厘篮 绢痘霸 且 瘤甫 葛福摆匙... // 傲 涝阑 荐 绝促绰 菩哦阑 焊郴林磊... //cerr << "剧颊俊 漠苞 规菩甫 甸绊 乐绢辑, 剧颊 公扁甫 厘馒且 荐 绝嚼聪促." << 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
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -