⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 actiongivelotto.cpp

📁 天之炼狱1服务器端源文件游戏服务端不完整
💻 CPP
字号:
////////////////////////////////////////////////////////////////////////////////// Filename    : ActionGiveLotto.cpp// Written By  : // Description :////////////////////////////////////////////////////////////////////////////////#include "ActionGiveLotto.h"#include "Creature.h"#include "NPC.h"#include "GamePlayer.h"#include "PlayerCreature.h"#include "Properties.h"#include "Inventory.h"#include "mission/QuestManager.h"#include "mission/EventQuestAdvance.h"#include "Gpackets/GCSystemMessage.h"#include "Gpackets/GCNPCResponse.h"#include "Gpackets/GCDeleteInventoryItem.h"#include "Cpackets/CGLotterySelect.h"////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////void ActionGiveLotto::read (PropertyBuffer & propertyBuffer)    throw (Error){    __BEGIN_TRY	try 	{		// read script id		m_QuestLevel = propertyBuffer.getPropertyInt("QuestLevel")-1;	} 	catch (NoSuchElementException & nsee)	{		throw Error(nsee.toString());	}	    __END_CATCH}////////////////////////////////////////////////////////////////////////////////// 咀记阑 角青茄促.////////////////////////////////////////////////////////////////////////////////void ActionGiveLotto::execute (Creature * pCreature1 , Creature * pCreature2) 	throw (Error){	__BEGIN_TRY	Assert(pCreature1 != NULL);	Assert(pCreature2 != NULL);	Assert(pCreature1->isNPC());	Assert(pCreature2->isPC());	PlayerCreature* pPC = dynamic_cast<PlayerCreature*>(pCreature2);	Assert( pPC != NULL );	QuestID_t	qID;	int questLevel = m_QuestLevel;	if ( questLevel < 0 ) questLevel = pPC->getQuestManager()->getEventQuestAdvanceManager()->getQuestLevel() - 1;	cout << "Activated : " << toString() << " ... " << pPC->getName() << " ...  " << questLevel << endl;	EventQuestAdvance::Status status = pPC->getQuestManager()->getEventQuestAdvanceManager()->getStatus( questLevel );	int ownerQuestLevel = pPC->getQuestManager()->getEventQuestAdvanceManager()->getQuestLevel();	if ( 		( ownerQuestLevel > questLevel && status == EventQuestAdvance::EVENT_QUEST_ADVANCED )	||	( ( questLevel == 4 && ownerQuestLevel == -1 ) || pPC->getQuestManager()->successEventQuest( questLevel, qID ) )	)	{		GamePlayer* pGP = dynamic_cast<GamePlayer*>( pPC->getPlayer() );		Assert ( pGP != NULL );//		if ( g_pConfig->getPropertyInt( "IsNetMarble" ) || !pGP->isPayPlaying() )		if ( true )		{			pPC->getQuestManager()->getEventQuestAdvanceManager()->rewarded( questLevel );			pPC->getQuestManager()->getEventQuestAdvanceManager()->save();			if ( questLevel != 4 )				pPC->getQuestManager()->questRewarded( qID );			else				pPC->getQuestManager()->cancelQuest();			pPC->setLottoQuestLevel( questLevel );			list<Item*> iList;			pPC->getInventory()->clearQuestItem(iList);			list<Item*>::iterator itr = iList.begin();			list<Item*>::iterator endItr = iList.end();			for ( ; itr != endItr ; ++itr )			{				GCDeleteInventoryItem gcDII;				gcDII.setObjectID( (*itr)->getObjectID() );				pPC->getPlayer()->sendPacket( &gcDII );				(*itr)->destroy();				SAFE_DELETE( *itr );			}			iList.clear();			CGLotterySelect	cgLS;			cgLS.setType(TYPE_FINISH_SCRATCH);			cgLS.setQuestLevel(0);			cgLS.setGiftID(0);			CGLotterySelectHandler::execute( &cgLS, pPC->getPlayer() );//			cgLS.execute( pPC->getPlayer() );		}		else		{			Player* pPlayer = pCreature2->getPlayer();	//		pPlayer->sendPacket(&gcSM);			GCNPCResponse gcNPCResponse;			gcNPCResponse.setCode(NPC_RESPONSE_LOTTERY);			gcNPCResponse.setParameter( (uint)questLevel );			pPlayer->sendPacket( &gcNPCResponse );			filelog("EventQuest.log","ActionGiveLotto : %d to %s", questLevel, pPC->getName().c_str() );		}	}	GCNPCResponse gcNPCResponse;	gcNPCResponse.setCode(NPC_RESPONSE_QUIT_DIALOGUE);	pPC->getPlayer()->sendPacket( &gcNPCResponse );	__END_CATCH}////////////////////////////////////////////////////////////////////////////////// get debug string////////////////////////////////////////////////////////////////////////////////string ActionGiveLotto::toString () const 	throw (){	__BEGIN_TRY	StringStream msg;	msg << "ActionGiveLotto("		<< "QuestLevel : " << m_QuestLevel	    << ")";	return msg.toString();	__END_CATCH}

⌨️ 快捷键说明

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