Cheapo
A freeware QuakeWorld 2.1-2.3 proxy
Copyright (C) 1998 Sami Tammilehto
 
[ News | Information | FAQ | Feedback | Download ]

 
What is Cheapo and what can it do?
Cheapo is a proxy that can be used to route QuakeWorld network traffic. Additionally, the proxy can modify the data and has features for enhancing gameplay. You can connect to cheapo as if it were a Quakeworld server, and then give it commands that forward you to a real server. You can also go through multiple proxies, if you like. The most common way to use a proxy is to run it on the local computer, just to get access to the gameplay features. The proxy can also be run on a firewall machine incapable of handling Quake traffic, so that machines inside the firewall can be used for playing. See the features list for the gameplay enhancements.
 

Some Background
I personally needed a QuakeWorld proxy to get through a firewall, and decided to build one when I heard that the new QuakeWorld will be incompatible (and thus the excellent FAQ-proxy would stop working). Now that the proxy has stabilized a bit and many people have asked me to publish it, I have decided to do so. However, please remember that this started out as a personal experiment, and is still pretty much that. So I add features and fix bugs that I personally feel are most important. In any case I do plan on keeping this proxy up to date at least in the near future. Also note, that this proxy has been mostly tested in DeathMatch play, so problems with TF, CTF or other addons are more possible.
 

How much does it cost
It doesn't cost anything. Howerver, nothing is really free. Since there is no real support, and the documentation is very limited, it means you have to work harder to get things working smoothly. And you might encounter unexpected problems. Or your computer could be blown to bits (just kidding, but hey, everything is possible). If you want the security of a well tested product, try the other link on the main page.
 

How to use it
I can really only recommend Cheapo if you have previous experience with QuakeWorld proxies. In that case installing and using it should be a breeze. Still, here are some quick instructions:

By typing ".help" in the console you get the list of all supported command. More help for a particular command is available with ".help command" . All the documentation (which isn't much) is available through this help command. Communication with the proxy is done by talking to it, so if you make cfg-files, remember to use 'say .command' and not just '.command'. Also note that you can define an alias named proxyautoexec in your own config. This is executed by the proxy whenever you connect to it.

All proxy commands are prefixed with . (dot) to distinquish them from everything else. Normally the proxy also recognizes commands prefixed with proxy: or hostname: so to connect you could type: ".connect" or "proxy:connect" or "xyz:connect" (if the computer's hostname is xyz). If you are going to a server through multiple proxies, the prefixes start to matter. Commands with the dot-prefix always go to the nearest proxy (so use .command for setting up powerup times and the like), and commands with the proxy:-prefix go to the last proxy (so use proxy:connect for connecting). Using the hostname-prefix of course affects the proxy with that hostname.
 

Features
The easiest way to give a summary of features is to just list the command the proxy supports. Although this list might get outdated (or is already), it's still pretty close. It is possible that some commands change in the future. You have been warned.
 
Connecting
connect connect to a QuakeWorld server or a new proxy
disconnect disconnect from where you were connected to (but not from the proxy itself)
reconnect reconnect to last address you were (or are) connected to.
users list users in this proxy
name rename the proxy (changes the proxy:-prefix)
 
Powerup Camping / HUD
line  change what screen line the timers appear on
camp select what items are timed (none, quad, pent and/or ring)
remind  remind of soon appearing powerups with a text near center of the screen
guess guess powerup pickup times (assume picked when appears or someone says so)
move move small centerprint messages downward away from crosshair
notimers disable powerup timers for this proxy session
 
Teamplay
who  list who is on the server with skins and teams (like Kombat Teams who / whoskin)
mark give names to locations so you can use them in your messages.
skin override skins of all players according to team
color override colors of all players acoording to team
point select what items you can point to (for messages like 'available rl at red armor')
took select what items are reported (for messages like 'took ra at base')
report automatically report things (when you get a powerup, etc)
sound soundtrigger, play sounds on teammates computers 
 
Miscellaneous
fps  remove things that slow down the framerate (like dynamic lighting and bodies)
weapon if you select a weapon you don't have, try select the next best weapon with ammo
track track a player in first person view (when you are a spectator). Works like Kombat Teams track.
items list items in current map (to see how many quads etc, if your memory is failing you)
cpps limit client packet rate (allows higher framerate on low bandwidth connections)
flood flood protection protection (avoids the flood penalty)
stat display communication statistics
 
%-commands you can add to your messages
%A, %a, %[a] information on your armor
%h, %[h] information on your health
%w, %[w], %b, %[b] current weapon and best weapon
%p, %[p] powerups you have
%s report things that are low (of armor, health, weapon)
%l  nearest location (see mark-command)
%d location where you died the last time 
%r last reported location
%e, %o number of enemies and teammates nearby
%L, %E, %O like their lowercase versions, except that they remeber the situation before dying for 5 seconds.
%n only show this message to nearby teammates (this is a note to other players' proxies to hide the mesage if they are far away)
%d where you died for the last time
%L, %E, %O like %l,%e,%o but after your death the status of the situation is frozen for 5 sec
%t, %x, %y what you are pointing at (name at place, name, place)
%i, %j, %k  what you last picked up, what you last pointed, whichever happened latest
%m like %k, or nearest item if nothing taken/pointed to in 10 seconds
%q, %g powerups last enemy you saw had, powerups that are about to appear
%S, %C your skin and your bottomcolor
f_report (alias) report your armor/health/weapon/powerups (uses the above)
f_powerup (alias) report your powerups (in 'i have quad' style)
f_took (alias) report you took an item (in 'took ra at base' style)
 
What kind of team messages are possible with these %-commands?
To show how all these %-commands can be put to use, I have made a list of the teamplay aliases I am currently using. You can probably come up with even more ways to use these, but this list is a good starting point if you want some ideas. My goal has been to minimize the number of messages, but there are still quite a few. The left side shows the actual command bound to a key, and the right side shows an example of what it looks like in game.

First the classic binds:
 
f_report [a:0] h:100 rl:5
This is used to report your current health/armor/weapon status. It's used most often when there are many peoply near an armor and you have to decide who takes it (the one with lowest armor). This is only shown to visible teammates. Cheapo adds glowing braces [ ] around those parts of the message that are low to make them more easily visible. Armor and health is 'low' if it's under 50, weapon is 'low' if it's worse than a RL with 3 rockets, or a LG with 10 cells.
 
say_team %l secured (%o-%e) red armor secured (1-0)
To tell your teammates that you have an area under control. Of course it's preplanned what areas are being controlled and so on. The 1-0 means 1 teammate (you) and 0 enemies.
 
say_team %L lost (%E enemies) red armor lost (2 enemies)
To tell your teammates that control of an important area is lost. The uppercase %L and %E make this work even if I press it a few seconds after dying at the new spawn location.
 
say_team help to %L! help to red armor!
To ask for help when the situation is quickly getting worse. It's better to ask for help early than to be a hero and lose control to the enemy. It's also important that teammates come for help (that's what the next message is used for)!
 
say_team coming from %l coming from grenade
A reply when someone asks for help or is offering an item (the binds below) and you need it. The location is important so that the other person knows how far away you are.

Then some new binds that combine many of the older ones:
 
say_team "%t" pack at grenade
The %t belongs to the pointing commands, and is very powerful. It can be used to report the precence of almost any item or player. All you have to do is point to the item and press this bind. The items considered for pointing can be adjusted with the .point command (default is powerups, armors, players, packs, rune/flag, megahealth, rl, gl, lg). Most often used to report that a pack with a rl (in DMM1 games) or that an armor is available. Of course you would only report when you don't need that item desperately yourself. Anyone who is near and wants the item should reply with 'coming from', in which case the other player guards the item. If nobody is coming in a few seconds, it's best to just take the item so the enemy doesn't get it. You can also use point to tell where you see an enemy (the proxy tells if the enemy has quad or penta too).
 
say_team taken: %k taken: pack at grenade
This is another multipurpose bind that can be used to report that you took an item, or that an item you said was available (by pointing) no longer is. The logic for %k is that it displays the name/location of the last item you either pointed to or collected yourself. If you want to separate the two cases, there are commands %i and %j for that.
 
f_powerup i have quad pent
Used to report that you got a powerup. It will list all the powerups you have.
 
say_team get %g (at %l) get quad (at lower rl)
If your responsibility is to collect a certain powerup, and you are unable to do so, this is used to tell that someone else has to do it. The proxy will list all powerups appearing within 10 secs (if timers are enabled). If the proxy has no knowledge of powerup times, it will say quad (since this is the most common case).
 
say_team enemy %q! enemy pent!
Used to notify teammates of a powerupped enemy you saw. The proxy adds the powerups of the last seen enemy. In case the proxy has seen no enemies it will say quad (since again it's the most common case).

Additional notes:
If you don't like the new f_report style, you can redefine f_report with 'alias f_report say_team '%Aa:%a h:%h %b %p %n' which was the one used by FAQ-proxy. Just not that the definition has to be done after you connect to the proxy. You can also redefine f_powerup, and f_took.

The f_report and f_powerup binds can be automatically triggered by the proxy (when someone says a report or you get a powerup). This is enabled with command '.report power reply'.

If you want to set a lot of settings when connecting to the proxy, a handy way to do it is to make a proxy.cfg, and then define in your main config 'alias proxyautoexec exec proxy.cfg'. The proxyautoexec alias is executed whenever you connect to Cheapo.