cgrelictoobjecthandler.cpp
来自「dk1游戏的原代码文件,完整.编译系统redhat7.3,mysql 3.23 」· C++ 代码 · 共 753 行 · 第 1/2 页
CPP
753 行
{ // 己拱 焊包措啊 救傈茄 矫埃 汲沥 Timeval safeTime; getCurrentTime( safeTime ); safeTime.tv_sec += g_pVariableManager->getCombatBonusTime()*60; // 铰府 message 甫 焊郴霖促. GCSystemMessage gcSystemMessage; pTableEffect->setSafeTime( safeTime ); if (bSlayer) { gcSystemMessage.setMessage( g_pStringPool->getString( STRID_COMBAT_SLAYER_WIN ) ); g_pCombatInfoManager->setRelicOwner(relicIndex, CombatInfoManager::RELIC_OWNER_SLAYER); } else { gcSystemMessage.setMessage( g_pStringPool->getString( STRID_COMBAT_VAMPIRE_WIN ) ); g_pCombatInfoManager->setRelicOwner(relicIndex, CombatInfoManager::RELIC_OWNER_VAMPIRE); } // 傈里捞 辆丰登菌促. g_pCombatInfoManager->setCombat( false ); // 傈眉 荤侩磊俊霸 message甫 焊辰促. g_pZoneGroupManager->broadcast( &gcSystemMessage ); g_pCombatInfoManager->computeModify(); } } else { GCCannotAdd _GCCannotAdd; _GCCannotAdd.setObjectID(pPacket->getObjectID()); pPlayer->sendPacket(&_GCCannotAdd); }#endif // __GAME_SERVER__ __END_CATCH}void CGRelicToObjectHandler::executeBloodBible(CGRelicToObject* pPacket , Player* pPlayer) throw (Error){ __BEGIN_TRY#ifdef __GAME_SERVER__ GamePlayer* pGamePlayer = dynamic_cast<GamePlayer*>(pPlayer); Creature* pCreature = pGamePlayer->getCreature(); Zone* pZone = pCreature->getZone(); Assert(pZone!=NULL); // 己拱 焊包措俊 捞固 笛 促 乐绰 版快 // 己拱 焊包措俊 Slayer己拱捞 乐绊 pItem捞 Slayer己拱牢 版快 PlayerCreature* pPlayerCreature = dynamic_cast<PlayerCreature*>(pCreature); // 泅犁 甸绊 乐绰 酒捞袍 == Relic ? InventorySlot* pExtraInventorySlot = pPlayerCreature->getExtraInventorySlot(); Item* pItem = pExtraInventorySlot->getItem(); Item* pTableItem = pZone->getItem( pPacket->getObjectID() ); // 弊繁 item捞 绝芭唱 // 矫眉啊 酒聪芭唱 // Monster矫眉啊 酒聪芭唱 // ShrineGuard档 ShrineHoly档 酒聪搁.. 己窜捞 酒聪瘤. if (pTableItem==NULL || pTableItem->getItemClass()!=Item::ITEM_CLASS_CORPSE || pTableItem->getItemType()!=MONSTER_CORPSE || !pTableItem->isFlag(Effect::EFFECT_CLASS_SHRINE_GUARD) && !pTableItem->isFlag(Effect::EFFECT_CLASS_SHRINE_HOLY)) { GCCannotAdd _GCCannotAdd; _GCCannotAdd.setObjectID(pPacket->getObjectID()); pPlayer->sendPacket(&_GCCannotAdd); //cout << "return: not Shrine" << endl; return; } // 己窜 MonsterCorpse* pCorpse = dynamic_cast<MonsterCorpse*>(pTableItem); Assert(pCorpse!=NULL); // 2鸥老 救俊 乐瘤 臼芭唱 // shrine栏肺 汲沥捞 救登绢 乐栏搁 if (!verifyDistance(pCreature, pCorpse->getX(), pCorpse->getY(), 2) || !pCorpse->isShrine()) { GCCannotAdd _GCCannotAdd; _GCCannotAdd.setObjectID(pPacket->getObjectID()); pPlayer->sendPacket(&_GCCannotAdd); //cout << "return: not in 2 tile or not shrine" << endl; return; } if (g_pShrineInfoManager->putBloodBible( pPlayerCreature, pItem, pCorpse )) { // putBloodBible 救俊辑 贸府茄促. } #endif __END_CATCH}void CGRelicToObjectHandler::executeCastleSymbol(CGRelicToObject* pPacket , Player* pPlayer) throw (Error){ __BEGIN_TRY#ifdef __GAME_SERVER__ GamePlayer* pGamePlayer = dynamic_cast<GamePlayer*>(pPlayer); Creature* pCreature = pGamePlayer->getCreature(); Zone* pZone = pCreature->getZone(); Assert(pZone!=NULL); // 己拱 焊包措俊 捞固 笛 促 乐绰 版快 // 己拱 焊包措俊 Slayer己拱捞 乐绊 pItem捞 Slayer己拱牢 版快 PlayerCreature* pPlayerCreature = dynamic_cast<PlayerCreature*>(pCreature); // 泅犁 甸绊 乐绰 酒捞袍 == Relic ? InventorySlot* pExtraInventorySlot = pPlayerCreature->getExtraInventorySlot(); Item* pItem = pExtraInventorySlot->getItem(); Item* pTableItem = pZone->getItem( pPacket->getObjectID() ); // 弊繁 item捞 绝芭唱 // 矫眉啊 酒聪芭唱 // Monster矫眉啊 酒聪芭唱 // ShrineGuard档 ShrineHoly档 酒聪搁.. 己窜捞 酒聪瘤. if (pTableItem==NULL || pTableItem->getItemClass()!=Item::ITEM_CLASS_CORPSE || pTableItem->getItemType()!=MONSTER_CORPSE || !pTableItem->isFlag(Effect::EFFECT_CLASS_CASTLE_SHRINE_GUARD) && !pTableItem->isFlag(Effect::EFFECT_CLASS_CASTLE_SHRINE_HOLY)) { GCCannotAdd _GCCannotAdd; _GCCannotAdd.setObjectID(pPacket->getObjectID()); pPlayer->sendPacket(&_GCCannotAdd); //cout << "return: not Shrine" << endl; return; } // 己窜 MonsterCorpse* pCorpse = dynamic_cast<MonsterCorpse*>(pTableItem); Assert(pCorpse!=NULL); // 2鸥老 救俊 乐瘤 臼芭唱 // shrine栏肺 汲沥捞 救登绢 乐栏搁 if (!verifyDistance(pCreature, pCorpse->getX(), pCorpse->getY(), 2) || !pCorpse->isShrine()) { GCCannotAdd _GCCannotAdd; _GCCannotAdd.setObjectID(pPacket->getObjectID()); pPlayer->sendPacket(&_GCCannotAdd); //cout << "return: not in 2 tile or not shrine" << endl; return; } if (g_pCastleShrineInfoManager->putCastleSymbol( pPlayerCreature, pItem, pCorpse )) { // putCastleSymbol 救俊辑 贸府茄促. } #endif __END_CATCH} void CGRelicToObjectHandler::executeFlag(CGRelicToObject* pPacket , Player* pPlayer) throw (Error){ __BEGIN_TRY#ifdef __GAME_SERVER__ if ( !g_pFlagManager->hasFlagWar() ) return; GamePlayer* pGamePlayer = dynamic_cast<GamePlayer*>(pPlayer); Creature* pCreature = pGamePlayer->getCreature(); Zone* pZone = pCreature->getZone(); Assert(pZone!=NULL); // 己拱 焊包措俊 捞固 笛 促 乐绰 版快 // 己拱 焊包措俊 Slayer己拱捞 乐绊 pItem捞 Slayer己拱牢 版快 PlayerCreature* pPlayerCreature = dynamic_cast<PlayerCreature*>(pCreature); // 泅犁 甸绊 乐绰 酒捞袍 == Flag ? InventorySlot* pExtraInventorySlot = pPlayerCreature->getExtraInventorySlot(); Item* pItem = pExtraInventorySlot->getItem(); Item* pTableItem = pZone->getItem( pPacket->getObjectID() ); // 弊繁 item捞 绝芭唱 // 矫眉啊 酒聪芭唱 // Monster矫眉啊 酒聪芭唱 // 标措啊 酒聪搁 if (pTableItem==NULL || pTableItem->getItemClass()!=Item::ITEM_CLASS_CORPSE || pTableItem->getItemType()!=MONSTER_CORPSE || !g_pFlagManager->isFlagPole( dynamic_cast<MonsterCorpse*>(pTableItem) ) ) { GCCannotAdd _GCCannotAdd; _GCCannotAdd.setObjectID(pPacket->getObjectID()); pPlayer->sendPacket(&_GCCannotAdd); //cout << "return: not Shrine" << endl; return; } // 己窜 MonsterCorpse* pCorpse = dynamic_cast<MonsterCorpse*>(pTableItem); Assert(pCorpse!=NULL); // 2鸥老 救俊 乐瘤 臼芭唱 // shrine栏肺 汲沥捞 救登绢 乐栏搁 if (!verifyDistance(pCreature, pCorpse->getX(), pCorpse->getY(), 2) || !pCorpse->isShrine()) { GCCannotAdd _GCCannotAdd; _GCCannotAdd.setObjectID(pPacket->getObjectID()); pPlayer->sendPacket(&_GCCannotAdd); //cout << "return: not in 2 tile or not shrine" << endl; return; } if (g_pFlagManager->putFlag( pPlayerCreature, pItem, pCorpse )) { // putCastleSymbol 救俊辑 贸府茄促. //cout << "标惯 踩疽瘤氛~" << endl; } else { GCCannotAdd _GCCannotAdd; _GCCannotAdd.setObjectID(pPacket->getObjectID()); pPlayer->sendPacket(&_GCCannotAdd); //cout << "return: not in 2 tile or not shrine" << endl; return; }#endif __END_CATCH}void CGRelicToObjectHandler::executeSweeper(CGRelicToObject* pPacket , Player* pPlayer) throw (Error){ __BEGIN_TRY#ifdef __GAME_SERVER__ GamePlayer* pGamePlayer = dynamic_cast<GamePlayer*>(pPlayer); Creature* pCreature = pGamePlayer->getCreature(); Zone* pZone = pCreature->getZone(); Assert(pZone!=NULL); LevelWarManager* pLevelWarManager = pZone->getLevelWarManager(); Assert(pLevelWarManager!=NULL); if ( !pLevelWarManager->hasWar() ) return; PlayerCreature* pPlayerCreature = dynamic_cast<PlayerCreature*>(pCreature); InventorySlot* pExtraInventorySlot = pPlayerCreature->getExtraInventorySlot(); Item* pItem = pExtraInventorySlot->getItem(); Item* pTableItem = pZone->getItem( pPacket->getObjectID() ); const SweeperInfo* pSweeperInfo = dynamic_cast<SweeperInfo*>(g_pSweeperInfoManager->getItemInfo(pItem->getItemType())); // 弊繁 item捞 绝芭唱 // 矫眉啊 酒聪芭唱 // Monster矫眉啊 酒聪芭唱 // 标措啊 酒聪搁 if (pTableItem==NULL || pTableItem->getItemClass()!=Item::ITEM_CLASS_CORPSE || pTableItem->getItemType()!=MONSTER_CORPSE || !pLevelWarManager->isSafe( dynamic_cast<MonsterCorpse*>(pTableItem) ) ) { GCCannotAdd _GCCannotAdd; _GCCannotAdd.setObjectID(pPacket->getObjectID()); pPlayer->sendPacket(&_GCCannotAdd); //cout << "return: not Shrine" << endl; return; } // 己窜 MonsterCorpse* pCorpse = dynamic_cast<MonsterCorpse*>(pTableItem); Assert(pCorpse!=NULL); // 2鸥老 救俊 乐瘤 臼芭唱 // shrine栏肺 汲沥捞 救登绢 乐栏搁 if (!verifyDistance(pCreature, pCorpse->getX(), pCorpse->getY(), 2)) { GCCannotAdd _GCCannotAdd; _GCCannotAdd.setObjectID(pPacket->getObjectID()); pPlayer->sendPacket(&_GCCannotAdd); //cout << "return: not in 2 tile or not shrine" << endl; return; } if (pLevelWarManager->putSweeper( pPlayerCreature, pItem, pCorpse )) { // Sweeper 甫 踩疽栏搁 啊瘤绊 乐带 扒 瘤况霖促 pPlayerCreature->deleteItemFromExtraInventorySlot(); GCDeleteInventoryItem gcDeleteInventoryItem; gcDeleteInventoryItem.setObjectID( pItem->getObjectID() ); pPlayerCreature->getPlayer()->sendPacket( &gcDeleteInventoryItem ); Effect* pEffect = pPlayerCreature->findEffect( Effect::EFFECT_CLASS_HAS_SWEEPER ); if (pEffect != NULL) { pEffect->setDeadline(0); } // 踩疽阑 锭 粮俊 矫胶袍 皋技瘤甫 谎妨霖促 char race[15]; if ( pCreature->isSlayer() ) { sprintf( race, g_pStringPool->c_str( STRID_SLAYER ) ); } else if ( pCreature->isVampire() ) { sprintf( race, g_pStringPool->c_str( STRID_VAMPIRE ) ); } else if ( pCreature->isOusters() ) { sprintf( race, g_pStringPool->c_str( STRID_OUSTERS ) ); } else { Assert(false); } char msg[100]; sprintf( msg , g_pStringPool->c_str( STRID_PUT_SWEEPER ) , pCreature->getName().c_str(), race, pSweeperInfo->getName().c_str() ); GCSystemMessage gcSystemMessage; gcSystemMessage.setMessage( msg ); pZone->broadcastPacket( &gcSystemMessage ); } else { GCCannotAdd _GCCannotAdd; _GCCannotAdd.setObjectID(pPacket->getObjectID()); pPlayer->sendPacket(&_GCCannotAdd); //cout << "return: not in 2 tile or not shrine" << endl; return; }#endif __END_CATCH}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?