Project1

标题: 元旦节福利——状态显示强化版 [打印本页]

作者: chd114    时间: 2014-1-1 12:03
标题: 元旦节福利——状态显示强化版
本帖最后由 chd114 于 2014-1-1 12:07 编辑

RUBY 代码复制
  1. $states_icon = {}
  2. $data_states = load_data("Data/States.rxdata")
  3. (0...$data_states.size).each{|i|$states_icon[i]=0}
  4. #下面设置每个状态的图标
  5. $states_icon[10]="050-State07"
  6. #上面设置每个状态的图标
  7. =begin
  8.  Date 01-01-2014
  9.  重定义类:Window_Base, Window_Help
  10.  
  11.  脚本功能:
  12.  实现战斗中和菜单中用图标显示状态,代替原来的文字显示。
  13.  默认最多同时显示5个状态
  14.  
  15.  设置方法:
  16.  一个状态对应的图标文件名为“状态的动画ID.png”
  17.  例如某状态的动画ID为50,那么它的图标就是“Icons\50.png”
  18.  如果找不到对应的文件,会报错 ◎_◎
  19. =end
  20. #==============================================================================
  21. # ■ Window_Base
  22. #------------------------------------------------------------------------------
  23. #  游戏中全部窗口的超级类。
  24. #==============================================================================
  25.  
  26. class Window_Base < Window
  27. #--------------------------------------------------------------------------
  28. # ● 描绘状态
  29. #     actor : 角色
  30. #     x     : 描画目标 X 坐标
  31. #     y     : 描画目标 Y 坐标
  32. #     width : 描画目标的宽
  33. #--------------------------------------------------------------------------
  34. def draw_actor_state(actor, x, y, width = 160)
  35.   state_size = 0
  36.   for state in actor.states
  37.     # 图标数量超出宽度就中断循环
  38.     if state_size >= width / 40
  39.       break
  40.     end
  41.     # 此状态不带图标就跳过
  42.     if $states_icon[state]==""
  43.       next
  44.     end
  45.     bitmap = RPG::Cache.icon($states_icon[state] + ".png")
  46.     if actor.states_turn[state] >= $data_states[state].hold_turn/2
  47.       opacity = 255
  48.     else
  49.       opacity = 100
  50.     end
  51.     txt = actor.states_turn[state].to_s
  52.     # 这里的图标大小默认是24x24,要改就改下面那个Rect.new(0, 0, 24, 24)
  53.     ax = x + 2 * state_size * 20
  54.     self.contents.blt(ax, y + 4, bitmap, Rect.new(0, 0, 32, 32), opacity)
  55.     self.contents.font.color = text_color(6)
  56.     self.contents.draw_text(ax + 24, y, 24, 32, txt)
  57.     state_size += 1
  58.   end
  59. end
  60. end
  61.  
  62.  
  63. #==============================================================================
  64. # ■ Window_Help
  65. #------------------------------------------------------------------------------
  66. #  特技及物品的说明、角色的状态显示的窗口。
  67. #==============================================================================
  68.  
  69. class Window_Help < Window_Base
  70. #--------------------------------------------------------------------------
  71. # ● 设置敌人
  72. #     enemy : 要显示名字和状态的敌人
  73. #--------------------------------------------------------------------------
  74. def set_enemy(enemy)
  75.   self.contents.clear
  76.   # 描绘状态图标
  77.   state_size = 0
  78.   for state in enemy.states
  79.     # 图标数量超出宽度就中断循环
  80.     if state_size >= width / 40
  81.       break
  82.     end
  83.     # 此状态不带图标就跳过
  84.     if $states_icon[state]==""
  85.       next
  86.     end
  87.     bitmap = RPG::Cache.icon($states_icon[state]+".png")
  88.     if enemy.states_turn[state] >= $data_states[state].hold_turn/2
  89.       opacity = 255
  90.     else
  91.       opacity = 100
  92.     end
  93.     txt = enemy.states_turn[state].to_s
  94.     ax = 70 + 40 * state_size
  95.     self.contents.blt(ax, 4, bitmap, Rect.new(0, 0, 32, 32), opacity)
  96.     self.contents.font.color = text_color(6)
  97.     self.contents.draw_text(ax + 24, 0, 24, 32, txt)
  98.     state_size += 1
  99.   end
  100.   # 描绘敌人名字
  101.   set_text(enemy.name, 1)
  102. end
  103. end
  104.  
  105. class Game_Battler
  106. attr_reader :states_turn       # 声明状态剩余回合
  107. end
  108. #==============================================================================

作者: chd114    时间: 2014-1-1 12:06
强化版说明:
1、状态图标的设定变得与物品图标设定一样自由
2、没有设定图标名称(空白)的状态默认不显示
效果图:



作者: szzyc0    时间: 2014-1-1 14:57
那个0是什么
作者: chd114    时间: 2014-1-1 15:03
szzyc0 发表于 2014-1-1 14:57
那个0是什么

永久显示0
作者: chd114    时间: 2014-1-1 15:43
szzyc0 发表于 2014-1-1 14:57
那个0是什么

恩,还有啥bug?
作者: fux2    时间: 2014-1-6 13:03
这重新载一次数据库是闹哪样!
作者: chd114    时间: 2014-1-6 14:41
fux2 发表于 2014-1-6 13:03
这重新载一次数据库是闹哪样!

方便而已······




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1