📄 ousters.cpp
字号:
// 牢亥配府狼 酒捞袍甸狼 OID甫 殿废罐绰促. registerInitInventory(OR); // Goods Inventory狼 酒捞袍甸狼 OID甫 殿废罐绰促. registerGoodsInventory(OR); // 厘馒窍绊 乐绰 酒捞袍甸狼 OID甫 殿废罐绰促. for (int i = 0; i < OUSTERS_WEAR_MAX; i++) { Item* pItem = m_pWearItem[i]; if (pItem != NULL) { // ItemTrace 甫 巢辨 巴牢瘤 搬沥 pItem->setTraceItem( bTraceLog( pItem ) ); bool bCheck = true; // 剧颊 公扁老 版快, WEAR_LEFTHAND 俊辑 殿废沁栏骨肺, // 肚 殿废且 鞘夸绰 绝促. if (i == WEAR_RIGHTHAND && isTwohandWeapon(pItem)) bCheck = false; if (bCheck) registerItem(pItem, OR); } } // 付快胶俊 甸绊 乐绰 酒捞袍狼 OID甫 殿废 罐绰促. Item* pSlotItem = m_pExtraInventorySlot->getItem(); if (pSlotItem != NULL) { // ItemTrace 甫 巢辨 巴牢瘤 搬沥 pSlotItem->setTraceItem( bTraceLog( pSlotItem ) ); registerItem(pSlotItem, OR); } m_Garbage.registerObject(OR); __LEAVE_CRITICAL_SECTION(OR) m_OustersInfo.setObjectID(m_ObjectID); __END_CATCH}// 矫埃力茄 酒捞袍阑 眉农茄促.// 葛电 酒捞袍捞 捞固 register 登绢乐绢具 茄促.void Ousters::checkItemTimeLimit() throw (Error){ __BEGIN_TRY // 牢亥配府俊辑 茫绰促. { list<Item*> ItemList; int height = m_pInventory->getHeight(); int width = m_pInventory->getWidth(); for (int j=0; j<height; j++) { for (int i=0; i<width; i++) { Item* pItem = m_pInventory->getItem(i, j); if (pItem != NULL) { // 眉农等 酒捞袍狼 府胶飘俊辑 泅犁 酒捞袍阑 茫绰促. list<Item*>::iterator itr = find(ItemList.begin(), ItemList.end(), pItem); if (itr == ItemList.end()) { i += pItem->getVolumeWidth() - 1; if ( wasteIfTimeLimitExpired( pItem ) ) { m_pInventory->deleteItem( pItem->getObjectID() ); SAFE_DELETE( pItem ); } else { // 府胶飘俊 酒捞袍捞 绝栏搁 // 鞍篮 酒捞袍阑 滴锅 眉农窍瘤 臼扁 困秦辑 // 府胶飘俊促啊 酒捞袍阑 笼绢持绰促. ItemList.push_back(pItem); } } } } } } // 厘馒窍绊 乐绰 巴 吝俊 茫绰促. { for (int i = 0; i < OUSTERS_WEAR_MAX; i++) { Item* pItem = m_pWearItem[i]; if (pItem != NULL) { bool bCheck = true; // 剧颊 公扁老 版快, WEAR_LEFTHAND 俊辑 殿废沁栏骨肺, // 肚 殿废且 鞘夸绰 绝促. if (i == WEAR_RIGHTHAND && isTwohandWeapon(pItem)) bCheck = false; if (bCheck) { if ( wasteIfTimeLimitExpired( pItem ) ) { deleteWearItem( (WearPart)i ); if ( i == WEAR_LEFTHAND && isTwohandWeapon(pItem) ) deleteWearItem( WEAR_RIGHTHAND ); SAFE_DELETE( pItem ); } } } } } // 付快胶俊 甸绊 乐绰 酒捞袍阑 眉农茄促. { Item* pSlotItem = m_pExtraInventorySlot->getItem(); if (pSlotItem != NULL && wasteIfTimeLimitExpired( pSlotItem )) { deleteItemFromExtraInventorySlot(); SAFE_DELETE( pSlotItem ); } } __END_CATCH}///////////////////////////////////////////// Ousters客 Slayer荤捞狼 函脚阑 困秦辑// 酒袍 肺爹篮 蝶肺 贸府茄促.//void Ousters::loadItem( bool checkTimeLimit ) throw (InvalidProtocolException, Error){ __BEGIN_TRY PlayerCreature::loadItem(); // 牢亥配府甫 积己茄促. SAFE_DELETE(m_pInventory); m_pInventory = new Inventory(10, 6); m_pInventory->setOwner(getName()); // 酒捞袍阑 肺靛茄促. g_pItemLoaderManager->load(this); PlayerCreature::loadGoods(); // 肺靛茄 酒捞袍甸阑 殿废矫虐绊 registerInitObject(); // 贸澜 立加茄 荤恩老 版快 檬焊磊侩 酒捞袍技飘甫 老窜 霖 促澜.. if( !m_pFlagSet->isOn( FLAGSET_RECEIVE_NEWBIE_ITEM_AUTO ) ) { addNewbieItemToInventory( this ); addNewbieGoldToInventory( this ); addNewbieItemToGear( this ); // 林菌阑 版快 玲促绰 敲贰弊甫 波霖促. m_pFlagSet->turnOn( FLAGSET_RECEIVE_NEWBIE_ITEM_AUTO ); m_pFlagSet->save( getName() ); } if ( checkTimeLimit ) { checkItemTimeLimit(); } // 涝绊 乐绰 渴俊 蝶扼 瓷仿摹甫 拌魂秦霖促. initAllStat(); __END_CATCH}//----------------------------------------------------------------------//----------------------------------------------------------------------bool Ousters::load () throw (InvalidProtocolException, Error){ __BEGIN_TRY Statement* pStmt = NULL; Result* pResult = NULL; BEGIN_DB { pStmt = g_pDatabaseManager->getConnection("DARKEDEN")->createStatement(); pResult = pStmt->executeQuery( "SELECT Name, Sex, STR, DEX, INTE, HP, CurrentHP, MP, CurrentMP, Fame, GoalExp, Level, Bonus, SkillBonus, Gold, GuildID, ZoneID, XCoord, YCoord, Sight, Alignment, StashGold, StashNum, Competence, CompetenceShape, ResurrectZone, SilverDamage, Rank, RankGoalExp, HairColor FROM Ousters WHERE Name = '%s' AND Active = 'ACTIVE'", m_Name.c_str() ); if (pResult->getRowCount() == 0) { //throw Error("Critical Error : data intergrity broken. (肺弊牢 辑滚俊辑 霸烙 辑滚肺 逞绢坷绰 悼救俊 某腐磐啊 昏力登菌嚼聪促.)"); SAFE_DELETE(pStmt); return false; } pResult->next(); uint i = 0; setName(pResult->getString(++i)); setSex(pResult->getString(++i)); m_STR[ATTR_BASIC] = pResult->getInt(++i); m_STR[ATTR_CURRENT] = m_STR[ATTR_BASIC]; m_STR[ATTR_MAX] = m_STR[ATTR_BASIC]; m_DEX[ATTR_BASIC] = pResult->getInt(++i); m_DEX[ATTR_CURRENT] = m_DEX[ATTR_BASIC]; m_DEX[ATTR_MAX] = m_DEX[ATTR_BASIC]; m_INT[ATTR_BASIC] = pResult->getInt(++i); m_INT[ATTR_CURRENT] = m_INT[ATTR_BASIC]; m_INT[ATTR_MAX] = m_INT[ATTR_BASIC]; setHP(pResult->getInt(++i) , ATTR_MAX); setHP(getHP(ATTR_MAX) , ATTR_BASIC); setHP(pResult->getInt(++i) , ATTR_CURRENT); setMP(pResult->getInt(++i) , ATTR_MAX); setMP(getMP(ATTR_MAX) , ATTR_BASIC); setMP(pResult->getInt(++i) , ATTR_CURRENT); setFame(pResult->getInt(++i));// setExp(pResult->getInt(++i)); setGoalExp(pResult->getInt(++i));// setExpOffset(pResult->getInt(++i)); setLevel(pResult->getInt(++i)); setBonus(pResult->getInt(++i)); setSkillBonus(pResult->getInt(++i)); setGold(pResult->getInt(++i)); setGuildID(pResult->getInt(++i)); ZoneID_t zoneID = pResult->getInt(++i); setX(pResult->getInt(++i)); setY(pResult->getInt(++i)); setSight (pResult->getInt(++i)); setAlignment(pResult->getInt(++i)); setStashGold(pResult->getInt(++i)); setStashNum(pResult->getBYTE(++i)); m_Competence = pResult->getBYTE(++i); if ( m_Competence >= 4 ) m_Competence = 3; m_CompetenceShape = pResult->getBYTE(++i); setResurrectZoneID(pResult->getInt(++i)); setSilverDamage(pResult->getInt(++i)); Rank_t CurRank = pResult->getInt(++i); RankExp_t RankGoalExp = pResult->getInt(++i); m_pRank = new Rank( CurRank, RankGoalExp, RankExpTable::s_RankExpTables[RANK_TYPE_OUSTERS] );// setRank( pResult->getInt(++i) );// setRankExp( pResult->getInt(++i) );// setRankGoalExp( pResult->getInt(++i) ); setHairColor(pResult->getInt(++i)); // maxHP甫 促矫 拌魂秦辑 汲沥秦霖促. // 2002.7.15 by sigi // 傍侥 官差搁 AbilityBalance.cpp狼 computeHP档 荐沥秦具茄促. int maxHP = m_STR[ATTR_CURRENT]*2 + m_INT[ATTR_CURRENT] + m_DEX[ATTR_CURRENT] + m_Level; maxHP = min((int)maxHP, OUSTERS_MAX_HP); setHP( maxHP, ATTR_MAX ); setZoneID( zoneID ); SAFE_DELETE(pStmt); } END_DB(pStmt) //---------------------------------------------------------------------- // Ousters Outlook Information 阑 备己茄促. //---------------------------------------------------------------------- // 酒快胶磐胶绰 肺爹且锭 ObjectID甫 技泼 窍档废 茄促. m_OustersInfo.setObjectID(m_ObjectID); m_OustersInfo.setName(m_Name); m_OustersInfo.setSex(m_Sex); m_OustersInfo.setHairColor(m_HairColor); m_OustersInfo.setCompetence(m_CompetenceShape); //---------------------------------------------------------------------- // 胶懦阑 肺爹茄促. //---------------------------------------------------------------------- BEGIN_DB { pStmt = g_pDatabaseManager->getConnection("DARKEDEN")->createStatement(); pResult = pStmt->executeQuery("SELECT SkillType, SkillLevel, Delay, CastingTime, NextTime FROM OustersSkillSave WHERE OwnerID = '%s'", m_Name.c_str()); while(pResult->next()) { int i = 0; SkillType_t SkillType = pResult->getInt(++i); if (hasSkill(SkillType) == NULL) { OustersSkillSlot* pOustersSkillSlot = new OustersSkillSlot(); pOustersSkillSlot->setName(m_Name); pOustersSkillSlot->setSkillType(SkillType); pOustersSkillSlot->setExpLevel(pResult->getInt(++i)); pOustersSkillSlot->setInterval (pResult->getInt(++i)); pOustersSkillSlot->setCastingTime (pResult->getInt(++i)); pOustersSkillSlot->setRunTime(); addSkill(pOustersSkillSlot); } } SAFE_DELETE(pStmt); } END_DB(pStmt) //---------------------------------------------------------------------- // Rank Bonus 甫 肺爹茄促. //---------------------------------------------------------------------- loadRankBonus(); //---------------------------------------------------------------------- // 捞棋飘甫 肺爹茄促. //---------------------------------------------------------------------- g_pEffectLoaderManager->load(this); //---------------------------------------------------------------------- // GrandMaster牢 版快绰 Effect甫 嘿咯霖促. //---------------------------------------------------------------------- // by sigi. 2002.11.8 if (m_Level>=100 && SystemAvailabilitiesManager::getInstance()->isAvailable( SystemAvailabilitiesManager::SYSTEM_GRAND_MASTER_EFFECT ) ) { if (!isFlag(Effect::EFFECT_CLASS_GRAND_MASTER_OUSTERS)) { EffectGrandMasterOusters* pEffect = new EffectGrandMasterOusters(this); pEffect->setDeadline(999999); getEffectManager()->addEffect( pEffect ); setFlag(Effect::EFFECT_CLASS_GRAND_MASTER_OUSTERS); } } //---------------------------------------------------------------------- // 敲贰弊 悸阑 肺靛茄促. //---------------------------------------------------------------------- m_pFlagSet->load(getName()); //---------------------------------------------------------------------- // Ousters Outlook Information 阑 檬扁拳茄促. //---------------------------------------------------------------------- m_OustersInfo.setCoatType(OUSTERS_COAT_BASIC); m_OustersInfo.setArmType(OUSTERS_ARM_GAUNTLET); m_OustersInfo.setSylphType(OUSTERS_SYLPH_NONE); m_OustersInfo.setHairColor(m_HairColor); m_OustersInfo.setCoatColor( 377 ); // 肋给等 版氰摹甫 犁炼沥 秦霖促./* OustersEXPInfo* pOustersEXPInfo = g_pOustersEXPInfoManager->getOustersEXPInfo(m_Level); if ( (pOustersEXPInfo->getAccumExp() != m_Exp + m_GoalExp) && m_Level > 1 && m_Level < OUSTERS_MAX_LEVEL ) { // 泅犁 穿利 版氰摹 = 泅犁 饭骇狼 醚 版氰摹 - 格钎 版氰摹 m_Exp = pOustersEXPInfo->getAccumExp() - m_GoalExp; char pField[80]; sprintf(pField, "Exp=%lu", m_Exp); tinysave(pField); }*/ // rank啊 0捞搁 檬扁蔼捞 汲沥登瘤 臼疽促绰 狼固捞促. by sigi. 2002.9.13 if (getRank()==0) { saveInitialRank(); } // 肋给等 拌鞭阑 犁炼沥 秦霖促./* RankEXPInfo* pRankEXPInfo = g_pRankEXPInfoManager[RANK_TYPE_OUSTERS]->getRankEXPInfo(m_Rank); if ((pRankEXPInfo->getAccumExp() != m_RankExp + m_RankGoalExp) && m_Rank > 1 && m_Rank < OUSTERS_MAX_RANK) { m_RankExp = pRankEXPInfo->getAccumExp() - m_RankGoalExp; char pField[80]; sprintf(pField, "RankExp=%lu", m_RankExp); tinysave(pField); }*/ initAllStat(); // 傈里 曼啊 Flag 眉农 if ( RaceWarLimiter::isInPCList( this ) ) { setFlag( Effect::EFFECT_CLASS_RACE_WAR_JOIN_TICKET ); } if (m_pZone->isHolyLand() && g_pWarSystem->hasActiveRaceWar() && !isFlag( Effect::EFFECT_CLASS_RACE_WAR_JOIN_TICKET )) { ZONE_COORD ResurrectCoord; g_pResurrectLocationManager->getPosition( this, ResurrectCoord ); setZoneID( ResurrectCoord.id ); setX( ResurrectCoord.x ); setY( ResurrectCoord.y ); } return true; __END_CATCH}//----------------------------------------------------------------------//----------------------------------------------------------------------void Ousters::save () const throw (Error){ __BEGIN_TRY __ENTER_CRITICAL_SECTION(m_Mutex) Statement* pStmt; //-------------------------------------------------------------------------------- // 酒快胶磐胶 沥焊甫 历厘茄促. //-------------------------------------------------------------------------------- BEGIN_DB { StringStream sql; sql << "UPDATE Ousters SET" << " CurrentHP = " << (int)m_HP[ATTR_CURRENT] << ", HP = " << (int)m_HP[ATTR_MAX] << ", CurrentMP = " << (int)m_MP[ATTR_CURRENT] << ", MP = " << (int)m_MP[ATTR_MAX] << ", ZoneID = " << (int)getZoneID() << ", XCoord = " << (int)m_X << ", YCoord = " << (int)m_Y << " WHERE Name = '" << m_Name << "'"; pStmt = g_pDatabaseManager->getConnection("DARKEDEN")->createStatement(); pStmt->executeQuery(sql.toString()); SAFE_DELETE(pStmt); } END_DB(pStmt) //-------------------------------------------------- // 捞棋飘甫 技捞宏 茄促. //-------------------------------------------------- m_pEffectManager->save(m_Name);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -