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 + -
显示快捷键?