as the title says i would like to know how to make this script work:
found here: http://cacaosoft.web.fc2.com/tkool/script/exshop4.html
translation: http://translate.googleusercontent.com/translate_c?hl=fr&ie=UTF-8&sl=auto&tl=en&u=http://cacaosoft.web.fc2.com/tkool/script/exshop4.html&prev=_t&rurl=translate.google.com&usg=ALkJrhg8MS0psJszEWRmF66weJgHcYkXSQ
Script:
[spoiler]
#******************************************************************************
#
# ? ??????????
#
# --------------------------------------------------------------------------
# ????? ? 1.0.5
# ? ? ? RPG????VX : RGSS2
# ? ? ? ? ?????
# ? ? ? ? http://cacaosoft.web.fc2.com/
# --------------------------------------------------------------------------
# == ?? ==
#
# ? ??????????????????
#
# --------------------------------------------------------------------------
# == ???? ==
#
# ? ?????????????Cacao Base Script ??????
# ? ??????????????????????????????
#
# --------------------------------------------------------------------------
# == ???? ==
#
# ? ????????
# 144 x 24 ????ShopIcon?? "Graphics/System" ?????????
# ? ?????????????????
#
#
#******************************************************************************
#/////////////////////////////////////////////////////////////////////////////#
# #
# ???????????????????? #
# #
#/////////////////////////////////////////////////////////////////////////////#
module CAO::KSHOP
# ???????????
FILE_ITME_ICON = "ShopIcon"
# ??????????????
SE_PAGE = ["Audio/SE/Book", 90, 150]
# ??????????????
NUM_ALIGN = 2
# ???????
TEXT_SELL = "?????"
TEXT_HAVE = "????"
#--------------------------------------------------------------------------
# ? ???????
#--------------------------------------------------------------------------
def self.get_sell_price(price)
return price / 2
end
#--------------------------------------------------------------------------
# ? KGC[????]???
#--------------------------------------------------------------------------
def self.in_kgc_equip_ext?
return Hash === $imported && $imported["EquipExtension"]
end
#--------------------------------------------------------------------------
# ? ???????????
#--------------------------------------------------------------------------
def self.item_max
if in_kgc_equip_ext?
return KGC::EquipExtension::EQUIP_TYPE.uniq.size + 2
else
return 6 # ????, ??, ?, ?, ??, ??
end
end
#--------------------------------------------------------------------------
# ? ???????????
#--------------------------------------------------------------------------
def self.item_index(item)
case item
when RPG::Item
index = 0
when RPG::Weapon
index = 1
when RPG::Armor
if in_kgc_equip_ext?
index = 2 + KGC::EquipExtension::EQUIP_TYPE.index(item.kind)
else
index = 2 + item.kind
end
end
return index
end
end
class Window_ShopIcon < Window_Base
#--------------------------------------------------------------------------
# ? ??????????
#--------------------------------------------------------------------------
attr_accessor :index #
#--------------------------------------------------------------------------
# ? ?????????
#--------------------------------------------------------------------------
def initialize
super(0, 56, 384, 56)
@item_max = CAO::KSHOP.item_max
@index = 0
@img_icon = Cache.system(CAO::KSHOP::FILE_ITME_ICON)
refresh
end
#--------------------------------------------------------------------------
# ? ??????
#--------------------------------------------------------------------------
def refresh
self.contents.clear
cw = self.contents.width / @item_max
for i in 0...@item_max
x = cw * i + (cw - 24) / 2
rect = Rect.new(24 * i, 0, 24, 24)
self.contents.blt(x, 0, @img_icon, rect, (@index == i ? 255 : 128))
end
end
#--------------------------------------------------------------------------
# ? ??????
#--------------------------------------------------------------------------
def update
super
if Input.trigger?(Input::LEFT)
@index = (@index - 1 + @item_max) % @item_max
end
if Input.trigger?(Input::RIGHT)
@index = (@index + 1) % @item_max
end
end
end
class Window_ShopBuy < Window_Selectable
#--------------------------------------------------------------------------
# ? ??????????
#--------------------------------------------------------------------------
attr_accessor :item_index #
#--------------------------------------------------------------------------
# ? ?????????
#--------------------------------------------------------------------------
alias _cao_initialize_kshop initialize
def initialize(x, y)
@item_index = 0
_cao_initialize_kshop(x, y)
end
#--------------------------------------------------------------------------
# ? ???????
#--------------------------------------------------------------------------
def item
return @data[@item_index][self.index]
end
#--------------------------------------------------------------------------
# ? ??????
#--------------------------------------------------------------------------
def refresh
@data = Array.new(CAO::KSHOP.item_max) { [] }
for goods_item in @shop_goods
case goods_item[0]
when 0
item = $data_items[goods_item[1]]
when 1
item = $data_weapons[goods_item[1]]
when 2
item = $data_armors[goods_item[1]]
end
if item != nil
@data[CAO::KSHOP.item_index(item)].push(item)
end
end
@item_max = @data[@item_index].size
create_contents
for i in 0...@item_max
draw_item(i)
end
end
#--------------------------------------------------------------------------
# ? ?????
# index : ????
#--------------------------------------------------------------------------
def draw_item(index)
item = @data[@item_index][index]
number = $game_party.item_number(item)
enabled = (item.price <= $game_party.gold and number < 99)
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
#--------------------------------------------------------------------------
# ? ?????????
#--------------------------------------------------------------------------
def update_help
item = self.item
@help_window.set_text(item == nil ? "" : item.description)
end
end
class Window_ShopSell < Window_Item
#--------------------------------------------------------------------------
# ? ??????????
#--------------------------------------------------------------------------
attr_accessor :item_index #
#--------------------------------------------------------------------------
# ? ?????????
#--------------------------------------------------------------------------
def initialize(x, y, width, height)
super(x, y, width, height)
@column_max = 1
@item_index = 0
end
#--------------------------------------------------------------------------
# ? ??????
#--------------------------------------------------------------------------
def refresh
@data = []
for item in $game_party.items
next unless include?(item)
@data.push(item)
if item.is_a?(RPG::Item) and item.id == $game_party.last_item_id
self.index = @data.size - 1
end
end
@data.push(nil) if include?(nil)
@item_max = @data.size
create_contents
for i in 0...@item_max
draw_item(i)
end
end
#--------------------------------------------------------------------------
# ? ?????
# index : ????
#--------------------------------------------------------------------------
def draw_item(index)
rect = item_rect(index)
self.contents.clear_rect(rect)
item = @data[index]
if item != nil
number = $game_party.item_number(item)
enabled = enable?(item)
draw_item_name(item, rect.x, rect.y, enabled)
self.contents.font.color = system_color
self.contents.draw_text(244, rect.y, 95, WLH, CAO::KSHOP::TEXT_SELL)
self.contents.draw_text(413, rect.y, 75, WLH, CAO::KSHOP::TEXT_HAVE)
self.contents.font.color = normal_color
price = CAO::KSHOP.get_sell_price(item.price)
align = CAO::KSHOP::NUM_ALIGN
self.contents.draw_text(339, rect.y, 70, WLH, price, align)
self.contents.draw_text(488, rect.y, 20, WLH, number, align)
end
end
#--------------------------------------------------------------------------
# ?
#--------------------------------------------------------------------------
def include?(item)
return false if item == nil
return @item_index == CAO::KSHOP.item_index(item)
end
#--------------------------------------------------------------------------
# ? ????????
# item : ???? (????????????)
# x : ??? X ??
# y : ??? Y ??
# enabled : ??????false ?????????
#--------------------------------------------------------------------------
def draw_item_name(item, x, y, enabled = true)
if item != nil
draw_icon(item.icon_index, x, y, enabled)
self.contents.font.color = normal_color
self.contents.font.color.alpha = enabled ? 255 : 128
self.contents.draw_text(x + 24, y, 240, WLH, item.name)
end
end
end
class Window_ShopNumber < Window_Base
#--------------------------------------------------------------------------
# ? ?????????
#--------------------------------------------------------------------------
def initialize(x, y)
super(x, y, 304, 304)
@item = nil
@max = 1
@price = 0
@index = 1
@number = 1
@digits_max = 2
end
#--------------------------------------------------------------------------
# ? ???????????????
#--------------------------------------------------------------------------
def set(item, max, price)
@item = item
@max = max
@price = price
@number = 1
@index = 1
refresh
update_cursor
end
#--------------------------------------------------------------------------
# ? ??????
#--------------------------------------------------------------------------
def refresh
y = 96
self.contents.clear
draw_item_name(@item, 0, y)
self.contents.font.color = normal_color
self.contents.draw_text(212, y, 20, WLH, "×")
s = sprintf("%0*d", @digits_max, @number)
for i in 0...@digits_max
self.contents.draw_text(240 + i * 14, y, 14, WLH, s[i,1], 1)
end
draw_currency_value(@price * @number, 4, y + WLH * 2, 264)
end
#--------------------------------------------------------------------------
# ? ??????
#--------------------------------------------------------------------------
def update
super
if self.active
if Input.repeat?(Input::UP) or Input.repeat?(Input::DOWN)
Sound.play_cursor
place = 10 ** (@digits_max - 1 - @index)
n = @number / place % 10
@number -= n * place
n = (n + 1) % 10 if Input.repeat?(Input::UP)
n = (n + 9) % 10 if Input.repeat?(Input::DOWN)
@number += n * place
@number = [@number, @max].min
refresh
end
last_index = @index
if Input.repeat?(Input::RIGHT)
if @index < @digits_max - 1 or Input.trigger?(Input::RIGHT)
@index = (@index + 1) % @digits_max
end
end
if Input.repeat?(Input::LEFT)
if @index > 0 or Input.trigger?(Input::LEFT)
@index = (@index + @digits_max - 1) % @digits_max
end
end
if @index != last_index
Sound.play_cursor
end
update_cursor
end
end
#--------------------------------------------------------------------------
# ? ???????
#--------------------------------------------------------------------------
def update_cursor
self.cursor_rect.set(240 + @index * 14, 96, 14, WLH)
end
end
class Scene_Shop < Scene_Base
#--------------------------------------------------------------------------
# ? ????
#--------------------------------------------------------------------------
def start
super
create_menu_background
create_command_window
@help_window = Window_Help.new
@gold_window = Window_Gold.new(384, 56)
@dummy_window = Window_Base.new(0, 112, 544, 304)
@buy_window = Window_ShopBuy.new(0, 112)
@buy_window.active = false
@buy_window.visible = false
@buy_window.help_window = @help_window
@sell_window = Window_ShopSell.new(0, 112, 544, 304)
@sell_window.active = false
@sell_window.visible = false
@sell_window.help_window = @help_window
@number_window = Window_ShopNumber.new(0, 112)
@number_window.active = false
@number_window.visible = false
@status_window = Window_ShopStatus.new(304, 112)
@status_window.visible = false
end
#--------------------------------------------------------------------------
# ? ????
#--------------------------------------------------------------------------
alias _cao_start_kshop start
def start
_cao_start_kshop
@icon_window = Window_ShopIcon.new
@icon_window.active = false
@icon_window.visible = false
end
#--------------------------------------------------------------------------
# ? ????
#--------------------------------------------------------------------------
alias _cao_terminate_kshop terminate
def terminate
_cao_terminate_kshop
@icon_window.dispose
end
#--------------------------------------------------------------------------
# ? ??????
#--------------------------------------------------------------------------
def update
super
update_menu_background
@help_window.update
@command_window.update
@gold_window.update
@dummy_window.update
@buy_window.update
@sell_window.update
@number_window.update
@status_window.update
if @command_window.active
update_command_selection
elsif @buy_window.active
update_buy_selection
update_item_kind
elsif @sell_window.active
update_sell_selection
update_item_kind
elsif @number_window.active
update_number_input
end
end
#--------------------------------------------------------------------------
# ? ????????????
#--------------------------------------------------------------------------
def create_command_window
s1 = Vocab::ShopBuy
s2 = Vocab::ShopSell
s3 = Vocab::ShopCancel
@command_window = CAO::Window_Command.new(0, 56, 384, 56, [s1,s2,s3], 1, 3)
if $game_temp.shop_purchase_only
@command_window.draw_item(1, false)
end
end
#--------------------------------------------------------------------------
# ? ?????????
#--------------------------------------------------------------------------
def update_command_selection
if Input.trigger?(Input::B)
Sound.play_cancel
$scene = Scene_Map.new
elsif Input.trigger?(Input::C)
case @command_window.index
when 0
Sound.play_decision
@command_window.active = false
@command_window.visible = false
@icon_window.active = true
@icon_window.visible = true
@icon_window.refresh
@dummy_window.visible = false
@buy_window.active = true
@buy_window.visible = true
@buy_window.refresh
@status_window.visible = true
when 1
if $game_temp.shop_purchase_only
Sound.play_buzzer
else
Sound.play_decision
@command_window.active = false
@command_window.visible = false
@icon_window.active = true
@icon_window.visible = true
@icon_window.refresh
@dummy_window.visible = false
@sell_window.active = true
@sell_window.visible = true
@sell_window.refresh
end
when 2
Sound.play_decision
$scene = Scene_Map.new
end
end
end
#--------------------------------------------------------------------------
# ? ???????????
#--------------------------------------------------------------------------
def update_item_kind
last_index = @icon_window.index
@icon_window.update
if @icon_window.index != last_index
Audio.se_play(*CAO::KSHOP::SE_PAGE)
@icon_window.refresh
@buy_window.index = 0
@sell_window.index = 0
@buy_window.item_index = @icon_window.index
@sell_window.item_index = @icon_window.index
if @buy_window.active
@buy_window.refresh
elsif @sell_window.active
@sell_window.refresh
end
end
end
#--------------------------------------------------------------------------
# ? ???????????
#--------------------------------------------------------------------------
def update_buy_selection
@status_window.item = @buy_window.item
if Input.trigger?(Input::B)
Sound.play_cancel
@command_window.active = true
@command_window.visible = true
@icon_window.active = false
@icon_window.visible = false
@dummy_window.visible = true
@buy_window.active = false
@buy_window.visible = false
@status_window.visible = false
@status_window.item = nil
@help_window.set_text("")
elsif 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 == 99
Sound.play_buzzer
else
Sound.play_decision
max = @item.price == 0 ? 99 : $game_party.gold / @item.price
max = [max, 99 - 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
#--------------------------------------------------------------------------
# ? ???????????
#--------------------------------------------------------------------------
def update_sell_selection
if Input.trigger?(Input::B)
Sound.play_cancel
@command_window.active = true
@command_window.visible = true
@icon_window.active = false
@icon_window.visible = false
@dummy_window.visible = true
@sell_window.active = false
@sell_window.visible = false
@status_window.item = nil
@help_window.set_text("")
elsif Input.trigger?(Input::C)
@item = @sell_window.item
@status_window.item = @item
if @item == nil or @item.price == 0
Sound.play_buzzer
else
Sound.play_decision
max = $game_party.item_number(@item)
@sell_window.active = false
@sell_window.visible = false
@number_window.set(@item, max, CAO::KSHOP.get_sell_price(@item.price))
@number_window.active = true
@number_window.visible = true
@status_window.visible = true
end
end
end
end
[/spoiler]
1) Copy the Script and put it below materials but still above main.
2) Copy the Cacao Base Script and put it right above the script.
3) Put the ShopIcon.png in your Graphics/System Folder.
Quote from: cozziekuns on July 03, 2010, 04:13:44 PM
2) Copy the Cacao Base Script and put it right above the script.
lol , i forgot about the base script ^^ i'll see if it works thanks.