Can anyone help me modify this script? I know how to set the limits, but would like to set the rates that stats increase to those limits.
I currently have in my game max level 99, 9999 HPs and SPs, and STR, INT, DEX, AGI at 100. I have it set up as follows:
at level 1 you have 20 HPs, no SPs (you gain 5 at level 6 and then it goes up from there), and 5 in each stat STR, INT, AGI, DEX.
at 25 you have 619 HPs, 600 SPs, and 11 in each stat.
at 50 you have 2515 HPs, 2500 SPs, and 29 in each stat.
at 75 you have 5710 HPs, 5702 SPs, and 60 in each stat.
and at 99 you have 9999 HPs, 9999 SPs, and 100 in each stat.
All rates are set with the slider to the far right, for the slowest gain in all stats. The EXP needed bar is set for 13 Basis (13 XP to reach level 2) and Inflation 50 (you need 2175991 XP to reach level 99.) Unfortunately, with the kind of game I'm making I believe this will not be high enough and the characters will reach level 99 far before the end of the game.
What I would like is to have it set for level 999, max HPs and SPs at 99,999, and max stats STR, INT, DEX and AGI at 999 - with the EXP needed to reach that level raising at the same pace (Inflation 50), so it would be:
at level 1 you have 20 HPs, no SPs (you gain 5 at level 6 and then it goes up from there (i would still like to do this if possible)), and 5 in each stat STR, INT, AGI, DEX.
at 25 you have 619 HPs, 600 SPs, and 11 in each stat.
at 50 you have 2515 HPs, 2500 SPs, and 29 in each stat.
at 75 you have 5710 HPs, 5702 SPs, and 60 in each stat.
at level 99 you have 9999 HPs, 9999 SPs, and 100 in each stat.
at level 250 (guesstimating) you have 25000 HPs, 25000 SPs, and 250 in each stat.
at level 500 - 50000 HPs and SPs, 500 in stats.
at level 999 - 99999 HPs and SPs, 999 in stats.
This way the player does not necessarily have to keep leveling past 99, but if they hit it way before the end of the game, they're not just cut off. Or if they have a lot of time on their hands they can see if they can get to 999. From testing the script below out, I used max lvl 999, max hps and sps 99,999, and max stats 999. I then made a ghost have max XP in a new game and 1 hp and made 8 of them in an battle process event, so killing 8 gave me 799992 XP. And it did indeed break lvl 99, I shot to 118 after the first battle, but the HPs and MPs increased to 96000, along with all of the stats hitting 999 as well. I want it to be around 11800 HPs and MPs and stats at 118 (so generally 100 HPs and MPs and 1 point added to stats for every level past 99.)
Can anyone look at the code below and see if they can change the rate of the increases to be accordance to what I need? I would really appreciate it!! Thanks much in advance!
#==============================================================================
# Unlimit Levels v1 by: cybersam
# date: 14.09.06
#------------------------------------------------------------------------------
# here is a full working scripts for you to this... (i think there is
# already one like this somewhere in the in the community...
# i did one back then when i started in RPG Maker XP
# some other guys did a few other script like this
#==============================================================================
#----------------------------------------------------------------------------
# here you can set the max hp,sp,,str,dex,agi and int
#----------------------------------------------------------------------------
$FINAL_LVL = 100
$MAX_HP = 99999
$MAX_SP = 99999
$MAX_STR = 9999
$MAX_DEX = 9999
$MAX_AGI = 9999
$MAX_INT = 9999
class Game_Actor
#--------------------------------------------------------------------------
# setting the levels...
#--------------------------------------------------------------------------
def final_level
# here you can set the max level for your characters based on their ID's...
# i set it so that 3 characters have different levels and the rest
# have max lvl of 9999
#
# this settings is only to show you how to change the max setting for your
# characters... same thing is for the parameters -> hp,sp,str,dex.agi,int
case self.id
when 1
level = 100
when 2
level = 100
when 8
level = 100
else
level = $FINAL_LVL
end
return level
end
#--------------------------------------------------------------------------
# setting max hp...
#--------------------------------------------------------------------------
def max_hp
case self.id
when 1
hp = 99999
when 2
hp = 99999
when 8
hp = 99999
else
hp = $MAX_HP
end
return hp
end
#--------------------------------------------------------------------------
# setting max sp...
#--------------------------------------------------------------------------
def max_sp
case self.id
when 1
sp = 99999
when 2
sp = 99999
when 8
sp = 99999
else
sp = $MAX_SP
end
return sp
end
#--------------------------------------------------------------------------
# setting max str...
#--------------------------------------------------------------------------
def max_str
case self.id
when 1
str = 9999
when 2
str = 9999
when 8
str = 9999
else
str = $MAX_STR
end
return str
end
#--------------------------------------------------------------------------
# setting max dex...
#--------------------------------------------------------------------------
def max_dex
case self.id
when 1
dex = 9999
when 2
dex = 9999
when 8
dex = 9999
else
dex = $MAX_DEX
end
return dex
end
#--------------------------------------------------------------------------
# setting max agi...
#--------------------------------------------------------------------------
def max_agi
case self.id
when 1
agi = 9999
when 2
agi = 9999
when 8
agi = 9999
else
agi = $MAX_AGI
end
return agi
end
#--------------------------------------------------------------------------
# setting max int...
#--------------------------------------------------------------------------
def max_int
case self.id
when 1
int = 9999
when 2
int = 9999
when 8
int = 9999
else
int = $MAX_INT
end
return int
end
#--------------------------------------------------------------------------
# Creating the new EXP list
# dont change anything from here on... (only if you know what you're doing)
#--------------------------------------------------------------------------
def make_exp_list
actor = $data_actors[@actor_id]
@exp_list = Array.new(final_level + 2)
@exp_list[1] = 0
pow_i = 2.4 + actor.exp_inflation / 1000.0
for i in 2..final_level + 1
if i > final_level
@exp_list[i] = 0
else
n = actor.exp_basis * ((i + 3) ** pow_i) / (5 ** pow_i)
@exp_list[i] = @exp_list[i-1] + Integer(n)
end
end
end
#--------------------------------------------------------------------------
# setting parameters like hp, sp, str, dex, agi and int
#--------------------------------------------------------------------------
def maxhp
n = [[base_maxhp + @maxhp_plus, 1].max, $MAX_HP].min
for i in @states
n *= $data_states[i].maxhp_rate / 100.0
end
n = [[Integer(n), 1].max, $MAX_HP].min
return n
end
def base_maxhp
maxhp = $data_actors[@actor_id].parameters[0, 1]
maxhp += $data_actors[@actor_id].parameters[0, 2] * @level
return maxhp
end
def base_maxsp
maxsp = $data_actors[@actor_id].parameters[1, 1]
maxsp += $data_actors[@actor_id].parameters[1, 2] * @level
return maxsp
end
def base_str
n = $data_actors[@actor_id].parameters[2, 1]
n += $data_actors[@actor_id].parameters[2, 2] * @level
weapon = $data_weapons[@weapon_id]
armor1 = $data_armors[@armor1_id]
armor2 = $data_armors[@armor2_id]
armor3 = $data_armors[@armor3_id]
armor4 = $data_armors[@armor4_id]
n += weapon != nil ? weapon.str_plus : 0
n += armor1 != nil ? armor1.str_plus : 0
n += armor2 != nil ? armor2.str_plus : 0
n += armor3 != nil ? armor3.str_plus : 0
n += armor4 != nil ? armor4.str_plus : 0
return [[n, 1].max, $MAX_STR].min
end
def base_dex
n = $data_actors[@actor_id].parameters[3, 1]
n += $data_actors[@actor_id].parameters[3, 2] * @level
weapon = $data_weapons[@weapon_id]
armor1 = $data_armors[@armor1_id]
armor2 = $data_armors[@armor2_id]
armor3 = $data_armors[@armor3_id]
armor4 = $data_armors[@armor4_id]
n += weapon != nil ? weapon.dex_plus : 0
n += armor1 != nil ? armor1.dex_plus : 0
n += armor2 != nil ? armor2.dex_plus : 0
n += armor3 != nil ? armor3.dex_plus : 0
n += armor4 != nil ? armor4.dex_plus : 0
return [[n, 1].max, $MAX_DEX].min
end
def base_agi
n = $data_actors[@actor_id].parameters[4, 1]
n += $data_actors[@actor_id].parameters[4, 2] * @level
weapon = $data_weapons[@weapon_id]
armor1 = $data_armors[@armor1_id]
armor2 = $data_armors[@armor2_id]
armor3 = $data_armors[@armor3_id]
armor4 = $data_armors[@armor4_id]
n += weapon != nil ? weapon.agi_plus : 0
n += armor1 != nil ? armor1.agi_plus : 0
n += armor2 != nil ? armor2.agi_plus : 0
n += armor3 != nil ? armor3.agi_plus : 0
n += armor4 != nil ? armor4.agi_plus : 0
return [[n, 1].max, $MAX_AGI].min
end
def base_int
n = $data_actors[@actor_id].parameters[5, 1]
n += $data_actors[@actor_id].parameters[5, 2] * @level
weapon = $data_weapons[@weapon_id]
armor1 = $data_armors[@armor1_id]
armor2 = $data_armors[@armor2_id]
armor3 = $data_armors[@armor3_id]
armor4 = $data_armors[@armor4_id]
n += weapon != nil ? weapon.int_plus : 0
n += armor1 != nil ? armor1.int_plus : 0
n += armor2 != nil ? armor2.int_plus : 0
n += armor3 != nil ? armor3.int_plus : 0
n += armor4 != nil ? armor4.int_plus : 0
return [[n, 1].max, $MAX_INT].min
end
def exp=(exp)
@exp = [exp, 0].max
while @exp >= @exp_list[@level+1] and @exp_list[@level+1] > 0
@level += 1
for j in $data_classes[@class_id].learnings
if j.level == @level
learn_skill(j.skill_id)
end
end
end
while @exp < @exp_list[@level]
@level -= 1
end
@hp = [@hp, self.maxhp].min
@sp = [@sp, self.maxsp].min
end
def level=(level)
level = [[level, final_level].min, 1].max
self.exp = @exp_list[level]
end
end
#==============================================================================
# ** Game_Battler
#==============================================================================
class Game_Battler
def maxhp
n = [[base_maxhp + @maxhp_plus, 1].max, $MAX_HP].min
for i in @states
n *= $data_states[i].maxhp_rate / 100.0
end
n = [[Integer(n), 1].max, $MAX_HP].min
return n
end
def maxsp
n = [[base_maxsp + @maxsp_plus, 0].max, $MAX_SP].min
for i in @states
n *= $data_states[i].maxsp_rate / 100.0
end
n = [[Integer(n), 0].max, $MAX_SP].min
return n
end
def str
n = [[base_str + @str_plus, 1].max, $MAX_STR].min
for i in @states
n *= $data_states[i].str_rate / 100.0
end
n = [[Integer(n), 1].max, $MAX_STR].min
return n
end
def dex
n = [[base_dex + @dex_plus, 1].max, $MAX_DEX].min
for i in @states
n *= $data_states[i].dex_rate / 100.0
end
n = [[Integer(n), 1].max, $MAX_DEX].min
return n
end
def agi
n = [[base_agi + @agi_plus, 1].max, $MAX_AGI].min
for i in @states
n *= $data_states[i].agi_rate / 100.0
end
n = [[Integer(n), 1].max, $MAX_AGI].min
return n
end
def int
n = [[base_int + @int_plus, 1].max, $MAX_INT].min
for i in @states
n *= $data_states[i].int_rate / 100.0
end
n = [[Integer(n), 1].max, $MAX_INT].min
return n
end
def maxhp=(maxhp)
@maxhp_plus += maxhp - self.maxhp
@maxhp_plus = [[@maxhp_plus, -$MAX_HP].max, $MAX_HP].min
@hp = [@hp, self.maxhp].min
end
def maxsp=(maxsp)
@maxsp_plus += maxsp - self.maxsp
@maxsp_plus = [[@maxsp_plus, -$MAX_SP].max, $MAX_SP].min
@sp = [@sp, self.maxsp].min
end
def str=(str)
@str_plus += str - self.str
@str_plus = [[@str_plus, -$MAX_STR].max, $MAX_STR].min
end
def dex=(dex)
@dex_plus += dex - self.dex
@dex_plus = [[@dex_plus, -$MAX_DEX].max, $MAX_DEX].min
end
def agi=(agi)
@agi_plus += agi - self.agi
@agi_plus = [[@agi_plus, -$MAX_AGI].max, $MAX_AGI].min
end
def int=(int)
@int_plus += int - self.int
@int_plus = [[@int_plus, -$MAX_INT].max, $MAX_INT].min
end
end
I tried the ghost with max XP scenario in a brand new game. In my game I will be using Tons of Addons, an enemy health bar script, Easy Level Addon, Skill Shop addon, and a small script that adds "when X return Y" which means when monster ID is X then return Variable ID which adds 1 to that specific variable - it's for monster hunting jobs - go out and kill X amount of a specific monsters kind of thing - each kill of a specific kind of monster adds 1 to that monster's specific variable.
EDIT: A simpler way to put it would be: use whatever settings I have in RMXP up until lvl 99, and for each level after 99, simply add 100 HPs, 100 SPs, 1 to STR, AGI, DEX, INT, and continue using inflation 50 for the XP curve. Thanks!
http://www.chaos-project.com/index.php?option=com_scriptdatabase&view=scriptdatabase&Itemid=29
*points to Unlimited Levels*
There should be a database limit stat breaker around somewhere as well, but I can't find it for some reason. >_>
I know - I was gonna use yours! but then i could not find the stat breaker for just characters stats Anywhere. off this page - http://www.chaos-project.com/index.php?option=com_scriptdatabase&view=scriptdatabase&Itemid=29 - i cntrl-f'd 'breaker' and found Database Limit Breaker, Enemy Stat Breaker, Equipment Stat Breaker, Skill Stat Breaker, and Database Limit Breaker for VX. I also googled a bunch as well, couldn't find the KGC_LimitBreak script, and nothing else for characters HPs, SPs, AGI, DEX, STR, INT - otherwise I would of totally used yours! =)
is there any way to put into a script
if level > 99 then HPs=HPs+100, SPs=SPs+100, AGI=AGI+1, DEX=DEX+1, STR=STR+1, INT=INT+1, and (experience needed for next level)=(experience curve)*(lvl)
that's how I would of done it in BASIC (although i didn't put much thought into the experience needed for next level bit, it may be a bit more complicated than that)
Yeah, I couldn't find any of them myself to be honest.
Technically the EXP curve is already done in such a way.
As for the stats, yeah, you can make that work. I mean, you can calculate the stats also based on the level, but unless you edit some specific scripts, there will be still the 999 limit. The Unlimited Levels script can calculate the stats, but it doesn't break the 999 limit.
Quote from: Blizzard on October 05, 2011, 02:39:09 am
Yeah, I couldn't find any of them myself to be honest.
Technically the EXP curve is already done in such a way.
As for the stats, yeah, you can make that work. I mean, you can calculate the stats also based on the level, but unless you edit some specific scripts, there will be still the 999 limit. The Unlimited Levels script can calculate the stats, but it doesn't break the 999 limit.
If xp is already calculated based on the already existing curves, awesome! then just +100 HPs and SPs, and +1 agi, dex, str, int a level. i don't mind a 999 limit on dex, agi, int, str, as long as they don't hit it until lvl 999. with the script above i was hitting 999 at lvl 118. if anyone could please help me that would be so awesome and i will of course give full credit in credits!
As I said, you can configure in the Unlimited Levels script how the stats should be calculated in the same way like RMXP's editor lets you configure. You put in a start value, a final value and the inflation factor and off you go. Basically you would need "[1, 999, 0]" for every stat to increase by one per level. But the HP and SP would still go over 9999 so you need a script for the limit there. Or you just edit it yourself.
Ohhhh! I apologize I didn't think that you could edit stats like that!
When I put it at 50 for inflation in the game editor and level 999 as the max lvl in your script it seems the XP limit is 9,999,999 and it caps at lvl 148. Also the HPs and SPs do not go over 9,999 and I have it
when 1 then [20, 15000, -10]
but it stops at 9,999 =(
i was thinking i could do level 150 instead of 999, and set inflation a bit less - 9,999,999 XP is a ridiculous amount of XP to get (in my game anyways) - but i'd like it to hit 9,999 at level 99 and 100 in stats and then go to 15,000 at level 150 and 150 in stats. maybe this is just futile?
No, you just need to edit the maximums yourself or get a script that does it for you. Editing them yourself takes 5 minutes.
Ok, i'll google how to do that when i get home. Thanks!
Quote from: djskagnetti on October 06, 2011, 06:42:00 am
Ok, i'll google how to do that when i get home. Thanks!
Ok so i found out you go into Game_Actor and change
Quote
#--------------------------------------------------------------------------
# * Get Maximum HP
#--------------------------------------------------------------------------
def maxhp
n = [[base_maxhp + @maxhp_plus, 1].max, 99999].min
for i in @states
n *= $data_states.maxhp_rate / 100.0
end
n = [[Integer(n), 1].max, 99999].min
return n
end
where i changed it to 99999 - do you change both these numbers?
also i wanted to max out the SP, but it wasn't there, so i just copied and pasted it right below it and changed all the 'hp' to 'sp', like so:
Quote
#--------------------------------------------------------------------------
# * Get Maximum sP
#--------------------------------------------------------------------------
def maxsp
n = [[base_maxsp + @maxsp_plus, 1].max, 99999].min
for i in @states
n *= $data_states.maxsp_rate / 100.0
end
n = [[Integer(n), 1].max, 99999].min
return n
end
right below Get Maximum HP
so it looks like:
Quote
#--------------------------------------------------------------------------
# * Get Maximum HP
#--------------------------------------------------------------------------
def maxhp
n = [[base_maxhp + @maxhp_plus, 1].max, 99999].min
for i in @states
n *= $data_states.maxhp_rate / 100.0
end
n = [[Integer(n), 1].max, 99999].min
return n
end
#--------------------------------------------------------------------------
# * Get Maximum sP
#--------------------------------------------------------------------------
def maxsp
n = [[base_maxsp + @maxsp_plus, 1].max, 99999].min
for i in @states
n *= $data_states.maxsp_rate / 100.0
end
n = [[Integer(n), 1].max, 99999].min
return n
end
using lines 173-194 in Game_Actor
is this the correct way to do it/will it mess up my game/did i done broked it?
i tried with your max level script and it seemed to work fine. just checking to make sure =P
Also:
I was thinking an alternative would be to make it level 99, to go to 9999 HPs, but have the limit at 29,999, so, through various items and passive skills, you can go over the basic max, up to 29,9999 if you find them/use them all.