赞 | 3 |
VIP | 333 |
好人卡 | 91 |
积分 | 2 |
经验 | 55775 |
最后登录 | 2017-7-18 |
在线时间 | 2070 小时 |
Lv1.梦旅人 Mr.Gandum
- 梦石
- 0
- 星屑
- 226
- 在线时间
- 2070 小时
- 注册时间
- 2007-1-31
- 帖子
- 3039
|
- #==============================================================================
- # ■ VXAce-RGSS3-1 用語辞典-自動生成Plugin [Ver.1.0.0] by Claimh
- #------------------------------------------------------------------------------
- #・データベース上のアクター/エネミー/アイテム/武器/防具/スキル/クラスの情報を
- # 用語辞典として自動生成します。
- #・自動生成された辞書データはすべて初期状態では非表示になります。
- #------------------------------------------------------------------------------
- #【アクター、エネミー、アイテム、武器、防具、スキル、クラス、クエストの自動生成】
- #・自動生成した場合の用語IDは生成元のIDと同じです
- # (例) エネミーID:5 --(自動生成)--> 用語ID:5
- #------------------------------------------------------------------------------
- #【場所情報の自動生成】
- #・必須:ワールドマップ
- #・ワールドマップのタウン・リージョン情報を用語辞典に反映します。
- #・リージョン情報の用語IDは リージョンID * 1000 です
- # 用語ID = DictAutoCreate.conv_region_id(リージョンID)
- #・タウン情報の用語IDは リージョンID * 1000 + タウンID + 1 です
- # 用語ID = DictAutoCreate.conv_town_id(リージョンID, タウンID)
- # ※タウンIDは0-998しか使えません。
- #==============================================================================
- =begin
- - 使い方 -
- 用語辞典[設定] の 「用語設定」で以下のように設定してください。
- WORDS[項目番号] = ATC_ACTOR # アクターの自動生成
- WORDS[項目番号] = ATC_ENEMY # エネミーの自動生成
- WORDS[項目番号] = ATC_ENEMY_A # エネミー(アナライズ用)の自動生成
- WORDS[項目番号] = ATC_ITEM # アイテムの自動生成
- WORDS[項目番号] = ATC_WEAPON # 武器の自動生成
- WORDS[項目番号] = ATC_ARMOR_ALL # 防具(全て)の自動生成
- WORDS[項目番号] = ATC_ARMOR_S # 防具(盾のみ)の自動生成
- WORDS[項目番号] = ATC_ARMOR_H # 防具(頭防具のみ)の自動生成
- WORDS[項目番号] = ATC_ARMOR_C # 防具(身体防具のみ)の自動生成
- WORDS[項目番号] = ATC_ARMOR_A # 防具(装飾品のみ)の自動生成
- WORDS[項目番号] = ATC_SKILL # スキルの自動生成
- WORDS[項目番号] = ATC_CLASS # クラスの自動生成
- WORDS[項目番号] = ATC_TOWN # 場所の自動生成
- WORDS[項目番号] = ACT_QUEST # クエストの自動生成
- =end
- module DictAutoCreate
- # 属性表示の限界個数
- ELEMENTS_MAX = 10
- # 表示しない属性ID ELE_NOT_SHOW = [ID, …]
- ELE_NOT_SHOW = [1, 2]
- # アイコン表示する
- ELE_USE_ICON = true
- # アイコン(ELE_USE_ICON = trueのときだけ必要)
- ELE_ICON = { # 属性ID => アイコンIndex
- 3 => 96, # 炎
- 4 => 97, # 氷
- 5 => 98, # 雷
- 6 => 99, # 水
- 7 => 100, # 大地
- 8 => 101, # 風
- 9 => 102, # 神聖
- 10 => 103, # 暗黒
- }
- # ステート表示の限界個数
- STATES_MAX = 5
- # 表示しないステートID STS_NOT_SHOW = [ID, …]
- STS_NOT_SHOW = [3,4,5]
- # 特定IDの情報は自動生成しないようにする XXX_NOT_SHOW = [ID, …]
- # アクター
- ACT_NOT_SHOW = []
- # エネミー
- ENM_NOT_SHOW = []
- # アイテム
- ITM_NOT_SHOW = []
- # 武器
- WPN_NOT_SHOW = []
- # 防具
- ARM_NOT_SHOW = []
- # スキル
- SKL_NOT_SHOW = []
- # クラス
- CLS_NOT_SHOW = []
- # 場所
- TWN_NOT_SHOW = []
-
- end
- module DictAutoCreate
- include DictDef
- #--------------------------------------------------------------------------
- # ● 定数
- #--------------------------------------------------------------------------
- TARGET = ["なし", "敵単体", "敵全体",
- "敵1体ランダム", "敵2体ランダム", "敵3体ランダム", "敵4体ランダム",
- "味方単体", "味方全体",
- "味方単体蘇生", "味方全体蘇生", "使用者"]
- D_TYPE = ["なし", "%s攻撃", "%s攻撃", "%s回復", "%s回復", "%s吸収", "%s吸収"]
- #--------------------------------------------------------------------------
- # ● 定数(特徴)
- #--------------------------------------------------------------------------
- FEATURE_ELEMENT_RATE = 11 # 属性有効度
- FEATURE_DEBUFF_RATE = 12 # 弱体有効度
- FEATURE_STATE_RATE = 13 # ステート有効度
- FEATURE_STATE_RESIST = 14 # ステート無効化
- FEATURE_PARAM = 21 # 通常能力値
- FEATURE_XPARAM = 22 # 追加能力値
- FEATURE_SPARAM = 23 # 特殊能力値
- FEATURE_ATK_ELEMENT = 31 # 攻撃時属性
- FEATURE_ATK_STATE = 32 # 攻撃時ステート
- FEATURE_ATK_SPEED = 33 # 攻撃速度補正
- FEATURE_ATK_TIMES = 34 # 攻撃追加回数
- FEATURE_STYPE_ADD = 41 # スキルタイプ追加
- FEATURE_STYPE_SEAL = 42 # スキルタイプ封印
- FEATURE_SKILL_ADD = 43 # スキル追加
- FEATURE_SKILL_SEAL = 44 # スキル封印
- FEATURE_EQUIP_WTYPE = 51 # 武器タイプ装備
- FEATURE_EQUIP_ATYPE = 52 # 防具タイプ装備
- FEATURE_EQUIP_FIX = 53 # 装備固定
- FEATURE_EQUIP_SEAL = 54 # 装備封印
- FEATURE_SLOT_TYPE = 55 # スロットタイプ
- FEATURE_ACTION_PLUS = 61 # 行動回数追加
- FEATURE_SPECIAL_FLAG = 62 # 特殊フラグ
- FEATURE_COLLAPSE_TYPE = 63 # 消滅エフェクト
- FEATURE_PARTY_ABILITY = 64 # パーティ能力
-
- FLAG_ID_AUTO_BATTLE = 0 # 自動戦闘
- FLAG_ID_GUARD = 1 # 防御
- FLAG_ID_SUBSTITUTE = 2 # 身代わり
- FLAG_ID_PRESERVE_TP = 3 # TP持ち越し
-
- XPARAM = ["命中率", "回避率", "会心率", "会心回避率",
- "魔法回避率", "魔法反射率", "反撃率", "%s再生率", "%s再生率", "%s再生率"]
- SPARAM = ["狙われ率", "防御効果率", "回復効果率", "薬の知識", "%s消費率", "%sチャージ率",
- "物理ダメージ率", "魔法ダメージ率", "床ダメージ率", "経験値獲得率"]
- SLOT_TYPE = ["", "二刀流"]
- SPECIAL = ["自動戦闘", "防御", "身代わり", "%s持ち越し"]
- COLLAPSE = ["ボス", "瞬間消去", "消えない"]
- PT_ABILITY = ["エンカウント半減", "エンカウント無効", "不意打ち無効", "先制", "獲得金額2倍", "アイテム入手率2倍"]
- #--------------------------------------------------------------------------
- # ● 定数(使用効果)
- #--------------------------------------------------------------------------
- EFFECT_RECOVER_HP = 11 # HP 回復
- EFFECT_RECOVER_MP = 12 # MP 回復
- EFFECT_GAIN_TP = 13 # TP 増加
- EFFECT_ADD_STATE = 21 # ステート付加
- EFFECT_REMOVE_STATE = 22 # ステート解除
- EFFECT_ADD_BUFF = 31 # 能力強化
- EFFECT_ADD_DEBUFF = 32 # 能力弱体
- EFFECT_REMOVE_BUFF = 33 # 能力強化の解除
- EFFECT_REMOVE_DEBUFF = 34 # 能力弱体の解除
- EFFECT_SPECIAL = 41 # 特殊効果
- EFFECT_GROW = 42 # 成長
- EFFECT_LEARN_SKILL = 43 # スキル習得
- EFFECTS = {
- EFFECT_RECOVER_HP => "%s 回復",
- EFFECT_RECOVER_MP => "%s 回復",
- EFFECT_GAIN_TP => "%s 増加",
- EFFECT_ADD_STATE => "ステート付加",
- EFFECT_REMOVE_STATE => "ステート解除",
- EFFECT_ADD_BUFF => "能力強化",
- EFFECT_ADD_DEBUFF => "能力弱体",
- EFFECT_REMOVE_BUFF => "能力強化の解除",
- EFFECT_REMOVE_DEBUFF => "能力弱体の解除",
- EFFECT_SPECIAL => "特殊効果",
- EFFECT_GROW => "成長",
- EFFECT_LEARN_SKILL => "スキル習得"
- }
- #----------------------------------------------------------------------------
- # カスタマイズSTART
- #----------------------------------------------------------------------------
- =begin
- 【説明文の設定】
- XXX_text(id)というメソッド内で、
- 自動生成する際の説明分を設定できます。
- アイテム、武器、防具、スキルはデータベースのものを表示するようになってますが、
- 変更することも可能です。
- また、用語辞典用の制御文字も使用可能です。
- 【自動生成時の設定値】
- create_XXXというメソッド内で自動生成する際の設定値を決め打ちしてます。
- 用語名はデータベースのもの、表示は無効(false)として自動生成します。
- =end
- #--------------------------------------------------------------------------
- # ● Plugin- アクター自動生成 : 説明文
- #--------------------------------------------------------------------------
- def self.actor_text(id)
- data = $data_actors[id]
- #
- return data.description
- end
- #--------------------------------------------------------------------------
- # ● Plugin- エネミー自動生成 : 説明文
- #--------------------------------------------------------------------------
- def self.enemy_text(id)
- data = $data_enemies[id]
- #
- items = []
- data.drop_items.each do |item|
- next if item.kind == 0
- case item.kind
- when 1; d = $data_items[item.data_id]
- when 2; d = $data_weapons[item.data_id]
- when 3; d = $data_armors[item.data_id]
- end
- items.push("\\i[#{d.icon_index}]#{d.name}(#{(100/item.denominator).truncate}%)")
- end
- info = ""
- # エネミーのパラメータ情報
- for i in 0...4
- info += "\\c[16]#{$data_system.terms.params[i*2]}\\c[0]\\x[84]\\u[#{id},#{i*2}]"+
- "\\x[170]\\c[16]#{$data_system.terms.params[i*2+1]}\\c[0]\\x[260]\\u[#{id},#{i*2+1}]\\n"
- end
- info +=
- "\\c[16]EXP\\c[0]\\x[84]\\k[#{id}]\\n"+
- "\\c[16]Gold\\c[0]\\x[84]\\g[#{id}] \\c[16]#{$data_system.currency_unit}\\c[0]"
- items.each_index do |i|
- info += "\\n\\c[16]Treasure#{i+1}\\c[0]\\x[100]#{items[i]}"
- end
- if defined?(DefeatCounter) # ★撃破数カウンタとの併用
- info += "\\n\\c[16]撃破数\\c[0]\\x[100]\\t[#{id}]"
- end
- #
- unless $data_system.elements.empty?
- rate = element_rate(Game_Enemy.new(0, id))
- info += "\\p" + rate if rate != ""
- end
- #
- unless $data_states.empty?
- rate = state_rate(Game_Enemy.new(0, id))
- info += "\\p" + rate if rate != ""
- end
- #
- s_actions = {} # skill
- total = 0
- data.actions.each do |action|
- s_actions[action.skill_id] = 0 if s_actions[action.skill_id].nil?
- s_actions[action.skill_id] += action.rating
- total += action.rating
- end
- if !s_actions.empty?
- page = 1
- if (Dictionary.d_line_max - 1) < s_actions.size
- info += "\\p\\c[16]【行動パターン(#{page})】\\c[0]\\n"
- else
- info += "\\p\\c[16]【行動パターン】\\c[0]\\n"
- end
- line = 1
- ids = s_actions.keys.sort
- ids.each do |sid|
- skill = $data_skills[sid]
- if (line % (Dictionary.d_line_max) == 0)
- page += 1
- info += "\\p\\c[16]【行動パターン(#{page})】\\c[0]\\n"
- line = 1
- end
- per = (s_actions[sid] * 100.0 / total).round
- info += "\\x[10]\\i[#{skill.icon_index}]#{skill.name}\\x[200]#{per}%\\n"
- line += 1
- end
- end
- #
- text = ""
- case id
- when 0; text = "エネミーID:○の説明文~"
- end
- #
- return textinfo(text, info)
- end
- #--------------------------------------------------------------------------
- # ● Plugin- アイテム自動生成 : 説明文
- #--------------------------------------------------------------------------
- def self.item_text(id)
- data = $data_items[id]
- info = data.description
- info += "\\y[4]" # 4行目へ
- #
- info += # アイテム情報のテキスト化
- "\\c[16]価格\\c[0]\\x[84]#{data.price} \\c[16]#{$data_system.currency_unit}\\c[0]\\n"+
- "\\c[16]効果範囲\\c[0]\\x[84]#{TARGET[data.scope]}\\n"
- #
- info += self.damage(data.damage) unless data.damage.none?
- info += self.effects(data.effects) unless data.effects.empty?
- #
- return info
- end
- #--------------------------------------------------------------------------
- # ● Plugin- 武器自動生成 : 説明文
- #--------------------------------------------------------------------------
- def self.weapon_text(id)
- data = $data_weapons[id]
- info = data.description
- info += "\\y[4]" # 4行目へ
- #
- info += "\\c[16]武器タイプ\\c[0]\\x[120]#{$data_system.weapon_types[data.wtype_id]}\\n"
- #
- info += "\\c[16]価格\\c[0]\\x[84]#{data.price} \\c[16]#{$data_system.currency_unit}\\c[0]\\n"
- for i in 0...4
- info += "\\c[16]#{$data_system.terms.params[i*2]}\\c[0]\\x[84]#{data.params[i*2]}"+
- "\\x[170]\\c[16]#{$data_system.terms.params[i*2+1]}\\c[0]\\x[260]#{data.params[i*2+1]}\\n"
- end
- #
- info += self.features(data.features)
- #
- return info
- end
- #--------------------------------------------------------------------------
- # ● Plugin- 防具自動生成 : 説明文
- #--------------------------------------------------------------------------
- def self.armor_text(id)
- data = $data_armors[id]
- info = data.description
- info += "\\y[4]" # 4行目へ
- #
- info += "\\c[16]防具タイプ\\c[0]\\x[120]#{$data_system.armor_types[data.atype_id]}\\n"
- #
- info += "\\c[16]価格\\c[0]\\x[84]#{data.price} \\c[16]#{$data_system.currency_unit}\\c[0]\\n"
- for i in 0...4
- info += "\\c[16]#{$data_system.terms.params[i*2]}\\c[0]\\x[84]#{data.params[i*2]}"+
- "\\x[170]\\c[16]#{$data_system.terms.params[i*2+1]}\\c[0]\\x[260]#{data.params[i*2+1]}\\n"
- end
- #
- info += self.features(data.features)
- #
- return info
- end
- #--------------------------------------------------------------------------
- # ● Plugin- スキル自動生成 : 説明文
- #--------------------------------------------------------------------------
- def self.skill_text(id)
- data = $data_skills[id]
- info = data.description
- info += "\\y[4]" # 4行目へ
- #
- info += "\\c[16]スキルタイプ\\c[0]\\x[120]#{$data_system.skill_types[data.stype_id]}"
- #
- ids = [data.required_wtype_id1, data.required_wtype_id2].select { |a| a != 0 }
- unless ids.empty?
- info += "\\x[160]\\c[16]必要武器\\c[0]\\x[250]"
- ids.each do |type|
- info += "#{$data_system.weapon_types[type]} "
- end
- end
- #
- info += "\\n"
- #
- info += self.damage(data.damage) unless data.damage.none?
- #
- info += "\\c[16]消費#{$data_system.terms.basic[4]}\\c[0]\\x[84]#{data.mp_cost}"
- info += "\\x[160]\\c[16]消費#{$data_system.terms.basic[6]}\\c[0]\\x[250]#{data.tp_cost}\\n"
- info += "\\c[16]効果範囲\\c[0]\\x[84]#{TARGET[data.scope]}\\n"
- info += "\\c[16]成功率\\c[0]\\x[84]#{(data.success_rate).truncate}%\\n"
- #
- info += self.effects(data.effects) unless data.effects.empty?
- #
- return info
- end
- #--------------------------------------------------------------------------
- # ● Plugin- クラス自動生成 : 説明文
- #--------------------------------------------------------------------------
- def self.class_text(id)
- data = $data_classes[id]
- #
- info = ""
- #
- unless data.learnings.empty?
- learns = data.learnings.sort {|a,b| a.level - b.level }
- page = 1
- info += page_text("習得スキル", page, learns.size, 1)
- line = 1
- learns.each do |d|
- if (line % (Dictionary.d_line_max) == 0)
- page += 1
- info += "\\p\\c[16]【習得スキル(#{page})】\\c[0]\\n"
- line = 1
- else
- info += "\\n"
- line += 1
- end
- skill = $data_skills[d.skill_id]
- info += "\\x[0]\\c[16]Lv.#{d.level}\\c[0]\\x[80]\\i[#{skill.icon_index}]#{skill.name}"
- line += 1
- end
- end
- #
- info += self.features(data.features)
- #
- text = ""
- case id
- when 0; text = "クラスID:○の説明文~"
- end
- #
- return textinfo(text, info)
- end
- #----------------------------------------------------------------------------
- # カスタマイズEND
- #----------------------------------------------------------------------------
- #----------------------------------------------------------------------------
- # ■ 汎用メソッド
- #----------------------------------------------------------------------------
- #--------------------------------------------------------------------------
- # ● ページテキスト
- #--------------------------------------------------------------------------
- def self.page_text(text, page, size, divide)
- if (Dictionary.d_line_max - 1) < (size / divide)
- return "\\c[16]【#{text}(#{page})】\\c[0]"
- else
- return "\\c[16]【#{text}】\\c[0]"
- end
- end
- #--------------------------------------------------------------------------
- # ● 情報テキストとデータベース情報の結合
- #--------------------------------------------------------------------------
- def self.textinfo(text, info)
- return "説明文がありません" if text == "" and info == ""
- return text if info == ""
- return info if text == ""
- return info + "\\p" + text
- end
- #--------------------------------------------------------------------------
- # ● 属性配列生成
- #--------------------------------------------------------------------------
- def self.textpm(value)
- return "-#{value.abs}" if value < 0
- return "+#{value.abs}"
- end
- #--------------------------------------------------------------------------
- # ● 属性配列生成
- #--------------------------------------------------------------------------
- def self.element_icon_text(id)
- if ELE_USE_ICON and !ELE_ICON[id].nil?
- return "\\i[#{ELE_ICON[id]}]#{$data_system.elements[id]}"
- end
- return $data_system.elements[id]
- end
- def self.element_name(id)
- return "\\i[#{ELE_ICON[id]}]" if ELE_USE_ICON and !ELE_ICON[id].nil?
- return $data_system.elements[id]
- end
- def self.make_elements(elements)
- text = ""
- cnt = 0
- for id in elements
- next if ELE_NOT_SHOW.include?(id)
- if cnt == ELEMENTS_MAX
- text += "など"
- break
- end
- text += element_name(id) + " "
- cnt += 1
- end
- return text
- end
- #--------------------------------------------------------------------------
- # ● ステート配列生成
- #--------------------------------------------------------------------------
- def self.state_icon_text(id)
- return "\\i[#{$data_states[id].icon_index}]#{$data_states[id].name}"
- end
- def self.state_name(id)
- return "\\i[#{$data_states[id].icon_index}]"
- end
- def self.make_states(states)
- text = ""
- cnt = 0
- for id in states
- next if STS_NOT_SHOW.include?(id)
- if cnt == STATES_MAX
- text += "など"
- break
- end
- text += state_name(id) + " "
- cnt += 1
- end
- return text
- end
- #--------------------------------------------------------------------------
- # ● 属性有効度
- #--------------------------------------------------------------------------
- def self.element_rate(data)
- divide = 2
- ids = []
- $data_system.elements.each_index { |i|
- ids.push(i) if i != 0 and !ELE_NOT_SHOW.include?(i)
- }
- return "" if ids.size == 0
- page = line = 1
- i = 0
- info = page_text("属性有効度", page, ids.size, divide)
- ids.each do |id|
- if (i % divide) == 0
- if (line % (Dictionary.d_line_max) == 0)
- page += 1
- info += "\\p\\c[16]【属性有効度(#{page})】\\c[0]\\n"
- line = 1
- else
- info += "\\n"
- line += 1
- end
- end
- ele = element_icon_text(id)
- x = (i % divide) * 160
- xx = x + 84
- info += "\\x[#{x}]\\c[16]#{ele}\\c[0]\\x[#{xx}]#{(data.element_rate(id)*100).truncate}%"
- i += 1
- end
- return info
- end
- #--------------------------------------------------------------------------
- # ● ステート有効度
- #--------------------------------------------------------------------------
- def self.state_rate(data)
- divide = 2
- ids = []
- $data_states.each_index { |i|
- ids.push(i) if i != 0 and !STS_NOT_SHOW.include?(i)
- }
- return "" if ids.size == 0
- page = line = 1
- i = 0
- info = page_text("ステート有効度", page, ids.size, divide)
- ids.each do |id|
- if (i % divide) == 0
- if (line % (Dictionary.d_line_max) == 0)
- page += 1
- info += "\\p\\c[16]【ステート有効度(#{page})】\\c[0]\\n"
- line = 1
- else
- info += "\\n"
- line += 1
- end
- end
- sts = state_icon_text(id)
- x = (i % divide) * 160
- xx = x + 100
- info += "\\x[#{x}]\\c[16]#{sts}\\c[0]\\x[#{xx}]#{(data.state_rate(id)*100).truncate}%"
- i += 1
- end
- return info
- end
- #--------------------------------------------------------------------------
- # ● 属性有効度
- #--------------------------------------------------------------------------
- def self.damage(damage)
- info = ""
- case damage.type
- when 1,3,5; info += "\\c[16]効果\\c[0]\\x[84]" + sprintf(D_TYPE[damage.type], $data_system.terms.basic[2])
- when 2,4,6; info += "\\c[16]効果\\c[0]\\x[84]" + sprintf(D_TYPE[damage.type], $data_system.terms.basic[4])
- end
- if damage.element_id != 0
- info += "\\x[160]\\c[16]属性\\c[0]\\x[250]#{element_icon_text(damage.element_id)}"
- end
- return info + "\\n"
- end
- #--------------------------------------------------------------------------
- # ● 特徴
- #--------------------------------------------------------------------------
- def self.features(array)
- return "" if array.size == 0
- page = line = 1
- i = 0
- info = "\\p" + page_text("特徴", page, array.size, 1)
- array.each do |data|
- if (line % (Dictionary.d_line_max) == 0)
- page += 1
- info += "\\p\\c[16]【特徴(#{page})】\\c[0]\\n"
- line = 1
- else
- info += "\\n"
- line += 1
- end
- info += feature(data, i)
- i += 1
- end
- return info
- end
- def self.feature(data, i)
- x = 10
- xx = x + 120
- case data.code
- when FEATURE_ELEMENT_RATE
- return "\\x[#{x}]" + element_icon_text(data.data_id) + "\\x[#{xx}]#{textpm((data.value*100).truncate)}%"
- when FEATURE_DEBUFF_RATE
- return "\\x[#{x}]#{$data_system.terms.params[data.data_id]}\\x[#{xx}]#{textpm((data.value*100).truncate)}%"
- when FEATURE_STATE_RATE
- return "\\x[#{x}]#{$data_states[data.data_id].name}\\x[#{xx}]#{textpm((data.value*100).truncate)}%"
- when FEATURE_STATE_RESIST
- info += "\\x[#{x}]#{$data_states[data.data_id].name}\\x[#{xx}]無効"
- return info
- when FEATURE_PARAM
- info += "\\x[#{x}]#{$data_system.terms.params[data.data_id]}\\x[#{xx}]#{textpm((data.value*100).truncate)}%"
- return info
- when FEATURE_XPARAM
- info = "\\x[#{x}]"
- case data.data_id
- when 7; info += sprintf(XPARAM[data.data_id], $data_system.terms.basic[2])
- when 8; info += sprintf(XPARAM[data.data_id], $data_system.terms.basic[4])
- when 9; info += sprintf(XPARAM[data.data_id], $data_system.terms.basic[6])
- else; info += XPARAM[data.data_id]
- end
- return info + "\\x[#{xx}]#{textpm((data.value*100).truncate)}%"
- when FEATURE_SPARAM
- info = "\\x[#{x}]"
- case data.data_id
- when 4; info += sprintf(SPARAM[data.data_id], $data_system.terms.basic[4])
- when 5; info += sprintf(SPARAM[data.data_id], $data_system.terms.basic[6])
- else; info += SPARAM[data.data_id]
- end
- return info + "\\x[#{xx}]#{textpm((data.value*100).truncate)}%"
- when FEATURE_ATK_ELEMENT
- return "\\x[#{x}]攻撃属性\\x[#{xx}]#{$data_system.elements[data.data_id]}"
- when FEATURE_ATK_STATE
- return "\\x[#{x}]攻撃時ステート\\x[#{xx}]#{$data_states[data.data_id]}(#{textpm((data.value*100).truncate)}%)"
- when FEATURE_ATK_SPEED
- return "\\x[#{x}]攻撃速度補正\\x[#{xx}]#{textpm(data.value.truncate)}"
- when FEATURE_ATK_TIMES
- return "\\x[#{x}]攻撃追加回数\\x[#{xx}]#{textpm((data.value*100).truncate)}"
- when FEATURE_STYPE_ADD
- return "\\x[#{x}]「#{$data_system.skill_types[data.data_id]}」系スキル追加"
- when FEATURE_STYPE_SEAL
- return "\\x[#{x}]「#{$data_system.skill_types[data.data_id]}」系スキル封印"
- when FEATURE_SKILL_ADD
- return "\\x[#{x}]「#{$data_skills[data.data_id].name}」習得"
- when FEATURE_SKILL_SEAL
- return "\\x[#{x}]「#{$data_skills[data.data_id].name}」封印"
- when FEATURE_EQUIP_WTYPE
- return "\\x[#{x}]「#{$data_system.weapon_types[data.data_id]}」装備可能"
- when FEATURE_EQUIP_ATYPE
- return "\\x[#{x}]「#{$data_system.armor_types[data.data_id]}」装備可能"
- when FEATURE_EQUIP_FIX
- return "\\x[#{x}]「#{$data_system.terms.etypes[data.data_id]}」装備固定化"
- when FEATURE_EQUIP_SEAL
- return "\\x[#{x}]「#{$data_system.terms.etypes[data.data_id]}」装備不可"
- when FEATURE_SLOT_TYPE
- return "\\x[#{x}]" + SLOT_TYPE[data.data_id]
- when FEATURE_ACTION_PLUS
- return "\\x[#{x}]複数回行動率\\x[#{xx}]#{textpm((data.value*100).truncate)}%"
- when FEATURE_SPECIAL_FLAG
- if data.data_id == FLAG_ID_PRESERVE_TP
- return "\\x[#{x}]" + sprintf(SPECIAL[data.data_id], $data_system.terms.basic[6])
- else
- return "\\x[#{x}]" + SPECIAL[data.data_id]
- end
- when FEATURE_COLLAPSE_TYPE
- return "" ##"\\x[#{x}]" + COLLAPSE[data.data_id]
- when FEATURE_PARTY_ABILITY
- return "\\x[#{x}]" + PT_ABILITY[data.data_id]
- end
- return ""
- end
- #--------------------------------------------------------------------------
- # ● 使用効果
- #--------------------------------------------------------------------------
- def self.effects(array)
- info = ""
- x = 120
- a = array.select { |effect| effect.code == EFFECT_RECOVER_HP }
- unless a.empty?
- info += "\\c[16]#{sprintf(EFFECTS[a[0].code], $data_system.terms.basic[2])}\\c[0]"
- a.each do |effect|
- info += "\\x[#{x}]"
- info += "#{textpm(effect.value1.truncate)}%" if effect.value1 != 0
- info += "#{textpm(effect.value2.truncate)}" if effect.value2 != 0
- info += "\\n"
- end
- end
- a = array.select { |effect| effect.code == EFFECT_RECOVER_MP }
- unless a.empty?
- info += "\\c[16]#{sprintf(EFFECTS[a[0].code], $data_system.terms.basic[4])}\\c[0]"
- a.each do |effect|
- info += "\\x[#{x}]"
- info += "#{textpm(effect.value1.truncate)}%" if effect.value1 != 0
- info += "#{textpm(effect.value2.truncate)}" if effect.value2 != 0
- info += "\\n"
- end
- end
- a = array.select { |effect| effect.code == EFFECT_GAIN_TP }
- unless a.empty?
- info += "\\c[16]#{sprintf(EFFECTS[a[0].code], $data_system.terms.basic[6])}\\c[0]\\x[#{x}]"
- a.each do |effect|
- info += "#{textpm(effect.value1.truncate)}"
- end
- info += "\\n"
- end
- a = array.select { |effect| effect.code == EFFECT_ADD_STATE and effect.data_id != 0 }
- unless a.empty?
- info += "\\c[16]#{EFFECTS[a[0].code]}\\c[0]\\x[#{x}]"
- a.each do |effect|
- info += state_icon_text(effect.data_id)
- end
- info += "\\n"
- end
- a = array.select { |effect| effect.code == EFFECT_REMOVE_STATE and effect.data_id != 0 }
- unless a.empty?
- info += "\\c[16]#{EFFECTS[a[0].code]}\\c[0]\\x[#{x}]"
- a.each do |effect|
- info += state_icon_text(effect.data_id)
- end
- info += "\\n"
- end
- a = array.select { |effect| effect.code == EFFECT_ADD_BUFF }
- unless a.empty?
- info += "\\c[16]#{EFFECTS[a[0].code]}\\c[0]"
- a.each do |effect|
- info += "\\x[#{x}]"
- info += "#{$data_system.terms.params[effect.data_id]}UP"
- info += " #{effect.value1.truncate}ターン"
- info += "\\n"
- end
- end
- a = array.select { |effect| effect.code == EFFECT_ADD_DEBUFF }
- unless a.empty?
- info += "\\c[16]#{EFFECTS[a[0].code]}\\c[0]"
- a.each do |effect|
- info += "\\x[#{x}]"
- info += "#{$data_system.terms.params[effect.data_id]}DOWN"
- info += " #{effect.value1.truncate}ターン"
- info += "\\n"
- end
- end
- a = array.select { |effect| effect.code == EFFECT_REMOVE_BUFF }
- unless a.empty?
- info += "\\c[16]#{EFFECTS[a[0].code]}\\c[0]"
- a.each do |effect|
- info += "\\x[#{x}]"
- info += "#{$data_system.terms.params[effect.data_id]}UP解除"
- info += "\\n"
- end
- end
- a = array.select { |effect| effect.code == EFFECT_REMOVE_DEBUFF }
- unless a.empty?
- info += "\\c[16]#{EFFECTS[a[0].code]}\\c[0]"
- a.each do |effect|
- info += "\\x[#{x}]"
- info += "#{$data_system.terms.params[effect.data_id]}DOWN解除"
- info += "\\n"
- end
- end
- a = array.select { |effect| effect.code == EFFECT_GROW }
- unless a.empty?
- info += "\\c[16]#{EFFECTS[a[0].code]}\\c[0]"
- a.each do |effect|
- info += "\\x[#{x}]"
- info += "#{$data_system.terms.params[effect.data_id]}"
- info += "#{textpm(effect.value1.truncate)}"
- info += "\\n"
- end
- end
- a = array.select { |effect| effect.code == EFFECT_LEARN_SKILL }
- unless a.empty?
- a.each do |effect|
- info += "\\x[#{x}]"
- info += "「#{$data_skills[effect.data_id]}」習得"
- info += "\\n"
- end
- end
- return info
- end
- #----------------------------------------------------------------------------
- # ■ 自動生成メソッド
- #----------------------------------------------------------------------------
- #--------------------------------------------------------------------------
- # ● アクター情報の自動生成
- #--------------------------------------------------------------------------
- def self.create_actor(id)
- data = ["\\n[#{id}]", "\\n[#{id}]", "\\b[#{id}]", actor_text(id)]
- return Dictionary::DictData.new(id, data)
- end
- #--------------------------------------------------------------------------
- # ● エネミー情報の自動生成
- #--------------------------------------------------------------------------
- def self.create_enemy(id)
- data = ["\\e[#{id}]", "", "\\e[#{id}]", enemy_text(id)]
- return Dictionary::DictData.new(id, data)
- end
- #--------------------------------------------------------------------------
- # ● エネミー情報の自動生成
- #--------------------------------------------------------------------------
- def self.create_enemy_analize(id)
- data = ["\\e[#{id}]", "", "\\e[#{id}]", ""]
- return Dictionary::DictData.new(id, data)
- end
- #--------------------------------------------------------------------------
- # ● アイテム情報の自動生成
- #--------------------------------------------------------------------------
- def self.create_item(id)
- data = ["\\t[#{id}]", "\\t[#{id}]", nil, item_text(id)]
- return Dictionary::DictData.new(id, data)
- end
- #--------------------------------------------------------------------------
- # ● 武器情報の自動生成
- #--------------------------------------------------------------------------
- def self.create_weapon(id)
- data = ["\\w[#{id}]", "\\w[#{id}]", nil, weapon_text(id)]
- return Dictionary::DictData.new(id, data)
- end
- #--------------------------------------------------------------------------
- # ● 防具情報の自動生成
- #--------------------------------------------------------------------------
- def self.create_armor(id)
- data = ["\\a[#{id}]", "\\a[#{id}]", nil, armor_text(id)]
- return Dictionary::DictData.new(id, data)
- end
- #--------------------------------------------------------------------------
- # ● スキル情報の自動生成
- #--------------------------------------------------------------------------
- def self.create_skill(id)
- data = ["\\s[#{id}]", "\\s[#{id}]", nil, skill_text(id)]
- return Dictionary::DictData.new(id, data)
- end
- #--------------------------------------------------------------------------
- # ● クラス情報の自動生成
- #--------------------------------------------------------------------------
- def self.create_class(id)
- data = ["\\J[#{id}]", "\\j[#{id}]", nil, class_text(id)]
- return Dictionary::DictData.new(id, data)
- end
- #--------------------------------------------------------------------------
- # ● 場所情報の自動生成
- #--------------------------------------------------------------------------
- def self.create_town(id)
- unless defined?(WorldMap)
- p "Error : can't use ATC_TOWN [WorldMapが定義されてません]";exit
- end
- region_id = id / 1000
- town_id = (id % 1000) - 1
- if town_id < 0 # リージョン情報
- region = $game_system.worldmap[region_id]
- data = [region.region_name, "地域", nil, region.region_info, region.visible]
- else # タウン情報
- town = $game_system.worldmap[region_id][town_id]
- data = [town.town_name, "場所", nil, town.town_info, town.visible]
- end
- return Dictionary::DictData.new(id, data)
- end
- #--------------------------------------------------------------------------
- # ● クエスト情報の自動生成
- #--------------------------------------------------------------------------
- def self.create_quest(id)
- unless defined?(Quest)
- p "Error : can't use ATC_QUEST [QuestSystemが定義されてません]";exit
- end
- data = ["#{$game_system.quest[id].name}", "", nil, Quest.conv_text($game_system.quest[id].text)]
- return Dictionary::DictData.new(id, data)
- end
- end
- module DictAutoCreate
- #--------------------------------------------------------------------------
- # ● Plugin-自動生成(用語ID)
- #--------------------------------------------------------------------------
- def self.plugin_auto_ids(type)
- ids = []
- case type
- when ATC_ACTOR # アクターの自動生成
- $data_actors.each do |d|
- next if d.nil? or ACT_NOT_SHOW.include?(d.id)
- ids.push(d.id)
- end
- when ATC_ENEMY, ATC_ENEMY_A # エネミーの自動生成
- $data_enemies.each do |d|
- next if d.nil? or ENM_NOT_SHOW.include?(d.id)
- ids.push(d.id)
- end
- when ATC_ITEM # アイテムの自動生成
- $data_items.each do |d|
- next if d.nil? or ITM_NOT_SHOW.include?(d.id)
- ids.push(d.id)
- end
- when ATC_WEAPON # 武器の自動生成
- $data_weapons.each do |d|
- next if d.nil? or WPN_NOT_SHOW.include?(d.id)
- ids.push(d.id)
- end
- when ATC_ARMOR_ALL # 防具(全て)の自動生成
- $data_armors.each do |d|
- next if d.nil? or ARM_NOT_SHOW.include?(d.id)
- ids.push(d.id)
- end
- when ATC_ARMOR_S # 防具(盾のみ)の自動生成
- $data_armors.each do |d|
- next if d.nil? or ARM_NOT_SHOW.include?(d.id)
- next if $data_armors[i].kind != 0 # 盾
- ids.push(d.id)
- end
- when ATC_ARMOR_H # 防具(頭防具のみ)の自動生成
- $data_armors.each do |d|
- next if d.nil? or ARM_NOT_SHOW.include?(d.id)
- next if $data_armors[i].kind != 1 # 頭防具
- ids.push(d.id)
- end
- when ATC_ARMOR_C # 防具(身体防具のみ)の自動生成
- $data_armors.each do |d|
- next if d.nil? or ARM_NOT_SHOW.include?(d.id)
- next if $data_armors[i].kind != 2 # 身体防具
- ids.push(d.id)
- end
- when ATC_ARMOR_A # 防具(装飾品のみ)の自動生成
- $data_armors.each do |d|
- next if d.nil? or ARM_NOT_SHOW.include?(d.id)
- next if $data_armors[i].kind != 3 # 装飾品
- ids.push(d.id)
- end
- when ATC_SKILL # スキルの自動生成
- $data_skills.each do |d|
- next if d.nil? or SKL_NOT_SHOW.include?(d.id)
- ids.push(d.id)
- end
- when ATC_CLASS # クラスの自動生成
- $data_classes.each do |d|
- next if d.nil? or CLS_NOT_SHOW.include?(d.id)
- ids.push(d.id)
- end
- when ATC_TOWN # 場所の自動生成
- if defined?(WorldMap)
- WorldMap::REGION.keys.sort.each do |region_id|
- i = self.conv_region_id(region_id)
- next if TWN_NOT_SHOW.include?(i)
- ids.push(i)
- WorldMap::REGION[region_id][WorldMap::R_TOWN].keys.sort.each do |town_id|
- i = self.conv_town_id(region_id, town_id)
- next if TWN_NOT_SHOW.include?(i)
- ids.push(i)
- end
- end
- else
- p "WorldMapがありません。"; exit
- end
- when ATC_QUEST # クエストの自動生成
- if defined?(Quest)
- Quest::QUEST.keys.sort.each do |i|
- next if QST_NOT_SHOW.include?(i)
- ids.push(i)
- end
- else
- p "QuestSystemがありません。"; exit
- end
- else
- p "[PluginAutoCreate] ATC_XXXの指定が間違ってます >>#{type}"
- end
- return ids
- end
- #--------------------------------------------------------------------------
- # ● ATC_TOWN : リージョンID -> 用語ID変換
- #--------------------------------------------------------------------------
- def self.conv_region_id(region_id)
- if defined?(WorldMap)
- return (region_id * 1000)
- else
- p "WorldMapがありません。"; exit
- end
- end
- #--------------------------------------------------------------------------
- # ● ATC_TOWN : タウンID -> 用語ID変換
- #--------------------------------------------------------------------------
- def self.conv_town_id(region_id, town_id)
- if defined?(WorldMap)
- return (self.conv_region_id(region_id) + town_id + 1)
- else
- p "WorldMapがありません。"; exit
- end
- end
- #--------------------------------------------------------------------------
- # ● Plugin-自動生成(用語データ)
- #--------------------------------------------------------------------------
- def self.plugin_auto_create(type, id)
- case type
- when ATC_ACTOR # アクターの自動生成
- return DictAutoCreate.create_actor(id)
- when ATC_ENEMY # エネミーの自動生成
- return DictAutoCreate.create_enemy(id)
- when ATC_ENEMY_A # エネミー(アナライズ用)の自動生成
- return DictAutoCreate.create_enemy_analize(id)
- when ATC_ITEM # アイテムの自動生成
- return DictAutoCreate.create_item(id)
- when ATC_WEAPON # 武器の自動生成
- return DictAutoCreate.create_weapon(id)
- when ATC_ARMOR_ALL # 防具(全て)の自動生成
- return DictAutoCreate.create_armor(id)
- when ATC_ARMOR_S # 防具(盾のみ)の自動生成
- return DictAutoCreate.create_armor(id)
- when ATC_ARMOR_H # 防具(頭防具のみ)の自動生成
- return DictAutoCreate.create_armor(id)
- when ATC_ARMOR_C # 防具(身体防具のみ)の自動生成
- return DictAutoCreate.create_armor(id)
- when ATC_ARMOR_A # 防具(装飾品のみ)の自動生成
- return DictAutoCreate.create_armor(id)
- when ATC_SKILL # スキルの自動生成
- return DictAutoCreate.create_skill(id)
- when ATC_CLASS # クラスの自動生成
- return DictAutoCreate.create_class(id)
- when ATC_TOWN # 場所の自動生成
- return DictAutoCreate.create_town(id)
- when ATC_QUEST # クエストの自動生成
- return DictAutoCreate.create_quest(id)
- else
- p "[PluginAutoCreate] ATC_XXXの指定が間違ってます >>#{type}"
- exit
- end
- end
- end
复制代码 复制的有问题。这个试试。
"xxx"给复制成xxx啥的囧 |
|