Adding an Exec Command

Adding an Exec Command

Through a New Cheat Manager

 

Code Tutorial 2

 

You must be running the new Share the Pain version of POSTAL 2 for any of this to be relevant. Using these tutorials with older code may cause you problems.

 

These tutorials were written to be completed in succession with one another. If you jump ahead to a later tutorial, I will be discussing things from earlier tutorials that you may not recognize. Following each one in order should greatly improve your learning experience.

 

 

This will teach you how to add a new exec command (a function that can be bound to key/mouse commands in the User.ini, or can be called directly in the game console—check P2Player.DoKick for a good example (search for DoKick in User.ini also)).

 

This will also teach you how to extend the cheat manager class to add your own cheats.

 

An important distinction to realize before starting this document is that this will modify your current game. I’m not yet writing about how to write your own packages and incorporate it into the game without modifying anything else. That is actually very extensive. I’d like to eventually write about that—time permitting.

 

Let’s begin.

 

Open a folder for Postal2\GameTypes\Classes. Make a copy of the P2CheatManager.uc file. Call it something new like ‘SuperCheatManager.uc’. Open that new file. Edit the top comments to something like that (or even more informative).

 

///////////////////////////////////////////////////////////////////////////////

// SuperCheatManager

//

// my super cheats that I love and no one can take from me

//

///////////////////////////////////////////////////////////////////////////////

 

Next, and very importantly, extend this new actor class from the parent cheat manager which is P2CheatManager. This ensures that all the functionality you already had will still be there, plus any new things you create.

 

(was this: )

class P2CheatManager extends CheatManager;

 

change it to this:

class SuperCheatManager extends P2CheatManager;

 

Now the next part is to just make sure we start a clean slate. Delete everything from just below the class definition all the way down to the block about default properties. Next, delete the line

 

          FanaticsTalking=Sound'HabibDialog.habib_ailili'

 

Your file should look like this now

 

///////////////////////////////////////////////////////////////////////////////

// SuperCheatManager

//

// my super cheats

//

///////////////////////////////////////////////////////////////////////////////

 

class SuperCheatManager extends P2CheatManager;

 

 

defaultproperties

{

}

 

Or something very similar. We’re removing everything from before to keep things straight. Yes, it’s true, you can override functions in this extended class, but it would be very confusing to keep the same functions here even though functionally it would work.

 

Now is the fun part – the actual code writing. Let’s make a new function that fires the dude’s current weapon without having to touch the fire key. The important part is this will be an exec function. So you will be using the console in the game to type this function name in to execute the command (or of course, bind it to a key command/mouse command using the user.ini).

 

Here’s a shooting function—really it just calls the real shoot function—but that’s not the point of this exercise.

 

Exec function SneakyShoot()

{

            P2Player(Outer).Fire(0);

}

 

Save the SuperCheatManager.uc file.

 

Now here’s the tricky part. The player controller (Controller handles most intelligent decisions, Pawn is the body that animates and does things and is controlled) has a class name for what cheat manager it will use. You must replace this, but you must do so in the single-player player controller class. This is DudePlayer. That is the class used in SP for all the highest level things (this is not the highest level class used in MP games—that is xMpPlayer).

 

The name of the variable we’re concerned with is CheatClass. The way to find this sort of thing would be to have your handy, fancy code editor you’re using to edit uc files (as I talked about in the Writing Script doc). Assuming whatever editor your using can search all files and keywords within them, do a search on ‘P2CheatManager’. This is the class we’re replacing. It’s always good to know where these things are used and how it’s used.

 

With a search like this you’ll see that in DudePlayer, CheatClass is set to P2CheatManager. We want to simply change that (it’s down in the default properties) to SuperCheatManager. So the new line should look like this:

 

          CheatClass=Class'GameTypes.SuperCheatManager'

 

Now, save the file, and build GameTypes.u (either delete GameTypes.u from System and run ‘ucc  make’ or run your batch file as described earlier). 

 

Now run your game (like I mentioned before in my previous doc on Writing Script—run it with ‘postal2 testbox.fuk’ console command from the dos window to speed things up for you).

 

Get a pistol. You should be able to press Tab to bring up the console and type ‘sneakyshoot’. The dude should shoot his pistol—congrats!! You’re ready to make your own exec commands, plus you have your own cheat manager ready to go.

 

 

Nathan Fouts

 

 

Username:
Password:
Session: