TF2 AdBlock: A breakdown

Dr. McKayFeb 11, 2015

Ever since the Pinion controversy about a year ago, many TF2 players consider “MOTD” and “bad” to be synonyms. In reality, the MOTD (or “Message of the Day”) is just the panel that appears when you first join a server. On FirePowered servers, this shows the server rules, donor benefits, and a summary of your stats.

I have never been secretive about my opinion regarding Pinion and other in-game advertising. I don’t personally like it, but I see the need for it in an environment where living off of donations isn’t always possible (thanks FirePowered donors!). This is especially true for vanilla Quickplay game servers after recent Quickplay rule changes. Now there’s a limited selection of perks that can be offered to donors (ex: no more unusual effects!) and most people aren’t so generous that they’re willing to donate monthly just because they enjoy playing with a community.

If FirePowered had to adopt 30-second pre-game ads (which will never happen, but just consider this for the sake of example), I’d probably be willing to put up with it since I enjoy the community. I understand that many (perhaps even most) other players don’t share this sentiment with me, and I respect that.

I do, however, believe that it’s the right of the server operator to dictate how their server runs. There isn’t exactly a shortage of TF2 servers (in most parts of the world) and if you don’t like how a particular server is run, you can always go elsewhere.

That being said, there’s a particular script known as “SourceProtect,” “TF2 AdBlock,” “TF2 Anti-Virus,” and other names that has been floating around for some time. This script promises to block MOTD ads within TF2. What it does is another story entirely.

cl_allowupload 0 – This prevents the game client from uploading anything to the server. I have no idea why the author felt that this was necessary or even useful. All this does is prevent your client from uploading sprays and jingles to the server, which prevents anyone else from seeing/hearing them.

alias cl_allowupload “echo Blocked cl_allowupload!” – Prevents the value of cl_allowupload from being changed by aliasing it to a command.

alias clear “echo Blocked clear!” – Prevents the console from being cleared for some reason. Who knows why.

alias unbindall “echo Blocked unbindall!” – Arguably the only non-terrible part of this file, this line prevents the “unbindall” command from being run. I’m not sure how anyone would accidentally run that command, but who knows. You can always restart the game to fix it. Note that the game itself needs to be able to use unbindall on startup, but this script should be executed after that.

cl_disablehtmlmotd 1 – Disables HTML MOTDs, also available from the advanced options menu. This prevents servers from showing you webpages in their MOTD, restricting them to only plain text (using that awful chalkboard font). This also prevents servers from showing you any webpages at all, preventing stuff like the !bp plugin on trade servers, or radio streaming from working.

alias closed_htmlpage “echo Blocked pinion!” – An old version of the Pinion plugin listened for this command, which the client would send when the MOTD was closed. If your timer hadn’t expired, Pinion would then reopen the MOTD. Pinion hasn’t done this for a very long time so all this does is break server things (see below).

alias play “echo Blocked play!” – Blocks the play command, which plays a sound. Servers can run this command on your client, but this isn’t dangerous. Servers don’t need to use this command to play sounds, so blocking it really doesn’t do anything. And again, if a server is being annoying you can always leave and give your time to one that’s more worthy. Blocking this breaks main menu music.

alias soundfade “echo Blocked soundfade!” – Blocks the soundfade command, which dims your game sound volume. Servers can run this command on your client, and this might be used by custom gamemodes.

alias cl_spec_mode – Blocks servers from changing the value of cl_spec_mode on your client. This supposedly stores your spectating preference (firstperson, thirdperson, free-camera) but after some short testing I found that this doesn’t seem to work in TF2.

alias rpt_connect – Blocks servers from using the rpt_connect command. This is used for remote performance testing and can only be enabled by a Valve employee, and only with your permission.

alias r_screenoverlay – Blocks servers from showing screen overlays to your client. These are used by custom game modes (like TF2Ware) or mods like RTD (which uses r_screenoverlay for its nostalgia black/white effect).

Version 2 isn’t much different. The key differences are that sv_allowupload is no longer set and locked to 0, clear is no longer blocked, unbindall is no longer blocked (which was perhaps the only useful thing in the original version), and cl_disablehtmlmotd is force-set to 0 (meaning you can’t disable it in advanced options anymore). closed_htmlpage is still blocked which Pinion hasn’t used in a long time and can break some servers.

Why closed_htmlpage is useful for servers

The closed_htmlpage command is the only way a server can know that you’ve closed a MOTD. Some plugins modify the MOTD so that it’s bigger than normal (because really, that default chalkboard is tiny). FirePowered has such a plugin. Unfortunately, closing the “big” MOTD also closes any GUI panels below it. This means that the server needs to know when the MOTD is closed so it can display the team-join and class-selection screens. FirePowered works around this command being blocked by showing the team-selection screen when the server detects mouse movement, but this solution isn’t perfect.

The bottom line

Version 1 of this config is much more widespread than version 2. This means that most people who are using this poorly-thought-out and poorly-written script are unknowingly having a bunch of stuff broken for them, and they’re receiving no protection whatsoever. If you’re using version 1, nobody can see your sprays, and you didn’t even know it. You’re missing out on the great main menu music. You’re working against servers that are trying to deliver you a quality playing experience. Bottom line, you’re hindering your game for no reason.

The age of adverts is over. Those few servers that continue using them don’t force timers. And for those that do, this script won’t help you work around them anyway. Do yourself a favor and remove it.