📄 actionaskvariable.cpp
字号:
////////////////////////////////////////////////////////////////////////////////// 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 + -