Zandronum Chat on our Discord Server Get the latest version: 3.2.1
Source Code

View Revisions: Issue #2715 Back to Issue ]
Summary 0002715: Scripting access to dmflags and co
Revision 2016-04-30 12:37 by Dusk
Description One of the major uses of ConsoleCommand is to have mods set dmflags. So in order to remove ConsoleCommand we need to provide a proper way for mods to affect gameplay settings.

I managed to put together an interface that allows mods to specify values for gameplay settings while allowing the server admin to override the mods' choices. ACS can set a dmflag to be either enabled, disabled or leave it as it is (leave it as "default", which means it falls back to the actual CVar value).

Example:

script 1 OPEN
{
        SetGameplaySetting(GS_NOMONSTERS, GS_ENABLED);
        SetGameplaySetting(GS_INFINITEAMMO, GS_DISABLED);
        SetGameplaySetting(GS_NOJUMP, GS_DISABLED);
        SetGameplaySetting(GS_COMPAT_LIMITEDAIRMOVEMENT, GS_ENABLED);
}


This enables no-monsters mode and limited airmovement. It also disables infinite ammo and no jump.

Some issues, though:
* should the mod really be allowed to disable a setting like this? Maybe all we should provide is default and enabled.
* I still think that compat_limitedairmovement should be inverted. We should really decide on dmflags because this will sort of lock them
Revision 2016-04-30 12:41 by Dusk
Description One of the major uses of ConsoleCommand is to have mods set dmflags. So in order to remove ConsoleCommand we need to provide a proper way for mods to affect gameplay settings.

I managed to put together an interface that allows mods to specify values for gameplay settings while allowing the server admin to override the mods' choices. ACS can set a dmflag to be either enabled, disabled or leave it as it is (leave it as "default", which means it falls back to the actual CVar value).

Example:

script 1 OPEN
{
        SetGameplaySetting(GS_NOMONSTERS, GS_ENABLED);
        SetGameplaySetting(GS_INFINITEAMMO, GS_DISABLED);
        SetGameplaySetting(GS_NOJUMP, GS_DISABLED);
        SetGameplaySetting(GS_COMPAT_LIMITEDAIRMOVEMENT, GS_ENABLED);
}


This enables no-monsters mode and limited airmovement. It also disables infinite ammo and no jump.

Some issues, though:
* should the mod really be allowed to disable a setting like this? Maybe all we should provide is default and enabled.
* I still think that compat_limitedairmovement should be inverted. We should really decide on dmflags because this will sort of lock them
* The patch currently needs to change all declarations of the affected flag CVars, because C++03 doesn't have constructor deferring (I could add a constructor overload to FFlagCVar otherwise).
Revision 2016-04-30 12:37 by Dusk
Additional Information 'https://bitbucket.org/zandronum/zandronum-sandbox/compare/acsgameplaysettings..Torr_Samaho/zandronum#diff [^]'
Revision 2023-01-01 16:38 by Kaminsky
Additional Information 'https://wiki.zandronum.com/SetGameplaySetting [^]'






Questions or other issues? Contact Us.

Links


Copyright © 2000 - 2025 MantisBT Team
Powered by Mantis Bugtracker