In c++ you cant use == when comparing strings *because it will compare a
pointer instead of the string for vars. Use strcmp so it would be something
like this:


    if (!strcmp(mapName ,"dm_")) // Classic SourceForts CTF
    {
           CreateGameRulesObject( "C_HL2MPRules" );
    }
    else if (!strcmp(mapName, "ctf_")) // Core Run map
    {
           CreateGameRulesObject( "C_CTFRules" );
    }
    else if (!strcmp(mapName, "mbs_")) // Conquest map
    {
           CreateGameRulesObject( "C_MBSRules" );
    }

-----Original Message-----
From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] On Behalf Of Emiel Regis
Sent: Wednesday, April 11, 2007 6:37 AM
To: [email protected]
Subject: Re: [hlcoders] Map gametype filter

Thanks for your help. However I'm having some problems, namely:

void C_World::InstallGameRules()
{
        char mapN[64];
        V_FileBase( engine->GetLevelName( ), mapN, 64 );

        string  mapName = mapN;

    mapName = mapName.substr( 0, 3 );

    if (mapName == "dm_") // Classic SourceForts CTF
    {
           CreateGameRulesObject( "C_HL2MPRules" );
    }
    else if (mapName == "ctf_") // Core Run map
    {
           CreateGameRulesObject( "C_CTFRules" );
    }
    else if (mapName == "mbs_") // Conquest map
    {
           CreateGameRulesObject( "C_MBSRules" );
    }
    else
           CreateGameRulesObject( "C_HL2MPRules" );
}

I use following code, yet it gives me errors:

error C3861: 'CreateGameRulesObject': identifier not found

And some warning about malloc redefinition. I use #include <string> and
using std::string; .

> --
> [ Picked text/plain from multipart/alternative ]
> Hi emiel,
>
> For SourceForts, I use this : (i use hl2mp sdk)
> In hl2mp_client.cpp :
>
> //=========================================================
> // instantiate the proper game rules object
> //=========================================================
> void InstallGameRules()
> {
>        std::string mapName = STRING( gpGlobals->mapname );
>
>        mapName = mapName.substr( 0, 3 );
>
>        if (mapName == "sf_") // Classic SourceForts CTF
>        {
>               CreateGameRulesObject( "CSFCTFGamerules" );
>        }
>        else if (mapName == "cr_") // Core Run map
>        {
>               CreateGameRulesObject( "CSFCRGamerules" );
>        }
>        else if (mapName == "cq_") // Conquest map
>        {
>               CreateGameRulesObject( "CHL2MPRules" );
>        }
>        else
>               CreateGameRulesObject( "CSFCTFGamerules" );
> }
>
> InstallGamerules is already called automatically. Thought (note to
> valve) it
> seems client side the networktable is not updated for gamerules object.So
>  when it's creating a new one server side, client side it remains the
> old one. So you'll have to make the samefunction client side
> in C_World::Precache( ) and use
>
> char mapN[64];
> V_FileBase( engine->GetLevelName( ), mapN, 64 );
>
> std::string mapName = mapN;
> mapName = mapName.substr( 0, 3 );
>
> instead of std::string mapName = STRING( gpGlobals->mapname );
> I hope I helped you.

_______________________________________________
To unsubscribe, edit your list preferences, or view the list archives,
please visit:
http://list.valvesoftware.com/mailman/listinfo/hlcoders

_______________________________________________
To unsubscribe, edit your list preferences, or view the list archives, please 
visit:
http://list.valvesoftware.com/mailman/listinfo/hlcoders

Reply via email to