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

📄 actionaskvariable.cpp

📁 天之炼狱1服务器端源文件游戏服务端不完整
💻 CPP
📖 第 1 页 / 共 2 页
字号:
////////////////////////////////////////////////////////////////////////////////// Filename    : ActionAskVariable.cpp// Written By  : // Description :////////////////////////////////////////////////////////////////////////////////#include "ActionAskVariable.h"#include "PlayerCreature.h"#include "NPC.h"#include "GamePlayer.h"#include "VariableInfo.h"#include "VariableBuffer.h"#include "CastleInfoManager.h"#include "StringStream.h"#include "Guild.h"#include "GuildManager.h"#include "WarSystem.h"#include "VariableManager.h"#include "MonsterInfo.h"#include "Slayer.h"#include "Vampire.h"#include "Ousters.h"#include "Gpackets/GCNPCAskVariable.h"#include "StringPool.h"#include "Gpackets/GCSystemMessage.h"#include "Gpackets/GCNPCResponse.h"#include <stdio.h>void convertCommaString( string& str );////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////void ActionAskVariable::read (PropertyBuffer & propertyBuffer)    throw (Error){    __BEGIN_TRY	try 	{		// read script id		m_ScriptID = propertyBuffer.getPropertyInt("ScriptID");		string buffer = propertyBuffer.getProperty("Variable");		SAFE_DELETE( m_pVariableBuffer );		m_pVariableBuffer = new VariableBuffer( buffer );	} 	catch (NoSuchElementException & nsee)	{		throw Error(nsee.toString());	}	    __END_CATCH}////////////////////////////////////////////////////////////////////////////////// 咀记阑 角青茄促.////////////////////////////////////////////////////////////////////////////////void ActionAskVariable::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 );	GCNPCAskVariable gcNPCAskVariable;	gcNPCAskVariable.setObjectID(pCreature1->getObjectID());	gcNPCAskVariable.setScriptID(m_ScriptID);	int count = m_pVariableBuffer->getCount();		for ( int i=0; i<count; i++ )	{		VariableInfo* pInfo = m_pVariableBuffer->getVariableInfo( i );				ScriptParameter* pParam = new ScriptParameter();		pParam->setName( pInfo->getName() );		string keyword = pInfo->getKeyword();		if ( keyword == "EntranceFee" )		{			// 涝厘丰甫 持绢霖促.			ZoneID_t zoneID = atoi( pInfo->getParameter(0).c_str() );			if ( zoneID == 0 )				throw Error("Invalid Script Variable. Keyword : EntranceFee. Invalid ZoneID");			PlayerCreature *pPC = dynamic_cast<PlayerCreature*>(pCreature2);			Gold_t value = g_pCastleInfoManager->getEntranceFee( zoneID, pPC );			Race_t race	 = g_pCastleInfoManager->getCastleInfo( zoneID )->getRace();			char strValue[20];			// 辆练傈里 吝老订 葛滴 公丰			// 辨靛傈里 吝老订 己俊 甸绢哎 荐 乐绰 辆练父 公丰			if ( g_pWarSystem->hasActiveRaceWar() || g_pWarSystem->hasCastleActiveWar( zoneID ) )			{//				sprintf( strValue, "公丰" );				sprintf( strValue, "%s", g_pStringPool->getString( STRID_FREE ).c_str() );			}			else if ( race == RACE_SLAYER )			{				char gold[15];				sprintf( gold, "%lu", value );				string sGold( gold );				convertCommaString( sGold );//				sprintf( strValue, "%s 饭捞", sGold.c_str() );				sprintf( strValue, "%s", (sGold + " " + g_pStringPool->getString( STRID_REI )).c_str() );			}			else			{				char gold[15];				sprintf( gold, "%lu", value );				string sGold( gold );				convertCommaString( sGold );//				sprintf( strValue, "%s 爸靛", sGold.c_str() );				sprintf( strValue, "%s", (sGold + " " + g_pStringPool->getString( STRID_GELD )).c_str() );			}			if ( g_pCastleInfoManager->isPossibleEnter( zoneID, pPC ) )				pParam->setValue( strValue );			else				pParam->setValue( g_pStringPool->getString( STRID_NO_ENTER ) );		}		else if ( keyword == "CastleOwner" )		{			// 己 林牢阑 眉农秦辑 持绢霖促.			ZoneID_t zoneID = atoi( pInfo->getParameter(0).c_str() );			if ( zoneID == 0 )				throw Error("Invalid Script Variable. Keyword : CastleOwner. Invalid ZoneID");			CastleInfo* pCastleInfo = g_pCastleInfoManager->getCastleInfo( zoneID );			string result;			if ( pCastleInfo != NULL )			{				if( pCastleInfo->isCommon() )				{					// 傍侩己捞促.					if( pCastleInfo->getRace() == Guild::GUILD_RACE_SLAYER )					{						// 浇饭捞绢 傍侩己捞促.//						result = "浇饭捞绢 傍侩己";						result = g_pStringPool->getString( STRID_SLAYER_COMMON_CASTLE );					}					else if ( pCastleInfo->getRace() == Guild::GUILD_RACE_VAMPIRE )					{						// 轨颇捞绢 傍侩己捞促.//						result = "轨颇捞绢 傍侩己";						result = g_pStringPool->getString( STRID_VAMPIRE_COMMON_CASTLE );					}					else					{//						result = "酒快胶磐令 傍侩己";						result = g_pStringPool->getString( STRID_OUSTERS_COMMON_CASTLE );					}				}				else				{					// 辨靛啊 家蜡茄 己捞促.					Guild* pGuild = g_pGuildManager->getGuild( pCastleInfo->getGuildID() );					if ( pGuild == NULL )//						result = "林牢绝绰 己";						result = g_pStringPool->getString( STRID_NO_MASTER_CASTLE );					else//						result = pGuild->getName() + ( (pGuild->getRace() == RACE_SLAYER)?"评":"努罚" ) + "狼 己";						result = pGuild->getName() + ( (pGuild->getRace() == RACE_SLAYER)?(g_pStringPool->getString( STRID_TEAM )):(g_pStringPool->getString( STRID_CLAN )) ) + g_pStringPool->getString( STRID_S_CASTLE );				}				pParam->setValue( result );			}			else			{				pParam->setValue( "" );			}		}		else if ( keyword == "CastleName" )		{			ZoneID_t zoneID = atoi( pInfo->getParameter(0).c_str() );			if ( zoneID == 0 )				throw Error("Invalid Script Variable. Keyword : CastleOwner. Invalid ZoneID");			CastleInfo* pCastleInfo = g_pCastleInfoManager->getCastleInfo( zoneID );			if ( pCastleInfo != NULL )			{				pParam->setValue( pCastleInfo->getName() );			}			else			{				pParam->setValue( "" );			}		}		else if ( keyword == "RedistGold" )		{			Gold_t price = g_pVariableManager->getVariable( VAMPIRE_REDISTRIBUTE_ATTR_PRICE );			char gold[15];			sprintf( gold, "%lu", price );			string sGold( gold );			convertCommaString( sGold );			pParam->setValue( sGold );		}		else if ( keyword == "CastleResurrectFee" )		{			ZoneID_t zoneID = atoi( pInfo->getParameter(0).c_str() );					CastleInfo* pCastleInfo = g_pCastleInfoManager->getCastleInfo( zoneID );			if ( pCastleInfo != NULL )			{				Gold_t value = pCastleInfo->getEntranceFee();				PlayerCreature *pPC = dynamic_cast<PlayerCreature*>(pCreature2);				if ( g_pCastleInfoManager->isCastleMember( zoneID, pPC ) )					value = 0;				char gold[15];				sprintf( gold, "%lu", value );				string sGold( gold );				convertCommaString( sGold );				char strValue[20];								if ( pCastleInfo->getRace() == RACE_SLAYER )				{//					sprintf( strValue, "%s 饭捞", sGold.c_str() );					sprintf( strValue, "%s", ( sGold + " " + g_pStringPool->getString( STRID_REI ) ).c_str() );				}				else if ( pCastleInfo->getRace() == RACE_VAMPIRE )				{//					sprintf( strValue, "%s 爸靛", sGold.c_str() );					sprintf( strValue, "%s", ( sGold + " " + g_pStringPool->getString( STRID_GELD ) ).c_str() );				}				else				{//					sprintf( strValue, "%s 磊靛", sGold.c_str() );					sprintf( strValue, "%s", ( sGold + " " + g_pStringPool->getString( STRID_ZARD ) ).c_str() );				}				pParam->setValue( strValue );			}			else			{				pParam->setValue( "" );			}		}		else if ( keyword == "EventQuestZone" )		{			int questLevel = atoi( pInfo->getParameter(0).c_str() );			if ( questLevel == 2 )			{				if ( pCreature2->isSlayer() )				{					Slayer* pSlayer = dynamic_cast<Slayer*>(pCreature2);					Attr_t	grade = pSlayer->getQuestGrade();					if ( grade < 61 )					{//						pParam->setValue("瘤窍荐肺");						pParam->setValue(g_pStringPool->getString( STRID_SLAYER_QUESTZONE_2_1 ));					}					else if ( grade < 96 )					{						pParam->setValue("俊浇扼聪酒 合辑");						pParam->setValue(g_pStringPool->getString( STRID_SLAYER_QUESTZONE_2_2 ));					}					else if ( grade < 131 )					{						pParam->setValue("俊浇扼聪酒 合悼");						pParam->setValue(g_pStringPool->getString( STRID_SLAYER_QUESTZONE_2_3 ));					}					else if ( grade < 171 )					{						pParam->setValue("俊浇扼聪酒 巢辑");						pParam->setValue(g_pStringPool->getString( STRID_SLAYER_QUESTZONE_2_4 ));					}					else if ( grade < 211 )					{						pParam->setValue("俊浇扼聪酒 带傈");						pParam->setValue(g_pStringPool->getString( STRID_SLAYER_QUESTZONE_2_5 ));					}					else if ( grade < 241 )					{						pParam->setValue("靛肺海鸥 巢辑");						pParam->setValue(g_pStringPool->getString( STRID_SLAYER_QUESTZONE_2_6 ));					}					else if ( grade < 271 )					{						pParam->setValue("靛肺海鸥 巢悼");						pParam->setValue(g_pStringPool->getString( STRID_SLAYER_QUESTZONE_2_7 ));					}					else if ( grade < 291 )					{						pParam->setValue("萍葛福龋荐 巢辑");						pParam->setValue(g_pStringPool->getString( STRID_SLAYER_QUESTZONE_2_8 ));					}					else if ( grade < 301 )					{						pParam->setValue("萍葛福龋荐 巢悼");						pParam->setValue(g_pStringPool->getString( STRID_SLAYER_QUESTZONE_2_9 ));					}					else					{						pParam->setValue("扼咳带傈 2摸");						pParam->setValue(g_pStringPool->getString( STRID_SLAYER_QUESTZONE_2_10 ));					}				}				else if ( pCreature2->isVampire() )				{					Vampire* pVampire = dynamic_cast<Vampire*>(pCreature2);					Level_t level = pVampire->getLevel();					if ( level < 11 )					{						pParam->setValue("官配府 带傈 2摸");						pParam->setValue(g_pStringPool->getString( STRID_VAMPIRE_QUESTZONE_2_1 ));					}					else if ( level < 21 )					{						pParam->setValue("覆焊 巢悼");						pParam->setValue(g_pStringPool->getString( STRID_VAMPIRE_QUESTZONE_2_2 ));					}					else if ( level < 31 )					{						pParam->setValue("覆焊 合悼");						pParam->setValue(g_pStringPool->getString( STRID_VAMPIRE_QUESTZONE_2_3 ));					}					else if ( level < 41 )					{						pParam->setValue("覆焊 合辑");						pParam->setValue(g_pStringPool->getString( STRID_VAMPIRE_QUESTZONE_2_4 ));					}					else if ( level < 51 )					{						pParam->setValue("萍葛福 龋荐 合悼");						pParam->setValue(g_pStringPool->getString( STRID_VAMPIRE_QUESTZONE_2_5 ));					}					else if ( level < 61 )					{						pParam->setValue("肺凋魂 巢辑");						pParam->setValue(g_pStringPool->getString( STRID_VAMPIRE_QUESTZONE_2_6 ));					}					else if ( level < 71 )					{						pParam->setValue("肺凋魂 巢悼");						pParam->setValue(g_pStringPool->getString( STRID_VAMPIRE_QUESTZONE_2_7 ));					}					else if ( level < 81 )					{						pParam->setValue("酒捞季 带傈 1摸");						pParam->setValue(g_pStringPool->getString( STRID_VAMPIRE_QUESTZONE_2_8 ));					}					else if ( level < 91 )					{						pParam->setValue("酒捞季 带傈 2摸");						pParam->setValue(g_pStringPool->getString( STRID_VAMPIRE_QUESTZONE_2_9 ));					}					else					{						pParam->setValue("酒淬狼 己瘤 悼率");						pParam->setValue(g_pStringPool->getString( STRID_VAMPIRE_QUESTZONE_2_10 ));					}				}				else if ( pCreature2->isOusters() )				{					Ousters* pOusters = dynamic_cast<Ousters*>(pCreature2);					Level_t level = pOusters->getLevel();					if ( level < 11 )					{						pParam->setValue("窍聪舅 带傈 1摸");						pParam->setValue(g_pStringPool->getString( STRID_OUSTERS_QUESTZONE_2_1 ));					}					else if ( level < 21 )					{						pParam->setValue("窍聪舅 带傈 2摸");						pParam->setValue(g_pStringPool->getString( STRID_OUSTERS_QUESTZONE_2_2 ));					}					else if ( level < 31 )					{						pParam->setValue("墨胶呕肺 合悼");						pParam->setValue(g_pStringPool->getString( STRID_OUSTERS_QUESTZONE_2_3 ));					}					else if ( level < 41 )					{						pParam->setValue("绊福绊官 磐澄");						pParam->setValue(g_pStringPool->getString( STRID_OUSTERS_QUESTZONE_2_4 ));					}					else if ( level < 51 )					{						pParam->setValue("靛肺海鸥 合悼");						pParam->setValue(g_pStringPool->getString( STRID_OUSTERS_QUESTZONE_2_5 ));					}					else if ( level < 61 )					{						pParam->setValue("靛肺海鸥 合辑");						pParam->setValue(g_pStringPool->getString( STRID_OUSTERS_QUESTZONE_2_6 ));					}					else if ( level < 71 )					{						pParam->setValue("肺凋魂 合悼");						pParam->setValue(g_pStringPool->getString( STRID_OUSTERS_QUESTZONE_2_7 ));					}					else if ( level < 81 )					{						pParam->setValue("肺凋魂 合辑");						pParam->setValue(g_pStringPool->getString( STRID_OUSTERS_QUESTZONE_2_8 ));					}					else if ( level < 91 )					{						pParam->setValue("扼季 郴己 2摸");						pParam->setValue(g_pStringPool->getString( STRID_OUSTERS_QUESTZONE_2_9 ));					}					else					{						pParam->setValue("扼咳 带傈 2摸");						pParam->setValue(g_pStringPool->getString( STRID_OUSTERS_QUESTZONE_2_10 ));					}				}			}			else if ( questLevel == 3 )			{				if ( pCreature2->isSlayer() )				{					pParam->setValue("俊浇扼聪酒 巢辑");					pParam->setValue(g_pStringPool->getString( STRID_SLAYER_MINE_ENTER ));				}				else if ( pCreature2->isVampire() )

⌨️ 快捷键说明

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