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

Project1

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

[已经过期] 如何让敌人和队友的状态用图标表示?

[复制链接]

Lv2.观梦者

梦石
0
星屑
308
在线时间
32 小时
注册时间
2019-11-4
帖子
20
跳转到指定楼层
1
发表于 2020-1-13 15:21:27 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 Phny 于 2020-1-13 15:24 编辑

前些天小弟下载了一个状态图标化范例工程~跟一般广为流传的状态图标化不同的是里面是可以把状态用图标显示在敌人身上,但是移到我自己的工程里就不好使了,也不知道是哪里出了问题
而且感觉底下的脚本改了非常多,跟注释里写的又好像不太一样,看不懂是怎么运作的了。。。。
现在就是想做到在敌方身上显示状态图标的同时又能在队友的脚下显示状态图标,就像图例一样,所以有大神来教教小弟怎么办嘛。。。。。。。



RUBY 代码复制
  1. #==============================================================================
  2. # 图标显示状态 v1.1
  3. # By 叶子
  4. # 9-30-2007 v1.1
  5. # 修正了描绘状态的一个致命BUG
  6. # 12-31-2005 v1.0
  7. # 重定义类:Window_Base, Window_Help
  8. #==============================================================================
  9. # 脚本功能:
  10. # 实现战斗中和菜单中用图标显示状态,代替原来的文字显示。
  11. # 默认最多同时显示5个状态 108行定义,已改为8
  12. #------------------------------------------------------------------------------
  13. # 设置方法:
  14. # 一个状态对应的图标文件名为“状态的动画ID”
  15. # 例如某状态的动画ID为50,那么它的图标就是“Icons\50.png”或“Icons\50.jpg”
  16. # 如果找不到对应的文件,会报错 ◎_◎
  17. #==============================================================================
  18. # 注意,在ICON_STATE_IDS中写上需要带图标的状态ID
  19. # ICON_STATE_IDS是一个数组,数组的方法请参考帮助文件
  20. # 例如:
  21. # 只要1,5,8号状态带图标,就这样:ICON_STATE_IDS = [1,5,8]
  22. # 要20到50号状态带图标:ICON_STATE_IDS = 20..50
  23. ICON_STATE_IDS = 1..400
  24. #==============================================================================
  25. # ■ Window_Base
  26. #------------------------------------------------------------------------------
  27. #  游戏中全部窗口的超级类。
  28. #==============================================================================
  29. class Window_Base < Window
  30.   #--------------------------------------------------------------------------
  31.   # ● 描绘状态
  32.   #     actor : 角色
  33.   #     x     : 描画目标 X 坐标
  34.   #     y     : 描画目标 Y 坐标
  35.   #     width : 描画目标的宽
  36.   #--------------------------------------------------------------------------
  37.   def draw_actor_state(actor, x, y, width = 120)  #玄
  38.     text = make_battler_state_text(actor, width, true)
  39.     text.gsub!(/\[/) { "" }
  40.     text.gsub!(/\]/) { "" }
  41.     s = text.split("/")
  42.     sp = 0
  43.     s.each do |i|
  44.       bitmap = RPG::Cache.icon("#{i}")     
  45.       cw = bitmap.width
  46.       ch = bitmap.height
  47.       src_rect = Rect.new(0, 0, cw, ch)
  48.       self.contents.blt(x + sp, y, bitmap, src_rect)
  49.       sp += cw + 10
  50.     end
  51.   end
  52. end
  53. class Window_Base < Window
  54.   #--------------------------------------------------------------------------
  55.   # ● 描绘状态
  56.   #     actor : 角色
  57.   #     x     : 描画目标 X 坐标
  58.   #     y     : 描画目标 Y 坐标
  59.   #     width : 描画目标的宽
  60.   #--------------------------------------------------------------------------
  61.   def draw_actor_state(actor, x, y, width = 240)
  62.     state_size = 0
  63.    # buff_idx = 0
  64.     #debuff_idx = 0
  65.     for state in actor.states
  66.       # 图标数量超出宽度就中断循环
  67.       if state_size >= 24
  68.         break
  69.       end
  70.       # 此状态不带图标就跳过
  71.       if !ICON_STATE_IDS.include?(state)
  72.         next
  73.       end
  74.       bitmap = RPG::Cache.icon($data_states[state].animation_id.to_s)
  75.       if actor.states_turn[state] >= $data_states[state].hold_turn/2
  76.         opacity = 255
  77.       else
  78.         opacity = 100
  79.       end
  80.       # 这里的图标大小默认是24x24,要改就改下面那个Rect.new(0, 0, 24, 24)
  81.     #  if $data_states[state].name.include?"☆"
  82.      #   if debuff_idx <= 5
  83.       #   self.contents.blt(x + 24 * debuff_idx, y + 56, bitmap, Rect.new(0, 0, 24, 24), opacity)
  84.        # else
  85.         # self.contents.blt(x + 24 * (debuff_idx-5), y +88, bitmap, Rect.new(0, 0, 24, 24), opacity)
  86.         #end
  87.         #debuff_idx += 1
  88.       #else
  89.        # if  buff_idx <= 5
  90.         # self.contents.blt(x + 24 * buff_idx, y + 4, bitmap, Rect.new(0, 0, 24, 24), opacity)
  91.         #else
  92.          #self.contents.blt(x + 24 * (buff_idx-5), y + 30, bitmap, Rect.new(0, 0, 24, 24), opacity)
  93.         #end
  94.         #buff_idx += 1
  95.       #end
  96.       if state_size <= 5
  97.        self.contents.blt(x+24 * state_size, y+4, bitmap, Rect.new(0, 0, 24, 24), opacity)
  98.       else
  99.        self.contents.blt(x+24 * (state_size-5), y+4+30, bitmap, Rect.new(0, 0, 24, 24), opacity)
  100.       end
  101.       state_size += 1
  102.     end
  103.   end
  104. end
  105. #==============================================================================
  106. # ■ Window_Help
  107. #------------------------------------------------------------------------------
  108. #  特技及物品的说明、角色的状态显示的窗口。
  109. #==============================================================================
  110. class Window_Help < Window_Base
  111.  
  112.   #--------------------------------------------------------------------------
  113.   # ● 设置敌人
  114.   #     enemy : 要显示名字和状态的敌人
  115.   #--------------------------------------------------------------------------
  116.   def set_enemy(enemy)
  117.     @text = ""
  118.     # 描绘敌人名字
  119.     set_text(enemy.name, 1)
  120.     # 描绘状态图标
  121.     state_size = 0
  122.     for state in enemy.states
  123.       # 图标数量超出宽度就中断循环
  124.       if state_size >= 10
  125.         break
  126.       end
  127.       #此状态不带图标就跳过
  128.      # if !ICON_STATE_IDS.include?(state)
  129.       #  next
  130.       #end
  131.       #bitmap = RPG::Cache.icon($data_states[state].animation_id.to_s)
  132.       #if enemy.states_turn[state] >= $data_states[state].hold_turn/2
  133.        # opacity = 255
  134.       #else
  135.  
  136.        # opacity = 100
  137.       #end
  138.       #self.contents.blt(108+24 * state_size,0, bitmap, Rect.new(0, 0, 24, 24), opacity)
  139.       #state_size += 1
  140. #====================玄:显示优化融合===================================
  141.       @text +=" "
  142.       @text += $data_states[state].name.to_s if $data_states[state].id < 400 #玄:无极状态不显示
  143.       @text +=" "
  144.      end  # of for
  145.    set_text(@text, 0)
  146.  
  147.  
  148. #========================================================================
  149.  
  150.   end
  151. end
  152. class Game_Battler
  153.   attr_reader :states_turn       # 声明状态剩余回合
  154. end
  155. #==============================================================================
  156. # 本脚本来自www.66RPG.com,使用和转载请保留此信息
  157. # 欢迎访问www.66RPG.com
  158. # 梦想世界,在你手中
  159. #==============================================================================

QQ图片20200113150934.png (345.02 KB, 下载次数: 12)

QQ图片20200113150934.png

Lv3.寻梦者

梦石
0
星屑
3846
在线时间
1966 小时
注册时间
2013-1-3
帖子
9536
2
发表于 2020-1-13 18:59:51 | 只看该作者
为什么我感觉原脚本就没在战斗图脚下显示状态的功能?重定义了Window_Base和Window_Help和战斗图有什么关系  -_-||
你发一下你的血条脚本吧,应该是血条的问题
《宿愿·寻剑篇》正式版已经发布!快去看看!点击进入论坛发布贴
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
308
在线时间
32 小时
注册时间
2019-11-4
帖子
20
3
 楼主| 发表于 2020-1-13 22:14:40 | 只看该作者
紫英晓狼1130 发表于 2020-1-13 18:59
为什么我感觉原脚本就没在战斗图脚下显示状态的功能?重定义了Window_Base和Window_Help和战斗图有什么关系 ...

小弟截的这个也只是范例工程的图。。。。因为到时候还是打算用默认的血量显示,我自己做的只是在默认的基础上多描绘两个血条而已,应该不冲突。。。。主要还是想要实现敌我的状态图标显示功能。。。主要是现在用的这个状态图标化脚本我自己都不怎么看得懂就别提运用了

点评

而且你如果想让敌人周围显示图标也用不着非得用脚本,你把对应的图标涂成状态动画不就成了吗?如果怕和主角重复可以建立不同的状态  发表于 2020-1-14 00:49
“状态图标化”的脚本只对我方有效,对于敌方的话需要移植“脚下显示HPSP”  发表于 2020-1-14 00:40
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
308
在线时间
32 小时
注册时间
2019-11-4
帖子
20
4
 楼主| 发表于 2020-1-14 13:12:22 | 只看该作者
紫英晓狼1130 发表于 2020-1-13 18:59
为什么我感觉原脚本就没在战斗图脚下显示状态的功能?重定义了Window_Base和Window_Help和战斗图有什么关系 ...

脚下显示HPSP这个脚本我有在用,直接把图标做成动画这个我也是有想过,但是XP就算使用了可以同时显示多状态的动画图标也只能按照设定好的位置放
如果做成摆成一排的样子施加状态时有可能一排里面没显示的状态会直接空出一块不太美观。。。。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-23 09:16

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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