Title    : ZPM MOD
Version  : Beta 4.3
Date     : June 24th 2002
Author   : Thomas "Calv" Cramaro <tcramaro@club-internet.fr>
Web Page : http://www.zpmode.org

\\------//
 |Intro:|
//------\\

Welcome to ZPM.

\\--------------//
 | What is ZPM: |
//--------------\\

ZPM is a client side mod for Quake 3 Arena that has extra options coded in to enable client side prediction 
of all weapons.
These options are enabled by default but can be disabled for those who wish to keep the latency in their aim
(for those who are so used to the way Q3A plays online).

When client side prediction is enabled the clients computer tells the server when you hit someone instead of
the other way around which means that all shots fired are instant and missles appear instantly when fired.

You will probably say to yourself that this mod sounds like it opens Q3a up for cheaters.
ZPM and ALL MODS that use sv_pure 1 cannot be used with an aimbot or wallhack cause that cvar protect 
the game from modifications in any way ... the only way to cheat is :
1 - Any sv_pure 0 so you can enter in those servers with modified qvm's... (any MODS)
2 - You hack the quake3.exe so you can enter in all sv_pure 1 running ANY MODS with modified qvm's ...
    (purehack, then an aimbot or a wallhack). ANY MODS : OSP, CPMA, UT2, Q3F ...
Even with a server side or client side way of managing projectiles, with ping or without ping,
an aimbot can shot at you ...
Unfortunatly cheaters are where ever you go, no matter the code :\
Hackers will allways find a way to deminish others fun and thats a fact.
So if you are looking for a cheat free mod and/or game then don't hold your breath because you will never see 
a game that isn't cheatable!! 

As always a good high speed connection is going to be better, you'll be the first to tell the server 
that you killed the other player...
What ZPM does is bring everyones aim back to single player like feel and this in turn gives not only 
lpb's a slightly better aim but enhances all other high pings dramtically so there is no more delay in any
shot fired!
Everyone in ZPM is equal and nobody can now blame their ping as being the cause of thier misses.
If you don't hit, don't blame the mod, instead blame your skill.

Lets face it.. 
Quake 3 Arena plays horrible online for most of us.
Now there is no reason it should play like that with this mod unless you just have an unplayable ping.
Another good point is the fact that ZPM could open up the door for most people to be able to play on distant
servers.
Its not uncommon for 2 56ker's to connect to each other with this mod and be able to play a good game without 
any advantages from one or the other!

Well people say "i like my ping" blah blah blah ...
Well i do too, but does that make it right that your ping is actually an advantage over me?
No, it doesn't and yes, it is an advantage.
Every Quaker out there knows how important a good ping is and most Quakers won't even play on a server 
if their pings are over 100. 
Now just imagine if it was always over 100 and on most server it was more 200-150ms, 
and not to mention the fact that this ping is mandatory.
There isn't a cable company near you and your phone company is just to damn broke down to install dsl for 
your area so now you rely on 56K.

Thats where the comical stuff come in to play and its when people go "well get a better connection'...
The fact of the matter is that i would if there was a better connection than 56k in my area.
This doesn't apply to just a couple of areas either, this applies to the majority of the world.
Earth is not hard wired with cable or dsl people! Most of us HAVE to settle for 56k.
This is also another good reason why so many people have left the q3 gaming community.
Most have gone to Halflife and some back to Q2.
All these points made in this news letter point to why we still need client side gaming.

Thats why ZPM has been developed.
To bring Q3A to a point where not just a hand full of cables and dsl's can play and 
have fun but now everyone should be able to have fun.

Now with ZPM you can actually practice offline and your accuracy will get better online as well.
Building skill offline and using it online is possible in ZPM !!

Notice: Rocket-, Grenade-, BFG-, Plasmajump are still like in vanilla q3a !

\\-------------------//
 |How to Install ZPM:|
//-------------------\\
-ZIP VERSION:

Unzip the zpm_beta_4.3.zip in the root Quake3/ directory, with folders enabled.
You should have a newly created directory named "zpm" with these inside:

-readme.txt			(this file)
-description.txt		(used to load ZPM from quake3 mod menu)
-pak0.pk3			(all needed mod filez)
-server.cfg			(configuration file for running a dedicated server)
-launch_zpm.bat			(a batch file to launch the mod on windows98)
-zpm_dedicated_server.bat	(a batch file used to start a dedicated server on windows98)

-INSTALL VERSION EXE:

No problem with that ;)

\\----------------//
 |How to load ZPM:|
//----------------\\
1-Load the batch file called "launch_zpm.bat".
  or
2-Launch "quake3.exe" and select "ZPM - beta 4.3" then click load.
  or
3-use this command line : "quake3.exe +set fs_game zpm +set sv_pure 1"

\\---------------------------------------//
 |How to start up a DEDICATED ZPM server:| 
//---------------------------------------\\
quake3 +set dedicated 2 +set com_hunkmegs <n> +set sv_pure 1
       +set fs_game zpm +exec server.cfg

The value for com_hunkmegs really depends on how many clients you want
to support.

LINUX :
-------
q3ded +set dedicated 2 +set com_hunkmegs 64 +set sv_pure 1 +set fs_game zpm 
+set vm_game 2 +set vm_ui 2 +set vm_cgame 2 +exec server.cfg

Also make sure to add "+set fs_basepath <dir>" that points to your root Quake3 directory 
to properly enable server downloads.

The value for com_hunkmegs really depends on how many clients you want to support and the type of maps 
you're going to run.
For 1v1/FFA/TDM/CTF maps, 24-32 should be fine. 
For multiarena maps you'll want to bump it to 48-64.


I suggest you to look at OSP documents if you're not sure about something.
They've done an impressive documentation work that i can't afford.
I hope they'll not blame me about that :)
OSP url : http://www.OrangeSmoothie.org --> rhea@OrangeSmoothie.org
CPMA url : http://www.promode.org
Thanks guyz !

\\-----------------------//
 |Available ZPM commands:|
//-----------------------\\

  -----------
- Client side :
  -----------
 cg_bulletprediction      <0/1> // 0 - Bullet prediction off.
			       	// 1 - Bullet prediction on (default).

 cg_projectileprediction  <0/1> // 0 - Projectile prediction off.
			       	// 1 - Projectile prediction on (default).

 players                        // Displays all player id's and settings on the server.

 referee                 <pass> // Enables Referee status.

 lock				// Lock your team (team play only).

 unlock				// Unlock your team (team play only).

 speclock			// Lock your team from being spectated(team play only).

 specunlock			// Unlock your team from being spectated(team play only).

 speconly			// Enable / Disable spectator only mode (Once on, you'll stay a spectator 
				   as long as you turn it off).

 timeout			// Request a time out.

 timein				// Request a time in.

  -----------
- Server side :
  -----------
 g_allowbulletcorrection :      Ensures that a brush (or any other solid object) isn't 
		   	         in the way of a shot (hit-scan weapons only).
			  <0/1> // 0 - Bullet correction disabled (default).
			       	// 1 - Bullet correction enabled.

 g_allowweaponprediction  <0/1> // 0 - Weapon prediction disabled.
			       	// 1 - Allow weapon prediction (default).

 match_hurtself           <0/1> // 0 - Player can't inflict splash damage to himself.
			       	// 1 - Player can inflict splash damage to himself (default).

 match_instagib           <0/1> // 0 - Normal DM (default).
			       	// 1 - Instagib gameplay, only railgun with 500 damage.

 vote_allow_bfg           <0/1> // 0 - BFG weapon disabled.
			       	// 1 - BFG weapon enabled (default).

 vote_allow_falling       <0/1> // 0 - Falling damage disabled.
			       	// 1 - Falling damage enabled (default).

 vote_allow_pmove         <0/1> // 0 - pmove_fixed disabled.
			       	// 1 - pmove_fixed enabled (default).

 vote_allow_quad          <0/1> // 0 - Quad item disabled.
			       	// 1 - Quad item enabled (default).

 ref_password             <pass>// Enables you to set a referee pasword for ref status in game.

 match_ra3                <0/1> // 0 - VQ3 (default).
			       	// 1 - Rocket arena - Multiarena.

 match_timeoutcount       <n>   // Max number of allowed timeout (default 3).

 match_timeoutlength      <n>   // length of a timeout (default 50).

 --------
- Voteable :
  --------
Use "/callvote" and a word from this list. (for example : callvote instagib 1).
Type /callvote to see all available commands.

 allowbfg :		 <0/1> 	// 0 - Disable BFG.
			       	// 1 - Allow BFG (default).

 allowquad :		 <0/1> 	// 0 - Disable Quad damage item.
			       	// 1 - Enable Quad damage item (default).

 bulletcorrection :             Ensures that a brush (or any other solid object) isn't 
		                 in the way of a shot (hit-scan weapons only).
			 <0/1> 	// 0 - Bullet correction disabled (default).
			       	// 1 - Bullet correction enabled.

 fallingdamage :	 <0/1> 	// 0 - Falling damage disabled.
			       	// 1 - Falling damage enabled (default).

 hurtself           	 <0/1> 	// 0 - Player can't inflict splash damage to himself.
			       	// 1 - Player can inflict splash damage to himself (default).

 instagib :		 <0/1> 	// 0 - Normal DM (default).
			       	// 1 - Instagib gameplay, only railgun with 500 damage.

 mode :		 	 <num>	// Set game mode	
				// 0 - FFA.
				// 1 - Tournament.
				// 2 - Not used.
				// 3 - Team deathmatch.
				// 4 - CTF.

 mutespecs :		 <0/1>	// 1 - Disable spectator chat for playing clients.
				// 0 - Enable spectator chat for playing clients.

 nextmap :		 <name>	// Set next map.

 pmove :		 <0/1> 	// 0 - Pmove_fixed 0.
			       	// 1 - Pmove_fixed 1 (default).

 ra3mode :		 <0/1> 	// 0 - VQ3 (default).
			       	// 1 - Rocket arena - Multiarena.


  -----------------
- Referee commands :
  -----------------
You need to be a referee to use those commands.
To become referee, you need to type "/referee <ref_password>" if the option is enabled on the server.
Use "/ref" and a word from this list. (for example : ref kick 1).
Type "/ref help" to see all available commands.

 allowquad :		        Allow quad.
 allowbfg :		        Allow BFG.
 ban <player_id> :	        Ban selected player, type "/players" to get a list of players ID.
 fraglimit <value> :	        Set fraglimit to specified value.
 friendlyfire <value> :	        Set friendly_fire off and on.
 help :			        List available commands.
 kick <player_id> :	        Kick selected player, type "/players" to get a list of players ID.
			        You cannot kick another referee.
 lock :			        Locks both teams to allow more players to join.
 lock_blue :		        Locks blue team to allow more players to join.
 lock_red :		        Locks red team to allow more players to join.
 lockspec :		        Locks both teams from being followed by a spectator.
 map <mapname>:		        Change the map to the one specified.
 map_restart <seconds> :	Restart the map.
 mode <value> :		        Change the gametype to the one specified.
 mutespecs :		        Disable spectator chat for playing clients.
 nextmap :		        Set nextmap value.
 pmove :			Allow pmove_fixed option.
 putblue <player ID> :	        Put specified player into blue team, type "/players" to get a list of players ID.
 putred <player ID> :	        Put specified player into red team, type "/players" to get a list of players ID.
 timelimit <value> :	        Set timelimit to specified value.
 unlock :		        Unlocks both teams to allow more players to join.
 unlock_blue :		        Unlocks blue team to allow more players to join.
 unlock_red :		        Unlocks red team to allow more players to join.
 unlockspec :		        Unlocks both teams from being followed by a spectator.
 unreferee :		        Used to disable your referee status.

\\-----------//
 |Known bugs:|
//-----------\\
   -When trying to rocketjump while looking at the maximum down, players will see your rocket go behind.
   -While spectating through a player the shots fired will not appear to be accurate,
    this is due to lag in between you and the other client.
   -Grenade will sometime get stuck into jumpads, well it depends from where the shot was fired.

\\-------------//
 |Improvements:|
//-------------\\
-beta 4.3:
---------
	-Fixed Projectile bug...
-beta 4.2:
---------
	-fixed the "dead with one rocket" bug ...
	-the in-game add bot menu bug (no red or blue team in UI to choose in RA3 mode)
	-fixed the "team queue adjustement" a bit.
	-fixed the "no on left in the game, match ended" bug ...
	-bot_minplayers bug, until i find a solution, i've disabled bot_minplayers in multi arena 
	 and RA3 mode...
	-fixed the "on the fly mode change" ... no map_restart used anymore ...
	 only callvote restart... it will restart the arena...
	-fixed falling damage, and hurtself  : was not working...
	-fixed ready message etc, now readycheck enabled in all gamemode except FFA...
	-Modified cVars default values:
	 match_ra3 default was 1, always RA3 mode ... :-(
	-Fixed callvote commands that was not working or not supposed to be there ...
	-Fixed RA3 respawn code, wasn't random...
	-Fixed the /players command when a player use color characters in his name...
	-Fixed the timeout command... 
-beta 4.1:
--------
	-Fix: Ra3mode callvote now works right.
	-Fix: The ready message is no longer displayed in FFA.
	-Fix: Instagib is working ok now.
-beta 4:
--------
	-Fix: the lightning gun "connection interrupted" bug.
	-Fix: the "/player" command will give clients cl_timenudge value too.
	-Add: Multi arena support.
	-Add: RA3 gamemode.
	-Add: timeout and timein commands.
-beta 3:
--------
	-Impressive reward re-added.
	-Railgun can now kill four people like a normal Railgun should.
	-Removed double kills (a HPB killing a LPB while dead).
	 Now the first who kill the other player, kill his railtrail too.
	-All weapons can now activate buttons and doors.
	-Fixed bugs with g_friendlyfire 0.
	-Fixed CTF instagib bugs.
	-Fixed projectile radius damage.
	-speconly command added, you'll stay as a spectator while on.	
-beta 2:
--------
	-Added Grenade Launcher support.
	-Added Rocket Launcher support.
	-Added Plasma Gun support.
	-Added BFG support.
	-Fixed the obituary that stated "Was gunned down by" when two players were killing each other 
	 at the same time in instagib.
	-Added Bullet Correction support, g_allowbulletcorrection, if on, server check 
	 the shot to ensure that a brush isn't in the way of it.
	-Added g_allowweaponprediction cvar, now admins can allow players to use 
	 zpm prediction, or force it to 0.
	-Added match_instagib cvar, if on, instagib gameplay, only railgun with 500 damage.
	-Added vote_allow_falling cvar, if off, falling damage is disabled.
	-Added match_hurtself cvar, if off, player can't inflict splash damage to himself.
	-Instagib is voteable to be enabled/disabled, and not a gametype any longer.
	-Falling damage is voteable to be enabled/disabled.
	-Hurt self is voteable to be enabled/disabled.
	-Bullet Correction is voteable to be enabled/disabled.
        -Added a referee status accessable through a password.
        -Added a "/players" command that allows poeple to view a players id number and settings.        
-beta 1:
--------
	-Added Instagib game mode.
	-Added a simple zoom feature for railgun in instagib.
	-Fixed the double railtrail for bots... cause of the cg_bulletprediction cvar 
	 not set for them.
-alpha 9:
---------
	-Added a cg_bulletprediction Vmcvar_t ( 1 is on, 0 is off ).
	 now clients can turn bullet prediction on and off in game. 
	-Fixed the non opening door bug (when firing at it with a predicted weapon).
	-Fixed the bullet in water effect for predicted bullet weapons
	 (shotgun and machinegun).
-alpha 8.1:
-----------
	-Removed some annoying debug messages.
	-Fixed some spell errors.
-alpha 8:
---------
	-Fixed lightning gun bolt prediction.
	-Fixed the bug that was happening when two players 
	 were trying to damage each other with the lightning gun.
	-Fixed the marks on wall for the gauntlet.
	-Fixed the railgun color dot.
	-Fixed the shotgun.
	-Added a g_version Vmcvar_t so people know if they've got the good
	 version when connecting to a server.
-alpha 7:
---------
	-Added Gauntlet zpm support.
	-Added Shotgun zpm support.
	-Added Lightning gun zpm support.
	-Fixed the "blood on doors and platform objects" bug.
	-Fixed the "bullet impact on sky" bug.
	-Fixed the "Sank like a rock" bug (killing a player when you're dead, 
	 cause of the lag).
-alpha 6:
---------
	-New method, got to find bugs ...
	-works more accuratly.
-alpha 5:
---------
	-Finally removed the ugly "blood but no hit" bug ...
-alpha 4:
---------
	-Added a filter when searching for a server, you'll only search for zpm server.
	-I've done an installer.
-alpha 3:
---------
	-prediction is only done with machinegun and railgun for the moment ...
-alpha 2 :
----------
	-succesfully implemented a random pattern on predicted bullets ...
	in the first version i was just testing the trace function and its accuracy.
	-I've added the railtrail ...
-alpha 1 : 
----------
	-none :)

\\----------------//
 |Version history:|
//----------------\\
-07/17/01 : Launching of the test version.
-08/13/01(morning) : test version 2.
-08/13/01(night) : Alpha realease 3.
-08/14/01 : Alpha release 4.
-08/15/01 : Alpha release 5.
-08/28/01 : Alpha release 6.
-08/31/01 : Alpha release 7.
-09/03/01 : Alpha release 8.
-09/03/01 : Alpha release 8.1.
-10/26/01 : Alpha release 9.
-10/27/01 : Beta 1.
-11/09/01 : Beta 2.
-11/29/01 : ZPM - Beta 3.
-06/14/01 : ZPM - Beta 4.
-06/15/01 : ZPM - Beta 4.1.
-06/24/01 : ZPM - Beta 4.2.
-06/24/01 : ZPM - Beta 4.3.

\\-------//
 |Thanks:|
//-------\\
 I'd like to thank my brother Tony, Voodoo, Epox, IceQream (Ogoun :p), Encryption, 
 Stonefish, Wmlacovl, Iodron, Topcat, WarzP, Cyberjunkie2K, Shin0, gi`s1L, Static, Snoob
 and all i forgot for helping me to test the MOD.
 I'd like to thank StoneFish, Nobody0, Grandmaster and all admins that host ZPM servers.
 Thanks to Arqon!
--------------------------------------------------------------------------------------------
   Calv coder of ZPM Q3 MOD http://www.zpmode.org 
