cgnpctalkhandler.cpp
来自「dk1游戏的原代码文件,完整.编译系统redhat7.3,mysql 3.23 」· C++ 代码 · 共 269 行
CPP
269 行
//////////////////////////////////////////////////////////////////////////////// Filename : CGNPCTalkHandler.cpp// Written By : Reiot// Description : //////////////////////////////////////////////////////////////////////////////#include "CGNPCTalk.h"#ifdef __GAME_SERVER__ #include "GamePlayer.h" #include "NPC.h" #include "StringPool.h" #include "quest/TriggerManager.h" #include "quest/Trigger.h" #include "quest/Condition.h" #include "quest/Action.h" #include "Gpackets/GCNPCSayDynamic.h" #include "Gpackets/GCNPCResponse.h"#endifconst string DiffClanSpeech[] = { "版厚捍! 版厚捍! 咯扁 官配府狼 辆汗甸捞 魔涝秦吭促.", "栏褥? 捞巴篮.. 官配府狼 趋练甸狼 乔晨货! 靛叼绢 匙仇甸捞 喉扼靛丛狼 救侥贸鳖瘤 歹反洒妨 吭备唱!!", "匙 仇篮 穿备具? 皑洒 咯扁啊 绢叼扼绊.. Abscede Hinc!!"};//////////////////////////////////////////////////////////////////////////////// 敲饭捞绢啊 NPC甫 努腐且 版快, 努扼捞攫飘啊 CGNPCTalk 菩哦阑 辑滚肺// 傈价茄促. 辑滚绰 捞 菩哦阑 勤甸傅且 锭, NPC俊 CONDITION_TALKED_BY // 牧叼记 敲贰弊啊 难廉 乐栏搁, 飘府芭甫 沤祸窍搁辑 利例茄 飘府芭甫 茫酒辑// 楷包等 咀记阑 角青茄促.//////////////////////////////////////////////////////////////////////////////void CGNPCTalkHandler::execute (CGNPCTalk* pPacket , Player* pPlayer) throw (ProtocolException , Error){ __BEGIN_TRY __BEGIN_DEBUG_EX __BEGIN_DEBUG#ifdef __GAME_SERVER__ try { Assert(pPacket != NULL); Assert(pPlayer != NULL); GamePlayer* pGamePlayer = dynamic_cast<GamePlayer*>(pPlayer); Creature* pPC = pGamePlayer->getCreature(); Zone* pZone = pPC->getZone(); // 老窜 富阑 芭绰 PC啊 泅犁 混酒乐绰 惑怕咯具 茄促. // 捞 八荤甫 窍绰 捞蜡绰 刀俊 吝刀登绢 乐绰 浇饭捞绢啊, 矫埃 瞒肺 牢秦辑 // NPC茄抛 HEAL阑 夸没茄 流饶俊, 刀俊 狼秦辑 磷绢滚府搁, // 老窜 官蹿俊 静矾瘤霸 登绰单, 梆捞绢 NPC俊 狼秦辑 摹丰甫 罐霸 等促. // 捞 版快, HP绰 钱牢单 官蹿俊 静矾廉乐霸 等促. // 捞 富篮 PCManager::heartbeat()俊辑 killCreature肺 甸绢啊瘤 臼霸 等促绰 富捞促. // 澜. 肋 汲疙捞 登瘤 臼绰单, 窍扛瓢 NPC俊霸 富阑 吧妨搁 敲饭捞绢绰 混酒乐绢具 茄促. if (pPC->isDead()) { return; } Creature* pNPCBase = NULL; /* try { pNPCBase = pZone->getCreature(pPacket->getObjectID()); } catch (NoSuchElementException) { // 弊繁 NPC啊 绝促搁 府畔茄促. return; } */ // NoSuch力芭. by sigi. 2002.5.2 pNPCBase = pZone->getCreature(pPacket->getObjectID()); if (pNPCBase==NULL) { return; } NPC* pNPC = dynamic_cast<NPC*>(pNPCBase); // ObjectID啊 NPC啊 酒匆 荐档 乐菌促. 够鳖.. 荤扁牢啊? 菩哦 部牢扒啊? // 绢露电 公矫窍档废窍磊. // by sigi. 2002.11.25 if (pNPC==NULL) { return; } // 酒淬狼 己瘤俊辑绰 NPC客 NP狼 辆练阑 公矫茄促. // 己俊辑绰 辆练喊 NPC啊 促福促. if ( !pZone->isHolyLand() || pZone->isCastle() ) { // 轨颇捞绢啊 浇饭捞绢 NPC俊霸 富阑 吧菌阑 版快俊 公矫茄促. if (pNPC->getRace() == NPC_RACE_SLAYER && pPC->isVampire()) { // 老窜 努扼捞攫飘甫 困秦 OK菩哦阑 窃 朝赴促. GCNPCResponse gcNPCAskAnswer; pPlayer->sendPacket(&gcNPCAskAnswer); // 轨颇捞绢啊 浇饭捞绢 NPC俊霸 富阑 吧搁... GCNPCSayDynamic saypkt; saypkt.setObjectID(pNPC->getObjectID()); // Event 侩 NPC 牢 版快 促弗 富阑 茄促 ;; if ( pNPC->getNPCID() == 639 ) { saypkt.setMessage( g_pStringPool->c_str( STRID_EVENT_NPC_1 ) ); } else { saypkt.setMessage( g_pStringPool->c_str( STRID_ALERT_VAMPIRE ) ); } pPlayer->sendPacket(&saypkt); return; } // 酒快胶磐胶啊 浇饭捞绢 NPC俊霸 富阑 吧菌阑 版快俊 公矫茄促. else if (pNPC->getRace() == NPC_RACE_SLAYER && pPC->isOusters()) { // 老窜 努扼捞攫飘甫 困秦 OK菩哦阑 窃 朝赴促. GCNPCResponse gcNPCAskAnswer; pPlayer->sendPacket(&gcNPCAskAnswer); // 轨颇捞绢啊 浇饭捞绢 NPC俊霸 富阑 吧搁... GCNPCSayDynamic saypkt; saypkt.setObjectID(pNPC->getObjectID()); saypkt.setMessage( g_pStringPool->c_str( STRID_ALERT_OUSTERS_2 ) ); pPlayer->sendPacket(&saypkt); return; } // 浇饭捞绢啊 轨颇捞绢 NPC俊霸 富阑 吧绢档 公矫茄促. else if (pNPC->getRace() == NPC_RACE_VAMPIRE && pPC->isSlayer()) { // 老窜 努扼捞攫飘甫 困秦 OK菩哦阑 窃 朝赴促. GCNPCResponse gcNPCAskAnswer; pPlayer->sendPacket(&gcNPCAskAnswer); // 浇饭捞绢啊 轨颇捞绢 NPC俊霸 富阑 吧搁... GCNPCSayDynamic saypkt; saypkt.setObjectID(pNPC->getObjectID()); // Event 侩 NPC 牢 版快 促弗 富阑 茄促 ;; if ( pNPC->getNPCID() == 638 ) { saypkt.setMessage( g_pStringPool->c_str( STRID_EVENT_NPC_2 ) ); } else if ( pNPC->getNPCID() == 636 ) { saypkt.setMessage( g_pStringPool->c_str( STRID_EVENT_NPC_3 ) ); } else if ( pNPC->getNPCID() == 635 ) { saypkt.setMessage( g_pStringPool->c_str( STRID_EVENT_NPC_4 ) ); } else { saypkt.setMessage( g_pStringPool->c_str( STRID_ALERT_SLAYER ) ); } pPlayer->sendPacket(&saypkt); return; } // 酒快胶磐胶啊 轨颇捞绢 NPC俊霸 富阑 吧绢档 公矫茄促. else if (pNPC->getRace() == NPC_RACE_VAMPIRE && pPC->isOusters()) { // 老窜 努扼捞攫飘甫 困秦 OK菩哦阑 窃 朝赴促. GCNPCResponse gcNPCAskAnswer; pPlayer->sendPacket(&gcNPCAskAnswer); GCNPCSayDynamic saypkt; saypkt.setObjectID(pNPC->getObjectID()); saypkt.setMessage( g_pStringPool->c_str( STRID_ALERT_OUSTERS ) ); pPlayer->sendPacket(&saypkt); return; } // 浇饭捞绢啊 酒快胶磐胶 NPC俊霸 富阑 吧绢档 公矫茄促. else if (pNPC->getRace() == NPC_RACE_OUSTERS && pPC->isSlayer()) { // 老窜 努扼捞攫飘甫 困秦 OK菩哦阑 窃 朝赴促. GCNPCResponse gcNPCAskAnswer; pPlayer->sendPacket(&gcNPCAskAnswer); GCNPCSayDynamic saypkt; saypkt.setObjectID(pNPC->getObjectID()); saypkt.setMessage( g_pStringPool->c_str( STRID_ALERT_SLAYER_2 ) ); pPlayer->sendPacket(&saypkt); return; } // 轨颇捞绢啊 酒快胶磐胶 NPC俊霸 富阑 吧绢档 公矫茄促. else if (pNPC->getRace() == NPC_RACE_OUSTERS && pPC->isVampire()) { // 老窜 努扼捞攫飘甫 困秦 OK菩哦阑 窃 朝赴促. GCNPCResponse gcNPCAskAnswer; pPlayer->sendPacket(&gcNPCAskAnswer); GCNPCSayDynamic saypkt; saypkt.setObjectID(pNPC->getObjectID()); saypkt.setMessage( g_pStringPool->c_str( STRID_ALERT_VAMPIRE_2 ) ); pPlayer->sendPacket(&saypkt); return; } } // 鞍篮 轨颇捞绢尝府档 努罚捞 促弗 NPC老 版快 公矫茄促. // 捞 何盒狼 内靛绰 唱吝俊 促弗 规过栏肺 免仿秦具 且 巴捞促. // 泅犁绰 努罚捞 坷流 滴 啊瘤 挥捞扁 锭巩俊... // ..... // 努罚 茄啊瘤 观俊 决结~~/* if (pPC->isVampire() && pNPC->getRace() == NPC_RACE_VAMPIRE) { if (pPC->getClanType() != pNPC->getClanType()) { GCNPCResponse gcNPCAskAnswer; pPlayer->sendPacket(&gcNPCAskAnswer); GCNPCSayDynamic saypkt; saypkt.setObjectID(pNPC->getObjectID()); saypkt.setMessage(DiffClanSpeech[rand()%3]); pPlayer->sendPacket(&saypkt); return; } }*/ // 敲饭捞绢啊 富阑 吧菌阑 版快俊 馆览窍绰 咀记捞 乐促搁... const TriggerManager & triggerManager = pNPC->getTriggerManager(); if (triggerManager.hasCondition(Condition::CONDITION_TALKED_BY)) { const list<Trigger*> & triggers = triggerManager.getTriggers(); for (list<Trigger*>::const_iterator itr = triggers.begin() ; itr != triggers.end() ; itr ++) { Trigger* pTrigger = *itr; Assert(pTrigger != NULL); // check all condition after check main condition if (pTrigger->hasCondition(Condition::CONDITION_TALKED_BY) && pTrigger->isAllSatisfied(Trigger::PASSIVE_TRIGGER , pNPC , pPC)) { // 弥檬肺 惯斑等 飘府芭父 角青茄 促澜 break 茄促. pTrigger->activate(pNPC , pPC); break; } } } // 努扼捞攫飘绰 NPC甫 努腐沁阑 版快, 公炼扒 辑滚狼 览翠阑 扁促府扁 锭巩俊, // 弊繁 咀记捞 粮犁窍瘤 臼阑 锭 酒公 巴档 窍瘤 臼栏搁, 努扼捞攫飘啊 老辆狼 单靛遏(?) // 惑怕俊 狐瘤霸 等促. 弊巴阑 规瘤窍扁 困秦辑 措拳芒阑 摧栏扼绰 皋技瘤甫 焊郴霖促. else { GCNPCResponse gcNPCResponse; gcNPCResponse.setCode(NPC_RESPONSE_QUIT_DIALOGUE); pPlayer->sendPacket(&gcNPCResponse); } } catch (Throwable & t) { //cerr << "穿啊 NPC 坷宏璃飘 酒捞叼甫 捞惑窍霸 焊郴林匙?" << endl; //cerr << t.toString() << endl; } #endif __END_DEBUG __END_DEBUG_EX __END_CATCH}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?