Jump to content

[Tutorial] YeTi's SA Coding Tutorial Part Two.


Oskar

Recommended Posts

I am representing, ALL CREDITS GO TO YeTi.

YeTi's San Andreas Coding Tutorial Part Two

I have decided to write a coding tutorial for San Andreas mainly because there aren't many out there and the ones that are out there don't explain the code very well. I hope to clear that up in this tutorial. I would just like to point out I have mainly edited my original Vice City coding tutorial so some buts of it might not make sense if you can just point them out I will correct the mistake.

The Tools.

Just click the tool name to download.

I've uploaded BW's San Andreas Mission Builder 0.33 and San Andreas Place Manager onto my site because in this tutorial I will be using the versions on my site and it will be easier to understand using these versions.

Barton Waterduck's San Andreas Mission Builder 0.33

San Andreas Place manager.

San Andreas( Version 1.0)

Notepad (Is Sometimes Handy)

Aim

What I aim to teach you in this tutorial is how to:

Place Weapons

Place Melee Weapons

Place Vehicles

Step 1, Backup

Right now you have downloaded all of the required tools I strongly recommend that you back up a couple of files. The files I suggest you back up are:

main.scm

script.img

default.ide

peds.ide

vehicles.ide

If you used the default San Andreas install directory it will be:

C:\Program Files\Rockstar Games\Grand Theft Auto San Andreas\data

Now default.ide peds.ide vehicles.ide can all be found in here by scrolling down the page.

But main.scm and script.img will be in a separate folder in the data directory called "script".

C:\Program Files\Rockstar Games\Grand Theft Auto San Andreas\data\script

If you have installed San Andreas somewhere different just follow the directory's from Grand Theft Auto San Andreas.

Create a folder in My Documents called "Original San Andreas Files". Now copy all of the listed files into there. Now remember where that is because if you f*ck a file up you will be glad you have made the backup it will save you from having to reinstall the game.

Step 2,Configuring San Andreas Mission Builder 0.33

Before we can use San Andreas Mission Builder 0.33 we need to configure it a bit and set it up ready for use.

Firstly download San Andreas Mission Builder 0.33 then unzip it into My Documents. I suggest renaming it to San Andreas Mission Builder 0.33 but it is not required it just makes things easier to understand.

Now you have unzipped it the first thing we will do is configure a file called SASCM.INI It will be in the newly unzipped folder. Open it with notepad. To do this right click it then select Open With then in the window that pops up select notepad. Now scroll right down to the bottom of the file and press enter to start a new line. Now copy and paste this into the new line:

0A4A=2,%1h% %2h%
0A4B=0,

Then save and exit the file.

Now we need to copy and paste a few files into the San Andreas Mission Builder 0.33 go into your San Andreas data folder:

C:\Program Files\Rockstar Games\Grand Theft Auto San Andreas\data

And copy the following files into San Andreas Mission Builder 0.33's folder:

default.ide

peds.ide

vehicles.ide

Now while we are in the data folder we also need to copy and paste another folder that is in there. Look for a folder called "script". You guessed it copy and paste that into San Andreas Mission Builder 0.33's folder.

That's all the configuring done.

Step 3,Decompiling The Mission Script

Now this is a little more complicated than in previous versions of Mission Builders.

Firstly run SABuilder03.exe which can be found in the San Andreas Mission Builder 0.33's folder. Wait for it to load and then select File in the top left corner of the program. Select Open File from the list that drops down.

Now you are greeted with an Open File window this involves a little explaining on how to open the file correctly so here I go.

sambopenfile9le.th.jpg

First of all in the bottom left corner of the Open File window you should see a drop down box which allows you to select a file type to open at the minute it should be set to:

Text Document (*.txt)

Just click the little downward facing arrow and select:

All Files (*.*)

From the list. Now you need to look at the window on he right you'll see a folder directory listing and on the left a file directory listing. Now we want to open the file main.scm so select the folder script from the folder directory. This will now update the file directory with the latest files available in that folder. As you can see there are two files:

main.scm and

script.img

Select main.scm and click Ok.

Now a new window pops up.

sambopenfilepart26uu.th.jpg

Look towards the bottom of the new window and you will see the text <new folder> click here delete any text in the text box and type

Original SCM

Make sure the folder directory is selected on San Andreas Mission Builder 0.33 and click Create Folder.

Now you'll notice that a new folder has been added called Original SCM. Select this in the folder directory and click Ok.

This will now begin decompiling the main.scm file. Don't worry about the time it takes it does take a long time to complete and it may even go white as though it has crashed but do not worry it has not just leave it and when it is done it will display a little report. Just click ok on this report and close San Andreas Mission Builder 0.33.

Step 4, Weapons.

Right so we will start with weapons I will be teaching you how to place weapons.

First we will find and open our decompiled mission script. Go into My Documents and open the San Andreas Mission Builder 0.33 folder scroll down and look for a folder called Original SCM. Open it. When you do you will see a folder called Tables and a text file called Main. Leave the Tables folder alone (it contains files that are required to recompile you're main.scm file when you have added your code) but the file Main is a decompiled main.scm. So open it in any word processing program.

Right so now we need to find the weapon code so click edit then click find. And type in:

032B: $3032 = create_weapon_pickup #MOLOTOV 15 ammo 10 at 2832.0 2405.0 18.0

This should find the weapon code for you. It will highlight the line.

Right so now I will explain each of the bits of this code:

032B =

this bit is called and opcode. Basically an opcode is a name type. 0213: is a unique code name for the bribe pickup. Every thing has got a unique opcode. There should be a full list of opcodes in San Andreas Mission Builder 0.33's folder.

$3032

This is basically just a name that rockstar has given to that line of code.

create_weapon_pickup

This is what the code does it is creating a weapon pickup.

#MOLOTOV

This is what weapon the code is creating it is creating a Molotov.

15

This is just if the code makes the pickup free or not I THINK that 15 is free and 1 is not free so:

type 15

should be a free pickup and

type 1

should be a buyable pickup.

ammo 10

is how much ammo the weapon has

at  2832.0  2405.0  18.0

is the position in the game

2832.0 is the x position in the game

2405.0 is the y position in the game

18.0 is the z position in the game.

Right so that is all of that code explained I hope you understood it?

Now let's put our own bribe pickup in the game ok?

Copy all of the code line and then just add a new line underneath the original code (you can do this by pressing enter but make sure that none of the code is highlighted), then paste your copied code into your newly created space. It should just fill in the line and not add another but it sometimes does if it does just go to the end of your added line and press delete.

Right so now let's edit our code.

You need to leave the opcode as it is because as I said before it's unique to pickups and is needed in the game.

$3032 =

this bit we will change as I said before it is the name that rockstar has given to this line of code so lets give our new line of code its own name. Let's call it

$mygun=

Ok you need to leave the $ sign in front of the name.

so now our code should look like this

032B: $mygun = #MOLOTOV  15 ammo  10 at  2832.0  2405.0  18.0  8.0

You need to leave

create_weapon_pickup

this bit as it is because if you remember it is telling the game to create a weapon.

But this bit we will alter

#MOLOTOV

We don't want a crappy weapon like a Molotov we want an m4. So this bit becomes

#M4

You can find the names of all the weapons in the file called weapons.dat in your SA data folder.

15 ammo  10

We will alter we don't want only 10 ammo with our m4 we want 999 so this becomes

15 amo 999

We will leave the 15 because we want the gun to be free.

at  2832.0  2405.0  18.0

If you remember this is the position in the game so because we are adding our own pickup we don't want it in the same place as the proper one do we?

No of course not.

This is were SA Place Manager comes in handy. Load it up and you should be greeted with a screen like this:

sapm5sj.th.jpg

Now load up San Andreas with SA Place Manager running in the background. Roam around SA until you get to the required location. I chose here:

ingamescreenie1lk.th.jpg

Then ALT+TAB out of the game and in SA Place Manager click add place. You will then be greeted with this window

sapmadding0gx.jpg

You then need to click "Click here to insert your current in-game location". That will then import your location like this:

sapmaddingcoords6ht.jpg

Now as you can see me co-ordinates are 2510.345 -1687.322 13.57044.

So my code would be,

032B: $mygun = create_weapon_pickup #M4  15 ammo  10 at  2510.345 -1687.322 13.57044

Now your own added code should look like mine if you used my coordinates if not then the same but with different coordinates.

Now we make sure the code is inserted correctly. We now need to test it. This will require recompiling the main.scm.

To do this you need to open the main txt file. Then you click Run then Compile wait for it to finish. Then go into the Original SCM folder and copy main.scm and script.img. You then go into the directory and paste them over their originals in the script folder. Now go in-game and test.

Remember to start a new game. You have to start a new game after every bit of editing in the main.scm file.

ingamescreeniegun4js.th.jpg

Now as you can see it's good.

Step 5,Melee Weapons

Right the melee weapon code is very similar to a pickup code in fact the only difference is what the code creates.

0213: $3058 = create_pickup #POOLCUE type 15 at 2854.0 944.0 11.0

Find that line in the main text file. Ok now I am going to let you figure out how to alter this code yourself give you a bit of practice.

If you get stuck then Read my first SA coding tutorial.

Step 6,Vehicles

Right now the code for vehicles is a little more complex than any code we have covered so far.

Search for this

014B: $2766 = init_parked_car_generator #CLOVER -1 -1 0 alarm 0 door_lock 0 0 10000 at 2445.5 -1340.8 23.5 angle 180.0

Now it should highlight a line with that text in now this line I part of the code. The line underneath it is the other part of the code.

014B: $2766 = init_parked_car_generator #CLOVER -1 -1  0 alarm  0 door_lock  0  0  10000 at  2445.5 -1340.8  23.5 angle  180.0
014C: set_parked_car_generator $2766 cars_to_generate_to  101

That is the full code.

014B:
014C:

These are both opcodes they are both needed.

$2766

This is basically just a name that rockstar has given to that line of code.

init_parked_car_generator

This tells the game to start the car generator.

set_parked_car_generator

This tells the game to generate the car and close the car generator.

#CLOVER

This tells the game which car to generate.

-1 -1  0 alarm  0 door_lock  0  0  10000

So now this bit is a little more complicated.

the -1 -1 bit is the colour of the car.

im not sure what the 0 is. But leave it alone.

alarm 0 is the chance in percentage how likely the alarm is to go off, in this case it's a 0% chance it will go.but if the code was

alarm 100

the alarm will go off

alarm 50

the alarm has got a 50% chance it will go off and a 50% chance it will not

door_lock 0

Ts the chance in percentage how likely the door is to be locked, in this case it's a 0% chance it will be locked.

im not sure what the 0 is.

10000

Is the cars health NEVER PLAY ABOUT WITH THIS BECAUSE I DON'T THINK ANYBODY UNDERSTANDS HOW TO MAKE IT WORK.

at  2445.5 -1340.8  23.5 angle  180.0

Is the position with an angle bit this time. The angle bit just tells the car which angle to face 0 is north, 180 is south etc.

$2766 cars_to_generate_to  101

$2766 is the car you are telling it to generate

cars_to_generate_to 101 tells the game how often to spawn a car there. 101 is always and 0 is never.

Right so I think that's all the code explained.

Now let's make our own code!

Copy all of the code line and then just add a new line underneath the original code (you can do this by pressing enter but make sure that none of the code is highlighted), then paste your copied code into your newly created space. It should just fill in the line and not add another but it sometimes does if it does just go to the end of your added line and press delete.

Right so now let's edit our code.

You need to leave the opcodes as it is because as I said before it's unique to that particular process and is needed in the game.

$2766

this bit we will change as I said before it is the name that rockstar has given to this line of code so lets give our new line of code its own name. Lets call it

$my car

ok you need to leave the $ sign in front of the name.

so now our code should look like this

014B: $my car = init_parked_car_generator #CLOVER -1 -1 0 alarm 0 door_lock 0 0 10000 at 2445.5 -1340.8 23.5 angle 180.0
014C: set_parked_car_generator $mycar cars_to_generate_to 101

Remember you have to change the name everywhere in the code.

You need to leave

init_parked_car_generator

But this bit we will change

#CLOVER

If we are making our own code we don't want a crap clover we want a cool vehicle like the infernus so we will change this to

#INFERNUS

so now our code should look like this

014B: $mycar = init_parked_car_generator #INFERNUS -1 -1  0 alarm  0 door_lock  0  0  10000 at  2445.5 -1340.8  23.5 angle  180.0
014C: set_parked_car_generator $mycar cars_to_generate_to  101

-1 -1  0 alarm  0 door_lock  0  0  10000

Some of this we will change.

-1 -1

we will leave the same as this is the colour.

0 alarm 0

we will leave this we don't want the alarm going off.

door lock 0 0

we will leave as it is because it means that the door will never be locked.

10000

remember what I said you always leave this.

at  2445.5 -1340.8  23.5 angle  180.0

we will change this we don't want our new car in the same place as the old one.

So we need to go into sa and get some co-ordinates with sa place manager.

I am going to place it here.

carplace3ti.th.jpg

I got these co-ordinates

sapmcoords5ar.jpg

x 2487.47

y -1670.604

z 13.33595

So my code for the co-ordinates is

at 2487.47 -1670.604 13.33595

I will place it at angle 0 so my new code for the placement in game will be

at 2487.47 -1670.604 13.33595 angle 0

So my whole code is

014B: $mycar = init_parked_car_generator #INFERNUS -1 -1  0 alarm  0 door_lock  0  0  10000 at 2487.47 -1670.604 13.33595 angle 0
014C: set_parked_car_generator $mycar cars_to_generate_to  101

Now we compile the main and test it.

caringame2hx.th.jpg

Which as you can see works perfectly.

That's it for this tutorial I have covered what I said I would I may write more later if I get bored.

Related Links.

YeTi's VC coding tutorial Part One.

YeTi's VC coding tutorial Part Two.

YeTi's SA coding tutorial Part One.

Original Topic.

Edited by chris82
Link to comment
Share on other sites

  • 7 months later...
I am representing, ALL CREDITS GO TO YeTi.

YeTi's San Andreas Coding Tutorial Part Two

I have decided to write a coding tutorial for San Andreas mainly because there aren't many out there...

I have a simple little addition to YeTi's great tutorial:

One final touch is adding a custom plate to my car. Between the "10000" and the "at", add this:

plate "YOURNAME"

Replace the YOURNAME with whatever you want, as long as it is no longer than 8 characters. It must contain no spaces, but your can use underscores "_" instead. I am going to use YETI. Now the code looks like this:

014B: $mycar = init_parked_car_generator #INFERNUS -1 -1  0 alarm  0 door_lock  0  0  10000 plate "YETI" at 2487.47 -1670.604 13.33595 angle 0
014C: set_parked_car_generator $mycar cars_to_generate_to  101

Also, a good mod to mention that would help with coding is Spawner. It generates code automatically based on your settings for vehicles, number plates, weapons/items and photo/oyster/horseshoe ops. Certainly, Yeti's tutorial should be read fully by anyone just getting started, but Spawner helps save time once you know what you are doing.

Edited by tminus
Link to comment
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now
×
×
  • Create New...