654 lines
15 KiB
C++
654 lines
15 KiB
C++
|
||
#pragma once
|
||
|
||
#define MAXMONTHCARDCFGNUM 13
|
||
#define MAXCOLORCARDLEVEL 7
|
||
|
||
//NPC雕像类型
|
||
enum NpcStatueType
|
||
{
|
||
stNormal = 0,
|
||
stRsCastellan = 1, //本服沙巴克城主雕像
|
||
stCsCastellan = 2, //跨服沙巴克城主雕像
|
||
stRsVocation = 3, //本服职业雕像
|
||
stCsVocation = 4, //跨服职业雕像
|
||
};
|
||
|
||
typedef struct tagHostReplaceCfg{
|
||
int nId;
|
||
int nPrice;
|
||
int nItemId;
|
||
|
||
tagHostReplaceCfg()
|
||
{
|
||
memset(this, 0, sizeof(*this));
|
||
}
|
||
}gHostReplaceCfg;
|
||
|
||
|
||
|
||
class CRanking;
|
||
|
||
//雕像NPC配置
|
||
typedef struct tagNPCStatue
|
||
{
|
||
BYTE btType; //雕像类型
|
||
BYTE btParam; //职业
|
||
char sSceneName[32]; //场景名字
|
||
char sNpcName[32]; //NPC名字
|
||
int nMaleModelId; //男性模型ID
|
||
int nFemaleModelId; //女性模型ID
|
||
}NPCSTATUE,*PNPCSTATUE;
|
||
|
||
|
||
typedef struct tagSmileTalk
|
||
{
|
||
char sTalk[200];
|
||
}SmileTalk, *PSmileTalk;
|
||
|
||
typedef struct tagSmileTalkList
|
||
{
|
||
int nSmileId;
|
||
int nCount;
|
||
SmileTalk * pSmileTalk;
|
||
}SmileTalkList, *PSmileTalkList;
|
||
|
||
typedef struct tagAllSmileTalks
|
||
{
|
||
int nCount;
|
||
SmileTalkList * pSmileList;
|
||
}AllSmileTalkList, *PAllSmileTalkList;
|
||
|
||
/// 排行榜属性添加配置
|
||
typedef struct tagRankProp
|
||
{
|
||
char rankName[32]; ///< 关联的排行榜名字
|
||
int nValue; ///< 值限制, 大于等于该值才加进来显示
|
||
DataList<CStdItem::AttributeGroup> props; //属性
|
||
CRanking *pRanking; ///< 关联哪一个排行榜
|
||
tagRankProp()
|
||
{
|
||
rankName[0] = NULL;
|
||
nValue = 0;
|
||
pRanking = NULL;
|
||
}
|
||
}RANKPROP, *PRANKPROP;
|
||
|
||
//工资加成配置配置
|
||
typedef struct tagSalary
|
||
{
|
||
WORD nBegin; //开服天数区间开始
|
||
WORD nOver; //开服天数区间结束 -1代表以后
|
||
BYTE nRate; //倍率
|
||
}SALARY, *PSALARY;
|
||
|
||
typedef struct _ACTIVITYTIME
|
||
{
|
||
//unsigned short wDayOfWeek;
|
||
//unsigned short wDay;
|
||
unsigned short wStartHour;
|
||
unsigned short wStartMinute;
|
||
unsigned short wStartSecond;
|
||
unsigned short wEndHour;
|
||
unsigned short wEndMinute;
|
||
unsigned short wEndSecond;
|
||
_ACTIVITYTIME()
|
||
{
|
||
memset(this, 0, sizeof(*this));
|
||
}
|
||
}ACTIVITYTIME, *PACTIVITYTIME;
|
||
|
||
//转生配置
|
||
typedef struct tagCircleAttri
|
||
{
|
||
AttriGroup attri;//属性
|
||
tagCircleAttri()
|
||
{
|
||
memset(this, 0, sizeof(*this));
|
||
}
|
||
}CIRCLEATTRI,*PCIRCLEATTRI;
|
||
|
||
//兵魂星星配置
|
||
typedef struct tagSoldierSoulStar
|
||
{
|
||
AttriGroup attri;//属性
|
||
tagSoldierSoulStar()
|
||
{
|
||
memset(this, 0, sizeof(*this));
|
||
}
|
||
}SOLDIERSOULSTAR, *PSOLDIERSOULSTAR;
|
||
//兵魂配置
|
||
typedef struct tagSoldierSoulConfig
|
||
{
|
||
int nAppear;//外观id
|
||
int skillId;//技能id
|
||
DataList<SOLDIERSOULSTAR> starlist;//星星属性列表
|
||
}SOLDIERSOULCONFIG, *PSOLDIERSOULCONFIG;
|
||
|
||
//开启等级配置
|
||
typedef struct tagOpenLevelConfig
|
||
{
|
||
int circle ;
|
||
int level;
|
||
tagOpenLevelConfig()
|
||
{
|
||
memset(this, 0, sizeof(*this));
|
||
}
|
||
}OPENLEVELCONFIG,*POPENLEVELCONFIG;
|
||
|
||
//装备升星、铭刻的配置
|
||
typedef struct tagEquipStar
|
||
{
|
||
//AttriGroup attri; //属性
|
||
AttriGroup posAttri[Item::itEquipMax]; //部位属性
|
||
tagEquipStar()
|
||
{
|
||
memset(this, 0, sizeof(*this));
|
||
}
|
||
}EQUIPSTAR,*PEQUIPSTAR,EQUIPINSCRIPT,*PEQUIPINSCRIPT;
|
||
|
||
typedef struct tagEquipStarConfig
|
||
{
|
||
DataList<EQUIPSTAR> starlist; //强化-星级,铭刻-铭刻等级(需要动态分配缓存)
|
||
}EQUIPSTARCONFIG,*PEQUIPSTARCONFIG,EQUIPINSCRIPTCONFIG,*PQUIPINSCRIPTCONFIG;
|
||
|
||
//转生属性
|
||
// typedef struct tagCircleAttr
|
||
// {
|
||
// AttriGroup attri; //属性
|
||
// tagCircleAttr()
|
||
// {
|
||
// memset(this, 0, sizeof(*this));
|
||
// }
|
||
// }CIRCLEATTR,*PCIRCLEATTR;
|
||
|
||
typedef struct tageSubDay
|
||
{
|
||
int nDay = 0;
|
||
int nRate = 0;
|
||
tageSubDay()
|
||
{
|
||
memset(this, 0, sizeof(*this));
|
||
}
|
||
|
||
}TAGSUBDAY, *PTAGSUBDAY;
|
||
|
||
typedef struct tagCircleLevel
|
||
{
|
||
int nlevel; //转生等级
|
||
int nServerOpenDay; //开服天数
|
||
int nLevelLimit; //等级限制
|
||
std::vector<ACTORAWARD> cost;
|
||
// int nLastCircleNum; //上一转的人数
|
||
int nLevelBlock; //该转生等级上线
|
||
int nCostLevel;// 消耗等级
|
||
// std::vector<TAGSUBDAY> m_vSubDay; //
|
||
AttriGroup attri; //属性
|
||
int nTipId = 0;
|
||
tagCircleLevel()
|
||
{
|
||
memset(this, 0, sizeof(*this));
|
||
}
|
||
|
||
// int getCost(int nOpenDay)
|
||
// {
|
||
// int ncount = m_vSubDay.size();
|
||
// int nCost = ncost;
|
||
// int nDay = 0;
|
||
// for(int i = 0; i< ncount; i++)
|
||
// {
|
||
// TAGSUBDAY& day = m_vSubDay[i];
|
||
|
||
// if(nOpenDay >= day.nDay && day.nDay > nDay)
|
||
// {
|
||
// nDay = day.nDay;
|
||
// nCost = ncost*day.nRate/100;
|
||
// }
|
||
// }
|
||
|
||
// return nCost;
|
||
// }
|
||
}CIRCLELEVEL,*PCIRCLELEVEL;
|
||
|
||
|
||
typedef struct tagExchangeCircle
|
||
{
|
||
int nType; //兑换类型
|
||
int nCost; //消耗
|
||
int nValue; //数值
|
||
int nUseLimit; //每日限制
|
||
int nStaticType; //计数器类型
|
||
|
||
tagExchangeCircle()
|
||
{
|
||
memset(this, 0, sizeof(*this));
|
||
}
|
||
}EXCHANGECIRCLE,*PEXCHANGECIRCLE;
|
||
|
||
typedef struct tagCircleCfg
|
||
{
|
||
//DataList<CIRCLEATTR> starlist;
|
||
std::map<int, CIRCLELEVEL> m_lCircleLv;
|
||
DataList<EXCHANGECIRCLE> m_lExSoul;
|
||
|
||
int nOpenLv = 0; //开启天数
|
||
int nOpenServerDay = 0; //开服天数
|
||
|
||
tagCircleCfg()
|
||
{
|
||
nOpenLv = 0;
|
||
nOpenServerDay = 0;
|
||
m_lCircleLv.clear();
|
||
}
|
||
|
||
// int GetCost(int nLevel, int nDay)
|
||
// {
|
||
// std::map<int, CIRCLELEVEL>::iterator it = m_lCircleLv.find(nLevel);
|
||
// if(it != m_lCircleLv.end())
|
||
// {
|
||
// return it->second.getCost(nDay);
|
||
// }
|
||
|
||
// return 0;
|
||
// }
|
||
|
||
}CIRCLECFG,*PCIRCLECFG;
|
||
|
||
typedef struct TagMeridianUpCfg
|
||
{
|
||
int nLevel; //经脉等级
|
||
int nServerOpenDay; //开服天数
|
||
int nLevelLimit; //等级限制
|
||
int nCircle; //转生要求
|
||
AttriGroup attri; //属性
|
||
// int nCostExp; //升至本级消耗的经验
|
||
// int nCostBindCoin; //升至本级消耗的绑金
|
||
// int nCostId; //升至本级消耗的初阶秘籍id
|
||
// int nCostBook; //升至本级消耗的初阶秘籍
|
||
std::vector<ACTORAWARD> costs;
|
||
char nTips[1024];
|
||
TagMeridianUpCfg()
|
||
{
|
||
nLevel = 0;
|
||
nServerOpenDay = 0;
|
||
nLevelLimit = 0;
|
||
nCircle = 0;
|
||
costs.clear();
|
||
memset(this->nTips, 0, sizeof(this->nTips));
|
||
}
|
||
}MeridianUpCfg;
|
||
//神魔
|
||
typedef struct tagGhostConfig
|
||
{
|
||
int nId; //
|
||
int nLevel; //
|
||
int nServerOpenDay; //开服天数
|
||
int nLevelLimit; //等级限制
|
||
int nCircle; //转生要求
|
||
int nProbability; //
|
||
char name[32]; //
|
||
AttriGroup attri; //属性
|
||
std::vector<ACTORAWARD> cost;
|
||
int nTipId = 0;
|
||
}GhostConfig;
|
||
|
||
typedef struct tagGhostDataCfg
|
||
{
|
||
std::map<int, std::vector<GhostConfig> > m_gHostUpLvCfg; //神魔升级
|
||
std::map<int, std::vector<GhostConfig> > m_DemonslevelConfig ; //共鸣
|
||
int nAddBless;
|
||
int nMaxBless;
|
||
int nAddProbability;
|
||
int nProbability;
|
||
int nMaxLv;
|
||
int nMaxCount;
|
||
char sTitle[1024];
|
||
char sContent[1024];
|
||
std::vector<ACTORAWARD> awards;
|
||
GhostConfig* GetGhostLvCfg(int nPos, int nLevel) {
|
||
if(m_gHostUpLvCfg.count(nPos)) {
|
||
std::vector<GhostConfig>& v_lists = m_gHostUpLvCfg[nPos];
|
||
for(auto & it : v_lists) {
|
||
if(it.nLevel == nLevel)
|
||
return ⁢
|
||
}
|
||
}
|
||
return NULL;
|
||
}
|
||
|
||
GhostConfig* GetGhostCommonCfg(int nType, int nLevel) {
|
||
if(m_DemonslevelConfig.count(nType)) {
|
||
std::vector<GhostConfig>& v_lists = m_DemonslevelConfig[nType];
|
||
for(auto & it : v_lists) {
|
||
if(it.nLevel == nLevel)
|
||
return ⁢
|
||
}
|
||
}
|
||
return NULL;
|
||
}
|
||
}GhostDataCfg;
|
||
|
||
typedef struct tagFrenzy
|
||
{
|
||
BYTE nCardLv;
|
||
std::vector<std::tuple<int,int>> vecPropertys;
|
||
std::vector<std::tuple<int,int,int>> vecConsum;
|
||
std::vector<std::tuple<int,int,int>> vecKillAward;
|
||
std::string vecKillerTitleHead;
|
||
std::string vecKillerTitleContent;
|
||
} FrenzyCfg;
|
||
|
||
typedef struct tagChgVoc
|
||
{
|
||
std::vector<std::tuple<int,int,int>> vecChangeVocationUnConsum; //专职变性道具不消耗
|
||
std::vector<std::tuple<int,int,int>> vecChangeVocationConsum; //专职变性道具消耗
|
||
unsigned int nChangeVocCD;
|
||
} ChgVocCfg;
|
||
|
||
typedef struct tagOffice
|
||
{
|
||
short nLevel;
|
||
short nIsNotice;//是否走马灯公告
|
||
short nLvlLimit;//等级限制
|
||
short nCircleLimit;//转身限制
|
||
char sName[32];//官阶名字
|
||
std::vector<std::tuple<int,int>> vecPropertys;
|
||
std::vector<std::tuple<int,int,int>> vecConsum;
|
||
} OfficeCfg;
|
||
|
||
typedef struct tagTeamFubenConfig
|
||
{
|
||
int nOpenLevel;
|
||
int nAddTime;
|
||
int nAddForce;
|
||
int nAddForceOutline;
|
||
int nMaxForce;
|
||
int nExtraForce;
|
||
int nMaxTeamCount;
|
||
}TEAMFUBENCONFIG,*PTEAMFUBENCONFIG;
|
||
|
||
typedef struct tagMonthCardConfig
|
||
{
|
||
GOODS_TAG Consume;
|
||
GOODS_TAG BuyAwardList[6];
|
||
GOODS_TAG DailyAwardList[6];
|
||
int nSuperRightLV;//特权卡等级,普通卡为0
|
||
int nMaxExpDampNum;//衰减百分数,如70%则为70
|
||
int nJiShouNum; //寄售行寄售数目
|
||
int nAtvPaoDianPlus;//特权活动泡点加成
|
||
std::vector<GOODS_TAG> m_recoverGolds; //特权回收 金币加成
|
||
}MONTHCARDCONFIG,*PMONTHCARDCONFIG;
|
||
|
||
//杂七杂八配置
|
||
class CMiscProvider
|
||
: protected CLuaConfigBase
|
||
{
|
||
public:
|
||
typedef CObjectAllocator<char> CDataAllocator;
|
||
typedef CLuaConfigBase Inherited;
|
||
|
||
|
||
typedef struct tagActivityExp
|
||
{
|
||
int nCount;
|
||
long long * llExps;
|
||
}ACTIVITYEXP, *PACTIVITYEXP;
|
||
|
||
typedef struct tagActivityExpList
|
||
{
|
||
int nCount;
|
||
ACTIVITYEXP * pExpList;
|
||
}ACTIVITYEXPLIST, *PACTIVITYEXPLIST;
|
||
|
||
typedef struct tagBanneretBuy{
|
||
int favorableprice; // 优惠价
|
||
int price; // 价格
|
||
int nDays;
|
||
}Banneret, *PBanneret;
|
||
|
||
typedef struct tagtagBanneretBuyList{
|
||
int count;
|
||
PBanneret data;
|
||
}BanneretBuyList, *PBanneretBuyList;
|
||
|
||
CMiscProvider();
|
||
~CMiscProvider();
|
||
|
||
//装载NPC雕像配置
|
||
bool LoadNpcStatueConfig(LPCTSTR sFilePath);
|
||
|
||
//装载排行榜属性配置
|
||
bool LoadRankPropConfig(LPCTSTR sFilePath);
|
||
|
||
//装载工资配置
|
||
bool LoadSalaryConfig(LPCTSTR sFilePath);
|
||
|
||
//获取对应职业的NPC雕像
|
||
inline const PNPCSTATUE GetNpcStatue(INT_PTR nType, INT_PTR nParam)
|
||
{
|
||
for (INT_PTR i=0; i < m_npcStatue.count(); i++)
|
||
{
|
||
PNPCSTATUE pData = &m_npcStatue[i];
|
||
if ((INT_PTR)pData->btType == nType)
|
||
{
|
||
if (nType == stRsVocation || nType == stCsVocation)
|
||
{
|
||
if ((INT_PTR)pData->btParam == nParam)
|
||
return pData;
|
||
}
|
||
else
|
||
return pData;
|
||
}
|
||
}
|
||
return NULL;
|
||
}
|
||
|
||
//
|
||
inline CVector<NPCSTATUE>* GetNpcStatueList() {return &m_npcStatue;}
|
||
|
||
//获取移动路径
|
||
inline DataList<RANKPROP>& GetRankProps()
|
||
{
|
||
return m_RankProps;
|
||
}
|
||
|
||
RANKPROP* GetRankPropByRankName(LPCSTR sName);
|
||
|
||
inline const int GetSalaryRate(int nDay)
|
||
{
|
||
for (INT_PTR i=0; i < m_SalayConfig.count; i++)
|
||
{
|
||
SALARY *pData = m_SalayConfig.pData + i;
|
||
|
||
if ((nDay >= pData->nBegin && nDay <= pData->nOver) || (nDay >= pData->nBegin && pData->nOver == -1))
|
||
{
|
||
return pData->nRate;
|
||
}
|
||
}
|
||
return 0;
|
||
}
|
||
|
||
/*
|
||
* Comments: 获取转数对应的最大等级
|
||
* Param int nCirlce: 转数
|
||
* @Return int:
|
||
*/
|
||
int GetPlayerMaxLevel(int nCirlce, int nState = 0);
|
||
|
||
AttriGroup* GetCircleAttri(int nIndex);
|
||
//获取某个兵魂的配置
|
||
SOLDIERSOULCONFIG* GetSoldierSoulCfgByIndex(int nIndex);
|
||
|
||
/*
|
||
获取装备铭刻配置的属性
|
||
这里就是取最后一段配置,以最后一段配置为准
|
||
*/
|
||
inline EQUIPINSCRIPTCONFIG* GetEquipInscriptCfg()
|
||
{
|
||
INT_PTR nCount = m_EquipInscript.count() ;
|
||
if(nCount > 0)
|
||
{
|
||
return &m_EquipInscript[nCount - 1];
|
||
}
|
||
return NULL;
|
||
}
|
||
|
||
//获取开启等级
|
||
POPENLEVELCONFIG GetOpenLevel(int nId);
|
||
|
||
//通过月卡index获取配置
|
||
MONTHCARDCONFIG* GetMonthCardConfig(int mtype)
|
||
{
|
||
if (mtype >= (sizeof(m_MonthCardConfig)/sizeof(MONTHCARDCONFIG)))
|
||
{
|
||
return NULL;
|
||
}
|
||
return &m_MonthCardConfig[mtype-1];
|
||
}
|
||
|
||
//通过特权等级获取配置
|
||
MONTHCARDCONFIG* GetMonthCardConfigbySuperLV(int mLV)
|
||
{
|
||
if (mLV >= (sizeof(m_SuperRightMap)/sizeof(int)))
|
||
{
|
||
return NULL;
|
||
}
|
||
int key = m_SuperRightMap[mLV] ;
|
||
if ((key < 0) || (key > MAXMONTHCARDCFGNUM))
|
||
return NULL;
|
||
|
||
return &m_MonthCardConfig[key];
|
||
}
|
||
|
||
//获取首充卡配置
|
||
MONTHCARDCONFIG* GetShouChongCardConfig()
|
||
{
|
||
if (m_DefaultPaoDianPlusKey ==0 )
|
||
{
|
||
return NULL;
|
||
}
|
||
return &m_MonthCardConfig[m_DefaultPaoDianPlusKey];
|
||
}
|
||
|
||
|
||
|
||
public:
|
||
bool ReadAllConfig(){return true;}
|
||
bool LoadLevelConfig(LPCTSTR sFilePath);//开启等级
|
||
bool LoadCircleConfig(LPCTSTR sFilePath);
|
||
|
||
bool LoadEquipInscriptConfig(LPCTSTR sFilePath); //装备铭刻
|
||
//读取经脉升级
|
||
bool LoadMeridiansCfg(LPCTSTR sFilePath);
|
||
|
||
//读取月卡配置
|
||
bool LoadMonthCardConfig(LPCTSTR sFilePath);
|
||
|
||
private:
|
||
|
||
//读取月卡配置
|
||
bool ReadMonthCardConfig();
|
||
|
||
//装载雕像NPC配置
|
||
bool ReadAllNPCStatue();
|
||
|
||
//装载排行榜属性配置
|
||
bool ReadAllRankProp();
|
||
|
||
//装载工资配置
|
||
bool ReadAllSalaryConfig();
|
||
|
||
//读取属性表
|
||
bool ReadAttributeTable(CDataAllocator &dataAllocator, CStdItem::AttributeGroup *pAttrGroup);
|
||
|
||
//读取转生配置
|
||
bool ReadCircleConfig();
|
||
//读取兵魂配置
|
||
bool ReadSoldierSoulConfig();
|
||
//获取开启等级配置
|
||
bool ReadLevelConfig();
|
||
|
||
|
||
//读取装备铭刻配置
|
||
bool ReadEquipInscriptConfig();
|
||
|
||
//按装备部位读取属性
|
||
bool ReadEquipPosConfig(AttriGroup& stAttriGroup);
|
||
bool LoadEquipAttri( PGAMEATTR pAttr );
|
||
|
||
//经脉
|
||
bool ReadMeridiansCfg();
|
||
public:
|
||
//神魔
|
||
bool LoaddemonCfg(LPCTSTR sFilePath);
|
||
bool Readdemonsbody();
|
||
void ReadCommonDemons(const char* table, std::map<int, std::vector<GhostConfig> >& m_maps);
|
||
void readDemonCost();
|
||
|
||
//狂暴
|
||
bool LoadFrenzyCfg(LPCTSTR sFilePath);
|
||
bool ReadFrenzy();
|
||
FrenzyCfg const& GetFrenzyCfg(){ return m_FrenzyCfg; }
|
||
|
||
//官职
|
||
bool LoadOfficeCfg(LPCTSTR sFilePath);
|
||
bool ReadOffice();
|
||
std::vector<OfficeCfg> const& GetOfficeCfg(){ return m_OfficeCfg; }
|
||
|
||
//转职
|
||
bool LoadChangeVocCfg(LPCTSTR sFilePath);
|
||
bool ReadChangeVoc();
|
||
ChgVocCfg const& GetChangeVocCfg(){ return m_ChgVocCfg; }
|
||
|
||
|
||
OfficeCfg* GetOfficeCfgPtrByLevel(int nLevel){
|
||
if(nLevel < 0 || nLevel >= m_OfficeCfg.size() )
|
||
return NULL;
|
||
return &m_OfficeCfg[nLevel];
|
||
}
|
||
|
||
gHostReplaceCfg* getGhostReplaceCfg(int nItemId)
|
||
{
|
||
std::map<int, gHostReplaceCfg>::iterator it = m_nReplaces.find(nItemId);
|
||
if(it != m_nReplaces.end())
|
||
{
|
||
return &(it->second);
|
||
}
|
||
return NULL;
|
||
}
|
||
|
||
private:
|
||
CDataAllocator m_DataAllocator;
|
||
ACTIVITYEXPLIST m_ActivityExpList;
|
||
|
||
std::vector<OfficeCfg> m_OfficeCfg;
|
||
|
||
CDataAllocator m_npcStatueAllocator; //内存分配器
|
||
CVector<NPCSTATUE> m_npcStatue; //雕像NPC配置
|
||
|
||
DataList<RANKPROP> m_RankProps; //排行榜属性
|
||
|
||
DataList<SALARY> m_SalayConfig; //工资配置
|
||
|
||
public:
|
||
CVector<int> m_CircleMaxLevelConfig; //当前转数对应最大等级
|
||
CIRCLECFG m_CircleLevelConfig; //转生属性
|
||
CVector<SOLDIERSOULCONFIG> m_soldierSoul; //兵魂
|
||
CVector<EQUIPINSCRIPTCONFIG> m_EquipInscript; //装备铭刻
|
||
|
||
CVector<OPENLEVELCONFIG> m_openLevel; //开启等级配置
|
||
TEAMFUBENCONFIG m_TeamFubenConfig; //团队副本
|
||
CVector<int> m_TeamFubenIDList; //团队副本ID列表
|
||
std::map<int, MeridianUpCfg> m_MeridianUpCfg; //经脉升级配置
|
||
//神魔
|
||
GhostDataCfg m_nGhostCfg;
|
||
MONTHCARDCONFIG m_MonthCardConfig[MAXMONTHCARDCFGNUM + 1]; //月卡配置
|
||
int m_SuperRightMap[MAXCOLORCARDLEVEL + 1] ; //存储 m_MonthCardConfig中的索引id
|
||
int m_DefaultPaoDianPlusKey; //激活充值卡后的活动泡点经验加成配置 m_MonthCardConfig[m_DefaultPaoDianPlusKey]
|
||
//狂暴属性
|
||
FrenzyCfg m_FrenzyCfg;
|
||
//转职配置
|
||
ChgVocCfg m_ChgVocCfg;
|
||
std::map<int, gHostReplaceCfg> m_nReplaces;//神魔替换
|
||
};
|