Chciałbym żeby ten limit działał niezależnie od tego czy przedmiotu użyjemy, czy nie. Jeśli to możliwe.
Kod: Zaznacz cały
#===================================================================
# Limit przedmiotów do kupienia / Shop Item Limit [VX]
# by Ayene
# 13.09.2012
# www.ultimateam.pl
#===================================================================
# Opis:
# Skrypt umożliwia ustawienie maksymalnej liczby przedmiotów do
# kupienia w sklepie.
#
# Instrukcja:
# By skorzystać ze skryptu w oknie 'Note' przy danym przedmiocie / broni /
# pancerzu w Bazie Danych umieść tekst <max_buy LICZBA>.
#
# Przykładowo:
# Jeśli chcesz, by drużyna mogła kupić Potion maksymalnie 5 razy,
# to w oknie 'Note' tego przedmiotu należy wpisać:
# <max_buy 5>
#===================================================================
module AYE
module Custom_Shop
BUY = /<(?:MAX_BUY|max_buy)\s*(\d+)>/i
MAX_BUY = 99 # domyślna maksymalna liczba przedmiotów
end
end
#===================================================================
# RPG::BaseItem
#===================================================================
class RPG::BaseItem
attr_accessor :max_buy
def item_maxbuy_ini
@max_buy = AYE::Custom_Shop::MAX_BUY
self.note.split(/[\r\n]+/).each { |line|
case line
when AYE::Custom_Shop::BUY
@max_buy = $1.to_i
end
}
end
end
class Window_ShopBuy < Window_Selectable
#--------------------------------------------------------------------------
# * Draw Item
# index : item number
#--------------------------------------------------------------------------
def draw_item(index)
item = @data[index]
number = $game_party.item_number(item)
enabled = (item.price <= $game_party.gold and number < item.max_buy)
rect = item_rect(index)
self.contents.clear_rect(rect)
draw_item_name(item, rect.x, rect.y, enabled)
rect.width -= 4
self.contents.draw_text(rect, item.price, 2)
end
end
#===================================================================
# Scene_Title
#===================================================================
class Scene_Title < Scene_Base
alias aye_custshop_loaddata load_database
def load_database
aye_custshop_loaddata
for group in [$data_items, $data_weapons, $data_armors]
for obj in group
next if obj.nil?
obj.item_maxbuy_ini
end
end
end
end
#===================================================================
# Scene_Equip
#===================================================================
class Scene_Shop < Scene_Base
#--------------------------------------------------------------------------
# * Update Buy Item Selection
#--------------------------------------------------------------------------
def update_buy_selection
@status_window.item = @buy_window.item
if Input.trigger?(Input::B)
Sound.play_cancel
@command_window.active = true
@dummy_window.visible = true
@buy_window.active = false
@buy_window.visible = false
@status_window.visible = false
@status_window.item = nil
@help_window.set_text("")
return
end
if Input.trigger?(Input::C)
@item = @buy_window.item
number = $game_party.item_number(@item)
if @item == nil or @item.price > $game_party.gold or number == @item.max_buy
Sound.play_buzzer
else
Sound.play_decision
max = @item.price == 0 ? @item.max_buy : $game_party.gold / @item.price
max = [max, @item.max_buy - number].min
@buy_window.active = false
@buy_window.visible = false
@number_window.set(@item, max, @item.price)
@number_window.active = true
@number_window.visible = true
end
end
end
end