http://cafe.daum.net/rpgmake2003verhttp://f44.aaa.livedoor.jp/~ytomy/#http://f44.aaa.livedoor.jp/~ytomy/제공
#도움말 탑재 및 한글번역:ケロロ 님의 ツク-ル 닉네임 주소: http://nioting.com/
# 하람(RPGツク-ル) 닉네임 주소: http://cafe.daum.net/rpgmake2003ver
#보관소를 부르려면 , 이벤트 커멘드 「스크립트」로
# call_depository
#를 실행합니다.
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
#_/ ◆보관소 - KGC_Depository◆
#_/----------------------------------------------------------------------------
#_/ 아이템이나 소지금을 맡길 수가 있는 가게를 작성합니다.
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
#==============================================================================
# ★ 커스터마이즈 항목 ★
#==============================================================================
module KGC
# ◆조작 윈도우의 커멘드명
DEPOSITORY_COMMAND = [
"돈을 맡기는", # 돈을 맡기는
"돈을 인출하는", # 돈을 인출하는
"아이템을 맡기는", # 아이템을 맡기는
"아이템을 꺼내는" # 아이템을 꺼내는
]
# ◆조작 윈도우의 헬프
DEPOSITORY_HELP = [
"돈을 맡깁니다. ", # 돈을 맡기는
"맡긴 돈을 인출합니다. ", # 돈을 인출하는
"아이템을 맡깁니다. ", # 아이템을 맡기는
"맡긴 아이템을 꺼냅니다. " # 아이템을 꺼내는
]
# ◆금액 지정의 자리수
DEPOSITORY_GOLD_DIGITS = 8
# ◆골드를 맡길 때의 메세지(헬프 윈도우)
DEPOSIT_GOLD = "맡기는 금액을 입력해 주세요. "
# ◆골드를 꺼낼 때의 메세지(헬프 윈도우)
WDEPOSIT_GOLD = "꺼내는 금액을 입력해 주세요. "
# ◆아이템을 맡길 때의 메세지(개수 윈도우)
DEPOSIT_ITEM = "몇개 맡깁니까? "
# ◆아이템을 꺼낼 때의 메세지(개수 윈도우)
WDEPOSIT_ITEM = "몇개 꺼냅니까? "
end
#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
$imported = {} if $imported == nil
$imported["Depository"] = true
#--------------------------------------------------------------------------
# ● 보관소 호출
#--------------------------------------------------------------------------
def call_depository
# 플레이어의 자세를 교정
$game_player.straighten
# 보관소 화면으로 전환하고
$scene = Scene_Depository.new
end
#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
#==============================================================================
# ■ Game_Party
#==============================================================================
class Game_Party
#--------------------------------------------------------------------------
# ● 오브젝트 초기화
#--------------------------------------------------------------------------
alias initialize_KGC_Depository initialize
def initialize
# 원의 처리를 실행
initialize_KGC_Depository
@deposit_gold = 0
@deposit_item, @deposit_weapon, @deposit_armor = [], [], []
end
#--------------------------------------------------------------------------
# ● 맡긴 금취득
#--------------------------------------------------------------------------
def deposit_gold
@deposit_gold = 0 if @deposit_gold == nil
return @deposit_gold
end
#--------------------------------------------------------------------------
# ● 맡긴 금증가
# number : 증가량
#--------------------------------------------------------------------------
def gain_deposit_gold(number)
@deposit_gold = 0 if @deposit_gold == nil
@deposit_gold += number
end
#--------------------------------------------------------------------------
# ● 맡긴 금감소
# number : 감소량
#--------------------------------------------------------------------------
def lose_deposit_gold(number)
self.gain_deposit_gold(-number)
end
#--------------------------------------------------------------------------
# ● 맡긴 아이템 취득
# id : ID
#--------------------------------------------------------------------------
def deposit_item_number(id)
@deposit_item = [] if @deposit_item == nil
return @deposit_item[id] != nil ? @deposit_item[id] : 0
end
#--------------------------------------------------------------------------
# ● 맡긴 아이템 증가
# id : ID
# number : 개수
#--------------------------------------------------------------------------
def gain_deposit_item(id, number)
@deposit_item = [] if @deposit_item == nil
@deposit_item[id] = 0 if @deposit_item[id] == nil
@deposit_item[id] += number
end
#--------------------------------------------------------------------------
# ● 맡긴 아이템 감소
# id : ID
# number : 개수
#--------------------------------------------------------------------------
def lose_deposit_item(id, number)
self.gain_deposit_item(id, -number)
end
#--------------------------------------------------------------------------
# ● 맡긴 무기 취득
# id : ID
#--------------------------------------------------------------------------
def deposit_weapon_number(id)
@deposit_weapon = [] if @deposit_weapon == nil
return @deposit_weapon[id] != nil ? @deposit_weapon[id] : 0
end
#--------------------------------------------------------------------------
# ● 맡긴 무기 증가
# id : ID
# number : 개수
#--------------------------------------------------------------------------
def gain_deposit_weapon(id, number)
@deposit_weapon = [] if @deposit_weapon == nil
@deposit_weapon[id] = 0 if @deposit_weapon[id] == nil
@deposit_weapon[id] += number
end
#--------------------------------------------------------------------------
# ● 맡긴 무기 감소
# id : ID
# number : 개수
#--------------------------------------------------------------------------
def lose_deposit_weapon(id, number)
self.gain_deposit_weapon(id, -number)
end
#--------------------------------------------------------------------------
# ● 맡긴 방어용 기구 취득
# id : ID
#--------------------------------------------------------------------------
def deposit_armor_number(id)
@deposit_armor = [] if @deposit_armor == nil
return @deposit_armor[id] != nil ? @deposit_armor[id] : 0
end
#--------------------------------------------------------------------------
# ● 맡긴 방어용 기구 증가
# id : ID
# number : 개수
#--------------------------------------------------------------------------
def gain_deposit_armor(id, number)
@deposit_armor = [] if @deposit_armor == nil
@deposit_armor[id] = 0 if @deposit_armor[id] == nil
@deposit_armor[id] += number
end
#--------------------------------------------------------------------------
# ● 맡긴 방어용 기구 감소
# id : ID
# number : 개수
#--------------------------------------------------------------------------
def lose_deposit_armor(id, number)
self.gain_deposit_armor(id, -number)
end
end
#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
#==============================================================================
# ■ Window_DepositoryCommand
#------------------------------------------------------------------------------
# 보관소 화면에서 , 조작을 선택하는 윈도우입니다.
#==============================================================================
class Window_DepositoryCommand < Window_Selectable
#--------------------------------------------------------------------------
# ● 오브젝트 초기화
#--------------------------------------------------------------------------
def initialize
super(0, 64, 640, 64)
self.y = 128 if $imported["HelpExtension"]
self.contents = Bitmap.new(width - 32, height - 32)
# 커멘드 일람을 작성
@commands = KGC::DEPOSITORY_COMMAND
@item_max = @commands.size
@column_max = @commands.size
@item_width = (width - 32) / @commands.size
self.back_opacity = 160
self.index = 0
refresh
end
#--------------------------------------------------------------------------
# ● 리프레쉬
#--------------------------------------------------------------------------
def refresh
for i in 0...@commands.size
rect = Rect.new(@item_width * i, 0, @item_width, 32)
self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
self.contents.font.color = system_color
self.contents.draw_text(rect, @commands[i], 1)
end
end
#--------------------------------------------------------------------------
# ● 커서의 구형 갱신
#--------------------------------------------------------------------------
def update_cursor_rect
if index != -1
self.cursor_rect.set(@item_width * index, 0, @item_width, 32)
end
end
#--------------------------------------------------------------------------
# ● 헬프 텍스트 갱신
#--------------------------------------------------------------------------
def update_help
@help_window.set_text(KGC::DEPOSITORY_HELP[self.index])
end
end
#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
#==============================================================================
# ■ Window_DepositoryGold
#------------------------------------------------------------------------------
# 보관소 화면에서 , 금액을 입력하는 윈도우입니다.
#==============================================================================
class Window_DepositoryGold < Window_Base
#--------------------------------------------------------------------------
# ● 오브젝트 초기화
#--------------------------------------------------------------------------
def initialize
super(0, 128, 640, 352)
if $imported["HelpExtension"]
self.y = 192
self.height = 288
end
@digits_max = KGC::DEPOSITORY_GOLD_DIGITS
# 숫자의 폭으로부터 커서의 폭을 계산 (0~9 는 등폭과 가정)
dummy_bitmap = Bitmap.new(32, 32)
@cursor_width = dummy_bitmap.text_size("0").width + 8
dummy_bitmap.dispose
self.contents = Bitmap.new(width - 32, height - 32)
self.back_opacity = 160
self.active = false
self.visible = false
@cursor_position = 0
@max = 0
@price = 0
@index = 0
end
#--------------------------------------------------------------------------
# ● 입력된 금액의 취득
#--------------------------------------------------------------------------
def price
return @price
end
#--------------------------------------------------------------------------
# ● 금액의 설정
# np : 새로운 금액
#--------------------------------------------------------------------------
def price=(np)
@price = [[np, 0].max, @max].min
redraw_price
end
#--------------------------------------------------------------------------
# ● 리셋트
# type : 형식
#--------------------------------------------------------------------------
def reset(type)
@price = 0
@index = @digits_max - 1
refresh(type)
end
#--------------------------------------------------------------------------
# ● 리프레쉬
# type : 형식
#--------------------------------------------------------------------------
def refresh(type)
# 금액을 묘화
self.contents.clear
domination = $data_system.words.gold
cx = contents.text_size(domination).width
@cursor_position = 332 - cx - @cursor_width * @digits_max
self.contents.font.color = system_color
self.contents.draw_text(0, 0, 608, 32, "소지금")
self.contents.draw_text(0, 64, 608, 32, "예금잔고")
if type == 0
self.contents.draw_text(0, 128, 608, 32, "맡기는 금액")
@max = $game_party.gold
else
self.contents.draw_text(0, 128, 608, 32, "꺼내는 금액")
@max = [10 ** @digits_max - $game_party.gold - 1, $game_party.deposit_gold].min
end
self.contents.font.color = normal_color
self.contents.draw_text(4, 32, 326 - cx, 32, $game_party.gold.to_s, 2)
self.contents.font.color = system_color
self.contents.draw_text(332 - cx, 32, cx, 32, domination, 2)
self.contents.font.color = normal_color
self.contents.draw_text(4, 96, 326 - cx, 32, $game_party.deposit_gold.to_s, 2)
self.contents.font.color = system_color
self.contents.draw_text(332 - cx, 96, cx, 32, domination, 2)
redraw_price
end
#--------------------------------------------------------------------------
# ● 금액재 묘화
#--------------------------------------------------------------------------
def redraw_price
domination = $data_system.words.gold
cx = contents.text_size(domination).width
self.contents.fill_rect(0, 160, 608, 32, Color.new(0, 0, 0, 0))
self.contents.font.color = normal_color
text = sprintf("%0#{@digits_max}d", self.price)
for i in 0...text.length
x = @cursor_position + (i - 1) * @cursor_width
self.contents.draw_text(x, 160, 32, 32, text[i, 1], 2)
end
self.contents.font.color = system_color
self.contents.draw_text(332 - cx, 160, cx, 32, domination, 2)
end
#--------------------------------------------------------------------------
# ● 커서의 구형 갱신
#--------------------------------------------------------------------------
def update_cursor_rect
x = @cursor_position + @index * @cursor_width
self.cursor_rect.set(x, 160, @cursor_width, 32)
end
#--------------------------------------------------------------------------
# ● 프레임 갱신
#--------------------------------------------------------------------------
def update
super
return unless self.active
# 방향 버튼 위나 아래가 밀렸을 경우
if Input.repeat?(Input::UP) || Input.repeat?(Input::DOWN)
$game_system.se_play($data_system.cursor_se)
# 현재의 위의 숫자를 취득해 , 일단 0 으로 하는
place = 10 ** (@digits_max - 1 - @index)
n = self.price / place % 10
self.price -= n * place
# 위라면 +1, 아래라면 -1
n = (n + 1) % 10 if Input.repeat?(Input::UP)
n = (n + 9) % 10 if Input.repeat?(Input::DOWN)
# 현재의 위의 숫자를 재설정
self.price += n * place
end
# 커서 오른쪽
if Input.repeat?(Input::RIGHT)
if @digits_max >= 2
$game_system.se_play($data_system.cursor_se)
@index = (@index + 1) % @digits_max
end
end
# 커서왼쪽
if Input.repeat?(Input::LEFT)
if @digits_max >= 2
$game_system.se_play($data_system.cursor_se)
@index = (@index + @digits_max - 1) % @digits_max
end
end
update_cursor_rect
end
end
#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
#==============================================================================
# ■ Window_DepositoryItem
#------------------------------------------------------------------------------
# 보관소 화면에서 , 맡긴 아이템의 일람을 표시하는 윈도우입니다.
#==============================================================================
class Window_DepositoryItem < Window_Selectable
#--------------------------------------------------------------------------
# ● 오브젝트 초기화
#--------------------------------------------------------------------------
def initialize
super(0, 128, 640, 352)
if $imported["HelpExtension"]
self.y = 192
self.height = 288
end
self.back_opacity = 160
self.active = false
self.visible = false
@column_max = 2
self.index = 0
end
#--------------------------------------------------------------------------
# ● 아이템의 취득
#--------------------------------------------------------------------------
def item
return @data[self.index]
end
#--------------------------------------------------------------------------
# ● 리프레쉬
# type : 형식
#--------------------------------------------------------------------------
def refresh(type)
if self.contents != nil
self.contents.dispose
self.contents = nil
end
@data = []
self.index = 0
# 아이템·무기·방어용 기구를 추가
if type == 0
for i in 1...$data_items.size
if $game_party.item_number(i) > 0
@data.push($data_items[i])
end
end
for i in 1...$data_weapons.size
if $game_party.weapon_number(i) > 0
@data.push($data_weapons[i])
end
end
for i in 1...$data_armors.size
if $game_party.armor_number(i) > 0
@data.push($data_armors[i])
end
end
else
for i in 1...$data_items.size
if $game_party.deposit_item_number(i) > 0
@data.push($data_items[i])
end
end
for i in 1...$data_weapons.size
if $game_party.deposit_weapon_number(i) > 0
@data.push($data_weapons[i])
end
end
for i in 1...$data_armors.size
if $game_party.deposit_armor_number(i) > 0
@data.push($data_armors[i])
end
end
end
# 항목수가 0 나오지 않으면 비트 맵을 작성해 , 전 항목을 묘화
@item_max = @data.size
if @item_max > 0
self.contents = Bitmap.new(width - 32, row_max * 32)
for i in 0...@item_max
draw_item(i, type)
end
end
end
#--------------------------------------------------------------------------
# ● 항목의 묘화
# index : 항목 번호
# type : 형식
#--------------------------------------------------------------------------
def draw_item(index, type)
item = @data[index]
case item
when RPG::Item
number = type == 0 ? $game_party.item_number(item.id) :
$game_party.deposit_item_number(item.id)
when RPG::Weapon
number = type == 0 ? $game_party.weapon_number(item.id) :
$game_party.deposit_weapon_number(item.id)
when RPG::Armor
number = type == 0 ? $game_party.armor_number(item.id) :
$game_party.deposit_armor_number(item.id)
end
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))
bitmap = RPG::Cache.icon(item.icon_name)
self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24))
self.contents.draw_text(x + 28, y, 212, 32, item.name, 0)
self.contents.draw_text(x + 240, y, 16, 32, ":", 1)
self.contents.draw_text(x + 256, y, 24, 32, number.to_s, 2)
end
#--------------------------------------------------------------------------
# ● 헬프 텍스트 갱신
#--------------------------------------------------------------------------
def update_help
@help_window.set_text(self.item == nil ? "" : self.item.description)
end
end
#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
#==============================================================================
# ■ Window_DepositoryNumber
#------------------------------------------------------------------------------
# 보관소로 사용하는 , 수치 입력용의 윈도우입니다.
#==============================================================================
class Window_DepositoryNumber < Window_Base
#--------------------------------------------------------------------------
# ● 오브젝트 초기화
#--------------------------------------------------------------------------
def initialize
@digits_max, @number = 2, 0
# 숫자의 폭으로부터 커서의 폭을 계산 (0~9 는 등폭과 가정)
dummy_bitmap = Bitmap.new(32, 32)
@cursor_width = dummy_bitmap.text_size("0").width + 8
dummy_bitmap.dispose
@default_size = @cursor_width * @digits_max + 32
super(0, 0, @default_size, 128)
self.contents = Bitmap.new(width - 32, height - 32)
self.z = 1000
self.back_opacity = 160
self.active = false
self.visible = false
@index = 0
@item = nil
refresh
update_cursor_rect
end
#--------------------------------------------------------------------------
# ● 아이템의 설정
# item : 아이템
#--------------------------------------------------------------------------
def item=(item)
@item = item
end
#--------------------------------------------------------------------------
# ● 수치의 취득
#--------------------------------------------------------------------------
def number
return @number
end
#--------------------------------------------------------------------------
# ● 수치의 설정
# number : 새로운 수치
#--------------------------------------------------------------------------
def number=(number)
@number = [[number, 0].max, @max].min
refresh
end
#--------------------------------------------------------------------------
# ● 커서의 구형 갱신
#--------------------------------------------------------------------------
def update_cursor_rect
self.cursor_rect.set(@index * @cursor_width, 32, @cursor_width, 32)
end
#--------------------------------------------------------------------------
# ● 리셋트
#--------------------------------------------------------------------------
def reset(type)
@number = 0
@index = @digits_max - 1
if type == 0
case @item
when RPG::Item
@max = $game_party.item_number(@item.id)
dep = $game_party.deposit_item_number(@item.id)
when RPG::Weapon
@max = $game_party.weapon_number(@item.id)
dep = $game_party.deposit_weapon_number(@item.id)
when RPG::Armor
@max = $game_party.armor_number(@item.id)
dep = $game_party.deposit_armor_number(@item.id)
end
# 맡기고 있는 개수를 묘화
self.contents.fill_rect(0, 64, width - 32, 32, Color.new(0, 0, 0, 0))
self.contents.font.color = system_color
self.contents.draw_text(0, 64, width - 32, 32, "맡기고 있는 수:#{dep}")
else
case @item
when RPG::Item
@max = [$game_party.deposit_item_number(@item.id),
10 ** @digits_max - $game_party.item_number(@item.id) - 1].min
having = $game_party.item_number(@item.id)
when RPG::Weapon
@max = [$game_party.deposit_weapon_number(@item.id),
10 ** @digits_max - $game_party.weapon_number(@item.id) - 1].min
having = $game_party.weapon_number(@item.id)
when RPG::Armor
@max = [$game_party.deposit_armor_number(@item.id),
10 ** @digits_max - $game_party.armor_number(@item.id) - 1].min
having = $game_party.armor_number(@item.id)
end
# 소지수를 묘화
self.contents.fill_rect(0, 64, width - 32, 32, Color.new(0, 0, 0, 0))
self.contents.font.color = system_color
self.contents.draw_text(0, 64, width - 32, 32, "소지수:#{having}")
end
refresh
end
#--------------------------------------------------------------------------
# ● 리프레쉬
#--------------------------------------------------------------------------
def refresh
self.contents.fill_rect(0, 32, width - 32, 32, Color.new(0, 0, 0, 0))
self.contents.font.color = normal_color
s = sprintf("%0*d", @digits_max, @number)
for i in 0...@digits_max
self.contents.draw_text(i * @cursor_width + 4, 32, 32, 32, s[i,1])
end
end
#--------------------------------------------------------------------------
# ● 캐릭터 라인 설정
# string : 설정 캐릭터 라인
#--------------------------------------------------------------------------
def set_text(string = " ")
self.resize(self.contents.text_size(string).width + 40)
self.contents.fill_rect(0, 0, width - 32, 32, Color.new(0, 0, 0, 0))
self.contents.font.color = normal_color
self.contents.draw_text(0, 0, width - 32, 32, string, 1)
refresh
centering
end
#--------------------------------------------------------------------------
# ● 사이즈 변경
# nw : 새로운 폭
#--------------------------------------------------------------------------
def resize(nw)
self.width = nw
buf = self.contents.dup
self.contents.dispose
self.contents = Bitmap.new(nw - 32, 96)
self.contents.blt(0, 0, buf, buf.rect)
buf.dispose
end
#--------------------------------------------------------------------------
# ● 중앙 이동
#--------------------------------------------------------------------------
def centering
self.x = 320 - self.width / 2
self.y = 240 - self.height / 2
end
#--------------------------------------------------------------------------
# ● 프레임 갱신
#--------------------------------------------------------------------------
def update
super
return unless self.active
# 방향 버튼 위나 아래가 밀렸을 경우
if Input.repeat?(Input::UP) || Input.repeat?(Input::DOWN)
$game_system.se_play($data_system.cursor_se)
# 현재의 위의 숫자를 취득해 , 일단 0 으로 하는
place = 10 ** (@digits_max - 1 - @index)
n = self.number / place % 10
self.number -= n * place
# 위라면 +1, 아래라면 -1
n = (n + 1) % 10 if Input.repeat?(Input::UP)
n = (n + 9) % 10 if Input.repeat?(Input::DOWN)
# 현재의 위의 숫자를 재설정
self.number += n * place
refresh
end
# 커서 오른쪽
if Input.repeat?(Input::RIGHT)
if @digits_max >= 2
$game_system.se_play($data_system.cursor_se)
@index = (@index + 1) % @digits_max
end
end
# 커서왼쪽
if Input.repeat?(Input::LEFT)
if @digits_max >= 2
$game_system.se_play($data_system.cursor_se)
@index = (@index + @digits_max - 1) % @digits_max
end
end
update_cursor_rect
end
end
#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
#==============================================================================
# ■ Scene_Depository
#------------------------------------------------------------------------------
# 보관소 화면의 처리를 실시하는 클래스입니다.
#==============================================================================
class Scene_Depository
#--------------------------------------------------------------------------
# ● 메인 처리
#--------------------------------------------------------------------------
def main
# 스프라이트 세트 작성
@spriteset = Spriteset_Map.new
# 각종 윈도우를 작성
if $imported["HelpExtension"]
@dummy_window = Window_Base.new(0, 192, 640, 288)
@help_window = Window_HelpExtension.new
else
@dummy_window = Window_Base.new(0, 128, 640, 352)
@help_window = Window_Help.new
end
@dummy_window.back_opacity = 160
@help_window.back_opacity = 160
@command_window = Window_DepositoryCommand.new
@gold_window = Window_DepositoryGold.new
@item_window = Window_DepositoryItem.new
@number_window = Window_DepositoryNumber.new
# 헬프 윈도우를 관련짓고
@command_window.help_window = @help_window
@item_window.help_window = @help_window
# 트란지션 실행
Graphics.transition
# 메인 루프
loop do
# 게임 화면을 갱신
Graphics.update
# 입력 정보를 갱신
Input.update
# 프레임 갱신
update
# 화면이 바뀌면(자) 루프를 중단
if $scene != self
break
end
end
# 트란지션 준비
Graphics.freeze
# 해방
@spriteset.dispose
@dummy_window.dispose
@help_window.dispose
@command_window.dispose
@gold_window.dispose
@item_window.dispose
@number_window.dispose
end
#--------------------------------------------------------------------------
# ● 프레임 갱신
#--------------------------------------------------------------------------
def update
# 윈도우를 갱신
@dummy_window.update
@help_window.update
@command_window.update
@gold_window.update
@item_window.update
@number_window.update
# 커멘드 윈도우가 액티브의 경우: update_command 를 부르는
if @command_window.active
update_command
return
end
# 골드 윈도우가 액티브의 경우: update_gold 를 부르는
if @gold_window.active
update_gold
return
end
# 아이템 윈도우가 액티브의 경우: update_item 를 부르는
if @item_window.active
update_item
return
end
# 개수 윈도우가 액티브의 경우: update_number 를 부르는
if @number_window.active
update_number
return
end
end
#--------------------------------------------------------------------------
# ● 프레임 갱신 (커멘드 윈도우가 액티브의 경우)
#--------------------------------------------------------------------------
def update_command
# 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)
# 결정 SE 을 연주
$game_system.se_play($data_system.decision_se)
# 커서 위치에서 분기
case @command_window.index
when 0
# 골드 윈도우로 전환하고
@gold_window.active = true
@gold_window.visible = true
@gold_window.reset(0)
@help_window.set_text(KGC::DEPOSIT_GOLD)
when 1
# 골드 윈도우로 전환하고
@gold_window.active = true
@gold_window.visible = true
@gold_window.reset(1)
@help_window.set_text(KGC::WDEPOSIT_GOLD)
when 2
# 아이템 윈도우로 전환하고
@item_window.active = true
@item_window.visible = true
@item_window.refresh(0)
when 3
# 아이템 윈도우로 전환하고
@item_window.active = true
@item_window.visible = true
@item_window.refresh(1)
end
@command_window.active = false
# 더미 윈도우 소거
@dummy_window.visible = false
return
end
end
#--------------------------------------------------------------------------
# ● 프레임 갱신 (골드 윈도우가 액티브의 경우)
#--------------------------------------------------------------------------
def update_gold
# B 버튼이 밀렸을 경우
if Input.trigger?(Input::B)
# 캔슬 SE 을 연주
$game_system.se_play($data_system.cancel_se)
# 커멘드 윈도우로 전환하고
@command_window.active = true
@gold_window.active = false
@gold_window.visible = false
@dummy_window.visible = true
return
end
# C 버튼이 밀렸을 경우
if Input.trigger?(Input::C)
# 입력한 금액을 취득
price = @gold_window.price
# 금액이 0 의 경우
if price == 0
# 결정 SE 을 연주
$game_system.se_play($data_system.decision_se)
# 커멘드 윈도우로 전환하고
@command_window.active = true
@gold_window.active = false
@gold_window.visible = false
@dummy_window.visible = true
return
end
# 숍 SE 을 연주
$game_system.se_play($data_system.shop_se)
# 커서 위치에서 분기
case @command_window.index
when 0 # 맡기는
$game_party.lose_gold(price)
$game_party.gain_deposit_gold(price)
when 1 # 꺼내는
$game_party.gain_gold(price)
$game_party.lose_deposit_gold(price)
end
# 골드 윈도우를 리셋트
@gold_window.reset(@command_window.index)
return
end
end
#--------------------------------------------------------------------------
# ● 프레임 갱신 (아이템 윈도우가 액티브의 경우)
#--------------------------------------------------------------------------
def update_item
# B 버튼이 밀렸을 경우
if Input.trigger?(Input::B)
# 캔슬 SE 을 연주
$game_system.se_play($data_system.cancel_se)
# 커멘드 윈도우로 전환하고
@command_window.active = true
@item_window.active = false
@item_window.visible = false
@dummy_window.visible = true
return
end
# C 버튼이 밀렸을 경우
if Input.trigger?(Input::C)
# 선택 아이템을 취득
@item = @item_window.item
# 공난의 경우
if @item == nil
# 버저 SE 를 연주
$game_system.se_play($data_system.buzzer_se)
return
end
# 개수 윈도우의 아이템을 설정
@number_window.item = @item
# 결정 SE 을 연주
$game_system.se_play($data_system.decision_se)
# 커서 위치에서 분기
case @command_window.index
when 2 # 맡기는
@number_window.set_text(KGC::DEPOSIT_ITEM)
when 3 # 꺼내는
@number_window.set_text(KGC::WDEPOSIT_ITEM)
end
# 개수 윈도우를 리셋트
@number_window.reset(@command_window.index - 2)
# 개수 윈도우로 전환하고
@item_window.active = false
@number_window.active = true
@number_window.visible = true
return
end
end
#--------------------------------------------------------------------------
# ● 프레임 갱신 (개수 윈도우가 액티브의 경우)
#--------------------------------------------------------------------------
def update_number
# B 버튼이 밀렸을 경우
if Input.trigger?(Input::B)
# 캔슬 SE 을 연주
$game_system.se_play($data_system.cancel_se)
# 아이템 윈도우로 전환하고
@item_window.active = true
@number_window.active = false
@number_window.visible = false
return
end
# C 버튼이 밀렸을 경우
if Input.trigger?(Input::C)
# 결정 SE 을 연주
$game_system.se_play($data_system.decision_se)
number = @number_window.number
# 커서 위치에서 분기
case @command_window.index
when 2 # 맡기는
case @item
when RPG::Item
$game_party.lose_item(@item.id, number)
$game_party.gain_deposit_item(@item.id, number)
when RPG::Weapon
$game_party.lose_weapon(@item.id, number)
$game_party.gain_deposit_weapon(@item.id, number)
when RPG::Armor
$game_party.lose_armor(@item.id, number)
$game_party.gain_deposit_armor(@item.id, number)
end
when 3 # 꺼내는
case @item
when RPG::Item
$game_party.gain_item(@item.id, number)
$game_party.lose_deposit_item(@item.id, number)
when RPG::Weapon
$game_party.gain_weapon(@item.id, number)
$game_party.lose_deposit_weapon(@item.id, number)
when RPG::Armor
$game_party.gain_armor(@item.id, number)
$game_party.lose_deposit_armor(@item.id, number)
end
end
# 아이템 윈도우를 리프레쉬
@item_window.refresh(@command_window.index - 2)
# 아이템 윈도우로 전환하고
@item_window.active = true
@number_window.active = false
@number_window.visible = false
return
end
end
end