?? vampire.cpp
字號:
__LEAVE_CRITICAL_SECTION(OR) m_VampireInfo.setObjectID(m_ObjectID); __END_CATCH}// Zone俊 輛加等 ObjectRegistry甫 葷儈秦輯, Vampire 客 家蠟酒撈袍甸狼// ObjectID甫 且寸罐綽促. ItemTrace 甫 巢辨瘤 咯何 搬瀝闌 困秦 蝶肺 話促void Vampire::registerInitObject () throw (Error){ __BEGIN_TRY Assert(getZone() != NULL); // zone 狼 object registery 俊 立辟茄促. ObjectRegistry & OR = getZone()->getObjectRegistry(); __ENTER_CRITICAL_SECTION(OR) // 葛電 酒撈袍俊 OID 啊 官差骨肺 矯埃力茄 酒撈袍 概聰歷俊輯 OID 甘闌 瘤況拎具 茄促. if (m_pTimeLimitItemManager != NULL) m_pTimeLimitItemManager->clear(); // 快急 軌頗撈絹狼 OID甫 殿廢罐綽促. OR.registerObject_NOLOCKED(this); // 牢亥配府狼 酒撈袍甸狼 OID甫 殿廢罐綽促. registerInitInventory(OR); // Goods Inventory狼 酒撈袍甸狼 OID甫 殿廢罐綽促. registerGoodsInventory(OR); // 厘饅竅絆 樂綽 酒撈袍甸狼 OID甫 殿廢罐綽促. for (int i = 0; i < VAMPIRE_WEAR_MAX; i++) { Item* pItem = m_pWearItem[i]; if (pItem != NULL) { // ItemTrace 甫 巢辨 巴牢瘤 搬瀝 pItem->setTraceItem( bTraceLog( pItem ) ); bool bCheck = true; // 劇頰 公扁老 版快, WEAR_LEFTHAND 俊輯 殿廢沁欄骨肺, // 肚 殿廢且 鞘夸綽 絕促. if (i == WEAR_RIGHTHAND && isTwohandWeapon(pItem)) bCheck = false; if (bCheck) registerItem(pItem, OR); } } // 付快膠俊 甸絆 樂綽 酒撈袍狼 OID甫 殿廢 罐綽促. Item* pSlotItem = m_pExtraInventorySlot->getItem(); if (pSlotItem != NULL) { // ItemTrace 甫 巢辨 巴牢瘤 搬瀝 pSlotItem->setTraceItem( bTraceLog( pSlotItem ) ); registerItem(pSlotItem, OR); } m_Garbage.registerObject(OR); __LEAVE_CRITICAL_SECTION(OR) m_VampireInfo.setObjectID(m_ObjectID); __END_CATCH}// 矯埃力茄 酒撈袍闌 眉農茄促.// 葛電 酒撈袍撈 撈固 register 登絹樂絹具 茄促.void Vampire::checkItemTimeLimit() throw (Error){ __BEGIN_TRY // 牢亥配府俊輯 茫綽促. { list<Item*> ItemList; int height = m_pInventory->getHeight(); int width = m_pInventory->getWidth(); for (int j=0; j<height; j++) { for (int i=0; i<width; i++) { Item* pItem = m_pInventory->getItem(i, j); if (pItem != NULL) { // 眉農等 酒撈袍狼 府膠飄俊輯 泅犁 酒撈袍闌 茫綽促. list<Item*>::iterator itr = find(ItemList.begin(), ItemList.end(), pItem); if (itr == ItemList.end()) { i += pItem->getVolumeWidth() - 1; if ( wasteIfTimeLimitExpired( pItem ) ) { m_pInventory->deleteItem( pItem->getObjectID() ); SAFE_DELETE( pItem ); } else { // 府膠飄俊 酒撈袍撈 絕欄擱 // 鞍籃 酒撈袍闌 滴鍋 眉農竅瘤 臼扁 困秦輯 // 府膠飄俊促啊 酒撈袍闌 籠絹持綽促. ItemList.push_back(pItem); } } } } } } // 厘饅竅絆 樂綽 巴 吝俊 茫綽促. { for (int i = 0; i < VAMPIRE_WEAR_MAX; i++) { Item* pItem = m_pWearItem[i]; if (pItem != NULL) { bool bCheck = true; // 劇頰 公扁老 版快, WEAR_LEFTHAND 俊輯 殿廢沁欄骨肺, // 肚 殿廢且 鞘夸綽 絕促. if (i == WEAR_RIGHTHAND && isTwohandWeapon(pItem)) bCheck = false; if (bCheck) { if ( wasteIfTimeLimitExpired( pItem ) ) { deleteWearItem( (WearPart)i ); if ( i == WEAR_LEFTHAND && isTwohandWeapon(pItem) ) deleteWearItem( WEAR_RIGHTHAND ); SAFE_DELETE( pItem ); } } } } } // 付快膠俊 甸絆 樂綽 酒撈袍闌 眉農茄促. { Item* pSlotItem = m_pExtraInventorySlot->getItem(); if (pSlotItem != NULL && wasteIfTimeLimitExpired( pSlotItem )) { deleteItemFromExtraInventorySlot(); SAFE_DELETE( pSlotItem ); } } __END_CATCH}///////////////////////////////////////////// Vampire客 Slayer葷撈狼 函腳闌 困秦輯// 酒袍 肺爹籃 蝶肺 貿府茄促.//void Vampire::loadItem( bool checkTimeLimit ) throw (InvalidProtocolException, Error){ __BEGIN_TRY PlayerCreature::loadItem(); // 牢亥配府甫 積己茄促. SAFE_DELETE(m_pInventory); m_pInventory = new Inventory(10, 6); m_pInventory->setOwner(getName()); // 酒撈袍闌 肺靛茄促. g_pItemLoaderManager->load(this); // 備概茄 酒撈袍闌 肺靛茄促. PlayerCreature::loadGoods(); // 肺靛茄 酒撈袍甸闌 殿廢矯虐絆 registerInitObject(); if ( checkTimeLimit ) { checkItemTimeLimit(); } // 澇絆 樂綽 渴俊 蝶扼 瓷仿摹甫 拌魂秦霖促. initAllStat(); __END_CATCH}//----------------------------------------------------------------------//----------------------------------------------------------------------bool Vampire::load () throw (InvalidProtocolException, Error){ __BEGIN_TRY Statement* pStmt = NULL; Result* pResult = NULL; int reward = 0; BEGIN_DB { pStmt = g_pDatabaseManager->getConnection("DARKEDEN")->createStatement(); pResult = pStmt->executeQuery( "SELECT Name, Sex, BatColor, SkinColor, STR, DEX, INTE, HP, CurrentHP, Fame, GoalExp, Level, Bonus, Gold, GuildID, ZoneID, XCoord, YCoord, Sight, Alignment, StashGold, StashNum, Competence, CompetenceShape, ResurrectZone, SilverDamage, Reward, Rank, RankGoalExp FROM Vampire WHERE Name = '%s' AND Active = 'ACTIVE'", m_Name.c_str() ); if (pResult->getRowCount() == 0) { //throw Error("Critical Error : data intergrity broken. (肺弊牢 輯滾俊輯 霸烙 輯滾肺 逞絹坷綽 悼救俊 某腐磐啊 昏力登菌嚼聰促.)"); SAFE_DELETE(pStmt); return false; } pResult->next(); uint i = 0; setName(pResult->getString(++i)); setSex(pResult->getString(++i)); setBatColor(pResult->getInt(++i)); setSkinColor(pResult->getInt(++i)); m_STR[ATTR_BASIC] = pResult->getInt(++i); m_STR[ATTR_CURRENT] = m_STR[ATTR_BASIC]; m_STR[ATTR_MAX] = m_STR[ATTR_BASIC]; m_DEX[ATTR_BASIC] = pResult->getInt(++i); m_DEX[ATTR_CURRENT] = m_DEX[ATTR_BASIC]; m_DEX[ATTR_MAX] = m_DEX[ATTR_BASIC]; m_INT[ATTR_BASIC] = pResult->getInt(++i); m_INT[ATTR_CURRENT] = m_INT[ATTR_BASIC]; m_INT[ATTR_MAX] = m_INT[ATTR_BASIC]; setHP(pResult->getInt(++i) , ATTR_MAX); setHP(getHP(ATTR_MAX) , ATTR_BASIC); setHP(pResult->getInt(++i) , ATTR_CURRENT); setFame(pResult->getInt(++i));// setExp(pResult->getInt(++i)); setGoalExp(pResult->getInt(++i));// setExpOffset(pResult->getInt(++i)); setLevel(pResult->getInt(++i)); setBonus(pResult->getInt(++i)); //setInMagics(pResult->getString(++i)); setGold(pResult->getInt(++i)); setGuildID(pResult->getInt(++i));// setZoneID(pResult->getInt(++i)); ZoneID_t zoneID = pResult->getInt(++i); setX(pResult->getInt(++i)); setY(pResult->getInt(++i)); setSight (pResult->getInt(++i)); setAlignment(pResult->getInt(++i));// for (int j = 0; j < 8; j++)// setHotKey(j, pResult->getInt(++i)); setStashGold(pResult->getInt(++i)); setStashNum(pResult->getBYTE(++i)); m_Competence = pResult->getBYTE(++i); if ( m_Competence >= 4 ) m_Competence = 3; m_CompetenceShape = pResult->getBYTE(++i); setResurrectZoneID(pResult->getInt(++i)); m_SilverDamage = pResult->getInt(++i); reward = pResult->getInt(++i); Rank_t CurRank = pResult->getInt(++i); RankExp_t RankGoalExp = pResult->getInt(++i); m_pRank = new Rank( CurRank, RankGoalExp, RankExpTable::s_RankExpTables[RANK_TYPE_VAMPIRE] );// setRank( pResult->getInt(++i) );// setRankExp( pResult->getInt(++i) );// setRankGoalExp( pResult->getInt(++i) ); // maxHP甫 促矯 拌魂秦輯 汲瀝秦霖促. // 2002.7.15 by sigi // 傍僥 官差擱 AbilityBalance.cpp狼 computeHP檔 薦瀝秦具茄促. int maxHP = m_STR[ATTR_CURRENT]*2 + m_INT[ATTR_CURRENT] + m_DEX[ATTR_CURRENT] + m_Level; maxHP = min((int)maxHP, VAMPIRE_MAX_HP); setHP( maxHP, ATTR_MAX ); try { setZoneID( zoneID ); } catch ( Error& e ) { // 辨靛 酒瘤飄 鞏力肺 夯促. // 辨靛 酒瘤飄啊 茄 霸烙 輯滾俊父 糧犁竅骨肺 促弗 霸烙輯滾肺 立加且 錠 弊 酒瘤飄肺 甸絹啊瘤 給茄促. // 辨靛 酒瘤飄 澇備肺 顆變促. setZoneID( 1003 ); setX( 30 ); setY( 30 ); } SAFE_DELETE(pStmt); } END_DB(pStmt)/* if (reward != 0) { BEGIN_DB { StringStream SQL; SQL << "UPDATE Vampire SET Reward = 0 WHERE Name = '" << m_Name << "'"; pStmt = g_pDatabaseManager->getConnection("DARKEDEN")->createStatement(); pStmt->executeQuery(SQL.toString()); SAFE_DELETE(pStmt); } END_DB(pStmt) int amount = 0; if (m_Level>=1 && m_Level<=10) amount = m_Level*2000; else if (m_Level>10 && m_Level<=30) amount = m_Level*3000; else if (m_Level>30) amount = m_Level*10000; int offset = 1000; for (int i=0; i<amount; i += offset) { increaseVampExp(offset); } reward = 0; }*/ //---------------------------------------------------------------------- // Vampire Outlook Information 闌 備己茄促. //---------------------------------------------------------------------- // 軌頗撈絹綽 肺爹且錠 ObjectID甫 技潑 竅檔廢 茄促. 辟單 立加 且訂? -_- m_VampireInfo.setObjectID(m_ObjectID); m_VampireInfo.setName(m_Name); m_VampireInfo.setSex(m_Sex); m_VampireInfo.setBatColor(m_BatColor); m_VampireInfo.setSkinColor(m_SkinColor); m_VampireInfo.setCompetence(m_CompetenceShape); //---------------------------------------------------------------------- // 膠懦闌 肺爹茄促. //---------------------------------------------------------------------- BEGIN_DB { pStmt = g_pDatabaseManager->getConnection("DARKEDEN")->createStatement(); pResult = pStmt->executeQuery("SELECT SkillType, Delay, CastingTime, NextTime FROM VampireSkillSave WHERE OwnerID = '%s'", m_Name.c_str()); while(pResult->next()) { int i = 0; SkillType_t SkillType = pResult->getInt(++i); if (hasSkill(SkillType) == NULL) { VampireSkillSlot* pVampireSkillSlot = new VampireSkillSlot(); pVampireSkillSlot->setName(m_Name); pVampireSkillSlot->setSkillType(SkillType); pVampireSkillSlot->setInterval (pResult->getInt(++i)); pVampireSkillSlot->setCastingTime (pResult->getInt(++i)); //pVampireSkillSlot->setRunTime (pResult->getInt(++i)); pVampireSkillSlot->setRunTime(); addSkill(pVampireSkillSlot); } } SAFE_DELETE(pStmt); } END_DB(pStmt) //---------------------------------------------------------------------- // Rank Bonus 甫 肺爹茄促. //---------------------------------------------------------------------- loadRankBonus(); //---------------------------------------------------------------------- // 撈棋飄甫 肺爹茄促. //---------------------------------------------------------------------- g_pEffectLoaderManager->load(this); //---------------------------------------------------------------------- // GrandMaster牢 版快綽 Effect甫 嘿咯霖促. //---------------------------------------------------------------------- // by sigi. 2002.11.8 if (m_Level>=100 && SystemAvailabilitiesManager::getInstance()->isAvailable( SystemAvailabilitiesManager::SYSTEM_GRAND_MASTER_EFFECT ) ) { if (!isFlag(Effect::EFFECT_CLASS_GRAND_MASTER_VAMPIRE)) { EffectGrandMasterVampire* pEffect = new EffectGrandMasterVampire(this); pEffect->setDeadline(999999); getEffectManager()->addEffect( pEffect ); setFlag(Effect::EFFECT_CLASS_GRAND_MASTER_VAMPIRE); } } //---------------------------------------------------------------------- // 敲貳弊 悸闌 肺靛茄促. //---------------------------------------------------------------------- m_pFlagSet->load(getName()); //---------------------------------------------------------------------- // Vampire Outlook Information 闌 檬扁拳茄促. //---------------------------------------------------------------------- /* ItemType_t coatType = 0; Item* pItem = m_pWearItem[WEAR_BODY]; if (pItem!=NULL) { coatType = pItem->getItemType(); } */ m_VampireInfo.setCoatType( 0 ); m_VampireInfo.setCoatColor(JACKET_BASIC); m_VampireInfo.setCoatColor(377); //m_VampireInfo.setCoatColor(2 , SUB_COLOR); // 肋給等 版氰摹甫 犁煉瀝 秦霖促./* VampEXPInfo* pVampEXPInfo = g_pVampEXPInfoManager->getVampEXPInfo(m_Level); if ((pVampEXPInfo->getAccumExp() != m_Exp + m_GoalExp) && m_Level > 1 && m_Level < VAMPIRE_MAX_LEVEL) { //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;
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -