Плохо! Плохо!:  0
Показано с 1 по 4 из 4

Тема: Synthesis Shop

  1. #1
    Познающий Аватар для 100500
    Информация о пользователе
    Регистрация
    22.05.2011
    Сообщений
    351
    Записей в дневнике
    15
    Репутация: 28 Добавить или отнять репутацию

    Сообщение Synthesis Shop

    Synthesis Shop (VX)
    Автор: Zylos (rmrk.net)


    Описание: скрипт предназначен для создания магазина синтеза, как в Final Fantasy IX. В магазине синтеза игрок может комбинировать за деньги два материала, чтобы создать новый предмет/броню/оружие. Все настройки осуществляются путём внесения данных в поле "Заметки" в базе данных, поэтому в самом скрипте ничего настраивать и ковыряться не нужно.

    Инструкция: скопировать и разместить скрипт в секцию "Материалы", выше Main. Подробная инструкция на русском языке содержится в коде скрипта в виде комментариев.

    Скриншот:
    Спойлер Клик!:


    Скрипт:
    Спойлер Код:
    PHP код:
    #==============================================================================
    #  Synthesis Shop (VX)
    #  Version: 1.0
    #  Author: Zylos (rmrk.net)
    #  Date: February 25, 2011
    #------------------------------------------------------------------------------
    #  Описание:
    #
    #   Этот простой скрипт предназначен для создания магазина синтеза, как в
    #   Final Fantasy IX. В магазине синтеза игрок может комбинировать два 
    #   материала (за деньги), чтобы создать новый предмет/броню/оружие.
    #   Этот скрипт позволяет легко включать и выключать магазин синтеза с помощью
    #   переключателя, настраивать, какие вещи могут быть изготовлены с помощью
    #   синтеза, их стоимость и требуемые для синтеза материалы, просто вводя числа 
    #   в заметки предмета в базе данных. Вам не придётся ничего изменять в скрипте,
    #   кроме выбора переключателя, который вы хотите использовать для включения/вык-
    #   лючения магазина синтеза.
    #
    #------------------------------------------------------------------------------
    #  Инструкции:
    #  
    #     - Разместите скрипт в секцию "Материалы", выше Main.
    #     - Выберите номер переключателя, которым вы будете включать/выключать
    #       магазин синтеза. По умолчанию номер переключателя - 20, и он может быть
    #       изменён (настройки - ниже этой инструкции).
    #     - Выберите или создайте вещи, оружие или броню, которые можно будет 
    #       изготовить в магазине синтеза. В поле Заметки выбранного предмета
    #       (нижний правый угол в базе данных), добавьте следующие данные:
    #    
    #           \cost[] - это цена предмета.
    #           \type1[] - тип материала для первого требуемого предмета.
    #                      0 - для вещи, 1 - для оружия, и 2 - для брони.
    #           \type2[] - тип материала для второго требуемого предмета.
    #                      0 - для вещи, 1 - для оружия, и 2 - для брони.
    #           \id1[] - ID первого требуемого предмета.
    #           \id2[] - ID второго требуемого предмета.
    #
    #     - Например, если вы хотите сделать "Палаш" из двух "Длинных мечей"
    #       за 150 монет (при неизменённой базе данных), вы должны ввести
    #       \cost[150], \type1[1], \type2[1], \id1[2], и \id2[2]. Подобное нужно
    #       сделать для каждого предмета, который можно изготовить в магазине синтеза.
    #     - Чтобы создать магазин синтеза в игре, просто включите переключатель,
    #       который вы выбрали и вызовите обычный магазин, используя только те
    #       товары, которые настроены для синтеза. Не забудьте выключать переключатель
    #       после магазина синтеза! (Иначе все магазины станут магазинами синтеза)
    #
    #==============================================================================

    module Synth_Switch
      
    #============================================================================
      #  ВАЖНО! Редактируйте здесь, чтобы изменить переключатель для вызова
      #  синтеза. Если переключатель выключен, ничего не произойдёт. Если этот
      #  переключатель включен, обычный магазин станет магазином синтеза.
      #
      #  Настраиваемый переключатель:
      #============================================================================
     
      
    Synthesis_Switch = 20   #переключатель для синтеза
     
      #============================================================================
      #  Больше ничего трогать не нужно. Все остальные настройки производятся
      #  через базу данных, путём редактирования заметок.
      #============================================================================
    end

    #==============================================================================
    # ** Module RPG
    #------------------------------------------------------------------------------
    #  The coding used in checking the noteboxes of the synthesizable items.
    #==============================================================================

    module RPG  
      
    class BaseItem
        def s_cost    
    # The price of the synthesized good.
          
    @s_cost = self.note[/\\COST\[(\d+)\]/i] != nil ? $1.to_i : 0 if @s_cost == nil
          
    return @s_cost
        end
        def s_req_1_type    
    # The object type of the first required material.
          
    @s_req_1_type = self.note[/\\TYPE1\[(\d+)\]/i] != nil ? $1.to_i : 0 if @s_req_1_type == nil
          
    return @s_req_1_type
        end
        def s_req_1_id    
    # The ID of the first required material.
          
    @s_req_1_id = self.note[/\\ID1\[(\d+)\]/i] != nil ? $1.to_i : 1 if @s_req_1_id == nil
          
    return @s_req_1_id
        end
        def s_req_2_type    
    # The object type of the second required material.
          
    @s_req_2_type = self.note[/\\TYPE2\[(\d+)\]/i] != nil ? $1.to_i : 0 if @s_req_2_type == nil
          
    return @s_req_2_type
        end
        def s_req_2_id    
    # The ID of the second required material.
          
    @s_req_2_id = self.note[/\\ID2\[(\d+)\]/i] != nil ? $1.to_i : 1 if @s_req_2_id == nil
          
    return @s_req_2_id
        end
      end
    end

    #==============================================================================
    # ** Scene_Map
    #------------------------------------------------------------------------------
    #  The switch redirecting a normal shop call to a synthesis shop.
    #==============================================================================

    class Scene_Map < Scene_Base
      def call_shop
        $game_temp
    .next_scene = nil
        
    if $game_switches[Synth_Switch::Synthesis_Switch]
          
    $scene = Scene_Synthesis.new
        else
          
    $scene = Scene_Shop.new
        
    end
      end
    end

    #==============================================================================
    # ** Window_Base
    #------------------------------------------------------------------------------
    #  Adding a bit to the window base to add transparency to faces.
    #==============================================================================


    #==============================================================================
    # ** Window_SynthBuy
    #------------------------------------------------------------------------------
    #  This window displays the synthesizable goods in the synthesis shop.
    #==============================================================================

    class Window_SynthBuy < Window_Selectable
      
    #--------------------------------------------------------------------------
      # * Object Initialization
      #     x : window X coordinate
      #     y : window Y coordinate
      #--------------------------------------------------------------------------
      
    def initialize(x, y)
        
    super(x, y, 304, 232)
        @
    shop_goods = $game_temp.shop_goods
        refresh
        self
    .index = 0
      end
      
    #--------------------------------------------------------------------------
      # * Get Item
      #--------------------------------------------------------------------------
      
    def item
        
    return @data[self.index]
      
    end
      
    #--------------------------------------------------------------------------
      # * Get Required Material One
      #--------------------------------------------------------------------------
      
    def req1
        type1 
    = item.s_req_1_type
        id1 
    = item.s_req_1_id
        
    case type1
        when 0
          
    @req1 = $data_items[id1]
        
    when 1
          
    @req1 = $data_weapons[id1]
        
    when 2
          
    @req1 = $data_armors[id1]
        
    end
        
    return @req1
      end
      
    #--------------------------------------------------------------------------
      # * Get Required Material Two
      #--------------------------------------------------------------------------
      
    def req2
        type2 
    = item.s_req_2_type
        id2 
    = item.s_req_2_id
        
    case type2
        when 0
          
    @req2 = $data_items[id2]
        
    when 1
          
    @req2 = $data_weapons[id2]
        
    when 2
          
    @req2 = $data_armors[id2]
        
    end
        
    return @req2
      end
      
    #--------------------------------------------------------------------------
      # * Refresh
      #--------------------------------------------------------------------------
      
    def refresh
        
    @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
        create_contents
        
    for i in 0...@item_max
          draw_item
    (i)
        
    end
      end
      
    #--------------------------------------------------------------------------
      # * Draw Item
      #--------------------------------------------------------------------------
      
    def draw_item(index)
        
    item = @data[index]
        
    number = $game_party.item_number(item)
        
    type1 = item.s_req_1_type
        id1 
    = item.s_req_1_id
        
    case type1
        when 0
          req1 
    = $data_items[id1]
        
    when 1
          req1 
    = $data_weapons[id1]
        
    when 2
          req1 
    = $data_armors[id1]
        
    end
        type2 
    = item.s_req_2_type
        id2 
    = item.s_req_2_id
        
    case type2
        when 0
          req2 
    = $data_items[id2]
        
    when 1
          req2 
    = $data_weapons[id2]
        
    when 2
          req2 
    = $data_armors[id2]
        
    end
        
    if req1 == req2
          enabled 
    = (item.s_cost <= $game_party.gold and number < 99 and $game_party.item_number(req1) > 1)
        else
          
    enabled = (item.s_cost <= $game_party.gold and number < 99 and $game_party.item_number(req1) > 0 and $game_party.item_number(req2) > 0)
        
    end
        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.s_cost, 2)
      
    end
      
    #--------------------------------------------------------------------------
      # * Help Text Update
      #--------------------------------------------------------------------------
      
    def update_help
        
    @help_window.set_text(item == nil ? "" : item.description)
      
    end
    end

    #==============================================================================
    # ** Window_SynthStatus1
    #------------------------------------------------------------------------------
    #  This window displays the current amount of gold, the number of items
    #  possessed, and the number of items currently equiped.
    #==============================================================================

    class Window_SynthStatus1 < Window_Base
      
    #--------------------------------------------------------------------------
      # * Object Initialization
      #     x : window X coordinate
      #     y : window Y coordinate
      #--------------------------------------------------------------------------
      
    def initialize(x, y)
        
    super(x, y, 240, 116)
        @
    item = nil
        refresh
      end
      
    #--------------------------------------------------------------------------
      # * Refresh
      #--------------------------------------------------------------------------
      
    def refresh
        self
    .contents.clear
        self
    .contents.font.color = system_color
        self
    .contents.draw_text(4, 0, 200, WLH*1.5, "Деньги")
        
    cd = contents.text_size(Vocab::gold).width
        self
    .contents.font.color = normal_color
        self
    .contents.draw_text(4, 0, 200-cd-2, WLH*1.5, $game_party.gold, 2)
        
    self.contents.font.color = system_color
        self
    .contents.draw_text(4, 0, 200, WLH*1.5, Vocab::gold, 2)
        
    number = $game_party.item_number(@item)
        
    self.contents.font.color = system_color
        self
    .contents.draw_text(4, 0, 190, WLH*3.5, "Имеется")
        
    self.contents.font.color = normal_color
        self
    .contents.draw_text(4, 0, 190, WLH*3.5, number, 2)
        
    number2 = 0
        
    for actor in $game_party.members
          
    if actor.equips.include?(@item) then number2 = number2 + 1
          end
        end
        self
    .contents.font.color = system_color
        self
    .contents.font.color.alpha = @item.is_a?(RPG::Item) ? 128 : 255
        self
    .contents.draw_text(4, 0, 190, WLH*5.5, "Экипировано")
        
    self.contents.font.color = normal_color
        self
    .contents.font.color.alpha = @item.is_a?(RPG::Item) ? 128 : 255
        self
    .contents.draw_text(4, 0, 190, WLH*5.5, number2, 2)
      
    end
      
    #--------------------------------------------------------------------------
      # * Set Item
      #--------------------------------------------------------------------------
      
    def item=(item)
        if @
    item != item
          
    @item = item
          refresh
        end
      end
    end

    #==============================================================================
    # ** Window_SynthRequire
    #------------------------------------------------------------------------------
    #  This window displays the items necessary to synthesize.
    #==============================================================================

    class Window_SynthRequire < Window_Base
      
    #--------------------------------------------------------------------------
      # * Object Initialization
      #     x : window X coordinate
      #     y : window Y coordinate
      #--------------------------------------------------------------------------
      
    def initialize(x, y)
        
    super(x, y, 240, 116)
        @
    item = nil
        
    @req1 = nil
        
    @req2 = nil
        refresh
      end
      
    #--------------------------------------------------------------------------
      # * Refresh
      #--------------------------------------------------------------------------
      
    def refresh
        self
    .contents.clear
        
    if @item != nil
          self
    .contents.font.color = system_color
          self
    .contents.draw_text(4, 0, 200, WLH, "Требуется")
          
    enabled = ($game_party.item_number(@req1) > 0)
          
    draw_item_name(@req1, 15, 25, enabled)
          
    enabled = @req1==@req2 ? ($game_party.item_number(@req2) > 1) : ($game_party.item_number(@req2) > 0)
          
    draw_item_name(@req2, 15, 52, enabled)
        
    end
      end
      
    #--------------------------------------------------------------------------
      # * Set Item
      #--------------------------------------------------------------------------
      
    def item=(item)
        if @
    item != item
          
    @item = item
          type1 
    = item.s_req_1_type
          id1 
    = item.s_req_1_id
          
    case type1
          when 0
            
    @req1 = $data_items[id1]
          
    when 1
            
    @req1 = $data_weapons[id1]
          
    when 2
            
    @req1 = $data_armors[id1]
          
    end
          type2 
    = item.s_req_2_type
          id2 
    = item.s_req_2_id
          
    case type2
          when 0
            
    @req2 = $data_items[id2]
          
    when 1
            
    @req2 = $data_weapons[id2]
          
    when 2
            
    @req2 = $data_armors[id2]
          
    end
          refresh
        end
      end
    end

    #==============================================================================
    # ** Window_SynthStatus2
    #------------------------------------------------------------------------------
    #  This displays how much of an improvement or disadvantage the equipment gives
    #  to the individual actors in the current party. If the selection is an item
    #  rather than equipment, then nothing will happen.
    #==============================================================================

    class Window_SynthStatus2 < Window_Base
      
    #--------------------------------------------------------------------------
      # * Object Initialization
      #     x : window X coordinate
      #     y : window Y coordinate
      #--------------------------------------------------------------------------
      
    def initialize(x, y)
        
    super(x, y, 544, 128)
        @
    item = nil
        refresh
      end
      
    #--------------------------------------------------------------------------
      # * Refresh
      #--------------------------------------------------------------------------
      
    def refresh
        self
    .contents.clear
        
    if @item != nil
          number 
    = $game_party.item_number(@item)
          for 
    actor in $game_party.members
            
    #--------------------------------------------------------------------
            # This can be used to center the actor's pictures instead, if it looks
            # awkward with more or less than four actors in a party at one time.
            #--------------------------------------------------------------------
            #o = $game_party.members.size
            #x = ((actor.index+1)*((self.width-32)/o))-(((self.width-32)/o)/2)-48
            
    x = actor.index*136
            y 
    = 0
            draw_actor_parameter_change
    (actor, x, y)
          
    end
        end
      end
      
    #--------------------------------------------------------------------------
      # * Draw Actor's Current Equipment and Parameters
      #     actor : actor
      #     x     : draw spot x-coordinate
      #     y     : draw spot y-coordinate
      #--------------------------------------------------------------------------
      
    def draw_actor_parameter_change(actor, x, y)
        return if @
    item.is_a?(RPG::Item)
        
    enabled = actor.equippable?(@item)
        
    draw_actor_graphic(actor, x + 40, y + 68)
        
    self.contents.font.color = text_color(15)
        
    self.contents.font.color.alpha = enabled ? 180 : 60
        self
    .contents.draw_text(x+2, y+2, 200, WLH, actor.name)
        
    self.contents.font.color = normal_color
        self
    .contents.font.color.alpha = enabled ? 255 : 100
        self
    .contents.draw_text(x, y, 200, WLH, actor.name)
            if @
    item.is_a?(RPG::Weapon)
          
    item1 = weaker_weapon(actor)
        
    elsif actor.two_swords_style and @item.kind == 0
          item1 
    = nil
        
    else
          
    item1 = actor.equips[1 + @item.kind]
        
    end
        
    if enabled
          
    if @item.is_a?(RPG::Weapon)
            
    atk1 = item1 == nil ? 0 : item1.atk
            atk2 
    = @item == nil ? 0 : @item.atk
            change 
    = atk2 - atk1
          
    else
            
    def1 = item1 == nil ? 0 : item1.def
            def2 
    = @item == nil ? 0 : @item.def
            change 
    = def2 - def1
          end
          self
    .contents.font.color = text_color(15)
          
    self.contents.font.color.alpha = enabled ? 180 : 60
          self
    .contents.draw_text(x, y + 72, 96, WLH, sprintf("%+d", change), 2)
          if 
    change == 0
            self
    .contents.font.color = normal_color
          end
          
    if change > 0
            self
    .contents.font.color = power_up_color
          end
          
    if change < 0
            self
    .contents.font.color = power_down_color
          end
          self
    .contents.draw_text(x, y + 70, 96, WLH, sprintf("%+d", change), 2)
        
    end
      end
      
    #--------------------------------------------------------------------------
      # * Get Weaker Weapon Equipped by the Actor (for dual wielding)
      #     actor : actor
      #--------------------------------------------------------------------------
      
    def weaker_weapon(actor)
        if 
    actor.two_swords_style
          weapon1 
    = actor.weapons[0]
          
    weapon2 = actor.weapons[1]
          if 
    weapon1 == nil or weapon2 == nil
            
    return nil
          elsif weapon1
    .atk < weapon2.atk
            
    return weapon1
          
    else
            return 
    weapon2
          end
        
    else
          return 
    actor.weapons[0]
        
    end
      end
      
    #--------------------------------------------------------------------------
      # * Set Item
      #     item : new item
      #--------------------------------------------------------------------------
      
    def item=(item)
        if @
    item != item
          
    @item = item
          refresh
        end
      end
    end

    #==============================================================================
    # ** Window_SynthNumber
    #------------------------------------------------------------------------------
    #  This window is for inputting quantity of items to synthesize on the
    # synth screen.
    #==============================================================================

    class Window_SynthNumber < Window_Base
      
    #--------------------------------------------------------------------------
      # * Object Initialization
      #     x : window X coordinate
      #     y : window Y coordinate
      #--------------------------------------------------------------------------
      
    def initialize(x, y)
        
    super(x, y, 304, 232)
        @
    item = nil
        
    @max = 1
        
    @price = 0
        
    @number = 1
        
    @req1 = nil
        
    @req2 = nil
      end
      
    #--------------------------------------------------------------------------
      # * Set Items, Max Quantity, and Price
      #--------------------------------------------------------------------------
      
    def set(item, max, price)
        @
    item = item
        
    @max = max
        
    @price = item.s_cost
        type1 
    = item.s_req_1_type
        id1 
    = item.s_req_1_id
        
    case type1
        when 0
          
    @req1 = $data_items[id1]
        
    when 1
          
    @req1 = $data_weapons[id1]
        
    when 2
          
    @req1 = $data_armors[id1]
        
    end
        type2 
    = item.s_req_2_type
        id2 
    = item.s_req_2_id
        
    case type2
        when 0
          
    @req2 = $data_items[id2]
        
    when 1
          
    @req2 = $data_weapons[id2]
        
    when 2
          
    @req2 = $data_armors[id2]
        
    end
        
    @number = 1
        refresh
      end
      
    #--------------------------------------------------------------------------
      # * Set Inputted Quantity
      #--------------------------------------------------------------------------
      
    def number
        
    return @number
      end
      
    #--------------------------------------------------------------------------
      # * Refresh
      #--------------------------------------------------------------------------
      
    def refresh
        y 
    = 20
        self
    .contents.clear
        draw_item_name
    (@item, 0, y)
        
    self.contents.font.color = normal_color
        self
    .contents.draw_text(212, y, 20, WLH, "×")
        
    self.contents.draw_text(248, y, 20, WLH, @number, 2)
        
    self.cursor_rect.set(244, y, 28, WLH)
        
    self.contents.font.color = system_color
        self
    .contents.draw_text(0, y + (2.5*WLH), 200, WLH, "Требуется:")
        
    self.contents.font.color = normal_color
        draw_item_name
    (@req1, 10, y + (3.5*WLH))
        
    self.contents.draw_text(212, y + (3.5*WLH), 20, WLH, "×")
        
    self.contents.draw_text(248, y + (3.5*WLH), 20, WLH, @number, 2)
        
    draw_item_name(@req2, 10, y + (4.5*WLH))
        
    self.contents.draw_text(212, y + (4.5*WLH), 20, WLH, "×")
        
    self.contents.draw_text(248, y + (4.5*WLH), 20, WLH, @number, 2)
        
    draw_currency_value(@price * @number, 4, y + (6.5*WLH), 264)
      
    end
      
    #--------------------------------------------------------------------------
      # * Frame Update
      #--------------------------------------------------------------------------
      
    def update
        super
        
    if self.active
          last_number 
    = @number
          
    if Input.repeat?(Input::RIGHT) and @number < @max
            
    @number += 1
          end
          
    if Input.repeat?(Input::LEFT) and @number > 1
            
    @number -= 1
          end
          
    if Input.repeat?(Input::UP) and @number < @max
            
    @number = [@number + 10, @max].min
          end
          
    if Input.repeat?(Input::DOWN) and @number > 1
            
    @number = [@number - 10, 1].max
          end
          
    if @number != last_number
            Sound
    .play_cursor
            refresh
          end
        end
      end
    end


    #==============================================================================
    # ** Scene_Synthesis
    #------------------------------------------------------------------------------
    #  This class performs the actual synthesis, much like a shop.
    #==============================================================================

    class Scene_Synthesis < Scene_Base
      
    #--------------------------------------------------------------------------
      # * Start processing
      #--------------------------------------------------------------------------
      
    def start
        super
        create_menu_background
        
    @help_window = Window_Help.new
        @
    buy_window = Window_SynthBuy.new(0, 56)
        @
    buy_window.active = true
        
    @buy_window.visible = true
        
    @buy_window.help_window = @help_window
        
    @number_window = Window_SynthNumber.new(0, 56)
        @
    number_window.active = false
        
    @number_window.visible = false
        
    @status1_window = Window_SynthStatus1.new(304, 56)
        @
    status1_window.item = @buy_window.item
        
    @status1_window.visible = true
        
    @status2_window = Window_SynthStatus2.new(0, 288)
        @
    status2_window.item = @buy_window.item
        
    @status2_window.visible = true
        
    @require_window = Window_SynthRequire.new(304, 172)
        @
    require_window.visible = true
        
    @require_window.item = @buy_window.item
      end
      
    #--------------------------------------------------------------------------
      # * Termination Processing
      #--------------------------------------------------------------------------
      
    def terminate
        super
        dispose_menu_background
        
    @help_window.dispose
        
    @buy_window.dispose
        
    @number_window.dispose
        
    @status1_window.dispose
        
    @status2_window.dispose
        
    @require_window.dispose
      end
      
    #--------------------------------------------------------------------------
      # * Frame Update
      #--------------------------------------------------------------------------
      
    def update
        super
        update_menu_background
        
    @help_window.update
        
    @buy_window.update
        
    @number_window.update
        
    @status1_window.update
        
    @status2_window.update
        
    @require_window.update
        
    if @buy_window.active
          update_buy_selection
        elsif 
    @number_window.active
          update_number_input
        end
      end
      
    #--------------------------------------------------------------------------
      # * Update Buy Item Selection
      #--------------------------------------------------------------------------
      
    def update_buy_selection
        
    @status1_window.item = @buy_window.item
        
    @status2_window.item = @buy_window.item
        
    @require_window.item = @buy_window.item
        
    if Input.trigger?(Input::B)
            
    Sound.play_decision
            $scene 
    = Scene_Map.new
        
    end
        
    if Input.trigger?(Input::C)
          @
    item = @buy_window.item
          
    @req1 = @buy_window.req1
          
    @req2 = @buy_window.req2
          
    if @req1 == @req2 and $game_party.item_number(@req1) <= 1
            req3 
    = true
          end
          number 
    = $game_party.item_number(@item)
          if @
    item == nil or @item.s_cost > $game_party.gold or number == 99 or $game_party.item_number(@req1) == 0 or $game_party.item_number(@req2) == 0 or req3 == true
            Sound
    .play_buzzer
          
    else
            
    Sound.play_decision
            max 
    = @item.s_cost == 0 ? 99 : $game_party.gold / @item.s_cost
            
    if @req1 != @req2
              
    if max > $game_party.item_number(@req1) or max > $game_party.item_number(@req2)
                
    max = $game_party.item_number(@req1) <= $game_party.item_number(@req2) ? $game_party.item_number(@req1) : $game_party.item_number(@req2)
              
    end
            
    else
              if 
    max > ($game_party.item_number(@req1)/2)
                
    max = ($game_party.item_number(@req1)/2)
              
    end
            end
            max 
    = [max, 99 - number].min
            
    @buy_window.active = false
            
    @buy_window.visible = false
            
    @number_window.set(@item, max, @item.s_cost)
            @
    number_window.active = true
            
    @number_window.visible = true
          end
        end
      end
      
    #--------------------------------------------------------------------------
      # * Update Number Input
      #--------------------------------------------------------------------------
      
    def update_number_input
        
    if Input.trigger?(Input::B)
          
    cancel_number_input
        elsif Input
    .trigger?(Input::C)
          
    decide_number_input
        end
      end
      
    #--------------------------------------------------------------------------
      # * Cancel Number Input
      #--------------------------------------------------------------------------
      
    def cancel_number_input
        Sound
    .play_cancel
        
    @number_window.active = false
        
    @number_window.visible = false
        
    @buy_window.active = true
        
    @buy_window.visible = true
      end
      
    #--------------------------------------------------------------------------
      # * Confirm Number Input
      #--------------------------------------------------------------------------
      
    def decide_number_input
        Sound
    .play_shop
        
    @number_window.active = false
        
    @number_window.visible = false
        $game_party
    .lose_gold(@number_window.number * @item.s_cost)
        
    $game_party.gain_item(@item, @number_window.number)
        
    $game_party.lose_item(@req1, @number_window.number)
        
    $game_party.lose_item(@req2, @number_window.number)
        @
    buy_window.refresh
        
    @status1_window.refresh
        
    @status2_window.refresh
        
    @require_window.refresh
        
    @buy_window.active = true
        
    @buy_window.visible = true
      end
    end 


    Демо:
    Synthesis Shop VX Demo.rar

    Пожалуйста, исправьте кто может заголовок темы. А то там два раза [VХ] получилось.
    Последний раз редактировалось 100500; 22.08.2012 в 00:16.

  2. #2

    По умолчанию

    Хорошо!

  3. #3

    По умолчанию

    Алхимия по-моему удобнее и логичнее, чем это.

  4. #4
    Познающий Аватар для 100500
    Информация о пользователе
    Регистрация
    22.05.2011
    Сообщений
    351
    Записей в дневнике
    15
    Репутация: 28 Добавить или отнять репутацию

    По умолчанию

    Цитата Сообщение от Che_Guiltara Посмотреть сообщение
    Алхимия по-моему удобнее и логичнее, чем это.
    Ха, логичнее. Огнестрельное оружие - оно тоже логичнее, чем фаерболы, но тем не менее в играх маги с пистолетами бегают крайне редко.
    В jRPG, как я уже много-много раз говорил, не стоит искать логику. Весь жанр - это сплошная условность. Дело лишь за фантазией.

    ps Заметил, что картинки сдохли. Я это исправлю, только не сию же минуту, а несколько позже. Сейчас нет возможности.

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Социальные закладки

Социальные закладки

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •  
Synthesis Shop