# WhaleClient for Enemy Territory

Introduction
WhaleClient
Version 1.3
Released 06/15/2005
By KillerWhale
KillerWhaleMail@hotmail.com (Please use the forum link below for questions/suggestions/bugreports)

The latest version and answers to any questions are available online at the Rainhosting forums: http://forums.rainhosting.com/

Installation
WhaleClient is a client side mod for ET which can be used with multiple (serverside) ET mods.
It's been tested to work with ETpub (up to the latest currently unreleased version 0.6.0 (dated 10/12/2005)) shrubET (1.1-b/1.2test13) and ETmain (2.55/2.56/2.60) but it should also work right with more mods though this is untested.
It's recommended to remove any other client mods from the server/client before installing.
WhaleClient can be installed on a server so all players must download and use it (serverside install) or installed by players for playing on unpure servers (client-only install):

1. Serverside Installation:
   Just unzip the WhaleClient zip file into the mod folder you'll like to run it with on the server:
   So if you would like it to run with shrubET you should unzip it into the Enemy Territory/shrubet folder and for etpub it's the Enemy Territory/etpub folder.
   If you would like it to run with the standard ET (etmain/vanilla ET) you should unzip it into the Enemy Territory/etmain folder.
   IMPORTANT: Make sure players can download the WhaleClient-1_4_beta1.pk3 file from your server or redirect (like normal maps).
   For etpub: It's heavyly recommended that you set g_obituary to "1" on the server or some features won't work (properly).
   For shrubet: It's heavyly recommended that you set the g_logoptions bitflag 1 off (which means g_logoptions must set on a even value).
   There are some (optional) serverside settings which changes WhaleClient's behaviour listed here.
2. Client-only Installation: (for playing on unpure (sv_pure "0") servers)
   Just unzip the WhaleClient zip file into the mod folder you'll like to run it with:
   So if you would like it to run with shrubET you should unzip it into the Enemy Territory/shrubet folder. It's always best to make a backup of the files you overwrite, so you can put them back if you want to uninstall.
   If you would like it to run with the standard ET (etmain/vanilla ET) you should unzip it into the Enemy Territory/etmain folder.
   Important: If you play on pure servers without WhaleClient on it, you'll have to reinstall WhaleClient before using it again on a unpure server!

Uninstallation
Just remove both the "Whaleclient-1_4_beta1.pk3" and the "WhaleClient_CompassShaders.pk3" files out of your mod folder.
Also you should replace the "cgame_mp_x86" and "ui_mp_x86" .dll/.so files with the regular client .dll/.so files (out of your etmain folder) (only needed if it's the server or you play on unpure servers).

Acknowledgements (in alphabetical order)
The following people assisted in testing and/or contributed ideas or bug reports:

- 1.4: Far to many people to name here, but you know who you are.
- 1.3: The {AR} clan for support and especially Major Zeman (testing & reporting bugs).
- 1.2: Major Zeman, Stonewall
- 1.1: Major Zeman, eXistinZ

Special Thanks:
The ETpro team (bani, rain, fretn and more): their mod gave inspiration for a lot of features, also credit for some sounds and models goes to them.
The ETpub team (tjw, josh and more): for allowing me to support their mod and for some pieces of their etpub_client code.
Lastly thanks goes out to for the people who posted bugfixes on the SplashDamage forums, especially Chrunker (for a few of the Project Bugfix fixes).

Changes from WhaleClient 1.3 are marked in red.
What's New (lists the most major changes)

- 1.4 Beta 1 - released 10/13/2005
  - Location names in teamchat (works with Etpro location files).
  - Optimized prediction: should increase FPS a lot in most cases.
  - Death ("bad day") spree messages.
  - Althud flags
  - Support for serverside killingspree messages (plays sounds).
  - Killingspree messages screen display location and global sound configurable.
  - ETpub: players can choose between client or serverside hitsounds.
  - Most of ETpub_client (20050927) integrated.
  - A lot of other small features and bugfixes.
- 1.3 - released 06/15/2005
  - Added a new WhaleClient menu for setting most WhaleClient settings.
  - Redone the player's HUD and Scoreboard (see "Display changes" section).
  - Enhanced Spectator viewing.
  - Added multikill messages with sound.
  - Added textshortcuts (like in shrub).
  - Gib chunks are shown.
  - Bannerprinting support.
  - New custom menu system.
  - Added more small features, like altweap reloads.
  - Added new !pizza and !listmaps chatcommands.
  - Added support for map/team/class change autoexec scripts.
  - Added LOTS of new client fixes.
  - ETpub_client integrated. (Modified)
  - This version is built upon the 2.60 patch code.
- 1.2 final - released 03/26/2005
  - Different Hitsounds when hitting a teammate.
  - Voicechats with custom text.
  - Level 4 soldiers can put their secundairy SMG in weaponbank 2.
  - Changed deathmessage display.
  - Killing sprees with sounds.
  - New text shrub text commands added.
  - Automaticly adapts to the servers ET version (2.55 or 2.56).
  - Fixed all known bugs/crashing problems with the previous version.
  - Fixed a lot of etmain bugs + added improvements.
  - Now supports Linux.
- 1.1 - released 10/14/2004
  - Objective display popup.
  - Disable fireteam invitations.
  - Team/Class-changing menu's.
  - Custommenu1 and Custommenu2 for creating your own menu's (unpure servers).
  - Knifekill Goat sounds and First Blood sounds.
- 1.0 - released 09/01/2004
  - Client-sided hitsounds (head and bodyshots) when you hit a enemy for all bullet shooting weapons (except crew-served MG's).
  - Friendly covert-ops in disguise get a disguised icon.
  - Scoreboard shows connecting status.
  - Ability to open voicechat menu as spectator.

Features

Hitsounds
Version Added: 1.0
Last Modified: 1.4 beta 1
Documentation last modified: Oct 12, 2005

Whaleclient supports (client-sided) hitsounds for all bullet hits, with the exception of the crew-served MG.
Hitsounds are sounds that play if you hit a player. Whaleclient supports different sounds for hiting a enemies head and body (everything else except the head).
It can play a different sound when you hit your own teammate.
You can toggle hitsounds with cg_hitsounds (default: 1).
It's possible to use your own hitsounds (this is probably only useful if you play on a unpure server, or the server must add a pk3 with custom hitsounds).
To add your own sounds (they'll have to be .wav sounds!), you'll have to zip the sound (it can be in a few folder levels, like "sound/mysounds/hithead.wav"), rename the zip file to a .pk3 extension and change one or more of the following settings in ET:

> Head hitsound
> You can change the sound played when you hit a enemies head by setting:
> cg_hitheadsound "[path and name of the wav file in the pk3 pack]" (default: "sound/whaleclient/wc_headshot.wav")
> Body hitsound
> You can change the sound played when you hit a enemies body by setting:
> cg_hitbodysound "[path in the pk3 and name of the wav file]" (default: "sound/whaleclient/wc_hit.wav")
> Teammate hitsound
> Finally you can change the sound played when you hit a teammate by setting:
> cg_hitteamsound "[path in the pk3 and name of the wav file]" (default: "sound/whaleclient/wc_headshot.wav")

Setting cg_hitsounds "2" will enable serverside hitsounds for etpub (if the server has g_hitsounds enabled).

Voicechats with custom text
Version Added: 1.2
Last Modified: 1.3 test1
Documentation last modified: Apr 25, 2005

With WhaleClient you can receive voicechats with custom texts, much like how it's done in ETpro.
You can send such a voicechat with the following command with parameters:
Syntax: vsay [@private client(s)] [voicechat] [soundnumber] [custom text]
- [@private client(s)]: Voicechats can be send to a specific person or group(clan) by adding this (optional) parameter. The parameter has to start with a @ sign followed directly (no space!) by a partial string of the person or group you would like to send the voicechat to.
- [voicechat]: the actual voicechat to be played, always has to be there.
- [soundnumber]: The number of the sound and text as defined in the voicechat script. This can be used to always play the exact same voicechat every time. If soundnumber is greater then the number of defined in the voicechat script it will use a random soundnumber available.
- [custom text]: The rest of the vsay command is shown as the text of the voicechat. This will override the standard voicechat text, so it's like normal chat with a added sound.
Every parameter is optional except the voicechat, but they have to be in this order.
NOTE:Only players with WhaleClient (version 1.2 and upwards) installed will be able to receive these new voicechats, people without it will receive the normal one, unless it's a private voicechat in which case they'll receive nothing. Also note that people without it installed can still send these voicechats (but not receive them them self).
A few examples:
vsay goodgame : sends a normal voicechat for saying "Good game!".
vsay @whale goodgame : sends a private voicechat to all people with "whale" in their name (case and color insensitive).
vsay goodgame 1 : sends a normal voicechat to all people with always the same sound and text (the 2nd of the voicechat script).
vsay goodgame gg : sends a normal voicechat to all people with a random soundnumber but with only the text "gg".
vsay @whale goodgame 1 gg : combines everything above.
You can choose to not receive these new voicechats:
cg_noCustomVoiceChat (default: 0) is a bitflag variable with the following properties: (add up the values to disable multiple features)
- 1 - Display voicechats normally (no custom text or sound).
- 2 - Ignore private voicechats.

Text Shortcuts
Version Added: 1.3 test1
Last Modified: 1.4 beta 1
Documentation last modified: Oct 12, 2005

WhaleClient now supports a lot of Shrub's text shortcuts and even adds a few more.
Text shortcuts can be used in normal ((fire)team)chat, ((fire)team)voicechat or echo/cpm.
List of supported Text Shortcuts:
- [d] = last player who killed you. *
- [dw] = the last weapon you got killed with. *
- [k] = last player you killed. *
- [kw] = the last weapon you killed with. *
- [ks] = your health at the moment you killed the last player. *
- [n] = your name.
- [p] = last teammate you pointed at.
- [s] = your health.
- [t] = your current ammo.
- [w] = your current weapon.
- [l] = your current location (coordinates).
- [ln] = your current location (location name).
(* = on shrub it requires g_logoptions bitflag 1 off, see explanation below)
It's possible to disallow WhaleClient to scan for textshortcuts in your text:
cg_noCustomVoiceChat (default: 0) is a bitflag variable with the following properties: (add up the values to disable multiple features)
- 1 - Don't use text shortcuts in your chat messages.
- 2 - Don't use text shortcuts in your voicechat messages.
- 4 - Don't use text shortcuts in your echo/cpm messages.
NOTE:
You'll have to use "/say " command if you want to use text shortcuts directly via the console.

Obituary text
Version Added: 1.2
Documentation last modified: Oct 13, 2005

For this feature to work, client side obituary messages must be enabled on the server (see here for more info).
cg_killsdisplay (default: 0) is a bitflag variable with the following properties:
- 1 - Puts the obituary (kill) messages at the bottom of the screen (in the teamchat) instead of at the left side. This has the same effect as g_logoptions 1 bitflag for Shrub/etpub.
- 2 - Display team kill weapons in the obituary (kill) messages.

Killingspree's, Multikills and Deathsprees
Version Added: 1.2
Last Modified: 1.4 beta 1
Documentation last modified: Oct 14, 2005

For this feature to work, client side obituary messages must be enabled on the server (see here for more info).
cg_killingspree (default: 7) is a bitflag variable with the following properties: can be set to add killing spree messages and multikills messages:
- 1 - Enables killing spree messages (at every 5 kills without dieing, up to 30 kills ("Wicked Sick")).
Note: Shrub's Goomba kills are not seen as kills nor deaths for the killing spree counter.
- 2 - Enables multikill messages (if you kill players within 3 seconds after eachother, up to 7 kills ("Holy shit!")).
- 4 - Enables Deathspree ("bad day") messages (at every 5 deaths without killing anyone, up to 25 deaths).
cg_killingspreePos (default: 0) defines the position where killing spree and death spree messages are placed:
- 0 - Server prefered position (when using serverside spree messages else it defaults to the popup message area).
- 1 - Always in the popup message area (left side of the screen).
- 2 - Always in centerprint on the screen.
- 3 - Always in the chat area on the bottom of the screen.
Note: Client Multikill messages are always centerprinted under the kill message.
cg_Announcersounds (default: 3)
- 0 - Disable all announcer sounds
- 1 - Enable "Fight"/"Ready" sounds
- 2 - Killingspree/Multikill sounds
- 3 - Fight/Ready + Killingspree/Multikill sounds
- 4 - Global Killingspree sounds, also plays the killingspree sounds when another player gets a killing spree.
- 5 - Fight/Ready + Global Killingspree sounds
Added First Blood message on the first kill of the map.
Added Goatsounds: If you kill someone with a knife both the killer and killed player hear a goat sound (like in ETpro).
Killingspree and Deathsprees can also be created serverside while still fully controlable clientside (with the cg_killingspree, cg_killingspreePos and cg_announcersounds cvars). More info on how to make this work here.

Location Names
Version Added: 1.4 beta 1
Documentation last modified: Oct 14, 2005

Location names for your location and people in the same area ("in PVS") can be displayed in the fireteam window and (fire)team voicechat, but NOT in normal teamchat.
This feature uses etpro location files to display these names when a player is near certain predefined location points, some newer maps already include these files but most older maps don't.
The location files for the 6 standard maps are included in WhaleClient, location files for other maps can be downloaded off the internet or you can make them yourself.
Location names are controlled by the bitflagged cvar cg_locationMode (default: 1):
- 0 - Don't show location names in the fireteam window, so loaction names display in team voicechat only.
- 1 - Show location names if available.
- 2 - Always use coordinates only.
- 4 - Don't use PVS checking (checks if the nearest location point is in the same area, if not don't use it). Recommended not to set this.
cg_locationMaxChars (default: 25) - maximum number of location name characters shown in the fireteam window.
cg_locationJustify (default: 0) controls how location names are printed in the fireteam window and the fireteam window size.
- -1 - align left and fixed window size (controlled by cg_locationMaxChars)
- 0 - window size is determined by the longest location name. (default)
- 1 - align right and fixed window size (controlled by cg_locationMaxChars)
Note: In case you're wondering why not all the locations of your fireteam members are shown and why there are no locations for non-voicechat messages:
The answer is that it's impossible for a client only mod (like WhaleClient) to do that because it only gets 2D coordinates for each player from the server. To get 3D coordinates so location names can be generated, a small change in the serverside code is neciserly.

Creating/debugging location files
You can use the following commands to create/debug location names:
- loc_add [location_name]
  Creates a new location at your current position with the specified name.
- loc_del (location_number)
  Deletes the closest location, if a number is specified then it will delete the location with that index number from the loc_list (loc_list will rearrange after deleting)
- loc_rename [location_name]
  Renames the closest location to the specified name.
- loc_load (filename)
  Loads locations from file, if a filename is specified it will load that file instead.
- loc_save (filename)
  Saves locations to file "maps/[mapname]_loc_override.dat", if a filename is specified it will save to "maps/[filename].dat"
- loc_clear
  Clears all the locations in the memory.
- loc_show (location_number)
  Will print the closest location to the console, if a number is specified then it will show the location with that index number from the loc_list.
- loc_list
  Prints all locations in memory to the console.
Added cg_debuglocations (0) (cheat protected) for debuging locations:
- 1 - show dots floating in the air at location points.
- 2 - dynamic light from location points (some might not show up because of the dynamic light maximum).
- 4 - shows the location names floating in the air at location points.

Disable fireteam invitations
Version Added: 1.1
Documentation last modified: Feb 13, 2005

Fireteam invitations can be disabled with the bitflagged cg_nofireteam cvar (default: 0). Add up the desired features and set cg_nofireteam appropriately to enable them:

> 1 - It won't ask you to create a fireteam anymore when you join a team.
> 2 - Disable invitations to join a fireteam. It automatically votes "no" with no voting popup text.

Advanced Scripting support
Version Added: 1.3test2
Last Modified: 1.4 beta 1
Documentation last modified: Oct 14, 2005

Client auto map scripts:
When a map loads or restarts, the client will look for the following scripts and run them if found:
autoexec_(mapname).cfg
autoexec_default.cfg
For example if the map rotates to battery, the client would look for autoexec_battery.cfg and run it. If autoexec_battery.cfg is not found, it would try to run autoexec_default.cfg instead.
Client auto team scripts:
When players spawn with a changed team, the client will run one of the following scripts according to the team they changed to:
autoexec_axis.cfg
autoexec_allies.cfg
autoexec_spectator.cfg
Client auto class scripts:
When players spawn with a changed class, the client will run one of the following scripts according to the class they changed to:
autoexec_soldier.cfg
autoexec_medic.cfg
autoexec_engineer.cfg
autoexec_fieldops.cfg
autoexec_covertops.cfg
Client class change commands for class change scripts:
The command "nextclass" can be used to change the class, just like etpro's "class" command:
(Shrubet also has a "class" command but the weaponslot numbers are a little different.)
Syntax: nextclass [class] (main weapon slot) (secundairy weapon slot)
with:
[class] = soldier/medic/engineer/fieldops/covertops or shorter s/m/e/f/c
(main weapon slot) = optional weaponslot number (like in the limbo menu), should be self-explainary.
(secundairy weapon slot) = optional secundairy weaponslot number, also self-explainary.
Client latched team change commands for team/class change scripts:
The command "nextteam" can be used to change your team after the nextclass has been chosen.
Examples of the nextteam and nextclass commands can be seen in the teamclass selection menu file.
Partial spawnpoint name support for more readable spawnpoint scripts
The command "setspawnpt" can take a (partial) spawnpoint name match (shown over the flag when in the limbo menu) as parameter for easier spawnpoint selection scripting.
For example: set setspawnpt "Axis" in the fueldump map selects the "Axis Fuel Dump" spawnpoint (spawnpoint number 2).

Client Chatcommands
Version Added: 1.1
Last Modified: 1.3 test2
Documentation last modified: May 20, 2005

New shrub chat commands added:

- !whaleclient : Shows the Whaleclient version
- !flipcoin (number) : Randomly chooses between head and tail. If you add a number as parameter it return a number between 0 and that number.
- !localtime : Shows the player's local time.
- !listmaps : Lists the maps in the current campaign plus their completion status (yellow=current, red=axis won, blue=allies won).
- !beer [partialname] (reason) : Gives a player matching the partial name a beer. (Partial name must match exactly 1 player)
- !coffee [partialname] (reason) : Gives a player matching the partial name a cup of coffee. (Partial name must match exactly 1 player)
- !cookie [partialname] (reason) : Gives a player matching the partial name a cookie. (Partial name must match exactly 1 player)
- !pizza [partialname] (pizza filling) : Gives a player matching the partial name a pizza. (Partial name must match exactly 1 player)
- !help (command without the "!") : Shows help for the specified command.

By typing commands /!whaleclient, /!flipcoin, /!localtime, /!listmaps or /!help in the console, they will be returned only to yourself.
Chat commands can be disabled with the cg_noChatCommands (0) cvar.

ETpub specific features/changes
Version Added: 1.3 test2
Last Modified: 1.4 beta 1
Documentation last modified: Oct 14, 2005

WhaleClient changes added for ETpub only
Integrated most of the Etpub_client (version 20050927) in WhaleClient:
- Dropped throwing knifes and binoculars display correctly (weapon scripts included) **
- Clientside part of the b_realhead code added **
- g_staminarecharge works (didn't work in etpub-client 20050927) **
Not yet supported: (but will most likely be in the next beta version)
- Custom Hud scripts
- "hidevote" command
- Etpro mapscripts work properly with the client. *
- ForceCvar (serverside command) is now supported and also enhanced: *

- You can use Forcecvar in two ways:

- The etpro way: The cvar is changed (if needed) but players can change it back right away (if not cheat protected).
Syntax: forcecvar "[cvar]" "[value/range]"
- The etpub way: The cvar is changed (if needed) and then locked (made read-only) so players can't change it until they restart their ET.
Syntax: forcecvar "*[cvar]" "[value/range]"

- You can now specify cvar ranges, with 10 different range types:

- EQ: used when a cvar is supposed to be equal to a [value]. If not it changes the value it [value]. This is the default handeling.
Syntax: forcecvar "[cvar]" "EQ [value]"
- NE: used when a cvar is supposed to be not equal to a [value]. You can optionally select a (default) value to change to. If there is no default value specified it will change the cvar to a empty string, ("").
Syntax: forcecvar "[cvar]" "NE [value] (default)"
- LE: used when a cvar is supposed to be less or equal then a [value]. If not it changes the value it [value].
Syntax: forcecvar "[cvar]" "LE [value]"
- GE: used when a cvar is supposed to be greater or equal then a [value]. If not it changes the value it [value].
Syntax: forcecvar "[cvar]" "GE [value]"
- IN: used when a cvar is supposed to be inside a value range, the value must be greater or equal to [value1] and less or equal to [value2], if not it's snapped to the nearest value.
Syntax: forcecvar "[cvar]" "IN [value1] [value2]"
- OUT: used when a cvar is supposed to be outside a value range, the value must be less or equal to [value1] and greater or equal to [value2], if not it's snapped to the nearest value.
Syntax: forcecvar "[cvar]" "OUT [value1] [value2]"
- INCLUDE: used when a cvar is supposed to include a certain [substring] (case and color insensitive), if not it's set to [default]. [default] must also include the [substring].
Syntax: forcecvar "[cvar]" "INCLUDE [substring] [default]"
- EXCLUDE: used when a cvar is supposed to not include a certain [substring] (case and color insensitive), if not it's set to [default]. [default] must also not include the [substring].
Syntax: forcecvar "[cvar]" "EXCLUDE [substring] [default]"
- WITHBITS: used when a bitflagged-cvar is supposed to include a certain bitflag
Syntax: forcecvar "[cvar]" "WITHBITS [bitflag]"
- WITHOUTBITS: used when a bitflagged-cvar is supposed to not include a certain bitflag
Syntax: forcecvar "[cvar]" "WITHOUTBITS [bitflag]"
NOTE: the quotes around the value type and ranges are important or etpub will not reconize the forcecvar command cause it needs exactly 2 parameters.

- If latched cvars are changed it will force a vid_restart after changing the value, so forcecvar now works properly for cvars like r_mapoverbrightbits.
A few forcecvar examples:
- forcecvar cg_atmosphericEffects "EQ 0" //(changes cg_atmosphericEffects to 0, but players can change it back to 1 if they want to)
- forcecvar r_drawfoliage "EQ 0" //(changes r_drawfoliage to 0 for all players, players can't change it back during the map because it's cheat protected)
- forcecvar *r_mapoverbrightbits "LE 2" //(changes r_mapoverbrightbits to 2 if it's higher, locks it and does a vid_restart)
- forcecvar *cg_fov "IN 90 120" //(changes cg_fov to a value inside the range 90 to 120 and locks it)
- forcecvar *name "EXCLUDE teammate ^3Happy ^4Bunny" //(changes everyones name that includes the string "teammate" to "Happy Bunny"(colored), all players names are locked and can't be changed afterwards until ET restarts)
- forcecvar cg_killingspree "WITHBITS 2" //(forces everyone to have cg_killingspree include bitflag 2 (multikills), players can put it back off)
- forcecvar cg_killingspree "WITHOUTBITS 1" //(forces everyone to have cg_killingspree not include bitflag 1 (killingsprees), players can put it back on)

- Added cg_backupForceCvar (default: 1) which makes a backup of your etconfig in your profiles folder when a cvar is forced (once a day). *
- The cvar cg_debugHitboxes (0) is a cheat protected cvar to toggle etpub's hitbox debugging.
- Playdead no longer shows the respawn message.
- Added the new etpub vote options to the vote menu.
- Fear and Goomba kill messages are shown.
- The command "altweap" (default mouse button 2) now throws a knife when the knife is selected (if available) **
- Throwing Knife kill message added **
- Players can choose between WhaleClient (cg_hitsounds 1) and Etpub (cg_hitsounds 2) hitsounds.
- Server settings "sv_wcflags" and "sv_wcsettings" can now also be set using forcecvar. (See Server Settings section) *
* = needs etpub 0.5.1 or higher installed on the server.
** = needs etpub 0.6.0 or higher installed on the server.

HUD Changes
Version Added: 1.3 test1
Last Modified: 1.4 beta 1
Documentation last modified: Oct 14, 2005

Hud Changes:
- Added etpro's althud's, controlled with cg_altHud (0) (possible: 0, 1 or 2).
- Added the bitflagged cg_altHudFlags (0) to customize certain parts of the althud:

- 1 - Moves the round timer into the hud.
- 2 - Removes the display of ranks in the hud.
- 4 - Moves the popup messages to the top left and the fireteam window to top right.

- Added a helmet icon (on althuds 1 and 2), indicating if you still have a helmet.
- Added cg_hudyoffset (0) can push the hud up (or down), usefull for clearing the demorecord status line out of the hud (on 2.55/2.56)
Setting cg_hudyoffset to -1, automatically pushes the hud up when recording and down when finished (for playing on ET 2.56/2.55). (Don't use "/record" and "/stoprecord" or it can go out of sync).
- Vote and descriptive text is now smaller, the scale is controlled by the cg_textScale(0.8) cvar. Setting cg_textScale 1.0 gives the etmain text size.
- cg_chatFlags (0) toggles chatflags, for showing the team of the player sending a chatmessage.
- cg_chatSounds (0) toggles chatsounds, a sound played when a chat message is displayed.
- cg_drawWeaponIconflash 2, displays your current weapon state (firing, reloading, switching or ready) on the weaponicon in the hud.
- cg_showfps 2 shows averaged fps over 1 second and cg_showfps 3 shows the time between frames in milliseconds (like in ETpro).
- cg_fireteamalpha (1.0) for partially making the fireteam window invisible.
- Fireteam members awaiting to be revived are displayed with blinking health in the fireteam window.
- cg_chatAlpha (0.33) for partially making chat background invisible.
- cg_numPopups (-1) Defines the number of popups, the value -1 displays 5 popups on large popup font and 8 popups when using small popups.
- cg_popupTime (1000) sets the popup display delay (in ms).
- cg_popupStayTime (2000) sets how long (in ms) popupmessages (connecting/kills/etc. messages on the left side of the screen) are shown.
- cg_popupFadeTime (2500) sets how long (in ms) a popupmessage fades from the screen.
- cg_drawClock (0) for displaying the current time on screen. cg_drawclock 2 draws the time in AM/PM timescale.
- cg_drawSpeed (0) for displaying your current speed of movement:
  Setting cg_drawspeed "***" (* = a variable number) can change the manner of display:

- The type: Normal speed (1**), Horizontal speed only (2**), Vertical speed only (3**)
- The scale: Units per Second (*0*), Miles per hour (*1*), Kilometers per hour (*2*)
- Display maxspeed: no (**0), yes (**1)

- cg_speedinterval (100) is the number of milliseconds between a cg_drawspeed update.
You can reset the maxspeed with the command "resetmaxspeed" with the parameter A(ll)/N(ormal)/H(orizontal)/V(ertical).
- Added shaded compass icons, controlled ingame with cg_compassIcons (1) cvar. Shaded icons will never stick (partially) out of the compass, but you'll need the etpro shader files for every custom compass icon (a whole load are already supplied with WhaleClient, see WhaleClient_CompassShaders.pk3).
- cg_compassIcons 0 : standard etmain setting (no shaders)
- cg_compassIcons 1 : ETpro setting, shaded icons (needs the compassShaders.pk3 file)
- cg_compassIcons 2 : unshaded smaller icons
- cg_compassIcons 3 : shaded smaller icons (needs the compassShaders.pk3 file)
- Compass now shows disguised team members and objective carrier.
- The cvar cg_mapZoom (5.159) changes the compass zoomlevel.

Scoreboard Changes
Version Added: 1.3 test1
Last Modified: 1.3 test2
Documentation last modified: Apr 24, 2005

ScoreBoard Changes:
- Scoreboard medal letters behind your name are removed.
- Scoreboard now shows disguised team members.
- Scoreboard limited lives counter removed when server is not on limited lives.
- Scoreboard can show slightly longer names.
- Scoreboard shows connecting status, also shows 999 pings red.
- Scoreboard shows the XP and Ping of spectators.
- Scoreboard shows average Pings and XP of the players per team.

Spectator Changes
Version Added: 1.3 test1
Last Modified: 1.4 beta 1
Documentation last modified: Oct 14, 2005

Spectator Changes:
- You can open voicechat menu as spectator. (You can't do teamvoicechats as spectator).
- Spectators in following view can see the spectated team's landmines. They can't see landmines when in freeview.
- Referee's can see all landmines while being spectator.
- Pressing mouse2 ("altweap" bind) when your a spectator in follow mode selects the previous player.
- Spectators can have a compass and automap.
- Spectators can see player/vehicle-names while in freespec (but NOT the health).
- Spectators can't see the respawn time counter.
- "Spectator" text now on top of the screen (was placed down below obstructing the chatmessages)
- Descriptive spectator text is now smaller (like in etpro).
- When spectating players it now indicates their team.
- Spectating referee's can see player names floating above all players.

Small Features & things not needing much elaboration and I couldn't fit anywhere else
Version Added: 1.0
Last Modified: 1.4 beta 1
Documentation last modified: Jun 15, 2005

> - Gib chunks will now spawn when a player explodes. This can be toggled with the cg_gibs (1) cvar.
> - The cvar cg_drawRanks (1) toggles drawing the ranks in front of names.
> - The bitflagged cvar cg_noMuzzelFlash (0) can be used to remove muzzle flash:
> - 1 - don't display a flash sprite out of your gun when you're firing.
> - 2 - don't display dynamic light flash when you're firing.
> - Popupsmessages starting with [skipnotify] are only displayed into the console, not onscreen, like it was intended to be. Can be used to remove punkbuster status messages off your screen by setting it in the pb_msgprefix cvar.
> - The sound played when a satchel and landmine bounces on the ground is now different than the dynamite bounce sound.
> - Mousebutton 2 ("weapalt" bind) reloads your weapon if it doesn't have a weapon altfire (like in ETpro). The cvar cg_weapaltReloads (1) toggles this feature on/off.
> - Level 4 HW soldiers can put their secondary SMG in weaponbank 2. Can be toggled with the cg_panzerhack cvar (default: (1) = in bank 2).
> - When level 4 HW soldier after firing panzer, your weapon switches to SMG instead of grenade.
> - After detonating a satchel, your weapon switches to your main weapon instead of back to satchel.
> - After throwing a Smoke bomb, your weapon switches to your main weapon instead of the pistol(s).
> - Your able to view around with the mouse when playing dead (shrub only). (2.60 patch)
> - Added a lot of new kill/suicide messages. (even more than already added in the 2.60 patch)
> - Added cg_covertIcons (1) toggles displaying an icon above friendly covertops in disguise.
> - Clientside banner printing support (needs a serversided mod which supports "bp"), bannerprints are messages displayed at the top of the screen.
> - Centerprints with a * as the first character are displayed as bannerprint (this first * char isn't displayed)
> - "\n" in center and bannerprints are seen as newlines.
> - Crosshairnames are now in full color. They can be displayed in normal white by setting cg_drawCrosshairNames 2
> - Send message text is carried over into the intermission menu text.
> - cg_autoaction bitflag 8: autorecords demo's on stopwatch matches only.
> - colors in centerprint and bannerprint messages are saved over newlines. (check your server banners, some colors might be different)
> - The "autorecord" command (default binded to F12) will now toggle demorecording on/off. Don't use "/record" and "/stoprecord" anymore.
> - The command "stopsounds" stops all currently playing sounds (usefull for stopping !news or long voicechat spam).
> - The command "teammenu" opens the Team-changing menu like in ETpro. It also has a spawn selector.
> - The command "classmenu" opens the Class-changing menu like in ETpro.
> - The command "+obj" opens a Objective display popup, which displays all objectives and current status (in color).
> UI:
> - Added new WhaleClient menu's.
> - Added new serverbrowser filter for displaying specific mods only.
> - Added new serverbrowser filter for findng servers with a (partial) servername match. Usefull for finding a clanserver (filter on clantag) or specific features like "xpsave".
> - The command "listmaps" will give you the list of maps you have when you're not connected to a server.
> - The replay menu (in ET version 2.60) shows both the dm_83 and dm_84 files.
> - The replay menu can now show up to 512 demo's (instead of 256).
> - The replay menu window enlarged.
> - Show [bindname] instead of (???) for missing binds.
> - Mouse scrollwheel now work for yes/no, multi, checkbox, slider menu widgets.
> - Added stoprefresh button to the "Play Online" menu (or as quickbutton use the "R" button).
> - It now shows the mod and version of the server when connecting to a server.

Custom quick menu's
Version Added: 1.1
Last Modified: 1.3test2
Documentation last modified: May 20, 2005

With Whaleclient it's possible to add your own new quickmenu's just like the voicechat menu. This is useful for example if you want to make your own voicechat menu or your own team/class selector menu's.
Detailed information how to make a menu can be found on various ET websites or look at the normal menu scripts to see how the normal voicechat menu is done as an example.
You can open custom menu's with the openmenu [menuname] command. The parameter [menuname] is the name of the menufile and name the first menu to be opened in the file minus the "wm_" prefix. A custommenu file must start with the "wm_" prefix and must be located in the ui folder packed in a pk3 file. So for example the command "openmenu voicechat" tries to load the "ui/wm_voicechat.menu" file and if found it tries to open the menu named "wm_voicechat" inside.
Important note: There is a maximum number of menu's that can be loaded at a time.

Bugfixes and optimalisations
Version Added: 1.0
Last Modified: 1.4 beta 1
Documentation last modified: Oct 14, 2005

Etmain bugfixes:
- Fixed: client often didn't load all the campaigns, which resulted in map icons and campaign status not showing for certain campaigns.
- Fixed a crash issue in the UI hostgame menu when a campaign had more then 10 maps.
- Fixed and optimized the binding via menu system.
- Third person view in mounted tank was bugged.
- Third person view when on a crew-served MG was too close.
- Background images on the loading screen were not visible on the first call.
- Fixed a issue with the hostgame menu's map/campaign list changing the selected map when switching menu's.
- Fixed primed dynamites/grenades not ticking when scoreboard was up or with cg_draw2d off.
- Fixed syringes, pliers and adrenaline no longer "tick" underwater if they can be used.
- Fixed dynamic light when firing the tankgun was missing.
- Fixed changing name in the menu used to flood namechange messages (and kick if the server has set a maximum name change value).
- Fixed fireteam delta's fireteam indicator sprite didn't show.
- Lowered the position of most centerprint text a bit on the screen so they don't interfere with the popup messages.
- Fixed configstrings command exploit.
- Sniper and centerview scripts defeated (+lookup/+lookdown no longer work).
- Fixed bug which caused players with spaces in their name to not be able to use !whaleclient commands.
- Fixed a bug in WhaleClient's server version detector identifying incorrect versions.
- Fixed spectators hearing landmine spotted announcements when following the other team.
- Fixed disguised icon in the hud not showing on LMS mode.
- Fixed crosshair names disappear when pointing over constructables.
- Fixed etmain bug which let you detect disguised enemy coverts from afar.
Identifying disguised coverts should now be harder though.
- Fixed spawnflag text in the automap could go outside the window and be unreadable.
- Fixed text in the loading screen sometimes got outside of the map.
- Fixed using flamethrower when moving prone with cg_drawgun 0.
- Fixed cg_noVoiceText 0 not showing the HQ objective text.
- Fixed colors don't count to the maxline width of centerprints and bannerprints.
- Fixed objective icon on the scoreboard showing incorrectly with many players on the server.
- Fixed scoreboard lines showing up incorrectly with many players on the server.
- Fixed duplicate players on the scoreboard (clientside workaround).
- Fixed medals display in +stats popup.
- Fixed incorrect mini-ranknames for teams.
- Fixed showing respawn message when playing dead in etpub.
- Fixed cg_bobup exploit.
- Fixed some animations (climbing and crouching+knife).
- Fixed helmet ranks were overbright (giving light in the dark).
- Fixed goldrush bank floor was unshaded (thanks ETpro team).
- Fixed minor oasis speaker bug (a cricket ;) ) (thanks ETpro team).
- Removed unused client cvars.
- Lowered voicechat/objective icons over head when prone.
- Fixed getting forced to spectator after map loads in a few cases (etmain bug)
- Automaticly get the right secundairy weapons after gaining level 4 light/heavy weapons
- Fixed dropped weapon display bugs on unpatched servers. WhaleClient can be run correctly on both patched(1.02/2.56) and unpatched servers(1.01/2.55).
- Voicechats give the same sound and text for every player. (It used to be different for every player).
- Connecting players show as connecting on the scoreboard and 999 pingers show up red.
- Fixed the scoreboard always displaying skulls after a player switched teams.
- Fixed cg_drawfireteamoverlay 0
- Fixed Pressing cancel in the limbo menu displayed a wrong class/weapon selection message.
- Fixed Cancel button in the limbo menu was working incorrectly.
- The vote "RESPONSE SEND" messages are now displayed only 3 seconds, not 10 seconds anymore.
- Maplists in "Hostgame" and "vote/referee->map" menu's show more maps (up to 1024 maps). You might notice a small slowdown when opening those menu's.
- Optimized prediction: should increase FPS a lot in most cases, especially when having a higher ping.
  Can still be toggled on/off with cg_OptimizePrediction (default 1 = on).
- Fixed debriefing map names on long campaigns being drawn through other text (it now has a nice slider).
- Fixed: Possibly some kills wouldn't get handled and displayed.
- Fixed: reinforcement time was not drawn when timelimit less then 0 seconds (eg sudden death on dual obj map).
- Fixed: slider thumb 'jumping' could lead to out of range values.
- Fixed: demorecord autoaction wasn't working properly.
- Fixed (hopefully): vote messages sometimes got stuck on your screen.
Bugs fixed from the last WhaleClient (version 1.3):
- Spectators sometimes are not shown the scoreboard on servers with a lot of players.
- Fixed a case where a killing spree message was still shown even when killingsprees were turned off.
- Fixed a typo in the welcome message. (thanks L3nny)
- First blood messages no longer accure when joining in the middle of a map.
- !listmaps sometimes returned incorrect (if map/campaign file couldn't be loaded).
- The number of lives left counter is now smaller (fixes popups messages displaying through the live counter).
- Thirdperson mode didn't work anymore in demo playback.
- sv_wcsettings bitflag 2 now actually works..

Serverside settings
Version Added: 1.2
Last Modified: 1.4 beta 1
Documentation last modified: Oct 14, 2005

Here are a few server sided settings that allows server admins to restrict WhaleClient features:
These (server) cvars have to be added to the serverinfo with the "sets" command.
For example: add this line to the server.cfg to enable serverside killing and death sprees (16+32=48):
- sets sv_wcflags "48"
Alternatively if your server runs ETpub you can forcecvar this cvar by adding it to your default.cfg (see etpub docs how to make one).
For example:
- forcecvar sv_wcflags "48"

- Restrict certain WhaleClient added features:
sv_wcflags is a bitflagged value:

- 1 - Client hitsounds can't be used on this server.
- 2 - No client text shortcuts can be used.
- 4 - Whaleclient '!'shrub messages can't be used on this server (like !beer, !whaleclient, !flipcoin, etc).
- 8 - Serverside Killingspree message checking (disables client killingspree messages)
- 16 - Serverside Multikill message checking (disables client multikill messages)
- 32 - Serverside Deathspree message checking (disables client deathspree messages)

Note: See the Server Killingspree Strings section below for more info on how to set up serverside killing-, multikill and death sprees, so WhaleClient can correctly indentify them and play it's sound.
- The sv_wcsettings serverinfo setting forces clients to use the predefined settings:
Syntax: sv_wcsettings [#] ,with [#] is a bitflagged value:

- 1 - Force not drawing foliage (e.g. grass on radar).
- 2 - Force everyone into thirdperson mode, so you can play ET as a 3rd Person Shooter. (NOTE: this can be used even when the server has punkbuster enabled.)

- Finally you can disallow people using WhaleClient to connect to your server at all (usefull if you have a unpure server and you don't want people to use WhaleClient):
  sets sv_wckick "1" or sets sv_wckick "[KickReasonText]" to specify a reason.

Server Killingspree Strings
Version Added: 1.4 beta 1
Documentation last modified: Oct 14, 2005

With ETpub and ETadmin_mod serveradmins can enable serverside generated killing-,multikill and deathspree messages.
WhaleClient can be made to play sounds with those messages and still enable clients to select the display position, how and if sounds are played or disable them altogether, just like if they generated by WhaleClient.
Because serveradmins can change the messages and their display position on the screen in the config file the sounds may not work if the server uses custom spree messages.
To get the sounds to work the messages must contain the following strings, case- and color code- insensitive:

Sound: | String check:
Killingsprees
Killing spree | "a killing spree"
Rampage | "rampage"
Dominating | "dominating"
Unstoppable | "unstoppable"
Godlike | "godlike"
Wicked Sick | "wicked sick"
Multi kills
Double kill | "double kill"
Multikill | "multikill"
Ultra kill | "ultra kill"
M M M Monsterkill | "monsterkill"
Ludicrous kill | "ludicrous"
Holy shit | "holy shit"
Death sprees
Death spree (no sound) | "a bad day"

These server spree messages must be sent as centerprint ("cp"), chat ("chat"/"qsay") or as popup message ("cpm"/"cpmsay") to get properly detected by WhaleClient.

How to enable client-side obituary messages on my server?

Defaultly obituary messages are already made client-side, however in some mods like etpub and shrubet serveradmins can set obituary messages to be made serverside. This interferes with a few WhaleClient features, plus it can cause more lag because larger messages are send over the network.
It is therefor recommended to set this off:
For etpub servers (etpub version 0.5.1 or higher):
The server must have set "g_obituary" to "1" (g_obituary 1) for the following features to work (properly).
For shrubet servers:
The server must have set "g_logoptions" to not include bitflag 1 (thus meaning: g_logoptions must be even) for the following features to work:
(g_logoptions bitflag 1 = Move kill and team change messages to the bottom of the clients' screens.)
Note:You can still move these messages to the chat box with the cg_killsdisplay cvar (see below).
These features will work on every etmain server and most other mods.

Back to top
WhaleClient documentation - © 2005 KillerWhale