 
$Id: changes.txt 778 2008-05-02 19:51:30Z renzo $
// IGNORE THIS TEST MESSAGE AND REMOVE AT LATER DATE \\

MVDSV v0.28 (200?.??.??)
----
* VVD (vvd0@users.sourceforge.net)
	- bugfix from 0.21-develop: "cmd dl ." didn't work if demo was compressed (sv_onrecordfinish)
	- sv_demoMaxDirSize can be more than 2Gb now - float limit

* d3urk (d3urk@users.sourceforge.net)
	- Fixed flood resulting of incorrect use of minping command parameter.
	- Fixed localinfo in order to handle properly oldvalue of localinfo.
	- rcon command now display which player called it.


MVDSV v0.27 revision 643 (2007.07.20)
----
* Tonik <tonik@users.sourceforge.net>
- pm_pground is functional now.  It cannot be changed directly; its value is set automatically
  when pm_airstep changes:  pm_airstep 1 enables pm_pground, pm_airstep 0 disables.

* qqshka <qqshka@users.sourceforge.net>
- sending objects to qtv now even no players on server, but with low fps, this allow camera
  fly even no players on server.
- qtv_streamtimeout default to 45 now
- cmd demolist show right dir size now, even if qtv connected.
- Adding evil hack, allowing ppl dl with ~370kb/s, admins must set sv_downloadchunkspersecond
  to 5 for that, by default that 2, it mean ~150kb/s, but u require latest ezquake 1.9 from CVS
  for that. That all haxed chunked download from FTE.
- now setinfo "drate" optional and if not present assuming it 99999, sure still with respect
  to sv_maxdownloadrate, so empty value gives maximum download rate server allowed.
- Print warning if can't open QTV port
- Added: qtv_pendingtimeout and qtv_streamtimeout variables, this variables must help
  drop hanged TCP-QTV connections, unfortunatelly qtv_streamtimeout work not so good,
  timeout detection may take some long time, we need something like PING-PONG like IRC have.
- client must sent command "nextdl -1" when file download ends(via reliable channel),
  this way mvdsv's queue functional ok.
- "nextdl" command have second optional parammeter, percent, so mvdsv show client's download
  percent as packet lost in +showscores.
- BUGFIX: now ignore sv_demomaxsize for qtv streams, so no unexpected disconnects I hope...

* VVD <vvd0@users.sourceforge.net>
- MAX_SIGNON_BUFFERS was increased from 8 to 16 for support single player map shadow with skill 3
(Thanks to Parboil)
- added Con_DPrintf in demo recording for debuging 'cmd dl .' command
  
* disconnect <disconn3ct@users.sourceforge.net>
- fix mm1 crash
- add glob_match like patterns to cmdlist and cvarlsit. this and prev. commits uses ezQuake's code
- cvarlist and cmdlist now return qsor`ed lists, also they print ammount of items in list
- fixed broken use of "long" on amd64


MVDSV v0.26 build 2666 (2007.04.09)
----
* qqshka <qqshka@users.sourceforge.net>
- added PEXT_CHUNKEDDOWNLOADS, we support only this FTE's extension, at least atm.
- added framework for FTE's protocol extensions, however here no checkfteextension() or
  something like this.
- added 'airstep' user cmd, toggle pm_airstep, blocked in ktpro.
- allow pm_airstep server variable, with value 1 you can run/jump over stairs,
  but you loose some speed still.
- changed QVM API version to 12, G_FINDRADIUS worked now and also added G_MAKEVECTORS,
  both actually coded by SD-Angel, also i've add G_NEXTCLIENT which is similar to G_NEXTENT
  but G_NEXTCLIENT just help me walk over spawned clients fast
- changed QVM API version to 11 due to i've add G_CMD_TOKENIZE, g_strlcpy, g_strlcat

* VVD <vvd0@users.sourceforge.net>
- cvar skill have no upper limit now
- returned back md4 instead mdfour
- default value for sv_demofps increased from 20 to 30
- bugfix from 0.19.20-develop: pause with sv_minping > 0 cause server inaccessible -
  bug in ZQuake's minping ported by disconnect (Tonik, disconnect, hello :-))
- changed internal 'cmd dl -N' - download the Nth to last demo from demodir - work like before
  changes in 0.21
- increased maximum of fps in qwdtools from 100 to 1000

* disconnect <disconn3ct@users.sourceforge.net>
- qtv was updated to version v1
- new cvar qtv_password - password for connecting to qtv
- renamed cvars mvd_streamport and mvd_maxstreams to qtv_streamport and qtv_maxstreams
- Z_EXT_JOIN_OBSERVE protocol extensions (ported from ZQuake)
- remove function SV_Check_ktpro. Use qbool is_ktpro instead

* Tonik <tonik@users.sourceforge.net>
- add QSG extension framework. MVDSV starts up in QSG mode unless KTPro is detected or
  sv_ktpro_mode is enabled
- add ZQ_CLIENTCOMMAND, ZQ_PAUSE, ZQ_QC_STRINGS, DP_QC_CVAR_STRING, DP_QC_RANDOMVEC, DP_QC_TRACEBOX
- Remove 'msg', useless user command
- Fixes join/observe problems
- NetQuake-like PM_NudgePosition() (English: don't get stuck on hip2m5)
- 'sv_cheats' cvar and 'devmap' command. Cheats can now be toggled without restarting the server
- added MSVC 2005 project files


MVDSV v0.25 build 2500 (2006.10.25)
----
* qqshka <qqshka@users.sourceforge.net>
- allow player move even chat userinfo present

* VVD <vvd0@users.sourceforge.net>
- optimized SV_DirSizeCheck - used every time on demo record start
- small optimization in Sys_listdir (used, for example, in 'cmd dlist')
- replaced last 2 dangerous strcpy with strlcpy in qwdtools

* disconnect <disconn3ct@users.sourceforge.net>
- field offsets cacheing (ported from ZQuake)
- made localcommand more verbose
- kqueue was disabled on NetBSD and OpenBSD because it don't work


----
MVDSV v0.21-develop build 2480 (2006.10.05)
* disconnect <disconn3ct@users.sourceforge.net>
- Ported from QW262: new command admin - spy'ing on rcon usage
  Can be used only by connected player. When you enable `spy mode' and
  somebody use rcon - you will be noticed. Use rcon admin off to disable spy mode.
- ZQuake's cmodel.c instead of original sv_model.c
- bugfix: banned users can use master_rcon

* jhodge <jhodge@users.sourceforge.net>
- new cvar sv_allowlastscores
  0 - disallow connection less command lastscores
  1 - allow connection less command lastscores
  default: 1
- bugfix from 0.1727: possibility to run master_rcon commands with normal rcon

* VVD <vvd0@users.sourceforge.net>
- 'cmd stopdl' now clear download queue like 'cmd dl \'
- changed internal 'cmd dl <N dots>' - download the Nth to last recorded demo on this server
  after start - work like ktpro's 'cmd dl <N dots>'; limits: 0 < N < 16
(Thanks to B1aze)
- optimized detection of ktpro and added detection of ktpro versions from 1.50 to 1.57
- bugfix from 0.20: qwdtools made "choppy" mvd demos from qwd (disconnect, hello :-))
- improved build number calculation
- bugfix from 0.179: "99% downloaded" - sometimes after downloading client don't rename
  temporary file to real filename and don't hide download bar - show 99% (EXPERIMENTAL)
(Thanks to Renzo)
- bugfix from 0.1726: on *nix '-u <UID>' didn't set uid
(Thanks to mli)
- improved -u and -g (setuid/setgid) support

* qqshka <qqshka@users.sourceforge.net>
- changed QVM API version to 10 due to i've add
  int QVMstrftime( char *valbuff, int sizebuff, const char *fmt, int offset ),
  allows me get system date/time in form i want, old mods may work without changes/recompilation.
- for developers only: Tonik quote: Add ZQ_ITEMS2 extension - adds .items2 into the 9 highest
  bits of STAT_ITEMS sent to clients, a la NQ.  Allows for per-client sigil display in the
  status bar, unlike serverflags which is the same for everyone. Unlike NQ, we don't discard
  serverflags if the .items2 field is declared by progs.
  Supported both by QVM and QC.
- bugfix: u can use higher rate than sv_maxrate after some trix with downloading
- for developers: for QVM mods only, now you can check is particular infokey(...) "extension"
  supported by server, in mod you must use something like this: infokey(world, "\\realip")
  which rerurn "yes" if infokey(edict, "realip") supported.
- Removed *qwe_version from serverinfo, changed *version key in serverinfo so its looks like
  other server engines do, ktpro still happy because I made some work around (Tonik idea).
  We catch ktpro (in a new way) from 1.58 to 1.67, can't check for older ktpro since i have't
  qwprogs.dat from older ktpro.
- extending "/addip" command, adding expiration time, and "type" of ipfilter.
  Now syntax looks like: /addip <ip> [type] [[+]time]
  Type may be: "ban" or "safe", "ban" is obvious while "safe" will be described below.
  Time param better describe via examples:
	"/addip 127.0.0.1 ban +10" will ban 127.0.0.1 for 10 seconds from current time
	"/addip 127.0.0.1 ban 1234567" will ban 127.0.0.1 for some seconds since 00:00:00 GMT,
      January 1, 1970
  Second variant is not human frienly, and developed to be used in listip.cfg, which is generated
  after issuing "/writeip". Oh, and zero time ( 0s or 0m etc) treated as unexpired time value.
- adding server side bans.
  First of all u must be an realAdmin for use serverside bans, also if mod have self ban commands
  (like ktpro), then mod commands will be used. Currently server side bans can be used only for
  KTX mod, but adding such support to any mod is just few lines of code.
	"/cmd ban <uid/nick> <time s m h d> [reason]" timed ban by uid/nick.
	Example: "/cmd ban qqshka 10s testban" will ban user with nick qqshka for 10 seconds,
    and print reason as "testban".
	"/cmd banip <ip> <time s m h d>" timed ban by ip.
	Example: "/cmd ban 127.0.0.1 10s" will ban ip 127.0.0.1 for 10 seconds.
	"/cmd banrem [banid]" remove ban by banid, banlist can be obtained if you omit banid,
    so banid can be guessed.
  Server side bans is just interface for "/addip" command.
  And the last thing abount "/addip <ip> safe [[+]time]", after using such command, noone can
  ban such ip via "/cmd ban" or "/cmd banip", sure if server side bans is used, but mod bans 
  probably ignore such politics, that can be used for preventing ban some friendly ips.
- adding CHAT_ICON_EXPERIMENTAL - add support for showing chat baloon over players head,
  sure if player client support such thing too.
  Player client must setup userinfo chat, if player goes to console or menus.
- adding access to user id for qc-based mods, via infokey(client, "*userid"),
  QVM mods already have this.
- bugfix: choppiness/prediction bug, fixed by Tonik, i'm just commit to CVS.


----
MVDSV v0.20 build 2376 (2006.06.23)
* disconnect <disconn3ct@users.sourceforge.net>
- bugfix from 0.19.10-develop: mvd stream (qtv) closed as file - cause crash mvdsv on exit
- for developers: move FS-related stuff from common.c to fs.c
- small fixes and cleanups here and there
- added DragonFly BSD targets
- added kqueue support for DragonFly and NetBSD

* qqshka <qqshka@users.sourceforge.net>
- new cvar vip_values which control which vip value assign for particular
  vip password.
  Example, if we talk about ktpro and particular passwords:
  vip_password "justvip demoadmin admin judgeadmin admindemoadmin judgeadmindemoadmin"
  then we must set next vip_values
  vip_values   "1       8         4     20         12             28"
- switching GAME_API_VERSION to 9.
  Only one change, added GAME_CLIENT_SAY, so now qvm mods can handle say/say_team.
- For developers only: now qvm mods can get client state via
  trap_infokey( int edn, "*state", char *valbuff, int sizebuff ).
  Possible states: "free", "zombie", "preconnected", "connected", "spawned", "unknown".
  So you can spot not yet connected clients. Personally, i'm using this in KTX for
  /klist or /fkick. ktpro do this via parsing output of server /status command.
  I'm dislike ktpro way here.

* oldman <oldmanuk@users.sourceforge.net>
- added VWEP support (from ZQuake)
- improved MacOS X/Darwin support

* VVD <vvd0@users.sourceforge.net>
- kqueue now on by default, for disabling use "make -DNOKQUEUE"
- default value of sys_select_timeout in *nix was changed from 10000 (10 milsec) to 1000000 (1 sec)
- Darwin was renamed to MacOSX
- bugfix from 0.19.10-develop: crashes on *nix when qtvproxy will be disconnect (EXPERIMENTAL)
- improved byte order support:
    supported byte order:
      little endian 1234
      big endian 4321
      pdp endian 3412 (middle endian)
    optimized byte swap functions for i386 arch, therefore no more support of i80386 -
    require i80486 or newer (Anybody use i80386 for runing mvdsv? :-))
    gas2masm was modified:
      .386P changed to .486P
      added commands bswap (require i80486), movzbw, movzbl, movzwl, xchgb, xchgw, xchgl
- added NetBSD targets
- bugfix from Id Software's QWSV: buffer overflow in loading files (How did it work before???)
- improved bugfix ktpro from 0.19.20-develop: command before first ';' will be executed,
  but other commands are ignored
- new value in extension of connectionless command status:
  16 - add information about teams
- bugfix from 0.19.20-develop (in "ZQuake-like minping" code): kicked client don't get any packets
  from server and server ignore all packets from this client - for client look like network lag
- improved OpenBSD support
- improved sys_select_timeout with kqueue on FreeBSD
- improved connection algorithm: if client core dumped, then allow to reuse slot (EXPERIMENTAL)
- removed cvar sv_old_status_for_ktpro - not needed after "improved status command output..."
- improved status command output with ktpro in server console - always write new status
- disabled general-protection-fault window box on Win32 if there are command line options
  "-noerrormsgbox" or "-d"
(Thanks to schm)
- added new value for sv_forcespec_onfull
  2 - same as 1 (look at 0.19.20-develop changes) if player's "svf" userinfo key == 1
  changed default value from 0 to 2
  example: setinfo svf 1
- bugfix from 0.19.20-develop: didn't added sv_forcespec_onfull
  and behavior was like with value 1 (careless mistake)


----
MVDSV v0.19.20-develop build 2320 (2006.04.28)
- replaced all:
    atoi -> Q_atoi
    atof -> Q_atof
- bugfix from 0.179b: SunOS on SPARC-64 didn't determine big endian
(Thanks to Krok)
- for developers: move all common tools functions from common.{c|h} and qwdtools/tools.{c|h}
  to bothtools.c and bothdefs.h
[server]
- new cvar sv_forcespec_onfull:
  0 - old connect algorithm, i.e you got full connect message and continue trying connect
      to server as player
  1 - force player enter server as spectator if all players's slots are busy and
      if there are empty slots for spectators
  default: 0
(Thanks to qqshka)
- bugfix from 0.1727b: possibility to crash server from client via upload function
(Thanks to jhodge)
- added kqueue instead select for FreeBSD target: 'make -DKQUEUE' (EXPERIMENTAL)
- fixed number of sended packets while connect with sv_getrealip > 0 to 10
- improved spectator support in qvm mods:
  "seems spectator is sort of hack in QW, I let qvm mods serve spectator like we do for normal player"
(by qqshka)
- bugfix ktpro: forbid ';' as commands separator if mod is ktpro, because it don't quote arguments
  from admin users; example: cmd fkick "X;quit" => kick X;quit => server will exit (EXPERIMENTAL)
- returned back sys_select_timeout:
  MUST be set to ~ (sv_mintic / 1.3) * 1 000 000 = 10 000
  (else can occur packets lost if sv_minping > 0)
  if set too low then occur higher CPU usage
  Example:
    1. sys_select_timeout 10000 + FreeBSD 4 =
       4-5% of CPU usage on empty server + sv_minping 39 + low packets lost
    2. sys_select_timeout 1000000 + FreeBSD 4 =
       0% of CPU usage on empty server + sv_minping 39 + ~20 packets lost
  Administrator can tune this cvar self.
  May be to make auto change sys_select_timeout on connect 1st user and disconnect last
  or/and set sv_minping...
  can set value only between 10 (10 microseconds) and 1 000 000 (1 second)
  default: 10000 (10 milliseconds)
- returned back and made cvar registered CVAR_ROM and seted value to 1;
  can't delete it because ktpro didn't allow to go at some placeses of, for example, start map
- bugfix: spectators can't hear say_team in qvm, qc-based mods not affected by this fix (by qqshka)
- ZQuake's pmove code (by disconnect)
- some ZQuake's Protocol Extensions: PM_TYPE, PM_TYPE_NEW, SERVERTIME, PF_ONGROUND (by disconnect)
- ZQuake-like minping --> no more sys_select_timeout (by disconnect)
- new cvar sv_kickuserinfospamtime - time in seconds for checking userinfo changes spam
  0 - disable kick of the userinfo spaming player
  default: 3
- new cvar sv_kickuserinfospamcount - number of permitted userinfo changes,
  server will kick player if count exceed in sv_kickuserinfospamtime seconds
  0 - disable kick of the userinfo spaming player
  default: 30
- bugfix from 0.160b: possibility to crash server from client
(Thanks to anm-zip)
- bugfix ktpro: very important security fixes
(Thanks to anm-zip)
- bugfix from 0.174b: in ktpro command 'klist' show incorrect info in section
  "Not full connected clients"
(Thanks to Renzo)
- new cvar sv_old_status_for_ktpro:
  0 - always write new status
  1 - write old status on server console and redirected to mod if ktpro was detected
  (need for correct 'klist''s output)
  default: 1
  Note: 'rcon status' show new status always
- no more ".gz" strings in sources - used sv_demoRegexp
- bugfix from 0.19.10-develop: didn't close files not from paks (by disconnect)
- removed cvar registered (by disconnect)
- new code in determination of demo existing for easyrecord command
- bugfix from 0.1728: posibility to crash server via lastscores
(Thanks to 100Nosao)
- fixed insanly dangerous bug with master_rcon_password :E. Now it can be set only from
  server configs. (by disconnect)
- replaced bliP's fix for 'connecting...challenge' with Tonik's.
  In some cases i can't connect for 60 secs to mvdsv servers, never have this problem with
  zq/fq/ezq servers; recent qw262 server versions use Tonik's fix too. (by disconnect)
- added "scroll" console output on Win32
- bugfix from 0.19.10-develop: incorrect demo numbering while game proceed if used extracts by
  substrings in command 'cmd dlist', example: 'cmd dlist aerowalk'
(Thanks to gLAd)
- give back from EXPERIMENTAL changes in 0.19.10-develop:
  'serverinfo key *version changed from "2.40" to "mvdsv QWE_VERSION" and *qwe_version was removed
  (EXPERIMENTAL)', because ktpro can't determine version of the server and said
  "<COMMAND NAME> command is only for qwe > 2.40" (commands: autotrack, tracklist and etc.)
(Thanks to Renzo)
[unix]
- added AMD64/EM64T targets (Makefile.Linux) - disabled assembler optimization for this platform
(Thanks to Renzo and kingiz)
[qwdtools]
- bugfix from 0.19.10-develop: crashed


----
MVDSV v0.19.10-develop build 2227 (2006.01.25)
- hardcore cleanup. Removed lot of client-only code (by Angel)
- work on SunOS SPARC and ix86 targets now
- added MSVC 7.1 solution/project file
[server]
- serverinfo key *version changed from "2.40" to "mvdsv QWE_VERSION" and *qwe_version was removed
  (EXPERIMENTAL) (QWE_VERSION = "0.19.10-develop") (by disconnect)
- bugfix: disabled download from gamedir. So only subdirs of gamedir are allowed.
- new cvar allow_download_other
  0 - disallows downloading of stuff
  1 - allows downloading of stuff
  default: 0
- improved timer accuracy for win32. use -nohwtimer to use old-style timing
(by disconnect from ZQuake)
- bugfix to bliP's sv_speedcheck: round to nearest value instead of rounding down
  This bug cause to wrong frametime --> wrong /fpslist (ktpro/ktx commands) output.
- To run server you only need a map (.bsp file), qwprogs and mvdsv executable.
  You even dont need pak0.pak, etc (by disconnect from ZQuake)
- A thousand bugfixes i found at ZQuake (like merge pmtrace_t with trace_t, etc),
  but I dont think I have to write it here, since only developers 
  can understand it :P } (by disconnect)
- sv_nailhack is 1 by default. Dunno why it was set 0 at begin of 'mvd-era'. (by disconnect)
- new cvar sv_maxuserid - limits userid in 1...99 range
  default: 99
(by disconnect)
- server-side flash for TeamFortress (oldgrens mode) (ported by Angel from QW262)
- added possibility to set small speed for objects on map (by qqshka)
- added possibility to set non integer volume for sounds from mods (by qqshka)
- added possibility to record multiple demos at same time (from FTE by disconnect)
- FTE's QTV (FTV) support (from FTE by disconnect) :
  - mvd_streamport - cvar, to control a port for MVD data streaming
  - mvd_maxstreams - cvar, to control the maximum number of proxies to allow to connect 
  directly to the server.
- build: removed define REGEX - can't build only with external regex lib
- new cmd dlistr, cmd dlistregex, cmd demolistr, cmd demolistregex -
  same as demolist, but use parameters as regex
- new commands:
    lastscores - same as cmd lastscores, but in server console
    dlist - same as demolist
    dlistr, demolistr, dlistregex, demolistregex - same as cmd dlistr
- new connectionless commands:
    dlist, demolist - same as cmd dlist (packet IP:PORT dlist)
    dlistr, demolistr, dlistregex, demolistregex - same as cmd dlistr
- added OpenBSD targets (by Claymore and VVD)
- fix for gratuitous frag updates when v.frags is fractional (from ZQuake by disconnect)
(Thanks to Spike)
- bugfix from 0.19: fullserverinfo was not sent to client if there was lw or ls userinfo keys
- 'cmd dlist' and 'cmd demolist' can show about 4000 demos in list now, but if serverinfo key
  status is not "Standby" or demo recording is in progress then showing only last 100 demos;
  was made some additional changes:
  - MAX_BACK_BUFFERS increased from 16 to 128 (EXPERIMENTAL)
  - MAX_REDIRECTMESSAGES increased from 4 to 128 (EXPERIMENTAL)
- bugfix from 0.160b: pause with sv_minping > 0 cause all players disconnected
(Thanks to Siberex)
[client]
- removed client sources. MVDSV now consist of server and qwdtools only (by Angel)


----
MVDSV v0.19 build 2050 (2005.08.01)
[server]
- bugfix ktpro: posibility to crash ktpro from client
(Thanks to MoosemaN)
- bugfix from 0.179b: internal 'cmd dl' function used one queue for all players -
  made self queue for each player


----
MVDSV v0.18 build 2040 (2005.07.22)
- project cleaned up
[server]
- removed cvar sv_aim (by disconnect)
- only set the client to cs_spawned state AFTER we've verified his spawncount
(by disconnect from ZQuake)
- don't send to zombies (by disconnect from ZQuake)
[unix]
- bugfix from 0.179b: crashes while printing red text in some places
(Thanks to Oppy)


----
MVDSV v0.179 Beta DEVELOP build 2033 (2005.07.15)
[unix qwdtools]
- bugfix from 0.176: crashed - bug was in Makefile
(Thanks to disconnect)
[server]
- new cvar sv_registrationinfo - text shown before "enter login" (RFE #1198104)
(by hdworak)
- new cvar sv_forcenick - if the player has logged in ('accounts' file),
  force his nick to match the login and forbid changing nickname (RFE #1198108)
  0 - don't force
  1 - as login
  default: 0
(by hdworak)
- bugfix: format string vulnerabilities (by droogie)
- new command modfraglogfile - turn on/off parsing mod messages for frags and logging in
  modfrag_N.log file with additional info (weapon and etc.) to create more detailed statistics
  (EXPERIMENTAL)
  (because we have no sources of ktpro :-()
(by kreon and VVD, idea by gLAd)
- new cvar sv_mod_msg_file - file name with description of mod messages,
  there is an example - ktpro_frags.txt (must be in same dir as mvdsv started)
  default: "" - integrated in sources, have to work with Id Software's qwprogs.dat.
- qvm engine updated to version 7
(Thanks to SD-Angel)
- key *qvm was moved from serverinfo to localinfo
- new cvar sv_hashpasswords - keep hashed passwords in the 'accounts' file (RFE #1198101)
  0 - plain passwords
  1 - hashed passwords (sha1)
  default: 1
(by hdworak)
- bugfix: now, if the server can't write any more data to the log or demo (for example because
  of insufficient disk space), it will close the logfile and stop logging and cancel the
  recording of the current demo (bug #1057459)
- build: define REGEX, to use external regex lib for listing demos
  (for example: FreeBSD has regex functions in libc)
  otherwise use integrated part of PCRE 5.0 library - http://www.pcre.org/
(Thanks to BorisU)
- new cvar sv_demoRegexp - all files meet the conditions regexp accepted as demos (for listing)
  default: "\.mvd(\.(gz|bz2|rar|zip))?$"
- give back from EXPERIMENTAL changes in 0.178b:
  'added drop client if no empty slots after "server is full" message (EXPERIMENTAL)'
- ATTENTION: default value of sv_crypt_rcon now is 1;
  use clients with rcon password encryption support (ezQuake, qwdplayer) or set to 0 in server.cfg
- added support of halflife maps - BSP version 30 (from ezQuake)
- new 'cmd maps' - show maps list from localinfo 1000 - 1999
  (supported only by ktpro 1.63 build 42795 and newer)
  ktpro's command 'maps' can show only 1st 150 maps from list
(Thanks to JSS)
- bugfix ktpro 'cmd dl' with more then 1 demo in list (for example: 'cmd dl 1 2 3'):
  cancel download of a big demos (depend on download speed) after few seconds,
  big demo downloaded completely only if it is 1st in list, all small demos downloaded completely
(Thanks to [iBh]123)
- new cvar sv_use_internal_cmd_dl:
    0 - use mod dl-function (if mod have not dl function, then used internal dl-function)
    1 - use internal dl-function
    default: 1
  'cmd dl <N dots>' - download the Nth to last recorded demo, and can to add dots sequence in list,
  also can to add negative values - 'cmd dl -N' - download the Nth to last recorded demo
  (for example: 'cmd dl 1 ... 4 . -6 .. 22 ........');
  'download demonum/N' fully work same as 'cmd dl N'
  (N - positive or negative integer value or any quantity of dots)
- bugfix from Id Software's QWSV: calculate negative percentage of file while downloading
  if size of downloaded part is > 0x10000000b / 100 (~= 20.5Mb):
  (signed int32)20.5Mb * 100 => signed overflow => negative value
- added Linux on non-ix86 and SunOS on SPARC and ix86 targets
(Thanks to DyB|Tuna, Creeping Death aka Bog and UnKnoWn)
- new cvar sys_restart_on_error (use with caution)
  0 - quit on error (old style)
  1 - restart instead quit on server error (SV_Error)
  default: 0
- bugfix: cmd mmode could be abused to crash servers
(Thanks to zip)


----
MVDSV v0.178 Beta DEVELOP build 1897 (2005.03.01)
[server]
- added drop client if no empty slots after "server is full" message (EXPERIMENTAL)
- bugfix from 0.174b: didn't used sv_serverip if server got incorrect local ip address
- bugfix: server can crash in start of downloading files if player was authenticated as techlogin
(Thanks to BorisU)
- cmd minping can set minping value only between 0 and 300
- new cvar sv_default_name - default name for players and spectators
  default: unnamed
- bugfix from 0.1727 build 1666: "spectator" bug - allow to connect as spectator if all
  slots for spectators is already in use
- added support of qvm version 6 (non-qc) mods from qw262 (EXPERIMENTAL):
  new command line option -progtype:
    0 - 'dat' - QW native
    1 - 'so' or 'dll' - OS native (most performance)
    2 - 'qvm' - Q3 style
    default: 0
  new cvars:
    sv_progtype - same as command line option -progtype
    sv_progsname - name of mod file without extention
      default: qwprogs
    sv_enableprofile - enable profiling of qvm mods
  new command mod - send GAME_CONSOLE_COMMAND command to qvm mod
(Thanks to SD-Angel, disconnect)
- new cvar pm_spawnjumpfix 0/1 - don't jump if used jump button for respawn
    0 - don't fix
    1 - fix (like in ktpro by default)
    default: 1
(Thanks to Tonik)


----
MVDSV v0.177 build 1794 (2004.11.18)
[server]
- bugfix from 0.176: incorrect writing .mvd demos
- bugfix from 0.14b: incorrect writing .mvd demos if demo size is more than 3 time bigger than
  democache size and sv_demoUseCache isn't 0
(Thanks to (ChoseN)puh)


----
MVDSV v0.176 build 1787 (2004.11.11)
[server]
- bugfix: didn't display *.mvd.gz files by cmd dlist and cmd demolist commands
- added message "Download stopped." if file downloading was stoped by cmd stopdownload
- bugfix: removed packet loss if file downloading was stoped by cmd stopdownload
- added command cmd stopdl - work same as cmd stopdownload
- added message "Download completed." after file download was completed by commands download,
  cmd download or cmd dl
- bugfix: added check for buffer overflow in demo-writing
(Thanks to SD-Angel)
[win32]
- bugfix: incorrect file sorting by date in Sys_listdir function
[unix]
- file ./build was replaced to ./configure
- merged and optimized Makefile-s for mvdsv and qwdtools
- bugfix: fixed Makefile.FreeBSD for making for Darwin/Mac OS X


----
MVDSV v0.175 build 1773 (2004.10.28)
- changed all WIN32 and WINDOWS defines to _WIN32
- win32 projects cleaned up
- check define LITTLE_ENDIAN changed to check define __BIG_ENDIAN__ and dynamical determination of
  LITTLE/BIG ENDIAN changed to staticaly (removed variable qboolean bigendien)
[server]
- bugfix from 0.174b: crashed when server demo record started
- added Darwin/Mac OS X targets (by Baalz)
- extension in cvar sv_specprint <flags>, <flags> is sum of:
    1 - single print to a specific client to the center of the screen (centerprint)
    2 - single print to a specific client (sprint)
    4 - sends text over to the client's execution buffer (stuffcmd)
    default: 0
  players can setinfo sp <flags> to turn it off for themselves:
  if required field is not set then this type of print is off; default sp = sv_specprint
  (for example setinfo sp 1 - turns off sprint and stuffcmd)
- new connectionless command lastscores - work same as cmd lastscores (see changes to v0.1728)
  (for example, can be used as: packet server:port "lastscores 5")
[unix]
- added determination of gcc version in FreeBSD in Makefile
[qwdtools]
- added *nix (FreeBSD, Linux and Darwin/Mac OS X) targets (by hexum and VVD)


----
MVDSV v0.174 Beta DEVELOP build 1742 (2004.09.27)
- Project was reorganized: MVDSV (MultiView Demos SerVer) is now synonym to QWEX (QuakeWorld Extended).
  Consist of mvdsv (server), qwdplayer gl/soft (client - for testing purposes only) and qwdtools
  (demo convertion tool).
- Changed link to home site to http://mvdsv.sourceforge.net
[server]
- bugfix: printed message "Server recording stopped. Max demo size exceeded." instead of
  "Server recording completed."
- extensions in connectionless command status:
    use 2nd argument to return indicated information
    (flags - sum up to return more than one type of information):
      0 - old style status command response
      1 - add serverinfo in response
      2 - add information about players in response
      4 - add information about spectators in response
      8 - changes spectators frags to "S" for ASE
    spectators names returned as "\s\<name>" instead "<name>(s)" (players can't use '\' in names)
    not specifying a 2nd argument returns the old style status command response (same as 0)
- changed status output in server console and via rcon
- some spelling fixes
- bugfix: server crashed with message "Error: Entity number >= 512" (EXPERIMENTAL)
- removed cvar sv_showspectators
- red "\" excluded from list of allowed characters in a player's or spectator's name, 
  so the name with red "\" result in the player's name being "unnamed"
- new cvar sys_command_line - show command line arguments during startup of server, cannot be changed
  (use only with master_rcon_password)
- bugfix: restart command didn't work if path or server executable name contained spaces in win32
- added .ent files support: (by ???)
    new cvar sv_loadentfiles 0/1 - loads .ent files
    0 - no
    1 - yes
    default: 1
- added button1 support for the ability to use objects with a key or mouse:
  mod must support this feature (from ezQuake)
- cmd upload syntax changed to: cmd upload <local file> <remote file>
- action of commands was correctly limited by root of the quake dir (example: restrict path
  like "/../", but can operate with files and directories which containing substring ".."):
  client commands:
    cmd upload, cmd download, download
  server commands:
    ls, rm, rmdir, chmod
- removed cvars sv_bunnyspeedcap and maxvip_spectators from serverinfo
  (warning message: "Info string length exceeded ...")
- code cleanup for removing warning message from gcc3:
  "warning: use of cast expressions as lvalues is deprecated" (by danfe)
- prevented extra packets being sent to invalid addresses (for example: 127.0.0.1),
  and boosted connect times by 5 (changed to 3) seconds on improperly/non-configured servers
- fixed intermittent non-solid FrikBot behaviour inherited (from ZQuake)
- MAX_BACK_BUFFERS increased from 4 to 16 (EXPERIMENTAL)
- new cvar sv_rconlim - limit of rcon requests per second
- bugfix: occur packets lost if sv_minping > real client's ping
- new cvar sys_select_timeout - timeout in micro seconds for function select in main loop
- bugfix: buffer overrun condition when handling quoted strings in COM_Parse
(Thanks to hexum)
- bugfix: make check for pwd.cfg case insensitive in SV_BeginDownload_f
(Thanks to hexum)
- new cvar sv_logdir <dir> - directory to store logs in (by bliP)
- new cvar sv_demoClearOld <number of files> (by bliP)
  if the demo directory is out of space (sv_demoMaxDirSize), this will delete X number of files
  starting with the oldest to make room for new demos, use 0 to disable
- new cvar sv_speedcheck 0/1 (by bliP)
  anti speed cheat code from AM101, slows cheaters down to normal speed
- rename cvar sv_kickfake to sv_unfake - auto unfakes any mm1 messages (by bliP)
- bugfix: allowed to go one step back in the directory hierarchy with script (by bliP)
- bugfix: PF_listmaps style 3 misprinted if even number of maps (by bliP)
[client]
- Ability to download any file into the server's quake dir from the server via cmd download.


----
QWEX v0.173 build 1683 (2004.07.30)
[server]
- QC:
  TeamFortress map voting: (by bliP)
    - listmaps - new style 3
- new cvar sv_enable_cmd_minping 0/1
    0 - disable cmd minping command
    1 - enable cmd minping command
    default: 0
- bugfix: write 0 frags in demo txt-files instead of real players/teams frags
- cmd minping will only change if serverinfo key status is "Standby" and
  demo recording is not in progress


----
QWEX v0.1728 build 1675 (2004.07.22)
[server]
- win32: bugfix: used NT function for parse command line did not work in win9x/ME -
  changed to another function
- win32: changed window font to Fixedsys (formatted messages, such as status, look better)
- added feature that logs player's scores in demo txt-files and first string now has format:
    tp: team1[ player1_1(scores1_1) ... playerN_1(scoresN_1) ](scores1) ...
        teamM[ player1_M(scores1_M) ... playerK_M(scoresK_M) ](scoresM)  @ map
    duel: player1 vs player2 @ map - scores1:scores2
    ffa: player1(scores1) ... playerN(scoresN) @ map
- new cmd lastscores [<numlastdemos>] - read information from txt-files (first string)
  '0' - for all demos
  ''  - for last 10 demos
  if demo recording is in progress <numlastdemos> is decreased to 10
- new cmd minping [<value>] - set or show sv_minping value
  if demo recording is in progress sv_minping isn't changed
- fixed a bug that allowed players to join the server even though the server was full,
  thus exceeding the maxplayers limit, thus causing for example 9/8 players (by bliP)
- new cvar sv_showspectators 0/1
    Added feature to show spectators as players in qplug, qspy, servu (irc bot) etc.
    (connectionless command status), but adding "(s)" to spectators' names;
    "specators' ping" = -"real ping" and frags are set to -9999.
    This makes it possible to find spectating players too with (for example) servu's !qw fp
    0 - don't show spectators
    1 - show spectators
    default: 1
- QC:
  TeamFortress map voting: (by bliP)
    - bugfix in PF_findmap
    - float(entity client, float level, float range, float start, float style, float footer) listmaps = #105;
    - string(float id) findmapname = #106;

  Example:
    local float fl;

    // check if map exists
    fl = findmap("2fort5r"); //or you can findmap("1") which will get map with id of 1
    if (fl == 0) {
      sprint(self, PRINT_HIGH, "File not found\n");
    }
    else {
      sprint(self, PRINT_HIGH, "Exists, map id is: ");
      sprint(self, PRINT_HIGH, ftos(fl));
      sprint(self, PRINT_HIGH, "\n");
    }

    // print map name with id of 1
    sprint(self, PRINT_HIGH, "Map with id of 1 is: ");
    sprint(self, PRINT_HIGH, findmapname(1));
    sprint(self, PRINT_HIGH, "\n");

    // print 50 maps at a time to client
    // recommended there's a wait as not to flood the client off the server
    // style 0-2: 0-list, 1-chart, 2-long line
    fl = 1;
    while (fl) {
      fl = listmaps(self, PRINT_HIGH, 50, fl, 2, 1);
      //add wait here
    }


----
QWEX v0.1727 Beta DEVELOP build 1667 (2004.07.14)
[server]
- bugfix: linux server cpu usage bug
- bugfix: sg hit effects, blood, etc disappearing in certain situations
(Thanks to Tonik)
- bugfix: fraglogfile sometimes resulted in server crash


----
QWEX v0.1727 Beta DEVELOP build 1666 (2004.07.13)
[server]
- new cvar master_rcon_password
  Similar to rcon_password but can use these extra commands:

  - new command ls
  Lists directories inside quake directory.
  - new command rm
  Removes file(s) from inside the quake directory.
  - new command rmdir
  Removes an empty directory from inside the quake directory.
  - new command chmod
  For making .qws scripts executable. (*nix only)
  - new cvar sv_admininfo
  sv_admininfo "Name (email@address)", will set "*admin" "Name (email@address)" in serverinfo.
  - new cmd techlogin
  Login to upload files and also download any file from inside the quake directory (password encrypted).
  - Ability to upload files from client to server.
  /cmd techlogin <master_rcon_password>
  /cmd upload somedir somefile.ext
  You must use the qwplayer client to upload.
  - rcon_password cannot use any of these commands or change master_rcon_password.

  IMPORTANT: master_rcon_password commands are very powerful, be careful who has the password.

- new cvar sv_specprint
  "while spectating you will see all of the messages (not mm1/mm2) and the effects (screen flashes
  for example) of the player you are spectating, from reloading..., flaginfo, inv, to your flag has
  been taken and enemys are using your dispenser."
  Players can setinfo sp 0 to turn it off for themselves.
- new command cuff
  Players cuffed cannot shoot or use impulses.
- new command mute
  Players muted cannot talk.
- new command penaltylist
  View active and saved cuffed/muted players.
- new command penaltyremove
  Remove a saved penalty.
- new cvar sv_reconnectlimit
  Throttle reconnecting players
- new cvar download_map_url
  If a player doesn't have the map they get displayed this eg "http://some.url/?map=mapname"
- pwd.cfg
  This file cannot be downloaded by anyone, anywhere, put all passwords in this file for extra safety.
- new cvar allow_download_pakmaps
  Allows downloading of maps in pak files.
- new cvar sv_kickfake
  Players who try to fake ($\) in mm1 get kicked.
- new cvar sv_kicktop
  Player who topcolour spam get kicked.
- new command logplayers
  Logs the following to players_PORT_NUM.log, connect, disconnect, name change and various kicks.
- new cvar sv_maxlogsize
  Maximum size in bytes which logs can get before they roll over to next file.
- new cvar sv_bunnyspeedcap
  From ZQuake by Tonik
  "This is experimental code intended to restore class balance in TF.
  If you set this cvar to something like 1.5 or 2, a solider will not be able to bunnyhop as fast as
  a scout does :) Note that this cvar is optional and disabled by default, so it will in NO WAY affect
  gameplay unless you set it explicitly to anything but 0. And once again, note that this code is
  experimental and subject to change so please don't use pm_bunnyspeedcap in official games yet."
- changed reconnecting players to reuse instead of drop.
- changed connecting players to have ping of 999
- added isin and !isin to if
- new icon :]

- QC new:
  
  General:
    float(float f) sin = #60;
    float(float f) cos = #61;
    float(float f) sqrt = #62;
    float(float val1, float val2) min = #63;
    float(float val1, float val2) max = #64;
  
  TeamFortress map voting:
    float(string s) findmap = #104;
    float(entity client, float level, float range, float start, float footer) listmaps = #105;

  Example:
    local float fl;

    if (findmap("2fort5r") == 1)
      sprint(self, PRINT_HIGH, "Exists\n");
    else
      sprint(self, PRINT_HIGH, "File not found\n");

    // print 50 maps at a time to client
    // recommended there's a wait as not to flood the client off the server
    fl = 1;
    while (fl) {
      fl = listmaps(self, PRINT_HIGH, 50, fl, 1);
      //add wait here
    }

[client]
- Ability to upload files from client to server.

- Credits: bliP and the authors of QuakeForge and EverythingQuake.

[server]
- new command localcommand (use only with master_rcon_password)
- new command line option:
  -enablelocalcommand - enable "localcommand" command for executing commands on server
- new cvar sv_timestamplen
  Time in seconds during which rcon command with encryption is valid (change only with master_rcon_password).
  0 - no time limit validation for rcon command
  default: 60


----
QWEX v0.1726 (no release)
[server]
- bugfix: console logging (qconsole_PORT.log) only with qconsole_log_say 1
- bugfix: can't download files where the name contains 2 or more dots (".") in a row ("disconnect"'s bug)
- bugfix: low entity speed if bad connection (high ping and packet loss) ("luny"'s bug, thanks for testing)
- some spelling fixes
- new command:
    restart - restart the server
- sv_mintic set to 0.013 by default
- sv_crypt_rcon 0/1 - use SHA1 for encryption of rcon_password and using timestamps
  (change only with master_rcon_password)
    0 - don't use encryption
    1 - use encryption
    default: 0
[client]
- added qwdplayer's source back into QWEX
- cl_crypt_rcon 0/1 - use SHA1 for encryption of rcon_password and using timestamps
    0 - don't use encryption
    1 - use encryption
    default: 0
[unix]
- bugfix: -mem command line option resulted in server crash
(Thanks to (ChoseN)puh)
- new command line options:
  -d
    run server as daemon
  -u user_name
    Specifies the user the server should run as after it initializes. The value specified
    may be either a username or a numeric user id. If the "-g" flag is not specified, then
    the group id used will be the primary group of the user specified (initgroups() is called,
    so all of the user's groups will be available to the server).
  -g group_name
    Specifies the group the server should run as after it initializes.
    The value specified may be either a groupname or a numeric group id.
  -t directory
    Specifies the directory the server should chroot() into as
    soon as it is finished processing command line arguments.
[win32]
- TODO:
  -d - run as service
  -di service_name - install service
  -dr service_name - remove service
  -dstart - start service
  -dstop - stop service
  -drestart - restart service
  -u user_name - specifies the user the server should run as after it initializes


----
QWEX v0.1725 build 1501 (2004.01.30)
[server]
- change MAX_PACKET_ENTITIES from 300 down to 64
(Thanks to Fuh)
[unix]
- bugfix in reading and writing "accounts" file

Note: Bugfix only release.


----
QWEX v0.1724 build 1500 (2004.01.29)
[server]
- changed the MAX_DEMO_PACKET_ENTITIES limit from 196 to 300 to fix entities not being recorded
  sometimes (especially in TF). Clients should be updated to support this new limit, because in
  cases where the previous limit wouldn't have been sufficient, unchanged clients that don't
  support the new limit may have problems in demo playing.
(Thanks to BorisU)
- in SV_SendDemoMessage increase msg buffer size to MSG_BUF_SIZE
  (reduce the overflow of the msg buffer to prevent potential demo corruption)
(Thanks to BorisU)
- increase demo.datagram_data buffer to MSG_BUF_SIZE overflows fixed
  (reduce the overflow of the demo.datagram_data buffer to prevent potential demo corruption too)
(Thanks to BorisU)
- now telnet is off by default (same as -telnetport 0)
- the blank character created with "$_" (with mqwcl for example) is now a normal space character,
  so the name "$_" will be the same as name " " and result in the player's name being "unnamed"
- bugfix from 0.1722b: when the same teams/players played on same map a 2nd time (thus the demo
  name being the same) the demo name sometimes wasn't printed correctly on the client screen
- new cvar: 
    qconsole_log_say 0/1
      0 - "say" and "say_team" messages are not logged
      1 - "say" and "say_team" messages are now logged to the qconsole_PORT.log file
      default: 0
- fixed a download bug if demo was written with "^" in name -
  "^" excluded from list of allowed characters in demo name
- cmd dlist output sorted chronologically now: top demo = oldest, bottom demo = most recent
- new command:
  check_maps - checks available maps in id1/maps and qw/maps and writes localinfo 1000 - 1999
  accordingly: first maps from id/maps are added (maps are sorted by name), then maps from qw/maps
  are added (sorted by name as well and only added if they weren't already added from id1/maps)


----
QWEX v0.1723 Beta build 1476 (2004.01.05)
[server]
- new cvar:
    sv_use_dns n
      0 - don't use DNS lookup in status command
      1 - use DNS lookup in status command
      default: 0
- new command:
    nslookup <IP address> - resolve IP via DNS lookup
- bugfixes from 0.1722b:
    in PF_substr - for example: ktpro weapon aliases didn't work
    demo recording - bug in the generation of demo names
- now show all name changes: didn't show when player change name from NAME to NAME_AND_SOMETHING_ELSE_AT_END
- some spelling fixes

[client]
- the most part of source codes of the client is removed 

 
----
QWEX v0.1722 Beta build 1473 (2004.01.02)
[client] and [server]
- replaced all:
      sprintf ->  snprintf
     vsprintf -> vsnprintf
      strcpy  ->  strlcpy
      strcat  ->  strlcat
  partial:
      strcmp  ->  strncmp
      strstr  ->  strnstr
  and some overflow fixes (switching from luny)
- now all log files (qconsole.log, qerror.log, rcon.log) are put into QUAKE_DIR/OLDFILELOGNAME_PORT.log
  instead of QUAKE_DIR/GAME_DIR/OLDFILELOGNAME.log (with the exception of frag_NNNN.log)

[server]
- change: command status now shows the client's IP and DNS name
- new cvar:
    frag_log_type n
      0 - old style log (  qwsv - v0.165)
      1 - new style log (v0.168 - v0.172)
      default: 0
- added possibility for server-management via telnet:  
  new command line options:
    -ipt IP - use the specified IP address for remote connection
    -telnetport port - use the specified tcp port for remote connection
      if port = 0 then server works like without telnet extension - console messages are printed on stdout
      default: use the same value as in -port PORT
  new cvars:
    telnet_password password - password for authentication on connect
      default: no password is set by default, so no telnet-connection will be allowed
    not_auth_timeout n - if no password is sent (telnet_password) in "n" seconds the server refuses connection
      If set to 0, no timeout will occur
      default: 20
    auth_timeout n - the server will close the connection "n" seconds after the authentication is completed
      If set to 0, no timeout will occur
      default: 3600 (1 hour)
    telnet_log_level n, logging level of the telnet connections (in file QUAKE_DIR/qtelnet_PORT.log)
      0 - no log
      1 - log connects and disconnects to telnetport
      2 - same as 1 and all commands typed in console by user
      3 - same as 2 and all messages written on console by every authenticated user
      default: 0
  new commands:
    logtelnet - on/off telnet console logging

    Example: 
    [user@host:~]$ cd QUAKE_DIR
    [user@host:QUAKE_DIR]$ cat > ktpro/telnet.cfg
    telnet_password my_C00L_password
    not_auth_timeout 20
    auth_timeout 0
    telnet_log_level 3
    logtelnet
    frag_log_type 0
    <Ctrl+D>
    [user@host:QUAKE_DIR]$ ./mvdsv -port 28000 -telnetport 28000 +gamedir ktpro +exec telnet.cfg &

  To use management of the server via telnet:
  1. run telnet client (win32: "telnet.exe", unix: "telnet")
    1.1. win32: type command "set LOCAL_ECHO" if you want to see that you type in console
  2. type command "open host telnetport"
  3. type password (telnet_password) and press <Enter>
  4. now you may type commands to server.
  After successful authentication the server automatically executes the "status" command.

  Example:
  [user@host:~]$ telnet
  telnet> open localhost 28000
  Trying 127.0.0.1...
  Connected to localhost.
  Escape character is '^]'.
  # not_correct_password
  status
  my_C00L_password
  net address                 : 10.0.0.2:28000
  cpu utilization (overall)   :   0%
  cpu utilization (recording) :   0%
  avg response time           : 0 ms
  packets/frame               :  0.00 (33)
  frags id  address         name            rate ping drop  real ip
  ----- --- --------------- --------------- ---- ---- ----- ---------------

  say test
  console: test
  test
  Unknown command "test"
  quit                              
  Shutting down.                    
  Connection closed by foreign host.
  [1]+  Done                    ./mvdsv -port 28000 -telnetport 28000 +gamedir ktpro +exec telnet.cfg
  [user@host:~]$ cd QUAKE_DIR
  [user@host:QUAKE_DIR]$ cat qtelnet_28000.log
  [Wed Dec 31, 09:53:01 2003].[1] ============================================
  [Wed Dec 31, 09:53:01 2003].[1] mvdsv 0.1722 Beta started
  [Wed Dec 31, 09:53:09 2003].[1] Accept connection from: 127.0.0.1
  [Wed Dec 31, 09:53:10 2003].[1] Authenticated: no
  [Wed Dec 31, 09:53:12 2003].[1] Authenticated: no
  [Wed Dec 31, 09:53:19 2003].[1] Authenticated: yes
  [Wed Dec 31, 09:53:19 2003].[2] status
  [Wed Dec 31, 09:53:19 2003].[3] net address                 : 10.0.0.2:28000
  [Wed Dec 31, 09:53:19 2003].[3] cpu utilization (overall)   :   0%
  [Wed Dec 31, 09:53:19 2003].[3] cpu utilization (recording) :   0%
  [Wed Dec 31, 09:53:19 2003].[3] avg response time           : 0 ms
  [Wed Dec 31, 09:53:19 2003].[3] packets/frame               :  0.00 (33)
  [Wed Dec 31, 09:53:19 2003].[3] frags id  address         name            rate ping drop  real ip
  [Wed Dec 31, 09:53:19 2003].[3] ----- --- --------------- --------------- ---- ---- ----- ---------------
  [Wed Dec 31, 09:53:19 2003].[3] 
  [Wed Dec 31, 09:53:22 2003].[2] say test
  [Wed Dec 31, 09:53:22 2003].[3] console: test
  [Wed Dec 31, 09:53:23 2003].[2] test
  [Wed Dec 31, 09:53:23 2003].[3] Unknown command "test"
  [Wed Dec 31, 09:53:30 2003].[2] quit
  [Wed Dec 31, 09:53:30 2003].[3] Shutting down.
  [Wed Dec 31, 09:53:30 2003].[1] Server shutdown.

  Limitations: the telnet-feature can be used by only one user at a time.

Note: VVD patches.
Thanks: Scorp for 1st version of telnet patch (for QuakeForge 0.2.99beta5).


----
QWEX v0.172b Beta DEVELOP build 1448 (2003.12.08)
[server]
- bugfix: A serious overflow bug in "download" function fixed


----
QWEX v0.171b Beta DEVELOP build 1375 (2003.09.26)
[server]
- new MOD function forcedemoframe(float now)
  now = 1 writes demo frame exaclty at the time the function is executed
  now = 0 writes demo frame at the end of current frame


----
QWEX v0.170b Beta DEVELOP build 1250 (2003.05.24)
[server]
- just minor changes:
  all star keys from userinfo are visible to clients
  active weapon of the chased player is visible on the spectators HUD


----
QWEX v0.169 Beta DEVELOP build 1079 (2002.12.04)
[server]
- commands admin and judge unbanned (be sure to use fixed ktpro!)
- bug with wrong names for tmp recording fixed
- bug that allowed players to have null names fixed


----
QWEX v0.168 Beta DEVELOP
[server]
- change: sv_getrealip  0/1/2:
  0 - real ip is not checked
  1 - server tries to check ip for 5 sec. on failure, client is connected anyway (real ip is unknown)
  2 - server tries to check ip for 5 sec, on failure, client is dropped.
- fix: banned clients won't connect via proxy (unless realip check fails)
- new (MOD stuff): server seeks for localinfoChanged function, if it exists, will be executed everytime
  locainfo changes. Format: void(string key, string oldvalue, string newvalue) localinfoChanged
- new cvar: sv_DemoExtraNames 0/1, if enabled, demo names contains player names instead of team names
  I/E: dag_pietro_vs_insane_balt, insead of la_vs_hgc.
- change: logs contains more info now
- change: userinfo modified, only important info is sent to other clients (like top/bottomcolor, team name)
- ktpro commands 'cmd admin' and 'cmd judge' banned due to the serious bug concerning these commands


----
QWEX v0.165 Beta DEVELOP build 872 (2002.05.11)
[server]
- windows version is now a win32 application (nice window instead of msdos console)
- win32: param -noerrormsgbox will exit program after an error w/o showing error message box
  usefull if run server in the loop.
- win32: param -minimize starts server minimized to system tray
- few minor changes/bugfixes


----
QWEX v0.163 Beta DEVELOP
[server]
- small change to script command
  $name works as @name though it will be cleaned out of unreadable characters


----
QWEX v0.162 Beta DEVELOP
[server]
- small changes 
  sv_maxdownloadrate determines maximum for clients that download files (if set sv_maxrate is ignored)
  if userinfo drate is found it is used for setting rate when downloading
  after download is finished rate is changed back to its previous value


----
QWEX v0.161 Beta DEVELOP
[server]
- small changes/bugfixing in download protocol
- scripts on linux run in background now (I/E adding & in scripts is not neccessery anymore)
- on windows scripts uses extension .qws now, and are executed on sh.exe which has to be located
  in quake dir.
  additionally first parameter is always a digit 0-3 which indicates how the script was executed
  0 - from the console
  1,2 - client/rcon
  3 - mod
- on map change when downloading, on scoreboard pl of player that did not reconnect due to downloading
  shows % of downloaded file
- if sv_getrealip is on, and client won't respond within 5 seconds he won't be dropped anyway
  just his ip will be unknown

[client]
- when downloading kb/s shown on the console
- changes the map even if downloading (continues downloading after map change)


----
QWEX v0.160 Beta DEVELOP
[server]
- new command sv_getrealip 0/1
  if disabled, realip won't be checked, some players had problems with connecting to servers due to that
- new command sv_minping <msec>
  server can produce a lag on players, to keep pings higher that sv_minping
  usefull for making "fair" conditions
- changed downloading protocol.
  you can download from server much faster and w/o packet loss.
  increase your rate and fps to increase download speed
  with 72 fps and good connection you can get ~7-9kb/s with rate 1000.
  maximum i could get was 93kb/s (150fps + rate 100000 :) )
- new cvar sv_maxdownloadrate
  maximum rate that client can have, while downloading anything from server


----
QWEX v0.159 Beta DEVELOP
[server]
- new command logrcon
  toggles logging rcon on/off, when enabled all attempts to use rcon are written to rcon.log
- new cvar sv_cpserver
  if you have really "cp" machine, this may come in handy, besicly it forces server to sleep
  for sv_cpserver miliseconds after every 50kb read on map change. it's usefull for reducing lags
  on other servers due to disk swaping.
- new command script
  running scripts on server is now possible
  usage: script <scriptname> [<param1> <param2> ...]
  server searches for the script to run in current gamedir.
  You can specify a path to exec script outside gamedir, however only one ../ is allowed
  file extension will be appended automatically (.bat for windows, .qws for linux)

  simple formating for parameters is possible. if parameter starts on @, following word is assumed
  to be serverinfo/localinfo.
  example:
  script myscript @hostname
   server will execute script "myscript.qws"
   given parameter will be server's hostname
  script myscript "@hostname"
   this time a string @hostname will be given as parameter, text put into semicolons is not being formated
- new command cancel
  stops recording a demo, and removes it from disk

- new cvar sv_onrecordfinish
  this cvar contains a name of a script to run after demo recording is finished.
  for instance: sv_onrecordfinish myscript
  script is not executed if demo recording was canceled

- new cvar sv_login
  if set to 1, only players with logins can connect to server
  if set to 2, both players and spectator need to login
  server asks for login and password on connect (just type login/pass in the console)
  user accounts are kept in file 'accounts' in gamedir folder.
  following commands are used for account menagement:
  - acc_create <login> [<password>]
    acc_create <adress> <username>
    creates an account,
    login is case sensitive and contains at least 3 chars, if password is not specified
    it will be assumed to be the same as login
    if login has a format of ip adress (xxx.xxx.xxx.xxx) also username is required.
  - acc_remove <login>
    removes specified login
  - acc_block <login>
    blocks specified login, login is not removed, but clients can't login on it
  - acc_unblock <login>
    unblocks the login
  - acc_list
    list all logins
  
  logins are blocked automatically after 10 failed attempts to login

- realip feature
  server gets two ip's now, ip through which client is connected (basicly ip of last proxy he uses)
  and client's 'real' ip, that means ip of the computer on which qwcl is executed
  both ip's are shown in server status
  MOD's can check realip via infokey ('realip' is the key)

- few more minor changes/bugfixes  
  

----
QWEX v0.158 Beta DEVELOP build 936 (2002.04.05)
----


----
QWEX v0.153 Beta DEVELOP build 781 (2002.02.09)
[server]
- just some changes :)
----


----
QWEX v0.151 Beta DEVELOP build 752 (2002.01.11)
----
[server]
- some changes to VIPs
  since now, not only spectators can become a VIP,
  therefore vip_spectator_password changed to vip_password
  There are different levels for vips, however intepretation of level is left for MOD authors
  Level for vips if determined by password given by client, or IP (if client's ip is on a vip list)
  For instace:
  vip_password "blue black red" means:
  pass "blue" for level 1, pass "black" for level 2 and "red" for level 3
  vip_password "blue none none green" -> only level 1 and 4 is accesable

  vip_addip requires 2 arguments: <adres> <level>, if level is not specified, level 1 is assumed
  For instance: vip_addip 23.4.34.234 3 -> level 3 for 23.4.34.234
  
  userinfo "password" is checked for VIP password (for spectators also "spectator" value is checked)
  

----
QWEX v0.149 Beta DEVELOP
----
[server]
- lots of bugfixes:
  roundig errors! demos were running faster even 15sec in 20 min long game
  on slow machines packet loss was rising when client/spectator connects
  invalid userinfo could crash the server (qizmo allow to use '\' in userinfo)
  slowing down of entities after long uptime hopfully fixed (??)
  demonames made by easyrecord could have prohibited characters
- new cvars/commands:
  logerrors		toggles logging errors 
  maxvip_spectators	max of vip spectators, vip spectators are an alternative for spectators
  vip_spectator_password password for vip spectators
    (if password is not set only players from vip_iplist can enter as vip)
  vip_addip		adds ip to vip list
  vip_removeip		removes ip from iplist
  vip_listip		prints ip list
  vip_writeip		writes ip list to vip_ip.cfg
  sv_demoPrefix		string added as a prefix to demoname
  sv_demoSuffix		string added as a suffix to demoname
- qc stuff
  new functions:
  void(string dst, string src) strcpy = #97 - copies src to dst
  string(string str, string substr) strstr = #98 - searches for substring in str,
    returns pointer to it or "" if not found
  void(string dst, string src, float n) strncpy = #99 - copies max n chars to dst
  void(string logname, float console, string text) = %100 - prints text to file 'logname',
    if console is non-zero, prints to the server console as well
  void(entity cl, string text) redirectcmd = #101 - executes string on the console and
    redirects output to client (eg redirect(self, "status"))
  void() calltimeofday = #102 - force server to call mod function timeofday

  server searches for following functions in the MOD:
  void timeofday(float sec, float min, float hour, float day, float mon, float year, string date) = {..}
  float consolecmd(string cmd) = {..}
  
  - timeofday is executed after every worldspawn (can be aslo forced by MOD with calltimeofday func.)
    argument 'date' is something like "Sat Jan 05, 3:23 2002"
  - consolecmd allow MOD authors to add new commands accesable by server console
    function should return true if recognized a command, false otherwise


changes over QWE v0.142 Beta
[server]
- new cvars:
  sv_demoDir              - points to demodir
  allow_download_demos    - 0/1

- new mod commands:
  void(string str) conprint = #94   - prints to server console only (no redirects)
  string (string str) readcmd = #95 - executes command on server,
    but result is returned by this function instead of writing to the console
[client]
- cl_chasecam 2 -> matrix-like chasing, when watching demo, set demotimescale to 0 and set cl_chasecam to 2
  to adjust rotation speed, and distance, use cvars cl_matrixcam_speed and cl_matrixcam_dist


QWE v0.14 Beta build 647 (2001.09.28)


changes over QWE v0.13 Beta
[server]
- svc_disconnect message is now written correctly at the end of the demo
- added interpolation for nails (changes in the protocol, old clients won't read demos,
  unless nobody shots from ng/sng :) )
- changes in chatmessage funv (check example.qc)


[client]
- nails fixed, stupid bug coused them to disapear
- nails are interpolated now (only in demos with new protocol)
- demotimescale works as it should, i/e it slows/speeds up demo, but it doesn't affect conspeed,
  cursor blinking and free spec movement also demotimescale can be set to 0, to freeze the map
  (free spec can still fly around the map)

[qwdtools]
- svc_disconnect message is now written correctly at the end of the demo
- "this demos was converted.." message now appears also at the end of demo
- loads of new options
- option -debug writes debug data to an output file (debug.txt)
- option -log writes all text messages to an output file (log.txt)
- option -c for converting demos (needed only if either -log or -debug is added to cmdline,
  otherwise assumed to be enabled)
- option -stdin / -stdout reads/writes from/to pipes
- option -help prints help :)
- option -ft - filters team chats
- option -fc - filters all chat messages
- option -msg - sets messagelevel (same as QW's msg command)
- option -noini - ini file won't be loaded
- option -ini <filename> - ini file to be loaded (default: qwdtools.ini)
- option -qd - qizmo_dir for decompressing qwz files
- option -od - output dir, dir where new created files will be stored
- option -debug_file - file name for debugging
- option -log_file - file name for logs
- option -bd <path> - base dir, sets current directory
- incuded 2 example ini files: qwdtools.ini and example.ini
- handles ctrl-c and ctrl-break
- fps setting works correct now (in previous versions, fps was a bit lower then it should be)
- --<option> disables this option (usefull for disabling some of the settings from the ini)


changes over QWE v0.12 Beta
[server]
- MAX_PACKET_ENTITIES increased again (128->196)
- rebuild DemoReliableWrite_Begin, warnings/overflows etc shouldn't happen anymore
- demo messages will never be greater than MAX_MSGLEN (there were problems with playbacking)
- MAX_BACK_BUFFERS increased from 8 to 16 (ctf players had problems with connecting
  due to overflow of back buffers)
- MOD stuff: changed ChatMessage functions (check example.qc)

[client]
- MAX_PACKET_ENTITIES increased to 128
- cl_track_validonly defaults to 1 now

[qwdtools]
- MAX_PACKET_ENTITIES increased to 128
- demo messages will never be greater than MAX_MSGLEN (there were problems with playbacking)
- errors while converting demos due to msg overflow fixed


changes over QWE v0.11 Beta build 628 (2001.09.09)

[server]
- new cvar: version
- changed the way server sets exact player origin for demo recording.
  Now interpolation is used instead of prediction
- bugfix: messages ment for single client sent by the MOD where not written to demo
- bugfix: player's active weapon were not written to demo
- for MOD authors:
  - few fields for world entity has been set
    .netname contains server version name
    .targetname contains server executable name
    .impulse contains QWE version number
    .items contains number of highest build-in function
    current new build-in functions are:
    - void() executecmd       (#83)  - executes buffered text on the console
                                          (stored by the localcmd funtion)
    - void(string) tokanize   (#84)  - tokanize the string
    - float() Argc            (#85)  - returns number of tokens
    - string(float) Argv      (#86)  - returns token for given number

  - new MOD function ChatMessage, if the function exist in the MOD it will be executed
    instead of server's sv_say() function
  - for details about the usage of these function check example.qc

- demo's names are now always lowercase
- increased MAX_PACKET_ENTITIES from 64 to 128
- new cvar: sv_demoUseCache 0/1
  if enabled demo is cached in the memory, and flushed on disk after recording is finished
  you can set size of the cache in the command line (e/g -democache 4096 will alloc 4MB for cache)
  if parameter is not given 1MB will be allocated
  if demo is larger than cache size, server will flush on disk 500kb and continue recording
- new cvar: sv_demoCacheSize  - CVAR_ROM shows size of demo cache
- new cvar: sv_demoMaxSize    - defines maximum size of the demo (stops recording if exceeded)
- new cvar: sv_demoMaxDirSize - defines maximum size of .mvd demos, doesnt allow to record if exceeded
- changes to command rmdemo:
     rmdemo <demoname> - removes the demo
     rmdemo *<token>   - removes demo with <token> in the name
     rmdemo *          - removes all demos
- status shows cpu utilization by demo recording


[client]
- increased MAX_PACKET_ENTITIES from 64 to 128

[qwdtools]
- increased MAX_PACKET_ENTITIES from 64 to 128
- increased maximum size of packet. (some qizmo demos with voice coused problems)


QWE v0.?? build ??? (2001.0?.??)
Project started.

ZQUAKE v0.12 build 526 (2001.05.30)

QW v2.40 build 0 (1999.12.21)
Q1source released under GPL.

QW v2.33 (1996.10.24)
Released last official version of QuakeWorld from Id Software.

---
HighlandeR & VVD
