查看: 3043|回复: 18

[已经解决] 求大神看看这个显示敌人信息脚本可以像这样改造吗~

[复制链接]
梦石
0
星屑
5217
在线时间
494 小时
注册时间
2018-6-18
回帖
598

超评测参与

发表于 2021-8-28 10:33:38 | 显示全部楼层 |阅读模式
悬赏500星屑已解决
本帖最后由 RMVXA 于 2021-8-31 06:14 编辑

改造前:
2021-08-28_101210.jpg
改造后预期:
2021-08-28_101159.jpg

相当于显示敌人后缀的功能直接替换成为显示敌人信息的功能

脚本截图:
091101y8m7eue7t1u8tez6.jpg

范例工程:
+敌人选择窗口改造.rar (1.59 MB, 下载次数: 31)

最佳答案

查看完整内容

简单写的,你可以看一下。 [pre lang="ruby"] module CLD99 module Config # 是否固定状态绘制的起始位置 STATES_FIX_POS = false # 固定状态绘制的起始位置时,X坐标位置 STATES_X = 100 # 是否固定状态绘制的宽度 STATES_FIX_WIDTH = false # 留给状态的最大宽度 STATES_WIDTH = 100 # 状态的绘制间隔 STATE_MARGIN = 24 # 状态与血条的间隔 STATE_PADDI ...
梦石
10
星屑
39550
在线时间
1919 小时
注册时间
2010-11-14
回帖
3214

R考场第七期纪念奖

发表于 2021-8-28 10:33:39 | 显示全部楼层
RMVXA 发表于 2021-9-3 23:39
半夜爬起来上厕所看到的,习惯又用了点评Sorry。
这个图片只是演示了一下大概布局,不是最终的效 ...

简单写的,你可以看一下。

[pre lang="ruby"]
module CLD99
  module Config
    # 是否固定状态绘制的起始位置
    STATES_FIX_POS = false
   
    # 固定状态绘制的起始位置时,X坐标位置
    STATES_X = 100

    # 是否固定状态绘制的宽度
    STATES_FIX_WIDTH = false
   
    # 留给状态的最大宽度
    STATES_WIDTH = 100
   
    # 状态的绘制间隔
    STATE_MARGIN = 24

    # 状态与血条的间隔
    STATE_PADDING = 8

    # 留给血条的宽度
    GAUGE_WIDTH = 60

    # 血条与弱点的间隔
    GAUGE_PADDING = 8

    # 当属性伤害到达多少倍时视作弱点属性
    ELEMENT_RATIO = 1.5

    # 弱点的绘制间隔
    ELEMENT_MARGIN = 24

    # 属性アイコン設定 [なし, 物理, 吸収, 炎, 氷, 雷, 水, 大地, 風, 神聖, 暗黒]
    # iconのindexを上記の順に指定してください。
    ELEMENT_ICONS = [0, 15, 10, 96, 97, 98, 99, 100, 101, 102, 103]
  end
end


class Window_BattleEnemy
  
  include CLD99::Config

  alias draw_all_items_for_states_cld99 draw_all_items
  def draw_all_items
    begin
      if STATES_FIX_POS
        @_state_x = STATES_X
      else
        @_state_x = $game_troop.alive_members.map { |m|
          self.text_size(m.name).width
        }.max + 24
      end
   
      if STATES_FIX_WIDTH
        @_state_width = STATES_WIDTH
      else
        @_state_width = $game_troop.alive_members.map { |m|
          [m.states.size - 1, (STATES_WIDTH - 24) / STATE_MARGIN].min
        }.max * STATE_MARGIN + 24
      end
    rescue
      @_state_x = STATES_X
      @_state_width = STATES_WIDTH
    end
    draw_all_items_for_states_cld99
  end
  
  alias draw_item_for_states_cld99 draw_item
  def draw_item(index)
    draw_item_for_states_cld99(index)
    draw_item_states(index)
    draw_item_gauge(index)
    draw_item_weak(index)
  end

  def draw_item_states(index)
    return if $game_troop.alive_members.size < 1
    if STATES_FIX_POS
      x = STATES_X
    else
      x = $game_troop.alive_members.map { |m| self.text_size(m.name).width }.max + 24
    end
    @_state_x = x
    enemy = $game_troop.alive_members[index]
    rect = item_rect(index)
    states = enemy.state_icons + enemy.buff_icons
    states.each_with_index do |n, i|
      break if x + 24 > @_state_x + STATES_WIDTH
      draw_icon(n, x, rect.y)
      x += STATE_MARGIN
    end
  end

  def draw_item_gauge(index)
    return if $game_troop.alive_members.size < 1
    x = @_state_x + @_state_width + STATE_PADDING
    enemy = $game_troop.alive_members[index]
    rect = item_rect(index)
    text_rect = text_size(enemy.hp.to_s)

    draw_gauge(x, rect.y, GAUGE_WIDTH, enemy.hp_rate, hp_gauge_color1, hp_gauge_color2)
    change_color(hp_color(enemy))
    draw_text(x + GAUGE_WIDTH - text_rect.width, rect.y, text_rect.width, text_rect.height, enemy.hp)
    change_color(normal_color)
  end

  def draw_item_weak(index)
    return if $game_troop.alive_members.size < 1
    x = @_state_x + @_state_width + STATE_PADDING + GAUGE_WIDTH + GAUGE_PADDING
    inc = 0
    enemy = $game_troop.alive_members[index]
    rect = item_rect(index)
    width = rect.width - x
   
    1.upto($data_system.elements.size) do |i|
      break if inc + 24 > width
      next unless enemy.element_rate(i) >= ELEMENT_RATIO
      draw_icon(ELEMENT_ICONS, x + inc, rect.y)
      inc += ELEMENT_MARGIN
    end
  end

end[/pre]

QQ截图20210903222119.jpg
QQ截图20210903222106.jpg

通过设置也可以固定状态的X值

点评

谢谢大神的解答,我完了再做一些调整,确保跟工程的风格一致~XD  发表于 2021-9-4 06:37
强~ 居然能根据敌人名字长度变化。我回来一定要好好研究下大神的写法!  发表于 2021-9-4 06:33

评分

参与人数 2星屑 +300 赞 +1 收起 理由
alexncf125 + 300 认可答案
RMVXA + 1 精品文章

查看全部评分

用头画头像,用脚写脚本
回复

使用道具 举报

梦石
10
星屑
39550
在线时间
1919 小时
注册时间
2010-11-14
回帖
3214

R考场第七期纪念奖

发表于 2021-8-31 00:13:46 | 显示全部楼层
理论可行,不过工程没看到。

点评

论坛不鼓励连贴,你在下面接一楼我再回复你。  发表于 2021-9-1 22:59
只显示状态的话也可以。不需要显示血量和弱点。剩的其他问题。就是不知道应该怎么添加。  发表于 2021-9-1 11:58
确实啊,中文版还好说,可以控制在四个字。但是英文版就不行了。  发表于 2021-9-1 11:56
从UI角度,如果敌人的名字稍微长一点,名称后面这么多的信息就没地方放了  发表于 2021-8-31 23:51
操作失误... 我把工程稍微汉化了下,方便操作。结果把原来的删除,忘了上传新的……  发表于 2021-8-31 06:10
用头画头像,用脚写脚本
回复

使用道具 举报

梦石
0
星屑
5217
在线时间
494 小时
注册时间
2018-6-18
回帖
598

超评测参与

 楼主| 发表于 2021-9-2 06:34:25 | 显示全部楼层
本帖最后由 RMVXA 于 2021-9-2 07:28 编辑
KB.Driver 发表于 2021-8-31 00:13
理论可行,不过工程没看到。


不好意思刚上线 ,
我想在敌人的选择窗口里,敌人名字后面显示:
状态图标+血条(血条这里的话个别敌人如BOSS会显示问号) +弱点图标。
各元素的坐标跟我方窗口相同即可,把TP槽值的部分替换为显示弱点的图标了,而且敌人有时会多于4个,比我方数量多,这时菜单下拉...
这是我预想的结果,不知道能不能实现,感谢大神的回复~
回复

使用道具 举报

梦石
10
星屑
39550
在线时间
1919 小时
注册时间
2010-11-14
回帖
3214

R考场第七期纪念奖

发表于 2021-9-2 22:28:53 | 显示全部楼层
RMVXA 发表于 2021-9-2 06:34
不好意思刚上线 ,
我想在敌人的选择窗口里,敌人名字后面显示:
状态图标+血条(血条这里的话个 ...

你可能要想清楚,这还是没解决UI拥堵的问题。
敌人名字长的话,窗口后面那点长度不足以显示状态、血条、弱点。

相比之下, 有些现成的战斗系统做了仿XP的敌人选择,
上方会显示一个信息窗口,那里可以放很多东西

你可以考虑是否要用现成的脚本
用头画头像,用脚写脚本
回复

使用道具 举报

梦石
0
星屑
5217
在线时间
494 小时
注册时间
2018-6-18
回帖
598

超评测参与

 楼主| 发表于 2021-9-3 06:50:19 | 显示全部楼层
本帖最后由 RMVXA 于 2021-9-3 06:56 编辑
KB.Driver 发表于 2021-9-2 22:28
你可能要想清楚,这还是没解决UI拥堵的问题。
敌人名字长的话,窗口后面那点长度不足以显示状态、血条、 ...


大神~ 我的敌人选择栏宽度跟我方一样的就像这样:
我方:
1.jpg
敌方:
2021-09-03_063525.jpg

改造后预想效果:(状态栏,血条的位置跟我方窗口完全相同)
2.jpg
菜鸟只会修改,完全不知道应该怎么添加新的上去,照着我方的脚本写也经常报错
回复

使用道具 举报

梦石
0
星屑
29901
在线时间
5734 小时
注册时间
2016-3-8
回帖
1653
发表于 2021-9-3 07:25:12 | 显示全部楼层
冒昧问一下,主楼工程內的脚本是官方原裝版吗,怎么看上去有不少地方被注释了

顺道求一下官网网址或脚本出処,,,

点评

你好,是说这个敌人信息的脚本吗?这个脚本是N年前下载的一个范例工程里的,它原来就是注释的。  发表于 2021-9-3 10:34
回复

使用道具 举报

梦石
10
星屑
39550
在线时间
1919 小时
注册时间
2010-11-14
回帖
3214

R考场第七期纪念奖

发表于 2021-9-3 21:22:04 | 显示全部楼层
RMVXA 发表于 2021-9-3 06:50
大神~ 我的敌人选择栏宽度跟我方一样的就像这样:
我方:

想做得更像的话,你可以提供一下这个血条的素材

点评

你还是在下面回帖吧,我不希望连贴。  发表于 2021-9-3 21:55
这只是演示了一下大概布局,不是最终效果。主要是不知道怎么添加这些模块, 调整参数对我就容易一些。另外血条用的是KMS的槽值美化。  发表于 2021-9-3 21:36
用头画头像,用脚写脚本
回复

使用道具 举报

梦石
0
星屑
5217
在线时间
494 小时
注册时间
2018-6-18
回帖
598

超评测参与

 楼主| 发表于 2021-9-3 23:39:54 | 显示全部楼层
KB.Driver 发表于 2021-9-3 21:22
想做得更像的话,你可以提供一下这个血条的素材

半夜爬起来上厕所看到的,习惯又用了点评Sorry。
这个图片只是演示了一下大概布局,不是最终的效果。
主要是不知道怎么添加这些模块,调整参数这种细节我就比较擅长啦。
还有这个血条用的是KMS的槽值美化脚本。
回复

使用道具 举报

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

本版积分规则

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

在本版发帖返回顶部