JP Manager

Last Updated: 2012.01.07
Download Link
Github Link

This script provides a base for JP implementation. JP is a currency similar to EXP that’s gained through performing actions and leveling up in addition to killing enemies. This script provides modifiers that adjust the gains for JP through rates, individual gains per skill or item, and per enemy. Though this script provides no usage of JP by itself, future Yanfly Engine Ace scripts may make use of it.

Insert this notetag in the noteboxes of actors, classes, weapons, armours, or states to gain its effects.

<jp rate: x%>

Changes the JP earned rate to x%. This affects JP earned and not JP directly gained. If this notetag isn’t used, the object will default to 100%.

Insert this notetag into the notebox of skills or items.

<jp gain: x>

When the actor successfully hits an target with this action, the actor will earn x JP. If this notetag isn’t used, the amount of JP earned will equal to the ACTION_JP constant in the module.

This notetag is for enemies:

<jp gain: x>

Changes the amount of JP gained for killing the enemy to x. If this notetag isn’t used, then the default JP gain will be equal to the amount set in the module through the constant ENEMY_KILL.

The following are script calls you may use:

$game_actors[x].earn_jp(y)
$game_actors[x].earn_jp(y, z)

This will cause actor x to earn y amount of JP. JP earned will be modified by any JP Rate traits provided through notetags. If z is used, z will be the class the JP is earned for.

$game_actors[x].gain_jp(y)
$game_actors[x].gain_jp(y, z)

This will cause actor x to gain y amount of JP. JP gained this way will not be modified by any JP Rate traits provided through notetags. If z is used, z will be the class the JP is gained for.

$game_actors[x].lose_jp(y)
$game_actors[x].lose_jp(y, z)

This will cause actor x to lose y amount of JP. JP lost this way will not be modified by any JP Rate traits provided through notetags. If z is used, z will be the class the JP is lost from.

And that’s all, folks!

93 comments on “JP Manager

  1. How can you show the JP you have at a given time, in the Learn Skill screen for example?

    I’ve checked and checked and it looks like there’s no way within the script functions. I’m not a “lunatic” user so I can’t figure out how to draw the values yet, or fit them in the Class screen…

    • By the way, I just noticed you can see your JP when you have enough for a skill. How can I make it so I can check my current class JP without having enough for any skill yet?

  2. Pingback: Ubuntu 11.10 « Imagina y Programa

  3. Pingback: Yokonet » Ubuntu 11.10

    • I have the same problem here. It seems there is this error 509 when you have 0 JP when you acces the skill learning menu. I bypassed it by script calling a +1 JP at the beginning of my game. It seems to work now….until now.

    • Not built-in to the script, but honestly, it’s SO easy to do yourself. Trust me, I’m no expert and I managed quite easily.

  4. Add

     draw_actor_jp(actor, dx, dy + line_height * 2) 

    somewhere in def draw_actor_simple_status in Ace Menu Engine.
    Or Window I guess.

  5. In my project, I want to use a skill tree for learning skills, and since there is not really a skill tree script out there yet for Ace, I did one the old fashioned event way and put in this script for points to spend for learning the skills. My only problem is that I want it to check if the player has enough JP to buy the skill. What script line should I input as condition?

  6. Is there a script you can add/ update coming, where in the amount of JP you have can be used in the conditional branch, for example, if you have x amount or greater of JP, you can, I don’t know, enter this town or something. If you don’t have x amount, you can’t enter.

    • Or can you make it compatible with Fomar script weapon level up ? He is using AP but his AP is same as your JP… so both of your script aren’t compatible.

  7. Weird.. putting that line in makes it show up not only my main menu but also my status screen. I have no clue why it’s not doing the same for you.

      • I don’t know where I’d put it before that it wasn’t working, but I tried it again and it worked as you said. >.< So now I feel dumb. XD But thank you for the help! I wouldn't have even tried it again if you hadn't said it worked for you!

  8. WARNING: I’ve found a major bug with this script.

    Whenever I change my job class using Yanfly’s class system, my JP is raised exponentially! I cannot pinpoint the cause, but I’m pretty sure it’s within the JP manager script and not any of the Class system script or its addons.

  9. I’m a script noob… But how do I do something like this:

    Go to common event shop
    Item is called (Increase JP +100) or something
    Choose a party member
    raise said party member’s JP +100

    But how do I get it to where you can choose ANY party member not just 1 of 4 using Choices? Know what I mean? Like how to select actor 5 when only actors 1-4 are currently in the active party?

    Please help. Be specific dont say “use variable duh” lol idk what that means

  10. So… left field question here but I don’t suppose that the Yanfly Job System Skill Levels from the YEZ Engine was ever remade for VXA, was it? If not, /cry!

  11. Pingback: Crystal Engine – Job Levels « Crystal Engine

  12. How i can only show the specific class skills in the learn skills menu?
    For example i change from mage to soldier how i can only see the soldier skill typ”fight” and not the mage skill type”magic”?

  13. Hi ! I’ve modified some script to show the amount of JP either in the main menu or in the class list (if you have “YEA – Class System” installed).
    Each time, it checks if “YEA – JP Manager” is installed, so you can disabled it without having issues afterwards.

    Here are the scripts :
    YEA – Class System : http://pastebin.com/KssYN68V
    YEA – Ace Menu Engine : http://pastebin.com/6NEBPRN6

    —– —– —– —– —–

    I’ll will check the strange “JP gain” when an actor change his class.

    • Ok, I think I’ve understand where it comes from :
      If you switch from a class which is lvl X to a class with is lvl Y, and Y > X, the game see there is a level up, and so gives 100*(Y-X)JP.
      I will see if I can fix this, but I can’t promise anything since my Ruby/RGSS3 knowledge is really low.

      • I see what you did there~
        You added a boolean named “class_switched” and set it to true before changing class and false right after changing class; the level_up method in JP Manager now check if @class_switched is false before adding jp.
        Somebody doesn’t want to renew their entire script for a few lines of debug though.

  14. Yeah, I’m sorry about to say that this, but are you planning to make an AP Skill System? Cuz that is one of my ideas I want for my game as of now.
    Also, can you try combine it with Victory Aftermath?

  15. I’m trying to attach to an item to be used on a player to grant them 1000 JP. Right now all I have in the items notes is .

    Now, it’s giving a character 1000 JP, but it’s only giving one specific person 1000 JP and not who I’m using the item on. I’ve tried removing them from the party, but it still gives that same person the JP instead of the target.

    Am I doing something wrong? Is there some special way to set it up?

  16. Also, does anyone know if jp rate: x% stacks? Like if the person has two pieces of equipment that both have jp rate: 105%, would it then be added together for 110% jp rate?

  17. I’m aware this has been answered before, but I still didn’t find an answer.
    I’m looking to display JP in the menu/status screen.
    And I tried using the alternative script, but that didn’t work for me.
    I tried pasting that data in the menu engine status screen and that didn’t work, unless I’m doing something wrong is there anything anyone can do to help?

      • I tried that and it didn’t work, I’m sorry. I couldn’t even open the menu, I was wondering if someone could help me;
        Laue submitted this code, I was having trouble placing it, it always crashed as soon as I open the menu.
        1 draw_actor_jp(actor, dx, dy + line_height * 2)

        Also, how do I stop it crashing when I only have 0 AP?
        Thanks

      • Hey, I’m just wondering if someone could explain to me how to use the JP in the Skill Cost Manager (I assume it has to be a custom cost, however, I do not know how to use eval function or even what it is in-order to fill out the cost requirement and cost perform sections). I would be infinitely happy to know :)

    • Here I edited the code a user above
      “Laue
      APRIL 7, 2012 @ 2:49 PM
      Add1
      draw_actor_jp(actor, dx, dy + line_height * 2)
      somewhere in def draw_actor_simple_status in Ace Menu Engine.
      Or Window I guess.”

      because when i put the code into the ace engine script the JP number was on top of the hp/mp gauges i edited it fit right underneath the Lvl bar.

      Directions:
      Main Menu JP show:
      Script Editor –> Winows—>Menu Status—>scroll down until you see this:

      #————————————————————————–
      # * Draw Item
      #————————————————————————–
      def draw_item(index)
      actor = $game_party.members[index]
      enabled = $game_party.battle_members.include?(actor)
      rect = item_rect(index)
      draw_item_background(index)
      draw_actor_face(actor, rect.x + 1, rect.y + 1, enabled)
      draw_actor_simple_status(actor, rect.x + 108, rect.y + line_height / 2)
      *** draw_actor_jp(actor, rect.x + 50, rect.y + 10 + line_height * +2.2)***
      end
      #————————————————————————

      Copy the line of code in the ***’s and place it as shown.

      draw_actor_jp(actor, rect.x + 50, rect.y + 10 + line_height * +2.2)

      Skill Menu Staus JP Show:
      Do the same as above but click on the SkillStatus section of the windows scripts

      #————————————————————————–
      # * Refresh
      #————————————————————————–
      def refresh
      contents.clear
      return unless @actor
      draw_actor_face(@actor, 0, 0)
      draw_actor_simple_status(@actor, 108, line_height / 2)
      ***draw_actor_jp(@actor, 50, line_height * 2.5)***
      end
      end

      Paste the code in the ***’s:

      draw_actor_jp(@actor, 50, line_height * 2.5)

      screenshot link: http://fc09.deviantart.net/fs71/f/2013/283/f/d/jp_show_by_zephyrlightningheart-d6pzgnh.png

  18. For those trying to show JP in the menu, add

    draw_actor_jp(actor, dx, dy + line_height * 2)

    to the Ace Core Engine script under “draw_actor_simple_status”.

    • Much appreciated. Though quick question-
      You know how to flip the JP and number around so instead of displaying as “100 JP”, it’ll display it as “JP 100”?

  19. I’ll say the same thing a few other people said-
    You really need a way to see your current JP.
    Seriously, it’s kind of frustrating not being able to see it.

  20. Seconding Demon Moose God here.
    I’ve tried every solution given, is there a way to display JP?
    Everything tried above for me hasn’t worked.
    Thank you.

  21. Hey, so how would I going about having it check how much JP the actor has and not allowing it to give the skill or take the JP if the actor doesn’t?
    Basically I am wanting JP to be a skill cost. The party walks up to the person and it asks “Do you want to learn this skill for 80 JP?” then choices Yes or No. If Yes I want it to go into another branch: If the actor has 80 JP or more it gives the skill and takes out 80 JP. If they have 79 or less JP how do I make it not take the JP and not give the skill? (and then put in a message saying like “You don’t have enough JP for this skill!” or something)

  22. Hey, I was wondering what applications were available for JP, besides the Learn Skill Engine. I really like JP, but I’m not sure how to incorporate it into my game.

    Firstly, I was wondering if there was a way to do a shop where you spend JP.

    I was also wondering if there was a way to use JP to level up equipment. I saw an “Equipment Level Up” script by Fomar0153 elsewhere on the internets, but I don’t think it works with JP, and I was hoping there was an easier way. Probably not, but I thought I’d ask. My game requires equipping multiple accessories (Cards) and I’ve been trying to figure out a good way to upgrade an individual piece of equipment.

    Anyways, another great script. Thanks.

  23. Any clue as to why when I use an item that increases an actor’s TP it adds to and also increases my JP? I keep getting this problem. I didn’t alter the script or anything so I have no idea why it’d do this. If anyone knows why it’d mean a lot.

  24. Anyone now how to set it so that it doesn’t mention JP gain at the end of battle? I am only granting JP on level up, so I don’t need the message there after every battle.

  25. Soulreaper’s scripts do work, but not with all of yanflys scripts. It says something about a stack and won’t play. I used ZephyrLightningheart’s method and now can display Jp, but switching primary still add jp. How to fix?

  26. For some reason, when I attack something, without any rates set, it tells me that nil cannot be coerced into a float in line 402. I tried checking the script, but couldn’t find anything wrong. Please help!

  27. Is there’s a way you can make this script work with Kread-EX’s Actor Inventory? I really would love both of these, but both can’t work together.

  28. Yanfly, I’ve written an add-on to display the JP on screen. Would you like it so you can link to it? It requires this and the ACE Menu engine to work properly.

  29. I´ve a problem. When I press “Learn Skill” ingame, the game crashes and the following message appears:

    ” Script ‘JP Manager’ line 438: NoMethodError ocurred.
    undefined method `[]´ for nil:NilClass ”

    It worked perfectly the one day, but today it says this error. So, what should I do now?

  30. Can I change the name of JP. I am guess it means Job points but I want to change it so something like SP(Skill Points) is this possible? and how would I go about doing that if possible.

    • James i was able to modify my own with the following changes to the one sceen showing in the main system menu . I made some minor adjustments to the width (dw) for it to display properly for my screen. This is at the end of the JP manager script.

      def draw_actor_jp(actor, dx, dy, dw = 112)
      draw_icon(Icon.jp, dx + dw – 24, dy) if Icon.jp > 0
      dw -= 24 if Icon.jp > 0

      change_color(normal_color)
      draw_text(dx, dy, dw, line_height, actor.jp.group, 2)
      dw -= text_size(actor.jp.group).width
      dw -= 4
      change_color(system_color)
      draw_text(dx, dy, dw, line_height, Vocab::jp, 2)

      end

  31. Found a way to display your current JP on the Menu and Status Windows. Just use the following snippet, It will display just above your HP.

    class Window_Base < Window
    #————————————————————————–
    # * Draw Simple Status
    #————————————————————————–
    def draw_actor_simple_status(actor, x, y)
    draw_actor_name(actor, x, y + 25)
    draw_actor_level(actor, x, y + line_height * 1)
    draw_actor_icons(actor, x, y + line_height * 2)
    draw_actor_class(actor, x + 120, y)
    draw_actor_hp(actor, x + 120, y + line_height * 1)
    draw_actor_mp(actor, x + 120, y + line_height * 2)
    draw_actor_jp(actor, x + 140, y + line_height * -0.5)
    end
    end

  32. So, is there any script that allows subclasses to gain JP as well? I know of Ebonflame’s, but it’s kind of a mess. Are there any others?

  33. Is there possibly a way to have characters gain JP equal a an in-game variable using an event? I’ve been trying to do something like that with one of my games be haven’t figured out how yet.

  34. Hey guys, i was wondering if there is a way to make subclasses gain JP and use their own JP to learn subclass skills?

Leave a comment