Call own plugin

Status
Not open for further replies.

MrB

Veteran
Veteran
Joined
Nov 7, 2018
Messages
58
Reaction score
52
First Language
C#
Primarily Uses
RMMV
This is really embarrasing, but. How do I do it?

I have a simple plugin, that works if I use it as a script.

Code:
//=============================================================================
// MrB_Shop.js
//=============================================================================
/*:
 * @plugindesc  Add and remove items from a shopscene
 * @author MrB 
 * @help Yes I need help.
 * 
 * A lot of it.
 */

 (function() {
    function CallShop(){
        //Add item unlock
        if ($gameSwitches.value(1)){
            var WoodenRing = [0,4,0,0];
        } else { 
            var WoodenRing = "Not Unlocked";
        }

        var shopItems = [
        [0,1,0,0],
        [0,2,0,0],
        [0,3,0,0],
        WoodenRing
       
        ];
        SceneManager.push(Scene_Shop);
        SceneManager.prepareNextScene(shopItems, false);
    }
 })();
I just can't call for it's function, no matter what I do or try.

I tried the following, where the first two options don't do anything at all, and the third simply just gives me the error "CallShop is not defined.

http://prntscr.com/lkrfgr

- I tried this in a completely new project, no other plugins active
- Plugin is turned on etc

What am I doing wrong? :(
 

kenjivn14

Veteran
Veteran
Joined
Oct 28, 2014
Messages
84
Reaction score
65
First Language
vietnamese
Primarily Uses
RMMV
hi @MrB ,
You should write it like this

Code:
  Game_Interpreter.prototype.callShop = function () {
      if (SceneManager._scene.constructor.name !== 'Scene_Battle') {
       //Add item unlock
       if ($gameSwitches.value(1)){
           var WoodenRing = [0,4,0,0];
       } else {
           var WoodenRing = "Not Unlocked";
       }

       var shopItems = [
       [0,1,0,0],
       [0,2,0,0],
       [0,3,0,0],
       WoodenRing
   
       ];
       SceneManager.push(Scene_Shop);
       SceneManager.prepareNextScene(shopItems, false);
    }
    return true;
}
this.callShop();
 
Last edited:
  • Like
Reactions: MrB

kenjivn14

Veteran
Veteran
Joined
Oct 28, 2014
Messages
84
Reaction score
65
First Language
vietnamese
Primarily Uses
RMMV
If you want to fix code as pic,
Remove the block scope
(function() {

})();
 
  • Like
Reactions: MrB

MrB

Veteran
Veteran
Joined
Nov 7, 2018
Messages
58
Reaction score
52
First Language
C#
Primarily Uses
RMMV
Thank you so much, it's working!

I've read a bit about writing plugins, but it's all so confusing. So thank you a bunch!!
 

Astfgl66

Veteran
Veteran
Joined
Jan 5, 2016
Messages
722
Reaction score
578
First Language
French
Primarily Uses
You've just encountered your first context error.
What "(function(){})()" does is contain all your plugin in a function so that variables can't leak to the global space.
So if you want to do everything inside such a call you must graft your plugin to an already existing object accesible outside of the scope of that function.
Or if you want your function to be global, you just remove it.

In your initial example you were trying to call a function that wasn't available in the conext you called it in.
Either you redefine it in the context you'll call it in like the second poster told you to, or you make it global.
 
  • Like
Reactions: MrB

MrB

Veteran
Veteran
Joined
Nov 7, 2018
Messages
58
Reaction score
52
First Language
C#
Primarily Uses
RMMV
That makes a lot of sense actually. Thanks for explaining :)
 

slimmmeiske2

Little Red Riding Hood
Global Mod
Joined
Sep 6, 2012
Messages
7,867
Reaction score
5,240
First Language
Dutch
Primarily Uses
RMXP

This thread is being closed, due to being solved. If for some reason you would like this thread re-opened, please report this post and leave a message why. Thank you.

 
Status
Not open for further replies.

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

Latest Threads

Latest Posts

Latest Profile Posts

Our latest feature is an interview with... me?!

People4_2 (Capelet off and on) added!

Just beat the last of us 2 last night and starting jedi: fallen order right now, both use unreal engine & when I say i knew 80% of jedi's buttons right away because they were the same buttons as TLOU2 its ridiculous, even the same narrow hallway crawl and barely-made-it jump they do. Unreal Engine is just big budget RPG Maker the way they make games nearly identical at its core lol.
Can someone recommend some fun story-heavy RPGs to me? Coming up with good gameplay is a nightmare! I was thinking of making some gameplay platforming-based, but that doesn't work well in RPG form*. I also was thinking of removing battles, but that would be too much like OneShot. I don't even know how to make good puzzles!
one bad plugin combo later and one of my followers is moonwalking off the screen on his own... I didn't even more yet on the new map lol.

Forum statistics

Threads
106,035
Messages
1,018,455
Members
137,821
Latest member
Capterson
Top