BuySkills
BuySkills
Please note: BuySkills is not compatible with the old ExpSkills Plugin. You need to update your config by yourself.
BuySkills is a plugin that allows your users to buy or rent skills (i.e. permissions or groups) for money or other currencys. It has a built in skilltree feature, perfect for level based classes.
To make sure you can use everything you want as costs or requirement, this plugin requires the CurrencyHandler Plugin.
Update from 0.x to 1.0
The new version is not compatible with 0.x versions. You need to update your config files yourself.
The level und skillpoint function has been removed but can be achieved with the SkillLevels plugin.
Metrics
This plugin utilises Hidendra's plugin metrics system. You can opt-out under <yourPluginFolder>/PluginMetrics/config.yml
The following informations will be collected:
- A unique identifier
- The server's version of Java
- Whether the server is in offline or online mode
- The plugin's version
- The server's implementation and game version
- The OS version/name and architecture
- The core count for the CPU
- The number of players online
- The Metrics version
- Your online-mode
- Your server location
Dependencies
Vault: BukkitDev
CurrencyHandler: BukkitDev
Usage
Commands
User Commands
/skill help [command] - get help for this plugin
/skill list <page> <filter> - list available skills
/skill info <skill> - get information to a specific skill
/skill buy <skill> - buy a skill
/skill rent <skill> - rent a skill
/skill current [player] - shows bought skills
/skill rented - show's your rented skills
Admin Commands
/skill grant <player> <skill> [charge] [rent] - grant a skill
/skill recalculate <player> - recalculate permissions
/skill reload - reload config files
/skill reset <player> - reset all skills of a player
/skill revoke <player> <skill> - revoke a skill from a player
Permission Nodes
buyskills.user - all user permissions buyskills.command.help - access to /help command buyskills.command.list - access to /list command buyskills.command.info - access to /info command buyskills.command.buy - access to /buy command buyskills.command.rent - access to /rent command buyskills.command.current - access to /current command buyskills.command.rented - access to /rented command buyskills.admin - all admin permissions buyskills.command.recalculate - access to /recalculate command buyskills.command.reload - access to /reload command buyskills.command.reset - access to /reset command buyskills.command.revoke - Grant access to /revoke command buyskills.command.grant - access to /grant command
Configuration
Example Skill
example: name: Example # Name of the skill, used for every ingame interaction. Must be unique description: "Example skill" # A short description of the skill info: "This skill allowes you to do nothing" # A more detailed description of the skill category: # A list of categories the skill can be found at (used for /list) - example perm_earn: # A list of permission nodes the player earns with this skill - ex.ample perm_need: # A list of permission nodes the player needs for this skill - exam.ple group_earn: # A list of groups the player earns with this skill - examlpe group_need: # A list of groups the player needs for this skill - player skill_need: # A list of skills, needed to buy this skill - notexample skill_illegal: # A list of skills the player is not allowed to own for this skill - examlpe2 skills_needed: 1 # Number of skills of the skill_need list the player needs for this skill worlds: # A list of worlds where you can buy this skill. Leave empty for global. - world revoke_group: false # Revoke needed groups when buying this skill? revoke_perm: false # Revoke needed permissions when buying this skill? regrant_perm: false # Regrant needed permissions when this skill is revoked? regrant_group: false # Regrant needed groups when this skill is revoked? buyable: true # Is this skill buyable? rentable: false # Is this skill rentable? renttime: 200 # Time in seconds the skill is rented for buy_costs: # The costs to buy this skill, uses CurrencyHandler plugin food: 10 health: 10 rent_costs: # The costs to rentthis skill, uses CurrencyHandler plugin food: 10 health: 10 buy_need: # This currencies are needed to buy this skill food: 20 rent_need: # This currencies are needed to rent this skill food: 20
Source Code: GitHub
@SydMontague
Oh ok, would I have to set its catagory to "all" so that you can view it from /exp list, or is it because it isn't available to me, and that is why it doesn't show up?
One other thing, what is the difference between buying and renting? How can I configure something so it can only be rented for example?
Edit: My main goal is to be able to use this plugin as a reward system, so I can issue points via a command, which you can do with this plugin. I don't want people to earn skill points with exp, only via command, and then only be able to spend the reward points on renting skills, not buying them.
Thanks for replying :P
@Tomskied
The config itselfs seem to be okay. You can check this by typing /exp list all. If your skill is shown there it works. When you try to buy the skill you´ll get a reason why you can't buy the skill.
Im having a bit of trouble. /exp list only shows the aqua ================== I have this in the config:
can you see what I am doing wrong?
@Swords761
I found this, but maybe they are more... http://dev.bukkit.org/server-mods/buycommand/
@SydMontague
Yes, your ideas for renting skills sounds good to me. Which plugin is it that sells command executions for money? And I will PM you a list of my plugins later today.
@Swords761
Do you have any idea/wish how the renting system could be designed?
Currently I would add a "rentcost: money", a "rentcost_min: money" and a "timediscount: true/false" value in config. rentcost would define the cost's if you rent this skill for the default time or when timediscount is false. timediscount would define the costs if you rent it for a time lower than renttime with the formula newcosts/rentcost = owntime/defaulttime an finaly rentcost_min would define the minimum amount of money you have to pay if you buy this skill.
Is this what you imagine or do you have some other ideas? (As well as everyone else who is reading this)
However, a pay per command function is not planned, as there are already some plugin which so that. My plugin was also never intended to do that, as there is a mayor difference between pay per command and buy permissions.
To the PlugMan problem: I still can not reproduce it. My testserver is running it since your report together with CommandBook, Worldedit and Worldguard and I have no error. I think the problem is a bit deeper, maybe a hidden conflict with another plugin. I would help me when you send me a list of your installed plugin via PM.
@SydMontague
Yay, thanks for that, now I can remove ControlORBle and go back to my default config. DeathTpPlus was actually saving my EXP upon death.
When you implement a better money renting system for permissions, as well as maybe paying for the execution of commands (ie. /god %player), let me know!
P.S. There are still (for some odd reason) conflicts when both ExpSkills and PlugMan run, specifically for Commandbook and WorldEdit/Guard, even when this new option is set to true.
@Swords761
Just request what you need, something isn't even difficult, like command aliases.
I added a config option "change_expdrop: true/false" in the lastest dev version, which should disable all breaking exp methods. (exp save in player config and level save on death) The /exp add/set, level and skillpoints features are all still active, as you can decide by yourself if you want to use them.
Thank you for your feedback. :)
@SydMontague
Thanks for the alias. I would love it if I could just use this plugin for money purchases instead of both EXP and money, since like you said there could be conflicts. Maybe a completely rewritten code could let you enable/disable EXP or money, but for now it's fine as it is, I'll find ways to deal with it.
EDIT: It seems like there are just too many issues with compatibility (PlugMan and ControlORBle) for this plugin to be worth it for my server, so until you can make it so it just integrates with the economy system and not also experience, I'm keeping it disabled. I really love the idea and plugin though, don't get me wrong.
@Swords761
/skills - thank you, it was too easy. >_> Finaly I found my alias :D
I updated the dev version for this.
However, I´m not sure if there is other conflict between the plugins related to player exp drop...
Hey Syd, do you mind adding an alias for ExpSkills, like /skills? I just installed "ControlORBle" for XP management and it uses (and overrides ExpSkills) /exp for its commands.
@Swords761
Yes, I'm going to advance the rental of skills to make such kind of "rank trial" with money possible. With skillpoints it makes more sense, as you regain your skillpoints after expiration.
@SydMontague
It's not your fault, it works fine with PlugMan so I just removed it. I prefer having ExpSkills. :) If WorldEdit's latest version is 5.1.1, then I have the latest version.
And an unrelated question- how do you differentiate between rented and bought skills? It's like you might as well buy the skill if it costs the same amount, yet you can't make a skill permanent or rentable- you have to have both options open apparently for the same price and conditions but rentable will expire? Seems silly to me. I'm trying to make a "rank trial" expskill purchase where you can rent vip perk permission nodes for a day, but it costs just as much as to buy it, defeating the purpose of renting it.
Hopefully you understand what I mean.
@Swords761
I´m sorry, but I can't reproduce this error with the named plugins. Make sure all plugins are up2date, maybe it resolves the error. Especially check WorldEdit, as both error reference to it.
@SydMontague
I use BOSEconomy and PermissionsEX. As soon as I removed PlugMan, CommandBook and WorldGuard started to function again. While both PlugMan and ExpSkills were enabled though, CommandBook and WorldGuard had issues.
@Swords761
Even with PlugMan I can't reproduce this error. The PlugMan plugin does not do a lot on startup what could cause a conflict. But maybe it depends on another plugin. Which Economy and Permissions plugins do you use? And do you use Register and/or Vault?
@SydMontague
Found the problem, it has something to do with the new "PlugMan" plugin that's been revived. It has issues enabling CommandBook and WorldGuard apparently whilst ExpSkills is on the server. Wonder why...
And now I just tested Yummi, another plugin manager. Same thing happens.
AWESOME!!! EPIC!!! Finally a good plugin for selling permissions and spells on my server, I really like the skill feature for spells.
@Swords761
I can't reproduce this error on a server with 1.1-R3, ExpSkills 0.8.1, Commandbook 2.0, WorldGuard 5.4 and WorldEdit 5.1.1.
Are all your plugins uptodate?
Thanks Syd, but I still get these errors upon enabling CommandBook and WorldGuard whilst your plugin is enabled:
00:52:04 [SEVERE] Error occurred while enabling CommandBook v2.0 (Is it up to date?): com/sk89q/util/yaml/YAMLProcessor$FancyDumperOptions
java.lang.IllegalAccessError: com/sk89q/util/yaml/YAMLProcessor$FancyDumperOptions at com.sk89q.util.yaml.YAMLProcessor.<init>(YAMLProcessor.java:82) at com.sk89q.commandbook.CommandBook.populateConfiguration(CommandBook.java:208) at com.zachsthings.libcomponents.bukkit.BasePlugin.loadConfiguration(BasePlugin.java:106) at com.zachsthings.libcomponents.bukkit.BasePlugin.onEnable(BasePlugin.java:70) at com.sk89q.commandbook.CommandBook.onEnable(CommandBook.java:96) at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:231) at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:1057) at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:379) at org.bukkit.craftbukkit.CraftServer.loadPlugin(CraftServer.java:191) at org.bukkit.craftbukkit.CraftServer.enablePlugins(CraftServer.java:174) at net.minecraft.server.MinecraftServer.t(MinecraftServer.java:357) at net.minecraft.server.MinecraftServer.a(MinecraftServer.java:344) at net.minecraft.server.MinecraftServer.init(MinecraftServer.java:175) at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:408) at net.minecraft.server.ThreadServerApplication.run(SourceFile:465)
00:52:04 [SEVERE] Could not pass event org.bukkit.event.server.PluginEnableEvent to WorldGuard
java.lang.NullPointerException at com.sk89q.wepif.ConfigurationPermissionsResolver.load(ConfigurationPermissionsResolver.java:60) at com.sk89q.wepif.PermissionsResolverManager.findResolver(PermissionsResolverManager.java:121) at com.sk89q.wepif.PermissionsResolverManager.load(PermissionsResolverManager.java:135) at com.sk89q.wepif.PermissionsResolverManager$ServerListener.onPluginEnable(PermissionsResolverManager.java:273) at org.bukkit.plugin.java.JavaPluginLoader$49.execute(JavaPluginLoader.java:608) at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:57) at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:453) at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:1064) at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:379) at org.bukkit.craftbukkit.CraftServer.loadPlugin(CraftServer.java:191) at org.bukkit.craftbukkit.CraftServer.enablePlugins(CraftServer.java:174) at net.minecraft.server.MinecraftServer.t(MinecraftServer.java:357) at net.minecraft.server.MinecraftServer.a(MinecraftServer.java:344) at net.minecraft.server.MinecraftServer.init(MinecraftServer.java:175) at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:408) at net.minecraft.server.ThreadServerApplication.run(SourceFile:465)
These don't happen when ExpSkills isn't installed, even though they don't seem to be conflicted by your plugin.