Scripting Tutorial

From PMDOWiki
Revision as of 02:24, 7 September 2022 by IDK (talk | contribs)

This tutorial goes into the specifics of adding NPCs to an existing map, and giving them interactivity.

Start the game in dev mode and select “Edit Ground” in the Dev Controls.



Adding Entity

Open an existing ground map.





We will open Data\Ground\cliff_camp.rsground





Switch to the “Entities” tab, and create a new Character object with these settings:

Don’t forget to switch to “Add New” Mode! Setting the trigger type to “Action” is what allows the character to be spoken to; the two callbacks listed below are the ones available when choosing that trigger type. They will be referred to later.

Char display allows you to change everything about the character’s sprite.

You can specify a nickname for the character; if left blank, the species name is used.

Click on the position in the map to place the character.

Save the map.









Setting Strings

Switch to the Strings tab, and add dialogue.

Save the map as you would normally, to save the changes to the strings.









Scripting

Switch to the “Script” tab and open the script directory for this map:

Alternatively, you can find the directory manually by going to Data\Script\ground\cliff_camp

Open init.lua in order to edit the logic behind the ground map.




There’s plenty of existing code here, you will need to add the following code:


function cliff_camp.Meditite_Action(chara, activator)

 DEBUG.EnableDbgCoro() --Enable debugging this coroutine
 GROUND:CharTurnToChar(chara,CH('PLAYER'))--make the chara turn to the player
 UI:SetSpeaker(chara)--set the dialogue box's speaker to the character
 UI:WaitShowDialogue(STRINGS:Format(MapStrings['Meditite_Line_001']))
 UI:WaitShowDialogue(STRINGS:Format(MapStrings['Meditite_Line_002']))

end


Whenever you speak to an object, the game looks for a method named <Object name>_Action and calls it. This is why our function is named Meditite_Action. The first argument, chara, is the character being spoken to (Meditite). The second argument, activator, is the player object.

Save the file with your edits.


Go back to the ground editor and reload the scripts.


Exit the ground editor, and you will be returned to the title screen. Fast-travel to the cliff camp, and the Meditite should be added.


If you experience issues, check the logs for the most recent errors in your current session. They are found in the LOGS folder.

Further reading

Scripting Cheat Sheet