actionwarregistration.cpp

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

CPP
183
字号
////////////////////////////////////////////////////////////////////////////////// Filename    : ActionWarRegistration.cpp// Written By  : // Description :////////////////////////////////////////////////////////////////////////////////#include "ActionWarRegistration.h"#include "Creature.h"#include "NPC.h"#include "GamePlayer.h"#include "GuildWar.h"#include "WarScheduler.h"#include "GuildManager.h"#include "Guild.h"#include "Zone.h"#include "ZoneUtil.h"#include "PlayerCreature.h"#include "VariableManager.h"#include "Properties.h"#include "CastleInfoManager.h"#include "Gpackets/GCNPCResponse.h"#include "Gpackets/GCModifyInformation.h"#include "SystemAvailabilitiesManager.h"////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////void ActionWarRegistration::read (PropertyBuffer & propertyBuffer)    throw (Error){    __BEGIN_TRY	try 	{		// read script id		m_ZoneID = propertyBuffer.getPropertyInt("ZoneID");	} 	catch (NoSuchElementException & nsee)	{		throw Error(nsee.toString());	}	    __END_CATCH}////////////////////////////////////////////////////////////////////////////////// 咀记阑 角青茄促.////////////////////////////////////////////////////////////////////////////////void ActionWarRegistration::execute (Creature * pCreature1 , Creature * pCreature2) 	throw (Error){	__BEGIN_TRY	Assert(pCreature1 != NULL);	Assert(pCreature2 != NULL);	Assert(pCreature1->isNPC());	Assert(pCreature2->isPC());	SYSTEM_RETURN_IF_NOT( SYSTEM_GUILD_WAR );	GCNPCResponse gcNPCResponse;	PlayerCreature* pPC = dynamic_cast<PlayerCreature*>( pCreature2 );	GuildID_t guildID = pPC->getGuildID();	if ( !g_pVariableManager->isWarActive() || !g_pVariableManager->isActiveGuildWar() )	{		gcNPCResponse.setCode( NPC_RESPONSE_WAR_UNAVAILABLE );		pPC->getPlayer()->sendPacket( &gcNPCResponse );		return;	}	if ( !g_pGuildManager->isGuildMaster( guildID, pPC ) )	{		gcNPCResponse.setCode( NPC_RESPONSE_NOT_GUILD_MASTER );		pPC->getPlayer()->sendPacket( &gcNPCResponse );		return;	}	Gold_t warRegistrationFee = g_pVariableManager->getVariable( WAR_REGISTRATION_FEE );	if ( pPC->getGold() < warRegistrationFee )	{		gcNPCResponse.setCode( NPC_RESPONSE_NOT_ENOUGH_MONEY );		pPC->getPlayer()->sendPacket( &gcNPCResponse );		return;	}	Zone* pZone = getZoneByZoneID( m_ZoneID );	Assert( pZone != NULL );	Assert( pZone->isCastle() );	WarScheduler* pWarScheduler = pZone->getWarScheduler();	Assert( pWarScheduler != NULL );	/* 己阑 家蜡沁绢档 傈里 脚没捞 登档废 荐沥窃 (磊扁 己俊绰 脚没 给窍摆瘤 -_-;;)	// 捞固 己阑 家蜡茄 辨靛牢啊?	if ( g_pGuildManager->hasCastle( guildID ) )	{		gcNPCResponse.setCode( NPC_RESPONSE_ALREADY_HAS_CASTLE );		pPC->getPlayer()->sendPacket( &gcNPCResponse );		return;	}	*///	ServerID_t serverID;//	ZoneID_t zoneID;//	bool bHasCastle = g_pGuildManager->hasCastle( guildID , serverID , zoneID );//	if ( bHasCastle && serverID == g_pConfig->getPropertyInt( "ServerID" ) && zoneID == m_ZoneID )	CastleInfo* pCastleInfo = g_pCastleInfoManager->getCastleInfo( m_ZoneID );	GuildID_t ownerGuildID = pCastleInfo->getGuildID();	if ( guildID == ownerGuildID )	{		gcNPCResponse.setCode( NPC_RESPONSE_ALREADY_HAS_CASTLE );		pPC->getPlayer()->sendPacket( &gcNPCResponse );		return;	}	// 捞固 傈里 脚没阑 沁绰啊?	if ( g_pGuildManager->hasWarSchedule( guildID ) )	{		gcNPCResponse.setCode( NPC_RESPONSE_WAR_ALREADY_REGISTERED );		pPC->getPlayer()->sendPacket( &gcNPCResponse );		return;	}	// 傈里 胶纳领捞 促 谩绰啊?	if ( !pWarScheduler->canAddWar( WAR_GUILD ) )	{		gcNPCResponse.setCode( NPC_RESPONSE_WAR_SCHEDULE_FULL );		pPC->getPlayer()->sendPacket( &gcNPCResponse );		return;	}	GuildWar* pWar = new GuildWar( m_ZoneID, guildID, War::WAR_STATE_WAIT );	pWar->setRegistrationFee( warRegistrationFee );	if ( !pWarScheduler->addWar( pWar ) )	{		gcNPCResponse.setCode( NPC_RESPONSE_WAR_SCHEDULE_FULL );		pPC->getPlayer()->sendPacket( &gcNPCResponse );		SAFE_DELETE( pWar );		return;	}	pPC->decreaseGoldEx( warRegistrationFee );	GCModifyInformation gcMI;	gcMI.addLongData( MODIFY_GOLD, pPC->getGold() );	pPC->getPlayer()->sendPacket( &gcMI );	gcNPCResponse.setCode( NPC_RESPONSE_WAR_REGISTRATION_OK );	pPC->getPlayer()->sendPacket( &gcNPCResponse );	return;	__END_CATCH}////////////////////////////////////////////////////////////////////////////////// get debug string////////////////////////////////////////////////////////////////////////////////string ActionWarRegistration::toString () const 	throw (){	__BEGIN_TRY	StringStream msg;	msg << "ActionWarRegistration("	    << ",ZoneID:"  << (int)m_ZoneID	    << ")";	return msg.toString();	__END_CATCH}

⌨️ 快捷键说明

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