?? zone.cpp.backup
字號:
//cout << pCreature->toString() << endl; // PC撈擱輯, creatureList俊 家加登瘤檔 臼欄擱輯, (x,y)甫 杭 薦 樂綽 版快 if (pCreature->isPC()) { // Revealer 撈棋飄啊 樂促擱 撈棋飄甫 啊廉柯促.// EffectRevealer* pEffectRevealer = NULL;// if ( pCreature->isFlag( Effect::EFFECT_CLASS_REVEALER ) )// {// pEffectRevealer = dynamic_cast<EffectRevealer*>(pCreature->findEffect(Effect::EFFECT_CLASS_REVEALER));// Assert( pEffectRevealer != NULL );// } if (pCreature->getVisionState(cx,cy) >= IN_SIGHT && (pCreature->isVampire() || (!isMonsterHide || pCreature->isFlag(Effect::EFFECT_CLASS_DETECT_HIDDEN))// || ( pEffectRevealer != NULL && pEffectRevealer->canSeeHide( pMonster ) ) ) && (!isMonsterInvisibility || pCreature->isFlag(Effect::EFFECT_CLASS_DETECT_INVISIBILITY))// || ( pEffectRevealer != NULL && pEffectRevealer->canSeeInvisibility( pMonster ) ) ) ) ) { pCreature->getPlayer()->sendPacket(pAddMonsterPacket); } } // if } // for }//if }//for }//for delete pAddMonsterPacket; } } else { throw Error("invalid creature type"); } } else { throw EmptyTileNotExistException("too many creature in this zone.. or too unlucky"); } __END_CATCH}//--------------------------------------------------------------------------------// 漂瀝 困摹俊 酒撈袍闌 凍絹哆赴促.// Zone ::addItem()// 7x7 康開闌 八葷秦輯 后沫撈 糧犁竅擱 凍絹哆赴促. 鞏力綽 犁薦絕綽 版快 后沫撈 // 糧犁竅瘤 臼闌 版快牢單.. 撈錠 抗寇甫 帶嚨欄肺結 弊 貿府甫 惑困俊霸 該扁擱// 瞪 淀...//--------------------------------------------------------------------------------TPOINT Zone::addItem(Item* pItem, ZoneCoord_t cx, ZoneCoord_t cy, bool bAllowCreature) throw(EmptyTileNotExistException, Error){ __BEGIN_TRY __BEGIN_DEBUG Item::ItemClass IClass = pItem->getItemClass(); TPOINT pt = findSuitablePositionForItem(this, cx, cy, bAllowCreature); // 初闌 困摹甫 茫酒辰 版快 if (pt.x != -1) { m_pTiles[pt.x][pt.y].addItem(pItem); addToItemList(pItem); if (IClass == Item::ITEM_CLASS_CORPSE) { ItemType_t itemType = pItem->getItemType(); Turn_t DelayTime = 0; if (itemType == SLAYER_CORPSE) { SlayerCorpse* pSlayerCorpse = dynamic_cast<SlayerCorpse*>(pItem); pSlayerCorpse->setXY(pt.x, pt.y); GCAddSlayerCorpse gcAddSlayerCorpse; makeGCAddSlayerCorpse(&gcAddSlayerCorpse, pSlayerCorpse); broadcastPacket(pt.x, pt.y, &gcAddSlayerCorpse); DelayTime = 6000; } else if (itemType == VAMPIRE_CORPSE) { VampireCorpse* pVampireCorpse = dynamic_cast<VampireCorpse*>(pItem); pVampireCorpse->setXY(pt.x, pt.y); GCAddVampireCorpse gcAddVampireCorpse; makeGCAddVampireCorpse(&gcAddVampireCorpse, pVampireCorpse); broadcastPacket(pt.x, pt.y, &gcAddVampireCorpse); DelayTime = 6000; } else if (itemType == NPC_CORPSE) { Assert(false); } else if (itemType == MONSTER_CORPSE) { MonsterCorpse* pMonsterCorpse = dynamic_cast<MonsterCorpse*>(pItem); GCAddMonsterCorpse gcAddMonsterCorpse; makeGCAddMonsterCorpse(&gcAddMonsterCorpse, pMonsterCorpse, pt.x, pt.y); broadcastPacket(pt.x, pt.y, &gcAddMonsterCorpse); DelayTime = 600; } else { Assert(false); } // 酒撈袍撈 甸絹啊樂瘤 臼籃 矯眉扼擱 掉飯撈 矯埃闌 臨牢促. Corpse* pCorpse = dynamic_cast<Corpse*>(pItem); if (pCorpse->getTreasureCount() == 0) { DelayTime = DelayTime/10; } // Relic牢 版快俊綽 矯埃狼 瘤楷俊 蝶扼 酒撈袍撈 葷扼瘤瘤 臼綽促. if (!pCorpse->getRelic()) { // 官躥俊 凍絹瘤綽 酒撈袍籃 老瀝 矯埃撈 瘤唱擱 葷扼瘤霸 等促. EffectDecayCorpse* pEffectDecayCorpse = new EffectDecayCorpse(this, pt.x, pt.y, (Corpse*)pItem, DelayTime); pEffectDecayCorpse->setNextTime(999999); m_ObjectRegistry.registerObject(pEffectDecayCorpse); addEffect(pEffectDecayCorpse); } else { cout << "Relic牢 版快俊綽 矯眉啊 葷扼瘤瘤 臼嚼聰促" << endl; } } else { GCDropItemToZone gcDropItemToZone; makeGCDropItemToZone(&gcDropItemToZone, pItem, pt.x, pt.y);// if ( !pItem->isFlag(Effect::EFFECT_CLASS_INSTALL) ) { broadcastPacket(pt.x, pt.y, &gcDropItemToZone);// } // 葛磐葷撈努籃 矯埃撈 瘤唱檔 葷扼瘤瘤 臼綽促. if (IClass == Item::ITEM_CLASS_MOTORCYCLE) { // transport牢 版快甫 措厚秦輯 眉農秦力秦具茄促. MotorcycleBox* pMotorcycleBox = g_pParkingCenter->getMotorcycleBox( pItem->getItemID() ); if (pMotorcycleBox!=NULL) { pMotorcycleBox->setTransport( false ); pMotorcycleBox->setX( pt.x ); pMotorcycleBox->setY( pt.y ); } } else { // 官躥俊 凍絹瘤綽 酒撈袍籃 老瀝 矯埃撈 瘤唱擱 葷扼瘤霸 等促. EffectDecayItem* pEffectDecayItem = new EffectDecayItem(this, pt.x, pt.y, (Item*)pItem, 6000); pEffectDecayItem->setNextTime(999999); m_ObjectRegistry.registerObject(pEffectDecayItem); addEffect(pEffectDecayItem); } } return pt; } else { //throw InvalidProtocolException("too many item in this zone.. or too unlucky"); //pItem->destroy(); //Delete pItem; TPOINT pt_error; pt_error.x = -1; pt_error.y = -1; return pt_error; } return pt; __END_DEBUG __END_CATCH}//--------------------------------------------------------------------------------//--------------------------------------------------------------------------------void Zone::addEffect(Effect* pEffect) throw(Error){ __BEGIN_TRY Assert(pEffect != NULL); m_pEffectManager->addEffect(pEffect); __END_CATCH}void Zone::deleteEffect(ObjectID_t id) throw(Error){ __BEGIN_TRY m_pEffectManager->deleteEffect(id); __END_CATCH}//--------------------------------------------------------------------------------//--------------------------------------------------------------------------------void Zone::addEffect_LOCKING(Effect* pEffect) throw(Error){ __BEGIN_TRY Assert(pEffect != NULL); __ENTER_CRITICAL_SECTION(m_MutexEffect) m_pLockedEffectManager->addEffect(pEffect); __LEAVE_CRITICAL_SECTION(m_MutexEffect) __END_CATCH}void Zone::deleteEffect_LOCKING(ObjectID_t id) throw(Error){ __BEGIN_TRY __ENTER_CRITICAL_SECTION(m_MutexEffect) m_pLockedEffectManager->deleteEffect(id); __LEAVE_CRITICAL_SECTION(m_MutexEffect) __END_CATCH}//--------------------------------------------------------------------------------// Delete PC from PC Manager (only do this)//--------------------------------------------------------------------------------void Zone::deletePC(Creature* pCreature) throw()//NoSuchElementException, Error){ __BEGIN_TRY Assert(pCreature != NULL); m_pPCManager->deleteCreature(pCreature->getObjectID()); __END_CATCH}//--------------------------------------------------------------------------------// Delete Queue PC//--------------------------------------------------------------------------------void Zone::deleteQueuePC(Creature* pCreature) throw(NoSuchElementException, Error){ __BEGIN_TRY __ENTER_CRITICAL_SECTION(m_Mutex) Assert(pCreature != NULL); list<Creature*>::iterator itr = find_if (m_PCListQueue.begin(), m_PCListQueue.end(), isSameCreature(pCreature)); if (itr != m_PCListQueue.end()) { m_PCListQueue.erase(itr); } __LEAVE_CRITICAL_SECTION(m_Mutex) __END_CATCH}//--------------------------------------------------------------------------------// Add PC to PC Manager (only do this)//--------------------------------------------------------------------------------void Zone::addPC(Creature* pCreature) throw(Error){ __BEGIN_TRY Assert(pCreature != NULL); m_pPCManager->addCreature(pCreature); __END_CATCH}//--------------------------------------------------------------------------------////--------------------------------------------------------------------------------void Zone::deleteCreature(Creature* pCreature, ZoneCoord_t x, ZoneCoord_t y) throw(NoSuchElementException, Error){ __BEGIN_TRY try { Assert(pCreature->getX() == x && pCreature->getY() == y); // 秦寸登綽 CreatureManager 俊輯 農府貿甫 昏力茄促. if (pCreature->isPC()) { m_pPCManager->deleteCreature(pCreature->getObjectID()); // 頗萍 檬措吝撈扼擱 PartyInviteInfo甫 昏力秦霖促. m_pPartyInviteInfoManager->cancelInvite(pCreature); // 頗萍俊 啊澇登絹 樂菌促擱 肺拿 頗萍俊輯 昏力秦 霖促. uint PartyID = pCreature->getPartyID(); if (PartyID != 0) { m_pLocalPartyManager->deletePartyMember(PartyID, pCreature); } // 飄飯撈靛 吝撈菌促擱 飄飯撈靛 包訪 瀝焊甫 昏力秦霖促. TradeInfo* pInfo = m_pTradeManager->getTradeInfo(pCreature->getName()); if (pInfo != NULL) { m_pTradeManager->cancelTrade(pCreature); } } else if (pCreature->isMonster()) {//#ifdef __XMAS_EVENT_CODE__ Monster* pMonster = dynamic_cast<Monster*>(pCreature); switch (pMonster->getMonsterType()) { case 358: case 359: case 360: case 361: m_pEventMonsterManager->deleteCreature(pCreature->getObjectID()); break; case 371: case 372: case 373: case 374: case 375: case 376: m_pCombatMonsterManager->deleteCreature(pCreature->getObjectID()); break; default: m_pMonsterManager->deleteCreature(pCreature->getObjectID()); break; }//#else// m_pMonsterManager->deleteCreature(pCreature->getObjectID());/*#endif*/ } else if (pCreature->isNPC()) { m_pNPCManager->deleteCreature(pCreature->getObjectID()); } // 鷗老俊輯 農府貿甫 昏力茄促. getTile(x, y).deleteCreature(pCreature->getObjectID()); // 林函狼 PC甸俊霸 農府貿啊 葷扼臉促綽 葷角闌 宏肺靛某膠飄茄促. GCDeleteObject gcDeleteObject(pCreature->getObjectID()); broadcastPacket(x, y, &gcDeleteObject, pCreature); } catch (Throwable & t) { cerr << t.toString() << endl; } __END_CATCH}//--------------------------------------------------------------------------------////--------------------------------------------------------------------------------void Zone::deleteObject(Object* pObject, ZoneCoord_t x, ZoneCoord_t y) throw(NoSuchElementException, Error){ __BEGIN_TRY //-------------------------------------------------- // 糧俊輯 按眉甫 昏力茄促. //-------------------------------------------------- getTile(x, y).deleteObject(pObject->getObjectID()); //-------------------------------------------------- // 林函狼 PC甸俊霸 按眉啊 葷扼臉促綽 葷角闌 宏肺靛某膠飄茄促. //-------------------------------------------------- GCDeleteObject gcDeleteObject(pObject->getObjectID()); broadcastPacket(x, y, &gcDeleteObject); __END_CATCH}//--------------------------------------------------------------------------------////--------------------------------------------------------------------------------void Zone::deleteItem(Object* pObject, ZoneCoord_t x, ZoneCoord_t y) throw(NoSuchElementException, Error){ __BEGIN_TRY deleteFromItemList(pObject->getObjectID()); //-------------------------------------------------- // 糧俊輯 按眉甫 昏力茄促. //-------------------------------------------------- getTile(x, y).deleteItem(); //-------------------------------------------------- // 林函狼 PC甸俊霸 按眉啊 葷扼臉促綽 葷角闌 宏肺靛某膠飄茄促. //--------------------------------------------------// GCDeleteObject gcDeleteObject(pObject->getObjectID());// broadcastPacket(x, y, &gcDeleteObject); __END_CATCH}//--------------------------------------------------------------------------------//// broadcast packet//
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -