Let my plug in wait until Scene_Boot.start

Nilom

Veteran
Veteran
Joined
Sep 9, 2013
Messages
178
Reaction score
39
First Language
German
Primarily Uses
RMMV
Hello!

How can I let the code in my plug in wait until Scene_Boot.start was executed, so that I can use $gameActors.(i) and so on?

Thank you in advance! :LZSsmile:
 

Andar

Veteran
Veteran
Joined
Mar 5, 2013
Messages
28,979
Reaction score
6,669
First Language
German
Primarily Uses
RMMV
That completely depends on what the plugin does - there are several different answers to this, depending on where in the engine your plugin hooks into it.

if the plugin is hooked into the various update functions then the question is into which ones and when they're called.
if the plugin provides functions for events there is no need for such a thing because it wouldn't activate earlier anyway.
and if everything else fails you can simply define your own switches and skip your own functions untile the switches are activated at whatever time you want.
 

Nilom

Veteran
Veteran
Joined
Sep 9, 2013
Messages
178
Reaction score
39
First Language
German
Primarily Uses
RMMV
First, thank you for your reply!

Let me explain what I'm trying to do:
I'm using Yanfly's Enhanced TP to have various classes have their own TP mode.

My issue with the plugin is, that I can not set a classes TP mode with notetags. Only an actors.
That's why I need a way to check the class ID on game start, to manually set the TP mode. And I need it to work for the editors test battles too.

I've set this code up, so far:
Code:
for (var i = 1; i < 5; i++) {
    let a = $gameActors.actor(i);
    switch(a._classId) {
        case 1: console.log("Actor "+i+" is Class ID "+a._classId+": "+a.currentClass().name);
            if (a.skills().contains($dataSkills[102]) && a._tpMode !== 1) { console.log("Specifically a Titan!"); a.setTpMode(1); console.log("TP Mode 1 set"); } else { console.log("TP Mode already set to 1"); }
            if (a.skills().contains($dataSkills[103]) && a._tpMode !== 2) { console.log("Specifically a Wrath!"); a.setTpMode(2); console.log("TP Mode 2 set"); } else { console.log("TP Mode already set to 2"); }
            if (a.skills().contains($dataSkills[104]) && a._tpMode !== 2) { console.log("Specifically a Weapons!"); a.setTpMode(2); console.log("TP Mode 2 set"); } else { console.log("TP Mode already set to 2"); }
        break;
        case 2: console.log("Actor "+i+" is Class ID "+a._classId+": "+a.currentClass().name);
            if (a._tpMode != 3) { a.setTpMode(3); console.log("TP Mode 3 set");} else { console.log("TP Mode already set to 3"); }
        break;
   }
}
First I tried to use this code on battle start. With Yanfly's Base Troop Events. But for some reason it doesn't update any TP modes, although the TP mode ID of the battler changes in the developer tools.

So I tried to let this script run on game start instead.
But I get this error:
Uncaught TypeError: Cannot read property 'actor' of null


What can I do? :LZSsmile:


Oh and I would also be very thankful if someone could tell me how I can use the TP mode notetags for the classes too. I think it should'nt be too hard to implement this, but I failed. :LZSgrin:
 
Last edited:

Nilom

Veteran
Veteran
Joined
Sep 9, 2013
Messages
178
Reaction score
39
First Language
German
Primarily Uses
RMMV
.push(this.Thread)
 

Andar

Veteran
Veteran
Joined
Mar 5, 2013
Messages
28,979
Reaction score
6,669
First Language
German
Primarily Uses
RMMV
make that code into a function and call that function on gamestart from an autorun event would probably be the easiest solution
 

Nilom

Veteran
Veteran
Joined
Sep 9, 2013
Messages
178
Reaction score
39
First Language
German
Primarily Uses
RMMV
Yes the easiest. The problem with this is that the TP system wouldn't function correctly in test battles and I use them quite a lot. And they are much faster to set up than manually changing the party, the equip, the level, the enemy and so on.

Meanwhile I already changed the code into a function. Do you know where I could paste my function call so that it will be called after the game is set up?
 

caethyril

^_^
Veteran
Joined
Feb 21, 2018
Messages
1,365
Reaction score
849
First Language
EN
Primarily Uses
RMMV
If you're sure that's the correct place to call the code, just implement an alias, e.g.
Code:
(function(alias) {
  Scene_Boot.prototype.start = function() {
    alias.apply(this, arguments);
    yourFunctionGoesHere();
  };
})(Scene_Boot.prototype.start);
 

Nilom

Veteran
Veteran
Joined
Sep 9, 2013
Messages
178
Reaction score
39
First Language
German
Primarily Uses
RMMV
If you're sure that's the correct place to call the code, just implement an alias, e.g.
Code:
(function(alias) {
  Scene_Boot.prototype.start = function() {
    alias.apply(this, arguments);
    yourFunctionGoesHere();
  };
})(Scene_Boot.prototype.start);
Awesome, thank you! I will try this out asap. :LZSsmile:

Edit: It works perfectly fine now! The TP modes are well updated in test battles. :kaoluv:
 
Last edited:

Users Who Are Viewing This Thread (Users: 0, Guests: 1)

Latest Threads

Latest Posts

Latest Profile Posts

J0pac wrote on CrowStorm's profile.
The sad reaction was not because I want you to credit me. (terms clearly say no need to credit) but because those maps are meant to be used as inspiration or guidence. You are ofcourse alowed to use them however you want :)
I'm an adult married woman

Being a hobbyist dev and also loving my job is like nothing to lose during both busy days and holidays ~ ♥
I tried to free some space in my phone and this is what I find: https://framapic.org/Dio090k00QQ6/8tiNZ3AV5IYw.png
...Almost 60% of all images in my gallery is just that- books and notes and guides...

Forum statistics

Threads
93,449
Messages
912,506
Members
122,976
Latest member
ssalum
Top