Показано с 1 по 6 из 6

Тема: Categorize Item

  1. #1

    Сообщение Categorize Item

    Этот скрипт открывает в вещах больше функций:
    "Goods",
    "Combat",
    "Weapons",
    "Shields",
    "Helmets",
    "Armor",
    "Accessories",
    "Valuables",
    "Special Items",
    "All Items",

    Код:
    #_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_
    #_/    ◆            Item Categorization - KGC_CategorizeItem             ◆ VX ◆
    #_/    ◇                  Last update : 2008/04/10                            ◇
    #_/    ◇                Translated by Mr. Anonymous                           ◇
    #_/    ◆ http://ytomy.sakura.ne.jp/                                            ◆
    #_/-----------------------------------------------------------------------------
    #_/  Adds a function to the Items screen which allows the player to display 
    #_/  items by catagory.
    #_/  To assign a category to an item, you must add <category IDENTIFIER> to the
    #_/  notes on the specified item.
    #_/  EX. A Potion would be listed as <category Goods> and a Sword would be
    #_/  listed as <category Weapons>, provided you use the default terminology.
    #_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_
    
    $data_system = load_data("Data/System.rvdata") if $data_system == nil
    
    #==============================================================================#
    #                             ★ Customization ★                                #         
    #==============================================================================#
    
    module KGC
    module CategorizeItem
      #                  ◆ Automatically Catagorize Items ◆
      ENABLE_AUTO_CATEGORIZE = true
      
      #                   ◆ Duplicate Category Entries. ◆
      #  Set to false, items can have multiple categories.
      #  Set to true, items will be classified under the last tag (In the item
      #  database "Notes")
      NOT_ALLOW_DUPLICATE = true
    
      #                      ◆ Category Identifier ◆
      #  Arrange names in order to identify a category with the category identifier.
      #  These are the default item catagories translated for future reference.
      #  "Goods", "Combat", "Weapons", "Shields", "Helmets", "Armor", 
      #  "Accessories", "Valuables", "Special Items", "All Items"
      CATEGORY_IDENTIFIER = [
        "Goods",          # Consumable items (potion)
        "Combat",         # Battle-only items (fire bomb)
        "Weapons",        # Weapons
        "Shields",        # Shields
        "Helmets",        # Head Gear / Helmets
        "Armor",          # Body Gear / Armor
        "Accessories",    # Accessories / Rings, Necklaces, etc
        "Valuables",      # Treasures and the like
        "Special Items",  # AKA Plot Devices. Special keys, etc.
        "All Items",      # All Items
      ]
      
      #                   ◆ Default Catagory Display ◆
      #  Not hard to figure this one out.
      ITEM_DEFAULT_CATEGORY = "Goods"
    
      #                   ◆ Item Screen Category Name ◆
      #  Shows what current category is selected in the item description window.
      #  Must be arranged in the same order as CATAGORY_IDENTIFIER.
      CATEGORY_NAME = [
        "Goods",
        "Combat",
        Vocab.weapon,                # Weapons
        Vocab.armor1,                # Shields
        "#{Vocab.armor2}",           # Head Gear
        "#{Vocab.armor3}",           # Body Gear
        Vocab.armor4,                # Accessories
        "Valuables",
        "Special",
        "All",
      ]
    
      #                       ◆ Descriptive Text ◆
      #  Must be arranged in the same order as CATAGORY_IDENTIFIER
      CATEGORY_DESCRIPTION = [
        "Viewing #{Vocab.item}.",
        "Viewing Combat #{Vocab.item}. For use during battle.",
        "Viewing #{Vocab.weapon}s.",
        "Viewing #{Vocab.armor1}s.",
        "Viewing #{Vocab.armor2}s.",
        "Viewing #{Vocab.armor3}s.",
        "Viewing #{Vocab.armor4}.",
        "Viewing Valuables.",
        "Viewing Special #{Vocab.item}. A.K.A. Plot Devices.",
        "Viewing All #{Vocab.item}.",
      ]
    
      # ◆ Coordinates of item description window. [ x, y ]
      CATEGORY_WINDOW_POSITION  = [1, 48]
      # ◆ Number of rows in the item description window.
      CATEGORY_WINDOW_COLUMNS   = 10
      # ◆ Item description window column line width.
      CATEGORY_WINDOW_COL_WIDTH = 50
      # ◆ item description window column spacer width.
      CATEGORY_WINDOW_COL_SPACE = 1
    end
    end
    
    #------------------------------------------------------------------------------#
    
    $imported = {} if $imported == nil
    $imported["CategorizeItem"] = true
    
    module KGC::CategorizeItem
      #                        ◆ Item Index ◆
      ITEM_DEFAULT_CATEGORY_INDEX = CATEGORY_IDENTIFIER.index(ITEM_DEFAULT_CATEGORY)
    
      #                     ◆ Reserved Category Index ◆
      #  To be honest I'm not entirely sure what this affects.
      RESERVED_CATEGORY_INDEX = {
        "All Items"     => CATEGORY_IDENTIFIER.index("All Items"),
        "Valuables"   => CATEGORY_IDENTIFIER.index("Valuables"),
        "Weapons"     => CATEGORY_IDENTIFIER.index("Weapons"),
        "Gear"     => CATEGORY_IDENTIFIER.index("Gear"),
        "Shields"       => CATEGORY_IDENTIFIER.index("Shields"),
        "Helmets"   => CATEGORY_IDENTIFIER.index("Helmets"),
        "Armor" => CATEGORY_IDENTIFIER.index("Armor"),
        "Accessories"   => CATEGORY_IDENTIFIER.index("Accessories")
      }
      
    # * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * #
    #  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.
    
      # Regular Expression Definition 
      module Regexp
        # Base Item Module
        module BaseItem
          # Category tag string
          CATEGORY = /^<(?:CATEGORY|classification|category?)[ ]*(.*)>/i
        end
      end
    end
    
    #==============================================================================
    # ■ RPG::BaseItem
    #==============================================================================
    
    class RPG::BaseItem
      #--------------------------------------------------------------------------
      # ○ アイテム分類のキャッシュ生成
      #--------------------------------------------------------------------------
      def create_categorize_item_cache
        if @__item_category == nil || !KGC::CategorizeItem::ENABLE_AUTO_CATEGORIZE
          @__item_category = []
        else
          @__item_category.compact!
        end
    
        self.note.split(/[\r\n]+/).each { |line|
          if line =~ KGC::CategorizeItem::Regexp::BaseItem::CATEGORY
            # カテゴリ
            c = KGC::CategorizeItem::CATEGORY_IDENTIFIER.index($1)
            @__item_category << c if c != nil
          end
        }
        if @__item_category.empty?
          @__item_category << KGC::CategorizeItem::ITEM_DEFAULT_CATEGORY_INDEX
        elsif KGC::CategorizeItem::NOT_ALLOW_DUPLICATE
          # 最後に指定したカテゴリに配置
          @__item_category = [@__item_category.pop]
        end
      end
      #--------------------------------------------------------------------------
      # ○ アイテムのカテゴリ
      #--------------------------------------------------------------------------
      def item_category
        create_categorize_item_cache if @__item_category == nil
        return @__item_category
      end
    end
    
    #==================================End Class===================================#
    
    #==============================================================================
    # ■ RPG::UsableItem
    #==============================================================================
    
    class RPG::UsableItem < RPG::BaseItem
      #--------------------------------------------------------------------------
      # ○ アイテム分類のキャッシュ生成
      #--------------------------------------------------------------------------
      def create_categorize_item_cache
        @__item_category = []
        if self.price == 0
          @__item_category << KGC::CategorizeItem::RESERVED_CATEGORY_INDEX["Valuables"]
        end
        super
      end
    end
    
    #==================================End Class===================================#
    
    #==============================================================================
    # ■ RPG::Weapon
    #==============================================================================
    
    class RPG::Weapon < RPG::BaseItem
      #--------------------------------------------------------------------------
      # ○ アイテム分類のキャッシュ生成
      #--------------------------------------------------------------------------
      def create_categorize_item_cache
        @__item_category = []
        @__item_category << KGC::CategorizeItem::RESERVED_CATEGORY_INDEX["Weapon"]
        super
      end
    end
    
    #==================================End Class===================================#
    
    #==============================================================================
    # ■ RPG::Armor
    #==============================================================================
    
    class RPG::Armor < RPG::BaseItem
      #--------------------------------------------------------------------------
      # ○ アイテム分類のキャッシュ生成
      #--------------------------------------------------------------------------
      def create_categorize_item_cache
        @__item_category = []
        @__item_category << KGC::CategorizeItem::RESERVED_CATEGORY_INDEX["Armor"]
        type = nil
        case self.kind
        when 0
          type = "Shields"
        when 1
          type = "Head Gear"
        when 2
          type = "Body Gear"
        when 3
          type = "Accessories"
        end
        if type != nil
          @__item_category << KGC::CategorizeItem::RESERVED_CATEGORY_INDEX[type]
        end
        super
      end
    end
    
    #==================================End Class===================================#
    
    #==============================================================================
    # ■ Window_Item
    #==============================================================================
    
    class Window_Item < Window_Selectable
      #--------------------------------------------------------------------------
      # ● 公開インスタンス変数
      #--------------------------------------------------------------------------
      attr_reader   :category                 # カテゴリ
      #--------------------------------------------------------------------------
      # ● オブジェクト初期化
      #     x      : ウィンドウの X 座標
      #     y      : ウィンドウの Y 座標
      #     width  : ウィンドウの幅
      #     height : ウィンドウの高さ
      #--------------------------------------------------------------------------
      alias initialize_KGC_CategorizeItem initialize
      def initialize(x, y, width, height)
        @category = 0
    
        initialize_KGC_CategorizeItem(x, y, width, height)
      end
      #--------------------------------------------------------------------------
      # ○ カテゴリ設定
      #--------------------------------------------------------------------------
      def category=(value)
        @category = value
        refresh
      end
      #--------------------------------------------------------------------------
      # ● アイテムをリストに含めるかどうか
      #     item : アイテム
      #--------------------------------------------------------------------------
      alias include_KGC_CategorizeItem? include?
      def include?(item)
        return false if item == nil
    
        # 「全種」なら無条件で含める
        if @category == KGC::CategorizeItem::RESERVED_CATEGORY_INDEX["All Items"]
          return true
        end
    
        result = include_KGC_CategorizeItem?(item)
    
        unless result
          # 使用可能なら追加候補とする
          if $imported["UsableEquipment"] && $game_party.item_can_use?(item)
            result = true
          end
        end
        # 戦闘外ならカテゴリ一致判定
        unless $game_temp.in_battle
          result &= (item.item_category.include?(@category))
        end
    
        return result
      end
    end
    
    #==================================End Class===================================#
    
    #==============================================================================
    # □ Window_ItemCategory
    #------------------------------------------------------------------------------
    #  アイテム画面でカテゴリ選択を行うウィンドウです。
    #==============================================================================
    
    class Window_ItemCategory < Window_Command
      #--------------------------------------------------------------------------
      # ● オブジェクト初期化
      #--------------------------------------------------------------------------
      def initialize
        cols = KGC::CategorizeItem::CATEGORY_WINDOW_COLUMNS
        width = KGC::CategorizeItem::CATEGORY_WINDOW_COL_WIDTH * cols + 32
        width += (cols - 1) * KGC::CategorizeItem::CATEGORY_WINDOW_COL_SPACE
        commands = KGC::CategorizeItem::CATEGORY_NAME
        super(width, commands, cols, 0,
          KGC::CategorizeItem::CATEGORY_WINDOW_COL_SPACE)
        self.x = KGC::CategorizeItem::CATEGORY_WINDOW_POSITION[0]
        self.y = KGC::CategorizeItem::CATEGORY_WINDOW_POSITION[1]
        self.z = 1000
        self.index = 0
      end
      #--------------------------------------------------------------------------
      # ● ヘルプテキスト更新
      #--------------------------------------------------------------------------
      def update_help
        @help_window.set_text(KGC::CategorizeItem::CATEGORY_DESCRIPTION[self.index])
      end
    end
    
    #==================================End Class===================================#
    
    #==============================================================================
    # ■ Scene_Item
    #==============================================================================
    
    class Scene_Item < Scene_Base
      #--------------------------------------------------------------------------
      # ● 開始処理
      #--------------------------------------------------------------------------
      alias start_KGC_CategorizeItem start
      def start
        start_KGC_CategorizeItem
    
        @category_window = Window_ItemCategory.new
        @category_window.help_window = @help_window
        show_category_window
      end
      #--------------------------------------------------------------------------
      # ● 終了処理
      #--------------------------------------------------------------------------
      alias terminate_KGC_CategorizeItem terminate
      def terminate
        terminate_KGC_CategorizeItem
    
        @category_window.dispose
      end
      #--------------------------------------------------------------------------
      # ● フレーム更新
      #--------------------------------------------------------------------------
      alias update_KGC_CategorizeItem update
      def update
        @category_window.update
    
        update_KGC_CategorizeItem
    
        if @category_window.active
          update_category_selection
        end
      end
      #--------------------------------------------------------------------------
      # ○ カテゴリ選択の更新
      #--------------------------------------------------------------------------
      def update_category_selection
        unless @category_activated
          @category_activated = true
          return
        end
    
        # 選択カテゴリー変更
        if @last_category_index != @category_window.index
          @item_window.category = @category_window.index
          @item_window.refresh
          @last_category_index = @category_window.index
        end
    
        if Input.trigger?(Input::B)
          Sound.play_cancel
          return_scene
        elsif Input.trigger?(Input::C)
          Sound.play_decision
          hide_category_window
        end
      end
      #--------------------------------------------------------------------------
      # ● アイテム選択の更新
      #--------------------------------------------------------------------------
      alias update_item_selection_KGC_CategorizeItem update_item_selection
      def update_item_selection
        if Input.trigger?(Input::B)
          Sound.play_cancel
          show_category_window
          return
        end
    
        update_item_selection_KGC_CategorizeItem
      end
      #--------------------------------------------------------------------------
      # ○ カテゴリウィンドウの表示
      #--------------------------------------------------------------------------
      def show_category_window
        @category_window.open
        @category_window.active = true
        @item_window.active = false
      end
      #--------------------------------------------------------------------------
      # ○ カテゴリウィンドウの非表示
      #--------------------------------------------------------------------------
      def hide_category_window
        @category_activated = false
        @category_window.close
        @category_window.active = false
        @item_window.active = true
        # アイテムウィンドウのインデックスを調整
        if @item_window.index >= @item_window.item_max
          @item_window.index = [@item_window.item_max - 1, 0].max
        end
      end
    end
    
    #==================================End Class===================================#
    
    #_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_
    #_/  The original untranslated version of this script can be found here:
    # http://f44.aaa.livedoor.jp/~ytomy/tkool/rpgtech/php/tech.php?tool=VX&cat=tech_vx/item&tech=categorize_item
    #_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_
    Изображения Изображения
    • Тип файла: png qweqs.png (139.8 Кб, Просмотров: 39)
    Последний раз редактировалось aisuuw; 22.02.2012 в 19:10.
    Я очень злой дядя.....Так что думайте перед тем когда говорить!
    Спрайты тут http://rpgmaker.su/album.php?u=2719

  2. #2
    Маститый Аватар для Элрик
    Информация о пользователе
    Регистрация
    09.09.2010
    Сообщений
    1,284
    Записей в дневнике
    47
    Репутация: 24 Добавить или отнять репутацию

    По умолчанию

    А где скрипт-то? О,о

  3. #3

    По умолчанию

    Ахахаха блин забыл))
    Я очень злой дядя.....Так что думайте перед тем когда говорить!
    Спрайты тут http://rpgmaker.su/album.php?u=2719

  4. #4
    Познающий Аватар для mephis
    Информация о пользователе
    Регистрация
    27.01.2011
    Адрес
    Новосибирск
    Сообщений
    330
    Записей в дневнике
    8
    Репутация: 34 Добавить или отнять репутацию

    По умолчанию

    Мда, по всей видимости, для каждого скрипта из огромной сборки KGC Scripts Library будет создаваться тема... Причём этим "фирменным" способом: одно предложение суть скрипта, Ctrl+C & Ctrl+V код скрипта — вуаля, тема готова. Что интересно, это кому-то нравится.

  5. #5
    Бывалый Аватар для Anxel
    Информация о пользователе
    Регистрация
    06.06.2011
    Адрес
    п.Солнечный, Хаб.край
    Сообщений
    942
    Записей в дневнике
    11
    Репутация: 23 Добавить или отнять репутацию

    По умолчанию

    Проще уже создать одну тему и в первом посте под спойлеры спрятать все скрипты...

    Но видимо товарищ vancar набивает темы для ачивки ^_^

  6. #6
    Маститый Аватар для Элрик
    Информация о пользователе
    Регистрация
    09.09.2010
    Сообщений
    1,284
    Записей в дневнике
    47
    Репутация: 24 Добавить или отнять репутацию

    По умолчанию

    Цитата Сообщение от Anxel Посмотреть сообщение
    Но видимо товарищ vancar набивает темы для ачивки ^_^
    Человек-ачивмент =_3_=

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

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

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

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

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

Ваши права

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