📄 zoneutil.cpp
字号:
else { throw Error(); } GCRemoveEffect gcRemoveEffect; gcRemoveEffect.setObjectID(pCreature->getObjectID()); gcRemoveEffect.addEffectList((EffectID_t)Effect::EFFECT_CLASS_INVISIBILITY); if (pCreature->isPC()) { Player* pPlayer = pCreature->getPlayer(); Assert(pPlayer != NULL); pPlayer->sendPacket(&gcRemoveEffect); } //-------------------------------------------------------------------------------- // // 矫具 康开狼 惑窍谅快 葛滴 + 1 究 刘啊矫挪促. // 捞蜡绰 规氢俊 蝶弗 ON_SIGHT 康开捞 刘啊登扁 锭巩捞促. // //-------------------------------------------------------------------------------- for (ZoneCoord_t ix = max(0, cx - maxViewportWidth - 1), endx = min(pZone->getWidth() - 1, cx + maxViewportWidth + 1) ; ix <= endx ; ix ++) { for (ZoneCoord_t iy = max(0, cy - maxViewportUpperHeight - 1), endy = min(pZone->getHeight() - 1, cy + maxViewportLowerHeight + 1) ; iy <= endy ; iy ++) { Tile& curTile = pZone->getTile(ix, iy); const slist<Object*> & objectList = curTile.getObjectList(); slist<Object*>::const_iterator itr = objectList.begin(); for (; itr != objectList.end() && (*itr)->getObjectPriority() <= OBJECT_PRIORITY_BURROWING_CREATURE; itr ++) { Assert(*itr != NULL); Creature* pViewer= dynamic_cast<Creature*>(*itr); // Viewer 狼 Revealer 捞棋飘甫 啊廉柯促.// EffectRevealer* pEffectRevealer = NULL;// if ( pViewer->isFlag( Effect::EFFECT_CLASS_REVEALER ) )// {// pEffectRevealer = dynamic_cast<EffectRevealer*>(pViewer->findEffect( Effect::EFFECT_CLASS_REVEALER ) );// Assert( pEffectRevealer );// } // Viewer 狼 Observing Eye 捞棋飘甫 啊廉柯促. EffectObservingEye* pEffectObservingEye = NULL; if ( pViewer->isFlag( Effect::EFFECT_CLASS_OBSERVING_EYE ) ) { pEffectObservingEye = dynamic_cast<EffectObservingEye*>(pViewer->findEffect( Effect::EFFECT_CLASS_OBSERVING_EYE ) ); //Assert( pEffectObservingEye != NULL ); } // Viewer 狼 Gnome's Whisper 捞棋飘甫 啊廉柯促. EffectGnomesWhisper* pEffectGnomesWhisper = NULL; if ( pViewer->isFlag( Effect::EFFECT_CLASS_GNOMES_WHISPER ) ) { pEffectGnomesWhisper = dynamic_cast<EffectGnomesWhisper*>(pViewer->findEffect( Effect::EFFECT_CLASS_GNOMES_WHISPER ) ); //Assert( pEffectGnomesWhisper != NULL ); } if (pViewer != pCreature && pViewer->isPC() && (pViewer->getVisionState(cx, cy) >= IN_SIGHT)) { // 林籍贸府 by sigi //if ((!pCreature->isFlag(Effect::EFFECT_CLASS_HIDE) // || pViewer->isFlag(Effect::EFFECT_CLASS_DETECT_HIDDEN))) { // 捞傈俊 捞 某腐阑 给 焊带 局甸俊 茄秦辑 // 捞 某腐阑 Add矫难霖促. // invisbility客 包访秦辑父, 杭 荐 绝绰磊.. if (!pViewer->isFlag(Effect::EFFECT_CLASS_DETECT_INVISIBILITY) && ( pViewer->isSlayer() || pViewer->isOusters() ) && !( pEffectObservingEye != NULL && pEffectObservingEye->canSeeInvisibility( pCreature ) ) && !( pEffectGnomesWhisper != NULL && pEffectGnomesWhisper->canSeeInvisibility() ) ) { pViewer->getPlayer()->sendPacket(pGCAddXXX); } } //else { // 盔贰 杭 荐 绝菌栏骨肺, 鞠巴档 且 老捞 绝促. } // 绢露芭唱 invisible钱赴促绰扒 焊郴拎具茄促. by sigi pViewer->getPlayer()->sendPacket(&gcRemoveEffect); }//if }//for }//for }//for //-------------------------------------------- // effect manager俊辑 Effect甫 碍力 昏力茄促. //-------------------------------------------- if (bForced == true) { EffectManager* pEffectManager = pCreature->getEffectManager(); Assert(pEffectManager); pEffectManager->deleteEffect(pCreature, Effect::EFFECT_CLASS_INVISIBILITY); } /* GCRemoveEffect removeEffect; removeEffect.setObjectID(pCreature->getObjectID()); removeEffect.addEffectList((EffectID_t)Effect::EFFECT_CLASS_INVISIBILITY); pZone->broadcastPacket(cx, cy, &removeEffect); */ pCreature->removeFlag(Effect::EFFECT_CLASS_INVISIBILITY); __END_CATCH}//////////////////////////////////////////////////////////////////////////////// 救 焊捞绰 农府媚甫 眠啊茄促.//// Zone* pZone : 粮俊 措茄 器牢磐// Creature* pCreature : 救 焊捞绰 农府媚// ZoneCoord_t cx : 农府媚狼 盔贰 谅钎 x// ZoneCoord_t cy : 农府媚狼 盔贰 谅钎 y//////////////////////////////////////////////////////////////////////////////void addSnipingModeCreature(Zone* pZone, Creature* pCreature, ZoneCoord_t cx, ZoneCoord_t cy) throw(){ __BEGIN_TRY Assert(pZone != NULL); Assert(pCreature != NULL); // 浇饭捞绢父 捞 扁贱阑 镜 荐 乐促. Assert(pCreature->isSlayer()); ObjectID_t creatureID = pCreature->getObjectID(); GCDeleteObject gcDO; gcDO.setObjectID(creatureID); pCreature->setFlag(Effect::EFFECT_CLASS_SNIPING_MODE); //Tile& rTile = pZone->getTile(cx, cy); GCAddEffect gcAddEffect; gcAddEffect.setObjectID(creatureID); gcAddEffect.setEffectID(Effect::EFFECT_CLASS_SNIPING_MODE); gcAddEffect.setDuration(0); //-------------------------------------------------------------------------------- // // 矫具 康开狼 惑窍谅快 葛滴 + 1 究 刘啊矫挪促. // 捞蜡绰 规氢俊 蝶弗 ON_SIGHT 康开捞 刘啊登扁 锭巩捞促. // //-------------------------------------------------------------------------------- for (ZoneCoord_t ix = max(0, cx - maxViewportWidth - 1), endx = min(pZone->getWidth() - 1, cx + maxViewportWidth + 1) ; ix <= endx ; ix ++) { for (ZoneCoord_t iy = max(0, cy - maxViewportUpperHeight - 1), endy = min(pZone->getHeight() - 1, cy + maxViewportLowerHeight + 1) ; iy <= endy ; iy ++) { Tile& curTile = pZone->getTile(ix, iy); const slist<Object*> & objectList = curTile.getObjectList(); slist<Object*>::const_iterator itr = objectList.begin(); for (; itr != objectList.end() && (*itr)->getObjectPriority() <= OBJECT_PRIORITY_BURROWING_CREATURE; itr ++) { Assert(*itr != NULL); Creature* pViewer= dynamic_cast<Creature*>(*itr); if (pViewer != pCreature && pViewer->isPC() && (pViewer->getVisionState(cx, cy) >= IN_SIGHT)) { // Viewer 狼 Revealer 捞棋飘甫 啊廉柯促.// EffectRevealer* pEffectRevealer = NULL;// if ( pViewer->isFlag( Effect::EFFECT_CLASS_REVEALER ) )// {// pEffectRevealer = dynamic_cast<EffectRevealer*>(pViewer->findEffect( Effect::EFFECT_CLASS_REVEALER ) );// Assert( pEffectRevealer );// } // Viewer 狼 Gnome's Whisper 捞棋飘甫 啊廉柯促. EffectGnomesWhisper* pEffectGnomesWhisper = NULL; if ( pViewer->isFlag( Effect::EFFECT_CLASS_GNOMES_WHISPER ) ) { pEffectGnomesWhisper = dynamic_cast<EffectGnomesWhisper*>(pViewer->findEffect( Effect::EFFECT_CLASS_GNOMES_WHISPER ) ); //Assert( pEffectGnomesWhisper != NULL ); } if ( !pCreature->isFlag(Effect::EFFECT_CLASS_HIDE) || pViewer->isFlag(Effect::EFFECT_CLASS_DETECT_HIDDEN) || ( pEffectGnomesWhisper != NULL && pEffectGnomesWhisper->canSeeHide() ) )// || ( pEffectRevealer != NULL && pEffectRevealer->canSeeHide( pCreature ) ) )) { if ( pViewer->isFlag( Effect::EFFECT_CLASS_DETECT_INVISIBILITY ) || ( pEffectGnomesWhisper != NULL && pEffectGnomesWhisper->canSeeSniping() ) ) // || ( pEffectRevealer != NULL && pEffectRevealer->canSeeSniping( pCreature ) ) ) { pViewer->getPlayer()->sendPacket( &gcAddEffect ); } else { pViewer->getPlayer()->sendPacket( &gcDO ); } // invisbility客 包访秦辑父, 杭 荐 绝绰磊../* if (!pViewer->isFlag(Effect::EFFECT_CLASS_DETECT_INVISIBILITY) || pViewer->isVampire()) { pViewer->getPlayer()->sendPacket(&gcDO); } else { pViewer->getPlayer()->sendPacket(&gcAddEffect); }*/ } else { // 盔贰 杭 荐 绝菌栏骨肺, 鞠巴档 且 老捞 绝促. } }//if }//for }//for }//for __END_CATCH}//////////////////////////////////////////////////////////////////////////////// 救 焊捞带 农府媚啊 焊老 版快, 捞 农府媚甫 眠啊茄促.//// Zone* pZone : 粮俊 措茄 器牢磐// Creature* pCreature : 救 焊捞带 农府媚// bool bForce : 碍力肺 visible 惑怕啊 登菌唱?//////////////////////////////////////////////////////////////////////////////void addUnSnipingModeCreature(Zone* pZone, Creature* pCreature, bool bForced) throw() { __BEGIN_TRY Assert(pZone != NULL); Assert(pCreature != NULL); // 浇饭捞绢父捞 胶唱捞俏捞 啊瓷窍促. Assert(pCreature->isSlayer()); // 敲贰弊啊 难廉乐绢具 茄促. Assert(pCreature->isFlag(Effect::EFFECT_CLASS_SNIPING_MODE)); ZoneCoord_t cx = pCreature->getX(); ZoneCoord_t cy = pCreature->getY(); //Tile& rTile = pZone->getTile(cx, cy); Packet* pGCAddXXX = NULL; GCAddSlayer gcAddSlayer; Slayer* pSlayer = dynamic_cast<Slayer*>(pCreature);// gcAddSlayer.setSlayerInfo(pSlayer->getSlayerInfo3());// gcAddSlayer.setEffectInfo(pSlayer->getEffectInfo()); makeGCAddSlayer( &gcAddSlayer, pSlayer ); pGCAddXXX = &gcAddSlayer; GCRemoveEffect gcRemoveEffect; gcRemoveEffect.setObjectID(pCreature->getObjectID()); gcRemoveEffect.addEffectList((EffectID_t)Effect::EFFECT_CLASS_SNIPING_MODE); if ( pCreature->isPC() ) { Player* pPlayer = pCreature->getPlayer(); Assert( pPlayer ); pPlayer->sendPacket( &gcRemoveEffect ); } //-------------------------------------------------------------------------------- // // 矫具 康开狼 惑窍谅快 葛滴 + 1 究 刘啊矫挪促. // 捞蜡绰 规氢俊 蝶弗 ON_SIGHT 康开捞 刘啊登扁 锭巩捞促. // //-------------------------------------------------------------------------------- for (ZoneCoord_t ix = max(0, cx - maxViewportWidth - 1), endx = min(pZone->getWidth() - 1, cx + maxViewportWidth + 1) ; ix <= endx ; ix ++) { for (ZoneCoord_t iy = max(0, cy - maxViewportUpperHeight - 1), endy = min(pZone->getHeight() - 1, cy + maxViewportLowerHeight + 1) ; iy <= endy ; iy ++) { Tile& curTile = pZone->getTile(ix, iy); const slist<Object*> & objectList = curTile.getObjectList(); slist<Object*>::const_iterator itr = objectList.begin(); for (; itr != objectList.end() && (*itr)->getObjectPriority() <= OBJECT_PRIORITY_BURROWING_CREATURE; itr ++) { Assert(*itr != NULL); Creature* pViewer= dynamic_cast<Creature*>(*itr); // Viewer 狼 Revealer 捞棋飘甫 啊廉柯促.// EffectRevealer* pEffectRevealer = NULL;// if ( pViewer->isFlag( Effect::EFFECT_CLASS_REVEALER ) )// {// pEffectRevealer = dynamic_cast<EffectRevealer*>(pViewer->findEffect(Effect::EFFECT_CLASS_REVEALER));// Assert( pEffectRevealer );// } // Viewer 狼 Gnome's Whisper 捞棋飘甫 啊廉柯促. EffectGnomesWhisper* pEffectGnomesWhisper = NULL; if ( pViewer->isFlag( Effect::EFFECT_CLASS_GNOMES_WHISPER ) ) { pEffectGnomesWhisper = dynamic_cast<EffectGnomesWhisper*>(pViewer->findEffect( Effect::EFFECT_CLASS_GNOMES_WHISPER ) ); //Assert( pEffectGnomesWhisper != NULL ); } if (pViewer != pCreature && pViewer->isPC() && (pViewer->getVisionState(cx, cy) >= IN_SIGHT)) { if ( !pCreature->isFlag(Effect::EFFECT_CLASS_HIDE) || pViewer->isFlag(Effect::EFFECT_CLASS_DETECT_HIDDEN) || ( pEffectGnomesWhisper != NULL && pEffectGnomesWhisper->canSeeHide() ) )// || ( pEffectRevealer != NULL && pEffectRevealer->canSeeHide( pCreature ) ) )) { // invisbility客 包访秦辑父, 杭 荐 绝绰磊.. if ( !pViewer->isFlag(Effect::EFFECT_CLASS_DETECT_INVISIBILITY) || ( pEffectGnomesWhisper != NULL && pEffectGnomesWhisper->canSeeSniping() ) )// && !( pEffectRevealer != NULL && pEffectRevealer->canSeeSniping( pCreature ) ) ) { pViewer->getPlayer()->sendPacket(pGCAddXXX); } } else { // 盔贰 杭 荐 绝菌栏骨肺, 鞠巴档 且 老捞 绝促. } // sniping mode 啊 钱赴促绰 吧 焊郴霖促. pViewer->getPlayer()->sendPacket( &gcRemoveEffect ); }//if }//for }//for }//for //-------------------------------------------- // effect manager俊辑 Effect甫 碍力 昏力茄促. //-------------------------------------------- if (bForced == true) { EffectManager* pEffectManager = pCreature->getEffectManager(); Assert(pEffectManager); pEffectManager->deleteEffect(pCreature, Effect::EFFECT_CLASS_SNIPING_MODE); }/* GCRemoveEffect removeEffect; removeEffect.setObjectID(pCreature->getObjectID()); removeEffect.addEffectList((EffectID_t)Effect::EFFECT_CLASS_SNIPING_MODE); pZone->broadcastPacket(cx, cy, &removeEffect);*/ pCreature->removeFlag(Effect::EFFECT_CLASS_SNIPING_MODE); __END_CATCH}//////////////////////////////////////////////////////////////////////////////// 粮俊促 瘤汾甫 歹茄促.//// Zone* pZone : 粮俊 措茄 器牢磐// Mine* pMine : 瘤汾 按眉俊 措茄 器牢磐// ZoneCoord_t cx : 瘤汾甫 歹且 谅钎 x// ZoneCoord_t cy : 瘤汾甫 歹且 谅钎 y//////////////////////////////////////////////////////////////////////////////void addInstalledMine(Zone* pZone, Mine* pMine, ZoneCoord_t cx, ZoneCoord_t cy) throw(){ __BEGIN_TRY Assert(pZone != NULL); Assert(pMine != NULL); Assert(pMine->isFlag(Effect::EFFECT_CLASS_INSTALL)); //Tile& rTile = pZone->getTile(cx, cy); GCDeleteObject gcDO; gcDO.setObjectID(pMine->getObjectID()); GCAddInstalledMineToZone gcAddMine; gcAddMine.setObjectID(pMine->getObjectID()); gcAddMine.setX(cx); gcAddMine.setY(cy); gcAddMine.setItemClass(pMine->getItemClass()); gcAddMine.setItemType(pMine->getItemType()); gcAddMine.setOptionType(pMine->getOptionTypeList()); gcAddMine.setDurability(pMine->getDurability()); //-------------------------------------------------------------------------------- // // 矫具 康开狼 惑窍谅快 葛滴 + 1 究 刘啊矫挪促. // 捞蜡绰 规氢俊 蝶弗 ON_SIGHT 康开捞 刘啊登扁 锭巩捞促. // //-------------------------------------------------------------------------------- for (ZoneCoord_t ix = max(0, cx - maxViewportWidth - 1), endx = min(pZone->getWidth() - 1, cx + maxViewportWidth + 1) ; ix <= endx ; ix ++) { for (ZoneCoord_t iy = max(0, cy - maxViewportUpperHeight - 1), endy = min(pZone->getHeight() - 1, cy + maxViewportLowerHeight + 1) ; iy <= endy ; iy ++) { Tile& rTile2 = pZone->getTile(ix, iy); const slist<Object*> & objectList = rTile2.getObjectList(); for (slist<Object*>::const_iterator itr = objectList.begin() ; itr != objectList.end() && (*itr)->getObjectPriority() <= OBJECT_PRIORITY_BURROWING_CREATURE; itr ++) { Assert(*itr != NULL); Creature* pViewer= dynamic_cast<Creature*>(*itr); Assert(pViewer != NULL); if (pViewer->isPC() && (pViewer->getVisionState(cx, cy) >= IN_SIGHT))
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -