Marcel_Makkink
Member
Hello reader! XD
So, I finally found a script that expands the normal max. level for the actors other than SDK ones.
However, I have this tiny piece of script to let me decide the Experience need to level up for every level individualy in a rpg maker file using notepad.
But when I copy that tiny piece of script and replace the Make_Exp_List from the Unlimited Levels script with the one above, the level of any actor suddenly doesn't wants to go higher than the default max. level of that actor that's defined in the database.
Anyone knows how to deal with this, please?
Gracias~ :thumb:
So, I finally found a script that expands the normal max. level for the actors other than SDK ones.
Code:
#==============================================================================
# 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
#==============================================================================
# Must go ABOVE leveling with points to work
#----------------------------------------------------------------------------
# here you can set the max hp,sp,,str,dex,agi and int
#----------------------------------------------------------------------------
$FINAL_LVL = 250
$MAX_HP = 999999999
$MAX_SP = 999999999
$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 = 250
when 2
level = 250
when 8
level = 250
else
level = 250
end
return level
end
#--------------------------------------------------------------------------
# setting max hp...
#--------------------------------------------------------------------------
def max_hp
case self.id
when 1
hp = 999
when 2
hp = 9999
when 8
hp = 6540
else
hp = $MAX_HP
end
return hp
end
#--------------------------------------------------------------------------
# setting max sp...
#--------------------------------------------------------------------------
def max_sp
case self.id
when 1
sp = 999
when 2
sp = 9999
when 8
sp = 6540
else
sp = $MAX_SP
end
return sp
end
#--------------------------------------------------------------------------
# setting max str...
#--------------------------------------------------------------------------
def max_str
case self.id
when 1
str = 999
when 2
str = 2560
when 8
str = 1800
else
str = $MAX_STR
end
return str
end
#--------------------------------------------------------------------------
# setting max dex...
#--------------------------------------------------------------------------
def max_dex
case self.id
when 1
dex = 999
when 2
dex = 2560
when 8
dex = 1800
else
dex = $MAX_DEX
end
return dex
end
#--------------------------------------------------------------------------
# setting max agi...
#--------------------------------------------------------------------------
def max_agi
case self.id
when 1
agi = 999
when 2
agi = 2560
when 8
agi = 1800
else
agi = $MAX_AGI
end
return agi
end
#--------------------------------------------------------------------------
# setting max int...
#--------------------------------------------------------------------------
def max_int
case self.id
when 1
int = 999
when 2
int = 2560
when 8
int = 1800
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
However, I have this tiny piece of script to let me decide the Experience need to level up for every level individualy in a rpg maker file using notepad.
Code:
def make_exp_list
actor = $data_actors[@actor_id]
fname = "Data\\rmxp" + actor.id.to_s + "data.rxdata"
if FileTest.exist?(fname)
get_exp_list_from_file(fname)
if @exp_file_error
@exp_list = Array.new(101)
else
return
end
end
@exp_list[1] = 0
pow_i = 2.4 + actor.exp_inflation / 100.0
for i in 2..100
if i > actor.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
def get_exp_list_from_file(filename)
begin
if @exp_file_error
return
end
f = File.open(filename)
list = f.readlines
list = correct_malformed_input(list)
if @exp_file_error
return
end
for i in 0..list.size - 1
list[i] = list[i].to_i
end
list = correct_erroneous_data(list)
for i in list.size..100
list[i] = 0
end
list.unshift(0)
@exp_list = list
rescue StandardError
s1 = "Unrecoverable error while reading " + @name + "'s EXP list.\n"
s2 = "Experience curve declared in the database will be used instead."
print(s1 + s2)
@exp_file_error = true
retry
ensure
if f != nil
f.close
end
end
end
# -----------------------------
def correct_malformed_input(list)
lines_to_delete = []
if list.size == 0
s1 = "Warning: " + @name + "'s experience requirement file is empty. "
s2 = "Experience curve declared in the database will be used instead."
print(s1 + s2)
@exp_file_error = true
return
end
for i in 0..list.size - 1
delflag = false
for j in 0..list[i].size - 1
if list[i][j] != 10 && list[i][j] != 32 &&
!(list[i][j] >= 48 && list[i][j] <= 57)
delflag = true
end
end
if list[i].size == 1 && list[i][0] == 10
delflag = true
end
if delflag
lines_to_delete.push(list[i])
end
end
if lines_to_delete != []
for i in 0..lines_to_delete.size - 1
list.delete(lines_to_delete[i])
end
end
for i in 0..list.size - 1
while list[i].include?(32)
list[i].slice!(0)
end
end
return list
end
# -----------------------------
def correct_erroneous_data(list)
warnings = ""
wrong_exp = false
if list[0] != 0
list[0] = 0
s1 = "Warning: " + @name + "'s experience requirement for level 1 "
s2 = "must be zero. Automatically correcting error.\n"
warnings += s1 + s2
end
if list.size < $data_actors[@actor_id].final_level
if list.size >= 2
value = list[list.size - 1] - list[list.size - 2]
for i in list.size..$data_actors[@actor_id].final_level - 1
list[i] = list[i-1] + value
end
else
list = []
for i in 0..$data_actors[@actor_id].final_level - 1
list[i] = i
end
end
s1 = "Warning: Fewer levels than " + @name + "'s maximum level have "
s2 = "been declared. Creating temporary substitute values.\n"
warnings += s1 + s2
end
if list.size > $data_actors[@actor_id].final_level
new_list = []
for i in 0..$data_actors[@actor_id].final_level - 1
new_list[i] = list[i]
end
list = new_list
s1 = "Warning: More levels than " + @name + "'s maximum level have "
s2 = "been declared. Ignoring excess declarations.\n"
warnings += s1 + s2
end
for i in 1..list.size - 1
if list[i] <= list[i-1]
if i == list.size - 1 && list.size != 2
diff = list[i-1] - list[i-2]
list[i] = list[i-1] + diff
elsif i == list.size - 1 && list.size == 2
list[i] = 10
else
if list[i+1] > list[i-1]
diff = list[i+1] - list[i-1]
list[i] = list[i-1] + diff / 2
else
list[i] = list[i-1] + 10
end
end
wrong_exp = true
end
end
if wrong_exp
s1 = "Warning: One or more experience requirements for " + @name + " "
s2 = "is less than or equal to the previous level's requirement. "
s3 = "Creating temporary substitute values."
warnings += s1 + s2 + s3
end
if warnings != ""
print(warnings)
end
return list
end
But when I copy that tiny piece of script and replace the Make_Exp_List from the Unlimited Levels script with the one above, the level of any actor suddenly doesn't wants to go higher than the default max. level of that actor that's defined in the database.
Anyone knows how to deal with this, please?
Gracias~ :thumb: