Mundo Maker
¡Bienvenid@ a Mundo Maker!

¿Quieres aprender todo sobre el RPG Maker?



Regístrate y forma parte de Mundo Maker.

[XP] Error Script Defensa

Ver el tema anterior Ver el tema siguiente Ir abajo

RPG Maker XP [XP] Error Script Defensa

Mensaje por UmbriaChronicles el 2015-09-08, 07:00

Hola a todos!

He encontrado un error en este script:
Código:
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
#_/  ◆防御時回復 - KGC_GuardRecover◆
#_/----------------------------------------------------------------------------
#_/ 防御時にHP/SPを回復する処理を追加します。
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/

#==============================================================================
# ★ カスタマイズ項目 ★
#==============================================================================

class Scene_Battle
 # ◆HP回復割合(%)
 RECOVER_HP_RATE = 3
 # ◆SP回復割合(%)
 RECOVER_SP_RATE = 2
end

#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

$imported = {} if $imported == nil
$imported["GuardRecover"] = true

#==============================================================================
# ■ Scene_Battle (分割定義 4)
#==============================================================================

class Scene_Battle
 #--------------------------------------------------------------------------
 # ● 基本アクション 結果作成
 #--------------------------------------------------------------------------
 alias make_basic_action_result_KGC_GuardRecover make_basic_action_result
 def make_basic_action_result
  # 元の処理を実行
  make_basic_action_result_KGC_GuardRecover

  # 行動が防御の場合
  if @active_battler.current_action.kind == 0 &&
      @active_battler.current_action.basic == 1
    # 回復量計算
    recover_hp = @active_battler.maxhp * RECOVER_HP_RATE / 100
    recover_sp = @active_battler.maxsp * RECOVER_SP_RATE / 100
    if recover_hp > 0
      @active_battler.damage = -recover_hp
    end
    if recover_sp > 0
      if $imported["SPDamage"]
        @active_battler.sp_damage = -recover_sp
      else
        @active_battler.damage = "#{$data_system.words.sp}+ #{recover_sp}"
      end
    end
    @active_battler.hp += recover_hp
    @active_battler.sp += recover_sp
    # 回復値を表示
    @target_battlers |= [@active_battler]
  end
 end
end

El Script hace que cada vez que seleccionas "defensa" en la batalla, se te recupere un poco de HP y MP. Pero en ciertas ocasiones, cuando utilizo el comando "huir" en la batalla, el juego se cierra informando de este error:

???? 'Defensa' ? 37 ??? NoMethodError ???
undefined method 'current_action' for nil:NilClass

¿Alguna idea de cómo arreglarlo?

Gracias y un saludo! :)
avatar
UmbriaChronicles
Novato
Novato

0/3

Créditos 76

Gracias : 2

Volver arriba Ir abajo

RPG Maker XP Re: [XP] Error Script Defensa

Mensaje por Wecoc el 2015-09-08, 08:19

Lo he intentado varias veces y nunca logré recrear el error, no sé si es porque no consigo imitar tu situación o si es por algún conflico del script con otro script de batalla.

Con ésto debería ser suficiente para esquivar el error, pero si realmente depende de otro script sin detectar el problema exacto no puedo hacer nada más.

Código:
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
#_/  ◆防御時回復 - KGC_GuardRecover◆
#_/----------------------------------------------------------------------------
#_/ 防御時にHP/SPを回復する処理を追加します。
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/

#==============================================================================
# ★ カスタマイズ項目 ★
#==============================================================================

class Scene_Battle
 # ◆HP回復割合(%)
 RECOVER_HP_RATE = 3
 # ◆SP回復割合(%)
 RECOVER_SP_RATE = 2
end

#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

$imported = {} if $imported == nil
$imported["GuardRecover"] = true

#==============================================================================
# ■ Scene_Battle (分割定義 4)
#==============================================================================

class Scene_Battle
 #--------------------------------------------------------------------------
 # ● 基本アクション 結果作成
 #--------------------------------------------------------------------------
 alias make_basic_action_result_KGC_GuardRecover make_basic_action_result
 def make_basic_action_result
  # 元の処理を実行
  make_basic_action_result_KGC_GuardRecover
  return if @active_battler.nil?
  # 行動が防御の場合
  if @active_battler.current_action.kind == 0 &&
      @active_battler.current_action.basic == 1
    # 回復量計算
    recover_hp = @active_battler.maxhp * RECOVER_HP_RATE / 100
    recover_sp = @active_battler.maxsp * RECOVER_SP_RATE / 100
    if recover_hp > 0
      @active_battler.damage = -recover_hp
    end
    if recover_sp > 0
      if $imported["SPDamage"]
        @active_battler.sp_damage = -recover_sp
      else
        @active_battler.damage = "#{$data_system.words.sp}+ #{recover_sp}"
      end
    end
    @active_battler.hp += recover_hp
    @active_battler.sp += recover_sp
    # 回復値を表示
    @target_battlers |= [@active_battler]
  end
 end
end

Solo he añadido ésta línea:
return if @active_battler.nil?
avatar
Wecoc
Administrador
Administrador



Créditos 12204

Gracias : 632

Volver arriba Ir abajo

RPG Maker XP Re: [XP] Error Script Defensa

Mensaje por UmbriaChronicles el 2015-09-19, 11:37

@Wecoc escribió:Lo he intentado varias veces y nunca logré recrear el error, no sé si es porque no consigo imitar tu situación o si es por algún conflico del script con otro script de batalla.

Con ésto debería ser suficiente para esquivar el error, pero si realmente depende de otro script sin detectar el problema exacto no puedo hacer nada más.

Código:
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
#_/  ◆防御時回復 - KGC_GuardRecover◆
#_/----------------------------------------------------------------------------
#_/ 防御時にHP/SPを回復する処理を追加します。
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/

#==============================================================================
# ★ カスタマイズ項目 ★
#==============================================================================

class Scene_Battle
 # ◆HP回復割合(%)
 RECOVER_HP_RATE = 3
 # ◆SP回復割合(%)
 RECOVER_SP_RATE = 2
end

#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

$imported = {} if $imported == nil
$imported["GuardRecover"] = true

#==============================================================================
# ■ Scene_Battle (分割定義 4)
#==============================================================================

class Scene_Battle
 #--------------------------------------------------------------------------
 # ● 基本アクション 結果作成
 #--------------------------------------------------------------------------
 alias make_basic_action_result_KGC_GuardRecover make_basic_action_result
 def make_basic_action_result
  # 元の処理を実行
  make_basic_action_result_KGC_GuardRecover
  return if @active_battler.nil?
  # 行動が防御の場合
  if @active_battler.current_action.kind == 0 &&
      @active_battler.current_action.basic == 1
    # 回復量計算
    recover_hp = @active_battler.maxhp * RECOVER_HP_RATE / 100
    recover_sp = @active_battler.maxsp * RECOVER_SP_RATE / 100
    if recover_hp > 0
      @active_battler.damage = -recover_hp
    end
    if recover_sp > 0
      if $imported["SPDamage"]
        @active_battler.sp_damage = -recover_sp
      else
        @active_battler.damage = "#{$data_system.words.sp}+ #{recover_sp}"
      end
    end
    @active_battler.hp += recover_hp
    @active_battler.sp += recover_sp
    # 回復値を表示
    @target_battlers |= [@active_battler]
  end
 end
end

Solo he añadido ésta línea:
return if @active_battler.nil?

Hola Weccoc! He estado probándolo esta semana y parece que lo has arreglado :) así que muchas gracias.
avatar
UmbriaChronicles
Novato
Novato

0/3

Créditos 76

Gracias : 2

Volver arriba Ir abajo

RPG Maker XP Re: [XP] Error Script Defensa

Mensaje por Contenido patrocinado


Contenido patrocinado


Volver arriba Ir abajo

Ver el tema anterior Ver el tema siguiente Volver arriba


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