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

Project1

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

[已经解决] 如何让敌人显示多种状态

[复制链接]

Lv1.梦旅人

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

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

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

x
现在我让敌人中了虚弱以后,敌人名字旁边就有                       某某怪【虚弱】的括号
然后我继续让敌人中力量下降的状态,那么虚弱的状态就没了,变成了   某某怪【力量下降】
如何让敌人中2个状态呢?
就是括号里面同时出现                                             某某怪【虚弱/力量下降】  这样

Lv3.寻梦者

梦石
0
星屑
3846
在线时间
1966 小时
注册时间
2013-1-3
帖子
9536
2
发表于 2013-9-15 07:07:25 | 只看该作者
这里是脚本,LZ可以试试

  1. #==============================================================================
  2. # 本脚本来自www.66RPG.com,使用和转载请保留此信息
  3. #==============================================================================
  4. #==============================================================================
  5. # 多重状态     Ver. 1.1                 by Claimh
  6. #------------------------------------------------------------------------------
  7. # http://www.k3.dion.ne.jp/~claimh/
  8. #==============================================================================
  9. class Window_Base < Window
  10.   #--------------------------------------------------------------------------
  11.   #  生成状态文字
  12.   #--------------------------------------------------------------------------
  13.   def make_battler_state_text_over3(battler, width, need_normal)
  14.     brackets_width = self.contents.text_size("[]").width
  15.     text = ""
  16.     text0 = ""
  17.     ret_text = ["",""]
  18.     for i in battler.states
  19.       if $data_states[i].rating >= 1
  20.         if text == ""
  21.           text = $data_states[i].name
  22.         else
  23.           new_text = text + "/" + $data_states[i].name
  24.           text_width = self.contents.text_size(new_text).width
  25.           if text_width > width - brackets_width
  26.             text0 = new_text  
  27.             text = ""
  28.             new_text = ""
  29.             text_width = 0
  30.           else
  31.             text = new_text  
  32.           end
  33.         end
  34.       end
  35.     end
  36.     if text == "" and text0 == ""
  37.       ret_text = ["[正常]", ""]
  38.     elsif text0 == ""
  39.       ret_text[0] = "[" + text + "]"
  40.       ret_text[1] = ""
  41.     else
  42.       ret_text[0] = "[" + text0 + "]"
  43.       if text != ""
  44.         ret_text[1] = "[" + text + "]"
  45.       else
  46.         ret_text[1] = ""
  47.       end
  48.     end
  49.     return ret_text
  50.   end
  51.   #--------------------------------------------------------------------------
  52.   # 描绘角色状态
  53.   #--------------------------------------------------------------------------
  54.   def draw_actor_state(actor, x, y, width = 120)
  55.     text = make_battler_state_text_over3(actor, width, true)
  56.     self.contents.font.color = actor.hp == 0 ? knockout_color : normal_color
  57.     if text[1] == ""
  58.       self.contents.draw_text(x-5, y, width+5, 32, text[0])
  59.     else
  60.       self.contents.font.size = 20
  61.       self.contents.draw_text(x-5, y - 15 , width+5, 32, text[0])
  62.       self.contents.draw_text(x-5, y + 8, width+5, 32, text[1])
  63.     end
  64.   end
  65. end
  66. #==============================================================================
  67. # 本脚本来自www.66RPG.com,使用和转载请保留此信息
  68. #==============================================================================
复制代码

点评

我用了这么脚本以后发现没变化,我看了一下脚本,是不是要自己输入状态名字啊?在哪里输入啊? 我刚学这个才1天...脚本只能略懂....  发表于 2013-9-15 15:29
《宿愿·寻剑篇》正式版已经发布!快去看看!点击进入论坛发布贴
回复 支持 反对

使用道具 举报

Lv4.逐梦者 (版主)

梦石
0
星屑
9532
在线时间
5073 小时
注册时间
2013-6-21
帖子
3580

开拓者贵宾剧作品鉴家

3
发表于 2013-9-15 10:52:38 | 只看该作者
本帖最后由 RyanBern 于 2013-9-15 20:36 编辑

楼主可以参考楼上的方法,我这里还有一个把状态用图标表示的方法,楼主可以试一下,效果也不错。
使用方法都在脚本的注释里面。
  1. #==============================================================================
  2. # 状态图标化脚本(转载+自定义改编)
  3. #==============================================================================
  4. # Date 12-31-2005
  5. # 重定义类:Window_Base, Window_Help
  6. #==============================================================================
  7. # 脚本功能:
  8. # 实现战斗中和菜单中用图标显示状态,代替原来的文字显示。(类似于War3的状态图标)
  9. # 默认最多同时显示5个状态
  10. # 在敌人名字的右侧还可以显示敌人的剩余HP
  11. #------------------------------------------------------------------------------
  12. # 设置方法:
  13. # 一个状态对应的图标文件名为“状态名字_sta.png”
  14. # 例如死亡的状态,那么它的图标就是“Icons\死亡_sta.png”
  15. # 如果找不到对应的文件,会报错 -_-||
  16. # 图标的默认大小是24*24,如果需要更改,请改变下面的ICON_SIZE
  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..19
  24. ICON_SIZE = 20

  25. #==============================================================================
  26. # ■ Window_Base
  27. #------------------------------------------------------------------------------
  28. #  游戏中全部窗口的超级类。
  29. #==============================================================================

  30. class Window_Base < Window
  31. #--------------------------------------------------------------------------
  32. # ● 描绘状态
  33. #     actor : 角色
  34. #     x     : 描画目标 X 坐标
  35. #     y     : 描画目标 Y 坐标
  36. #     width : 描画目标的宽
  37. #--------------------------------------------------------------------------
  38. def draw_actor_state(actor, x, y, width = 120)
  39.   state_size = 0
  40.   for state in actor.states
  41.     # 图标数量超出宽度就中断循环
  42.     if state_size >= width / ICON_SIZE
  43.       break
  44.     end
  45.     # 此状态不带图标就跳过
  46.     if !ICON_STATE_IDS.include?(state)
  47.       next
  48.     end
  49.     icon_name = $data_states[state].name + "_sta.png"
  50.     bitmap = RPG::Cache.icon(icon_name)
  51.     if actor.states_turn[state] >= $data_states[state].hold_turn/2
  52.       opacity = 255
  53.     else
  54.       opacity = 100
  55.     end
  56.     # 这里的图标大小默认是24x24,要改就改下面那个Rect.new(0, 0, 24, 24)
  57.     self.contents.blt(x + 16 * state_size, y + 8, bitmap, Rect.new(0, 0, ICON_SIZE, ICON_SIZE), opacity)
  58.     state_size += 1
  59.   end
  60. end
  61. end


  62. #==============================================================================
  63. # ■ Window_Help
  64. #------------------------------------------------------------------------------
  65. #  特技及物品的说明、角色的状态显示的窗口。
  66. #==============================================================================

  67. class Window_Help < Window_Base
  68. #--------------------------------------------------------------------------
  69. # ● 设置敌人
  70. #     enemy : 要显示名字和状态的敌人
  71. #--------------------------------------------------------------------------
  72. def set_enemy(enemy)
  73.   self.contents.clear
  74.   # 描绘状态图标
  75.   state_size = 0
  76.   for state in enemy.states
  77.     # 图标数量超出宽度就中断循环
  78.     if state_size >= width / ICON_SIZE
  79.       break
  80.     end
  81.     # 此状态不带图标就跳过
  82.     if !ICON_STATE_IDS.include?(state)
  83.       next
  84.     end
  85.     icon_name = $data_states[state].name + "_sta.png"
  86.     bitmap = RPG::Cache.icon(icon_name)
  87.     if enemy.states_turn[state] >= $data_states[state].hold_turn/2
  88.       opacity = 255
  89.     else
  90.       opacity = 100
  91.     end
  92.     self.contents.blt(70 + 16 * state_size, 0, bitmap, Rect.new(0, 0, ICON_SIZE, ICON_SIZE), opacity)
  93.     state_size += 1
  94.   end
  95.   # 描绘敌人名字
  96.   text = enemy.name
  97.   self.contents.font.color = normal_color
  98.   self.contents.draw_text(4, 0, self.width - 40, 32, text, 1)
  99.   self.contents.font.color = system_color
  100.   self.contents.draw_text(400, 0, 32, 32, "HP", 1)
  101.   self.contents.font.color = normal_color
  102.   text = enemy.hp.to_s + "/" + enemy.maxhp.to_s
  103.   self.contents.draw_text(460, 0, 144, 32, text, 2)
  104.   @text = nil
  105.   self.visible = true
  106. end
  107. end

  108. class Game_Battler
  109. attr_reader :states_turn       # 声明状态剩余回合
  110. end
复制代码
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
8 小时
注册时间
2013-9-14
帖子
8
4
 楼主| 发表于 2013-9-15 14:39:15 | 只看该作者
RyanBern 发表于 2013-9-15 10:52
楼主可以参考楼上的方法,我这里还有一个把状态用图标表示的方法,楼主可以试一下,效果也不错。
使用方法 ...

我尝试了这个脚本,可是为什么我方有显示多种状态,敌方名字旁边什么状态都不显示呢?
我将图片丢进icons里面,我方死亡之后状态图片也没有出现..
显示血量的功能倒是有了
回复 支持 反对

使用道具 举报

Lv4.逐梦者 (版主)

梦石
0
星屑
9532
在线时间
5073 小时
注册时间
2013-6-21
帖子
3580

开拓者贵宾剧作品鉴家

5
发表于 2013-9-15 20:38:10 | 只看该作者
jy03781286 发表于 2013-9-15 14:39
我尝试了这个脚本,可是为什么我方有显示多种状态,敌方名字旁边什么状态都不显示呢?
我将图片丢进icon ...

是有一些问题,改脚本的时候没有注意。原来那个帖子我已经编辑好了,应该没有问题,在新工程中能运行。

评分

参与人数 1星屑 +30 收起 理由
myownroc + 30 未能完全解答问题

查看全部评分

回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
8 小时
注册时间
2013-9-14
帖子
8
6
 楼主| 发表于 2013-9-15 22:48:43 | 只看该作者
我已经自己解决了这个问题了,找了其他帖子有一个比较不完善的,凑合用用吧。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-9-30 00:33

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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