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
201 전투 전투에서도 맵 BGM 연결하는 스크립트 2 file 백호 2009.02.21 1129
200 메뉴 메뉴 화면 변경 스크립트 file 백호 2009.02.21 2236
199 메뉴 스테이터스 일람 스크립트 file 백호 2009.02.21 1328
198 오디오 음악감상 스크립트 3 file 백호 2009.02.21 1126
197 기타 CG그림 감상 스크립트 file 백호 2009.02.21 1735
196 파티 파티교환 시스템...이걸로 순서 교체도 가능할 듯... 9 file 백호 2009.02.21 2392
195 메뉴 제가 쓰고있는 메뉴 13 file 백호 2009.02.21 3028
» 메시지 메세지플러스3.1v스크립트(얼굴표시,메세지색상,속도등정하는스크립트) 8 백호 2009.02.21 4878
193 HUD 맵명을 표시하는 스크립트 한글로 번역한것 백호 2009.02.21 1257
192 아이템 아이템 소지수 무제한 1 백호 2009.02.21 887
191 전투 데미지마루 백호 2009.02.21 1163
190 스킬 선택 스킬 스크립트 4 file 백호 2009.02.21 1630
189 기타 발소리 스크립트 4 file 백호 2009.02.21 1614
188 전투 전투중의 윈도우 전부 투명화 3 file 백호 2009.02.21 1878
187 아이템 아이템 분류별로 나누기 (1) - 밑글과 다른 스크립트 3 file 백호 2009.02.21 1122
186 아이템 아이템 종류별로 분류하는 스크립트 2 file 백호 2009.02.21 1055
185 기타 전투 승리 BGM+페이드아웃 스크립트 1 file 백호 2009.02.21 1159
184 전투 전투 속도 조정 스크립트 2 file 백호 2009.02.21 1261
183 타이틀/게임오버 타이틀 화면 연출 4 file 백호 2009.02.21 2286
182 기타 특수효과 ElseEX 스크립트 file 백호 2009.02.21 995
Board Pagination Prev 1 ... 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 Next
/ 52