[iortcw] 23/89: All: Add con_autochat and con_autoclear cvars
Simon McVittie
smcv at debian.org
Fri Sep 8 10:44:19 UTC 2017
This is an automated email from the git hooks/post-receive script.
smcv pushed a commit to tag 1.51b
in repository iortcw.
commit 4006b9c8864eb4cd81ecf6eb7614a7d38e3b5044
Author: MAN-AT-ARMS <M4N4T4RMS at gmail.com>
Date: Fri Jun 16 19:14:22 2017 -0400
All: Add con_autochat and con_autoclear cvars
---
MP/README | 732 --------------------------------------------
MP/code/client/cl_console.c | 6 +-
MP/code/client/cl_keys.c | 6 +-
MP/code/qcommon/common.c | 11 +-
MP/code/qcommon/qcommon.h | 3 +
MP/code/sys/con_tty.c | 8 +-
README.md | 3 +
SP/README | 732 --------------------------------------------
SP/code/client/cl_console.c | 6 +-
SP/code/client/cl_keys.c | 6 +-
SP/code/qcommon/common.c | 11 +-
SP/code/qcommon/qcommon.h | 3 +
SP/code/sys/con_tty.c | 8 +-
13 files changed, 57 insertions(+), 1478 deletions(-)
diff --git a/MP/README b/MP/README
deleted file mode 100644
index c5423e1..0000000
--- a/MP/README
+++ /dev/null
@@ -1,732 +0,0 @@
- _ _
- (_) | |
- _ ___ _ __| |_ _____ __
- | |/ _ \| '__| __/ __\ \ /\ / /
- | | (_) | | | || (__ \ V V /
- |_|\___/|_| \__\___| \_/\_/
-
-
-
-The intent of this project is to provide a baseline RTCW which may be used
-for further development and fun.
-Some of the major features currently implemented are:
-
- * SDL backend
- * OpenAL sound API support (multiple speaker support and better sound
- quality)
- * Full x86_64 support
- * VoIP support, both in-game and external support through Mumble.
- * MinGW compilation support on Windows and cross compilation support on Linux
- * AVI video capture of demos
- * Much improved console autocompletion
- * Persistent console history
- * Colorized terminal output
- * Optional Ogg Vorbis support
- * Much improved QVM tools
- * Support for various esoteric operating systems
- * cl_guid support
- * HTTP/FTP download redirection (using cURL)
- * Multiuser support on Windows systems (user specific game data
- is stored in "My Documents\RTCW")
- * PNG support
- * Many, many bug fixes
-
-The map editor and associated compiling tools are not included. We suggest you
-use a modern copy from http://icculus.org/gtkradiant/.
-
-The original id software readme that accompanied the RTCW source release has been
-renamed to id-readme.txt so as to prevent confusion. Please refer to the
-web-site for updated status.
-
-
---------------------------------------------- Compilation and installation -----
-
-For *nix
- 1. Change to the directory containing this readme.
- 2. Run 'make'.
-
-For Windows,
- 1. Please refer to the excellent instructions here:
- http://wiki.ioquake3.org/Building_ioquake3
-
-For Mac OS X, building a Universal Binary
- 1. Install MacOSX SDK packages from XCode. For maximum compatibility,
- install MacOSX10.4u.sdk and MacOSX10.3.9.sdk, and MacOSX10.2.8.sdk.
- 2. Change to the directory containing this README file.
- 3. Run './make-macosx-ub.sh'
- 4. Copy the resulting iowolfmp.app or iowolfsp.app in /build/release-darwin-ub to your
- /Applications/iortcw folder.
-
-Installation, for *nix
- 1. Set the COPYDIR variable in the shell to be where you installed RTCW
- to. By default it will be /usr/local/games/wolf if you haven't set it.
- This is the path as used by the original Linux RTCW installer and subsequent
- point releases.
- 2. Run 'make copyfiles'.
-
-It is also possible to cross compile for Windows under *nix and Cygwin using MinGW. Your
-distribution may have mingw32 packages available. On debian/Ubuntu, you need to
-install 'mingw-w64'. Thereafter cross compiling is simply a case running
-'PLATFORM=mingw32 ARCH=x86 make' in place of 'make'. ARCH may also be set to
-x86_64.
-
-The following variables may be set, either on the command line or in
-Makefile.local:
-
- CFLAGS - use this for custom CFLAGS
- V - set to show cc command line when building
- DEFAULT_BASEDIR - extra path to search for main and such
- BUILD_SERVER - build the 'iowolfmpded' server binary
- BUILD_CLIENT - build the 'iowolfmp' or 'iowolfsp' client binary
- BUILD_BASEGAME - build the 'main' binaries
- BUILD_GAME_SO - build the game shared libraries
- BUILD_GAME_QVM - build the game qvms
- BUILD_STANDALONE - build binaries suited for stand-alone games
- SERVERBIN - rename 'iowolfmpded' server binary
- CLIENTBIN - rename 'iowolfmp' or 'iowolfsp' client binary
- BASEGAME - rename 'main'
- BASEGAME_CFLAGS - custom CFLAGS for basegame
- USE_OPENAL - use OpenAL where available
- USE_OPENAL_DLOPEN - link with OpenAL at runtime
- USE_CURL - use libcurl for http/ftp download support
- USE_CURL_DLOPEN - link with libcurl at runtime
- USE_CODEC_VORBIS - enable Ogg Vorbis support
- USE_CODEC_OPUS - enable Ogg Opus support
- USE_MUMBLE - enable Mumble support
- USE_VOIP - enable built-in VoIP support
- USE_INTERNAL_LIBS - build internal libraries instead of dynamically
- linking against system libraries; this just sets
- the default for USE_INTERNAL_OPUS etc.
- and USE_LOCAL_HEADERS
- USE_FREETYPE - enable FreeType support for rendering fonts
- USE_INTERNAL_ZLIB - build and link against internal zlib
- USE_INTERNAL_JPEG - build and link against internal JPEG library
- USE_INTERNAL_OGG - build and link against internal ogg library
- USE_INTERNAL_OPUS - build and link against internal opus/opusfile libraries
- USE_LOCAL_HEADERS - use headers local to ioq3 instead of system ones
- DEBUG_CFLAGS - C compiler flags to use for building debug version
- COPYDIR - the target installation directory
- TEMPDIR - specify user defined directory for temp files
-
-The defaults for these variables differ depending on the target platform.
-
-
------------------------------------------------------------------- Console -----
-
-New cvars
- cl_autoRecordDemo - record a new demo on each map change
- cl_aviFrameRate - the framerate to use when capturing video
- cl_aviMotionJpeg - use the mjpeg codec when capturing video
- cl_guidServerUniq - makes cl_guid unique for each server
- cl_cURLLib - filename of cURL library to load
- cl_consoleKeys - space delimited list of key names or
- characters that toggle the console
- cl_mouseAccelStyle - Set to 1 for QuakeLive mouse acceleration
- behaviour, 0 for standard q3
- cl_mouseAccelOffset - Tuning the acceleration curve, see below
-
- in_joystickUseAnalog - Do not translate joystick axis events
- to keyboard commands
-
- j_forward - Joystick analogue to m_forward,
- for forward movement speed/direction.
- j_side - Joystick analogue to m_side,
- for side movement speed/direction.
- j_up - Joystick up movement speed/direction.
- j_pitch - Joystick analogue to m_pitch,
- for pitch rotation speed/direction.
- j_yaw - Joystick analogue to m_yaw,
- for yaw rotation speed/direction.
- j_forward_axis - Selects which joystick axis
- controls forward/back.
- j_side_axis - Selects which joystick axis
- controls left/right.
- j_up_axis - Selects which joystick axis
- controls up/down.
- j_pitch_axis - Selects which joystick axis
- controls pitch.
- j_yaw_axis - Selects which joystick axis
- controls yaw.
-
- s_useOpenAL - use the OpenAL sound backend if available
- s_alPrecache - cache OpenAL sounds before use
- s_alGain - the value of AL_GAIN for each source
- s_alSources - the total number of sources (memory) to
- allocate
- s_alDopplerFactor - the value passed to alDopplerFactor
- s_alDopplerSpeed - the value passed to alDopplerVelocity
- s_alMinDistance - the value of AL_REFERENCE_DISTANCE for
- each source
- s_alMaxDistance - the maximum distance before sounds start
- to become inaudible.
- s_alRolloff - the value of AL_ROLLOFF_FACTOR for each
- source
- s_alGraceDistance - after having passed MaxDistance, length
- until sounds are completely inaudible
- s_alDriver - which OpenAL library to use
- s_alDevice - which OpenAL device to use
- s_alAvailableDevices - list of available OpenAL devices
- s_alInputDevice - which OpenAL input device to use
- s_alAvailableInputDevices - list of available OpenAL input devices
- s_sdlBits - SDL bit resolution
- s_sdlSpeed - SDL sample rate
- s_sdlChannels - SDL number of channels
- s_sdlDevSamps - SDL DMA buffer size override
- s_sdlMixSamps - SDL mix buffer size override
- s_backend - read only, indicates the current sound
- backend
- s_muteWhenMinimized - mute sound when minimized
- s_muteWhenUnfocused - mute sound when window is unfocused
- sv_dlRate - bandwidth allotted to PK3 file downloads
- via UDP, in kbyte/s
-
- com_ansiColor - enable use of ANSI escape codes in the tty
- com_altivec - enable use of altivec on PowerPC systems
- com_standalone (read only) - If set to 1, RTCW is running in
- standalone mode
- com_basegame - Use a different base than main. If no
- original RTCW pak files
- are found, this will enable running in
- standalone mode
- com_homepath - Specify name that is to be appended to the
- home path
- com_legacyprotocol - Specify protocol version number for
- legacy RTCW 1.4 protocol, see
- "Network protocols" section below
- (startup only)
- com_maxfpsUnfocused - Maximum frames per second when unfocused
- com_maxfpsMinimized - Maximum frames per second when minimized
- com_busyWait - Will use a busy loop to wait for rendering
- next frame when set to non-zero value
- com_pipefile - Specify filename to create a named pipe
- through which other processes can control
- the server while it is running.
- Nonfunctional on Windows.
- com_gamename - Gamename sent to master server in
- getservers[Ext] query and infoResponse
- "gamename" infostring value. Also used
- for filtering local network games.
- com_protocol - Specify protocol version number for
- current iortcw protocol, see
- "Network protocols" section below
- (startup only)
-
- in_joystickNo - select which joystick to use
- in_availableJoysticks - list of available Joysticks
- in_keyboardDebug - print keyboard debug info
-
- sv_dlURL - the base of the HTTP or FTP site that
- holds custom pk3 files for your server
- sv_banFile - Name of the file that is used for storing
- the server bans
-
- net_ip6 - IPv6 address to bind to
- net_port6 - port to bind to using the ipv6 address
- net_enabled - enable networking, bitmask. Add up
- number for option to enable it:
- enable ipv4 networking: 1
- enable ipv6 networking: 2
- prioritise ipv6 over ipv4: 4
- disable multicast support: 8
- net_mcast6addr - multicast address to use for scanning for
- ipv6 servers on the local network
- net_mcastiface - outgoing interface to use for scan
-
- r_allowResize - make window resizable (SDL only)
- r_ext_texture_filter_anisotropic - anisotropic texture filtering
- r_zProj - distance of observer camera to projection
- plane in quake3 standard units
- r_greyscale - desaturate textures, useful for anaglyph,
- supports values in the range of 0 to 1
- r_stereoEnabled - enable stereo rendering for techniques
- like shutter glasses (untested)
- r_anaglyphMode - Enable rendering of anaglyph images
- red-cyan glasses: 1
- red-blue: 2
- red-green: 3
- green-magenta: 4
- To swap the colors for left and right eye
- just add 4 to the value for the wanted
- color combination. For red-blue and
- red-green you probably want to enable
- r_greyscale
- r_stereoSeparation - Control eye separation. Resulting
- separation is r_zProj divided by this
- value in quake3 standard units.
- See also
- http://wiki.ioquake3.org/Stereo_Rendering
- for more information
- r_marksOnTriangleMeshes - Support impact marks on md3 models, MOD
- developers should increase the mark
- triangle limits in cg_marks.c if they
- intend to use this.
- r_sdlDriver - read only, indicates the SDL driver
- backend being used
- r_noborder - Remove window decoration from window
- managers, like borders and titlebar.
- r_screenshotJpegQuality - Controls quality of jpeg screenshots
- captured using screenshotJPEG
- r_aviMotionJpegQuality - Controls quality of video capture when
- cl_aviMotionJpeg is enabled
- r_mode -2 - This new video mode automatically uses the
- desktop resolution.
-
-New commands
- video [filename] - start video capture (use with demo command)
- stopvideo - stop video capture
- stopmusic - stop background music
- minimize - Minimize the game and show desktop
- togglemenu - causes escape key event for opening/closing menu, or
- going to a previous menu. works in binds, even in UI
-
- print - print out the contents of a cvar
- unset - unset a user created cvar
-
- banaddr <range> - ban an ip address range from joining a game on this
- server, valid <range> is either playernum or CIDR
- notation address range.
- exceptaddr <range> - exempt an ip address range from a ban.
- bandel <range> - delete ban (either range or ban number)
- exceptdel <range> - delete exception (either range or exception number)
- listbans - list all currently active bans and exceptions
- rehashbans - reload the banlist from serverbans.dat
- flushbans - delete all bans
-
- net_restart - restart network subsystem to change latched settings
- game_restart <fs_game> - Switch to another mod
-
- which <filename/path> - print out the path on disk to a loaded item
-
- execq <filename> - quiet exec command, doesn't print "execing file.cfg"
-
- kicknum <client number> - kick a client by number, same as clientkick command
- kickall - kick all clients, similar to "kick all" (but kicks
- everyone even if someone is named "all")
- kickbots - kick all bots, similar to "kick allbots" (but kicks
- all bots even if someone is named "allbots")
-
- tell <client num> <msg> - send message to a single client (new to server)
-
-
---------------------------------------------------------- README for Users -----
-
-Using shared libraries instead of qvm
- To force RTCW-MP to use qvms run it with the following
- parameters: +set sv_pure 0 +set vm_cgame 2 +set vm_game 2 +set vm_ui 2
-
-Using Demo Data Files
- Copy demomain/pak0.pk3 from the demo installer to your main directory. The
- qvm files in this pak0.pk3 will not work, so you have to use the native
- shared libraries or qvms from this project. To use the new qvms, they must be
- put into a pk3 file. A pk3 file is just a zip file, so any compression tool
- that can create such files will work. The shared libraries should already be
- in the correct place. Use the instructions above to use them.
-
- Please bear in mind that you will not be able to play online using the demo
- data, nor is it something that we like to spend much time maintaining or
- supporting.
-
-Help! Iortcw won't give me an fps of X anymore when setting com_maxfps!
- Iortcw now uses the select() system call to wait for the rendering of the
- next frame when com_maxfps was hit. This will improve your CPU load
- considerably in these cases. However, not all systems may support a
- granularity for its timing functions that is required to perform this waiting
- correctly. For instance, iortcw tells select() to wait 2 milliseconds, but
- really it can only wait for a multiple of 5ms, i.e. 5, 10, 15, 20... ms.
- In this case you can always revert back to the old behaviour by setting the
- cvar com_busyWait to 1.
-
-Using HTTP/FTP Download Support (Server)
- You can enable redirected downloads on your server even if it's not
- an iortcw server. You simply need to use the 'sets' command to put
- the sv_dlURL cvar into your SERVERINFO string and ensure sv_allowDownloads
- is set to 1
-
- sv_dlURL is the base of the URL that contains your custom .pk3 files
- the client will append both fs_game and the filename to the end of
- this value. For example, if you have sv_dlURL set to
- "http://yoursite.org", fs_game is "main", and the client is
- missing "test.pk3", it will attempt to download from the URL
- "http://yoursite.org/main/test.pk3"
-
- sv_allowDownload's value is now a bitmask made up of the following
- flags:
- 1 - ENABLE
- 4 - do not use UDP downloads
- 8 - do not ask the client to disconnect when using HTTP/FTP
-
- Server operators who are concerned about potential "leeching" from their
- HTTP servers from other iortcw servers can make use of the HTTP_REFERER
- that iortcw sets which is "ioQ3://{SERVER_IP}:{SERVER_PORT}". For,
- example, Apache's mod_rewrite can restrict access based on HTTP_REFERER.
-
- On a sidenote, downloading via UDP has been improved and yields higher data
- rates now. You can configure the maximum bandwidth for UDP downloads via the
- cvar sv_dlRate. Due to system-specific limits the download rate is capped
- at about 1 Mbyte/s per client, so curl downloading may still be faster.
-
-Using HTTP/FTP Download Support (Client)
- Simply setting cl_allowDownload to 1 will enable HTTP/FTP downloads
- assuming iortcw was compiled with USE_CURL=1 (the default).
- like sv_allowDownload, cl_allowDownload also uses a bitmask value
- supporting the following flags:
- 1 - ENABLE
- 2 - do not use HTTP/FTP downloads
- 4 - do not use UDP downloads
-
- When iortcw is built with USE_CURL_DLOPEN=1 (default on some platforms),
- it will use the value of the cvar cl_cURLLib as the filename of the cURL
- library to dynamically load.
-
-Multiuser Support on Windows systems
- On Windows, all user specific files such as autogenerated configuration,
- demos, videos, screenshots, and autodownloaded pk3s are now saved in a
- directory specific to the user who is running iortcw.
-
- On NT-based such as Windows XP, this is usually a directory named:
- "C:\Documents and Settings\%USERNAME%\My Docuemtns\RTCW"
-
- Windows 95, Windows 98, and Windows ME will use a directory like:
- "C:\Windows\My Documents\RTCW"
- in single-user mode, or:
- "C:\Windows\Profiles\%USERNAME%\My Documents\RTCW"
- if multiple logins have been enabled.
-
- In order to access this directory more easily, the installer may create a
- Shortcut which has its target set to:
- "%Userprofile%\My Documents"
- This Shortcut would work for all users on the system regardless of the
- locale settings. Unfortunately, this environment variable is only
- present on Windows NT based systems.
-
- You can revert to the old single-user behaviour by setting the fs_homepath
- cvar to the directory where iortcw is installed. For example:
- iowolfmp.exe +set fs_homepath "c:\iortcw"
-or
- iowolfsp.exe +set fs_homepath "c:\iortcw"
- Note that this cvar MUST be set as a command line parameter.
-
-SDL Keyboard Differences
- iortcw clients have different keyboard behaviour compared to the original
- RTTCW clients.
-
- * SDL > 1.2.9 does not support disabling dead key recognition. In order to
- send dead key characters (e.g. ~, ', `, and ^), you must key a Space (or
- sometimes the same character again) after the character to send it on
- many international keyboard layouts.
-
- * The SDL client supports many more keys than the original RTCW client.
- For example the keys: "Windows", "SysReq", "ScrollLock", and "Break".
- For non-US keyboards, all of the so called "World" keys are now supported
- as well as F13, F14, F15, and the country-specific mode/meta keys.
-
- On many international layouts the default console toggle keys are also dead
- keys, meaning that dropping the console potentially results in
- unintentionally initiating the keying of a dead key. Furthermore SDL 1.2's
- dead key support is broken by design and RTCW doesn't support non-ASCII text
- entry, so the chances are you won't get the correct character anyway.
-
- If you use such a keyboard layout, you can set the cvar cl_consoleKeys. This
- is a space delimited list of key names that will toggle the console. The key
- names are the usual RTCW names e.g. "~", "`", "c", "BACKSPACE", "PAUSE",
- "WINDOWS" etc. It's also possible to use ASCII characters, by hexadecimal
- number. Some example values for cl_consoleKeys:
-
- "~ ` 0x7e 0x60" Toggle on ~ or ` (the default)
- "WINDOWS" Toggle on the Windows key
- "c" Toggle on the c key
- "0x43" Toggle on the C character (Shift-c)
- "PAUSE F1 PGUP" Toggle on the Pause, F1 or Page Up keys
-
- Note that when you elect a set of console keys or characters, they cannot
- then be used for binding, nor will they generate characters when entering
- text. Also, in addition to the nominated console keys, Shift-ESC is hard
- coded to always toggle the console.
-
- QuakeLive mouse acceleration (patch and this text written by TTimo from id)
- I've been using an experimental mouse acceleration code for a while, and
- decided to make it available to everyone. Don't be too worried if you don't
- understand the explanations below, this is mostly intended for advanced
- players:
- To enable it, set cl_mouseAccelStyle 1 (0 is the default/legacy behavior)
-
- New style is controlled with 3 cvars:
-
- sensitivity
- cl_mouseAccel
- cl_mouseAccelOffset
-
- The old code (cl_mouseAccelStyle 0) can be difficult to calibrate because if
- you have a base sensitivity setup, as soon as you set a non zero acceleration
- your base sensitivity at low speeds will change as well. The other problem
- with style 0 is that you are stuck on a square (power of two) acceleration
- curve.
-
- The new code tries to solve both problems:
-
- Once you setup your sensitivity to feel comfortable and accurate enough for
- low mouse deltas with no acceleration (cl_mouseAccel 0), you can start
- increasing cl_mouseAccel and tweaking cl_mouseAccelOffset to get the
- amplification you want for high deltas with little effect on low mouse deltas.
-
- cl_mouseAccel is a power value. Should be >= 1, 2 will be the same power curve
- as style 0. The higher the value, the faster the amplification grows with the
- mouse delta.
-
- cl_mouseAccelOffset sets how much base mouse delta will be doubled by
- acceleration. The closer to zero you bring it, the more acceleration will
- happen at low speeds. This is also very useful if you are changing to a new
- mouse with higher dpi, if you go from 500 to 1000 dpi, you can divide your
- cl_mouseAccelOffset by two to keep the same overall 'feel' (you will likely
- gain in precision when you do that, but that is not related to mouse
- acceleration).
-
- Mouse acceleration is tricky to configure, and when you do you'll have to
- re-learn your aiming. But you will find that it's very much forth it in the
- long run.
-
- If you try the new acceleration code and start using it, I'd be very
- interested by your feedback.
-
-
----------------------------------------------------- README for Developers -----
-
-64bit mods
- If you wish to compile external mods as shared libraries on a 64bit platform,
- and the mod source is derived from the id RTCW SDK, you will need to modify the
- interface code a little. Open the files ending in _syscalls.c and change
- every instance of int to intptr_t in the declaration of the syscall function
- pointer and the dllEntry function. Also find the vmMain function for each
- module (usually in cg_main.c g_main.c etc.) and similarly replace the return
- value in the prototype with intptr_t (arg0, arg1, ...stay int).
-
- Add the following code snippet to q_shared.h:
-
- #ifdef Q3_VM
- typedef int intptr_t;
- #else
- #include <stdint.h>
- #endif
-
-Creating mods compatible with RTCW 1.41
- If you're using this package to create mods for the last official release of
- RTCW, it is necessary to pass the commandline option '-vq3' to your invocation
- of q3asm. This is because by default q3asm outputs an updated qvm format that
- is necessary to fix a bug involving the optimizing pass of the x86 vm JIT
- compiler.
-
-Creating standalone games
- Have you finished the daunting task of removing all dependencies on the RTCW
- game data? You probably now want to give your users the opportunity to play
- the game without owning a copy of RTCW, which consequently means removing cd-key
- and authentication server checks. In addition to being a straightforward RTCW
- client, iortcw also purports to be a reliable and stable code base on which
- to base your game project.
-
- However, before you start compiling your own version of iortcw, you have to
- ask yourself: Have we changed or will we need to change anything of importance
- in the engine?
-
- If your answer to this question is "no", it probably makes no sense to build
- your own binaries. Instead, you can just use the pre-built binaries on the
- website. Just make sure the game is called with:
-
- +set com_basegame <yournewbase>
-
- in any links/scripts you install for your users to start the game. The
- binary must not detect any original RTCW game pak files. If this
- condition is met, the game will set com_standalone to 1 and is then running
- in stand alone mode.
-
- If you want the engine to use a different directory in your homepath than
- e.g. "My Documents\RTCW" on Windows or ".wolf" on Linux, then set a new name at startup
- by adding
-
- +set com_homepath <homedirname>
-
- to the command line. You can also control which game name to use when talking
- to the master server:
-
- +set com_gamename <gamename>
-
- So clients requesting a server list will only receive servers that have a
- matching game name.
-
- Example line:
-
- +set com_basegame basefoo +set com_homepath .foo
- +set com_gamename foo
-
-
- If you really changed parts that would make vanilla iortcw incompatible with
- your mod, we have included another way to conveniently build a stand-alone
- binary. Just run make with the option BUILD_STANDALONE=1. Don't forget to edit
- the PRODUCT_NAME and subsequent #defines in qcommon/q_shared.h with
- information appropriate for your project.
-
- While a lot of work has been put into iortcw that you can benefit from free
- of charge, it does not mean that you have no obligations to fulfill. Please be
- aware that as soon as you start distributing your game with an engine based on
- our sources we expect you to fully comply with the requirements as stated in
- the GPL. That includes making sources and modifications you made to the
- iortcw engine as well as the game-code used to compile the .qvm files for
- the game logic freely available to everyone. Furthermore, note that the "RTCW
- Game Source License" prohibits distribution of mods that are intended to
- operate on a version of RTCW not sanctioned by id software:
-
- "with this Agreement, ID grants to you the non-exclusive and limited right
- to distribute copies of the Software ... for operation only with the full
- version of the software game QUAKE III ARENA"
-
- This means that if you're creating a standalone game, you cannot use said
- license on any portion of the product. As the only other license this code has
- been released under is the GPL, this is the only option.
-
- This does NOT mean that you cannot market this game commercially. The GPL does
- not prohibit commercial exploitation and all assets (e.g. textures, sounds,
- maps) created by yourself are your property and can be sold like every other
- game you find in stores.
-
-Network protocols
- There are now two cvars that give you some degree of freedom over the reported
- protocol versions between clients and servers: "com_protocol" and
- "com_legacyprotocol".
- The reason for this is that some standalone games increased the protocol
- number even though nothing really changed in their protocol and the iortcw
- engine is still fully compatible.
-
- In order to harden the network protocol against UDP spoofing attacks a new
- network protocol was introduced that defends against such attacks.
- Unfortunately, this protocol will be incompatible to the original RTCW 1.4
- which is the latest official release from id.
- Luckily, iortcw has backwards compatibility, on the client as well as on the
- server. This means iortcw players can play on old servers just as iortcw
- servers are able to service old clients.
-
- The cvar "com_protocol" denotes the protocol version for the new hardened
- protocol, whereas the "com_legacyprotocol" cvar denotes the protocol version
- for the legacy protocol.
- If the value for "com_protocol" and "com_legacyprotocol" is identical, then
- the legacy protocol is always used. If "com_legacyprotocol" is set to 0, then
- support for the legacy protocol is disabled.
-
- Mods that use a standalone engine obviously do not require dual protocol
- support, and it is turned off if the engine is compiled with STANDALONE per
- default. If you desire backwards compatibility to older versions of your
- game you can still enable it in q_shared.h by defining
- LEGACY_PROTOCOL.
-
-cl_guid Support
- cl_guid is a cvar which is part of the client's USERINFO string. Its value
- is a 32 character string made up of [a-f] and [0-9] characters. This
- value is pseudo-unique for every player. Id's RTCW client also
- sets cl_guid, but only if Punkbuster is enabled on the client.
-
- If cl_guidServerUniq is non-zero (the default), then this value is also
- pseudo-unique for each server a client connects to (based on IP:PORT of
- the server).
-
- The purpose of cl_guid is to add an identifier for each player on
- a server. This value can be reset by the client at any time so it's not
- useful for blocking access. However, it can have at least two uses in
- your mod's game code:
- 1) improve logging to allow statistical tools to index players by more
- than just name
- 2) granting some weak admin rights to players without requiring passwords
-
-PNG support
- iortcw supports the use of PNG (Portable Network Graphic) images as
- textures. It should be noted that the use of such images in a map will
- result in missing placeholder textures where the map is used with the id
- RTCW client or earlier versions of iortcw.
-
- Recent versions of GtkRadiant and q3map2 support PNG images without
- modification. However GtkRadiant is not aware that PNG textures are supported
- by iortcw. To change this behaviour open the file 'q3.game' in the 'games'
- directory of the GtkRadiant base directory with an editor and change the
- line:
-
- texturetypes="tga jpg"
-
- to
-
- texturetypes="tga jpg png"
-
- Restart GtkRadiant and PNG textures are now available.
-
-Building with MinGW for pre Windows XP
- IPv6 support requires a header named "wspiapi.h" to abstract away from
- differences in earlier versions of Windows' IPv6 stack. There is no MinGW
- equivalent of this header and the Microsoft version is obviously not
- redistributable, so in its absence we're forced to require Windows XP.
- However if this header is acquired separately and placed in the qcommon/
- directory, this restriction is lifted.
-
-
-------------------------------------------------------------- Contributing -----
-
-Please send all patches to bugzilla (https://bugzilla.icculus.org), or join the
-mailing list (http://lists.ioquake.org/listinfo.cgi/ioquake3-ioquake.org) and
-submit your patch there. The best case scenario is that you submit your patch
-to bugzilla, and then post the URL to the mailing list.
-
-The focus for ioq3 is to develop a stable base suitable for further development
-and provide players with the same RTCW experience they've had for years. As
-such ioq3 does not have any significant graphical enhancements and none are
-planned at this time. However, improved graphics and sound patches will be
-accepted as long as they are entirely optional, do not require new media and
-are off by default.
-
-
---------------------------------------------- Building Official Installers -----
-
-We need help getting automated installers on all the platforms that iortcw
-supports. We don't necessarily care about all the installers being identical,
-but we have some general guidelines:
-
- * Please include the id patch pk3s in your installer, which are available
- from http://ioquake3.org/patch-data/ subject to agreement to the id
- EULA. Your installer shall also ask the user to agree to this EULA (which
- is in the /web/include directory for your convenience) and subsequently
- refuse to continue the installation of the patch pk3s and pak0.pk3 if they
- do not.
-
- * Please don't require pak0.pk3, since not everyone using the engine
- plans on playing RTCW on it. It's fine to (optionally) assist the
- user in copying the file or tell them how.
-
- * It is fine to just install the binaries without requiring id EULA agreement,
- providing pak0.pk3 and the patch pk3s are not referred to or included in the
- installer.
-
- * Please include at least an SDL so/dylib/dll on every platform.
-
- * Please include an OpenAL so/dylib/dll, since every platform should be using
- it by now.
-
- * Please contact the mailing list when you've made your installer.
-
- * Please be prepared to alter your installer on the whim of the maintainers.
-
- * Your installer will be mirrored to an "official" directory, thus making it
- a done deal.
-
------------------------------------------------------------------- Credits -----
-
-Maintainers
- James Canete <use.less01 at gmail.com>
- Ludwig Nussel <ludwig.nussel at suse.de>
- Thilo Schulz <arny at ats.s.bawue.de>
- Tim Angus <tim at ngus.net>
- Tony J. White <tjw at tjw.org>
- Zachary J. Slater <zachary at ioquake.org>
- Zack Middleton <zturtleman at gmail.com>
-
-Significant contributions from
- Ryan C. Gordon <icculus at icculus.org>
- Andreas Kohn <andreas at syndrom23.de>
- Joerg Dietrich <Dietrich_Joerg at t-online.de>
- Stuart Dalton <badcdev at gmail.com>
- Vincent S. Cojot <vincent at cojot dot name>
- optical <alex at rigbo.se>
- Aaron Gyes <floam at aaron.gy>
diff --git a/MP/code/client/cl_console.c b/MP/code/client/cl_console.c
index dad42d9..81853dc 100644
--- a/MP/code/client/cl_console.c
+++ b/MP/code/client/cl_console.c
@@ -67,6 +67,7 @@ console_t con;
cvar_t *con_debug;
cvar_t *con_conspeed;
+cvar_t *con_autoclear;
cvar_t *con_notifytime;
// DHM - Nerve :: Must hold CTRL + SHIFT + ~ to get console
@@ -91,7 +92,9 @@ void Con_ToggleConsole_f( void ) {
return;
}
- Field_Clear( &g_consoleField );
+ if ( con_autoclear->integer ) {
+ Field_Clear( &g_consoleField );
+ }
g_consoleField.widthInChars = g_console_field_width;
Con_ClearNotify();
@@ -391,6 +394,7 @@ void Con_Init( void ) {
con_notifytime = Cvar_Get( "con_notifytime", "7", 0 ); // JPW NERVE increased per id req for obits
con_conspeed = Cvar_Get( "scr_conspeed", "3", 0 );
+ con_autoclear = Cvar_Get( "con_autoclear", "1", CVAR_ARCHIVE );
con_debug = Cvar_Get( "con_debug", "0", CVAR_ARCHIVE ); //----(SA) added
con_restricted = Cvar_Get( "con_restricted", "0", CVAR_INIT ); // DHM - Nerve
diff --git a/MP/code/client/cl_keys.c b/MP/code/client/cl_keys.c
index 3a8a761..19e2dac 100644
--- a/MP/code/client/cl_keys.c
+++ b/MP/code/client/cl_keys.c
@@ -1571,7 +1571,7 @@ void Console_Key( int key ) {
// enter finishes the line
if ( key == K_ENTER || key == K_KP_ENTER ) {
// if not in the game explicitly prepend a slash if needed
- if ( clc.state != CA_ACTIVE &&
+ if ( clc.state != CA_ACTIVE && con_autochat->integer &&
g_consoleField.buffer[0] &&
g_consoleField.buffer[0] != '\\' &&
g_consoleField.buffer[0] != '/' ) {
@@ -1593,7 +1593,9 @@ void Console_Key( int key ) {
if ( !g_consoleField.buffer[0] ) {
return; // empty lines just scroll the console without adding to history
} else {
- Cbuf_AddText( "cmd say " );
+ if ( con_autochat->integer ) {
+ Cbuf_AddText ( "cmd say " );
+ }
Cbuf_AddText( g_consoleField.buffer );
Cbuf_AddText( "\n" );
}
diff --git a/MP/code/qcommon/common.c b/MP/code/qcommon/common.c
index 10404ad..bfae876 100644
--- a/MP/code/qcommon/common.c
+++ b/MP/code/qcommon/common.c
@@ -111,6 +111,9 @@ cvar_t *com_legacyprotocol;
cvar_t *com_basegame;
cvar_t *com_homepath;
cvar_t *com_busyWait;
+#ifndef DEDICATED
+cvar_t *con_autochat;
+#endif
#if idx64
int (*Q_VMftol)(void);
@@ -2861,6 +2864,10 @@ void Com_Init( char *commandLine ) {
#endif
Cvar_Get("protocol", com_protocol->string, CVAR_ROM);
+#ifndef DEDICATED
+ con_autochat = Cvar_Get("con_autochat", "1", CVAR_ARCHIVE);
+#endif
+
com_hunkused = Cvar_Get( "com_hunkused", "0", 0 );
Sys_Init();
@@ -3562,8 +3569,8 @@ void Field_CompleteCommand( char *cmd,
completionString = Cmd_Argv( completionArgument - 1 );
#ifndef DEDICATED
- // Unconditionally add a '\' to the start of the buffer
- if( completionField->buffer[ 0 ] &&
+ // add a '\' to the start of the buffer if it might be sent as chat otherwise
+ if( con_autochat->integer && completionField->buffer[ 0 ] &&
completionField->buffer[ 0 ] != '\\' )
{
if( completionField->buffer[ 0 ] != '/' )
diff --git a/MP/code/qcommon/qcommon.h b/MP/code/qcommon/qcommon.h
index 699ed5f..14a9fbf 100644
--- a/MP/code/qcommon/qcommon.h
+++ b/MP/code/qcommon/qcommon.h
@@ -990,6 +990,9 @@ extern cvar_t *com_protocol;
#ifdef LEGACY_PROTOCOL
extern cvar_t *com_legacyprotocol;
#endif
+#ifndef DEDICATED
+extern cvar_t *con_autochat;
+#endif
// com_speeds times
extern int time_game;
diff --git a/MP/code/sys/con_tty.c b/MP/code/sys/con_tty.c
index 9a6ee95..2c2b595 100644
--- a/MP/code/sys/con_tty.c
+++ b/MP/code/sys/con_tty.c
@@ -378,7 +378,7 @@ char *CON_Input( void )
{
#ifndef DEDICATED
// if not in the game explicitly prepend a slash if needed
- if (clc.state != CA_ACTIVE && TTY_con.cursor &&
+ if (clc.state != CA_ACTIVE && con_autochat->integer && TTY_con.cursor &&
TTY_con.buffer[0] != '/' && TTY_con.buffer[0] != '\\')
{
memmove(TTY_con.buffer + 1, TTY_con.buffer, sizeof(TTY_con.buffer) - 1);
@@ -389,7 +389,11 @@ char *CON_Input( void )
if (TTY_con.buffer[0] == '/' || TTY_con.buffer[0] == '\\') {
Q_strncpyz(text, TTY_con.buffer + 1, sizeof(text));
} else if (TTY_con.cursor) {
- Com_sprintf(text, sizeof(text), "cmd say %s", TTY_con.buffer);
+ if (con_autochat->integer) {
+ Com_sprintf(text, sizeof(text), "cmd say %s", TTY_con.buffer);
+ } else {
+ Q_strncpyz(text, TTY_con.buffer, sizeof(text));
+ }
} else {
text[0] = '\0';
}
diff --git a/README.md b/README.md
index 5a31d54..d0ea3d8 100644
--- a/README.md
+++ b/README.md
@@ -115,6 +115,9 @@ The defaults for these variables differ depending on the target platform.
* cl_mouseAccelStyle ( 0 )- Set to 1 for QuakeLive mouse acceleration behaviour, 0 for standard
* cl_mouseAccelOffset ( 5 ) - Tuning the acceleration curve, see below
+* con_autochat ( 1 ) - Set to 0 to disable sending console input text as chat when there is not a slash at the beginning
+* con_autoclear ( 1 ) - Set to 0 to disable clearing console input text when console is closed
+
* in_availableJoysticks - list of available Joysticks
* in_keyboardDebug - print keyboard debug info
diff --git a/SP/README b/SP/README
deleted file mode 100644
index c5423e1..0000000
--- a/SP/README
+++ /dev/null
@@ -1,732 +0,0 @@
- _ _
- (_) | |
- _ ___ _ __| |_ _____ __
- | |/ _ \| '__| __/ __\ \ /\ / /
- | | (_) | | | || (__ \ V V /
- |_|\___/|_| \__\___| \_/\_/
-
-
-
-The intent of this project is to provide a baseline RTCW which may be used
-for further development and fun.
-Some of the major features currently implemented are:
-
- * SDL backend
- * OpenAL sound API support (multiple speaker support and better sound
- quality)
- * Full x86_64 support
- * VoIP support, both in-game and external support through Mumble.
- * MinGW compilation support on Windows and cross compilation support on Linux
- * AVI video capture of demos
- * Much improved console autocompletion
- * Persistent console history
- * Colorized terminal output
- * Optional Ogg Vorbis support
- * Much improved QVM tools
- * Support for various esoteric operating systems
- * cl_guid support
- * HTTP/FTP download redirection (using cURL)
- * Multiuser support on Windows systems (user specific game data
- is stored in "My Documents\RTCW")
- * PNG support
- * Many, many bug fixes
-
-The map editor and associated compiling tools are not included. We suggest you
-use a modern copy from http://icculus.org/gtkradiant/.
-
-The original id software readme that accompanied the RTCW source release has been
-renamed to id-readme.txt so as to prevent confusion. Please refer to the
-web-site for updated status.
-
-
---------------------------------------------- Compilation and installation -----
-
-For *nix
- 1. Change to the directory containing this readme.
- 2. Run 'make'.
-
-For Windows,
- 1. Please refer to the excellent instructions here:
- http://wiki.ioquake3.org/Building_ioquake3
-
-For Mac OS X, building a Universal Binary
- 1. Install MacOSX SDK packages from XCode. For maximum compatibility,
- install MacOSX10.4u.sdk and MacOSX10.3.9.sdk, and MacOSX10.2.8.sdk.
- 2. Change to the directory containing this README file.
- 3. Run './make-macosx-ub.sh'
- 4. Copy the resulting iowolfmp.app or iowolfsp.app in /build/release-darwin-ub to your
- /Applications/iortcw folder.
-
-Installation, for *nix
- 1. Set the COPYDIR variable in the shell to be where you installed RTCW
- to. By default it will be /usr/local/games/wolf if you haven't set it.
- This is the path as used by the original Linux RTCW installer and subsequent
- point releases.
- 2. Run 'make copyfiles'.
-
-It is also possible to cross compile for Windows under *nix and Cygwin using MinGW. Your
-distribution may have mingw32 packages available. On debian/Ubuntu, you need to
-install 'mingw-w64'. Thereafter cross compiling is simply a case running
-'PLATFORM=mingw32 ARCH=x86 make' in place of 'make'. ARCH may also be set to
-x86_64.
-
-The following variables may be set, either on the command line or in
-Makefile.local:
-
- CFLAGS - use this for custom CFLAGS
- V - set to show cc command line when building
- DEFAULT_BASEDIR - extra path to search for main and such
- BUILD_SERVER - build the 'iowolfmpded' server binary
- BUILD_CLIENT - build the 'iowolfmp' or 'iowolfsp' client binary
- BUILD_BASEGAME - build the 'main' binaries
- BUILD_GAME_SO - build the game shared libraries
- BUILD_GAME_QVM - build the game qvms
- BUILD_STANDALONE - build binaries suited for stand-alone games
- SERVERBIN - rename 'iowolfmpded' server binary
- CLIENTBIN - rename 'iowolfmp' or 'iowolfsp' client binary
- BASEGAME - rename 'main'
- BASEGAME_CFLAGS - custom CFLAGS for basegame
- USE_OPENAL - use OpenAL where available
- USE_OPENAL_DLOPEN - link with OpenAL at runtime
- USE_CURL - use libcurl for http/ftp download support
- USE_CURL_DLOPEN - link with libcurl at runtime
- USE_CODEC_VORBIS - enable Ogg Vorbis support
- USE_CODEC_OPUS - enable Ogg Opus support
- USE_MUMBLE - enable Mumble support
- USE_VOIP - enable built-in VoIP support
- USE_INTERNAL_LIBS - build internal libraries instead of dynamically
- linking against system libraries; this just sets
- the default for USE_INTERNAL_OPUS etc.
- and USE_LOCAL_HEADERS
- USE_FREETYPE - enable FreeType support for rendering fonts
- USE_INTERNAL_ZLIB - build and link against internal zlib
- USE_INTERNAL_JPEG - build and link against internal JPEG library
- USE_INTERNAL_OGG - build and link against internal ogg library
- USE_INTERNAL_OPUS - build and link against internal opus/opusfile libraries
- USE_LOCAL_HEADERS - use headers local to ioq3 instead of system ones
- DEBUG_CFLAGS - C compiler flags to use for building debug version
- COPYDIR - the target installation directory
- TEMPDIR - specify user defined directory for temp files
-
-The defaults for these variables differ depending on the target platform.
-
-
------------------------------------------------------------------- Console -----
-
-New cvars
- cl_autoRecordDemo - record a new demo on each map change
- cl_aviFrameRate - the framerate to use when capturing video
- cl_aviMotionJpeg - use the mjpeg codec when capturing video
- cl_guidServerUniq - makes cl_guid unique for each server
- cl_cURLLib - filename of cURL library to load
- cl_consoleKeys - space delimited list of key names or
- characters that toggle the console
- cl_mouseAccelStyle - Set to 1 for QuakeLive mouse acceleration
- behaviour, 0 for standard q3
- cl_mouseAccelOffset - Tuning the acceleration curve, see below
-
- in_joystickUseAnalog - Do not translate joystick axis events
- to keyboard commands
-
- j_forward - Joystick analogue to m_forward,
- for forward movement speed/direction.
- j_side - Joystick analogue to m_side,
- for side movement speed/direction.
- j_up - Joystick up movement speed/direction.
- j_pitch - Joystick analogue to m_pitch,
- for pitch rotation speed/direction.
- j_yaw - Joystick analogue to m_yaw,
- for yaw rotation speed/direction.
- j_forward_axis - Selects which joystick axis
- controls forward/back.
- j_side_axis - Selects which joystick axis
- controls left/right.
- j_up_axis - Selects which joystick axis
- controls up/down.
- j_pitch_axis - Selects which joystick axis
- controls pitch.
- j_yaw_axis - Selects which joystick axis
- controls yaw.
-
- s_useOpenAL - use the OpenAL sound backend if available
- s_alPrecache - cache OpenAL sounds before use
- s_alGain - the value of AL_GAIN for each source
- s_alSources - the total number of sources (memory) to
- allocate
- s_alDopplerFactor - the value passed to alDopplerFactor
- s_alDopplerSpeed - the value passed to alDopplerVelocity
- s_alMinDistance - the value of AL_REFERENCE_DISTANCE for
- each source
- s_alMaxDistance - the maximum distance before sounds start
- to become inaudible.
- s_alRolloff - the value of AL_ROLLOFF_FACTOR for each
- source
- s_alGraceDistance - after having passed MaxDistance, length
- until sounds are completely inaudible
- s_alDriver - which OpenAL library to use
- s_alDevice - which OpenAL device to use
- s_alAvailableDevices - list of available OpenAL devices
- s_alInputDevice - which OpenAL input device to use
- s_alAvailableInputDevices - list of available OpenAL input devices
- s_sdlBits - SDL bit resolution
- s_sdlSpeed - SDL sample rate
- s_sdlChannels - SDL number of channels
- s_sdlDevSamps - SDL DMA buffer size override
- s_sdlMixSamps - SDL mix buffer size override
- s_backend - read only, indicates the current sound
- backend
- s_muteWhenMinimized - mute sound when minimized
- s_muteWhenUnfocused - mute sound when window is unfocused
- sv_dlRate - bandwidth allotted to PK3 file downloads
- via UDP, in kbyte/s
-
- com_ansiColor - enable use of ANSI escape codes in the tty
- com_altivec - enable use of altivec on PowerPC systems
- com_standalone (read only) - If set to 1, RTCW is running in
- standalone mode
- com_basegame - Use a different base than main. If no
- original RTCW pak files
- are found, this will enable running in
- standalone mode
- com_homepath - Specify name that is to be appended to the
- home path
- com_legacyprotocol - Specify protocol version number for
- legacy RTCW 1.4 protocol, see
- "Network protocols" section below
- (startup only)
- com_maxfpsUnfocused - Maximum frames per second when unfocused
- com_maxfpsMinimized - Maximum frames per second when minimized
- com_busyWait - Will use a busy loop to wait for rendering
- next frame when set to non-zero value
- com_pipefile - Specify filename to create a named pipe
- through which other processes can control
- the server while it is running.
- Nonfunctional on Windows.
- com_gamename - Gamename sent to master server in
- getservers[Ext] query and infoResponse
- "gamename" infostring value. Also used
- for filtering local network games.
- com_protocol - Specify protocol version number for
- current iortcw protocol, see
- "Network protocols" section below
- (startup only)
-
- in_joystickNo - select which joystick to use
- in_availableJoysticks - list of available Joysticks
- in_keyboardDebug - print keyboard debug info
-
- sv_dlURL - the base of the HTTP or FTP site that
- holds custom pk3 files for your server
- sv_banFile - Name of the file that is used for storing
- the server bans
-
- net_ip6 - IPv6 address to bind to
- net_port6 - port to bind to using the ipv6 address
- net_enabled - enable networking, bitmask. Add up
- number for option to enable it:
- enable ipv4 networking: 1
- enable ipv6 networking: 2
- prioritise ipv6 over ipv4: 4
- disable multicast support: 8
- net_mcast6addr - multicast address to use for scanning for
- ipv6 servers on the local network
- net_mcastiface - outgoing interface to use for scan
-
- r_allowResize - make window resizable (SDL only)
- r_ext_texture_filter_anisotropic - anisotropic texture filtering
- r_zProj - distance of observer camera to projection
- plane in quake3 standard units
- r_greyscale - desaturate textures, useful for anaglyph,
- supports values in the range of 0 to 1
- r_stereoEnabled - enable stereo rendering for techniques
- like shutter glasses (untested)
- r_anaglyphMode - Enable rendering of anaglyph images
- red-cyan glasses: 1
- red-blue: 2
- red-green: 3
- green-magenta: 4
- To swap the colors for left and right eye
- just add 4 to the value for the wanted
- color combination. For red-blue and
- red-green you probably want to enable
- r_greyscale
- r_stereoSeparation - Control eye separation. Resulting
- separation is r_zProj divided by this
- value in quake3 standard units.
- See also
- http://wiki.ioquake3.org/Stereo_Rendering
- for more information
- r_marksOnTriangleMeshes - Support impact marks on md3 models, MOD
- developers should increase the mark
- triangle limits in cg_marks.c if they
- intend to use this.
- r_sdlDriver - read only, indicates the SDL driver
- backend being used
- r_noborder - Remove window decoration from window
- managers, like borders and titlebar.
- r_screenshotJpegQuality - Controls quality of jpeg screenshots
- captured using screenshotJPEG
- r_aviMotionJpegQuality - Controls quality of video capture when
- cl_aviMotionJpeg is enabled
- r_mode -2 - This new video mode automatically uses the
- desktop resolution.
-
-New commands
- video [filename] - start video capture (use with demo command)
- stopvideo - stop video capture
- stopmusic - stop background music
- minimize - Minimize the game and show desktop
- togglemenu - causes escape key event for opening/closing menu, or
- going to a previous menu. works in binds, even in UI
-
- print - print out the contents of a cvar
- unset - unset a user created cvar
-
- banaddr <range> - ban an ip address range from joining a game on this
- server, valid <range> is either playernum or CIDR
- notation address range.
- exceptaddr <range> - exempt an ip address range from a ban.
- bandel <range> - delete ban (either range or ban number)
- exceptdel <range> - delete exception (either range or exception number)
- listbans - list all currently active bans and exceptions
- rehashbans - reload the banlist from serverbans.dat
- flushbans - delete all bans
-
- net_restart - restart network subsystem to change latched settings
- game_restart <fs_game> - Switch to another mod
-
- which <filename/path> - print out the path on disk to a loaded item
-
- execq <filename> - quiet exec command, doesn't print "execing file.cfg"
-
- kicknum <client number> - kick a client by number, same as clientkick command
- kickall - kick all clients, similar to "kick all" (but kicks
- everyone even if someone is named "all")
- kickbots - kick all bots, similar to "kick allbots" (but kicks
- all bots even if someone is named "allbots")
-
- tell <client num> <msg> - send message to a single client (new to server)
-
-
---------------------------------------------------------- README for Users -----
-
-Using shared libraries instead of qvm
- To force RTCW-MP to use qvms run it with the following
- parameters: +set sv_pure 0 +set vm_cgame 2 +set vm_game 2 +set vm_ui 2
-
-Using Demo Data Files
- Copy demomain/pak0.pk3 from the demo installer to your main directory. The
- qvm files in this pak0.pk3 will not work, so you have to use the native
- shared libraries or qvms from this project. To use the new qvms, they must be
- put into a pk3 file. A pk3 file is just a zip file, so any compression tool
- that can create such files will work. The shared libraries should already be
- in the correct place. Use the instructions above to use them.
-
- Please bear in mind that you will not be able to play online using the demo
- data, nor is it something that we like to spend much time maintaining or
- supporting.
-
-Help! Iortcw won't give me an fps of X anymore when setting com_maxfps!
- Iortcw now uses the select() system call to wait for the rendering of the
- next frame when com_maxfps was hit. This will improve your CPU load
- considerably in these cases. However, not all systems may support a
- granularity for its timing functions that is required to perform this waiting
- correctly. For instance, iortcw tells select() to wait 2 milliseconds, but
- really it can only wait for a multiple of 5ms, i.e. 5, 10, 15, 20... ms.
- In this case you can always revert back to the old behaviour by setting the
- cvar com_busyWait to 1.
-
-Using HTTP/FTP Download Support (Server)
- You can enable redirected downloads on your server even if it's not
- an iortcw server. You simply need to use the 'sets' command to put
- the sv_dlURL cvar into your SERVERINFO string and ensure sv_allowDownloads
- is set to 1
-
- sv_dlURL is the base of the URL that contains your custom .pk3 files
- the client will append both fs_game and the filename to the end of
- this value. For example, if you have sv_dlURL set to
- "http://yoursite.org", fs_game is "main", and the client is
- missing "test.pk3", it will attempt to download from the URL
- "http://yoursite.org/main/test.pk3"
-
- sv_allowDownload's value is now a bitmask made up of the following
- flags:
- 1 - ENABLE
- 4 - do not use UDP downloads
- 8 - do not ask the client to disconnect when using HTTP/FTP
-
- Server operators who are concerned about potential "leeching" from their
- HTTP servers from other iortcw servers can make use of the HTTP_REFERER
- that iortcw sets which is "ioQ3://{SERVER_IP}:{SERVER_PORT}". For,
- example, Apache's mod_rewrite can restrict access based on HTTP_REFERER.
-
- On a sidenote, downloading via UDP has been improved and yields higher data
- rates now. You can configure the maximum bandwidth for UDP downloads via the
- cvar sv_dlRate. Due to system-specific limits the download rate is capped
- at about 1 Mbyte/s per client, so curl downloading may still be faster.
-
-Using HTTP/FTP Download Support (Client)
- Simply setting cl_allowDownload to 1 will enable HTTP/FTP downloads
- assuming iortcw was compiled with USE_CURL=1 (the default).
- like sv_allowDownload, cl_allowDownload also uses a bitmask value
- supporting the following flags:
- 1 - ENABLE
- 2 - do not use HTTP/FTP downloads
- 4 - do not use UDP downloads
-
- When iortcw is built with USE_CURL_DLOPEN=1 (default on some platforms),
- it will use the value of the cvar cl_cURLLib as the filename of the cURL
- library to dynamically load.
-
-Multiuser Support on Windows systems
- On Windows, all user specific files such as autogenerated configuration,
- demos, videos, screenshots, and autodownloaded pk3s are now saved in a
- directory specific to the user who is running iortcw.
-
- On NT-based such as Windows XP, this is usually a directory named:
- "C:\Documents and Settings\%USERNAME%\My Docuemtns\RTCW"
-
- Windows 95, Windows 98, and Windows ME will use a directory like:
- "C:\Windows\My Documents\RTCW"
- in single-user mode, or:
- "C:\Windows\Profiles\%USERNAME%\My Documents\RTCW"
- if multiple logins have been enabled.
-
- In order to access this directory more easily, the installer may create a
- Shortcut which has its target set to:
- "%Userprofile%\My Documents"
- This Shortcut would work for all users on the system regardless of the
- locale settings. Unfortunately, this environment variable is only
- present on Windows NT based systems.
-
- You can revert to the old single-user behaviour by setting the fs_homepath
- cvar to the directory where iortcw is installed. For example:
- iowolfmp.exe +set fs_homepath "c:\iortcw"
-or
- iowolfsp.exe +set fs_homepath "c:\iortcw"
- Note that this cvar MUST be set as a command line parameter.
-
-SDL Keyboard Differences
- iortcw clients have different keyboard behaviour compared to the original
- RTTCW clients.
-
- * SDL > 1.2.9 does not support disabling dead key recognition. In order to
- send dead key characters (e.g. ~, ', `, and ^), you must key a Space (or
- sometimes the same character again) after the character to send it on
- many international keyboard layouts.
-
- * The SDL client supports many more keys than the original RTCW client.
- For example the keys: "Windows", "SysReq", "ScrollLock", and "Break".
- For non-US keyboards, all of the so called "World" keys are now supported
- as well as F13, F14, F15, and the country-specific mode/meta keys.
-
- On many international layouts the default console toggle keys are also dead
- keys, meaning that dropping the console potentially results in
- unintentionally initiating the keying of a dead key. Furthermore SDL 1.2's
- dead key support is broken by design and RTCW doesn't support non-ASCII text
- entry, so the chances are you won't get the correct character anyway.
-
- If you use such a keyboard layout, you can set the cvar cl_consoleKeys. This
- is a space delimited list of key names that will toggle the console. The key
- names are the usual RTCW names e.g. "~", "`", "c", "BACKSPACE", "PAUSE",
- "WINDOWS" etc. It's also possible to use ASCII characters, by hexadecimal
- number. Some example values for cl_consoleKeys:
-
- "~ ` 0x7e 0x60" Toggle on ~ or ` (the default)
- "WINDOWS" Toggle on the Windows key
- "c" Toggle on the c key
- "0x43" Toggle on the C character (Shift-c)
- "PAUSE F1 PGUP" Toggle on the Pause, F1 or Page Up keys
-
- Note that when you elect a set of console keys or characters, they cannot
- then be used for binding, nor will they generate characters when entering
- text. Also, in addition to the nominated console keys, Shift-ESC is hard
- coded to always toggle the console.
-
- QuakeLive mouse acceleration (patch and this text written by TTimo from id)
- I've been using an experimental mouse acceleration code for a while, and
- decided to make it available to everyone. Don't be too worried if you don't
- understand the explanations below, this is mostly intended for advanced
- players:
- To enable it, set cl_mouseAccelStyle 1 (0 is the default/legacy behavior)
-
- New style is controlled with 3 cvars:
-
- sensitivity
- cl_mouseAccel
- cl_mouseAccelOffset
-
- The old code (cl_mouseAccelStyle 0) can be difficult to calibrate because if
- you have a base sensitivity setup, as soon as you set a non zero acceleration
- your base sensitivity at low speeds will change as well. The other problem
- with style 0 is that you are stuck on a square (power of two) acceleration
- curve.
-
- The new code tries to solve both problems:
-
- Once you setup your sensitivity to feel comfortable and accurate enough for
- low mouse deltas with no acceleration (cl_mouseAccel 0), you can start
- increasing cl_mouseAccel and tweaking cl_mouseAccelOffset to get the
- amplification you want for high deltas with little effect on low mouse deltas.
-
- cl_mouseAccel is a power value. Should be >= 1, 2 will be the same power curve
- as style 0. The higher the value, the faster the amplification grows with the
- mouse delta.
-
- cl_mouseAccelOffset sets how much base mouse delta will be doubled by
- acceleration. The closer to zero you bring it, the more acceleration will
- happen at low speeds. This is also very useful if you are changing to a new
- mouse with higher dpi, if you go from 500 to 1000 dpi, you can divide your
- cl_mouseAccelOffset by two to keep the same overall 'feel' (you will likely
- gain in precision when you do that, but that is not related to mouse
- acceleration).
-
- Mouse acceleration is tricky to configure, and when you do you'll have to
- re-learn your aiming. But you will find that it's very much forth it in the
- long run.
-
- If you try the new acceleration code and start using it, I'd be very
- interested by your feedback.
-
-
----------------------------------------------------- README for Developers -----
-
-64bit mods
- If you wish to compile external mods as shared libraries on a 64bit platform,
- and the mod source is derived from the id RTCW SDK, you will need to modify the
- interface code a little. Open the files ending in _syscalls.c and change
- every instance of int to intptr_t in the declaration of the syscall function
- pointer and the dllEntry function. Also find the vmMain function for each
- module (usually in cg_main.c g_main.c etc.) and similarly replace the return
- value in the prototype with intptr_t (arg0, arg1, ...stay int).
-
- Add the following code snippet to q_shared.h:
-
- #ifdef Q3_VM
- typedef int intptr_t;
- #else
- #include <stdint.h>
- #endif
-
-Creating mods compatible with RTCW 1.41
- If you're using this package to create mods for the last official release of
- RTCW, it is necessary to pass the commandline option '-vq3' to your invocation
- of q3asm. This is because by default q3asm outputs an updated qvm format that
- is necessary to fix a bug involving the optimizing pass of the x86 vm JIT
- compiler.
-
-Creating standalone games
- Have you finished the daunting task of removing all dependencies on the RTCW
- game data? You probably now want to give your users the opportunity to play
- the game without owning a copy of RTCW, which consequently means removing cd-key
- and authentication server checks. In addition to being a straightforward RTCW
- client, iortcw also purports to be a reliable and stable code base on which
- to base your game project.
-
- However, before you start compiling your own version of iortcw, you have to
- ask yourself: Have we changed or will we need to change anything of importance
- in the engine?
-
- If your answer to this question is "no", it probably makes no sense to build
- your own binaries. Instead, you can just use the pre-built binaries on the
- website. Just make sure the game is called with:
-
- +set com_basegame <yournewbase>
-
- in any links/scripts you install for your users to start the game. The
- binary must not detect any original RTCW game pak files. If this
- condition is met, the game will set com_standalone to 1 and is then running
- in stand alone mode.
-
- If you want the engine to use a different directory in your homepath than
- e.g. "My Documents\RTCW" on Windows or ".wolf" on Linux, then set a new name at startup
- by adding
-
- +set com_homepath <homedirname>
-
- to the command line. You can also control which game name to use when talking
- to the master server:
-
- +set com_gamename <gamename>
-
- So clients requesting a server list will only receive servers that have a
- matching game name.
-
- Example line:
-
- +set com_basegame basefoo +set com_homepath .foo
- +set com_gamename foo
-
-
- If you really changed parts that would make vanilla iortcw incompatible with
- your mod, we have included another way to conveniently build a stand-alone
- binary. Just run make with the option BUILD_STANDALONE=1. Don't forget to edit
- the PRODUCT_NAME and subsequent #defines in qcommon/q_shared.h with
- information appropriate for your project.
-
- While a lot of work has been put into iortcw that you can benefit from free
- of charge, it does not mean that you have no obligations to fulfill. Please be
- aware that as soon as you start distributing your game with an engine based on
- our sources we expect you to fully comply with the requirements as stated in
- the GPL. That includes making sources and modifications you made to the
- iortcw engine as well as the game-code used to compile the .qvm files for
- the game logic freely available to everyone. Furthermore, note that the "RTCW
- Game Source License" prohibits distribution of mods that are intended to
- operate on a version of RTCW not sanctioned by id software:
-
- "with this Agreement, ID grants to you the non-exclusive and limited right
- to distribute copies of the Software ... for operation only with the full
- version of the software game QUAKE III ARENA"
-
- This means that if you're creating a standalone game, you cannot use said
- license on any portion of the product. As the only other license this code has
- been released under is the GPL, this is the only option.
-
- This does NOT mean that you cannot market this game commercially. The GPL does
- not prohibit commercial exploitation and all assets (e.g. textures, sounds,
- maps) created by yourself are your property and can be sold like every other
- game you find in stores.
-
-Network protocols
- There are now two cvars that give you some degree of freedom over the reported
- protocol versions between clients and servers: "com_protocol" and
- "com_legacyprotocol".
- The reason for this is that some standalone games increased the protocol
- number even though nothing really changed in their protocol and the iortcw
- engine is still fully compatible.
-
- In order to harden the network protocol against UDP spoofing attacks a new
- network protocol was introduced that defends against such attacks.
- Unfortunately, this protocol will be incompatible to the original RTCW 1.4
- which is the latest official release from id.
- Luckily, iortcw has backwards compatibility, on the client as well as on the
- server. This means iortcw players can play on old servers just as iortcw
- servers are able to service old clients.
-
- The cvar "com_protocol" denotes the protocol version for the new hardened
- protocol, whereas the "com_legacyprotocol" cvar denotes the protocol version
- for the legacy protocol.
- If the value for "com_protocol" and "com_legacyprotocol" is identical, then
- the legacy protocol is always used. If "com_legacyprotocol" is set to 0, then
- support for the legacy protocol is disabled.
-
- Mods that use a standalone engine obviously do not require dual protocol
- support, and it is turned off if the engine is compiled with STANDALONE per
- default. If you desire backwards compatibility to older versions of your
- game you can still enable it in q_shared.h by defining
- LEGACY_PROTOCOL.
-
-cl_guid Support
- cl_guid is a cvar which is part of the client's USERINFO string. Its value
- is a 32 character string made up of [a-f] and [0-9] characters. This
- value is pseudo-unique for every player. Id's RTCW client also
- sets cl_guid, but only if Punkbuster is enabled on the client.
-
- If cl_guidServerUniq is non-zero (the default), then this value is also
- pseudo-unique for each server a client connects to (based on IP:PORT of
- the server).
-
- The purpose of cl_guid is to add an identifier for each player on
- a server. This value can be reset by the client at any time so it's not
- useful for blocking access. However, it can have at least two uses in
- your mod's game code:
- 1) improve logging to allow statistical tools to index players by more
- than just name
- 2) granting some weak admin rights to players without requiring passwords
-
-PNG support
- iortcw supports the use of PNG (Portable Network Graphic) images as
- textures. It should be noted that the use of such images in a map will
- result in missing placeholder textures where the map is used with the id
- RTCW client or earlier versions of iortcw.
-
- Recent versions of GtkRadiant and q3map2 support PNG images without
- modification. However GtkRadiant is not aware that PNG textures are supported
- by iortcw. To change this behaviour open the file 'q3.game' in the 'games'
- directory of the GtkRadiant base directory with an editor and change the
- line:
-
- texturetypes="tga jpg"
-
- to
-
- texturetypes="tga jpg png"
-
- Restart GtkRadiant and PNG textures are now available.
-
-Building with MinGW for pre Windows XP
- IPv6 support requires a header named "wspiapi.h" to abstract away from
- differences in earlier versions of Windows' IPv6 stack. There is no MinGW
- equivalent of this header and the Microsoft version is obviously not
- redistributable, so in its absence we're forced to require Windows XP.
- However if this header is acquired separately and placed in the qcommon/
- directory, this restriction is lifted.
-
-
-------------------------------------------------------------- Contributing -----
-
-Please send all patches to bugzilla (https://bugzilla.icculus.org), or join the
-mailing list (http://lists.ioquake.org/listinfo.cgi/ioquake3-ioquake.org) and
-submit your patch there. The best case scenario is that you submit your patch
-to bugzilla, and then post the URL to the mailing list.
-
-The focus for ioq3 is to develop a stable base suitable for further development
-and provide players with the same RTCW experience they've had for years. As
-such ioq3 does not have any significant graphical enhancements and none are
-planned at this time. However, improved graphics and sound patches will be
-accepted as long as they are entirely optional, do not require new media and
-are off by default.
-
-
---------------------------------------------- Building Official Installers -----
-
-We need help getting automated installers on all the platforms that iortcw
-supports. We don't necessarily care about all the installers being identical,
-but we have some general guidelines:
-
- * Please include the id patch pk3s in your installer, which are available
- from http://ioquake3.org/patch-data/ subject to agreement to the id
- EULA. Your installer shall also ask the user to agree to this EULA (which
- is in the /web/include directory for your convenience) and subsequently
- refuse to continue the installation of the patch pk3s and pak0.pk3 if they
- do not.
-
- * Please don't require pak0.pk3, since not everyone using the engine
- plans on playing RTCW on it. It's fine to (optionally) assist the
- user in copying the file or tell them how.
-
- * It is fine to just install the binaries without requiring id EULA agreement,
- providing pak0.pk3 and the patch pk3s are not referred to or included in the
- installer.
-
- * Please include at least an SDL so/dylib/dll on every platform.
-
- * Please include an OpenAL so/dylib/dll, since every platform should be using
- it by now.
-
- * Please contact the mailing list when you've made your installer.
-
- * Please be prepared to alter your installer on the whim of the maintainers.
-
- * Your installer will be mirrored to an "official" directory, thus making it
- a done deal.
-
------------------------------------------------------------------- Credits -----
-
-Maintainers
- James Canete <use.less01 at gmail.com>
- Ludwig Nussel <ludwig.nussel at suse.de>
- Thilo Schulz <arny at ats.s.bawue.de>
- Tim Angus <tim at ngus.net>
- Tony J. White <tjw at tjw.org>
- Zachary J. Slater <zachary at ioquake.org>
- Zack Middleton <zturtleman at gmail.com>
-
-Significant contributions from
- Ryan C. Gordon <icculus at icculus.org>
- Andreas Kohn <andreas at syndrom23.de>
- Joerg Dietrich <Dietrich_Joerg at t-online.de>
- Stuart Dalton <badcdev at gmail.com>
- Vincent S. Cojot <vincent at cojot dot name>
- optical <alex at rigbo.se>
- Aaron Gyes <floam at aaron.gy>
diff --git a/SP/code/client/cl_console.c b/SP/code/client/cl_console.c
index e7797ea..b444716 100644
--- a/SP/code/client/cl_console.c
+++ b/SP/code/client/cl_console.c
@@ -67,6 +67,7 @@ console_t con;
cvar_t *con_debug;
cvar_t *con_conspeed;
+cvar_t *con_autoclear;
cvar_t *con_notifytime;
#define DEFAULT_CONSOLE_WIDTH 78
@@ -83,7 +84,9 @@ void Con_ToggleConsole_f( void ) {
return;
}
- Field_Clear( &g_consoleField );
+ if ( con_autoclear->integer ) {
+ Field_Clear( &g_consoleField );
+ }
g_consoleField.widthInChars = g_console_field_width;
Con_ClearNotify();
@@ -383,6 +386,7 @@ void Con_Init( void ) {
con_notifytime = Cvar_Get( "con_notifytime", "3", 0 );
con_conspeed = Cvar_Get( "scr_conspeed", "3", 0 );
+ con_autoclear = Cvar_Get( "con_autoclear", "1", CVAR_ARCHIVE );
con_debug = Cvar_Get( "con_debug", "0", CVAR_ARCHIVE ); //----(SA) added
Field_Clear( &g_consoleField );
diff --git a/SP/code/client/cl_keys.c b/SP/code/client/cl_keys.c
index 4e58bed..44b60d6 100644
--- a/SP/code/client/cl_keys.c
+++ b/SP/code/client/cl_keys.c
@@ -1571,7 +1571,7 @@ void Console_Key( int key ) {
// enter finishes the line
if ( key == K_ENTER || key == K_KP_ENTER ) {
// if not in the game explicitly prepend a slash if needed
- if ( clc.state != CA_ACTIVE &&
+ if ( clc.state != CA_ACTIVE && con_autochat->integer &&
g_consoleField.buffer[0] &&
g_consoleField.buffer[0] != '\\' &&
g_consoleField.buffer[0] != '/' ) {
@@ -1593,7 +1593,9 @@ void Console_Key( int key ) {
if ( !g_consoleField.buffer[0] ) {
return; // empty lines just scroll the console without adding to history
} else {
- Cbuf_AddText( "cmd say " );
+ if ( con_autochat->integer ) {
+ Cbuf_AddText ( "cmd say " );
+ }
Cbuf_AddText( g_consoleField.buffer );
Cbuf_AddText( "\n" );
}
diff --git a/SP/code/qcommon/common.c b/SP/code/qcommon/common.c
index 5a9901e..df402be 100644
--- a/SP/code/qcommon/common.c
+++ b/SP/code/qcommon/common.c
@@ -106,6 +106,9 @@ cvar_t *com_legacyprotocol;
cvar_t *com_basegame;
cvar_t *com_homepath;
cvar_t *com_busyWait;
+#ifndef DEDICATED
+cvar_t *con_autochat;
+#endif
#if idx64
int (*Q_VMftol)(void);
@@ -2409,6 +2412,10 @@ void Com_Init( char *commandLine ) {
#endif
Cvar_Get("protocol", com_protocol->string, CVAR_ROM);
+#ifndef DEDICATED
+ con_autochat = Cvar_Get("con_autochat", "1", CVAR_ARCHIVE);
+#endif
+
com_hunkused = Cvar_Get( "com_hunkused", "0", 0 );
Sys_Init();
@@ -3111,8 +3118,8 @@ void Field_CompleteCommand( char *cmd,
completionString = Cmd_Argv( completionArgument - 1 );
#ifndef DEDICATED
- // Unconditionally add a '\' to the start of the buffer
- if( completionField->buffer[ 0 ] &&
+ // add a '\' to the start of the buffer if it might be sent as chat otherwise
+ if( con_autochat->integer && completionField->buffer[ 0 ] &&
completionField->buffer[ 0 ] != '\\' )
{
if( completionField->buffer[ 0 ] != '/' )
diff --git a/SP/code/qcommon/qcommon.h b/SP/code/qcommon/qcommon.h
index dbe6283..1c556dc 100644
--- a/SP/code/qcommon/qcommon.h
+++ b/SP/code/qcommon/qcommon.h
@@ -918,6 +918,9 @@ extern cvar_t *com_protocol;
#ifdef LEGACY_PROTOCOL
extern cvar_t *com_legacyprotocol;
#endif
+#ifndef DEDICATED
+extern cvar_t *con_autochat;
+#endif
// com_speeds times
extern int time_game;
diff --git a/SP/code/sys/con_tty.c b/SP/code/sys/con_tty.c
index 9a6ee95..2c2b595 100644
--- a/SP/code/sys/con_tty.c
+++ b/SP/code/sys/con_tty.c
@@ -378,7 +378,7 @@ char *CON_Input( void )
{
#ifndef DEDICATED
// if not in the game explicitly prepend a slash if needed
- if (clc.state != CA_ACTIVE && TTY_con.cursor &&
+ if (clc.state != CA_ACTIVE && con_autochat->integer && TTY_con.cursor &&
TTY_con.buffer[0] != '/' && TTY_con.buffer[0] != '\\')
{
memmove(TTY_con.buffer + 1, TTY_con.buffer, sizeof(TTY_con.buffer) - 1);
@@ -389,7 +389,11 @@ char *CON_Input( void )
if (TTY_con.buffer[0] == '/' || TTY_con.buffer[0] == '\\') {
Q_strncpyz(text, TTY_con.buffer + 1, sizeof(text));
} else if (TTY_con.cursor) {
- Com_sprintf(text, sizeof(text), "cmd say %s", TTY_con.buffer);
+ if (con_autochat->integer) {
+ Com_sprintf(text, sizeof(text), "cmd say %s", TTY_con.buffer);
+ } else {
+ Q_strncpyz(text, TTY_con.buffer, sizeof(text));
+ }
} else {
text[0] = '\0';
}
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-games/iortcw.git
More information about the Pkg-games-commits
mailing list