메시지

메세지플러스3.1v스크립트(얼굴표시,메세지색상,속도등정하는스크립트)

by 백호 posted Feb 21, 2009
?

단축키

Prev이전 문서

Next다음 문서

ESC닫기

크게 작게 위로 아래로 댓글로 가기 인쇄
메인위에 껴넣으시고요
xp는 기본말하면 한번에 글씨가 다뜨죠
이거하면 2000,2003처럼 속도조정,색상조정,심지어 얼굴그래픽까지 표시할수있어요
안될시에는 꼬릿말이나 오류나는줄 말해주시던지 직접 고쳐보세요..

#==============================================================================
# ■ Window_Message_Plus v3.1
#==============================================================================
class Window_Message < Window_Selectable
# 한 글자씩 묘사
DEFAULT_TYPING_ENABLE = true # false로 하면(자) 순간 표시
#--------------------------------------------------------------------------
# ● 오브젝트 초기화
#--------------------------------------------------------------------------
alias xrxs9_initialize initialize
def initialize
xrxs9_initialize
# 재생 사운드명이 없는 경우는""으로 하는
if $soundname_on_speak == nil then
$soundname_on_speak = ""
end
# 외자 파일 패스 설정
$gaiji_file = "./Graphics/Gaiji/sample.png"
# 외자 데이터 읽기
if FileTest.exist?($gaiji_file)
@gaiji_cache = Bitmap.new($gaiji_file)
else
@gaigi_cache = nil
end
# 문자 투과 전송용 버퍼
@opacity_text_buf = Bitmap.new(32, 32)
end
#--------------------------------------------------------------------------
# ● 메세지 종료 처리
#--------------------------------------------------------------------------
alias xrxs9_terminate_message terminate_message
def terminate_message
if @name_window_frame != nil
@name_window_frame.dispose
@name_window_frame = nil
end
if @name_window_text != nil
@name_window_text.dispose
@name_window_text = nil
end
xrxs9_terminate_message
end
#--------------------------------------------------------------------------
# ● 리프레쉬
#--------------------------------------------------------------------------
def refresh
# 초기화
self.contents.clear
self.contents.font.color = normal_color
self.contents.font.size = Font.default_size
@x = @y = @max_x = @max_y = @indent = @lines = 0
@face_indent = 0
@opacity = 255
@cursor_width = 0
@write_speed = 0
@write_wait = 0
@mid_stop = false
@face_file = nil
# @popchar 가 -2 의 경우 , 표준 위치. -1의 경우 , 문자 센터.
# 0이상의 경우 캐릭터 팝. 0(은)는 주인공 ,1이후는 이벤트.
@popchar = -2
# 선택사항이라면 인덴트를 실시하는
if $game_temp.choice_start == 0
@x = 8
end
# 표시 기다리는 메세지가 있는 경우
if $game_temp.message_text != nil
@now_text = $game_temp.message_text
# 얼굴 표시 지정F이 있을까?
if (/A\[Ff][(.+?)]/.match(@now_text))!=nil then
# 파일 체크
if FileTest.exist?("Graphics/Pictures/" + $1 + ".png")
# 얼굴 그라를 묘화
@face_file = $1 + ".png"
self.contents.blt(16, 16, RPG::Cache.picture(@face_file), Rect.new(0, 0, 96, 96))
# 전행 128픽셀의 인덴트를 넣는다.
@x = @face_indent = 128
end
@now_text.gsub!(/\[Ff][(.*?)]/) { "" }
end
# 제어 문자 처리
begin
last_text = @now_text.clone
# V를 독자 루틴으로 변경(추가 부분)
@now_text.gsub!(/\[Vv][([IiWwAaSs]?)([0-9]+)]/) { convart_value($1, $2.to_i) }
end until @now_text == last_text
@now_text.gsub!(/\[Nn][([0-9]+)]/) do
$game_actors[$1.to_i] != nil ? $game_actors[$1.to_i].name : ""
end
# name이 있을까?
name_window_set = false
if (/\[Nn]ame[(.+?)]/.match(@now_text)) != nil
# 값을 설정
name_window_set = true
name_text = $1
# name[]부분을 삭제
@now_text.sub!(/\[Nn]ame[(.*?)]/) { "" }
end
# 윈도우 위치 판정
if (/\[Pp][([-1,0-9]+)]/.match(@now_text))!=nil then
@popchar = $1.to_i
if @popchar == -1
@x = @indent = 48
@y = 4
end
@now_text.gsub!(/\[Pp][([-1,0-9]+)]/) { "" }
end
# 윈도우폭의 취득
@max_choice_x = 0
if @popchar >= 0
@text_save = @now_text.clone
@max_x = 0
@max_y = 4
for i in 0..3
line = @now_text.split(/n/)[3-i]
@max_y -= 1 if line == nil and @max_y <= 4-i
next if line == nil
line.gsub!(/\w[(w+)]/) { "" }
cx = contents.text_size(line).width
@max_x = cx if cx > @max_x
if i >= $game_temp.choice_start
@max_choice_x = cx if cx > @max_choice_x
end
end
self.width = @max_x + 32 + @face_indent
self.height = (@max_y - 1) * 32 + 64
@max_choice_x -= 68
@max_choice_x -= @face_indent*216/128
else
@max_x = self.width - 32 - @face_indent
for i in 0..3
line = @now_text.split(/n/)[i]
next if line == nil
line.gsub!(/\w[(w+)]/) { "" }
cx = contents.text_size(line).width
if i >= $game_temp.choice_start
@max_choice_x = cx if cx > @max_choice_x
end
end
@max_choice_x += 8
end
# 선택사항이라면 커서의 폭을 갱신
@cursor_width = 0
#if @lines >= $game_temp.choice_start
# @cursor_width = [@cursor_width, @max_choice_x - @face_indent].max
#end
# 편의상 ,"\\" 을 "00" 에 변환
@now_text.gsub!(/\\/) { "00" }
# "\C" 을 "01" 에 ,"\G" 를 "02" 에 ,
# "\S" 를 "03" 에 ,"\A" 를 "04" 에 변환
@now_text.gsub!(/\[Cc][([0-9]+)]/) { "01[#{$1}]" }
@now_text.gsub!(/\[Gg]/) { "02" }
@now_text.gsub!(/\[Ss][([0-9]+)]/) { "03[#{$1}]" }
@now_text.gsub!(/\[Aa][(.*?)]/) { "04[#{$1}]" }
@now_text.gsub!(/\[.]/) { "05" }
@now_text.gsub!(/\[|]/) { "06" }
# 경합 하면(자) 무엇인가 거북하기 때문에 ,16이후를 사용하는
@now_text.gsub!(/\[>]/) { "16" }
@now_text.gsub!(/\[<]/) { "17" }
@now_text.gsub!(/\[!]/) { "20" }
@now_text.gsub!(/\[~]/) { "21" }
@now_text.gsub!(/\[Ee][([0-9]+)]/) { "22[#{$1}]" }
# 인덴트 설정(추가 부분)
@now_text.gsub!(/\[Ii]/) { "23" }
# 텍스트 투과율 지정(추가 부분)
@now_text.gsub!(/\[Oo][([0-9]+)]/) { "24[#{$1}]" }
# 텍스트 사이즈 지정(추가 부분)
@now_text.gsub!(/\[Hh][([0-9]+)]/) { "25[#{$1}]" }
# 공백 삽입(추가 부분)
@now_text.gsub!(/\[Bb][([0-9]+)]/) { "26[#{$1}]" }
# 루비 표시(추가 부분)
@now_text.gsub!(/\[Rr][(.*?)]/) { "27[#{$1}]" }
# 여기서 일단 윈도우 위치 갱신
reset_window
# name이 있을까?
if name_window_set
# 오프셋(offset) 위치
off_x = 0
off_y = -10
# 범위만 윈도우의 작성(margin를 2 로 설정)
space = 2
x = self.x + off_x - space / 2
y = self.y + off_y - space / 2
w = self.contents.text_size(name_text).width + 8 + space
h = 26 + space
@name_window_frame = Window_Frame.new(x, y, w, h)
@name_window_frame.z = self.z + 1
# 의사적인 공중 문자 묘사 윈도우를 작성
x = self.x + off_x + 4
y = self.y + off_y
@name_window_text = Air_Text.new(x, y, name_text)
@name_window_text.z = self.z + 2
end
end
# 윈도우를 갱신
reset_window
# 선택사항의 경우
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 update
super
# 용명의 경우
if @fade_in
self.contents_opacity += 24
if @input_number_window != nil
@input_number_window.contents_opacity += 24
end
if self.contents_opacity == 255
@fade_in = false
end
return
end
@now_text = nil if @now_text == "" # 변환
# 표시 기다리는 메세지가 있는 경우
if @now_text != nil and @mid_stop == false
if @write_wait > 0
@write_wait -= 1
return
end
text_not_skip = DEFAULT_TYPING_ENABLE
while true
# 최대 x y 의 보존.
@max_x = @x if @max_x < @x
@max_y = @y if @max_y < @y
# c 에 1 문자를 취득 (문자를 취득할 수 없게 될 때까지 루프)
if (c = @now_text.slice!(/./m)) != nil
# \ 의 경우
if c == "00"
# 본래의 문자에 되돌리는
c = "\"
end
# C[n] 의 경우
if c == "01"
# 문자색을 변경
@now_text.sub!(/[([0-9]+)]/, "")
color = $1.to_i
if color >= 0 and color <= 7
self.contents.font.color = text_color(color)
if @opacity != nil
color = self.contents.font.color
self.contents.font.color = Color.new(color.red, color.green, color.blue, color.alpha * @opacity / 255)
end
end
# 다음의 문자에
c = ""
end
# G 의 경우
if c == "02"
# 골드 윈도우를 작성
if @gold_window == nil and @popchar <= 0
@gold_window = Window_Gold.new
@gold_window.x = 560 - @gold_window.width
if $game_temp.in_battle
@gold_window.y = 192
else
@gold_window.y = self.y >= 128 ? 32 : 384
end
@gold_window.opacity = self.opacity
@gold_window.back_opacity = self.back_opacity
end
# 다음의 문자에
c = ""
end
# S[n] 의 경우
if c == "03"
# 문자색을 변경
@now_text.sub!(/[([0-9]+)]/, "")
speed = $1.to_i
if speed >= 0 and speed <= 19
@write_speed = speed
end
# 다음의 문자에
c = ""
end
# A[soundname] 의 경우
if c == "04"
# 재생 파일을 변경하기 위한 준비
@now_text.sub!(/[(.*?)]/, "")
buftxt = $1.dup.to_s
# 재생 파일명에"/"가 있을까?
if buftxt.match(///) == nil and buftxt != "" then
# 없으면"Audio/SE/"을 결합하는
$soundname_on_speak = "Audio/SE/" + buftxt
else
# 있으면 그대로 카피
$soundname_on_speak = buftxt.dup
end
# 다음의 문자에
c = ""
elsif c == "04"
# 다음의 문자에
c = ""
end
# . 의 경우
if c == "05"
@write_wait += 5
c = ""
end
# | 의 경우
if c == "06"
@write_wait += 20
c = ""
end
# > 의 경우
if c == "16"
text_not_skip = false
c = ""
end
# <의 경우
if c == "17"
text_not_skip = true
c = ""
end
# !의 경우
if c == "20"
@mid_stop = true
c = ""
end
# ~의 경우
if c == "21"
terminate_message
return
end
# I의 경우(추가 부분)
if c == "23"
# 지금의@x를 인덴트 위치로 설정
@indent = @x
c = ""
end
# O의 경우(추가 부분)
if c == "24"
@now_text.sub!(/[([0-9]+)]/, "")
@opacity = $1.to_i
color = self.contents.font.color
self.contents.font.color = Color.new(color.red, color.green, color.blue, color.alpha * @opacity / 255)
c = ""
end
# H의 경우(추가 부분)
if c == "25"
@now_text.sub!(/[([0-9]+)]/, "")
self.contents.font.size = [[$1.to_i, 6].max, 32].min
c = ""
end
# B의 경우(추가 부분)
if c == "26"
@now_text.sub!(/[([0-9]+)]/, "")
@x += $1.to_i
c = ""
end
# R의 경우(추가 부분)
if c == "27"
@now_text.sub!(/[(.*?)]/, "")
# 문자를 묘화
@x += ruby_draw_text(self.contents, @x, @y * line_height + (line_height - self.contents.font.size), $1, @opacity)
# 문자 묘사의 것SE을 연주
if $soundname_on_speak != ""
Audio.se_play($soundname_on_speak)
end
c = ""
end
# 아이콘 묘화용 순서의 경우(추가 부분)
if c == "30"
# 아이콘 파일명을 취득
@now_text.sub!(/[(.*?)]/, "")
# 아이콘을 묘화
self.contents.blt(@x , @y * line_height + 8, RPG::Cache.icon($1), Rect.new(0, 0, 24, 24))
# 문자 묘사의 것SE을 연주
if $soundname_on_speak != ""
Audio.se_play($soundname_on_speak)
end
@x += 24
# 다음의 문자에
c = ""
end
# 개행 문자의 경우
if c == "n"
# y 에 1 를 가산
@lines += 1
@y += 1
@x = 0 + @indent + @face_indent
# 선택사항이라면 인덴트를 실시하는
if @lines >= $game_temp.choice_start
@x = 8 + @indent + @face_indent
# 커서의 갱신
@cursor_width = @max_choice_x
end
# 다음의 문자에
c = ""
end
# 외자 표시의 경우
if c == "22"
# []부분의 제거
@now_text.sub!(/[([0-9]+)]/, "")
# 외자를 표시
@x += gaiji_draw(4 + @x, @y * line_height + (line_height - self.contents.font.size), $1.to_i)
# 다음의 문자에
c = ""
end
if c != ""
# 문자를 묘화
self.contents.draw_text(4+@x, 32 * @y, 40, 32, c)
@x += self.contents.text_size(c).width
# 문자 묘사의 것SE을 연주
if $soundname_on_speak != "" then
Audio.se_play($soundname_on_speak)
end
end
# B버튼이 밀렸을 경우
if Input.press?(Input::B)
text_not_skip = false
end
else
text_not_skip = true
break
end
# 종료 판정
if text_not_skip
break
end
end
@write_wait += @write_speed
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
if @mid_stop
@mid_stop = false
return
else
terminate_message
end
end
return
end
# 페이드아웃중 이외로 표시 기다리는 메세지나 선택사항이 있는 경우
if @fade_out == false and $game_temp.message_text != nil
@contents_showing = true
$game_temp.message_window_showing = true
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
#--------------------------------------------------------------------------
# ● 캐릭터의 취득
# parameter : 파라미터
#--------------------------------------------------------------------------
def get_character(parameter)
# 파라미터로 분기
case parameter
when 0 # 플레이어
return $game_player
else # 특정의 이벤트
events = $game_map.events
return events == nil ? nil : events[parameter]
end
end
#--------------------------------------------------------------------------
# ● 윈도우의 위치와 불투명도의 설정
#--------------------------------------------------------------------------
def reset_window
# 판정
if @popchar >= 0
events = $game_map.events
if events != nil
character = get_character(@popchar)
x = [[character.screen_x - 0 - self.width / 2, 4].max, 636 - self.width].min
y = [[character.screen_y - 48 - self.height, 4].max, 476 - self.height].min
self.x = x
self.y = y
end
elsif @popchar == -1
self.x = -4
self.y = -4
self.width = 648
self.height = 488
else
if $game_temp.in_battle
self.y = 16
else
case $game_system.message_position
when 0 # 상
self.y = 16
when 1 # 안
self.y = 160
when 2 # 하
self.y = 304
end
self.x = 80
if @face_file == nil
self.width = 480
else
self.width = 600
self.x -= 60
end
self.height = 160
end
end
self.contents = Bitmap.new(self.width - 32, self.height - 32)
if @face_file != nil
self.contents.blt(16, 16, RPG::Cache.picture(@face_file), Rect.new(0, 0, 96, 96))
end
if @popchar == -1
self.opacity = 255
self.back_opacity = 0
elsif $game_system.message_frame == 0
self.opacity = 255
self.back_opacity = 160
else
self.opacity = 0
self.back_opacity = 160
end
end
#--------------------------------------------------------------------------
# ● 외자 묘화
#--------------------------------------------------------------------------
# x   :x 좌표
# y   :y 좌표
# num  :외자 번호
# 돌아가 값:외자폭(@x증가치)
#--------------------------------------------------------------------------
def gaiji_draw(x, y, num)
# 외자 데이터가 존재하지 않는 경우는 굳이 하지 않는
if @gaiji_cache == nil
return 0
else
# 지정한 외자가 캐쉬 범위를 넘고 있는 경우는 굳이 하지 않는
if @gaiji_cache.width < num * 24
return 0
end

# 문자 사이즈를 계산
if self.contents.font.size >= 20 and self.contents.font.size <= 24
size = 24
else
size = self.contents.font.size * 100 * 24 / 2200
end

# 외자 데이터를stretch_blt로 전송
self.contents.stretch_blt(Rect.new(x, y, size, size), @gaiji_cache, Rect.new(num * 24, 0, 24, 24))

# 문자 묘사의 것SE을 연주
if $soundname_on_speak != "" then
Audio.se_play($soundname_on_speak)
end

# 문자 사이즈를 돌려주는
return size
end
end
#--------------------------------------------------------------------------
# ● line_height
#--------------------------------------------------------------------------
# 돌아가 치:행의 높이(@y증가치)를 돌려줍니다.
#--------------------------------------------------------------------------
def line_height
# 현상 , 선택사항등 에 대응을 할 수 없기 때문에 , 자동적으로32를 돌려줍니다.
return 32

# 문자 사이즈를 계산
if self.contents.font.size >= 20 and self.contents.font.size <= 24
return 32
else
return self.contents.font.size * 15 / 10
end
end
#--------------------------------------------------------------------------
# ● 루비 문자 묘화
#--------------------------------------------------------------------------
# target :묘화 대상. Bitmap클래스를 지정.
# x :x좌표
# y :y좌표
# str  :묘화 캐릭터 라인. 본문,루비의 형식에서 입력.
#      ,단락이2개 이상 있었을 경우는 자동적으로 무시된다.
# opacity:투과율(0~255)
# 돌아가 값 :문자폭(@x증가치).
#--------------------------------------------------------------------------
def ruby_draw_text(target, x, y, str,opacity)
# font size를 백업 해 두는
sizeback = target.font.size
# 루비 사이즈의 계산
target.font.size * 3 / 2 > 32 ? rubysize = 32 - target.font.size : rubysize = target.font.size / 2
rubysize = [rubysize, 6].max

# opacity에 규정치 이상의 값이 들어가 있는 경우는 수정.
opacity = [[opacity, 0].max, 255].min
# str(을)를split로 분할해 ,split_s에 격납
split_s = str.split(/,/)

# split_s이nil의 경우는""으로 해 두는(오동작 방지)
split_s[0] == nil ? split_s[0] = "" : nil
split_s[1] == nil ? split_s[1] = "" : nil

# height와width를 계산
height = sizeback + rubysize
width = target.text_size(split_s[0]).width

# 버퍼용의 폭 계산(루비의 폭이 본문의 폭을 넘을 가능성이 있기 때문에(위해))
target.font.size = rubysize
ruby_width = target.text_size(split_s[1]).width
target.font.size = sizeback

buf_width = [target.text_size(split_s[0]).width, ruby_width].max

# 본문의 묘화폭과 루비의 묘화폭의 차이를1/2로 해 변수에 격납(다음에 사용)
width - ruby_width != 0 ? sub_x = (width - ruby_width) / 2 : sub_x = 0

# opacity이255(투과 없음)의 경우는 통상 묘화
if opacity == 255
# 루비의 묘화
target.font.size = rubysize
target.draw_text(x + sub_x, y - target.font.size, target.text_size(split_s[1]).width, target.font.size, split_s[1])
target.font.size = sizeback
# 본문의 묘화
target.draw_text(x, y, width, target.font.size, split_s[0])
return width
else
# 표시 텍스트의height,width가 버퍼 사이즈를 웃도는 경우는
# 버퍼를 재생성한다.
if @opacity_text_buf.width < buf_width or @opacity_text_buf.height < height
@opacity_text_buf.dispose
@opacity_text_buf = Bitmap.new(buf_width, height)
# 그렇지 않은 경우는 버퍼 클리어.
else
@opacity_text_buf.clear
end
# 버퍼에 텍스트 묘화
# 루비의 묘화
@opacity_text_buf.font.size = rubysize
@opacity_text_buf.draw_text(0 , 0, buf_width, rubysize, split_s[1], 1)
@opacity_text_buf.font.size = sizeback
# 본문의 묘화
@opacity_text_buf.draw_text(0 , rubysize, buf_width, sizeback, split_s[0], 1)
# 루비의 폭이 본문의 폭을 밑도는 경우
if sub_x >= 0
target.blt(x, y - rubysize, @opacity_text_buf, Rect.new(0, 0, buf_width, height), opacity)
# 루비의 폭이 본문의 폭을 웃도는 경우
else
target.blt(x + sub_x, y - rubysize, @opacity_text_buf, Rect.new(0, 0, buf_width, height), opacity)
end
# 문자 사이즈를 돌려주는
return width
end
end
#--------------------------------------------------------------------------
# ● V변환
#--------------------------------------------------------------------------
# option :옵션. 무 지정 또는 규정외의 경우는index의 유저 변수치를 돌려준다.
# index :인덱스
# 돌아가 값 :변환 결과(아이콘 표시용 순서 포함)
#--------------------------------------------------------------------------
def convart_value(option, index)
# option이nil의 경우는""으로 고치는(오동작 방지)
option == nil ? option = "" : nil

# option는downcase해 둔다.
option.downcase!

# 30(은)는 아이콘 표시용의 순서. 30[아이콘 파일명]으로 정의.
case option
when "i"
unless $data_items[index].name == nil
r = sprintf("30[%s]%s", $data_items[index].icon_name, $data_items[index].name)
end
when "w"
unless $data_weapons[index].name == nil
r = sprintf("30[%s]%s", $data_weapons[index].icon_name, $data_weapons[index].name)
end
when "a"
unless $data_armors[index].name == nil
r = sprintf("30[%s]%s", $data_armors[index].icon_name, $data_armors[index].name)
end
when "s"
unless $data_skills[index].name == nil
r = sprintf("30[%s]%s", $data_skills[index].icon_name, $data_skills[index].name)
end
else
r = $game_variables[index]
end

r == nil ? r = "" : nil
return r
end
#--------------------------------------------------------------------------
# ● 해방
#--------------------------------------------------------------------------
def dispose
terminate_message

# 외자 캐쉬 개방
if @gaiji_cache != nil
unless @gaiji_cache.disposed?
@gaiji_cache.dispose
end
end

# 문자 투과 전송용 버퍼 개방
unless @opacity_text_buf.disposed?
@opacity_text_buf.dispose
end

$game_temp.message_window_showing = false
if @input_number_window != nil
@input_number_window.dispose
end
super
end
#--------------------------------------------------------------------------
# ● 커서의 구형 갱신
#--------------------------------------------------------------------------
def update_cursor_rect
if @index >= 0
n = $game_temp.choice_start + @index
self.cursor_rect.set(8 + @indent + @face_indent, n * 32, @cursor_width, 32)
else
self.cursor_rect.empty
end
end
end
#==============================================================================
# ■ Window_Frame (범위만으로 내용이 없는 윈도우)
#==============================================================================
class Window_Frame < Window_Base
#--------------------------------------------------------------------------
# ● 오브젝트 초기화
#--------------------------------------------------------------------------
def initialize(x, y, width, height)
super(x, y, width, height)
self.contents = nil
#self.back_opacity = 240
end
#--------------------------------------------------------------------------
# ● 해방
#--------------------------------------------------------------------------
def dispose
super
end
end
#==============================================================================
# ■ Air_Text (굳이 없는 곳에 문자 묘사 = 범위가 없는 순간 표시 메세지 윈도우)
#==============================================================================
class Air_Text < Window_Base
#--------------------------------------------------------------------------
# ● 오브젝트 초기화
#--------------------------------------------------------------------------
def initialize(x, y, designate_text)
super(x-16, y-16, 32 + designate_text.size * 12, 56)
self.opacity = 0
self.back_opacity = 0
self.contents = Bitmap.new(self.width - 32, self.height - 32)
w = self.contents.width
h = self.contents.height
self.contents.draw_text(0, 0, w, h, designate_text)
end
#--------------------------------------------------------------------------
# ● 해방
#--------------------------------------------------------------------------
def dispose
self.contents.clear
super
end
end