查看: 1926|回复: 2

[已经解决] 请教如何在Window_Status显示全属性抗性列表?

[复制链接]
梦石
0
星屑
208
在线时间
420 小时
注册时间
2020-1-11
回帖
175
发表于 2022-5-22 22:22:43 | 显示全部楼层 |阅读模式
悬赏200星屑已解决
就是红色框中的列表,一直找不到适合的数据提取方法,求思路。
  #--------------------------------------------------------------------------
  # ● 绘制 耐性抗性有效度 区域
  #--------------------------------------------------------------------------
  def draw_block_state_rate(x,y)

    if @actor.element_word_rate[0] < 0
      r1 = Vocab::R_LH_1
    elsif @actor.element_word_rate[0] == 0
      r1 = Vocab::R_LH_2
    elsif @actor.element_word_rate[0] > 0 && @actor.element_word_rate[0] < 1
      r1 = Vocab::R_LH_3
    elsif @actor.element_word_rate[0] == 1
      r1 = Vocab::R_LH_4
    elsif @actor.element_word_rate[0] > 1
      r1 = Vocab::R_LH_5
    elsif @actor.element_word_rate[0] >= 2
      r1 = Vocab::R_LH_6
    else
      r1 = Vocab::R_LH_7
    end

ps:
case actor.id
when 1
      @element_a_rate =[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]   <--  这个数组是羞耻的手工输入,不是编码生成的,
2022-05-22_220939.png

最佳答案

查看完整内容

简单说一下,RPG::System里面有各种用语,比如属性的数组,然后Game_Battler里有查询各种抗性的方法,两者一起用即可。 下面是System里的一些属性: 下面是Game_Battler的一些方法: [pre lang="ruby"] #-------------------------------------------------------------------------- # ● 获取属性抗性 #-------------------------------------------------------------------------- def element_rate(element_id) ...
梦石
0
星屑
1803
在线时间
133 小时
注册时间
2013-10-6
回帖
181
发表于 2022-5-22 22:22:44 | 显示全部楼层
本帖最后由 不死鸟之翼 于 2022-5-24 04:32 编辑

简单说一下,RPG::System里面有各种用语,比如属性的数组,然后Game_Battler里有查询各种抗性的方法,两者一起用即可。

下面是System里的一些属性:

  1. elements
  2. 属性列表。以属性 ID 为下标的字符串数组,0 号元素为空字符串。

  3. skill_types
  4. 技能类型列表。以技能类型 ID 为下标的字符串数组,0 号元素为空字符串。

  5. weapon_types
  6. 武器类型列表。以武器类型 ID 为下标的字符串数组,0 号元素为空字符串。

  7. armor_types
  8. 护甲类型列表。以护甲类型 ID 为下标的字符串数组,0 号元素为空字符串。
复制代码


下面是Game_Battler的一些方法:

[pre lang="ruby"]  #--------------------------------------------------------------------------
  # ● 获取属性抗性
  #--------------------------------------------------------------------------
  def element_rate(element_id)
    features_pi(FEATURE_ELEMENT_RATE, element_id)
  end
  #--------------------------------------------------------------------------
  # ● 获取弱化抗性
  #--------------------------------------------------------------------------
  def debuff_rate(param_id)
    features_pi(FEATURE_DEBUFF_RATE, param_id)
  end
  #--------------------------------------------------------------------------
  # ● 获取状态抗性
  #--------------------------------------------------------------------------
  def state_rate(state_id)
    features_pi(FEATURE_STATE_RATE, state_id)
  end
  #--------------------------------------------------------------------------
  # ● 获取免疫状态数组
  #--------------------------------------------------------------------------
  def state_resist_set
    features_set(FEATURE_STATE_RESIST)
  end
  #--------------------------------------------------------------------------
  # ● 判定状态是否免疫
  #--------------------------------------------------------------------------
  def state_resist?(state_id)
    state_resist_set.include?(state_id)
  end[/pre]

假如我们要把第一个敌人的所有属性的倍率一起输出:

[pre lang="ruby"]$target = $game_troop.members[0]
$data_system.elements.drop(1).each_with_index { |val, ind|
  p "#{val}×#{$target.element_rate(ind)}"
}[/pre]

  1. "物理×1.0"
  2. "吸收×1.0"
  3. "炎×1.0"
  4. "冰×2.0"
  5. "电×1.0"
  6. "水×1.0"
  7. "地×1.0"
  8. "风×1.0"
  9. "圣×1.0"
  10. "暗×1.0"
复制代码


要是想存成数组的话就map一下。至于显示第一个字也好,改成弱/耐也好,可以自行发挥。
←你看到一只经常潜水的萌新。
回复

使用道具 举报

梦石
0
星屑
208
在线时间
420 小时
注册时间
2020-1-11
回帖
175
 楼主| 发表于 2022-5-24 07:17:04 | 显示全部楼层
不死鸟之翼 发表于 2022-5-22 22:22
简单说一下,RPG::System里面有各种用语,比如属性的数组,然后Game_Battler里有查询各种抗性的方法,两者 ...

的确是好思路。我试试看能不能嫁接到我的工程上。
回复

使用道具 举报

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

本版积分规则

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

在本版发帖返回顶部