home *** CD-ROM | disk | FTP | other *** search
- -------------------------------------------------------------------------
-
- ###### Overview:
-
- This is a set of deathmatch oriented QuakeC patches.
- The patches are to be installed on servers only.
- To a large extent they are organized in a module-like structure:
-
- Module Telefrag:
- Reduces the risk of getting telefragged by respawning players.
- When a player respawns the module tries to find a spot which is not
- occupied by another player. If such a spot is available the player
- will respawn there. Only if no such spot is found the player will
- respawn in occupied space, thereby telefragging another player.
- Note that telefragging caused by players leaving teleporters is not
- affected.
-
- Module ExitRules:
- Disallows to exit a level too early.
- Players can only exit a level
- - if at least one player has reached a minimum number of frags
- (which is 40 by default).
- - and if a certain time has passed on the current level (which
- is 1 minute by default).
- These ExitRules may be disabled by voting (see Module Vote).
- The ExitRules valid for the current level are displayed when
- the player enters the level.
- Levels like 'dm1'-'dm6','start' and 'end' don't impose ExitRules.
-
- Module Vote:
- Allows decisions based on a majoriy of player votes.
- Players may use the console commands
- vote-exit: to vote for exiting a level immediately.
- vote-exitrules: to vote for disabling the rules imposed by
- the module ExitRules.
- Votes are counted every few seconds.
- Voting for exiting allows to leave levels which don't provide an
- exit.
- Voting via 'vote-exit' and 'vote-exitrules' may both be used to
- override the ExitRules for the current level.
- The console command 'help-vote' provides some help on available
- voting options, the command 'votes' displays current voting
- statistics.
-
- Module KickSuicider:
- Players suiciding twice within two minutes are kicked out of the
- game.
-
- Module Lightning:
- This module reduces the damage done when discharging the lighning gun
- under water. It furthermore improves the sound of the lightning gun
- and causes a lighning gun discharge to happen only if the gun is
- really under water.
-
- Module Observer:
- As observer you just watch what's happening, without interacting
- with other players or with the environment.
- This especially means that other players will not notice you when you
- are an observer.
- As observer you can
- - fly around.
- - switch to another observation point by pressing 'fire'.
- - join the game as regular player by pressing 'jump'.
- You can turn into an observer by pressing 'fire' when you
- are dead.
- When you connect to the server you automatically start as observer.
- The command 'help-observer' provides help on the observer mode.
-
- Module Motd:
- When connecting to the server a message-of-the-day may be
- center-printed to the player's screen.
- A moment later, information about local server settings and
- extensions is dumped to the player's console.
-
- Module Skin:
- This is a slightly improved version of Dennis Noordsij's
- (lnoordsi@inter.NL.net) Multiskin, which allows players to use
- different skins (see also section Acknowledgements below).
- The improvements have the effect that
- - corpses show the correct skin.
- - skins are preserved across level changings (so that players
- have to choose their skin only once).
- - the commands 'skin-next' and 'skin-prev' may be used to change
- the skin.
- - the command 'help-skin' provides some help about available
- commands.
- - names for Multiskin-1.1 skins and for Top20Skins-1.0 skins are
- shown when the player chooses a skin.
- Players certainly still have to use proper player and player-head
- model files containing the actual skins to be displayed.
- ServerModules supports
- - the MultiSkin 1.1 PLAYER.MDL file which may be found on
- Dennis Noordsij's QuakeC page:
- http://web.inter.NL.net/users/L.J.Noordsij/qc.htm
- - the Top20Skins PLAYER.MDL and H_PLAYER.MDL file included in the
- skin collection
- ftp://ftp.cdrom.com/pub/quake/graphics/mdl/top20skins-1.0.zip
- When using this set of skins gibbed heads will show the correct
- skin also.
-
- Module Init:
- Allows client side initialization when connecting to the server
- by causing the client to execute a sequence of 'init' commands.
- Example:
- A player puts the following lines into his autexec.cfg:
- alias init init01
- alias init01 "init-nextcall; alias init init02; echo successful; "
- alias init02 "init-nextskin; alias init init03; " // skin 2
- alias init03 "init-nextskin; alias init init04; " // skin 3
- alias init04 "init-nextskin; alias init init05; " // skin 4
- alias init05 "init-nextskin; alias init init06; " // skin 5
- alias init06 "init-nextcall; alias init init07; color 3; "
- alias init07 " alias init init01; "
- These lines cause that a short time after the player connected
- to the server
- - he is assigned the skin number 5.
- - his color changes to 3.
- How it works:
- The server first tells the client to execute the command 'init'.
- The client executes 'init' which includes either 'init-nextskin'
- or 'init-nextcall', both of which tell the server to again let
- the client execute the command 'init'. This continues until in
- the example above the empty assignment 'init07' terminates the
- sequence. Apart from triggering the next step 'init-nextskin'
- also increases the skin number by one.
- Please note that this module is in an experimental state since
- it is not clear how it works for high-ping-time/large-packet-loss
- connections, so please tell me about your experiences.
-
- Module LevelSelect:
- Allows to specify which levels are offered on the server and in which
- order they are to be played.
- By default this module is used to modify the original level order
- such that instead of the end level the level sequence dm1-...-dm6-end
- is played when selecting the end map on the start level (the players
- must exit the levels dm1-dm6 and end by voting (see Module Vote)).
-
- Module Messages:
- Allows to selectively enable or disable messages about picking up ammo,
- armor, backpacks, keys, health, powerups and weapons.
- By default these messages are suppressed.
-
- Module Rank:
- The command 'rank' displays a sorted ranking table with entries
- in the format
- X TOTAL = KILLS DEATHS ACCIDENTS = PLAYER
- where
- X = letter 'D' if the player is dead, letter 'O' if
- the player is an observer
- PLAYER = the name of the player
- TOTAL = his total score
- KILLS = how many he killed
- DEATHS = how often he got killed by other players
- ACCIDENTS = number of self-caused, deathly accidents
- A Suicide counts as double-accident.
- The default formula for calculating TOTAL is
- TOTAL = 3*KILLS - DEATHS - 3*ACCIDENTS
- The command 'help-rank' provides help on the format of the ranking
- table and should explain the (local) formula used to calculate the
- total score as well.
-
- Module ServerConsole:
- Does nothing except except of printing some messages to the server
- console when a player suicides, is killed, enters the game or is
- telefragged by another player.
-
- Module ServerHelp:
- Provides the command 'server-help', used to display some help on
- server settings and extensions in the player console.
-
- -------------------------------------------------------------------------
-
- ###### Bugs/Unwanted Features:
-
- # Observers occasionally get stuck or start in a position from which they
- can't move away. If this happens just press 'fire' to jump to another
- place or use the command 'observer-noclip' to free yourself.
- Observers may also get stuck when passing teleporters with buggy
- target spots. The only examples I know so far are
- - level e1m1: the teleporter leading to the pentagramm of protection.
- - level end: the teleporter leading to a spot from which the player
- falls down into the water.
- Again, just press 'fire' to jump to another place or use the command
- 'observer-teleport'.
-
- -------------------------------------------------------------------------
-
- ###### How to install:
- ------------------------
-
- This section assumes that you are a server administrator.
-
- ### Testing:
- ------------
-
- For testing purposes you may first want to try the precompiled PROGS.DAT.
-
- Assuming that QUAKE.EXE resides in C:\GAMES\QUAKE you should
- - create the directory C:\GAMES\QUAKE\SERVMODS
- - copy the file PROGS.DAT included in the 'Server Modules' archive
- to C:\GAMES\QUAKE\SERVMODS
- - start a listen server by
- QUAKE -GAME SERVMODS -LISTEN 2
-
- ### Customizing:
- ----------------
-
- Customizing requires that you know how to use the program PATCH.
- See the file '_patch.txt' included in the 'Server Modules' archive
- for details on how to obtain a free copy of this program and on how
- to use it. Jeff Epler (jepler@inetnebr.com) wrote '_patch.txt' and
- ftp://ftp.cdrom.com/pub/quake/quakec/howpatch.txt
- should be the most recent version of this short introduction.
-
- Assuming that the directory C:\GAMES\QUAKE\SERVMODS contains a fresh copy
- of unmodified QuakeC sources together with the program QCCDOS you may
- proceed in the following way:
-
- # Unzip the 'Server Modules' archive in C:\GAMES\QUAKE\SERVMODS.
-
- # Patch the sources by typing the command
- PATCH < _SRVMODS.PAT
-
- # Disable/Enable the usage of a specific module by editing the
- USE_MODULE_* constants in file _MODULES.QH .
- By default you'll find there
- float USE_MODULE_EXITRULES = 1;
- float USE_MODULE_INIT = 1;
- float USE_MODULE_KICKSUICIDER = 1;
- float USE_MODULE_LEVELSELECT = 1;
- float USE_MODULE_LIGHTNING = 1;
- float USE_MODULE_MESSAGES = 1;
- float USE_MODULE_MOTD = 1;
- float USE_MODULE_OBSERVER = 1;
- float USE_MODULE_RANK = 1;
- float USE_MODULE_SERVERHELP = 1;
- float USE_MODULE_SKIN = 1;
- float USE_MODULE_SERVERCONSOLE = 1;
- float USE_MODULE_TELEFRAG = 1;
- float USE_MODULE_VOTE = 1;
- float USE_SUBMODULE_VOTE_EXIT = 1;
- float USE_SUBMODULE_VOTE_EXITRULES = 1;
- which means that all modules are enabled.
- The USE_SUBMODULE_VOTE_* constants above enable/disable submodules
- of the the module 'Vote'. Setting 'USE_SUBMODULE_VOTE_EXIT=0' disables
- voting for exiting but voting voting for overriding ExitRules will
- still be allowed.
-
- # To add a message-of-the-day to be displayed when a player connects to
- the server you should edit the file _MOTD.QC and change the variable
- 'motd_motd' in the function 'MotdInit'.
- Note that by default no message is displayed.
-
- # To change the help about server settings (which is displayed when
- connecting to a server or when typing 'help-server') just edit
- the function 'ServerHelpShowServerSettings' in the file _SERVHLP.QC.
-
- # If you want to inform players about more special properties of your
- server have a look at the function 'ModulesShowInfo' in the file
- _MODULES.QC. You can freely add your own messages there.
-
- # The module 'Messages' by default takes care that a player receives no
- messages when picking up ammunition, armor, etc.
- If you want to allow for some or all of these messages you should edit
- the file _MESSAGE.QH and change the value of the flag 'messages_flag'.
-
- # Changing the formula used by the module 'Rank' for calculating the total
- score requires you to edit the function 'RankCountEvent' in the file
- _RANK.QC in an obvious way.
-
- # The Module 'LevelSelect' allows to specify which maps are offered on
- the server and in which order they are played.
- To achieve this the function 'LevelSelectSelectLevel' in the file
- _LEVSEL.QC is used. The file also contains a commented example
- which tells you how to set up you own conditions (for instance how
- to exclude certain not-so-good maps).
- By default this module is set up so that everything works like in
- the original version of Quake, except that when a player selects
- the 'end' level the map sequence 'dm1'-...-'dm6'-'end' is played
- instead.
-
- # Updating the module 'Skin' may become desirable if new skins become
- available in the file PLAYER.MDL which is distributed as part of the
- Multiskin package. The changes you will have to make are trivial,
- just have a look at the file _SKIN.QC.
-
- # Finally compile the sources by typing the command QCCDOS.
- Assuming that compilation succeeded without errors you should now
- copy ..\PROGS.DAT into the directory C:\GAMES\QUAKE\SERVMODS.
- Change directory to C:\GAMES\QUAKE\ and check your changes by typing
- QUAKE -GAME SERVMODS -LISTEN 2
- If you're sure that everything works as expected start your
- dedicated server as usual for instance by
- QUAKE -NOSOUND -NOIPX -NOJOY -DEDICATED 8 +MAP E1M2
- or according to your wishes.
-
- -------------------------------------------------------------------------
-
- ###### Resources Used:
- ----------------------
-
- The following impulses are used:
-
- impulse 200 for command 'skin-next'
- impulse 201 for command 'skin-prev'
- impulse 202 for command 'help-skin'
- impulse 203 for command 'rank'
- impulse 204 for command 'help-rank'
- impulse 205 for command 'help-observer'
- impulse 206 for command 'observer-noclip'
- impulse 207 for command 'help-server'
- impulse 208 for command 'init-nextcall'
- impulse 209 for command 'init-nextskin'
- impulse 210 for command 'help-exitrules'
- impulse 211 for command 'help-vote'
- impulse 212 for command 'votes'
- impulse 213 for command 'vote-exit'
- impulse 214 for command 'vote-exitrules'
-
- Furthermore the spawnparm parm16 is used to save the player flag
- '.float player_flag' across level transitions.
-
- -------------------------------------------------------------------------
-
- ###### Files:
- -------------
-
- _modules.qh
- _modules.qc Deals with internal structure of ServerModules.
- _plystat.qh
- _plystat.qc Deals with internal structure of ServerModules.
- _exitrls.qh Module ExitRules (Header)
- _exitrls.qc Module ExitRules (Code)
- _vote.qh Module Vote (Header)
- _vote.qc Module Vote (Code)
- _init.qh Module Init (Header)
- _init.qc Module Init (Code)
- _kckscdr.qh Module KickSuicider (Header)
- _kckscdr.qc Module KickSuicider (Code)
- _levsel.qh Module LevelSelect (Header)
- _levsel.qc Module LevelSelect (Code)
- _lightng.qh Module Lightning (Header)
- _lightng.qc Module Lightning (Code)
- _message.qh Module Messages (Header)
- _message.qc Module Messages (Code)
- _motd.qh Module Motd (Header)
- _motd.qc Module Motd (Code)
- _observe.qc Module Observer (Header)
- _observe.qh Module Observer (Code)
- _rank.qh Module Rank (Header)
- _rank.qc Module Rank (Code)
- _servhlp.qh Module ServerHelp (Header)
- _servhlp.qc Module ServerHelp (Code)
- _servcon.qh Module ServerConsole (Header)
- _servcon.qc Module ServerConsole (Code)
- _skin.qh Module Skin (Header)
- _skin.qc Module Skin (Code)
- _telefrg.qh Module Telefrag (Header)
- _telefrg.qc Module Telefrag (Code)
- _conv.pl A perl script used to strip/add CR's when switching
- between Linux and DOS.
- _srvmods.pat Patch file containing all changes to be made
- to the original QuakeC sources.
- _COPYING GNU General Public License
- _manual.txt Documentation of ServerModules patches.
- _changes.txt History of changes.
- _patch.txt Provides information on how to patch and on
- where to get a free copy of the program PATCH.
- progs.dat A precompiled version of the modifications
- described here.
-
- -------------------------------------------------------------------------
-
- ###### Copyright:
- -----------------
-
- /*
- **
- ** Copyright (C) 1996 Johannes Plass
- **
- ** This program is free software; you can redistribute it and/or modify
- ** it under the terms of the GNU General Public License as published by
- ** the Free Software Foundation; either version 2 of the License, or
- ** (at your option) any later version.
- **
- ** This program is distributed in the hope that it will be useful,
- ** but WITHOUT ANY WARRANTY; without even the implied warranty of
- ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- ** GNU General Public License for more details.
- **
- ** You should have received a copy of the GNU General Public License
- ** along with this program; if not, write to the Free Software
- ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- **
- ** Author: Johannes Plass (plass@dipmza.physik.uni-mainz.de)
- **
- */
-
- -------------------------------------------------------------------------
-
- ###### Acknowledgements:
- ------------------------
-
- The module 'Skin' is based on Dennis Noordsij's (lnoordsi@inter.NL.net)
- Multiskin QuakeC patch.
- Please see Dennis Noordsij's QuakeC page
- http://web.inter.NL.net/users/L.J.Noordsij/qc.htm
- for further details about MultiSkin.
-
-