Inactive [MISC] HeroBounty v1.9.0 - Bounty Board / Hit List [953]

Discussion in 'Inactive/Unsupported Plugins' started by DThielke, Feb 4, 2011.

  1. Offline

    DThielke

    HeroBounty Bounty Board / Hitlist Plugin (v 1.9.0)
    Download HeroBounty
    Source Code on GitHub This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 Unported License.

    Show your thanks! Maintaining plugins like this one is very nearly a full time job. If you enjoy my plugins and appreciate the support I provide, then please consider providing some support of your own. Donating even a tiny amount keeps me motivated and makes me feel loved so go ahead and donate!

    HeroBounty adds a whole new dimension to Minecraft PvP. For anyone who has ever been killed by another player and wanted them to pay, but just didn't want to spend the time hunting them down, here is your answer! HeroBounty adds a public hit list to your server, allowing players to anonymously post hits against their enemies for a reward paid out of their pocket. Other players can take on the role of bounty hunter, competing to fulfill bounties and earn the reward.

    HeroBounty is a plugin originally developed for the HeroCraft server and is now officially being released to the public.

    Enjoy!

    Features:
    • Anonymously issue hits against your enemies!
    • Become a bounty hunter and kill for pay!
    • Economy support! Earn in-game money for completing hits! Supports any economy that Register supports.
    • And more!
    Usage:


    The available commands are summarized in the screenshot below. Any parameters in <angled brackets> are required. Any <id#> parameters require the position of the item in the relevant bounty list.

    [​IMG]

    1. Creating a bounty
    The /bounty new command posts a new bounty against the player and for the amount provided. A percentage based cut is taken out of the supplied amount; the remaining money is posted as the reward for the hit.

    [​IMG]

    2. Viewing available bounties
    The /bounty list command lists all available bounties and their associated rewards. Bounties are sorted from highest to lowest reward. This list keeps both the bounty issuer and the target anonymous. You will not discover the target of the bounty until you accept it.

    [​IMG]

    3. Accepting a bounty
    To accept a bounty, use the /bounty accept command and give it the id# of the bounty you'd like. Accepting a bounty incurs a small fee - usually 5% of the award value. Once accepted, you will be given the target's name and the duration of your issued bounty will start to count down. If you fail to kill the target in the given duration, the bounty will be retracted and you will have to purchase it again to continue.

    [​IMG]

    4. Finding a target
    To help in finding targets, use the /bounty locate command. This command displays a list of your targets and their approximate. Target locations are rounded to the nearest 100 blocks by default, but this value can be changed in the configuration. These locations are only meant to give you a rough idea of where your target is. It is up to you as the bounty hunter to actually track down the player and complete the hit.

    [​IMG]

    5. Completing a bounty
    If you manage to kill a player for whom you have purchased a bounty for, you will be given the reward associated with the hit. The server will be publicly alerted of your success. The target (now dead) will receive a small monetary penalty - usually 5% of the award value.

    [​IMG]

    Installation:
    1. Download the latest version of the plugin from the link at the top of this page.
    2. Extract the contents of the archive to your /plugins folder.
    3. Open /plugins/HeroBounty/config.yml and configure to your liking.
    4. Save the modified file and start your server.
    Configuration:


    All of the settings related to HeroBounty are stored in your /plugins/HeroBounty/data.yml file in YAML format. If you are unfamiliar with YAML, simply follow the pattern found in the config.yml file in the archive you downloaded. The comments in this default file, prefaced with a #, describe what each of the configuration options do.

    Permissions:
    If found, HeroBounty will make use of TheYeti's Permissions plugin. The three available permission nodes are described below:
    • herobounty.new - allows use of /bounty new
    • herobounty.accept - allows use of /bounty accept
    • herobounty.locate - allows use of /bounty locate
    • herobounty.list - allows use of /bounty list
    • herobounty.untargettable - makes a player unable to be targetted by bounties
    A Message to Users


    Thanks for all your support! I will do my best to keep this plugin updated and bug free. If you have any issues or feature requests, feel free to either leave a message here or find me on IRC.

    Thanks to Nijikokun for help with making the plugin display nicely formatted messages!

    Extra special thanks to my donors: wildshoetwt

    Change Log:
    Version 1.9.0
    • Added Register support. Removed the negative balances option.
    Version 1.8.0

    Version 1.7.7

    • Added additional NPE checks in Economy
    • Added the herobounty.list permission to regulate use of /bounty list
    Version 1.7.6

    • Updated for CB 612
    Version 1.7.4

    • Commands now load even if iConomy isn't found (woops)
    Version 1.7.3

    • Fixed a silly mistake regarding parameterized messages
    Version 1.7.2

    • Finished majority of internal rewrite
    • Made iConomy optional (although it might be buggy without it - please test!)
    Version 1.7.1

    • Added the bounty.locate permission
    Version 1.7.0

    • Added Permissions support, including the herobounty.new, herobounty.accept and herobounty.untargettable nodes
    Version 1.6.0

    • Added compass-based locations with /bounty locate <id#>
    • Revamped help menu
    • Added command specific help. Type /<command> ? to use it (ie. /bounty new ?)
    Version 1.5.0

    • Updated to work with iConomy 4.3
    Version 1.46

    • Removed a debug message I accidentally left in - no more console spam
    Version 1.45

    • Fixed bounty kills not registering.
    Version 1.44

    • Revamped the /bounty locate command
    • Added new configuration option to adjust location rounding
    Version 1.41

    • Updated to meet new Bukkit standards
    • Fixed long constructor spam
    • Now using new damage events
    Version 1.40

    • Added the option to allow a target's balance to go negative if they cannot afford the death penalty
    Version 1.30

    • Added the option to pay hunters an inconvenience fee for cancelled bounties
    Version 1.20

    • Introduced the /bounty locate command
    • Added new configuration options regarding location updating
    Version 1.10

    • Bug fix: players can no longer accept bounties on themselves
    • Redone message displays
    • Death penalty is now configurable
    • Plugin message prefix is now configurable
    • Server admins can now decide whether they want target names to show on the bounty list
    • Supports plugins that modify names such as iChat
    Version 1.01

    • A global message is now sent when a new bounty has been placed.
    Version 1.00

    • Initial public release!
     
    Zino, Dimochka, paste120 and 6 others like this.
  2. Offline

    DThielke

    I plan on adding something like that eventually, I just haven't decided how to handle cancelling of bounties in such a case. I'll likely just have it remove the canceler's contribution to the bounty, as that seems fairly intuitive.
     
  3. Offline

    Kyrah

    Any chance you could allow "Material" bounties? On our server we aren't using Iconomy and are not planning to, it could be interesting to allow bounties to be made with diamons, gold, etc...
     
  4. Offline

    kazeen

    kyrah
    i was wondering the same thing
     
  5. Offline

    TheMap

    Heh I was wondering the same, my economy is going to be based on trade goods.
     
  6. Any chance that you can create a field that toggles the bounty target getting notified if a bounty is put on them? Right now, they just see that a bounty was placed, but not on them. I plan to have the bounty system used as incentives for rule breakers.
    Also, i dont remember if i posted this yet or not... but bounties should be stackable. (eg, 1 person bounties for 300 money, and then another person bounties again for 200, totaling 500) this helps keep people from doing low bounties on themselves/friends to stay under the radar.
     
  7. Offline

    Arisilde

    Any chance of getting an option to disable the target tracking? I'm having a real problem with people putting bounties on people just to track them down themselves.
     
  8. Offline

    DThielke

    This has been asked before and my answer for now is still a very hesitant maybe. If I end up adding this, it'll be a few weeks from now when I have a lot of free time.

    Yeah, this is definitely something I need to add. Until an official option for this is implemented, you can effectively make the tracking system useless by setting location-update-distance to 0 and location-update-period to something absurdly high (say, 100000).
     
  9. Ok... big error... if i do /bounty add username ### (add a bounty), my client crashes, and freezes windows explorer. ... no console errors... and the entire server does not crash, just the player who does the bounty.
     
  10. Offline

    LRFLEW

    source?

    Also, I have gotten a request on my forum about my plugin PvP Control. As the name implies, it affects the ability for a player to attack another player. As I'm currently reworking my plugin, i was wondering if you had/would be willing to have an extension that allows other plugins to see if a person has a bounty over their heads and/or if they have accepted a bounty? That would really help me.

    Thanks
     
  11. Offline

    DThielke

    Okay, I'm adding a few methods that other plugins can use to get information regarding bounties.

    What all would you need exactly? Just the following, or something more?

    public boolean isTarget(Player player)
    public boolean isHunter(Player player)

    I can add whatever you need, but can you be more specific?
     
  12. Offline

    Brad Phusion

    Heyy, just curious about this. Now, I get how the plugin works, but have you implemented anything to do with stealth? For example, if a person is stealthed, or crouching, they have a chance of not being detected.
    And how about a sensor like thing, where if you, the hunter, is within, say 30 blocks of the target, the console let's you know that they are nearby? Same with the target, so they can see their pursuer. I'm thinking about Brotherhood, because well, I love this game, and I love this plugin :p
     
  13. This is the error i get when MC crashes::

    Code:
    
    
    
          Minecraft has crashed!
          ----------------------
    
    Minecraft has stopped running because it encountered a problem.
    
    If you wish to report this, please copy this entire text and email it to [email protected].
    Please include a description of what you did when the error occured.
    
    
    
    --- BEGIN ERROR REPORT a1dce528 --------
    Generated 2/14/11 9:27 AM
    
    Minecraft: Minecraft Beta 1.2_02
    OS: Windows 7 (amd64) version 6.1
    Java: 1.6.0_20, Sun Microsystems Inc.
    VM: Java HotSpot(TM) 64-Bit Server VM (mixed mode), Sun Microsystems Inc.
    LWJGL: 2.4.2
    OpenGL: ATI Mobility Radeon HD 5470 version 4.0.10179 Compatibility Profile Context, ATI Technologies Inc.
    
    java.lang.StringIndexOutOfBoundsException: String index out of range: 72
        at java.lang.String.charAt(Unknown Source)
        at nh.a(SourceFile:152)
        at nh.a(SourceFile:119)
        at pe.a(SourceFile:238)
        at ll.b(SourceFile:346)
        at net.minecraft.client.Minecraft.run(Minecraft.java:543)
        at java.lang.Thread.run(Unknown Source)
    --- END ERROR REPORT 34f065da ----------
    
    
    

    There are no console errors, and the bounty DOES get posted... the player just crashes in the process...

    EDIT:: I figured it out. I went back through, and started looking for unclosed strings, or extremely large ints, and i saw that i had set the location-update-period to a large number.... so its all good now :)
     
  14. Offline

    DThielke

    Not sure what you mean. You just want it to notify the hunter/target is they're within a specified range of one another?
     
  15. Offline

    Kainzo

    This is tested against 325 and works.
     
  16. Offline

    d3x

    #percent of the award value that the killed target loses
    death-penalty-percent: 25

    that goes to the person who killed him right?
     
  17. Offline

    Brad Phusion

    Well, yes. Or at least in a line of sight of each other (with a maximum range). So if someone was straight ahead by 30 meters / blocks, it would let the hunter know that the target is in sight, yet if they were behind a wall, he wouldn't get a notification.

    And maybe the same for if the target is stealth, it's harder for the target to be detected.

    Another idea or question: is there anything implemented if the target kills the hunter? Example, 'hunter looking for target, target sneaks up and kills the hunter. ' Would be pretty cool if the target could get something for evading the hunter.
     
  18. Offline

    LRFLEW

    What about Player getTarget(Player hunter) or Player[] getHunters(Player target) (along with the two you named) to allow us to see if the hunter is hunting the hunted (three hunts in a row :p).

    Do you have your source code available. If you did, I would be better able to ask for what I need.
     
  19. Offline

    GhostToast

    noobie question here but i am having a hard time comprehending the location-update-distance. The meaning of the verbage in the commented line escapes me. Can you put it into an example? I currently don't have enough players to test this out.
    Is it that I can "ping" (get coordinates) them provided they are WITHIN the specified range? Or I can ping them provided they are OUTSIDE the specified range?
    Thanks for this plugin, it is very awesome.

    edit: a thought i had.
    what if you had the option to make /locate cost something to the bounty hunter? then it's use would be a little more sacred. in a RPG sense it would be kind of like paying for information. thoughts?

    edit: another thought i had.
    in worldGuard there is a /locate function which will realign a compass to the target. i believe (i could be wrong) this will set it to the ground where the target currently is - not place a "tracking" beacon on them. this way you could arrive where someone was, instead of is (much like the current locate feature). it would be really cool if instead of doling out coordinates, your /locate feature functioned the same way - with the compass. it's a little more intuitive.
     
  20. Offline

    LRFLEW

    Scratch that. Better would be

    public boolean isTargeting(Player hunter, Player hunted)

    and would return iff hunter is hunting hunted. (iff = if and only if)
     
  21. Offline

    DThielke

    No, the money is lost. The purpose behind this is that all three players involved (bounty placer, hunter and target) have some investment in the bounty, preventing users from collaborating to game the system for easy money.

    The first idea is pretty pointless considering they can just see the overhead names in-game. If the target kills the hunter, their potential rewards are whatever the hunter was carrying (at least a diamond sword and possibly some armor) and possibly even the hunter giving up on the bounty. I don't plan on adding any official sort of reward, as it wouldn't make any sense coming from a real-world analogy.

    Player locations are only updated if the target is within X blocks of another player when the update timer ticks. The number of blocks is specified by location-update-distance. The idea behind this is that it allows a target to hide if he knows he is being pursued. However, teleporting can often screw up the fetching of player locations (issue with bukkit I haven't been able to solve for a while now), so I'm considering getting rid of this distance check entirely.

    I'll consider making the locate command optionally cost money. The compass is also an interesting an idea and is now on my list of possible features to add.

    Thanks guys and sorry for the delayed responses. It's been a busy week.
    --- merged: Feb 16, 2011 5:35 PM ---
    Oh and last but not least, LRFLEW - I'll PM you the source tonight at some point.
     
  22. Offline

    ProfessorMudkip

    I have a few questions, for clarification of how this functions
    • The money you spend accepting a contract (and other fees); does it goes to the person that created the contract, or is it just "destroyed" by going nowhere?
    • I believe you said in the previous post that the money you lose for dying with a bounty on your head is deducted from your account and isn't deposited anywhere. So, the money is destroyed rather than going back into the economy by going to someone else? Though, the economy is virtual so it doesn't really matter that it is destroyed, I am just curious how it functions.
    • In the last image in your original post, it shows who collected the bounty on who and who issued it. If the settings are set to make the bounties anonymous, does it still show that message upon completion?
    • Does the timer for bounty expiration still tick when the person the bounty is placed on is offline? Likewise, is the timer always 24 hours?
    • Is the inconvenience fee paid to the hunters by the issuer of the bounty, or generated out of nothing?
     
  23. Offline

    DThielke

    All good questions!
    1. All three fees (posting fee, accepting fee and death penalty) are essentially destroyed. The purpose of this is to prevent people from gaming the system. The only case in which there is an exception is when someone cancels a bounty they posted. In this case, their original posting fee is split amongst the current hunters as reimbursement for their time spent. These hunters are also returned their acceptance fee on top of this.
    2. Correct, the money removed as a death penalty is effectively destroyed. Again, the reasoning behind this is abuse prevention. This way, even if a targeted player decides to be clever and upon seeing the bounty, stores all his stuff in a chest and announces to the server that he is at X, Y location, he will still lose money if he is killed.
    3. Currently yes - bounties are meant to stay anonymous until they are completed.
    4. Yes, the timer still ticks when a target is offline. The timer duration can be set in the configuration to whatever the server wishes. Our server has it set to two weeks, for example.
    5. As I mentioned above, the inconvenience fee is the bounty placement fee split amongst the hunters.
     
  24. Offline

    flerndip

    I'm looking for a way to inject $ (iConomy) into the economy. This would be even better if I could automatically pay a configurable bounty for pve activity such as monster killing.
     
  25. Offline

    DThielke

    This is out of the scope of this plugin, as HeroBounty is intended purely as a PvP bounty system.

    On a less related note, our server brings iConomy currency into the economy by allowing players to sell gold ingots to bankers. (The actual system is a little more complicated and involves town banks and a server bank, but that's the basic principle it operates on.)
     
  26. Offline

    zwarmapapa

    Getting errors, is it out of date?

    Naamloos.png

    edit: Or is it because I set location-update-period: 0 ?
     
  27. Offline

    DThielke

    You can't set the update period to 0.
     
  28. Offline

    ProfessorMudkip

    Thanks for answering my questions. But, I have some more! :)

    I assume the "c" after the money is it's name. Is this configurable? And, if so, does it support multiple characters?

    Would you be able to add a toggleable feature to not show who placed the bounty after is it completed? There could be two branches of this: extra money to make a bounty anonymous, and a fee to reveal who placed it. However, I'm unsure what the reveal fee should be in relation to the anonymous fee. But, that way, it would add more roleplaying aspects. Since, it doesn't make much sense that everyone would be immediately aware of the bounty placer in a RPG setting. Of course, it being entirely and easily configurable would be nice.
     
  29. Offline

    DThielke

    Sorry for the delayed response - I've been quite sick the past few days. The "c" used to denote currency is configurable via iConomy. It does support multiple characters.

    I'll consider extending the anonymity as you described but I currently have a lot on my plate.
     
  30. i'm getting an error from your plugin that read like this:
    Code:
    [SEVERE] org.bukkit.craftbukkit.CraftServer loadPlugins
    
    SEVERE: ENTITY_DAMAGEDBY_ENTITY <is it up to date?>
    This is running CB #53 (recommended)
     
  31. Offline

    DThielke

    I need to update my damage event handling to match some changes internal to Bukkit. I will hopefully have an update done by the end of the day.
     

Share This Page