========================================================================= Rulesets is a special files placed in edawn/rulesets directory which contains many game parameters that cannot be controlled via usual cvars ========================================================================= Ruleset file (pointed by g_ruleset cvar) is loaded each time map loaded or \map_restart issued ========================================================================= How to create/use your own ruleset: 1) Copy rulesets/default.cfg to rulesets/test.cfg for example 2) Edit rulesets/test.cfg 3) Set g_ruleset cvar to "test.cfg" and load/restart map or type \load "test.cfg" in game console *) To make it voteable - add corresponding entry to voteconf.txt ========================================================================= Common expression syntax is: [ Section. ] Parameter = Value [, Value2 , ... ] ; Examples: Respawn Time: 2000; AntiCamp.Time = 0; Switch Time: -200, -200; Parameter name is space/case-insensitive i.e. both variants is acceptable: rE SpaWNTIme: 2000; Respawn Time: 2000; There may be many parameters that can belong to the same section, for example: FreezeTag.Flags.Team : 1; FreezeTag.Flags.Enemy : 1; FreezeTag.ThawFactor.Global: 0; To avoid writing redundant section name every time - you can just use brackets in following way: FreezeTag { Flags { Team: 1; Enemy: 1; } ThawFactor.Global: 0; } That may significally improve readability and save space in corresponding cases Some parameters may have multiple values, for example: SwitchTime: -200,-200; If you want to modify just second value without altering first - then specify its index (1-based): SwitchTime[2] = -100; If you want to set all values at once then use '*' char as index specifier: SwitchTime[*] = -200; You also can set usual cvars from your ruleset - just addy '$' prefix to its name, for example: $timelimit = 20; Also you can use cvars in boolean evaluations: if ( $mapname == "q3dm17" ) { RespawnTime = 1000; } else { RespawnTime = 2000; } Its also very easy to setup/use custom cvars in rulesets: if ( $mycvar == "" ) { $mycvar = "0"; // just for first time - don't fogret to init your cvar to some reasonable value } if ( $mycvar == "1" ) { // setup something } There is some functions that you can use inside rulesets To print some message in system console: print( "message" ); To execute console command: exec( "\say hello" ); To execute console command immediately (DANGEROUS - can unload running vm!): exec( "\say now!", 1); To include some other ruleset (can be useful if you want to split your big ruleset into small ones/components): include( "include.cfg" ); To add custom vote command without altering g_voteStrings (up to 32 commands allowed): vote( "mycvar" ); - just don't forget to init mycvar to some value before. Also, if you want to issue automatic map_restart with this vote then add '#' before cvar name: vote( "#mycvar" ); =========================================================================