Difference between revisions of "Create a mission"

From GTAMods Wiki
Jump to navigation Jump to search
m (Mission Scripting is a subcategory of Tutorials, no need to place the article there)
Line 2: Line 2:
 
==Define your mission==
 
==Define your mission==
 
First define your mission. Find
 
First define your mission. Find
  DEFINE MISSIONS
+
<source lang="scm">DEFINE MISSIONS</source>
 
Increment that number by one. Scroll down until you see the last defined mission. Define your mission below it.
 
Increment that number by one. Scroll down until you see the last defined mission. Define your mission below it.
  DEFINE MISSION ### AT @MissionStart
+
<source lang="scm">DEFINE MISSION ### AT @MissionStart</source>
 
==Insert your trigger==
 
==Insert your trigger==
 
Next create a thread that will trigger your mission to start. Find
 
Next create a thread that will trigger your mission to start. Find
  create_thread
+
<source lang="scm">create_thread</source>
 
Insert before it
 
Insert before it
  [[004F]]: create_thread @MissionTrigger
+
<source lang="scm">[[004F]]: create_thread @MissionTrigger</source>
 
Find
 
Find
  //-------------Mission 0---------------
+
<source lang="scm">//-------------Mission 0---------------</source>
 
That is where the MAIN section ends and the first mission begins. Insert your trigger between that.
 
That is where the MAIN section ends and the first mission begins. Insert your trigger between that.
  :MissionTrigger
+
<source lang="scm">:MissionTrigger
  [[0001]]: wait 0 ms
+
[[0001]]: wait 0 ms
  [[00D6]]: if
+
[[00D6]]: if
  [[0256]]:  player $PLAYER_CHAR defined
+
[[0256]]:  player $PLAYER_CHAR defined
  [[004D]]: jump_if_false @MissionTriggerEnd
+
[[004D]]: jump_if_false @MissionTriggerEnd
  00D6: if
+
00D6: if
  0038:  $[[0180|ONMISSION]] == 0
+
0038:  $[[0180|ONMISSION]] == 0
  004D: jump_if_false @MissionTriggerEnd
+
004D: jump_if_false @MissionTriggerEnd
  00D6: if
+
00D6: if
  // Place your condition to start your mission
+
// Place your condition to start your mission
  004D: jump_if_false @MissionTriggerEnd
+
004D: jump_if_false @MissionTriggerEnd
  [[0417]]: start_mission ###
+
[[0417]]: start_mission ###
  [[0004]]: $ONMISSION = 1
+
[[0004]]: $ONMISSION = 1
 
    
 
    
  :MissionTriggerEnd
+
:MissionTriggerEnd
  [[0002]]: jump @MissionTrigger
+
[[0002]]: jump @MissionTrigger</source>
 +
 
 
==Insert your mission==
 
==Insert your mission==
 
Last insert your mission. If you are using GTA3 or Vice City, scroll all the way to the end of the file to insert your mission. If you are using San Andreas, find
 
Last insert your mission. If you are using GTA3 or Vice City, scroll all the way to the end of the file to insert your mission. If you are using San Andreas, find
  //-------------External script 0 (PLAYER_PARACHUTE)---------------
+
<source lang="scm">//-------------External script 0 (PLAYER_PARACHUTE)---------------
 
That is where the last mission ends and the first external scrpt starts. Insert your mission between that.
 
That is where the last mission ends and the first external scrpt starts. Insert your mission between that.
  :MissionStart
+
<source lang="scm">:MissionStart
  [[03A4]]: name_thread 'NAME'
+
[[03A4]]: name_thread 'NAME'
  [[0050]]: gosub @MissionBegin
+
[[0050]]: gosub @MissionBegin
  00D6: if
+
00D6: if
  [[0112]]:  wasted_or_busted
+
[[0112]]:  wasted_or_busted
  004D: jump_if_false @MissionEnd
+
004D: jump_if_false @MissionEnd
  0050: gosub @MissionFailed
+
0050: gosub @MissionFailed
 
+
 
  :MissionEnd
+
:MissionEnd
  0050: gosub @MissionCleanup
+
0050: gosub @MissionCleanup
  [[004E]]: end_thread
+
[[004E]]: end_thread
 
+
 
  ::MissionBegin
+
:MissionBegin
  // This section is where you place the contents of your mission
+
// This section is where you place the contents of your mission
  [[0051]]: return
+
[[0051]]: return
 
+
 
  :MissionFailed
+
:MissionFailed
  // This section is what happens after you died or got busted during your mission
+
// This section is what happens after you died or got busted during your mission
  0051: return
+
0051: return
 
+
 
  :MissionCleanup
+
:MissionCleanup
  // This section is where you clean up the contents of your mission so you can end it
+
// This section is where you clean up the contents of your mission so you can end it
  0004: $ONMISSION = 0
+
0004: $ONMISSION = 0
  [[00D8]]: mission_cleanup
+
[[00D8]]: mission_cleanup
  0051: return
+
0051: return</source>
 
==Final note==
 
==Final note==
 
Using this format requires you to start a new game. If you do not understand what is being said here, try looking into the [http://www.gtaforums.com/?showforum=109 Tutorial Forum] for more in-depth tutorials or the [http://www.gtaforums.com/index.php?showforum=49 Mission Coding Forum] on how to understand this.
 
Using this format requires you to start a new game. If you do not understand what is being said here, try looking into the [http://www.gtaforums.com/?showforum=109 Tutorial Forum] for more in-depth tutorials or the [http://www.gtaforums.com/index.php?showforum=49 Mission Coding Forum] on how to understand this.
Line 64: Line 65:
  
 
[[Category:Mission Scripting]]
 
[[Category:Mission Scripting]]
 +
 +
{{SA-navi}}

Revision as of 17:31, 2 February 2009

Creating a mission is tough. It is recommended that you start practicing with simple threads and work your way up instead of attempting to create a mission right away. There are many ways to create a mission so to simplify this for beginners, the rest of the article will show the basic structure of creating a working mission. The format uses Sanny Builder. It should work for GTA3, Vice City, and San Andreas.

Define your mission

First define your mission. Find

DEFINE MISSIONS

Increment that number by one. Scroll down until you see the last defined mission. Define your mission below it.

DEFINE MISSION ### AT @MissionStart

Insert your trigger

Next create a thread that will trigger your mission to start. Find

create_thread

Insert before it

[[004F]]: create_thread @MissionTrigger

Find

//-------------Mission 0---------------

That is where the MAIN section ends and the first mission begins. Insert your trigger between that.

:MissionTrigger
[[0001]]: wait 0 ms
[[00D6]]: if
[[0256]]:   player $PLAYER_CHAR defined
[[004D]]: jump_if_false @MissionTriggerEnd
00D6: if
0038:   $[[0180|ONMISSION]] == 0
004D: jump_if_false @MissionTriggerEnd
00D6: if
// Place your condition to start your mission
004D: jump_if_false @MissionTriggerEnd
[[0417]]: start_mission ###
[[0004]]: $ONMISSION = 1
  
:MissionTriggerEnd
[[0002]]: jump @MissionTrigger

Insert your mission

Last insert your mission. If you are using GTA3 or Vice City, scroll all the way to the end of the file to insert your mission. If you are using San Andreas, find

//-------------External script 0 (PLAYER_PARACHUTE)---------------
That is where the last mission ends and the first external scrpt starts. Insert your mission between that.
<source lang="scm">:MissionStart
[[03A4]]: name_thread 'NAME'
[[0050]]: gosub @MissionBegin
00D6: if
[[0112]]:   wasted_or_busted
004D: jump_if_false @MissionEnd
0050: gosub @MissionFailed

:MissionEnd
0050: gosub @MissionCleanup
[[004E]]: end_thread

:MissionBegin
// This section is where you place the contents of your mission
[[0051]]: return

:MissionFailed
// This section is what happens after you died or got busted during your mission
0051: return

:MissionCleanup
// This section is where you clean up the contents of your mission so you can end it
0004: $ONMISSION = 0
[[00D8]]: mission_cleanup
0051: return

Final note

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.

External Link