collapse collapse

 Community


 User Info




Willkommen Gast. Bitte einloggen oder registrieren.

 Partnerseiten

rpgvx.net

Das Forum ist offline

Autor Thema: KGC_ComposeItem [help]  (Gelesen 1171 mal)

Offline Zitronenice

  • RTP-Mapper
  • *
  • Beiträge: 35
KGC_ComposeItem [help]
« am: Mai 23, 2010, 19:46:23 »
Hi ich benutze das oben genannte script und hab mal versucht neue Rezepte per call script verfügbar zu machen. Aber bin nochn RGSS Laie^^ und bis ich das hin bekomme gibt es schon den RPG Maker 2020.

Also hier das Script

Spoiler for Hiden:
[code]#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_
#_/    ?                Synthesize Items - KGC_ComposeItem               ? VX ?
#_/    ?                     Last Update: 2008/08/01                          ?
#_/    ?                  Translation by Mr. Anonymous                        ?
#_/    ?                Special credit to Moon for Testing                    ?
#_/-----------------------------------------------------------------------------
#_/  This script opens the ability for the designer to allow items, weapons, &
#_/   armor to be created by the player through specified "recipies". It also
#_/   extends the normal shop event into becoming a Synthesize Shop, controlled
#_/   by a simple ON/OFF switch.
#_/=============================================================================
#_/  Install: Insert below KGC_UsableEquipment
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_

#==============================================================================#
#                             ? Customization ?                                #
#==============================================================================#

module KGC
  module ComposeItem
  #                       ? Compose Shop Switch ?
  #  This allows you to assign which SwitchID (Event Commands, Page 1 "Game
  #   Progression", Control Switch) you wish to control the Synthesis Shop.
  #  When that switch is turned ON, the Synthesis Shop replaces the normal
  #  shop screen. When OFF, the shop is normal.
  COMPOSE_CALL_SWITCH = 77

  #                          ? Recipe Tables ?
  #  The following lines allow you to create recipe tables of synthesizable
  #   items, weapons, and other equipment. Please do note overwrite:
  #           RECIPE_ITEM   = []  # Item
  #           RECIPE_WEAPON = []  # Weapon
  #           RECIPE_ARMOR  = []  # Armor
  #   Instead, add your custom recipes tables after those lines.
  #
  #  ? Format
  #   RECIPE_TYPE[ItemID] = [Cost, "Type:ID",Quantity]
  #
  #  ? Key
  #   Cost:     Amount of money charged.
  #   Type:     (I.Items  W.Weapons  A.Armor)
  #   ID:       The ID number for the above specified material type.
  #   Quantity: The required amount of materials used.
  #
  #  "Type:ID,Quantity" can be used multiple times for multiple items with their
  #   corresponding quantity. Also, the must be no space between the comma and
  #   the given quantity.
  #  The required quantity of an item is treated as 1 if quantity is omitted.
  #  Untested: It seems if you set Quantity to 0, the item is still required,
  #            but not 'consumed' or used.
  #  Also note that the item to be synthesized can be written as an array,
  #   allowing you to create multiple items of the same type that can be
  #   synthesized from the same recipe.
  #  Note: Do not alter or remove the next three lines, that is done below them.
  RECIPE_ITEM   = []  # Item
  RECIPE_WEAPON = []  # Weapon
  RECIPE_ARMOR  = []  # Armor
 
  #                  ? Custom Recipe Tables Inserted Below ?
  #   Examples:
  #     *Note: I use the default database items for these examples.
  #  Recipe for ItemID:8 (Elixer)
  #   Requirements: ItemID 2 (High potion), 4 (Magic water), 7 (Dispel herb)
  #   with a quantity of 1 for each(because it's omitted), at a cost of 0.
  RECIPE_ITEM[71] = [0, "I:26", "I:28"] # This can be replaced/removed.
  #  Recipe for WeaponID:16 (Flamberge)
  #   Requirements: WeaponID:10 (Bastard Sword)x1, ItemID:16 (Flame scroll)x2
  #   at a cost of 800 gold.
  RECIPE_WEAPON[16] = [800, "W:10", "I:16,2"] # This can be replaced/removed.
  #  Recipe for ArmorID:29 (Life Ring) AND ArmorID:30 (Sage's Ring)
  #   Requirements: ArmorID:23 (Fire Ring)x1, ItemID:9 (Life up)x1,
  #                 ItemID:10 (Mana up)x1, ItemID:4 (Magic water)x5
  #   at a cost of 1,000 gold.
  RECIPE_ARMOR[29, 30] = [1000, "A:23", "I:09", "I:10", "I:4,5"] # Removable
  #                     ? Recipes For the Demo Only ?
  # The following recipes are for items used in the demo. You may remove or
  #  alter these to your liking.
  #
 
  #
  #
  #
  #
  #
  #
  #
  #
  RECIPE_ITEM[1]    = []
  RECIPE_ITEM[2]    = [0, "I:1,2"]
  RECIPE_ITEM[3]    = [0, "I:1,3"]
  RECIPE_ITEM[9]    = [0, "I:3,3", "I:4,3"]
  RECIPE_WEAPON[32] = [0, "W:30", "I:9,2"]
  RECIPE_WEAPON[33] = [0, "W:7,2", "A:9"]
  RECIPE_WEAPON[34] = [0, "W:22", "I:23", "I:16"]
  RECIPE_ARMOR[38]  = [0, "A:16", "I:10,2"]
  RECIPE_ARMOR[39]  = [0, "A:20", "I:9,2"]
  RECIPE_ARMOR[40]  = [0, "A:21", "W:6"]
  RECIPE_ARMOR[41]  = [0, "A:22", "I:24"]
  RECIPE_ARMOR[43]  = [0, "A:38", "I:25"]
  RECIPE_ARMOR[45]  = [0, "A:7", "A:46"]
  RECIPE_ARMOR[46]  = [0, "A:10", "A:12", "A:30", "I:16"]

  #                    ? Compose Item Command Name ?
  #  This is displayed at the position of the "Buy" command.
  VOCAB_COMPOSE_ITEM = "Mischen"
 
  #                     ? Parameter Changes Button ?
  #  Button that switches the required materials list with the parameter changes
  #   list. (The changes only show for equipment, obviously)
  #  SWITCH_INFO_BUTTON = Input::nil disables this.
  SWITCH_INFO_BUTTON = Input::X

  #                      ? Compact Material List ?
  #  This toggle allows you to compact(shrink) the recipe list when true.
  COMPACT_MATERIAL_LIST = true
 
  #                    ? Hide Command Window Toggle ?
  #  This toggle hides the command window (Synthesize, Sell, Cancel, Gold) after
  #   the synthesize option has been selected. The gold window is moved to the
  #   lower right corner.
  #   true = command window is hidden
  #   false = command window is shown
  HIDE_COMMAND_WINDOW   = false
 
  #                      ? Hide Gold Window Toggle ?
  #  This toggle is to be used in conjunction with HIDE_COMMAND_WINDOW = true
  #   true = Hides the Gold/Money window.
  #   false = Disply the Gold/Money window.
  #  *Note: If HIDE_COMMAND_WINDOW = false, The gold window is always displayed.
  HIDE_GOLD_WINDOW      = false
 
  #                       ? Hide Zero Cost Toggle ?
  #   true = When a synthesis recipe has a cost of 0, the cost is not displayed.
  #   false = When a synthesis recipe has a cost of 0, the cost is displayed.
  HIDE_ZERO_COST        = true

  # ? ???????????????
  #  true  : ??????????????????????
  #  false : ??????????????????
  # Not sure what this is supposed to do at the moment.
  SHOW_COMPOSED_RECIPE  = false
 
  #                   ? Hide Recipe Requirements Toggle ?
  #   This toggle allows you to hide recipe and materials required when you lack
  #    the items needed to create an item.
  #   true = Hide recipe and items required when you lack the items needed
  #   false = Show recipe requirements when you lack the items needed.
  HIDE_SHORTAGE_COST    = true
 
  #                       ? Unknown Recipe Toggle ?
  #   true = Hides the names of recipes that cannot be synthesized.
  #   false = All recipe names are visible.
  HIDE_SHORTAGE_MATERIAL = false
 
  # ? ?? or ???????????????
  #  true  : ?? or ??????????
  #  false : ???????????
  # Not sure what this is supposed to do at the moment.
  NEED_RECIPE_OPEN_OR_CLEAR = false

  #                       ? Unknown Recipe Toggle ?
  #   true = Hides the names of recipes that cannot be synthesized.
  #   false = All recipe names are visible.
  MASK_UNKNOWN_RECIPE_NAME = false
 
  #                   ? Text Displayed on Masked Recipes ?
  #   If only one character is specified, it extends the length of the recipe
  #   name. Example: If UNKNOWN_NAME_MASK = "?", and let's say the recipe is
  #    for a Long Sword, then the displayed text would be "??????????"
  UNKNOWN_NAME_MASK        = "?"
 
  #                     ? Hide Recipe Information Text ?
  #  This toggle allows you to mask the text displayed in the "Help" (topmost)
  #   window of a recipe that the player doesn't meet the requirements to make.
  #   true = mask the recipe's help text
  #   false = display the text normally
  HIDE_UNKNOWN_RECIPE_HELP = false
 
  #              ? Information Text Displayed on Masked Recipes ?
  #  This allows you to change the text displayed in the "Help" (topmost) window
  #   of an unknown recipe. (When HIDE_UNKNOWN_RECIPE_HELP = true)
  UNKNOWN_RECIPE_HELP    = "What does this recipe create? Who knows!"
 
  #               ? Sell and Cancel Options in Command Window ?
  # Added by Mr. Anonymous.
  #  This toggle allows you to remove the sell and cancel selections on the
  #   synthesize shop when set to true.
  HIDE_SELL_CANCEL         = true
 
  end
end

#???????????????????????????????????????

$imported = {} if $imported == nil
$imported["ComposeItem"] = true

# * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * #
#  Unless you know what you're doing, it's best not to alter anything beyond  #
#  this point, as this only affects the tags used for "Notes" in database.    #
# * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * #
#  Whatever word(s) are after the separator ( | ) in the following lines are
#   what are used to determine what is searched for in the "Notes" section.

module KGC::ComposeItem
  module Regexp
    # Recipe Tag
    RECIPE = /([IWA])\s*:\s*(\d+)(\s*,\s*\d+)?/i
  end
end

#???????????????????????????????????????

#==============================================================================
# ? KGC::Commands
#==============================================================================

module KGC::Commands
  module_function
  #--------------------------------------------------------------------------
  # ? ???????????
  #     type    : ??????? (0..????  1..??  2..??)
  #     id      : ????? ID
  #     enabled : true..??  false..???
  #--------------------------------------------------------------------------
  def set_recipe_cleared(type, id, enabled = true)
    item = nil
    case type
    when 0, :item    # ????
      item = $data_items[id]
    when 1, :weapon  # ??
      item = $data_weapons[id]
    when 2, :armor   # ??
      item = $data_armors[id]
    end

    $game_party.set_recipe_cleared(item, enabled) if item != nil
  end
  #--------------------------------------------------------------------------
  # ? ???????????
  #     type    : ??????? (0..????  1..??  2..??)
  #     id      : ????? ID
  #     enabled : true..??  false..???
  #--------------------------------------------------------------------------
  def set_recipe_opened(type, id, enabled = true)
    item = nil
    case type
    when 0, :item    # ????
      item = $data_items[id]
    when 1, :weapon  # ??
      item = $data_weapons[id]
    when 2, :armor   # ??
      item = $data_armors[id]
    end

    $game_party.set_recipe_opened(item, enabled) if item != nil
  end
end

#???????????????????????????????????????

#==============================================================================
# ¦ Vocab
#==============================================================================

module Vocab
  # ????
  ComposeItem = KGC::ComposeItem::VOCAB_COMPOSE_ITEM
end

#???????????????????????????????????????

#==============================================================================
# ¦ RPG::BaseItem
#==============================================================================

class RPG::BaseItem
  #--------------------------------------------------------------------------
  # ? ?????
  #--------------------------------------------------------------------------
  @@__masked_name =
    KGC::ComposeItem::UNKNOWN_NAME_MASK  # ????
  @@__expand_masked_name = false         # ???????????

  if @@__masked_name != nil
    @@__expand_masked_name = (@@__masked_name.scan(/./).size == 1)
  end
  #--------------------------------------------------------------------------
  # ? ??????????????
  #--------------------------------------------------------------------------
  def create_compose_item_cache
    @__compose_cost = 0
    @__compose_materials = []

    # ?????
    recipe = nil
    case self
    when RPG::Item    # ????
      recipe = KGC::ComposeItem::RECIPE_ITEM[self.id]
    when RPG::Weapon  # ??
      recipe = KGC::ComposeItem::RECIPE_WEAPON[self.id]
    when RPG::Armor   # ??
      recipe = KGC::ComposeItem::RECIPE_ARMOR[self.id]
    end
    return if recipe == nil
    recipe = recipe.dup

    @__compose_cost = recipe.shift
    # ????????
    recipe.each { |r|
      if r =~ KGC::ComposeItem::Regexp::RECIPE
        material = Game_ComposeMaterial.new
        material.kind = $1.upcase                    # ????????
        material.id = $2.to_i                        # ??? ID ???
        if $3 != nil
          material.number = [$3[/\d+/].to_i, 0].max  # ??????
        end
        @__compose_materials << material
      end
    }
  end
  #--------------------------------------------------------------------------
  # ? ????
  #--------------------------------------------------------------------------
  def masked_name
    if KGC::ComposeItem::MASK_UNKNOWN_RECIPE_NAME
      if @@__expand_masked_name
        # ???????????
        return @@__masked_name * self.name.scan(/./).size
      else
        return @@__masked_name
      end
    else
      return self.name
    end
  end
  #--------------------------------------------------------------------------
  # ? ?????
  #--------------------------------------------------------------------------
  def compose_cost
    create_compose_item_cache if @__compose_cost == nil
    return @__compose_cost
  end
  #--------------------------------------------------------------------------
  # ? ????????
  #--------------------------------------------------------------------------
  def compose_materials
    create_compose_item_cache if @__compose_materials == nil
    return @__compose_materials
  end
  #--------------------------------------------------------------------------
  # ? ???????
  #--------------------------------------------------------------------------
  def is_compose?
    return !compose_materials.empty?
  end
end

#???????????????????????????????????????

#==============================================================================
# ¦ Game_Party
#==============================================================================

class Game_Party < Game_Unit
  #--------------------------------------------------------------------------
  # ? ???????????
  #--------------------------------------------------------------------------
  def clear_composed_flag
    @item_composed = {}
    @weapon_composed = {}
    @armor_composed = {}
  end
  #--------------------------------------------------------------------------
  # ? ????????????
  #--------------------------------------------------------------------------
  def clear_recipe_cleared_flag
    @item_recipe_cleared = {}
    @weapon_recipe_cleared = {}
    @armor_recipe_cleared = {}
  end
  #--------------------------------------------------------------------------
  # ? ????????????
  #--------------------------------------------------------------------------
  def clear_recipe_opened_flag
    @item_recipe_opened = {}
    @weapon_recipe_opened = {}
    @armor_recipe_opened = {}
  end
  #--------------------------------------------------------------------------
  # ? ???????????????
  #     item : ????
  #     flag : true..????  false..???
  #--------------------------------------------------------------------------
  def set_item_composed(item, flag = true)
    return false unless item.is_a?(RPG::BaseItem)  # ??????
    return false unless item.is_compose?           # ????????

    # ???????????????????
    clear_composed_flag if @item_composed == nil

    # ???????????
    case item
    when RPG::Item    # ????
      @item_composed[item.id] = flag
    when RPG::Weapon  # ??
      @weapon_composed[item.id] = flag
    when RPG::Armor   # ??
      @armor_composed[item.id] = flag
    end
  end
  #--------------------------------------------------------------------------
  # ? ???????????
  #     item : ????
  #--------------------------------------------------------------------------
  def item_composed?(item)
    return false unless item.is_a?(RPG::BaseItem)  # ??????
    return false unless item.is_compose?           # ????????

    # ???????????????????
    clear_composed_flag if @item_composed == nil

    # ??????
    case item
    when RPG::Item    # ????
      return @item_composed[item.id]
    when RPG::Weapon  # ??
      return @weapon_composed[item.id]
    when RPG::Armor   # ??
      return @armor_composed[item.id]
    end
    return false
  end
  #--------------------------------------------------------------------------
  # ? ???????????????
  #     item : ????
  #     flag : true..????  false..???
  #--------------------------------------------------------------------------
  def set_item_composed(item, flag = true)
    return false unless item.is_a?(RPG::BaseItem)  # ??????
    return false unless item.is_compose?           # ????????

    # ???????????????????
    clear_composed_flag if @item_composed == nil

    # ???????????
    case item
    when RPG::Item    # ????
      @item_composed[item.id] = flag
    when RPG::Weapon  # ??
      @weapon_composed[item.id] = flag
    when RPG::Armor   # ??
      @armor_composed[item.id] = flag
    end
  end
  #--------------------------------------------------------------------------
  # ? ???????
  #     item : ????
  #--------------------------------------------------------------------------
  def recipe_cleared?(item)
    return false unless item.is_a?(RPG::BaseItem)  # ??????
    return false unless item.is_compose?           # ????????

    # ?????????????????
    clear_recipe_cleared_flag if @item_recipe_cleared == nil

    # ??
    case item
    when RPG::Item    # ????
      return @item_recipe_cleared[item.id]
    when RPG::Weapon  # ??
      return @weapon_recipe_cleared[item.id]
    when RPG::Armor   # ??
      return @armor_recipe_cleared[item.id]
    end
    return false
  end
  #--------------------------------------------------------------------------
  # ? ?????????????
  #     item : ????
  #     flag : true..??  false..???
  #--------------------------------------------------------------------------
  def set_recipe_cleared(item, flag = true)
    return false unless item.is_a?(RPG::BaseItem)  # ??????
    return false unless item.is_compose?           # ????????

    # ?????????????????
    clear_recipe_cleared_flag if @item_recipe_cleared == nil

    # ?????????
    case item
    when RPG::Item    # ????
      @item_recipe_cleared[item.id] = flag
    when RPG::Weapon  # ??
      @weapon_recipe_cleared[item.id] = flag
    when RPG::Armor   # ??
      @armor_recipe_cleared[item.id] = flag
    end
  end
  #--------------------------------------------------------------------------
  # ? ???????
  #     item : ????
  #--------------------------------------------------------------------------
  def recipe_opened?(item)
    return false unless item.is_a?(RPG::BaseItem)  # ??????
    return false unless item.is_compose?           # ????????

    # ?????????????????
    clear_recipe_opened_flag if @item_recipe_opened == nil

    # ??
    case item
    when RPG::Item    # ????
      return @item_recipe_opened[item.id]
    when RPG::Weapon  # ??
      return @weapon_recipe_opened[item.id]
    when RPG::Armor   # ??
      return @armor_recipe_opened[item.id]
    end
    return false
  end
  #--------------------------------------------------------------------------
  # ? ?????????????
  #     item : ????
  #     flag : true..??  false..???
  #--------------------------------------------------------------------------
  def set_recipe_opened(item, flag = true)
    return false unless item.is_a?(RPG::BaseItem)  # ??????
    return false unless item.is_compose?           # ????????

    # ?????????????????
    clear_recipe_opened_flag if @item_recipe_opened == nil

    # ?????????
    case item
    when RPG::Item    # ????
      @item_recipe_opened[item.id] = flag
    when RPG::Weapon  # ??
      @weapon_recipe_opened[item.id] = flag
    when RPG::Armor   # ??
      @armor_recipe_opened[item.id] = flag
    end
  end
  #--------------------------------------------------------------------------
  # ? ???????????
  #     item : ????
  #--------------------------------------------------------------------------
  def item_can_compose?(item)
    return false unless item_compose_cost_satisfy?(item)
    return false unless item_compose_material_satisfy?(item)

    return true
  end
  #--------------------------------------------------------------------------
  # ? ?????????????
  #     item : ????
  #--------------------------------------------------------------------------
  def item_compose_cost_satisfy?(item)
    return false unless item.is_a?(RPG::BaseItem)  # ??????
    return false unless item.is_compose?           # ????????

    return (gold >= item.compose_cost)
  end
  #--------------------------------------------------------------------------
  # ? ?????????????
  #     item : ????
  #--------------------------------------------------------------------------
  def item_compose_material_satisfy?(item)
    return false unless item.is_a?(RPG::BaseItem)  # ??????
    return false unless item.is_compose?           # ????????

    item.compose_materials.each { |material|
      num = item_number(material.item)
      return false if num < material.number || num == 0  # ????
    }
    return true
  end
  #--------------------------------------------------------------------------
  # ? ?????????????
  #     item : ????
  #--------------------------------------------------------------------------
  def number_of_composable(item)
    return 0 unless item.is_a?(RPG::BaseItem)  # ??????
    return 0 unless item.is_compose?           # ????????

    number = ($imported["LimitBreak"] ? item.number_limit : 99)
    if item.compose_cost > 0
      number = [number, gold / item.compose_cost].min
    end
    # ?????
    item.compose_materials.each { |material|
      next if material.number == 0  # ??? 0 ???
      n = item_number(material.item) / material.number
      number = [number, n].min
    }
    return number
  end
end

#???????????????????????????????????????

#==============================================================================
# ? Game_ComposeMaterial
#------------------------------------------------------------------------------
#   ??????????????????
#==============================================================================

class Game_ComposeMaterial
  #--------------------------------------------------------------------------
  # ? ??????????
  #--------------------------------------------------------------------------
  attr_accessor :kind                     # ??????? (/[IWA]/)
  attr_accessor :id                       # ????? ID
  attr_accessor :number                   # ???
  #--------------------------------------------------------------------------
  # ? ?????????
  #--------------------------------------------------------------------------
  def initialize
    @kind = "I"
    @id = 0
    @number = 1
  end
  #--------------------------------------------------------------------------
  # ? ??????
  #--------------------------------------------------------------------------
  def item
    case @kind
    when "I"  # ????
      return $data_items[@id]
    when "W"  # ??
      return $data_weapons[@id]
    when "A"  # ??
      return $data_armors[@id]
    else
      return nil
    end
  end
end

#???????????????????????????????????????

#==============================================================================
# ¦ Window_Base
#==============================================================================

class Window_Base < Window
  #--------------------------------------------------------------------------
  # ? ??????????
  #     item    : ???? (????????????)
  #     x       : ??? X ??
  #     y       : ??? Y ??
  #     enabled : ??????false ?????????
  #--------------------------------------------------------------------------
  def draw_compose_item_name(item, x, y, enabled = true)
    return if item == nil

    draw_icon(item.icon_index, x, y, enabled)
    self.contents.font.color = normal_color
    self.contents.font.color.alpha = enabled ? 255 : 128
    masked = !$game_party.item_composed?(item) &&
      !$game_party.recipe_cleared?(item)
    self.contents.draw_text(x + 24, y, 172, WLH,
      masked ? item.masked_name : item.name)
  end
end

#???????????????????????????????????????

#==============================================================================
# ? Window_ComposeNumber
#------------------------------------------------------------------------------
#   ??????????????????????????????
#==============================================================================

class Window_ComposeNumber < Window_ShopNumber
  #--------------------------------------------------------------------------
  # ? ??????????
  #--------------------------------------------------------------------------
  attr_accessor :sell_flag                # ?????
  #--------------------------------------------------------------------------
  # ? ?????????
  #     x : ?????? X ??
  #     y : ?????? Y ??
  #--------------------------------------------------------------------------
  alias initialize_KGC_ComposeItem initialize unless $@
  def initialize(x, y)
    @sell_flag = false

    initialize_KGC_ComposeItem(x, y)
  end
  #--------------------------------------------------------------------------
  # ? ??????
  #--------------------------------------------------------------------------
  def refresh
    y = 96
    self.contents.clear
    if @sell_flag
      draw_item_name(@item, 0, y)
    else
      draw_compose_item_name(@item, 0, y)
    end
    self.contents.font.color = normal_color
    self.contents.draw_text(212, y, 20, WLH, "x")
    self.contents.draw_text(248, y, 20, WLH, @number, 2)
    self.cursor_rect.set(244, y, 28, WLH)
    if !KGC::ComposeItem::HIDE_ZERO_COST || @price > 0
      draw_currency_value(@price * @number, 4, y + WLH * 2, 264)
    end
  end
end

#???????????????????????????????????????

#==============================================================================
# ? Window_ComposeItem
#------------------------------------------------------------------------------
#   ?????????????????????????????
#==============================================================================

class Window_ComposeItem < Window_ShopBuy
  #--------------------------------------------------------------------------
  # ? ??????
  #--------------------------------------------------------------------------
  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
      # ??????????
      @data.push(item) if include?(item)
    end
    @item_max = @data.size
    create_contents
    for i in 0...@item_max
      draw_item(i)
    end
  end
  #--------------------------------------------------------------------------
  # ? ????????????????
  #     item : ????
  #--------------------------------------------------------------------------
  def include?(item)
    return false if item == nil           # ????? nil ??????
    return false unless item.is_compose?  # ?????????????

    # ????????
    if KGC::ComposeItem::SHOW_COMPOSED_RECIPE
      return true if $game_party.item_composed?(item)
    end
    # ?? or ????????
    if $game_party.recipe_cleared?(item) || $game_party.recipe_opened?(item)
      return true
    end
    # ????????
    if KGC::ComposeItem::HIDE_SHORTAGE_COST
      return false unless $game_party.item_compose_cost_satisfy?(item)
    end
    # ????????
    if KGC::ComposeItem::HIDE_SHORTAGE_MATERIAL
      return false unless $game_party.item_compose_material_satisfy?(item)
    end

    if KGC::ComposeItem::NEED_RECIPE_OPEN_OR_CLEAR
      # ?? or ???????
      unless $game_party.recipe_cleared?(item) ||
          $game_party.recipe_opened?(item)
        return false
      end
    end

    return true
  end
  #--------------------------------------------------------------------------
  # ? ??????????????????
  #     item : ????
  #--------------------------------------------------------------------------
  def enable?(item)
    return $game_party.item_can_compose?(item)
  end
  #--------------------------------------------------------------------------
  # ? ?????
  #     index : ????
  #--------------------------------------------------------------------------
  def draw_item(index)
    item = @data[index]
    number = $game_party.item_number(item)
    limit = ($imported["LimitBreak"] ? item.number_limit : 99)
    rect = item_rect(index)
    self.contents.clear_rect(rect)
    draw_compose_item_name(item, rect.x, rect.y, enable?(item))
    # ?????
    if !KGC::ComposeItem::HIDE_ZERO_COST || item.compose_cost > 0
      rect.width -= 4
      self.contents.draw_text(rect, item.compose_cost, 2)
    end
  end

  if KGC::ComposeItem::HIDE_UNKNOWN_RECIPE_HELP
  #--------------------------------------------------------------------------
  # ? ?????????
  #--------------------------------------------------------------------------
  def update_help
    item = (index >= 0 ? @data[index] : nil)
    if item == nil || $game_party.item_composed?(item) ||
        $game_party.recipe_cleared?(item)
      # ????? nil or ???? or ?????? [Window_ShopBuy] ????
      super
    else
      @help_window.set_text(KGC::ComposeItem::UNKNOWN_RECIPE_HELP)
    end
  end
  end
end

#???????????????????????????????????????

#==============================================================================
# ? Window_ComposeStatus
#------------------------------------------------------------------------------
#  ?????????????????????????????
#==============================================================================

class Window_ComposeStatus < Window_ShopStatus
  #--------------------------------------------------------------------------
  # ? ?????
  #--------------------------------------------------------------------------
  MODE_MATERIAL = 0  # ?????
  MODE_STATUS   = 1  # ??????????
  #--------------------------------------------------------------------------
  # ? ?????????
  #     x : ?????? X ??
  #     y : ?????? Y ??
  #--------------------------------------------------------------------------
  def initialize(x, y)
    @mode = MODE_MATERIAL
    super(x, y)
  end
  #--------------------------------------------------------------------------
  # ? ?????
  #--------------------------------------------------------------------------
  def change_mode
    case @mode
    when MODE_MATERIAL
      @mode = MODE_STATUS
    when MODE_STATUS
      @mode = MODE_MATERIAL
    end
    self.oy = 0
    refresh
  end
  #--------------------------------------------------------------------------
  # ? ??????????
  #--------------------------------------------------------------------------
  def create_contents
    if @mode == MODE_STATUS
      super
      return
    end

    self.contents.dispose
    ch = height - 32
    if @item != nil
      mag = (KGC::ComposeItem::COMPACT_MATERIAL_LIST ? 1 : 2)
      ch = [ch, WLH * (mag + @item.compose_materials.size * mag)].max
    end
    self.contents = Bitmap.new(width - 32, ch)
  end
  #--------------------------------------------------------------------------
  # ? ??????
  #--------------------------------------------------------------------------
  def refresh
    create_contents
    self.contents.font.size = Font.default_size
    case @mode
    when MODE_MATERIAL
      draw_material_list
    when MODE_STATUS
      super
    end
  end
  #--------------------------------------------------------------------------
  # ? ????????
  #--------------------------------------------------------------------------
  def draw_material_list
    return if @item == nil
    number = $game_party.item_number(@item)
    self.contents.font.color = system_color
    self.contents.draw_text(4, 0, 200, WLH, Vocab::Possession)
    self.contents.font.color = normal_color
    self.contents.draw_text(4, 0, 200, WLH, number, 2)
    self.contents.font.size = 16 if KGC::ComposeItem::COMPACT_MATERIAL_LIST
    mag = (KGC::ComposeItem::COMPACT_MATERIAL_LIST ? 1 : 2)
    @item.compose_materials.each_with_index { |material, i|
      y = WLH * (mag + i * mag)
      draw_material_info(0, y, material)
    }
  end
  #--------------------------------------------------------------------------
  # ? ???????
  #--------------------------------------------------------------------------
  def draw_material_info(x, y, material)
    m_item = material.item
    return if m_item == nil
    number = $game_party.item_number(m_item)
    enabled = (number > 0 && number >= material.number)
    draw_item_name(m_item, x, y, enabled)
    if KGC::ComposeItem::COMPACT_MATERIAL_LIST
      m_number = (material.number == 0 ? "-" : sprintf("%d", material.number))
      self.contents.draw_text(x, y, width - 32, WLH,
        sprintf("%s/%d", m_number, number), 2)
    else
      m_number = (material.number == 0 ? "-" : sprintf("%2d", material.number))
      self.contents.draw_text(x, y + WLH, width - 32, WLH,
        sprintf("%2s/%2d", m_number, number), 2)
    end
  end
end

#???????????????????????????????????????

#==============================================================================
# ¦ Scene_Map
#==============================================================================

class Scene_Map < Scene_Base
  #--------------------------------------------------------------------------
  # ? ????????????
  #--------------------------------------------------------------------------
  alias call_shop_KGC_ComposeItem call_shop
  def call_shop
    # ????????????
    if $game_switches[KGC::ComposeItem::COMPOSE_CALL_SWITCH]
      # ???????
      $game_temp.next_scene = nil
      $game_switches[KGC::ComposeItem::COMPOSE_CALL_SWITCH] = false
      $scene = Scene_ComposeItem.new
    else
      call_shop_KGC_ComposeItem
    end
  end
end

#???????????????????????????????????????

#==============================================================================
# ? Scene_ComposeItem
#------------------------------------------------------------------------------
#  ????????????????
#==============================================================================

class Scene_ComposeItem < Scene_Shop
  #--------------------------------------------------------------------------
  # ? ????
  #--------------------------------------------------------------------------
  def start
    super
    # ????????????
    if KGC::ComposeItem::HIDE_COMMAND_WINDOW
      @command_window.visible = false
      @gold_window.y = Graphics.height - @gold_window.height
      @gold_window.z = @status_window.z + 100
      @gold_window.visible = !KGC::ComposeItem::HIDE_GOLD_WINDOW

      @dummy_window.y = @command_window.y
      @dummy_window.height += @command_window.height
    end

    # [Scene_Shop] ????????????? @buy_window ???
    @buy_window.dispose
    @buy_window = Window_ComposeItem.new(0, @dummy_window.y)
    @buy_window.height = @dummy_window.height
    @buy_window.active = false
    @buy_window.visible = false
    @buy_window.help_window = @help_window

    #
« Letzte Änderung: Mai 23, 2010, 21:43:12 von Ðeity »

Re: KGC_ComposeItem [help]

Offline Ðeity

  • No Pain, no gain!
  • Administrator
  • Eventmeister
  • ****
  • Beiträge: 427
  • No Pain, no Gain!
    • Deity-VX
Re: KGC_ComposeItem [help]
« Antwort #1 am: Mai 23, 2010, 21:02:55 »
Hay,
so wie ich das sehe, musst du die Rezepte nicht ingame sondern schon davor bestimmen und in das Script reinschreiben.
Es gäbe eine Möglichkeit ein Rezept auch ingame hinzuzufügen, aber das module von KGC wird nicht gespeichert. Das heisst nach einem neu starten des Spiels (auch Laden) würde das Rezept verschwinden.
Trotzdem hier die eigentliche Möglichkeit:

KGC::ComposeItem::RECIPE_ITEM[1] = [0, "I:2,2"]

MfG
Deity



Re: KGC_ComposeItem [help]

Offline FlipelyFlip

  • Will sein Alter nicht verraten xD
  • Administrator
  • VX-Großmeister
  • ****
  • Beiträge: 884
  • Heyho (=
    • Flips Musik Kariere auf Facebook xD
Re: KGC_ComposeItem [help]
« Antwort #2 am: Mai 23, 2010, 21:05:37 »
ich glaub du hasts falsch verstanden Deity. Er hats ja schon im script erstellt, nur will er ingame das so machen, dass er das Rezept aktiviert, nicht erstellt ;)

ich würde jetzt echt stupide mal sagen weils oft aus erfahrung so war, dass du folgendes machen musst:

RECIPE_ITEM[1] = true

bin mir da aber nich ganz sicher^^" Testen schadet nicht ;)

Re: KGC_ComposeItem [help]

Offline Cyberxeroxx

  • Eventmeister
  • ***
  • Beiträge: 333
  • Es ist ein guter Tag um Böse zu sein Muhahahahaha
Re: KGC_ComposeItem [help]
« Antwort #3 am: Mai 23, 2010, 21:14:23 »
Also ich habe es damals selber gemacht und zwar musst du bei
Zitat
RECIPE_ITEM[1]    = []
  RECIPE_ITEM[2]    = [0, "I:1,2"]
  RECIPE_ITEM[3]    = [0, "I:1,3"]
  RECIPE_ITEM[9]    = [0, "I:3,3", "I:4,3"]
  RECIPE_WEAPON[32] = [0, "W:30", "I:9,2"]
  RECIPE_WEAPON[33] = [0, "W:7,2", "A:9"]
  RECIPE_WEAPON[34] = [0, "W:22", "I:23", "I:16"]
  RECIPE_ARMOR[38]  = [0, "A:16", "I:10,2"]
  RECIPE_ARMOR[39]  = [0, "A:20", "I:9,2"]
  RECIPE_ARMOR[40]  = [0, "A:21", "W:6"]
  RECIPE_ARMOR[41]  = [0, "A:22", "I:24"]
  RECIPE_ARMOR[43]  = [0, "A:38", "I:25"]
  RECIPE_ARMOR[45]  = [0, "A:7", "A:46"]
  RECIPE_ARMOR[46]  = [0, "A:10", "A:12", "A:30", "I:16"]
einstellen was du brauchst z.B. Ber der Datenbank bei den Items hast du als ID2: Hi-Potion
bedeutet du gibts dann: RECIPE_ITEM[2] = [0, "I:1,2"]
Rot = Gold wie teuer etwas ist
Grün = I steht für Item die Zahl ist welche ID
Orange = die Anzahl des Items die man brauch
und so ist das mit den anderen auch W = Waffe und A = Rüstung

Re: KGC_ComposeItem [help]

Offline Domin0e

  • Leaf in the Wind
  • Mr. MACK-Tile
  • ***
  • Beiträge: 237
    • Mein kleiner Blog~
Re: KGC_ComposeItem [help]
« Antwort #4 am: Mai 23, 2010, 21:17:45 »
ich glaub du hasts falsch verstanden Deity. Er hats ja schon im script erstellt, nur will er ingame das so machen, dass er das Rezept aktiviert, nicht erstellt ;)

Miep, da hast DU wohl was falsch verstanden.. ;)
Um eine Zeile aus der Script zu zitieren: "RECIPE_ITEM[1]    = []"
Demnach hat Zitronenice ein leeres Rezept erstellt, und möchte dieses nachträglich im Spiel ändern, was wie deity schon gesagt hat (Sofern ich mit meinen eingeschränkten rgss-Kenntnissen mitkomme) maximal temporär (Bis zum nächsten laden) möglich wäre.
Alternativ nutzt du dieses.. Lass es mich mal 'verschleiern' nennen der Rezepte. Dann lässt du den npc seine Geschichte erzählen und könntest der Gruppe z.B. einfach die benötigten Gegenstände einmal geben oder sowas ;)

@cyber: Er kann ja Rezepte erstellen, das ist nicht das Problem.. Das Problem ist, dass er während des Spiels einen Eintrag im Skript ändern will, was laut Deity max. temporär möglich ist!~ ;)

MfG, Domin0e
"Twelve highlanders and a bagpipe make a rebellion." - Scottish Proverb

Mein kleiner Blog

Re: KGC_ComposeItem [help]

Offline Zitronenice

  • RTP-Mapper
  • *
  • Beiträge: 35
Re: KGC_ComposeItem [help]
« Antwort #5 am: Mai 23, 2010, 21:29:30 »
@Deity
Also die Variante funktioniert nur, wenn man den Shop vorher nicht schonmal aufgerufen hat :x

@Flippy
Da kommt ne Fehlermeldung.
Name error occurred while running Script.
uninitializied Constant Game_Interpreter::Recipe_Item

@Cyber
Ich weiss wie die Einstellungen für die Gegenstände funktionieren. Ich will nur bei meinem festen "Compose" Punkt alle Gegenstände Eintragen, aber durch Events erst aktivieren. Gegenstände zum mischen werden ja nicht angezeigt wenn
der Wert hier leer ist. RECIPE_ITEM[1]    = [dieser hier]


knifflige Sache^^

Re: KGC_ComposeItem [help]

Offline Ðeity

  • No Pain, no gain!
  • Administrator
  • Eventmeister
  • ****
  • Beiträge: 427
  • No Pain, no Gain!
    • Deity-VX
Re: KGC_ComposeItem [help]
« Antwort #6 am: Mai 23, 2010, 22:00:35 »
Habs mir genauer angeschaut und so wie du es haben willst wird es nicht klappen. Der Grund ist eben der, dass die Rezepte in einem module festgelegt werden, welches nicht gespeichert wird.
Wenn es gehen würde, müssten die Rezepte in einer globalen Variable/Klasse gespeichert sein und nicht in einem module.

MfG
Deity



Re: KGC_ComposeItem [help]

Offline Zitronenice

  • RTP-Mapper
  • *
  • Beiträge: 35
Re: KGC_ComposeItem [help]
« Antwort #7 am: Mai 23, 2010, 22:24:02 »
Son mist. Dann werd ich mal schaun wie ich das geregelt kriege.
Trotzdem danke an alle :)

 


 Bild des Monats

rooftop party

Views: 3168
By: papilion

 Umfrage

  • Wer soll das BdM gewinnen?
  • Dot Kandidat 1
  • 3 (25%)
  • Dot Kandidat 2
  • 1 (8%)
  • Dot Kandidat 3
  • 2 (16%)
  • Dot Kandidat 4
  • 0 (0%)
  • Dot Kandidat 5
  • 6 (50%)
  • Stimmen insgesamt: 12
  • View Topic

 Schnellsuche





SimplePortal 2.3.3 © 2008-2010, SimplePortal