赞 | 0 |
VIP | 0 |
好人卡 | 0 |
积分 | 1 |
经验 | 7404 |
最后登录 | 2013-10-11 |
在线时间 | 28 小时 |
Lv1.梦旅人
- 梦石
- 0
- 星屑
- 50
- 在线时间
- 28 小时
- 注册时间
- 2007-12-22
- 帖子
- 102
|
加入我们,或者,欢迎回来。
您需要 登录 才可以下载或查看,没有帐号?注册会员
x
如题:
#使用方式
#$msg = 310就只能显示1排字符、$msg = 320只能显示2排、$msg = 330只能显示3排、$msg= 340只能显示4排
#$game_system.message_position=2
#$showing_main_message = 1
#$msg = 400
#[字幕开启]
#$game_system.message_position=2
#$showing_main_message = 0
#$msg = 0
#[字幕关闭]
#\c[n] 8种颜色,\d or \c[0]还原
#\d: 还原字体大小颜色高度成默认
#\f[n] : 使用第n种字体
#\g : 显示金钱
#\h[n] : 改变字高度, \d or \h[32] 还原
#\s[n] : 改变字体大小!
#\v[n] : 显示变量n的值
#\x: 中心对齐
# ----------------------------
class Window_Message < Window_Selectable
attr_accessor :autoclosetime
attr_accessor :op
# ----------------------------
def initialize
super(80, 304, 480, 160)
self.contents = Bitmap.new(width - 32, height - 32)
self.visible = false
self.z = 9998
@fade_in = false
@fade_out = false
@contents_showing = false
@cursor_width = 0
@autoclosetime = -1
@op = 255
@refreshflag = false
self.active = false
self.index = -1
end
# ----------------------------
def dispose
terminate_message
$game_temp.message_window_showing = false
if @input_number_window != nil
@input_number_window.dispose
end
super
end
# ----------------------------
def terminate_message
self.active = false
self.pause = false
self.index = -1
self.contents.clear
@contents_showing = false
if $game_temp.message_proc != nil
$game_temp.message_proc.call
end
$game_temp.message_text = nil
$game_temp.message_proc = nil
$game_temp.choice_start = 99
$game_temp.choice_max = 0
$game_temp.choice_cancel_type = 0
$game_temp.choice_proc = nil
$game_temp.num_input_start = 99
$game_temp.num_input_variable_id = 0
$game_temp.num_input_digits_max = 0
if @gold_window != nil
@gold_window.dispose
@gold_window = nil
end
end
# ----------------------------
def refresh
self.contents.clear
self.contents.font.color = normal_color
self.contents.font.name = "黑体"
self.contents.font.size = 18
x = y = 0
@cursor_width = 0
@autoclosetime = -1
@refreshflag = true
lineheight = 32
active = ""
a = ""
centerflag = false
rightflag = false
bannerflag = false
if $game_temp.choice_start == 0
x = 8
end
if $game_temp.message_text != nil
text = $game_temp.message_text
begin
last_text = text.clone
text.gsub!(/\\[Vv]\[([0-9]+)\]/) { $game_variables[$1.to_i] }
end until text == last_text
text.gsub!(/\\[Nn]\[([0-9]+)\]/) do
$game_actors[$1.to_i] != nil ? $game_actors[$1.to_i].name : ""
end
text.gsub!(/\\\\/) { "\000" }
text.gsub!(/\\[Cc]\[([0123456789ABCDEFx]+)\]/) { "\001[#{$1}]" }
text.gsub!(/\\[Gg]/) { "\002" }
text.gsub!(/\\[Ii]\[([0-9]+)\]/) { "\003[#{$1}]" }
text.gsub!(/\\[Ff]\[([0-9]+)\]/) { "\004[#{$1}]" }
text.gsub!(/\\[Aa]\[([0-9]+)\]/) { "\005[#{$1}]" }
text.gsub!(/\\[Xx]/) { "\006" }
text.gsub!(/\\[Rr]/) { "\007" }
text.gsub!(/\\[Dd]/) { "\011" }
text.gsub!(/\\[Ss]\[([0-9]+)\]/) { "\023[#{$1}]" }
text.gsub!(/\\[Bb]/) { "\017" }
text.gsub!(/\\[Ww]\[([0-9]+)\]/) { "\014[#{$1}]" }
text.gsub!(/\\[Mm]\[([0-9]+)\]/) { "\015[#{$1}]" }
text.gsub!(/\\[Oo]\[([0-9]+)\]/) { "\016[#{$1}]" }
text.gsub!(/\\[Jj]\[([0-9]+)\]/) { "\013[#{$1}]" }
text.gsub!(/\\[Hh]\[([0-9]+)\]/) { "\021[#{$1}]" }
text.gsub!(/\\[Kk]\[([0-9]+)\]/) { "\022[#{$1}]" }
while ((c = text.slice!(/./m)) != nil)
if c == "\000"
c = "\\"
end
if c == "\001"
text.sub!(/\[([0123456789ABCDEFx]+)\]/, "")
temp_color = $1
color = temp_color.to_i
leading_x = temp_color.to_s.slice!(/./m)
if leading_x == "x"
self.contents.font.color = hex_color(temp_color)
next
end
if color >= 0 and color <= 7
self.contents.font.color = text_color(color)
end
next
end
if c == "\002"
if @gold_window == nil
@gold_window = Window_Change.new
@gold_window.x = 330
@gold_window.y = 40
@gold_window.opacity = self.opacity
@gold_window.back_opacity = self.back_opacity
end
next
end
if c == "\003"
text.sub!(/\[([0-9]+)\]/, "")
item_sub = $1.to_i
c = $data_items[item_sub].name
l = self.contents.text_size(c).width
draw_item_name($data_items[item_sub], x, y * 32 + 1)
x = x + l + 24
next
end
if c == "\004"
text.sub!(/\[([0-9]+)\]/, "")
fontize = $1.to_i
case fontize
when 1
self.contents.font.name = "黑体"
when 2
self.contents.font.name = "宋体"
when 3
self.contents.font.name = "宋体"
when 4
self.contents.font.name = "楷体_GB2312"
end
next
end
if c == "\005"
text.sub!(/\[([0-9]+)\]/, "")
@autoclosetime = $1.to_i
next
end
if c == "\006"
centerflag = true
next
end
if c == "\007"
rightflag = true
next
end
if c == "\011"
self.contents.font.name = "黑体"
self.contents.font.size = 18
self.contents.font.color = normal_color
lineheight = 32
next
end
if c == "\014"
text.sub!(/\[([0-9]+)\]/, "")
w_sub = $1.to_i
c = $data_weapons[w_sub].name
l = self.contents.text_size(c).width
bitmap = RPG::Cache.icon($data_weapons[w_sub].icon_name)
self.contents.blt(x+4, y * 32+ 4, bitmap, Rect.new(0, 0, 24, 24))
x += 28
if $showing_main_message==1
self.contents.font.color = outline_color
self.contents.draw_text(4 + x-1+2, 32 * y+2, 40, 32, c)
self.contents.draw_text(4 + x+1+2, 32 * y+2, 40, 32, c)
self.contents.draw_text(4 + x+2, 32 * y+1+2, 40, 32, c)
self.contents.draw_text(4 + x+2, 32 * y-1+2, 40, 32, c)
#self.contents.draw_text(4 + x-1, 30 * y-1, 40, 32, c)
#self.contents.draw_text(4 + x-1, 30 * y+1, 40, 32, c)
#self.contents.draw_text(4 + x+1, 30 * y+1, 40, 32, c)
#self.contents.draw_text(4 + x+1, 30 * y-1, 40, 32, c)
self.contents.font.color = normal_color
self.contents.draw_text(4 + x, 32 * y, 40, 32, c)
else
self.contents.draw_text(x+4, 32 * y, l+32, lineheight, c)
end
x = x + l
next
end
if c == "\015"
text.sub!(/\[([0-9]+)\]/, "")
a_sub = $1.to_i
c = $data_armors[a_sub].name
l = self.contents.text_size(c).width
bitmap = RPG::Cache.icon($data_armors[a_sub].icon_name)
self.contents.blt(x+4, y * 32+ 4, bitmap, Rect.new(0, 0, 24, 24))
x += 28
self.contents.draw_text(x+4, 32 * y, l+32, lineheight, c)
x = x + l
next
end
if c == "\016"
text.sub!(/\[([0-9]+)\]/, "")
@op = $1.to_i
next
end
if c == "\017"
bannerflag = true
next
end
if c == "\018"
text.sub!(/\[([0-9]+)\]/, "")
jump = $1.to_i
x += jump
next
end
if c == "\021"
text.sub!(/\[([0-9]+)\]/, "")
lineheight = $1.to_i
next
end
if c == "\022"
text.sub!(/\[([0-9]+)\]/, "")
skill_sub = $1.to_i
c = $data_skills[skill_sub].name
l = self.contents.text_size(c).width
bitmap = RPG::Cache.icon($data_skills[skill_sub].icon_name)
self.contents.blt(x+4, y * 32+ 4, bitmap, Rect.new(0, 0, 24, 24))
x += 28
if $showing_main_message==1
self.contents.font.color = outline_color
self.contents.draw_text(4 + x-1+2, 32 * y+2, 40, 32, c)
self.contents.draw_text(4 + x+1+2, 32 * y+2, 40, 32, c)
self.contents.draw_text(4 + x+2, 32 * y+1+2, 40, 32, c)
self.contents.draw_text(4 + x+2, 32 * y-1+2, 40, 32, c)
#self.contents.draw_text(4 + x-1, 30 * y-1, 40, 32, c)
#self.contents.draw_text(4 + x-1, 30 * y+1, 40, 32, c)
#self.contents.draw_text(4 + x+1, 30 * y+1, 40, 32, c)
#self.contents.draw_text(4 + x+1, 30 * y-1, 40, 32, c)
self.contents.font.color = normal_color
self.contents.draw_text(4 + x, 32 * y, 40, 32, c)
else
self.contents.draw_text(x+4, 32 * y, l+32, lineheight, c)
end
x = x + l
next
end
if c == "\023"
text.sub!(/\[([0-9]+)\]/, "")
bigness = $1.to_i
self.contents.font.size = bigness
next
end
if c == "\n"
if centerflag == true
x = 448 - x
x = x / 2
if $showing_main_message==1
self.contents.font.color = outline_color
self.contents.draw_text(4 + x-1+2, 32 * y+2, 40, 32, c)
self.contents.draw_text(4 + x+1+2, 32 * y+2, 40, 32, c)
self.contents.draw_text(4 + x+2, 32 * y+1+2, 40, 32, c)
self.contents.draw_text(4 + x+2, 32 * y-1+2, 40, 32, c)
self.contents.font.color = normal_color
self.contents.draw_text(4 + x, 32 * y, 40, 32, c)
else
self.contents.draw_text(x, 32 * y, 448-x, lineheight, a)
end
end
if rightflag == true
x = 448 - x
if $showing_main_message==1
self.contents.font.color = outline_color
self.contents.draw_text(4 + x-1+2, 32 * y+2, 40, 32, c)
self.contents.draw_text(4 + x+1+2, 32 * y+2, 40, 32, c)
self.contents.draw_text(4 + x+2, 32 * y+1+2, 40, 32, c)
self.contents.draw_text(4 + x+2, 32 * y-1+2, 40, 32, c)
self.contents.font.color = normal_color
self.contents.draw_text(4 + x, 32 * y, 40, 32, c)
else
self.contents.draw_text(x, 32 * y, 448-x, lineheight, a)
end
end
if bannerflag == true
x = 448 - x
x = x / 2
if $showing_main_message==1
self.contents.font.color = outline_color
self.contents.draw_text(4 + x-1+2, 32 * y+2, 40, 32, c)
self.contents.draw_text(4 + x+1+2, 32 * y+2, 40, 32, c)
self.contents.draw_text(4 + x+2, 32 * y+1+2, 40, 32, c)
self.contents.draw_text(4 + x+2, 32 * y-1+2, 40, 32, c)
self.contents.font.color = normal_color
self.contents.draw_text(4 + x, 32 * y, 40, 32, c)
else
self.contents.draw_text(x, 44, 448-x, lineheight, a)
end
end
a = ""
centerflag = false
rightflag = false
bannerflag = false
if y >= $game_temp.choice_start
@cursor_width = [@cursor_width, x].max
end
y += 1
x = 0
if y >= $game_temp.choice_start
x = 8
end
next
end
if centerflag == false && rightflag == false && bannerflag == false
if $showing_main_message==1
if $msg == 400
#self.contents.font.color = normal_color
case y
when 0
self.contents.draw_text(4+x,0,40,32,c)
when 1
self.contents.draw_text(4+x+self.contents.font.size*22,0,40,32,c)
when 2
self.contents.draw_text(4+x,32,40,32,c)
when 3
self.contents.draw_text(4+x+self.contents.font.size*22,32,40,32,c)
end
elsif $msg == 401
#self.contents.font.color = normal_color
self.contents.draw_text(4 + x, 32 * y, 40, 32, c)
else
self.contents.font.color = outline_color
self.contents.draw_text(4 + x-1+2, 32 * y+2, 40, 32, c)
self.contents.draw_text(4 + x+1+2, 32 * y+2, 40, 32, c)
self.contents.draw_text(4 + x+2, 32 * y+1+2, 40, 32, c)
self.contents.draw_text(4 + x+2, 32 * y-1+2, 40, 32, c)
self.contents.font.color = normal_color
self.contents.draw_text(4 + x, 32 * y, 40, 32, c)
end
else
self.contents.draw_text(4 + x, 32 * y, 40, lineheight, c)
end
x += self.contents.text_size(c).width
else
a += c
x += self.contents.text_size(c).width
end
end
end
if $game_temp.choice_max > 0
@item_max = $game_temp.choice_max
self.active = true
self.index = 0
end
if $game_temp.num_input_variable_id > 0
digits_max = $game_temp.num_input_digits_max
number = $game_variables[$game_temp.num_input_variable_id]
@input_number_window = Window_InputNumber.new(digits_max)
@input_number_window.number = number
@input_number_window.x = self.x + 8
@input_number_window.y = self.y + $game_temp.num_input_start * 32
end
end
# ----------------------------
def reset_window
self.back_opacity = 220
self.width = 430
self.height = 160
if $game_system.message_frame == 0
self.opacity = 255
else
self.opacity = 0
end
if $game_temp.in_battle #比较高的位置,使用到三角,共3行
case $msg
when 0
self.y = 16
self.height = 128
self.x =130
self.width=348
self.contents = Bitmap.new(width - 32, height - 32)
when 111 #上、一行,到三角
self.y = 16
self.x = 130
self.width = 348
self.height = 62
self.contents = Bitmap.new(width - 32, height - 32)
when 121
self.y = 16
self.x = 130
self.width = 348
self.height = 96
self.contents = Bitmap.new(width - 32, height - 32)
when 131
self.y = 16
self.height = 128
self.x =130
self.width=348
self.contents = Bitmap.new(width - 32, height - 32)
when 141
self.y = 16
self.x = 130
self.width = 348
self.height = 160
self.contents = Bitmap.new(width - 32, height - 32)
end
else
case $game_system.message_position
when 0 #顶部对话,使用到三角
self.y = 16
self.height = 128
self.x =130
self.width=348
self.contents = Bitmap.new(width - 32, height - 32)
when 1 #中等高度对话,使用到三角那里,用完别忘恢复到=2
self.y = 160
self.x = 130
self.width = 348
self.contents = Bitmap.new(width - 32, height - 32)
when 2
case $msg
when 0 #常规配角对话框,三角文字
self.y = 304
self.height = 160
self.x =130
self.width=351
self.contents = Bitmap.new(width - 32, height - 32)
when 111 #上、一行,到三角
self.y = 16
self.x = 130
self.width = 351
self.height = 62
self.contents = Bitmap.new(width - 32, height - 32)
when 121
self.y = 16
self.x = 130
self.width = 351
self.height = 96
self.contents = Bitmap.new(width - 32, height - 32)
when 131
self.y = 16
self.x = 130
self.width = 351
self.height = 128
self.contents = Bitmap.new(width - 32, height - 32)
when 141
self.y = 16
self.x = 130
self.width = 351
self.height = 160
self.contents = Bitmap.new(width - 32, height - 32)
when 211 #中、一行,到三角
self.y = 160
self.x = 130
self.width = 351
self.height = 62
self.contents = Bitmap.new(width - 32, height - 32)
when 221
self.y = 160
self.x = 130
self.width = 348
self.height = 96
self.contents = Bitmap.new(width - 32, height - 32)
when 231
self.y = 160
self.x = 130
self.width = 351
self.height = 128
self.contents = Bitmap.new(width - 32, height - 32)
when 241
self.y = 160
self.x = 130
self.width = 351
self.height = 160
self.contents = Bitmap.new(width - 32, height - 32)
when 311 #下、一行,到三角
self.y = 304
self.x = 130
self.width = 351
self.height = 62
self.contents = Bitmap.new(width - 32, height - 32)
when 321
self.y = 304
self.x = 130
self.width = 351
self.height = 96
self.contents = Bitmap.new(width - 32, height - 32)
when 331
self.y = 304
self.x = 130
self.width = 351
self.height = 128
self.contents = Bitmap.new(width - 32, height - 32)
when 341
self.y = 304
self.x = 130
self.width = 351
self.height = 160
self.contents = Bitmap.new(width - 32, height - 32)
when 110 #上、一行,全部文字
self.y = 16
self.x = 100
self.width = 432
self.height = 62
self.contents = Bitmap.new(width - 32, height - 32)
when 120
self.y = 16
self.x = 100
self.width = 432
self.height = 96
self.contents = Bitmap.new(width - 32, height - 32)
when 130
self.y = 16
self.x = 100
self.width = 432
self.height = 128
self.contents = Bitmap.new(width - 32, height - 32)
when 140
self.y = 16
self.x = 100
self.width = 432
self.height = 160
self.contents = Bitmap.new(width - 32, height - 32)
when 210 #中、一行,全部文字
self.y = 160
self.x = 100
self.width = 432
self.height = 62
self.contents = Bitmap.new(width - 32, height - 32)
when 220
self.y = 160
self.x = 100
self.width = 432
self.height = 96
self.contents = Bitmap.new(width - 32, height - 32)
when 230
self.y = 160
self.x = 100
self.width = 432
self.height = 128
self.contents = Bitmap.new(width - 32, height - 32)
when 240
self.y = 160
self.x = 100
self.width = 432
self.height = 160
self.contents = Bitmap.new(width - 32, height - 32)
when 310 #下、一行,全部文字
self.y = 304
self.x = 130
self.width = 432
self.height = 62
self.contents = Bitmap.new(width - 32, height - 32)
when 320
self.y = 304
self.x = 100
self.width = 432
self.height = 96
self.contents = Bitmap.new(width - 32, height - 32)
when 330
self.y = 304
self.x = 100
self.width = 432
self.height = 128
self.contents = Bitmap.new(width - 32, height - 32)
when 340
self.y = 304
self.x = 100
self.width = 432
self.height = 160
self.contents = Bitmap.new(width - 32, height - 32)
when 400
self.y = 390
self.x = 0
self.width = 631
self.height = 120
self.opacity = 0
self.contents = Bitmap.new(width - 32, height - 32)
when 401
self.y = 390
self.x = 110
self.width = 500
self.height = 160
self.opacity = 0
self.contents = Bitmap.new(width - 32, height - 32)
end
when 3 #中等高度,使用到三角那里,共3行
self.y = 160
self.x = 130
self.width = 348
self.height = 128
self.contents = Bitmap.new(width - 32, height - 32)
when 4 #中等高度,使用到三角那里,共2行
self.y = 160
self.x = 130
self.width = 348
self.height = 96
self.contents = Bitmap.new(width - 32, height - 32)
when 5 #中等高度,使用到三角那里,共1行
self.y = 160
self.x = 130
self.width = 348
self.height = 62
self.contents = Bitmap.new(width - 32, height - 32)
when 1001 #使用对话框1号!
self.x=175
self.y=306
self.width = 440
self.height = 160
self.opacity=0
self.back_opacity=0
self.contents = Bitmap.new(width - 32, height - 32)
end
end
if $game_switches[55]
self.x = 100
self.width = 432
self.y = 100
self.height = 288
self.contents = Bitmap.new(width - 32, height - 32)
end
end
# ----------------------------
def update
super
if @refreshflag && @fade_in == false
self.contents_opacity = @op
end
if @autoclosetime == 0
@autoclosetime = -1
terminate_message
end
if @autoclosetime >= 1
@autoclosetime -= 1
end
if @fade_in
self.contents_opacity += 24
if @input_number_window != nil
@input_number_window.contents_opacity += 24
end
if self.contents_opacity >= @op
@fade_in = false
end
return
end
if @input_number_window != nil
@input_number_window.update
if Input.trigger?(Input::C)
$game_system.se_play($data_system.decision_se)
$game_variables[$game_temp.num_input_variable_id] =
@input_number_window.number
$game_map.need_refresh = true
@input_number_window.dispose
@input_number_window = nil
terminate_message
end
return
end
if @contents_showing
if $game_temp.choice_max == 0
self.pause = true
end
if Input.trigger?(Input::B)
if $game_temp.choice_max > 0 and $game_temp.choice_cancel_type > 0
$game_system.se_play($data_system.cancel_se)
$game_temp.choice_proc.call($game_temp.choice_cancel_type - 1)
terminate_message
end
end
if Input.trigger?(Input::C)
if $game_temp.choice_max > 0
$game_system.se_play($data_system.decision_se)
$game_temp.choice_proc.call(self.index)
end
@op = 255
terminate_message
end
return
end
if @fade_out == false and $game_temp.message_text != nil
@contents_showing = true
$game_temp.message_window_showing = true
reset_window
refresh
Graphics.frame_reset
self.visible = true
self.contents_opacity = 0
if @input_number_window != nil
@input_number_window.contents_opacity = 0
end
@fade_in = true
return
end
if self.visible
@fade_out = true
self.opacity -= 48
if self.opacity == 0
self.visible = false
@fade_out = false
$game_temp.message_window_showing = false
end
return
end
end
# ----------------------------
def update_cursor_rect
if @index >= 0
n = $game_temp.choice_start + @index
self.cursor_rect.set(8, n * 32, @cursor_width, 32)
else
self.cursor_rect.empty
end
end
end
[本贴由 御灵 于 2008-1-24 22:32:50 进行了编辑] |
|