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

📄 variablemanager.cpp

📁 天之炼狱1服务器端源文件游戏服务端不完整
💻 CPP
📖 第 1 页 / 共 2 页
字号:
#include "VariableManager.h"#include "DB.h"#include "Properties.h"#include "SystemAvailabilitiesManager.h"#include <stdlib.h>extern void strlwr(char* str);//////////////////////////////////////////////////////////////////////////////// constructor//////////////////////////////////////////////////////////////////////////////VariableManager::VariableManager()	throw(Error){	__BEGIN_TRY	m_Variables.resize(VARIABLE_MAX);	m_Variables[STAR_RATIO] = 1000;	m_Variables[EVENT_ACTIVE] = 1;	m_Variables[EVENT_RATIO] = 1000;    m_Variables[ITEM_PROBE_RATIO] = 1;	m_Variables[EXP_RATIO] = 1;	m_Variables[COMBAT_BONUS_TIME] = 30;	// 30盒	m_Variables[COMBAT_SLAYER_HP_BONUS_RATIO] = 0;	m_Variables[COMBAT_VAMPIRE_HP_BONUS_RATIO] = 0;	m_Variables[COMBAT_SLAYER_DAMAGE_BONUS]= 0;	m_Variables[COMBAT_VAMPIRE_DAMAGE_BONUS]= 0;	m_Variables[PREMIUM_EXP_BONUS_PERCENT] = 150; // 150%	m_Variables[PREMIUM_ITEM_PROBE_PERCENT] = 220; // 220%	m_Variables[ZONE_GROUP_BALANCING_MINUTE] = 4*7*24*60; // 4林老	m_Variables[GAMBLE_ITEM_TYPE_RATIO] = 100;	// 100%	m_Variables[GAMBLE_ITEM_OPTION_RATIO] = 100;	// 100%	m_Variables[SUMMON_MOTORCYCLE] = 0;	m_Variables[ENEMY_LIMIT_TIME] = 300; // 5盒 	m_Variables[RARE_ITEM_RATIO] = 100; // 100%	m_Variables[UNIQUE_ITEM_RATIO] = 100; // 100%	m_Variables[ACTIVE_MASTER_LAIR] = 0;	m_Variables[RETRY_MASTER_LAIR] = 0;	m_Variables[HARVEST_FESTIVAL_ITEM_RATIO] = 100;	// 100%	// [付胶磐 软趋 规侥]	// HP啊 70% 捞惑老锭绰 软趋窍瘤 臼绊	// HP啊 70%老锭 10%狼 犬伏肺 软趋窍绊	//      50%     20%	// HP啊 30%老锭 30%狼 犬伏肺 软趋茄促.	// HP啊 30%捞窍老锭绰 30%狼 犬伏肺 软趋茄促.	m_Variables[MASTER_BLOOD_DRAIN_START_HP] 	= 70;	m_Variables[MASTER_BLOOD_DRAIN_START_BD] 	= 10;	m_Variables[MASTER_BLOOD_DRAIN_END_HP] 	= 30;	m_Variables[MASTER_BLOOD_DRAIN_END_BD] 	= 30;	m_Variables[ACTIVE_CHIEF_MONSTER] = 0;	m_Variables[CHIEF_MONSTER_RARE_ITEM_RATIO] = 0;	m_Variables[NEWBIE_TRANSPORT_TO_GUILD] = 1;	// 2002.11.19	m_Variables[FREE_PLAY_SLAYER_DOMAIN_SUM] = 30;	m_Variables[FREE_PLAY_VAMPIRE_LEVEL] = 30;	// 2002.12.10	m_Variables[LOG_INCOMING_CONNECTION] = false;	// 2002.12.11	m_Variables[CHRISTMAS_FIRE_CRACKER_RATIO] = 0;	m_Variables[CHRISTMAS_TREE_PART_RATIO] = 0;	// 2002.12.12	m_Variables[CHRISTMAS_GIFT_BOX_RATIO] = 0;	// 2002.12.17	m_Variables[CHRISTMAS_TREE_DECAY_TIME] = 6*60*60*10;	// 2002.12.31	m_Variables[MASTER_LAIR_PLAYER_NUM] = 15;	m_Variables[RANK_EXP_GAIN_PERCENT] 	= 100;	// 100捞搁 盔贰 弊措肺	m_Variables[ITEM_LUCK_PERCENT] 		= 100;	// 200捞搁 滴硅(200%)扼绰 狼固促.	// 措冠 捞亥飘 侩 ( code name : lotto event )	// 2003. 1. 12 by bezz. Sequoia. dew	m_Variables[LOTTO_ITEM_RATIO]		= 0;	m_Variables[LOTTO_ITEM_BONUS_NUM]	= 0;	m_Variables[LOTTO_SKULL_RATIO]		= 0;	m_Variables[PREMIUM_HALF_EVENT]		= false;	// 2003. 1. 20 by bezz, Sequoia	m_Variables[COMMON_CASTLE_ENTRANCE_FEE]	= 1000;	m_Variables[GUILD_CASTLE_ENTRANCE_FEE] = 10000;	m_Variables[COMMON_CASTLE_ITEM_TAX_RATIO] = 110;	m_Variables[GUILD_CASTLE_ITEM_TAX_RATIO] = 150;	m_Variables[WAR_REGISTRATION_FEE] 	= 50000000;	m_Variables[GUILD_WAR_TIME] 	= 1*60*60;	// 1矫埃	m_Variables[RACE_WAR_TIME] 		= 3*60*60;	// 3矫埃	m_Variables[WAR_PERIOD_WEEK] 	= true;		// 傈里篮 茄 林 窜困狼 林扁甫 啊柳促.	m_Variables[WAR_ACTIVE] 		= false;	// 傈里 扁瓷捞 累悼窍瘤 臼绰促.	m_Variables[RACE_WAR_TIMEBAND]	= 2;		// 辆练 傈里矫 矫埃	m_Variables[AUTO_START_RACE_WAR]= false;	// 辆练 傈里阑 磊悼栏肺 矫累窍绰啊?	m_Variables[ACTIVATE_COUPLE] = false;	// 目敲捞 己荤瞪 荐 乐绰 扁埃牢啊?	m_Variables[ACTIVE_RACE_WAR_LIMITER] = true;	// 辆练 傈里 曼啊 牢盔 力茄	m_Variables[CHIEF_ITEM_BONUS_NUM] = 0;		// 摹橇 阁胶磐 眠啊 酒捞袍 俺荐	m_Variables[ACTIVE_EVENT_GIVE_ITEM] = false;		// 酒捞袍 林绰 捞亥飘	m_Variables[VAMPIRE_REDISTRIBUTE_ATTR_PRICE] = 1000000;	// 瓷仿摹 犁盒硅 厚侩	m_Variables[ACTIVATE_COUPLE] = true;		// 目敲 扁瓷	m_Variables[CAN_RECOUPLE] = false;			// 犁去(?) 捞扼扁焊窜 促矫 目敲捞 瞪 荐 乐绰啊	m_Variables[GUILD_WAR_ACTIVE] = false;		// 辨靛傈阑 窍绰啊?	m_Variables[FREE_PLAY_OUSTERS_LEVEL] = 30;	// 酒快胶磐胶肺 公丰肺 敲饭捞且 荐 乐绰 饭骇	m_Variables[CAN_APPLY_QUEST] = true;	// 涅胶飘甫 脚没且 荐 乐绰啊	m_Variables[SEND_QUEST_INFO] = false;	// 涅胶飘 沥焊甫 焊郴拎具 窍绰啊	m_Variables[CAN_BUY_SHOP] = true;	m_Variables[PCROOM_EXP_BONUS] = 100;	m_Variables[PCROOM_ITEM_RATIO_BONUS] = 100;	m_Variables[MONEY_TRACE_LOG_LIMIT] = 5000000;	m_Variables[PC_ROOM_LOTTO_EVENT] = false;	// 乔矫规 汗鼻 捞亥飘 咯何	m_Variables[ACTIVE_FLAG_WAR] = false;	// 标惯化扁 角青 咯何	m_Variables[KILL_DAEMONCTL] = false;	// daemonctl2 磷捞绰 芭 咯何	m_Variables[EVENT_MOON_CARD] = false;	// daemonctl2 磷捞绰 芭 咯何	m_Variables[FULL_MOON_CARD_RATIO] = 3000;	m_Variables[HALF_MOON_CARD_RATIO] = 100;	m_Variables[NEW_MOON_CARD_RATIO] = 200;	m_Variables[OLD_MOON_CARD_RATIO] = 1000;	m_Variables[ACTIVE_LEVEL_WAR] = 1000;	m_Variables[RACE_WAR_HP_BONUS] = 0;	m_Variables[HEAD_COUNT] = 0;	m_Variables[HEAD_PRICE_BONUS] = 100;	m_Variables[LEVEL_WAR_ZONE_FREE_ENTER] = false;	m_Variables[PET_EXP_RATIO] = 100;	m_Variables[EVENT_LUCKY_BAG] = false;	m_Variables[GREEN_LUCKY_BAG_RATIO] = 150;	m_Variables[BLUE_LUCKY_BAG_RATIO] = 1000;	m_Variables[GOLD_LUCKY_BAG_RATIO] = 5000;	m_Variables[RED_LUCKY_BAG_RATIO] = 20000;	m_Variables[EVENT_GIFT_BOX] = false;	m_Variables[RED_GIFT_BOX_RATIO] = 10000;	m_Variables[BLUE_GIFT_BOX_RATIO] = 10000;	m_Variables[GREEN_GIFT_BOX_RATIO] = 10000;	m_Variables[YELLOW_GIFT_BOX_RATIO] = 10000;	m_Variables[NETMARBLE_CARD_RATIO] = 0;	m_Variables[NETMARBLE_CARD_EVENT] = 0;	m_Variables[PET_FOOD_EVENT] = 0;	m_Variables[HIGHER_PET_FOOD_RATIO] = 30;	m_Variables[PET_FOOD_RATIO] = 125;	m_Variables[RACE_PET_FOOD_RATIO] = 30;	m_Variables[SLAYER_HP_RATIO] = 100;	m_Variables[VAMPIRE_HP_RATIO] = 100;	m_Variables[OUSTERS_HP_RATIO] = 100;	m_Variables[MONSTER_HP_RATIO] = 100;	m_Variables[MONSTER_EXP_RATIO] = 100;	m_Variables[CLOVER_EVENT] = 0;	m_Variables[CLOVER_RATIO] = 0;	m_Variables[MONSTER_DAMAGE_RATIO] = 100;	m_Variables[RACE_PET_QUEST] = 0;	__END_CATCH}//////////////////////////////////////////////////////////////////////////////// destructor//////////////////////////////////////////////////////////////////////////////VariableManager::~VariableManager() 	throw(Error){	__BEGIN_TRY	__END_CATCH}void VariableManager::init()	throw(Error){	__BEGIN_TRY	m_VariableNames.clear();	for (int i=0; i<VARIABLE_MAX; i++)	{		char str[256];		strcpy(str, VariableType2String[i].c_str());		strlwr(str);		m_VariableNames[str] = (VariableType)i;	}	load();	// 漂喊洒 促弗 檬扁蔼阑 汲沥窍绰 版快	setVariable( AUTO_START_RACE_WAR, g_pConfig->getPropertyInt("ActiveRaceWar") );	setVariable( GUILD_WAR_ACTIVE, g_pConfig->getPropertyInt("ActiveGuildWar") );	setVariable( ACTIVE_FLAG_WAR, g_pConfig->getPropertyInt("ActiveFlagWar") );	setVariable( ACTIVE_LEVEL_WAR, g_pConfig->getPropertyInt("ActiveLevelWar") );	setVariable( HEAD_COUNT, g_pConfig->getPropertyInt("HeadCount") );	setVariable( KILL_DAEMONCTL, 0 );	if ( !SystemAvailabilitiesManager::getInstance()->isAvailable( SystemAvailabilitiesManager::SYSTEM_HOLY_LAND_WAR ) )		setVariable( WAR_ACTIVE, 0 );	if ( !SystemAvailabilitiesManager::getInstance()->isAvailable( SystemAvailabilitiesManager::SYSTEM_GUILD_WAR ) )		setVariable( GUILD_WAR_ACTIVE, 0 );	if ( !SystemAvailabilitiesManager::getInstance()->isAvailable( SystemAvailabilitiesManager::SYSTEM_RACE_WAR ) )		setVariable( AUTO_START_RACE_WAR, 0 );	if ( !SystemAvailabilitiesManager::getInstance()->isAvailable( SystemAvailabilitiesManager::SYSTEM_FLAG_WAR ) )		setVariable( ACTIVE_FLAG_WAR, 0 );	if ( !SystemAvailabilitiesManager::getInstance()->isAvailable( SystemAvailabilitiesManager::SYSTEM_MASTER_LAIR ) )		setVariable( ACTIVE_MASTER_LAIR, 0 );	__END_CATCH}void VariableManager::load()	throw(Error){	__BEGIN_TRY	Statement* pStmt = NULL;	Result*    pResult = NULL;		BEGIN_DB	{		pStmt = g_pDatabaseManager->getConnection("DARKEDEN")->createStatement();		pResult = pStmt->executeQuery("SELECT MAX(attrID) FROM AttrInfo");		if (pResult->getRowCount() <= 0)		{			SAFE_DELETE(pStmt);			throw Error("VariableManager::load(): attrID MAX蔼阑 备且 荐 绝嚼聪促.");		}		pResult->next();		int maxAttr = pResult->getInt(1);		m_Variables.clear();		m_Variables.resize( max((maxAttr+1), (int)VARIABLE_MAX) );		pResult = pStmt->executeQuery("SELECT attrID, attr1, attr2 FROM AttrInfo");		if(pResult->getRowCount() <= 0)		{			SAFE_DELETE(pStmt);			throw Error("VariableManager::load(): 蔼捞 窍唱档 粮犁窍瘤 臼嚼聪促");		}		while(pResult->next())		{			VariableType    attrID = (VariableType)pResult->getInt(1);			int    			attr1  = pResult->getInt(2);			//int    			attr2  = pResult->getInt(3);			setVariable(attrID, attr1);			cout << toString(attrID).c_str() << endl;		}		SAFE_DELETE(pStmt);	}	END_DB(pStmt);	__END_CATCH}VariableType     VariableManager::getVariableType(const string& variableName) const{	char str[256];	strcpy(str, variableName.c_str());	strlwr(str);	VARIABLE_NAME::const_iterator itr = m_VariableNames.find( str );	if (itr==m_VariableNames.end())	{		return VARIABLE_MAX;	}	return itr->second;}void VariableManager::setVariable(VariableType vt, const string& strVariable){	int value = atoi(strVariable.c_str());	if (value==0)	{		if (strcasecmp(strVariable.c_str(), "on")==0)		{			setVariable(vt, 1);		}		else if (strcasecmp(strVariable.c_str(), "off")==0)		{			setVariable(vt, 0);		}		else		{			setVariable(vt, 0);		}	}	else	{		setVariable(vt, value);	}}void VariableManager::setVariable(VariableType vt, int value){ 	try {		// RACE_WAR_TIMEBAND 裹困 眉农		if ( vt == RACE_WAR_TIMEBAND )		{			if ( value < 0 || value > 3 )				return;		}		m_Variables[vt] = value; 		Statement* pStmt = NULL;		//Result*    pResult = NULL;				BEGIN_DB		{			pStmt = g_pDatabaseManager->getConnection("DARKEDEN")->createStatement();			pStmt->executeQuery("UPDATE AttrInfo SET attr1=%d WHERE attrID=%d", value, (int)vt);			SAFE_DELETE(pStmt);		}		END_DB(pStmt)			} catch (Throwable& t){		filelog("variableManagerError.log", "%s", t.toString().c_str());	}}string   VariableManager::toString(VariableType vt) const{	StringStream msg;	int attr1 = m_Variables[vt];	switch (vt)	{		case EVENT_ACTIVE:			msg << "Event惯积咯何: " << attr1;			break;		case EVENT_RATIO:			msg << "Event惯积后档: " << attr1;			break;		case ITEM_PROBE_RATIO:			msg << "Item眠啊惯积犬伏:  " << attr1;			break;		case EXP_RATIO:			msg << "版氰摹 眠啊 惯积犬伏: " << attr1;			break;		case COMBAT_BONUS_TIME:			msg << "傈里 铰府 蜡瘤矫埃: " << attr1;			break;		case COMBAT_SLAYER_HP_BONUS_RATIO:			msg << "浇饭捞绢 傈里 HP 焊呈胶: " << attr1;			break;		case COMBAT_VAMPIRE_HP_BONUS_RATIO:			msg << "轨颇捞绢 傈里 HP 焊呈胶: " << attr1;			break;		case PREMIUM_EXP_BONUS_PERCENT:			msg << "橇府固决 荤侩磊狼 版氰摹 焊呈胶: " << attr1;			break;		case PREMIUM_ITEM_PROBE_PERCENT:			msg << "橇府固决 粮狼 酒捞袍 风泼 犬伏: " << attr1;			break;		case ZONE_GROUP_BALANCING_MINUTE:			msg << "ZoneGroupBalancing 矫埃 林扁: " << attr1 << "盒";			break;		case GAMBLE_ITEM_TYPE_RATIO:			msg << "胺喉 ItemType 犬伏: " << attr1;			break;		case GAMBLE_ITEM_OPTION_RATIO:

⌨️ 快捷键说明

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