아래 스크립트를 MAIN위에 새로운 스크립트를 삽입하신후
복사 -> 붙여넣기 하시면됩니다.
====================================
# 모험일기
#
# 단지 단지 글을 묘화 할 뿐이기 때문에 일기 이외에도 사용할 수 있을 지도 모릅니다.
# 사용할 수 있는 제어 문자는 이하의 거리.
#
# N[n] ID n번의 액터의 이름을 표시합니다.
# V[n] 변수 n번의 가격을 표시합니다.
# C[n] 문자 색상을 변경합니다.
# G 현재의 소지금을 표시합니다.
# O[n] 불투명도를 변경합니다.(0~255)
# H[n] font size을 변경합니다.(6~32)
# R[본문, 루비] 루비 첨부의 글을 표시합니다.
# Pic[x, y, file name] picture에 인포트 된 화상을 표시합니다.
#
# 일기의 내용을 설정할 때는 「\ n[1]」와 같이
# 「」을 1개 여분으로 붙여 주세요.
#
# 샘플을 여러가지 고집이라고 보면, 알기 쉽다고 생각합니다.
class Window_Questdiary_Select < Window_Selectable
QUESTDIARY_DATA_MAX = 100 # 일기 데이터의 최대 수
end
class Data_Questdiary
VISIBLE_JUDGE_MODE = 1
# VISIBLE_ JUDGE_ MODE = 1
# 출현판정으로 스위치를 사용할 지 변수를 사용할 지 0: 스위치 1:변수
# 스위치로 하면, 1개의 항목에 복수의 메세지를
# 설정할 수 없게 됩니다.
attr_reader :exist
attr_reader :title
attr_reader :id
#--------------------------------------------------------------------------
# ● 오브젝트 초기화
#--------------------------------------------------------------------------
def initialize(id)
@id = id
@title = "타이틀" # 데호루토 타이틀 (보통 사용하지 않는다)
@variable = 0
@variable_max = 1
@comment = []
@exist = false
set_data(id)
end
#--------------------------------------------------------------------------
# ● 일기내용의 설정 # 직접 써준다.
#--------------------------------------------------------------------------
def set_data(id)
@id = id
case @id
when 1 # ID
@title = "편지의 내용" # 퀘스트 제목
@variable = 12 # 출현 조건(스위치나 변수 번호)
@comment[0] = <<-EOS#내용 시작 EOS지우면 안됩니다!
편지의 내용을 읽어보았다.
편지의 내용으로 보아 누군가가 잊어버린것 같았다.
이 편지의 주인은 누구일까?
EOS
# 여기까지
@variable_max = @comment.size
@exist = true # 존재 플러그 true으로 해 풀어 주세요
when 2 # ID
@title = "길드의뢰 : 몬스터 퇴치" # 퀘스트 제목
@variable = 5011 # 출현 조건(스위치나 변수 번호)
@comment[0] = <<-EOS#내용 시작 EOS지우면 안됩니다!
길드의뢰 : 몬스터 퇴치
길드장소 : \V[5011]
급수 : \V[5012]
수 : \V[5013]
현재진행상황 : \V[5014]/\V[5013]
EOS
# 여기까지
@variable_max = @comment.size
@exist = true # 존재 플러그 true으로 해 풀어 주세요
end
end
#--------------------------------------------------------------------------
# ● 일기내용을 돌려준다
#--------------------------------------------------------------------------
def show_comment
return @comment[0] if VISIBLE_JUDGE_MODE == 0
if @comment.size == 1
return @comment[0]
else
temp = [[$game_variables[@variable]-1, 0].max, @variable_max-1].min
return @comment[temp]
end
end
#--------------------------------------------------------------------------
# ● 일기 출현판정
#--------------------------------------------------------------------------
def title_visible?
return true if @variable == 0
if VISIBLE_JUDGE_MODE == 0
if $game_switches[@variable]
return true
else
return false
end
else
if $game_variables[@variable] == 0
return false
else
return true
end
end
end
end
class Window_Base < Window
#--------------------------------------------------------------------------
# ● 문자열변환
#--------------------------------------------------------------------------
def transfer(str)
text = str.clone
# 제어 문자처리
begin
text.gsub!(/\[Vv][([0-9]+)]/) { $game_variables[$1.to_i] }
end
text.gsub!(/\[Nn][([0-9]+)]/) do
$game_actors[$1.to_i] != nil ? $game_actors[$1.to_i].name : ""
end
# 편의상, "\\" 와 " 00"의 변환
text.gsub!(/\\/) { " 00" }
# "\C"을 " 01"에, "\G"와 " 02"에 변환
text.gsub!(/\[Cc][([0-9]+)]/) { " 01[#{$1}]" }
text.gsub!(/\[Gg]/) { " 02" }
# 불투명도
text.gsub!(/\[Oo][([0-9]+)]/) { "100[#{$1}]" }
# 문자 크기
text.gsub!(/\[Hh][([0-9]+)]/) { "101[#{$1}]" }
# 루비
text.gsub!(/\[Rr][(.+?),(.+?)]/) { "102[#{$1},#{$2}]" }
# 그림 표시
text.gsub!(/\[Pp]ic[([0-9]+),([0-9]+),([^,]]+)]/) { "150[#{$1},#{$2},#{$3}]" }
return text
end
#--------------------------------------------------------------------------
# ● 변환한 문자열을 묘화
#--------------------------------------------------------------------------
def draw_ex_text(ox, oy, str, align=0)
text = str.clone
x = 0
y = 0
# c에 1문자를 취득(글을 취득할 수 없게 될 때까지 루프)
while ((c = text.slice!(/./m)) != nil)
# \ 의 경우
if c == " 00"
# 본래의 글에 되돌려 준다.
c = "\"
end
# C[n] 의 경우
if c == " 01"
# 글색을 변경
text.sub!(/[([0-9]+)]/, "")
color = $1.to_i
if color >= 0 and color <= 7
self.contents.font.color = text_color(color)
end
# 다음의 글에
next
end
# G 의 경우
if c == " 02"
# 소지 골드에 변환
c = $game_party.gold.to_s
# 글을 묘화
self.contents.draw_text(ox+4+x, oy+4+ 32 * y, self.contents.text_size(c).width, 32, c)
# x에 묘화 한 글의 폭을 가산
x += self.contents.text_size(c).width
# 다음의 글에
next
end
# O 의 경우
if c == "100"
text.sub!(/[([0-9]+)]/, "")
opacity = $1.to_i
temp = self.contents.font.color
self.contents.font.color = Color.new(temp.red, temp.green, temp.blue, opacity)
# 다음의 글에
next
end
# H 의 경우
if c == "101"
text.sub!(/[([0-9]+)]/, "")
self.contents.font.size = [[$1.to_i, 6].max, 32].min
# 다음의 글에
next
end
# R 의 경우
if c == "102"
text.sub!(/[(.+?),(.+?)]/, "")
x += ruby_set(ox+x,oy+(y*32),$1,$2)
# 다음의 글에
next
end
# Pic 의 경우
if c == "150"
text.sub!(/[([0-9]+),([0-9]+),([^,]]+)]/, "")
set_picture($1.to_i, $2.to_i, $3)
# 다음의 글에
next
end
# 개행 문자의 경우
if c == "n"
# y에 1을 가산
y += 1
x = 0
# 다음의 글에
next
end
# 글을 묘화
self.contents.draw_text(ox+4+x, 4+oy+ 32 * y, 40, 32, c)
# x에 묘화 한 글의 폭을 가산
x += self.contents.text_size(c).width
end
end
#--------------------------------------------------------------------------
# ● 루비 묘화
#--------------------------------------------------------------------------
def ruby_set(x,y,str,ruby)
text_w = self.contents.text_size(str).width
text_h = self.contents.text_size(str).height
f_size_back = self.contents.font.size
ruby_size = 10
self.contents.font.size = ruby_size
ruby_w = self.contents.text_size(ruby).width
self.contents.draw_text(4+x, 4+4+y-ruby_size+1, text_w, ruby_size, ruby, 1)
self.contents.font.size = f_size_back
self.contents.draw_text(4+x, 4+4+y, text_w, text_h, str)
return text_w
end
#--------------------------------------------------------------------------
# ● 그림의 묘화
#--------------------------------------------------------------------------
def set_picture(x, y, filename, opacity=255)
bitmap = RPG::Cache.picture(filename)
self.contents.blt(x, y, bitmap, bitmap.rect, opacity)
end
#--------------------------------------------------------------------------
# ● 교재의 행수를 되돌린다
#--------------------------------------------------------------------------
def text_row(str)
text = str.clone
num = 0
# c에 1문자를 취득(글을 취득할 수 없게 될 때까지 루프)
while ((c = text.slice!(/./m)) != nil)
# 개행 문자의 경우
if c == "n"
# num에 1을 가산
num += 1
# 다음의 글에
next
end
end
return num
end
end
#==============================================================================
# ■ Window_Scroll
#------------------------------------------------------------------------------
# 스크롤의 기능을 갖는 윈도우 클래스입니다.
#==============================================================================
class Window_Scroll < Window_Base
#--------------------------------------------------------------------------
# ● 공개 인스턴스 변수
#--------------------------------------------------------------------------
attr_reader :index # 커서의 위치
attr_reader :help_window # 헬프 윈도우
#--------------------------------------------------------------------------
# ● 오브젝트 초기화
# x : 윈도우의 X좌표
# y : 윈도우의 Y좌표
# width : 윈도우의 폭
# height : 윈도우의 높이
#--------------------------------------------------------------------------
def initialize(x, y, width, height)
super(x, y, width, height)
@item_max = 1
@column_max = 1
@index = 0
self.cursor_rect.empty
end
#--------------------------------------------------------------------------
# ● 커서의 위치 설정
# index : 새로운 커서의 위치
#--------------------------------------------------------------------------
def index=(index)
@index = index
# 헬프텍스트를 갱신(update_ help은 계승선에 정의된다)
#if self.active and @help_window != nil
# update_help
#end
# 커서의 직사각형을 갱신
update_cursor_rect
end
#--------------------------------------------------------------------------
# ● 행수의 취득
#--------------------------------------------------------------------------
def row_max
# 항목 수와 열 수에서 행수를 산출
return (@item_max + @column_max - 1) / @column_max
end
#--------------------------------------------------------------------------
# ● 선두의 행의 취득
#--------------------------------------------------------------------------
def top_row
# 윈도우 내용의 전송원Y좌표를, 1 행의 높이 32로 가른다
return self.oy / 32
end
#--------------------------------------------------------------------------
# ● 선두의 행의 설정
# row : 선두에 표시하는 행
#--------------------------------------------------------------------------
def top_row=(row)
# row が 0 未満の場合は 0 に修正
if row < 0
row = 0
end
# row が row_max - 1 超の場合は row_max - 1 に修正
if row > row_max - 1
row = row_max - 1
end
# row に 1 行の高さ 32 を掛け、ウィンドウ内容の転送元 Y 座標とする
self.oy = row * 32
end
#--------------------------------------------------------------------------
# ● 1 ページに表示できる行数の取得
#--------------------------------------------------------------------------
def page_row_max
# ウィンドウの高さから、フレームの高さ 32 を引き、1 行の高さ 32 で割る
return 1#(self.height - 32) / 32
end
#--------------------------------------------------------------------------
# ● 1 ページに表示できる項目数の取得
#--------------------------------------------------------------------------
def page_item_max
# 行数 page_row_max に 列数 @column_max を掛ける
return (self.height - 32) / 32#page_row_max #* @column_max
end
#--------------------------------------------------------------------------
# ● ヘルプウィンドウの設定
# help_window : 新しいヘルプウィンドウ
#--------------------------------------------------------------------------
def help_window=(help_window)
@help_window = help_window
# ヘルプテキストを更新 (update_help は継承先で定義される)
if self.active and @help_window != nil
update_help
end
end
#--------------------------------------------------------------------------
# ● カーソルの矩形更新
#--------------------------------------------------------------------------
def update_cursor_rect
# カーソル位置が 0 未満の場合
if @index < 0
self.cursor_rect.empty
return
end
# 現在の行を取得
row = @index #/ @column_max
# 現在の行が、表示されている先頭の行より前の場合
if row < self.top_row
# 現在の行が先頭になるようにスクロール
self.top_row = row
end
# 現在の行が、表示されている最後尾の行より後ろの場合
if row > self.top_row + (self.page_row_max - 1)
# 現在の行が最後尾になるようにスクロール
self.top_row = row - (self.page_row_max - 1)
end
# カーソルの幅を計算
#cursor_width = self.width / @column_max - 32
# カーソルの座標を計算
#x = @index % @column_max * (cursor_width + 32)
#y = @index / @column_max * 32 - self.oy
# カーソルの矩形を更新
#self.cursor_rect.set(x, y, cursor_width, 32)
end
#--------------------------------------------------------------------------
# ● フレーム更新
#--------------------------------------------------------------------------
def update
super
# カーソルの移動が可能な状態の場合
if self.active and @item_max > 0 and @index >= 0 and
self.contents.height / 32 > (self.height - 32) / 32
# 方向ボタンの下が押された場合
if Input.repeat?(Input::DOWN)
# 列数が 1 かつ 方向ボタンの下の押下状態がリピートでない場合か、
# またはカーソル位置が(項目数 - 列数)より前の場合
if (@column_max == 1 and Input.trigger?(Input::DOWN)) or
@index < @item_max - @column_max
# カーソルを下に移動
$game_system.se_play($data_system.cursor_se)
@index = (@index + @column_max) % @item_max
end
end
# 方向ボタンの上が押された場合
if Input.repeat?(Input::UP)
# 列数が 1 かつ 方向ボタンの上の押下状態がリピートでない場合か、
# またはカーソル位置が列数より後ろの場合
if (@column_max == 1 and Input.trigger?(Input::UP)) or
@index >= @column_max
# カーソルを上に移動
$game_system.se_play($data_system.cursor_se)
@index = (@index - @column_max + @item_max) % @item_max
end
end
# 方向ボタンの右が押された場合
if Input.repeat?(Input::RIGHT)
# 表示されている最後尾の行が、データ上の最後の行よりも前の場合
if self.top_row + (self.page_row_max - 1) < (self.row_max - 1)
# カーソルを 1 ページ後ろに移動
$game_system.se_play($data_system.cursor_se)
@index = [@index + self.page_item_max, @item_max - 1].min
self.top_row += self.page_row_max
end
end
# 方向ボタンの左が押された場合
if Input.repeat?(Input::LEFT)
# 表示されている先頭の行が 0 より後ろの場合
if self.top_row > 0
# カーソルを 1 ページ前に移動
$game_system.se_play($data_system.cursor_se)
@index = [@index - self.page_item_max, 0].max
self.top_row -= self.page_row_max
end
end
end
# ヘルプテキストを更新 (update_help は継承先で定義される)
if self.active and @help_window != nil
update_help
end
# カーソルの矩形を更新
update_cursor_rect
end
end
class Window_Questdiary_Select < Window_Selectable
attr_reader :data
#--------------------------------------------------------------------------
# ● オブジェクト初期化
#--------------------------------------------------------------------------
def initialize
super(0, 64, 640, 416)
@column_max = 2
data_set
@item_max = @data.size
self.index = 0
refresh
end
def data_set
@data = []
@diary_data = [0]
for i in 1..QUESTDIARY_DATA_MAX
@diary_data[i] = Data_Questdiary.new(i)
@data.push(@diary_data[i]) if @diary_data[i].exist
end
end
#--------------------------------------------------------------------------
# ● 日記データ取得
#--------------------------------------------------------------------------
def diary
return @data[self.index]
end
#--------------------------------------------------------------------------
# ● リフレッシュ
#--------------------------------------------------------------------------
def refresh
if self.contents != nil
self.contents.dispose
self.contents = nil
end
#項目数が 0 でなければビットマップを作成し、全項目を描画
return if @item_max == 0
self.contents = Bitmap.new(width - 32, row_max * 32)
for i in 0...@item_max
draw_item(i)
end
end
def draw_item(index)
item = @data[index]
x = 4 + index % 2 * (288 + 32)
y = index / 2 * 32
rect = Rect.new(x, y, self.width / @column_max - 32, 32)
self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
self.contents.font.color = normal_color
self.contents.draw_text(x, y, 32, 32, item.id.to_s)
if item.title_visible?
diary_title = transfer(item.title)
self.contents.draw_text(x+48, y, 212, 32, diary_title, 0)
else
self.contents.draw_text(x+48, y, 212, 32, "-----", 0)
end
end
end
class Window_Questdiary_Info < Window_Scroll
#--------------------------------------------------------------------------
# ● オブジェクト初期化
#--------------------------------------------------------------------------
def initialize
super(0, 64, 640, 416)
self.contents = Bitmap.new(width - 32, height - 32)
end
#--------------------------------------------------------------------------
# ● リフレッシュ
#--------------------------------------------------------------------------
def refresh(comment)
self.index = 0
self.contents.dispose
contents_row = text_row(comment)
self.contents = Bitmap.new(width - 32, [contents_row * 32, self.height - 32].max)
@item_max = [(contents_row + 1 - (self.height - 32) / 32), 0].max
self.contents.font.color = normal_color
self.contents.font.size = 22
new_text = transfer(comment)
draw_ex_text(0, 0, new_text)
end
end
class Scene_Questdiary
#--------------------------------------------------------------------------
# ● メイン処理
#--------------------------------------------------------------------------
def main
# ウィンドウを作成
@title_window = Window_Base.new(0, 0, 640, 64)
@title_window.contents = Bitmap.new(640 - 32, 64 - 32)
@title_window.contents.draw_text(4, 0, 320, 32, "다이어리", 1)
@main_window = Window_Questdiary_Select.new
@main_window.active = true
# インフォウィンドウを作成 (不可視・非アクティブに設定)
@info_window = Window_Questdiary_Info.new
@info_window.z = 110
@info_window.visible = false
@info_window.active = false
@visible_index = 0
# トランジション実行
Graphics.transition
# メインループ
loop do
# ゲーム画面を更新
Graphics.update
# 入力情報を更新
Input.update
# フレーム更新
update
# 画面が切り替わったらループを中断
if $scene != self
break
end
end
# トランジション準備
Graphics.freeze
# ウィンドウを解放
@title_window.dispose
@main_window.dispose
@info_window.dispose
end
#--------------------------------------------------------------------------
# ● フレーム更新
#--------------------------------------------------------------------------
def update
# ウィンドウを更新
@main_window.update
@info_window.update
if @info_window.active
update_info
return
end
# メインウィンドウがアクティブの場合: update_target を呼ぶ
if @main_window.active
update_main
return
end
end
#--------------------------------------------------------------------------
# ● フレーム更新 (メインウィンドウがアクティブの場合)
#--------------------------------------------------------------------------
def update_main
# B ボタンが押された場合
if Input.trigger?(Input::B)
# キャンセル SE を演奏
$game_system.se_play($data_system.cancel_se)
$scene = Scene_Map.new
return
end
# C ボタンが押された場合
if Input.trigger?(Input::C)
if @main_window.diary.title_visible? == false
# ブザー SE を演奏
$game_system.se_play($data_system.buzzer_se)
return
end
# 決定 SE を演奏
$game_system.se_play($data_system.decision_se)
@main_window.active = false
@info_window.active = true
@info_window.visible = true
@visible_index = @main_window.index
@info_window.refresh(@main_window.diary.show_comment)
return
end
end
#--------------------------------------------------------------------------
# ● フレーム更新 (インフォウィンドウがアクティブの場合)
#--------------------------------------------------------------------------
def update_info
# B ボタンが押された場合
if Input.trigger?(Input::B)
# キャンセル SE を演奏
$game_system.se_play($data_system.cancel_se)
@main_window.active = true
@info_window.active = false
@info_window.visible = false
return
end
# C ボタンが押された場合
if Input.trigger?(Input::C)
return
# 決定 SE を演奏
$game_system.se_play($data_system.decision_se)
if @comment_on
@comment_on = false
@comment_window.visible = false
else
@comment_on = true
@comment_window.visible = true
end
return
end
if Input.trigger?(Input::L)
# 決定 SE を演奏
$game_system.se_play($data_system.decision_se)
loop_end = false
while loop_end == false
if @visible_index != 0
@visible_index -= 1
else
@visible_index = @main_window.data.size - 1
end
loop_end = true if @main_window.data[@visible_index].title_visible?
end
diary = @main_window.data[@visible_index]
@info_window.refresh(diary.show_comment)
return
end
if Input.trigger?(Input::R)
# 決定 SE を演奏
$game_system.se_play($data_system.decision_se)
loop_end = false
while loop_end == false
if @visible_index != @main_window.data.size - 1
@visible_index += 1
else
@visible_index = 0
end
loop_end = true if @main_window.data[@visible_index].title_visible?
end
diary = @main_window.data[@visible_index]
@info_window.refresh(diary.show_comment)
return
end
end
end
========================================
음... 사용법은... 의외로 간단합니다 -ㅇ-;
대충 제가 필요한 부분까지 번역기를 돌려놨기때문에....
일단 ● メイン処理 이 부분을 찾습니다.
@title_window.contents.draw_text(4, 0, 320, 32, "다이어리", 1)
그리고 이 부분에서 다이어리를 원하는걸로 바꿉니다.
퀘스트 다이어리창을 띄웠을때 위쪽에 표시되는 텍스트입니다.
그리고 중요한건 이 다음 부분입니다.
퀘스트 다이어리는 직접 써줘야한다는 단점이 있습니다만...
몇번 써보면 쉽게 사용하실수 있으실겁니다.
when 1 # ID
@title = "편지의 내용" # 퀘스트 제목
@variable = 12 # 출현 조건(스위치나 변수 번호)
@comment[0] = <<-EOS#내용 시작 EOS지우면 안됩니다!
편지의 내용을 읽어보았다.
편지의 내용으로 보아 누군가가 잊어버린것 같았다.
이 편지의 주인은 누구일까?
EOS
# 여기까지
@variable_max = @comment.size
@exist = true # 존재 플러그 true으로 해 풀어 주세요
when 2 # ID
@title = "길드의뢰 : 몬스터 퇴치" # 퀘스트 제목
@variable = 5011 # 출현 조건(스위치나 변수 번호)
@comment[0] = <<-EOS#내용 시작 EOS지우면 안됩니다!
길드의뢰 : 몬스터 퇴치
길드장소 : \V[5011]
급수 : \V[5012]
수 : \V[5013]
현재진행상황 : \V[5014]/\V[5013]
EOS
# 여기까지
@variable_max = @comment.size
@exist = true # 존재 플러그 true으로 해 풀어 주세요
이 부분을 보시면 아시겠지만 when 1, when 2 두가지로 나뉘어있죠?
@title 이건 퀘스트 제목입니다.
@variable 이건 출현 조건이죠, 변수나 스위치가 0이나 OFF이외의 것일때 출현합니다.
그리고 퀘스트내용은 EOS안쪽...
그러니까 아래처럼 되어있다면
길드의뢰 : 몬스터 퇴치
길드장소 : \V[5011]
급수 : \V[5012]
수 : \V[5013]
현재진행상황 : \V[5014]/\V[5013]
대충 화면은 이렇게 나옵니다.
==========================
다이어리 타이틀
==========================
길드의뢰 : 몬스터 퇴치
길드장소 : 변수5011번의 값
급수 : 변수5012번의 값
수 : 변수5013번의 값
현재진행상황 : 변수5014번의값/변수5013번의값
==========================
굳이 예를들자면... 이정도일까요?
<<-EOS
◆
EOS
◆이 부분이 퀘스트의 내용을 쓰는곳이고,
EOS는 지우면 안됩니다. 그리고 가장 중요한건 when이 현재 2개있죠?
하나를 추가시킬려면 다음건 일단 when 2부터 end 이전줄까지
when 2
.
.
.
@exist = true # 존재 플러그 true으로 해 풀어 주세요
여기까지 드래그하시고, 복사후
주석 끝에서 엔터를 한방 처줍니다. 그럼 새 줄이생기죠?
앞에 공백을 지우고 붙여넣기를합니다.
그리고 when을 다음숫자로바꿉니다. 현재 2까지있으니 다음번호는
3이죠?
그리고 출현조건을 적당히 바꿔줍니다. 현재 변수의 설정으로 되어있습니다. 그리고 그 설정을 바꾸려면 위쪽에서
VISIBLE_JUDGE_MODE = 1
이 부분을 찾습니다. 0이면 스위치를 출현조건으로 하는것이고
1이면 변수를 출현조건으로 합니다.
밑에 스위치는 뭐가 안된다고해서... 그냥 변수를 쓰시기 바랍니다.
뭐... 좀 복잡하지만... 잘 생각해보면 간단한겁니다.
1. when부터 end이전줄까지 카피한다.
2. when X의 X다음 값으로 바꾼다. ( 중복은... 잘 모르겟음; )
3. @title의 값과 @variable의 값을 바꾼다.
4. EOS안쪽의 퀘스트 내용을 바꿔준다.
그리고 가장 마지막에는... 맨 윗줄에
QUESTDIARY_DATA_MAX = 100 # 일기 데이터의 최대 수
이걸 바꾸는겁니다 -ㅇ-; 이게 만으면 뜨는속도가 좀 느려지더군요.
정확하게 when 번호를 맞추어주시면 될겁니다.
음... 그리고 맨 위쪽에 주석이 있죠?
# N[n] ID n번의 액터의 이름을 표시합니다.
# V[n] 변수 n번의 가격을 표시합니다.
# C[n] 문자 색상을 변경합니다.
# G 현재의 소지금을 표시합니다.
# O[n] 불투명도를 변경합니다.(0~255)
# H[n] font size을 변경합니다.(6~32)
# R[본문, 루비] 루비 첨부의 글을 표시합니다.
# Pic[x, y, file name] picture에 인포트 된 화상을 표시합니다.
#
# 일기의 내용을 설정할 때는 「\ n[1]」와 같이
# 「」을 1개 여분으로 붙여 주세요.
퀘스트 내용을 쓸때 를 여분으로 한개 더 넣어달라는게 무슨말이냐면
위에서 \V[5011] 이런것과 같이 앞에 하나를
더 넣어줘야한다는겁니다. 음... 대충 몇번 둘러보시고
외우신후 퀘스트 내용을 쓰시기 바랍니다.
개시기는 $scene = Scene_Questdiary.new 입니다.
복사 -> 붙여넣기 하시면됩니다.
====================================
# 모험일기
#
# 단지 단지 글을 묘화 할 뿐이기 때문에 일기 이외에도 사용할 수 있을 지도 모릅니다.
# 사용할 수 있는 제어 문자는 이하의 거리.
#
# N[n] ID n번의 액터의 이름을 표시합니다.
# V[n] 변수 n번의 가격을 표시합니다.
# C[n] 문자 색상을 변경합니다.
# G 현재의 소지금을 표시합니다.
# O[n] 불투명도를 변경합니다.(0~255)
# H[n] font size을 변경합니다.(6~32)
# R[본문, 루비] 루비 첨부의 글을 표시합니다.
# Pic[x, y, file name] picture에 인포트 된 화상을 표시합니다.
#
# 일기의 내용을 설정할 때는 「\ n[1]」와 같이
# 「」을 1개 여분으로 붙여 주세요.
#
# 샘플을 여러가지 고집이라고 보면, 알기 쉽다고 생각합니다.
class Window_Questdiary_Select < Window_Selectable
QUESTDIARY_DATA_MAX = 100 # 일기 데이터의 최대 수
end
class Data_Questdiary
VISIBLE_JUDGE_MODE = 1
# VISIBLE_ JUDGE_ MODE = 1
# 출현판정으로 스위치를 사용할 지 변수를 사용할 지 0: 스위치 1:변수
# 스위치로 하면, 1개의 항목에 복수의 메세지를
# 설정할 수 없게 됩니다.
attr_reader :exist
attr_reader :title
attr_reader :id
#--------------------------------------------------------------------------
# ● 오브젝트 초기화
#--------------------------------------------------------------------------
def initialize(id)
@id = id
@title = "타이틀" # 데호루토 타이틀 (보통 사용하지 않는다)
@variable = 0
@variable_max = 1
@comment = []
@exist = false
set_data(id)
end
#--------------------------------------------------------------------------
# ● 일기내용의 설정 # 직접 써준다.
#--------------------------------------------------------------------------
def set_data(id)
@id = id
case @id
when 1 # ID
@title = "편지의 내용" # 퀘스트 제목
@variable = 12 # 출현 조건(스위치나 변수 번호)
@comment[0] = <<-EOS#내용 시작 EOS지우면 안됩니다!
편지의 내용을 읽어보았다.
편지의 내용으로 보아 누군가가 잊어버린것 같았다.
이 편지의 주인은 누구일까?
EOS
# 여기까지
@variable_max = @comment.size
@exist = true # 존재 플러그 true으로 해 풀어 주세요
when 2 # ID
@title = "길드의뢰 : 몬스터 퇴치" # 퀘스트 제목
@variable = 5011 # 출현 조건(스위치나 변수 번호)
@comment[0] = <<-EOS#내용 시작 EOS지우면 안됩니다!
길드의뢰 : 몬스터 퇴치
길드장소 : \V[5011]
급수 : \V[5012]
수 : \V[5013]
현재진행상황 : \V[5014]/\V[5013]
EOS
# 여기까지
@variable_max = @comment.size
@exist = true # 존재 플러그 true으로 해 풀어 주세요
end
end
#--------------------------------------------------------------------------
# ● 일기내용을 돌려준다
#--------------------------------------------------------------------------
def show_comment
return @comment[0] if VISIBLE_JUDGE_MODE == 0
if @comment.size == 1
return @comment[0]
else
temp = [[$game_variables[@variable]-1, 0].max, @variable_max-1].min
return @comment[temp]
end
end
#--------------------------------------------------------------------------
# ● 일기 출현판정
#--------------------------------------------------------------------------
def title_visible?
return true if @variable == 0
if VISIBLE_JUDGE_MODE == 0
if $game_switches[@variable]
return true
else
return false
end
else
if $game_variables[@variable] == 0
return false
else
return true
end
end
end
end
class Window_Base < Window
#--------------------------------------------------------------------------
# ● 문자열변환
#--------------------------------------------------------------------------
def transfer(str)
text = str.clone
# 제어 문자처리
begin
text.gsub!(/\[Vv][([0-9]+)]/) { $game_variables[$1.to_i] }
end
text.gsub!(/\[Nn][([0-9]+)]/) do
$game_actors[$1.to_i] != nil ? $game_actors[$1.to_i].name : ""
end
# 편의상, "\\" 와 " 00"의 변환
text.gsub!(/\\/) { " 00" }
# "\C"을 " 01"에, "\G"와 " 02"에 변환
text.gsub!(/\[Cc][([0-9]+)]/) { " 01[#{$1}]" }
text.gsub!(/\[Gg]/) { " 02" }
# 불투명도
text.gsub!(/\[Oo][([0-9]+)]/) { "100[#{$1}]" }
# 문자 크기
text.gsub!(/\[Hh][([0-9]+)]/) { "101[#{$1}]" }
# 루비
text.gsub!(/\[Rr][(.+?),(.+?)]/) { "102[#{$1},#{$2}]" }
# 그림 표시
text.gsub!(/\[Pp]ic[([0-9]+),([0-9]+),([^,]]+)]/) { "150[#{$1},#{$2},#{$3}]" }
return text
end
#--------------------------------------------------------------------------
# ● 변환한 문자열을 묘화
#--------------------------------------------------------------------------
def draw_ex_text(ox, oy, str, align=0)
text = str.clone
x = 0
y = 0
# c에 1문자를 취득(글을 취득할 수 없게 될 때까지 루프)
while ((c = text.slice!(/./m)) != nil)
# \ 의 경우
if c == " 00"
# 본래의 글에 되돌려 준다.
c = "\"
end
# C[n] 의 경우
if c == " 01"
# 글색을 변경
text.sub!(/[([0-9]+)]/, "")
color = $1.to_i
if color >= 0 and color <= 7
self.contents.font.color = text_color(color)
end
# 다음의 글에
next
end
# G 의 경우
if c == " 02"
# 소지 골드에 변환
c = $game_party.gold.to_s
# 글을 묘화
self.contents.draw_text(ox+4+x, oy+4+ 32 * y, self.contents.text_size(c).width, 32, c)
# x에 묘화 한 글의 폭을 가산
x += self.contents.text_size(c).width
# 다음의 글에
next
end
# O 의 경우
if c == "100"
text.sub!(/[([0-9]+)]/, "")
opacity = $1.to_i
temp = self.contents.font.color
self.contents.font.color = Color.new(temp.red, temp.green, temp.blue, opacity)
# 다음의 글에
next
end
# H 의 경우
if c == "101"
text.sub!(/[([0-9]+)]/, "")
self.contents.font.size = [[$1.to_i, 6].max, 32].min
# 다음의 글에
next
end
# R 의 경우
if c == "102"
text.sub!(/[(.+?),(.+?)]/, "")
x += ruby_set(ox+x,oy+(y*32),$1,$2)
# 다음의 글에
next
end
# Pic 의 경우
if c == "150"
text.sub!(/[([0-9]+),([0-9]+),([^,]]+)]/, "")
set_picture($1.to_i, $2.to_i, $3)
# 다음의 글에
next
end
# 개행 문자의 경우
if c == "n"
# y에 1을 가산
y += 1
x = 0
# 다음의 글에
next
end
# 글을 묘화
self.contents.draw_text(ox+4+x, 4+oy+ 32 * y, 40, 32, c)
# x에 묘화 한 글의 폭을 가산
x += self.contents.text_size(c).width
end
end
#--------------------------------------------------------------------------
# ● 루비 묘화
#--------------------------------------------------------------------------
def ruby_set(x,y,str,ruby)
text_w = self.contents.text_size(str).width
text_h = self.contents.text_size(str).height
f_size_back = self.contents.font.size
ruby_size = 10
self.contents.font.size = ruby_size
ruby_w = self.contents.text_size(ruby).width
self.contents.draw_text(4+x, 4+4+y-ruby_size+1, text_w, ruby_size, ruby, 1)
self.contents.font.size = f_size_back
self.contents.draw_text(4+x, 4+4+y, text_w, text_h, str)
return text_w
end
#--------------------------------------------------------------------------
# ● 그림의 묘화
#--------------------------------------------------------------------------
def set_picture(x, y, filename, opacity=255)
bitmap = RPG::Cache.picture(filename)
self.contents.blt(x, y, bitmap, bitmap.rect, opacity)
end
#--------------------------------------------------------------------------
# ● 교재의 행수를 되돌린다
#--------------------------------------------------------------------------
def text_row(str)
text = str.clone
num = 0
# c에 1문자를 취득(글을 취득할 수 없게 될 때까지 루프)
while ((c = text.slice!(/./m)) != nil)
# 개행 문자의 경우
if c == "n"
# num에 1을 가산
num += 1
# 다음의 글에
next
end
end
return num
end
end
#==============================================================================
# ■ Window_Scroll
#------------------------------------------------------------------------------
# 스크롤의 기능을 갖는 윈도우 클래스입니다.
#==============================================================================
class Window_Scroll < Window_Base
#--------------------------------------------------------------------------
# ● 공개 인스턴스 변수
#--------------------------------------------------------------------------
attr_reader :index # 커서의 위치
attr_reader :help_window # 헬프 윈도우
#--------------------------------------------------------------------------
# ● 오브젝트 초기화
# x : 윈도우의 X좌표
# y : 윈도우의 Y좌표
# width : 윈도우의 폭
# height : 윈도우의 높이
#--------------------------------------------------------------------------
def initialize(x, y, width, height)
super(x, y, width, height)
@item_max = 1
@column_max = 1
@index = 0
self.cursor_rect.empty
end
#--------------------------------------------------------------------------
# ● 커서의 위치 설정
# index : 새로운 커서의 위치
#--------------------------------------------------------------------------
def index=(index)
@index = index
# 헬프텍스트를 갱신(update_ help은 계승선에 정의된다)
#if self.active and @help_window != nil
# update_help
#end
# 커서의 직사각형을 갱신
update_cursor_rect
end
#--------------------------------------------------------------------------
# ● 행수의 취득
#--------------------------------------------------------------------------
def row_max
# 항목 수와 열 수에서 행수를 산출
return (@item_max + @column_max - 1) / @column_max
end
#--------------------------------------------------------------------------
# ● 선두의 행의 취득
#--------------------------------------------------------------------------
def top_row
# 윈도우 내용의 전송원Y좌표를, 1 행의 높이 32로 가른다
return self.oy / 32
end
#--------------------------------------------------------------------------
# ● 선두의 행의 설정
# row : 선두에 표시하는 행
#--------------------------------------------------------------------------
def top_row=(row)
# row が 0 未満の場合は 0 に修正
if row < 0
row = 0
end
# row が row_max - 1 超の場合は row_max - 1 に修正
if row > row_max - 1
row = row_max - 1
end
# row に 1 行の高さ 32 を掛け、ウィンドウ内容の転送元 Y 座標とする
self.oy = row * 32
end
#--------------------------------------------------------------------------
# ● 1 ページに表示できる行数の取得
#--------------------------------------------------------------------------
def page_row_max
# ウィンドウの高さから、フレームの高さ 32 を引き、1 行の高さ 32 で割る
return 1#(self.height - 32) / 32
end
#--------------------------------------------------------------------------
# ● 1 ページに表示できる項目数の取得
#--------------------------------------------------------------------------
def page_item_max
# 行数 page_row_max に 列数 @column_max を掛ける
return (self.height - 32) / 32#page_row_max #* @column_max
end
#--------------------------------------------------------------------------
# ● ヘルプウィンドウの設定
# help_window : 新しいヘルプウィンドウ
#--------------------------------------------------------------------------
def help_window=(help_window)
@help_window = help_window
# ヘルプテキストを更新 (update_help は継承先で定義される)
if self.active and @help_window != nil
update_help
end
end
#--------------------------------------------------------------------------
# ● カーソルの矩形更新
#--------------------------------------------------------------------------
def update_cursor_rect
# カーソル位置が 0 未満の場合
if @index < 0
self.cursor_rect.empty
return
end
# 現在の行を取得
row = @index #/ @column_max
# 現在の行が、表示されている先頭の行より前の場合
if row < self.top_row
# 現在の行が先頭になるようにスクロール
self.top_row = row
end
# 現在の行が、表示されている最後尾の行より後ろの場合
if row > self.top_row + (self.page_row_max - 1)
# 現在の行が最後尾になるようにスクロール
self.top_row = row - (self.page_row_max - 1)
end
# カーソルの幅を計算
#cursor_width = self.width / @column_max - 32
# カーソルの座標を計算
#x = @index % @column_max * (cursor_width + 32)
#y = @index / @column_max * 32 - self.oy
# カーソルの矩形を更新
#self.cursor_rect.set(x, y, cursor_width, 32)
end
#--------------------------------------------------------------------------
# ● フレーム更新
#--------------------------------------------------------------------------
def update
super
# カーソルの移動が可能な状態の場合
if self.active and @item_max > 0 and @index >= 0 and
self.contents.height / 32 > (self.height - 32) / 32
# 方向ボタンの下が押された場合
if Input.repeat?(Input::DOWN)
# 列数が 1 かつ 方向ボタンの下の押下状態がリピートでない場合か、
# またはカーソル位置が(項目数 - 列数)より前の場合
if (@column_max == 1 and Input.trigger?(Input::DOWN)) or
@index < @item_max - @column_max
# カーソルを下に移動
$game_system.se_play($data_system.cursor_se)
@index = (@index + @column_max) % @item_max
end
end
# 方向ボタンの上が押された場合
if Input.repeat?(Input::UP)
# 列数が 1 かつ 方向ボタンの上の押下状態がリピートでない場合か、
# またはカーソル位置が列数より後ろの場合
if (@column_max == 1 and Input.trigger?(Input::UP)) or
@index >= @column_max
# カーソルを上に移動
$game_system.se_play($data_system.cursor_se)
@index = (@index - @column_max + @item_max) % @item_max
end
end
# 方向ボタンの右が押された場合
if Input.repeat?(Input::RIGHT)
# 表示されている最後尾の行が、データ上の最後の行よりも前の場合
if self.top_row + (self.page_row_max - 1) < (self.row_max - 1)
# カーソルを 1 ページ後ろに移動
$game_system.se_play($data_system.cursor_se)
@index = [@index + self.page_item_max, @item_max - 1].min
self.top_row += self.page_row_max
end
end
# 方向ボタンの左が押された場合
if Input.repeat?(Input::LEFT)
# 表示されている先頭の行が 0 より後ろの場合
if self.top_row > 0
# カーソルを 1 ページ前に移動
$game_system.se_play($data_system.cursor_se)
@index = [@index - self.page_item_max, 0].max
self.top_row -= self.page_row_max
end
end
end
# ヘルプテキストを更新 (update_help は継承先で定義される)
if self.active and @help_window != nil
update_help
end
# カーソルの矩形を更新
update_cursor_rect
end
end
class Window_Questdiary_Select < Window_Selectable
attr_reader :data
#--------------------------------------------------------------------------
# ● オブジェクト初期化
#--------------------------------------------------------------------------
def initialize
super(0, 64, 640, 416)
@column_max = 2
data_set
@item_max = @data.size
self.index = 0
refresh
end
def data_set
@data = []
@diary_data = [0]
for i in 1..QUESTDIARY_DATA_MAX
@diary_data[i] = Data_Questdiary.new(i)
@data.push(@diary_data[i]) if @diary_data[i].exist
end
end
#--------------------------------------------------------------------------
# ● 日記データ取得
#--------------------------------------------------------------------------
def diary
return @data[self.index]
end
#--------------------------------------------------------------------------
# ● リフレッシュ
#--------------------------------------------------------------------------
def refresh
if self.contents != nil
self.contents.dispose
self.contents = nil
end
#項目数が 0 でなければビットマップを作成し、全項目を描画
return if @item_max == 0
self.contents = Bitmap.new(width - 32, row_max * 32)
for i in 0...@item_max
draw_item(i)
end
end
def draw_item(index)
item = @data[index]
x = 4 + index % 2 * (288 + 32)
y = index / 2 * 32
rect = Rect.new(x, y, self.width / @column_max - 32, 32)
self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
self.contents.font.color = normal_color
self.contents.draw_text(x, y, 32, 32, item.id.to_s)
if item.title_visible?
diary_title = transfer(item.title)
self.contents.draw_text(x+48, y, 212, 32, diary_title, 0)
else
self.contents.draw_text(x+48, y, 212, 32, "-----", 0)
end
end
end
class Window_Questdiary_Info < Window_Scroll
#--------------------------------------------------------------------------
# ● オブジェクト初期化
#--------------------------------------------------------------------------
def initialize
super(0, 64, 640, 416)
self.contents = Bitmap.new(width - 32, height - 32)
end
#--------------------------------------------------------------------------
# ● リフレッシュ
#--------------------------------------------------------------------------
def refresh(comment)
self.index = 0
self.contents.dispose
contents_row = text_row(comment)
self.contents = Bitmap.new(width - 32, [contents_row * 32, self.height - 32].max)
@item_max = [(contents_row + 1 - (self.height - 32) / 32), 0].max
self.contents.font.color = normal_color
self.contents.font.size = 22
new_text = transfer(comment)
draw_ex_text(0, 0, new_text)
end
end
class Scene_Questdiary
#--------------------------------------------------------------------------
# ● メイン処理
#--------------------------------------------------------------------------
def main
# ウィンドウを作成
@title_window = Window_Base.new(0, 0, 640, 64)
@title_window.contents = Bitmap.new(640 - 32, 64 - 32)
@title_window.contents.draw_text(4, 0, 320, 32, "다이어리", 1)
@main_window = Window_Questdiary_Select.new
@main_window.active = true
# インフォウィンドウを作成 (不可視・非アクティブに設定)
@info_window = Window_Questdiary_Info.new
@info_window.z = 110
@info_window.visible = false
@info_window.active = false
@visible_index = 0
# トランジション実行
Graphics.transition
# メインループ
loop do
# ゲーム画面を更新
Graphics.update
# 入力情報を更新
Input.update
# フレーム更新
update
# 画面が切り替わったらループを中断
if $scene != self
break
end
end
# トランジション準備
Graphics.freeze
# ウィンドウを解放
@title_window.dispose
@main_window.dispose
@info_window.dispose
end
#--------------------------------------------------------------------------
# ● フレーム更新
#--------------------------------------------------------------------------
def update
# ウィンドウを更新
@main_window.update
@info_window.update
if @info_window.active
update_info
return
end
# メインウィンドウがアクティブの場合: update_target を呼ぶ
if @main_window.active
update_main
return
end
end
#--------------------------------------------------------------------------
# ● フレーム更新 (メインウィンドウがアクティブの場合)
#--------------------------------------------------------------------------
def update_main
# B ボタンが押された場合
if Input.trigger?(Input::B)
# キャンセル SE を演奏
$game_system.se_play($data_system.cancel_se)
$scene = Scene_Map.new
return
end
# C ボタンが押された場合
if Input.trigger?(Input::C)
if @main_window.diary.title_visible? == false
# ブザー SE を演奏
$game_system.se_play($data_system.buzzer_se)
return
end
# 決定 SE を演奏
$game_system.se_play($data_system.decision_se)
@main_window.active = false
@info_window.active = true
@info_window.visible = true
@visible_index = @main_window.index
@info_window.refresh(@main_window.diary.show_comment)
return
end
end
#--------------------------------------------------------------------------
# ● フレーム更新 (インフォウィンドウがアクティブの場合)
#--------------------------------------------------------------------------
def update_info
# B ボタンが押された場合
if Input.trigger?(Input::B)
# キャンセル SE を演奏
$game_system.se_play($data_system.cancel_se)
@main_window.active = true
@info_window.active = false
@info_window.visible = false
return
end
# C ボタンが押された場合
if Input.trigger?(Input::C)
return
# 決定 SE を演奏
$game_system.se_play($data_system.decision_se)
if @comment_on
@comment_on = false
@comment_window.visible = false
else
@comment_on = true
@comment_window.visible = true
end
return
end
if Input.trigger?(Input::L)
# 決定 SE を演奏
$game_system.se_play($data_system.decision_se)
loop_end = false
while loop_end == false
if @visible_index != 0
@visible_index -= 1
else
@visible_index = @main_window.data.size - 1
end
loop_end = true if @main_window.data[@visible_index].title_visible?
end
diary = @main_window.data[@visible_index]
@info_window.refresh(diary.show_comment)
return
end
if Input.trigger?(Input::R)
# 決定 SE を演奏
$game_system.se_play($data_system.decision_se)
loop_end = false
while loop_end == false
if @visible_index != @main_window.data.size - 1
@visible_index += 1
else
@visible_index = 0
end
loop_end = true if @main_window.data[@visible_index].title_visible?
end
diary = @main_window.data[@visible_index]
@info_window.refresh(diary.show_comment)
return
end
end
end
========================================
음... 사용법은... 의외로 간단합니다 -ㅇ-;
대충 제가 필요한 부분까지 번역기를 돌려놨기때문에....
일단 ● メイン処理 이 부분을 찾습니다.
@title_window.contents.draw_text(4, 0, 320, 32, "다이어리", 1)
그리고 이 부분에서 다이어리를 원하는걸로 바꿉니다.
퀘스트 다이어리창을 띄웠을때 위쪽에 표시되는 텍스트입니다.
그리고 중요한건 이 다음 부분입니다.
퀘스트 다이어리는 직접 써줘야한다는 단점이 있습니다만...
몇번 써보면 쉽게 사용하실수 있으실겁니다.
when 1 # ID
@title = "편지의 내용" # 퀘스트 제목
@variable = 12 # 출현 조건(스위치나 변수 번호)
@comment[0] = <<-EOS#내용 시작 EOS지우면 안됩니다!
편지의 내용을 읽어보았다.
편지의 내용으로 보아 누군가가 잊어버린것 같았다.
이 편지의 주인은 누구일까?
EOS
# 여기까지
@variable_max = @comment.size
@exist = true # 존재 플러그 true으로 해 풀어 주세요
when 2 # ID
@title = "길드의뢰 : 몬스터 퇴치" # 퀘스트 제목
@variable = 5011 # 출현 조건(스위치나 변수 번호)
@comment[0] = <<-EOS#내용 시작 EOS지우면 안됩니다!
길드의뢰 : 몬스터 퇴치
길드장소 : \V[5011]
급수 : \V[5012]
수 : \V[5013]
현재진행상황 : \V[5014]/\V[5013]
EOS
# 여기까지
@variable_max = @comment.size
@exist = true # 존재 플러그 true으로 해 풀어 주세요
이 부분을 보시면 아시겠지만 when 1, when 2 두가지로 나뉘어있죠?
@title 이건 퀘스트 제목입니다.
@variable 이건 출현 조건이죠, 변수나 스위치가 0이나 OFF이외의 것일때 출현합니다.
그리고 퀘스트내용은 EOS안쪽...
그러니까 아래처럼 되어있다면
길드의뢰 : 몬스터 퇴치
길드장소 : \V[5011]
급수 : \V[5012]
수 : \V[5013]
현재진행상황 : \V[5014]/\V[5013]
대충 화면은 이렇게 나옵니다.
==========================
다이어리 타이틀
==========================
길드의뢰 : 몬스터 퇴치
길드장소 : 변수5011번의 값
급수 : 변수5012번의 값
수 : 변수5013번의 값
현재진행상황 : 변수5014번의값/변수5013번의값
==========================
굳이 예를들자면... 이정도일까요?
<<-EOS
◆
EOS
◆이 부분이 퀘스트의 내용을 쓰는곳이고,
EOS는 지우면 안됩니다. 그리고 가장 중요한건 when이 현재 2개있죠?
하나를 추가시킬려면 다음건 일단 when 2부터 end 이전줄까지
when 2
.
.
.
@exist = true # 존재 플러그 true으로 해 풀어 주세요
여기까지 드래그하시고, 복사후
주석 끝에서 엔터를 한방 처줍니다. 그럼 새 줄이생기죠?
앞에 공백을 지우고 붙여넣기를합니다.
그리고 when을 다음숫자로바꿉니다. 현재 2까지있으니 다음번호는
3이죠?
그리고 출현조건을 적당히 바꿔줍니다. 현재 변수의 설정으로 되어있습니다. 그리고 그 설정을 바꾸려면 위쪽에서
VISIBLE_JUDGE_MODE = 1
이 부분을 찾습니다. 0이면 스위치를 출현조건으로 하는것이고
1이면 변수를 출현조건으로 합니다.
밑에 스위치는 뭐가 안된다고해서... 그냥 변수를 쓰시기 바랍니다.
뭐... 좀 복잡하지만... 잘 생각해보면 간단한겁니다.
1. when부터 end이전줄까지 카피한다.
2. when X의 X다음 값으로 바꾼다. ( 중복은... 잘 모르겟음; )
3. @title의 값과 @variable의 값을 바꾼다.
4. EOS안쪽의 퀘스트 내용을 바꿔준다.
그리고 가장 마지막에는... 맨 윗줄에
QUESTDIARY_DATA_MAX = 100 # 일기 데이터의 최대 수
이걸 바꾸는겁니다 -ㅇ-; 이게 만으면 뜨는속도가 좀 느려지더군요.
정확하게 when 번호를 맞추어주시면 될겁니다.
음... 그리고 맨 위쪽에 주석이 있죠?
# N[n] ID n번의 액터의 이름을 표시합니다.
# V[n] 변수 n번의 가격을 표시합니다.
# C[n] 문자 색상을 변경합니다.
# G 현재의 소지금을 표시합니다.
# O[n] 불투명도를 변경합니다.(0~255)
# H[n] font size을 변경합니다.(6~32)
# R[본문, 루비] 루비 첨부의 글을 표시합니다.
# Pic[x, y, file name] picture에 인포트 된 화상을 표시합니다.
#
# 일기의 내용을 설정할 때는 「\ n[1]」와 같이
# 「」을 1개 여분으로 붙여 주세요.
퀘스트 내용을 쓸때 를 여분으로 한개 더 넣어달라는게 무슨말이냐면
위에서 \V[5011] 이런것과 같이 앞에 하나를
더 넣어줘야한다는겁니다. 음... 대충 몇번 둘러보시고
외우신후 퀘스트 내용을 쓰시기 바랍니다.
개시기는 $scene = Scene_Questdiary.new 입니다.