Sunday, July 22, 2007

HOWTO: See Invisible Bullets and Actual Colors on Radar

Brought to you by Phasmophage :)

You may recall our previous post about being able to see Stealth tanks on radar. That's useful, we can do more to make ouur radar even more powerful. With this tip from Phasmophage, we can add the ability to see Invisible Bullets and see the actual tank colors of tanks when we have the Colorblindness flag.

For this, we're revisiting RadarRenderer.cxx in /src/bzflag/ of the extracted source. Search for " if (shot && (shot->getFlag() !=" and you will find this line:

if (shot && (shot->getFlag() != Flags::InvisibleBullet || iSeeAll)) {

Remove "&& (shot->getFlag() != Flags::InvisibleBullet || iSeeAll)" so that the edited line looks like this:

if (shot) {

Look at this entire section now (includes edited line from above):

if (shot) {
const float *shotcolor;
if (coloredShot) {
if (myTank->getFlag() == Flags::Colorblindness)
shotcolor = Team::getRadarColor(RogueTeam,rabbitMode);
else
shotcolor = Team::getRadarColor(player->getTeam(),rabbitMode);
const float cs = colorScale(shot->getPosition()[2], muzzleHeight);

Notice the fourth line in particular:

if (myTank->getFlag() == Flags::Colorblindness)

Let's remove the "== Flags::Colorblindness" so that the line now reads like this:

if (myTank->getFlag())

Next, remove this line:

shotcolor = Team::getRadarColor(RogueTeam,rabbitMode);

... and this:

else

... so that the modified section should now read like this:

if (shot) {
const float *shotcolor;
if (coloredShot) {
if (myTank->getFlag())
shotcolor = Team::getRadarColor(player->getTeam(),rabbitMode);
const float cs = colorScale(shot->getPosition()[2], muzzleHeight);

Save the file, compile your client, and you're done! To view Phasmophage's original instructions, take a look at his comment to "HOWTO: Reverse While Sealed with Oscillation Overthruster" as well as the update comment to this post, "HOWTO: See Invisible Bullets and Actual Colors on Radar".

As always...

Have fun!

Related posts:
HOWTO: Seeing STEALTH Tanks on Radar
HOWTO: Always See Actual Tank Colors

HOWTO: Always See Actual Tank Colors

Brought to you by Phasmophage :)

Here's an edit that will allow you to see the actual tank color of players even if they have Masquerade and/or if you have Colorblindness. For this, we will go to playing.cxx in /src/bzflag/ of the extracted source. Search for "const bool colorblind = (myTank->getFlag()", and you will come to this section:

const bool colorblind = (myTank->getFlag() == Flags::Colorblindness);
player[i]->addShots(scene, colorblind);

TeamColor effectiveTeam = RogueTeam;
if (!colorblind){
if ((player[i]->getFlag() == Flags::Masquerade)
&& (myTank->getFlag() != Flags::Seer)
&& (myTank->getTeam() != ObserverTeam)) {
effectiveTeam = myTank->getTeam();
}
else {
effectiveTeam = player[i]->getTeam();
}
}

const bool inCockpt = ROAM.isRoaming() && !devDriving &&

Look at the first line. Replace "(myTank->getFlag() == Flags::Colorblindness);
player[i]->addShots(scene, colorblind)" with "false" so that the edited line looks like this:

const bool colorblind = false;

Next, look at the line "TeamColor effectiveTeam = RogueTeam;". Replace "RogueTeam" with "player[i]->getTeam()" so that the edited line looks like this:

TeamColor effectiveTeam = player[i]->getTeam();

Remove the lines between the line above and "const bool inCockpt = ROAM.isRoaming() && !devDriving &&" so that the section will look like this:

TeamColor effectiveTeam = player[i]->getTeam();

const bool inCockpt = ROAM.isRoaming() && !devDriving &&

As Phasmophage said it, "This should color masqueraded tanks correctly, and take out some of the effects of colorblindness."

Save the file, compile your new client, and you're done. To view Phasmophage's original instructions, read his comment to "HOWTO: Reverse While Sealed with Oscillation Overthruster".

And,...

Have fun!

Related posts:
HOWTO: Seeing Cloaked Tanks
HOWTO: Seeing STEALTH Tanks on Radar
HOWTO: See Invisible Bullets and Actual Colors on Radar

Saturday, July 21, 2007

HOWTO: Reverse While Sealed with Oscillation Overthruster

Brought to you by Phaz :)

Tired of not being able to reverse into a building with your Oscillation Overthruster (OO) flag? If you poke out of a building to take a shot, can only back into the building by jumping backward which leaves you vulnerable. Or, let's say that you are sealed in a thin wall. If you want to backtrack, you will have to leave the safety of the building to turn around.

No longer!

Thanks to this tip from Phaz, you can back up while sealed with OO! Now you can pull out, snipe your shot, and simply back up into the safety of the building (or other obstacle where you can be sealed). That is, you are no longer limited to driving only in the forward direction.

For this edit, we are going to open LocalPlayer.cxx in /src/bzflag/ of the extracted source. First let's edit the sections that prevent us from being able to back up while sealed. Search for "if (expelled && phased)", and you will this section:

if (expelled && phased)
expelled = (obstacle->getType() == WallObstacle::getClassName() ||
obstacle->getType() == Teleporter::getClassName() ||
(getFlag() == Flags::OscillationOverthruster && desiredSpeed < 0.0f &&
p[2] == 0.0f));

Let's remove the portion "|| (getFlag() == Flags::OscillationOverthruster && desiredSpeed < 0.0f && p[2] == 0.0f)" so that the edited section now reads like this:

if (expelled && phased)
expelled = (obstacle->getType() == WallObstacle::getClassName() ||
obstacle->getType() == Teleporter::getClassName());

Next, search for "(expelled && phased)" again, and you will find this section:

if (expelled && phased)
expelled = (obstacle->getType() == WallObstacle::getClassName() ||
obstacle->getType() == Teleporter::getClassName() ||
(hasOOflag && desiredSpeed < 0.0f && p[2] == 0.0f));

Let's remove the portion "|| (hasOOflag && desiredSpeed < 0.0f && p[2] == 0.0f)" so that the edited section now reads like this:

if (expelled && phased)
expelled = (obstacle->getType() == WallObstacle::getClassName() ||
obstacle->getType() == Teleporter::getClassName());


Lastly, search for "oscillation overthruster tank in building can't" and you will find this section:

else if (fracOfMaxSpeed < -0.5f) fracOfMaxSpeed = -0.5f;

// oscillation overthruster tank in building can't back up
if (fracOfMaxSpeed < 0.0f && getLocation() == InBuilding &&
flag == Flags::OscillationOverthruster) {
fracOfMaxSpeed = 0.0f;
}

// boost speed for certain flags

Let's remove the portion about not being able to back up in a building so that the edited section now reads like this:

else if (fracOfMaxSpeed < -0.5f) fracOfMaxSpeed = -0.5f;

// boost speed for certain flags Save the file, compile your new client, and you're done!

For Phaz's original instructions, see his comment to "HOWTO: Drop Bad Flags Instantly".

Keep these tips rolling in! And as always...

Have fun!

Related posts:
HOWTO: Shoot While in a Building with Oscillation Overthruster
HOWTO: Flying Without Wings & Extended Jumping

HOWTO: Respawn Instantly

Brought to you by blogger, Someone :)

Someone actually brought this to us a while back, and I apologize for taking so long to post it. Anyway, here's a tip that will allow you to respawn instantly after exploding. In LocalPlayer.cxx (in /src/bzflag/ of the extracted source), search for "else if (location == Exploding)" and you will find this section:

} else if (location == Exploding) {
// see if explosing time has expired
if (lastTime - getExplodeTime() >= BZDB.eval(StateDatabase::BZDB_EXPLODETIME)) {
dt -= float((lastTime - getExplodeTime()) - BZDB.eval(StateDatabase::BZDB_EXPLODETIME));
if (dt <>
dt = 0.0f;
}
setStatus(PlayerState::DeadStatus);
location = Dead;
if (isAutoPilot()) {
CMDMGR.run("restart");
}
}

// can't control explosion motion
newVelocity[2] += BZDBCache::gravity * dt;
newAngVel = 0.0f; // or oldAngVel to spin while exploding
} else if ((location == OnGround) || (location == OnBuilding) ||


First, let's look at the first through eighth lines from above:

} else if (location == Exploding) {
// see if explosing time has expired
if (lastTime - getExplodeTime() >= BZDB.eval(StateDatabase::BZDB_EXPLODETIME)) {
dt -= float((lastTime - getExplodeTime()) - BZDB.eval(StateDatabase::BZDB_EXPLODETIME));
if (dt <>
dt = 0.0f;
}
setStatus(PlayerState::DeadStatus);


Let's remove the second through seventh lines so that it now reads like this:

} else if (location == Exploding) {
setStatus(PlayerState::DeadStatus);

In my personal edit, I aligned the fist "s" of " setStatus" just below the below the first "e" of "else if". Next, notice this section:

setStatus(PlayerState::DeadStatus);
location = Dead;
if (isAutoPilot()) {
CMDMGR.run("restart");

Let's remove "location = Dead;" and "if (isAutoPilot()) {". Below the line "location = Dead;", add the following (again, I aligned the lines vertically in my personal edit):

LocalPlayer *myTank = LocalPlayer::getMyTank();

Below that line, add this line:

myTank->setJumpPressed(false);

The above edits should now read like this (all aligned vertically in my pesonal edit):

setStatus(PlayerState::DeadStatus);
location = Dead;
LocalPlayer *myTank = LocalPlayer::getMyTank();
myTank->setJumpPressed(false);
CMDMGR.run("restart");

Next, notice this section:

CMDMGR.run("restart");
}
}

// can't control explosion motion
newVelocity[2] += BZDBCache::gravity * dt;
newAngVel = 0.0f; // or oldAngVel to spin while exploding
} else if ((location == OnGround) || (location == OnBuilding) ||

Let's remove the lines between "CMDMGR.run("restart");" and " } else if ((location == OnGround) || (location == OnBuilding) ||" so that the section now reads like this:

CMDMGR.run("restart");
} else if ((location == OnGround) || (location == OnBuilding) ||

In my personal edit, I vertically aligned "} else if ((location == OnGround) || (location == OnBuilding) ||" with the previous else if line "} else if (location == Exploding) {"

When you are finished, compile your client and you're done. To view Someone's original instructions, read his comment to "HOWTO: Drop Bad Flags Instantly".

As always...

Have fun!

Related posts:
HOWTO: Drop Bad Flags Instantly
HOWTO: Drop Bad Flags Like Regular Flags
HOWTO: Classic God Mode

HOWTO: Drop Bad Flags Like Regular Flags

Brought to you by Phaz :)

You may recall our earlier post about how to how to drop bad flags instantly. With that edit, you drop a bad flag as soon as you pick it up. You may not always want to do that especially on servers that do not allow players to drop bad flags since you may bring suspicion to yourself.

TIP: If you are not interested in cheating... On servers where dropping bad flags is not allowed, you can usually take advantage of the drop flag after pausing feature of BZFlag to drop your bad flag. Simply pause, and your flag will drop after a few seconds.

As an alternative to dropping bad flags instantly, Phaz has a simple edit for us that will allow a player to drop a bad flag like a regular flag. For this, we are going to edit clientCommands.cxx in /src/bzflag of the extracted source. Search for "flag->endurance != FlagSticky" and you will find this section:

if (myTank != NULL) {
FlagType* flag = myTank->getFlag();
if ((flag != Flags::Null) && !myTank->isPaused() &&
(flag->endurance != FlagSticky) && !myTank->isPhantomZoned() &&
!(flag == Flags::OscillationOverthruster &&
myTank->getLocation() == LocalPlayer::InBuilding)) {
serverLink->sendDropFlag(myTank->getPosition());

In particular, notice the fourth line:

(flag->endurance != FlagSticky) && !myTank->isPhantomZoned() &&

Remove "(flag->endurance != FlagSticky) && " so that the line now reads like this:

!myTank->isPhantomZoned() &&

Save the file, compile the client, and you're done! To see Phaz's original instructions, read his comment to HOWTO: Drop Bad Flags Instantly. As always...

Have fun!

Related post:
HOWTO: Drop Bad Flags Instantly

Friday, July 06, 2007

Is that really me?

Hi guys

It's good to know people still check out this site and post our link on the irc channels (it saves us a job).

I have noticed that alot of people think that I am CRW, although I would like to take credit for all the work he has done; it is infact, not me :)

Lord Jesus rulez :) keep up the good work, sorry I aint been around to cheat with you but I am too busy lately.

This is time for me to go back into hibernation. But I would like to end my post by paying my respects to the Duati league and thanking SportChick in all her benevolence; for the work she has done in passing it over unto the other side.

Saturday, June 23, 2007

HOWTO: Drop Bad Flags Instantly

Bad flags are annoying, are they not? This is especially true in situations such as grabbing Jamming when your opponent has Cloaking. And those time limits! On servers with bad flag drop such as 15 seconds or more, waiting can be ever so dull. Wide Angle isn't so awfully bad if you get used being able to utilize it; but, let's face it; there are certainly other more desirable flags.

Here's an edit that will allow you to drop bad flags instantly even on servers that do not allow dropping of bad flags (an added bonus). Most players probably won't notice; however, there is a chance that the more experienced players might very well notice -- even if after a while -- as well as administrators especially if they're already monitoring you out of suspicion.

Open LocalPlayer.cxx in the /src/bzflag/ directory of the extracted source, and find the following lines:

// drop bad flag if timeout has expired
if (!isPaused() &&amp; dt > 0.0f && World::getWorld()->allowShakeTimeout() &&
getFlag() != Flags::Null && getFlag()->endurance == FlagSticky &&
flagShakingTime > 0.0f) {
flagShakingTime -= dt;
if (flagShakingTime <= 0.0f) { flagShakingTime = 0.0f; server->sendDropFlag(getPosition());


First, look at the second line:

if (!isPaused() &&amp; dt > 0.0f && World::getWorld()->allowShakeTimeout() &&

Let's remove "World::getWorld()->allowShakeTimeout() &&" so that it reads like this:

if (!isPaused() &&amp; dt > 0.0f &&

Next, let's look at the fifth line:

flagShakingTime -= dt;

Let's change "-= dt" to "= 0.0f" so that the line reads like this:

flagShakingTime = 0.0f;

The above will allow you to drop bad flags instantly on servers that allow for dropping of bad flags. To be able to drop flags on servers that don't allow dropping, we need to edit elsewhere. Take note, however, that experienced players will most likely notice your dropping bad flags if you are playing on a server that doesn't allow it. To add the ability, find the following lines:

// if it's bad then reset countdowns and set antidote flag
if (getFlag() != Flags::Null && getFlag()->endurance == FlagSticky) {
if (World::getWorld()->allowShakeTimeout())
flagShakingTime = World::getWorld()->getFlagShakeTimeout();

Look at the third line:

if (World::getWorld()->allowShakeTimeout())

Remove "->allowShakeTimeout()" so that it reads like this:

if (World::getWorld())

Next, let's look at the forth line:

flagShakingTime = World::getWorld()->getFlagShakeTimeout();

Replace "= World::getWorld()->getFlagShakeTimeout();" with "= 0.05f;" so that it reads like this:

flagShakingTime = 0.05f;

I originally tried the number to "0.0f". When I tested it on my server not allowing bad flag dropping, and no win limit, it didn't work; I picked up a bad flag and it didn't drop. So, 0.05f "works". All of this tip works even if there are easier and/or more efficient ways of accomplishing the same ends :)

When you're finished, save your file, compile your new client, and...

Have fun!

Related post:
HOWTO: Drop Bad Flags Like Regular Flags

New Blog for BZFlag Cheat News

BZFlag Cheat News has a new home:

http://bzflagcheatnews.blogspot.com/

Previous articles have been reposted there.

See you soon ;)

Friday, June 22, 2007

HOWTO: Speed Hacking

Brought to you by Felipe :)

Here are some tips that will allow you to get the most of your tank's speed without having to depend on the high speed flag. You can optionally add quick turn to your tank, as well. Even without extreme speed, and handful of servers may kick you. Most won't at the time of this post. A few more servers may kick you for extreme speed. Nevertheless, you will enjoy always being able to chase down other tanks...

Open LocalPlayer.cxx in /src/bzflag/ of the extracted source. With your favorite text editor, find the following lines:

if (flag == Flags::Velocity) {
fracOfMaxSpeed *= BZDB.eval(StateDatabase::BZDB_VELOCITYAD);

Look at the first line. Remove the "== Flags::Velocity" so that this section reads like this:

if (flag) {
fracOfMaxSpeed *= BZDB.eval(StateDatabase::BZDB_VELOCITYAD);

This will give you high speed regardless of flag save Thief and Burrow. Additionally, you will see further down these lines:

} else if ((flag == Flags::Burrow) && (getPosition()[2] <>
fracOfMaxSpeed *= BZDB.eval(StateDatabase::BZDB_BURROWSPEEDAD);

You can change "BZDB_BURROWSPEEDAD" to BZDB_VELOCITYAD" so that the lines read like this:

} else if ((flag == Flags::Burrow) && (getPosition()[2] <>
fracOfMaxSpeed *= BZDB.eval(StateDatabase::BZDB_VELOCITYAD);

This will give you high speed with Burrow. You can also play around some of these variables. For example, I substituted "BZDB_BURROWSPEEDAD" and "BZDB_VELOCITYAD" with "BZDB_THIEFVELAD" so that I could drive at the speed of Thief on my own server. Some servers will undoubtedly kick you for driving too fast when you drive at Thief speed without Thief... but then, some won't :)

For EXTREME speed, find the following lines:

// can't go faster forward than at top speed, and backward at half speed if (fracOfMaxSpeed > 1.0f) fracOfMaxSpeed = 1.0f;
else if (fracOfMaxSpeed < -0.5f) fracOfMaxSpeed = -0.5f;

Change the numbers so that the lines read like this:

// can't go faster forward than at top speed, and backward at half speed if (fracOfMaxSpeed > 0.0f) fracOfMaxSpeed = 9.0f;
else if (fracOfMaxSpeed < fracofmaxspeed =" -9.0f;">

Again, play around with the numbers to find a speed that you like. Naturally, you will stick out like a sore thumb when you drive so unbelievably faster than everyone else. Hehehe...

For the original instructions, see Felipe's comments to Flying Without Wings & Extended Jumping. When you're finished, save the file, compile your new client, and ...

Have fun!

Related Post:
HOWTO: Quick Turn Always

HOWTO: Quick Turn Always

Brought to you by Felipe :)

Here's a simple edit that will allow you to have Quick Turn at all times without the Quick Turn Flag. Find the following lines of LocalPlayer.cxx in the /src/bzflag/ directory of the extracted source:

// boost turn speed for other flags
if (flag == Flags::QuickTurn) {

Remove "== Flags::QuickTurn" so that the lines read like this:

// boost turn speed for other flags
if (flag) {

For the original instructions, see Felipe's comments to Flying Without Wings & Extended Jumping. When you're finished, save the file, compile your new client, and ...

Have fun!

Related post:
HOWTO: Speed Hacking

Thursday, June 21, 2007

HOWTO: Flying Without Wings & Extended Jumping (UPDATED)

This gem comes to us courtesy of blogger, Felipe :)

Scenario: You and another tank are jumping and shooting at one another. Wouldn't it be nice to be able to slide in one more jump in mid air? Now you can! You can 1-up those annoying players who keep coming at you with Wings. What's cool is that you are not limited to any number of jumps, and this can be especially useful on servers with Wings flap limits ;) But, this tip doesn't stop there...

You can jump no matter what -- regardless of whether or not the server allows jumping (the good folks at Hepcat will love you for it, hehehe...), or if you have the Burrow flag, or even if you have the No Jumping flag! When Burrowed, the jump isn't instantaneous, so you will need to press and hold jump to get airborne. And, it doesn't matter if you are sealed in a building with Oscillation Overthruster. Now, you can jump from inside a building to pick off players who think that they are safe by staying top of your building . Muwahahahaha! >:)

Not only all of that, but you can also control your tank in the air while jumping. The one shortcoming, though, is that you you can only control your tank in mid air you don't have a flag. With any flag (including Wings), you will not be able to control your direction.

UPDATE: Now, you can fly regardless of what flag you have! Imagine being able to fly high to target a Winged tank with your guided missile... or shockwave in air. Or, on a CTF server with no jumping allowed, you can place your team's flag on top of a pillar since the other team won't be able to jump up to get it >:) The possibilities are practically endless... See the comments to this post to see how this was updated.

We're going back to LocalPlayer.cxx for this. You can find it in /src/bzflag/ after you have extracted the source. Use your favorite text editor's search function to locate "can't jump while burrowed". You will come across this section:

FlagType* flag = getFlag();

// can't jump while burrowed
if (getPosition()[2] <>
return;
}

if (flag == Flags::Wings) {
if (wingsFlapCount <= 0) { return; } wingsFlapCount--; } else if ((location != OnGround) && (location != OnBuilding)) { // can't jump unless on the ground or a building if (flag != Flags::Wings) return; if (wingsFlapCount <= 0) return; wingsFlapCount--; } else if ((flag != Flags::Bouncy) && ((flag != Flags::Jumping && !World::getWorld()->allowJumping()) ||
(flag == Flags::NoJumping))) {
return;
}

// add jump velocity (actually, set the vertical component since you


Let's do away with most of this section so that it reads like this:

FlagType* flag = getFlag();

// add jump velocity (actually, set the vertical component since you

The above allows us to jump whenever we want. Now, let's add some ability steer in air. Search for "can't control motion in air unless have wings", and you will come to a section that looks like this:

// can't control motion in air unless have wings
if (getFlag() == Flags::Wings) {
float speed = desiredSpeed;


Specifically, let's look at the second line of the above:

if (getFlag() == Flags::Wings) {

Let's remove "== Flags::Wings" so that the line reads like this:

if (getFlag()) {

Save the file, compile your new client, and you're done. Many thanks to Felipe for sharing this one with us ;) You can view the original instructions in the comments of the previous post, The Infamous BZFlag F5 Cheat. Please take a look at the previous HOWTO posts if you haven't already done so. And, let's keep those tips rolling in >:) As always...

Have fun!

Monday, June 18, 2007

TIP: The Infamous BZFlag F5 Cheat

Grab yourself a copy of the 2.0.4 version of BZFlag, and use F5 -- the screenshot function -- to insert artificial lag. One method is to press and hold F5 to insert the lag. This is a great technique for dodging bullets and capturing another team's flag.

You can also press and hold F5 to get to other places you normally couldn't get to... like the other side of a wall. Again, this is if you you use the older 2.0.4 version of BZFlag. The delay for taking a screenshot until you release F5 was "fixed" in version 2.0.8. You can read about how it works in this discussion:

my.bzflag.org/bb/

"
The basic case is this: the tank moves along velocity vector, then collisions are checked. If the tank has moved too far along in one time step, it is now inside (or on the other side(the F5 cheat!)) of the object it 'collided' with." [emphasis added]

It's briefly mentioned here, too:

http://www.answers.com/topic/bzflag

"
F5: To F5 is to take a screenshot of BZFlag, which also creates a small lagspike and makes your tank unhittable for a short interval of time."

As you can imagine, this has been around for quite a while. It's posted here at BZFlag Cheat just in case you didn't get an opportunity to take advantage of it previously >:) Some more information about the F5 technique is easy to find with your favourite search engine. Here's an example:

Google search

Keep in mind that it is not entirely undetectable especially among experienced players. Use it wisely ;) Here's an example of a player, soxs, who got banned for it:

http://gu.bzleague.com/index.php?link=shame

So, now you can enjoy enhanced gaming without having to modify or add a single line of code to your client!
To control disk space, don't forget to empty your screenshots folder when you're finished playing. And as always...

Have fun!

Related posts:
HOWTO: Classic God Mode
HOWTO: Shoot While in a Building with Oscillation Overthruster