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:
-
download the file (see end of page) and unzip it somewhere
-
execute cheapo
-
start up quakeworld
-
type in the console: "connect localhost", the proxy should now
respond
-
connect to another server by typing: ".connect name.of.server"
(note the dot before connect)
-
to disconnect from the server, but not the proxy, type: ".disconnect"
-
to disconnect from the proxy, just type the normal: "disconnect"
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.