じ☆ve冰风 发表于 2024-4-19 23:56:30

喜闻乐见的状态回血回蓝脚本

今天一个朋友叫我去写个用状态回血的脚本 本人比较懒所以直接去找了
找了找发现好像还真没有这样的脚本……只能动手打了
以下是脚本
RUBY 代码
#喜闻乐见的状态回血回蓝脚本
#常数写"xx",百分比写"xx%"
#↓具体方法请藏考帮助文档-脚本入门-基础篇-哈希表
$自动回蓝状态 = {
17 => "50",18 => "50%"
}
$自动回血状态 = {
19 => "50",20 => "50%"
}
class Game_Battler
#--------------------------------------------------------------------------
# ● 判断状态 [自动回血]
#--------------------------------------------------------------------------
def 回血?
    for i in@states
      if $自动回血状态.include?(i)
      @i = i
      returntrue
      end
    end
    returnfalse
end
#--------------------------------------------------------------------------
# ● 判断状态 [自动回蓝]
#--------------------------------------------------------------------------
def 回蓝?
    for i in@states
      if $自动回蓝状态.include?(i)
      @i = i
      returntrue
      end
    end
    returnfalse
end
#--------------------------------------------------------------------------
# ● 应用回血
#--------------------------------------------------------------------------
def 自动回血
    # 设置伤害
   if $自动回血状态[@i].split(/%/)
    self.damage = self.maxhp * ($自动回血状态[@i].split(/%/).to_i / 100)
else
    self.damage = $自动回血状态[@i].split(/%/).to_i
end
   # 分散
    ifself.damage.abs > 0
      amp = .max
      self.damage += rand(amp+1) + rand(amp+1) - amp
    end
    # SP 的伤害减法运算
    self.hp += self.damage
    # 过程结束
    returntrue
end
#--------------------------------------------------------------------------
# ● 应用回蓝
#--------------------------------------------------------------------------
def 自动回蓝
    # 设置伤害
   if $自动回蓝状态[@i].split(/%/)
    self.damage = self.maxsp * ($自动回蓝状态[@i].split(/%/).to_i / 100)
else
    self.damage = $自动回蓝状态[@i].split(/%/).to_i
end
   # 分散
    ifself.damage.abs > 0
      amp = .max
      self.damage += rand(amp+1) + rand(amp+1) - amp
    end
    # SP 的伤害减法运算
    self.sp += self.damage
    # 过程结束
    returntrue
end
end

class Scene_Battle
#--------------------------------------------------------------------------
# ● 刷新画面 (主回合步骤 1 : 准备行动)
#--------------------------------------------------------------------------
def update_phase4_step1
    # 隐藏帮助窗口
    @help_window.visible = false
    # 判定胜败
    if judge
      # 胜利或者失败的情况下 : 过程结束
      return
    end
    # 强制行动的战斗者不存在的情况下
    if$game_temp.forcing_battler == nil
      # 设置战斗事件
      setup_battle_event
      # 执行战斗事件中的情况下
      if$game_system.battle_interpreter.running?
      return
      end
    end
    # 强制行动的战斗者存在的情况下
    if$game_temp.forcing_battler != nil
      # 在头部添加后移动
      @action_battlers.delete($game_temp.forcing_battler)
      @action_battlers.unshift($game_temp.forcing_battler)
    end
    # 未行动的战斗者不存在的情况下 (全员已经行动)
    if@action_battlers.size == 0
      # 开始同伴命令回合
      start_phase2
      return
    end
    # 初始化动画 ID 和公共事件 ID
    @animation1_id = 0
    @animation2_id = 0
    @common_event_id = 0
    # 未行动的战斗者移动到序列的头部
    @active_battler = @action_battlers.shift
    # 如果已经在战斗之外的情况下
    if@active_battler.index == nil
      return
    end
    # 连续伤害
    if@active_battler.hp > 0and@active_battler.slip_damage?
      @active_battler.slip_damage_effect
      @active_battler.damage_pop = true
    end
    if@active_battler.hp > 0and@active_battler.回蓝?
      @active_battler.自动回蓝
      @active_battler.damage_pop = true
    end
    if@active_battler.hp > 0and@active_battler.回血?
      @active_battler.自动回血
      @active_battler.damage_pop = true
    end
    # 自然解除状态
    @active_battler.remove_states_auto
    # 刷新状态窗口
    @status_window.refresh
    # 移至步骤 2
    @phase4_step = 2
end
end

测试用的范例实在是不堪入目所以不提供
就是这样喜闻乐见……
欢迎吐槽……
[新人第一帖求糖~~]
             本帖来自P1论坛作者1095884734,因Project1站服务器在国外有时候访问缓慢不方便作者交流学习,经联系P1站长fux2同意署名转载一起分享游戏制作经验,共同为国内独立游戏作者共同创造良好交流环境,原文地址:https://rpg.blue/forum.php?mod=viewthread&tid=367498若有侵权,发帖作者可联系底部站长QQ在线咨询功能删除,谢谢。
页: [1]
查看完整版本: 喜闻乐见的状态回血回蓝脚本