Last modified on 17 July 2010, at 20:39

Create a thread

Creating a simple thread is one of the first steps in understanding how to code. This article will show you the basic steps on how to create the simplest thread using Sanny Builder. It should work for Grand Theft Auto III, Grand Theft Auto: Vice City, and Grand Theft Auto: San Andreas.

Create your thread

First create your thread using opcode 004F (or create_thread command). Find <source lang="scm">create_thread</source> Insert before it <source lang="scm">004F: create_thread @mythread</source> mythread is an arbitrary label. You can name the label with anything.

Insert your contents

Next you have to insert the contents into your thread. Find <source lang="scm">//-------------Mission 0---------------</source> That is where the MAIN section ends and the first mission begins. Insert your contents between it. The simplest format of a thread have this format <source lang="scm">:mythread // Insert your contents here 004E: end_thread</source> The contents can include simple opcodes or longer threads like in the examples of creating a ped and creating a vehicle.

Thread names

Your thread can have a name. Use opcode 03A4 to name your thread. It is essential if you need to end your thread from another part of the script with opcode 0459.

Loops

The example above shows you a thread that ends straight away. If you want the thread to run continuously, you have to loop the thread. For the most part, looping the thread requires opcode 0001 (or wait command) to be placed somewhere within the loop or else the game will crash. There are exceptions but it is safer to have it. The simplest loop has this format <source lang="scm">:mythread 0001: wait 0 ms // Insert your contents here 0002: jump @mythread</source> This thread will repeat itself indefinitely so be careful what you put in it.

Conditions

Conditional opcodes checks whether the action is performed rather than to perform the action. In Sanny Builder, they are noted by spaces between the opcode and the description of the opcode. Conditions start with IF statements that checks if an action is performed. <source lang="scm">:Check 0001: wait 0 ms 00D6: if // Conditional opcode 0256: player $PLAYER_CHAR defined 004D: jump_if_false @CheckEnd // Command

CheckEnd

0002: jump @Check</source> For IF statements with more than one conditions, you need to either add and or or after 00D6: if.

if and means if all of the conditions are met. <source lang="scm">:Check 0001: wait 0 ms 00D6: if and // First condition 00E1: player 0 pressed_key 4 // Second condition 00E1: player 0 pressed_key 19 004D: jump_if_false @CheckEnd // Command

CheckEnd

0002: jump @Check</source> This means if both the first and second conditions are met, perform the command. Else jump to label CheckEnd.

if or means if either one of these conditions are met. <source lang="scm">:Check 0001: wait 0 ms 00D6: if or // First condition 0118: actor 0@ dead // Second condition 0118: actor 1@ dead 004D: jump_if_false @CheckEnd // Command

CheckEnd

0002: jump @Check</source> This means if either the first or the second condition is met, perform the command. Else jump to label CheckEnd.

Opcodes normally starts with the number 0, but conditional opcodes can start with the number 8. This checks if the condition is NOT performed. <source lang="scm"> 0214: pickup 3@ picked_up // IS picked up 8214: not pickup 3@ picked_up // is NOT picked up</source>

Final Notes

Using this format requires you to start a new game. If you do not understand what is being said here, try looking into the Tutorial Forum for more in-depth tutorials or the Mission Coding Forum on how to understand this.

See also

Copyrighted

This page is licensed under the GNU Free Documentation Licence. This page has a separate license to the CC-BY-SA that applies to most of Grand Theft Wiki.

The full text of the GNU FDL v1.2 is here. Click the "History" button to see the full list of authors. See Grand Theft Wiki:Copyright for more detail on our copyright policy.

GNU Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
See Grand Theft Wiki:Copyright for more information.