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

Project1

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

[已经解决] 如何指定在少血(HP显示为黄色)状态的技能

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
26 小时
注册时间
2012-8-5
帖子
21
跳转到指定楼层
1
发表于 2012-8-15 17:02:24 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
我想设计一些技能,时机只有在角色和怪物处于少血状态下才能发动,但VX当中只有HP常量增减,却没有百分比增减,所以请求各位高手解惑。{:2_270:}

Lv1.梦旅人

梦石
0
星屑
50
在线时间
148 小时
注册时间
2012-7-2
帖子
157
2
发表于 2012-8-15 17:17:32 | 只看该作者
没太懂哈,不过既然你能拿到hp增减量,也能拿到角色最大hp,不就可以计算当前hp占总hp的比重了吗?

点评

不熟悉代码,所以不清楚最大HP的变量是什么,而且HP增减量并不是百分比增减,所以拿HP增减量操控的话会有很大的难度。  发表于 2012-8-15 17:56
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
48
在线时间
2459 小时
注册时间
2011-12-18
帖子
1484
3
发表于 2012-8-15 17:31:24 | 只看该作者
本帖最后由 a364774426 于 2012-8-16 15:14 编辑

我想可以这样解决
在公共事件里插脚本,$game_variables[x] = $game_actors[y].maxhp
$game_variables[z] = $game_actors[x].maxhp
接着插入分歧脚本 $game_variables[z] < $game_variables[x]
满足则领悟技能,否则遗忘技能。当然,用这样的办法,在没有满足条件的情况下该技能就没有得显示。
至于怪物就更简单了,怪物的基本动作可以设置血量多少时才使用什么样的技能。
另外,还有一个最简单的办法,使用一个脚本,如下:
  1. =begin
  2. ■スキル使用条件 RGSS2 DAIpage■ v1.2

  3. ●機能●
  4. ・メモ欄での設定で使用者などの状況により、スキルの使用を制限します。
  5. ・使用不可な場合、ウインドウのスキル表示は半透明になります。消す事はできません。

  6. ●使用法●
  7. ・以下の二つのタグの中に設定します。
  8. <特殊使用条件>
  9. </特殊使用条件>
  10. <特殊使用条件>で設定開始、</特殊使用条件>で必ず閉じて下さい。
  11. タグの外部に設定しても反映されません。
  12. 一行に複数の項目(タグを含む)を設定しないで下さい。

  13. ●使用法●
  14. ・設定できる条件は以下のとおり。

  15. 最大HP, n     # 最大HPが n 以上で使用可能
  16. 最大MP, n     # 最大MPが n 以上で使用可能
  17. HP, n         # HPが n 以上で使用可能
  18. MP, n         # MPが n 以上で使用可能
  19. HP%以上, n   # HPが n %以上で使用可能
  20. MP%以上, n   # MPが n %以上で使用可能
  21. HP%以下, n   # HPが n %以下で使用可能
  22. MP%以下, n   # MPが n %以下で使用可能
  23. 攻撃力, n     # 攻撃力が n 以上で使用可能
  24. 守備力, n     # 守備力が n 以上で使用可能
  25. 精神力, n     # 精神力が n 以上で使用可能
  26. 敏捷性, n     # 敏捷性が n 以上で使用可能
  27. 状态, n   # 状态 n になっていれば使用可能
  28. 武器, n       # 武器ID n を装備中に使用可能
  29. 防具, n       # 防具ID n を装備中に使用可能
  30. 属性, n       # 通常攻撃の属性IDが n の時に使用可能
  31. 开关, n   # 开关番号 n がオンの時に使用可能

  32. 複数の項目を設定した場合、全ての条件を満たさないと使用できません。
  33. 状态,武器,防具は複数設定可能。その場合は行を別けて下さい。

  34. ●メモ欄記述例●

  35. # 最大HPが100以上で、状态9になっている場合にのみ使用可能。
  36. <特殊使用条件>
  37. 最大HP,100
  38. 状态,9
  39. </特殊使用条件>
  40.  
  41. ●再定義している箇所●
  42.  Game_Battlerをエイリアス

  43.  ※同じ箇所を変更するスクリプトと併用した場合は競合する可能性があります。

  44. ●更新履歴●
  45. 09/03/03:最大MPが0のキャラがいる場合にエラー落ちする不具合を修正。
  46. 09/03/03:%指定の条件が正しく機能していない不具合を修正。
  47. 09/02/21:公開

  48. =end

  49. #============================================================================
  50. # ■ メモ欄ワード用(変更しない事)
  51. #============================================================================
  52. module DAI_Skill_Use_Conditions
  53.   ST = "<特殊使用条件>"
  54.   ED = "</特殊使用条件>"
  55.   R = ["最大HP",
  56.        "最大MP",
  57.         "HP",
  58.         "MP",
  59.         "HP%以上",
  60.         "MP%以上",
  61.         "HP%以下",
  62.         "MP%以下",
  63.         "攻撃力",
  64.         "守備力",
  65.         "精神力",
  66.         "敏捷性",
  67.         "状态",
  68.         "武器",
  69.         "防具",
  70.         "属性",
  71.         "开关"
  72.         ]
  73. end
  74. #==============================================================================
  75. # ■ Skill_Use_Conditions
  76. #------------------------------------------------------------------------------
  77. #    スキルの使用条件を判定するクラスです。
  78. #==============================================================================
  79. class Skill_Use_Conditions
  80.   #--------------------------------------------------------------------------
  81.   # ● オブジェクト初期化
  82.   #--------------------------------------------------------------------------
  83.   def initialize(skill, battler)
  84.     @skill = skill
  85.     @battler = battler
  86.     @result = {"最大HP" => 0,
  87.                "最大MP" => 0,
  88.                "HP" => 0,
  89.                "MP" => 0,
  90.                "HP%以上" => 0,
  91.                "MP%以上" => 0,
  92.                "HP%以下" => 0,
  93.                "MP%以下" => 0,
  94.                "攻撃力" => 0,
  95.                "守備力" => 0,
  96.                "精神力" => 0,
  97.                "敏捷性" => 0,
  98.                "状态" => [],
  99.                "武器" => [],
  100.                "防具" => [],
  101.                "属性" => [],
  102.                "开关" => 0
  103.                }
  104.     @battler_st = [@battler.maxhp,
  105.                    @battler.maxmp,
  106.                    @battler.hp,
  107.                    @battler.mp,
  108.                    @battler.hp * 100 / @battler.maxhp * 100 / 100,
  109.                    @battler.mp * 100 / [@battler.maxmp, 1].max * 100 / 100,
  110.                    @battler.hp * 100 / @battler.maxhp * 100 / 100,
  111.                    @battler.mp * 100 / [@battler.maxmp, 1].max * 100 / 100,
  112.                    @battler.atk,
  113.                    @battler.def,
  114.                    @battler.spi,
  115.                    @battler.agi,
  116.                    ]
  117.   end
  118.   #--------------------------------------------------------------------------
  119.   # ● 使用可能条件判定
  120.   #--------------------------------------------------------------------------
  121.   def use?
  122.     note_get
  123.     r = []
  124.     for i in DAI_Skill_Use_Conditions::R
  125.       r.push @result[i]
  126.     end
  127.     # 最大HP~MP%以上まで
  128.     for i in 0..5
  129.       return false if @battler_st[i] < r[i]
  130.     end
  131.     # %以下
  132.     for i in 6..7
  133.       return false if @battler_st[i] > r[i] && r[i] != 0
  134.     end
  135.     # 攻撃力~敏捷性まで
  136.     for i in 8..11
  137.       return false if @battler_st[i] < r[i]
  138.     end
  139.     # 状态
  140.     for i in r[12]
  141.       return false unless @battler.state?(i)
  142.     end
  143.     # 武器防具
  144.     if @battler.actor?
  145.       for i in r[13]
  146.         return false unless @battler.weapons.include?($data_weapons[i])
  147.       end
  148.       for i in r[14]
  149.         return false unless @battler.armors.include?($data_armors[i])
  150.       end
  151.     end
  152.     # 属性
  153.     for i in r[15]
  154.       return false unless @battler.element_set == i
  155.     end
  156.     # 开关
  157.     if r[16] > 0
  158.       return $game_switches[r[16]]
  159.     end
  160.     return true
  161.   end
  162.   #--------------------------------------------------------------------------
  163.   # ● メモ欄判別
  164.   #--------------------------------------------------------------------------
  165.   def note_get
  166.     return unless @skill.is_a?(RPG::Skill)
  167.     @skill.note.each_line{|line|
  168.       @flg = true if line.include?(DAI_Skill_Use_Conditions::ST)
  169.       @flg = false if line.include?(DAI_Skill_Use_Conditions::ED)
  170.       next if line.include?(DAI_Skill_Use_Conditions::ST)
  171.       next if line.include?(DAI_Skill_Use_Conditions::ED)
  172.       if @flg
  173.         a = line.split(/\s*,\s*/)
  174.         if @result.include?(a[0])
  175.           if @result[a[0]].is_a?(Array)
  176.             @result[a[0]].push a[1].to_i
  177.           else
  178.             @result[a[0]] = a[1].to_i
  179.           end
  180.         end
  181.       end
  182.     }
  183.   end
  184. end

  185. #==============================================================================
  186. # ■ Game_Battler
  187. #==============================================================================
  188. class Game_Battler
  189.   #--------------------------------------------------------------------------
  190.   # ● スキルの使用可能判定
  191.   #--------------------------------------------------------------------------
  192.   alias dai_skill_can_use? skill_can_use?
  193.   def skill_can_use?(skill)
  194.     condition = Skill_Use_Conditions.new(skill, self)
  195.     return false unless condition.use?
  196.     return dai_skill_can_use?(skill)
  197.   end
  198. end
复制代码
使用方法:在技能的备注里加入19到35行的其中一个。

6289565_095936068361_2.png (21.75 KB, 下载次数: 19)

6289565_095936068361_2.png

点评

最后还是谢谢你的点播~  发表于 2012-8-17 17:21
我没学过RUBY 语句,想问下 $game_actors[y].maxhp,$game_actors[x].maxhp 这两个量是如何指定同一个角色的? 难道是要同时创建2个一模一样的角色?但ALIAS会发生  发表于 2012-8-15 18:05

评分

参与人数 1星屑 +200 收起 理由
Luciffer + 200 认可答案

查看全部评分

这是一个深不见底的坑,这是一个广袤无边的坑,我才刚刚放上了一抔泥土……

《六道·陈国篇》开坑了……↓点我
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
26 小时
注册时间
2012-8-5
帖子
21
4
 楼主| 发表于 2012-8-15 17:53:19 | 只看该作者
a364774426 发表于 2012-8-15 17:31
我想可以这样解决
在公共事件里插脚本,$game_variables[x] = $game_actors[y].maxhp
$game_variables[z] = ...

感谢大大的迅速回复(泪流满面中。。。)
回复 支持 反对

使用道具 举报

Lv3.寻梦者 (版主)

八宝粥的基叔

梦石
0
星屑
4504
在线时间
5228 小时
注册时间
2009-4-29
帖子
14318

贵宾

5
发表于 2012-8-15 17:59:11 | 只看该作者
a364774426 发表于 2012-8-15 17:31
我想可以这样解决
在公共事件里插脚本,$game_variables[x] = $game_actors[y].maxhp
$game_variables[z] = ...

我觉得应该是这样吧?
$game_variables[x] = $game_actors[y].maxhp
$game_variables[z] = $game_actors[y].maxhp
接着插入分歧脚本 $game_variables[z] * 4 <= $game_variables[x]
学会技能,
否则
遗忘技能。
HP1/4时才是黄血。

点评

有的,要打开一个开关,并行处理。对了,答案是3楼给的,我是改正了一下,认可时别忘记是给3楼。不是给我。  发表于 2012-8-15 18:34
那么关于公共事件的目标和条件开关有没有什么必要的设置呢?  发表于 2012-8-15 18:30
我写错了,$game_variables[z] = $game_actors[y].hp  发表于 2012-8-15 18:26

评分

参与人数 1星屑 +200 收起 理由
Luciffer + 200 认可答案

查看全部评分

《逝去的回忆3:四叶草之梦》真情发布,欢迎点击图片下载试玩喵。

《逝去的回忆3》的讨论群:
一群:192885514
二群:200460747
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
26 小时
注册时间
2012-8-5
帖子
21
6
 楼主| 发表于 2012-8-15 18:23:10 | 只看该作者
protosssonny 发表于 2012-8-15 17:59
我觉得应该是这样吧?
$game_variables[x] = $game_actors[y].maxhp
$game_variables[z] = $game_actors[ ...

不会出现同名冲突问题吗? maxhp 是指最大血量(也就是血量上限),那么其中一个应该是 $game_actors[y].hp,不是maxhp吧。

点评

谢谢纠正。  发表于 2012-8-15 18:26
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-4-30 05:32

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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