Sunday, April 29, 2007

a_meteorites reply

A_Meterites reply to the news that he is really ChristopherReevesWheelchair


"...... ARRRRGHHHH !!!!!!!!!! HOW DID YOU FIND OUT AHHHHHHHHH I CANT BLIEVE THIS CRAP I HATE U ALL!! IM GONA QUIT BZFLAG FOR GOOD NOW AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH"



Well. There you have it.

Friday, April 27, 2007

HOWTO: Seeing STEALTH Tanks on Radar

Have you enjoyed the Classic God Mode modification, yet? In case you haven't had a chance to try it out, read further down this blog to the previous HOWTO edition. If "god mode" isn't your thing, then you might find being able to see Stealth tanks on radar to be quite handy. Remember to keep it subtle; don't make yourself obvious. For example, if a Stealth tank is on the other side of a large wall, most players (particularly, the Stealth player) will know that you don't "coincidentally" shoot Super Bullets straight down the direction to the Stealth tank. Remember to pretend to be "surprised" when Stealth tank comes into view before you blow him up to kingdom come.

Being able to see stealth on your radar is very easy in and of itself. In fact, it doesn't require any additional lines of code. More elaborate adaptations of this modification, such as stealth blinking on radar, will in fact require some code; however, we're just going to stick to the simple trick for the purpose of this blog entry. We'll come back to it in more detail with various options including blinking on radar, toggle mode (to turn on/off being able to see stealth), selective stealth radar mode (in case you want to target only specifically annoying players), and so on. So, stay tuned for more later on.

After you unpack the source tarball, you will find the file "RadarRenderer.cxx" in the extracted "/bzflag-2.0.X/src/bzflag/" directory (where "X" is version number such as in version 2.0.8). Use your favorite text editor to open "RadarRenderer.cxx" and use your Find feature (e.g., ctrl+f in some graphic editors) to search for "stealth". You will come across some lines that look like this:

}
if (!player->isAlive() &&

(!useTankModels || !observer || !player->isExploding())) {

continue;

}

if ((player->getFlag() == Flags::Stealth) &&

(myTank->getFlag() != Flags::Seer)) {

continue;

}


const float* position = player->getPosition();

All we need to do is remove the portion that indicates that we should not be able to see Stealth if we don't have the Seer flag. When you are finished, the revised lines should look like this:

}
if (!player->isAlive() &&

(!useTankModels || !observer || !player->isExploding())) {

continue;

}

const float* position = player->getPosition();

Save the file, compile you client, and...

Have fun!

Related post:
HOWTO: Seeing Cloaked Tanks

BFCN: CRW *EXPOSED* AS: A METEORITE!!!

Hot off the press. Breaking news.

CRW has been **EXPOSED** as a meteorite!

Stay tuned to BZFlag Cheat News for more coverage as the story develops.

HOWTO: Classic God Mode

Ever consider tinkering with "god mode" but just didn't quite know how?

Well, you've come to the right place! First, I'm going to assume that you already know how to unpack compressed files (e.g., *tar.gz files). I'm also going to assume that you already know how to use your favorite text editor. Also, I'm focusing on the source itself. The README file in the BZFlag source gives instructions on compiling from the source.

Let's get started.

After you've unpacked the source tarball, navigate to the unpackaged directory. Once you're there, navigate on to the "/src/bzflag" directory. In that directory, you will find the file "playing.cxx". We'll work on some modifications to that file. Open your favorite text editor if you haven't already, open the file, and let's get going...

First, you may want to open a second editor and paste something like the following to it:

//MODIFIED: The following comment and line were added:
//skip this if alive
if (myTank->isAlive()) return;

We'll use it for quick pasting later on.

Also, I recommend backing up your original playing.cxx file for later use. Alternatively, you can extract a copy of the original file from your original tarball.

Now that you've go "playing.cxx" open it's time for a few changes. Use you editors "Find" feature (e.g., ctrl+f as with some graphic editors) to search for "see if" in the text of the file. The first entry you should come to should be:

/* see if controls are reversed */
if (myTank->getFlag() == Flags::ReverseControls) {
keyboardRotation = -keyboardRotation;
keyboardSpeed = -keyboardSpeed;


You can do away with the "-" symbol with "-keyboardRotation" and "-keyboardSpeed" so that they read "keyboardRotation" and "keyboardSpeed" if you don't want your respctive controls to be reversed when you have the Reverse Only flag. If you get that flag, you will still have to wait until you drop it (unless you have the drop bad flag modification, which we'll cover in a later topic) in order to pick up another flag.

Let's search for the next "see if" in the file. You should come to "// see if it's moved and autoswitch". Nothing of interest here. Next... the next "see if" search brings you to "see if controls are reversed". As before, you can remove the "-" with "-mx" and "-my" to do block the effects of the Reverse Only flag.

The next "see if" search brings us to "...check scores to see if my team and/or..". Nothing of interest here. Next... the next "see if" search brings us to:

// now see if shot was fired with a GenocideFlag
const ShotPath* shot = killerPlayer->getShot(int(shotId));


Muwahahaha! That sounds interesting! Let's add in our lines below the comment so that it reads like this:

// now see if shot was fired with a GenocideFlag
//MODIFIED: The following comment and line were added:
//skip this if alive
if (myTank->isAlive()) return;
const ShotPath* shot = killerPlayer->getShot(int(shotId));

Nothing like ignoring a teammate getting sacked with Genocide, huh? Keep in mind that some servers have rogues genocide. If you are playing on one of these servers as a rogue, then you will still get geno'd since the rogue genocide is handled by the server and sent to the client as a server kill message. Playing as a team color will eliminate that little problem. That, or use the modification to ignore server kill messages, which we will cover in another topic. Moving on...

Your next "see if" search will bring you to:

// see if i've been shot
const ShotPath* hit = NULL;


Hmmm... see if I've been shot? I'd rather not, if you don't mind >:) Let's do our paste action again so that the lines now read:

// see if i've been shot
//MODIFIED: The following comment and line were added:
//skip this if alive
if (myTank->isAlive()) return;
const ShotPath* hit = NULL;


Next...

// if not dead yet, see if i'm sitting on death
else if (myTank->getDeathPhysicsDriver() >= 0) {

If not dead yet, then let's keep it that way. Let's paste again:

// if not dead yet, see if i'm sitting on death
//MODIFIED: The following comment and line were added:
//skip this if alive
if (myTank->isAlive()) return;
else if (myTank->getDeathPhysicsDriver() >= 0) {

You're going to run across a few of these "if not dead yet, see if ..." lines. Simply modify the lines as we've done above, you should be good to go on those. After a few of the "If not yet" fixes, you will come to:

// see if it's inside lock-on angle (if we're trying to lock-on)

Interesting, yes, but not of interest to us for classic god mode. Let's keep going. We come to "// see if it's inside lock-on angle...". Again, not of interest for classic god mode. Moving on, we come to "// see if we should ...". Again, not of interest for classic god mode. Move on still.

Next, we come to some more "If not dead yet" lines. Modify those as you did before. After those fixes, you will come to:

// see if the world collision grid needs to be updated

Nothing here for god mode. Move on.

Ah, you should be at the end of the document. You can run through it if you want to make sure that you hit all of the right spots :)

To be double sure, you can also search for "genocide". If you search from the beginning, keep using your Find Next feature, and you will find the line:

// blow up if killer has genocide flag and i'm on same team as victim
// (and we're not rogues, unless in rabbit mode)
if (human && killerPlayer && victimPlayer && victimPlayer != myTank &&


Now that looks intriguing. Let's add our own little touch to that, shall we?

// blow up if killer has genocide flag and i'm on same team as victim
// (and we're not rogues, unless in rabbit mode)
//MODIFIED: The following comment and line were added:
//skip this if alive
if (myTank->isAlive()) return;
if (human && killerPlayer && victimPlayer && victimPlayer != myTank &&
victimPlayer->getTeam() == myTank->getTeam() &&


Magnifico!

After that, save the file, compile your new client, and ...

Have fun!

Welcome Back

Greetings everyone!

I know that it's been a long time since anything has been added to this blog. For all intents and purposes, I'm sure that most of you thought that BZFlag Cheat was gone for good. If you thought that, you thought wrong!

We're BACK, and we're going to be better than ever!