O TEMA DO FÓRUM ESTÁ EM MANUTENÇÃO. FEEDBACKS AQUI: ACESSAR

Breadlord's Item MIX

Iniciado por Raizen, 13/02/2013 às 18:46

13/02/2013 às 18:46 Última edição: 18/02/2013 às 01:38 por Raizen
BREADLORD'S ITEM MIX

O que esse sistema faz?


Sistema de mistura de ingredientes para resultado.

» Vários ingredientes por receita.
» Pode-se usar o resultado como ingrediente para uma segunda receita.
» Sistema traduzido (pt-br) e fácil de configurar.

Screen


Spoiler
[close]

Como usar?


Edite as receitas no script e depois coloque um evento chamar script
$scene = Scene_Mix.new

Para chamar o fogão.

Mais informações no Script

Script


Spoiler
#---------------------------- BREADLORD'S ITEM MIX ----------------------------#
#------------------------------------------------------------------------------#
#  Demo e Tradução por Stu - www.santuariorpgmaker.com                         #
#------------------------------------------------------------------------------#
# Sistema de mistura de ingredientes para resultado.                           #
# Para chamar usar fogão, crie um evento com chamar script                     #
#     $scene = Scene_Mix.new                                                   #
#------------------------------------------------------------------------------#
# Se quiser mudar o nome da opção no menu, vá até a linha 114                  #
#      @make_window = Window_Command.new(272, ['Preparar'], 1)                 #
# E coloque o nome no lugar de Preparar                                        #
#------------------------------------------------------------------------------#
class Scene_Mix < Scene_Base
  
def recipies
   
  @pre_unlocked = false
  
  @recipies = [] 

#------------------------------------------------------------------------------#
# Não recomendo editar nada acima dessa linha                                  #
# Edite de receitas, abaixo                                                    #
#------------------------------------------------------------------------------#
  
  #Receita 1
  # ID dos ingredientes (itens)
  ingredients = [1, 2]
  # ID do resultado (itens)
  results = [4]
  recipie = Recipie.new(results, ingredients)
  @recipies.push(recipie)
  # fim da receita 1
  
#------------------------------------------------------------------------------#
# Veja como vc também pode usar o resultado de uma receita, como o ingrediente #
# de outra                                                                     #
#------------------------------------------------------------------------------# 

  #Receita 2
  # ID dos ingredientes (itens)
  ingredients = [3, 4]
  # ID do resultado (itens)
  results = [5]
  recipie = Recipie.new(results, ingredients)
  @recipies.push(recipie)
  # fim da receita 2

#------------------------------------------------------------------------------# 
# Para criar novas receitas, duplique as receitas existentes e edite os ID     #
# Devem estar acima deste END                                                  #
# Não recomendo editar as nada abaixo do END                                   #
#------------------------------------------------------------------------------#

end
  
  def start
    super
    if $learnt == nil
     @learnt = []
   end
    @gump = false
    create_menu_background
    recipies
    @viewport = Viewport.new(0, 0, 544, 416)
    @viewport2 = Viewport.new(272, 192, 272, 300)
    @viewport3 = Viewport.new(272, 88, 272, 104)
    @viewport4 = Viewport.new(272, 35, 272, 53)
    @item_window = Window_Item2.new(0, 35, 272, 381)
    @item_window.viewport = @viewport
    @item_window.active = true
    @selected = []
    a = 'Nothing'
    @result_window = Window_Command.new(272, [a], 2)
    @result_window.viewport = @viewport3
    @result_window.active = false
    @command_window = Window_Command.new(272, @selected, 2)
    @command_window.viewport = @viewport2
    @command_window.active = false
    @make_window = Window_Command.new(272, [''], 1)
    @make_window.viewport = @viewport4
    @make_window.active = false
  end
  
  def update
    if @item_window.active == true
     item_update
   elsif @make_window.active == true
     make_update
   end
    @item_window.update
    @make_window.update
    update_menu_background
  end
  
  def make_update
    if Input.trigger?(Input::LEFT)
      Sound.play_cursor
      @item_window.active = true
      @make_window.active = false
    elsif Input.trigger?(Input::C)
      Sound.play_use_skill
      recipie_act(@recipie_able)
    end
  end
  
  
  def item_update
    if @can_make == true
      if @gump == false
       @gump = true
       @make_window.dispose
# Nome da opção no Menu
       @make_window = Window_Command.new(272, ['Preparar'], 1)
       @make_window.viewport = @viewport4
       @make_window.active = false
      end
    else
      if @gump == true
        @gump = false
       @make_window.dispose
       @make_window = Window_Command.new(272, [''], 1)
       @make_window.viewport = @viewport4
       @make_window.active = false
     end
   end
   
    if Input.trigger?(Input::B)
      a = @selected.size - 1
      if @selected[a] == nil
       Sound.play_cancel
       $scene = Scene_Map.new
     else
       Sound.play_cancel
       $game_party.gain_item($data_items[@selected[@selected.size - 1]], 1)
       @selected[@selected.size - 1] = 'a'
       @selected = @selected - ['a']
       a = []
       for i in 0..@selected.size - 1
        a.push($data_items[@selected[i]].name)
       end
       index = @item_window.index
       @item_window = Window_Item2.new(0, 35, 272, 381, index)
       @item_window.viewport = @viewport
       @item_window.active = true
       @command_window.dispose
       @command_window = Window_Command.new(272, a, 2)
       @command_window.viewport = @viewport2
       @command_window.active = false
       check
        a = []
          if @can_make == true
           for i in 0..@recipies[@recipie_able].results.size - 1
            if $learnt.include?(@recipie_able) 
             if !(@recipies[@recipie_able].results[i] == nil)
              a.push($data_items[@recipies[@recipie_able].results[i]].name)
             end
            elsif @pre_unlocked == true
             if !(@recipies[@recipie_able].results[i] == nil)
              a.push($data_items[@recipies[@recipie_able].results[i]].name)
             end
            else
              a = ['??????']
            end
          end
          @result_window.dispose
          @result_window = Window_Command.new(272, a, 2)
          @result_window.viewport = @viewport3
          @result_window.active = false
        else
          a = 'Nothing'
          @result_window.dispose
          @result_window = Window_Command.new(272, [a])
          @result_window.viewport = @viewport3
          @result_window.active = false
        end
      end
     
    elsif Input.trigger?(Input::C)
      if @selected.size - 1 < 14 or @selected.size - 1 == 14 and !($game_party.items.size == 0)
          Sound.play_decision
          a = @item_window.item
        @last_selected = a.id
        $game_party.lose_item($data_items[a.id], 1)
        @selected.push(a.id)
        check
        a = []
        for i in 0..@selected.size - 1
          if !(@selected[i] == nil)
           a.push($data_items[@selected[i]].name)
         end
       end
        if @item_window.index == 0
         index = @item_window.index 
        else
         index = @item_window.index - 1
        end
        @item_window = Window_Item2.new(0, 35, 272, 381, index)
        @item_window.viewport = @viewport
        @item_window.active = true
        @command_window.dispose
        @command_window = Window_Command.new(272, a, 2)
        @command_window.viewport = @viewport2
        @command_window.active = false
        check
        a = []
         if @can_make == true
           for i in 0..@recipies[@recipie_able].results.size - 1
            if $learnt.include?(@recipie_able) 
             if !(@recipies[@recipie_able].results[i] == nil)
              a.push($data_items[@recipies[@recipie_able].results[i]].name)
             end
            elsif @pre_unlocked == true
             if !(@recipies[@recipie_able].results[i] == nil)
              a.push($data_items[@recipies[@recipie_able].results[i]].name)
             end
            else
              a = ['??????']
            end
          end
          @result_window.dispose
          @result_window = Window_Command.new(272, a, 2)
          @result_window.viewport = @viewport3
          @result_window.active = false
        else
          a = 'Nothing'
          @result_window.dispose
          @result_window = Window_Command.new(272, [a])
          @result_window.viewport = @viewport3
          @result_window.active = false
        end
      else
        Sound.play_buzzer
      end
    elsif @can_make == true and Input.trigger?(Input::RIGHT)
      Sound.play_cursor
      @item_window.active = false
      @make_window.active = true
    end
   end
   
def check
   @can_make = false
   @recipie_able = 0
   for i in 0..@recipies.size - 1
     a = @recipies[i].ingredients
     b = @selected
     if a.size == b.size
     for j in 0..1000
       if a.include?(j) and b.include?(j)
         a = a - [j]
         b = b - [j]
       end
       if a == [] and b == []
         @can_make = true
         @recipie_able = i
       end
     end
   end
   end
end


def recipie_act(recipie_num)
  $learnt.push(recipie_num)
  @selected.clear
  for i in 0..@recipies[recipie_num].results.size 
    if !(@recipies[recipie_num].results[i] == nil)
      a = @recipies[recipie_num].results[i]
      $game_party.gain_item($data_items[a], 1)
    end
  end
        @item_window = Window_Item2.new(0, 35, 272, 381, 0)
       @item_window.viewport = @viewport
       @item_window.active = true
       @command_window.dispose
       @command_window = Window_Command.new(272, [], 2)
       @command_window.viewport = @viewport2
       @command_window.active = false
       a = 'Nothing'
       
    @result_window.dispose
    @result_window = Window_Command.new(272, [a])
    @result_window.viewport = @viewport3
    @result_window.active = false
    @make_window.dispose
    @make_window = Window_Command.new(272, [''], 1)
    @make_window.viewport = @viewport4
    @make_window.active = false
end
  
end





class Recipie
  
  attr_reader :results, :ingredients
  
  def initialize(results, ingredients)
    @results = results
    @ingredients = ingredients
  end
  
  def ingredients
    return @ingredients
  end
  
end







#==============================================================================
# ** Window_Item
#------------------------------------------------------------------------------
#  This window displays a list of inventory items for the item screen, etc.
#==============================================================================

class Window_Item2 < Window_Selectable
  #--------------------------------------------------------------------------
  # * Object Initialization
  #     x      : window x-coordinate
  #     y      : window y-coordinate
  #     width  : window width
  #     height : window height
  #--------------------------------------------------------------------------
  def initialize(x, y, width, height, index = 0)
    super(x, y, width, height)
    @column_max = 1
    self.index = index
    refresh
  end
  #--------------------------------------------------------------------------
  # * Get Item
  #--------------------------------------------------------------------------
  def item
    return @data[self.index]
  end
  #--------------------------------------------------------------------------
  # * Whether or not to include in item list
  #     item : item
  #--------------------------------------------------------------------------
  def include?(item)
    return false if item == nil
    if $game_temp.in_battle
      return false unless item.is_a?(RPG::Item)
    end
    return true
  end
  #--------------------------------------------------------------------------
  # * Whether or not to display in enabled state
  #     item : item
  #--------------------------------------------------------------------------
  def enable?(item)
    return true
  end
  #--------------------------------------------------------------------------
  # * Refresh
  #--------------------------------------------------------------------------
  def refresh
    @data = []
    for item in $game_party.items
      next unless include?(item)
      @data.push(item)
      if item.is_a?(RPG::Item) and item.id == $game_party.last_item_id
        self.index = @data.size - 1
      end
    end
    @data.push(nil) if include?(nil)
    @item_max = @data.size
    create_contents
    for i in 0...@item_max
      draw_item(i)
    end
  end
  #--------------------------------------------------------------------------
  # * Draw Item
  #     index : item number
  #--------------------------------------------------------------------------
  def draw_item(index)
    rect = item_rect(index)
    self.contents.clear_rect(rect)
    item = @data[index]
    if item != nil
      number = $game_party.item_number(item)
      enabled = enable?(item)
      rect.width -= 4
      draw_item_name(item, rect.x, rect.y, enabled)
      self.contents.draw_text(rect, sprintf(":%2d", number), 2)
    end
  end
  #--------------------------------------------------------------------------
  # * Update Help Text
  #--------------------------------------------------------------------------
  def update_help
    @help_window.set_text(item == nil ? "" : item.description)
  end
end



module Vocab
  def self.new_game
    $learnt = []
    return $data_system.terms.new_game
  end
end


class Scene_File
  alias save write_save_data
  alias load read_save_data
  
  def write_save_data(file)
    save(file)
    Marshal.dump($learnt,              file)

  end
  
  def read_save_data(file)
    load(file)
    $learnt              = Marshal.load(file)
  end
  
end
[close]

Créditos


BREADLORD'S (não sei bem o que é isso) - Criação.
Stu - Traduçãoe tutorial

  Ha, é um ótimo script.

  Já vi um igual, não sei já postei aqui ou ainda não.  É bem interessante para colocar algo diferenciado ao jogo.

  Só não te dou ouro porque tu é ADM U.U