📄 ousters.cpp
字号:
Item* pItem = m_pExtraInventorySlot->getItem(); if (pItem != NULL) { // Item::ItemClass IClass = pItem->getItemClass(); ExtraSlotInfo* pExtraSlotInfo = new ExtraSlotInfo(); pItem->makePCItemInfo( *pExtraSlotInfo );/* pExtraSlotInfo->setObjectID(pItem->getObjectID()); pExtraSlotInfo->setItemClass(pItem->getItemClass()); pExtraSlotInfo->setItemType(pItem->getItemType()); pExtraSlotInfo->setOptionType(pItem->getOptionTypeList()); pExtraSlotInfo->setDurability(pItem->getDurability()); pExtraSlotInfo->setSilver(pItem->getSilver()); pExtraSlotInfo->setSilver(pItem->getEnchantLevel()); pExtraSlotInfo->setItemNum(pItem->getNum()); // 鞠胶龟靛扼搁 Sub 酒捞袍狼 眠啊 沥焊啊 鞘夸窍促. if (IClass == Item::ITEM_CLASS_OUSTERS_ARMSBAND) { OustersArmsband* pOustersArmsband = dynamic_cast<OustersArmsband*>(pItem); Inventory* pOustersArmsbandInventory = ((OustersArmsband*)pItem)->getInventory(); BYTE SubItemCount = 0; // 器南狼 箭磊父怒 酒捞袍狼 沥焊甫 佬绢 甸牢促. for (int i = 0; i < pOustersArmsband->getPocketCount(); i++) { Item* pOustersArmsbandItem = pOustersArmsbandInventory->getItem(i, 0); if (pOustersArmsbandItem != NULL) { SubItemInfo* pSubItemInfo = new SubItemInfo(); pSubItemInfo->setObjectID(pOustersArmsbandItem->getObjectID()); pSubItemInfo->setItemClass(pOustersArmsbandItem->getItemClass()); pSubItemInfo->setItemType(pOustersArmsbandItem->getItemType()); pSubItemInfo->setItemNum(pOustersArmsbandItem->getNum()); pSubItemInfo->setSlotID(i); pExtraSlotInfo->addListElement(pSubItemInfo); SubItemCount++; } } pExtraSlotInfo->setListNum(SubItemCount); } // 惑狼 窍狼 Main Color 瘤陛篮 弊成 0 栏肺 悸泼 秦敌促. pExtraSlotInfo->setMainColor(0);*/ pExtraInfo->addListElement(pExtraSlotInfo); ItemCount++; } pExtraInfo->setListNum(ItemCount); return pExtraInfo; __END_DEBUG __END_CATCH}//----------------------------------------------------------------------//// get Gear Info////----------------------------------------------------------------------GearInfo* Ousters::getGearInfo() const throw(){ __BEGIN_TRY __BEGIN_DEBUG int ItemCount = 0; GearInfo* pGearInfo = new GearInfo(); for (int i = 0; i < OUSTERS_WEAR_MAX; i++) { Item* pItem = m_pWearItem[i]; if (pItem != NULL) { //Item::ItemClass IClass = pItem->getItemClass(); GearSlotInfo* pGearSlotInfo = new GearSlotInfo(); pItem->makePCItemInfo( *pGearSlotInfo ); pGearSlotInfo->setSlotID(i);/* pGearSlotInfo->setObjectID(pItem->getObjectID()); pGearSlotInfo->setItemClass(pItem->getItemClass()); pGearSlotInfo->setItemType(pItem->getItemType()); pGearSlotInfo->setOptionType(pItem->getOptionTypeList()); pGearSlotInfo->setDurability(pItem->getDurability()); pGearSlotInfo->setSilver(pItem->getSilver()); pGearSlotInfo->setEnchantLevel(pItem->getEnchantLevel()); // 鞠胶龟靛扼搁 Sub 酒捞袍狼 眠啊 沥焊啊 鞘夸窍促. if (pItem->getItemClass() == Item::ITEM_CLASS_OUSTERS_ARMSBAND) { // 酒捞袍 牢器甫 罐酒柯促. ItemInfo* pItemInfo = g_pItemInfoManager->getItemInfo(pItem->getItemClass(), pItem->getItemType()); // 器南狼 箭磊甫 罐酒柯促. BYTE PocketNum = ((OustersArmsbandInfo*)pItemInfo)->getPocketCount(); // 骇飘狼 牢亥配府甫 罐酒柯促. Inventory* pOustersArmsbandInventory = ((OustersArmsband*)pItem)->getInventory(); BYTE SubItemCount = 0; // 器南狼 箭磊父怒 酒捞袍狼 沥焊甫 佬绢 甸牢促. for (int i = 0; i < PocketNum ; i++) { Item* pOustersArmsbandItem = pOustersArmsbandInventory->getItem(i, 0); if (pOustersArmsbandItem != NULL) { SubItemInfo* pSubItemInfo = new SubItemInfo(); pSubItemInfo->setObjectID(pOustersArmsbandItem->getObjectID()); pSubItemInfo->setItemClass(pOustersArmsbandItem->getItemClass()); pSubItemInfo->setItemType(pOustersArmsbandItem->getItemType()); pSubItemInfo->setItemNum(pOustersArmsbandItem->getNum()); pSubItemInfo->setSlotID(i); pGearSlotInfo->addListElement(pSubItemInfo); SubItemCount++; } } pGearSlotInfo->setListNum(SubItemCount); } pGearSlotInfo->setSlotID(i); // 惑狼 窍狼 Main Color 瘤陛篮 弊成 0 栏肺 悸泼 秦敌促. pGearSlotInfo->setMainColor(0);*/ pGearInfo->addListElement(pGearSlotInfo); ItemCount++; } } pGearInfo->setListNum(ItemCount); return pGearInfo; __END_DEBUG __END_CATCH}//////////////////////////////////////////////////////////////////////////////// get Inventory Info//////////////////////////////////////////////////////////////////////////////InventoryInfo* Ousters::getInventoryInfo() const throw(){ __BEGIN_TRY __BEGIN_DEBUG BYTE ItemCount = 0; InventoryInfo* pInventoryInfo = new InventoryInfo(); list<Item*> ItemList; VolumeHeight_t Height = m_pInventory->getHeight(); VolumeWidth_t Width = m_pInventory->getWidth(); for (int j = 0; j < Height; j++) { for (int i = 0 ; i < Width ; i ++) { if (m_pInventory->hasItem(i, j)) { Item* pItem = m_pInventory->getItem(i , j); VolumeWidth_t ItemWidth = pItem->getVolumeWidth(); //Item::ItemClass IClass = pItem->getItemClass(); list<Item*>::iterator itr = find(ItemList.begin() , ItemList.end() , pItem); if (itr == ItemList.end()) { ItemList.push_back(pItem); // InventorySlotInfo甫 备己 InventorySlotInfo* pInventorySlotInfo = new InventorySlotInfo(); pItem->makePCItemInfo( *pInventorySlotInfo ); pInventorySlotInfo->setInvenX(i); pInventorySlotInfo->setInvenY(j);/* pInventorySlotInfo->setObjectID(pItem->getObjectID()); pInventorySlotInfo->setItemClass(pItem->getItemClass()); pInventorySlotInfo->setItemType(pItem->getItemType()); pInventorySlotInfo->setOptionType(pItem->getOptionTypeList()); pInventorySlotInfo->setSilver(pItem->getSilver()); pInventorySlotInfo->setDurability(pItem->getDurability()); pInventorySlotInfo->setEnchantLevel(pItem->getEnchantLevel()); pInventorySlotInfo->setInvenX(i); pInventorySlotInfo->setInvenY(j); pInventorySlotInfo->setItemNum(pItem->getNum()); // 鞠胶龟靛扼搁 Sub 酒捞袍狼 眠啊 沥焊啊 鞘夸窍促. if (IClass == Item::ITEM_CLASS_OUSTERS_ARMSBAND) { OustersArmsband* pOustersArmsband = dynamic_cast<OustersArmsband*>(pItem); Inventory* pOustersArmsbandInventory = ((OustersArmsband*)pItem)->getInventory(); BYTE SubItemCount = 0; // 器南狼 箭磊父怒 酒捞袍狼 沥焊甫 佬绢 甸牢促. for (int i = 0; i < pOustersArmsband->getPocketCount() ; i++) { Item* pOustersArmsbandItem = pOustersArmsbandInventory->getItem(i, 0); if (pOustersArmsbandItem != NULL) { SubItemInfo* pSubItemInfo = new SubItemInfo(); pSubItemInfo->setObjectID(pOustersArmsbandItem->getObjectID()); pSubItemInfo->setItemClass(pOustersArmsbandItem->getItemClass()); pSubItemInfo->setItemType(pOustersArmsbandItem->getItemType()); pSubItemInfo->setItemNum(pOustersArmsbandItem->getNum()); pSubItemInfo->setSlotID(i); pInventorySlotInfo->addListElement(pSubItemInfo); SubItemCount++; } } pInventorySlotInfo->setListNum(SubItemCount); } pInventorySlotInfo->setMainColor(0);*/ pInventoryInfo->addListElement(pInventorySlotInfo); ItemCount++; i = i + ItemWidth - 1; } } } } pInventoryInfo->setListNum(ItemCount); return pInventoryInfo; __END_DEBUG __END_CATCH}//----------------------------------------------------------------------// getSkillInfo//----------------------------------------------------------------------void Ousters::sendOustersSkillInfo() throw(){ __BEGIN_TRY __BEGIN_DEBUG OustersSkillInfo* pOustersSkillInfo = new OustersSkillInfo(); BYTE SkillCount = 0; // 泅犁 矫埃, 巢篮 某胶泼 鸥烙阑 拌魂窍扁 困秦 Timeval currentTime; getCurrentTime( currentTime ); hash_map<SkillType_t, OustersSkillSlot*>::const_iterator itr = m_SkillSlot.begin(); for (; itr != m_SkillSlot.end(); itr++) { OustersSkillSlot* pOustersSkillSlot = itr->second; Assert(pOustersSkillSlot != NULL); // AttackMelee 殿狼 扁夯 傍拜 扁贱 沥焊绰 焊郴林瘤 臼酒具 茄促. if (pOustersSkillSlot->getSkillType() >= SKILL_DOUBLE_IMPACT) { SubOustersSkillInfo* pSubOustersSkillInfo = new SubOustersSkillInfo(); pSubOustersSkillInfo->setSkillType(pOustersSkillSlot->getSkillType()); pSubOustersSkillInfo->setExpLevel(pOustersSkillSlot->getExpLevel()); pSubOustersSkillInfo->setSkillTurn(pOustersSkillSlot->getInterval()); pSubOustersSkillInfo->setCastingTime(pOustersSkillSlot->getRemainTurn( currentTime ) ); pOustersSkillInfo->addListElement(pSubOustersSkillInfo); SkillCount++; } } GCSkillInfo gcSkillInfo; gcSkillInfo.setPCType(PC_OUSTERS); SkillType_t LearnSkillType = g_pSkillInfoManager->getSkillTypeByLevel(SKILL_DOMAIN_OUSTERS , m_Level); // 泅犁 饭骇俊辑 硅匡 荐 乐绰 扁贱捞 乐绰瘤 夯促. if (LearnSkillType != 0) { // 硅匡 荐 乐绰 扁贱捞 乐绊 硅快瘤 臼篮 惑怕扼搁 硅快扼绊 舅妨霖促. if (hasSkill(LearnSkillType) == NULL) { pOustersSkillInfo->setLearnNewSkill(true); } } pOustersSkillInfo->setListNum(SkillCount); gcSkillInfo.addListElement(pOustersSkillInfo); m_pPlayer->sendPacket(&gcSkillInfo); __END_DEBUG __END_CATCH}////////////////////////////////////////////////////////////////////////////////////// 扁鸥 窃荐////////////////////////////////////////////////////////////////////////////////////void Ousters::setGold(Gold_t gold) throw(){ __BEGIN_TRY // MAX_MONEY 甫 逞绢啊绰 吧 阜绰促 // 2003.1.8 by bezz. m_Gold = min( (Gold_t)MAX_MONEY, gold ); __END_CATCH}void Ousters::setGoldEx(Gold_t gold) throw(){ __BEGIN_TRY setGold(gold); // by sigi. 2002.5.15 char pField[80]; sprintf(pField, "Gold=%ld", m_Gold); tinysave(pField); __END_CATCH}void Ousters::increaseGoldEx(Gold_t gold) throw(){ __BEGIN_TRY __BEGIN_DEBUG // MAX_MONEY 甫 逞绢啊绰 吧 阜绰促 // 2003.1.8 by bezz. if ( m_Gold + gold > MAX_MONEY ) gold = MAX_MONEY - m_Gold; setGold(m_Gold+gold); Statement* pStmt = NULL; BEGIN_DB { pStmt = g_pDatabaseManager->getConnection("DARKEDEN")->createStatement(); pStmt->executeQuery("UPDATE Ousters SET Gold=Gold+%u WHERE NAME='%s'", gold, m_Name.c_str()); SAFE_DELETE(pStmt); } END_DB(pStmt) __END_DEBUG __END_CATCH}void Ousters::decreaseGoldEx(Gold_t gold) throw(){ __BEGIN_TRY __BEGIN_DEBUG // 0 固父捞 登绰 吧 阜绰促. 0 固父捞 登搁 underflow 登辑 抄府啊 抄促. // 2003.1.8 by bezz. if ( m_Gold < gold ) gold = m_Gold; setGold(m_Gold-gold); Statement* pStmt = NULL; BEGIN_DB { pStmt = g_pDatabaseManager->getConnection("DARKEDEN")->createStatement(); pStmt->executeQuery("UPDATE Ousters SET Gold=Gold-%u WHERE NAME='%s'", gold, m_Name.c_str()); SAFE_DELETE(pStmt); } END_DB(pStmt) __END_DEBUG __END_CATCH}void Ousters::saveSilverDamage(Silver_t damage) throw(){ __BEGIN_TRY setSilverDamage(damage); // by sigi. 2002.5.15 char pField[80]; sprintf(pField, "SilverDamage=%d", m_SilverDamage); tinysave(pField); __END_CATCH}bool Ousters::checkGoldIntegrity(){ __BEGIN_TRY Statement* pStmt = NULL; bool ret = false; BEGIN_DB { pStmt = g_pDatabaseManager->getConnection("DARKEDEN")->createStatement(); Result* pResult = pStmt->executeQuery("SELECT Gold FROM Ousters WHERE NAME='%s'", m_Name.c_str()); if ( pResult->next() ) { ret = pResult->getInt(1) == m_Gold; } SAFE_DELETE(pStmt); } END_DB(pStmt) return ret; __END_CATCH}bool Ousters::checkStashGoldIntegrity(){ __BEGIN_TRY Statement* pStmt = NULL; bool ret = false; BEGIN_DB { pStmt = g_pDatabaseManager->getConnection("DARKEDEN")->createStatement(); Result* pResult = pStmt->executeQuery("SELECT StashGold FROM Ousters WHERE NAME='%s'", m_Name.c_str()); if ( pResult->next() ) { ret = pResult->getInt(1) == m_StashGold; } SAFE_DELETE(pStmt); } END_DB(pStmt) return ret; __END_CATCH}///////////////////////
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -