赞 | 0 |
VIP | 0 |
好人卡 | 0 |
积分 | 1 |
经验 | 695 |
最后登录 | 2014-1-29 |
在线时间 | 6 小时 |
Lv1.梦旅人
- 梦石
- 0
- 星屑
- 50
- 在线时间
- 6 小时
- 注册时间
- 2013-11-23
- 帖子
- 11
|
加入我们,或者,欢迎回来。
您需要 登录 才可以下载或查看,没有帐号?注册会员
x
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
#_/ ◆ アイテム分類 - KGC_CategorizeItem ◆ VX ◆
#_/ ◇ Last update : 2008/01/12 ◇
#_/ 翻译:snstar2006
#_/----------------------------------------------------------------------------
#_/ アイテムや武器、防具を種類別に分類する機能を作成します。
#_/
#_/
#_/ 设置方法:在物品、武器、防具的备注栏里打上如下格式:
#_/ <分类 类别>
#_/ 类别以你在 「种类 识别名称」 设置的名称分类
#_/ 若是找不到分类名称,就会归在默认的物品种类下
#_/ 详细设置请看下面的注释
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
$data_system = load_data("Data/System.rvdata") if $data_system == nil
#==============================================================================
# ★ カスタマイズ項目 - Customize ★
#==============================================================================
module KGC
module CategorizeItem
# ◆ 自動振り分けを行う
# ◆ 自動分类
# 不需在备注栏设置,会根据下面的设定自动分类
#=================================================
# 所有物品:所有的物品包括物品、武器、各类防具
# 贵重物品:价格设置为0的物品(好贵重啊 = =")
# 武器: 所有的武器(废话)
# 盾: 盾类防具
# 头部防具:头部防具
# 身体防具:身体防具
# 装饰品: 装饰品
# = = 所有防具的说明都是废话
ENABLE_AUTO_CATEGORIZE = true
# ◆ 複数のカテゴリには配置しない
# true にすると、いずれか1つのカテゴリにしか振り分けなくなります。
# (「全種」は例外)
# ◆ 多种类设置
# 设置为 true 时,物品可以设置为多种类
# 设置为 false时,物品会被归为最後设置的种类
# (「全種」は例外)
NOT_ALLOW_DUPLICATE = false
# ◆ カテゴリ識別名
# メモ欄でカテゴリを識別するための名称を並べてください。
# 以下の名称は、メモ欄に記述する必要はありません。
# "全種", "貴重品", "武器", "防具", "盾", "頭防具", "身体防具", "装飾品"
# ◆ 种类 识别名称
# 在数据库的「备注」栏填入以下名称
# 用来分别物品/装备类别
# "全種", "貴重品", "武器", "防具", "盾", "頭防具", "身体防具", "装飾品"
CATEGORY_IDENTIFIER = [
"一般物品",
"战斗中使用",
"武器",
"盾",
"頭部防具",
"身体防具",
"装饰品",
"貴重物品",
"剧情物品",
"全部种类", # ← 最後的类别,显示全部物品
]
# ◆ アイテムのデフォルトカテゴリ
# どのカテゴリにも当てはまらないアイテムの割り当て先です。
# ◆ 默认物品种类
# 没有设定种类、或是分类名称找不到的物品自动归到此类中
ITEM_DEFAULT_CATEGORY = "一般物品"
# ◆ リストに表示する名称
# アイテム画面で分類ウィンドウに表示する名称です。
# 「カテゴリ識別名」と同じ順に並べてください。
# ◆ 种类 名称
# 在物品画面显示的种类名称
# 务必与上面所设置的「种类 识别名称」一样的顺序
CATEGORY_NAME = [
"一般",
"战斗中使用",
Vocab.weapon, # 武器
Vocab.armor1, # 盾
"#{Vocab.armor2}防具", # 頭防具
"#{Vocab.armor3}防具", # 身体防具
Vocab.armor4, # 装飾品
"貴重物品",
"剧情物品",
"所有物品",
]
# ◆ 分類の説明文
# 「カテゴリ識別名」と同じ順に並べてください。
# ◆ 种类的说明
# 务必与上面所设置的「种类 识别名称」一样的顺序
CATEGORY_DESCRIPTION = [
"显示十分普通的#{Vocab.item}。",
"显示战斗中使用的#{Vocab.item}。",
"显示#{Vocab.weapon}。",
"显示#{Vocab.armor1}。",
"显示#{Vocab.armor2}防具。",
"显示#{Vocab.armor3}防具。",
"显示#{Vocab.armor4}。",
"显示貴重物品。",
"显示剧情#{Vocab.item}。",
"显示所有#{Vocab.item}。",
]
# ◆ 分類ウィンドウの座標 [x, y]
# ◆ 分類窗口座標 [x, y]
CATEGORY_WINDOW_POSITION = [264, 128]
# ◆ 分類ウィンドウの列数
# ◆ 分類窗口列数(应该是栏数吧)
CATEGORY_WINDOW_COLUMNS = 2
# ◆ 分類ウィンドウの列幅
# ◆ 分類窗口列幅(栏的宽度)
CATEGORY_WINDOW_COL_WIDTH = 96
# ◆ 分類ウィンドウの列間の空白
# ◆ 分類窗口列间空白(栏与栏之间的空格大小)
CATEGORY_WINDOW_COL_SPACE = 32
end
end
#==============================================================================
# 设置结束
#==============================================================================
#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
$imported = {} if $imported == nil
$imported["CategorizeItem"] = true
module KGC::CategorizeItem
# アイテムのデフォルトカテゴリ index
ITEM_DEFAULT_CATEGORY_INDEX = CATEGORY_IDENTIFIER.index(ITEM_DEFAULT_CATEGORY)
# 予約カテゴリ index
# 预留的类别 index (自动分类时用的)
RESERVED_CATEGORY_INDEX = {
"全部种类" => CATEGORY_IDENTIFIER.index("全部种类"),
"貴重物品" => CATEGORY_IDENTIFIER.index("貴重物品"),
"武器" => CATEGORY_IDENTIFIER.index("武器"),
"防具" => CATEGORY_IDENTIFIER.index("防具"),
"盾" => CATEGORY_IDENTIFIER.index("盾"),
"頭部防具" => CATEGORY_IDENTIFIER.index("頭部防具"),
"身体防具" => CATEGORY_IDENTIFIER.index("身体防具"),
"装飾品" => CATEGORY_IDENTIFIER.index("装飾品")
}
# 正規表現を定義
module Regexp
# ベースアイテム
module BaseItem
# カテゴリ
# 类别(就是在备注栏里设置时的写法,建议别改)
CATEGORY = /^<(?: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
#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
#==============================================================================
# ■ 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["貴重物品"]
end
super
end
end
#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
#==============================================================================
# ■ RPG::Weapon
#==============================================================================
class RPG::Weapon < RPG::BaseItem
#--------------------------------------------------------------------------
# ○ アイテム分類のキャッシュ生成
#--------------------------------------------------------------------------
def create_categorize_item_cache
@__item_category = []
@__item_category << KGC::CategorizeItem::RESERVED_CATEGORY_INDEX["武器"]
super
end
end
#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
#==============================================================================
# ■ RPG::Armor
#==============================================================================
class RPG::Armor < RPG::BaseItem
#--------------------------------------------------------------------------
# ○ アイテム分類のキャッシュ生成
#--------------------------------------------------------------------------
def create_categorize_item_cache
@__item_category = []
@__item_category << KGC::CategorizeItem::RESERVED_CATEGORY_INDEX["防具"]
type = nil
case self.kind
when 0
type = "盾"
when 1
type = "頭部防具"
when 2
type = "身体防具"
when 3
type = "装飾品"
end
if type != nil
@__item_category << KGC::CategorizeItem::RESERVED_CATEGORY_INDEX[type]
end
super
end
end
#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
#==============================================================================
# ■ 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["全部种类"]
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
#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
#==============================================================================
# □ 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
#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
#==============================================================================
# ■ 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
为什么在用这文本时提示第17行出现错误
|
评分
-
查看全部评分
|