📄 ousters.cpp
字号:
// 角力 利侩登绰 酒捞袍父 汗厘阑 官槽促. by sigi. 2002.10.30 if (m_pRealWearingCheck[Part]) { if ( pItem->getItemClass() == Item::ITEM_CLASS_OUSTERS_COAT || pItem->getItemClass() == Item::ITEM_CLASS_OUSTERS_WRISTLET || pItem->getItemClass() == Item::ITEM_CLASS_OUSTERS_CHAKRAM || pItem->getItemClass() == Item::ITEM_CLASS_OUSTERS_BOOTS ) { Color_t color = getItemShapeColor( pItem ); // 渴阑 哎酒涝菌栏聪, 林困俊促啊 渴 哎酒涝菌促绊 沥焊甫 朝赴促. GCChangeShape pkt; pkt.setObjectID(getObjectID()); pkt.setItemClass(pItem->getItemClass()); pkt.setItemType(pItem->getItemType()); pkt.setOptionType(pItem->getFirstOptionType()); pkt.setAttackSpeed(m_AttackSpeed[ATTR_CURRENT]); if ( color == QUEST_COLOR ) pkt.setFlag( SHAPE_FLAG_QUEST ); Zone* pZone = getZone(); pZone->broadcastPacket(m_X, m_Y , &pkt, this); // PCOustersInfo3 沥焊甫 官层霖促. switch ( pItem->getItemClass() ) { case Item::ITEM_CLASS_OUSTERS_COAT: // item type阑 汲沥秦霖促. m_OustersInfo.setCoatType( getOustersCoatType( pItem->getItemType() ) ); m_OustersInfo.setCoatColor( color ); break; case Item::ITEM_CLASS_OUSTERS_CHAKRAM: m_OustersInfo.setArmType( OUSTERS_ARM_CHAKRAM ); m_OustersInfo.setArmColor( color ); break; case Item::ITEM_CLASS_OUSTERS_WRISTLET: m_OustersInfo.setArmType( OUSTERS_ARM_GAUNTLET ); m_OustersInfo.setArmColor( color ); break; case Item::ITEM_CLASS_OUSTERS_BOOTS: m_OustersInfo.setBootsColor( color ); break; default: break; } } } 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}//----------------------------------------------------------------------//// Ousters::takeOffItem()////----------------------------------------------------------------------void Ousters::takeOffItem(WearPart Part, bool bAddOnMouse, bool bSendModifyInfo) throw(){ __BEGIN_TRY OUSTERS_RECORD prev; // 厘馒芒俊 乐绰 酒捞袍阑 罐酒柯促. Item* pItem = m_pWearItem[Part]; Assert(pItem != NULL); // 厘馒芒俊 乐绰 酒捞袍阑 罐酒柯促. //Item::ItemClass IClass = pItem->getItemClass(); if (Part == WEAR_LEFTHAND || Part == WEAR_RIGHTHAND) { if (m_pWearItem[WEAR_RIGHTHAND] && m_pWearItem[WEAR_LEFTHAND]) { if (m_pWearItem[WEAR_RIGHTHAND] == m_pWearItem[WEAR_LEFTHAND]) { m_pWearItem[WEAR_RIGHTHAND] = NULL; m_pWearItem[WEAR_LEFTHAND] = NULL; } } } // 酒捞袍阑 厘馒器牢飘俊辑 力芭茄促. if (isTwohandWeapon(pItem)) { m_pWearItem[WEAR_RIGHTHAND] = NULL; m_pWearItem[WEAR_LEFTHAND] = NULL; } else m_pWearItem[Part] = NULL; // wearItem俊辑 瘤沥等 浇儿俊 渴阑 捞固 涝绊 乐绰 版快俊, 弊巴阑 哈扁绊 // 促矫 渴阑 涝洒绰单, 弊矾搁 哈辨 锭 菩哦阑 茄锅, 涝菌阑 锭 促矫 菩哦阑 // 茄锅, 醚 滴 锅狼 菩哦阑 焊郴霸 等促. 弊巴阑 规瘤窍扁 困秦辑 // bool 函荐甫 窍唱 笼绢持菌促. -- 2002.01.24 辫己刮 if (bSendModifyInfo) { getOustersRecord(prev); initAllStat(); sendRealWearingInfo(); sendModifyInfo(prev); } else { initAllStat(); } //--------------------------------------------- // 乐绢急 救瞪 眉农 -_-; 烙矫 东户 // 酒捞袍阑 付快胶 目辑俊促 崔酒霖寸. //--------------------------------------------- if (bAddOnMouse) { addItemToExtraInventorySlot(pItem); // item历厘 弥利拳. by sigi. 2002.5.13 char pField[80]; sprintf(pField, "Storage=%d, Durability=%d", STORAGE_EXTRASLOT, pItem->getDurability()); pItem->tinysave(pField); } switch ( pItem->getItemClass() ) { case Item::ITEM_CLASS_OUSTERS_COAT: { m_OustersInfo.setCoatType( OUSTERS_COAT_BASIC ); m_OustersInfo.setCoatColor( 377 ); GCTakeOff pkt; pkt.setObjectID(getObjectID()); pkt.setSlotID((SlotID_t)ADDON_COAT); m_pZone->broadcastPacket(getX(), getY(), &pkt, this); } break; case Item::ITEM_CLASS_OUSTERS_CHAKRAM: { m_OustersInfo.setArmType( OUSTERS_ARM_GAUNTLET ); m_OustersInfo.setArmColor( 377 ); GCTakeOff pkt; pkt.setObjectID(getObjectID()); pkt.setSlotID((SlotID_t)ADDON_LEFTHAND); m_pZone->broadcastPacket(getX(), getY(), &pkt, this); } break; case Item::ITEM_CLASS_OUSTERS_WRISTLET: { m_OustersInfo.setArmType( OUSTERS_ARM_GAUNTLET ); m_OustersInfo.setArmColor( 377 ); GCTakeOff pkt; pkt.setObjectID(getObjectID()); pkt.setSlotID((SlotID_t)ADDON_LEFTHAND); m_pZone->broadcastPacket(getX(), getY(), &pkt, this); } break; case Item::ITEM_CLASS_OUSTERS_BOOTS: { m_OustersInfo.setBootsColor( 377 ); GCTakeOff pkt; pkt.setObjectID(getObjectID()); pkt.setSlotID((SlotID_t)ADDON_TROUSER); m_pZone->broadcastPacket(getX(), getY(), &pkt, this); } break; default: break; } 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 Ousters::destroyGears() throw (){ __BEGIN_TRY __BEGIN_DEBUG for (int j = 0; j < OUSTERS_WEAR_MAX; j++) { Item* pItem = m_pWearItem[j]; if (pItem != NULL) { Item::ItemClass IClass = pItem->getItemClass(); //------------------------------------------------------------- // 浇饭捞绢侩 酒捞袍阑 涝绊 乐绰 捞惑茄 磊侥捞 乐栏搁 促 绢辑飘 //------------------------------------------------------------- Assert(IClass != Item::ITEM_CLASS_AR); Assert(IClass != Item::ITEM_CLASS_SR); Assert(IClass != Item::ITEM_CLASS_SG); Assert(IClass != Item::ITEM_CLASS_SMG); Assert(IClass != Item::ITEM_CLASS_SWORD); Assert(IClass != Item::ITEM_CLASS_BLADE); Assert(IClass != Item::ITEM_CLASS_SHIELD); Assert(IClass != Item::ITEM_CLASS_CROSS); Assert(IClass != Item::ITEM_CLASS_MACE); Assert(IClass != Item::ITEM_CLASS_HELM); Assert(IClass != Item::ITEM_CLASS_GLOVE); Assert(IClass != Item::ITEM_CLASS_TROUSER); Assert(IClass != Item::ITEM_CLASS_COAT); // 剧颊 公扁牢瘤甫 八荤秦辑 酒捞袍 窍唱甫 瘤快搁辑 // 剧颊阑 厚况霖促. if (isTwohandWeapon(pItem)) { m_pWearItem[WEAR_RIGHTHAND] = NULL; m_pWearItem[WEAR_LEFTHAND] = NULL; } else m_pWearItem[j] = NULL; SAFE_DELETE(pItem); } } __END_DEBUG __END_CATCH}//----------------------------------------------------------------------//----------------------------------------------------------------------bool Ousters::isRealWearing(WearPart part) const throw(){ __BEGIN_TRY if (part >= OUSTERS_WEAR_MAX) throw("Ousters::isRealWearing() : invalid wear point!"); if (m_pWearItem[part] == NULL) return false; return isRealWearing(m_pWearItem[part]); __END_CATCH}//----------------------------------------------------------------------//----------------------------------------------------------------------bool Ousters::isRealWearing(Item* pItem) const throw(){ __BEGIN_TRY if (pItem == NULL) return false; // 矫埃力茄酒捞袍篮 饭绢唱 蜡聪农唱 公丰荤侩磊档 镜 荐 乐促....... 2003.5.4 if ( pItem->isTimeLimitItem() ) { return true; } // 橇府固决 粮俊辑绰 蜡丰荤侩磊父 蜡聪农/饭绢 酒捞袍捞 利侩等促. // 目敲傅档 蜡丰荤侩磊父 镜 荐 乐促. by Sequoia 2003. 3. 5. if (getZone()->isPremiumZone() && (pItem->isUnique() || pItem->getOptionTypeSize()>1 ) ) //pItem->getItemClass() == Item::ITEM_CLASS_COUPLE_RING || pItem->getItemClass() == Item::ITEM_CLASS_OUSTERS_COUPLE_RING)) { GamePlayer* pGamePlayer = dynamic_cast<GamePlayer*>(getPlayer()); if (!pGamePlayer->isPayPlaying() && !pGamePlayer->isPremiumPlay()) { return false; } } Item::ItemClass IClass = pItem->getItemClass(); ItemInfo* pItemInfo = g_pItemInfoManager->getItemInfo(IClass, pItem->getItemType()); Level_t ReqLevel = pItemInfo->getReqLevel(); Attr_t ReqSTR = pItemInfo->getReqSTR(); Attr_t ReqDEX = pItemInfo->getReqDEX(); Attr_t ReqINT = pItemInfo->getReqINT(); Attr_t ReqSum = pItemInfo->getReqSum(); // 酒捞袍捞 可记阑 啊瘤绊 乐促搁, // 可记狼 辆幅俊 蝶扼辑 瓷仿摹 力茄阑 棵妨霖促. const list<OptionType_t>& optionTypes = pItem->getOptionTypeList(); list<OptionType_t>::const_iterator itr; for (itr=optionTypes.begin(); itr!=optionTypes.end(); itr++) { OptionInfo* pOptionInfo = g_pOptionInfoManager->getOptionInfo( *itr ); if (ReqLevel != 0) ReqLevel += pOptionInfo->getReqLevel(); if (ReqSTR != 0) ReqSTR += (pOptionInfo->getReqSum() * 2); if (ReqDEX != 0) ReqDEX += (pOptionInfo->getReqSum() * 2); if (ReqINT != 0) ReqINT += (pOptionInfo->getReqSum() * 2); if (ReqSum != 0) ReqSum += pOptionInfo->getReqSum(); } ReqLevel = min(ReqLevel, MAX_OUSTERS_LEVEL );// ReqSum = min((int)ReqSum, OUSTERS_MAX_SUM);// ReqSTR = min((int)ReqSTR, OUSTERS_MAX_ATTR);// ReqDEX = min((int)ReqDEX, OUSTERS_MAX_ATTR);// ReqINT = min((int)ReqINT, OUSTERS_MAX_ATTR); // 瓷仿摹 力茄捞 窍唱扼档 乐促搁, // 弊 瓷仿阑 父练矫虐绰瘤 八荤秦具 茄促. Attr_t CSTR = m_STR[ATTR_CURRENT]; Attr_t CDEX = m_DEX[ATTR_CURRENT]; Attr_t CINT = m_INT[ATTR_CURRENT]; Attr_t CSUM = CSTR + CDEX + CINT; if ( CSTR < ReqSTR || CDEX < ReqDEX || CINT < ReqINT || CSUM < ReqSum || m_Level < ReqLevel ) { return false; } return true; __END_CATCH}//----------------------------------------------------------------------//----------------------------------------------------------------------bool Ousters::isRealWearingEx(WearPart part) const{ if (part >= OUSTERS_WEAR_MAX) return false; return m_pRealWearingCheck[part];}DWORD Ousters::sendRealWearingInfo(void) const throw(){ __BEGIN_TRY DWORD info = 0; DWORD flag = 1; for (int i=0; i<OUSTERS_WEAR_MAX; i++) { if (isRealWearing((Ousters::WearPart)i)) info |= flag; flag <<= 1; } GCRealWearingInfo pkt; pkt.setInfo(info); m_pPlayer->sendPacket(&pkt); return info; __END_CATCH}////////////////////////////////////////////////////////////////////////////////////// 牢器 包访 窃荐////////////////////////////////////////////////////////////////////////////////////PCOustersInfo2* Ousters::getOustersInfo2 () throw (){ __BEGIN_TRY __BEGIN_DEBUG PCOustersInfo2* pInfo = new PCOustersInfo2(); pInfo->setObjectID(m_ObjectID); pInfo->setName(m_Name); pInfo->setLevel(m_Level); pInfo->setSex(m_Sex); pInfo->setHairColor(m_HairColor); // 己氢 pInfo->setAlignment(m_Alignment); // 瓷仿摹 pInfo->setSTR(m_STR[ATTR_CURRENT], ATTR_CURRENT); pInfo->setSTR(m_STR[ATTR_MAX], ATTR_MAX); pInfo->setSTR(m_STR[ATTR_BASIC], ATTR_BASIC); pInfo->setDEX(m_DEX[ATTR_CURRENT], ATTR_CURRENT); pInfo->setDEX(m_DEX[ATTR_MAX], ATTR_MAX); pInfo->setDEX(m_DEX[ATTR_BASIC], ATTR_BASIC); pInfo->setINT(m_INT[ATTR_CURRENT], ATTR_CURRENT); pInfo->setINT(m_INT[ATTR_MAX], ATTR_MAX); pInfo->setINT(m_INT[ATTR_BASIC], ATTR_BASIC); pInfo->setHP(m_HP[ATTR_CURRENT] , m_HP[ATTR_MAX]); pInfo->setMP(m_MP[ATTR_CURRENT] , m_MP[ATTR_MAX]); pInfo->setSilverDamage( m_SilverDamage ); pInfo->setFame(m_Fame); pInfo->setExp(m_GoalExp); pInfo->setGold(m_Gold); pInfo->setSight(m_Sight); pInfo->setBonus(m_Bonus); pInfo->setSkillBonus(m_SkillBonus); // by sigi. 2002.8.30 pInfo->setRank(getRank()); pInfo->setRankExp(getRankGoalExp()); pInfo->setCompetence(m_CompetenceShape); pInfo->setGuildID(m_GuildID); pInfo->setGuildName( getGuildName() ); pInfo->setGuildMemberRank( getGuildMemberRank() ); return pInfo; __END_DEBUG __END_CATCH}//----------------------------------------------------------------------// Ousters Outlook Information//----------------------------------------------------------------------PCOustersInfo3 Ousters::getOustersInfo3 () const throw (){ __BEGIN_TRY __BEGIN_DEBUG m_OustersInfo.setObjectID(m_ObjectID); m_OustersInfo.setX(m_X); m_OustersInfo.setY(m_Y); m_OustersInfo.setDir(m_Dir); m_OustersInfo.setCurrentHP(m_HP[ATTR_CURRENT]); m_OustersInfo.setMaxHP(m_HP[ATTR_MAX]); m_OustersInfo.setAttackSpeed(m_AttackSpeed[ATTR_CURRENT]); m_OustersInfo.setAlignment(m_Alignment); m_OustersInfo.setGuildID(m_GuildID); // by sigi. 2002.9.10 m_OustersInfo.setRank(getRank()); m_OustersInfo.setHairColor(m_HairColor); return m_OustersInfo; __END_DEBUG __END_CATCH}//----------------------------------------------------------------------//// get Extra Info////----------------------------------------------------------------------ExtraInfo* Ousters::getExtraInfo() const throw(){ __BEGIN_TRY __BEGIN_DEBUG BYTE ItemCount = 0; ExtraInfo* pExtraInfo = new ExtraInfo();
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -