#==============================================================================
# ■ Window_Command
#------------------------------------------------------------------------------
# 一般的命令选择行窗口。
#==============================================================================
class Window_Command < Window_Selectable
attr_reader :temp # [url=home.php?mod=space&uid=263426]@temp[/url] 用于增强
attr_reader :frozen_char # 特殊字符处理
#--------------------------------------------------------------------------
# ● 绘制项目
# index : 项目位置
# enabled : 有效标志,false时项目半透明化
# By OCTSJimmy(风星剑仙)
# 做了增强,1、可使用\v[x]引用变量
# 2、可使用\n[x]引用角色名字
# 3、可使用\c[x]定义颜色
# 4、可以使用\g来显示金钱窗口
# 5、可以使用\s[x]来引用技能
# 6、可以使用\i[x]来引用物品
# 7、可以使用\w[x]来引用武器
# 8、可以使用\a[x]来引用防具
# 9、可以使用\f[sx]来改变字号\f[nx]来改变字体\f[cx]与\c一致,定义颜色
# 10、可以使用\f[c#x]来依据rgb定义颜色
# 11、可以使用\f[ax]来使用字体的附加效果
# 12、可以使用\a[x]来使用角色动画
# 13、可以使用\b[x]来使用心情动画
# 使用方法:main以上插入,其他请参见上面部分,另外设置成无效的选项,自动强制透明度为128需注意。
# 可能的冲突:所有重定义Window_Command中draw_item方法的脚本均会发生冲突。
#--------------------------------------------------------------------------
def draw_item(index, enabled = true)
rect = item_rect(index)
rect.x += 4
rect.width -= 8
h = nil
self.contents.clear_rect(rect)
self.contents.font.color = normal_color
if @commands[index].frozen?
@temp= @commands[index].clone
else
@temp = @commands[index].dup #这个东东是最坑的,假如不使用dup各种蛋疼
end
## 特定字符处理
@temp.gsub!(/#\[(.*?)\]/) {@frozen_char.push($1); "\xff"}
@temp.gsub!(/#\<(.*?)\>/) {""}
## 默认控制符
@temp.gsub!(/\\V\[(\d+)\]/i) {$game_variables[$1.to_i]}
@temp.gsub!(/\\V\[(\d+)\]/i) {$game_variables[$1.to_i]}
@temp.gsub!(/\\N\[(\d+)\]/i) {$game_actors[$1.to_i].name}
@temp.gsub!(/\\C\[(\d+)\]/i) {"\x01[#{$1}]"}
@temp.gsub!(/\\G/) {"\x02"}
@temp.gsub!(/\\\\/) {"\\"}
## 更改不透明度
@temp.gsub!(/\\O\[(\d+)\]/i) {"\x09[#{$1}]"}
## 显示数据库元素
@temp.gsub!(/\\S\[(\d+)\]/i) {"\x0a[#{$1}]" + $data_skills[$1.to_i].name}
@temp.gsub!(/\\I\[(\d+)\]/i) {"\x0b[#{$1}]" + $data_items[$1.to_i].name}
@temp.gsub!(/\\W\[(\d+)\]/i) {"\x0c[#{$1}]" + $data_weapons[$1.to_i].name}
@temp.gsub!(/\\A\[(\d+)\]/i) {"\x0d[#{$1}]" + $data_armors[$1.to_i].name}
## 更改字体
@temp.gsub!(/\\F\[S(\d+)\]/i){"\x0e[#{$1}]"}
@temp.gsub!(/\\F\[N(\d+)\]/i){"\x0f[#{$1}]"}
@temp.gsub!(/\\F\[C(\d+)\]/i){"\x01[#{$1}]"}
## 16进制颜色
@temp.gsub!(/\\F\[C\#([a-f0-9]+)\]/i) {"\x10[#{$1}]"}
## 字体附加效果
@temp.gsub!(/\\F\[A(\d+)\]/i){"\x11[#{$1}]"}
## 提取动画对象和 ID
@temp.gsub!(/\\A\[(\S+)\,(\d+)\]/i) {"\x15[#{$1},#{$2}]"}
@temp.gsub!(/\\B\[(\S+)\,(\d+)\]/i) {"\x16[#{$1},#{$2}]"}
loop do
c = @temp.slice!(/./m)
case c
when nil # 没有可以显示的文字
break
when "\x01" # \C[n] (更改文字色)
@temp.sub!(/\[([0-9]+)\]/, "")
self.contents.font.color = text_color($1.to_i)
next
when "\x02" # \G (显示所持金)
@gold_window.refresh
@gold_window.open
## 更改不透明度的情况下
when "\x09"
@temp.sub!(/\[(\d+)\]/, "")
self.contents.font.color.alpha = $1.to_i
## 显示技能情况下
when "\x0a"
@temp.sub!(/\[(\d+)\]/, "")
draw_icon($data_skills[$1.to_i].icon_index, rect.x, rect.y)
## 横坐标增加图标宽度
rect.x += 24
## 显示物品情况下
when "\x0b"
@temp.sub!(/\[(\d+)\]/, "")
draw_icon($data_items[$1.to_i].icon_index, rect.x, rect.y)
## 横坐标增加图标宽度
rect.x += 24
## 显示武器情况下
when "\x0c"
@temp.sub!(/\[(\d+)\]/, "")
p $1
draw_icon($data_weapons[$1.to_i].icon_index, rect.x, rect.y)
## 横坐标增加图标宽度
rect.x += 24
## 显示防具情况下
when "\x0d"
@temp.sub!(/\[(\d+)\]/, "")
draw_icon($data_armors[$1.to_i].icon_index, rect.x, rect.y)
## 横坐标增加图标宽度
rect.x += 24
## 更改字体的情况下
when "\x0e"
@temp.sub!(/\[(\d+)\]/, "")
self.contents.font.size = $1.to_i
when "\x0f"
@temp.sub!(/\[(\d+)\]/, "")
name = Font_Lib[$1.to_i]
self.contents.font.name = Font.exist?(name) ? name : Font.default_name
## 16进制颜色
when "\x10"
@temp.sub!(/\[(\w+)\]/, "")
r,g,b = $1.scan(/../)
self.contents.font.color = Color.new(r.hex, g.hex, b.hex)
## 字体附加效果
when "\x11"
@temp.sub!(/\[(\d+)\]/, "")
## 获取字体附加效果
@font_adj = $1.to_i
## 显示角色动画
when "\x15"
@temp.sub!(/\[(\S+)\,(\d+)\]/, "")
character = interpreter.get_character($1.to_i)
character.animation_id = $2.to_i unless character.nil?
next
## 显示心情动画
when "\x16"
@temp.sub!(/\[(\S+)\,(\d+)\]/, "")
character = interpreter.get_character($1.to_i)
character.balloon_id = $2.to_i unless character.nil?
next
## 特定字符处理
when "\xff"
@temp.insert(0, @frozen_char.shift)
else
c_width = self.contents.text_size(c).width
if h.nil?
h = c_width
end
self.contents.font.color.alpha = enabled ? 255 : 128
self.contents.draw_text(rect,c)
rect.x += h
rect.width = h
end
end
rect.x = 0
end
end