📄 slayer.cpp
字号:
PhoneNumber_t Slayer::getPhoneSlotNumber(SlotID_t SlotID) throw(){ __BEGIN_TRY Assert(SlotID <= MAX_PHONE_SLOT); return m_PhoneSlot[SlotID]; __END_CATCH}void Slayer::setPhoneSlotNumber(SlotID_t SlotID, PhoneNumber_t PhoneNumber) throw(){ __BEGIN_TRY __ENTER_CRITICAL_SECTION(m_Mutex) m_PhoneSlot[SlotID] = PhoneNumber; __LEAVE_CRITICAL_SECTION(m_Mutex) __END_CATCH}bool Slayer::isSlotByPhoneNumber(PhoneNumber_t PhoneNumber) throw(){ __BEGIN_TRY bool isFind = false; for (int i = 0; i < MAX_PHONE_SLOT; i++) { if (m_PhoneSlot[i] == PhoneNumber) isFind = true; } return isFind; __END_CATCH}SlotID_t Slayer::getSlotWithPhoneNumber(PhoneNumber_t PhoneNumber) throw(){ __BEGIN_TRY for (int i = 0; i < MAX_PHONE_SLOT; i++) { if (m_PhoneSlot[i] == PhoneNumber) return i; } return MAX_PHONE_SLOT; __END_CATCH}SlotID_t Slayer::findEmptyPhoneSlot() throw(){ __BEGIN_TRY for (int i = 0; i < MAX_PHONE_SLOT; i++) { if (m_PhoneSlot[i] == 0) { return i; } } return MAX_PHONE_SLOT; __END_CATCH}bool Slayer::isEmptyPhoneSlot() throw(){ __BEGIN_TRY bool Success = false; for (int i = 0; i < MAX_PHONE_SLOT; i++) { if (m_PhoneSlot[i] == 0) { // 后 浇儿阑 茫疽促. Success = true; } } return Success; __END_CATCH}// 漂沥 Skill捞 粮犁窍绰瘤 炼荤窍绊 SkillSlot阑 府畔茄促.SkillSlot* Slayer::getSkill(SkillType_t SkillType) const throw(){ __BEGIN_TRY hash_map<SkillType_t, SkillSlot*>::const_iterator itr = m_SkillSlot.find(SkillType); if (itr != m_SkillSlot.end()) { return itr->second; } return NULL; __END_CATCH}// 漂沥 SkillSlot阑 磊悼栏肺 后 浇儿阑 茫酒 持绰促.void Slayer::addSkill(SkillSlot* pSkillSlot) throw(){ __BEGIN_TRY SkillType_t SkillType = pSkillSlot->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("SlayerError.log", "SkillType[%d], %s", SkillType, toString().c_str()); Assert(false); break; default: break; } hash_map<SkillType_t, SkillSlot*>::iterator itr = m_SkillSlot.find(pSkillSlot->getSkillType()); if (itr == m_SkillSlot.end()) { m_SkillSlot[pSkillSlot->getSkillType()] = pSkillSlot; } // 2002.1.16 by sigi // 2003.3.30 by Sequoia 炼扒 眠啊窃 else { if ( pSkillSlot != itr->second ) SAFE_DELETE(pSkillSlot); } __END_CATCH}// 扁贱阑 硅匡锭父 静绰 窃荐捞促. 促弗 镑俊辑 静搁 俺 等促.void Slayer::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("SlayerError.log", "2 SkillType[%d], %s", SkillType, toString().c_str()); Assert(false); break; default: break; } hash_map<SkillType_t, SkillSlot*>::iterator itr = m_SkillSlot.find(SkillType); if (itr == m_SkillSlot.end()) { SkillInfo* pSkillInfo = g_pSkillInfoManager->getSkillInfo(SkillType); Turn_t Delay = pSkillInfo->getMaxDelay(); SkillSlot* pSkillSlot = new SkillSlot(); pSkillSlot->setName(m_Name); pSkillSlot->setSkillType(SkillType); pSkillSlot->setInterval(Delay); pSkillSlot->setExpLevel(0); pSkillSlot->setExp(1); pSkillSlot->setRunTime(); pSkillSlot->create(m_Name); m_SkillSlot[SkillType] = pSkillSlot; } __END_CATCH}// 己瘤胶懦阑 瘤况林绰 窃荐促.void Slayer::removeCastleSkill(SkillType_t SkillType) throw(){ __BEGIN_TRY // 己瘤 胶懦父 瘤匡 荐 乐促. if ( g_pCastleSkillInfoManager->getZoneID( SkillType ) == 0 ) return; hash_map<SkillType_t, SkillSlot*>::iterator itr = m_SkillSlot.find(SkillType); if (itr != m_SkillSlot.end()) { CastleSkillSlot* pCastleSkillSlot = dynamic_cast<CastleSkillSlot*>(itr->second); SAFE_DELETE( pCastleSkillSlot ); m_SkillSlot.erase( itr ); } __END_CATCH}// 爱绊 乐绰 葛电 己瘤胶懦阑 瘤况林绰 窃荐捞促.void Slayer::removeAllCastleSkill() throw(){ __BEGIN_TRY hash_map<SkillType_t, SkillSlot*>::iterator itr = m_SkillSlot.begin(); while ( itr != m_SkillSlot.end() ) { if ( itr->second != NULL ) { SkillSlot* pSkillSlot = itr->second; if ( g_pCastleSkillInfoManager->getZoneID( pSkillSlot->getSkillType() ) == 0 ) { // 己瘤胶懦捞 酒聪搁 促澜铂肺 逞绢埃促. ++itr; continue; } // 己瘤胶懦捞搁 瘤况霖促. 馆汗磊 荤侩俊 林狼 SAFE_DELETE( pSkillSlot ); hash_map<SkillType_t, SkillSlot*>::iterator prevItr = itr; ++itr; m_SkillSlot.erase( prevItr ); } else { // 捞扒 钢鳖.... Assert 秦具 登瘤 臼唱 -_-; Assert(false); } } __END_CATCH}// Slayer::wearItem()// Item阑 厘馒芒俊 厘馒矫虐绊 瓷仿摹甫 拌魂茄促.// 捞 皋家靛绰 立加且锭 Item阑 Loading 窍搁辑 静绰 wearItem捞促.// 捞 皋家靛 救俊急 Broadcast甫 窍瘤 臼绰 巴捞 亮促.void Slayer::wearItem(WearPart Part, Item* pItem) throw (Error){ __BEGIN_TRY __BEGIN_DEBUG Assert(pItem != NULL); Item::ItemClass IClass = pItem->getItemClass(); Item* pLeft = NULL; Item* pRight = NULL; Item* pPrevItem = NULL; OptionInfo* pOptionInfo = NULL; // 霉锅掳 可记狼 祸彬阑 瘤沥茄促. if (pItem->getFirstOptionType() != 0) pOptionInfo = g_pOptionInfoManager->getOptionInfo(pItem->getFirstOptionType()); // 泅犁 扁裙俊辑绰...瓷仿摹啊 葛磊扼歹扼档 酒捞袍阑 公炼扒 荤侩且 荐绰 // 乐促. 窍瘤父 酒捞袍俊 狼茄 瓷仿摹啊 利侩捞 登瘤 臼绰促. // 弊矾骨肺 老窜 酒捞袍阑 秦寸窍绰 厘馒芒俊促 笼绢持绰促. // 剧颊 公扁老 版快俊绰 剧颊 厘馒芒俊促 窍唱狼 酒捞袍 器牢磐甫 且寸... 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 { // 夸备茄 酒捞袍阑 厘馒 器牢飘俊 持绰促. 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); } } } else { char pField[80]; if (isWear(Part)) { pPrevItem = getWearItem(Part); // 夸备茄 酒捞袍阑 厘馒 器牢飘俊 持绰促. 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); // 盔贰 乐带 酒捞袍阑 付快胶 器牢磐俊 崔酒 霖促. 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; //pItem->save(m_Name, STORAGE_GEAR, 0, Part, 0); sprintf(pField, "Storage=%d, X=%d", STORAGE_GEAR, Part); pItem->tinysave(pField); } } ItemType_t IType = pItem->getItemType(); // 绢恫 公扁甫 棱绊 乐促绰 沥焊甫 历厘茄促. // SlayerInfo俊 悸泼阑 秦 初酒具 促澜 穿焙啊啊 杭锭 朝妨霖促. Color_t color = getItemShapeColor( pItem, pOptionInfo ); switch (IClass) { case Item::ITEM_CLASS_MACE: //m_SlayerInfo.setWeaponType(WEAPON_MACE); m_SlayerInfo.setWeaponType(WEAPON_MACE); m_SlayerInfo.setWeaponColor( color ); break; case Item::ITEM_CLASS_CROSS: m_SlayerInfo.setWeaponType(WEAPON_CROSS); m_SlayerInfo.setWeaponColor( color ); break; case Item::ITEM_CLASS_BLADE: m_SlayerInfo.setWeaponType(WEAPON_BLADE); m_SlayerInfo.setWeaponColor( color ); break; case Item::ITEM_CLASS_AR: m_SlayerInfo.setWeaponType(WEAPON_AR); m_SlayerInfo.setWeaponColor( color ); break; case Item::ITEM_CLASS_SR: m_SlayerInfo.setWeaponType(WEAPON_SR); m_SlayerInfo.setWeaponColor( color ); break; case Item::ITEM_CLASS_SMG: m_SlayerInfo.setWeaponType(WEAPON_SMG); m_SlayerInfo.setWeaponColor( color );
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -