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