?? zone.cpp.backup
字號:
// 林函狼 PC甸俊霸 舅副 GCAddSlayer or GCAddVampire 菩哦闌 積己茄促. Creature::CreatureClass CClass = pCreature->getCreatureClass(); if (CClass == Creature::CREATURE_CLASS_SLAYER) { Slayer* pSlayer = dynamic_cast<Slayer*>(pCreature); GCAddSlayer gcAddSlayer; makeGCAddSlayer(&gcAddSlayer, pSlayer); scan(pCreature, pt.x, pt.y, &gcAddSlayer); } else if (CClass == Creature::CREATURE_CLASS_VAMPIRE) { Vampire* pVampire = dynamic_cast<Vampire*>(pCreature); GCAddVampire gcAddVampire; makeGCAddVampire(&gcAddVampire, pVampire); scan(pCreature, pt.x, pt.y, &gcAddVampire); // 軌頗撈絹扼擱 器嘔闌 撈儈秦 吭闌 啊瓷己撈 樂欄骨肺, // 敲貳弊甫 波霖促. if (pVampire->isFlag(Effect::EFFECT_CLASS_VAMPIRE_PORTAL)) { pVampire->removeFlag(Effect::EFFECT_CLASS_VAMPIRE_PORTAL); } } else { throw Error("invalid creature class. must be slayer or vampire..."); } // 頗萍俊 啊澇登絹 樂促擱 肺拿 頗萍俊 啊澇矯挪促. uint PartyID = pCreature->getPartyID(); if (PartyID != 0) { // 頗萍啊 樂促擱 傲 歹茄促. m_pLocalPartyManager->addPartyMember(PartyID, pCreature); } } else { ZoneCoord_t tempX = Random(20, m_Width); ZoneCoord_t tempY = Random(20, m_Height); addPC(pCreature, tempX, tempY, 0); // 鈣膠墨款飄 瘤唱檔 給 茫籃 版快 Assert //throw EmptyTileNotExistException("too many pc in this zone.. or too unlucky"); } __END_DEBUG __END_CATCH}//////////////////////////////////////////////////////////////////////////////// detect invisibility殿狼 瓤苞啊 葷扼柳 版快..焊撈綽 仇撈 救焊撈霸 瞪 版快// pCreature俊霸 GCDeleteObject甫 焊郴霖促. 焊絆 樂帶 invisible creature甫// delete茄促. 肚綽 救焊牢綽 逞撈 焊撈霸 瞪 版快殿..//////////////////////////////////////////////////////////////////////////////void Zone::updateInvisibleScan(Creature* pCreature) throw (ProtocolException, Error){ __BEGIN_TRY Assert(pCreature != NULL && pCreature->isPC()); Coord_t cx = pCreature->getX(); Coord_t cy = pCreature->getY(); Player* pPlayer = pCreature->getPlayer(); // Revealer 撈棋飄甫 啊廉柯促.// EffectRevealer* pEffectRevealer = NULL;// if ( pCreature->isFlag(Effect::EFFECT_CLASS_REVEALER) )// {// pEffectRevealer = dynamic_cast<EffectRevealer*>(pCreature->findEffect(Effect::EFFECT_CLASS_REVEALER));// Assert( pEffectRevealer != NULL );// } for (ZoneCoord_t ix = max(0, cx - maxViewportWidth - 1), endx = min(m_Width - 1, cx + maxViewportWidth + 1) ; ix <= endx ; ix++) { for (ZoneCoord_t iy = max(0, cy - maxViewportUpperHeight - 1), endy = min(m_Height - 1, cy + maxViewportLowerHeight + 1) ; iy <= endy ; iy++) { // darkness康開 煉葷. // 葷角 pCreature綽 寸楷灑 slayer促.(updateInvisibleScan撈骨肺..) if (pCreature->isSlayer()) { const slist<Object*> & objectList = m_pTiles[ix][iy].getObjectList(); slist<Object*>::const_iterator itr = objectList.begin(); for (; itr != objectList.end() && (*itr)->getObjectPriority() <= OBJECT_PRIORITY_BURROWING_CREATURE ; itr++) { if ((*itr)->getObjectClass() == Object::OBJECT_CLASS_CREATURE) { Creature* pPC = dynamic_cast<Creature*>(*itr); Assert(pPC != NULL); // 磊扁 磊腳老 版快 烹苞 if ( pCreature == pPC ) continue; // 見絹樂綽 措惑俊 措秦輯.. // SNIPING撈唱 INVISIBILITY惑怕老 版快. if (pPC->isFlag(Effect::EFFECT_CLASS_INVISIBILITY) && pCreature->getVisionState(ix,iy) >= IN_SIGHT) { // Detect Invisibility 撈棋飄啊 樂芭唱 軌頗撈絹擱 杭 薦 樂促 // Revealer 撈棋飄啊 樂闌 版快 惑措規闌 杭 薦 樂綽 飯駭撈扼擱 if ( ( pCreature->isFlag(Effect::EFFECT_CLASS_DETECT_INVISIBILITY) || pCreature->isVampire() ) )// || ( pEffectRevealer != NULL && pEffectRevealer->canSeeInvisibility( pPC ) ) ) { if (pPC->isVampire()) { Vampire* pVampire = dynamic_cast<Vampire*>(pPC); GCAddVampire gcAddVampire; makeGCAddVampire(&gcAddVampire, pVampire); pPlayer->sendPacket(&gcAddVampire); } else if (pPC->isMonster()) { Monster* pMonster= dynamic_cast<Monster*>(pPC); //GCAddMonster gcAddMonster; //makeGCAddMonster(&gcAddMonster, pMonster); //pPlayer->sendPacket(&gcAddMonster); // by sigi Packet* pAddMonsterPacket = createMonsterAddPacket( pMonster, pCreature ); if (pAddMonsterPacket!=NULL) { pPlayer->sendPacket(pAddMonsterPacket); delete pAddMonsterPacket; } } } else { GCDeleteObject gcDO; gcDO.setObjectID(pPC->getObjectID()); pPlayer->sendPacket(&gcDO); } } else if (pPC->isFlag(Effect::EFFECT_CLASS_SNIPING_MODE)) { if ( (!pCreature->isVampire() && pCreature->isFlag(Effect::EFFECT_CLASS_DETECT_INVISIBILITY) ) )// || ( pEffectRevealer != NULL && pEffectRevealer->canSeeSniping( pPC ) ) ) { if (pPC->isSlayer()) { Slayer* pSlayer = dynamic_cast<Slayer*>(pPC); GCAddSlayer gcAddSlayer; makeGCAddSlayer(&gcAddSlayer, pSlayer); pPlayer->sendPacket(&gcAddSlayer); } else { throw Error("軌頗撈絹啊 膠唱撈俏 葛靛俊 樂促. 固媚結~"); } } else { GCDeleteObject gcDO; gcDO.setObjectID(pPC->getObjectID()); pPlayer->sendPacket(&gcDO); } } } } }// darkness } } __END_CATCH}//--------------------------------------------------------------------------------// update hidden scan// detect hidden殿狼 瓤苞啊 葷扼柳 版快..焊撈綽 仇撈 救焊撈霸 瞪 版快// pCreature俊霸 GCDeleteObject甫 焊郴霖促.// 焊絆 樂帶 burrow creature甫 delete茄促. 肚綽 救焊牢綽 逞撈 焊撈霸 瞪 版快殿..// ABCD//--------------------------------------------------------------------------------void Zone::updateHiddenScan(Creature* pCreature) throw(ProtocolException, Error){ __BEGIN_TRY Assert(pCreature != NULL && pCreature->isPC()); Coord_t cx = pCreature->getX(); Coord_t cy = pCreature->getY(); Player* pPlayer = pCreature->getPlayer(); // Revealer 撈棋飄甫 啊廉柯促.// EffectRevealer* pEffectRevealer = NULL;// if ( pCreature->isFlag(Effect::EFFECT_CLASS_REVEALER) )// {// pEffectRevealer = dynamic_cast<EffectRevealer*>(pCreature->findEffect(Effect::EFFECT_CLASS_REVEALER));// Assert( pEffectRevealer != NULL );// } for (ZoneCoord_t ix = max(0, cx - maxViewportWidth - 1), endx = min(m_Width - 1, cx + maxViewportWidth + 1) ; ix <= endx ; ix++) { for (ZoneCoord_t iy = max(0, cy - maxViewportUpperHeight - 1), endy = min(m_Height - 1, cy + maxViewportLowerHeight + 1) ; iy <= endy ; iy++) { // darkness康開 煉葷. // 葷角 pCreature綽 寸楷灑 slayer促.(updateHiddenScan撈骨肺..) if (pCreature->isSlayer()) { const slist<Object*> & objectList = m_pTiles[ix][iy].getObjectList(); for (slist<Object*>::const_iterator itr = objectList.begin() ; itr != objectList.end() && (*itr)->getObjectPriority() <= OBJECT_PRIORITY_BURROWING_CREATURE ; itr++) { if ((*itr)->getObjectClass() == Object::OBJECT_CLASS_CREATURE) { Creature* pPC = dynamic_cast<Creature*>(*itr); Assert(pPC != NULL); // 磊扁 磊腳老 版快 烹苞 if ( pCreature == pPC ) continue; // 見絹樂綽 措惑俊 措秦輯.. if (pPC->isFlag(Effect::EFFECT_CLASS_HIDE) && pCreature->getVisionState(ix,iy) >= IN_SIGHT) { if ( pCreature->isFlag(Effect::EFFECT_CLASS_DETECT_HIDDEN) || pCreature->isVampire() )// || ( pEffectRevealer != NULL && pEffectRevealer->canSeeHide( pPC ) ) ) { GCAddBurrowingCreature gcABC; gcABC.setObjectID(pPC->getObjectID()); gcABC.setName(pPC->getName()); gcABC.setX(ix); gcABC.setY(iy); pPlayer->sendPacket(&gcABC); } else { GCDeleteObject gcDO; gcDO.setObjectID(pPC->getObjectID()); pPlayer->sendPacket(&gcDO); } } } } }// darkness } } __END_CATCH}//--------------------------------------------------------------------------------// update mine scan// detect mine殿狼 瓤苞啊 葷扼柳 版快..焊撈綽 mine撈 救焊撈霸 瞪 版快// pCreature俊霸 GCDeleteObject甫 焊郴霖促.//--------------------------------------------------------------------------------void Zone::updateMineScan(Creature* pCreature) throw(ProtocolException, Error){ __BEGIN_TRY Assert(pCreature != NULL && pCreature->isPC()); Coord_t cx = pCreature->getX(); Coord_t cy = pCreature->getY(); Player* pPlayer = pCreature->getPlayer(); for (ZoneCoord_t ix = max(0, cx - maxViewportWidth - 1), endx = min(m_Width - 1, cx + maxViewportWidth + 1) ; ix <= endx ; ix++) { for (ZoneCoord_t iy = max(0, cy - maxViewportUpperHeight - 1), endy = min(m_Height - 1, cy + maxViewportLowerHeight + 1) ; iy <= endy ; iy++) { // 葷角 pCreature綽 寸楷灑 slayer促.(updateMineScan撈骨肺..) if (pCreature->isSlayer()) { Item* pItem = m_pTiles[ix][iy].getItem(); if (pItem) { if (pItem->getItemClass() == Item::ITEM_CLASS_MINE && pItem->isFlag(Effect::EFFECT_CLASS_INSTALL)) { if (pCreature->isFlag(Effect::EFFECT_CLASS_REVEALER) ) { GCAddInstalledMineToZone gcAddMine; gcAddMine.setObjectID(pItem->getObjectID()); gcAddMine.setX(ix); gcAddMine.setY(iy); gcAddMine.setItemClass(pItem->getItemClass()); gcAddMine.setItemType(pItem->getItemType()); gcAddMine.setOptionType(pItem->getOptionType()); gcAddMine.setDurability(pItem->getDurability()); pPlayer->sendPacket(&gcAddMine); } else { GCDeleteObject gcDO; gcDO.setObjectID(pItem->getObjectID()); pPlayer->sendPacket(&gcDO); } } } }// darkness } } __END_CATCH}//--------------------------------------------------------------------------------// add Creature// 農府貿啊 糧俊 彌檬肺 甸絹哎 錠, 農府貿 林函狼 PC甸俊霸 貨 農府貿狼 免泅闌 舅妨霖促.//--------------------------------------------------------------------------------void Zone::addCreature(Creature* pCreature, ZoneCoord_t cx, ZoneCoord_t cy, Dir_t dir) throw(EmptyTileNotExistException, Error){ __BEGIN_TRY TPOINT pt = findSuitablePosition(this, cx, cy, pCreature->getMoveMode()); // 茫籃 版快 眉農 if (pt.x != -1) { //-------------------------------------------------------------------------------- // OID 甫 且寸罐綽促. //-------------------------------------------------------------------------------- m_ObjectRegistry.registerObject(pCreature); //-------------------------------------------------------------------------------- // 利例茄 鷗老闌 茫疽欄擱, 農府貿甫 農府貿概聰歷客 鷗老俊 阿阿 籠絹持綽促. // Monster 老 版快, MonsterManager俊 眠啊竅哥, NPC 老 版快, NPCManager 俊 眠啊茄促. //-------------------------------------------------------------------------------- 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->addCreature(pCreature); break; case 371: case 372: case 373: case 374: case 375: case 376: m_pCombatMonsterManager->addCreature(pCreature); // 362綽 傈捧儈 閣膠磐肺 瀝狼竊, 辮版籍 break; default: m_pMonsterManager->addCreature(pCreature); break; }//#else// m_pMonsterManager->addCreature(pCreature);/*#endif*/ } else if (pCreature->isNPC()) { m_pNPCManager->addCreature(pCreature); } //cout << "鷗老俊 閣膠磐 眠啊竅扁" << endl; m_pTiles[pt.x][pt.y].addCreature(pCreature, false); //-------------------------------------------------------------------------------- // 農府貿狼 諒釬甫 瘤瀝茄促. //-------------------------------------------------------------------------------- pCreature->setXYDir(pt.x, pt.y, dir); pCreature->setZone(this); //scanPC(pCreature); //-------------------------------------------------------------------------------- // 林函狼 PC甸俊霸 舅副 GCAddNPC or GCAddMonster 菩哦闌 積己茄促. //-------------------------------------------------------------------------------- //cout << "林函狼 PC甸俊霸 舅副 菩哦 父甸扁" << endl; Creature::CreatureClass CClass = pCreature->getCreatureClass(); if (CClass == Creature::CREATURE_CLASS_NPC) { NPC* pNPC = dynamic_cast<NPC*>(pCreature); GCAddNPC gcAddNPC; makeGCAddNPC(&gcAddNPC, pNPC); broadcastPacket(pt.x, pt.y, &gcAddNPC); } else if (CClass == Creature::CREATURE_CLASS_MONSTER) { //cout << "閣膠磐儈 菩哦 父甸扁" << endl; Monster* pMonster = dynamic_cast<Monster*>(pCreature); //GCAddMonster gcAddMonster; //makeGCAddMonster(&gcAddMonster, pMonster); //broadcastPacket(pt.x, pt.y, &gcAddMonster); // zone俊 貿瀾 甸絹哎錠檔 咯礬啊瘤 惑怕啊 樂促.. by sigi Packet* pAddMonsterPacket = createMonsterAddPacket( pMonster, NULL ); if (pAddMonsterPacket!=NULL) { //cout << "閣膠磐儈 菩哦撈 父甸絹臉欄擱" << endl; bool isMonsterHide = pMonster->isFlag(Effect::EFFECT_CLASS_HIDE); bool isMonsterInvisibility = pMonster->isFlag(Effect::EFFECT_CLASS_INVISIBILITY); //broadcastPacket(pt.x, pt.y, pAddMonsterPacket); ZoneCoord_t ix = 0; ZoneCoord_t iy = 0; ZoneCoord_t endx = 0; ZoneCoord_t endy = 0; ////////////////////////////////////////////////////////////////////////////// // 風橇 函薦 檬扁拳.. // // Plus 函薦啊 曼老 版快 Range 父怒 歹 焊郴 霖促.. // 堡開 付過狼 搬苞甫 瓤苞利欄肺 焊咯林扁 困竊撈促. // // *NOTE // - 彌利拳甫 茄促擱 VisionInfo俊 PLUS_SIGHT扼綽 函薦甫 眠啊竅咯 楷魂 ////////////////////////////////////////////////////////////////////////////// int Range = 0; endx = min(m_Width - 1, cx + maxViewportWidth + 1 + Range); endy = min(m_Height - 1, cy + maxViewportLowerHeight + 1 + Range); for (ix = max(0, cx - maxViewportWidth - 1 - Range); ix <= endx ; ix++) { for (iy = max(0, cy - maxViewportUpperHeight - 1 - Range); iy <= endy ; iy++) { // 鷗老俊 農府貿啊 樂綽 版快俊父 if (m_pTiles[ix][iy].hasCreature()) { //cout << ix << "," << iy << "俊 Creature 糧犁" << endl; const slist<Object*> & objectList = m_pTiles[ix][iy].getObjectList(); slist<Object*>::const_iterator itr = objectList.begin(); for (; itr != objectList.end() && (*itr)->getObjectPriority() <= OBJECT_PRIORITY_BURROWING_CREATURE; itr++) { Creature* pCreature = dynamic_cast<Creature*>(*itr); Assert(pCreature != NULL);
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -