Hi savints!
Trees can be bound to classes since v1.1.0.
Just know that Yanflys Sub Class plugin is incompatible and will break the skilltree plugin.
Best regards,
Felski
Yes, there are many plugin commands. See the description of the plugin file for more infos. Here is the part about plugin commands.
* ============================================================================
* Plugin Commands
* ============================================================================
* You can directly open the skill tree scene.
* - TECHTREE [actorId]
* You can prepare the scene using the following commands:
* - TECHTREE DISPLAYONLY
* opens the tree in display only mode, similar to the new plugin parameter
* - TECHTREE PRESELECT [tree uid]
* preselects a specific tree for the actor. If the tree isnt found, the default selection is used.
* - TECHTREE SINGLE
* prevents the user from changing trees
*
* You can reset all techtrees for an actor.
* - RESETTECHTREES [actorId] [refund]
* You can reset a specific techtree for an actor by uid. Put in true or false for [refund].
* - RESETTECHTREE [actorId] [tree uid] [refund]
* You can save the amount of active nodes in a tree by uid in a variable. Put in true or false for [refund].
* - ACTIVENODES [actorId] [tree uid] [variable Id]
* You can add a techtree during the game:
* - ADDTECHTREE [actorId] [tree uid]
* You can activate a specific node during the game for an actor using:
* - ACTIVATENODE [actorId] [tree uid] [node uid]
* You can deactivate a specific node during the game for an actor using (the usually unlearn settings will be applied):
* - DEACTIVATENODE [actorId] [tree uid] [node uid]
There are also examples in the demo.
Hey recoculous,
thanks for having an interest in my work. First, this plugin isn't updated anymore. I hope most of the bugs are fixed and it works for most use cases.
Regarding your questions. You can double click a parameter to change it and it should show a description below.
You can also take a look into the plugin file itself. Search for END OF HELP and scroll down. This is where all the parameter definitions start. Each parameter has a line starting with @desc for the description.
The "Main Cost Items" are items you can define for a tree which will then be shown in the currency window (top right). Let's say you make a fire mage who unlocks some skills using an item called firestone. You can add the ID of firestone to "Main Cost Items" to show the number of firestones the player currently has.
To fit the whole tree on one screen you can either adjust the Node Visual Settings to make the nodes smaller or use a higher resolution (this can be achieved using Yanflys Core Engine Plugin for example)
Best regards,
Felski
Hey ElementZeroth,
repeatable nodes is a often requested feature, but it will never happen . The way the plugin is designed just doesn't allow it without rewriting the plugin.
You can use RESETTECHTREES [actorId] to reset all trees for an actor or RESETTECHTREE [actorId] [treeUid] to reset a specific tree. Both are plugin commands.
Best regards,
Felski
Hey bajibard,
so far background images, animations and plugin commands do not work. Animations will take a while to work, as MZ changed how they do animations. This change makes it impossible to do animations in menus right now. So fixing it will be quite some work. I haven't looked into background images and plugin commands yet.
Best regards,
Felski
Hi DaemosChronicle,
for 2. you need to confirm the tree at the top first. I agree that it is a bit weird that you have to do this with only one tree, but once you did it you should be able to click on the nodes below.
Regarding 1. there are a few plugin settings that you can use to make the nodes smaller. Here are the relevant settings: https://imgur.com/a1zCUVN
I suggest lowering the width and height a bit and maybe even make the gap smaller. You can also change the font sizes in the plugin settings.
Best regards,
Felski
Hi Zacharias02,
you need to create a new option category and then add then change the text.
Just replace the text with this:
{"Name":"Saving","---Settings---":"","HelpDesc":"\"Allows you to change how saving works.\"","OptionsList":"[\"{\\\"Name\\\":\\\"Enable Autosave\\\",\\\"---Settings---\\\":\\\"\\\",\\\"HelpDesc\\\":\\\"\\\\\\\"Enable or disable the auto save feature.\\\\\\\"\\\",\\\"Symbol\\\":\\\"Option1\\\",\\\"ShowHide\\\":\\\"\\\\\\\"show = true;\\\\\\\"\\\",\\\"Enable\\\":\\\"\\\\\\\"enabled = true;\\\\\\\"\\\",\\\"Ext\\\":\\\"\\\\\\\"ext = 0;\\\\\\\"\\\",\\\"---Functions---\\\":\\\"\\\",\\\"MakeCommandCode\\\":\\\"\\\\\\\"this.addCommand(name, symbol, enabled, ext);\\\\\\\"\\\",\\\"DrawItemCode\\\":\\\"\\\\\\\"var rect = this.itemRectForText(index);\\\\\\\\nvar statusWidth = this.statusWidth();\\\\\\\\nvar titleWidth = rect.width - statusWidth;\\\\\\\\nthis.resetTextColor();\\\\\\\\nthis.changePaintOpacity(this.isCommandEnabled(index));\\\\\\\\nthis.drawOptionsName(index);\\\\\\\\nthis.drawOptionsOnOff(index);\\\\\\\"\\\",\\\"ProcessOkCode\\\":\\\"\\\\\\\"var index = this.index();\\\\\\\\nvar symbol = this.commandSymbol(index);\\\\\\\\nvar value = this.getConfigValue(symbol);\\\\\\\\nthis.changeValue(symbol, !value);\\\\\\\\nFelski.AUTOSAVE.enableAutosave = !value;\\\\\\\"\\\",\\\"CursorRightCode\\\":\\\"\\\\\\\"var index = this.index();\\\\\\\\nvar symbol = this.commandSymbol(index);\\\\\\\\nvar value = this.getConfigValue(symbol);\\\\\\\\nthis.changeValue(symbol, true);\\\\\\\"\\\",\\\"CursorLeftCode\\\":\\\"\\\\\\\"var index = this.index();\\\\\\\\nvar symbol = this.commandSymbol(index);\\\\\\\\nvar value = this.getConfigValue(symbol);\\\\\\\\nthis.changeValue(symbol, false);\\\\\\\"\\\",\\\"DefaultConfigCode\\\":\\\"\\\\\\\"ConfigManager[symbol] = false;\\\\\\\"\\\",\\\"SaveConfigCode\\\":\\\"\\\\\\\"config[symbol] = ConfigManager[symbol];\\\\\\\\nFelski.AUTOSAVE.enableAutosave = ConfigManager[symbol];\\\\\\\"\\\",\\\"LoadConfigCode\\\":\\\"\\\\\\\"ConfigManager[symbol] = !!config[symbol];\\\\\\\\nFelski.AUTOSAVE.enableAutosave = !!config[symbol];\\\\\\\"\\\"}\",\"{\\\"Name\\\":\\\"Save on Map Change\\\",\\\"---Settings---\\\":\\\"\\\",\\\"HelpDesc\\\":\\\"\\\\\\\"<insert option description>\\\\\\\\n<option description line 2>\\\\\\\"\\\",\\\"Symbol\\\":\\\"Option2\\\",\\\"ShowHide\\\":\\\"\\\\\\\"show = true;\\\\\\\"\\\",\\\"Enable\\\":\\\"\\\\\\\"enabled = true;\\\\\\\"\\\",\\\"Ext\\\":\\\"\\\\\\\"ext = 0;\\\\\\\"\\\",\\\"---Functions---\\\":\\\"\\\",\\\"MakeCommandCode\\\":\\\"\\\\\\\"this.addCommand(name, symbol, enabled, ext);\\\\\\\"\\\",\\\"DrawItemCode\\\":\\\"\\\\\\\"var rect = this.itemRectForText(index);\\\\\\\\nvar statusWidth = this.statusWidth();\\\\\\\\nvar titleWidth = rect.width - statusWidth;\\\\\\\\nthis.resetTextColor();\\\\\\\\nthis.changePaintOpacity(this.isCommandEnabled(index));\\\\\\\\nthis.drawOptionsName(index);\\\\\\\\nthis.drawOptionsOnOff(index);\\\\\\\"\\\",\\\"ProcessOkCode\\\":\\\"\\\\\\\"var index = this.index();\\\\\\\\nvar symbol = this.commandSymbol(index);\\\\\\\\nvar value = this.getConfigValue(symbol);\\\\\\\\nthis.changeValue(symbol, !value);\\\\\\\\nFelski.AUTOSAVE.onMapChange = !value;\\\\\\\"\\\",\\\"CursorRightCode\\\":\\\"\\\\\\\"var index = this.index();\\\\\\\\nvar symbol = this.commandSymbol(index);\\\\\\\\nvar value = this.getConfigValue(symbol);\\\\\\\\nthis.changeValue(symbol, true);\\\\\\\"\\\",\\\"CursorLeftCode\\\":\\\"\\\\\\\"var index = this.index();\\\\\\\\nvar symbol = this.commandSymbol(index);\\\\\\\\nvar value = this.getConfigValue(symbol);\\\\\\\\nthis.changeValue(symbol, false);\\\\\\\"\\\",\\\"DefaultConfigCode\\\":\\\"\\\\\\\"ConfigManager[symbol] = false;\\\\\\\"\\\",\\\"SaveConfigCode\\\":\\\"\\\\\\\"config[symbol] = ConfigManager[symbol];\\\\\\\"\\\",\\\"LoadConfigCode\\\":\\\"\\\\\\\"ConfigManager[symbol] = !!config[symbol];\\\\\\\"\\\"}\",\"{\\\"Name\\\":\\\"Save on exiting menu.\\\",\\\"---Settings---\\\":\\\"\\\",\\\"HelpDesc\\\":\\\"\\\\\\\"<insert option description>\\\\\\\\n<option description line 2>\\\\\\\"\\\",\\\"Symbol\\\":\\\"Option3\\\",\\\"ShowHide\\\":\\\"\\\\\\\"show = true;\\\\\\\"\\\",\\\"Enable\\\":\\\"\\\\\\\"enabled = true;\\\\\\\"\\\",\\\"Ext\\\":\\\"\\\\\\\"ext = 0;\\\\\\\"\\\",\\\"---Functions---\\\":\\\"\\\",\\\"MakeCommandCode\\\":\\\"\\\\\\\"this.addCommand(name, symbol, enabled, ext);\\\\\\\"\\\",\\\"DrawItemCode\\\":\\\"\\\\\\\"var rect = this.itemRectForText(index);\\\\\\\\nvar statusWidth = this.statusWidth();\\\\\\\\nvar titleWidth = rect.width - statusWidth;\\\\\\\\nthis.resetTextColor();\\\\\\\\nthis.changePaintOpacity(this.isCommandEnabled(index));\\\\\\\\nthis.drawOptionsName(index);\\\\\\\\nthis.drawOptionsOnOff(index);\\\\\\\"\\\",\\\"ProcessOkCode\\\":\\\"\\\\\\\"var index = this.index();\\\\\\\\nvar symbol = this.commandSymbol(index);\\\\\\\\nvar value = this.getConfigValue(symbol);\\\\\\\\nthis.changeValue(symbol, !value);\\\\\\\\nFelski.AUTOSAVE.onMenuExit = !value;\\\\\\\"\\\",\\\"CursorRightCode\\\":\\\"\\\\\\\"var index = this.index();\\\\\\\\nvar symbol = this.commandSymbol(index);\\\\\\\\nvar value = this.getConfigValue(symbol);\\\\\\\\nthis.changeValue(symbol, true);\\\\\\\"\\\",\\\"CursorLeftCode\\\":\\\"\\\\\\\"var index = this.index();\\\\\\\\nvar symbol = this.commandSymbol(index);\\\\\\\\nvar value = this.getConfigValue(symbol);\\\\\\\\nthis.changeValue(symbol, false);\\\\\\\"\\\",\\\"DefaultConfigCode\\\":\\\"\\\\\\\"ConfigManager[symbol] = false;\\\\\\\"\\\",\\\"SaveConfigCode\\\":\\\"\\\\\\\"config[symbol] = ConfigManager[symbol];\\\\\\\"\\\",\\\"LoadConfigCode\\\":\\\"\\\\\\\"ConfigManager[symbol] = !!config[symbol];\\\\\\\"\\\"}\"]"}
You can do adjustments from there.
Best regards,
Felski
Hello discordiandreams,
I've been thinking about your questions for awhile and I don't think this can be done easily by changing the Javascript.
You could go achieve something similar in another way. You could create items that would be used to unlock the higher nodes. This would limit the amount of higher nodes by the amount of items you give the player. The skill tree would be have one lane per skill with 4 nodes. Each node would require another item. Like T1 Skill Crystal, T2 Skill Crystal, T3 Skill Crystal and T4 Skill Crystal.
That way you would somewhat achieve what you want.
Best regards,
Felski
Hi,
I followed this game for a while now and I have to say the amount of updates is superb. Keep up the good work. I got the time to play today for the first time. I really enjoy the game and like how smooth it feels already.
I'm a bit annoyed that you instantly close the game by pressing ESC. I tend to use it to stop get out of menus in other game and spam it. Would be nice if it would be rebindable.
I also like the art overall. The small tiny sprites look awesome. I'm a bit put off by the different font. Especially the really small one is hard to read sometimes (the one used for quest texts and the time display.
Overall, I really really enjoy playing this game. Keep it up!
Best regards,
Felski
Hey Myenemy,
I think I figured out the reason for the crash. I just released an update that should get rid of the crash. Alternatively, you could check if you have classes that have trees assigned that don't exists. Remove the skilltree notetags for these classes and the game should start.
Best regards,
Felski
Hi Gumbanomicon,
thanks for the feedback. I didn't added any functions that you described to the nodes. As of now, you can only activate a node once and then that's it.
I investigated the options to implement such features like multiple activations and different costs etc. All of the things we talked about in other topics. But overall it would be to much of a change of how the plugin works. It would fully prevent backwards compatibility for older trees and be to much work in my opinion. That's why I have decided to not implement it and not follow this path.
Overall I think the plugin is finished, but I will monitor any bug reports and release bug fixes if needed. But I don't think I will work on any new features in the near future.
Best regards,
Felski
I actually didn't think of the option to deactivate the node. I'll add this aswell.
Usually when resetting full skilltrees the skills gained by the tree are unlearned. This is used when changing classes for example. Currently I think this would fit this feature, too. What do you think? Should the skills learned by the node also be unlearned?
Hi alevel3mage,
sadly that can't be done at the moment, but I'm currently working on a new update and part of it is a new plugin command that allows you to unlock a specific node.
Currently I still have to do the more coding heavy parts of the update, but I expect to publish it next week.
Best regards,
Felski
Hi Gumbanomicon,
thanks for bringing that up again. I also forgot about it. I tried to reproduce the bug. I copied a skill in the database and then changed it icon and some parameters and texts. Then I added a node with this new skill to a skilltree. After saving everything and closing and reopening the game the skill icon was shown properly.
It seems that this is more of a RPG Maker issue. Did you restart the game properly after copying the skill? To apply changes to the database you need to properly save the project and then close the game and reopen it by using play test. Can you try that and check if the bug still happens?
Best regards,
Felski
Hi Gumbanomicon,
it seems that my answer came out a bit to rude last time. First of all, I wanted to say thank you for all your questions and feedback. It helps me tremendously when working on the plugin.
Regarding my last message, I just wanted to say that from my standpoint the feature of multiple node unlocks doesn't outweight the amount of work that needs to be put in.
It's actually quite hard to make this plugin work in all use cases. Most games might actually prefer more icon based skill trees like League of Legends Masteries, Shadow of War or Assasins Creed skilltrees. So it might be worth moving the plugin more in this direction. I'm definitely look into such visual options, but at the moment I can't confirm anything.
Best regards,
Felski
Hi Gumbanomicon,
you're right. The answer is actually no. There are two reasons for that:
For your problem you could create one common event that increases the variable and assign it to multiple nodes. That way it gets increased every time and changing it would be easy, as you just have to change that one common event.
Best regards,
Felski