Últimos temas
» [Ace]Movimiento Libre
por brrt Ayer a las 3:57 pm

» Virtual Kingom (Old Version)
por NinjaLOL Ayer a las 3:22 am

» Concurso de relatos - Septiembre/Octubre 2018 [Inscripción]
por raffael_0 Ayer a las 3:18 am

» Laminación [VXACE] [PROYECTO EN CURSO]
por Pocari Vie Oct 12, 2018 12:08 pm

» QUITAR VENTANA DEL MENU (VX ACE)
por THESHINYMISTERXD Sáb Oct 06, 2018 7:46 pm

» Condición para saber si el jugador está caminando
por Sonik Sáb Oct 06, 2018 5:03 pm

» ¿Tileset de un futbolín?
por MCarlos15 Jue Oct 04, 2018 9:07 pm

» RPG Maker VX Ace en MAC
por Er1ck_92 Mar Oct 02, 2018 8:42 am

» Distrito 0 [VXACE]
por BREAK93 Mar Oct 02, 2018 6:08 am

» Necesito taileset modernos pero que no tengan estilo anime por favor
por Doble D Mar Oct 02, 2018 12:36 am

» Fantasy World XP (+ de 200 para o grupo)
por DecinBR Sáb Sep 29, 2018 6:28 pm

» Problemas con un archivo
por AetherIssei Dom Sep 23, 2018 4:08 am


[Ace] Yanfly Engine - Common Event Shop

Ir abajo

[Ace] Yanfly Engine - Common Event Shop

Mensaje por ShadielTH el Jue Oct 02, 2014 6:10 pm

Bien, este script que tenia en mi pequeña carpetita de scripts sirve para crear unas tiendas especiales en las que podemos vender Eventos Comunes que se ejecuten nada mas comprarlos.

Creditos a Yanfly por el script.

NOTA: Traducire el script al español mas adelante, disculpad las molestias.

Código:
#==============================================================================
#
# ▼ Yanfly Engine Ace - Common Event Shop v1.00
# -- Last Updated: 2012.01.13
# -- Level: Normal, Hard
# -- Requires: n/a
#
#==============================================================================

$imported = {} if $imported.nil?
$imported["YEA-CommonEventShop"] = true

#==============================================================================
# ▼ Updates
# =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# 2012.01.13 - Started Script and Finished.
#
#==============================================================================
# ▼ Introduction
# =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# Sometimes, being able to buy items just isn't enough. With the common event
# shop, you can set anything to be sold as long as you can event it. Expanded
# upon the original Yanfly Engine ReDux version, the Ace version gives more
# options such as using custom switches to enable/disable common events from
# being bought or even appearing. And if that wasn't enough, advanced users can
# use eval strings for more conditional common events.
#
#==============================================================================
# ▼ Instructions
# =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# To install this script, open up your script editor and copy/paste this script
# to an open slot below ▼ Materials/素材 but above ▼ Main. Remember to save.
#
# -----------------------------------------------------------------------------
# Common Event Notetags - These notetags go in a common event's comments.
# -----------------------------------------------------------------------------
# <cost: x>
# Sets the gold cost of the common event to x gold. If this notetag is not used
# the default gold cost will be whatever DEFAULT_COST is in the script module.
#
# <exit shop>
# When this event is bought, the player will automatically exit the shop before
# the common event will take place. If this tag is not used, the common event's
# contents will take place inside of the common event shop.
#
# <icon: x>
# Changes the icon used for the common event to x icon index. If this notetag
# is not used, the icon used for the common event will be whatever DEFAULT_ICON
# is in the script module.
#
# <image: string>
# Changes the image used for the common event to filename "string" found in
# the Graphics\Pictures\ folder. Requires Ace Shop Options to use. If this tag
# is not used, the image displayed will be the common event's expanded icon.
#
# <help description>
#  string
# </help description>
# Sets the text used for the help window in the shop scene. Multiple lines in
# the notebox will be strung together. Use | for a line break. Text codes may
# be used inside of the help description.
#
# <shop data>
#  string
# </shop data>
# Can be used if you have Yanfly Engine Ace - Ace Shop Options installed. Sets
# the string as the text shown inside the data window the shop. Use | for a
# line break. Text codes may be used inside of the shop data text.
#
# <shop variables: x>
# <shop variables: x, x>
# This sets the variable x displayed in the status window in the lower right
# corner of the screen. Insert multiples of this notetag to display more
# variables inside of the status window.
#
# <shop enable switch: x>
# <shop enable switch: x, x>
# This notetag will cause the common event item to require switch x to be ON
# before the common event can be bought. Insert multiples of these notetags to
# require more switches to be ON before the common event item can be gouth.
#
# <shop enable eval>
#  string
#  string
# </shop enable eval>
# Advanced users can enable and disable common events from being bought through
# this notetag. Replace string with lines of code to check for whether or not
# the common event can be sold. If multiple lines are used, they are considered
# to be a part of the same line.
#
# <shop show switch: x>
# <shop show switch: x, x>
# This notetag will cause the common event item to be hidden unless switch x is
# ON. Insert multiple of these notetags to require more switches to be ON
# before the common event item will be shown in the shop.
#
# <shop show eval>
#  string
#  string
# </shop show eval>
# Advanced users can show and hide common events from being listed in the buy
# list through this notetag. Replace string with lines of code to check for
# whether or not the common event will be shown. If multiple lines are used,
# they are considered to be a part of the same line.
#
# -----------------------------------------------------------------------------
# Script Calls - These commands are used with script calls.
# -----------------------------------------------------------------------------
# common_event_shop(x)
# This will call common event shop x. x will the shop ID used from the SHOPS
# hash in the script's module. Any items placed within the array assigned to
# the shop ID will be sold as common events.
#
#==============================================================================
# ▼ Compatibility
# =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# This script is made strictly for RPG Maker VX Ace. It is highly unlikely that
# it will run with RPG Maker VX without adjusting.
#
# This script is compatible with Yanfly Engine Ace - Ace Shop Options v1.00+.
# The position of this script does not matter relative to the other script.
#
#==============================================================================

module YEA
  module COMMON_EVENT_SHOP
    
    #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
    # - General Settings -
    #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
    # These settings below adjust the default costs for common events (if no
    # custom costs are used), the default icons used, and what kinds of common
    # events are sold for each of the shop ID's.
    #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
    DEFAULT_COST = 1000        # Default gold cost for common events.
    DEFAULT_ICON = 236         # Default icon used for common events.
    
    # This hash adjusts the common events sold in each of the shop ID's. Insert
    # the common events you want sold inside of the arrays with the shop ID as
    # the hash key. You can use number ranges to add common events quicker.
    SHOPS ={
    # ID  => [Common Event ID's],
       1  => [1, 2..8, 9, 10],
       2  => [11..20],
       3  => [21..30],
    } # Do not remove this.
    
  end # COMMON_EVENT_SHOP
end # YEA

#==============================================================================
# ▼ Editting anything past this point may potentially result in causing
# computer damage, incontinence, explosion of user's head, coma, death, and/or
# halitosis so edit at your own risk.
#==============================================================================

module YEA
  module COMMON_EVENT_SHOP
    module_function
    #--------------------------------------------------------------------------
    # convert_integer_array
    #--------------------------------------------------------------------------
    def convert_integer_array(array)
      result = []
      array.each { |i|
        case i
        when Range; result |= i.to_a
        when Integer; result |= [i]
        end }
      return result
    end
    #--------------------------------------------------------------------------
    # convert_full_hash
    #--------------------------------------------------------------------------
    def convert_full_hash(hash)
      result = {}
      hash.each { |key| result[key[0]] = convert_integer_array(key[1]) }
      return result
    end
    #--------------------------------------------------------------------------
    # converted_contants
    #--------------------------------------------------------------------------
    SHOPS = convert_full_hash(SHOPS)
  end # COMMON_EVENT_SHOP
  module REGEXP
  module COMMONEVENT
    
    COST                 = /<(?:COST|shop cost):[ ](\d+)>/i
    IMAGE                = /<(?:IMAGE|image):[ ](.*)>/i
    ICON_INDEX           = /<(?:ICON|icon index):[ ](\d+)>/i
    EVENT_TYPE_EXIT      = /<(?:EXIT_SHOP|exit shop)>/i
    SHOP_VARIABLES       =
      /<(?:SHOP_VARIABLES|shop variables):[ ]*(\d+(?:\s*,\s*\d+)*)>/i
    HELP_DESCRIPTION_ON  = /<(?:HELP_DESCRIPTION|help description)>/i
    HELP_DESCRIPTION_OFF = /<\/(?:HELP_DESCRIPTION|help description)>/i
    SHOP_DATA_ON         = /<(?:SHOP_DATA|shop data)>/i
    SHOP_DATA_OFF        = /<\/(?:SHOP_DATA|shop data)>/i
    SHOP_ENABLE_SWITCH   =
      /<(?:SHOP_ENABLE_SWITCH|shop enable switch):[ ]*(\d+(?:\s*,\s*\d+)*)>/i
    SHOP_SHOW_SWITCH     =
      /<(?:SHOP_SHOW_SWITCH|shop show switch):[ ]*(\d+(?:\s*,\s*\d+)*)>/i
    SHOP_ENABLE_EVAL_ON  = /<(?:SHOP_ENABLE_EVAL|shop enable eval)>/i
    SHOP_ENABLE_EVAL_OFF = /<\/(?:SHOP_ENABLE_EVAL|shop enable eval)>/i
    SHOP_SHOW_EVAL_ON    = /<(?:SHOP_SHOW_EVAL|shop show eval)>/i
    SHOP_SHOW_EVAL_OFF   = /<\/(?:SHOP_SHOW_EVAL|shop show eval)>/i
    
  end # COMMONEVENT
  end # REGEXP
end # YEA

#==============================================================================
# ■ Numeric
#==============================================================================

class Numeric
  
  #--------------------------------------------------------------------------
  # new method: group_digits
  #--------------------------------------------------------------------------
  unless $imported["YEA-CoreEngine"]
  def group; return self.to_s; end
  end # $imported["YEA-CoreEngine"]
    
end # Numeric

#==============================================================================
# ■ DataManager
#==============================================================================

module DataManager
  
  #--------------------------------------------------------------------------
  # alias method: load_database
  #--------------------------------------------------------------------------
  class <<self; alias load_database_ces load_database; end
  def self.load_database
    load_database_ces
    load_notetags_ces
  end
  
  #--------------------------------------------------------------------------
  # new method: load_notetags_ces
  #--------------------------------------------------------------------------
  def self.load_notetags_ces
    groups = [$data_common_events]
    for group in groups
      for obj in group
        next if obj.nil?
        obj.load_notetags_ces
      end
    end
  end
  
end # DataManager

#==============================================================================
# ■ RPG::Actor
#==============================================================================

class RPG::CommonEvent
  
  #--------------------------------------------------------------------------
  # public instance variables
  #--------------------------------------------------------------------------
  attr_accessor :cost
  attr_accessor :description
  attr_accessor :event_type
  attr_accessor :icon_index
  attr_accessor :image
  attr_accessor :shop_variables
  attr_accessor :shop_data
  attr_accessor :shop_enable_switch
  attr_accessor :shop_enable_eval
  attr_accessor :shop_show_switch
  attr_accessor :shop_show_eval
  
  #--------------------------------------------------------------------------
  # common cache: load_notetags_ces
  #--------------------------------------------------------------------------
  def load_notetags_ces
    @cost = YEA::COMMON_EVENT_SHOP::DEFAULT_COST
    @description = ""
    @event_type = :instore
    @icon_index = YEA::COMMON_EVENT_SHOP::DEFAULT_ICON
    @image = nil
    @shop_variables = []
    @shop_data = ""
    @shop_enable_switch = []
    @shop_enable_eval = nil
    @shop_show_switch = []
    @shop_show_eval = nil
    @help_description_on = false
    @shop_data_on = false
    @shop_enable_eval_on = false
    @shop_show_eval_on = false
    #---
    self.note.split(/[\r\n]+/).each { |line|
      case line
      #---
      when YEA::REGEXP::COMMONEVENT::COST
        @cost = $1.to_i
      when YEA::REGEXP::COMMONEVENT::ICON_INDEX
        @icon_index = $1.to_i
      when YEA::REGEXP::COMMONEVENT::IMAGE
        @image = $1.to_s
      #---
      when YEA::REGEXP::COMMONEVENT::EVENT_TYPE_EXIT
        @event_type = :exit
      #---
      when YEA::REGEXP::COMMONEVENT::SHOP_VARIABLES
        $1.scan(/\d+/).each { |num|
        @shop_variables.push(num.to_i) if num.to_i > 0 }
      when YEA::REGEXP::COMMONEVENT::SHOP_ENABLE_SWITCH
        $1.scan(/\d+/).each { |num|
        @shop_enable_switch.push(num.to_i) if num.to_i > 0 }
      when YEA::REGEXP::COMMONEVENT::SHOP_SHOW_SWITCH
        $1.scan(/\d+/).each { |num|
        @shop_show_switch.push(num.to_i) if num.to_i > 0 }
      #---
      when YEA::REGEXP::COMMONEVENT::HELP_DESCRIPTION_ON
        @help_description_on = true
      when YEA::REGEXP::COMMONEVENT::HELP_DESCRIPTION_OFF
        @help_description_on = false
      when YEA::REGEXP::COMMONEVENT::SHOP_DATA_ON
        @shop_data_on = true
      when YEA::REGEXP::COMMONEVENT::SHOP_DATA_OFF
        @shop_data_on = false
      when YEA::REGEXP::COMMONEVENT::SHOP_ENABLE_EVAL_ON
        @shop_enable_eval = ""
        @shop_enable_eval_on = true
      when YEA::REGEXP::COMMONEVENT::SHOP_ENABLE_EVAL_OFF
        @shop_enable_eval_on = false
      when YEA::REGEXP::COMMONEVENT::SHOP_SHOW_EVAL_ON
        @shop_show_eval = ""
        @shop_show_eval_on = true
      when YEA::REGEXP::COMMONEVENT::SHOP_SHOW_EVAL_OFF
        @shop_show_eval_on = false
      else
        @description += line.to_s if @help_description_on
        @shop_data += line.to_s if @shop_data_on
        @shop_enable_eval += line.to_s if @shop_enable_eval_on
        @shop_show_eval += line.to_s if @shop_show_eval_on
      #---
      end
    } # self.note.split
    #---
    @description.gsub!(/[|]/i) { "\n" }
    @shop_data.gsub!(/[|]/i) { "\n" }
  end
  
  #--------------------------------------------------------------------------
  # new method: note
  #--------------------------------------------------------------------------
  def note
    @note = ""
    @list.each { |event|
      next if event.nil?
      next unless [108, 408].include?(event.code)
      @note += event.parameters[0] + "\r\n"
    } # Do not remove
    return @note
  end
  
end # RPG::Actor

#==============================================================================
# ■ Game_Interpreter
#==============================================================================

class Game_Interpreter
  
  #--------------------------------------------------------------------------
  # common_event_shop
  #--------------------------------------------------------------------------
  def common_event_shop(shop_id)
    return unless SceneManager.scene_is?(Scene_Map)
    return unless YEA::COMMON_EVENT_SHOP::SHOPS.include?(shop_id)
    SceneManager.call(Scene_CommonEventShop)
    goods = YEA::COMMON_EVENT_SHOP::SHOPS[shop_id]
    SceneManager.scene.prepare(goods)
  end
  
end # Game_Interpreter

#==============================================================================
# ■ Spriteset_CommonEventShop
#==============================================================================

class Spriteset_CommonEventShop < Spriteset_Map
  
  #--------------------------------------------------------------------------
  # initialize
  #--------------------------------------------------------------------------
  def initialize
    create_viewports
    create_pictures
    update
  end
  
  #--------------------------------------------------------------------------
  # create_viewports
  #--------------------------------------------------------------------------
  def create_viewports
    @viewport = Viewport.new
    @viewport.z = 2000
  end
  
  #--------------------------------------------------------------------------
  # dispose
  #--------------------------------------------------------------------------
  def dispose
    dispose_pictures
    dispose_viewports
  end
  
  #--------------------------------------------------------------------------
  # dispose_viewports
  #--------------------------------------------------------------------------
  def dispose_viewports
    @viewport.dispose
  end
  
  #--------------------------------------------------------------------------
  # update
  #--------------------------------------------------------------------------
  def update
    update_pictures
    update_viewports
  end
  
  #--------------------------------------------------------------------------
  # update_viewports
  #--------------------------------------------------------------------------
  def update_viewports
    @viewport.update
  end
  
  #--------------------------------------------------------------------------
  # update_pictures
  #--------------------------------------------------------------------------
  def update_pictures
    $game_map.screen.pictures.each do |pic|
      @picture_sprites[pic.number] ||= Sprite_Picture.new(@viewport, pic)
      @picture_sprites[pic.number].update
    end
  end
  
end # Spriteset_CommonEventShop

#==============================================================================
# ■ Window_Message
#==============================================================================

class Window_Message < Window_Base
  
  #--------------------------------------------------------------------------
  # public instance variables
  #--------------------------------------------------------------------------
  attr_accessor :back_sprite
  
end # Window_Message

#==============================================================================
# ■ Window_CommonEventShopCommand
#==============================================================================

class Window_CommonEventShopCommand < Window_ShopCommand
  
  #--------------------------------------------------------------------------
  # col_max
  #--------------------------------------------------------------------------
  def col_max
    return super if $imported["YEA-ShopOptions"]
    return 2
  end
  
  #--------------------------------------------------------------------------
  # make_command_list
  #--------------------------------------------------------------------------
  def make_command_list
    add_command(Vocab::ShopBuy,    :buy)
    add_command(Vocab::ShopCancel, :cancel)
  end
  
end # Window_CommonEventShopCommand

#==============================================================================
# ■ Window_CommonEventShopStatus
#==============================================================================

class Window_CommonEventShopStatus < Window_ShopStatus
  
  #--------------------------------------------------------------------------
  # update_page
  #--------------------------------------------------------------------------
  def update_page
  end
  
  #--------------------------------------------------------------------------
  # refresh
  #--------------------------------------------------------------------------
  def refresh
    contents.clear
    reset_font_settings
    draw_shop_variables
  end
  
  #--------------------------------------------------------------------------
  # draw_shop_variables
  #--------------------------------------------------------------------------
  def draw_shop_variables
    return if @item.nil?
    dy = 0
    for variable_id in @item.shop_variables
      next if $game_variables[variable_id].nil?
      draw_variable_info(variable_id, dy)
      dy += line_height
      return if dy + line_height > contents.height
    end
  end
  
  #--------------------------------------------------------------------------
  # draw_variable_info
  #--------------------------------------------------------------------------
  def draw_variable_info(variable_id, dy)
    change_color(system_color)
    name = $data_system.variables[variable_id]
    draw_text(4, dy, contents.width - 8, line_height, name)
    change_color(normal_color)
    value = $game_variables[variable_id]
    value = value.group if value.is_a?(Integer)
    draw_text(4, dy, contents.width - 8, line_height, value, 2)
  end
  
end # Window_CommonEventShopStatus

#==============================================================================
# ■ Window_CommonEventShopBuy
#==============================================================================

class Window_CommonEventShopBuy < Window_ShopBuy
  
  #--------------------------------------------------------------------------
  # make_item_list
  #--------------------------------------------------------------------------
  def make_item_list
    @data = []
    @price = {}
    @shop_goods.each do |event_id|
      next if $data_common_events[event_id].nil?
      item = $data_common_events[event_id]
      next unless include?(item)
      @data.push(item)
      @price[item] = item.cost
    end
  end
  
  #--------------------------------------------------------------------------
  # include?
  #--------------------------------------------------------------------------
  def include?(item)
    return false unless show_show_switch?(item)
    return false unless shop_show_eval?(item)
    return true
  end
  
  #--------------------------------------------------------------------------
  # show_show_switch?
  #--------------------------------------------------------------------------
  def show_show_switch?(item)
    return false if item.nil?
    for switch_id in item.shop_show_switch
      return false unless $game_switches[switch_id]
    end
    return true
  end
  
  #--------------------------------------------------------------------------
  # shop_show_eval?
  #--------------------------------------------------------------------------
  def shop_show_eval?(item)
    return false if item.nil?
    return true if item.shop_show_eval.nil?
    return eval(item.shop_show_eval)
  end
  
  #--------------------------------------------------------------------------
  # draw_item_name
  #--------------------------------------------------------------------------
  def draw_item_name(item, dx, dy, enabled = true, dw = 172)
    return if item.nil?
    draw_icon(item.icon_index, dx, dy, enabled)
    change_color(normal_color, enabled)
    draw_text(dx+24, dy, dw, line_height, item.name)
  end
  
  #--------------------------------------------------------------------------
  # enable?
  #--------------------------------------------------------------------------
  def enable?(item)
    return false unless shop_enable_switch?(item)
    return false unless shop_enable_eval?(item)
    return !item.nil? && (price(item) <= @money)
  end
  
  #--------------------------------------------------------------------------
  # shop_enable_switch?
  #--------------------------------------------------------------------------
  def shop_enable_switch?(item)
    return false if item.nil?
    for switch_id in item.shop_enable_switch
      return false unless $game_switches[switch_id]
    end
    return true
  end
  
  #--------------------------------------------------------------------------
  # shop_req_eval?
  #--------------------------------------------------------------------------
  def shop_enable_eval?(item)
    return false if item.nil?
    return true if item.shop_enable_eval.nil?
    return eval(item.shop_enable_eval)
  end
  
end # Window_CommonEventShopBuy

#==============================================================================
# ■ Window_CommonEventShopData
#==============================================================================

class Window_CommonEventShopData < Window_Base
  
  #--------------------------------------------------------------------------
  # initialize
  #--------------------------------------------------------------------------
  def initialize(dx, dy, item_window)
    super(dx, dy, Graphics.width - dx, fitting_height(4))
    @item_window = item_window
    @item = nil
    refresh
  end
  
  #--------------------------------------------------------------------------
  # item_window=
  #--------------------------------------------------------------------------
  def item_window= (window)
    @item_window = window
    update_item(@item_window.item)
  end
  
  #--------------------------------------------------------------------------
  # update
  #--------------------------------------------------------------------------
  def update
    super
    update_item(@item_window.item)
  end
  
  #--------------------------------------------------------------------------
  # update_item
  #--------------------------------------------------------------------------
  def update_item(item)
    return if @item == item
    @item = item
    refresh
  end
  
  #--------------------------------------------------------------------------
  # refresh
  #--------------------------------------------------------------------------
  def refresh
    contents.clear
    reset_font_settings
    draw_empty
    return if @item.nil?
    draw_item_image
    draw_item_data
  end
  
  #--------------------------------------------------------------------------
  # draw_empty
  #--------------------------------------------------------------------------
  def draw_empty
    colour = Color.new(0, 0, 0, translucent_alpha/2)
    rect = Rect.new(1, 1, 94, 94)
    contents.fill_rect(rect, colour)
    dx = 96; dy = 0
    dw = contents.width - 96
    for i in 0...4
      draw_background_box(dx, dy, dw)
      dy += line_height
    end
  end
  
  #--------------------------------------------------------------------------
  # draw_background_box
  #--------------------------------------------------------------------------
  def draw_background_box(dx, dy, dw)
    colour = Color.new(0, 0, 0, translucent_alpha/2)
    rect = Rect.new(dx+1, dy+1, dw-2, line_height-2)
    contents.fill_rect(rect, colour)
  end
  
  #--------------------------------------------------------------------------
  # draw_item_image
  #--------------------------------------------------------------------------
  def draw_item_image
    if @item.image.nil?
      icon_index = @item.icon_index
      bitmap = Cache.system("Iconset")
      rect = Rect.new(icon_index % 16 * 24, icon_index / 16 * 24, 24, 24)
      target = Rect.new(0, 0, 96, 96)
      contents.stretch_blt(target, bitmap, rect)
    else
      bitmap = Cache.picture(@item.image)
      contents.blt(0, 0, bitmap, bitmap.rect, 255)
    end
  end
  
  #--------------------------------------------------------------------------
  # draw_item_data
  #--------------------------------------------------------------------------
  def draw_item_data
    draw_text_ex(98, 0, @item.shop_data)
  end
  
end # Window_CommonEventShopData

#==============================================================================
# ■ Scene_CommonEventShop
#==============================================================================

class Scene_CommonEventShop < Scene_Shop
  
  #--------------------------------------------------------------------------
  # prepare
  #--------------------------------------------------------------------------
  def prepare(goods)
    @goods = goods
    @purchase_only = true
  end
  
  #--------------------------------------------------------------------------
  # start
  #--------------------------------------------------------------------------
  def start
    super
    setup_interpreter
  end
  
  #--------------------------------------------------------------------------
  # terminate
  #--------------------------------------------------------------------------
  def terminate
    @spriteset.dispose
    super
  end
  
  #--------------------------------------------------------------------------
  # create_command_window
  #--------------------------------------------------------------------------
  def create_command_window
    wx = @gold_window.x
    @command_window = Window_CommonEventShopCommand.new(wx, false)
    @command_window.viewport = @viewport
    @command_window.y = @help_window.height
    @command_window.set_handler(:buy,    method(:command_buy))
    @command_window.set_handler(:cancel, method(:return_scene))
  end
  
  #--------------------------------------------------------------------------
  # create_status_window
  #--------------------------------------------------------------------------
  def create_status_window
    wx = @number_window.width
    wy = @dummy_window.y
    ww = Graphics.width - wx
    wh = @dummy_window.height
    @status_window = Window_CommonEventShopStatus.new(wx, wy, ww, wh)
    @status_window.viewport = @viewport
    @status_window.hide
  end
  
  #--------------------------------------------------------------------------
  # create_buy_window
  #--------------------------------------------------------------------------
  def create_buy_window
    wy = @dummy_window.y
    wh = @dummy_window.height
    @buy_window = Window_CommonEventShopBuy.new(0, wy, wh, @goods)
    @buy_window.viewport = @viewport
    @buy_window.help_window = @help_window
    @buy_window.status_window = @status_window
    @buy_window.hide
    @buy_window.set_handler(:ok,     method(:on_buy_ok))
    @buy_window.set_handler(:cancel, method(:on_buy_cancel))
  end
  
  #--------------------------------------------------------------------------
  # create_data_window
  #--------------------------------------------------------------------------
  def create_data_window
    return unless $imported["YEA-ShopOptions"]
    wx = @command_window.width
    wy = @command_window.y
    @data_window = Window_CommonEventShopData.new(wx, wy, @buy_window)
    @data_window.viewport = @viewport
  end
  
  #--------------------------------------------------------------------------
  # setup_interpreter
  #--------------------------------------------------------------------------
  def setup_interpreter
    @interpreter = Game_Interpreter.new
    @message_window = Window_Message.new
    @message_window.back_opacity = 255
    @message_window.back_sprite.viewport = @viewport
    @spriteset = Spriteset_CommonEventShop.new
  end
  
  #--------------------------------------------------------------------------
  # update_interpreter
  #--------------------------------------------------------------------------
  def update_interpreter
    update_basic
    @interpreter.update
  end
  
  #--------------------------------------------------------------------------
  # update_basic
  #--------------------------------------------------------------------------
  def update_basic
    $game_map.screen.update_pictures
    @spriteset.update
    super
  end
  
  #--------------------------------------------------------------------------
  # on_buy_ok
  #--------------------------------------------------------------------------
  def on_buy_ok
    perform_buy
    instore_event
    exit_event
  end
  
  #--------------------------------------------------------------------------
  # perform_buy
  #--------------------------------------------------------------------------
  def perform_buy
    Sound.play_shop
    $game_party.lose_gold(@buy_window.price(@buy_window.item))
    @buy_window.money = money
    @gold_window.refresh
  end
  
  #--------------------------------------------------------------------------
  # instore_event
  #--------------------------------------------------------------------------
  def instore_event
    event = @buy_window.item
    return unless event.event_type == :instore
    $game_temp.reserve_common_event(event.id)
    @interpreter.setup_reserved_common_event
    update_interpreter while @interpreter.running?
    common_event_refresh_windows
  end
  
  #--------------------------------------------------------------------------
  # exit_event
  #--------------------------------------------------------------------------
  def exit_event
    event = @buy_window.item
    return unless event.event_type == :exit
    $game_temp.reserve_common_event(event.id)
    return_scene
  end
  
  #--------------------------------------------------------------------------
  # common_event_refresh_windows
  #--------------------------------------------------------------------------
  def common_event_refresh_windows
    @buy_window.activate
    @buy_window.money = money
    @buy_window.refresh
    @buy_window.select([@buy_window.index, @buy_window.item_max - 1].min)
    @status_window.refresh
    @gold_window.refresh
    @data_window.refresh unless @data_window.nil?
  end
  
end # Scene_CommonEventShop

#==============================================================================
#
# ▼ End of File
#
#==============================================================================
avatar
ShadielTH
PJ de Quest
PJ de Quest

Masculino
España
RPG Maker : Ace
Mensajes : 46
Monedas : 50
Reputación : 7
Edad : 20
Localización : España. A lo mejor. Quizas. No se sabe :3

Volver arriba Ir abajo

Volver arriba

- Temas similares

 
Permisos de este foro:
No puedes responder a temas en este foro.