actionstarteventquest.cpp

来自「dk1游戏的原代码文件,完整.编译系统redhat7.3,mysql 3.23 」· C++ 代码 · 共 122 行

CPP
122
字号
////////////////////////////////////////////////////////////////////////////////// Filename    : ActionStartEventQuest.cpp// Written By  : // Description :////////////////////////////////////////////////////////////////////////////////#include "ActionStartEventQuest.h"#include "Creature.h"#include "PlayerCreature.h"#include "NPC.h"#include "Player.h"#include "mission/QuestManager.h"#include "mission/QuestInfoManager.h"#include "mission/EventQuestAdvance.h"#include "mission/RewardClassInfoManager.h"#include "Gpackets/GCNPCResponse.h"#include <algorithm>////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////void ActionStartEventQuest::read (PropertyBuffer & propertyBuffer)    throw (Error){    __BEGIN_TRY	try 	{		m_QuestLevel = propertyBuffer.getPropertyInt("QuestLevel")-1;	} 	catch (NoSuchElementException & nsee)	{		throw Error(nsee.toString());	}	    __END_CATCH}////////////////////////////////////////////////////////////////////////////////// 咀记阑 角青茄促.////////////////////////////////////////////////////////////////////////////////void ActionStartEventQuest::execute (Creature * pCreature1 , Creature * pCreature2) 	throw (Error){	__BEGIN_TRY	Assert(pCreature1 != NULL);	Assert(pCreature2 != NULL);	Assert(pCreature1->isNPC());	Assert(pCreature2->isPC());	NPC* pNPC = dynamic_cast<NPC*>(pCreature1);	Assert( pNPC != NULL );	PlayerCreature* pPC = dynamic_cast<PlayerCreature*>(pCreature2);	Assert( pPC != NULL );	GCNPCResponse gcNPCResponse;	gcNPCResponse.setCode( NPC_RESPONSE_QUEST );	QuestInfoManager* pQIM = pNPC->getQuestInfoManager();	if ( pQIM == NULL )	{		gcNPCResponse.setParameter( START_FAIL_CANNOT_APPLY_QUEST );		pPC->getPlayer()->sendPacket( &gcNPCResponse );		gcNPCResponse.setCode( NPC_RESPONSE_QUIT_DIALOGUE );		pPC->getPlayer()->sendPacket( &gcNPCResponse );		return;	}	vector<QuestID_t> qList;	pQIM->getEventQuestIDs( m_QuestLevel, pPC, back_inserter(qList) );	if ( qList.empty() )	{		gcNPCResponse.setParameter( START_FAIL_CANNOT_APPLY_QUEST );		pPC->getPlayer()->sendPacket( &gcNPCResponse );		gcNPCResponse.setCode( NPC_RESPONSE_QUIT_DIALOGUE );		pPC->getPlayer()->sendPacket( &gcNPCResponse );		return;	}	QuestID_t	qID = qList[0];	//cout << "Start Event Quest : " << qID << "... " << pPC->getName() << endl;	pPC->getQuestManager()->adjustQuestStatus();	QuestMessage result = pQIM->startQuest( qID, pPC );//	gcNPCResponse.setParameter( (uint)result );//	pPC->getPlayer()->sendPacket( &gcNPCResponse );	pPC->sendCurrentQuestInfo();	gcNPCResponse.setCode( NPC_RESPONSE_QUIT_DIALOGUE );	pPC->getPlayer()->sendPacket( &gcNPCResponse );	__END_CATCH}////////////////////////////////////////////////////////////////////////////////// get debug string////////////////////////////////////////////////////////////////////////////////string ActionStartEventQuest::toString () const 	throw (){	__BEGIN_TRY	StringStream msg;	msg << "ActionStartEventQuest("	    << ")";	return msg.toString();	__END_CATCH}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?