📄 itemutil.cpp
字号:
Level_t CLevel = pOusters->getLevel(); // gamble且 荐 乐绰 茄拌甫 粱 歹 臭囚夯促. CLevel += 3; // level力茄 if (maxLevel!=0) { CLevel = min((int)maxLevel, (int)CLevel); } Attr_t ReqLevel, ReqLevel2; // 10锅父 倒妨夯促. int i = 10; do { itemType = pInfoClass->getRandomItemType(); // 捞 itemType阑 积己秦档 登绰 level牢瘤 犬牢茄促. pItemInfo = g_pItemInfoManager->getItemInfo(itemClass, itemType); ReqLevel2 = ReqLevel = pItemInfo->getReqLevel(); // 饭骇 力茄捞 绝芭唱 力茄 饭骇捞 臭绊 // 己喊捞 嘎酒具 茄促. if ((ReqLevel <= 0 || CLevel >= ReqLevel)) { break; } } while (--i); if (i==0) { itemType = 0; } // 酒捞袍捞 可记阑 啊瘤绊 乐促搁, // 可记狼 辆幅俊 蝶扼辑 瓷仿摹 力茄阑 棵妨霖促. int maxOptionLevel = max(1, min(100, (int)CLevel)); const vector<OptionType_t>& optionVector = g_pOptionInfoManager->getPossibleGambleOptionVector((Item::ItemClass)itemClass, maxOptionLevel); vector<OptionType_t>::const_iterator iOption; // Total OptionRatio甫 备茄促. int itemOptionRatio = g_pOptionInfoManager->getTotalGambleRatio((Item::ItemClass)itemClass, maxOptionLevel); /* cout << "optionVector[" << (int)itemClass << "][" << (int)maxOptionLevel << "] = (" << optionVector.size() << ") = "; for (iOption=optionVector.begin(); iOption!=optionVector.end(); iOption++) { cout << (int)*iOption << " "; } cout << endl; */ if (optionVector.size()>0 && itemOptionRatio>0 && (pItemInfo==NULL || !pItemInfo->isUnique())) { // 10锅父 倒妨夯促. int i = 10; do { // random栏肺 option阑 急琶茄促. int optionRatio = random()%itemOptionRatio; int ratioSum = 0; //cout << "Ratio = " << optionRatio << "/" << itemOptionRatio << endl; OptionInfo* pOptionInfo = NULL; for (iOption=optionVector.begin(); iOption!=optionVector.end(); iOption++) { optionType = *iOption; pOptionInfo = g_pOptionInfoManager->getOptionInfo( optionType ); ratioSum += pOptionInfo->getRatio(); if (optionRatio < ratioSum) { // 捞 option阑 急琶茄促. break; } } // option狼 夸备 瓷仿摹甫 歹秦辑 ReqLevel = ReqLevel2 + pOptionInfo->getReqLevel(); // player狼 瓷仿摹俊 嘎绰 酒捞袍牢瘤 犬牢茄促. if (ReqLevel <= 0 || CLevel >= ReqLevel) { // 捞 option type栏肺 搬沥茄促. break; } } while (--i); if (i==0) { optionType = 0;//(rand()%3==0? 1: (rand()%2? 6:11)); } } // 公可! // 利例茄霸 绝栏搁 STR+1, DEX+1, INT+1 吝俊辑 鞠芭唱.. else optionType = 0;//(rand()%3==0? 1: (rand()%2? 6:11)); } // item阑 积己秦辑 逞败霖促. list<OptionType_t> optionTypes; if (optionType!=0) optionTypes.push_back( optionType ); Item* pItem = g_pItemFactoryManager->createItem(itemClass, itemType, optionTypes); pItem->setGrade( min(6,ItemGradeManager::Instance().getRandomGambleGrade()) ); return pItem; __END_CATCH}//////////////////////////////////////////////////////////////////////////////// 可记捞 嘿阑 荐 乐绰 酒捞袍牢啊?//////////////////////////////////////////////////////////////////////////////bool isPossibleOptionItemClass(Item::ItemClass IClass){ switch (IClass) { case Item::ITEM_CLASS_HELM : case Item::ITEM_CLASS_NECKLACE : case Item::ITEM_CLASS_RING : case Item::ITEM_CLASS_BRACELET : case Item::ITEM_CLASS_SHIELD : case Item::ITEM_CLASS_GLOVE : case Item::ITEM_CLASS_COAT : case Item::ITEM_CLASS_BELT : case Item::ITEM_CLASS_TROUSER : case Item::ITEM_CLASS_SHOES : case Item::ITEM_CLASS_SWORD : case Item::ITEM_CLASS_BLADE : case Item::ITEM_CLASS_CROSS : case Item::ITEM_CLASS_MACE : case Item::ITEM_CLASS_AR : case Item::ITEM_CLASS_SR : case Item::ITEM_CLASS_SG : case Item::ITEM_CLASS_SMG : case Item::ITEM_CLASS_VAMPIRE_NECKLACE : case Item::ITEM_CLASS_VAMPIRE_RING : case Item::ITEM_CLASS_VAMPIRE_BRACELET : case Item::ITEM_CLASS_VAMPIRE_EARRING : case Item::ITEM_CLASS_VAMPIRE_COAT : case Item::ITEM_CLASS_VAMPIRE_WEAPON : case Item::ITEM_CLASS_VAMPIRE_AMULET : case Item::ITEM_CLASS_OUSTERS_ARMSBAND: case Item::ITEM_CLASS_OUSTERS_BOOTS: case Item::ITEM_CLASS_OUSTERS_CHAKRAM: case Item::ITEM_CLASS_OUSTERS_CIRCLET: case Item::ITEM_CLASS_OUSTERS_COAT: case Item::ITEM_CLASS_OUSTERS_PENDENT: case Item::ITEM_CLASS_OUSTERS_RING: case Item::ITEM_CLASS_OUSTERS_STONE: case Item::ITEM_CLASS_OUSTERS_WRISTLET: return true; default : return false; } return false;}//////////////////////////////////////////////////////////////////////////////// 促澜 窜拌肺 诀弊饭捞靛瞪 荐 乐绰 ItemType牢啊//////////////////////////////////////////////////////////////////////////////bool isPossibleUpgradeItemType(Item::ItemClass IClass){ switch (IClass) { case Item::ITEM_CLASS_HELM : case Item::ITEM_CLASS_NECKLACE : case Item::ITEM_CLASS_RING : case Item::ITEM_CLASS_BRACELET : case Item::ITEM_CLASS_SHIELD : case Item::ITEM_CLASS_GLOVE : case Item::ITEM_CLASS_COAT : case Item::ITEM_CLASS_BELT : case Item::ITEM_CLASS_TROUSER : case Item::ITEM_CLASS_SHOES : case Item::ITEM_CLASS_SWORD : case Item::ITEM_CLASS_BLADE : case Item::ITEM_CLASS_CROSS : case Item::ITEM_CLASS_MACE : case Item::ITEM_CLASS_AR : case Item::ITEM_CLASS_SR : case Item::ITEM_CLASS_SG : case Item::ITEM_CLASS_SMG : case Item::ITEM_CLASS_VAMPIRE_NECKLACE : case Item::ITEM_CLASS_VAMPIRE_RING : case Item::ITEM_CLASS_VAMPIRE_BRACELET : case Item::ITEM_CLASS_VAMPIRE_EARRING : case Item::ITEM_CLASS_VAMPIRE_COAT : case Item::ITEM_CLASS_VAMPIRE_WEAPON : case Item::ITEM_CLASS_VAMPIRE_AMULET : case Item::ITEM_CLASS_OUSTERS_ARMSBAND: case Item::ITEM_CLASS_OUSTERS_BOOTS: case Item::ITEM_CLASS_OUSTERS_CHAKRAM: case Item::ITEM_CLASS_OUSTERS_CIRCLET: case Item::ITEM_CLASS_OUSTERS_COAT: case Item::ITEM_CLASS_OUSTERS_PENDENT: case Item::ITEM_CLASS_OUSTERS_RING: case Item::ITEM_CLASS_OUSTERS_STONE: case Item::ITEM_CLASS_OUSTERS_WRISTLET: return true; default : return false; } return false;}ItemType_t getUpgradeItemType(Item::ItemClass IClass, ItemType_t itemType, ItemType_t upgradeCount){ if (upgradeCount==0) return itemType; InfoClassManager* pInfoClass = g_pItemInfoManager->getInfoManager(IClass); Assert(pInfoClass!=NULL); // 酒捞袍 诀弊饭捞靛 沥焊啊 DB俊 甸绢埃促. 咯扁辑绰 林绢柳 雀荐父怒 促澜 ItemType栏肺 颗败埃促. ItemType_t newItemType = itemType; for ( int i=0; i<upgradeCount; i++ ) { ItemInfo* pItemInfo = pInfoClass->getItemInfo( newItemType ); Assert(pItemInfo!=NULL); newItemType = pItemInfo->getNextItemType(); } //cout << "ItemType Upgrade By Luck: " << itemType << " --[+" << upgradeCount << "]--> ";/* int maxItemType = pInfoClass->getInfoCount()-1; // 捞固 弥绊 酒捞袍牢 版快 if (itemType==maxItemType) { //cout << itemType << "(max)" << endl; return itemType; } int itemTypeGap = 1; // 酒捞袍 窜拌 鉴辑啊 2窜拌究 登绢 乐绰 酒捞袍 if (IClass==Item::ITEM_CLASS_COAT || IClass==Item::ITEM_CLASS_TROUSER || IClass==Item::ITEM_CLASS_VAMPIRE_COAT) { itemTypeGap = 2; } int newItemType = min(maxItemType, itemType + upgradeCount*itemTypeGap); // 2窜拌究 扒呈剁绢具且 版快 if (itemTypeGap==2 && (itemType & 0x01)!=(newItemType & 0x01)) newItemType -= 1; // 弥绊 酒捞袍捞 蜡聪农老 荐档 乐绰单.. 捞扒 哗林磊.. while (newItemType > itemType) { ItemInfo* pItemInfo = pInfoClass->getItemInfo( newItemType ); Assert(pItemInfo!=NULL); // 蜡聪农扼搁.. 茄 窜拌究 撤苗霖促. if (pItemInfo->isUnique()) newItemType-=itemTypeGap; else break; } //cout << newItemType << endl;*/ return newItemType;}ItemType_t getDowngradeItemType(Item::ItemClass IClass, ItemType_t itemType){ InfoClassManager* pInfoClass = g_pItemInfoManager->getInfoManager(IClass); Assert(pInfoClass!=NULL); for ( int i=0; i<pInfoClass->getInfoCount(); ++i ) { ItemInfo* pItemInfo = pInfoClass->getItemInfo( i ); Assert(pItemInfo!=NULL); if ( pItemInfo->getNextItemType() == itemType ) return i; } return itemType;}/*//////////////////////////////////////////////////////////////////////////////// 农府胶付胶 飘府 捞亥飘侩//////////////////////////////////////////////////////////////////////////////// 飘府 炼阿阑 八祸TPOINT checkEventTree( PlayerCreature* pPC, CoordInven_t iX, CoordInven_t iY ){ __BEGIN_TRY Assert( pPC != NULL ); TPOINT pt; pt.x = -1; pt.y = -1; Inventory* pInventory = pPC->getInventory(); Item* pCurItem = pInventory->getItem( iX, iY ); if ( pCurItem == NULL ) return pt; ItemType_t itemType = pCurItem->getItemType(); CoordInven_t startX = iX - itemType % 3; CoordInven_t startY = iY - itemType / 3; if ( pInventory->getWidth() - 3 < startX ) return pt; if ( pInventory->getHeight() - 4 < startY ) return pt; CoordInven_t curIX = 0, curIY = 0; ItemType_t compType = 0; // 飘府 炼阿捞 力措肺 嘎苗廉 乐绰瘤 犬牢茄促. for ( curIY = startY; curIY < startY + 4; curIY++ ) { for ( curIX = startX; curIX < startX + 3; curIX++ ) { pCurItem = pInventory->getItem( curIX, curIY ); if ( pCurItem == NULL ) return pt; if ( pCurItem->getItemClass() != Item::ITEM_CLASS_EVENT_TREE || pCurItem->getItemType() != compType ) return pt; compType++; } } pt.x = startX; pt.y = startY; return pt; __END_CATCH}// 绊措巩清TPOINT checkEventDocument( PlayerCreature* pPC, CoordInven_t iX, CoordInven_t iY ){ __BEGIN_TRY Assert( pPC != NULL ); TPOINT pt; pt.x = -1; pt.y = -1; Inventory* pInventory = pPC->getInventory(); Item* pCurItem = pInventory->getItem( iX, iY ); if ( pCurItem == NULL ) return pt; ItemType_t itemType = pCurItem->getItemType(); // 绊措巩清 炼阿篮 13何磐 矫累茄促 itemType = itemType - 13; CoordInven_t startX = iX - itemType % 3; CoordInven_t startY = iY - itemType / 3; if ( pInventory->getWidth() - 3 < startX ) return pt; if ( pInventory->getHeight() - 4 < startY ) return pt; CoordInven_t curIX = 0, curIY = 0; // 绊措巩清 炼阿篮 13何磐 矫累茄促 ItemType_t compType = 13; // 绊措 公清 炼阿捞 力措肺 嘎苗廉 乐绰瘤 犬牢茄促. for ( curIY = startY; curIY < startY + 4; curIY++ ) { for ( curIX = startX; curIX < startX + 3; curIX++ ) { pCurItem = pInventory->getItem( curIX, curIY ); if ( pCurItem == NULL ) return pt; if ( pCurItem->getItemClass() != Item::ITEM_CLASS_EVENT_TREE || pCurItem->getItemType() != compType ) return pt; compType++; } } pt.x = startX; pt.y = startY; return pt; __END_CATCH}// 牢屈 -_-;; 捞芭 老馆拳 陛规 矫懦 巴 鞍篮单 ;; 牢磊父 窍唱 歹 罐档废 窍搁 -_-;// 淬俊 涅胶飘 锭绰 老馆拳 矫虐档废 窍磊. ぱ.ぱaTPOINT checkEventDoll( PlayerCreature* pPC, CoordInven_t iX, CoordInven_t iY ){ __BEGIN_TRY Assert( pPC != NULL ); TPOINT pt; pt.x = -1; pt.y = -1; Inventory* pInventory = pPC->getInventory(); Item* pCurItem = pInventory->getItem( iX, iY ); if ( pCurItem == NULL ) return pt; ItemType_t itemType = pCurItem->getItemType(); // 牢屈 炼阿篮 29何磐 矫累茄促 itemType = itemType - 29; CoordInven_t startX = iX - itemType % 3; CoordInven_t startY = iY - itemType / 3; if ( pInventory->getWidth() - 3 < startX ) return pt; if ( pInventory->getHeight() - 4 < startY ) return pt; CoordInven_t curIX = 0, curIY = 0; // 牢屈 炼阿篮 29何磐 矫累茄促 ItemType_t compType = 29; // 绊措 公清 炼阿捞 力措肺 嘎苗廉 乐绰瘤 犬牢茄促. for ( curIY = startY; curIY < startY + 4; curIY++ ) { for ( curIX = startX; curIX < startX + 3; curIX++ ) { pCurItem = pInventory->getItem( curIX, curIY ); if ( pCurItem == NULL ) return pt; if ( pCurItem->getItemClass() != Item::ITEM_CLASS_EVENT_TREE || pCurItem->getItemType() != compType ) return pt; compType++; } } pt.x = startX; pt.y = startY; return pt; __END_CATCH}*/// 老馆拳 矫挪 芭 checkEventTree 尔 checkEventDocument 尔 checkEventDoll 篮 瘤快磊TPOINT checkEventPuzzle( PlayerCreature* pPC, CoordInven_t iX, CoordInven_t iY, int start){
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -