JessIchigoShadow

Villager
Member
Joined
Sep 20, 2021
Messages
8
Reaction score
3
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

Keeper of the Nuts
Global Mod
Joined
Mar 2, 2012
Messages
46,153
Reaction score
16,959
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
8
Reaction score
3
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
Regular
Joined
Jul 2, 2014
Messages
11,037
Reaction score
8,966
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

Regular
Regular
Joined
Aug 20, 2018
Messages
37
Reaction score
11
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
5,021
Reaction score
4,351
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
8
Reaction score
3
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
8
Reaction score
3
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
5,021
Reaction score
4,351
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
8
Reaction score
3
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
5,021
Reaction score
4,351
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
8
Reaction score
3
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 Posts

Latest Profile Posts

Yeaah, pallarax mapping

mTQFUv1QrOI.jpg
ScreenShot_9_26_2023_0_27_57.png
working on the house you explore in the beginning of my game. it's the first major area... part exploration, part battles. just need to script events and setup the on screen enemies.
I'm having way too much fun with these character designs
MZ_HUD_1.png

Accomplished a longstanding goal: transitioned from windowskin graphics to native canvas drawing for windows. No more window.png or resizing individual mask images; Bitmap and Window classes handle it all seamlessly now.

Same UI, different corner settings:

MZ_HUD_2.png

Forum statistics

Threads
134,799
Messages
1,250,773
Members
177,601
Latest member
semenbolt
Top