Difference between revisions of "Spawn a ped"

From GTAMods Wiki
Jump to navigation Jump to search
(updating tutorial)
Line 3: Line 3:
 
==Create your thread==
 
==Create your thread==
 
First, [[create a thread]]. Here is an example:
 
First, [[create a thread]]. Here is an example:
{| style="margin:auto"
+
{| style="margin:right"
 
| width="500px" | <source lang="scm">
 
| width="500px" | <source lang="scm">
 
004F: create_thread @LoadModel
 
004F: create_thread @LoadModel
Line 12: Line 12:
 
004E: end_thread
 
004E: end_thread
 
</source>
 
</source>
| width="100px" style="text-align:center" | or
+
| width="100px" style="text-align:left" | or
 
| width="500px" | <source lang="scm">
 
| width="500px" | <source lang="scm">
 
create_thread @LoadModel
 
create_thread @LoadModel
Line 23: Line 23:
 
|}
 
|}
  
==Load your model==
+
==Request your model==
It is very important to load the model of your ped. You can find a list of all peds available to use in the [[default.ide]] file for GTA III and Vice City or the [[peds.ide]] file for San Andreas. Use opcode [[0247]] or the command ''Model.Load'' to load your ped model. The script normally uses the ped's ID number but Sanny Builder support using the ped's model name with a hash character. Let's try the first ped in the list, BFORI.
+
It is very important to request the model of your ped. You can find a list of all peds available to use in the [[default.ide]] file for GTA III and Vice City or the [[peds.ide]] file for San Andreas. Use opcode [[0247]] or the command ''Model.Load'' to request your ped model. The script normally uses the ped's ID number but Sanny Builder support using the ped's model name with a hash character. Let's try the first ped in the list, BFORI.
{| style="margin:auto"
+
{| style="margin:right"
 
| width="500px" | <source lang="scm">
 
| width="500px" | <source lang="scm">
 
0247: load_model #BFORI
 
0247: load_model #BFORI
 
</source>
 
</source>
| width="100px" style="text-align:center" | or
+
| width="100px" style="text-align:left" | or
 
| width="500px" | <source lang="scm">
 
| width="500px" | <source lang="scm">
 
Model.Load #BFORI
 
Model.Load #BFORI
Line 39: Line 39:
 
==Check if the model is loaded==
 
==Check if the model is loaded==
 
Next, you have to check if the model is loaded using an [[Create a thread#Conditions|IF statement]] with the conditional opcode [[0248]] or the command ''Model.Available''. If your create a ped with an unavailable model, the game will crash.
 
Next, you have to check if the model is loaded using an [[Create a thread#Conditions|IF statement]] with the conditional opcode [[0248]] or the command ''Model.Available''. If your create a ped with an unavailable model, the game will crash.
{| style="margin:auto"
+
{| style="margin:right"
 
| width="500px" | <source lang="scm">
 
| width="500px" | <source lang="scm">
 
repeat
 
repeat
Line 50: Line 50:
 
until false
 
until false
 
</source>
 
</source>
| width="100px" style="text-align:center" | or
+
| width="100px" style="text-align:left" | or
 
| width="500px" | <source lang="scm">
 
| width="500px" | <source lang="scm">
 
repeat
 
repeat
Line 62: Line 62:
 
</source>
 
</source>
 
|}
 
|}
 +
Alternatively, this check can be bypassed entirely if opcode [[038B]] is used after the models are requested, but the simplicity in coding requires trading off some hiccups to the game as the models are streamed.
  
 
==Create your ped==
 
==Create your ped==
 
Now you can use the main opcode to create a ped: [[009A]], or the command ''Actor.Create''. The opcode includes the ped's [[pedtype]] and the coordinate to spawn the ped. Sanny Builder has a built-in coordinates tool. Go to ''Tools>IDE Tools>Coords manager...'' or use the shortcut ''Ctrl+Alt+1'' while the game is running. This will show the current position of your player character.
 
Now you can use the main opcode to create a ped: [[009A]], or the command ''Actor.Create''. The opcode includes the ped's [[pedtype]] and the coordinate to spawn the ped. Sanny Builder has a built-in coordinates tool. Go to ''Tools>IDE Tools>Coords manager...'' or use the shortcut ''Ctrl+Alt+1'' while the game is running. This will show the current position of your player character.
{| style="margin:auto"
+
{| style="margin:right"
 
| width="500px" | <source lang="scm">
 
| width="500px" | <source lang="scm">
 
009A: 0@ = create_actor_pedtype 4 model #BFORI at 0.0 0.0 0.0
 
009A: 0@ = create_actor_pedtype 4 model #BFORI at 0.0 0.0 0.0
 
</source>
 
</source>
| width="100px" style="text-align:center" | or
+
| width="100px" style="text-align:left" | or
 
| width="500px" | <source lang="scm">
 
| width="500px" | <source lang="scm">
 
Actor.Create(0@, 4, #BFORI, 0.0, 0.0, 0.0)
 
Actor.Create(0@, 4, #BFORI, 0.0, 0.0, 0.0)
Line 111: Line 112:
 
==Release your model==
 
==Release your model==
 
After the ped is created and the model is no longer needed, release it using opcode [[0249]] or the command ''Model.Destroy''
 
After the ped is created and the model is no longer needed, release it using opcode [[0249]] or the command ''Model.Destroy''
{| style="margin:auto"
+
{| style="margin:right"
 
| width="500px" | <source lang="scm">
 
| width="500px" | <source lang="scm">
 
0249: release_model #BFORI
 
0249: release_model #BFORI
 
</source>
 
</source>
| width="100px" style="text-align:center" | or
+
| width="100px" style="text-align:left" | or
 
| width="500px" | <source lang="scm">
 
| width="500px" | <source lang="scm">
 
Model.Destroy(#BFORI)
 
Model.Destroy(#BFORI)

Revision as of 05:40, 29 January 2012

Spawning a ped (also called character or actor) is not as simple as inserting one line. There are steps that need to be taken in order to successfully spawn a ped. This tutorial will show you the basic steps of spawning a ped using a format used in Sanny Builder. These examples are for San Andreas but with minor tweaks can be used for GTA III and Vice City.

Create your thread

First, create a thread. Here is an example:

004F: create_thread @LoadModel
:LoadModel
// add code from tutorial here
004E: end_thread
or
create_thread @LoadModel
:LoadModel
// add code from tutorial here
end_thread

Request your model

It is very important to request the model of your ped. You can find a list of all peds available to use in the default.ide file for GTA III and Vice City or the peds.ide file for San Andreas. Use opcode 0247 or the command Model.Load to request your ped model. The script normally uses the ped's ID number but Sanny Builder support using the ped's model name with a hash character. Let's try the first ped in the list, BFORI.

0247: load_model #BFORI
or
Model.Load #BFORI

There are some ped-spawning opcodes that do not need the ped's model to be loaded. See below for more information.

Check if the model is loaded

Next, you have to check if the model is loaded using an IF statement with the conditional opcode 0248 or the command Model.Available. If your create a ped with an unavailable model, the game will crash.

repeat
    wait 0 ms
    if
        0248:   model #BFORI available
    then
        break
    end
until false
or
repeat
    wait 0
    if
        Model.Available(#BFORI)
    then
        break
    end
until false

Alternatively, this check can be bypassed entirely if opcode 038B is used after the models are requested, but the simplicity in coding requires trading off some hiccups to the game as the models are streamed.

Create your ped

Now you can use the main opcode to create a ped: 009A, or the command Actor.Create. The opcode includes the ped's pedtype and the coordinate to spawn the ped. Sanny Builder has a built-in coordinates tool. Go to Tools>IDE Tools>Coords manager... or use the shortcut Ctrl+Alt+1 while the game is running. This will show the current position of your player character.

009A: 0@ = create_actor_pedtype 4 model #BFORI at 0.0 0.0 0.0
or
Actor.Create(0@, 4, #BFORI, 0.0, 0.0, 0.0)

Other opcodes

There are other opcodes that also spawn a ped in different situations, including:

There are opcodes that can spawn a random ped without the need to request the model of the ped.

  • 0376 - Creates a random ped.
  • 0560 - Creates a random ped as a driver in a vehicle.
  • 0561 - Creates a random ped as a passenger in a vehicle.

Pedtype limitation

Some pedtypes are limited to be compatible to specific models or else the game may crash.

  • Pedtype 6 can only be used with models between 0 and 4 (#null, #cop, #swat, #fbi, #army).
  • Pedtype 16 can only be used with model 5 (#medic).
  • Pedtype 17 can only be used with model 6 (#fireman).

Release your model

After the ped is created and the model is no longer needed, release it using opcode 0249 or the command Model.Destroy

0249: release_model #BFORI
or
Model.Destroy(#BFORI)

Set your ped

You can now add settings and attributes to your ped, like rotating your ped or adding animations to your ped. The variable 0@ is the handle of your ped, like an identifier. Use this variable when using opcodes specific to your ped. You can search these opcodes by using Sanny Builder's Opcode Search Tool. Go to Tools>IDE Tools>Opcode Search... or use the shortcut Ctrl+Alt+2. Then type actor in the search box to find a list of named opcodes related to it.

Full example

// load model, required to prevent unnecessary crash!
0247: request_model #BFORI
// check if model is loaded
repeat
    wait 0
    if
        0248:   model #BFORI available
    then
        break
    end
until false
// spawn character
009A: 0@ = create_actor 4 #BFORI at 0.0 0.0 0.0
// cleanup
0249: release_model #BFORI

External links