![]() |
Installation and Use | |
The Quaker Server Modifications (QkrMods) package is available as a compressed .ZIP file, containing the source, documentation, and utility files.
The package is available via FTP from:
If you wish to test a work-in-progress of QkrMods, please contact the author. Test sites will be expected to provide feedback on bugs and suggest improvements to the code and documentation.
NOTE: If you are reading these instructions unbundled from the QkrMods distribution package, these instructions may apply only to the current work-in-progress under test at quake.asee.org. The instructions pertaining to a particular version is included in the DOCS/ subdirectory of the distribution.
You must be using registered Quake (v1.06 or higher, WinQuake v1.00 recommended) in order to use this or any other QuakeC patch.
You will need:
All other sources and utilities are provided.
IMPORTANT! QkrMods' memory model exceeds the capability of the precompilied id Software QuakeC compiler, and requires a version of the QuakeC compiler where MAX_GLOBALS and MAX_REFS (in QCC.H) have been increased from their default values. The Win32 compiler included in the QkrMods distribution has already been modified by the author of ProQCC to take care of this problem (in fact, ProQCC is the compiler used for development).
Assuming that the Quake installation directory is \QUAKE:
<type> <name> = <value>; float USE_MODULE_ADMIN = 1; float USE_MODULE_AIRFIST = 0; // only active on a 2 float USE_MODULE_AUTH = 1; float USE_MODULE_BOT = 1; float USE_MODULE_CHASECAM = 1; float USE_MODULE_EJECT = 0; // only active on a 2 float USE_MODULE_GRAPPLE = 2; // use custom graphics on a 2 float USE_MODULE_HIPNOTIC = 0; // unfinished, only active on a 2 float USE_MODULE_IDENTIFY = 1; float USE_MODULE_KICKSTOOGE = 0; float USE_MODULE_KICKSUICIDER = 1; float USE_MODULE_LOG = 1; float USE_MODULE_MOTD = 1; float USE_MODULE_PROTECT = 0; float USE_MODULE_RANDOM = 0; float USE_MODULE_RANK = 1; float USE_MODULE_ROGUE = 0; // unfinished, only active on a 2 float USE_MODULE_RUNES = 2; // use custom graphics on a 2 float USE_MODULE_SKIN = 1; float USE_MODULE_TSCORE = 1; float USE_MODULE_XHAIR = 1; float USE_MODULE_XITMSG = 1;
and starting the server with the +map e1m2 flag; the server will play the maps e1m2, e1m5, e1m2, e1m5, etc. In the example above, the line:
map<[01..10]> = "<map name>"; map01 = "e1m2"; map02 = "e1m5"; map03 = "";
is used to indicate the end of the sequence. By default you can only specify up to ten maps. If you want to be able to select more you will have to change the function MapQueueChooseMap() in an obvious way.map03 = "";
and start a multiplayer game. If you're sure that everything works as expected, start your dedicated server as usual. For instance, by typing:QUAKE.EXE -game qkrmods -zone 512
orQUAKE.EXE -nocdaudio -nosound -noipx -nojoy -dedicated 16 -winmem 16 -zone 512 +map start
would start a dedicated 16-player TCP/IP protocol server and load the "start" map. Be aware that quake command-line switches are case-sensitive (and must be all in lowercase), and that Quake cannot have components on a path which contains long filenames (LFNs). If you choose to use the AUTOEXEC.CFG file included in the distribution, leave off the +map start command (an example map command is included in the AUTOEXEC.CFG already) and please be sure to edit the hostname to uniquely identify your server.WINQUAKE.EXE -dedicated 16 -heapsize 16384 -zone 512 +map start
Customization of the server and ruleset can be adjusted in the .QH files for each module. The following options can be changed while the server is running:
Deathmatch
Bitflags have been added to increase the flexibility of the original idSoftware deathmatch rules:
Bit Option 1 Deathmatch 1 2 Deathmatch 2
The old id Software deathmatch rules. Items respawn as normal, but weapons remain in place (and can consequently be picked up only once by each player).4 Inventory Reset
Resets the health, armor and inventory of each player every time the level changes.8 Halt on Intermission
Only an Admin (or a new player connecting) can exit the intermission.To select multiple deathmatch options, add the numbers of the options together.
Noexit
Additional options have been added to increase the flexibility of the original id Software noexit rules:
Value Option 0 Noexit 0
Players may exit at any time.1 Noexit 1
Players attempting to leave the level are gibbed automatically.2 Noexit 2
Players who attempt to exit on any level except "start" are gibbed automatically.3 Noexit 3
Uses the ExitRules module. Players can only exit a level if at least one player has reached a minimum number of frags (0 by default) and if a certain time has passed on the current level (3 minutes by default).Random Level
This allows a random Capture the Flag level to selected every time the server issues a level change.
The frequency of id to custom CTF levels is controlled by the console variable, temp1 <n> (where <n> is the percentage that CTF levels should appear). A setting of 50 indicates that 50% of the time, select a CTF level or an id level as the next level. If you set it to 100%, you will only get custom CTF levels. If you set it to 0%, you get nothing but id CTF levels. Custom CTF levels are ignored if the TEAM_CUSTOM_MODELS bitflag is not set in the teamplay variable.
Setting temp1 = 0 disables random level selection.
Teamplay
During gameplay the following teamplay options may be set:
Bit Option 1 Health Protect
Players receive no health damage from teammates' attacks.2 No Health Protect
Teammate's attacks do normal damage. This flag must be set in order for the TEAM_DEATH_PENALTY flag to be effective. Setting this flag with the TEAM_HEALTH_PROTECT flag allows self-damage only.4 Armor Protect
Players receive no armor damage from teammates' attacks.8 Mirror Damage
A player who attacks his teammate will receive the same damage the teammate would have received, had he not been protected.16 Death Penalty
Any player who kills his teammate will burst apart in a bloody mess.32 Team Color Lock
Players will only be allowed to be certain colors. Team colors can be specified for up to four teams in the TEAMPLAY.QC file. Players who have illegal colors when they enter will be put into the team with the fewest members. Any player who changes teams (pants color) will have their frag count reset to zero. Players who are observers or dead may change teams, but will have their frag count reset to zero.64 Static Teams
Players will not be allowed to change teams. Any player who changes teams (pants color) will be gibbed and have their frag count reset to zero.128 Drop Items
Players can drop ammo (in backpacks) and weapons by giving the commands 'toss-ammo' and 'toss-weapon', respectively.256 Capture the Flag
This enables Capture the Flag support.512 ...with custom model support 1024 ..with CTF Bots that spawn to auto-even teams. To select multiple teamplay options, add the numbers of the options together.
The penalty for killing a teammate is adjusted by the TEAM_FRAG_PENALTY constant in TEAMPLAY.QC, and is set to one (1) by default.
Team Locking
Team locking limits the choices a player has for selecting a team.
There are four constants in TEAMPLAY.QC which allow configuration of the teamlock settings. The constants, TEAM_COLOR1 through TEAM_COLOR4 have values indicating a legal team color + 1, or '-1'. A value of '-1' indicates that this team is not used. Thus, the number of teams is adjustable from one to four.
In TEAMPLAY.QH, the constants TEAMCHANGE_FATAL controls whether or not a teamchange under static teams kills the player outright or just quietly resets the player's team color, while TEAMCHANGE_DEAD_OK controls whether a player is allowed to change teams while dead or an observer. If a player is allowed to change teams, their frag count is reset and their next respawn will occur on a teamplay start point.
Capture the Flag
You must have team color lock set for Capture the Flag and only have two teams defined (which impliesTEAM_COLOR3 and TEAM_COLOR4 are set to '-1'). If you don't, results are unpredictable.
Note that if you change the TEAM_CAPTURE_FLAG or TEAM_CUSTOM_MODELS bitflags on a running server, you must restart the server before the change will take effect.
Capture the Flag - Expert Rules
The CTF expert rules give out bonuses for performing special tasks during the game: fragging someone who has recently hurt your flag carrier, fragging someone while either you or your target are near your flag, fragging someone while either you or your target are near your flag carrier, returning a flag that causes a capture to happen almost immediately, and fragging a flag carrier if a capture happens almost immediately.
The exact bonuses, and the definitions of "near" and "immediately" are set in CTF.QH.
CTF Bots
By setting the teamplay BOT_AUTO_EVEN_TEAMS bitflag, you can cause CTF Bots to automatically spawn to even up teams. Parameters like the minimum number of players on a team that the bots will fill to and the maximum number of bots per team are set in the ETEAMS.QH file.
SZ_GetSpace
Occasionally, you may note SZ_GetSpace: Overflow showing up in the server console logs. Because QkrMods pushes a decent amount of aliased commands to the client console, clients with inflated *.RC files may experience problems. It is recommended that QkrMods clients be started with the -zone 1024 command-line parameter to allocate more memory to the zone buffer. Since this parameter is in bytes, it should not have a significant impact on client memory usage.
Unnconnected
A player showing as "Unconnected" can be a result of one of serveral problems: an unset player name, a client attempting to connect to a server which requires custom .PAK files, or a TCP/IP routing problem.
If you experience difficulties with Quaker Server Modifications, or have comments or questions please contact the author, Dark Grue, at darkgrue@iname.com.
QUAKE is a registered trademark of id Software, Inc.
The bird in the Quaker Server Modifications logo is a cinnamon Quaker
Parakeet (myiopsitta monachus). More information on Quaker Parakeets may
be found on the Quaker
Parrot Homepage
Copyright © 1998,
Dark Grue.