Nemesis Client v2.0.11

1.16n client and server mod
http://www.q3nemesis.com

Developed by Cyrus and Wonkey
cyrus@q3nemesis.com
wonkey@q3nemesis.com


Contents

Overview

The latest version of this document is always available at http://www.q3nemesis.com/docs/client-readme.html, please use it whenever possible.

Nemesis Client is a client side modification for Quake 3 Arena that can be used to play on almost any 1.16n servers. It was inspired by the developers playing the 1.32 point release and realizing the 1.16n community was missing out on so many client side features. If the client is used on a Nemesis server it provides more features than are possible on other servers.

A brief summary of the features (and if they are specific to Nemesis servers) can be found below, while more detailed descriptions and screenshots (where appropriate) can be found later on.

Installation

If you have any previous versions of this mod installed please delete them before installing this new one

The mod is distributed as zip file, which you must have already unzipped to locate this readme file. As well as this file you will find zzz-nemesis-core-X-Y-Z.pk3 (X, Y and Z represent the release version) and zzz-nemesis-models.pk3. These two files need to be placed inside your baseq3 directory of your Quake 3 installation. Placing them in baseq3 will make the mod available whatever server you choose to play on.

Alternatively you can place the two pk3 files inside a mod folder, i.e. inside your NoGhost directory of your Quake 3 installation.

If you have multiple client mods in a directory there is no guarantee that Nemesis will work correctly. We suggest you remove zzz-models, NoGhost client, osp client or anything else which offers similar functionality to Nemesis. There is no need to remove custom maps or model files as these will not affect Nemesis.

What's New?

Description of changes between releases.

2.0.11

  • Changed cg_specialEffects spark removal to work for grenade and rocket explosions.
  • Enabled damage given client statistic for all game types except freezetag.
  • New tournament (1v1) scoreboard with head and animation speeds changing based on scores
  • Fixed promode detection on non Nemesis servers.
  • Initial version of IP to country lookups using the \iplookup IP command.
  • Win/lose voice for tournament (1v1) gametypes.
  • Fixed bug sending timenudge and max packets to Nemesis servers

2.0.10

  • Fixed bug where stats did not clear in 1v1 games
  • Fixed missing grapple model
  • Toggle for the Special Graphics Effects introduced at 2.0.8

2.0.8

  • Integration with Nemesis server mod (can still be used with any server mod, as always)
  • Ability to Filter Chat Messages via cg_chatMode
  • Turn off Projectile Trails (i.e. rocket smoke)
  • 1.32 style Score Plums
  • Ported various weapon and underwater effects from z-effects
  • Added Client Statistics Window showing weapon accuracy, kills, deaths and pickups.
  • Level timer turns yellow when 2 mins or less is reminaing

1.5.0

  • Ability to Remove Chat Beep with cg_noChatBeep cvar
  • Auto Announce of picked up items via cg_autoAnnounce cvar
  • Added say_leet command
  • Removed hard coded speed of 320 for cg_drawSpeedBar so it now uses 40% increase for amber and 90% increase for red
  • Ability to Remove Friend Shader (small yellow triangles above head) with cg_noFriendShader cvar
  • Ability to Remove Connection Interrupted Shader with cg_noConnectionShader cvar
  • Turn on/off Iceshells for Frozen Bodies using cg_iceShells cvar
  • Reworte /chelp command to provide more up to date documentation and allow a client to type /chelp <COMMAND> to get details about a specific command.
  • Addition of cg_specEnemyModel so you can choose if you want to use the enemy model whilst in spectator mode
  • Start of UI work to change some basic Nemesis settings

Feature Description

An indepth discussion of the features, with examples.

Coloring

Some commands require the user to specify a color. To provide the most flexibility colors can be specified in one of three ways.

Using the color string; red, green, yellow, blue, cyan, magenta, white, orange, black, ltgrey, mdgrey or dkgrey.

Using the numerical color value as used to colorise name; 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 or 12 (these follow the same order as the above color strings so 2 is green).

Using a hexadecimal string of the format 0xRRGGBB. RR represents the red component, GG the green and BB the blue. Google will provide explanations of what hexadecimal means, but a hexadecimal color chart can be found in Appendix A.

Enemy Model / Enemy Color

Enemy coloring is related to the choice of enemy model as you can only colorise the special skins we have created in the zzz-nemesis-models.pk3.

Enemy model is changed using the cvar cg_enemyModel. Valid values are any of the standard Quake 3 models or any custom models you have loaded. E.g.

cg_enemyModel keel
cg_enemyModel tankjr

We suggest using a large, heavy (therefore noisey) model for the enemy as the point of being able to choose is so you can hear them easily.

To be able to use enemy coloring you must select the enemy model with the nms skin. E.g.

cg_enemyModel keel/nms
cg_enemyModel tankjr/nms

When in spectator mode you can choose whether the players ingame use the value you've specified in cg_enemyModel or the players chosen model using cg_specEnemyModel

cg_specEnemyModel 0 use players chosen model
cg_specEnemyModel 1 use enemy model

Custom models will hardly ever come with a colorable skin, so if you choose to use a custom model for the enemy you can not color it.

Enemy color is changed using the cvar cg_enemyColor. Valid values are any of the coloring techniques described in the previous section. E.g.

cg_enemyColor green
cg_enemyColor 2
cg_enemyColor 0x00ff00

You can also specify different colors for the head, torso, legs and rail shots of your enemies. Using the separator "-" you can do the following.

cg_enemyColor red-green-yellow-green
cg_enemyColor 3-2-5-1
cg_enemyColor 0xdd2256-2-green-4

The values represent head, torso, legs and rail color in that order. If you provide less than 4 values the unknown ones will use the value provided for head color (which is why you only need to set 1 value if you want the same color for everything).

After setting an enemy model you can disable it again by resetting it to the empty string. E.g.

cg_enemyModel ""

There is no corresponding team model command in Nemesis because the same results can be achieved by setting cg_forceModel to 1, making your team use the same model as you.

Crosshair Intensity / Color

Crosshair color is changed using the cvar cg_crosshairColor. Valid values are the same as cg_enemyColor values. You must make sure that cg_crossHairHealth is disabled in order for this feature to work. Although cg_crossHairHealth is disabled by default in Nemesis, make sure that its disabled in your config(s). Below are some examples.

cg_crosshairColor green
cg_crosshairColor 3
cg_crosshairColor 0xFF00FF

The transparency (opacity) of the crosshair can be changed using the cvar cg_crosshairAlpha. This will set how transparent your crosshair is. Valid values are 0.0 to 1.0.

cg_crosshairAlpha 1.0

OSP Style Scoreboard

The OSP style scoreboard is enabled by default in team games (sorry, but there isn't one for FFA or 1v1 games, yet!). It is configured using cg_scoreBoardType, which by default is set to 1. If you prefer the standard score boards set it back to 0.

cg_scoreBoardType 0 standard
cg_scoreBoardType 1 OSP style

Client Statistics

A new client statistics window has been added showing per weapon accuracy, per weapon kills/deaths and pickups. The window displays at the end of a map or can be toggled with the cstats command. Binding the command as follows will allow you to hold down the m key to display the window - releasing the m key hides the window again.

\bind m +cstats

All statistics are available, unless playing a game of freezetag in which damage given is replace with N/A (not available).

All statistics are calculated on the client side, which, although not as accurate as server side calculations, means the statistics are available on all servers regardless of mod.

CPMA Style HUD

CPMA style HUD is enabled or disabled using the cg_cpmaHud cvar.

cg_cpmaHud 0 standard HUD
cg_cpmaHud 1 CPMA HUD

Automatic End of Game Screenshots

If you like to screenshot the scoreboard at the end of a game you can enable this feature so you will never forget again! cg_autoScreenshot is used to enable and disable this feature.

cg_autoScreenshot 0 off
cg_autoScreenshot 1 on

Automatic Demo Recording

If you like to record your games because of clan matches or just to relive those frag moments you can do this automatically. Demos start when the warmup timer ends, so unless you enter a server while the warmup is counting down no demo will be recorded. Demos end when a map finished and the intermission is in progress. cg_autoRecord is used to enable and disable this feature.

cg_autoRecord 0 off
cg_autoRecord 1 on

Rail Trails

There are four styles of rail trail to choose from, controlled by the cg_railTrail cvar.

cg_railTrail 1 default
cg_railTrail 2 AF style
cg_railTrail 3 Old style
cg_railTrail 4 QF style

Player Speed

You can display your current player speed in u (game units) in the top right hand corner of the screen. Most servers default to 320 game speed so using this you can tell how well you are strafing. Good movers tend to hit speeds between 500 and 600u as they travel around maps searching for enemies. It is enabled and disabled using cg_drawSpeed.

cg_drawSpeed 0 off
cg_drawSpeed 1 on

Whilst concentrating on other things it is awkward to keep looking at your speed so a replacement bar can be used instead. cg_drawSpeedBar draws a small bar which is colorized green, amber or red depending on how fast you are traveling.

0 – (normal+40%) is green
(normal+40%) – (normal+90%) is amber
(normal+90%) or more is red

cg_drawSpeedBar 0 off
cg_drawSpeedBar 1 on

Team Crosshair Stats

In team games it is useful to be able to tell how much health and armor a team mate has left. cg_teamInfoType has 3 settings.

cg_teamInfoType 0 display name only
cg_teamInfoType 1 name, health & armor as text
cg_teamInfoType 2 name, health & armor using bars

Draw Accuracy

If you like to see how accurate you are you can use cg_drawAcc to display hit percentage in the top right hand corner of the screen.

cg_drawAcc 0 off
cg_drawAcc 1 on

Player Breath

In freeze games you can add to the atmosphere but drawing breath puffs on players. This is enabled and disabled using cg_enableBreath.

cg_enableBreath 0 off
cg_enableBreath 1 on

True Lightning

1.32 style true lightning so the lightning gun fires a direct beam.

cg_trueLightning 0 off
cg_trueLightning 1 on

Thaw Sound

A new thaw sound has been added for freeze games so you can have an ice shatter.

cg_thawSoundType 0 default
cg_thawSoundType 1 ice shatter

Team Icons

On the CPMA HUD you have the option of drawing team icons below the weapon info on the left hand side.

cg_useTeamIcons 0 no team icons
cg_useTeamIcons 1 draw team icons

No Chat Beep

Enable or disable the beep you get when someone types a messages.

cg_noChatBeep 0 standard beep
cg_noChatBeep 1 no beep

Filter Chat Messages

Filter chat messages so you see everything (default), only say_team and tell messages, or only tell messages

cg_chatMode 0 default (see everything)
cg_chatMode 1 only team chat and tell
cg_chatMode 2 only tell

No Friend Shader

Enable or disable the small triangle which appears over team mates heads when they are alive.

cg_noFriendShader 0 display shader
cg_noFriendShader 1 no shader

No Connection Interrupted Shader

Enable or disable the connection interrupted shader appearing over players head when they lag (particularly bad on delagged NoGhost servers).

cg_noConnectionShader 0 display shader
cg_noConnectionShader 1 no shader

No Projectile Trails

Enable or disable the weapon projectile trails (i.e. rocket smoke).

cg_noProjectileTrail 0 trails on
cg_noProjectileTrail 1 trails off

Score Plums

Enable or disable score plums. A score plum is a floating number that appears above an enemy when you kill them.

cg_scorePlum 0 score plums off
cg_scorePlum 1 score plums on

Special Graphics Effects

Enable or disable the extra visual effects.

cg_specialEffects 0 no effects
cg_specialEffects 1 sparks
cg_specialEffects 2 plasma trail
cg_specialEffects 3 sparks and plasma trail

Auto Announce

Automatically announce to your team mates (so it only works in team games!) certain items that you pickup, as though you typed /say_team Taken Red Armor in the console window.

cg_autoAnnounce 0 No auto announcing
cg_autoAnnounce X auto announce items based on 'X'

'X' is made up by combining the numbers of the items you want to auto annouce from the list below.

Yellow Armor 1
Red Armor 2
Mega Health 4
Holdable Teleporter 8
Medikit 16
Quad 32
Haste 64
Invisibility 128
Regeneration 256
Flight 512
Environmental Suit 1024

If you want to announce yellow and red armor you add their values together (1+2), then set cg_autoAnnounce 3
If you want to announce all items on the list set it to cg_autoAnnounce 2047

Iceshells for Frozen Bodies

When playing freeze you can decide if you want ice shells (frozen look) on dead bodies.

cg_iceShells 0 frozen bodies show as quad or battlesuit depending on server
cg_iceShells 1 frozen bodies have iceshells on

Specialty Commands & Chat Tokens

This section contains a collection of commands that were implemented to enhance the game and provide easy control for the user.

Typing /players in the console will give you a list of current players, their slot number and their team.

/startRecord <DEMONAME> can be used to record a demo without the need to wrap the call with synchronous client on/off calls (it does it for you).

/startPersistentFollow <CLIENTSLOT> will start following the client playing at the given slot number. Persistence comes into play when a player is frozen in a freeze game because as soon as they are thawed you will start following them again.

/stopPersistentFollow is used to turn off the above command. If you forget to call this command to disable persistent follow mode it will be as if you are continually issuing follow commands.

/recordPlayer <CLIENTSLOT> <DEMONAME> is used to record a client playing at a particular slot number. This is useful for recording a particular player during a clan war as you don't have to keep locating them after they die. You should understand how persistent follow works (more importantly how to turn if off) as this command makes use of it. Issuing a /stopRecord to end the demo will not disable the persistent follow, so you need to issue /stopPersistentFollow as well. If you plan to record the demo for a complete map there is no problem as persistent follow is automatically disabled when a map ends.

You can bind the command followTeamNext or followTeamPrevious to a key so when you are frozen in a team game you can cycle through live team mates to see if anyone is near enough to thaw you. If you are playing and you issue a follow command you are taken into spectator mode. In an effort to prevent you using one of these commands just as you are unfrozen checks are made so you cannot use them when you are alive. Sadly this is not 100% reliable due to delays transmitting game state between client and server so be careful using this command while you are being thawed.

You can use various text substitutions in say, say_team and say_leet commands. For example, you can bind \bind m say_team taken #l and when you press the m key the #i tag is replaced with one of red armor, yellow armor, quad, regen, medikit, mega health or flight.

#n your player name
#s your current score
#t your team
#h your current health
#a your current armor
#i last item you picked up
#l name of player who last hit you
#x name of player in crosshair
#k name of killer

say_leet, not heard of that command before? Give it a try!

The /chelp command prints brief list of available commands to the console incase you forget the details or cvar names ingame.

Features Added By Danger

A description of the features added by Danger's edition.

Antispoof

cg_antiSpoof 0 No antispoof
cg_antiSpoof 1 It fixes the message spoofing bug.
cg_antiSpoof 2 It automatically tells to everyone if someone uses the message spoofing bug.

Size of Holdable Item Icon

You can set the size of the icon for the holdable items on the screen.

cg_holdableIconSize 48 The default value is 48

Crosshair Pulse

Enables/Disables the pulse effect of the crosshair when you pick up items.

cg_noCrosshairPulse 0 Crosshair pulses when you pick up items.
cg_noCrosshairPulse 1 Crosshair doesn't pulse when you pick up items.

Bobbing

Enables/Disables the bobbing effect of the player in different cases.

cg_noBobbing 0 All bobbing effects are Enabled.
cg_noBobbing X Disables bobbing effect based on 'X'

'X' is made up by combining the numbers of the settings you want to use from the list below.

No weapon bobbing 1
No weapon switch animation 2
No weapon firing knockback 4
No damage kick 8

If you want to disable weapon switch animation and damage kick you add their values together (2+8=10), then set cg_noBobbing 10

Ignoring Players

Ignores a player, so you can't see their messages.

/ignore 1 Toggles to ignore the player with clientnumber 1
You can check clientnumbers with the /playerlist command

Highlighting Players

Highlights a player, so you can see them in different color.

/highlight 1 Toggles highlight the player with clientnumber 1
You can check clientnumbers with the /playerlist command
cg_highlightColor 1 Sets the color of highlighted players (similar to cg_enemyColor)

Hitsound

Sets low/high hit beep tones based on damage.

cg_hitsound 0 Disables low/high tone.
cg_hitsound 1 Enables low/high tone.

Team Arena Sounds

Enables/Disables Team Arena-like announcer sounds. (humiliation, impressive, excellent)

cg_teamarenasound 0 Disables Team Arena-like announcer.
cg_teamarenasound 1 Enables Team Arena-like announcer.

Damage Numbers

Enables/Disables damage numbers.

cg_drawDamage 0 Disables damage numbers.
cg_drawDamage 1 Enables damage numbers.

Bugs

Although this is a stable release it still has one known bug remaining. We have chosen to release it with this bug because there is a workaround and it may take a long time to fix (it's based on an engine bug). Some people have been waiting a long time for this release and we don't want it delayed anymore.

When joining a game from spectator the enemy models do not always refresh instantly. If you have enabled enemy colors you will see the teams in red/blue instead of your chosen color. There are a few workarounds.

Type /vid_restart in the console (quite slow)

Change the cg_enemyModel variable to something new, then back to what you want.

Wait until you die or are frozen and the models should reload correctly.

FAQ

I installed it and I can't get anything to work, what's wrong?

If you followed the installation instructions you can verify whether the mod is loaded or not because the start screen of Quake 3 will now show some flashing copyright text (just below the main menu). If you installed it into a mod folder you may have to go to the "Mods" menus and load that mod before you enter your server (this is a problem with 1.11 linux server versions used to run NoGhost).
Also make sure you are not trying to play on a pure server because some NoGhost pure servers will let you in, but will disable any pk3 files which are not on the server.

Why are all the automatic screenshots and demos given names like demo0001, can you name them something sensible?

I'd love to, but in the 1.16n engine there is no way to access the current date and time to produce a unique name. Player name and map name would provide a useful name, because every time you replayed the map you'd overwrite the previous one which not a good idea.

I really hate people using green models and think everyone should have to use the standard red or blue, what are you going to do about it?

That is exactly why the mod is distributed as two pk3 files. If you run a pure server you can let clients use all the features apart from enemy coloring by not adding zzz-nemesis-models.pk3 to your server. If you don't run a pure server then there are other mods which let people use green models (or even worse, bbox) so you have nothing to complain about.

I thought you were going to add some commands so NoGhost servers could limit Nemesis functionality?

This was the original plan, but we don't see the point unless you run a pure server (see above). Without pure players would just use another mod to get the disallowed feature and we don't want to turn players away from using Nemesis just because server X disables a certain feature.

I have cg_autoRecord enabled and when a map starts my game freezes for around 5 seconds!

This is because you have too many demos stored in your demo folder. The freeze is caused by quake 3 trying to find the next demo name (remember they are named in an increasing sequence demoXXXX), which is done by checking the disk over and over again until it finds a possible name. Simply move your demos to another folder or delete the ones you do not want to keep anymore.

Credits

Easy - Developer of Excessive Plus mod http://www.excessiveplus.net/, helped us fix enemy colors not working in vertex mode.

Q3A++ - For alpha skins and various ideas.

Haste - Alternate Fire mod for his wicked "alternate" fire rail trail

OSP - For there Enemy Territory source code that helped us with ideas.

Matt McChesney - For writing z-effects mod and letting us have the source code to implement the weapon and water effects.

Also thanks to all the quake modding forums and modders that have inspired us!

We can't forget the people who helped test and use this mod as without you there would be no reason for us to have created it.

Appendix A

0x000000

0x000033 0x000066 0x000099 0x0000CC 0x0000FF
           

0x330000

0x330033 0x330066 0x330099 0x3300CC 0x3300FF
           

0x003300

0x003333 0x003366 0x003399 0x0033CC 0x0033FF
           

0x333300

0x333333 0x333366 0x333399 0x3333CC 0x3333FF
           

0x006600

0x006633 0x006666 0x006699 0x0066CC 0x0066FF
           

0x336600

0x336633 0x336666 0x336699 0x3366CC 0x3366FF
           

0x009900

0x009933 0x009966 0x009999 0x0099CC 0x0099FF
           

0x339900

0x339933 0x339966 0x339999 0x3399CC 0x3399FF
           

0x00CC00

0x00CC33 0x00CC66 0x00CC99 0x00CCCC 0x00CCFF
           

0x33CC00

0x33CC33 0x33CC66 0x33CC99 0x33CCCC 0x33CCFF
           

0x00FF00

0x00FF33 0x00FF66 0x00FF99 0x00FFCC 0x00FFFF
           

0x33FF00

0x33FF33 0x33FF66 0x33FF99 0x33FFCC 0x33FFFF
           

0x660000

0x660033 0x660066 0x660099 0x6600CC 0x6600FF
           

0x990000

0x990033 0x990066 0x990099 0x9900CC 0x9900FF
           

0x663300

0x663333 0x663366 0x663399 0x6633CC 0x6633FF
           

0x993300

0x993333 0x993366 0x993399 0x9933CC 0x9933FF
           

0x666600

0x666633 0x666666 0x666699 0x6666CC 0x6666FF
           

0x996600

0x996633 0x996666 0x996699 0x9966CC 0x9966FF
           

0x669900

0x669933 0x669966 0x669999 0x6699CC 0x6699FF
           

0x999900

0x999933 0x999966 0x999999 0x9999CC 0x9999FF
           

0x66CC00

0x66CC33 0x66CC66 0x66CC99 0x66CCCC 0x66CCFF
           

0x99CC00

0x99CC33 0x99CC66 0x99CC99 0x99CCCC 0x99CCFF
           

0x66FF00

0x66FF33 0x66FF66 0x66FF99 0x66FFCC 0x66FFFF
           

0x99FF00

0x99FF33 0x99FF66 0x99FF99 0x99FFCC 0x99FFFF
           

0xCC0000

0xCC0033 0xCC0066 0xCC0099 0xCC00CC 0xCC00FF
           

0xFF0000

0xFF0033 0xFF0066 0xFF0099 0xFF00CC 0xFF00FF
           

0xCC3300

0xCC3333 0xCC3366 0xCC3399 0xCC33CC 0xCC33FF
           

0xFF3300

0xFF3333 0xFF3366 0xFF3399 0xFF33CC 0xFF33FF
           

0xCC6600

0xCC6633 0xCC6666 0xCC6699 0xCC66CC 0xCC66FF
           

0xFF6600

0xFF6633 0xFF6666 0xFF6699 0xFF66CC 0xFF66FF
           

0xCC9900

0xCC9933 0xCC9966 0xCC9999 0xCC99CC 0xCC99FF
           

0xFF9900

0xFF9933 0xFF9966 0xFF9999 0xFF99CC 0xFF99FF
           

0xCCCC00

0xCCCC33 0xCCCC66 0xCCCC99 0xCCCCCC 0xCCCCFF
           

0xFFCC00

0xFFCC33 0xFFCC66 0xFFCC99 0xFFCCCC 0xFFCCFF
           

0xCCFF00

0xCCFF33 0xCCFF66 0xCCFF99 0xCCFFCC 0xCCFFFF
           

0xFFFF00

0xFFFF33 0xFFFF66 0xFFFF99 0xFFFFCC 0xFFFFFF