I have been working on this for only about 10 minutes max. To be honest, I hate roomtags. Instead, I made it work from the stage option settings. There is probably a better way of doing this, but it still work. After all, I am still a beginner at programming.
Gunz solution
ZCharacter.cpp: (Above your 'if(GetUserGrade() == MMUG_DEVELOPER) {' )
Code:
if(ZGetGameClient()->GetMatchStageSetting()->GetStageSetting()->bVanilla == true
&& ZGetGame()->GetMatch()->GetMatchType() != (MMATCH_GAMETYPE_QUEST || MMATCH_GAMETYPE_SURVIVAL))
{
m_Property.fMaxHP.Set_CheckCrc(120);
m_fPreMaxHP = 120;
m_Property.fMaxAP.Set_CheckCrc(110);
m_fPreMaxAP = 110;
}
ZStageSetting.cpp: (Above your 'static bool BuildStageSetting(MSTAGE_SETTING_NODE* pOut' )
Code:
#define STAGESETTING_VANILLA_MAX 2
#define STAGESETTING_VANILLA_DEFAULT 0
static struct _STAGESETTING_VANILLA
{
bool Value;
char szText[32];
} StageSetting_StageVanilla[STAGESETTING_VANILLA_MAX] =
{ {true, "ON"}, {false, "OFF"} };
ZStageSetting.cpp: (Above your 'return true;' in the ending of 'static bool BuildStageSetting(MSTAGE_SETTING_NODE* pOut' )
Code:
BUILD_STAGESETTING_ITEM("StageVanilla", pOutNode->bVanilla,
StageSetting_StageVanilla, STAGESETTING_VANILLA_MAX);
ZStageSetting.cpp (Above your 'if (pShowAll)' in 'void ZStageSetting::ShowStageSettingDialog( const MSTAGE_SETTING_NODE* pStageSetting, bool bShowAll)' )
Code:
SHOWSTAGESETTING_ITEM("StageVanilla", pStageSetting->bVanilla,
STAGESETTING_VANILLA_MAX, StageSetting_StageVanilla);
ZStageSetting.cpp: (Paste this at the end inside your 'void ZStageSetting::InitStageSettingDialog()' function)
Code:
strcpy( StageSetting_StageVanilla[0].szText, ZMsg(MSG_WORD_ON));
strcpy( StageSetting_StageVanilla[1].szText, ZMsg(MSG_WORD_OFF));
INITSTAGESETTING_ITEM("StageVanilla", pStageSetting->bVanilla,
STAGESETTING_VANILLA_MAX, StageSetting_StageVanilla, STAGESETTING_VANILLA_DEFAULT);
CSCommon solution
MMatchStageSetting.h: (Above your 'bool bIsRelayMap;'. Should be in 'struct MSTAGE_SETTING_NODE' structure)
MMatchStageSetting.h: (Above your '#define STAGESETTING_LIMITTIME_UNLIMITED')
Code:
#define MMATCH_DEFAULT_STAGESETTING_ISVANILLA false // global vanilla mode
MMatchStageSetting.h (Above your 'const MMatchGameTypeInfo* GetCurrGameTypeInfo();')
Code:
bool GetIsVanilla() { return m_StageSetting.Ref().bVanilla; }
MMatchStageSetting.cpp: (Above your 'm_StageSetting.Ref().bIsRelayMap = false;'. If you can't find it, look in 'void MMatchStageSetting::SetDefault()')
Code:
m_StageSetting.Ref().bVanilla = MMATCH_DEFAULT_STAGESETTING_ISVANILLA;
MatchServer solution
MBMatchServer_Stage.cpp: (Above your 'pAttacker->GetCharInfo()->IncXP(nAttackerExp);')
Code:
if (pStage->GetStageSetting()->GetStageSetting()->bVanilla == true) return;
XML files
StageSettingFrame.xml: (Above your '<BUTTON item="StageSettingApplyBtn" parent="StageSettingFrame">')
Code:
<LABEL item="Label" parent="StageSettingFrame">
<BOUNDS>
<X>20</X>
<Y>262</Y>
<W>150</W>
<H>24</H>
</BOUNDS>
<TEXT>STR:UI_SSF_09</TEXT>
</LABEL>
<COMBOBOX item="StageVanilla" parent="StageSettingFrame">
<LISTBOXLOOK>CustomListBoxLook</LISTBOXLOOK>
<BUTTONLOOK>ListBoxButtonLook</BUTTONLOOK>
<TEXTALIGN>
<HALIGN>center</HALIGN>
<VALIGN>center</VALIGN>
</TEXTALIGN>
<ITEMHEIGHT>18</ITEMHEIGHT>
<BOUNDS>
<X>137</X>
<Y>262</Y>
<W>150</W>
<H>24</H>
</BOUNDS>
<DROPSIZE>210</DROPSIZE>
<COMBOTYPE>1</COMBOTYPE>
<COMBOFIRSTSIZE>51</COMBOFIRSTSIZE>
<ENABLE>true</ENABLE>
</COMBOBOX>
strings.xml: (Above your '<!-- Option.xml -->')
Code:
<STR id="UI_SSF_09">Vanilla</STR>
Note: In '<FRAME item="StageSettingFrame">', increase your height, '<H></H>', by 30.