cgselecttileeffecthandler.cpp
来自「dk1游戏的原代码文件,完整.编译系统redhat7.3,mysql 3.23 」· C++ 代码 · 共 218 行
CPP
218 行
//////////////////////////////////////////////////////////////////////////////// Filename : CGSelectTileEffectHandler.cpp// Written By : excel96// Description ://////////////////////////////////////////////////////////////////////////////#include "CGSelectTileEffect.h"#ifdef __GAME_SERVER__ #include "GamePlayer.h" #include "Slayer.h" #include "Vampire.h" #include "Effect.h" #include "EffectManager.h" #include "ZoneInfoManager.h" #include "ZoneUtil.h" #include "PacketUtil.h" #include "Properties.h" #include "RelicUtil.h" #include "StringPool.h" #include "skill/EffectVampirePortal.h" #include "Gpackets/GCEnterVampirePortal.h" #include "Gpackets/GCSystemMessage.h"#endif // __GAME_SERVER__////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////void CGSelectTileEffectHandler::execute(CGSelectTileEffect* pPacket , Player* pPlayer) throw (Error){ __BEGIN_TRY __BEGIN_DEBUG_EX#ifdef __GAME_SERVER__ Assert(pPacket != NULL); Assert(pPlayer != NULL); try { // 霸烙 敲饭捞绢狼 惑怕啊 沥惑捞 酒聪扼搁 傲 府畔茄促. GamePlayer* pGamePlayer = dynamic_cast<GamePlayer*>(pPlayer); Assert(pGamePlayer != NULL); if (pGamePlayer->getPlayerStatus() != GPS_NORMAL) return; Creature* pCreature = pGamePlayer->getCreature(); Assert(pCreature != NULL); // 己拱 甸绊 乐栏搁 器呕俊 甸绢哎 荐 绝促. if ( pCreature->hasRelicItem() || pCreature->isFlag( Effect::EFFECT_CLASS_HAS_FLAG ) || pCreature->isFlag( Effect::EFFECT_CLASS_HAS_SWEEPER ) ) { return; } Zone* pZone = pCreature->getZone(); Assert(pZone != NULL); Effect* pEffect = NULL; // 刚历 轨颇捞绢 器呕 概聪历俊辑 茫绰促. EffectManager* pVampirePortalManager = pZone->getVampirePortalManager(); pEffect = pVampirePortalManager->findEffect(pPacket->getEffectObjectID()); if (pEffect != NULL) { //cout << "CGSelectTileEffectHandler::execute() : Effect Exist" << endl; switch (pEffect->getEffectClass()) { case Effect::EFFECT_CLASS_VAMPIRE_PORTAL: executeVampirePortal(pPacket, pPlayer, pEffect); break; default: Assert(false); break; } } else { cout << "CGSelectTileEffectHandler::execute() : Effect DOES NOT Exist" << endl; // 褥... 弊繁 OID甫 啊柳 捞棋飘啊 绝阑 锭俊绰 混娄 公矫秦霖促. } } catch (Throwable & t) { cerr << t.toString() << endl; }#endif // __GAME_SERVER__ __END_DEBUG_EX __END_CATCH}////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////void CGSelectTileEffectHandler::executeVampirePortal(CGSelectTileEffect* pPacket , Player* pPlayer, Effect* pEffect) throw (Error){ __BEGIN_TRY __BEGIN_DEBUG_EX#ifdef __GAME_SERVER__ Assert(pPacket != NULL); Assert(pPlayer != NULL); Assert(pEffect != NULL); Assert(pEffect->getEffectClass() == Effect::EFFECT_CLASS_VAMPIRE_PORTAL); try { // 霸烙 敲饭捞绢狼 惑怕啊 沥惑捞 酒聪扼搁 傲 府畔茄促. GamePlayer* pGamePlayer = dynamic_cast<GamePlayer*>(pPlayer); Assert(pGamePlayer != NULL); if (pGamePlayer->getPlayerStatus() != GPS_NORMAL) return; Creature* pCreature = pGamePlayer->getCreature(); Assert(pCreature != NULL); // 轨颇捞绢父捞 捞侩且 荐 乐促. if (!pCreature->isVampire()) return; Zone* pZone = pCreature->getZone(); Assert(pZone != NULL); Vampire* pVampire = dynamic_cast<Vampire*>(pCreature); Assert(pVampire != NULL); EffectVampirePortal* pEffectVampirePortal = dynamic_cast<EffectVampirePortal*>(pEffect); ZONE_COORD zonecoord = pEffectVampirePortal->getZoneCoord(); // 抛皋府俊肺绰 哎 荐 绝促. // 盔贰绰 酒抗 喉矾叼 磐澄阑 父甸 荐 绝档废秦具 窍瘤父 // 捞固 谅钎啊 汲沥登绢 乐绰 玖捞 乐绢辑 绢驴 荐 绝捞 咯扁辑档 阜绰促. if ( zonecoord.id == 1122 || zonecoord.id == 8000 ) { return; } try { ZoneInfo* pZoneInfo = g_pZoneInfoManager->getZoneInfo( zonecoord.id );#if defined(__PAY_SYSTEM_ZONE__) || defined(__PAY_SYSTEM_FREE_LIMIT__) // 蜡丰粮牢单 蜡丰荤侩吝捞 酒聪搁... // 弊府绊 菩剐府 夸陛力 利侩吝牢 酒聪搁 if (pZoneInfo==NULL || (pZoneInfo->isPayPlay() || pZoneInfo->isPremiumZone()) && !pGamePlayer->isPayPlaying() && !pGamePlayer->isFamilyFreePass() ) { //Statement* pStmt = NULL; string connectIP = pGamePlayer->getSocket()->getHost(); // 蜡丰 辑厚胶 荤侩捞 啊瓷茄啊? if (pGamePlayer->loginPayPlay(connectIP, pGamePlayer->getID())) { sendPayInfo(pGamePlayer); } else if (pZoneInfo->isPayPlay()) { // 蜡丰 辑厚胶 荤侩 阂啊牢 版快 GCSystemMessage gcSystemMessage; if (g_pConfig->getPropertyInt("IsNetMarble")==0) { gcSystemMessage.setMessage( g_pStringPool->getString( STRID_CANNOT_ENTER ) ); } else { gcSystemMessage.setMessage( g_pStringPool->getString( STRID_CANNOT_ENTER ) ); } pGamePlayer->sendPacket (&gcSystemMessage); return; } }#endif } catch (NoSuchElementException&) { return; } if (pEffectVampirePortal->getCount() > 0) { // 轨颇捞绢 磊脚俊霸 敲贰弊甫 吧绢霖促. // 捞绰 Zone::addPC俊辑 轨颇捞绢啊 眠啊瞪 锭, 林困俊促 谎府绰 // GCAddVampire 俊促 器呕肺何磐 吭澜阑 舅府扁 困秦辑捞促. // Zone::addPC俊辑 促矫 钱绢林搁 等促. pVampire->setFlag(Effect::EFFECT_CLASS_VAMPIRE_PORTAL); // 刚历 林困俊促啊 轨颇捞绢啊 器呕阑 捞侩秦 荤扼柳促绰 荤角阑 舅妨霖促. GCEnterVampirePortal gcEnterVampirePortal; gcEnterVampirePortal.setObjectID(pVampire->getObjectID()); gcEnterVampirePortal.setX(pEffectVampirePortal->getX()); gcEnterVampirePortal.setY(pEffectVampirePortal->getY()); pZone->broadcastPacket(pVampire->getX(), pVampire->getY(), &gcEnterVampirePortal); // 角力肺 捞悼阑 矫挪促. transportCreature(pCreature, zonecoord.id, zonecoord.x, zonecoord.y, false); // 捞悼矫淖促搁 墨款飘甫 临捞绊, 墨款飘啊 0捞 登搁 捞棋飘绰 荤扼柳促. pEffectVampirePortal->setCount(pEffectVampirePortal->getCount()-1); //if (pEffectVampirePortal->getCount() == 0) pEffectVampirePortal->setDeadline(0); } } catch (Throwable & t) { cerr << t.toString() << endl; }#endif // __GAME_SERVER__ __END_DEBUG_EX __END_CATCH}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?