设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 1858|回复: 5
打印 上一主题 下一主题

[已经过期] 升级脚本与战斗后自动回血

[复制链接]

Lv3.寻梦者

梦石
0
星屑
1872
在线时间
718 小时
注册时间
2009-1-4
帖子
166
跳转到指定楼层
1
发表于 2015-12-21 15:04:24 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
本人先是用了个简单的脚本 战斗结束后自动回复80%的HP

随后使用了以下这个升级脚本 这个自动回血就失效了 求解决方法?

#===============================================================
# 本脚本来自www.66RPG.com,使用和转载请保留此信息
#===============================================================


# ———————————————————————————

# ▼▲▼ XRXS_BP10. LEVEL UP!能力上昇表示ウィンドウ plus ▼▲▼
# by 桜雅 在土

#——以下3个如果需要修改,直接输入文件名即可
$data_system_level_up_se = "" #升级时的音效设置
$data_system_level_up_me = "Audio/ME/se_cardget" # 升级时播放的ME
$data_system_skilllearn_se = "Audio/SE/se_powerup" # 学会特技时播放的声效。

#=============================================================
# ■ Window_LevelUpWindow
#-------------------------------------------------------------------
#  バトル終了時、レベルアップした場合にステータスを表示するウィンドウです。
#=============================================================
class Window_LevelUpWindow < Window_Base
  #---------------------------------------------------------
  # ● オブジェクト初期化
  #------------------------------------------------------
  def initialize(actor, last_lv, up_hp, up_sp, up_str, up_dex, up_agi, up_int)
    super(0, 128, 160, 192)
    self.contents = Bitmap.new(width - 32, height - 32)
    self.visible = false
    self.back_opacity = 160
    refresh(actor, last_lv, up_hp, up_sp, up_str, up_dex, up_agi, up_int)
  end
  #-----------------------------------------------------------
  # ● リフレッシュ
  #---------------------------------------------------------
  def refresh(actor, last_lv, up_hp, up_sp, up_str, up_dex, up_agi, up_int)
    self.contents.clear
    self.contents.font.color = system_color
    self.contents.font.size = 14
    self.contents.draw_text( 0, 0, 160, 24, "升级")
    self.contents.font.size = 18
    self.contents.draw_text( 0, 28, 160, 24, $data_system.words.hp)
    self.contents.draw_text( 0, 50, 160, 24, $data_system.words.sp)
    self.contents.font.size = 14
    self.contents.draw_text( 0, 72, 80, 24, $data_system.words.str)
    self.contents.draw_text( 0, 94, 80, 24, $data_system.words.dex)
    self.contents.draw_text( 0, 116, 80, 24, $data_system.words.agi)
    self.contents.draw_text( 0, 138, 80, 24, $data_system.words.int)
    self.contents.draw_text(92, 0, 128, 24, "→")
    self.contents.draw_text(76, 28, 128, 24, "=")
    self.contents.draw_text(76, 50, 128, 24, "=")
    self.contents.draw_text(76, 72, 128, 24, "=")
    self.contents.draw_text(76, 94, 128, 24, "=")
    self.contents.draw_text(76, 116, 128, 24, "=")
    self.contents.draw_text(76, 138, 128, 24, "=")
    self.contents.font.color = normal_color
    self.contents.draw_text( 0, 0, 88, 24, last_lv.to_s, 2)
    self.contents.draw_text( 0, 28, 72, 24, "+" + up_hp.to_s, 2)
    self.contents.draw_text( 0, 50, 72, 24, "+" + up_sp.to_s, 2)
    self.contents.draw_text( 0, 72, 72, 24, "+" + up_str.to_s, 2)
    self.contents.draw_text( 0, 94, 72, 24, "+" + up_dex.to_s, 2)
    self.contents.draw_text( 0, 116, 72, 24, "+" + up_agi.to_s, 2)
    self.contents.draw_text( 0, 138, 72, 24, "+" + up_int.to_s, 2)
    self.contents.font.size = 20
    self.contents.draw_text( 0, 0, 128, 24, actor.level.to_s, 2)
    self.contents.draw_text( 0, 26, 128, 24, actor.maxhp.to_s, 2)
    self.contents.draw_text( 0, 48, 128, 24, actor.maxsp.to_s, 2)
    self.contents.draw_text( 0, 70, 128, 24, actor.str.to_s, 2)
    self.contents.draw_text( 0, 92, 128, 24, actor.dex.to_s, 2)
    self.contents.draw_text( 0, 114, 128, 24, actor.agi.to_s, 2)
    self.contents.draw_text( 0, 136, 128, 24, actor.int.to_s, 2)
  end
end
#===========================================================
# ■ Window_SkillLearning
#------------------------------------------------------------------------------
#  レベルアップ時などにスキルを習得した場合にそれを表示するウィンドウです。
#=============================================================
class Window_SkillLearning < Window_Base
  #-------------------------------------------------------------
  # ● 公開インスタンス変数
  #-----------------------------------------------------------
  attr_reader :learned # スキルを習得したかどうか
  #----------------------------------------------------------
  # ● オブジェクト初期化
  #----------------------------------------------------------
  def initialize(class_id, last_lv, now_lv)
    super(160, 64, 320, 64)
    self.contents = Bitmap.new(width - 32, height - 28) # わざと▽を表示
    self.visible = false
    self.back_opacity = 160
    @learned = false
    refresh(class_id, last_lv, now_lv)
  end
  #------------------------------------------------------------
  # ● リフレッシュ
  #-------------------------------------------------------
  def refresh(class_id, last_lv, now_lv)
    for i in 0...$data_classes[class_id].learnings.size
      learn_lv = $data_classes[class_id].learnings.level
      # 今回のレベルアップ範囲で習得するスキルの場合
      if learn_lv > last_lv and learn_lv <= now_lv
        @learned = true
        # SEの再生
        if $data_system_skilllearn_se != ""
          Audio.se_play($data_system_skilllearn_se)
        end
        # 各描写
        skill_name = $data_skills[$data_classes[class_id].learnings.skill_id].name
        self.contents.clear
        self.contents.font.color = text_color(8)
        self.contents.draw_text(0,0,448,32,"学会")
        self.contents.font.color = text_color(8)
        self.contents.draw_text(0,0,448,32, "          "+skill_name)
        self.contents.font.color = text_color(8)
        self.visible = true
        # メインループ
        loop do
          # ゲーム画面を更新
          Graphics.update
          # 入力情報を更新
          Input.update
          # フレーム更新
          update
          # 画面が切り替わったらループを中断
          if @learned == false
            break
          end
        end
      # メインループここまで
      end
    end
  end
  #-----------------------------------------------------------
  # ● フレーム更新
  #------------------------------------------------------------
  def update
    # C ボタンが押された場合
    if Input.trigger?(Input::C)
      @learned = false
      self.visible = false
    end
  end
end
#==================================================================
# ■ Window_BattleStatus
#==================================================================
class Window_BattleStatus < Window_Base
  #---------------------------------------------------------
  # ● 追加?公開インスタンス変数
  #-------------------------------------------------------
  attr_accessor :level_up_flags # LEVEL UP!表示
end
#===============================================================
# ■ Game_Battler
#===============================================================
class Game_Battler
  #--------------------------------------------------------------
  # ● 追加?公開インスタンス変数
  #----------------------------------------------------------
  attr_accessor :exp_gain_ban # EXP取得一時禁止
  #------------------------------------------------------
  # ● オブジェクト初期化
  #-----------------------------------------------------
  alias xrxs_bp10_initialize initialize
  def initialize
    @exp_gain_ban = false
    xrxs_bp10_initialize
  end
  #-------------------------------------------------------
  # ● ステート [EXP を獲得できない] 判定
  #-----------------------------------------------------
  alias xrxs_bp10_cant_get_exp? cant_get_exp?
  def cant_get_exp?
    if @exp_gain_ban == true
      return true
    else
      return xrxs_bp10_cant_get_exp?
    end
  end
end
#==============================================================
# ■ Scene_Battle
#==============================================================
class Scene_Battle
  #--------------------------------------------------
  # ● アフターバトルフェーズ開始
  #--------------------------------------------------
  alias xrxs_bp10_start_phase5 start_phase5
  def start_phase5
    # EXP 獲得禁止
    for i in 0...$game_party.actors.size
      $game_party.actors.exp_gain_ban = true
    end
    xrxs_bp10_start_phase5
    # EXP 獲得禁止の解除
    for i in 0...$game_party.actors.size
      $game_party.actors.exp_gain_ban = false
    end
    # EXPを初期化
    @exp_gained = 0
    for enemy in $game_troop.enemies
      # 獲得 EXPを追加 # エネミーが隠れ状態でない場合
      @exp_gained += enemy.exp if not enemy.hidden
    end
    # 設定
    @phase5_step = 1
    @exp_gain_actor = -1
    # リザルトウィンドウを表示
    @result_window.visible = true
  end
  #----------------------------------------------------------
  # ● フレーム更新 (アフターバトルフェーズ)
  #--------------------------------------------------------
  #alias xrxs_bp10_update_phase5 update_phase5
  def update_phase5
    case @phase5_step
    when 1
      update_phase5_step1
    else
    # ウェイトカウントが 0 より大きい場合
      if @phase5_wait_count > 0
        # ウェイトカウントを減らす
        @phase5_wait_count -= 1
        # ウェイトカウントが 0 になった場合
        if @phase5_wait_count == 0
          # リザルトウィンドウを表示
          #@result_window.visible = true
          # メインフェーズフラグをクリア
          $game_temp.battle_main_phase = false
          # ステータスウィンドウをリフレッシュ
          @status_window.refresh
        end
      return
      end
      # C ボタンが押された場合
      if Input.trigger?(Input::C)
        # バトル終了
        battle_end(0)
      end
    # レベルアップしている場合は強制バトル終了
    battle_end(0) if @levelup_window != nil and @phase5_wait_count <= 0
    end
  end
  #-----------------------------------------------------------
  # ● フレーム更新 (アフターバトルフェーズ 1 : レベルアップ)
  #-----------------------------------------------------------
  def update_phase5_step1
    # C ボタンが押された場合
    if Input.trigger?(Input::C)
      # ウィンドウを閉じて次のアクターへ
      @levelup_window.visible = false if @levelup_window != nil
      @status_window.level_up_flags[@exp_gain_actor] = false
      phase5_next_levelup
    end
  end
  #---------------------------------------------------------
  # ● 次のアクターのレベルアップ表示へ
  #---------------------------------------------------------
  def phase5_next_levelup
    begin
      # 次のアクターへ
      @exp_gain_actor += 1
      # 最後のアクターの場合
      if @exp_gain_actor >= $game_party.actors.size
        # アフターバトルフェーズ開始
        @phase5_step = 0
        return
      end
      actor = $game_party.actors[@exp_gain_actor]
      if actor.cant_get_exp? == false
        # 現在の能力値を保持
        last_level = actor.level
        last_maxhp = actor.maxhp
        last_maxsp = actor.maxsp
        last_str = actor.str
        last_dex = actor.dex
        last_agi = actor.agi
        last_int = actor.int
        # 経験値取得の決定的瞬間(謎
        actor.exp += @exp_gained
        # 判定
        if actor.level > last_level
          # レベルアップした場合
          @status_window.level_up(@exp_gain_actor)
          # リザルトウィンドウを消す
          @result_window.visible = false
          # SEの再生
          if $data_system_level_up_se != ""
            Audio.se_play($data_system_level_up_se)
          end
          # MEの再生
          if $data_system_level_up_me != ""
            Audio.me_stop
            Audio.me_play($data_system_level_up_me)
          end
          # LEVEL-UPウィンドウの設定
          @levelup_window = Window_LevelUpWindow.new(actor, last_level,
          actor.maxhp - last_maxhp, actor.maxsp - last_maxsp, actor.str - last_str,
          actor.dex - last_dex, actor.agi - last_agi, actor.int - last_int)
          @levelup_window.x = 160 * @exp_gain_actor
          @levelup_window.visible = true
          # ステータスウィンドウをリフレッシュ
          @status_window.refresh
          # スキル習得ウィンドウの設定
          @skilllearning_window = Window_SkillLearning.new(actor.class_id, last_level, actor.level)
          # ウェイトカウントを設定
          @phase5_wait_count = 40
          @phase5_step = 1
          return
        end
      end
    end until false
  end
end


#=============================================================
# 本脚本来自www.66RPG.com,使用和转载请保留此信息
#=============================================================

点评

(也许)交换一下脚本顺序  发表于 2015-12-21 19:02

Lv2.观梦者

梦石
0
星屑
596
在线时间
797 小时
注册时间
2014-7-1
帖子
578

开拓者

2
发表于 2015-12-21 15:20:55 | 只看该作者
用代码框发啊 这怎么看啊 都晕了 还是给你一个战后恢复脚本吧 很容易就看懂的

RUBY 代码复制
  1. #战斗后定量恢复HP/MP
  2. #收集,修改 BY 玄天
  3. #原作者:日站。其版权由其原作者拥有,任何人不得非法使用。
  4.  
  5.  
  6. #HP回復量(百分率)
  7. HP_DAMAGE_POINT = 10
  8.  
  9. #SP回復量(百分率)
  10. SP_DAMAGE_POINT = 10
  11.  
  12. #HP分散量 0为不散乱(100回復量、分散度15 = 85~115)
  13. HP_DAMAGE_UNEVEN = 0
  14.  
  15. #SP分散量 0为不散乱(100回復量、分散度15 = 85~115)
  16. SP_DAMAGE_UNEVEN = 0
  17.  
  18. #是否演示动画。false为不使用;true为使用
  19. ANIMATION_POP = true
  20.  
  21. #动画号码,即资料库『动画』中的动画代码
  22. ANIMATION_ID = 15
  23.  
  24. #损坏表示
  25. DAMAGE_POP = true
  26.  
  27.  
  28. #========================下面基本不用修改==============================
  29.  
  30.  
  31. #==============================================================================
  32. # ■ Game_Battler (分割定義 3)
  33. #------------------------------------------------------------------------------
  34. #  バトラーを扱うクラスです。このクラスは Game_Actor クラスと Game_Enemy クラ
  35. # スのスーパークラスとして使用されます。
  36. #==============================================================================
  37.  
  38. class Game_Battler
  39.   #--------------------------------------------------------------------------
  40.   # ● 戦闘後HP回復
  41.   #--------------------------------------------------------------------------
  42.   def hp_recover
  43.     # SP回復量を設定
  44.     self.damage = self.maxhp * SP_DAMAGE_POINT / 100
  45.     if SP_DAMAGE_UNEVEN > 0
  46.       amp = [self.damage.abs * SP_DAMAGE_UNEVEN / 100, 1].max
  47.       self.damage += rand(amp+1) + rand(amp+1) - amp
  48.     end
  49.     self.sp += self.damage
  50.     # HP回復量を設定
  51.            self.damage = self.maxhp * HP_DAMAGE_POINT / 100
  52.     if HP_DAMAGE_UNEVEN > 0
  53.       amp = [self.damage.abs * HP_DAMAGE_UNEVEN / 100, 1].max
  54.       self.damage += rand(amp+1) + rand(amp+1) - amp
  55.     end
  56.     self.damage = -self.damage
  57.     # HP に回復量を加算
  58.     self.hp -= self.damage
  59.     # メソッド終了
  60.     return
  61.   end
  62. end
  63.  
  64. #-------------------------------------------------------------------------------
  65.  
  66. #==============================================================================
  67. # ■ Scene_Battle (分割定義 2)
  68. #------------------------------------------------------------------------------
  69. #  バトル画面の処理を行うクラスです。
  70. #==============================================================================
  71.  
  72. class Scene_Battle
  73.   #--------------------------------------------------------------------------
  74.   # ● アフターバトルフェーズ開始
  75.   #--------------------------------------------------------------------------
  76.   alias start_phase5_battler_recover start_phase5
  77.   def start_phase5
  78.     for i in 0...$game_party.actors.size
  79.       actor = $game_party.actors[i]
  80.       next if actor.dead?
  81.       actor.hp_recover
  82.       if DAMAGE_POP
  83.         actor.damage_pop = true
  84.       end
  85.       if ANIMATION_POP
  86.         actor.animation_id = ANIMATION_ID
  87.       end
  88.     end
  89.     # 元の処理を実行
  90.     start_phase5_battler_recover
  91.   end
  92. end
学习使我疲劳,打工使我疲惫,恋爱使我伤身,吸烟伤我肺腑,饮酒损我形象,旅游使我破费,月底不见铜板,只有在论坛里面看看各种大佬才能使我进去
回复 支持 反对

使用道具 举报

Lv4.逐梦者

素材区好人

梦石
3
星屑
7344
在线时间
3526 小时
注册时间
2011-7-21
帖子
2281

极短24参与极短23参与极短22参与极短21参与

3
发表于 2015-12-21 21:22:59 | 只看该作者
本帖最后由 无忧谷主幻 于 2015-12-26 20:02 编辑

其实没这么麻烦,找到Game_Actor脚本,查看第461到462行
RUBY 代码复制
  1. while @exp >= @exp_list[@level+1] and @exp_list[@level+1] > 0
  2.       @level += 1

点击插入,在下面插入
RUBY 代码复制
  1. @hp = self.maxhp
  2. @sp = self.maxsp

即可完全恢复
如果是80%的话,加个0.8就可以了
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
18 小时
注册时间
2015-11-28
帖子
11
4
发表于 2015-12-26 18:08:01 | 只看该作者
无忧谷主幻 发表于 2015-12-21 21:22
其实没这么麻烦,找到Game_Actor脚本,查看第461到462行
    while @exp >= @exp_list[@level+1] and @exp_ ...

在那加0.8( ゚ω゚)
回复 支持 反对

使用道具 举报

Lv4.逐梦者

素材区好人

梦石
3
星屑
7344
在线时间
3526 小时
注册时间
2011-7-21
帖子
2281

极短24参与极短23参与极短22参与极短21参与

5
发表于 2015-12-26 19:56:06 | 只看该作者
丿蛋蛋的疯 发表于 2015-12-26 18:08
在那加0.8( ゚ω゚)

@hp = self.maxhp*0.8
@sp = self.maxsp*0.8
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
18 小时
注册时间
2015-11-28
帖子
11
6
发表于 2015-12-27 13:35:12 | 只看该作者
无忧谷主幻 发表于 2015-12-26 19:56
@hp = self.maxhp*0.8
@sp = self.maxsp*0.8

这个是恢复到80%还是恢复80%

点评

恢复80%  发表于 2015-12-27 15:19
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-9-22 21:14

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表