📄 variablemanager.cpp
字号:
#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 + -