Leon 55 Report post Posted January 23, 2008 New Shop Interface by Leon_Westbrooke Version: 1.1 Type: Shopping System Introduction This script is for all of those who want a new way of looking at the shopping menu. Features Replaces the old shop system. Screenshots screenshots Script Place the script below all defaults, but above main: Leon's Shopping System Script #=============================================================================== # Leon's Shopping System #------------------------------------------------------------------------------- # 3/10/2007 # v. 1.0 #------------------------------------------------------------------------------- # Instructions: # Place above main, and below the other default scripts. # (Yes, that is all of the instructions) # # Features: # Replaces the default shop system. # #=============================================================================== #=============================================================================== # Window_Shop_Info #=============================================================================== class Window_Shop_Info < Window_Base def initialize super(160, 0, 480, 64) self.contents = Bitmap.new(width - 32, height - 32) refresh end def refresh(selection = 0) self.contents.clear if selection == 0 self.contents.draw_text(0, 0, 448, 32, "Buy, sell, or leave?", 1) else self.contents.draw_text(0, 0, 448, 32, "Press 'Z' for character compatabilitiy.", 1) end end end #=============================================================================== # END Window_Shop_Info #=============================================================================== #=============================================================================== # Window_Shop_Option #=============================================================================== class Window_Shop_Option < Window_Selectable def initialize super(0, 0, 160, 128) @option = ["Buy", "Sell", "Leave"] @item_max = @option.size self.contents = Bitmap.new(width - 32, height - 32) self.index = 0 self.active = true refresh end def refresh self.contents.clear for i in 0...@option.size y = i * 32 self.contents.draw_text(0, y, 128, 32, @option, 1) end end end #=============================================================================== # END Window_Shop_Option #=============================================================================== #=============================================================================== # Window_Shop_Gold #=============================================================================== class Window_Shop_Gold < Window_Base def initialize super(0, 128, 160, 64) self.contents = Bitmap.new(width - 32, height - 32) refresh end def refresh self.contents.clear self.contents.font.color = system_color self.contents.draw_text(0, 0, 60, 32, $data_system.words.gold + ":") self.contents.font.color = normal_color self.contents.draw_text(0, 0, 128, 32, $game_party.gold.to_s, 2) end end #=============================================================================== # END Window_Shop_Gold #=============================================================================== #=============================================================================== # Window_Shop_Own #=============================================================================== class Window_Shop_Own < Window_Base def initialize super(0, 192, 160, 64) self.contents = Bitmap.new(width - 32, height - 32) item = nil refresh(item) end def refresh(item) self.contents.clear self.contents.font.color = system_color self.contents.draw_text(0, 0, 48, 32, "Own:") if item == nil return end self.contents.font.color = normal_color case item when RPG::Item number = $game_party.item_number(item.id) when RPG::Weapon number = $game_party.weapon_number(item.id) when RPG::Armor number = $game_party.armor_number(item.id) end self.contents.draw_text(0, 0, 128, 32, number.to_s, 2) end end #=============================================================================== # END Window_Shop_Own #=============================================================================== #=============================================================================== # Window_Shop_List #=============================================================================== class Window_Shop_List < Window_Selectable def initialize(shop_goods) super(160, 64, 480, 192) self.contents = Bitmap.new(width - 32, height - 32) self.active = false self.index = 0 self.visible = false @shop_goods = shop_goods @sell = false end def item if @data != nil return @data[index] end end def refresh @sell = false @option_index = nil if self.contents != nil self.contents.dispose self.contents = nil end @data = [] 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.push(item) end end @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) end end end def refresh_sell(option_index) @sell = true @option_index = option_index if self.contents != nil self.contents.dispose self.contents = nil end @data = [] for i in 1...$data_items.size if $game_party.item_number(i) > 0 @data.push($data_items) end end for i in 1...$data_weapons.size if $game_party.weapon_number(i) > 0 @data.push($data_weapons) end end for i in 1...$data_armors.size if $game_party.armor_number(i) > 0 @data.push($data_armors) end end @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) end end end def draw_item(index) item = @data[index] case item when RPG::Item number = $game_party.item_number(item.id) when RPG::Weapon number = $game_party.weapon_number(item.id) when RPG::Armor number = $game_party.armor_number(item.id) end if @option_index == nil if item.price <= $game_party.gold and number < 99 self.contents.font.color = normal_color else self.contents.font.color = disabled_color end else self.contents.font.color = normal_color end x = 4 y = index * 32 if item.price == 0 self.contents.font.color = disabled_color else self.contents.font.color = normal_color end if @sell == false if item.price < $game_party.gold and number < 99 self.contents.font.color = normal_color else self.contents.font.color = disabled_color end end rect = Rect.new(x, y, self.width - 32, 32) self.contents.fill_rect(rect, Color.new(0, 0, 0, 0)) bitmap = RPG::Cache.icon(item.icon_name) opacity = self.contents.font.color == normal_color ? 255 : 128 self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24), opacity) self.contents.draw_text(x + 28, y, 212, 32, item.name, 0) if @option_index == nil self.contents.draw_text(x + 350, y, 88, 32, item.price.to_s, 2) else item_price = (item.price / 2).round self.contents.draw_text(x + 350, y, 88, 32, item_price.to_s, 2) end end end #=============================================================================== # END Window_Shop_List #=============================================================================== #=============================================================================== # Window_Shop_Description_Item #=============================================================================== class Window_Shop_Description_Item < Window_Base def initialize super(90, 256, 460, 192) self.contents = Bitmap.new(width - 32, height - 32) self.visible = false item = nil refresh(item) end def refresh(item) self.contents.clear if item == nil return end bitmap = RPG::Cache.icon(item.icon_name) opacity = self.contents.font.color == normal_color ? 255 : 128 self.contents.blt(0, 4, bitmap, Rect.new(0, 0, 24, 24), opacity) self.contents.draw_text(28, 0, 120, 32, item.name) self.contents.draw_text(0, 32, 428, 32, item.description) self.contents.font.color = system_color self.contents.draw_text(0, 64, 120, 32, "Range:") self.contents.draw_text(0, 96, 140, 32, "% HP Recovered:") self.contents.draw_text(0, 128, 140, 32, "% SP Recovered:") self.contents.draw_text(230, 96, 120, 32, "HP Recovered:") self.contents.draw_text(230, 128, 120, 32, "SP Recovered:") self.contents.font.color = normal_color self.contents.draw_text(150, 96, 90, 32, item.recover_hp_rate.to_s) self.contents.draw_text(150, 128, 90, 32, item.recover_sp_rate.to_s) self.contents.draw_text(360, 96, 90, 32, item.recover_hp.to_s) self.contents.draw_text(360, 128, 90, 32, item.recover_sp.to_s) case item.scope when 0 self.contents.draw_text(70, 64, 120, 32, "None") when 1 self.contents.draw_text(70, 64, 120, 32, "One Enemy") when 2 self.contents.draw_text(70, 64, 120, 32, "All Enemies") when 3 self.contents.draw_text(70, 64, 120, 32, "One Ally") when 4 self.contents.draw_text(70, 64, 120, 32, "All Allies") when 5 self.contents.draw_text(70, 64, 120, 32, "One Dead Ally") when 6 self.contents.draw_text(70, 64, 120, 32, "All Dead Allies") when 7 self.contents.draw_text(70, 64, 120, 32, "User") end end end #=============================================================================== # END Window_Shop_Description_Item #=============================================================================== #=============================================================================== # Window_Shop_Description_Equipment #=============================================================================== class Window_Shop_Description_Equipment < Window_Base def initialize super(0, 256, 640, 224) self.contents = Bitmap.new(width - 32, height - 32) self.visible = false item = nil refresh(item) end def refresh(item) self.contents.clear if item == nil return end bitmap = RPG::Cache.icon(item.icon_name) opacity = self.contents.font.color == normal_color ? 255 : 128 self.contents.blt(0, 4, bitmap, Rect.new(0, 0, 24, 24), opacity) self.contents.draw_text(28, 0, 120, 32, item.name) self.contents.draw_text(0, 32, 460, 32, item.description) self.contents.font.color = system_color if item.is_a?(RPG::Weapon) self.contents.draw_text(0, 64, 75, 32, "Attack:") self.contents.draw_text(0, 96, 120, 32, "Phys. Def:") self.contents.draw_text(0, 128, 120, 32, "Mag. Def:") self.contents.draw_text(165, 64, 120, 32, "Str:") self.contents.draw_text(165, 96, 120, 32, "Dex:") self.contents.draw_text(165, 128, 120, 32, "Agi:") self.contents.draw_text(165, 160, 120, 32, "Int:") self.contents.draw_text(290, 64, 120, 32, "Elements:") self.contents.draw_text(470, 64, 120, 32, "Inflicts:") else self.contents.draw_text(0, 64, 120, 32, "Phys. Def:") self.contents.draw_text(0, 96, 120, 32, "Mag. Def:") self.contents.draw_text(0, 128, 120, 32, "Evade:") self.contents.draw_text(0, 160, 120, 32, "Auto:") self.contents.draw_text(165, 64, 120, 32, "Str:") self.contents.draw_text(165, 96, 120, 32, "Dex:") self.contents.draw_text(165, 128, 120, 32, "Agi:") self.contents.draw_text(165, 160, 120, 32, "Int:") self.contents.draw_text(370, 64, 120, 32, "Guards Against:") end self.contents.font.color = normal_color if item.is_a?(RPG::Weapon) self.contents.draw_text(60, 64, 75, 32, item.atk.to_s) self.contents.draw_text(90, 96, 75, 32, item.pdef.to_s) self.contents.draw_text(90, 128, 75, 32, item.mdef.to_s) self.contents.draw_text(195, 64, 50, 32, item.str_plus.to_s, 2) self.contents.draw_text(195, 96, 50, 32, item.dex_plus.to_s, 2) self.contents.draw_text(195, 128, 50, 32, item.agi_plus.to_s, 2) self.contents.draw_text(195, 160, 50, 32, item.int_plus.to_s, 2) self.contents.font.size = 14 for i in 0...item.element_set.size x = 265 + i % 2 * 75 y = 80 + i / 2 * 14 self.contents.draw_text(x, y, 120, 32, $data_system.elements[item.element_set]) end for i in 0...item.plus_state_set.size x = 445 + i % 2 * 75 y = 80 + i / 2 * 14 self.contents.draw_text(x, y, 120, 32, $data_states[item.plus_state_set].name) end else self.contents.draw_text(90, 64, 75, 32, item.pdef.to_s) self.contents.draw_text(90, 96, 75, 32, item.mdef.to_s) self.contents.draw_text(60, 128, 75, 32, item.eva.to_s) if $data_states[item.auto_state_id] != nil self.contents.draw_text(55, 160, 75, 32, $data_states[item.auto_state_id].name) end self.contents.draw_text(195, 64, 50, 32, item.str_plus.to_s, 2) self.contents.draw_text(195, 96, 50, 32, item.dex_plus.to_s, 2) self.contents.draw_text(195, 128, 50, 32, item.agi_plus.to_s, 2) self.contents.draw_text(195, 160, 50, 32, item.int_plus.to_s, 2) self.contents.font.size = 14 @defense = [] for i in 0...item.guard_element_set.size @defense.push($data_system.elements[item.guard_element_set]) end for i in 0...item.guard_state_set.size @defense.push($data_states[item.guard_state_set].name) end for i in 0...@defense.size x = 265 + i % 4 * 80 y = 80 + i / 4 * 14 self.contents.draw_text(x + 15, y, 85, 32, @defense) end end self.contents.font.size = 22 end end #=============================================================================== # END Window_Shop_Description_Equipment #=============================================================================== #=============================================================================== # Window_Shop_Actors #=============================================================================== class Window_Shop_Actors < Window_Base def initialize super(84, 32, 472, 416) self.contents = Bitmap.new(width - 32, height - 32) self.visible = false self.active = false self.z += 100 item = nil refresh(item) end def refresh(item) self.contents.clear if item == nil return end for i in 0...$game_party.actors.size x = i%2 * 236 y = i/2 * 192 draw_actor_graphic($game_party.actors, x + 16, y + 48) draw_actor_name($game_party.actors, x + 48, y + 8) pdef1 = item.pdef mdef1 = item.mdef str1 = item.str_plus dex1 = item.dex_plus agi1 = item.agi_plus int1 = item.int_plus atk2 = 0 eva2 = 0 pdef2 = 0 mdef2 = 0 str2 = 0 dex2 = 0 agi2 = 0 int2 = 0 if item.is_a?(RPG::Weapon) if $data_weapons[$game_party.actors.weapon_id] != nil atk1 = item.atk atk2 = $data_weapons[$game_party.actors.weapon_id].atk pdef2 = $data_weapons[$game_party.actors.weapon_id].pdef mdef2 = $data_weapons[$game_party.actors.weapon_id].mdef str2 = $data_weapons[$game_party.actors.weapon_id].str_plus dex2 = $data_weapons[$game_party.actors.weapon_id].dex_plus agi2 = $data_weapons[$game_party.actors.weapon_id].agi_plus int2 = $data_weapons[$game_party.actors.weapon_id].int_plus end else eva1 = item.eva case item.kind when 0 if $data_armors[$game_party.actors.armor1_id] != nil eva2 = $data_armors[$game_party.actors.armor1_id].eva pdef2 = $data_armors[$game_party.actors.armor1_id].pdef mdef2 = $data_armors[$game_party.actors.armor1_id].mdef str2 = $data_armors[$game_party.actors.armor1_id].str_plus dex2 = $data_armors[$game_party.actors.armor1_id].dex_plus agi2 = $data_armors[$game_party.actors.armor1_id].agi_plus int2 = $data_armors[$game_party.actors.armor1_id].int_plus end when 1 if $data_armors[$game_party.actors.armor2_id] != nil eva2 = $data_armors[$game_party.actors.armor2_id].eva pdef2 = $data_armors[$game_party.actors.armor2_id].pdef mdef2 = $data_armors[$game_party.actors.armor2_id].mdef str2 = $data_armors[$game_party.actors.armor2_id].str_plus dex2 = $data_armors[$game_party.actors.armor2_id].dex_plus agi2 = $data_armors[$game_party.actors.armor2_id].agi_plus int2 = $data_armors[$game_party.actors.armor2_id].int_plus end when 2 if $data_armors[$game_party.actors.armor3_id] != nil eva2 = $data_armors[$game_party.actors.armor3_id].eva pdef2 = $data_armors[$game_party.actors.armor3_id].pdef mdef2 = $data_armors[$game_party.actors.armor3_id].mdef str2 = $data_armors[$game_party.actors.armor3_id].str_plus dex2 = $data_armors[$game_party.actors.armor3_id].dex_plus agi2 = $data_armors[$game_party.actors.armor3_id].agi_plus int2 = $data_armors[$game_party.actors.armor3_id].int_plus end when 3 if $data_armors[$game_party.actors.armor4_id] != nil eva2 = $data_armors[$game_party.actors.armor4_id].eva pdef2 = $data_armors[$game_party.actors.armor4_id].pdef mdef2 = $data_armors[$game_party.actors.armor4_id].mdef str2 = $data_armors[$game_party.actors.armor4_id].str_plus dex2 = $data_armors[$game_party.actors.armor4_id].dex_plus agi2 = $data_armors[$game_party.actors.armor4_id].agi_plus int2 = $data_armors[$game_party.actors.armor4_id].int_plus end end end color1 = Color.new(25, 210, 25, 255) color2 = Color.new(210, 25, 25, 255) if $game_party.actors.equippable?(item) self.contents.font.color = normal_color # PDEF if (pdef1 - pdef2) > 0 self.contents.font.color = color1 elsif (pdef1 - pdef2) < 0 self.contents.font.color = color2 else self.contents.font.color = normal_color end self.contents.draw_text(x + 25, y + 80, 70, 32, (pdef1 - pdef2).to_s, 2) # MDEF if (mdef1 - mdef2) > 0 self.contents.font.color = color1 elsif (mdef1 - mdef2) < 0 self.contents.font.color = color2 else self.contents.font.color = normal_color end self.contents.draw_text(x + 25, y + 112, 70, 32, (mdef1 - mdef2).to_s, 2) # STR if (str1 - str2) > 0 self.contents.font.color = color1 elsif (str1 - str2) < 0 self.contents.font.color = color2 else self.contents.font.color = normal_color end self.contents.draw_text(x + 125, y + 48, 70, 32, (str1 - str2).to_s, 2) # DEX if (dex1 - dex2) > 0 self.contents.font.color = color1 elsif (dex1 - dex2) < 0 self.contents.font.color = color2 else self.contents.font.color = normal_color end self.contents.draw_text(x + 125, y + 80, 70, 32, (dex1 - dex2).to_s, 2) # AGI if (agi1 - agi2) > 0 self.contents.font.color = color1 elsif (agi1 - agi2) < 0 self.contents.font.color = color2 else self.contents.font.color = normal_color end self.contents.draw_text(x + 125, y + 112, 70, 32, (agi1 - agi2).to_s, 2) # INT if (int1 - int2) > 0 self.contents.font.color = color1 elsif (int1 - int2) < 0 self.contents.font.color = color2 else self.contents.font.color = normal_color end self.contents.draw_text(x + 125, y + 144, 70, 32, (int1 - int2).to_s, 2) if item.is_a?(RPG::Weapon) self.contents.font.color = system_color self.contents.draw_text(x, y + 48, 80, 32, "Atk:") self.contents.draw_text(x, y + 80, 80, 32, "Pdef:") self.contents.draw_text(x, y + 112, 80, 32, "Mdef:") self.contents.draw_text(x + 110, y + 48, 80, 32, "Str:") self.contents.draw_text(x + 110, y + 80, 80, 32, "Dex:") self.contents.draw_text(x + 110, y + 112, 80, 32, "Agi:") self.contents.draw_text(x + 110, y + 144, 80, 32, "Int:") self.contents.font.color = normal_color # ATTACK if (atk1 - atk2) > 0 self.contents.font.color = color1 elsif (atk1 - atk2) < 0 self.contents.font.color = color2 else self.contents.font.color = normal_color end self.contents.draw_text(x + 25, y + 48, 70, 32, (atk1 - atk2).to_s, 2) # ELSE if armor... else self.contents.font.color = system_color self.contents.draw_text(x, y + 48, 80, 32, "Eva:") self.contents.draw_text(x, y + 80, 80, 32, "Pdef:") self.contents.draw_text(x, y + 112, 80, 32, "Mdef:") self.contents.draw_text(x + 110, y + 48, 80, 32, "Str:") self.contents.draw_text(x + 110, y + 80, 80, 32, "Dex:") self.contents.draw_text(x + 110, y + 112, 80, 32, "Agi:") self.contents.draw_text(x + 110, y + 144, 80, 32, "Int:") self.contents.font.color = normal_color if (eva1 - eva2) > 0 self.contents.font.color = color1 elsif (eva1 - eva2) < 0 self.contents.font.color = color2 else self.contents.font.color = normal_color end self.contents.draw_text(x + 25, y + 48, 70, 32, (eva1 - eva2).to_s, 2) end else self.contents.font.color = disabled_color self.contents.draw_text(x + 10, y + 80, 120, 32, "Cannot Equip") self.contents.font.color = normal_color end end end end #=============================================================================== # END Window_Shop_Actors #=============================================================================== #=============================================================================== # Window_Shop_Amount #=============================================================================== class Window_Shop_Amount < Window_Selectable attr_accessor :amount def initialize super(80, 208, 480, 96) @item_max = 1 self.contents = Bitmap.new(width - 32, height - 32) self.visible = false self.z += 100 @amount = 1 item = $data_items[1] option_index = 0 refresh(item, option_index) end def refresh(item, option_index) self.contents.clear if item == nil return end if option_index == nil return end if option_index == 0 self.contents.font.color = system_color self.contents.draw_text(0, 0, 200, 32, "How many?") self.contents.font.color = normal_color if $game_party.gold < (@amount * item.price) self.contents.font.color = disabled_color end bitmap = RPG::Cache.icon(item.icon_name) opacity = self.contents.font.color == normal_color ? 255 : 128 self.contents.blt(0, 36, bitmap, Rect.new(0, 0, 24, 24), opacity) self.contents.draw_text(28, 32, 120, 32, item.name) self.contents.draw_text(335, 32, 10, 32, "x") self.contents.draw_text(280, 32, 30, 32, @amount.to_s, 2) self.cursor_rect.set(284, 32, 32, 32) self.contents.draw_text(370, 32, 70, 32, (@amount * item.price).to_s, 2) else self.contents.font.color = system_color self.contents.draw_text(0, 0, 200, 32, "How many?") self.contents.font.color = normal_color bitmap = RPG::Cache.icon(item.icon_name) opacity = self.contents.font.color == normal_color ? 255 : 128 self.contents.blt(0, 36, bitmap, Rect.new(0, 0, 24, 24), opacity) self.contents.draw_text(28, 32, 120, 32, item.name) self.contents.draw_text(335, 32, 10, 32, "x") self.contents.draw_text(280, 32, 30, 32, @amount.to_s, 2) self.cursor_rect.set(284, 32, 32, 32) self.contents.draw_text(370, 32, 70, 32, (@amount * (item.price / 2)).to_s, 2) end end end #=============================================================================== # END Window_Shop_Amount #=============================================================================== #=============================================================================== # Scene_Shop #=============================================================================== class Scene_Shop def main @counter = 0 @info_window = Window_Shop_Info.new @option_window = Window_Shop_Option.new @gold_window = Window_Shop_Gold.new @own_window = Window_Shop_Own.new @list_window = Window_Shop_List.new($game_temp.shop_goods) @desc_item_window = Window_Shop_Description_Item.new @desc_equip_window = Window_Shop_Description_Equipment.new @actor_window = Window_Shop_Actors.new @amount_window = Window_Shop_Amount.new Graphics.transition loop do Graphics.update Input.update update if $scene != self break end end Graphics.freeze @info_window.dispose @option_window.dispose @gold_window.dispose @own_window.dispose @list_window.dispose @desc_item_window.dispose @desc_equip_window.dispose @actor_window.dispose @amount_window.dispose end def update @info_window.update @option_window.update @gold_window.update @own_window.update @list_window.update @desc_item_window.update @desc_equip_window.update @actor_window.update @amount_window.update if @option_window.active update_option return end if @list_window.active update_list return end if @actor_window.visible update_actors return end if @amount_window.active and @option_window.index == 0 update_amount return end if @amount_window.active and @option_window.index == 1 update_sell return end end def update_option @info_window.refresh(0) if Input.trigger?(Input::B) $game_system.se_play($data_system.cancel_se) $scene = Scene_Map.new return end if Input.trigger?(Input::C) case @option_window.index when 0 $game_system.se_play($data_system.decision_se) @list_window.refresh @option_window.active = false @list_window.visible = true @list_window.active = true @list_window.index = 0 when 1 $game_system.se_play($data_system.decision_se) @list_window.refresh_sell(@option_window.index) @option_window.active = false @list_window.visible = true @list_window.active = true @list_window.index = 0 when 2 $game_system.se_play($data_system.cancel_se) $scene = Scene_Map.new return end end end def update_list @info_window.refresh(1) @item = @list_window.item if @counter != 1 if @item.is_a?(RPG::Item) @desc_item_window.refresh(@item) @counter = 1 else @desc_equip_window.refresh(@item) @counter = 1 end end @own_window.refresh(@list_window.item) if Input.trigger?(Input::UP) or Input.trigger?(Input::DOWN) or Input.repeat?(Input::UP) or Input.repeat?(Input::DOWN) @counter = 0 end if @item.is_a?(RPG::Item) if @counter != 1 @desc_item_window.refresh(@item) @counter = 1 end @desc_item_window.visible = true @desc_equip_window.visible = false else if @counter != 1 @desc_equip_window.refresh(@item) @counter = 1 end @desc_item_window.visible = false @desc_equip_window.visible = true end if Input.trigger?(Input::B) @counter = 0 $game_system.se_play($data_system.cancel_se) @desc_item_window.visible = false @desc_equip_window.visible = false @desc_item_window.refresh(nil) @desc_equip_window.refresh(nil) @option_window.active = true @list_window.visible = false @list_window.active = false @own_window.refresh(nil) return end if Input.trigger?(Input::A) unless @item.is_a?(RPG::Item) $game_system.se_play($data_system.decision_se) @actor_window.refresh(@item) @actor_window.visible = true @list_window.active = false return else $game_system.se_play($data_system.buzzer_se) end end if Input.trigger?(Input::C) if @item == nil or @item.id == 0 or @item.price == 0 $game_system.se_play($data_system.buzzer_se) return end if @option_window.index == 0 case @item when RPG::Item if $game_party.item_number(@item.id) >= 99 $game_system.se_play($data_system.buzzer_se) return end when RPG::Weapon if $game_party.weapon_number(@item.id) >= 99 $game_system.se_play($data_system.buzzer_se) return end when RPG::Armor if $game_party.armor_number(@item.id) >= 99 $game_system.se_play($data_system.buzzer_se) return end end end $game_system.se_play($data_system.decision_se) @amount_window.visible = true @amount_window.active = true @list_window.active = false return end end def update_actors if Input.trigger?(Input::B) $game_system.se_play($data_system.cancel_se) @actor_window.visible = false @list_window.active = true end end def update_amount @amount_window.refresh(@item, @option_window.index) if Input.trigger?(Input::B) $game_system.se_play($data_system.cancel_se) @amount_window.amount = 1 @amount_window.visible = false @amount_window.active = false @list_window.active = true return end if Input.trigger?(Input::C) if $game_party.gold >= (@amount_window.amount * @item.price) $game_system.se_play($data_system.decision_se) $game_party.lose_gold(@amount_window.amount * @item.price) case @item when RPG::Item $game_party.gain_item(@item.id, @amount_window.amount) when RPG::Weapon $game_party.gain_weapon(@item.id, @amount_window.amount) when RPG::Armor $game_party.gain_armor(@item.id, @amount_window.amount) end @gold_window.refresh @amount_window.amount = 1 @amount_window.visible = false @amount_window.active = false @list_window.active = true @list_window.refresh return else $game_system.se_play($data_system.buzzer_se) end end if Input.trigger?(Input::LEFT) $game_system.se_play($data_system.cursor_se) @amount_window.amount -= 1 if @amount_window.amount == 0 @amount_window.amount = 1 end return end if Input.trigger?(Input::RIGHT) $game_system.se_play($data_system.cursor_se) @amount_window.amount += 1 case @item when RPG::Item if ($game_party.item_number(@item.id) + @amount_window.amount) > 99 @amount_window.amount = (99 - $game_party.item_number(@item.id)) end when RPG::Weapon if ($game_party.weapon_number(@item.id) + @amount_window.amount) > 99 @amount_window.amount = (99 - $game_party.weapon_number(@item.id)) end when RPG::Armor if ($game_party.armor_number(@item.id) + @amount_window.amount) > 99 @amount_window.amount = (99 - $game_party.armor_number(@item.id)) end end return end if Input.trigger?(Input::UP) $game_system.se_play($data_system.cursor_se) @amount_window.amount += 10 case @item when RPG::Item if ($game_party.item_number(@item.id) + @amount_window.amount) > 99 @amount_window.amount = (99 - $game_party.item_number(@item.id)) end when RPG::Weapon if ($game_party.weapon_number(@item.id) + @amount_window.amount) > 99 @amount_window.amount = (99 - $game_party.weapon_number(@item.id)) end when RPG::Armor if ($game_party.armor_number(@item.id) + @amount_window.amount) > 99 @amount_window.amount = (99 - $game_party.armor_number(@item.id)) end end return end if Input.trigger?(Input::DOWN) $game_system.se_play($data_system.cursor_se) @amount_window.amount -= 10 if @amount_window.amount < 1 @amount_window.amount = 1 end return end end def update_sell @amount_window.refresh(@item, @option_window.index) if Input.trigger?(Input::B) $game_system.se_play($data_system.cancel_se) @amount_window.amount = 1 @amount_window.visible = false @amount_window.active = false @list_window.active = true return end if Input.trigger?(Input::C) if @item.price == 0 $game_system.se_play($data_system.buzzer_se) return end $game_system.se_play($data_system.decision_se) case @item when RPG::Item $game_party.gain_gold(@amount_window.amount * (@item.price / 2)) $game_party.lose_item(@item.id, @amount_window.amount) when RPG::Weapon $game_party.gain_gold(@amount_window.amount * (@item.price / 2)) $game_party.lose_weapon(@item.id, @amount_window.amount) when RPG::Armor $game_party.gain_gold(@amount_window.amount * (@item.price / 2)) $game_party.lose_armor(@item.id, @amount_window.amount) end @gold_window.refresh @amount_window.amount = 1 @amount_window.visible = false @amount_window.active = false @list_window.active = true @list_window.refresh_sell(@option_window.index) @desc_equip_window.refresh(nil) @desc_item_window.refresh(nil) end if Input.trigger?(Input::LEFT) $game_system.se_play($data_system.cursor_se) @amount_window.amount -= 1 if @amount_window.amount < 1 @amount_window.amount = 1 end end if Input.trigger?(Input::RIGHT) $game_system.se_play($data_system.cursor_se) case @item when RPG::Item @amount_window.amount += 1 if @amount_window.amount > $game_party.item_number(@item.id) @amount_window.amount = $game_party.item_number(@item.id) end when RPG::Weapon @amount_window.amount += 1 if @amount_window.amount > $game_party.weapon_number(@item.id) @amount_window.amount = $game_party.weapon_number(@item.id) end when RPG::Armor @amount_window.amount += 1 if @amount_window.amount > $game_party.armor_number(@item.id) @amount_window.amount = $game_party.armor_number(@item.id) end end end if Input.trigger?(Input::UP) $game_system.se_play($data_system.cursor_se) case @item when RPG::Item @amount_window.amount += 10 if @amount_window.amount > $game_party.item_number(@item.id) @amount_window.amount = $game_party.item_number(@item.id) end when RPG::Weapon @amount_window.amount += 10 if @amount_window.amount > $game_party.weapon_number(@item.id) @amount_window.amount = $game_party.weapon_number(@item.id) end when RPG::Armor @amount_window.amount += 10 if @amount_window.amount > $game_party.armor_number(@item.id) @amount_window.amount = $game_party.armor_number(@item.id) end end end if Input.trigger?(Input::DOWN) $game_system.se_play($data_system.cursor_se) @amount_window.amount -= 10 if @amount_window.amount < 1 @amount_window.amount = 1 end end end end Instructions Please look in-script. Compatibility There are no known compatability issues. Credits and Thanks The only person to really credit is me. Share this post Link to post Share on other sites
Wyzrd 12 Report post Posted January 23, 2008 Looks good Leon and it's good to see someone changing the default menus like you do. Share this post Link to post Share on other sites
k03n 0 Report post Posted January 24, 2008 I need help it gives me an error that has something to do with line 9 Script 'custom shop script' Line 9 TypeError Occurred no implicit conversion from nil to integer how do i fix this one ps it occurred when i wanted to shop not when starting the game Share this post Link to post Share on other sites
Wyzrd 12 Report post Posted January 24, 2008 OK I just tried this out. It works in the Postality Knights version but not the legal version of RMXP. Except I got the error on line 25 which says self.contents.font.size = $defaultfontsize So I deleted that then it came up on line 52 deleted it there to. Then it came up on line 78 and deleted it there to. Then it comes up on line 102 so I deleted it there to. Then it comes up on line 138 s I deleted it there to. Then it comes up on line 277 so I deleted it there to. Then it comes up on line 336 so I deleted it there to. Then it comes up on line 434 so I deleted it there to. Then it comes up on line 643 so I deleted it there to. Then it allows you to go into the shop menu but shows u no text and if you go to the Buy command (assuming u know which one it is, it gives ut he same error on 176 so I deleted it there to.) Now the buy menu is working besides there is no text to say what you are buying. Now if you go to Sell you get the same error but on line 209 so once again I deleted it. Now the whole shop thing works with the exception of no text. Hope this helps Leon. I know it won't help k03n with the problem but hey I just completely diagnosed the whole thing to the best of my ability. Share this post Link to post Share on other sites
Leon 55 Report post Posted January 24, 2008 Script fixed. Share this post Link to post Share on other sites
Wyzrd 12 Report post Posted January 24, 2008 Thanks Leon, works like a charm now. :D Share this post Link to post Share on other sites
BlueLightning 0 Report post Posted January 25, 2008 Hey thanks! That looks really great! Share this post Link to post Share on other sites
Guest Hellfire Dragon Report post Posted January 25, 2008 Cool script, works perfectly. The 'character compatibility' was a nice touch Share this post Link to post Share on other sites
Sicmonkey7 0 Report post Posted January 27, 2008 When i go to test it it says that the name is wrong.... what should i call it? Shopping System Share this post Link to post Share on other sites
Leon 55 Report post Posted January 28, 2008 What is the exact error? Share this post Link to post Share on other sites
Sicmonkey7 0 Report post Posted January 28, 2008 When I go to load test it, it says, "????? 'Leon's Shopping System' ? 2 ??? SyntaxError ????????" Share this post Link to post Share on other sites
zayer 0 Report post Posted May 22, 2009 Sorry to necroposting.. but i dont have text... :S Share this post Link to post Share on other sites
Kiriashi 117 Report post Posted May 22, 2009 xD You can't just necro post and apologize for it. Next time please send a PM to the author of a topic. So what do you mean you don't have text? Did you follow the instructions? Do you have a different font in your game? Please specify. Share this post Link to post Share on other sites
Polraudio 122 Report post Posted May 22, 2009 It looks as if you dont have the legal version of RMXP. You need to legal version to view the text. I know theres another way but i forgot cause i been using the legal version for 4 years now. Share this post Link to post Share on other sites
Kiriashi 117 Report post Posted May 22, 2009 I don't think we're supposed to be talking about this kinda' stuff. Sooo, yeah. Actually I know we're not supposed to talk about this kind of stuff. We can't help you man. Share this post Link to post Share on other sites