📄 vampire_backup.cpp
字号:
if ((pVampEXPInfo->getAccumExp() != m_Exp + m_GoalExp) && m_Level > 1) { //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; // 捞傈 饭骇狼 牢器甫 罐酒柯促. 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=%ld", m_Exp); tinysave(pField); } initAllStat(); 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" //<< " HairColor = " << (int)m_HairColor //<< ", 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] //<< ", Fame = " << (int)m_Fame //<< ", Exp = " << (int)m_Exp //<< ", ExpOffset = " << (int)m_ExpOffset //<< ", 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 char* 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, 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}////////////////////////////////////////////////////////////////////////////////////// 酒捞袍 馒/呕 包访 窃荐//////////////////////////////////////////////////////////////////////////////////////----------------------------------------------------------------------//// Vampire::WearItem()//// Item阑 厘馒芒俊 厘馒矫虐绊 瓷仿摹甫 拌魂茄促.////----------------------------------------------------------------------void Vampire::wearItem(WearPart Part, Item* pItem) throw(){ __BEGIN_TRY Assert(pItem != NULL); Item* pPrevItem = NULL; // 泅犁 扁裙俊辑绰...瓷仿摹啊 葛磊扼歹扼档 酒捞袍阑 公炼扒 荤侩且 荐绰 // 乐促. 窍瘤父 酒捞袍俊 狼茄 瓷仿摹啊 利侩捞 登瘤 臼绰促. // 弊矾骨肺 老窜 酒捞袍阑 秦寸窍绰 厘馒芒俊促 笼绢持绰促. if (isWear(Part)) { pPrevItem = getWearItem(Part); m_pWearItem[Part] = 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(pPrevItem); //pPrevItem->save(m_Name, STORAGE_EXTRASLOT, 0, 0, 0); sprintf(pField, "Storage=%d", STORAGE_EXTRASLOT); pPrevItem->tinysave(pField); } else { // 夸备茄 酒捞袍阑 厘馒 器牢飘俊 持绰促. m_pWearItem[Part] = 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); } // 渴捞扼搁 渴俊 蝶弗 祸彬阑 沥秦霖促. // 唱吝俊扼档 渴 鸥涝捞 咯矾 啊瘤啊 瞪 荐 乐栏府扼 积阿窍绰单, // 泅犁肺辑绰 渴 鸥涝捞 窍唱捞骨肺, 祸彬父 技泼秦霖促. if (pItem->getItemClass() == Item::ITEM_CLASS_VAMPIRE_COAT) { OptionInfo* pOptionInfo = NULL; // 可记捞 乐绰 渴捞扼搁 可记 祸彬阑... if (pItem->getOptionType() != 0) { pOptionInfo = g_pOptionInfoManager->getOptionInfo(pItem->getOptionType()); m_VampireInfo.setCoatColor(pOptionInfo->getColor()); } // 可记捞 绝绰 渴捞扼搁 可记捞 绝绰 祸彬阑... else { m_VampireInfo.setCoatColor(377); } // item type阑 汲沥秦霖促. ItemType_t IType = pItem->getItemType(); m_VampireInfo.setCoatType( IType ); } __END_CATCH}//----------------------------------------------------------------------// Vampire::WearItem()// Item阑 厘馒芒俊 厘馒矫虐绊 瓷仿摹甫 拌魂茄促.//----------------------------------------------------------------------void Vampire::wearItem(WearPart Part) throw(){ __BEGIN_TRY // 厘馒 霖厚吝牢 酒捞袍阑 罐酒柯促. Item* pItem = getExtraInventorySlotItem(); Assert(pItem != NULL); Item* pPrevItem = NULL; // 刚历 渴阑 涝洒芭唱, 哈扁扁 傈俊 泅犁狼 瓷仿摹甫 滚欺俊促 历厘秦 敌促. // 捞绰 唱吝俊 函茄 瓷仿摹父阑 傈价窍扁 困茄 巴捞促. VAMPIRE_RECORD prev; getVampireRecord(prev); // 泅犁 扁裙俊辑绰...瓷仿摹啊 葛磊扼歹扼档 酒捞袍阑 公炼扒 荤侩且 荐绰 // 乐促. 窍瘤父 酒捞袍俊 狼茄 瓷仿摹啊 利侩捞 登瘤 臼绰促. // 弊矾骨肺 老窜 酒捞袍阑 秦寸窍绰 厘馒芒俊促 笼绢持绰促. char pField[80]; if (isWear(Part)) { pPrevItem = getWearItem(Part); takeOffItem(Part, false, false); m_pWearItem[Part] = 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); deleteItemFromExtraInventorySlot(); addItemToExtraInventorySlot(pPrevItem); //pPrevItem->save(m_Name, STORAGE_EXTRASLOT, 0, 0, 0); sprintf(pField, "Storage=%d", STORAGE_EXTRASLOT); pPrevItem->tinysave(pField); } else { m_pWearItem[Part] = pItem; deleteItemFromExtraInventorySlot(); // 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); } initAllStat(); sendRealWearingInfo(); sendModifyInfo(prev); // 渴捞扼搁 渴俊 蝶弗 祸彬阑 沥秦霖促. // 唱吝俊扼档 渴 鸥涝捞 咯矾 啊瘤啊 瞪 荐 乐栏府扼 积阿窍绰单, // 泅犁肺辑绰 渴 鸥涝捞 窍唱捞骨肺, 祸彬父 技泼秦霖促. if (pItem->getItemClass() == Item::ITEM_CLASS_VAMPIRE_COAT) { OptionInfo* pOptionInfo = NULL; // 可记捞 乐绰 渴捞扼搁 可记 祸彬阑... if (pItem->getOptionType() != 0) { pOptionInfo = g_pOptionInfoManager->getOptionInfo(pItem->getOptionType()); m_VampireInfo.setCoatColor(pOptionInfo->getColor()); } // 可记捞 绝绰 渴捞扼搁 可记捞 绝绰 祸彬阑... else { m_VampireInfo.setCoatColor(377); } m_VampireInfo.setCoatType( pItem->getItemType() ); // 渴阑 哎酒涝菌栏聪, 林困俊促啊 渴 哎酒涝菌促绊 沥焊甫 朝赴促. GCChangeShape pkt; pkt.setObjectID(getObjectID()); pkt.setItemClass(Item::ITEM_CLASS_VAMPIRE_COAT); pkt.setItemType(pItem->getItemType()); pkt.setOptionType(pItem->getOptionType()); pkt.setAttackSpeed(m_AttackSpeed[ATTR_CURRENT]); Zone* pZone = getZone(); pZone->broadcastPacket(m_X, m_Y , &pkt, this); } if (m_pZone != NULL) { GCOtherModifyInfo gcOtherModifyInfo; makeGCOtherModifyInfo(&gcOtherModifyInfo, this, &prev); if (gcOtherModifyInfo.getShortCount() != 0 || gcOtherModifyInfo.getLongCount() != 0) { m_pZone->broadcastPacket(m_X, m_Y, &gcOtherModifyInfo, this); } } __END_CATCH}//----------------------------------------------------------------------//// Vampire::takeOffItem()////----------------------------------------------------------------------void Vampire::takeOffItem(WearPart Part, bool bAddOnMouse, bool bSendModifyInfo) throw(){ __BEGIN_TRY VAMPIRE_RECORD prev; // 厘馒芒俊 乐绰 酒捞袍阑 罐酒柯促. Item* pItem = m_pWearItem[Part]; Assert(pItem != NULL); m_pWearItem[Part] = NULL; // wearItem俊辑 瘤沥等 浇儿俊 渴阑 捞固 涝绊 乐绰 版快俊, 弊巴阑 哈扁绊 // 促矫 渴阑 涝洒绰单, 弊矾搁 哈辨 锭 菩哦阑 茄锅, 涝菌阑 锭 促矫 菩哦阑 // 茄锅, 醚 滴 锅狼 菩哦阑 焊郴霸 等促. 弊巴阑 规瘤窍扁 困秦辑 // bool 函荐甫 窍唱 笼绢持菌促. -- 2002.01.24 辫己刮 if (bSendModifyInfo) { getVampireRecord(prev); initAllStat(); sendRealWearingInfo(); sendModifyInfo(prev); } else { initAllStat(); } //--------------------------------------------- // 乐绢急 救瞪 眉农 -_-; 烙矫 东户 // 酒捞袍阑 付快胶 目辑俊促 崔酒霖寸. //--------------------------------------------- if (bAddOnMouse) { addItemToExtraInventorySlot(pItem); //pItem->save(m_Name, STORAGE_EXTRASLOT, 0, 0, 0); // item历厘 弥利拳. by sigi. 2002.5.13 char pField[80]; sprintf(pField, "Storage=%d, Durability=%d", STORAGE_EXTRASLOT, pItem->getDurability()); pItem->tinysave(pField); } if (pItem->getItemClass() == Item::ITEM_CLASS_VAMPIRE_COAT) { m_VampireInfo.setCoatColor(377); m_VampireInfo.setCoatType( 0 ); GCTakeOff pkt; pkt.setObjectID(getObjectID()); pkt.setSlotID((SlotID_t)ADDON_COAT); m_pZone->broadcastPacket(getX(), getY(), &pkt, this); } if (m_pZone != NULL) { GCOtherModifyInfo gcOtherModifyInfo; makeGCOtherModifyInfo(&gcOtherModifyInfo, this, &prev); if (gcOtherModifyInfo.getShortCount() != 0 || gcOtherModifyInfo.getLongCount() != 0) { m_pZone->broadcastPacket(m_X, m_Y, &gcOtherModifyInfo, this); } } __END_CATCH}//----------------------------------------------------------------------// destroyGears// 厘馒 酒捞袍阑 Delete 茄促.//----------------------------------------------------------------------void Vampire::destroyGears() throw (){ __BEGIN_TRY __BEGIN_DEBUG for (int j = 0; j < VAMPIRE_WEAR_MAX; j++) { Item* pItem = m_pWearItem[j]; if (pItem != NULL) { Item::ItemClass IClass = pItem->getItemClass(); //-------------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -