• Unfortunately, we have experienced significant hard drive damage that requires urgent maintenance and rebuilding. The forum will be a state of read only until we install our new drives and rebuild all the configurations needed. Please follow our Facebook page for updates, we will be back up shortly! (The forum could go offline at any given time due to the nature of the failed drives whilst awaiting the upgrades.) When you see an Incapsula error, you know we are in the process of migration.

Help changing room tag to game room option

Newbie Spellweaver
Joined
Mar 6, 2017
Messages
75
Reaction score
4
Last edited:
Experienced Elementalist
Joined
Apr 11, 2010
Messages
296
Reaction score
18
I want to change [ia] tag to checkbox in game room options

in MMatchStageSetting.h

Code:
    bool                        IsInfiniteAmmo()            { return m_StageSetting.Ref().bInfiniteAmmo; }
bool SetInfiniteAmmo(bool bValue)             { MEMBER_SET_CHECKCRC(m_StageSetting, bInfiniteAmmo, bValue); }

in ZItem.cpp

Code:
bool ZItem::Reload()
{
    if (m_pDesc == NULL)
    {
        //_ASSERT(0);
        return false;
    }
    //_ASSERT(GetItemType() == MMIT_RANGE);
    

     int nAddedBullet = m_pDesc->m_nMagazine.Ref() - m_nBulletCurrMagazine.Ref();
    if (nAddedBullet > m_nBulletSpare.Ref()) nAddedBullet = m_nBulletSpare.Ref();
    if (nAddedBullet <= 0) return false;

    m_nBulletCurrMagazine.Set_CheckCrc(m_nBulletCurrMagazine.Ref() + nAddedBullet);
    //if(!strstr(strlwr((char*)ZGetGameClient()->GetStageName()), "[ia]"))
    
    MComboBox* pInfiniteAmmo = (MComboBox*)ZGetGameInterface()->GetIDLResource()->FindWidget("InfiniteAmmo");
    if (pInfiniteAmmo)
    {
        m_nBulletSpare.Set_CheckCrc(m_nBulletSpare.Ref() - nAddedBullet);
    }

    return true;
}

Doesn't work

u have to edit few more places look national gunz source u will have an idea

Thank You :):
 
Upvote 0
Newbie Spellweaver
Joined
Mar 6, 2017
Messages
75
Reaction score
4
I'm not seeing it in National source or client. It has [ia] room tag, but so does my source already. Know of any other sources that have infinite ammo as a checkbox in stage settings?
 
Upvote 0
Newbie Spellweaver
Joined
Mar 6, 2017
Messages
75
Reaction score
4
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;*/
 
Upvote 0
Back
Top