Skip to content

Commit 958e1d3

Browse files
authored
Fix for pm (#7)
* fix: update sample dialog to use proper commands * feat: can now add custom commands
1 parent ad35c98 commit 958e1d3

25 files changed

Lines changed: 3536 additions & 3462 deletions

README.md

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,38 @@ Functions are units of code that Yarn scripts can call to receive a value.
8686
| item_count | item_count(itemName) | Returns the number of the given item the player has. |
8787
| random_range | random_range(min, max) | Given a min and max, return a random number between them. |
8888

89+
## How to add custom commands?
90+
This plugin was designed to be easily extensible. Let's say you'd like to add a new command
91+
named `custom_hello`. Not only that, but we also want it to accept a parameter of WHO to say
92+
hello to. Here's how you'd do it:
93+
94+
First, create your Yarn dialog file, exactly as you'd like it to be.
95+
96+
```yarn
97+
title: SampleNode
98+
---
99+
Whatever other things you want to have happen.
100+
<<custom_hello george>>
101+
Other things...
102+
===
103+
```
104+
Notice that "custom_hello" by default won't work, as that's not one of the commands built into
105+
this plugin. So, let's add it.
106+
107+
Using a "script" in the event editor, or via your own plugins javascript code, add the following:
108+
```js
109+
const customGreeter = (_callingEventId, name) => {console.log("Hi " + name + "!")};
110+
if (!pixelmapYarnSpinner.commands.get('custom_hello')) {
111+
pixelmapYarnSpinner.addCommand('custom_hello', customGreeter);
112+
}
113+
```
114+
115+
The important part here is the `pixelmapYarnSpinner.addCommand` call. This is how you add a
116+
new command to the plugin. The first parameter is the name of the command, and the second is
117+
the function that will be called when the command is encountered in the Yarn dialog. The function
118+
will be passed the calling event ID, followed by any parameters that were passed to the command.
119+
120+
Provided this is invoked BEFORE the Yarn dialog is loaded, the command will be available to use.
89121

90122
## Credits
91123

build.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ generate('src/metadata.yaml').then((header) => {
55
require('esbuild')
66
.build({
77
logLevel: 'info',
8+
globalName: 'pixelmapYarnSpinner',
89
entryPoints: ['src/index.ts'],
910
bundle: true,
1011
sourcemap: true,

data/Map002.json

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,13 @@
55
null,
66
{"id":1,"name":"EV001","note":"","pages":[{"conditions":{"actorId":1,"actorValid":false,"itemId":1,"itemValid":false,"selfSwitchCh":"A","selfSwitchValid":false,"switch1Id":1,"switch1Valid":false,"switch2Id":1,"switch2Valid":false,"variableId":1,"variableValid":false,"variableValue":0},"directionFix":false,"image":{"tileId":0,"characterName":"!Door2","direction":2,"pattern":0,"characterIndex":0},"list":[{"code":108,"indent":0,"parameters":["<Mini Label: SetLevel>"]},{"code":357,"indent":0,"parameters":["pixelmapYarnSpinner","yarn","Yarn Dialog",{"Yarn File Path":"dialog/teleport.yarn","Start At":"SetLevelTest"}]},{"code":657,"indent":0,"parameters":["Yarn File Path = dialog/teleport.yarn"]},{"code":657,"indent":0,"parameters":["Start At = SetLevelTest"]},{"code":0,"indent":0,"parameters":[]}],"moveFrequency":3,"moveRoute":{"list":[{"code":0,"parameters":[]}],"repeat":true,"skippable":false,"wait":false},"moveSpeed":3,"moveType":0,"priorityType":1,"stepAnime":false,"through":false,"trigger":0,"walkAnime":true}],"x":21,"y":3},
77
{"id":2,"name":"EV002","note":"","pages":[{"conditions":{"actorId":1,"actorValid":false,"itemId":1,"itemValid":false,"selfSwitchCh":"A","selfSwitchValid":false,"switch1Id":1,"switch1Valid":false,"switch2Id":1,"switch2Valid":false,"variableId":1,"variableValid":false,"variableValue":0},"directionFix":false,"image":{"tileId":0,"characterName":"SF_Actor1","direction":2,"pattern":2,"characterIndex":0},"list":[{"code":108,"indent":0,"parameters":["<Mini Label: Sprite Commands>"]},{"code":357,"indent":0,"parameters":["pixelmapYarnSpinner","yarn","Yarn Dialog",{"Yarn File Path":"dialog/spriteCommands.yarn","Start At":"SpriteCommands"}]},{"code":657,"indent":0,"parameters":["Yarn File Path = dialog/spriteCommands.yarn"]},{"code":657,"indent":0,"parameters":["Start At = SpriteCommands"]},{"code":0,"indent":0,"parameters":[]}],"moveFrequency":3,"moveRoute":{"list":[{"code":0,"parameters":[]}],"repeat":true,"skippable":false,"wait":false},"moveSpeed":3,"moveType":0,"priorityType":1,"stepAnime":false,"through":false,"trigger":0,"walkAnime":true}],"x":21,"y":5},
8-
{"id":3,"name":"EV003","note":"","pages":[{"conditions":{"actorId":1,"actorValid":false,"itemId":1,"itemValid":false,"selfSwitchCh":"A","selfSwitchValid":false,"switch1Id":1,"switch1Valid":false,"switch2Id":1,"switch2Valid":false,"variableId":1,"variableValid":false,"variableValue":0},"directionFix":false,"image":{"tileId":0,"characterName":"Actor1","direction":2,"pattern":1,"characterIndex":2},"list":[{"code":108,"indent":0,"parameters":["<Mini Label: Text box changes>"]},{"code":357,"indent":0,"parameters":["pixelmapYarnSpinner","yarn","Yarn Dialog",{"Yarn File Path":"dialog/fisherman.yarn","Start At":"Greeting"}]},{"code":657,"indent":0,"parameters":["Yarn File Path = dialog/fisherman.yarn"]},{"code":657,"indent":0,"parameters":["Start At = Greeting"]},{"code":0,"indent":0,"parameters":[]}],"moveFrequency":3,"moveRoute":{"list":[{"code":0,"parameters":[]}],"repeat":true,"skippable":false,"wait":false},"moveSpeed":3,"moveType":0,"priorityType":1,"stepAnime":false,"through":false,"trigger":0,"walkAnime":true}],"x":21,"y":7},
8+
{"id":3,"name":"EV003","note":"","pages":[{"conditions":{"actorId":1,"actorValid":false,"itemId":1,"itemValid":false,"selfSwitchCh":"A","selfSwitchValid":false,"switch1Id":1,"switch1Valid":false,"switch2Id":1,"switch2Valid":false,"variableId":1,"variableValid":false,"variableValue":0},"directionFix":false,"image":{"tileId":0,"characterName":"Actor1","direction":2,"pattern":1,"characterIndex":2},"list":[{"code":108,"indent":0,"parameters":["<Mini Label: Text box changes>"]},{"code":357,"indent":0,"parameters":["pixelmapYarnSpinner","yarn","Yarn Dialog",{"Yarn File Path":"dialog/cameraDemo.yarn","Start At":"CameraMain"}]},{"code":657,"indent":0,"parameters":["Yarn File Path = dialog/cameraDemo.yarn"]},{"code":657,"indent":0,"parameters":["Start At = CameraMain"]},{"code":0,"indent":0,"parameters":[]}],"moveFrequency":3,"moveRoute":{"list":[{"code":0,"parameters":[]}],"repeat":true,"skippable":false,"wait":false},"moveSpeed":3,"moveType":0,"priorityType":1,"stepAnime":false,"through":false,"trigger":0,"walkAnime":true}],"x":21,"y":7},
99
{"id":4,"name":"EV004","note":"","pages":[{"conditions":{"actorId":1,"actorValid":false,"itemId":1,"itemValid":false,"selfSwitchCh":"A","selfSwitchValid":false,"switch1Id":1,"switch1Valid":false,"switch2Id":1,"switch2Valid":false,"variableId":1,"variableValid":false,"variableValue":0},"directionFix":false,"image":{"tileId":0,"characterName":"Evil","direction":2,"pattern":0,"characterIndex":0},"list":[{"code":357,"indent":0,"parameters":["pixelmapYarnSpinner","yarn","Yarn Dialog",{"Yarn File Path":"dialog/addStuff.yarn","Start At":"AddStuff"}]},{"code":657,"indent":0,"parameters":["Yarn File Path = dialog/addStuff.yarn"]},{"code":657,"indent":0,"parameters":["Start At = AddStuff"]},{"code":108,"indent":0,"parameters":["<Mini Label: Add Stuff>"]},{"code":0,"indent":0,"parameters":[]}],"moveFrequency":3,"moveRoute":{"list":[{"code":0,"parameters":[]}],"repeat":true,"skippable":false,"wait":false},"moveSpeed":3,"moveType":0,"priorityType":1,"stepAnime":false,"through":false,"trigger":0,"walkAnime":true}],"x":21,"y":11},
1010
{"id":5,"name":"EV005","note":"","pages":[{"conditions":{"actorId":1,"actorValid":false,"itemId":1,"itemValid":false,"selfSwitchCh":"A","selfSwitchValid":false,"switch1Id":1,"switch1Valid":false,"switch2Id":1,"switch2Valid":false,"variableId":1,"variableValid":false,"variableValue":0},"directionFix":false,"image":{"tileId":0,"characterName":"SF_Monster","direction":2,"pattern":0,"characterIndex":4},"list":[{"code":108,"indent":0,"parameters":["<Mini Label: FunctionTester>"]},{"code":357,"indent":0,"parameters":["pixelmapYarnSpinner","yarn","Yarn Dialog",{"Yarn File Path":"dialog/functionTester.yarn","Start At":"Hello"}]},{"code":657,"indent":0,"parameters":["Yarn File Path = dialog/functionTester.yarn"]},{"code":657,"indent":0,"parameters":["Start At = Hello"]},{"code":0,"indent":0,"parameters":[]}],"moveFrequency":3,"moveRoute":{"list":[{"code":0,"parameters":[]}],"repeat":true,"skippable":false,"wait":false},"moveSpeed":3,"moveType":0,"priorityType":1,"stepAnime":false,"through":false,"trigger":0,"walkAnime":true}],"x":21,"y":13},
1111
{"id":6,"name":"EV006","note":"","pages":[{"conditions":{"actorId":1,"actorValid":false,"itemId":1,"itemValid":false,"selfSwitchCh":"A","selfSwitchValid":false,"switch1Id":1,"switch1Valid":false,"switch2Id":1,"switch2Valid":false,"variableId":1,"variableValid":false,"variableValue":0},"directionFix":false,"image":{"tileId":0,"characterName":"Nature","direction":2,"pattern":0,"characterIndex":0},"list":[{"code":357,"indent":0,"parameters":["pixelmapYarnSpinner","yarn","Yarn Dialog",{"Yarn File Path":"dialog/ken.yarn","Start At":"StardewMode"}]},{"code":657,"indent":0,"parameters":["Yarn File Path = dialog/ken.yarn"]},{"code":657,"indent":0,"parameters":["Start At = StardewMode"]},{"code":108,"indent":0,"parameters":["<Mini Label: Ken Test>"]},{"code":0,"indent":0,"parameters":[]}],"moveFrequency":3,"moveRoute":{"list":[{"code":0,"parameters":[]}],"repeat":true,"skippable":false,"wait":false},"moveSpeed":3,"moveType":0,"priorityType":1,"stepAnime":false,"through":false,"trigger":0,"walkAnime":true}],"x":8,"y":6},
12-
{"id":7,"name":"EV007","note":"","pages":[{"conditions":{"actorId":1,"actorValid":false,"itemId":1,"itemValid":false,"selfSwitchCh":"A","selfSwitchValid":false,"switch1Id":1,"switch1Valid":false,"switch2Id":1,"switch2Valid":false,"variableId":1,"variableValid":false,"variableValue":0},"directionFix":false,"image":{"tileId":0,"characterName":"Nature","direction":2,"pattern":0,"characterIndex":0},"list":[{"code":357,"indent":0,"parameters":["pixelmapYarnSpinner","yarn","Yarn Dialog",{"Yarn File Path":"dialog/bocks.yarn","Start At":"Bocks_Start"}]},{"code":657,"indent":0,"parameters":["Yarn File Path = dialog/bocks.yarn"]},{"code":657,"indent":0,"parameters":["Start At = Bocks_Start"]},{"code":108,"indent":0,"parameters":["<Mini Label: Bocks Test>"]},{"code":355,"indent":0,"parameters":["$gamePlayer.playerOwnsTile = true;"]},{"code":0,"indent":0,"parameters":[]}],"moveFrequency":3,"moveRoute":{"list":[{"code":0,"parameters":[]}],"repeat":true,"skippable":false,"wait":false},"moveSpeed":3,"moveType":0,"priorityType":1,"stepAnime":false,"through":false,"trigger":0,"walkAnime":true}],"x":8,"y":9}
12+
{"id":7,"name":"EV007","note":"","pages":[{"conditions":{"actorId":1,"actorValid":false,"itemId":1,"itemValid":false,"selfSwitchCh":"A","selfSwitchValid":false,"switch1Id":1,"switch1Valid":false,"switch2Id":1,"switch2Valid":false,"variableId":1,"variableValid":false,"variableValue":0},"directionFix":false,"image":{"tileId":0,"characterName":"People2","direction":2,"pattern":0,"characterIndex":0},"list":[{"code":357,"indent":0,"parameters":["pixelmapYarnSpinner","yarn","Yarn Dialog",{"Yarn File Path":"dialog/bocks.yarn","Start At":"Bocks_Start"}]},{"code":657,"indent":0,"parameters":["Yarn File Path = dialog/bocks.yarn"]},{"code":657,"indent":0,"parameters":["Start At = Bocks_Start"]},{"code":108,"indent":0,"parameters":["<Mini Label: Bocks Test>"]},{"code":355,"indent":0,"parameters":["$gamePlayer.playerOwnsTile = true;"]},{"code":0,"indent":0,"parameters":[]}],"moveFrequency":3,"moveRoute":{"list":[{"code":0,"parameters":[]}],"repeat":true,"skippable":false,"wait":false},"moveSpeed":3,"moveType":0,"priorityType":1,"stepAnime":false,"through":false,"trigger":0,"walkAnime":true}],"x":2,"y":10},
13+
{"id":8,"name":"Monster1","note":"","pages":[{"conditions":{"actorId":1,"actorValid":false,"itemId":1,"itemValid":false,"selfSwitchCh":"A","selfSwitchValid":false,"switch1Id":1,"switch1Valid":false,"switch2Id":1,"switch2Valid":false,"variableId":1,"variableValid":false,"variableValue":0},"directionFix":false,"image":{"tileId":0,"characterName":"Monster","direction":2,"pattern":1,"characterIndex":1},"list":[{"code":0,"indent":0,"parameters":[]}],"moveFrequency":3,"moveRoute":{"list":[{"code":0,"parameters":[]}],"repeat":true,"skippable":false,"wait":false},"moveSpeed":3,"moveType":0,"priorityType":1,"stepAnime":false,"through":false,"trigger":0,"walkAnime":true}],"x":24,"y":5},
14+
{"id":9,"name":"MovementMan","note":"","pages":[{"conditions":{"actorId":1,"actorValid":false,"itemId":1,"itemValid":false,"selfSwitchCh":"A","selfSwitchValid":false,"switch1Id":1,"switch1Valid":false,"switch2Id":1,"switch2Valid":false,"variableId":1,"variableValid":false,"variableValue":0},"directionFix":false,"image":{"tileId":0,"characterName":"Evil","direction":2,"pattern":1,"characterIndex":1},"list":[{"code":0,"indent":0,"parameters":[]}],"moveFrequency":3,"moveRoute":{"list":[{"code":1,"indent":null},{"code":1,"indent":null},{"code":0,"parameters":[]}],"repeat":true,"skippable":false,"wait":false},"moveSpeed":3,"moveType":0,"priorityType":1,"stepAnime":false,"through":false,"trigger":0,"walkAnime":true}],"x":25,"y":5},
15+
{"id":10,"name":"EV010","note":"","pages":[{"conditions":{"actorId":1,"actorValid":false,"itemId":1,"itemValid":false,"selfSwitchCh":"A","selfSwitchValid":false,"switch1Id":1,"switch1Valid":false,"switch2Id":1,"switch2Valid":false,"variableId":1,"variableValid":false,"variableValue":0},"directionFix":false,"image":{"tileId":0,"characterName":"People1","direction":2,"pattern":1,"characterIndex":0},"list":[{"code":108,"indent":0,"parameters":["<Mini Label: CustomCommandDemo>"]},{"code":355,"indent":0,"parameters":["const customGreeter = (_callingEventId, name) => {console.log(\"Hi \" + name + \"!\")};"]},{"code":655,"indent":0,"parameters":["if (!pixelmapYarnSpinner.commands.get('custom_hello')) {"]},{"code":655,"indent":0,"parameters":[" pixelmapYarnSpinner.addCommand('custom_hello', customGreeter);"]},{"code":655,"indent":0,"parameters":["}"]},{"code":357,"indent":0,"parameters":["pixelmapYarnSpinner","yarn","Yarn Dialog",{"Yarn File Path":"dialog/customCommandDemo.yarn","Start At":"CustomCommandDemo_Start"}]},{"code":657,"indent":0,"parameters":["Yarn File Path = dialog/customCommandDemo.yarn"]},{"code":657,"indent":0,"parameters":["Start At = CustomCommandDemo_Start"]},{"code":0,"indent":0,"parameters":[]}],"moveFrequency":3,"moveRoute":{"list":[{"code":0,"parameters":[]}],"repeat":true,"skippable":false,"wait":false},"moveSpeed":3,"moveType":0,"priorityType":1,"stepAnime":false,"through":false,"trigger":0,"walkAnime":true}],"x":21,"y":21}
1316
]
1417
}

0 commit comments

Comments
 (0)