Regarding an MV port
Greetings all.
As has been mentioned in the shop page for this plugin, an MV version of it is in the works, and has been in development since the initial release of the MZ version of the plugin.
The current plan is that the MV version will be the same exact file as this MZ version, and will simply "work" in MV, via some switching based on which maker you're using. That means that on release, this plugin will be renamed to MV/MZ - Skill Shop, and anyone who has already bought it will immediately have access to the MV version as well (since they'll be the same file).
With that being said, I'm running up against an issue with backporting it to MV, that being the way plugin commands were handled. In rpgmaker MZ, plugin commands are a lot more robust, allowing for the very intricate commands I have going on in this plugin to create a shop, and modify its skill stock.
The MV plugin command is, simply put, quite obtuse. Currently I need to strike a balance between maintaining the plugin command functionality from MZ, and making it so that the end user doesn't pull their hair out trying to work around the plugin commands.
As an example, the MZ plugin command to create a shop has 4 parameters:
- The Key
- Whether the shop has a limited stock or not
- The list of skills in the shop (with their stock values)
- The customized shop strings for the various messages in the shop (buy button, error messages, etc)
From a user perspective, these are presented pretty clearly, with their own help text for each, so you know what they all are, and how to input them.
An MV plugin command requires to be presented to the engine in the following way:
plugincommandname args
So, for this example, the command name would be 'CreateShop', but what do you end up putting in for the arguments? Well there's the issue.
The easiest way to set this up is to comma separate them into their own thing, so we could do CreateShop Key, locked, skills, strings , but then we run into the second issue, the actual arguments.
See, in MZ, the list the user inputs ends up as a couple of objects, so starting with the strings part of the argument, it needs to be an object.
{BuyOne: "Buy", BuyTwo: "Confirm", FailBox: "You do not meet the requirements...", KnownSkill: "You already know this skill", OutOfStock: "Out of stock."}
The problem with the above approach, is that this is just ONE of the arguments you'd need to provide the plugin command, and it's already massive.
The other issue is the skills argument. It's not just a list of skills, it's a list of skills with their stock values. So that parameter is an array, and each element in the array is an object with two properties, a skillId and a stockvalue:
[{skillId: 12, StockValue: -1}, {skillId: 41, StockValue: 4},{skillId: 6, StockValue: 21}]
The above is just an example of a shop with just three skills in stock.
So we end up with a plugin command that looks like this:
CreateShop Zoop false [{skillId: 12, StockValue: -1}, {skillId: 41, StockValue: 4},{skillId: 6, StockValue: 21}] {BuyOne: "Buy", BuyTwo: "Confirm", FailBox: "You do not meet the requirements...", KnownSkill: "You already know this skill", OutOfStock: "Out of stock."}
To create one shop, with three skills. Not ideal, right? And what happens if you miss a colon, or put the wrong bracket? The whole thing doesn't work. Super great, eh?
So right now I'm working on a way to streamline this a bit better in MV. I'm thinking it'll end up using a comment event command instead of the plugin command, but we'll see how it goes. I just need to figure my way around doing that, since I've never made a plugin that used the event comment command before.
Just figured I'd keep y'all in the loop.
Oh, one other thing, when I do release the update that will make this plugin compatible with MV, I'll run another discount the same as the release discount, so there's no need to buy it right now thinking there won't be a similar sale in a couple of weeks when I get this working. no FOMO here.
That's all for now.
~Ramza
Leave a comment
Log in with itch.io to leave a comment.