| Wolfenstein: Enemy Territory 2.60 Update - README |

| This update for Wolfenstein™: Enemy Territory™ addresses issues found in multi-player since its release. For a complete list of what we fixed and added - look here. For future releases and more information about the game, please visit our web site: http://castlewolfenstein.com. For additional technical help with Wolfenstein: Enemy Territory, please see the Help system that came with the game, or visit our web site: http://castlewolfenstein.com. Created: 8/26/2003 Updated: 2/22/05 Readme Contents: ================ INTRODUCTION INSTALLATION, SET UP, and UNINSTALL ISSUES 1.> The update won't install 2.> Issues with installing the patch to the wrong folder WHAT'S NEW IN THIS PATCH 1.> New Fixes from the 2.60 Patch 2.> Previous Fixes from the 1.02 Patch 3.> Previous Fixes from the 1.01 Server-side Patch INTRODUCTION Refer to this document for more information about the Wolfenstein: Enemy Territory 2.60 Update. This update contains the server-side issues of the previous 1.01 patch, the fixes from the 1.02 patch and addresses several other issues. For more general information, please see the Readme and Help files included with the original game. INSTALLATION & SET UP ISSUES 1. The update won't install: ============================ You must have a full version of Wolfenstein: Enemy Territory installed properly on your system before you will be able to install the update. 2. Issues with installing the patch to the wrong folder: ========================================================= When installing the 1.02 or the 2.60 update, it is possible for you to browse and install to an incorrect folder. It is important that you only install the patch to where you have previously installed Wolfenstein: Enemy Territory. If this is not done, you will need to uninstall Wolfenstein: Enemy Territory before you will be able to install the patch again. 2.60 Fixes: New features: ============= Minor optimizations in server and client engine for lower cpu usage. Client can record game audio to a wav file. wav_record starts recording wav_stoprecord stops recording cl_wavefilerecord 1 will start recording from the moment a demo is loaded. "Unable to load an official pak file" now reports the pak filenames in the console. Win32 and Linux sound cvars are now unified: s_khz, s_bits, s_numchannels s_khz is now a CVAR_LATCH. Players can override unsafe cvars (e.g., from a crash) with com_ignorecrash 1 Server can give alternate messages to "server is full" by changing the cvar sv_fullmsg Server can redirect clients to other servers when full (e.g. sv_fullmsg "ET://host.to.redirect.to:port") Server will switch to GT_WOLF if "map" can't start a campaign. /demo can now specify .dm_83 extension explicitly, and will try dm_83 and dm_84 if extension isn’t specified. Abbreviated snapshots are now sent when clients aren't fully connected. Saves bandwidth on map rotations. Client may move the demo recording statusline with cg_recording_statusline. 0 hides it completely. /buyNow, /singlePlayLink commands removed. 'MODS' menu added. Anisotropic texture filtering is now supported in renderer. Enable with r_ext_texture_filter_anisotropic 1 and use r_textureAnisotropy to set the filtering level. cg_draw2D is no longer cheat protected. Wounded freelook is now enabled (a la RTCW). It is also completely moved clientside so there is no lag. Vote string is now printed to console when vote is called. win32 specific: Client can clear the dedicated console with /clearviewlog s_khz 44 now works. Linux specific: Client can disable built-in mouse acceleration with in_dgamouse 2 r_swapInterval is now supported Changed Linux key handling so ctrl/shift/alt/etc don't make a difference for -any- keys, to match Windows® better. Bug Fixes: ========= Class Specific: Fixed wounded CovOps stealing uniforms if they were close enough. Fixed incorrect Level 4 CovOps knife damage on wounded players. Fixed disguised CovOps having laggy health to enemy team. Fixed Level 3 engineering using incorrect charge for landmines. Fixed Field Ops incorrectly using medic charge time for ammo packs. General: Fixed http download crashes. Client now sends a UserAgent of ID_DOWNLOAD/2.0 libcurl/7.12.2 on downloads. Client now sends a referrer of ET://server.IP.address:port on downloads. Various server engine crashes fixed. Spectators could sometimes move-partway-through-walls on connects. Fixed issues with profile.pid (false "com_crashed" situations). Clients would often get "disconnected for unknown reason" instead of a proper disconnect message. Fixed more than 10 maps in a campaign crashing the server. Fixed skulls sometimes shown in scoreboard for live players. Fixed campaign count being checked once per campaign. Fixed incorrect first person tank muzzle origin for cg_drawgun 0. Fixed players being able to "fire" flamethrower and tank gun simultaneously with cg_drawgun 0. Fixed players being switched to soldier class upon attaining level 4 lw/hw skill. Fixed Referee menu expanding colors twice. Fixed foreign keyboards inputting unsupported characters after opening console. Fixed translations becoming incorrect if cl_language was -1 or 0. Fixed powerups being laggy (e.g., objective powerup would take a few seconds to show on hud). Fixed silent landmines (e.g., landmines sometimes exploded without hearing the trigger at all). Fixed engine lowercasing all binds (e.g., bind a "say Hello" and then press a, it would say “hello” in lowercase). Fixed revive snapping players’ view around. Fixed Players_Axis/Players_Allies getting too large and crashing server. Fixed players "sticking" to each other in collisions. Fixed dynamite on movers triggering objectives. Fixed "configstring > max_configstrings" connect bug. Fixed Satchel detonator work incorrectly when spectating. Fixed the prediction error that occurs when a constructible is finished building. Fixed prediction error when cratering. Fixed anti-bunnyhop. Fixed doubled events (e.g., double/triple misfiring while jumping or being hit). Fixed pistol prediction (client could "fire" the pistol faster than it's supposed to). Fixed framerate dependency of mg42s. Fixed tracemap generation breaking when there was a flat plane at lowest point in a map. Fixed players being randomly switched to spectator mode upon attaining level 4 skills. Fixed Antilag (it was dependent on client fps, and headshots weren't delagged). Fixed Timestamps in logs getting truncated. Fixed renderer crashing with too many stretchpics (e.g., topshots and weaponstats at the same time, if they were full). Fixed players mysteriously sinking into the ground and cratering when bouncing off specific map geometry. Fixed engine improperly interpreting certain IP addresses as LAN addresses. Fixed sign extension bug in console code that caused high ascii characters in the console to be displayed in the wrong color. Fixed artillery markers not being properly drawn on compass. Fixed hostname being exactly 21 chars long with a period in position 9 being treated as IPX. Fixed overflow when more than MAX_GLOBAL_SERVERS are returned from the master. Fixed Luger spread and pausing on last shot. Fixed akimbo rapid fire exploit. Fixed zoom exploit. Fixed security hole allowing clients to override IP. Fixed spectator/limbo cameras slowly 'drifting' and never reaching 0 velocity. Fixed download redirection notices printing repeatedly in server console. Fixed LMS not showing who drew first blood. Fixed LMS not showing how many wins each team had. Fixed problem that when players connected after a vote was called they got stuck with a vote on their screen through the whole round. Fixed the issue that when playing the Fuel Dump map you could plant the dynamite and it would say, "base fortification" but actually destroy the Fuel Dump. Fixed pmove and the game disagreeing about weapon charge usage. Fixed radar dynamite bug (both sides could plant dynamite near the truck for no apparent reason, and get XP for defusing it). Fixed the problem that when all of your team's mines were in use, you couldn’t disarm enemy landmines. Fixed team landmine count being incorrect (you could plant 11 by triggering 10th and planting 11th) and this broke the defusing team’s landmines. Fixed mistaken dynamite announcements (announcement planting dynamite near goldrush tank barrier 2, but it doesn’t get destroyed). Fixed players blocking dynamite from destroying constructible objectives. Fixed client losing prone state after packet loss. Fixed winning team not winning when they eliminated opposition <3 sec before round end, and then died themselves. Fixed LMS not always ending when a team was eliminated. Fixed switching weapon during pause. Fixed akimbo weapons and deployed mobile MG42 ignoring cg_autoreload. Fixed Maxlives adjuster on timelimit 0. Fixed crosshair names randomly not working (tunnels in oasis, crypt in resurrection). Fixed g_{axies,allies}mapxp overflowing on long campaigns crashing the server. Fixed static mg42s not hurting props (e.g., the mg42 outside allied spawn didn’t damage the wooden fence). Fixed incorrect 'complaint dismissed' message when player disconnects. Fixed mg42s not being antilagged. Fixed riflegrenade-through-teamdoor exploit. Fixed intermission ready (match_readypercent now applies to intermissions). Fixed intermission ready should not waiting on spectators. Fixed large cg_errordecay values exploit. Fixed CovOps landmine spotting. Fixed knife not being antilagged. Fixed players shooting themselves in the head when prone, firing through a breakable (e.g., a window). Fixed Medic viewlocking sometimes snapping to non-medics. Fixed Oversize servercommands crashing client. Fixed engine eating "//" in server commandlines. Fixed Garand/K43 ammo exploit. Fixed free ammo via spectators exploit. Fixed Limbo'd players crashing servers via following carriers and disconnecting. Fixed the distancefalloff bug (damage would drop, then suddenly increase with distance). Fixed "setu ch" crashing server. Fixed CS_SYSTEMINFO exceeding 1024 getting truncated on map changes. Fixed the prone -> invisible player (prone into wall) bug. Fixed Ctrl-` for the mini-console. Fixed the disguised name and normal name both being shown when moving the crosshair over a disguised covert ops while spectating. Fixed kick/mute/referee/etc. players with >32-character names. Fixed weapon heat sometimes flashing back down to 0 when maxed out. Fixed random lockups occurring when blood or debris is spawned. Battery bunker now autoselects spawnpoint when captured. Moving objects now predict a continuation rather than a stop (e.g., fixes jittery tug on railgun). Clients can no longer /userinfo and nuke their userinfo from the console. Binoculars can no longer be used while using mounted mobile MG42 or mortar. Removed "Killed by <name>" in endround scoreboard. Removed unused cg_specswing cvar. F13-F15 now works if the user's keyboard/X mapping sends them. Capslock, kp_numlock, and kp_equals are all usable in Linux now. Made some minor fixes to Linux keyhandling. Changes relevant for modders: ============================= NOTE FOR MOD USERS: It is recommended that any user modifications that have been installed to the Wolfenstein: Enemy Territory directory be removed. These modifications are not supported by Activision® and may not be compatible with some of the fixes that are included with this patch. The entire source tree is now -Wall -pedantic -std=c99 clean, removing all the noise from the silly warnings so that useful warnings are actually noticed. No functional changes, except that HINT_CHAIR doesn't work at all now (where it worked before, but unreliably). All printf-style varargs functions are now protected with GCC's __attribute__ extension, which should help catch printf parameter errors. Added a 4th parameter to CG_INIT - qboolean demoPlayback - since some mods need this at init time, and drawactiveframe is too late for them. MAX_CVARS increased to 2048 from 1024, as ET is relatively close to the 1024 limit with both client and server cvars. Enlarged FILE_HASH_SIZE to compensate for the enlarged cvar table size. kick/ban code is now moved entirely into qagame, mods can choose to use the engine banning system or the qagame one. #define USE_ENGINE_BANLIST qtrue, changing to qfalse makes use of the qagame ban system Demo recording status has been moved entirely to cgame. See CG_DrawDemoRecording(). When PERS_HWEAPON_USE was set, the engine blocked the update of usercmd_t. This has been fixed and the relevant code changed in pmove_fixed.c FUI can now render models cgame can synchronize rendering with trap_R_Finish if needed. CG_SHUTDOWN is now called on /quit MAX_GLOBAL_SERVER is now 4096 Significantly enlarged MAX_CMD_BUFFER (16k->128k) Added better debug info for Info_*() infostring functions The master server now supports filters for fs_game and gametype. E.g. to request a list of protocol 84 servers with fs_game "etpro" and g_gametype 5, ui_main would execute the following command: globalservers 0 84 \game\etpro\gametype\5 Rendering to textures: cgame may now render directly to a texture on the fly. Use trap_R_GetTextureId() to retrieve a handle to an existing texture (tga/jpg). Use trap_R_RenderToTexture( textureid, x, y, w, h ) to render into the texture. Screen coordinates 0,0 for trap_R_RenderToTexture are at the lower left of the screen. You can get a list of textures the engine has loaded with /imagelist Example code can be found in cg_limbopanel.c at the bottom of CG_DrawPlayerHead(). Dynamic shaders: cgame may build shader scripts on the fly, via code. Use trap_R_LoadDynamicShader( shadername, shadertext ) to load a new shader into memory. The loaded shader can then be referenced with trap_R_RegisterShader() and used as if it were a normal shader. Combined with trap_R_RemapShader(), cgame can replace any shader. trap_R_LoadDynamicShader( "shadername", NULL ) unloads the dynamic shader "shadername". trap_R_LoadDynamicShader( NULL, NULL ) unloads all dynamic shaders. Example code can be found in cg_main.c, look for #ifdef TEST_API_DYNAMICSHADER Raw binary channel for client<->server: cgame and qagame may now communicate using a raw binary stream. These messages are unreliable (like udp), and are sent only once per server frame. qagame and cgame are responsible for managing retransmissions. Sending a message overwrites the outgoing message buffer. Once the message has been sent (unreliably), the message buffer is cleared. The message is sent with trap_SendMessage, and its status can be read with trap_MessageStatus. When the cgame and/or qagame receive a message, they get a *_MESSAGERECEIVED event to vmMain, which has a timestamp and the message that was sent during that snapshot. void trap_SendMessage( /* server: int clientNum */, char *buf, int buflen ); clientNum: the client to send the message to (server only) buf: the message to send buflen: length of the message to send messageStatus_t trap_MessageStatus( /* server: int clientNum */ ); clientNum: the client whose buffer we want to check (server only) returns MESSAGE_EMPTY on empty buffer returns MESSAGE_WAITING when not yet sent (can be caused by rate limit) returns MESSAGE_WAITING_OVERFLOW when the message would make the packet too large to send /* qagame */ int vmMain( int command, int arg0, int arg1, int arg2, int arg3, int arg4, int arg5, int arg6 ); command == GAME_MESSAGERECEIVED (int)clientNum = arg0: clientNum message was received from (char*)buffer = arg1: pointer to the message received (temporary) (int)buflen = arg2: length of message received (int)commandTime = arg3: timestamp of message (from client) /* cgame */ int vmMain( int command, int arg0, int arg1, int arg2, int arg3, int arg4, int arg5, int arg6 ); command == CG_MESSAGERECEIVED (char*)buffer = arg0: pointer to the message received (temporary) (int)buflen = arg1: length of message received (int)commandTime = arg2: timestamp of message (from server) Fixed the Com_BitSet() with ridiculous bit number in the anim condition code. buddyClients was not used, ignoreClients was too small and didn't use COM_Bit* functions. Fixed incorrect class determination in CG_PlayerClassForClientinfo(). CG_AddPMItem failed on multi-line messages. Lag and packet loss simulation: Client and server may simulate packet loss and increased latency with new cvars. These will only function when sv_cheats is 1. Server uses the cvars sv_packetloss and sv_packetdelay. Client uses the cvars cl_packetloss and cl_packetdelay. For example, to make the server simulate 200ms latency and 30% packetloss: sv_packetdelay 200 sv_packetloss 30 These cvars only affect transmitted packets, not received packets. To simulate packetloss and latency in both directions you need to set the cvars on both client and server. Thanks to Chad Siedhoff and the Activision Visioneers for helping with this patch! 1.02 Fixes: Weapon fixes include moving Land Mines and Adrenaline needles to separate weapon banks. Made switching to a weapon after dropping dynamite/satchel/landmines easier. Also added ability for Covert Ops/Engineer to pick up weapons from the opposing team of the same class. Fixed some issues with Air Strike detonation. Fixed XP not being given (and stats being kept) for kills with akimbo pistols. Server side fixes include private slots not working when the server is password-protected, added cvar (g_disableComplaints) to disable complaint system for certain type of kills, 1 = mines, 2 = airstrike/ffe, 4 = mortar (add together for multiple types). Made it so, for the cvars that require it, any changes to public/competition settings will now do a map restart. Added a temporary banning system for when players are kicked by vote or from complaints (defaults to 5 mins). Client-side additions include the ability to show smaller popup messages (such as death messages) with cvar (cg_drawSmallPopupIcons). Made it easier to give health and ammo to players closer to you (instead of giving it to yourself by accident). Fixed vid_restarts causing players to be thrown into limbo on pure servers. Fixed changing game modes causing entities (mounted MG's) to be spawned incorrectly. Fixed some votes not displaying properly. Sped up fog rendering code and many other behind-the-scenes fixes! Thanks to Chad Siedhoff and the Activision Visioneers for helping with this patch! 1.01 issues fixed (from previous server-side patch): 1. Server Stability Issues: =========================== We've made a few adjustments that will help with server side stability and should help to remedy unexpected server timeouts. 2. PunkBuster™ Update: ===================== Even Balance, Inc. has updated their PunkBuster software and we've included it in this update as well. Below is a detailed description of how PunkBuster works and how to update to the latest version entitled PBWEB. The PB Server software routinely checks with the master PB Servers and downloads new updates when they become available and then distributes the new versions down to the PB Clients when players running an old version connect to the server. When PB can't keep itself up to date, various error messages will be displayed. For PB Server Admins, messages will be displayed to all players when a player joins who has a newer version of PB than what is currently running on the PB Server. Also, PB Servers running old versions will not be able to detect and deal with all of the latest versions of cheat/hack software. For players of the games, when their PB can't keep itself up to date, they will be removed (kicked) from PB Servers and may see one of a variety of messages ... "Distress", "Technical Problem loading ...", or "Update Timeout". For users who are unable to resolve the issues dealing with master PB Server communication or who have unreliable Internet connections that cause PB auto-updates to fail, you should use PBWEB to resolve the issue. To use PBWEB, you first must know where your home "pb" directory is located on your hard drive. To do this, enter "/fs_homepath" into your console (without the quotes). Players can press the tilde key (the ~ key) from any game screen to bring down (and/or raise) their console. After entering "/fs_homepath", the game will display the path to the home directory. At that location, the subdirectory called "pb" is the home "pb" directory. Launch PBWEB from the home directory. If PBWEB is not launched from inside the home "pb" directory, then it will not work. Note that PBWEB works for all games supported by PunkBuster and it works for both Players and also Admins running PB Servers.