Perfect Stat Point Distribution System

Script Information:
====================
This script is a highly dynamic & customisable stat point distribution system,
it not only provides you with a way to distribute stats, it actually gives you
new stats as well, vit/str/dex and mag are now the proud parents of all other
stats. And they are far superior…

Set which stats increase, how much it costs, does one stat make another stat go
down? is the luck gain for your characters going to be completely random ?

maybe you want to continue to gain params via the param curves in the database,
but you wish you could give your characters just that little bit more flexablity?

NOW YOU CAN DECIDE.

Dont want that much control? thats fine set the system to be as random as
you like.

It is HIGHLY advised you take a moment to look through the cusomisation options
to see if any apply to your current project. (they also change regularly)
FEATURES:
==========
– New Parent Stats that give you COMPLETE control over ALL other stats

– Use your new stats in skill formula’s and even conditional branches

– OVER 170 customisation options, NOT including random gain feature(another 100+)

– Plug and Play ?Β  YES !

SCRIPT LINK
THIS SCRIPT NOW REQUIRES THIS CORE SCRIPT

 

NOTE::

This script is very old, i recently wrote a new distribution system with MANY MANY more features than this one…

Here is the Link !!

Advertisements

80 responses

  1. Is there a syntax for checking a stat in a script call? Something along the lines of $game_actors[0].dpb.dpbzparams[0] (Only that one doesn’t work)

    September 15, 2012 at 10:28

    • Also, a small bug report. When you add a trait to an actor, class, or piece of equipment, which would add a percentage modifier to a base attribute(atk/def/etc.) It adds points to the stats in your system automatically.

      September 16, 2012 at 07:24

    • $game_actors[x].vit == ??
      $game_party.members[x].mag == ??

      both methods can use vit,str,dex and mag replace x with actor id or party member id (first party member id is 0) replace ?? with your number

      e.g
      $game_party.members[0].str == 30
      This means the conditional branch will check party member 0 (0 is the first actor in the party, 1 is the second and so on) has str equal to 30, you can also use
      .str = 30 (over 30 or equal to)

      September 17, 2012 at 14:15

  2. do you mean when you notetag a peice of equipment with lets say it increases everything
    under the vit option? because if so i made it like that πŸ™‚
    so that vit acts more like a parent stat towards all of option ones parameter gains πŸ™‚

    September 17, 2012 at 14:16

  3. 1. Thanks for the syntax. 2. I mean if I give a weapon the ‘feature’ ‘Parameter [ATK] * 110%’ it will then cause the weapon to automatically have a +1 to dex. Is that by design?

    September 17, 2012 at 17:45

    • no it isnt supposed to do that, ill look into it and see if i can figure it out, thanks for pointing that out to me πŸ™‚

      September 18, 2012 at 11:33

  4. Sven-Arild Ims (Valthonis)

    Hi, I have a small request to make, and if you do not have the time (or want) to do it, then I completely understand, as I’ve already gained alot by finding your script (free to use non the less!).

    The thing is, I am horrible with scripts, (as in I really cant code worth a dime..) But thats were great people like you come in, and make scripts that can be used as is, or tweaked to fit in the game the user is making.

    I’m trying to find a way to check if the whole party (preferably)

    have 0 < nr of statpoints.

    Simply to be able to create a "trainer" NPC, that will say something along the lines of
    "You have potential, I will train you." if the party has unspent points,
    or "I cannot train you yet" if they have no points left.

    Or to be able to use it in a switch to trigger it in the custom menu I am using (it can show or not show items depending on the status of a switch). (by running a parralel common event that checks the statpoints and turns ON/OFF the switch. This method would be the best, since I can just check the switch for any trainers I'd make, to avoid having to event each and every one of them.

    I've been looking at your script for a while now, and I cant seem to find what I am looking for (though it must be in there, since the script checks the same thing to display unspent points)

    Remember, I am horrible at scripting, so as simple as possible please.

    September 17, 2012 at 18:10

    • Script is only free to use in non-commercial ^_^.

      this script provides many new “stats” such as vit,str,dex,mag. those can be used in skill formulas and conditional branches,
      there are also “kind-of-stats” such as level up points, attribute points, and spirit points ( a feature for future upgrades), for what you are asking

      $game_party.members[x].level_up_pts == ??
      $game_actors.[x].level_up_pts == ??

      (used in “script” option in conditional branches) would return the value of actors level up points
      e.g
      $game_actors[1].level_up_pts == 0 # This would check if actor id 1 has level up points equal to 0

      however i do realise this isnt what your asking me, what you need is a call to check if ANY actor (in the party) has these points, is that right ?
      if so, i would have to do a script call to pull the highest value of all the actors level up points and if any have points above “0”
      im just confirming this is what your asking before i go about implementing it :p

      September 18, 2012 at 11:46

      • Sven-Arild Ims (Valthonis)

        Hi!
        Yes, my game is totaly non-commercial!
        (nobody would pay for the game I’m working on anyways ;).

        I sent you an email (to your Gmail account) btw, if you would rather reply there. I also included a bug (or maybe incompatability) in the “Perfect Status Screen” script (it returns an error when scrolling past the page that lists MaxHp,Hit chance, etc..

        BUT

        Thank you for the two bits of code, they work awesomely if you only want to check a single character (as you said).

        But you are correct, I am after a way to check if -any- of the actors in the party has skill points above 0 and put the result in a user defined variable.

        Since making menu triggers or events is then as easy a a conditional branch with
        – if “variable” >0 then – to hide\show\enable the common event that launches the level up screen (SceneManager.call(Scene_Level_Up)

        Thank you so much for replying πŸ™‚

        Cheers!

        September 18, 2012 at 20:16

  5. Any plans to make it so you can switch between characters on the level up screen? It works fine as is, it’d just add a bit more comfortable of a feel. Just an idea. ^^ P.S. I love the script and you’re awesome for making it. πŸ™‚

    September 18, 2012 at 19:04

    • Sven-Arild Ims (Valthonis)

      You already can? (Default keys Q and W (left,right scroll). At least I can πŸ˜›

      September 18, 2012 at 20:00

      • You’re absolutely right. I thought I had tried that already. My mistake.

        September 19, 2012 at 00:52

  6. ^_^ i was going to remove that as well, but i kept it πŸ™‚ and ill get to work on trying to check for an average party points amount (maybe sometime next week before i release another update)

    also @hamsterpirateninja’s i checked that out and your are completely right, it seems to increase vit/str/dex and magic when your increase MaxHP,MaxMP,ATK and DEF %’s on your weapons (increases by 1 vit for every 100% MaxHP) i also h ave absolutly no fuckin idea why, i advise not using those kind of features on your weapons unlesss you really have to until i can figure out a fix for it ^_^

    September 19, 2012 at 14:51

    • Sven-Arild Ims (Valthonis)

      Great! You are the best!

      September 19, 2012 at 15:06

      • ofc i am ^_^

        September 19, 2012 at 15:30

    • It actually does it if you use the feature on anything. I tested with actor, weapon, and class. Might wanna double check though. I tend to make small mistakes. I’m pretty sure this is true though. :s An easy temporary fix is to give the weapon a -(number) to the stat, and I can do that, I just figured you’d like to know about the bug. πŸ™‚

      September 19, 2012 at 22:14

      • bug has been squashed ^_^ if you update to v 1.9 there should be no problems

        September 20, 2012 at 15:01

  7. @ Sven-Arild Ims (Valthonis),

    #======================#
    class Game_Interpreter # in the script option for conditional branches
    #======================# simply put “check_party_points” to check for lvl up pts
    def check_party_points
    if $game_party.members.size == 1
    return true if #returns true if
    $game_party.members[0].level_up_pts == 0
    return false # return false if above condition is not met
    elsif $game_party.members.size == 2
    return true if #returns true if
    $game_party.members[0].level_up_pts == 0 &&
    $game_party.members[1].level_up_pts == 0
    return false # return false if above condition is not met
    elsif $game_party.members.size == 3
    return true if #returns true if
    $game_party.members[0].level_up_pts == 0 &&
    $game_party.members[1].level_up_pts == 0 &&
    $game_party.members[2].level_up_pts == 0
    return false # return false if above condition is not met
    elsif $game_party.members.size == 4
    return true if #returns true if
    $game_party.members[0].level_up_pts == 0 &&
    $game_party.members[1].level_up_pts == 0 &&
    $game_party.members[2].level_up_pts == 0 &&
    $game_party.members[3].level_up_pts == 0
    return false # return false if above condition is not met
    else
    # If no condition is met…
    return false
    end
    end

    end # class Game_Interpreter

    pop that into a script page under the stat point script, then use “check_party_points” in the script option of your conditional branch, you probably have to customize it slightly to suit your exact needs, but theres the base for what you want ^^

    September 21, 2012 at 11:23

    • Sven-Arild Ims (Valthonis)

      Thank you so much! I only had to change one thing to make it work perfrectly,
      namely == 0 to > 0.

      I did not have the time to check back here before now, sorry about that.
      (and I never got a mail bump from the site subscription, guess that only works for new articles..).

      If I ever make a party larger than 4 I would simply have to do this right? :

      elsif $game_party.members.size == 6
      return true if #returns true if
      $game_party.members[0].level_up_pts == 0 &&
      $game_party.members[1].level_up_pts == 0 &&
      $game_party.members[2].level_up_pts == 0 &&
      $game_party.members[3].level_up_pts == 0 &&
      $game_party.members[4].level_up_pts == 0 &&
      $game_party.members[5].level_up_pts == 0
      return false # return false if above condition is not met
      else

      Again, thank you so much!
      -Valthonis

      September 25, 2012 at 14:12

      • Sven-Arild Ims (Valthonis)

        Woophs! I was a little quick there, I also had to change one more bit, took me a bit to figure it out (since I suck at reading code). the “problem” was that the script call returned false even if one or more actors has above 0 points (>0), they -all- had to have >0 points for it to return true.

        After some headscratching and attempts at logical thinking, I figured that the culprit was the “&&” after each actor, so I deleted them! (and promptly got an error for my trouble).

        So I went back in and figured that if this code follows the “if and or then” formula, that the “&&” needed to be replaced not removed, so I hazzard a guess, and put in “or”.

        And that did it, so all I had to do was to change it to look like this :

        #======================#
        class Game_Interpreter # in the script option for conditional branches
        #======================# simply put β€œcheck_party_points” to check for lvl up pts
        def check_party_points
        if $game_party.members.size == 1
        return true if #returns true if
        $game_party.members[0].level_up_pts > 0
        return false # return false if above condition is not met
        elsif $game_party.members.size == 2
        return true if #returns true if
        $game_party.members[0].level_up_pts > 0 or
        $game_party.members[1].level_up_pts > 0
        return false # return false if above condition is not met
        elsif $game_party.members.size == 3
        return true if #returns true if
        $game_party.members[0].level_up_pts > 0 or
        $game_party.members[1].level_up_pts > 0 or
        $game_party.members[2].level_up_pts > 0
        return false # return false if above condition is not met
        elsif $game_party.members.size == 4
        return true if #returns true if
        $game_party.members[0].level_up_pts > 0 or
        $game_party.members[1].level_up_pts > 0 or
        $game_party.members[2].level_up_pts > 0 or
        $game_party.members[3].level_up_pts > 0
        return false # return false if above condition is not met
        else
        # If no condition is met…
        return false
        end
        end

        end # class Game_Interpreter

        Like you said, a solid base for what I needed to do. Thank you !

        I even learned something from this πŸ™‚

        Cheers!

        September 25, 2012 at 14:27

  8. lol no problem, i knew it wouldnt be exact what you needed but i felt i put enough instruction in it for almost anyone to be able to change it to suit their needs and yes if you have more than a 4 person party just increase the code and change the numbers :p

    and the && /or was my fault. i apologise, i was testing the code and making itreturn false unless all actors had points (i had an event level the whole party 1 time) therefor all party memebers had points while i was testing it πŸ™‚ as long as it works now is the main thing though πŸ™‚

    September 25, 2012 at 15:15

  9. This script allows me to level up stadistics? i mean you have 4 stats to level up but i want have 5 is it possible ( i hope you can understandme DX)
    something like digital devil saga stats

    October 9, 2012 at 22:46

    • Oh! and one more thing… this script affects Extra Param Formulas by yanfly?

      October 9, 2012 at 22:49

  10. unfortunately only 4 stats is possible, it would take a LOT of code to make another stat but i dont really think there is much need for another stat.

    yes the script will work with yanflys extra param formulas script, there really isnt much need for it, but it will work ^_^

    i hope this answered your question(s)

    October 10, 2012 at 12:43

  11. Hi there, I seem to have an issue here, I’m using CP’s Battle Engine(http://forums.rpgmakerweb.com/index.php?/topic/4811-cps-battle-engine/) and when paired with this script (I only have those two in the project) I get a System Error and says the stack is too deep. I take away CP’s battle system and it’s fine -_-

    Is there a way to remedy this?

    October 14, 2012 at 04:50

    • No wait, I figured it out don’t worry… God that was stupid what I did…

      October 14, 2012 at 04:56

  12. I wanna ask, how do you enable access to the PSD screen from the main menu? I can only seem to access it when I level up.

    October 14, 2012 at 06:02

    • you can access it in the status screen (my status screen) by pressing enter on the relevant screen

      October 15, 2012 at 14:24

  13. SirCumferance

    [IMG]http://i75.photobucket.com/albums/i304/Rune-Mage/Error_zps1da1b0df.jpg[/IMG]
    This error I am not sure if it is common or not. If I press enter it takes me to a point distribution screen, but otherwise, it looks like this

    October 23, 2012 at 23:43

    • I’m about 90% sure that comes from a script conflict, try disabling yanflys status screen script and try again. πŸ™‚

      October 25, 2012 at 17:46

      • my stat distribution isnt compatable with yanflys status screen ? or is it my status screen that has the issue ?

        October 26, 2012 at 10:47

      • SirCumferance

        Ah, I thought it would say something else is all, if that is what it is supposed to be like, then yea, all good. Love it man, its good stuff

        January 11, 2013 at 12:53

  14. it should not look like that lol
    no one ever had that issue before(that i know of)
    what version of the scripts are you using ?

    October 24, 2012 at 13:19

  15. hey i’m trying to make a event that resets the character’s points and puts them all back into spendable lvl up points. i’ve found that adding a negative number to try and take away causes the game to freeze. while i was originally calling up variables to decrease, i ended up just trying a simple inc_vit(1, -1) and it still kept freezing the screen.

    i also tried installing it on a clean game, and there were still errors so i can rule out cross-script incompatibility. i’m using the newest version of your script. if there’s anything else you need, let me know, but i managed to get the bug working ‘perfectly’ just by putting that script at the beginning of any event.

    thanks! πŸ™‚

    November 4, 2012 at 22:39

  16. this hasnt ever happened before (that i know of) if you could send me a copy of your project to have a better look at, as when i reduce points i get no error, also i have noticed depending on your computers power the FPS will drop slightly because of the sheer amount of information being passed through the methods and then onto the actors, so maybe that could be it ?

    November 5, 2012 at 15:19

    • I don’t think so, the game stops moving completely. I’ll make a new project to recreate the error without my +5000 extra scripts getting in the way.

      https://www.dropbox.com/s/w2ouhx7qdwqrztq/PstatErrors.exe

      if you run the game, level up, then talk to the girl on the right you should be able to duplicate the error

      Long version = my complicated and awkward script to reset all the values
      Short version = quick call of “inc_vit(1, -1)”

      November 7, 2012 at 20:23

  17. gimme 10 minutes or so and il see what i can do ^_^

    November 7, 2012 at 20:31

  18. # $game_actors[ACTOR_ID].reduce_vit(VALUE)
    # $game_actors[ACTOR_ID].reduce_str(VALUE)
    # $game_actors[ACTOR_ID].reduce_dex(VALUE)
    # $game_actors[ACTOR_ID].reduce_mag(VALUE)
    #==============================================================================
    class Game_Actor < Game_Battler
    #==============================================================================

    def reduce_vit(value)
    value.times {||
    add_param(0, -(DPB::PSPDS::OPTION_1_MaxHP_GAIN + dpbz_randy(DPB::PSPDS::OP_1_MaxHP_RAND_MIN, DPB::PSPDS::OP_1_MaxHP_RAND_MAX)))
    add_param(1, -(DPB::PSPDS::OPTION_1_MaxMP_GAIN + dpbz_randy(DPB::PSPDS::OP_1_MaxMP_RAND_MIN, DPB::PSPDS::OP_1_MaxMP_RAND_MAX)))
    add_param(2, -(DPB::PSPDS::OPTION_1_ATK_GAIN + dpbz_randy(DPB::PSPDS::OP_1_ATK_RAND_MIN, DPB::PSPDS::OP_1_ATK_RAND_MAX)))
    add_param(3, -(DPB::PSPDS::OPTION_1_DEF_GAIN + dpbz_randy(DPB::PSPDS::OP_1_DEF_RAND_MIN, DPB::PSPDS::OP_1_DEF_RAND_MAX)))
    add_param(4, -(DPB::PSPDS::OPTION_1_MAT_GAIN + dpbz_randy(DPB::PSPDS::OP_1_MAT_RAND_MIN, DPB::PSPDS::OP_1_MAT_RAND_MAX)))
    add_param(5, -(DPB::PSPDS::OPTION_1_MDF_GAIN + dpbz_randy(DPB::PSPDS::OP_1_MDF_RAND_MIN, DPB::PSPDS::OP_1_MDF_RAND_MAX)))
    add_param(6, -(DPB::PSPDS::OPTION_1_AGI_GAIN + dpbz_randy(DPB::PSPDS::OP_1_AGI_RAND_MIN, DPB::PSPDS::OP_1_AGI_RAND_MAX)))
    add_param(7, -(DPB::PSPDS::OPTION_1_LUK_GAIN + dpbz_randy(DPB::PSPDS::OP_1_LUK_RAND_MIN, DPB::PSPDS::OP_1_LUK_RAND_MAX)))
    #x's
    add_xparam(0, -(DPB::PSPDS::OPTION_1_HIT_GAIN + dpbz_randy(DPB::PSPDS::OP_1_HIT_RAND_MIN, DPB::PSPDS::OP_1_HIT_RAND_MAX)))
    add_xparam(1, -(DPB::PSPDS::OPTION_1_EVA_GAIN + dpbz_randy(DPB::PSPDS::OP_1_EVA_RAND_MIN, DPB::PSPDS::OP_1_EVA_RAND_MAX)))
    add_xparam(2, -(DPB::PSPDS::OPTION_1_CRI_GAIN + dpbz_randy(DPB::PSPDS::OP_1_CRI_RAND_MIN, DPB::PSPDS::OP_1_CRI_RAND_MAX)))
    add_xparam(3, -(DPB::PSPDS::OPTION_1_CEV_GAIN + dpbz_randy(DPB::PSPDS::OP_1_CEV_RAND_MIN, DPB::PSPDS::OP_1_CEV_RAND_MAX)))
    add_xparam(4, -(DPB::PSPDS::OPTION_1_MEV_GAIN + dpbz_randy(DPB::PSPDS::OP_1_MEV_RAND_MIN, DPB::PSPDS::OP_1_MEV_RAND_MAX)))
    add_xparam(5, -(DPB::PSPDS::OPTION_1_MRF_GAIN + dpbz_randy(DPB::PSPDS::OP_1_MRF_RAND_MIN, DPB::PSPDS::OP_1_MRF_RAND_MAX)))
    add_xparam(6, -(DPB::PSPDS::OPTION_1_CNT_GAIN + dpbz_randy(DPB::PSPDS::OP_1_CNT_RAND_MIN, DPB::PSPDS::OP_1_CNT_RAND_MAX)))
    add_xparam(7, -(DPB::PSPDS::OPTION_1_HRG_GAIN + dpbz_randy(DPB::PSPDS::OP_1_HRG_RAND_MIN, DPB::PSPDS::OP_1_HRG_RAND_MAX)))
    add_xparam(8, -(DPB::PSPDS::OPTION_1_MRG_GAIN + dpbz_randy(DPB::PSPDS::OP_1_MRG_RAND_MIN, DPB::PSPDS::OP_1_MRG_RAND_MAX)))
    add_xparam(9, -(DPB::PSPDS::OPTION_1_TRG_GAIN + dpbz_randy(DPB::PSPDS::OP_1_TRG_RAND_MIN, DPB::PSPDS::OP_1_TRG_RAND_MAX)))
    #s's
    add_sparam(0, -(DPB::PSPDS::OPTION_1_TGR_GAIN + dpbz_randy(DPB::PSPDS::OP_1_TGR_RAND_MIN, DPB::PSPDS::OP_1_TGR_RAND_MAX)))
    add_sparam(1, -(DPB::PSPDS::OPTION_1_GRD_GAIN + dpbz_randy(DPB::PSPDS::OP_1_GRD_RAND_MIN, DPB::PSPDS::OP_1_GRD_RAND_MAX)))
    add_sparam(2, -(DPB::PSPDS::OPTION_1_REC_GAIN + dpbz_randy(DPB::PSPDS::OP_1_REC_RAND_MIN, DPB::PSPDS::OP_1_REC_RAND_MAX)))
    add_sparam(3, -(DPB::PSPDS::OPTION_1_PHA_GAIN + dpbz_randy(DPB::PSPDS::OP_1_PHA_RAND_MIN, DPB::PSPDS::OP_1_PHA_RAND_MAX)))
    add_sparam(4, -(DPB::PSPDS::OPTION_1_MCR_GAIN + dpbz_randy(DPB::PSPDS::OP_1_MCR_RAND_MIN, DPB::PSPDS::OP_1_MCR_RAND_MAX)))
    add_sparam(5, -(DPB::PSPDS::OPTION_1_TCR_GAIN + dpbz_randy(DPB::PSPDS::OP_1_TCR_RAND_MIN, DPB::PSPDS::OP_1_TCR_RAND_MAX)))
    add_sparam(6, -(DPB::PSPDS::OPTION_1_PDR_GAIN + dpbz_randy(DPB::PSPDS::OP_1_PDR_RAND_MIN, DPB::PSPDS::OP_1_PDR_RAND_MAX)))
    add_sparam(7, -(DPB::PSPDS::OPTION_1_MDR_GAIN + dpbz_randy(DPB::PSPDS::OP_1_MDR_RAND_MIN, DPB::PSPDS::OP_1_MDR_RAND_MAX)))
    add_sparam(8, -(DPB::PSPDS::OPTION_1_FDR_GAIN + dpbz_randy(DPB::PSPDS::OP_1_FDR_RAND_MIN, DPB::PSPDS::OP_1_FDR_RAND_MAX)))
    add_sparam(9, -(DPB::PSPDS::OPTION_1_EXR_GAIN + dpbz_randy(DPB::PSPDS::OP_1_EXR_RAND_MIN, DPB::PSPDS::OP_1_EXR_RAND_MAX)))
    #dpbz'
    add_dpbzparam(0, -(1))
    }
    end

    def reduce_str(value)
    value.times{||
    #reg's
    add_param(0, -(DPB::PSPDS::OPTION_2_MaxHP_GAIN + dpbz_randy(DPB::PSPDS::OP_1_MaxHP_RAND_MIN, DPB::PSPDS::OP_1_MaxHP_RAND_MAX)))
    add_param(1, -(DPB::PSPDS::OPTION_2_MaxMP_GAIN + dpbz_randy(DPB::PSPDS::OP_1_MaxMP_RAND_MIN, DPB::PSPDS::OP_1_MaxMP_RAND_MAX)))
    add_param(2, -(DPB::PSPDS::OPTION_2_ATK_GAIN + dpbz_randy(DPB::PSPDS::OP_1_ATK_RAND_MIN, DPB::PSPDS::OP_1_ATK_RAND_MAX)))
    add_param(3, -(DPB::PSPDS::OPTION_2_DEF_GAIN + dpbz_randy(DPB::PSPDS::OP_1_DEF_RAND_MIN, DPB::PSPDS::OP_1_DEF_RAND_MAX)))
    add_param(4, -(DPB::PSPDS::OPTION_2_MAT_GAIN + dpbz_randy(DPB::PSPDS::OP_1_MAT_RAND_MIN, DPB::PSPDS::OP_1_MAT_RAND_MAX)))
    add_param(5, -(DPB::PSPDS::OPTION_2_MDF_GAIN + dpbz_randy(DPB::PSPDS::OP_1_MDF_RAND_MIN, DPB::PSPDS::OP_1_MDF_RAND_MAX)))
    add_param(6, -(DPB::PSPDS::OPTION_2_AGI_GAIN + dpbz_randy(DPB::PSPDS::OP_1_AGI_RAND_MIN, DPB::PSPDS::OP_1_AGI_RAND_MAX)))
    add_param(7, -(DPB::PSPDS::OPTION_2_LUK_GAIN + dpbz_randy(DPB::PSPDS::OP_1_LUK_RAND_MIN, DPB::PSPDS::OP_1_LUK_RAND_MAX)))
    #x's
    add_xparam(0, -(DPB::PSPDS::OPTION_2_HIT_GAIN + dpbz_randy(DPB::PSPDS::OP_1_HIT_RAND_MIN, DPB::PSPDS::OP_1_HIT_RAND_MAX)))
    add_xparam(1, -(DPB::PSPDS::OPTION_2_EVA_GAIN + dpbz_randy(DPB::PSPDS::OP_1_EVA_RAND_MIN, DPB::PSPDS::OP_1_EVA_RAND_MAX)))
    add_xparam(2, -(DPB::PSPDS::OPTION_2_CRI_GAIN + dpbz_randy(DPB::PSPDS::OP_1_CRI_RAND_MIN, DPB::PSPDS::OP_1_CRI_RAND_MAX)))
    add_xparam(3, -(DPB::PSPDS::OPTION_2_CEV_GAIN + dpbz_randy(DPB::PSPDS::OP_1_CEV_RAND_MIN, DPB::PSPDS::OP_1_CEV_RAND_MAX)))
    add_xparam(4, -(DPB::PSPDS::OPTION_2_MEV_GAIN + dpbz_randy(DPB::PSPDS::OP_1_MEV_RAND_MIN, DPB::PSPDS::OP_1_MEV_RAND_MAX)))
    add_xparam(5, -(DPB::PSPDS::OPTION_2_MRF_GAIN + dpbz_randy(DPB::PSPDS::OP_1_MRF_RAND_MIN, DPB::PSPDS::OP_1_MRF_RAND_MAX)))
    add_xparam(6, -(DPB::PSPDS::OPTION_2_CNT_GAIN + dpbz_randy(DPB::PSPDS::OP_1_CNT_RAND_MIN, DPB::PSPDS::OP_1_CNT_RAND_MAX)))
    add_xparam(7, -(DPB::PSPDS::OPTION_2_HRG_GAIN + dpbz_randy(DPB::PSPDS::OP_1_HRG_RAND_MIN, DPB::PSPDS::OP_1_HRG_RAND_MAX)))
    add_xparam(8, -(DPB::PSPDS::OPTION_2_MRG_GAIN + dpbz_randy(DPB::PSPDS::OP_1_MRG_RAND_MIN, DPB::PSPDS::OP_1_MRG_RAND_MAX)))
    add_xparam(9, -(DPB::PSPDS::OPTION_2_TRG_GAIN + dpbz_randy(DPB::PSPDS::OP_1_TRG_RAND_MIN, DPB::PSPDS::OP_1_TRG_RAND_MAX)))
    #s's
    add_sparam(0, -(DPB::PSPDS::OPTION_2_TGR_GAIN + dpbz_randy(DPB::PSPDS::OP_2_TGR_RAND_MIN, DPB::PSPDS::OP_2_TGR_RAND_MAX)))
    add_sparam(1, -(DPB::PSPDS::OPTION_2_GRD_GAIN + dpbz_randy(DPB::PSPDS::OP_2_GRD_RAND_MIN, DPB::PSPDS::OP_2_GRD_RAND_MAX)))
    add_sparam(2, -(DPB::PSPDS::OPTION_2_REC_GAIN + dpbz_randy(DPB::PSPDS::OP_2_REC_RAND_MIN, DPB::PSPDS::OP_2_REC_RAND_MAX)))
    add_sparam(3, -(DPB::PSPDS::OPTION_2_PHA_GAIN + dpbz_randy(DPB::PSPDS::OP_2_PHA_RAND_MIN, DPB::PSPDS::OP_2_PHA_RAND_MAX)))
    add_sparam(4, -(DPB::PSPDS::OPTION_2_MCR_GAIN + dpbz_randy(DPB::PSPDS::OP_2_MCR_RAND_MIN, DPB::PSPDS::OP_2_MCR_RAND_MAX)))
    add_sparam(5, -(DPB::PSPDS::OPTION_2_TCR_GAIN + dpbz_randy(DPB::PSPDS::OP_2_TCR_RAND_MIN, DPB::PSPDS::OP_2_TCR_RAND_MAX)))
    add_sparam(6, -(DPB::PSPDS::OPTION_2_PDR_GAIN + dpbz_randy(DPB::PSPDS::OP_2_PDR_RAND_MIN, DPB::PSPDS::OP_2_PDR_RAND_MAX)))
    add_sparam(7, -(DPB::PSPDS::OPTION_2_MDR_GAIN + dpbz_randy(DPB::PSPDS::OP_2_MDR_RAND_MIN, DPB::PSPDS::OP_2_MDR_RAND_MAX)))
    add_sparam(8, -(DPB::PSPDS::OPTION_2_FDR_GAIN + dpbz_randy(DPB::PSPDS::OP_2_FDR_RAND_MIN, DPB::PSPDS::OP_2_FDR_RAND_MAX)))
    add_sparam(9, -(DPB::PSPDS::OPTION_2_EXR_GAIN + dpbz_randy(DPB::PSPDS::OP_2_EXR_RAND_MIN, DPB::PSPDS::OP_2_EXR_RAND_MAX)))
    #dpbz'
    add_dpbzparam(1, -(1))
    }
    end

    def reduce_dex(value)
    value.times{||
    #reg's
    add_param(0, -(DPB::PSPDS::OPTION_3_MaxHP_GAIN + dpbz_randy(DPB::PSPDS::OP_3_MaxHP_RAND_MIN, DPB::PSPDS::OP_1_MaxHP_RAND_MAX)))
    add_param(1, -(DPB::PSPDS::OPTION_3_MaxMP_GAIN + dpbz_randy(DPB::PSPDS::OP_3_MaxMP_RAND_MIN, DPB::PSPDS::OP_1_MaxMP_RAND_MAX)))
    add_param(2, -(DPB::PSPDS::OPTION_3_ATK_GAIN + dpbz_randy(DPB::PSPDS::OP_3_ATK_RAND_MIN, DPB::PSPDS::OP_3_ATK_RAND_MAX)))
    add_param(3, -(DPB::PSPDS::OPTION_3_DEF_GAIN + dpbz_randy(DPB::PSPDS::OP_3_DEF_RAND_MIN, DPB::PSPDS::OP_3_DEF_RAND_MAX)))
    add_param(4, -(DPB::PSPDS::OPTION_3_MAT_GAIN + dpbz_randy(DPB::PSPDS::OP_3_MAT_RAND_MIN, DPB::PSPDS::OP_3_MAT_RAND_MAX)))
    add_param(5, -(DPB::PSPDS::OPTION_3_MDF_GAIN + dpbz_randy(DPB::PSPDS::OP_3_MDF_RAND_MIN, DPB::PSPDS::OP_3_MDF_RAND_MAX)))
    add_param(6, -(DPB::PSPDS::OPTION_3_AGI_GAIN + dpbz_randy(DPB::PSPDS::OP_3_AGI_RAND_MIN, DPB::PSPDS::OP_3_AGI_RAND_MAX)))
    add_param(7, -(DPB::PSPDS::OPTION_3_LUK_GAIN + dpbz_randy(DPB::PSPDS::OP_3_LUK_RAND_MIN, DPB::PSPDS::OP_3_LUK_RAND_MAX)))
    #x's
    add_xparam(0, -(DPB::PSPDS::OPTION_3_HIT_GAIN + dpbz_randy(DPB::PSPDS::OP_3_HIT_RAND_MIN, DPB::PSPDS::OP_3_HIT_RAND_MAX)))
    add_xparam(1, -(DPB::PSPDS::OPTION_3_EVA_GAIN + dpbz_randy(DPB::PSPDS::OP_3_EVA_RAND_MIN, DPB::PSPDS::OP_3_EVA_RAND_MAX)))
    add_xparam(2, -(DPB::PSPDS::OPTION_3_CRI_GAIN + dpbz_randy(DPB::PSPDS::OP_3_CRI_RAND_MIN, DPB::PSPDS::OP_3_CRI_RAND_MAX)))
    add_xparam(3, -(DPB::PSPDS::OPTION_3_CEV_GAIN + dpbz_randy(DPB::PSPDS::OP_3_CEV_RAND_MIN, DPB::PSPDS::OP_3_CEV_RAND_MAX)))
    add_xparam(4, -(DPB::PSPDS::OPTION_3_MEV_GAIN + dpbz_randy(DPB::PSPDS::OP_3_MEV_RAND_MIN, DPB::PSPDS::OP_3_MEV_RAND_MAX)))
    add_xparam(5, -(DPB::PSPDS::OPTION_3_MRF_GAIN + dpbz_randy(DPB::PSPDS::OP_3_MRF_RAND_MIN, DPB::PSPDS::OP_3_MRF_RAND_MAX)))
    add_xparam(6, -(DPB::PSPDS::OPTION_3_CNT_GAIN + dpbz_randy(DPB::PSPDS::OP_3_CNT_RAND_MIN, DPB::PSPDS::OP_3_CNT_RAND_MAX)))
    add_xparam(7, -(DPB::PSPDS::OPTION_3_HRG_GAIN + dpbz_randy(DPB::PSPDS::OP_3_HRG_RAND_MIN, DPB::PSPDS::OP_3_HRG_RAND_MAX)))
    add_xparam(8, -(DPB::PSPDS::OPTION_3_MRG_GAIN + dpbz_randy(DPB::PSPDS::OP_3_MRG_RAND_MIN, DPB::PSPDS::OP_3_MRG_RAND_MAX)))
    add_xparam(9, -(DPB::PSPDS::OPTION_3_TRG_GAIN + dpbz_randy(DPB::PSPDS::OP_3_TRG_RAND_MIN, DPB::PSPDS::OP_3_TRG_RAND_MAX)))
    #s's
    add_sparam(0, -(DPB::PSPDS::OPTION_3_TGR_GAIN + dpbz_randy(DPB::PSPDS::OP_3_TGR_RAND_MIN, DPB::PSPDS::OP_3_TGR_RAND_MAX)))
    add_sparam(1, -(DPB::PSPDS::OPTION_3_GRD_GAIN + dpbz_randy(DPB::PSPDS::OP_3_GRD_RAND_MIN, DPB::PSPDS::OP_3_GRD_RAND_MAX)))
    add_sparam(2, -(DPB::PSPDS::OPTION_3_REC_GAIN + dpbz_randy(DPB::PSPDS::OP_3_REC_RAND_MIN, DPB::PSPDS::OP_3_REC_RAND_MAX)))
    add_sparam(3, -(DPB::PSPDS::OPTION_3_PHA_GAIN + dpbz_randy(DPB::PSPDS::OP_3_PHA_RAND_MIN, DPB::PSPDS::OP_3_PHA_RAND_MAX)))
    add_sparam(4, -(DPB::PSPDS::OPTION_3_MCR_GAIN + dpbz_randy(DPB::PSPDS::OP_3_MCR_RAND_MIN, DPB::PSPDS::OP_3_MCR_RAND_MAX)))
    add_sparam(5, -(DPB::PSPDS::OPTION_3_TCR_GAIN + dpbz_randy(DPB::PSPDS::OP_3_TCR_RAND_MIN, DPB::PSPDS::OP_3_TCR_RAND_MAX)))
    add_sparam(6, -(DPB::PSPDS::OPTION_3_PDR_GAIN + dpbz_randy(DPB::PSPDS::OP_3_PDR_RAND_MIN, DPB::PSPDS::OP_3_PDR_RAND_MAX)))
    add_sparam(7, -(DPB::PSPDS::OPTION_3_MDR_GAIN + dpbz_randy(DPB::PSPDS::OP_3_MDR_RAND_MIN, DPB::PSPDS::OP_3_MDR_RAND_MAX)))
    add_sparam(8, -(DPB::PSPDS::OPTION_3_FDR_GAIN + dpbz_randy(DPB::PSPDS::OP_3_FDR_RAND_MIN, DPB::PSPDS::OP_3_FDR_RAND_MAX)))
    add_sparam(9, -(DPB::PSPDS::OPTION_3_EXR_GAIN + dpbz_randy(DPB::PSPDS::OP_3_EXR_RAND_MIN, DPB::PSPDS::OP_3_EXR_RAND_MAX)))
    #dpbz'
    add_dpbzparam(2, -(1))
    }
    end

    def reduce_mag(value)
    value.times{||
    #reg's
    add_param(0, -(DPB::PSPDS::OPTION_4_MaxHP_GAIN + dpbz_randy(DPB::PSPDS::OP_4_MaxHP_RAND_MIN, DPB::PSPDS::OP_4_MaxHP_RAND_MAX)))
    add_param(1, -(DPB::PSPDS::OPTION_4_MaxMP_GAIN + dpbz_randy(DPB::PSPDS::OP_4_MaxMP_RAND_MIN, DPB::PSPDS::OP_4_MaxMP_RAND_MAX)))
    add_param(2, -(DPB::PSPDS::OPTION_4_ATK_GAIN + dpbz_randy(DPB::PSPDS::OP_4_ATK_RAND_MIN, DPB::PSPDS::OP_4_ATK_RAND_MAX)))
    add_param(3, -(DPB::PSPDS::OPTION_4_DEF_GAIN + dpbz_randy(DPB::PSPDS::OP_4_DEF_RAND_MIN, DPB::PSPDS::OP_4_DEF_RAND_MAX)))
    add_param(4, -(DPB::PSPDS::OPTION_4_MAT_GAIN + dpbz_randy(DPB::PSPDS::OP_4_MAT_RAND_MIN, DPB::PSPDS::OP_4_MAT_RAND_MAX)))
    add_param(5, -(DPB::PSPDS::OPTION_4_MDF_GAIN + dpbz_randy(DPB::PSPDS::OP_4_MDF_RAND_MIN, DPB::PSPDS::OP_4_MDF_RAND_MAX)))
    add_param(6, -(DPB::PSPDS::OPTION_4_AGI_GAIN + dpbz_randy(DPB::PSPDS::OP_4_AGI_RAND_MIN, DPB::PSPDS::OP_4_AGI_RAND_MAX)))
    add_param(7, -(DPB::PSPDS::OPTION_4_LUK_GAIN + dpbz_randy(DPB::PSPDS::OP_4_LUK_RAND_MIN, DPB::PSPDS::OP_4_LUK_RAND_MAX)))
    #x's
    add_xparam(0, -(DPB::PSPDS::OPTION_4_HIT_GAIN + dpbz_randy(DPB::PSPDS::OP_4_HIT_RAND_MIN, DPB::PSPDS::OP_4_HIT_RAND_MAX)))
    add_xparam(1, -(DPB::PSPDS::OPTION_4_EVA_GAIN + dpbz_randy(DPB::PSPDS::OP_4_EVA_RAND_MIN, DPB::PSPDS::OP_4_EVA_RAND_MAX)))
    add_xparam(2, -(DPB::PSPDS::OPTION_4_CRI_GAIN + dpbz_randy(DPB::PSPDS::OP_4_CRI_RAND_MIN, DPB::PSPDS::OP_4_CRI_RAND_MAX)))
    add_xparam(3, -(DPB::PSPDS::OPTION_4_CEV_GAIN + dpbz_randy(DPB::PSPDS::OP_4_CEV_RAND_MIN, DPB::PSPDS::OP_4_CEV_RAND_MAX)))
    add_xparam(4, -(DPB::PSPDS::OPTION_4_MEV_GAIN + dpbz_randy(DPB::PSPDS::OP_4_MEV_RAND_MIN, DPB::PSPDS::OP_4_MEV_RAND_MAX)))
    add_xparam(5, -(DPB::PSPDS::OPTION_4_MRF_GAIN + dpbz_randy(DPB::PSPDS::OP_4_MRF_RAND_MIN, DPB::PSPDS::OP_4_MRF_RAND_MAX)))
    add_xparam(6, -(DPB::PSPDS::OPTION_4_CNT_GAIN + dpbz_randy(DPB::PSPDS::OP_4_CNT_RAND_MIN, DPB::PSPDS::OP_4_CNT_RAND_MAX)))
    add_xparam(7, -(DPB::PSPDS::OPTION_4_HRG_GAIN + dpbz_randy(DPB::PSPDS::OP_4_HRG_RAND_MIN, DPB::PSPDS::OP_4_HRG_RAND_MAX)))
    add_xparam(8, -(DPB::PSPDS::OPTION_4_MRG_GAIN + dpbz_randy(DPB::PSPDS::OP_4_MRG_RAND_MIN, DPB::PSPDS::OP_4_MRG_RAND_MAX)))
    add_xparam(9, -(DPB::PSPDS::OPTION_4_TRG_GAIN + dpbz_randy(DPB::PSPDS::OP_4_TRG_RAND_MIN, DPB::PSPDS::OP_4_TRG_RAND_MAX)))
    #s's
    add_sparam(0, -(DPB::PSPDS::OPTION_4_TGR_GAIN + dpbz_randy(DPB::PSPDS::OP_4_TGR_RAND_MIN, DPB::PSPDS::OP_4_TGR_RAND_MAX)))
    add_sparam(1, -(DPB::PSPDS::OPTION_4_GRD_GAIN + dpbz_randy(DPB::PSPDS::OP_4_GRD_RAND_MIN, DPB::PSPDS::OP_4_GRD_RAND_MAX)))
    add_sparam(2, -(DPB::PSPDS::OPTION_4_REC_GAIN + dpbz_randy(DPB::PSPDS::OP_4_REC_RAND_MIN, DPB::PSPDS::OP_4_REC_RAND_MAX)))
    add_sparam(3, -(DPB::PSPDS::OPTION_4_PHA_GAIN + dpbz_randy(DPB::PSPDS::OP_4_PHA_RAND_MIN, DPB::PSPDS::OP_4_PHA_RAND_MAX)))
    add_sparam(4, -(DPB::PSPDS::OPTION_4_MCR_GAIN + dpbz_randy(DPB::PSPDS::OP_4_MCR_RAND_MIN, DPB::PSPDS::OP_4_MCR_RAND_MAX)))
    add_sparam(5, -(DPB::PSPDS::OPTION_4_TCR_GAIN + dpbz_randy(DPB::PSPDS::OP_4_TCR_RAND_MIN, DPB::PSPDS::OP_4_TCR_RAND_MAX)))
    add_sparam(6, -(DPB::PSPDS::OPTION_4_PDR_GAIN + dpbz_randy(DPB::PSPDS::OP_4_PDR_RAND_MIN, DPB::PSPDS::OP_4_PDR_RAND_MAX)))
    add_sparam(7, -(DPB::PSPDS::OPTION_4_MDR_GAIN + dpbz_randy(DPB::PSPDS::OP_4_MDR_RAND_MIN, DPB::PSPDS::OP_4_MDR_RAND_MAX)))
    add_sparam(8, -(DPB::PSPDS::OPTION_4_FDR_GAIN + dpbz_randy(DPB::PSPDS::OP_4_FDR_RAND_MIN, DPB::PSPDS::OP_4_FDR_RAND_MAX)))
    add_sparam(9, -(DPB::PSPDS::OPTION_4_EXR_GAIN + dpbz_randy(DPB::PSPDS::OP_4_EXR_RAND_MIN, DPB::PSPDS::OP_4_EXR_RAND_MAX)))
    #dpbz'
    add_dpbzparam(3, -(1))
    }
    end

    end # Game_Actor

    November 7, 2012 at 21:00

  19. that should do it ^_^ i will fix it properly when i update this script in the next day or so πŸ˜€

    November 7, 2012 at 21:02

    • works like a charm, thank you! the only thing it doesn’t seem to want to do is reduce by a variable. don’t suppose that’s just me messing up and not putting things in properly? that might be the issue idk

      November 7, 2012 at 22:00

  20. maybe try putting your variable like this…

    $game_actors[actor_id].reduce_vit($game_variable[variable_id].to_i)

    it could simply not be putting in a full number which may mess up the looping of the values being reduced

    November 7, 2012 at 22:14

    • yeahhhh it puts .0 at the end of the numbers, not sure if that would be what’s causing the troubles? tried $game_actors[1].reduce_vit($game_variables[1].to_i) but still no dice, it keeps causing a Game_Interpreter to wig out and say

      line 1411: SyntaxError
      unexpected tLBRACK, expecting ‘)’
      [1].to_i

      i really wish i was better at scripting so i could understand all this stuff @ w @;

      i wouldn’t need variables, but i can’t think of any other way to get them back to 0, setting it to 999 or really anything higher than what the current stat is crashes the script.

      November 8, 2012 at 01:58

  21. if you want i could write a snippet to simply wipe and reset all stats ? would only take an hour or so

    November 8, 2012 at 14:46

    • for reals? aah that would be so great!

      November 8, 2012 at 18:22

  22. ok il do it tonight and add it into the update for tomorrow πŸ˜€

    November 8, 2012 at 18:28

  23. i have not yet added this into the script but its on my to-do list :p

    November 10, 2012 at 03:59

  24. Shadow

    Wish there was a demo for this script.
    But I do like this script

    November 15, 2012 at 03:52

  25. probly wont make a demo for these scripts, as im working on pokemon scripts right now and its taking alot of time :p

    November 16, 2012 at 18:31

  26. hey, back again! when i updated your scripts, my game became unplayable ):
    “Script Game_Interpreter line 1411: NoMethodError occured.
    undefined method ‘pinfo1’ for #”

    i’m not sure what’s going on, but i’ll try to troubleshoot tomorrow and see if it’s a compatibility error with other scripts i have added in?

    (I’ve installed the core engine and have them arranged core > stat point distribute > stat screen)

    November 23, 2012 at 09:03

  27. i remove pinfo1 from the status screen script ( was gong to do an addon for it )
    i will have a look and see what i find, thanks for the bug report ^_^

    November 23, 2012 at 13:39

  28. justin

    I love the script and it works great, but after a battle it goes

    Script ” line 2282: NameError occured

    uninitialized constant DPB::PSPDS::GAIN_ATTRIBUTE_MESSAGE

    How do I fix this? I don’t want the player to gain any extra points from just battling.

    November 28, 2012 at 21:04

  29. re download the script πŸ™‚ i have knew about this issue for a while so it was about time i updated it rather than just tell you how to fix it :p

    November 29, 2012 at 12:13

  30. justin

    Thank you thank you thank you, this helps a lot! >_O

    You’re the best!!

    November 30, 2012 at 08:11

  31. Hey, found your script really nice, the exact base for what I needed!
    Aside from adding stats, which I figured out how to do it on my own, I’ve been struggling on 2 points: I wanted to add a custom cost for the stat depending on the stat value, namely
    (STAT >= X) ? 2 : 1, but I couldn’t figure out to call the stat value >.<; since I'm working on a game which has a pen and paper type of leveling system, I needed to add some other secondary stats linked to the main ones, and had been trying to do it with http://www.rpgmakervxace.net/topic/419-nasty-extra-stats/, but couldn't figure out how to call the stats from nasty hash to the one in the coloumns of the PSPDS, as what I'm getting back is coloumns of "null" (or nill, can't remember which is ruby atm xD)

    January 30, 2013 at 16:43

    • And nvm the second point, as I managed to do it :3
      (still not used to all the modules thing of ruby, but gotta say, really damn handy!)

      January 31, 2013 at 17:06

      • im currently looking into the best ways for me to implement “formulas” for the cost of each stat, once i do i will release an update for the main script and probably a snippet to customize te default formulas, that way it doesnt mess up the customization that people have filled in, as theres quite alot of it :p

        February 1, 2013 at 12:17

  32. This script has come a long way since it first spawned πŸ˜€
    I’m still waiting for you to functionalize it in such a way that you just pick which of the primary stats (the 6 basic stats + HP/MP/TP) you want to pump up rather than the 4 stats that you name whatever it is you name.

    Some day ;-;

    February 8, 2013 at 17:02

  33. Pingback: Distribution de points de stat par Dekita « Les trouvailles de Chaos17

  34. Chillsta

    Hello there!
    Once again, your scritps are awesome, thx so much for this stat system ^^’
    But i encounter a problem when paired with Yanfly’s Class system.
    The problem is that when i change to a lvl1 class and back to a lvl10 class (i.e.)
    i get all the points for those 10 lvls again, while the points i already spent still remain.

    Any help is really appreciated ^^

    March 11, 2013 at 11:32

    • hmm. thats a strange one, il have a little look over YF’s class script when i get enough time and see what i can find :p

      March 11, 2013 at 13:20

      • Chillsta

        Thanks a lot! For what it’s worth i did some more research by myself, maybe it will help some:
        – The main problem is that the points are distributed for actor lvl
        – YF’s class system either makes away with class lvls, or adjusts the actor lvl based on the class lvl
        -The solution might be in your snippet for the PSPDS, changing “self.lvl” to “class.lvl”
        class.lvl didnt work out tho ^^’
        -Another bad solution would be to add points not from lvl ups but from monster kills

        What i would like to implement, is that you gain a few points for each class lvl gained.

        Anyway, thx for your fast response, time & effort! /bow

        March 11, 2013 at 13:33

  35. which snippet?
    Also, try self.class.level

    March 11, 2013 at 14:30

    • Chillsta

      PSPDS Snippet 1
      Well, i get the following error right now:
      Skript PSPDS Snippet 1 line 58: Type Error ocurred
      Can’t convert nil into String

      This error most surely is based upon me not yet understanding how the snippet works.
      But i run out of time right now, so i figured i would at least let you know.
      I should be back in a few hours, then i will try to figure things out.

      Once again, thx!

      /bow

      March 11, 2013 at 15:03

  36. that error would mean that the method to determine the stat growth has not been defined, this would happen if you had deleted a line of code/customisation or if the line was trying to check something which hasnt been defined.
    and i didnt even think that the level wasnt stored in class when i suggested to use that. lol

    Also, classses do not have levels (well YF’s script probably makes them, havent looked yet)

    Also, im sure you can add points from monsters using notetags. (positive i implemented that a while ago)

    yep (just checked) notetag is

    where X is the amount of points you gain from the enemy, place the tag in enemy notebox.

    you would then change it so no poins are gained frm level up. :p this help ?

    March 11, 2013 at 15:13

    • Chillsta

      Just came back. I will look into the error in a moment.
      Well yea, YF’s script gives classes lvls, then adjusts the actor’s lvl depending on which class is used. (like i said, i think that is where the main error comes from).
      About the notetags, they are in your script and will work fine.
      But i would still rather have the points gained with a lvl up of a class, since it seems to me that this would be a much better game design.
      If i would use the notetags and give points to monsters, ppl just could farm the easiest monsters out there, instead of trying out all kind of classes. But it would be a solution non the less i guess..

      ps. I m still very new to making a game, so i might be wrong about pretty much everything ;p

      all right! back to work ^^’

      March 11, 2013 at 17:33

    • Chillsta

      I tried to mess around with your Snippet again.
      If i dont change anything in the Skript, i get the error, which i described above.
      I then took your standard formula and used it as a script for may main character.

      Script:
      $game_actors[1].pts_form(” ( self.level + 5
      * (self.level/10) ) + 1 “)

      I tried different forms, deleting ( ) and/or ” ”

      Either way i got the following error:
      Skript PSPDS Snippet 1 line 58: Syntax Error ocurred
      Unexpected “)”, expecting tCOLONE2 or “[” or “.” *(self.lvl/10) + 1

      I get this error when lvling UP or when i switch from a lvl1 class to a lvl15

      Since i don’t need the Snippet, unless it would actually solve my problem, i will not get into it anymore for now.

      But what i did, was checking out the YF’s Class Script.
      line 606~
      new method: class_level Edited by DisturbedInside

      I guess there you will find what causes the problem and if it is fixable.
      Unfortunatelly for me it is only jibberish ^^’

      Here is a link to the Class Skript:
      http://yanflychannel.wordpress.com/rmvxa/core-scripts/class-system/

      I am sorry, if i can’t be of anymore help even so it is my problem ^^’

      Thank you ( again ^^’ )

      March 11, 2013 at 20:10

  37. yea the ( ) and “” are required or errors will always appear :p

    you could try..
    $game_actors[1].pts_form(” ( self.class_level(@class_id) β€œ)

    may work , unsure as i dont have time to test right now./ but i will try get something done about this. whether this works or not πŸ™‚

    March 12, 2013 at 14:01

    • Chillsta

      I tried and copied your suggestion as it is into an event, which is started by the action button.
      The moment i trigger it, i get a similar error as before:
      Skript PSPDS Snippet 1 line 1411: Syntax Error ocurred
      Unexpected tIDENTIFIER, expecting ‘)’ self.class_lvl(@class_id) “)

      Glad to hear that you definatelly want to fix it tho πŸ˜€
      if there is anything i can do to help, let me know.

      March 12, 2013 at 14:56

  38. lol im gonna stop offering suggestions as they keep being wrong :p

    ive had a very busy week but i will try fix this when i get some time πŸ™‚
    il keep you posted.

    March 13, 2013 at 11:56

  39. Chillsta

    no problem, i dont mind trying ;P
    Also, i am in no hurry, since there are still a lot of things for me to do anyway.
    So i will be patiently on stand-by ^^

    /cheers

    March 13, 2013 at 14:13

  40. Hey,

    I’ve recently started into rpg maker vx ace and I’ve been trying to work with the PSPDS and the Core but I can’t seem to get them to run. I’m not getting any script errors, they simply don’t work. I’ve copy/pasted them as written so I’m not sure the what the problem could be as I’m new to this and probably did something terribly wrong. Any advice or help you could give would be wonderful.

    Thanks in advance,

    Sven

    March 29, 2013 at 23:09

  41. they should automatically trigger when you level up…
    If you really cannot get them to work theres a link to a project containing the scripts in the perfect script list, called ‘Not Really a Demo’ this would be able to let you see the scripts working.

    April 2, 2013 at 12:02

  42. hey, it’s been a while. i’m wondering if you ever implemented the thing for resetting stats?

    May 20, 2013 at 22:12

    • Funnily enough, no i did not…

      HOWEVER…
      I have written a new stat distribution system, for the $D13x Engine,
      This new script will be released in a few days…
      Heres a Post i made today about the new script… a preview if you will…
      https://dekitarpg.wordpress.com/2013/05/21/d13x-ispds-preview/

      also, the new script DOES have the ability to reset all stats (and return spent points)

      May 21, 2013 at 14:42

      • even better then πŸ™‚

        May 25, 2013 at 19:42

  43. remi

    Sorry for the stupid question … I got this script and the core script … how do you access this point distribution screen ? it doesn’t show up when I level up

    July 14, 2013 at 04:35

    • make sure the customization options allow for it to show either On_Map or In_Battle, either way i recommend using the $D13x ISPDS script instead as it offers ALOT more customization.

      July 14, 2013 at 12:13

  44. Master Rob

    Hey, this is a fantastic script. Just 2 quick questions:

    1) How do I change the screen so there’s no variance in the stats? Ex: If my guy’s attack is 6, how do I make it just say “6” and not “5-7”. The way I have my game scaled, right now it says “6 – 6” which looks odd.

    2) How do I increase the rate at which the gauges fill? Ex: I’ve scaled my game down so the stats are generally lower, so when you level up, the stat increases are so small you can’t really see the gauges increase. How do I rescale the gauges so the maximum value for the gauge is the maximum possible value for the game?

    Thanks!

    September 9, 2013 at 21:26

  45. i dont understand why there so many problem T.T , can u just send me the script?

    Thank you

    March 7, 2014 at 04:42

    • I dont understand your question. You can get the script directly fro the link above. Why would i need to ‘send’ you it ?
      Also, this system is no longer supported because THERE IS A BETTER ONE, im sick of explaining this. so im not gonna bother…

      March 7, 2014 at 11:52

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s