cgnpcaskanswerhandler.cpp
来自「天之炼狱1服务器端源文件游戏服务端不完整」· C++ 代码 · 共 111 行
CPP
111 行
//////////////////////////////////////////////////////////////////////////////// Filename : CGNPCAskAnswer.cpp// Written By : excel96// Description : //////////////////////////////////////////////////////////////////////////////#include "CGNPCAskAnswer.h"#ifdef __GAME_SERVER__ #include "GamePlayer.h" #include "NPC.h" #include <fstream.h> #include "quest/TriggerManager.h" #include "quest/Trigger.h" #include "quest/Condition.h" #include "quest/Action.h" #include "Gpackets/GCNPCResponse.h"#endif//////////////////////////////////////////////////////////////////////////////// 敲饭捞绢啊 NPC甫 努腐且 版快, 努扼捞攫飘啊 CGNPCAskAnswer 菩哦阑// 辑滚肺 傈价茄促. 辑滚绰 捞 菩哦阑 勤甸傅且 锭,// NPC俊 CONDITION_TALKED_BY 牧叼记 敲贰弊啊 难廉 乐栏搁,// 飘府芭甫 沤祸窍搁辑 利例茄 飘府芭甫 茫酒辑 楷包等 咀记阑 角青茄促.//////////////////////////////////////////////////////////////////////////////void CGNPCAskAnswerHandler::execute (CGNPCAskAnswer* pPacket , Player* pPlayer) throw (ProtocolException , Error){ __BEGIN_TRY __BEGIN_DEBUG_EX#ifdef __GAME_SERVER__ Assert(pPacket != NULL); Assert(pPlayer != NULL); GamePlayer* pGamePlayer = dynamic_cast<GamePlayer*>(pPlayer); Creature* pPC = pGamePlayer->getCreature(); Creature* pCreature = NULL; if (pPC == NULL) return; Zone* pZone = pPC->getZone(); if (pZone == NULL) return; /* try { pCreature = pZone->getCreature(pPacket->getObjectID()); } catch (NoSuchElementException) { //cout << "咯扁 NPC 绝促~" << endl; pCreature = NULL; } */ //cout << pPacket->toString().c_str() << endl; // NoSuch力芭. by sigi. 2002.5.2 pCreature = pZone->getCreature(pPacket->getObjectID()); if (pCreature == NULL || !pCreature->isNPC()) { GCNPCResponse okpkt; pPlayer->sendPacket(&okpkt); //cout << okpkt.toString().c_str() << endl; return; } NPC* pNPC = dynamic_cast<NPC*>(pCreature); COND_ANSWERED_BY cond; cond.ScriptID = pPacket->getScriptID(); cond.AnswerID = pPacket->getAnswerID(); // get NPC's trigger manager const TriggerManager & triggerManager = pNPC->getTriggerManager(); // check main condition if (triggerManager.hasCondition(Condition::CONDITION_ANSWERED_BY)) { const list<Trigger*> & triggers = triggerManager.getTriggers(); for (list<Trigger*>::const_iterator itr = triggers.begin() ; itr != triggers.end() ; itr ++) { Trigger* pTrigger = *itr; if (pTrigger == NULL) { //cout << "*** shit trigger is NULL ***"; return; } // check all condition after check main condition if (pTrigger->hasCondition(Condition::CONDITION_ANSWERED_BY) && pTrigger->isAllSatisfied(Trigger::PASSIVE_TRIGGER , pNPC , pPC, (void*)&cond)) { // 弥檬肺 惯斑等 飘府芭父 角青茄 促澜 break 茄促. pTrigger->activate(pNPC , pPC); break; } } }#endif __END_DEBUG_EX __END_CATCH}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?