JessIchigoShadow

Villager
Member
Joined
Sep 20, 2021
Messages
6
Reaction score
2
First Language
Italiano
Primarily Uses
RMMV
I read on the RPG Maker MV file sheet how to call the choice script, but the part about the callback isn't working how they displayed them there. There's something I didn't get? I tried other methods and now the game doesn't wait for the choice to be made and do other commands other than listening for the choise to be made.
 

Shaz

Global Moderators
Global Mod
Joined
Mar 2, 2012
Messages
44,104
Reaction score
15,524
First Language
English
Primarily Uses
RMMV
Please give a link to the sheet you're referring to, and show us screenshots so we can see how you implemented it.
 

JessIchigoShadow

Villager
Member
Joined
Sep 20, 2021
Messages
6
Reaction score
2
First Language
Italiano
Primarily Uses
RMMV
Please give a link to the sheet you're referring to, and show us screenshots so we can see how you implemented it.
Sorry I was able to see this only now.

The link I mentioned is this:
The screen of my code is this:
 

Attachments

  • Immagine.jpg
    Immagine.jpg
    287.6 KB · Views: 11

ATT_Turan

Forewarner of the Black Wind
Veteran
Joined
Jul 2, 2014
Messages
2,746
Reaction score
1,611
First Language
English
Primarily Uses
RMMV
Looking at that, my question is...why is it a function? I don't see you doing anything in there that can't be done by the basic event commands, so why isn't it just an event?
 

ethervagabond

Veteran
Veteran
Joined
Aug 20, 2018
Messages
37
Reaction score
10
First Language
English
Primarily Uses
RMMV
Looking at that, my question is...why is it a function? I don't see you doing anything in there that can't be done by the basic event commands, so why isn't it just an event?
maybe he just wants to practice his JavaScript? lol
 

caethyril

^_^
Global Mod
Joined
Feb 21, 2018
Messages
2,965
Reaction score
2,294
First Language
EN
Primarily Uses
RMMZ
@JessIchigoShadow: can you also show a screenshot of where you are calling this function in your game?

I see some potential problems:
  1. Context - this is context-dependent, details:
    Your function should be run in the context of the interpreter that you want to pause.

  2. Timing - risultato is always undefined because the interpreter only waits between commands. You will have to check the response in a different place, e.g. in another event command.

  3. Scope - because you need to check the response elsewhere (Timing), I suggest storing the response in a game variable instead, e.g.
    JavaScript:
    $gameMessage.setChoiceCallback(function(n) {
      // store selected index in game variable ID 1
      $gameVariables.setValue(1, n);
    });
(I'm guessing this is the basis for an item storage system.)
 

JessIchigoShadow

Villager
Member
Joined
Sep 20, 2021
Messages
6
Reaction score
2
First Language
Italiano
Primarily Uses
RMMV
I want to use the scripts for having an understanding on how everything works, so in the future I will be able to use this function in an even more complex script
Looking at that, my question is...why is it a function? I don't see you doing anything in there that can't be done by the basic event commands, so why isn't it just an event?
 

JessIchigoShadow

Villager
Member
Joined
Sep 20, 2021
Messages
6
Reaction score
2
First Language
Italiano
Primarily Uses
RMMV
@JessIchigoShadow: can you also show a screenshot of where you are calling this function in your game?

I see some potential problems:
  1. Context - this is context-dependent, details:
    Your function should be run in the context of the interpreter that you want to pause.

  2. Timing - risultato is always undefined because the interpreter only waits between commands. You will have to check the response in a different place, e.g. in another event command.

  3. Scope - because you need to check the response elsewhere (Timing), I suggest storing the response in a game variable instead, e.g.
    JavaScript:
    $gameMessage.setChoiceCallback(function(n) {
      // store selected index in game variable ID 1
      $gameVariables.setValue(1, n);
    });
(I'm guessing this is the basis for an item storage system.)

that's the place I call the function. Can you explain the waiting part about the interpreter? Sorry I'm pretty new to scripting for RPG Maker and Javascript, so I'm pretty confused.

For the rest, I'll try to modify the program on how you suggested!

And yes, I wanted to create a store system
 

Attachments

  • 1.jpg
    1.jpg
    180.7 KB · Views: 4
  • 2.jpg
    2.jpg
    152.8 KB · Views: 4

caethyril

^_^
Global Mod
Joined
Feb 21, 2018
Messages
2,965
Reaction score
2,294
First Language
EN
Primarily Uses
RMMZ
You could split your Negozio function into 2 new functions, e.g. (untested):
JavaScript:
(function() {

  var oggetti = [
    'Pozione',
    'Acqua magica',
    'Erba curativa',
    'Stimolante',
    'Pozione dell amore',
    'Zanne velenose',
    'Filo di tela'
  ];

  function Negozio1() {
    $gameMessage.add("What do you want to put in?");
    $gameMessage.setChoices(oggetti, 0, -1);
    $gameMessage.setChoiceBackground(0);
    $gameMessage.setChoicePositionType(2);
    $gameMessage.setChoiceCallback(function(n) {
      // store selected choice index in game variable 1
      $gameVariables.setValue(1, n);
    });
    this.setWaitMode("message");
  };

  function Negozio2() {
    var index = $gameVariables.value(1);
    var itemName = oggetti[index];
    if (itemName) {
      $gameMessage.add("You chose " + itemName);
      $gameMessage.add("How many do you want?");
    }
  };

})();
Then use Function#call to call those functions in the interpreter context:

◆Script:Negozio1.call(this); ◆Script:Negozio2.call(this);
More information here:
Hopefully that makes sense! :kaohi:
 

JessIchigoShadow

Villager
Member
Joined
Sep 20, 2021
Messages
6
Reaction score
2
First Language
Italiano
Primarily Uses
RMMV
Yes, thank you! Sorry for the late answer, and thank you again! I just have a last question, why you have to split the entire part in two functions instead of making everything in one?
 

caethyril

^_^
Global Mod
Joined
Feb 21, 2018
Messages
2,965
Reaction score
2,294
First Language
EN
Primarily Uses
RMMZ
The interpreter only waits between commands. When the choice is made, the message closes, and the next command can run. So everything after the setWaitMode should be called in a new command. This lets the interpreter wait for the player to make a choice before checking what that choice was.

Since we need two separate commands, that means we need two separate functions~
 

JessIchigoShadow

Villager
Member
Joined
Sep 20, 2021
Messages
6
Reaction score
2
First Language
Italiano
Primarily Uses
RMMV
The interpreter only waits between commands. When the choice is made, the message closes, and the next command can run. So everything after the setWaitMode should be called in a new command. This lets the interpreter wait for the player to make a choice before checking what that choice was.

Since we need two separate commands, that means we need two separate functions~
Oookay, thank you!
 

Latest Threads

Latest Profile Posts

I'm new to rpgmaker mv, link me some good stuff to learn.
Finally, I have graduated from college and now I can put a lot more work into my game, after having not worked on it for the better part of a year.
post so i can change my profile picture ^^
Creating Some art for a fighter game.

Finally was able to record the rest of the game demo! I added some edits here and there, this is why it takes me so long to do stuff cuz I find a problem and have to fix it asap. x.x
Game: https://dj990j.itch.io/region-of-mythos

Forum statistics

Threads
117,062
Messages
1,104,211
Members
153,027
Latest member
Mr_Skely
Top