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

Project1

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

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

[复制链接]

Lv3.寻梦者

梦石
0
星屑
4939
在线时间
489 小时
注册时间
2018-6-18
帖子
620
跳转到指定楼层
1
发表于 2021-8-28 10:33:38 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
500星屑
本帖最后由 RMVXA 于 2021-8-31 06:14 编辑

改造前:

改造后预期:


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

脚本截图:


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

最佳答案

查看完整内容

简单写的,你可以看一下。 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 # 留 ...

Lv5.捕梦者

梦石
10
星屑
39592
在线时间
1920 小时
注册时间
2010-11-14
帖子
3320

R考场第七期纪念奖

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

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

RUBY 代码复制
  1. module CLD99
  2.   module Config
  3.     # 是否固定状态绘制的起始位置
  4.     STATES_FIX_POS = false
  5.  
  6.     # 固定状态绘制的起始位置时,X坐标位置
  7.     STATES_X = 100
  8.  
  9.     # 是否固定状态绘制的宽度
  10.     STATES_FIX_WIDTH = false
  11.  
  12.     # 留给状态的最大宽度
  13.     STATES_WIDTH = 100
  14.  
  15.     # 状态的绘制间隔
  16.     STATE_MARGIN = 24
  17.  
  18.     # 状态与血条的间隔
  19.     STATE_PADDING = 8
  20.  
  21.     # 留给血条的宽度
  22.     GAUGE_WIDTH = 60
  23.  
  24.     # 血条与弱点的间隔
  25.     GAUGE_PADDING = 8
  26.  
  27.     # 当属性伤害到达多少倍时视作弱点属性
  28.     ELEMENT_RATIO = 1.5
  29.  
  30.     # 弱点的绘制间隔
  31.     ELEMENT_MARGIN = 24
  32.  
  33.     # 属性アイコン設定 [なし, 物理, 吸収, 炎, 氷, 雷, 水, 大地, 風, 神聖, 暗黒]
  34.     # iconのindexを上記の順に指定してください。
  35.     ELEMENT_ICONS = [0, 15, 10, 96, 97, 98, 99, 100, 101, 102, 103]
  36.   end
  37. end
  38.  
  39.  
  40. class Window_BattleEnemy
  41.  
  42.   include CLD99::Config
  43.  
  44.   alias draw_all_items_for_states_cld99 draw_all_items
  45.   def draw_all_items
  46.     begin
  47.       if STATES_FIX_POS
  48.         @_state_x = STATES_X
  49.       else
  50.         @_state_x = $game_troop.alive_members.map { |m|
  51.           self.text_size(m.name).width
  52.         }.max + 24
  53.       end
  54.  
  55.       if STATES_FIX_WIDTH
  56.         @_state_width = STATES_WIDTH
  57.       else
  58.         @_state_width = $game_troop.alive_members.map { |m|
  59.           [m.states.size - 1, (STATES_WIDTH - 24) / STATE_MARGIN].min
  60.         }.max * STATE_MARGIN + 24
  61.       end
  62.     rescue
  63.       @_state_x = STATES_X
  64.       @_state_width = STATES_WIDTH
  65.     end
  66.     draw_all_items_for_states_cld99
  67.   end
  68.  
  69.   alias draw_item_for_states_cld99 draw_item
  70.   def draw_item(index)
  71.     draw_item_for_states_cld99(index)
  72.     draw_item_states(index)
  73.     draw_item_gauge(index)
  74.     draw_item_weak(index)
  75.   end
  76.  
  77.   def draw_item_states(index)
  78.     return if $game_troop.alive_members.size < 1
  79.     if STATES_FIX_POS
  80.       x = STATES_X
  81.     else
  82.       x = $game_troop.alive_members.map { |m| self.text_size(m.name).width }.max + 24
  83.     end
  84.     @_state_x = x
  85.     enemy = $game_troop.alive_members[index]
  86.     rect = item_rect(index)
  87.     states = enemy.state_icons + enemy.buff_icons
  88.     states.each_with_index do |n, i|
  89.       break if x + 24 > @_state_x + STATES_WIDTH
  90.       draw_icon(n, x, rect.y)
  91.       x += STATE_MARGIN
  92.     end
  93.   end
  94.  
  95.   def draw_item_gauge(index)
  96.     return if $game_troop.alive_members.size < 1
  97.     x = @_state_x + @_state_width + STATE_PADDING
  98.     enemy = $game_troop.alive_members[index]
  99.     rect = item_rect(index)
  100.     text_rect = text_size(enemy.hp.to_s)
  101.  
  102.     draw_gauge(x, rect.y, GAUGE_WIDTH, enemy.hp_rate, hp_gauge_color1, hp_gauge_color2)
  103.     change_color(hp_color(enemy))
  104.     draw_text(x + GAUGE_WIDTH - text_rect.width, rect.y, text_rect.width, text_rect.height, enemy.hp)
  105.     change_color(normal_color)
  106.   end
  107.  
  108.   def draw_item_weak(index)
  109.     return if $game_troop.alive_members.size < 1
  110.     x = @_state_x + @_state_width + STATE_PADDING + GAUGE_WIDTH + GAUGE_PADDING
  111.     inc = 0
  112.     enemy = $game_troop.alive_members[index]
  113.     rect = item_rect(index)
  114.     width = rect.width - x
  115.  
  116.     1.upto($data_system.elements.size) do |i|
  117.       break if inc + 24 > width
  118.       next unless enemy.element_rate(i) >= ELEMENT_RATIO
  119.       draw_icon(ELEMENT_ICONS[i], x + inc, rect.y)
  120.       inc += ELEMENT_MARGIN
  121.     end
  122.   end
  123.  
  124. end





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

点评

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

评分

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

查看全部评分

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

使用道具 举报

Lv5.捕梦者

梦石
10
星屑
39592
在线时间
1920 小时
注册时间
2010-11-14
帖子
3320

R考场第七期纪念奖

3
发表于 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
用头画头像,用脚写脚本
回复

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
4939
在线时间
489 小时
注册时间
2018-6-18
帖子
620
4
 楼主| 发表于 2021-9-2 06:34:25 | 只看该作者
本帖最后由 RMVXA 于 2021-9-2 07:28 编辑
KB.Driver 发表于 2021-8-31 00:13
理论可行,不过工程没看到。


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

使用道具 举报

Lv5.捕梦者

梦石
10
星屑
39592
在线时间
1920 小时
注册时间
2010-11-14
帖子
3320

R考场第七期纪念奖

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

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

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

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

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
4939
在线时间
489 小时
注册时间
2018-6-18
帖子
620
6
 楼主| 发表于 2021-9-3 06:50:19 | 只看该作者
本帖最后由 RMVXA 于 2021-9-3 06:56 编辑
KB.Driver 发表于 2021-9-2 22:28
你可能要想清楚,这还是没解决UI拥堵的问题。
敌人名字长的话,窗口后面那点长度不足以显示状态、血条、 ...


大神~ 我的敌人选择栏宽度跟我方一样的就像这样:
我方:

敌方:


改造后预想效果:(状态栏,血条的位置跟我方窗口完全相同)

菜鸟只会修改,完全不知道应该怎么添加新的上去,照着我方的脚本写也经常报错
回复

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
26298
在线时间
5360 小时
注册时间
2016-3-8
帖子
1655
7
发表于 2021-9-3 07:25:12 | 只看该作者
冒昧问一下,主楼工程內的脚本是官方原裝版吗,怎么看上去有不少地方被注释了

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

点评

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

使用道具 举报

Lv5.捕梦者

梦石
10
星屑
39592
在线时间
1920 小时
注册时间
2010-11-14
帖子
3320

R考场第七期纪念奖

8
发表于 2021-9-3 21:22:04 | 只看该作者
RMVXA 发表于 2021-9-3 06:50
大神~ 我的敌人选择栏宽度跟我方一样的就像这样:
我方:

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

点评

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

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
4939
在线时间
489 小时
注册时间
2018-6-18
帖子
620
9
 楼主| 发表于 2021-9-3 23:39:54 | 只看该作者
KB.Driver 发表于 2021-9-3 21:22
想做得更像的话,你可以提供一下这个血条的素材

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

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-22 18:22

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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