XP 스크립트

메인위에 껴넣으시고요
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

Who's 백호

?

이상혁입니다.

http://elab.kr

Comment '8'
  • ?
    '알중_ 2009.08.01 10:37

    297줄에서 대체 어쩌란거여 ㅡㅡ

     

  • ?
    크라상 2010.01.10 18:59

    if buftxt.match(///) == nil and buftxt != "" then

    부분에서

    if buftxt.match(//) == nil and buftxt != "" then

    이렇게 바꿔주면 됩니다.답변 무지 오래된글이지만.....-_

  • ?
    ◐아이흥행 2010.01.23 18:50

    오류 뜨네.......

  • ?
    볼펜 2010.02.19 00:49

    감사합니다

  • ?
    체셔캣 2010.04.14 06:31

    저 ... 엔터 누른 자리에 ㄷ << ? 이런 표시떠서 문자열을 못나누겠는데 어떻게하죠 ;

  • ?
    [잉여]웹게임운영자 2010.09.25 21:43

    298줄 오류해결하면 31줄 오류;;

  • profile
    굿닝 2012.02.26 14:28

    마침필요했는데

    잘쓰겠습니다.

  • ?
    러블리뀨 2014.08.22 17:00
    249줄 에러나는데ㅠ

List of Articles
번호 분류 제목 글쓴이 날짜 조회 수
공지 스크립트 자료 게시물 작성시 주의사항 습작 2012.12.24 6153
26 메시지 대화창에 얼굴 그래픽 띠우기 73 아방스 2007.11.09 7117
25 메시지 말풍선 표시 스크립트 48 file insertend 2010.06.06 5161
24 메시지 한글 채팅 스크립트 32 file こなた 2009.01.22 4947
» 메시지 메세지플러스3.1v스크립트(얼굴표시,메세지색상,속도등정하는스크립트) 8 백호 2009.02.21 4878
22 메시지 메세지 표시 업그레이드 11 file 백호 2009.02.21 4723
21 메시지 TXT 메세지 렌더링 스크립트 16 에돌이 2011.07.14 4069
20 메시지 공지(?)를 띄우는 스크립트 23 file - 하늘 - 2009.08.06 4007
19 메시지 ◆메세지 윈도우 개조 -KGC_MessageAlter◆ 3 백호 2009.02.22 3422
18 메시지 XRXS9 - 메세지 표시 업그레이드 X file Alkaid 2010.09.07 3305
17 메시지 말 거는 텍스트 작게 만들끼~!! 4 file 백호 2009.02.22 3213
16 메시지 문자 메세지 띄우기 스크립트 10 file 백호 2009.02.21 3069
15 메시지 Hermes(Hermes Extends RPGXP Message System) 0.4 by derula 1 Alkaid 2011.02.27 3053
14 메시지 한글자씩 뜨는 스크립트 6 백호 2009.02.21 2997
13 메시지 윈도우즈 확장 file 백호 2009.02.21 2564
12 메시지 1문자식 표시랑 따랑소리 나는 스크립트 8 백호 2009.02.22 2303
11 메시지 WhiteFlute 멀티메시지 스크립트 (XP/VX/VXA) 4 Alkaid 2013.02.05 2263
10 메시지 txt 메세징 스크립트 4 에돌이 2011.07.12 2197
9 메시지 Universal Message System 1.8.0 by ccoa 1 file Alkaid 2010.09.08 2183
8 메시지 Etude87_Item_Choice_XP ver.1.10 13 file 습작 2013.05.19 2177
7 메시지 Hermes(Hermes Extends RPGXP Message System) 0.3d by derula Alkaid 2010.09.10 2023
Board Pagination Prev 1 2 Next
/ 2