¡Bienvenid@ a Mundo Maker!

¿Quieres aprender todo sobre el RPG Maker?



Regístrate y forma parte de Mundo Maker.
Conectarse

Recuperar mi contraseña

Temas importantes
----------------------------------------
Páginas con recursos RPG Maker
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
Afiliados
Estadísticas
Tenemos 3378 miembros registrados.
El último usuario registrado es Max003.

Nuestros miembros han publicado un total de 79744 mensajes en 11241 argumentos.
Navega con Google Chrome
[DESCARGA]

Habilidades que escalen con el nivel

 :: RPG Maker :: Ayuda RPG

Ver el tema anterior Ver el tema siguiente Ir abajo

RPG Maker XP Habilidades que escalen con el nivel

Mensaje por Noctámbulo el 2013-07-31, 16:48

No se si a vosotros os habrá pasado, pero a veces se da la situación de que por ejemplo tu personaje aprende la habilidad Fuego. Y diez niveles después, esta habilidad se vuelve un poco inútil y haces que el personaje aprenda Fuego+, así hasta que acabas al nivel 50 con Fuego++++++ xD

¿Alguien sabe algún truquito para que el poder de las habilidades escale un poco con el nivel del personaje?

Noctámbulo
Principiante
Principiante

1/3

Créditos 300

Gracias : 27

Volver arriba Ir abajo

RPG Maker XP Re: Habilidades que escalen con el nivel

Mensaje por rpgmanumaker el 2013-07-31, 17:16

No estoy muy seguro, pero creo que algo así no se puede hacer... Bueno, a lo mejor con un script, pero nunca he oído hablar de uno que haga eso...
De todos modos, las habilidades permiten implementar el uso de las características de los personajes tales como fuerza, magia, destreza... para aumentar su efectividad... Así que a medida que suben de nivel esas habilidades también se hacen mejores, ¿no?

rpgmanumaker
Veterano
Veterano

1/3

Créditos 678

Gracias : 23

Volver arriba Ir abajo

RPG Maker XP Re: Habilidades que escalen con el nivel

Mensaje por llavebulacio el 2013-07-31, 17:36

Podrías hacer que el heroe desaprenda la habilidad y aprenda una mejorada.
Igual esta bueno tener varios niveles de poder de cada habilidad, en mi opinión eso esta muy bueno para "regular" el ataque, ¿Y si a nuestro enemigo le queda tan poco de vida que conviene más usar "Fuego" que "Fuego+++++++++"?

llavebulacio
Principiante
Principiante

0/3

Créditos 304

Gracias : 6

http://deeditores.forosactivos.net

Volver arriba Ir abajo

RPG Maker XP Re: Habilidades que escalen con el nivel

Mensaje por orochii el 2013-07-31, 17:41

Se puede hacer a nivel de script, la cuestión es hacer que al subir de nivel debas ir retirando las previas. Eso simplemente te iría limpiando la lista xD.

Otra forma, ya sin scripts, es preparar y balancear los valores numéricos de forma que no haya necesidad de crear "habilidades duplicadas pero actualizadas".
En el RPG Maker XP es ponerles un valor moderado de daño base, y subir lo más posible el efecto de estadísticas en el daño. El VX es más o menos parecido en eso.
En el RMVXAce puedes en cambio escalar el daño por medio de una fórmula que incluya el nivel del personaje (dará problemas con los enemigos eso sí -_-U así que a ellos deberás hacerles técnicas específicamente hechas para ellos).
Ejemplo de fórmula de Ace:
Código:
40+(a.level * a.matk)*4 - (b.mdef * 2)
Esa fórmula claro tiene el problema que produce daño exponencial xDDD, así que hay que hacerle algo como esto...
Código:
40+(a.level/10.0 * a.matk).ceiling*4 - (b.mdef * 2)

Saludos xD,
Orochii Zouveleki

EDIT: Ah bueno, ahora que Llave dice eso de "desaprender", se puede hacer por engine xD. La cosa es un engine que haga algo como ésto:
Código:
Condición: Heroe1 Fuego+ aprendido
  Cambiar habilidad: Fuego olvidar
:fin

orochii
Caballero Shiro
Caballero Shiro

0/3

Créditos 6045

Gracias : 266

http://drekirokr.weebly.com/

Volver arriba Ir abajo

RPG Maker XP Re: Habilidades que escalen con el nivel

Mensaje por Avenger_K el 2013-07-31, 20:17

Hay un script que hace algo similar, la única diferencia es que en vez de cambiar la habilidad por otra nueva lo que hace es que la misma pueda subir de nivel y demás. No se si te valdrá o no, pero bueno, te lo pongo de todas formas.

Spoiler:

Código:
CODE
#==============================================================================
# Skill Update   Ver. 4.6.1                     by Claimh
#------------------------------------------------------------------------------
#     Power rise, consumption SP decrease, and hit rate rise
#     the skill experience value is displayed by the use of the skill while
#     combatting introducing the level system in each skill: Draw_skill_exp
#
#     Comment from Cygnea: There was a lot of translating to do it in script
#     and it took forever.
#     Traduccion de los Comentarios de Cygnea: KillerG
#==============================================================================

module Skill_updata
S_MIGHT = []
S_COST = []
S_HIT = []
S_LEVEL = []
S_INTER = []
S_SLOPE = []
S_ANIME = []
S_ELEMENT = []
S_STATE_P = []
S_STATE_N = []
#==============================================================================
# Customizing point
#==============================================================================
#----------------------------------------------------------------------------
# Šî–{Ý’èi‚±‚±‚¾‚¯Ý’è‚·‚ê‚΁AŒã‚Í‚¢‚ç‚È‚¢‚©‚à ‚µ‚ê‚Ü‚¹‚ñj
#----------------------------------------------------------------------------
# Aumentar el Poder
SKILL_MIGHT_UP = true          # No = false
# Decrese el consumo de SP
SP_COST_DOWN = true            # No = false
# Aumenta las probabilidades de Golpe
SKILL_HIT_UP = true            # No = false
# Cambiar el Atributo(si se usa)
ELEMENT_CHANGE = true          # No = false
# Cambiar el Estado (si se usa)
STATE_CHANGE = true            # No = false

# Rise indication is done
SHOW_SKILL_LV_UP = true        # No = false
# Lv raise SE
SKILLUP_SE = "056-Right02"     # •K—v‚È‚¢‚È‚çnil
# Aumenta de nivel en el menu(ej: Tecnicas curativas)(No indica cuando sube ni que sube)
MENU_COUNT = false

# Inseguro sobre esto.. Creo que significa que haya una pausa antes de volver
# a incrementar de niveles
UPDATA_INTERVAL = 2            # 1 o mas
# Limite de Nivel
LEVEL_LIMIT = 20               # 1 o mas

# Aumento de poder(%)
MIGHT_RATE = 0.5
# Cantidad de reduccion de consumo de SP(%)
COST_RATE = 3
# Aumento de Probabilidad de Golpe(%)
HIT_RATE = 1

#----------------------------------------------------------------------------
# Detalles y Skills clasificadas por actor
#----------------------------------------------------------------------------
# Nivel Limite
# S_LEVEL[ID de la Skill] = [ID_del_Actor=>Aumento de poder, ...]
# Cuando no hay nada puesto, -> Configuracion basica(LEVEL_LIMIT)
# Cuando la ID_ del Actor es 0, Significa que va para todos los actores
S_LEVEL[57] = {0=>10,1=>18, 2=>12, 3=>5, 4=>12, 5=>12, 6=>12, 7=>12, 8=>12}
S_LEVEL[61] = {0=>10,1=>12, 2=>18, 3=>15, 4=>12, 5=>12, 6=>12, 7=>12, 8=>12}

# Escala de Aumento de Poder de las Skills por Actor
# S_MIGHT[ID_de la Skill] = [ID_Del Actor => Escala de Aumento de Poder, ...]
# Cuando no hay nada puesto, -> Configuracion basica(LEVEL_LIMIT)
# Cuando la ID_ del Actor es 0, Significa que va para todos los actores
S_MIGHT[57] = {0=>2,1=>8, 2=>2, 3=>5, 4=>2, 5=>2, 6=>2, 7=>2, 8=>2}
S_MIGHT[61] = {0=>2,1=>2, 2=>8, 3=>5, 4=>2, 5=>2, 6=>2, 7=>2, 8=>2}

# Reduccion de Costo de SP clasificada por Actor
# S_COST[ID_De la Skill] = [ID_Del Actor => Reduccion de Consumo de SP, ...]
# Cuando no hay ninguna configuracion, -> Configuracion Basica(COST_RATE)
# Cuando la ID_ del Actor es 0, Significa que va para todos los actores
S_COST[57] = {0=>2,1=>8, 2=>2, 3=>5, 4=>2, 5=>2, 6=>2, 7=>2, 8=>2}
S_COST[61] = {0=>2,1=>2, 2=>8, 3=>5, 4=>2, 5=>2, 6=>2, 7=>2, 8=>2}

# Aumento de Probabilidad de Golpe clasificada por Actor
# S_HIT[ID_de la Skill] = [ID_del actor => Escala de Probabilidad de Golpe,...]
# Cuando no hay nada configurado, -> Configuracion Basica(HIT_RATE)
# Cuando la ID_ del Actor es 0, Significa que va para todos los actores
S_HIT[57] = {0=>1,1=>2, 2=>1, 3=>1, 4=>1, 5=>1, 6=>1, 7=>1, 8=>1}
S_HIT[61] = {0=>1,1=>1, 2=>2, 3=>1, 4=>1, 5=>1, 6=>1, 7=>1, 8=>1}

#----------------------------------------------------------------------------
# Detalles en el Crecimiento de la Skill
#----------------------------------------------------------------------------
# Crecimiento de la Skill
# 0: Cuando la Skills es usada uniformemente, Sube de NV
# 1: Cuando La Skills es usada segun el Lvl del actor y es usada varias veces, sube de lvl
SKILL_PATTERN = 0

# Intervalos de aumento de Lvl de la Skill
# S_INTER[ID_de la SKill] = [ID_Del actor => Intervalo de Crecimiento,...]
# Cuando no hay nada configurado, -> Configuracion Basica(UPDATA_INTERVAL)
# Cuando la ID_ del Actor es 0, Significa que va para todos los actores
S_INTER[57] = {0=>10,1=>5, 2=>8, 3=>8, 4=>8, 5=>8, 6=>8, 7=>8, 8=>8}

# Inclinacion del crecimiento de la Skill
# Solo cuando es usado la opcion 1, necesariamente
# S_SLOPEID_de la skill = [ID_del actor => Crecimiento de la Inclinacion, ...]
# Cuando la ID_ del Actor es 0, Significa que va para todos los actores
S_SLOPE[57] = {0=>10,1=>5, 2=>8, 3=>8, 4=>8, 5=>8, 6=>8, 7=>8, 8=>8}

#----------------------------------------------------------------------------
# Cuando la Skill aumenta de lvl, cambia la animacion(
#  Entry Form S_ANIME[ID_de la Skill] = [ ID_Del Actor= { [ Nivel, ID_De la animacion ] },...
#----------------------------------------------------------------------------
# Cambiar la Animacion de la Skill cuando esta sube de nivel?
USE_S_ANIME = true

# Un Ejemplo
# Cuando Cruz Sagrada llega al lvl 5 y 10, su animacion cambia
# Para otro puede ser cuando llega a nivel 11 , cambia la animacion
# Cuando la ID_ del Actor es 0, Significa que va para todos los actores
S_ANIME[57] = {0=>[[5, 69]], 1=>[[5, 69], [10, 70]], 2=>[[11, 70]]}

#----------------------------------------------------------------------------
# Si los Atributos/Estados cambian
#----------------------------------------------------------------------------
# Cambia el Atributo
# S_ELEMENT[ID_De la Skill] = {ID_ Del Actior= {nivel = [ ID del Atributo y ID del Atributo... ]}, ...}
# Cuando la ID_ del Actor es 0, Significa que va para todos los actores
S_ELEMENT[57] = {1=>{1=>[1], 2=>[2], 3=>[3]}, 2=>{1=>[2], 2=>[5]}}

# Agregar un Cambio de Estado (+)
# S_STATE_P[ID_De la Skill] = ID_ Del Actor= {Nivel = [ ID del Estado y ID del Estado... ]}, ...}
# Cuando la ID_ del Actor es 0, Significa que va para todos los actores
S_STATE_P[57] = {1=>{1=>[1], 2=>[2], 3=>[3]}, 2=>{1=>[2], 2=>[5]}}

# Remover un Estado (-)
# S_STATE_N[ID_De la Skill] = {ID_ Del Actor= {Nivel = [ ID del Estado y ID del Estado... ]}, ...}
# Cuando la ID_ del Actor es 0, Significa que va para todos los actores
S_STATE_N[57] = {1=>{1=>[1], 2=>[2], 3=>[3]}, 2=>{1=>[2], 2=>[5]}}

#==============================================================================
#   Customizing End Point
#==============================================================================
end


class Game_Actor
include Skill_updata
attr_accessor   :skill_use      # Æ’XÆ’Lƒ‹Žg—p‰ñ”
attr_accessor   :skill_level    # Æ’XÆ’Lƒ‹ƒŒƒxƒ‹
attr_accessor   :skill_power    # Æ’XÆ’Lƒ‹ˆÐ—͍XV’l
attr_accessor   :skill_sp_cost  # Æ’XÆ’Lƒ‹SPÁ”ïXV’l
attr_accessor   :skill_hit      # Æ’XÆ’Lƒ‹–½’†—¦
attr_accessor   :skill_up       # Æ’Å’Æ’xƒ‹ƒAÆ’bÆ’vÆ’tƒ‰ƒO
attr_accessor   :skill_list     # Æ’XÆ’Lƒ‹EXPÆ’Å Æ’XÆ’g
alias skill_updata_init setup
def setup(actor_id)
  skill_updata_init(actor_id)
  @skill_use = []
  @skill_level = []
  @skill_power = []
  @skill_sp_cost = []
  @skill_hit = []
  @skill_up = false
  @skill_list = []
  for id in 1...$data_skills.size
    @skill_use[id] = 0
    @skill_level[id] = 0
    @skill_power[id] = $data_skills[id].power
    @skill_sp_cost[id] = $data_skills[id].sp_cost
    @skill_hit[id] = $data_skills[id].hit
    @skill_list[id] = make_skill_list(id)
  end
end

#--------------------------------------------------------------------------
# œ ƒXƒLƒ‹EXP ŒvŽZ
#--------------------------------------------------------------------------
def make_skill_list(skill_id)
  interval = S_INTER[skill_id]
  if !interval.nil? and !interval[@actor_id].nil?
    up_interval = interval[@actor_id]
  elsif !interval.nil? and !interval[0].nil?
    up_interval = interval[0]
  else
    up_interval = UPDATA_INTERVAL
  end
  # Å’X‚«
  slope = S_SLOPE[skill_id]
  if !slope.nil? and !slope[@actor_id].nil?
    up_slope = slope[@actor_id]
  elsif !slope.nil? and !slope[0].nil?
    up_slope = slope[0]
  else
    up_slope = 1
  end
  limit = S_LEVEL[skill_id]
  # ŒÀŠEÆ’Å’Æ’xƒ‹
  if !limit.nil? and !limit[@actor_id].nil?
    limit_lv = limit[@actor_id]
  elsif !limit.nil? and !limit[0].nil?
    limit_lv = limit[0]
  else
    limit_lv = LEVEL_LIMIT
  end
  list = []
  list[0] = 0
  # Æ’XÆ’Lƒ‹EXPÆ’Å Æ’XÆ’gì¬
  for lv in 1...limit_lv+1
    exp = 0
    case SKILL_PATTERN
    when 0
      exp = up_interval * lv
    when 1
      exp = list[lv-1] + up_slope * lv + up_interval
    end
    list[lv] = exp.truncate
  end
  return list
end
end


class Game_Battler
include Skill_updata
#--------------------------------------------------------------------------
# œ ƒXƒLƒ‹‚ÌŒø‰“K—pi‚â‚â‹*ˆøBj
#--------------------------------------------------------------------------
alias skill_effect_update skill_effect
def skill_effect(user, skill)
  up_flag = false
  if user.is_a?(Game_Actor) and ($scene.is_a?(Scene_Battle) or MENU_COUNT)
    skill_update_main(user, skill)
    skill_base = $data_skills[skill.id].dup
    # ˆÐ—͏㏸
    if SKILL_MIGHT_UP
      skill.power = user.skill_power[skill.id]
    end
    # –½’†—¦ã¸
    if SKILL_HIT_UP
      skill.hit = user.skill_hit[skill.id]
    end
    # ‘®«•Ï‰»
    if ELEMENT_CHANGE and S_ELEMENT != []
      ele1 = S_ELEMENT[skill.id]
      if !ele1.nil? and !ele1[user.id].nil?
        ele2 = ele1[user.id]
      elsif !ele1.nil? and !ele1[0].nil?
        ele2 = ele1[0]
      else
        # Ý’肪‚È‚¢‚È‚ç–³Ž‹
        ele2 = nil
      end
      if !ele2.nil? and ele2[user.skill_level[skill.id]] != nil
        skill.element_set = ele2[user.skill_level[skill.id]]
      end
    end
    # Æ’XÆ’e[Æ’g•Ï‰»
    if STATE_CHANGE
      if S_STATE_P != []
        pst1 = S_STATE_P[skill.id]
        if !pst1.nil? and !pst1[user.id].nil?
          pst2 = pst1[user.id]
        elsif !pst1.nil? and !pst1[0].nil?
          pst2 = pst1[0]
        else
          # Ý’肪‚È‚¢‚È‚ç–³Ž‹
          pst2 = nil
        end
        if pst2 != nil and pst2[user.skill_level[skill.id]] != nil
          skill.plus_state_set = pst2[user.skill_level[skill.id]]
        end
      end
      if S_STATE_N != []
        nst1 = S_STATE_N[skill.id]
        if !nst1.nil? and !nst1[user.id].nil?
          nst2 = nst1[user.id]
        elsif !nst1.nil? and !nst1[0].nil?
          nst2 = nst1[0]
        else
          # Ý’肪‚È‚¢‚È‚ç–³Ž‹
          nst2 = nil
        end
        if nst1 != nil and nst2[user.skill_level[skill.id]] != nil
          skill.minus_state_set = nst2[user.skill_level[skill.id]]
        end
      end
    end
    up_flag = true
  end
  ret = skill_effect_update(user, skill)    # Œ´•¨
  if up_flag
    $data_skills[skill.id] = skill_base.dup
    # MissŽž‚É‚ÍŒã–ß‚µ
    if self.damage == "Miss"
      skill_use_recount(user, skill)
    end
  end
  return ret
end

#--------------------------------------------------------------------------
# œ ƒXƒLƒ‹ƒAƒbƒvƒJƒEƒ“ƒg
#--------------------------------------------------------------------------
def skill_update_main(actor, skill)
  # Æ’XÆ’Lƒ‹Žg—p‰ñ”‚̃JÆ’Eƒ“ƒg
  actor.skill_use[skill.id] += 1
  # Æ’Å Æ’~Æ’bÆ’gŽæ“¾
  limit = S_LEVEL[skill.id]
  if !limit.nil? and !limit[actor.id].nil?
    s_limit = limit[actor.id]
  elsif !limit.nil? and !limit[0].nil?
    s_limit = limit[0]
  else
    s_limit = LEVEL_LIMIT
  end
  # ‘‚«Š·‚¦ŒÀŠE“ž’B
  if s_limit == false or actor.skill_level[skill.id] < s_limit
    # Æ’Å’Æ’xƒ‹ƒAÆ’bÆ’vŠÔŠuŽæ“¾
    interval = actor.skill_list[skill.id]
    # ‘‚«Š·‚¦‰ñ”“ž’B
    if actor.skill_use[skill.id] == interval[actor.skill_level[skill.id]+1]
      # Æ’XÆ’Lƒ‹ƒŒƒxƒ‹ã¸
      actor.skill_level[skill.id] += 1
      actor.skill_up = true
      # ˆÐ—͏㏸ = —Lο
      if SKILL_MIGHT_UP
        might = S_MIGHT[skill.id]
        if !might.nil? and !might[actor.id].nil?
          might_rate = might[actor.id]
        elsif !might.nil? and !might[0].nil?
          might_rate = might[0]
        else
          might_rate = MIGHT_RATE
        end
        # •â³’lXV
        actor.skill_power[skill.id] += skill.power * might_rate / 100
        actor.skill_power[skill.id] = actor.skill_power[skill.id].truncate
      end
      # SPÁ”* = —Lο
      if SP_COST_DOWN
        cost = S_COST[skill.id]
        if !cost.nil? and !cost[actor.id].nil?
          cost_rate = cost[actor.id]
        elsif !cost.nil? and !cost[0].nil?
          cost_rate = cost[0]
        else
          cost_rate = COST_RATE
        end
        actor.skill_sp_cost[skill.id] -= skill.sp_cost * cost_rate / 100
        actor.skill_sp_cost[skill.id] = actor.skill_sp_cost[skill.id].truncate
        # SPÁ”0ˆÈ‰º‚Í‚ ‚肦‚È‚¢
        if actor.skill_sp_cost[skill.id] < 0
          actor.skill_sp_cost[skill.id] = 0
        end
      end
      # –½’†—¦ã¸ = —Lο
      if SKILL_HIT_UP
        hit = S_HIT[skill.id]
        if !hit.nil? and !hit[actor.id].nil?
          hit_rate = hit[actor.id]
        elsif !hit.nil? and !hit[0].nil?
          hit_rate = hit[0]
        else
          hit_rate = HIT_RATE
        end
        actor.skill_hit[skill.id] += skill.hit * hit_rate / 100
        actor.skill_hit[skill.id] = actor.skill_hit[skill.id].truncate
        # 100ˆÈã‚Í‚ ‚肦‚È‚¢
        if actor.skill_hit[skill.id] > 100
          actor.skill_hit[skill.id] = 100
        end
      end
    end
  end
end

#--------------------------------------------------------------------------
# œ ÄƒJƒEƒ“ƒg
#--------------------------------------------------------------------------
def skill_use_recount(actor, skill)
  if actor.skill_up
    actor.skill_level[skill.id] -= 1
    # ˆÐ—Í‚ðÄŒvŽZ
    if SKILL_MIGHT_UP
      actor.skill_power[skill.id] = skill.power
      might = S_MIGHT[skill.id]
      if !might.nil? and !might[actor.id].nil?
        might_rate = might[actor.id]
      elsif !might.nil? and !might[0].nil?
        might_rate = might[0]
      else
        might_rate = MIGHT_RATE
      end
      for i in 1...actor.skill_level[skill.id]
        actor.skill_power[skill.id] += skill.power * might_rate / 100
        actor.skill_power[skill.id] = actor.skill_power[skill.id].truncate
      end
    end
    # SPÁ”ïÄŒvŽZ
    if SP_COST_DOWN
      actor.skill_sp_cost[skill.id] = skill.sp_cost
      cost = S_COST[skill.id]
      if !cost.nil? and !cost[actor.id].nil?
        cost_rate = cost[actor.id]
      elsif !cost.nil? and !cost[0].nil?
        cost_rate = cost[0]
      else
        cost_rate = COST_RATE
      end
      for i in 1...actor.skill_level[skill.id]
        actor.skill_sp_cost[skill.id] -= skill.sp_cost * cost_rate / 100
        actor.skill_sp_cost[skill.id] = actor.skill_sp_cost[skill.id].truncate
      end
      # SPÁ”0ˆÈ‰º‚Í‚ ‚肦‚È‚¢
      if actor.skill_sp_cost[skill.id] < 0
        actor.skill_sp_cost[skill.id] = 0
      end
    end
    # –½’†—¦ÄŒvŽZ
    if SKILL_HIT_UP
      actor.skill_hit[skill.id] = skill.hit
      hit = S_HIT[skill.id]
      if !hit.nil? and !hit[actor.id].nil?
        hit_rate = hit[actor.id]
      elsif !hit.nil? and !hit[0].nil?
        hit_rate = hit[0]
      else
        hit_rate = HIT_RATE
      end
      for i in 1...actor.skill_level[skill.id]
        actor.skill_hit[skill.id] += skill.hit * hit_rate / 100
        actor.skill_hit[skill.id] = actor.skill_hit[skill.id].truncate
      end
      # 100ˆÈã‚Í‚ ‚肦‚È‚¢
      if actor.skill_hit[skill.id] > 100
        actor.skill_hit[skill.id] = 100
      end
    end
    actor.skill_up = false
  end
  actor.skill_use[skill.id] -= 1
end
end

#==============================================================================
# ƒXƒLƒ‹¬’·‚É‚æ‚éƒAƒjƒ[ƒVƒ‡ƒ“•Ï‰»
#==============================================================================
class Scene_Battle
include Skill_updata
#--------------------------------------------------------------------------
# œ ƒtƒŒ[ƒ€XV (ƒƒCƒ“ƒtƒF[ƒY ƒXƒeƒbƒv 4 : ‘Ώۑ¤ƒAƒjƒ[ƒVƒ‡ƒ“)
#--------------------------------------------------------------------------
alias update_phase4_step4_skillup update_phase4_step4
def update_phase4_step4
  update_phase4_step4_skillup
  if @active_battler.is_a?(Game_Actor) and USE_S_ANIME
    s_anime = S_ANIME[@skill.id]
    if !s_anime.nil? and !s_anime[@active_battler.id].nil?
      s_anime_set = s_anime[@active_battler.id]
    elsif !s_anime.nil? and !s_anime[0].nil?
      s_anime_set = s_anime[0]
    else
      # Ý’肪‚È‚¢‚È‚ç–³Ž‹
      return
    end
    for i in 0...s_anime_set.size
      s_anime_def = s_anime_set[i]
      # ‹K’背ƒxƒ‹ˆÈã‚È‚çƒAÆ’jƒ[Æ’Vƒ‡ƒ“•Ï‰»
      if @active_battler.skill_level[@skill.id] >= s_anime_def[0]
        # ‘Ώۑ¤ƒAÆ’jƒ[Æ’Vƒ‡ƒ“‚ðÝ’è
        for target in @target_battlers
          target.animation_id = s_anime_def[1]
        end
      end
    end
  end
end
end

#==============================================================================
# ˆÈ‰ºAƒŒƒxƒ‹ƒAƒbƒv•\Ž¦•”•ªiƒŒƒxƒ‹ƒAƒbƒv•\Ž¦‚ª‚¢‚ç‚È‚¢‚È‚çÁ‚µ‚Ä‚à OKj
#==============================================================================
class Scene_Battle
include Skill_updata
if SHOW_SKILL_LV_UP
#--------------------------------------------------------------------------
# œ ƒtƒŒ[ƒ€XV (ƒƒCƒ“ƒtƒF[ƒY ƒXƒeƒbƒv 2 : ƒAƒNƒVƒ‡ƒ“ŠJŽn)
#--------------------------------------------------------------------------
alias update_phase4_step2_skillup update_phase4_step2
def update_phase4_step2
  if @active_battler.is_a?(Game_Actor)
    @active_battler.skill_up = false
  end
  @skillup = false
  update_phase4_step2_skillup   # Œ´•¨
end

#--------------------------------------------------------------------------
# œ ƒtƒŒ[ƒ€XV (ƒƒCƒ“ƒtƒF[ƒY ƒXƒeƒbƒv 3 : s“®‘¤ƒAƒjƒ[ƒVƒ‡ƒ“)
#--------------------------------------------------------------------------
alias update_phase4_step3_skillup update_phase4_step3
def update_phase4_step3
  if @active_battler.is_a?(Game_Actor) and @active_battler.skill_up != false
    @skillup = true
    @skill_up_window = Window_Skillup.new(@active_battler)
    if SKILLUP_SE != nil
      Audio.se_play("Audio/SE/" + SKILLUP_SE)
      sleep(0.1)
    end
  end
  update_phase4_step3_skillup
end

#--------------------------------------------------------------------------
# œ ƒtƒŒ[ƒ€XV (ƒƒCƒ“ƒtƒF[ƒY ƒXƒeƒbƒv 5 : ƒ_ƒ[ƒW•\Ž¦)
#--------------------------------------------------------------------------
alias update_phase4_step5_skillup update_phase4_step5
def update_phase4_step5
  if @active_battler.is_a?(Game_Actor) and @skillup
    @skill_up_window.dispose
    @active_battler.skill_up = false
    @skillup = false
  end
  update_phase4_step5_skillup     # Œ´•¨
end

#--------------------------------------------------------------------------
# œ ƒtƒŒ[ƒ€XV
#--------------------------------------------------------------------------
alias update_skillup update
def update
  if @active_battler.is_a?(Game_Actor) and @active_battler.skill_up and @skillup
    @skill_up_window.contents_opacity -= 4
  end
  update_skillup              # Œ´•¨
end
end # if SHOW_SKILL_LV_UP
end

class Window_Skillup < Window_Base
#--------------------------------------------------------------------------
# œ ƒIƒuƒWƒFƒNƒg‰Šú‰»
#     actor : Æ’AÆ’NÆ’^[
#--------------------------------------------------------------------------
def initialize(actor)
  super(actor.screen_x-140, 260, 250, 64)
  self.contents = Bitmap.new(width - 32, height - 32)
  self.opacity = 0
  self.contents.font.color = Color.new(255, 64, 0)
  self.contents.draw_text(80, 0, 150, 32, "LEVEL UP!")
end
end



#==============================================================================
# Below, the redefinition part is included, if (function of SP consumption
# decrease does not need, turning off, OK)
#==============================================================================
class Window_Skill < Window_Selectable
#--------------------------------------------------------------------------
# œ €–Ú‚Ì•`‰æiÄ’è‹`j
#     index : €–ڔԍâ€
#--------------------------------------------------------------------------
def draw_item(index)
  skill = @data[index]
  if @actor.skill_can_use?(skill.id)
    self.contents.font.color = normal_color
  else
    self.contents.font.color = disabled_color
  end
  x = 4 + index % 2 * (288 + 32)
  y = index / 2 * 32
  rect = Rect.new(x, y, self.width / @column_max - 32, 32)
  self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
  bitmap = RPG::Cache.icon(skill.icon_name)
  opacity = self.contents.font.color == normal_color ? 255 : 128
  self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24), opacity)
#-C³----- #Level Information Display#
  @actor.skill_level[skill.id] = 0 if @actor.skill_level[skill.id] == nil
  name_level = skill.name + " (Level" + @actor.skill_level[skill.id].to_s + ")"
  self.contents.draw_text(x + 28, y, 204, 32, name_level, 0)
  @actor.skill_sp_cost[skill.id] = skill.sp_cost if @actor.skill_sp_cost[skill.id] == nil
  self.contents.draw_text(x + 232, y, 48, 32, @actor.skill_sp_cost[skill.id].to_s, 2)
#----------
end
end

class Scene_Skill
#--------------------------------------------------------------------------
# œ ƒtƒŒ[ƒ€XV (ƒ^[ƒQƒbƒgƒEƒBƒ“ƒhƒE‚ªƒAƒNƒeƒBƒu‚̏ꍇ)iÄ’è‹`j
#--------------------------------------------------------------------------
def update_target
  # B Æ’{Æ’^ƒ“‚ª‰Ÿ‚³‚ꂽê‡
  if Input.trigger?(Input::B)
    # Æ’Lƒƒƒ“ƒZƒ‹ SE ‚ð‰‰‘t
    $game_system.se_play($data_system.cancel_se)
    # Æ’^[Æ’QÆ’bÆ’gÆ’EÆ’Bƒ“ƒhÆ’E‚ðÁ‹Ž
    @skill_window.active = true
    @target_window.visible = false
    @target_window.active = false
    return
  end
  # C Æ’{Æ’^ƒ“‚ª‰Ÿ‚³‚ꂽê‡
  if Input.trigger?(Input::C)
    # SP Ø‚ê‚È‚Ç‚ÅŽg—p‚Å‚«‚È‚*‚È‚Á‚½ê‡
    unless @actor.skill_can_use?(@skill.id)
      # Æ’uÆ’U[ SE ‚ð‰‰‘t
      $game_system.se_play($data_system.buzzer_se)
      return
    end
    # Æ’^[Æ’QÆ’bÆ’g‚ª‘S‘̂̏ꍇ
    if @target_window.index == -1
      # Æ’p[Æ’eÆ’B‘S‘̂ɃXÆ’Lƒ‹‚ÌŽg—pŒø‰‚ð“K—p
      used = false
      for i in $game_party.actors
        used |= i.skill_effect(@actor, @skill)
      end
    end
    # Æ’^[Æ’QÆ’bÆ’g‚ªŽg—pŽÒ‚̏ꍇ
    if @target_window.index <= -2
      # Æ’^[Æ’QÆ’bÆ’g‚̃AÆ’NÆ’^[‚ɃXÆ’Lƒ‹‚ÌŽg—pŒø‰‚ð“K—p
      target = $game_party.actors[@target_window.index + 10]
      used = target.skill_effect(@actor, @skill)
    end
    # Æ’^[Æ’QÆ’bÆ’g‚ª’P‘̂̏ꍇ
    if @target_window.index >= 0
      # Æ’^[Æ’QÆ’bÆ’g‚̃AÆ’NÆ’^[‚ɃXÆ’Lƒ‹‚ÌŽg—pŒø‰‚ð“K—p
      target = $game_party.actors[@target_window.index]
      used = target.skill_effect(@actor, @skill)
    end
    # Æ’XÆ’Lƒ‹‚ðŽg‚Á‚½ê‡
    if used
      # Æ’XÆ’Lƒ‹‚ÌŽg—pŽž SE ‚ð‰‰‘t
      $game_system.se_play(@skill.menu_se)
#-----C³------------------------------------------------------
      @actor.skill_sp_cost[@skill.id] = @skill.sp_cost if @actor.skill_sp_cost[@skill.id] == nil
      # SP Á”ï
      @actor.sp -= @actor.skill_sp_cost[@skill.id]
#---------------------------------------------------------------
      # Å eÆ’EÆ’Bƒ“ƒhÆ’E‚Ì“à —e‚ðÄì¬
      @status_window.refresh
      @skill_window.refresh
      @target_window.refresh
      # ‘S–ł̏ꍇ
      if $game_party.all_dead?
        # Æ’Q[ƒ€ƒI[Æ’o[‰æ–‚ɐ؂è‘Ö‚¦
        $scene = Scene_Gameover.new
        return
      end
      # Æ’Rƒ‚ƒ“ƒCÆ’xƒ“ƒg ID ‚ª—LŒø‚̏ꍇ
      if @skill.common_event_id > 0
        # Æ’Rƒ‚ƒ“ƒCÆ’xƒ“ƒgŒÄ‚яo‚µ—\–ñ
        $game_temp.common_event_id = @skill.common_event_id
        # Æ’}Æ’bÆ’v‰æ–‚ɐ؂è‘Ö‚¦
        $scene = Scene_Map.new
        return
      end
    end
    # Æ’XÆ’Lƒ‹‚ðŽg‚í‚È‚©‚Á‚½ê‡
    unless used
      # Æ’uÆ’U[ SE ‚ð‰‰‘t
      $game_system.se_play($data_system.buzzer_se)
    end
    return
  end
end
end

class Scene_Battle
include Skill_updata
#--------------------------------------------------------------------------
# œ ƒXƒLƒ‹ƒAƒNƒVƒ‡ƒ“ Œ‹‰ì¬
#--------------------------------------------------------------------------
alias make_skill_action_result_skill_update make_skill_action_result
def make_skill_action_result
  make_skill_action_result_skill_update
  # SP Á”ï
  if SP_COST_DOWN and @active_battler.is_a?(Game_Actor)
    @active_battler.sp += @skill.sp_cost
    @active_battler.sp -= @active_battler.skill_sp_cost[@skill.id]
  end
end
end

class Game_Battler
#--------------------------------------------------------------------------
# œ ƒXƒLƒ‹‚ÌŽg—p‰Â”\”»’è
#     skill_id : Æ’XÆ’Lƒ‹ ID
#--------------------------------------------------------------------------
alias skill_update_can_use? skill_can_use?
def skill_can_use?(skill_id)
  ret = skill_update_can_use?(skill_id)
  if !ret and SP_COST_DOWN
    # SP ‚ª‘«‚è‚È‚¢ê‡‚ÍŽg—p•s‰Â‚Æ‚È‚Á‚½H
    if $data_skills[skill_id].sp_cost > self.sp
      if self.is_a?(Game_Actor)
        skill_sp_cost = self.skill_sp_cost[skill_id]
        if skill_sp_cost < self.sp
          ret = true
        end
      end
    end
  end
  return ret
end
end

#==============================================================================
# ƒCƒxƒ“ƒgƒXƒNƒŠƒvƒg‘€ì
#==============================================================================
class Interpreter
include Skill_updata
#--------------------------------------------------------------------------
# œ ƒXƒLƒ‹ƒŒƒxƒ‹Ý’èiƒŒƒxƒ‹ƒZƒbƒgj
#     actor_id  :   Æ’AÆ’NÆ’^[ID
#     skill_id  :   Æ’XÆ’Lƒ‹ID
#     level     :   Ý’背ƒxƒ‹
#--------------------------------------------------------------------------
def set_skill_level(actor_id, skill_id, level)
  actor = $game_actors[actor_id]
  skill = $data_skills[skill_id]
  # Æ’Å Æ’~Æ’bÆ’gŽæ“¾
  limit = S_LEVEL[skill_id]
  if !limit.nil? and !limit[actor.id].nil?
    s_limit = limit[actor.id]
  elsif !limit.nil? and !limit[0].nil?
    s_limit = limit[0]
  else
    s_limit = LEVEL_LIMIT
  end
  if level > s_limit or level < 0
    return
  end
  # Æ’Å’Æ’xƒ‹
  actor.skill_level[skill.id] = level
  # Žg—p‰ñ”
  use_list = actor.skill_list[skill.id]
  actor.skill_use[skill.id] = use_list[level]
  # ˆÐ—Í‚ðÄŒvŽZ
  if SKILL_MIGHT_UP
    actor.skill_power[skill.id] = skill.power
    might = S_MIGHT[skill.id]
    if !might.nil? and !might[actor.id].nil?
      might_rate = might[actor.id]
    elsif !might.nil? and !might[0].nil?
      might_rate = might[0]
    else
      might_rate = MIGHT_RATE
    end
    for i in 0...level
      actor.skill_power[skill.id] += skill.power * might_rate / 100
      actor.skill_power[skill.id] = actor.skill_power[skill.id].truncate
    end
  end
  # SPÁ”ïÄŒvŽZ
  if SP_COST_DOWN
    actor.skill_sp_cost[skill.id] = skill.sp_cost
    cost = S_COST[skill.id]
    if !cost.nil? and !cost[actor.id].nil?
      cost_rate = cost[actor.id]
    elsif !cost.nil? and !cost[0].nil? and !cost.nil?
      cost_rate = cost[0]
    else
      cost_rate = COST_RATE
    end
    for i in 0...level
      actor.skill_sp_cost[skill.id] -= skill.sp_cost * cost_rate / 100
      actor.skill_sp_cost[skill.id] = actor.skill_sp_cost[skill.id].truncate
    end
    # SPÁ”0ˆÈ‰º‚Í‚ ‚肦‚È‚¢
    if actor.skill_sp_cost[skill.id] < 0
      actor.skill_sp_cost[skill.id] = 0
    end
  end
  # –½’†—¦ÄŒvŽZ
  if SKILL_HIT_UP
    actor.skill_hit[skill.id] = skill.hit
    hit = S_HIT[skill.id]
    if !hit.nil? and !hit[actor.id].nil?
      hit_rate = hit[actor.id]
    elsif !hit.nil? and !hit[0].nil? and !hit.nil?
      hit_rate = hit[0]
    else
      hit_rate = HIT_RATE
    end
    for i in 0...level
      actor.skill_hit[skill.id] += skill.hit * hit_rate / 100
      actor.skill_hit[skill.id] = actor.skill_hit[skill.id].truncate
    end
    # 100ˆÈã‚Í‚ ‚肦‚È‚¢
    if actor.skill_hit[skill.id] > 100
      actor.skill_hit[skill.id] = 100
    end
  end
end

#--------------------------------------------------------------------------
# œ ƒXƒLƒ‹ƒŒƒxƒ‹Ý’èiƒŒƒxƒ‹ƒAƒbƒvj
#     actor_id  :   Æ’AÆ’NÆ’^[ID
#     skill_id  :   Æ’XÆ’Lƒ‹ID
#--------------------------------------------------------------------------
def skill_level_up(actor_id, skill_id)
  actor = $game_actors[actor_id]
  set_skill_level(actor_id, skill_id, actor.skill_level[skill_id]+1)
end

#--------------------------------------------------------------------------
# œ ƒXƒLƒ‹ƒŒƒxƒ‹Ý’èiƒŒƒxƒ‹ƒ_ƒEƒ“j
#     actor_id  :   Æ’AÆ’NÆ’^[ID
#     skill_id  :   Æ’XÆ’Lƒ‹ID
#--------------------------------------------------------------------------
def skill_level_down(actor_id, skill_id)
  actor = $game_actors[actor_id]
  set_skill_level(actor_id, skill_id, actor.skill_level[skill_id]-1)
end
end

class Window_Base < Window
#--------------------------------------------------------------------------
# œ ƒXƒLƒ‹ŒoŒ±’l‚Ì•\Ž¦iŽg—p‰ñ”^NEXTj
#     actor        : Æ’AÆ’NÆ’^[
#     skill_id     : Æ’XÆ’Lƒ‹ID
#     x            : •`‰ææ X À•W
#     y            : •`‰ææ Y À•W
#--------------------------------------------------------------------------
def draw_skill_exp(actor, skill_id, x, y)
  list = actor.skill_list[skill_id]
  limit = Skill_updata::S_LEVEL[skill_id]
  if !limit.nil? and !limit[actor.id].nil?
    skill_limit = limit[actor.id]
  elsif !limit.nil? and !limit[0].nil?
    skill_limit = limit[0]
  else
    skill_limit = Skill_updata::LEVEL_LIMIT
  end
  if actor.skill_level[skill_id] == skill_limit
    next_exp = "|"
  else
    next_exp = list[actor.skill_level[skill_id]+1].to_s
  end
  use = actor.skill_use[skill_id]
  skill_exp = use.to_s + "/" + next_exp
  self.contents.draw_text(x, y, 100, 32, skill_exp)
end
end
Bye Bye!

Avenger_K
Soñador
Soñador

0/3

Créditos 336

Gracias : 15

Volver arriba Ir abajo

RPG Maker XP Re: Habilidades que escalen con el nivel

Mensaje por Noctámbulo el 2013-08-01, 01:34

Hmm, voy a empezar a trastear los parámetros de las habilidades a ver si consigo el balanceo del que habla Orochii, y si no, usaré ese script, ¡muchas gracias a todos!

Edit: Tras mucho probar y hacer números, me he percatado de que la razón por la que mis magias se vuelven inútiles es porque el personaje va cambiando de arma (ej. cambias tu Espada de Hierro de 50 de ataque por una Espada de Plata de 60 de ataque) haciendo que a la larga "salga más rentable" pegar golpes con arma normales que atacar con magias.

Para solucionar esto, he decidido que todas las armas de mi proyecto tendrán la misma cantidad de ataque, variando solo los puntos de fuerza/magia que te aumenten al llevarla equipada, de este modo, escalará tanto tu daño con arma como tu daño de habilidad de forma equitativa.

El problemilla que tengo ahora y que me resulta bastante molesto, es que la interfaz del RPG Maker XP no te muestra los parámetros que te modifica el equiparte un arma aparte del ataque. ¿Alguien sabe de algún script para solucionar esto?

Noctámbulo
Principiante
Principiante

1/3

Créditos 300

Gracias : 27

Volver arriba Ir abajo

RPG Maker XP Re: Habilidades que escalen con el nivel

Mensaje por Contenido patrocinado Hoy a las 04:34


Contenido patrocinado


Volver arriba Ir abajo

Ver el tema anterior Ver el tema siguiente Volver arriba


 :: RPG Maker :: Ayuda RPG

Permisos de este foro:
No puedes responder a temas en este foro.