Ultrapassando Os Limites De Status No RPG Maker XP
Publicado em 24 de janeiro de 2012.Um script para o RPG Maker XP que você a permite ultrapassar os limites padrões dos parâmetros de status (LV, HP, SP, STR, DEX etc), e também de dinheiro e o número de itens. Ele foi feito por KGC, e os comentários em português, eu não sei quem fez, mas dando uma olhada, acho que foi o Mog. Se alguém souber mais alguma informação, favor compartilhar!
Nota: Cautela na hora de definir os números para o não tirar o balanço do jogo (dificuldade). Ou seja, você pode deixar o jogo insanamente difícil ou fácil demais, este script é indicado para quem quer fazer chefes estilos weapons (Atma, Ruby, Crsytal, etc.) da serie FF, onde os chefes são quase impossíveis de se vencer.
Utilização
Procure estas linhas logo no começo do script, para alterar os limites desejados. A descrição do limite que vai ser alterado, está em vermelho, abaixo da linha a ser alterada:
LB_MAXHP_REVISE = 99999
Limite de HP
LB_MAXSP_REVISE = 99999
Limite de SP
LB_STR_REVISE = 100
Força
LB_DEX_REVISE = 100
Dextreza
LB_AGI_REVISE = 100
Agilidade
LB_INT_REVISE = 100
Inteligência
LB_DAMAGE_CORRECT = true
O parâmetro do dano será modificado
LB_ENEMY_HP_LIMIT = 999999999
Limite máximo do HP
LB_ENEMY_SP_LIMIT = 9999999
Limite máximo do SP
LB_ENEMY_ETC_LIMIT = 999999
Definição dos parâmetros de Ataque, Def magia e Def Física
LB_ACTOR_LV_LIMIT_DEFAULT = 512
Nível (LVL) máximo do seu personagem
LB_ACTOR_EXP_LIMIT = 9999999999
Experiência máxima de seu personagem
LB_ACTOR_HP_LIMIT = 9999999
Limite de HP máximo de seu personagem
LB_ACTOR_SP_LIMIT = 9999999
Limite de SP máximo de seu personagem
LB_ACTOR_ETC_LIMIT = 99999
Limite máximo para os parâmetros de status (STR,DEX,INT,AGL)
LB_ACTOR_LV100_CALC = "(p[2] - p[1]) * (lv - 99)"
Definição do cálculo para LV após o LV99
LB_GOLD_LIMIT = 99999999
Limite máximo de dinheiro
LB_ITEM_LIMIT = 99
Limite máximo de ítem
Para instalar o script, copie acima do script Main o código abaixo:
Código Do Script
#################################################################
# KGC
#################################################################
# O script permite que o jogo ultrapasse os parametros definidos
# como HP,SP,STR,EXP,etc...
# Mog Nota - Este script cancela o efeito do Else EX.
#################################################################
module KGC
# O numero que colocar aqui será o valor que vai multiplicar
# os parametros de status.
LB_MAXHP_REVISE = 99999 # MAXHP
LB_MAXSP_REVISE = 99999 # MAXSP
LB_STR_REVISE = 100 # Força
LB_DEX_REVISE = 100 # Dextreza
LB_AGI_REVISE = 100 # Agilidade
LB_INT_REVISE = 100 # Inteligência
# O parâmetro do dano será modificado?
LB_DAMAGE_CORRECT = true
########################
########INIMIGO#########
########################
# Limite maximo do HP
LB_ENEMY_HP_LIMIT = 999999999
# Limite maximo do SP
LB_ENEMY_SP_LIMIT = 9999999
# Definição dos parâmetros de Ataque, Def magia e Def Física.
LB_ENEMY_ETC_LIMIT = 999999
##########################
##########HERO############
##########################
# Nível maximo do seu personagem.
LB_ACTOR_LV_LIMIT = [nil]
LB_ACTOR_LV_LIMIT_DEFAULT = 512
# Experiência máxima de seu personagem.
LB_ACTOR_EXP_LIMIT = 9999999999
# Limite de HP maximo de seu personagem.
LB_ACTOR_HP_LIMIT = 9999999
# Limite de SP maximo de seu personagem.
LB_ACTOR_SP_LIMIT = 9999999
# Definição de calculo para o LV-UP.
LB_ACTOR_ETC_LIMIT = 99999
# Definição do calculo para LV após o LV99.
LB_ACTOR_LV100_CALC = "(p[2] - p[1]) * (lv - 99)"
# Limite maximo de dinheiro.
LB_GOLD_LIMIT = 99999999
# Limite maximo de item.
LB_ITEM_LIMIT = 99
end
#_________________________________________________________________
$imported = {} if $imported == nil
$imported["LimitBreak"] = true
if $game_special_elements == nil
$game_special_elements = {}
$data_system = load_data("Data/System.rxdata")
end
module LimitBreak
def self.get_revised_battler(battler)
bt = battler.clone
hp_limit = battler.is_a?(RPG::Enemy) ?
KGC::LB_ENEMY_HP_LIMIT : KGC::LB_ACTOR_HP_LIMIT
sp_limit = battler.is_a?(RPG::Enemy) ?
KGC::LB_ENEMY_SP_LIMIT : KGC::LB_ACTOR_SP_LIMIT
etc_limit = battler.is_a?(RPG::Enemy) ?
KGC::LB_ENEMY_ETC_LIMIT : KGC::LB_ACTOR_ETC_LIMIT
bt.maxhp = [bt.maxhp * KGC::LB_MAXHP_REVISE / 100, hp_limit].min
bt.maxsp = [bt.maxsp * KGC::LB_MAXSP_REVISE / 100, sp_limit].min
bt.str = [bt.str * KGC::LB_STR_REVISE / 100, etc_limit].min
bt.dex = [bt.dex * KGC::LB_DEX_REVISE / 100, etc_limit].min
bt.agi = [bt.agi * KGC::LB_AGI_REVISE / 100, etc_limit].min
bt.int = [bt.int * KGC::LB_INT_REVISE / 100, etc_limit].min
return bt
end
end
class Game_Battler
def maxhp
n = [[base_maxhp + @maxhp_plus, 1].max, KGC::LB_ENEMY_HP_LIMIT].min
@states.each { |i| n *= $data_states[i].maxhp_rate / 100.0 }
n = [[Integer(n), 1].max, KGC::LB_ENEMY_HP_LIMIT].min
return n
end
def maxsp
n = [[base_maxsp + @maxsp_plus, 0].max, KGC::LB_ENEMY_SP_LIMIT].min
@states.each { |i| n *= $data_states[i].maxsp_rate / 100.0 }
n = [[Integer(n), 1].max, KGC::LB_ENEMY_SP_LIMIT].min
return n
end
def str
n = [[base_str + @str_plus, 1].max, KGC::LB_ENEMY_ETC_LIMIT].min
@states.each { |i| n *= $data_states[i].str_rate / 100.0 }
n = [[Integer(n), 1].max, KGC::LB_ENEMY_ETC_LIMIT].min
return n
end
def dex
n = [[base_dex + @dex_plus, 1].max, KGC::LB_ENEMY_ETC_LIMIT].min
@states.each { |i| n *= $data_states[i].dex_rate / 100.0 }
n = [[Integer(n), 1].max, KGC::LB_ENEMY_ETC_LIMIT].min
return n
end
def agi
n = [[base_agi + @agi_plus, 1].max, KGC::LB_ENEMY_ETC_LIMIT].min
@states.each { |i| n *= $data_states[i].agi_rate / 100.0 }
n = [[Integer(n), 1].max, KGC::LB_ENEMY_ETC_LIMIT].min
return n
end
def int
n = [[base_int + @int_plus, 1].max, KGC::LB_ENEMY_ETC_LIMIT].min
@states.each { |i| n *= $data_states[i].int_rate / 100.0 }
n = [[Integer(n), 1].max, KGC::LB_ENEMY_ETC_LIMIT].min
return n
end
def maxhp=(maxhp)
@maxhp_plus += maxhp - self.maxhp
@maxhp_plus = [[@maxhp_plus, -KGC::LB_ENEMY_HP_LIMIT].max,
KGC::LB_ENEMY_HP_LIMIT].min
@hp = [@hp, self.maxhp].min
end
def maxsp=(maxsp)
@maxsp_plus += maxsp - self.maxsp
@maxsp_plus = [[@maxsp_plus, -KGC::LB_ENEMY_SP_LIMIT].max,
KGC::LB_ENEMY_SP_LIMIT].min
@sp = [@sp, self.maxsp].min
end
def str=(str)
@str_plus += str - self.str
@str_plus = [[@str_plus, -KGC::LB_ENEMY_ETC_LIMIT].max,
KGC::LB_ENEMY_ETC_LIMIT].min
end
def dex=(dex)
@dex_plus += dex - self.dex
@dex_plus = [[@dex_plus, -KGC::LB_ENEMY_ETC_LIMIT].max,
KGC::LB_ENEMY_ETC_LIMIT].min
end
def agi=(agi)
@agi_plus += agi - self.agi
@agi_plus = [[@agi_plus, -KGC::LB_ENEMY_ETC_LIMIT].max,
KGC::LB_ENEMY_ETC_LIMIT].min
end
def int=(int)
@int_plus += int - self.int
@int_plus = [[@int_plus, -KGC::LB_ENEMY_ETC_LIMIT].max,
KGC::LB_ENEMY_ETC_LIMIT].min
end
end
class Game_Battler
alias attack_effect_KGC_LimitBreak attack_effect
def attack_effect(attacker)
last_hp = self.hp
result = attack_effect_KGC_LimitBreak(attacker)
if result && self.damage.is_a?(Numeric) && self.damage > 0
if KGC::LB_DAMAGE_CORRECT
self.damage = self.damage * KGC::LB_MAXHP_REVISE * 3 / 400
if $imported["BonusGauge"]
self.base_damage = self.base_damage * KGC::LB_MAXHP_REVISE * 3 /
400
end
end
self.hp = last_hp
self.hp -= self.damage
end
return result
end
alias skill_effect_KGC_LimitBreak skill_effect
def skill_effect(user, skill)
last_hp = self.hp
result = skill_effect_KGC_LimitBreak(user, skill)
if result &&
!skill.element_set.include?($game_special_elements["spirit_id"]) &&
($imported["RateDamage"] && KGC.check_damage_rate(skill) == nil) &&
($imported["SPCostAlter"] && KGC.check_sp_rate(skill) == nil)
if self.damage.is_a?(Numeric)
if KGC::LB_DAMAGE_CORRECT
self.damage = self.damage * KGC::LB_MAXHP_REVISE * 3 / 400
end
self.base_damage = self.damage if $imported["BonusGauge"]
self.hp = last_hp
self.hp -= self.damage
end
end
return result
end
end
class Game_Actor < Game_Battler
def make_exp_list
actor = $data_actors[@actor_id]
@exp_list[1] = 0
pow_i = 2.4 + actor.exp_inflation / 100.0
(2..(self.final_level + 1)).each { |i|
if i > self.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
def exp=(exp)
if $imported["ExpGoldIncrease"]
inc_exp = 100
self.states.compact.each { |state|
if $data_states[state].name =~ $game_special_states["inc_exp"]
inc_exp *= $1.to_i
inc_exp /= 100
end
}
exp = exp * inc_exp / 100
end
@exp = [[exp, KGC::LB_ACTOR_EXP_LIMIT].min, 0].max
while @exp >= @exp_list[@level+1] and @exp_list[@level+1] > 0
@level += 1
$data_classes[@class_id].learnings.each { |j|
if j.level == @level
learn_skill(j.skill_id)
end
}
end
while @exp < @exp_list[@level]
@level -= 1
end
if @level >= 100
self.restore_parameter
end
@hp = [@hp, self.maxhp].min
@sp = [@sp, self.maxsp].min
end
def restore_parameter
return if @level < 100
$data_actors[@actor_id].parameters.resize(6, @level + 1)
(0..5).each { |k|
if $data_actors[@actor_id].parameters[k, @level] == 0
calc_text = KGC::LB_ACTOR_LV100_CALC
calc_text.gsub!(/lv/i) { "@level" }
calc_text.gsub!(/p\[(\d+)\]/i) {
"$data_actors[@actor_id].parameters[k, #{$1.to_i}]" }
n = $data_actors[@actor_id].parameters[k, 99]
n += eval(calc_text)
$data_actors[@actor_id].parameters[k, @level] = [n, 32767].min
end
}
end
def maxhp
n = [[base_maxhp + @maxhp_plus, 1].max, KGC::LB_ACTOR_HP_LIMIT].min
@states.each { |i| n *= $data_states[i].maxhp_rate / 100.0 }
n = [[Integer(n), 1].max, KGC::LB_ACTOR_HP_LIMIT].min
return n
end
def base_maxhp
restore_parameter if $data_actors[@actor_id].parameters[0, @level] ==
nil
n = $data_actors[@actor_id].parameters[0, @level]
n *= KGC::LB_MAXHP_REVISE
return n / 100
end
def maxsp
n = [[base_maxsp + @maxsp_plus, 0].max, KGC::LB_ACTOR_SP_LIMIT].min
@states.each { |i| n *= $data_states[i].maxsp_rate / 100.0 }
n = [[Integer(n), 1].max, KGC::LB_ACTOR_SP_LIMIT].min
return n
end
def base_maxsp
restore_parameter if $data_actors[@actor_id].parameters[1, @level] ==
nil
n = $data_actors[@actor_id].parameters[1, @level]
n *= KGC::LB_MAXSP_REVISE
return n / 100
end
alias base_str_KGC_LimitBreak base_str
def base_str
restore_parameter if $data_actors[@actor_id].parameters[2, @level] ==
nil
if $imported["EquipExtension"]
n = base_str_KGC_LimitBreak
else
n = $data_actors[@actor_id].parameters[2, @level]
weapon = $data_weapons[@weapon_id]
n += weapon != nil ? weapon.str_plus : 0
(1..4).each { |i|
eval("armor = $data_armors[@armor#{i}_id];".concat(
"n += armor != nil ? armor.str_plus : 0"))
}
end
return [[n * KGC::LB_STR_REVISE / 100, 1].max,
KGC::LB_ACTOR_ETC_LIMIT].min
end
alias base_dex_KGC_LimitBreak base_dex
def base_dex
restore_parameter if $data_actors[@actor_id].parameters[3, @level] ==
nil
if $imported["EquipExtension"]
n = base_dex_KGC_LimitBreak
else
n = $data_actors[@actor_id].parameters[3, @level]
weapon = $data_weapons[@weapon_id]
n += weapon != nil ? weapon.dex_plus : 0
(1..4).each { |i|
eval("armor = $data_armors[@armor#{i}_id];".concat(
"n += armor != nil ? armor.dex_plus : 0"))
}
end
return [[n * KGC::LB_DEX_REVISE / 100, 1].max,
KGC::LB_ACTOR_ETC_LIMIT].min
end
alias base_agi_KGC_LimitBreak base_agi
def base_agi
restore_parameter if $data_actors[@actor_id].parameters[4, @level] ==
nil
if $imported["EquipExtension"]
n = base_agi_KGC_LimitBreak
else
n = $data_actors[@actor_id].parameters[4, @level]
weapon = $data_weapons[@weapon_id]
n += weapon != nil ? weapon.agi_plus : 0
(1..4).each { |i|
eval("armor = $data_armors[@armor#{i}_id];".concat(
"n += armor != nil ? armor.agi_plus : 0"))
}
end
return [[n * KGC::LB_AGI_REVISE / 100, 1].max,
KGC::LB_ACTOR_ETC_LIMIT].min
end
alias base_int_KGC_LimitBreak base_int
def base_int
restore_parameter if $data_actors[@actor_id].parameters[5, @level] ==
nil
if $imported["EquipExtension"]
n = base_int_KGC_LimitBreak
else
n = $data_actors[@actor_id].parameters[5, @level]
weapon = $data_weapons[@weapon_id]
n += weapon != nil ? weapon.int_plus : 0
(1..4).each { |i|
eval("armor = $data_armors[@armor#{i}_id];".concat(
"n += armor != nil ? armor.int_plus : 0"))
}
end
return [[n * KGC::LB_INT_REVISE / 100, 1].max,
KGC::LB_ACTOR_ETC_LIMIT].min
end
def level=(level)
level = [[level, self.final_level].min, 1].max
self.exp = @exp_list[level]
end
def final_level
return KGC::LB_ACTOR_LV_LIMIT[@actor_id] != nil ?
KGC::LB_ACTOR_LV_LIMIT[@actor_id] : KGC::LB_ACTOR_LV_LIMIT_DEFAULT
end
end
class Game_Enemy < Game_Battler
alias base_maxhp_KGC_LimitBreak base_maxhp
def base_maxhp
n = base_maxhp_KGC_LimitBreak
n *= KGC::LB_MAXHP_REVISE
return n / 100
end
alias base_maxsp_KGC_LimitBreak base_maxsp
def base_maxsp
n = base_maxsp_KGC_LimitBreak
n *= KGC::LB_MAXSP_REVISE
return n / 100
end
alias base_str_KGC_LimitBreak base_str
def base_str
n = base_str_KGC_LimitBreak
n *= KGC::LB_STR_REVISE
return n / 100
end
alias base_dex_KGC_LimitBreak base_dex
def base_dex
n = base_dex_KGC_LimitBreak
n *= KGC::LB_DEX_REVISE
return n / 100
end
alias base_agi_KGC_LimitBreak base_agi
def base_agi
n = base_agi_KGC_LimitBreak
n *= KGC::LB_AGI_REVISE
return n / 100
end
alias base_int_KGC_LimitBreak base_int
def base_int
n = base_int_KGC_LimitBreak
n *= KGC::LB_INT_REVISE
return n / 100
end
end
class Game_Party
def gain_gold(n)
@gold = [[@gold + n, 0].max, KGC::LB_GOLD_LIMIT].min
end
def gain_item(item_id, n)
if item_id > 0
@items[item_id] = [[item_number(item_id) + n, 0].max,
KGC::LB_ITEM_LIMIT].min
end
end
def gain_weapon(weapon_id, n)
if weapon_id > 0
@weapons[weapon_id] = [[weapon_number(weapon_id) + n, 0].max,
KGC::LB_ITEM_LIMIT].min
end
end
def gain_armor(armor_id, n)
if armor_id > 0
@armors[armor_id] = [[armor_number(armor_id) + n, 0].max,
KGC::LB_ITEM_LIMIT].min
end
end
endInformações adicionais
- Categoria: Programação XP
- Tags: Em revisão, Final Fantasy
- Adicionado por: LichKing
- Acessos: 319
Observação: se você gostou deste post ou ele lhe foi útil de alguma forma, por favor considere apoiar financeiramente a Gaming Room. Fico feliz só de ajudar, mas a contribuição do visitante é muito importante para que este site continua existindo e para que eu possa continuar provendo este tipo de conteúdo e melhorar cada vez mais. Acesse aqui e saiba como. Obrigado!
