I think I'm really close. The value can change client side but I can't figure out how to send it to the server and update on everyone's client. Please point me in the right direction.
CSCommon.sln
MMatchStage.h
int GetInfiniteAmmo() {return m_StageSetting.GetInfiniteAmmo(); }
void
SetInfiniteAmmo(int nInfiniteAmmo) {m_StageSetting.SetInfiniteAmmo(nInfiniteAmmo); }
MMatchStageSetting.h
int nInfiniteAmmo;
#define
MMATCH_DEFAULT_STAGESETTING_INFINITEAMMO 0
int GetInfiniteAmmo() {return m_StageSetting.Ref().nInfiniteAmmo; } ammo
void
SetInfiniteAmmo(int nValue) { MEMBER_SET_CHECKCRC(m_StageSetting,
nInfiniteAmmo, nValue); } infinite ammo
MMatchStageSetting.cpp
m_StageSetting.Ref().nInfiniteAmmo = MMATCH_DEFAULT_STAGESETTING_INFINITEAMMO;
GunZ.sln
ZMatch.h
inline int GetInfiniteAmmo();
inline int ZMatch::GetInfiniteAmmo()
{
return m_pStageSetting->GetStageSetting()->nInfiniteAmmo;
}
ZGameinterface.cpp
SetListenerWidget("StageInfinite",
ZGetStageSettingChangedComboboxListener());
EnableWidget("StageInfinite", bEnable);
EnableWidget("StageInfinite", true);
EnableWidget("StageInfinite", false);
ZInterfaceListener.cpp
setting.nInfiniteAmmo = 0;
ZStageInterface.cpp
ZApplication::GetGameInterface()->EnableWidget("StageInfinite", true);
ZApplication::GetGameInterface()->EnableWidget("StageInfinite", false);
ZApplication::GetGameInterface()->EnableWidget("StageInfinite", false);
ZApplication::GetGameInterface()->EnableWidget("StageInfinite", !bReady);
ZApplication::GetGameInterface()->EnableWidget("StageInfinite", false);
ZStageSetting.cpp
#define
STAGESETTING_INFINITE_AMMO_MAX 4
#define
STAGESETTING_INFINITE_AMMO_DEFAULT 0
static struct
_STAGESETTING_INFINITE_AMMO
{
int Value;
char szText[32];
}
StageSetting_InfiniteAmmo[STAGESETTING_INFINITE_AMMO_MAX] =
{ { 0, "Infinite None" },{ 1, "Infinite Ammo" },{ 2, "Infinite Items" },{ 3, "Infinite Both" } };
// This changes the value client side
pCB = (MComboBox*)ZGetGameInterface()->GetIDLResource()->FindWidget("StageInfinite");
if (pCB)
pOutNode->nInfiniteAmmo = pCB->GetSelIndex();
BUILD_STAGESETTING_LISTITEM("StageInfinite", pOutNode->nInfiniteAmmo, pGameTypeCfg->m_InfiniteAmmo); ammo
BUILD_STAGESETTING_ITEM("StageInfinite", pOutNode->nInfiniteAmmo,
StageSetting_InfiniteAmmo, STAGESETTING_INFINITE_AMMO_MAX);
strcpy(StageSetting_InfiniteAmmo[0].szText, "Infinite None");
strcpy(StageSetting_InfiniteAmmo[1].szText, "Infinite Ammo");
strcpy(StageSetting_InfiniteAmmo[2].szText, "Infinite Items");
strcpy(StageSetting_InfiniteAmmo[3].szText, "Infinite Both");
INITSTAGESETTING_ITEM("StageInfinite", pStageSetting->nInfiniteAmmo,
STAGESETTING_INFINITE_AMMO_MAX, StageSetting_InfiniteAmmo, STAGESETTING_INFINITE_AMMO_DEFAULT);
ZGameClient.h
int m_nInfiniteAmmo;
ZGameTypeList.h
MGAMETYPECFGDATA m_InfiniteAmmo;
MGAMETYPECFGDATA
GetInfiniteAmmoList() { return m_InfiniteAmmo; }
Things I’ve tried:
MMatchServer_Stage.cpp
//if (pNode->nInfiniteAmmo) {
// //mlog(pNode->nInfiniteAmmo);
// pSetting->SetInfiniteAmmo(1);
//}
//pSetting->SetInfiniteAmmo(1);
//if (pNode->nInfiniteAmmo == 1) {
// //mlog(pNode->nInfiniteAmmo);
// pSetting->SetInfiniteAmmo(1);
//}
//else if(pNode->nInfiniteAmmo == 2) {
// pSetting->SetInfiniteAmmo(2);
//}
//else if (pNode->nInfiniteAmmo == 3) {
// pSetting->SetInfiniteAmmo(3);
//}
//else
{
// pSetting->SetInfiniteAmmo(0);
//}
//pNode->nInfiniteAmmo = 1;
//pSetting->SetInfiniteAmmo(pNode->nInfiniteAmmo);
//pNode->nInfiniteAmmo = pSetting->GetInfiniteAmmo();
/*MSTAGE_SETTING_NODE StageSetting;
StageSetting.nInfiniteAmmo
= 1;*/