| 赞 | 402 |
| VIP | |
| 好人卡 | |
| 积分 | 251 |
| 经验 | |
| 最后登录 | 2024-7-2 |
| 在线时间 | 3339 小时 |
- 梦石
- 1
- 星屑
- 24088
- 在线时间
- 3339 小时
- 注册时间
- 2011-7-8
- 回帖
- 3862

|
发表于 2017-3-30 20:22:32
|
显示全部楼层
本帖最后由 guoxiaomi 于 2017-3-30 20:23 编辑
看到你使用了 '战斗时敌HP、MP显示' 脚本,所以这样写的……
以及物品/技能以友方单体为目标的时候,如果想跟跟敌人一样显示状态的话,要把 ENABLE_TO_ACTOR 设置为 true。如果没有Help_Window,就设置为 false。
微调位置在第 99,104,110 行
[pre lang="ruby"]#==============================================================================
# ■ 常量定义
#==============================================================================
module SHOW_STATE_ICON
# 下方角色窗口绘制
# 三个分组对应三个不同的位置
STATE_GROUP_1 = [2]
STATE_GROUP_2 = [3,4,5,6]
STATE_GROUP_3 = []
STATE_REFRESH_TIME = 40 # 刷新时间(帧)
# 上方敌人/角色窗口绘制
STATE_GROUP_4 = [1,2,3,4,5,6,7,8] # 允许显示的状态
MAX_STATES = 5 # 最多绘制的图标数
ENABLE_TO_ACTOR = true # true 对角色也生效,false 只对敌人生效
end
#==============================================================================
# ■ Window_BattleStatus
#==============================================================================
class Window_BattleStatus < Window_Base
# 常量
include SHOW_STATE_ICON
def draw_actor_state(actor, x, y)
# 清除所有图标
self.contents.fill_rect(x, y, 120, 32, Color.new(0,0,0,0))
# 第 1 组
state_group1 = STATE_GROUP_1 & actor.states
if !state_group1.empty?
show_id = Graphics.frame_count / STATE_REFRESH_TIME % state_group1.size
state = state_group1[show_id]
# 绘制图标
bitmap = RPG::Cache.icon(sprintf("状态%02d", state))
self.contents.blt(x + 8, y , bitmap, Rect.new(0, 0, 32, 32), opacity)
end
# 第 2 组
state_group2 = STATE_GROUP_2 & actor.states
if !state_group2.empty?
show_id = Graphics.frame_count / STATE_REFRESH_TIME % state_group2.size
state = state_group2[show_id]
# 绘制图标
bitmap = RPG::Cache.icon(sprintf("状态%02d", state))
self.contents.blt(x + 8 + 34, y , bitmap, Rect.new(0, 0, 32, 32), opacity)
end
# 第 3 组
state_group3 = STATE_GROUP_3 & actor.states
if !state_group3.empty?
show_id = Graphics.frame_count / STATE_REFRESH_TIME % state_group3.size
state = state_group3[show_id]
# 绘制图标
bitmap = RPG::Cache.icon(sprintf("状态%02d", state))
self.contents.blt(x + 8 + 68, y , bitmap, Rect.new(0, 0, 32, 32), opacity)
end
# 不显示状态时显示一段文字
if state_group1.empty? && state_group2.empty? && state_group3.empty?
# 显示文字
self.contents.font.color = normal_color
self.contents.draw_text(x, y, 120, 32, "o(* ̄▽ ̄*)ブ")
end
end
alias _SHOW_STATE_ICON_update update
def update
# 继续之前的 update
_SHOW_STATE_ICON_update
# 每 40 帧绘制 1 次状态图标
if Graphics.frame_count % STATE_REFRESH_TIME == 1
for i in 0...$game_party.actors.size
actor = $game_party.actors
actor_x = i * 160 + 4
if !@level_up_flags
draw_actor_state(actor, actor_x, 96)
end
end
end
end
end
#==============================================================================
# ■ Window_Help
#------------------------------------------------------------------------------
# 追加定义的内容,可以显示角色和敌人的状态图标
# * 需要配合 '战斗时敌HP、MP显示' 脚本使用
#==============================================================================
class Window_Help < Window_Base
# 常量
include SHOW_STATE_ICON
def draw_actor_state(actor, x, y)
# 使用之前的绘制
if !actor.is_a?(Game_Enemy) && !ENABLE_TO_ACTOR
super
else
# x 偏移量,可以修改下面的 40
x = x - 40
# 绘制状态图标,最多 MAX_STATES 个
state_group4 = (STATE_GROUP_4 & actor.states).sort[0, MAX_STATES]
state_group4.each_index do |i|
bitmap = RPG::Cache.icon(sprintf("状态%02d.png", state_group4))
self.contents.blt(x + i * 34, y, bitmap, Rect.new(0, 0, 32, 32), 255)
end
# 正常的情况下
if state_group4.empty?
# 显示文字
self.contents.font.color = normal_color
self.contents.draw_text(x, y, 240, 32, "o(* ̄▽ ̄*)ブ")
end
end
end
end[/pre] |
|