查看: 4235|回复: 9

[原创发布] 喜闻乐见的状态回血回蓝脚本

[复制链接]
梦石
0
星屑
413
在线时间
214 小时
注册时间
2011-3-21
回帖
142
发表于 2014-6-30 14:45:59 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 1095884734 于 2014-6-30 14:47 编辑

今天一个朋友叫我去写个用状态回血的脚本 本人比较懒所以直接去找了
找了找发现好像还真没有这样的脚本……只能动手打了
以下是脚本
[pre lang="ruby" line="1"]#喜闻乐见的状态回血回蓝脚本
#常数写"xx",百分比写"xx%"
#↓具体方法请藏考帮助文档-脚本入门-基础篇-哈希表
$自动回蓝状态 = {
17 => "50",18 => "50%"
}
$自动回血状态 = {
19 => "50",20 => "50%"
}
class Game_Battler
  #--------------------------------------------------------------------------
  # ● 判断状态 [自动回血]
  #--------------------------------------------------------------------------
  def 回血?
    for i in @states
      if $自动回血状态.include?(i)
        @i = i
        return true
      end
    end
    return false
  end
  #--------------------------------------------------------------------------
  # ● 判断状态 [自动回蓝]
  #--------------------------------------------------------------------------
  def 回蓝?
    for i in @states
      if $自动回蓝状态.include?(i)
        @i = i
        return true
      end
    end
    return false
  end
  #--------------------------------------------------------------------------
  # ● 应用回血
  #--------------------------------------------------------------------------
  def 自动回血
    # 设置伤害
   if $自动回血状态[@i].split(/%/)[1]
    self.damage = self.maxhp * ($自动回血状态[@i].split(/%/)[0].to_i / 100)
  else
    self.damage = $自动回血状态[@i].split(/%/)[0].to_i
  end
   # 分散
    if self.damage.abs > 0
      amp = [self.damage.abs * 15 / 100, 1].max
      self.damage += rand(amp+1) + rand(amp+1) - amp
    end
    # SP 的伤害减法运算
    self.hp += self.damage
    # 过程结束
    return true
  end
  #--------------------------------------------------------------------------
  # ● 应用回蓝
  #--------------------------------------------------------------------------
  def 自动回蓝
    # 设置伤害
   if $自动回蓝状态[@i].split(/%/)[1]
    self.damage = self.maxsp * ($自动回蓝状态[@i].split(/%/)[0].to_i / 100)
  else
    self.damage = $自动回蓝状态[@i].split(/%/)[0].to_i
  end
   # 分散
    if self.damage.abs > 0
      amp = [self.damage.abs * 15 / 100, 1].max
      self.damage += rand(amp+1) + rand(amp+1) - amp
    end
    # SP 的伤害减法运算
    self.sp += self.damage
    # 过程结束
    return true
  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 > 0 and @active_battler.slip_damage?
      @active_battler.slip_damage_effect
      @active_battler.damage_pop = true
    end
    if @active_battler.hp > 0 and @active_battler.回蓝?
      @active_battler.自动回蓝
      @active_battler.damage_pop = true
    end
    if @active_battler.hp > 0 and @active_battler.回血?
      @active_battler.自动回血
      @active_battler.damage_pop = true
    end
    # 自然解除状态
    @active_battler.remove_states_auto
    # 刷新状态窗口
    @status_window.refresh
    # 移至步骤 2
    @phase4_step = 2
  end
  end[/pre]
测试用的范例实在是不堪入目所以不提供
就是这样喜闻乐见……
欢迎吐槽……
[新人第一帖求糖~~]

点评

有问题了:50和50%回的血是一样多的...都是50点血  发表于 2014-8-24 16:33

评分

参与人数 3星屑 +120 收起 理由
kuerlulu + 15 塞糖
未命名 + 60 这样的“新手”值得鼓励……
凝冰剑斩 + 45 塞糖

查看全部评分

签名是什么 好吃么
【好吃】
梦石
7
星屑
1113
在线时间
334 小时
注册时间
2008-1-28
回帖
1506
发表于 2014-6-30 14:53:58 | 显示全部楼层
本帖最后由 未命名 于 2014-6-30 15:12 编辑

这个很早就有了……
不是找了很久没找到的新手,而是懒到“干脆我自己编一个好了”的大神吧!
这才是 喜闻乐见……我看着你的注册时间说到。

最近的“考场1”有这个题目,该不会拜托你的那个家伙……

————————————————————————————————————
好吧,仔细看一下确实有些个性,找不到的是指这种可以自定义的效果吗?
可以百分比,也可以固定数值,自动找到特定的回血状态……
相比传统方法来说,不,我试一试在评价。
————————————————————————————————————
好的,说说缺点
self.damage是正数的话,看起来就像受了伤一样,
改self.hp += self.damage为 减少 ,然后self.damage改为负,就像回血了。

然后多个状态累加HP的回复,只有百分比的有效,但是只显示最后一次加血。
建议改为将在确认完毕之前把所有要加的血加在一起,然后显示大数值。
这样更自由。

那么,相比传统方法的优点,就是对新手方便设置了。

——————————————————————————————————
嘿嘿!也就是说你还可以把SP的回复也显示出来的话,这就超棒了啊!

点评

考场1里面那个题是要每回合开始才回血,这个应该是和中毒一样,到行动了再回血。如果直接放上去我想字母君会扣分的。  发表于 2014-7-1 09:53
好的……我去改改  发表于 2014-6-30 15:21
这个可以放心了……他只是用在游戏里……  发表于 2014-6-30 14:58

评分

参与人数 2星屑 +71 收起 理由
RyanBern + 66 评价得好认真
1095884734 + 5 喜闻乐见

查看全部评分

终于有可以放在这里的游戏了……
极短13 新生 《箱子新世界》
回复

使用道具 举报

梦石
0
星屑
50
在线时间
45 小时
注册时间
2010-8-21
回帖
49
发表于 2014-6-30 16:30:46 | 显示全部楼层
学习一下,谢谢分享,初学脚本,很多地方还不是看的太明白~~~~~~先回复,再研究看看~~~~~~~~~
回复

使用道具 举报

梦石
0
星屑
17561
在线时间
4249 小时
注册时间
2013-7-18
回帖
2491
发表于 2014-8-24 16:27:07 | 显示全部楼层
挺好用的,唯一不足的是,回血现实是红色的,也就是被打的抠血的颜色,在哪改曾绿色
退隐....
回复

使用道具 举报

梦石
0
星屑
50
在线时间
28 小时
注册时间
2016-9-30
回帖
9
发表于 2017-1-18 20:36:07 | 显示全部楼层
哪个状态是自动恢复

点评

在脚本说明里看  发表于 2017-2-6 22:16
回复

使用道具 举报

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

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部