Welcome to Nitro2

© 1999 by Niewi of NitroForce

 
 
CONTENT
 
Credits Forwarding Proxy Message Commands
What is Nitro2? Firewalling Linked Proxy Handling
Files included Connecting Nitro2 / Getting started Disable Nitro2 features from Quake Servers
Installation Nitro2 initialisation phase Nitro2 Proxy Queries
Starting Nitro2 Nitro2 aliases How to add new Model names to Nitro2
Quitting Nitro2 Controlling the Menu Disclaimer
The Nitro2 Console Nitro2 Proxy Commands Copyright / Permissions
MasterServer Setup Nitro2 Easyfont
 
 
Credits:
top
 
i will just waste some place here to thank a few guys for their work and their support!
first of all i want to thank you for the interrest in my work, but it's not only one guy creating Nitro2 there are many people helping me doing this.
 
thanx to the admins and design teams of
 
vekoduck (nitro.vekoduck.com) inf, vekotin and niomic
splatterworld   (nitro.splatterworld.de)   shock, thele and lion
gxp (www.gxp.de) zulu and reschky
torxed (www.torxed.de/nitro)   torx and eskayp
 
for their friendship and for letting me using their resources/times
 
thanx to doc for the design of this documentation
 
thanx to my betatesters who are really stressed getting every day a new beta to test i can not name them all, just the hardcore: kerstin, Grisu, siro and doc
 
and finally a big thanx to my clan which is still supporting me even when they can not understand that the first game Nitro2 is supporting is Quake2 and not QuakeWorld :))
 
What is Nitro2?
 top
 
 Nitro2 is a pure 32bit hackprotected application providing the following services:
 
 QuakeWorld & Quake2 Proxy:
 Forwarding Proxy:
 Masterservers:
all features of Nitro2 can be controlled using the Nitro2.ini, only activated features will allocate memory and use cpu resources
Nitro2 is working totally with dynamic allocated memory and multithreaded, if you only need the Quake2 Proxy feature the rest will not be initialised.
 
Files included:
top
 
Nitro2.exe : the Proxy (win32)
Nitro2_libc6 : the Proxy (linux libc6 needed, compiled using suse 6.0)
docs/Nitro2.htm : this documentation
docs/History.htm : Version informations
Nitro2.ini : Proxy initialisation file
banip.ini : an example ban config file (read the firewalling section for more info)
allowip.ini : an example allow config file (read the firewalling section for more info)
qwmodels.ini : quakeworld modelname file
qwstats.ini : quakeworld statistic information file
q2models.ini : quake2 modelname file
q2stats.ini : quake2 statistic information file
id1/Nitro2.cfg : a QW Nitro2 configuration file (copy it in your quake/id1 directory!)
id1/Nitro2_alias.cfg   : a QW Nitro2 alias file (copy it in your quake/id1 directory!)
id1/menu.cfg : a default QW config to bind the menu commands
baseq2/Nitro2.cfg : a Q2 Nitro2 configuration file (copy it in your quake2/baseq2 directory!)
baseq2/Nitro2_alias.cfg   : a Q2 Nitro2 alias file (copy it in your quake2/baseq2 directory!)
baseq2/menu.cfg : a default Q2 config to bind the menu commands
 
Installation:
top
  a detailed installation help in english and german can be found in the docs directory
docs/Install_ger.htm (deusche version)
docs/Install_eng.htm (english version)
 
Starting Nitro2:
 top
 
 usage: Nitro2 [-cIP:[PORT]] [-g] [-v] [-s] [-m] [-iFILENAME] [-nIP]
 
   -cIP[:PORT]  :  initialisation of the autoconnect to server feature. this will autoconnect all new clients to the specified IP:PORT
   -g1 or -g2  :  perform a GameSpy/QView startup -g1 will startup QuakeWorld -g2 will startup Quake2
QView users have to change the STARTER_CONFIG variable in the Nitro2.ini to QView.cfg
(not for PingTool users!)
   -v  :  turn on verbose mode, in this mode Nitro2 will print additional informations about the Masterserver activities.
   -m  :  do not perform a menu startup
   -s1 or -s2  :  perform a game startup using the game variables set in the Nitro2.ini -s1 will startup QuakeWorld -s2 will startup Quake2
this is not needed for GameSpy startups!
   -q  :  starts Nitro2 in quiet mode (no messages will be printed in the Nitro2 console!)
   -f  :  do not start the Nitro2 dos console, you will not be able to control/quit Nitro2 using the Nitro2 console.
on win32 systems this will free the used console for other applications or it will close it.
   -iFILENAME  :  use FILENAME instead of the Nitro2.ini for the startup configuration
   -nIP  :  set a network device to use for nitro2 activities, this is useful if you have more than one network device in your system and you want Nitro2 just to hook on one of them or if you use the Masterservers and you register a localhost game to it, in this case the given device ip will be used instead of the localhost ip in serverlist request
 
 example: Nitro2 -v -iMaster.ini -n192.168.0.1
 
   start Nitro2, enable the verbose mode and force Nitro2 to use 'Master.ini' file instead of Nitro2.ini
   set 192.168.0.1 as networking device for all nitro2 services
 
 normaly you don't have to use any commandline parameters (except the -g switch for GameSpy/QView users!)
 
Quitting Nitro2:
 top
 
 There are three ways to quit Nitro2:
 
 1.   if you use Nitro2 to startup your Game you can set EXIT = Yes in the Nitro2.ini
this will force Nitro2 to shutdown automatically when you quit the Game
 
 2.   you can set a timelimit using EXITAFTER in Nitro2.ini. if Nitro2 is idle for the given time
it will exit automatically!
 
 3.   you can use the Nitro2 ConsoleCommand q to exit.
 
The Nitro2 Console:
top
 
on startup of Nitro2 the Nitro2 console will appear and the startup informations will be printed in it you can use this console to exit, gain informations or to config the forwarding proxy
 
type h for help in it and you will get a list of commands
 
Command list:
 
   s  :  display status informations about the Nitro2 services
   v  :  turn verbose mode on/off (like the Nitro2 commandline parameter -v)
   fwip[=ip[:port]]  :  set new forwarding ip - like FW_IPADDRESS in the Nitro2.ini
all new connecting clients will be forwarded to the new address. currently connected clients remain untouched!
do not use a space in the command!
   h  :  help
   q  :  quit Nitro2
 
MasterServer Setup:
top
 
A Masterserver can be used to hand GameSpy/PingTool Serverlists of running QuakeWorld/Quake2/Quake3Arena/Kingpin or Half-Life Servers you can enable the Masterservers by editing the Nitro2.ini
Masterservers are extremely useful on big lan sessions or if you want to provide a public Masterserver in the Internet!
 
how to tell a Quake2/QuakeWorld/Half-Life/Kingpin Servers to register at the Masterserver:
    add to the startup configuration file of your Server (or type it in the console of it)
setmaster ip:port (Half-Life requires a space instead of an ':' between ip and port!)
where ip stands for the ip-address of Nitro2 and port for the Q2_MASTERPORT/QW_MASTERPORT/HL_MASTERPORT /KP_MASTERPORT set in the Nitro2.ini
sometimes Quake2 Servers are sending the first info to the Master too fast so that the first heartbeat gets lost
i think it's because Quake2 is not fully initialised when it tries to send, you can type 'heartbeat' in the serverconsole of Quake2/QuakeWorld/Half-Life/Kingpin to force it to send a heartbeat to the Masterserver.
if setmaster is specified the Games sends one heartbeat every 5 minutes to the specified Masterserver.
 
how to tell a Quake3Arena Servers to register at the Masterserver:
    add to the startup configuration file of your Server (or type it in the console of it)
sv_master1 ip:port
where ip stands for the ip-address of Nitro2 and port for the Q3_MASTERPORT set in the Nitro2.ini
now you have to tell Quake3Arena that your server is an internet server (else it will not send heartbeats!)
this can be done by using the quake3 server setup menu by setting dedicated to Internet ,by setting dedicated 2 in your config file/q3 console or setting it as startup parameter like:
quake3.exe +set dedicated 2 +sv_master1 192.168.0.98:27950 +map q3test1
 
 GameSpy user:
 
how to tell GameSpy where to find the Nitro2 QuakeWorld Masterserver:
    do a rightclick with your mouse over the left QuakeWorld Masterserver list and choose 'Add Master Server List...'
type in a name (Nitro2 for example) the ip of your Nitro2 to add and the QW_MASTERPORT set in the Nitro2.ini - thats all!
just use refresh to get the actual Serverlist from the QuakeWorld Masterserver!
 
how to tell GameSpy where to find the Nitro2 Quake2/Quake3Arena/Half-Life/Kingpin Masterserver:
    do a rightclick with your mouse over the left Quake2/Quake3Arena/Half-Life Masterserver list and choose 'Add Master Server List...', do not use 'Add Server List...' !!!
type in a name (Nitro2 for example) the ip of your Nitro2 to add and the Q2_MASTERPORT/Q3_MASTERPORT/HL_MASTERPORT /KP_MASTERPORT set in the Nitro2.ini - thats all!
just use refresh to get the actual Serverlist from the Quake2/Quake3Arena/Half-Life/Kingpin Masterserver!
 
 PingTool user:
 
how to tell PingTool where to find the Nitro2 QuakeWorld/Quake2/Quake3Arena/Half-Life/Kingpin Masterserver:
    do a rightclick with your mouse over the left Masterserver list and choose 'Add New Server Source'
select the Game and click on 'Master Server'
at description type in a name (Nitro2 for example) and at Server Source IP Address the ip of your Nitro2 and the QW_MASTERPORT/Q2_MASTERPORT/HL_MASTERPORT/Q3_MASTERPORT/KP_MASTERPORT set in the Nitro2.ini in ip:port style (192.168.0.98:27000 for example) - thats all
just use refresh to get the actual Serverlist from the QuakeWorld/Quake2/Quake3Arena/Half-Life/Kingpin Masterserver!
 
Forwarding Proxy:
top
 
The forwarding Proxy is a simple tool which just sends data received on the FW_LISTENPORT to the FW_IPADDRESS. It can handle up to 32 Clients at the same time, if you want to limit the maximal Clients of the forwarding Proxy just set FW_MAXCLIENTS to the number of Clients you want to be forwarded. If the forwarding Client limit is hit all further Clients who try to connect will be ignored. A Client will be removed if it is inactive for FW_TIMEOUT seconds. The FW_IPADDRESS can also be changed using the fwip Nitro2 console command or using the Nitro2 Admin Menu, all new clients connecting to the forwarding Proxy will be forwarded to the new forwarding IP address!
 
Firewalling:
top
 
If you don't want that anybody can connect your Proxy (especially when it's set to public) you have the possibility to define who may connect and who not.
Nitro2 is using 2 ip lists, one where you can define who is banned (banip.ini) and one which tells Nitro2 who is allowed (allowip.ini) to connect.
the lists can be edited manually with a simple text editor or using the Nitro2 Firewalling commands / Nitro2 Menu
 
This technic is very easy and very powerful because you can setup very complex ban/allow combinations.
 
this are the rules:
   -the firewalling is active for the QuakeWorld/Quake2 and for the Forwarding Proxy
-you can use wildcards (* or 255) to ban/allow different ip classes
   example:  *.*.*.* stands for all ip addresses available (d.o.d ip)
   192.168.0.*   stands for all ip addresses from 192.168.0.0 up to 192.168.0.254 (255 is broadcasting)
   -all ip values after a wildcard are ignored
   example:  192.168.*.5   will be converted to 192.168.*.*
   -every ip (including wildcards) can only be in the one or in the other list not in both at the same time!
-if no one is banned, the allow list is not neccessary
 
 in the next examples Nitro2 has been installed on the ip 192.168.0.99
 
1.example - allow all to connect to Nitro2 but not connects coming from 192.168.0.5
   the ban list has one entry:
   192.168.0.5
   the allow list is empty
 
2.example - only allow connects coming from 127.0.0.1 (localhost)
   the ban list has the following entry:
   *.*.*.*
   the allow list has one entry:
   127.0.0.1
 
3.example
   the ban list:
   *.*.*.*
   192.168.0.*
   193.25.16.10
 
   the allow list:
   192.168.*.*
   192.168.0.99
   192.168.0.100
   193.25.16.*
 
this will allow all connects coming  from 192.168.1.*   - 192.168.254.* (255 is broadcasting)
and  from 192.168.0.99  
and  from 192.168.0.100  
and  from 193.25.16.0   - 193.25.16.9
and  from 193.25.16.11   - 193.25.16.254 (255 is broadcasting)
 
Connecting Nitro2 / Getting started:
top
 
if you use the integrated GameSpy/PingTool starter QuakeWorld/Quake2 will automatically connect the Proxy.
else:
 
 -startup Nitro2 (don't forget to enable the QW/Q2 Proxy by setting QW_Proxy/Q2_PROXY = Yes in the Nitro2.ini file)
 -startup QuakeWorld/Quake2
 -if you have started QuakeWorld/Quake2 on the same computer
   type in the QuakeWorld/Quake2 Console: connect 127.0.0.1:port
  else
   type in the QuakeWorld/Quake2 Console: connect ip:port (use the ip of the computer on which you started the Nitro2!)
 
  if you haven't changed the QW_PORT/Q2_PORT setting in the Nitro2.ini the port is 27500/27910
  else you have to use the port specified in the Nitro2.ini
 
example: QW:connect 127.0.0.1:27500 Q2:connect 127.0.0.1:27910
  use this if you started Nitro2 on the same Computer like QuakeWorld/Quake2 without changing QW_PORT/Q2_PORT in Nitro2.ini
 
if you get connected to Nitro2 it welcomes you with a Message you can now type 'say .help' to get a help page.
 
if you want to connect to a QuakeWOrld/Quake2 server now type 'say .connect ip:port', this will connect you to the server described by the ip and the port.
 
if you use the Quake2 Address Book to connect to a Server or if you use the QuakeWorld/Quake2 standard connect command QuakeWOrld/Quake2 will disconnect from Nitro2!
 
Nitro2 initialisation phase:
top
 
i want you to know what is happening on startup of Nitro2 to avoid misunderstandings or problems.
 
1.Nitro2 main initialisation
 -parse commandline parameters
 -if commandline parameter -f is used shutdown the Nitro2 console
 -load the list of banned ips (banip.ini)
 -load the list of allowed ips (allowip.ini)
 -load the Nitro2.ini or another inititilisation file set with commandline parameter -i
   -check all parameters set
   -resolve all donaimnames
 -resolve the host name and ip
 -build the broadcasting ip (used for the local serverscanner)
 -if a game has to be started check the games executeable and launch the game
   -on gamespy/pingtool startup
     -load the pingtool/gamespy generated config files
     -read the destination ip+port
     -patch the proxy ip+port in the config
     -write the configuration file to the games configfile directory
 -change the process priority to the highest available
 -startup all masterserver enabled in the initialisation file with lowest thread priority
 -startup the forwarding proxy if enabled in the initialisation file with highest thread priority
 -startup the nitro2 console thread with the lowest thread priority you can use the commandlineparameter -f to not start the Nitro2 console
 -startup the timecontrol thread if a proxy is enabled in the initialisation file with lowest thread priority
 -jump to the initialisation of the Quake2 Proxy if enabled in the initialisation file
 
 -waiting for a shutdown reason like
   -a memory or socket allocation problem
   -Nitro2 console command q
   -an idle timelimit has been reached (set in the initialisation file)
   -the started games exists and exit has been set to yes in the initialisation file
 
2.Quake2 Proxy inititalisation
 -set highest thread priority available
 -read the model names from the q2models.ini
 -allocate the proxy port
 -wait for clients
   -on connect
     -check the maximum allowed clients: to low -> block the client
     -check the ban/allow ip list for access rights: not allowed -> block the client
     -if linked connect check the version of the connecting proxy: version less than 0.44 -> block the client
     -jump to the q2 client initialisation
   -on game shutdown quit Nitro2 if exit is set to yes in the initialisation file
   -if the idle timelimit has been reached quit Nitro2
 
3.Quake2 Client initialisation
 -allocate the clients workspace (memory/sockets)
 -initialise all client variables
 -send welcome message to the client
 -use easyfont on the clients name
 -if client is not already linked
   -send dummy aliases definitions to the proxy for p_mapstart,p_mapend,p_death,p_respawn and p_flaglost
   -execute the clients Nitro2.cfg which should call the Nitro2_alias.cfg
 -else
   -send informations to the linked Nitro2
   -count all Nitro2's in the chain
 -autoconnect check (used from gamespy/pingtool starter or by commandline parameter -c)
   -if autoconnect is enabled try to connect the defined server
   -if it's not enabled and the auto menu startup is not disabled using commandline parameter -m startup the menu map
 -when connected to a server jump to Quake2 Game/Map initialisation
 
4.Quake2 Game/Map initilisation
 -detect the game mod beeing used
   -rocketarena2 correct the name
   -battleground set the teamplay correctly
   -ctf init the internel ctf variables
 -location file handling
   -don't load if the location file for the map if it's already loaded (if another local client is already using it)
   -else try to load the location file for the map from the Nitro2 executeable directory or the directory defined in the initialisation file
 -call the p_mapstart alias
 -request the status of the server to check the serversettings like hostname and dmflags until we get them
 -on receive of the dmflags
   -disable blocked features
   -send info to the user what is blocked on the server
   -disable the request loop for the server infos
 
i know this is just a very incomplete description of the initialisation phase but i hope this will help you out there!
 
Nitro2 aliases:
top
 
aliases can be used to automize communications with your teammates
aliases for Nitro2 have to be defined in the Nitro2_alias.cfg which has to be in your quake/id1 or quake2/baseq2 directory!
 
QuakeWorld standard defined aliases:
 
alias f_status "say_team {%l}%?" //will be called if someone in your team uses %s
alias f_fullstatus   "say_team {%l} %h/%a/%w%="   //will be called if someone in your team uses %S
alias f_mapstart wait //will be called at every mapstart
alias f_mapend wait //will be called at every mapend
alias f_respawn "say_team Respawned at {%l}" //will be called if you respawn and the .respawntrigger is turned to on
alias f_death "say_team Died at {%d}" //will be called if you die and the .deathtrigger is turned to on
alias f_took "say_team Took %I at {%l}" //will be called if you take an item marked for tooktrigger in the qwmodels.ini and if the .tooktrigger is set to on
alias f_team "say_team have %p" //will be called when taking a powerup like quad/pent/ring and if the .autoreport is set to on
 
Quake2 standard defined aliases:
 
alias p_status "say_team {%l}%?" //will be called if someone in your team uses %s
alias p_fullstatus   "say_team {%l} %h/%a/%w%="   //will be called if someone in your team uses %S
alias p_mapstart wait //will be called at every mapstart
alias p_mapend wait //will be called at every mapend
alias p_respawn "say_team Respawned at {%l}" //will be called if you respawn and the .respawntrigger is turned to on
alias p_death "say_team Died at {%d}" //will be called if you die and the .deathtrigger is turned to on
alias p_took "say_team Took %I at {%l}" //will be called if you take an item marked for tooktrigger in the q2models.ini and if the .tooktrigger is set to on
 
IMPORTANT: don't use %? or %= in any other messages, they are needed to adress the last sender!
 
you can test what aliases are defined using the QuakeWorld/Quake2 console command alias
 
use .intellitriggers if team aliases should only get called when a teammate is in the game!
 
Controlling the Menu:
top
 
Nitro2 can be configured using a menu system which can be controlled using Proxy Commands.
 
go to the Proxy Commands section for infos on how to enter Commands
 
the best way is to bind the Menu Commands first to your keys, it's wise to use keys you normally not use for playing.
there are 3 different ways to do this:
 
 1.  use the command .bindmenu to bind the menu commands to the standard cursor keys
 1.  Quake2 players can use the command .bindmenu_kp to bind the menu commands to the keypad
 3.  edit the menu.cfg, copy it in your id1 or baseq2 directory and execute it using exec menu.cfg
 
you can toggle the menu on/off using the .menu command.
if .smartmenu is set to on (default) the menu will also be enabled when using any other menu command.
 
Command Meaning
.bindmenu bind menu commands to the standard cursorkeys
.bindmenu_kp bind menu commands to the keypad keys
.menu toggle menu on/off
.menu_up used to move in the menu up,
.menu_down down,
.menu_left left and
.menu_right right.
.menu_select change the menu or select/change an option
.menu_back go one menu back
.menu_help gives more infos on the selected menu item
.menu_pgup scroll one page up
.menu_pgdown    or one page down
.menu_home jump to the beginning
.menu_end or to the end
.menu_ins add an item
.menu_del or delete it
 
 change from one proxy to another when proxies are linked:
 
.menu_proxy+ direction: from client to server
.menu_proxy- direction: from server to client
 
in the bottom status line of the menu has the folowing style:
host[x/y]:HOSTNAME  hh:mm:ss
 
x  :  stands for the current proxy the menu is generated for
y  :  number of all linked Nitro2
HOSTNAME  :  is the hostname of the current active proxy the menu is generated for
hh:mm:ss  :  is the system clock of the first connected Nitro2
 
Nitro2 provides 2 commands to bind the menu commands. the first .bindmenu binds them to the standard cursor keys the second .bindmenu_kp to your keypad!
 
Nitro2 Proxy Commands:
top
 
Nitro2 can be configured by typing proxy commands in the QuakeWorld/Quake2 console.
proxy commands need to be send as normal chats.
normally you have to type
say .command
to execute a proxy command, but when connected to a server or the menu of Nitro2 is activated it's possible to type the comamnd without a say:
.command
 
the '.' is used to indicate the proxy that the following is a proxy command.
have a look at the Linked Proxy Handling part of this documentation for informations on how to send commands to chained proxies.
 
some commands need further information called parameters.
example: say .connect 192.168.0.98
if you call them without parameters they will show their current state.
example: say .connect
 
commands can be called using the normal command name or a short form
say .c 192.168.0.98 is the same like say .connect 192.168.0.98
 
the commands needed to control the Nitro2 Menu are described in the Nitro2 - controlling the Menu section of this document!
 
Parameter Types:
 
 cid means the ClientID, every client who is connected to a Nitro2 gets an unique id from the proxy, it can be used to address other proxy clients, get a list of the clients with their id's by using the say .listclients command!
 text a normal text
 char a single character
 on enable a feature
 off disable a feature
 ip a valid ip address
 ip:port a valid ip with a port or a domain name with a port (port is only needed when not standard!)
 choice this means you can chose between different values. you will get a list of the values when using the command without a parameter.
the values are all plain text
 
if parameters are seperated using / only one of them will be accepted,
this are choice parameters!
 
parameters seperated by spaces or commas have to be used together
 
 
Commands:
 
Long Short Parameter Meaning
Help:      
.help .h   print the base help information
.helpconnect .hc   print all connect commands
.helpmark .hm   print all mark commands
.helpmessage .h%   print all message commands
.helpmisc .hmi   print all misc commands
.helpadmin .ha   print all commands available to admins only
.helpfont .hf   print the help for the easyfont feature
.helplist .hl   print all list commands
.helpmenu .hme   print all menu commands
.helpquakeworld .hqw   print all quakeworld specific commands
.helpquake2 .hq2   print all quake2 specific commands
Connecting:      
.connect .c ip:port connect the server described by ip:port, if a domain name is given Nitro2 will try to resolve it.
.disconnect .dc   disconnect from the current server/proxy
.stopconnect .sc   stop trying to connect to a not responding server
.reconnect .rc   reconnect to the last server you have been connected to
.stopresolve .sr   stop resolving a donaimname
only Quake2:      
.password .pw text/off use to set/clear a password if one is required to connect a server
WARNING: don't use the normal password command, the problem is that the q2 client will send the new/changed password only when connecting, but it has already a connection to the proxy!
 
if a password is set but the server don't requires a password you have to clear it using the off parameter.
HUD Control:      
.clock .cl on/off turn the Nitro2 hud clock on/off
.clockpos .clp line,column move the clock to line line and column column
use numerical values between 0-100 for line and column
standard clock pos is set for a resolution of 320*200 to: 22,32 (down right corner!)
.clockcolor .clc white/colored sets the color for the clock
.cchat .cc on/off use this to enable/disable the centerprint messages
.cchatpos .ccp line set the start line for the centerprint messages
range: line 0-80
.cchatcentered .ccc on/off when disabled centerprint messages will be printed left aligned else centerprinted.
.cchatlines .ccl nr set the number of lines to use for centerprint messages
range: nr 1-8
.cchattime .cct nr sets the time in seconds how long a centerprint message will be displayed
.cchatall .cca on/off if enabled all incomming chats will be treated as centerprint messages
REMEMBER: .cchat need to be set to on
.cchatwrap .ccw column set the column for the line wrap
standard value is defined for a resolution of 320*200 to column 40
.chattime .ct nr sets the time in seconds how long a chat message will be displayed
Teamplay:      
.groups .g text this command initializes the messagegroup handling of Nitro2.
message groups can be used to organize the team communication more intelligent.
everyone can belong or send to one or more groups.
messages without a destination group will be displayed in every team.
 
every group is defined by a single character
example: say .group a
this tells the proxy that you are part of group a
 
you can be part of more groups at the same time
example: say .group ad
this tells the proxy that you are part of group a and d
 
use the message command %@ to send messages to groups
.soundtrigger .st on/off enable/disable the Nitro2 soundtrigger feature.
use the messagecommand %# to send soundtrigger messages
.tooktrigger .tt on/off if enabled it calls a p_took alias when you take a model marked for the tooktrigger in the q2models.ini
.deathtrigger .dtr on/off if enabled Nitro2 will call the alias p_death when you die
read the Nitro2 aliases section for more infos
.respawntrigger .rtr on/off if enabled Nitro2 will call the alias p_respawn when you die
read the Nitro2 aliases section for more infos
.flagtrigger .ftr on/off if enabled Nitro2 will call the alias p_flaglost when you die carrying the flag (ctf)
if p_flaglost is called when dying no p_death will be called at the same time!
read the Nitro2 aliases section for more infos
.intellitriggers .itr on/off if enabled all teamplay triggers will only get called if teamplay is enabled and a teammate is in the game
.teamskin .ts text/off set a model/skin to be used for teammembers, use parameter off to disble it.
.enemyskin .es text/off set a model/skin to be used for enemies, use parameter off to disble it.
.chatflash .cf on/off if someone in your vicinity is talking Nitro2 flashs the player to show you who is the talker.
.removeping .rp on/off this is filtering the message beep from your own messages.
only QuakeWorld:      
.autoreport .ar on/off autoreport calls the f_team alias every time you take a powerup.
.teamcolor .tc tc bc/off set topcolor and bottomcolor to be used for teammembers, use parameter off to disble it.
.enemycolor .ec tc bc/off set topcolor and bottomcolor to be used for enemies, use parameter off to disble it.
Misc:      
.listclients .lc   list all Nitro2 clients with their ClientId (cid)
.say .s cid text talk to other clients who are connected to the same Nitro2, you can talk to all by using the ClientID 0, get a list of all
Users with their ClientIDs using .listclients
.echo .e on/off when set to off no standard message when executing commands with parameters will be printed, very nice for using Nitro2 proxy commands in config files or aliases!
.follow .f cid follow a Nitro2 client to the server he is connected to.
.observe .o cid observe a Nitro2 client who is playing on a server.
.observerstop .os   stop observing a player.
.scanlocal .sl   scan the local subnet for QuakeWorld/Quake2 servers
.listlocal .ll   list all found QuakeWorld/Quake2 servers
.proxystate .ps   hmmmm - not up to date in the moment!
.modified .mod on/off when disabled the proxy will not perform a f_modified/p_modified check
look at the Nitro2 Proxy Queries section for infos on this!
.messagecommands .mc on/off you can disable the parsing of messagecommands, when disabled all messagecomamnds will be send directly to the server without getting interpreted by the proxy!
.msgcmdtoken .mct char change the messagecomamnd token (standard is %) to char
this is the character used in messages to indicate that the next character has to be interpreted as a messagecommand.
only change this if you know what you are doing!!!
.record .r text start recording a demo using Nitro2.
the demo will be recorded to the directory of Nitro2 or to the path defined by RECDIR in the Nitro2.ini!
the advantages are:
1.demos are smaller when recorded using Nitro2
2.no filtereffects will be recorded
3.you can record demos on another computer than you are playing
  -> no disk write lag!
admin status is required to record a demo!
.easyrecord .er   like .record but no name is needed, Nitro2 will generate a name automatically! it is generated using the gamedir, and a number.
Nitro2 will not overwrite a existing demo by accident.
the second difference is that if Nitro2 is already recording a demo it will first stop recording it and than start a new one.
admin status is required to record a demo!
.stop .stp   stop recording a demo
admin status is required to stop a demo recording!
.smartmenu .sme on/off if enabled all menu keys will activate the menu
else only the key bound to say .menu will
.flooprotection .fp on/off this protectes you from getting the 10 seconds penalty time for talking too much in too short time!
.statistics .sta on/off enable this to let Nitro2 analyse all deathmessages to gain frag statistics.
Nitro2 is using the messages defined in the qxstats.ini file for it.
this feature can cause lag effects on slow systems!
use .listfrags or .autolistfrags to see the statistics results
.listfrags .lf   list all in the actual map gained statistics.
set .statistics to on to activate Nitro2's statistic system.
.listfragshelp .lfh   show informations for all columns of the statistics.
.autolistfrags .alf   if enbled Nitro2 will automatically print all statistics to the console at mapend
Quake2:      
.grenadetrail .gt on/off turn the grenade smoke trail on/off
.rockettrail .rt on/off turn the rocket smoke trail on/off
.blastertrail .bt on/off turn the blaster smoke trail on/off
.rocket2grenade .r2g on/off change the rocket trail to the grenade trail
this is only active when the rockettrail is not disabled with .rockettrail off
.bloodfilter .bf on/off turn the blood on/off
.gibfilter .gf on/off remove all gibs of dead players.
only new gibs will be removed!
.deadbodyfilter .dbf on/off remove all bodies of dead players.
only new bodies will be removed!
THIS IS STILL BETA!!!
.fovfilter .ff on/off filter the fov value sent by the server
this lets you use the fov value you desire!
.blendfilter .blf on/off remove all blendings.
.kickfilter .kf on/off don't get kicked back when other players hit you
.setexplosion .se choice change the normal explosions used by quake2
you can set:
normal
blood
teleport
.modulate .mo nr,nr this is an easier version of the gl_modulate q2 console command, gl_modulate is controlling the objects/players/maps lumination, many players are using it to see the objects/enemies easier.
the trick is to set a low value before a map starts and to increase it after the map has been loaded, this way you get a better contrast between the map and the objects/players.
the first nr is the modulate value to be set before the map starts, the second is the one to be set after the map has started.
range: nr 0-255
.setneed .sn health,armor set health/armor limits for %[a],%[A],%[h],%[H] and %z
the defaults are :
Health 50
Armor  30
.vidrestart .vr   perform a vid_restart with correct setting of the gl_modulate values
use this instead of vid_restart when .modulate is enabled.
.wavesfilter .wf   filter disturbing servermessage when using waves.
QuakeWorld:      
.blendfilter .bf on/off filter all item/weapon pickup blend effects.
.damagefilter .df on/off filter all damage redflash effects.
.deadbodyfilter .dbf on/off use this to increase your frames per second, it filters all dead bodies and body parts out!
if it's enabled and you see a head or a dead body - it's a dead player which has not respawned yet!
.fovfilter .ff on/off if enabled the proxy filters all fov commands coming from the server, so no mod can change your fov setting!
this is useful for teamfortress!
.polyblendfilter .pbf on/off filter all polyblend effects caused by taken powerups.
.cdtracks .cdt on/off suppress CD Track change on map change.
.weaponmodelfilter .wmf on/off this filters all r_drawviewmodel settings coming from the server, if you like to play without your weapon
on the screen (set r_drawviewmodel 0) and you don't want to let the server change this - try this one!
its useful for playing rocketarena in gl without the weapon on screen ...
.rocket2grenade .r2g on/off this changes the Rocket Model to the Grenade Model.
the Grenade Model is easier to see, faster to render and causing less trail effects.
.setexplosion .se style sets the style of rockets/grenades explosions.
valid styles: normal, nail, tarbaby, wizard, knight, lava, teleport, blood, bigblood
.filterswitches .fs on/off if enabled the proxy filters the info variables w_switch and b_switch,
if you get sometimes the message infostring length exceeds or if you get kicked by TeamFortress for skin change (without changing the skin) try this one!
if you are using my bestweapon feature you don't need them and i don't think that TeamFortress uses them!
the problem is that qw just accepts userinfo strings less than 64 bytes.
some mods are using userinfo strings to store their infos there and so the proxy does, this way 64 bytes are quickly overrun.
.muzzleflash .mf on/off enables/disables the light effect when other players are shooting.
.staticsound .ss on/off this will enable/disable the static sounds of qw (ambient sounds)!
if you change this setting the changes are applied after the next mapchange!
(there is no other possibility!)
.gllego .gll number/off switch to 'gl lego' mode. this downscales the gl_max_size for maps but not for skins!
changing this will only appear after mapchange/reconnect or sometimes after restart. (use it in Nitro2.cfg!)
this depends on how much models are already cached by the glqwcl client. it will only change
objects that are not already loaded.
valid values for number are 2 4 8 16 32 ...
the standard value of glqwcl is 256, all values less will downgrade the textures.
a not valid value may force glqwcl to disable all textures!
.bestweapon .bw slot imp. w1/off this command gives you the possibilty to let the Proxy automatically choose the best weapon for you!
you can use up to 5 different best weapon slots, each slot is enabled by using a impulse, which you have to assign to a slot first.
when using the impulse of a slot the proxy tests the weapons assigned to the slot till it finds a weapon with enought ammo and activates it!
to disable a weapon slot assign impulse 0 to it!
to disable the whole best weapon feature use parameter off!
be sure to use impulses that are not used in the mod you are playing!!!
you can assign normal weapon impulses to slots, so there is no danger of conflicts with other impulses
[w1 ...] are the weapons, they will be used in this order!
they can have values between 1 (axe) and 8 (lightning bold)
for example: .bw 1 7 7 5 4 3 2 1
this will assign slot 1 to impulse 7
and the weapons : rocketlauncher supernailgun nailgun supershotgun shotgun and axe
when using impulse 7 the proxy will test what weapon is available and switch to it!
to disable best weapon use:
.bw off

my preferred settings are:
.bw 1 6 6 5 4 3 2 1
.bw 2 7 7 5 4 3 2 1
.bw 3 8 8 3 2 1
(i use 3 keys for attacking)
.setweaponpriority .swp impulses sets the weapon priority for the %b message command, which is reporting the best weapon you have.
the default value is .swp 7 8 6 5 4 3 2 1 which will report Rocket before Shaft! if you like to report Shaft before Rocket use: .swp 8 7 6 5 4 3 2 1
.setneed .sn health,armor set health and armor limits for %[a],%[A],%[h],%[H] and %z
and cells, rockets, nails and shells limits for %b, %w and %z
the defaults are :
Health 50
Armor 30
Cells 10
Rockets 5
Nails 25
Shells 10
Administration:
following commands require admin status!
     
.admin .a text gain admin status, text has to be the Admin Password defined in the Nitro2.ini!
if no password is defined all users are automatically treated as admins.
the standard admin password defined in Nitro2 is Nitro2
.adminpwd .ap text,text change the current Nitro2 admin password, insert 2 times the same password seperated by a comma.
.forwardingip .fwip ip:port change the destination ip/port of the Nitro2 forwarding proxy,
read the Forwarding Proxy section for further infos
.public .p on/off when set to on other QuakeWOrld/Quake2 users will be able to find the proxy using the Quake2 serverscanner or the Nitro2 .scanlocal command.
the proxy will also send heartbeats to the defined masterservers.
.qwheartbeat .qwhb nr ip:port change the QuakeWorld heartbeat IP:Port of number nr to ip:port.
the heartbeats are used to register at a QuakeWorld masterserver
edit the Nitro2.ini to set the default values for them!
range: nr 1-3
.q2heartbeat .q2hb nr ip:port like .qwheartbeat just for Quake2
.sendheartbeat .shb   force Nitro2 to send heartbeats, normally heartbeats will be sent automatically all 5 minutes, or when a heartbeat ip will be changed.
.kick .k cid kick the client with the ClientID cid
.ban .b cid ban the client with the ClientID cid, the client's ip will be added to the banip.ini and kicked!
.saveconfig .sc   save the current configuration to a new Nitro2.cfg
an existing old Nitro2.cfg will be backuped to Nitro2.bak
this feature requires that the client is local and that the Quake client has been started by the proxy!
Location Marking:      
.mark .m text mark your current location and give the mark the name text. all marks will be automatically saved in a location file called mapname.loc.
you can tell Nitro2 what directory to use for location files by editing the Nitro2.ini!
.showmark .sm   show the nearest mark to you by spawning a PLASMA_EXPLOSION at the marks location.
.delmark .dm   delete the nearest mark.
Firewalling:
   head on to the the Firewalling part in this documentation for infos!
.firewall .fw on/off turn the firewalling system on/off
.listips .lip   list all IP's in the BanIP and the AllowIP list
.allowip .aip ip add a ip to the AllowIP list
.banip .bip ip add a ip to the BanIP list
.deleteip .dip ip remove a IP from the BanIP/AllowIP list
.clearips .cip   clear the BanIP and the AllowIP list
Nitro2 makes a backup of the banip.ini called banip.bak
and of the allowip.ini called allowip.bak
 
Nitro2 - Easyfont:
top
 
QuakeWorld/Quake2 has various graphical characters that can be used to style your name or the messages you send to others. The problem is that the use of this characters is not as simple as it should be!
At this point Nitro2 gives you simple font commands to make it easier for you.
You can use this font commands in your name, in locationnames (see .mark), in self-defined names for weapons/powerups/armors (in qxmodels.ini) and finally in all say/say_team messages!
 
QuakeWorld users have to use a $ instead of a @ in the following definitions!!!
 
The font commands:
 
#character this will colour the character (only useful for names because messages are coloured by default in QuakeWorld/Quake2
example:
name #Niew#i (typed in the console this will set the name Niewi with a colored 'N' and 'i'!
this feature is automatically disabled in Quake2-RocketArena2 because it causes troubles if you create a new team!
@xyy add a hex code to your chat messages,
yy must be a hexadezimal value in 2 digits and lowercase
example: @x7e
this following values will not be accepted because of protocol
problems: @x00, @x0d, 0x7f, @xff
@( the left end of the regulators used in the quake options
@= the middle of the regulators used in the quake options
@) the right end of the regulators used in the quake options
@a the controller of the regulator
@< the left end of the underline
@- the middle of the underline
@> the left end of the underline
@. a red middle dot
@, a white middle dot (only in names!)
@[ a big colored [
@] a big colored ]
@_ a space sign, use it instead of the normal space between graphical characters
@b a filled red block
@c a filled red arrow (pointing to the right!)
@\ this can be used to hide your name in messages! all in the message before the @\ will be deleted!
the effect will be there even when clients don't use a proxy!
@R @G @Y @B insert a colored L.E.D. you have to use a gfx.wad with defined Ocrana L.E.D.s
 
example:
  name @[#N#F@]@,#Nie#wi@,
  gives you my normal Quake2 nick name!
 
Nitro2 - Message Commands:
top
 
Message Commands can be used in say or in say_team commands to tell your teammates what your current state is, all message commands can be mixed in any way!
 
messagecommands which can be used in say and in say_team messages:
 
%% this will pass a % to the server. this is useful if you want to use serverside messagecommands
%[a] reports armor in A:XX (qxmodels.ini short name) style and will add braces when it's lower than the limit set with .setneed
%[A] reports armor in A:XX (qxmodels.ini long name) style and will add braces when it's lower than the limit set with .setneed
%a your current Armorvalue
%A your current Armortype
%d last dying Location
%e the number of enemies in your vicinity
%E the number of enemies in your vicinity at last dying time
%f the name of the location you are pointing to, can be used for messages like attacking ra from hall
%[h] reports health in H:XX style and will add braces when it's lower than the limit set with .setneed
%[H] reports health in Health:XX style and will add braces when it's lower than the limit set with .setneed
%h your current Healthvalue
%i reports the Item name set in the qxmodels.ini for the last took item (short name)
%I reports the Item name set in the qxmodels.ini for the last took item (long name)
%j reports the last took Item that triggered the tooktrigger
%J reports the name of the last joined player
%l your current Location
%L report your last dying locations up to 5 seconds after dying else your current Location
%o the number of teammates in your vicinity
%E the number of teammates in your vicinity at last dying time
%p the powerups you currently have (quad/pent/ring/flag)
%q the powerups of the last seen enemies (quad/pent/ring/flag)
%t reports the short name of the object you are pointing to (like %x at %y)
%T reports the long name of the object you are pointing to (like %X at %y)
%w the current active Weapon/Mun using the short name defined in qxmodels.ini
%W the current active Weapon/Mun using the long name defined in qxmodels.ini
%x the short name of the object you are pointing to
you can edit the qxmodel.ini to define which objects are pointable and which not!
players are always pointable in this release, with powerups and in teamfortress with class
%X the long name of the object you are pointing to
%y the name of the place of the object you are pointing to
%Y this prints the Quake internal model name of the object you are pointing to,
you can use this to add models to your qxmodels.ini
%u the following text will be printed in a new line. using this you can create messages that can use up to 4 lines of text with one say.
your name will be printed before every new line.
%z reports the things you need (limits set with .setneed)
if you have low health and low armor it will response with Health/Armor
if you dont need anything it will response with Nothing
this feature will be advanced (with weapons) in the next releases...
only QuakeWorld:
%b inserts your best weapon + ammo
%c inserts the name of your current teamfortress class
%P current active powerup with remaintime (this is no poweruptimer!)
only Quake2:
%% this will pass a % to the server. this is useful if you want to use serverside messagecommands
%c inserts the name of your current CTF tech
if you don't have a tech nothong will be inserted
%C inserts the name of the CTF tech you had when dying
if you didn't had a tech when dying nothing will be inserted
%P current active powerup with remaintime (this is no poweruptimer!)
 
messagecommands which can only be used in say_team messages:
 
 
you can send up to 3 sounds in one message, if you do Nitro2 will play them correctly timed one after the other (Nitro2 has to run local und your quakeclient has to be started using Nitro2!
%U acts like %u but in say_team messages no name will be printed before the new line!
%@ this command indicates that the message is only sent to one or more groups
use the .group command to tell the proxy what group(s) you belong to groups are defined by single characters, you can belong to more than one group at the same time
 
the syntax is : %@grouplist
 
where grouplist can be a single character to indicate one group or more characters to send the message to more groups
 
example: say_team %l need help%@ac
 
this will send the message to the groups a and c
 
if you receive a message with a destination group and you don't have defined any groups using the command .group the message will be printed!
 
if you send a message to a group you not belong to the message will be printed on your own screen you can supress own messages from being displayed by using the %N messagecommand!
 
place the group message command at the end of a message or use a space after it to indicate the end of the grouplist
 
example: say_team %@b need help at %l
 
this message will be send to the group b, the space after the %@b will not be send!
%# this is the soundtrigger message command, you can use it to play other sounds for messages instead of the normal message beep or to play only a sound without a message!
soundtrigger can be mixed with all kinds of messagecommands like groups or vicinity (%n)
they can also be used with the centerprint message system (%.)
 
the syntax is : %#path/soundname.wav
 
you can play all normal QuakeWorld/Quake2 sounds or your own created (all in your team will need them!)
own created sounds must be stored in the quake/id1/sound or quake2/baseq2/sound directory
they can than be played using %#soundname
add quotes to play sounds with spaces in them %#"soundname", all spaces will be changed to underlines _
 
it's not very useful if you use sounds which are normally be used in QuakeWorld/Quake2 deathmatch or teamplay
i recommend you to use QuakeWorld/Quake2 sounds from monsters for example, because anyone has them!
 
example: say_team %l lost%#misc/menu1.wav
 
use the command .soundtrigger [on/off] to enable/disable the use of soundtriggers
 
place the soundtrigger messagecommand at the end of a message or use a space after it to indicate the end of the soundname
 
example: say_team %#misc/menu3.wav %need help at %l
the space after the %#misc/menu3.wav will not be send!
 
using soundtrigger with groups:
say_team %#misc/menu3.wav %@d %need help at %l
this soundtrigger will only be send to teammembers belonging to group d
 
you can use location depending messagecommands like %l in soundtrigger
example: say_team %#%llost.wav
%. send a centerprint message, have a look at the .cchat commands on how to change the way centerprint messages will be displayed on your screen
%n only send this message to team members in your vicinity
%N this will hide your own message (it will not be printed on your screen)
%s ask your teammates for their current status, all teammates using Nitro2 will answer this request by executing an alias called p_status.
you can define this alias yourself in the Nitro2_alias.cfg!
 
only the player who asks for a status will see the result, no other player will see the returned status!
%S like %s but it calls the p_fullstatus alias
 
Linked Proxy Handling:
top
 
you can easily link Nitro2 Proxies by connecting from one to the other using the Nitro2 connect command
.connect ip[:port]
on connection both Proxies will detect the other one and tell you that a link has been established between both Proxies.
 
1.   you can hand commands to the second proxy by adding '.' for every Proxy to bypass a Nitro2 command,
 
example1:
you have linked 3 nitros and want to tell the second proxy to disconnect from the third use
..disconnect
the first Proxy bypasses the command and the second will execute it
 
example2:
you have linked 3 nitros and want to tell the third proxy to connect to a server or proxy use
...connect ip[:port]
the first two Proxies bypasses the command and the third will execute it
 
2.   you can always address the last connected proxy by using a ',' instead of a '.' as command indicator
example1:
you have linked 10 nitros and want to tell the last proxy to connect to a server or proxy use
,connect ip[:port]
the first nine Proxies bypass the command and the last executes it
 
Disable Nitro2 features from Quake Servers:
top
 
Nitro2 is offering features which may be considered as cheating by a few guys out there.
to protect Nitro2 from being banned i have added a possibility to disable features by the server admin.
 
QuakeWorld:
like all other Proxies Nitro2 is using the fpd serverinfo variable to let you tell Nitro2 what features should be blocked!
 
Value Disables
4 if set Nitro2 will only play soundtrigger sounds less than 15 seconds (powerup timers cheat)
32 silence %e in teammessages
128 disables the pointing features of Nitro2 (%x %X %y %Y %t %T)
 
add all values of features to disable together and set fpd with serverinfo fpd values
example: serverinfo fpd 36 (silence %e and disable sounds > 15 seconds)
 
Quake2:
the easiest way to do this is to advance the dmflags variable which is already used by the server.
quake2 is using the first 16 bit of this variable and a few mods advanced it already.
to avoid complications Nitro2 is only using bits beginning from bit 24
 
Value Disables
16777216 disable the FPS boosting features gib/body/blood filter
33554432 disable weapon modifications like other explosions or removement of the rockets/grenades/blaster trails
67108864 silence the message commands %x %X %y %Y %t %T
134217728 disable skin overriding (.enemyskin & .teamskin)
268435456 disable filters like fov/kick/blend
536870912 enable the secure modified mode (look at the Nitro2 Proxy Queries for info's on p_modified)
when set the first p_modified on the server will cause a vid_restart to be sure you are playing with the models which are getting checked.
the next p_modified commands (in the actual map) will not do a vid_restart again!
After the first p_modified command Nitro2 is checking the client for new vid_restarts, if someone is doing it Nitro2 will tell all on the server.
i've added a dmflag for this because a vid_restart in a running game is not very funny! this way it will only be done on servers with the dmflag set, and it only happens 1 time per map!
 
 
you can disable a feature by adding it's numerical value to the server dmflags
if you dmflags are set to 16 and you want to disable all this features set your dmflags to 520093712
 
REMEMBER: if you change the server dmflags you have to change the map to submit the changes to the clients!
 
Nitro2 Proxy Queries:
top
 
to execute a query type it into the console when connected to a server!
 
the queries are:
 
QuakeWorld:
f_modified check all modells/waves that can be used for cheating
modells which fail the crc check or can't be found by the proxy are listed (up to 3!) with a remark (crc) or (not found)!
you have to start QuakeWorld using the proxy else f_modified will not calculate any crc's!
the proxy checks the executed QuakeWorld.exe, if the exe is unknown, no crc will be generated!
have a look at the docs/qwmodified.txt to see what files are getting checked by Nitro2.
you can disable f_modified using the command .modified off (the proxy will answere with 'modified disabled')
if you call f_modified a standard check will be started, which checks all models/sounds but no maps.
 
every calculated crc includes server depending settings like the hostname or the fpd value
if more than 1 Nitro2 user is on the server both have to print the same crc independent from the used operating system!
the crc is always the same for the same server with the same hostname and the same fpd!
 
you can use the + parameter in all f_modified checks to tell Nitro2 to add the value to the crc result of the f_modified check.
the value is not simply added, it's a complex formula which is used by Nitro2.
this protects for people who try to fake the f_modified answere!
the answere will be marked with and + sign to show that it's changed.
 
Example: f_modified +100
               f_modified +1
 
f_modified map like f_modified but only checks the current map
because i can not download all maps and add their crc to the proxy there are 2 possibilities:
1. the map is known to the proxy (standard qw maps)
2. the map is unknown to the proxy
 
if the map is known to the proxy and it passes the crc check Nitro2 will print : map ok + the crc
if the map is known to the proxy and it failes the crc check Nitro2 will print : map failed crc check
 
if the map is unknown to the proxy Nitro2 will print : map unknown + the calculated crc, in this case
it's only possible to control if someone is cheating when more than one Nitro2 user is on the server
and all crc's are the same!
f_modified all like f_modified, check all standard modells/sounds + actual map
f_way force all Nitro2 to respond with their connection information
in "ClientIP:ClientPort -> localClientPort -> localServerPort -> ServerIP:ServerPort" style.
where
ClientIP:ClientPort is the ip+port of the connected client
localClientPort is the Proxy port on which the clients connects
localServerPort is the Proxy Port used to send the data to the server
ServerIP:ServerPort is the ip+port of the connected server/proxy
 
if the game has been started using Nitro2 and the client is the started local game Nitro2 will add a [ok] after the message to show that the Client is the original qwcl.exe
the last SeverIP:ServerPort displayed has to be the server the game is running on!
 
if linked all Nitro2 will answere the request in the correct order from the first proxy to the quakeworld client to the last proxy before the QuakeWorld server.
 
not linked example:
started the QuakeWorld Client on 192.168.0.98
started Nitro2 on 192.168.0.98:27500
started the QuakeWorld Server on 192.168.0.98:27501
 
ClientIP:ClientPort  localClientPort  localServerPort  ServerIP:ServerPort  LocalGame
Niewi:  127.0.0.1:27001  ->  27500  ->   1156  ->  127.0.0.1:27501  [ok]
 
linked example:
started the QuakeWorld Client on 192.168.0.98
started the 1. Nitro2 on 192.168.0.98:27500
started the 2. Nitro2 on 192.168.0.99:27500
started the QuakeWorld Server on 192.168.0.99:27501
 
ClientIP:ClientPort  localClientPort  localServerPort  ServerIP:ServerPort  LocalGame
Niewi:  127.0.0.1:27001  ->  27500  ->  1086   ->  192.168.0.99:27500  [ok]
Niewi:  192.168.0.98:1086  ->  27500  ->   1155  ->  192.168.0.99:27501
 
as you can see the localServerPort from the first Nitro2 has to be the ClientPort of the second Nitro2 and the ServerPort of the first Nitro2 has to be the localClientPort of the second Nitro2 ...
if not the client is using another proxy/bot/fpd-filter.
f_version all Nitro2 will answere this query with their version number, the operating system and a crc calculated over the whole proxy,
the crc has to be identic on same operating systems excluding linux libc5/libc6 because the proxy don't shows the lib being used ...
 
Quake2:
p_modified check all modells/waves/skins that can be used for cheating
modells which fail the crc check or can't be found by the proxy are listed (up to 3!) with a remark (crc) or (not found)!
you have to start Quake2 using the proxy else p_modified will not calculate any crc's!
the proxy checks the executed Quake2.exe, if the exe is unknown, no crc will be generated!
have a look at the q2modified.txt to see what files are checked by Nitro2.
you can disable p_modified using the command .modified off (the proxy will answere with 'modified disabled')
if you call p_modified a standard check will be started, which checks all models/sounds but no maps or skins.
 
every calculated crc includes server depending settings like the hostname or the dmflags value
if someone change this settings you have to restart the map because Nitro2 only requests them on mapstart
if more than 1 Nitro2 user is on the server both have to print the same crc independent from the used operating system!
the crc is always the same for the same server with the same hostname and the same dmflags!
 
you can use the + parameter in all p_modified checks to tell Nitro2 to add the value to the crc result of the p_modified check.
the value is not simply added, it's a complex formula which is used by Nitro2.
this protects for people who try to fake the p_modified answere!
the answere will be marked with and + sign to show that it's changed.
 
Example: p_modified all +100
               p_modified +1
 
Nitro2 needs to patch your Quake2 executeable to remove the link command, which can be used to tell Quake2 where to find the resourses. the command is not needed but could be used to avoid a correct p_modified. be sure your Quake2 executeable is not writeprotected, else p_modified will answere with unknown executeable!
p_modified ctf like p_modified (standard check) but adds ctf models to the check, look in the q2modified.txt to see what ctf files are getting checked
p_modified ra2 like p_modified (standard check) but adds ra2 models to the check, look in the q2modified.txt to see what ra2 files are getting checked
p_modified map like p_modified but only checks the current map because i can not download all maps and add their crc to the proxy there are 2 possibilities:
1. the map is known to the proxy (standard q2, rocketarena2 or ctf map)
2. the map is unknown to the proxy
 
if the map is known to the proxy and it passes the crc check Nitro2 will print : map ok + the crc
if the map is known to the proxy and it failes the crc check Nitro2 will print : map failed crc check
 
if the map is unknown to the proxy Nitro2 will print : map unknown + the calculated crc, in this case it's only possible to control if someone is cheating when more than one Nitro2 user is on the server and all crc's are the same!
p_modified skins like p_modified but only checks the standard skins
p_modified all like p_modified, check all standard modells/sounds + aktual map + standard skins
p_way force all Nitro2 to respond with their connection information
in "ClientIP:ClientPort -> localClientPort -> localServerPort -> ServerIP:ServerPort" style.
where
ClientIP:ClientPort is the ip+port of the connected client
localClientPort is the Proxy port on which the clients connects
localServerPort is the Proxy Port used to send the data to the server
ServerIP:ServerPort is the ip+port of the connected server/proxy
 
if the game has been started using Nitro2 and the client is the started local game Nitro2 will add a [ok] after the message to show that the Client is the original Quake2.exe
the last SeverIP:ServerPort displayed has to be the server the game is running on!
 
if linked all Nitro2 will answere the request in the correct order from the first proxy to the Quake2 client to the last proxy before the Quake2 server.
 
not linked example:
started the Quake2 Client on 192.168.0.98
started Nitro2 on 192.168.0.98:27910
started the Quake2 Server on 192.168.0.98:27911
 
ClientIP:ClientPort  localClientPort  localServerPort  ServerIP:ServerPort  LocalGame
Niewi:  127.0.0.1:27901  ->  27910  ->   1156  ->  127.0.0.1:27911  [ok]
 
linked example:
started the Quake2 Client on 192.168.0.98
started the 1. Nitro2 on 192.168.0.98:27910
started the 2. Nitro2 on 192.168.0.99:27910
started the Quake2 Server on 192.168.0.99:27911
 
ClientIP:ClientPort  localClientPort  localServerPort  ServerIP:ServerPort  LocalGame
Niewi:  127.0.0.1:27901  ->  27910  ->  1086   ->  192.168.0.99:27910  [ok]
Niewi:  192.168.0.98:1086  ->  27910  ->   1155  ->  192.168.0.99:27911
 
as you can see the localServerPort from the first Nitro2 has to be the ClientPort of the second Nitro2 and the ServerPort of the first Nitro2 has to be the localClientPort of the second Nitro2 ...
if not the client is using another proxy/bot/dmflags-filter.
p_version all Nitro2 will answere this query with their version number, the operating system and a crc calculated over the whole proxy, the crc has to be identic on same operating systems excluding linux libc5/libc6 because the proxy don't shows the lib being used ...
p_dmflags this forces all Nitro2 to reponse with the dmflags settings it is working with and a crc which is calculated over server specific setting.
all Nitro2 have to report the same dmflags and the same crc if not someone is using an dmflags filter!
the crc calculation changed with version 0.47, the result can not be compared to older Nitro2 versions!
 
REMEMBER: only one query in 10 seconds will be answered (floodprotection)!
 
How to add new Model names to Nitro2:
top
 
You can teach Nitro2 new models, that means if you play a mod with other weapons/armors than the normal ones used in Quake you can tell Nitro2 the names of the models and what names Nitro2 should use for them.
You can define a long and a short name for the Models. have a look at the Nitro2 message commands section for further details which message commands use long/short names.
 
point on the object to add and use the messagecommand %Y to get the model file name
open the qxmodels.ini file and add a new line to it, up to 255 own models can be defined.
the qxmodels.ini files have a documentation in them!
 
the qxmodels.ini only get loaded on startup of Nitro2, if you change them you have to restart Nitro2 for the changes to take effect.
 
Disclaimer:
top
 
I assume no responsibility for anything of any sort in any way, shape, or form, now, then, henceforeward, in this life (or the next several)
for any screw-ups or even minor inconveniences this Proxy causes you, your family, your relatives, friends, ancestors, associates, employers, pets, neighbors, lovers, deities (major AND minor), nor any other person - living, dead, or undead - that you have or will ever have any contact with in even the slightest form. This Proxy has been tested and tested ad infinitum, so it shouldn't mess with your computer or anything else remotely associated with it. But if it DOES, then too damn bad.
Don't come cryin' to me. It must be something YOU did!
 
Copyright / Permissions:
top
 
Nitro2 is Copyright 1999 Ralf Niebecker.
You MAY distribute Nitro2, provided you include this file with no modifications, on the internet without charging money for it.
If you wish to publish it you have to ask me first!
 
contact:
 
Ralf Niebecker
Duemperstr. 16
44229 Dortmund
Germany
 
ICQ : 25115019
 
e-mail:
Niewi@NitroForce.de
RalfN@Rocketmail.com
Nitro@torxed.de (additional Support)
 
get Nitro2 at:
Nitro.SplatterWorld.de
Nitro.Vekoduck.com
www.NitroForce.de
www.torxed.de/nitro
 
Quake©, QuakeWorld©, Quake2© and Quake3Arena© are registered trademarks of id Software, Inc.