사람에게말걸면 밑에대화창에 말이랑 이름 얼굴 사진같은거 나오는거 어떻게함?
사람에게말걸면 밑에대화창에 말이랑 이름 얼굴 사진같은거 나오는거 어떻게함?
번호 | 분류 | 제목 | 글쓴이 | 날짜 | 조회 수 |
---|---|---|---|---|---|
39 | RPG 만들기 VX | 강의를.. 요.. 요청합니다! 3 | 약간의 소망 | 2011.04.04 | 1383 |
38 | RPG 만들기 2000,3 | RPG만들기2003에대해...질문!!@ 2 | 디타쿠 | 2011.04.09 | 1974 |
37 | RPG 만들기 XP | 다양한기능.. | 라묜이좋아 | 2011.04.13 | 1394 |
36 | RPG 만들기 VX | 쾌스트 만들기 | 심심하군 | 2011.04.17 | 1512 |
» | RPG 만들기 XP | 사람에게말걸기 1 | 오니오니444 | 2011.04.30 | 1762 |
34 | RPG 만들기 XP | 이벤트 자동실행 후 중단하는법.... 2 | Cook게임 | 2011.05.03 | 4841 |
33 | RPG 만들기 VX | 장소이동해도 따라오는 npc만들기! 2 | sanwa | 2011.05.18 | 1665 |
32 | RPG 만들기 XP | 장비에 대한 스크립트요 2 | 쿠로오니 | 2011.06.29 | 1436 |
31 | RPG 만들기 XP | 아이템 조합 강의좀 부탁드립니다 1 | 햄군 | 2011.07.09 | 1581 |
30 | RPG 만들기 XP | 바닥에 있는 아이템에 빛나게하기 | 짜식 | 2011.07.19 | 1394 |
29 | RPG 만들기 XP | 제발...이것좀 봐주세요.. 3 | 타살 | 2011.07.22 | 1488 |
28 | RPG 만들기 XP | 이벤트를 따라오게하기 | 짜식 | 2011.07.22 | 1555 |
27 | RPG 만들기 VX | bgm추가 1 | 인간만새 | 2011.08.03 | 1270 |
26 | RPG 만들기 XP | 주인공의 이름을 자신이 원하는데로 만드는법 1 | zkland | 2011.08.04 | 1924 |
25 | RPG 만들기 VX | 강의요청이요 2 | ysys1292 | 2011.08.05 | 1288 |
24 | RPG 만들기 XP | 강의 요청입니다! 1 | 알피지만들러옴 | 2011.10.09 | 1392 |
23 | NRPG | 강의 요청 | 제후반 | 2011.10.15 | 1313 |
22 | RPG 만들기 XP | 강의요청 | 카쿠즈 | 2011.10.23 | 1338 |
21 | RPG 만들기 XP | 강의부탁해요 | 김채윤왕 | 2011.10.26 | 1382 |
20 | RPG 만들기 XP | 니오티님 들어보세요~ 1 | 코코넛 | 2011.11.16 | 1371 |
19 | RPG 만들기 XP | 온라인 게임 만들기 강의 요청이요~ 1 | 아오오니팬! | 2011.11.20 | 1739 |
18 | RPG 만들기 XP | 강의 부탁드려요! | 햄군 | 2012.01.01 | 1299 |
17 | RPG 만들기 XP | RPG xp 강의 부탁합니다. | 엘릭서 | 2012.02.21 | 1821 |
16 | RPG 만들기 XP | 이건 뭐 어찌해야... | 레오 | 2012.02.22 | 1255 |
15 | RPG 만들기 XP | 강의 요청합니다!!! | zkland68 | 2012.02.24 | 2134 |
14 | RPG 만들기 XP | 강의 요청합니다!!! | zkland68 | 2012.02.25 | 2038 |
13 | RPG 만들기 VX | 이런거 없나요? 2 | 훈이님 | 2012.02.27 | 1289 |
12 | RPG 만들기 XP | 강의요청이여! | 태담 | 2012.03.11 | 1271 |
11 | RPG 만들기 XP | 아오오니 만들기 강의 요청 | 아오오니의오른팔 | 2012.07.30 | 1774 |
10 | RPG 만들기 XP | 어떤 이벤트를 하고 오면 사라지는 이벤트 강의 요청합니다!!! 1 | 카르핑 | 2012.12.07 | 1368 |
9 | RPG 만들기 XP | 활을 쏴서 몬스터를 죽일때.. 1 | 크그르그아 | 2012.12.19 | 1370 |
8 | RPG 만들기 XP | 액알 만드는법좀 | VIos | 2013.02.27 | 1510 |
7 | RPG 만들기 XP | 아오오니 맵이동 강의 4 | 왕초찌 | 2013.02.27 | 2827 |
6 | RPG 만들기 XP | 이벤트로스피드변경하는법좀여!! 1 | 미로니카 | 2013.05.15 | 1199 |
5 | RPG 만들기 VX | 새롭게 맵칩 만드는 방법 | 쿨좀비 | 2014.07.13 | 627 |
4 | RPG 만들기 VX | rpg maker vx ace 처음 접하는데 여러가지 물어볼게요 | 구르마 | 2015.06.28 | 190 |
3 | RPG 만들기 VX | RPG VX 대화창 강제로 넘기는법 강의 부탁드립니다! | 애벌래오니 | 2015.07.01 | 240 |
2 | RPG 만들기 XP | RPG XP Maker 좀 도와주세요.... | 뮤런 | 2015.11.26 | 128 |
1 | RPG 만들기 VX | RPG VX Ace 질문입니다! | lysis | 2016.12.24 | 208 |
아래 스크립트를 불여넣기하신후 나온대로 하시면 됩니다..
# RPG XP MASSAGE PLUS●제어 문자 기능에 대해
#현재 , 이하의 제어 문자를 서포트하고 있습니다.
#
#\f[file] file그리고 지정한 얼굴 그래픽을 표시합니다.
# 얼굴 그래픽의 규격은 트크르2000/2003의 배로96×96.
# 이것을 하나의 파일로 준비합니다.
# 장소는Graphics/Pictures/을 자동적으로 참조합니다.
# .png(은)는 생략 가능합니다.
# .png이외를 사용하는 경우 , 문자를 고쳐 써 주세요.
# 그리고 이\f[]의 지정은 반드시 문장의 최초로 가 주세요.
# "\f[Graphics/Pictures/파일명.png"이 아니고 ,
# 단순하게"\f[파일명]"으로 지정. 할 수 있습니다.
#
#\name[] []안으로 텍스트를 작은 네임 윈도우로 표시합니다.
#\p[] \p[-1]그리고 , 전체 표시(문자만으로 중앙에)를 합니다.
# \p[0]그리고 , 지정한 주인공 위에 팝 합니다.
# \p[ID]그리고 , 그ID를 가지는 이벤트 위에 팝 합니다.
#
#
#
#\\ 문자?8?표시합니다.
#\V[n] 변수n차례에 격납된 내용을 표시합니다.
# 그리고 , 번호의 전에 특정의 문자를 넣는 일로 , 지정id의 아이템 , 장비품 ,
# 스킬의 이름을 설정된 아이콘과 함께 표시하는 것이 가능합니다.
# i(item) :아이템
# w(weapon):무기
# a(armor) :방어용 기구
# s(skill) :스킬
#
#
#\N[n] 지정id의 엑터의 이름을 표시합니다.
#\C[n] 표시하는 문자색을n차례로 변경합니다.
# 디폴트의 문자색은 본체 메뉴얼을 참조해 주세요.
#\G 소지금의 윈도우를 표시합니다.
#\s[n] 문장의 표시 스피드를 변경합니다(0~19).
# 숫자가 커질수록 늦어집니다.
#\H[n] 표시하는 문자의 사이즈를 변경합니다(6~32).
#\O[n] 표시하는 문자의 투과율을 지정합니다(0~255).
#\a[file] 문자 표시시에 재생하는SE을 지정한 파일로 변경합니다.
# 데이터는./Audio/SE/으로 읽으러 갑니다. 폴더 지정은 생략 가능합니다.
#
#
#\. 다음의 문자 표시까지1/4초간 웨이트 합니다.
#\| 다음의 문자 표시까지1초간 웨이트 합니다.
#\> 「\<」이 올 때까지 , 순간 표시합니다.
#\< 「\>」으로부터 시작된 순간 표시를 종료합니다.
#\! 결정 키의 입력을 그 자리에서 기다립니다.
#\~ 키 입력을 기다리지 않고 , 그대로 윈도우를 닫습니다.
#\e[n] n차례의 외자를 표시합니다.
# 외자 데이터는 세로폭24Pixel * 가로 무제한(24 * n)의png형식 화상으로 ,
# 디폴트 설정에서는./Graphics/Gaiji/sample.png을 참조하고 있습니다.
# 외자 파일의 참조처는 글로벌 변수$gaiji_file로 설정되어 있습니다.
# 문자 사이즈가 디폴트와 다른 경우는 사이즈 조정을 실시합니다만 ,
# 화상이 엉성해져 버리는(문자 사이즈가20~24의 경우는 변경하지 않습니다).
#
#
#\I 현재의 문자 표시 위치를 인덴트(인덴트 위치)로 설정합니다.
#\B[n] 지정Pixel분의 공백을 삽입합니다.
#\R[$1,$2] 루비 첨부의 문자를 표시합니다. $1하지만 본문 ,$2이 루비가 됩니다.
# $1그리고 지정한 캐릭터 라인은1프레임으로 표시됩니다.
# 한 글자씩 표시시키고 싶은 경우는 , 본문을 한 글자씩에 단락짓고 나서 루비를
# 할당해 주세요.
# 루비의 사이즈는 문자 사이즈의 것1/2입니다.
# 문자 사이즈와 루비의 사이즈의 합계가32를 넘는 경우 ,
# 루비 사이즈는32 - 문자 사이즈가 됩니다. 주의해 주세요.
# 그리고 , 루비 사이즈의 최소치는6이 됩니다.
#
#==============================================================================
# ¡á 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ÀÌ»óÀÇ °æ¿ì ij¸¯ÅÍ ÆË. 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
# ÆíÀÇ»ó ,"\\\\" À» "\000" ¿¡ º¯È¯
@now_text.gsub!(/\\\\/) { "\000" }
# "\\C" À» "\001" ¿¡ ,"\\G" ¸¦ "\002" ¿¡ ,
# "\\S" ¸¦ "\003" ¿¡ ,"\\A" ¸¦ "\004" ¿¡ º¯È¯
@now_text.gsub!(/\\[Cc]\[([0-9]+)\]/) { "\001[#{$1}]" }
@now_text.gsub!(/\\[Gg]/) { "\002" }
@now_text.gsub!(/\\[Ss]\[([0-9]+)\]/) { "\003[#{$1}]" }
@now_text.gsub!(/\\[Aa]\[(.*?)\]/) { "\004[#{$1}]" }
@now_text.gsub!(/\\[.]/) { "\005" }
@now_text.gsub!(/\\[|]/) { "\006" }
# °æÇÕ Çϸé(ÀÚ) ¹«¾ùÀΰ¡ °ÅºÏÇϱ⠶§¹®¿¡ ,\016ÀÌÈĸ¦ »ç¿ëÇÏ´Â
@now_text.gsub!(/\\[>]/) { "\016" }
@now_text.gsub!(/\\[<]/) { "\017" }
@now_text.gsub!(/\\[!]/) { "\020" }
@now_text.gsub!(/\\[~]/) { "\021" }
@now_text.gsub!(/\\[Ee]\[([0-9]+)\]/) { "\022[#{$1}]" }
# Àε§Æ® ¼³Á¤(Ãß°¡ ºÎºÐ)
@now_text.gsub!(/\\[Ii]/) { "\023" }
# ÅؽºÆ® Åõ°úÀ² ÁöÁ¤(Ãß°¡ ºÎºÐ)
@now_text.gsub!(/\\[Oo]\[([0-9]+)\]/) { "\024[#{$1}]" }
# ÅؽºÆ® »çÀÌÁî ÁöÁ¤(Ãß°¡ ºÎºÐ)
@now_text.gsub!(/\\[Hh]\[([0-9]+)\]/) { "\025[#{$1}]" }
# °ø¹é »ðÀÔ(Ãß°¡ ºÎºÐ)
@now_text.gsub!(/\\[Bb]\[([0-9]+)\]/) { "\026[#{$1}]" }
# ·çºñ Ç¥½Ã(Ãß°¡ ºÎºÐ)
@now_text.gsub!(/\\[Rr]\[(.*?)\]/) { "\027[#{$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 == "\000"
# º»·¡ÀÇ ¹®ÀÚ¿¡ µÇµ¹¸®´Â
c = "\\"
end
# \C[n] ÀÇ °æ¿ì
if c == "\001"
# ¹®ÀÚ»öÀ» º¯°æ
@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 == "\002"
# °ñµå À©µµ¿ì¸¦ ÀÛ¼º
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 == "\003"
# ¹®ÀÚ»öÀ» º¯°æ
@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 == "\004"
# Àç»ý ÆÄÀÏÀ» º¯°æÇϱâ À§ÇÑ Áغñ
@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 == "\004"
# ´ÙÀ½ÀÇ ¹®ÀÚ¿¡
c = ""
end
# \. ÀÇ °æ¿ì
if c == "\005"
@write_wait += 5
c = ""
end
# \| ÀÇ °æ¿ì
if c == "\006"
@write_wait += 20
c = ""
end
# \> ÀÇ °æ¿ì
if c == "\016"
text_not_skip = false
c = ""
end
# \<ÀÇ °æ¿ì
if c == "\017"
text_not_skip = true
c = ""
end
# \!ÀÇ °æ¿ì
if c == "\020"
@mid_stop = true
c = ""
end
# \~ÀÇ °æ¿ì
if c == "\021"
terminate_message
return
end
# \IÀÇ °æ¿ì(Ãß°¡ ºÎºÐ)
if c == "\023"
# Áö±ÝÀÇ@x¸¦ Àε§Æ® À§Ä¡·Î ¼³Á¤
@indent = @x
c = ""
end
# \OÀÇ °æ¿ì(Ãß°¡ ºÎºÐ)
if c == "\024"
@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 == "\025"
@now_text.sub!(/\[([0-9]+)\]/, "")
self.contents.font.size = [[$1.to_i, 6].max, 32].min
c = ""
end
# \BÀÇ °æ¿ì(Ãß°¡ ºÎºÐ)
if c == "\026"
@now_text.sub!(/\[([0-9]+)\]/, "")
@x += $1.to_i
c = ""
end
# \RÀÇ °æ¿ì(Ãß°¡ ºÎºÐ)
if c == "\027"
@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 == "\030"
# ¾ÆÀÌÄÜ ÆÄÀϸíÀ» Ãëµæ
@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 == "\022"
# []ºÎºÐÀÇ Á¦°Å
@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
#--------------------------------------------------------------------------
# ¡Ü ij¸¯ÅÍÀÇ Ãëµæ
# 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
#SCRIPT
#--------------------------------------------------------------------------
# ¡Ü ¿ÜÀÚ ¹¦È
#--------------------------------------------------------------------------
# x¡¡¡¡ £ºx ÁÂÇ¥
# y¡¡¡¡ £ºy ÁÂÇ¥
# num¡¡ £º¿ÜÀÚ ¹øÈ£
# µ¹¾Æ°¡ °ª£º¿ÜÀÚÆø(@xÁõ°¡Ä¡)
#--------------------------------------------------------------------------
def gaiji_draw(x, y, num)
# ¿ÜÀÚ µ¥ÀÌÅÍ°¡ Á¸ÀçÇÏÁö ¾Ê´Â °æ¿ì´Â ±»ÀÌ ÇÏÁö ¾Ê´Â
if @gaiji_cache == nil
return 0
else
# ÁöÁ¤ÇÑ ¿ÜÀÚ°¡ ij½¬ ¹üÀ§¸¦ ³Ñ°í ÀÖ´Â °æ¿ì´Â ±»ÀÌ ÇÏÁö ¾Ê´Â
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¡¡ £º¹¦È ij¸¯ÅÍ ¶óÀÎ. º»¹®,·çºñÀÇ Çü½Ä¿¡¼ ÀÔ·Â.
# ¡¡¡¡¡¡¡¡ ,´Ü¶ôÀÌ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!
# \030(Àº)´Â ¾ÆÀÌÄÜ Ç¥½Ã¿ëÀÇ ¼ø¼. \030[¾ÆÀÌÄÜ ÆÄÀϸí]À¸·Î Á¤ÀÇ.
case option
when "i"
unless $data_items[index].name == nil
r = sprintf("\030[%s]%s", $data_items[index].icon_name, $data_items[index].name)
end
when "w"
unless $data_weapons[index].name == nil
r = sprintf("\030[%s]%s", $data_weapons[index].icon_name, $data_weapons[index].name)
end
when "a"
unless $data_armors[index].name == nil
r = sprintf("\030[%s]%s", $data_armors[index].icon_name, $data_armors[index].name)
end
when "s"
unless $data_skills[index].name == nil
r = sprintf("\030[%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