JCoopZ1 Coop Game modification for Unreal 1 By -Zombie (Of DZ)
       E-mail: unrzombie@yahoo.com
       Website: Will I ever start one?

Version history - Oldest to newest
12/15/05 Initial Release
4/29/06 jCoopZ1SSF Build 110
	-Fixed some flaws in client check routines that could sometimes cause a server crash when
	 a "clientside anomaly" is detected.
	-Fixed SkaarjPlayer not being able to pass important paths in Vortex2, Chizra, 
         IsvKran32, and a few other regular coop maps.
	-Fixed issue of extra ServerTravel calls to switch maps than what was needed.
	-Fixed an automatic temporary ban action that could add multiple identical TempBanPlayer
         entries.
	-Fixed bReturnToCrashMap so that it does not take action (if true) in offline standalone 
	 games.
	-Fixed AllowedMoverBlocks so that the player's own counter resets after death.  
	-Fixed bTravelScores issue of a new player's current level score not being restored after
         rejoining. Negative scores are also restored when traveling to new maps.
	-Fixed GiveItem bug so that amplifier based inventory initialize as they should to make 
         weapons do more damage. Also, a small "Ammo#" bug fixed for first to join new players.
	-Fixed NumSpectators not lowering when a spectator leaves a ListenServer mode game.
	-Added the 'NoURLMap' setting to the sequence control for maps that lack an end 
	 teleporter or have no URL. Users must configure 'NewNext' for this, and set a map timer.
	-Changed score loss back to one point when a player craters, drowns, burns up in lava, or 
         blows self up. Players will still lose five points if they 'suicide'.
	-Changed query rules so that map TimeLimit is displayed when above zero in a query to the 
         server. 
	-Improved bKeepScores support for BoodaFlow's GemDagger hardcoded score recovery 
         feature so that a player's cumulated score is more accurately restored.
	-Improved AutoRunCommand feature to also be executed immediately after the first player 
	 joins the server.
	-Improved other server side routines, and minor unnoticeable fixes.
	-Updated Readme for Build 110 and to included forgotten information such as the 
	 summonable jzPlayerStart, commands restricted for Secondary Admins, GiveItem notes,
         and some more explanations for the packagescan features.
10/14/06 jCoopZ1SSF Build 115
	-Fixed an Unreal vulnerability that could have been exploited to DoS/crash a server.
	-Fixed the broken PackageException>PackageName entry so that it works as intended when no 
         PackageLink is provided.
	-Fixed a tiny GiveItem bug that gave weapons 2x the normal pickup ammo when given.
	-Added a new required server-side package 'JCoopZ1NPTP' that now handles processing 
         between JCoopZ and Nephthys. This package allows patch 227 or greater compatibility in 
         case any available Nephthys versions are not.
	-Added a 'Moderate' setting in the PackageScan option. Users can now have complete
	 scanning like 'Full' but without the need to add PackageExceptions for S3TC players.
	-Added full support for 'MapVote' and 'VoteEnd' commands. Users can now allow players to 
	 map vote for the next in order and/or to vote when ready for the level to end.
	-Added RestrictedKeyword support to the 'switchlevel', 'switchcooplevel', and 'giveitem' 
	 commands.
	-Changed GiveItem to not report pickup messages and sounds for items already owned by the
	 player.
	-Changed JZCLogger.ini to be renamed to JCZLogger.ini as it was supposed to be. 
	 ATTENTION: All users should either copy ALL contents over to the new INI or rename the 
	 existing file!
	-Replaced the Nephthys v1.1 distribution with the Nephthys v1.3 distribution in archive.
10/22/07 jCoopZ1SSF Build 120
	-Fixed the 'adminlogin' and 'adminlogout' commands after success to avoid an unreal 
	 memory management bug that might crash a server (apology to this being late). 
	-Fixed pawn interpolation online to avoid an unreal bug that could crash a server.
	-Fixed a custom bot incompatibility from Zora's maps that would crash a server.
	-Fixed mutated DefaultWeapon bug that can cause more then one default weapon to spawn 
         for a player at start while bRetainInventory is enabled.
	-Fixed creaturecarcass safety handler bug that caused replacements by a mutator to be 
	 destroyed. 
	-Fixed weapon deathmessages for pawns when bClassicDeathMessages is false.
	-Added 'admin Addbots' command support that can be enabled by the 'bTeamGameMode' option.
	 The bTeamGameMode option forces a single default team restriction on players and bots. 
	 A custom BotConfigSSF class can be specified from the game control if desired.
	-Added IsBossScoreBonus setting to the game control to change the amount of extra score
	 points a player may receive for killing a scriptedpawn that is set as bIsBoss.
	-Added bAllowPrivateSay option so that users can choose to disable the 'PSay' command.
	-Added support to load obscure player skins on the server from the Unreali package. 
	 Players must use option "?Skin=" in an 'open' command or specify the skin in the 
	 User.ini file.
	 	FemaleTwo: Unreali.F2Female2, Unreali.F2Female4
		MaleOne: Unreali.JMale2, Unreali.JMale3, Unreali.JMale4, Unreali.JMale5
			 Unreali.JMale6, Unreali.JMale7, Unreali.JMale8
		MaleTwo: Unreali.JMale22
	-Changed 'advance' command to be able to initiate level travel even when a minimum map 
	 timer or bVoteEnding is enabled.
	-Changed PlayerReplicationInfo handling for bots to use JCoopZ's replacement if they
	 have the default.
	-Changed mover block detection so that users can choose to disable it by configuring 
	 AllowedMoverBlocks to -1.
	-Improved client check routines to better detect anomalies.
	-Improved some server side routines.
	-Updated Readme for Build 120 and to included more 'Bugs and Issues' information such
	 advice to solve mod incompatibility problems, and supporting custom PlayerPawn classes.
12/15/09 jCoopZ1SSF Build 130
	-Fixed ServerWeaponPriority scriptwarnings when a 227+ patch client joins a 224/225/226
	 server.
	-Fixed client IP address retrieval on a 227+ patch server (non-Nephthys) to avoid a 
	 potential crash.
	-Fixed NumPlayers unintentionally being increased by a Spectator and then not decreasing
	 once the Spectator leaves.
	-Fixed unrestricted messaging while using bTeamGameMode that could allow a player
	 to anonymously message in grey text.
	-Fixed a message broadcasting bug that stopped all player and game broadcasts when a
	 custom JCoopZGameSSGF add-on runtime was in use.
	-Fixed minor incompatibilities with 227+ patch client behaviors.
	-Fixed bRetainInventory incompatibility with UPak on a 227+ patch server.
	-Fixed cratered deaths when a player restarts/respawns after dying while ghosting. 
	-Fixed a minor flaw in admin name reserve blocking.
	-Added PackageScan compatibility support for 227 patch clients and servers. No support 
	 yet on 224/225/226 servers for 227 clients until 227 is absolutely FINAL.
	-Added a new required server-side package 'JCoopZ1GRP' for a 227+ patch server that 
	 handles processing between JCoopZ and GameRules mutations. This package allows JCoopZ 
	 support to call GameRules functions on a 227+ patch server.
	-Added playerpawn bleeding support from the 227 patch for a 227+ patch server.
	-Added ZoneInfo DamageString KillMessage support from the 227 patch.
	-Added support to the JCoopZ 'unrealserver console' commands to work with web admin 
	 consoles.
	-Added 227+ client detection for only 226f servers to reject at prelogin because of 
	 incompatibility.
	-Added support to load the NaliPriest skin for NaliPlayer on the server from the 
	 UnrealShare package. Players must use option "?Skin=" in an 'open' command or specify 
	 the skin in the User.ini file. NaliPlayer: UnrealShare.JNali2
	-Added support to map timer and sequencer for beta map end teleporter URL slash method.
	-Added bKillDeathScoreBonus option to the game control for rewarding extra score points
	 based on Kill:Death ratio to cautious or skilled players.
	-Changed server-side package 'JCoopZ1NPTP' to a new processing method.
	-Changed consolereplace to be disabled only for 227+ patch clients using 
	 UMenu.UnrealConsole or UPak.UPakConsole.
	-Changed PlayerReplicationInfo handling for server controlled non-JCoopZ playerpawn to 
	 use JCoopZ's replacement. Web admin spectator from the 227+ patch can now be displayed 
	 appropriately in the scoreboard.
	-Changed Secondary Admin restrictions to block the new 227 patch 'ubanid' 'ubaninsert', 
	 and 'uunban' commands.
	-Changed the score penalty handling for the original Cow and BabyCow classes. Players 
	 will not receive a score penalty when the Cow properties are changed to turn them into 
	 enemies.
	-Changed client corrections to be relaxed after more recent analysis.
	-Improved sequence control so that the current map and its URL can be specified in the
	 'OriginalNext' setting separated by a colon. This optional format can allow the function
	 of multiple identical OriginalNext URLs in the list.
	-Improved PackageScan to allow players to load legitimate custom and non-current map 
	 music.
	-Replaced the Nephthys v1.3 distribution with the Nephthys v1.4 distribution in archive.
2/11/12 jCoopZ1SSF Build 135
	-Fixed GiveItem bug from incrementing weapon ammo when the user specified custom "ammo#" 
	 number is below the default MaxAmmo.
	-Fixed PreLogin/Login bug from rejecting spectators when the server reaches MaxPlayer 
	 capacity while NumSpectators is still less than MaxSpectators.
	-Fixed rare IP address storing bug that prevented a player from being logged by 
	 JCZLogger.
	-Fixed PackageScan incompatibility for 227 patch clients and servers.
	-Added Web Admin JSay support from admin players.
	-Added more 'Admin' command restrictions that an admin player should never need to 
	 invoke.
	-Added support for PlayerStart 'bEnabled' handling from the 227 patch CoopGame.
	-Added preliminary support for compatibility with IPv6 clients and servers
	 (if there ever will be). Permanent IP range bans now require a dash "-" separator 
	 instead of a colon to avoid conflicts with IPv6 address hexadecimal notation.
	-Added a feature for 3rd party development from 'jCoopZ1SSF' package. ;-)
	-Changed a specific "clientside anomaly" detection to be less sensitive on under powered 
	 or network congested servers.
	-Improved AI hang prevention to reduce late level start load on server setups with pawn 
	 mutations. May prevent rare crashes around server level startup on custom maps that are 
	 unstable to extensive pawn mutations.
	-Improved JCZLogger pruning routines which should produce more relevant 'getalias' 
	 command results and keep JCZLogger.ini file size smaller.
	-Replaced the Nephthys v1.4 distribution with the Nephthys v1.5a018 distribution in archive.


<===Index===>
------------------------------------------------------------------------
1. Introduction
2. Feature Set
3. Install Guide
4. Starting and Using JCoopZ
5. Configuration Options
6. Command Reference
7. Recommendations
8. Bugs and Issues
9. Thanks and Credits
10. Copyright and Permissions
------------------------------------------------------------------------


===============
1. Introduction
===============

Zip Package Contents:
JCoopZ1.u   		   - Main proxy mod file
JCoopZ1SSF.u		   - Main server side base mod file
JCoopZ1NPTP.u		   - Server side Nephthys proxy mod file
JCoopZ1GRP.u		   - Server side GameRules proxy mod file for a 227+ patch server
JCoopZ1.int 		   - Menu / server menu configuration file
JCoopZ1-Build135-Readme    - The file you're reading now
Nephthys_v1.5a018_inst.zip - Nephthys security mod required for JCoopZ operation in 224/225/226
				 Build 135 requires v1.4 or greater.

Compatibility:		- Unreal 1 (Tested in patches 224/225/226f/226b/227)

1.1 [What is JCoopZ ?]

     JCoopZ is an Unreal 1 coop game mod to sequel JCoop4 and the JCoop5 releases from Joss Liu 
and Maniac. This mod consists of nearly 3 years of research, bug fixes, server security 
enhancements, and new features for unreal initially developed for the private DZCoop game mod. It 
also builds on some of the goals Joss had set out for JCoop5 but were never finished. It provides 
a new level of server stability, and security unseen in JCoop4/5 or any coop gametype mod to 
date. Much of the base sourcecode to JCoop was re-written so JCoopZ is not only a sequel, but it 
could almost be considered a totally new coop game mod except for containing original JCoop 
commands and feature options.


1.2 [History of JCoop4/5 and the formation of JCoopZ]
Even before JCoop4 was out there was always a continuous growth in player lamer activity, and 
new unreal exploits being discovered. Joss announced on the now-missing geocities j88oss website 
that JCoop5 was in development. For a while players noticed Joss was testing "[J5b]" updates on 
Joss' Gold server. Beta updates seemed to continue up to "[J5b4]" in which Joss finally 
transferred most of the main code into a serverside file leaving the JCoop5.u file a proxy 
(as one of the goals set for a future release). A few months passed after that last beta without 
any new information in the progress of the update. Eventually Joss left unreal without much word 
to the community and the Joss' Gold server disappeared. Then after a couple more months Joss 
updated the Joss' Gold website that JCoop5 was to wrap up and the source code provided for 
download. Time passed and by early 2004 most knew this wasn't going to happen. During this time 
span I was taking the initiative by privately developing my own DZCoop add-on to JCoop4 to fix a 
lot of the problems with the mod and unreal.

After all of this time it became increasingly necessary to improve JCoop to combat new coop 
problems and security exploits. Many coop admins continue to use JCoop4 after MCoop2 
(by WingedUnicorn) was released only because MCoop2 was more than what they wanted run and no 
compact STABLE coop gametype alternative came out. Many players expressed desire to run my 
private DZCoop add-on for their own servers because it became known that I had addressed many 
unreal problems that malicious players were taking advantage of. I didn't want to release DZCoop 
itself because it was an add-on and that was only tacked ontop of JCoop instead of fixing the
base source, but I was willing to create a fresh new JCoop release if Joss wasn't going to.

I decided (with Oblivion[CW]) to e-mail Joss in early summer 2004 for the rights to officially 
continue the JCoop project as the project head. A reply was received and Joss granted me rights
in rather short wording to continue from JCoop5 (if you want the text e-mail me). However, 
Joss never sent any JCoop5 sourcecode to me, and I e-mailed Joss about receiving sources. No 
replies from that point on ever came back. :-/ I was forced to build the JCoop sequel from 
slightly older obtainable JCoop5 beta 3 sourcecode. However, the good thing was that Joss made 
extremely minimal, cosmetic changes in JCoop5 between beta 3, 4, and 5 so the only loss was in 
saving me time transferring most of the base code to a serverside package. Work began in March 
2005 by merging DZCoop enhancements into JCoop5.

Sometime in August 2005 a surprise came about. Maniac (Joss' friend) returned to unreal and 
began hosting coop server. He was somehow successful in contacting Joss by e-mail in which I
was not, and was able to receive the last beta 4/5 sourcecode. Within short time Joss also
briefly returned to give rights to a few other people to continue JCoop5 or make their own 
version releases. In this bit of news there was some confusion because JCoop5 was actually
not being headed by me like I had thought, but instead headed by Maniac. Then Maniac began a 
short testing period for a final version of JCoop5 which included small contributions from 
.:..:, a now widely known coop uscripter, and was officially released to a small group of people 
who requested for it.

Finally in conclusion I decided it was necessary to rename my JCoop5 project work to JCoopZ to
prevent confusion and conflicts with the work of .:..: and Maniac. Plus, I wanted to express 
that my project work is taking a different direction or branch than that of what was done by 
Joss with this renaming. This also gives more recognition to the source of the large degree of 
improvements that I have built using the JCoop sourcecode.


==================================
2. [Feature Set and Improvements]
==================================
2.1.1
-MANY fixed security holes both in JCoop AND what was normally flawed in Unreal. As many as what 
 is currently known by me, and from my own debugging/exploit experiments. 
-MANY fixed crash bugs (both client and server) and a 99% fix on unreal AI server hangs.
-Quite a number of new admin commands, as well as a few normal player commands. Use 'help' 
 in-game to view a list and their short descriptions.
-A new enhanced client replacement console with colored messaging. Plus it the fixes garbage 
 ghost bug and saves chat text from each level. Console can also work as a default console.
-A number of new gameplay and playercontrol configuration options, some should be self 
 explanatory. Options to reduce player cheating or malicious actions.
-A client checker package scan capability to detect unknown client packages or possible cheats.
-New admin password handling. Admins can reduce the risk of leaked passwords or hijacked servers 
 now.
-Improved JCoop's CustomMapTimer, and GiveItem features to provide new capability.
-Includes a strong player ban/logger, and is better than only using Nephthys by itself with the 
 powerful logging and banning capability of it.
-Built in relogin protection (legacy with Nephthys in place). 
-Internal mutator support (hook mutators) so that mutators no longer need to be added to startup
 commandline options.
-Travel Scores ability. Server can keep total scores of unique players as long as the server 
 doesn't shutdown or crash. 
-Scoreboard has subtle enhancements to the score fields and adds local time keeping.
-Summon player starts anywhere in a level ('summon jPlayerStart' or 'summon jzPlayerStart').
-Many more changes, some subtle and others bigger.


======================================
3. [Installation Guide] PAY ATTENTION!
======================================
3.1
Unzip all package contents into your Unreal installation \System\ folder. JCoopZ won't work very
good or function at all if it's missing the JCoopZ1.int, jCoopZ1SSF.u, jCoopZNPTP.u, jCoopZGRP.u,
or JCoopZ1.u file in the System folder! Do NOT add any of these files to your server's 
"ServerPackages" array, they should load themselves fine when JCoopZ is launched.

3.2
Unreal patches 224/225/226:
Unzip all contents of Nephthys_v1.5a018_inst.zip and run the Nephthys_v1.5a018_inst.exe. Follow 
the installer program carefully so that the correct version files are installed into the \System\ 
folder for you. Also, it is advised to read the Nephthys manual after the installation completes 
(located in \Help\) to insure the security mod is installed and configured correctly. JCoopZ will
NOT operate if Nephthys is not installed according to the manual's instructions. If a NEW version
of Nephthys is released you may use that instead of the version supplied with this JCoopZ 
distribution. JCoopZ should be able to operate and run with future Nephthys versions. You can
likely find the latest Nephthys versions when they're released by visiting Zora's World website 
(http://zzora.altervista.org). Any Nephthys versions before v1.4 can no longer be used and are 
incompatible with JCoopZ1 Build 130+.

Unreal patch 227 or greater:
The Nephthys security mod version supplied with this distribution is incompatible with 227 and 
greater unreal patches. You can run JCoopZ without Nephthys installed on 227 or greater unreal 
patches. Visit Zora's World website (http://zzora.altervista.org) in case a later Nephthys 
version is compatible, and you want its advanced features.

3.3
All of the main JCoopZ configuration options will be generated inside the Unreal.ini file or 
inside whatever INI name is designated for your server configuration under the 
[JCoopZ1.JCoopZGame] and [JCoopZ1SSF.JCoopZSSGF] headers. You must start JCoopZ before these
sections are first generated.

3.4
All player ban and logging entries are stored in a separately generated JCZLogger.ini file within 
the install directory after JCoopZ is ran for the first time.


=============================================
4. [Starting and Using JCoopZ]
=============================================
4.1 
You can start the game server either through the menus, or from the windows command line 
(recommended). Note: use either section 4.2 or 4.3.

4.2
Starting from Menu: start the game, select multiplayer, start new multiplayer game. Make your 
game type selection "Coop Game (JCoopZ1)". Other selections as you normally would. Your log will
have a banner from the JCoopZGame indicating your startup.

4.3
Starting from command line simply add ?Game=JCoopZ1.JCoopZGame to your normal startup options.
Example dedicated server:
	Unreal.exe Vortex2.unr?Game=JCoopZ1.JCoopZGame?Difficulty=3 -server

	(there are many options you can specify not described here; find details on Epic's web 
	site)


==========================
5. [Configuration Options]
==========================
5.1
RunTime[+]
	bHumansOnly - Have only humans in your game.

	bCoopWeaponMode - Make weapons no longer respawn once picked up. When false weapons will
			  continue to be able to pickup and respawn.
			  Note: Most coop servers set this false so more ammo can be received.

	bClassicDeathmessages - Display classic player death messages.

	bNoFriendlyFire - Players cannot hurt other players when they shoot them. Most coop
			  servers set this to true to prevent out-of-control lame player 
			  activity.

	bNoMonsters - Have no monsters in your game.

	JCoopZGameSSGF - Main GameInfo RunTime to JCoopZ. This contains all of the main gametype
			 functions and processes.
			 Note: When a JCoopZ add-on extends from the default class you replace 
			       the class with your own.
			 Default is "JCoopZ1SSF.jCoopZSSGF".

	JCoopZGameSSPF - Main PlayerPawn RunTime to JCoopZ. This contains all of the main 
			 playerpawn functions and processes.
			 Note: When a JCoopZ add-on extends from the default class you replace 
			       the class with your own.
			 Default is "JCoopZ1SSF.jCoopZSSPF".

5.2
GameControl[+]:
	AllowedConAttempts - The amount of allowed connection tries to the server before an
			     automatic temp ban is applied to the offending IP.
			     Default is 15.

	AutoRunCommand[] - Commands that are automatically executed on the server at the start of 
			   each level and one time immediately after the first player joins.
			   Example1: set weapon pickupammocount 999
			   Example2: set jumpboots charge 2000
			   Example3: set krall health 500

	bAdvLead - Display a "[JCoopZ]" advertisement in the server's title at the very 
		   front. 
		   Default is False.

	bAdvTrail - Display a "[JCoopZ]" advertisement in the server's title at the very end. 
		    Default is True.

	bCastFailedLogin - Display in-game messages to admins when a player fails login.
			   Default is True.

	bChatLog - Logs all "Say" messages by players to the server's game console and log.
		   Note: As a reminder this does NOT log "PSay" (private) messages by players
		   in order to preserve true privacy.
		   Default is True.

	bCoopScore - Shows a header in the scoreboard with the cumulative player score from
		     the number of monsters killed and a cumulative monster score from the
		     number of players killed.
		     Default is True.

	bFullSvrLogin - When the 'FullSvrPass' is defined, then a player can force login to a 
			full server by adding "?FullSvrPass=somepassword" to the login request. 
			This is especially useful for an admin who might not otherwise be able to
			enter the full server (remote admin). 
			Default is False.

	bKillDeathScoreBonus - Rewards extra score points to players based on their Kill:Death 
			       ratio. Cautious or skilled players can earn an equivalent score to
			       that of players killing many enemies but dying often. A perfect 
			       bonus of kills with no deaths adds again to the score the exact 
			       number cumulated kills. The bonus is recalculated every time a 
			       player kills or dies.
			       Note: The standard score (HUD score) has the bonus calculated for 
				     it only when the is level ending.

	BotConfigSSF - The BotInfo class or subclass that handles the configuration and 
		       individualization of bots that will be spawned from the 'admin addbots' 
		       command.
		       Note: Only the BotInfo functions ChooseBotInfo(), GetBotClass(), and 
			     Individualize() are called by JCoopZ.
		       Default is "UnrealShare.BotInfo".

	bRespawnAll - All inventory pickups including ammo, and health to respawn just like
		      weapons according to the 'InvRespawnTimes' options.
		      Default is False.

	bReturnToCrashMap - Recovers the server back to the last map before a crash or restart.
			    This helps continue gameplay where it left off instead of starting
			    on a different map.
			    Note: If DZMapM is running use this option over the one that has.
			    Default is True.

	bShowAdmins - Displays and announces the presence of admins in the server. In the
		      scoreboard admins' names appear in orange with "(admin)" afterwards. When
                      this is false an admin only sees themself in orange while appearing as a
		      normal player to others.
		      Default is True.

	bTeamGameMode - JCoopZ is set to bTeamGame, the BotConfigSSF class is spawned, and the 
			'admin addbots' command is enabled. Players and bots are forced to a
			single default 255 team to preserve cooperative play with bots.

	FullSvrPass - Password used with the 'bFullSvrLogin' option. To use a player must add
		      "?FullSvrPass=somepassword" to the login request.

	GamePassword - To restrict access to your server set this password.

	HookMutator[+] - Mutators which are hooked and spawned in JCoopZ without adding them to 
			 the commandline start options. Useful for admins with remotely hosted
			 servers with no commandline access.

	InvRespawnTimes[+]
		AmmoRespawnTime - Respawn time of ammo.
				  Default is 1.000000 (1 second).
		HealthRespawnTime - Respawn time of health.
				    Default is 1.000000 (1 second).
		InventoryRespawnTime - Respawn time of all other inventory.
				       Default is 1.000000 (1 second).
		WeaponRespawnTime - Respawn time of weapons.
				    Default is 1.000000 (1 second).

	IsBossScoreBonus - Extra score points a player receives after killing a scriptedpawn
			   that is bIsBoss true.
			   Note: Only the Titan, Warlord, Queen, and their subclasses have 
				 bIsBoss true by default. Other scriptedpawn mods may inherit
				 or a developer might use that option for their tougher pawns.
			   Default is 0.

	PrimaryAdmin[+] - The primary admin password registry. All primary admins are free of
                          secondary admin restrictions. However, only the primary admin in entry 
                          0 is allowed to use the 'adminpw' and 'hookmutator' commands.
			  At least one AdminPassword must be defined and enabled in order for a 
                          player server host to log in as admin. EACH player to be admin MUST
                          have their own UNIQUE admin password to avoid issues.
			  Note: Read recommendations section 7.1
		AdminPassword - The password used to login as admin.
				Note: In JCoopZ all passwords are now case sensitive.
		bEnabled - To enable this password to be used.
                           Default is False.
		bAuthenticate - The server requires a strict identification of the player who 
                                attempts to login. The LocalID and PlayerUID of the player must
				match the registered settings. Admin password disables itself 
                                automatically if an unauthorized player becomes admin with 
                                bAuthentication true.
                                Note: This setting is not without issues. Read Bugs and Issues 
				      section 8.2
				Default is False.
		AdminIP - The IP address of the player who logged in using this admin password.
			  Note: This setting is self controlled and does not require user input.
		LocalID - The ID calculated and generated on player data.
 			  Note: This setting is self controlled and does not require user input.
		PlayerUID - The unique ID calculated and generated on the server for that player.
			   Note: This setting is self controlled and does not require user input.
		ActivePassword - The temporary password active during an admin's login session on
                                 the server. Admins maintain their session without using their
                                 admin password after being authenticated or being re-registered.
				 Note: This setting is self controlled and does not require user 
                                       input. This password setting does NOT need to be touched.
		Status - The player name who last used this admin password. If blank then the
                         admin password has not been used since being (re)enabled.
                         Note: If the 'bAuthenticate' setting is true any failed login due to
                               failed a player authentication will be logged in this setting. 

	SecondaryAdmin[+] - The secondary admin password registry. All secondary admins using the
			    'admin' and 'summon' commands are restricted to the RestrictedKeyword
                            list. Also, secondary admins are restricted from using several 
                            sensitive admin commands noted in the Command Reference section 
                            below. EACH player to be admin MUST have their own UNIQUE admin 
                            password to avoid issues.
                            Note: Read recommendations section 7.1
		AdminPassword - The password used to login as admin.
				Note: In JCoopZ all passwords are now case sensitive.
		bEnabled - To enable this password to be used.
                           Default is False.
		bAuthenticate - The server requires a strict identification of the player who 
                                attempts to login. The LocalID and PlayerUID of the player must
				match the registered settings. Admin password disables itself 
                                automatically if an unauthorized player becomes admin with 
                                bAuthentication true.
                                Note: This setting is not without issues. Read Bugs and Issues 
				      section 8.2
				Default is False.
		AdminIP - The IP address of the player who logged in using this admin password.
			  Note: This setting is self controlled and does not require user input.
		LocalID - The ID calculated and generated on player data.
 			  Note: This setting is self controlled and does not require user input.
		PlayerUID - The unique ID calculated and generated on the server for that player.
			   Note: This setting is self controlled and does not require user input.
		ActivePassword - The temporary password active during an admin's login session on
                                 the server. Admins maintain their session without using their
                                 admin password after being authenticated or being re-registered.
				 Note: This setting is self controlled and does not require user 
                                       input. This password setting does NOT need to be touched.
		Status - The player name who last used this admin password. If blank then the
                         admin password has not been used since being (re)enabled.
                         Note: If the 'bAuthenticate' setting is true any failed login due to
                               failed a player authentication will be logged in this setting. 

	ReLoginTBanLength - The amount of maps to ban a player who exceeded the connect attempts 
			    of the 'AllowedConAttempts' option.
			    Default is 2 (maps).

	UplinkMinutes - The minutes until the server attempts another uplink renewal to the 
			master servers. This option is mostly useful for servers with map 
			timers and/or that have ISP connection problems. It may spit out some 
			log messages in those intervals, but they are harmless.
			Note: This option cannot exceed 60 minutes without being restricted.
			Default is 30 (minutes).

5.3
PlayerControl[+]:
	AllowedMoverBlocks - The amount of allowed times a player can block a mover from 
			     completing it's movement before the player receives penalty damage.
                             The damage a player is dealt is based on the 'BlockedMoverDamage' 
			     option. Players blocking a mover will receive a message telling them
		             to change their position or move away.
			     Note: A setting of -1 will disable mover block detection and the
				   receiving of messages.
			     Default is 2.
 
	bAllowPrivateSay - Allow players to use the 'PSay' command to message privately.
			   Default is True.

	bAllowShields - Allow players to use the 'shield' command to protect themselves briefly
		        from enemy fire. Since the 'shield' command could be considered a form of 
		        cheating it would be logical to not enable this option.
                        Default is False.

	bAllowShotSquelch - Allow players to ignore/squelch/block shots from other players that 
			    hit them. Players can use the 'shotsquelchall' command so that any 
                            hits they receive from players do not move or hurt them in any way.
			    Note: This option has no effect when 'bNoFriendlyFire' is False.
		            Default is True.

	bAllowSummons - Allow normal players to summon actors with the 'summon' command without 
			having admin access. Player summons are restricted by the 
			RestrictedKeyword list. Caution is advised with this option because 
			malicious players could foul up your server very fast.
			Note: Read recommendations section 7.2
			Default is False.
			
	bAntiProfanity - Scan all "Say" and "PSay" messages by players for profanity/cuss words. 
			 Player messages are either blocked or their profanity/cuss word 
			 replaced if the banned word is in the JCZLogger 'BanWord' list. Useful 
			 if you want your server to have a clean family friendly atmosphere.
			 Default is False.

	bIdleKick - Kick players who have not moved or become idle longer than the
		    'IdleAllowTime' option. Players must both move and change their view point in
		    order to reset the idle timer for themselves. Admins are NOT kicked for being 
		    idle.
		    Default is True.

	bKeepScores - Restores scores of players who disconnect or lose their connection and
		      reconnect to the same level.
                      Note: This option MUST be true in order for the 'bShowTravelScores' option
			    to restore total level-to-level traveled 'scores' in the scoreboard.
		      Default is True.

	BlockedMoverDamage - The amount or percentage of damage based on health that a player 
			     receives who exceeds the 'AllowedMoverBlocks' option. Players that 
			     continue to block a mover may be killed freeing up the mover to 
			     complete its movement. Other settings to this option include
                             MD25_Percent, MD50_Percent, MD75_Percent, and Death.
			     Note: Read recommendations section 7.3
			     Default is MD50_Percent (50 percent damage of starting health).

	bNoInventorySteal - Prevent players who use a past player's name to steal and keep their 
			    inventory. When a cheater is detected it will strip off the inventory
		            on the offending player.
			    Note: This option comes not without issues, read Bugs and Issues 
                                  section 8.2
		            Default is False.

	bNoSpam - Prevent players from spamming the same few "Say" or "PSay" messages over in 
                  under 15 seconds.
                  Note: JCoopZ has automatic message flood protection whether this option is true
                        or not so if a player sends over 4 messages of any text too quickly they 
                        are muted for 15 seconds.
		  Default is False.


	bNoViewingAdmins - Prevent players who use the 'viewclass' and 'viewplayer' commands from
                           being able to view admins. Stops nosy players from observing an 
			   admin's every action.
			   Default is False.

	bRetainInventory - When players are killed all inventory that they have collected in the 
                           level and what they had started the level with are restored. All 
                           pickup charges, copies, weapon ammo, and player health are reset back
                           to the number that they were from the end of the last previous level.
                           Newly collected pickups, copies, and ammo from the current level do 
                           not restore or have their amounts/numbers reset.
			   Default is True.
                                
	bSetHealth - Players health will be set to the 'newHealthRef' value at every login,
                     including level changes.
                     Default is False.

	bShotSquelchDefault - Players are automatically set at login to ignore/squelch/block 
			      other shots and hits from players. Players will not need to use the 
                              'shotsquelchall' command in order to squelch hits.
                              Note: This option has no effect if 'bAllowShotSquelch' option
                                    is false.
			      Default is False.

	bShowPlayerShots - Players are notified by a message that they are receiving friendly 
                           fire from other players.
			   Note: In JCoopZ players can only receive 4 messages a second, and when
                           a player is squelching shots no message is displayed.
                           Default is True.

	bShowTravelScores - Shows the total cumulative 'score' traveled from all previously 
                            played levels in the scoreboard.
			    Note: The total traveled score is not displayed in the server's 
                                  query. This is not a bug, an only displays the score of the 
                                  player for that current level.
			    Default is False.

	bTransStartActive - Forces the player's translator to activate and display the text from 
                            the 'TransMessage' option if it's the first level they played on in 
                            the server or if they are using a new player name. 
			    Default is False.

	ConsoleReplace - The console replacement mode in the server. Settings for this option is 
                         either Normal or All. With a setting of Normal only the original and 
                         default unreal consoles on players are replaced with the enchanced 
                         JCoopZ System Console. With a setting of All then every console 
                         including special custom consoles that players might be using are 
                         replaced with the JCoopZ System Console.
			 Note: Players can only disable the JCoopZ System Console with the 
			       'jczCon' command when the setting is 'Normal'.
			 Default is Normal.

	GiveItem[] - Inventory items that will be given to each player at spawn time, login, 
                     respawning after death, and new levels. JCoopZ now includes more capability.
                     You can now specify pickup charges, ammo amounts, and number of copies for
                     specific pickups. You can also specify a group of items to spawn onto a
                     player at random using the ";Random" key word at the end.
		     Note: Amplifiers added to GiveItem MUST be placed after all weapons so that 
			   it does not fail to work after level switches.
		     Pickup Example1: GiveItem[i]=Amplifier
                     Pickup Example2: GiveItem[i]=Amplifier:Charge#9999999
                     Pickup Example3: GiveItem[i]=SomePKG.RedFlashlight:Charge#1000
	             Pickup Example4: GiveItem[i]=Flare:Copies#4
                     Weapon Example1: GiveItem[i]=Stinger
	             Weapon Example2: GiveItem[i]=Stinger:Ammo#200
                     Weapon Example3: GiveItem[i]=SomePKG.Railgun:Ammo#500
                     Random Example1: GiveItem[i]=SomePKG.Belt1|SomePKG.Belt2|SomePKG.Belt3|SomePKG.Belt4;Random
	             Random Example2: GiveItem[i]=SomePKG.Belt1|SomePKG.Belt2:Charge#400|SomePKG.Belt3|SomePKG.Belt4:Charge#300;Random

	IdleAllowTime - The amount of allowed time in minutes a player may remain idle and not 
                        moving before being kicked. Admins are NOT kicked for being idle.
                        Note: The 'bIdleKick' option must be true for this option value to have 
                              effect.
			Default is 10 (minutes).
				
	LoginDenyPeriod - The amount of time in seconds a player is denied from logging in or
                          reconnecting to the server.
			  Default is 15 (seconds), matching default ConnectionTimeout.

	MaxLoginAttempts - Unrelated to connecting to the server, but instead how many tries a 
                           player can try to login as an admin using the 'adminlogin' command. 
                           This option prevents any possible brute force password crack mods from
                           picking an enabled admin password on the server.
                           Default is 3.

	MaxNameChanges - Maximum allowed names changes per login a player can make before the 
                         server stops updating their name.
			 Default is 4.

	MaxSuicides - Maximum allowed suicides a player can perform before the 'suicide' command 
		      no longer works. A small value gives a lame player less of a chance to 
		      flood death messages to other players.
                      Note: Players who suicide will NOT have their lost inventory restored when
                            the 'bRetainInventory' option is true.
                      Default is 4. 


	newHealthRef - The new health value that players spawn, respawn, and login with when the
                       'bSetHealth' option is true.
		       Default is no value.

	RestrictedKeyword[] - Words or phrases in this list are disallowed when using the 'admin'
                              'summon', 'switchlevel', 'switchcooplevel', and 'giveitem' commands 
			      except for the unrestricted Primary Admins. 
			      Default for the first two entries is "npt log " and "npt ban ".

	TransMessage - The starting translator message that players receive when they login, 
                       spawn and respawn after death.
		       Default is "Universal Translator".

5.4
ClientChecker[+]:
	bRestrictConsoles - Whether to allow a custom console passed the 'Full' or 'Moderate' 
		     PackageScan. If this option is true then all custom console players, EXCEPT 
		     admins, will be kicked unless a PackageException is made for what they are 
		     using. Logically for total anti-cheat protection with 'PackageScan' setting 
		     to 'Full' or 'Moderate' this option should also be true.
		     Note: This option has no effect when the PackageScan is either 'Basic' or
                           'Disabled'.

	PackageException[+] - Exceptions for specific unknown client packages.
		PackageName - The name of the unreal package (without extensions).
                              Note: You can authorize a package without providing a PackageLink.
                                    The only consequence is that players can bypass their cheats
                                    by renaming their package.
			      Example: PackageName=ConsolePlus
		PackageLink - The trimmed obj link or PackageLink for exact authorization.
                              Example: (Package ConsolePlus): Names=102 (0K/3K) Imports=49 (1K) Exports=49 (1K) Gen=1

	PackageScan - Scan for unauthorized or unknown versions of unreal packages loaded on 
                      client players. Settings for this option include 'Basic', 'Moderate', 
		      'Full' and 'Disabled'. In 'Basic' mode setting only a client player's most 
		      basic core unreal packages (Epic U packages) are checked for consistency. 
		      In 'Moderate' mode setting most packages on the client player is checked
		      and if there are any unknown packages which could be used for cheats. 
		      Texture packages that could effect S3TC clients are ignored with 'Moderate'. 
		      In 'Full' mode setting every package on the client player is checked for 
		      consistency and if there are any unknown packages which could be used for 
		      cheats. To authorize an unknown client package its obj link or PackageLink 
		      must be added to the PackageException list. Administrators are NOT kicked 
		      or temporarily banned for having unknown packages, and instead just messaged
		      about the detection.
		      Note: Read Bugs and Issues section 8.3.
		      Default is 'Disabled'.

5.5
Effects[+]:
	bShowEnds - Display the end teleporters to all players in the server.
		    Default is True.

	bShowExtraEffects - Will make the server show all the special effects you see in the 
                            single player game (such as ring explosion from the asmd).
                            Default is False.

	ServerTravelPause - Number of seconds that the server will pause when the ending is 
                            triggered before actually switching maps. Gives players a few seconds
                            to say "GG" or look at scoreboard.
			    Default is 2 (seconds).	    
	
5.6
SequenceControl[+]:
	CustomMapTimer[] - Elements that control the MapTimers available to JCoopZ, but with
                           more capability then before. When a regular timer expires, the server 
                           will automatically switch the map to the next map in sequence. When a
                           minimum timer expires the players can end the level. Format for the 
                           custom timer is: "CustomMapTimer[i]=mapname:timelimit" or 
                           "CustomMapTimer[i]=mapname;Minimum:timelimit" or
                           "CustomMapTimer[i]=mapname:timelimit;Minimum:timelimit"
                           Regular Example: CustomMapTimer[i]=Naliboat:10
                           Minimum to End Example: CustomMapTimer[i]=Naliboat;Minimum:5
		           Both Example: CustomMapTimer[i]=Naliboat:10;Minimum:5

	DefaultTimeLimit - Timer value used for a map when no CustomMapTimer entry exists for 
			   this map. A timer value of zero disables the timer.
			   Default is 0.

	Sequence[+] - Control the sequence of maps by specifying entries in the Sequence array. 
                      When an entry matching OriginalNext is found in the ending teleporter, the
                      NewNext map is used instead.
		OriginalNext - The mapname (without .unr extension) that the current map will
                               switch to next.
			       Note: Read example 2 below for an optional use of this setting.
		NewNext - The mapname (without .unr extension) that the current map will be
                          re-mapped to switch to next INSTEAD.
		NoURLMap - The mapname (without .unr extension) that lacks an end teleporter or 
			   has no URL. Only use this setting if you have nothing to specify for 
			   OriginalNext.
		Example: Sequence[i]=(OriginalNext="EndGame",NewNext="Vortex2",NoURLMap="")
                         The QueenEnd map (which normally switches to EndGame) will now switch to
                         Vortex2 instead.
		Example 2: Sequence[i]=(OriginalNext="QueenEnd:EndGame",NewNext="Vortex2",NoURLMap="")
			   The optional ":" colon is used to separate the current map from the 
			   map name URL it was going to switch to next. Used in cases when multiple
			   custom maps may switch to the same next map.
		NoURLMap Example: Sequence[i]=(OriginalNext="",NewNext="Gateway",NoURLMap="EndGame")
				  Since the original EndGame map lacks an end teleporter it will
				  be directed to Gateway once a configured map timer for EndGame 
				  expires.

5.7
JCZLogger[+]:
	AllowPlayer[+] - The innocent players allowed to bypass a perm ban entry. The most
			 important settings that must be filled are the PlayerIP and PlayerName
			 settings.
		PlayerConsole - The console this player uses.
		PlayerIP - The IP address of the player you want to allow.
		PlayerName - The player name you want to allow.
		LocalID - The ID signature generated on player data to allow.
		PlayerUID - The unique ID signature generated on the server for the player to 
			    allow.

	bAllowSpecials - Allow specific players innocently effected by a ban to login and stay in
                         the server.
			 Default is True.

	BanWord[+] - List of banned words to block or replace from players' "Say" and "PSay"
		     messages.
		EnforceAction - Action to perform when a banned word is found in a player's
				message. It can be set to either 'Block' the message or 'Replace'
				the word.
		ProfanityWord - The word which is banned.
		ReplaceWordWith - The word to replace the banned 'ProfanityWord' with.

	bBanByPlayerName - Reject players from connecting to the server if they use a name that
                           is in the PermBanPlayer list. This is mostly a legacy option and no
                           longer reliable.
			   Note: Read recommendations section 7.4
			   Default is False.
	
	bLogPlayerInfo - Let JCZLogger log and store information on each player who connects and
			 joins the server.
			 Note: The admin command 'getalias' requires this option is true.
			 Default is True.

	LoggedPlayer[+]
		PlayerConsole - The console(s) this player was logged as using on the server.
		PlayerIP - The IP address this player was first logged as using on the server.
		PlayerName - The names this player has used on the server.
		LocalID - The ID signature(s) generated on player data for this player.
		PlayerUID - The unique ID signature(s) generated on the server for this player.

	PermBanPlayer[+]
		PlayerConsole - The console(s) this player uses on the server.
		PlayerIP - The IP address or IP network range of this player.
		PlayerName - The name this player has used on the server.
		LocalID - The ID signature(s) generated on player data for this player.
		PlayerUID - The unique ID signature(s) generated on the server for this player.

	TempBanPlayer[+]
		PlayerConsole - The console(s) this player uses on the server.
		PlayerIP - The IP address or IP network range of this player.
		PlayerName - The name this player has used on the server.
		LocalID - The ID signature(s) generated on player data for this player.
		PlayerUID - The unique ID signature(s) generated on the server for this player.

5.8
VoteControl[+]:
	bMapVoteTieRandom - When there are two or more maps tied in votes then the winning map is
			    chosen at random. With this option false then there is no winning 
			    map in a tie, and the server will travel to the map normally next in 
			    order.
			    Default is False.

	bMapVoting - Players can vote for maps using the 'MapVote' command to play next in order 
		     on the server. MapVotes are counted during the ending of a level. A majority
		     of players must participate with a vote for the server to allow a map win.
		     Note: The required participant majority is determined by the 'MapVotePct'
			   option.
		     Default is False.

	bVoteEnding - Players can vote to end a level when ready. Once a majority of
		      players voted the server will travel to the next map after hitting the
		      end teleporter.
		      Note: The required majority percentage is determined by the 'VoteEndPct' 
			    option.
		      Default is False.

	MapVotePct - The percentage of MapVote participants required to allow a map win. When the
		     percentage is met the map with the most votes becomes the winning map that 
		     is next in order.
		     Default is 0.500000 (50%).

	VoteEndPct - The percentage of players required to be ready to end before ending the
		     level is possible. When the percentage is met a player can end the level
		     by reaching the end teleporter to travel to the next map.
		     Default is 0.510000 (51%).

	VoteMap[+] - List of maps (without .unr extension) that can voted for to be next in order
		     on the server. To vote and see the list in-game use the 'MapVote' command. 


======================
6. [Command Reference]
======================
Parameters are listed with the commands. Parameter in <> are required; parameters in [] are 
optional; <parm1|parm2|parm3> is a list of parameters; one of which is required.

6.1
Changed unreal commands (too much to list, but the basics from the JCoop4 readme)
	Admin <command> - Admin passes commands to the server for execution. For admins not 
			  logged in as primary admin the command string is checked against the 
			  restricted keyword list.

	Ghost - Ghost makes you invisible and not a projectile target.

	Say <msg> - Say maintains a short history of the player's recent messages, and will 
		    prohibit repetition or flooding for a brief period of time. This is to help
		    cut down on the amount of spam in the game. As well, say will no longer send 
		    on an empty string, which some players will use to constantly beep the 
		    consoles of other players. As well, say can also log all chat comments to the
                    game log, if configured.

	Setname <newname> - Setname will not work if player is prohibited from changing name.
		            Note: If the player exceeds the 'MaxNameChanges' option their new 
                                  names is also not updated on the server.

	slomo - Fixed to only be accessible to admins.

	switchlevel - Fixed to only be accessible to admins. For admins not logged in as primary 
		      admin the URL string is checked against the restricted keyword list.

	switchcooplevel - Fixed to only be accessible to admins. For admins not logged in as 
			  primary admin the URL string is checked against the restricted keyword 
			  list.

	suicide - The number of suicides a player is allowed is limited, and can be 
		  configured by the server administrator. When a Player is within 5 counts of his
		  suicide limit, he will get a message for each suicide warning of the limit. 
		  When the suicide limit has been reached, no more suicides will be allowed.

	addbots - Normally a command that will not function in CoopGame. It now works if it's
		  used from an admin command (admin addbots <#>) when the bTeamGameMode option is
		  true.

	summon - For admins not logged in as a primary admin, the summon string is now checked 
		 against the restricted keyword list.

	teamsay - Just calls say, so there will be no opportunity for anonymous say by players 
		  using teamsay in a non-team game.

	walk - In the single player game, after ghosting or flying, you use walk to return to 
	       normal play mode.

6.2
Original JCoop4 Commands
	advance - Will advance to the next map in sequence, with sequence translation if defined.
		  Note: This command is also available from the server game console.

	announce - KillID and KickID will provide announcements to all players or not. This 
                   command will toggle whether these messages are delivered to other players. The
                   Player killed or kicked will always get a message, as will any admins in the 
                   server.

	end [on|off] - Controls level endings. 'end' will show current ending status; 'end on' 
                       turns on the players ability to end; 'end off' turns off the players 
                       ability to end the level. With no option, lists the ending status. When 
                       the level ending is off, admins will be notified if a player hits the 
                       ending. All players will be notified when a player successfully ends the 
                       level.
		       Note: This command is also available from the server game console.

	freeze <ID> - You provide the ID of the player you wish to freeze. When you do this to a
		      player, he is stripped of all weapons, made so he cannot move, made 
                      invisible, and not collide with other players. This player is basically 
                      cut off from the ability to interact with the game. You can use this to 
                      really shut down an offensive player short of kicking. Use restart <ID> to
                      restore this player to the game.

	GetID - Legacy JCoop command. Will return the current list of players, along with their 
                game ID number. The ID is also displayed in the scoreboard.

	giveAdmin <ID> - Player is given temp admin privilege (with restrictions) and lasts only 
			 during the current "life". This means it goes away for reconnect, or 
			 when the level changes, or the player dies. Secondary admins cannot use 
                         this command.

	GotoP <ID> - This will attempt to move your PlayerPawn to a position just behind the 
                     selected player. Good for rapidly moving to a players position.

	help [command] - This will display some useful reminder text. 'help' alone will show a 
                         list of the new commands with their parameters. 'help [command]' will 
                         show more detail for the specified command.
			 Note: This command is your friend, USE IT. Also, this command is 
			       available from the server game console to learn what commands
                               can be used there.

	jsay - This will send a message to all admins in the game privately, that is, regular 
               players will not see the text. All jsay activity is logged to the game log. To
	       open a jsay prompt from a key press add the bind "JAdminTalk" without quotes to an 
	       unused key.
	       Note: This command is also available from the server game console.

	keepout <ID|list|clear> - This legacy JCoop command is disabled and for the most part 
                                  obsolete.

	kickid [ID] - This will immediately kick the selected player. Useful for those players 
                      with names you cannot type easily in the game. A notice will be sent to all 
                      admins, and logged in the game log. If announce is set to tell players, 
                      then all players will be alerted to the kick. When used without [ID] will 
                      attempt to repeat the last kickid command.
		      Note: This command is also available from the server game console.

	killid [ID] - This will kill the selected player, with no score loss for the admin that 
		      issues the command. A notice will be sent to all admins, and logged in the 
                      game log. If announce is set to tell players, then all players will be 
                      alerted to the kill. When used without [ID] will attempt to repeat the last
                      kickid command.

	kni - This will kill nearby inventory items (radius 100, normal summon distance is 72). 
              Useful if you hit a summon bind accidentally, or put too many weapons in the same 
              spot and you are suffering from that annoying respawn problem (constant respawning 
              if more than three weapons in/near same spot).

	knp - This will kill nearby pawns (not PlayerPawns!) (radius 100, normal summon distance
              is 72). Useful when you inadvertently summon a monster.

	MapTimer <on|off|minimum on|minimum off|show|set N> - 'MapTimer on' will turn on the 
                                       maptimer. 'Maptimer off' turns off the maptimer. 
                                       'Maptimer show' will show the current maptimer status. 
                                       'Maptimer set <N>' will set the current maptimer for N 
                                       minutes and activate the timer, unless N is zero, in which
                                       case the timer is disabled. 'Maptimer minimum on' turns
                                       on the minimum timer if configured for this map.
                                       'Maptimer minimum off' turns off the minimum timer.
                                       This makes no changes in the unreal.ini file; custom 
                                       maptimer values must be set through the Advanced Options, 
                                       or by editing the Unreal.ini file directly.

	Mute <ID> - This will mute the selected player. That is, that player can no longer use 
                    the say/teamsay functions. This function is a toggle, so to unmute a player, 
                    repeat the 'mute ID' command.

	protect - Some commands are restricted from affecting admins by default. 'protect' is a 
                  toggle to turn off this protection (or turn it back on). It is rare that you 
                  should have to kickid an admin, but if you ever do, you will need to use the 
                  protect command first. Restricted for secondary admins.

	psay <ID> <msg> - This will post a private message to the selected player.
			  Note: This command is also available from the server game console.

	rename <ID> <newname> - This will rename the selected player to 'newname'. Once renamed,
                                player will be prohibited from changing his own name until an 
                                admin changes his name a second time (player rename prohibition 
                                is a toggle).

	restart <ID> - This will restart the selected player at the games playerstarts (or 
                       jzPlayerStart, if any have been summoned). Can be used to 'rescue' players
                       that fall in lava, and to release a player that has been restricted with 
                       'freeze'.

	revokeAdmin <ID> - This will remove the admin privilege for the selected player. 
			   Secondary admins cannot use this command.

	SelfSay <msg> - Any player may use this command. It will simply put the text onto the 
                        console for the current player only (not broadcast) and is useful to get 
                        some output from your scripts.

	SendEvent <eventname> - Legacy JCoop command. Removed in JCoopZ because unreal's original
                                "admin causeevent <eventname>" command works just fine.
                                
	SetAutoActivate True/False - Any player may use this command. This will set the 
                                     bAutoActivate for your playerpawn. When TRUE, then inventory
                                     items you pick up will be automatically activated (those 
                                     that support this feature), similar to the DeathMatchGame 
                                     behaviour. When FALSE then normal coop game behaviour. This 
                                     value is saved in the client's user.ini file.

	shield - Will summon a shield for the player similar to the SkaarjTroopers shield (not 
                 shieldbelt) that last for 5 seconds.
                 Note: This command only works if the 'bAllowShields' option is true on the 
                       server. Also, this command is restricted to only work every 15 seconds.

	showtags [radius [actor class]] - 'ShowTags' will show all actors that have tags. 
                                          'showtags 500' will show all actors with tags in a 500
                                          radius. 'showtags 500 mover' will show all mover tags 
                                          within 500 radius. 'showtags 0 mover' will show all 
                                          mover tags in the level. To use the 'actor class' 
                                          parameter you must have a radius; use radius=0 to show 
                                          all actors in the level. Use this command to find a 
                                          name needed by 'admin causeevent'.

	SummonP <ID> - The selected player will be teleported to a position directly in front 
                       with an orientation facing the summoner.

	Tel - Tel lists the teleporters and their URLs (same as 'tel list' in JCoop3).

	Who - (use at game console) who will put into the game log the current list of players 
              along with some other info. Can be used at the game console, so no need to start up
              your game client to see who is in the server.

6.3
JCoopZ Admin Commands
	shotsquelchmode - Temporarily turn on/off shot squelch ability for players. At level
			  switch squelching returns back to normal. Used in some cases where you 
			  want to force players to be able to be hit. 
			  Note: This command is also available from the server game console.

	tban <ID> <#> - Temporarily ban this player for <#> number of maps and kicks.
		        Note: This command is also available from the server game console.

	tbanshow - Show temporarily banned players from tempbanplayer list.
		   Note: This command is also available from the server game console.

	tunban <#> - Unban a player from a number spot on the temp ban list.
		     Note: This command is also available from the server game console.

	pban <ID> - Permanently ban this player. Adds the player information to the permbanplayer
                    list and kicks. Secondary admins cannot use this command.
		    Note: This command is also available from the server game console.

	pbanrange <beginIP-endIP> - Permanently ban an IP range (use '-' to separate ranges).
				    Secondary admins cannot use this command.
				    Example: pbanrange 172.33.45.0-172.33.45.255
				    Note: This command is also available from the server game 
                                    console.

	pbanshow - Show permanently banned players from perm ban list.
		   Note: This command is also available from the server game console.

	punban <#> - Unban a player from a number spot on the perm ban list. Secondary admins 
		     cannot use this command.
		     Note: This command is also available from the server game console.

	allowshow: Show specially allowed players from the allowplayer list. Shows players who 
                   needed special rules to get around other bans.
		   Note: This command is also available from the server game console.

	removeallow <#> - Remove a specially allowed player from a number spot on the allowplayer 
                          list. Secondary admins cannot use this command.
			  Note: This command is also available from the server game console.
	
	getip <ID> - The IP address of this player.
		     Note: This command is also available from the server game console.

	getalias <ID> - The alias names used by this player. This requires the 'bLogPlayerInfo'
			option to be true on the JCZLogger.
			Note: This command is also available from the server game console.


	getplinfo <ID> - The unique information and identifiers about this player. Secondary 
			 admins cannot use this command.
			 Note: This command is also available from the server game console.

	dumprecord - Dumps the server's logged player information to your local log. Secondary 
		     admins cannot use this command.
		     Note: This command can take up to 10 seconds to complete while producing
			   a large amount of network congestion and lag on your client 
			   connection. Reconnect or wait 20 seconds after invoking the command
			   while the congestion clears.

	hookmutator <sub-command> - Internally hooked mutators onto JCoopZGame. Eliminates the 
                                    requirement to run mutators in the startup command-line.
				    'hookmutator show' will show all internally hooked mutators
				    'hookmutator add <class>' will add a mutator class to list
				    'hookmutator remove <class>' will remove a mutator class from
                                     the hookmutator list.
				    Note: This command is also available from the server game 
                                          console. Also, this command ONLY works for the first
                                          primary admin.

	adminpw <sub-command> - Admin password control for the server.
				'adminpw show' will show all admin password entries and their 
                                status from the list.
                                'adminpw addprimary <adminpassword>' will add a primary admin 
                                password and enable.
				'adminpw addsecondary <adminpassword>' will add a secondary admin
				password and enable.
				'adminpw remove <adminpassword>' will remove any admin password 
                                and disable entry.
				'adminpw authenticate <adminpassword>' will enable or disable 
                                player authentication for this password when used.
				'adminpw enable <adminpassword>' will enable or re-enable an 
                                adminpassword and clear old information.
				'adminpw disable <adminpassword>' will disable an adminpassword 
                                from usage.
				Note: This command is also available from the server game 
				      console. Also, this command ONLY works for the first
                                      primary admin.

	adminlogout - Logout from being administrator.

	giveitem <ID> <class> - Give the specified item (class) directly to the player. Useful
				if you need or want to give an item to another player without
				having it respawn in the level for everyone else. For admins not 
				logged in as primary admin the class string is checked against 
				the restricted keyword list.

	removeitem <ID> <class> - Remove the specified item directly from the player. Handy when
				  a player becomes abusive with specific items.

	stripinventory <ID> - Strip off collected inventory from this player. Used to punish or
			      let a player collect new inventory fresh.

	banword <word> [withWord] [#] - Ban a word from player messages.
					Example1: 'Banword dang dung 1' which bans the word 
						  "dang" and replaces it with "dung" in messages.
					Example2: 'Banword dang' which blocks messages with
						  "dang" in it.
					Note: The 'bAntiProfanity' option must be true for a 
					      banword to be detected.
	
	banwordshow - Show banned words from the banword list.
	
	unbanword <#> - Unban a word from a number spot on the ban word list.

	knd - Kill nearby decorations (radius 100) that are not static. Useful for destroying
	     summoned decorations but not every one of them in the level.

	jcz <sub-command> - Custom created server commands. Admins or authors can create their
			    own sub-commands by extending the jCoopZSSPF and jCoopZSSGF classes.
			    Note: This command is also available from the server game console.

6.4
JCoopZ Normal Commands
	shotsquelchall - Ignore shots and hits from other players. Sometimes players can become
			 annoying and abusive causing you to be hit/shot off ledges. When using
			 this command to enable squelching you are no longer hit or moved.

	jczcon - Toggle on/off the JCoopZ System Console. Server admin settings dictate the 
		 functionality of this command.
		 Note: This command can only disable the JCoopZ System Console for players using
		       a default console and when the admin does not force the replacement of all
		       consoles. For custom console players this command has no effect.

	openglfix [on|off] - Toggle the style mask fix for Smirftsch's OpenGL. In older versions
			     of the opengl renderer it is necessary to use this to repair the 
			     blank texture gap problem on actors or parts of a level.
			     Note: This fix feature only executes when it detects the opengl
				   renderer in use.
			     Default is False (off).

	mapvote [#slot] - Show the mapvote list and vote for a map number or slot. The map with
			  the most votes from a majority of players becomes the next map played.
			  mapvote: Show the mapvote list of maps to choose for the next in order.
			  mapvote #slot: Vote for a map number or slot to be the next map.
			  Note: This command only functions when the server administrator has
				enabled 'bMapVoting' option and has added a list of maps to vote
				for.

	voteEnd [yes|no] - Toggle your vote to be ready for the level to end. Once a majority of
			   players voted the server will travel to the next map after reaching 
			   the end teleporter.
			   Note: The majority percentage is dictated by the server administrator
				 by controlling the 'VoteEndPct' option.

	adminlogin <adminpassword> - Login as an administrator. A player has a limited number
				     tries based on the 'MaxLoginAttempts' option to provide the
			             correct admin password.


====================
7. [Recommendations]
====================
7.1
Configure the first PrimaryAdmin entry with the admin password of the head server admin.
Passwords are now case sensitive, so you can add extra difficulty to your passwords. I suggest
not turning on 'bAuthentication' for the first Primary admin. Also, the first primary admin is 
the ONLY slot that can make use of the commands 'adminpw' and 'hookmutator'. Each admin slot 
whether it is SecondaryAdmin or PrimaryAdmin must have a UNIQUE password. SecondaryAdmins are 
restricted in the same fashion as TempAdmins in the previous JCoops. I HIGHLY suggest managing 
all of your admins or their passwords from in-game using the 'adminpw' command.

7.2
For the 'bAllowSummons' option it is HIGHLY recommended that it is NOT used unless your game
server is GamePassworded. In that restriction only close and trusted friends will be able to
login and summon without admin access. If this option IS used in a public server don't be 
surprised when you find out the server was crashing or being flooded with spawned actors from 
malicious players bogging it down.

7.3
When configuring the 'BlockedMoverDamage' option it is recommended that a 'Death' setting only be
used when the 'AllowedMoverBlocks' option is a higher number (such as 4 - 8). Sometimes it is
necessary or becomes accidental to block a mover once or twice and it wouldn't seem fair if a 
player was given a death penalty for it.

7.4
The 'bBanByPlayerName' for the most part should not be used. The option is from a time when 
banning was required by player name. The option was left in JCZLogger just in case it could be 
useful in very rare instances.


====================
8. [Bugs and Issues]
====================
8.1
JCoopZ1 was thoroughly tested and all major bugs 'should' be fixed. However, it is still possible
that some problem could exist or a new unforseen issue that was missed. If you discover an 
obvious bug in the mod or a problem in unreal not addressed please e-mail me (information at the 
top).

8.2
There's a chance of some minor glitches or tiny annoyances with particular features turned on. 
Most notably the 'bNoInventorySteal' playercontrol option and the 'bAuthenticate' admin option.
These options perform advanced checks on a player to achieve a positive lock on their identity. 
In some rare cases these players' identity signatures change often causing JCoopZ to react. If
players report to you that their inventory is removed from them every so often you might consider
disabling the 'bNoInventorySteal' option. If a particular admin keeps losing admin access fairly 
consistently due to JCoopZ detecting unauthorized admin password usage then the 'bAuthenticate' 
setting for that specific admin password might need to be disabled.

8.3
The 'PackageScan' option in JCoopZ is only as up to date to support the most common unreal 
patches 224, 225, 226f/Gold, and 227. If and when a 228 patch at oldunreal.com is finished JCoopZ 
will most likely require a compatibility update to support it. The PackageException list cannot 
allow unknown versions of core unreal packages (such as what might be with 228), only regular 
unknown packages. So when the 228 patch is released it is recommended that the 'PackageScan' mode 
be set to 'Disabled' if it wasn't already and an e-mail be forwarded to me to supply a new 
updated serverside build. Also, with the development of the S3TC unreal project at oldunreal.com 
new PackageExceptions may need to be added to support players using the textures. JCoopZ's 
'PackageScan' currently only supports S3TC textures that originated from the UT CD.

8.4
Admins might see admin-only messages in very rare occurences of a "Possible clientside anomaly" 
on a player. This usually means that this player 'could' have edited their downloaded JCoopZ 
package to act differently than what it was designed to do. It can also happen when the client 
uses client side mods that try to effect server checks. If such a message only happens once 
from a player than it's probably a false detection, and JCoopZ only kicks. However, if this 
player is detected with an anomaly a second time they are temporarily banned because of a high 
probability.

8.5
A tiny number of mods using non-compliant operating methods may not be fully compatible. Such 
mods might apply those methods to use a part of original unreal architecture that it was never 
intended for or they may apply to an unreal programming feature that is already heavily depended 
or restricted by the GameType. For instance, a pawn invalidly assigned as a player (stability), 
an actor attempting to assign values to reserved variables (stability, security), an actor 
attempting to re-assign GameType controlled features (HUD, ScoreBoard; security, JCoopZ 
dependant). Some incompatibilies may be easily prevented (or not) so developers of those mods 
that want full compatibility are encouraged to e-mail me to see if an alternative or code 
correction can be applied for a solution.

8.6
External custom PlayerPawn mods will not be compatible if the classes are not compiled as a 
subclass extending as a child of jCoopZ1.jzPlayerPawn. This restriction is critical to security
and for complete operation with JCoopZ. To support custom PlayerPawn classes in 224/225/226 that 
are compatible the developer can create a subclass extending jCoopZ1SSF.jCoopZSSGF and make 
changes to the jCoopZSSGF.ModifyLogin() function. To run the custom jCoopZSSGF subclass, specify 
it in the 'JCoopZGameSSGF' RunTime option. Alternatively, the developer can create a subclass 
extending jCoopZ1SSF.jczGameRules mutator class and make changes to 
jczGameRules.ModifyPlayerSpawnClass() function. To support custom PlayerPawn classes in 227+ it's 
recommended the developer creates a server side Engine.GameRules mutator subclass and with 
changes to the GameRules.ModifyPlayerSpawnClass() function. Developers are encouraged to e-mail 
me for help and advice on how to better support custom PlayerPawn classes.


============
9. Thanks
============
9.1 [JCoopZ1]
Joss Liu                   - For granting me rights and permission to build my own JCoop based 
			     releases using the JCoop5 source.

WingedUnicorn and Zora     - For developer interface support in Nephthys. Without it I wouldn't
			     have a stable logger or advanced connection DoS security. Also for
			     sharing some security and bug fixing information.

SmartBall 	           - For assistance in console replacement and the sharing of ideas on
			     fixing problems within these consoles. I appreciate it considering
			     it's a pain to make a replacement console free of issues!

}TCP{Wolf              	   - For developing the first reliable U1 IP logging uscript and the 
			     IPMaggot logger (from UTF9B) which I gained early knowledge, help 
			     and based from.

Oblivion[CW] and Hyper.nl  - For the valuable feedback, ideas, and support needed to insure 
			     JCoopZ was made ready for the public. A lot of bugs were ironed out
			     with their help and server mod diversity.
			     Oblivion[CW]: For making the JCoopZ scoreboard logo pictures.

Smirftsch		   - For assistance with Linux 227 client compatibility.

Coop Players 	           - The small bits of feedback, and feature suggestions mentioned over 
			     the years that I might have added.

9.2 [JCoop1 - 5: Old Credits (by Joss Liu) From JCoop4 Readme]
Thanks to Zora for help with game/map problems I introduced.
Thanks to Maniac, Cherokee, Teela, DarkSW-Wolf for admin help, endless patience and constant 
	stream of ideas.
Thanks to all my server players for their patience with all the downloads, play testing, ideas 
	and feedback. Special thanks to Grateful_Friend for his enthusiasm and ideas.
Thanks to Zombie for feedback and great suggestions.
Thanks to digital zynthetic, }TCP{Wolf, and Koopa for ideas used here.


===============================
10. [Copyright and Permissions]
===============================
10.1
This mod is copyrighted 2005-2012 by Zombie (Of DZ). Much of the pure text sourcecode to this mod 
is removed from the U packages and will NOT be distributed to the public. If an author decompiles 
any portion of JCoopZ to obtain information for development of a mod please at least give credit 
where it is due. Authors may use this mod as a base to build their own mods extending from its
classes, but all original JCoopZ files MUST remain unedited.

10.2
User may not use this mod in commercial exploitation for any type of profit. User may distribute 
this mod to anyone he/she wishes, as long as user does not charge any type of fee for the
distribution of this mod. ALL files of the distribution package must be provided unedited in 
original form.


Disclaimer
The author DISCLAIMS ALL DAMAGE to ANY of your property (whether it is your hardware, software, 
storage medium, or anything else computer, or non-computer related) that may be caused by the 
use, misuse, or distribution of this mod, even if the author has been advised of the possibility
of such loss. If you lose anything (including, but not limited to, time or money) as a result of 
the use, misuse, or distributing of this mod, YOU ARE FULLY RESPONSIBLE for ALL costs, and you 
agree to hold the author COMPLETELY harmless for ALL costs in ANY shape or form. 

Trademarks 
UNREAL (c)1998 Epic Megagames, Inc. All Rights Reserved. Distributed by GT Interactive Software,
Inc. under license. UNREAL and the UNREAL logo are registered trademarks of Epic Megagames, Inc.
All other trademarks and trade names are properties of their respective owners.