📄 vampire.cpp
字号:
{ // 夸备茄 酒捞袍阑 厘馒 器牢飘俊 持绰促. 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 { 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) { m_VampireInfo.setCoatColor( getItemShapeColor( pItem ) ); // item type阑 汲沥秦霖促. m_VampireInfo.setCoatType( pItem->getItemType() ); } __END_CATCH}//----------------------------------------------------------------------// Vampire::WearItem()// Item阑 厘馒芒俊 厘馒矫虐绊 瓷仿摹甫 拌魂茄促.//----------------------------------------------------------------------void Vampire::wearItem(WearPart Part) throw(){ __BEGIN_TRY // 厘馒 霖厚吝牢 酒捞袍阑 罐酒柯促. Item* pItem = getExtraInventorySlotItem(); Assert(pItem != NULL); Item* pPrevItem = NULL; Item* pLeft = NULL; Item* pRight = NULL; // 刚历 渴阑 涝洒芭唱, 哈扁扁 傈俊 泅犁狼 瓷仿摹甫 滚欺俊促 历厘秦 敌促. // 捞绰 唱吝俊 函茄 瓷仿摹父阑 傈价窍扁 困茄 巴捞促. VAMPIRE_RECORD prev; getVampireRecord(prev); // 泅犁 扁裙俊辑绰...瓷仿摹啊 葛磊扼歹扼档 酒捞袍阑 公炼扒 荤侩且 荐绰 // 乐促. 窍瘤父 酒捞袍俊 狼茄 瓷仿摹啊 利侩捞 登瘤 臼绰促. // 弊矾骨肺 老窜 酒捞袍阑 秦寸窍绰 厘馒芒俊促 笼绢持绰促. char pField[80]; // vampire 公扁 眠啊. 2002.8.16. by sigi // 剧颊 公扁老 版快俊绰 剧颊 厘馒芒俊促 窍唱狼 酒捞袍 器牢磐甫 且寸... 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 //pItem->save(m_Name, STORAGE_GEAR, 0, Part, 0); sprintf(pField, "Storage=%d, X=%d", STORAGE_GEAR, Part); pItem->tinysave(pField); // 夸备茄 酒捞袍阑 付快胶 器牢磐俊辑 力芭茄促. deleteItemFromExtraInventorySlot(); // 盔贰 乐带 酒捞袍阑 付快胶 器牢磐俊 崔酒 霖促. addItemToExtraInventorySlot(pLeft); //pLeft->save(m_Name, STORAGE_EXTRASLOT, 0, 0, 0); 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; //pItem->save(m_Name, STORAGE_GEAR, 0, Part, 0); // by sigi. 2002.5.15 sprintf(pField, "Storage=%d, X=%d", STORAGE_GEAR, Part); pItem->tinysave(pField); // 夸备茄 酒捞袍阑 付快胶 器牢磐俊辑 力芭茄促. deleteItemFromExtraInventorySlot(); // 盔贰 乐带 酒捞袍阑 付快胶 器牢磐俊 崔酒 霖促. 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); takeOffItem(WEAR_LEFTHAND, false, false); // 夸备茄 酒捞袍阑 厘馒 器牢飘俊 持绰促. 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); // 夸备茄 酒捞袍阑 付快胶 器牢磐俊辑 力芭茄促. deleteItemFromExtraInventorySlot(); // 盔贰 乐带 酒捞袍阑 付快胶 器牢磐俊 崔酒 霖促. 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; 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 //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); // 渴捞扼搁 渴俊 蝶弗 祸彬阑 沥秦霖促. // 唱吝俊扼档 渴 鸥涝捞 咯矾 啊瘤啊 瞪 荐 乐栏府扼 积阿窍绰单, // 泅犁肺辑绰 渴 鸥涝捞 窍唱捞骨肺, 祸彬父 技泼秦霖促. // 角力 利侩登绰 酒捞袍父 汗厘阑 官槽促. by sigi. 2002.10.30 if (m_pRealWearingCheck[Part]) { if (pItem->getItemClass() == Item::ITEM_CLASS_VAMPIRE_COAT) { Color_t color = getItemShapeColor( pItem ); m_VampireInfo.setCoatColor( color ); m_VampireInfo.setCoatType( pItem->getItemType() ); // 渴阑 哎酒涝菌栏聪, 林困俊促啊 渴 哎酒涝菌促绊 沥焊甫 朝赴促. GCChangeShape pkt; pkt.setObjectID(getObjectID()); pkt.setItemClass(Item::ITEM_CLASS_VAMPIRE_COAT); 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); } } 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; // vampire 公扁 眠啊. 2002.8.16. by sigi // 厘馒芒俊 乐绰 酒捞袍阑 罐酒柯促. //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) { 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(); //------------------------------------------------------------- // 浇饭捞绢侩 酒捞袍阑 涝绊 乐绰 捞惑茄 磊侥捞 乐栏搁 促 绢辑飘 //------------------------------------------------------------- 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 Vampire::isRealWearing(WearPart part) const throw(){ __BEGIN_TRY if (part >= VAMPIRE_WEAR_MAX) throw("Vampire::isRealWearing() : invalid wear point!"); if (m_pWearItem[part] == NULL) return false; return isRealWearing(m_pWearItem[part]); __END_CATCH}//----------------------------------------------------------------------//----------------------------------------------------------------------bool Vampire::isRealWearing(Item* pItem) const throw(){ __BEGIN_TRY if (pItem == NULL) return false; ItemInfo* pItemInfo = g_pItemInfoManager->getItemInfo(pItem->getItemClass(), pItem->getItemType()); if ( pItem->isTimeLimitItem() ) { Attr_t ReqGender = pItemInfo->getReqGender(); if ( ( m_Sex == MALE && ReqGender == GENDER_FEMALE ) || ( m_Sex == FEMALE && ReqGender == GENDER_MALE ) ) return false; 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_VAMPIRE_COUPLE_RING))
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -