📄 ousters.cpp
字号:
__LEAVE_CRITICAL_SECTION(m_Mutex) __END_CATCH}//----------------------------------------------------------------------// tinysave//----------------------------------------------------------------------void Ousters::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 Ousters SET %s WHERE Name='%s'", field.c_str(), m_Name.c_str()); SAFE_DELETE(pStmt); } END_DB(pStmt) __END_CATCH}////////////////////////////////////////////////////////////////////////////////// 荤侩茄 skill bonus 器牢飘甫 府畔茄促.////////////////////////////////////////////////////////////////////////////////SkillBonus_t Ousters::getSumOfUsedSkillBonus() const throw(){ __BEGIN_TRY return 0; __END_CATCH}////////////////////////////////////////////////////////////////////////////////////// 胶懦 包访 窃荐////////////////////////////////////////////////////////////////////////////////////// 漂沥 Skill阑 府畔茄促.OustersSkillSlot* Ousters::getSkill (SkillType_t SkillType) const throw(){ __BEGIN_TRY hash_map<SkillType_t, OustersSkillSlot*>::const_iterator itr = m_SkillSlot.find(SkillType); if (itr != m_SkillSlot.end()) { return itr->second; } return NULL; __END_CATCH}// 漂沥 Skill阑 add 茄促void Ousters::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("OustersError.log", "SkillType[%d], %s", SkillType, toString().c_str()); Assert(false); break; default: break; } hash_map<SkillType_t, OustersSkillSlot*>::iterator itr = m_SkillSlot.find(SkillType); if (itr == m_SkillSlot.end()) { SkillInfo* pSkillInfo = g_pSkillInfoManager->getSkillInfo(SkillType); Turn_t Delay = pSkillInfo->getMaxDelay(); OustersSkillSlot* pOustersSkillSlot = new OustersSkillSlot; pOustersSkillSlot->setName(m_Name); pOustersSkillSlot->setSkillType(SkillType); pOustersSkillSlot->setInterval(Delay); pOustersSkillSlot->setRunTime(); pOustersSkillSlot->setExpLevel(1); pOustersSkillSlot->create(m_Name); m_SkillSlot[SkillType] = pOustersSkillSlot; } __END_CATCH}// 漂沥 SkillSlot阑 磊悼栏肺 后 浇儿阑 茫酒 持绰促.void Ousters::addSkill(OustersSkillSlot* pOustersSkillSlot) throw(){ __BEGIN_TRY SkillType_t SkillType = pOustersSkillSlot->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("OustersError.log", "SkillType[%d], %s", SkillType, toString().c_str()); Assert(false); break; default: break; } hash_map<SkillType_t, OustersSkillSlot*>::iterator itr = m_SkillSlot.find(pOustersSkillSlot->getSkillType()); if (itr == m_SkillSlot.end()) { m_SkillSlot[pOustersSkillSlot->getSkillType()] = pOustersSkillSlot; } // 2002.1.16 by sigi else { delete pOustersSkillSlot; } __END_CATCH}////////////////////////////////////////////////////////////////////////////////////// 酒捞袍 馒/呕 包访 窃荐//////////////////////////////////////////////////////////////////////////////////////----------------------------------------------------------------------//// Ousters::WearItem()//// Item阑 厘馒芒俊 厘馒矫虐绊 瓷仿摹甫 拌魂茄促.////----------------------------------------------------------------------void Ousters::wearItem(WearPart Part, Item* pItem) throw(){ __BEGIN_TRY Assert(pItem != NULL); Item* pPrevItem = NULL; Item* pLeft = NULL; Item* pRight = NULL; // 剧颊 公扁老 版快俊绰 剧颊 厘馒芒俊促 窍唱狼 酒捞袍 器牢磐甫 且寸... 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]; sprintf(pField, "Storage=%d, X=%d", STORAGE_GEAR, Part); pItem->tinysave(pField); // 盔贰 乐带 酒捞袍阑 付快胶 器牢磐俊 崔酒 霖促. addItemToExtraInventorySlot(pLeft); 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 sprintf(pField, "Storage=%d, X=%d", STORAGE_GEAR, Part); pItem->tinysave(pField); // 盔贰 乐带 酒捞袍阑 付快胶 器牢磐俊 崔酒 霖促. addItemToExtraInventorySlot(pRight); 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 sprintf(pField, "Storage=%d, X=%d", STORAGE_GEAR, Part); pItem->tinysave(pField); // 盔贰 乐带 酒捞袍阑 付快胶 器牢磐俊 崔酒 霖促. addItemToExtraInventorySlot(pLeft); sprintf(pField, "Storage=%d", STORAGE_EXTRASLOT); pLeft->tinysave(pField); } // 酒公率档 酒捞袍阑 甸绊 乐瘤 臼阑 版快 else { // 夸备茄 酒捞袍阑 厘馒 器牢飘俊 持绰促. m_pWearItem[WEAR_RIGHTHAND] = pItem; m_pWearItem[WEAR_LEFTHAND] = pItem; // by sigi. 2002.5.15 sprintf(pField, "Storage=%d, X=%d", STORAGE_GEAR, Part); pItem->tinysave(pField); } } } else { if (isWear(Part)) { pPrevItem = getWearItem(Part); m_pWearItem[Part] = pItem; // by sigi. 2002.5.15 char pField[80]; sprintf(pField, "Storage=%d, X=%d", STORAGE_GEAR, Part); pItem->tinysave(pField); addItemToExtraInventorySlot(pPrevItem); sprintf(pField, "Storage=%d", STORAGE_EXTRASLOT); pPrevItem->tinysave(pField); } else { // 夸备茄 酒捞袍阑 厘馒 器牢飘俊 持绰促. m_pWearItem[Part] = pItem; // by sigi. 2002.5.15 char pField[80]; sprintf(pField, "Storage=%d, X=%d", STORAGE_GEAR, Part); pItem->tinysave(pField); } } // 渴捞扼搁 渴俊 蝶弗 祸彬阑 沥秦霖促. // 唱吝俊扼档 渴 鸥涝捞 咯矾 啊瘤啊 瞪 荐 乐栏府扼 积阿窍绰单, // 泅犁肺辑绰 渴 鸥涝捞 窍唱捞骨肺, 祸彬父 技泼秦霖促. switch ( pItem->getItemClass() ) { case Item::ITEM_CLASS_OUSTERS_COAT: // item type阑 汲沥秦霖促. m_OustersInfo.setCoatType( getOustersCoatType( pItem->getItemType() ) ); m_OustersInfo.setCoatColor( getItemShapeColor( pItem ) ); break; case Item::ITEM_CLASS_OUSTERS_CHAKRAM: m_OustersInfo.setArmType( OUSTERS_ARM_CHAKRAM ); m_OustersInfo.setArmColor( getItemShapeColor( pItem ) ); break; case Item::ITEM_CLASS_OUSTERS_WRISTLET: m_OustersInfo.setArmType( OUSTERS_ARM_GAUNTLET ); m_OustersInfo.setArmColor( getItemShapeColor( pItem ) ); break; case Item::ITEM_CLASS_OUSTERS_BOOTS: m_OustersInfo.setBootsColor( getItemShapeColor( pItem ) ); break; default: break; } __END_CATCH}//----------------------------------------------------------------------// Ousters::WearItem()// Item阑 厘馒芒俊 厘馒矫虐绊 瓷仿摹甫 拌魂茄促.//----------------------------------------------------------------------void Ousters::wearItem(WearPart Part) throw(){ __BEGIN_TRY // 厘馒 霖厚吝牢 酒捞袍阑 罐酒柯促. Item* pItem = getExtraInventorySlotItem(); Assert(pItem != NULL); Item* pPrevItem = NULL; Item* pLeft = NULL; Item* pRight = NULL; // 刚历 渴阑 涝洒芭唱, 哈扁扁 傈俊 泅犁狼 瓷仿摹甫 滚欺俊促 历厘秦 敌促. // 捞绰 唱吝俊 函茄 瓷仿摹父阑 傈价窍扁 困茄 巴捞促. OUSTERS_RECORD prev; getOustersRecord(prev); char pField[80]; // 剧颊 公扁老 版快俊绰 剧颊 厘馒芒俊促 窍唱狼 酒捞袍 器牢磐甫 且寸... if (isTwohandWeapon(pItem)) { // 剧颊俊 酒捞袍阑 甸绊 乐阑 版快 if (isWear(WEAR_RIGHTHAND) && isWear(WEAR_LEFTHAND)) { pLeft = getWearItem(WEAR_RIGHTHAND); pRight = getWearItem(WEAR_LEFTHAND); // 剧颊 公扁甫 甸绊 乐阑 版快 if (pLeft == pRight) { takeOffItem(WEAR_LEFTHAND, false, false); // 夸备茄 酒捞袍阑 厘馒 器牢飘俊 持绊, m_pWearItem[WEAR_RIGHTHAND] = pItem; m_pWearItem[WEAR_LEFTHAND] = pItem; // by sigi. 2002.5.15 sprintf(pField, "Storage=%d, X=%d", STORAGE_GEAR, Part); pItem->tinysave(pField); // 夸备茄 酒捞袍阑 付快胶 器牢磐俊辑 力芭茄促. deleteItemFromExtraInventorySlot(); // 盔贰 乐带 酒捞袍阑 付快胶 器牢磐俊 崔酒 霖促. addItemToExtraInventorySlot(pLeft); sprintf(pField, "Storage=%d", STORAGE_EXTRASLOT); pLeft->tinysave(pField); } // 八苞 规菩甫 甸绊 乐阑 版快 else { // 剧颊俊 八苞 规菩甫 甸绊 乐菌绰单...剧颊 公扁甫 甸妨绊 窍搁, // 八篮 付快胶 器牢磐俊 崔酒临 荐 乐瘤父, 规菩绰 绢痘霸 且 荐啊 绝促. // 牢亥配府俊 持绢拎具 且 刨单, 瘤陛 寸厘篮 绢痘霸 且 瘤甫 葛福摆匙... // 傲 涝阑 荐 绝促绰 菩哦阑 焊郴林磊... return; } } // 剧颊俊 酒捞袍阑 甸绊 乐瘤 臼阑 版快 else { // by sigi. 2002.5.15 // 坷弗率俊 酒捞袍阑 甸绊 乐阑 版快 if (isWear(WEAR_RIGHTHAND)) { pRight = getWearItem(WEAR_RIGHTHAND); takeOffItem(WEAR_RIGHTHAND, false, false); // 夸备茄 酒捞袍阑 厘馒 器牢飘俊 持绰促. m_pWearItem[WEAR_RIGHTHAND] = pItem; m_pWearItem[WEAR_LEFTHAND] = pItem; // by sigi. 2002.5.15 sprintf(pField, "Storage=%d, X=%d", STORAGE_GEAR, Part); pItem->tinysave(pField); // 夸备茄 酒捞袍阑 付快胶 器牢磐俊辑 力芭茄促. deleteItemFromExtraInventorySlot(); // 盔贰 乐带 酒捞袍阑 付快胶 器牢磐俊 崔酒 霖促. addItemToExtraInventorySlot(pRight); sprintf(pField, "Storage=%d", STORAGE_EXTRASLOT); pRight->tinysave(pField); } // 哭率俊 酒捞袍阑 甸绊 乐阑 版快 else if (isWear(WEAR_LEFTHAND)) { pLeft = getWearItem(WEAR_LEFTHAND); takeOffItem(WEAR_LEFTHAND, false, false); // 夸备茄 酒捞袍阑 厘馒 器牢飘俊 持绰促. m_pWearItem[WEAR_RIGHTHAND] = pItem; m_pWearItem[WEAR_LEFTHAND] = pItem; // by sigi. 2002.5.15 sprintf(pField, "Storage=%d, X=%d", STORAGE_GEAR, Part); pItem->tinysave(pField); // 夸备茄 酒捞袍阑 付快胶 器牢磐俊辑 力芭茄促. deleteItemFromExtraInventorySlot(); // 盔贰 乐带 酒捞袍阑 付快胶 器牢磐俊 崔酒 霖促. addItemToExtraInventorySlot(pLeft); sprintf(pField, "Storage=%d", STORAGE_EXTRASLOT); pLeft->tinysave(pField); } // 酒公率档 酒捞袍阑 甸绊 乐瘤 臼阑 版快 else { // 夸备茄 酒捞袍阑 厘馒 器牢飘俊 持绰促. m_pWearItem[WEAR_RIGHTHAND] = pItem; m_pWearItem[WEAR_LEFTHAND] = pItem; pItem->save(m_Name, STORAGE_GEAR, 0, Part, 0); // 夸备茄 酒捞袍阑 付快胶 器牢磐俊辑 力芭茄促. deleteItemFromExtraInventorySlot(); } } } else { if (isWear(Part)) { pPrevItem = getWearItem(Part); takeOffItem(Part, false, false); m_pWearItem[Part] = pItem; // by sigi. 2002.5.15 sprintf(pField, "Storage=%d, X=%d", STORAGE_GEAR, Part); pItem->tinysave(pField); deleteItemFromExtraInventorySlot(); addItemToExtraInventorySlot(pPrevItem); sprintf(pField, "Storage=%d", STORAGE_EXTRASLOT); pPrevItem->tinysave(pField); } else { m_pWearItem[Part] = pItem; deleteItemFromExtraInventorySlot(); // by sigi. 2002.5.15 sprintf(pField, "Storage=%d, X=%d", STORAGE_GEAR, Part); pItem->tinysave(pField); } } initAllStat(); sendRealWearingInfo(); sendModifyInfo(prev);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -