赞 | 400 |
VIP | 0 |
好人卡 | 24 |
积分 | 250 |
经验 | 45372 |
最后登录 | 2024-7-2 |
在线时间 | 3339 小时 |
Lv5.捕梦者 (版主)
- 梦石
- 1
- 星屑
- 23994
- 在线时间
- 3339 小时
- 注册时间
- 2011-7-8
- 帖子
- 3926
|
本帖最后由 guoxiaomi 于 2017-3-30 20:23 编辑
看到你使用了 '战斗时敌HP、MP显示' 脚本,所以这样写的……
以及物品/技能以友方单体为目标的时候,如果想跟跟敌人一样显示状态的话,要把 ENABLE_TO_ACTOR 设置为 true。如果没有Help_Window,就设置为 false。
微调位置在第 99,104,110 行
#============================================================================== # ■ 常量定义 #============================================================================== 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[i] actor_x = i * 160 + 4 if !@level_up_flags[i] 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[i])) 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
#==============================================================================
# ■ 常量定义
#==============================================================================
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[i]
actor_x = i * 160 + 4
if !@level_up_flags[i]
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[i]))
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
|
|