Project1

标题: 日站上一个用语辞典脚本显示错误 [打印本页]

作者: 布里蓝    时间: 2012-10-14 14:13
标题: 日站上一个用语辞典脚本显示错误
这个脚本是很多脚本一套的
脚本地址:http://www4.plala.or.jp/findias/ ... ce_rgss3/index.html
  1. #==============================================================================
  2. # ■ VXAce-RGSS3-1 用語辞典-自動生成Plugin [Ver.1.0.0]          by Claimh
  3. #------------------------------------------------------------------------------
  4. #?データベース上のアクターエネミーアイテム武器防具スキルクラスの情報を
  5. #  用語辞典として自動生成します。
  6. #?自動生成された辞書データはすべて初期状態では非表示になります。
  7. #------------------------------------------------------------------------------
  8. #【アクター、エネミー、アイテム、武器、防具、スキル、クラス、クエストの自動生成】
  9. #?自動生成した場合の用語IDは生成元のIDと同じです
  10. # (例) エネミーID5 --(自動生成)-- 用語ID5
  11. #------------------------------------------------------------------------------
  12. #【場所情報の自動生成】
  13. #?必須:ワールドマップ
  14. #?ワールドマップのタウン?リージョン情報を用語辞典に反映します。
  15. #?リージョン情報の用語IDは リージョンID  1000 です
  16. #  用語ID = DictAutoCreate.conv_region_id(リージョンID)
  17. #?タウン情報の用語IDは リージョンID  1000 + タウンID + 1 です
  18. #  用語ID = DictAutoCreate.conv_town_id(リージョンID, タウンID)
  19. #   ※タウンIDは0-998しか使えません。
  20. #==============================================================================

  21. =begin
  22.   - 使い方 -
  23.     用語辞典[設定] の 「用語設定」で以下のように設定してください。
  24.       WORDS[項目番号] = ATC_ACTOR     # アクターの自動生成
  25.       WORDS[項目番号] = ATC_ENEMY     # エネミーの自動生成
  26.       WORDS[項目番号] = ATC_ENEMY_A   # エネミー(アナライズ用)の自動生成
  27.       WORDS[項目番号] = ATC_ITEM      # アイテムの自動生成
  28.       WORDS[項目番号] = ATC_WEAPON    # 武器の自動生成
  29.       WORDS[項目番号] = ATC_ARMOR_ALL # 防具(全て)の自動生成
  30.       WORDS[項目番号] = ATC_ARMOR_S   # 防具(盾のみ)の自動生成
  31.       WORDS[項目番号] = ATC_ARMOR_H   # 防具(頭防具のみ)の自動生成
  32.       WORDS[項目番号] = ATC_ARMOR_C   # 防具(身体防具のみ)の自動生成
  33.       WORDS[項目番号] = ATC_ARMOR_A   # 防具(装飾品のみ)の自動生成
  34.       WORDS[項目番号] = ATC_SKILL     # スキルの自動生成
  35.       WORDS[項目番号] = ATC_CLASS     # クラスの自動生成
  36.       WORDS[項目番号] = ATC_TOWN      # 場所の自動生成
  37.       WORDS[項目番号] = ACT_QUEST     # クエストの自動生成
  38. =end
  39. module DictAutoCreate
  40.   # 属性表示の限界個数
  41.   ELEMENTS_MAX = 10
  42.   # 表示しない属性ID  ELE_NOT_SHOW = [ID, …]
  43.   ELE_NOT_SHOW = [1, 2]
  44.   # アイコン表示する
  45.   ELE_USE_ICON = true
  46.   # アイコン(ELE_USE_ICON = trueのときだけ必要)
  47.   ELE_ICON = {  # 属性ID = アイコンIndex
  48.     3  = 96,   # 炎
  49.     4  = 97,   # 氷
  50.     5  = 98,   # 雷
  51.     6  = 99,   # 水
  52.     7  = 100,  # 大地
  53.     8  = 101,  # 風
  54.     9  = 102,  # 神聖
  55.     10 = 103,  # 暗黒
  56.   }

  57.   # ステート表示の限界個数
  58.   STATES_MAX = 5
  59.   # 表示しないステートID  STS_NOT_SHOW = [ID, …]
  60.   STS_NOT_SHOW = [3,4,5]


  61.   # 特定IDの情報は自動生成しないようにする  XXX_NOT_SHOW = [ID, …]
  62.   # アクター
  63.   ACT_NOT_SHOW = []
  64.   # エネミー
  65.   ENM_NOT_SHOW = []
  66.   # アイテム
  67.   ITM_NOT_SHOW = []
  68.   # 武器
  69.   WPN_NOT_SHOW = []
  70.   # 防具
  71.   ARM_NOT_SHOW = []
  72.   # スキル
  73.   SKL_NOT_SHOW = []
  74.   # クラス
  75.   CLS_NOT_SHOW = []
  76.   # 場所
  77.   TWN_NOT_SHOW = []
  78.   
  79. end

  80. module DictAutoCreate
  81.   include DictDef
  82.   #--------------------------------------------------------------------------
  83.   # ● 定数
  84.   #--------------------------------------------------------------------------
  85.   TARGET = [なし, 敵単体, 敵全体,
  86.             敵1体ランダム, 敵2体ランダム, 敵3体ランダム, 敵4体ランダム,
  87.             味方単体, 味方全体,
  88.             味方単体蘇生, 味方全体蘇生, 使用者]
  89.   D_TYPE = [なし, %s攻撃, %s攻撃, %s回復, %s回復, %s吸収, %s吸収]
  90.   #--------------------------------------------------------------------------
  91.   # ● 定数(特徴)
  92.   #--------------------------------------------------------------------------
  93.   FEATURE_ELEMENT_RATE  = 11              # 属性有効度
  94.   FEATURE_DEBUFF_RATE   = 12              # 弱体有効度
  95.   FEATURE_STATE_RATE    = 13              # ステート有効度
  96.   FEATURE_STATE_RESIST  = 14              # ステート無効化
  97.   FEATURE_PARAM         = 21              # 通常能力値
  98.   FEATURE_XPARAM        = 22              # 追加能力値
  99.   FEATURE_SPARAM        = 23              # 特殊能力値
  100.   FEATURE_ATK_ELEMENT   = 31              # 攻撃時属性
  101.   FEATURE_ATK_STATE     = 32              # 攻撃時ステート
  102.   FEATURE_ATK_SPEED     = 33              # 攻撃速度補正
  103.   FEATURE_ATK_TIMES     = 34              # 攻撃追加回数
  104.   FEATURE_STYPE_ADD     = 41              # スキルタイプ追加
  105.   FEATURE_STYPE_SEAL    = 42              # スキルタイプ封印
  106.   FEATURE_SKILL_ADD     = 43              # スキル追加
  107.   FEATURE_SKILL_SEAL    = 44              # スキル封印
  108.   FEATURE_EQUIP_WTYPE   = 51              # 武器タイプ装備
  109.   FEATURE_EQUIP_ATYPE   = 52              # 防具タイプ装備
  110.   FEATURE_EQUIP_FIX     = 53              # 装備固定
  111.   FEATURE_EQUIP_SEAL    = 54              # 装備封印
  112.   FEATURE_SLOT_TYPE     = 55              # スロットタイプ
  113.   FEATURE_ACTION_PLUS   = 61              # 行動回数追加
  114.   FEATURE_SPECIAL_FLAG  = 62              # 特殊フラグ
  115.   FEATURE_COLLAPSE_TYPE = 63              # 消滅エフェクト
  116.   FEATURE_PARTY_ABILITY = 64              # パーティ能力
  117.   
  118.   FLAG_ID_AUTO_BATTLE   = 0               # 自動戦闘
  119.   FLAG_ID_GUARD         = 1               # 防御
  120.   FLAG_ID_SUBSTITUTE    = 2               # 身代わり
  121.   FLAG_ID_PRESERVE_TP   = 3               # TP持ち越し
  122.   
  123.   XPARAM = [命中率, 回避率, 会心率, 会心回避率,
  124.             魔法回避率, 魔法反射率, 反撃率, %s再生率, %s再生率, %s再生率]
  125.   SPARAM = [狙われ率, 防御効果率, 回復効果率, 薬の知識, %s消費率, %sチャージ率,
  126.             物理ダメージ率, 魔法ダメージ率, 床ダメージ率, 経験値獲得率]
  127.   SLOT_TYPE = [, 二刀流]
  128.   SPECIAL = [自動戦闘, 防御, 身代わり, %s持ち越し]
  129.   COLLAPSE = [ボス, 瞬間消去, 消えない]
  130.   PT_ABILITY = [エンカウント半減, エンカウント無効, 不意打ち無効, 先制, 獲得金額2倍, アイテム入手率2倍]
  131.   #--------------------------------------------------------------------------
  132.   # ● 定数(使用効果)
  133.   #--------------------------------------------------------------------------
  134.   EFFECT_RECOVER_HP     = 11              # HP 回復
  135.   EFFECT_RECOVER_MP     = 12              # MP 回復
  136.   EFFECT_GAIN_TP        = 13              # TP 増加
  137.   EFFECT_ADD_STATE      = 21              # ステート付加
  138.   EFFECT_REMOVE_STATE   = 22              # ステート解除
  139.   EFFECT_ADD_BUFF       = 31              # 能力強化
  140.   EFFECT_ADD_DEBUFF     = 32              # 能力弱体
  141.   EFFECT_REMOVE_BUFF    = 33              # 能力強化の解除
  142.   EFFECT_REMOVE_DEBUFF  = 34              # 能力弱体の解除
  143.   EFFECT_SPECIAL        = 41              # 特殊効果
  144.   EFFECT_GROW           = 42              # 成長
  145.   EFFECT_LEARN_SKILL    = 43              # スキル習得
  146.   EFFECTS = {
  147.     EFFECT_RECOVER_HP    = %s 回復,
  148.     EFFECT_RECOVER_MP    = %s 回復,
  149.     EFFECT_GAIN_TP       = %s 増加,
  150.     EFFECT_ADD_STATE     = ステート付加,
  151.     EFFECT_REMOVE_STATE  = ステート解除,
  152.     EFFECT_ADD_BUFF      = 能力強化,
  153.     EFFECT_ADD_DEBUFF    = 能力弱体,
  154.     EFFECT_REMOVE_BUFF   = 能力強化の解除,
  155.     EFFECT_REMOVE_DEBUFF = 能力弱体の解除,
  156.     EFFECT_SPECIAL       = 特殊効果,
  157.     EFFECT_GROW          = 成長,
  158.     EFFECT_LEARN_SKILL   = スキル習得
  159.   }
  160. #----------------------------------------------------------------------------
  161. #   カスタマイズSTART
  162. #----------------------------------------------------------------------------
  163. =begin
  164. 【説明文の設定】
  165.   XXX_text(id)というメソッド内で、
  166.   自動生成する際の説明分を設定できます。
  167.   アイテム、武器、防具、スキルはデータベースのものを表示するようになってますが、
  168.   変更することも可能です。
  169.   また、用語辞典用の制御文字も使用可能です。
  170. 【自動生成時の設定値】
  171.   create_XXXというメソッド内で自動生成する際の設定値を決め打ちしてます。
  172.     用語名はデータベースのもの、表示は無効(false)として自動生成します。
  173. =end
  174.   #--------------------------------------------------------------------------
  175.   # ● Plugin- アクター自動生成  説明文
  176.   #--------------------------------------------------------------------------
  177.   def self.actor_text(id)
  178.     data = $data_actors[id]
  179.     #
  180.     return data.description
  181.   end
  182.   #--------------------------------------------------------------------------
  183.   # ● Plugin- エネミー自動生成  説明文
  184.   #--------------------------------------------------------------------------
  185.   def self.enemy_text(id)
  186.     data = $data_enemies[id]
  187.     #
  188.     items = []
  189.     data.drop_items.each do item
  190.       next if item.kind == 0
  191.       case item.kind
  192.       when 1; d = $data_items[item.data_id]
  193.       when 2; d = $data_weapons[item.data_id]
  194.       when 3; d = $data_armors[item.data_id]
  195.       end
  196.       items.push(i[#{d.icon_index}]#{d.name}(#{(100item.denominator).truncate}%))
  197.     end

  198.     info =
  199.     # エネミーのパラメータ情報
  200.     for i in 0...4
  201.       info += c[16]#{$data_system.terms.params[i2]}c[0]x[84]u[#{id},#{i2}]+
  202.               x[170]c[16]#{$data_system.terms.params[i2+1]}c[0]x[260]u[#{id},#{i2+1}]n
  203.     end

  204.     info +=
  205.       c[16]EXPc[0]x[84]k[#{id}]n+
  206.       c[16]Goldc[0]x[84]g[#{id}] c[16]#{$data_system.currency_unit}c[0]

  207.     items.each_index do i
  208.       info += nc[16]Treasure#{i+1}c[0]x[100]#{items[i]}
  209.     end
  210.     if defined(DefeatCounter)    # ★撃破数カウンタとの併用
  211.       info += nc[16]撃破数c[0]x[100]t[#{id}]
  212.     end
  213.     #
  214.     unless $data_system.elements.empty
  215.       rate = element_rate(Game_Enemy.new(0, id))
  216.       info += p + rate if rate !=
  217.     end
  218.     #
  219.     unless $data_states.empty
  220.       rate = state_rate(Game_Enemy.new(0, id))
  221.       info += p + rate if rate !=
  222.     end
  223.     #
  224.     s_actions = {}  # skill
  225.     total = 0
  226.     data.actions.each do action
  227.       s_actions[action.skill_id] = 0 if s_actions[action.skill_id].nil
  228.       s_actions[action.skill_id] += action.rating
  229.       total += action.rating
  230.     end
  231.     if !s_actions.empty
  232.       page = 1
  233.       if (Dictionary.d_line_max - 1)  s_actions.size
  234.         info += pc[16]【行動パターン(#{page})】c[0]n
  235.       else
  236.         info += pc[16]【行動パターン】c[0]n
  237.       end
  238.       line = 1
  239.       ids = s_actions.keys.sort
  240.       ids.each do sid
  241.         skill = $data_skills[sid]
  242.         if (line % (Dictionary.d_line_max) == 0)
  243.           page += 1
  244.           info += pc[16]【行動パターン(#{page})】c[0]n
  245.           line = 1
  246.         end
  247.         per = (s_actions[sid]  100.0  total).round
  248.         info += x[10]i[#{skill.icon_index}]#{skill.name}x[200]#{per}%n
  249.         line += 1
  250.       end
  251.     end
  252.     #
  253.     text =
  254.     case id
  255.     when 0; text = エネミーID○の説明文~
  256.     end
  257.     #
  258.     return textinfo(text, info)
  259.   end
  260.   #--------------------------------------------------------------------------
  261.   # ● Plugin- アイテム自動生成  説明文
  262.   #--------------------------------------------------------------------------
  263.   def self.item_text(id)
  264.     data = $data_items[id]
  265.     info = data.description
  266.     info += y[4] # 4行目へ
  267.     #
  268.     info += # アイテム情報のテキスト化
  269.       c[16]価格c[0]x[84]#{data.price} c[16]#{$data_system.currency_unit}c[0]n+
  270.       c[16]効果範囲c[0]x[84]#{TARGET[data.scope]}n
  271.     #
  272.     info += self.damage(data.damage)    unless data.damage.none
  273.     info += self.effects(data.effects)  unless data.effects.empty
  274.     #
  275.     return info
  276.   end
  277.   #--------------------------------------------------------------------------
  278.   # ● Plugin- 武器自動生成  説明文
  279.   #--------------------------------------------------------------------------
  280.   def self.weapon_text(id)
  281.     data = $data_weapons[id]
  282.     info = data.description
  283.     info += y[4] # 4行目へ
  284.     #
  285.     info += c[16]武器タイプc[0]x[120]#{$data_system.weapon_types[data.wtype_id]}n
  286.     #
  287.     info += c[16]価格c[0]x[84]#{data.price} c[16]#{$data_system.currency_unit}c[0]n
  288.     for i in 0...4
  289.       info += c[16]#{$data_system.terms.params[i2]}c[0]x[84]#{data.params[i2]}+
  290.               x[170]c[16]#{$data_system.terms.params[i2+1]}c[0]x[260]#{data.params[i2+1]}n
  291.     end
  292.     #
  293.     info += self.features(data.features)
  294.     #
  295.     return info
  296.   end
  297.   #--------------------------------------------------------------------------
  298.   # ● Plugin- 防具自動生成  説明文
  299.   #--------------------------------------------------------------------------
  300.   def self.armor_text(id)
  301.     data = $data_armors[id]
  302.     info = data.description
  303.     info += y[4] # 4行目へ
  304.     #
  305.     info += c[16]防具タイプc[0]x[120]#{$data_system.armor_types[data.atype_id]}n
  306.     #
  307.     info += c[16]価格c[0]x[84]#{data.price} c[16]#{$data_system.currency_unit}c[0]n
  308.     for i in 0...4
  309.       info += c[16]#{$data_system.terms.params[i2]}c[0]x[84]#{data.params[i2]}+
  310.               x[170]c[16]#{$data_system.terms.params[i2+1]}c[0]x[260]#{data.params[i2+1]}n
  311.     end
  312.     #
  313.     info += self.features(data.features)
  314.     #
  315.     return info
  316.   end
  317.   #--------------------------------------------------------------------------
  318.   # ● Plugin- スキル自動生成  説明文
  319.   #--------------------------------------------------------------------------
  320.   def self.skill_text(id)
  321.     data = $data_skills[id]
  322.     info = data.description
  323.     info += y[4] # 4行目へ
  324.     #
  325.     info += c[16]スキルタイプc[0]x[120]#{$data_system.skill_types[data.stype_id]}
  326.     #
  327.     ids = [data.required_wtype_id1, data.required_wtype_id2].select { a a != 0 }
  328.     unless ids.empty
  329.       info += x[160]c[16]必要武器c[0]x[250]
  330.       ids.each do type
  331.         info += #{$data_system.weapon_types[type]}
  332.       end
  333.     end
  334.     #
  335.     info += n
  336.     #
  337.     info += self.damage(data.damage)    unless data.damage.none
  338.     #
  339.     info += c[16]消費#{$data_system.terms.basic[4]}c[0]x[84]#{data.mp_cost}
  340.     info += x[160]c[16]消費#{$data_system.terms.basic[6]}c[0]x[250]#{data.tp_cost}n
  341.     info += c[16]効果範囲c[0]x[84]#{TARGET[data.scope]}n
  342.     info += c[16]成功率c[0]x[84]#{(data.success_rate).truncate}%n
  343.     #
  344.     info += self.effects(data.effects)  unless data.effects.empty
  345.     #
  346.     return info
  347.   end
  348.   #--------------------------------------------------------------------------
  349.   # ● Plugin- クラス自動生成  説明文
  350.   #--------------------------------------------------------------------------
  351.   def self.class_text(id)
  352.     data = $data_classes[id]
  353.     #
  354.     info =
  355.     #
  356.     unless data.learnings.empty
  357.       learns = data.learnings.sort {a,b a.level - b.level }
  358.       page = 1
  359.       info += page_text(習得スキル, page, learns.size, 1)
  360.       line = 1
  361.       learns.each do d
  362.         if (line % (Dictionary.d_line_max) == 0)
  363.           page += 1
  364.           info += pc[16]【習得スキル(#{page})】c[0]n
  365.           line = 1
  366.         else
  367.           info += n
  368.           line += 1
  369.         end
  370.         skill = $data_skills[d.skill_id]
  371.         info += x[0]c[16]Lv.#{d.level}c[0]x[80]i[#{skill.icon_index}]#{skill.name}
  372.         line += 1
  373.       end
  374.     end
  375.     #
  376.     info += self.features(data.features)
  377.     #
  378.     text =
  379.     case id
  380.     when 0; text = クラスID○の説明文~
  381.     end
  382.     #
  383.     return textinfo(text, info)
  384.   end
  385. #----------------------------------------------------------------------------
  386. #   カスタマイズEND
  387. #----------------------------------------------------------------------------

  388. #----------------------------------------------------------------------------
  389. # ■ 汎用メソッド
  390. #----------------------------------------------------------------------------
  391.   #--------------------------------------------------------------------------
  392.   # ● ページテキスト
  393.   #--------------------------------------------------------------------------
  394.   def self.page_text(text, page, size, divide)
  395.     if (Dictionary.d_line_max - 1)  (size  divide)
  396.       return c[16]【#{text}(#{page})】c[0]
  397.     else
  398.       return c[16]【#{text}】c[0]
  399.     end
  400.   end
  401.   #--------------------------------------------------------------------------
  402.   # ● 情報テキストとデータベース情報の結合
  403.   #--------------------------------------------------------------------------
  404.   def self.textinfo(text, info)
  405.     return 説明文がありません if text ==  and info ==
  406.     return text if info ==
  407.     return info if text ==
  408.     return info + p + text
  409.   end
  410.   #--------------------------------------------------------------------------
  411.   # ● 属性配列生成
  412.   #--------------------------------------------------------------------------
  413.   def self.textpm(value)
  414.     return -#{value.abs} if value  0
  415.     return +#{value.abs}
  416.   end
  417.   #--------------------------------------------------------------------------
  418.   # ● 属性配列生成
  419.   #--------------------------------------------------------------------------
  420.   def self.element_icon_text(id)
  421.     if ELE_USE_ICON and !ELE_ICON[id].nil
  422.       return i[#{ELE_ICON[id]}]#{$data_system.elements[id]}
  423.     end
  424.     return $data_system.elements[id]
  425.   end
  426.   def self.element_name(id)
  427.     return i[#{ELE_ICON[id]}] if ELE_USE_ICON and !ELE_ICON[id].nil
  428.     return $data_system.elements[id]
  429.   end
  430.   def self.make_elements(elements)
  431.     text =
  432.     cnt = 0
  433.     for id in elements
  434.       next if ELE_NOT_SHOW.include(id)
  435.       if cnt == ELEMENTS_MAX
  436.         text += など
  437.         break
  438.       end
  439.       text += element_name(id) +  
  440.       cnt += 1
  441.     end
  442.     return text
  443.   end
  444.   #--------------------------------------------------------------------------
  445.   # ● ステート配列生成
  446.   #--------------------------------------------------------------------------
  447.   def self.state_icon_text(id)
  448.     return i[#{$data_states[id].icon_index}]#{$data_states[id].name}
  449.   end
  450.   def self.state_name(id)
  451.     return i[#{$data_states[id].icon_index}]
  452.   end
  453.   def self.make_states(states)
  454.     text =
  455.     cnt = 0
  456.     for id in states
  457.       next if STS_NOT_SHOW.include(id)
  458.       if cnt == STATES_MAX
  459.         text += など
  460.         break
  461.       end
  462.       text += state_name(id) +  
  463.       cnt += 1
  464.     end
  465.     return text
  466.   end
  467.   #--------------------------------------------------------------------------
  468.   # ● 属性有効度
  469.   #--------------------------------------------------------------------------
  470.   def self.element_rate(data)
  471.     divide = 2
  472.     ids = []
  473.     $data_system.elements.each_index { i
  474.       ids.push(i) if i != 0 and !ELE_NOT_SHOW.include(i)
  475.     }
  476.     return  if ids.size == 0
  477.     page = line = 1
  478.     i = 0
  479.     info = page_text(属性有効度, page, ids.size, divide)
  480.     ids.each do id
  481.       if (i % divide) == 0
  482.         if (line % (Dictionary.d_line_max) == 0)
  483.           page += 1
  484.           info += pc[16]【属性有効度(#{page})】c[0]n
  485.           line = 1
  486.         else
  487.           info += n
  488.           line += 1
  489.         end
  490.       end
  491.       ele = element_icon_text(id)
  492.       x = (i % divide)  160
  493.       xx = x + 84
  494.       info += x[#{x}]c[16]#{ele}c[0]x[#{xx}]#{(data.element_rate(id)100).truncate}%
  495.       i += 1
  496.     end
  497.     return info
  498.   end
  499.   #--------------------------------------------------------------------------
  500.   # ● ステート有効度
  501.   #--------------------------------------------------------------------------
  502.   def self.state_rate(data)
  503.     divide = 2
  504.     ids = []
  505.     $data_states.each_index { i
  506.       ids.push(i) if i != 0 and !STS_NOT_SHOW.include(i)
  507.     }
  508.     return  if ids.size == 0
  509.     page = line = 1
  510.     i = 0
  511.     info = page_text(ステート有効度, page, ids.size, divide)
  512.     ids.each do id
  513.       if (i % divide) == 0
  514.         if (line % (Dictionary.d_line_max) == 0)
  515.           page += 1
  516.           info += pc[16]【ステート有効度(#{page})】c[0]n
  517.           line = 1
  518.         else
  519.           info += n
  520.           line += 1
  521.         end
  522.       end
  523.       sts = state_icon_text(id)
  524.       x = (i % divide)  160
  525.       xx = x + 100
  526.       info += x[#{x}]c[16]#{sts}c[0]x[#{xx}]#{(data.state_rate(id)100).truncate}%
  527.       i += 1
  528.     end
  529.     return info
  530.   end
  531.   #--------------------------------------------------------------------------
  532.   # ● 属性有効度
  533.   #--------------------------------------------------------------------------
  534.   def self.damage(damage)
  535.     info =
  536.     case damage.type
  537.     when 1,3,5;  info += c[16]効果c[0]x[84] + sprintf(D_TYPE[damage.type], $data_system.terms.basic[2])
  538.     when 2,4,6;  info += c[16]効果c[0]x[84] + sprintf(D_TYPE[damage.type], $data_system.terms.basic[4])
  539.     end
  540.     if damage.element_id != 0
  541.       info += x[160]c[16]属性c[0]x[250]#{element_icon_text(damage.element_id)}
  542.     end
  543.     return info + n
  544.   end
  545.   #--------------------------------------------------------------------------
  546.   # ● 特徴
  547.   #--------------------------------------------------------------------------
  548.   def self.features(array)
  549.     return  if array.size == 0
  550.     page = line = 1
  551.     i = 0
  552.     info = p + page_text(特徴, page, array.size, 1)
  553.     array.each do data
  554.       if (line % (Dictionary.d_line_max) == 0)
  555.         page += 1
  556.         info += pc[16]【特徴(#{page})】c[0]n
  557.         line = 1
  558.       else
  559.         info += n
  560.         line += 1
  561.       end
  562.       info += feature(data, i)
  563.       i += 1
  564.     end
  565.     return info
  566.   end
  567.   def self.feature(data, i)
  568.     x = 10
  569.     xx = x + 120
  570.     case data.code
  571.     when FEATURE_ELEMENT_RATE
  572.       return x[#{x}] + element_icon_text(data.data_id) + x[#{xx}]#{textpm((data.value100).truncate)}%
  573.     when FEATURE_DEBUFF_RATE
  574.       return x[#{x}]#{$data_system.terms.params[data.data_id]}x[#{xx}]#{textpm((data.value100).truncate)}%
  575.     when FEATURE_STATE_RATE
  576.       return x[#{x}]#{$data_states[data.data_id].name}x[#{xx}]#{textpm((data.value100).truncate)}%
  577.     when FEATURE_STATE_RESIST
  578.       info += x[#{x}]#{$data_states[data.data_id].name}x[#{xx}]無効
  579.       return info
  580.     when FEATURE_PARAM
  581.       info += x[#{x}]#{$data_system.terms.params[data.data_id]}x[#{xx}]#{textpm((data.value100).truncate)}%
  582.       return info
  583.     when FEATURE_XPARAM
  584.       info = x[#{x}]
  585.       case data.data_id
  586.       when 7; info += sprintf(XPARAM[data.data_id], $data_system.terms.basic[2])
  587.       when 8; info += sprintf(XPARAM[data.data_id], $data_system.terms.basic[4])
  588.       when 9; info += sprintf(XPARAM[data.data_id], $data_system.terms.basic[6])
  589.       else;   info += XPARAM[data.data_id]
  590.       end
  591.       return  info + x[#{xx}]#{textpm((data.value100).truncate)}%
  592.     when FEATURE_SPARAM
  593.       info = x[#{x}]
  594.       case data.data_id
  595.       when 4; info += sprintf(SPARAM[data.data_id], $data_system.terms.basic[4])
  596.       when 5; info += sprintf(SPARAM[data.data_id], $data_system.terms.basic[6])
  597.       else;   info += SPARAM[data.data_id]
  598.       end
  599.       return info + x[#{xx}]#{textpm((data.value100).truncate)}%
  600.     when FEATURE_ATK_ELEMENT
  601.       return x[#{x}]攻撃属性x[#{xx}]#{$data_system.elements[data.data_id]}
  602.     when FEATURE_ATK_STATE
  603.       return x[#{x}]攻撃時ステートx[#{xx}]#{$data_states[data.data_id]}(#{textpm((data.value100).truncate)}%)
  604.     when FEATURE_ATK_SPEED
  605.       return x[#{x}]攻撃速度補正x[#{xx}]#{textpm(data.value.truncate)}
  606.     when FEATURE_ATK_TIMES
  607.       return x[#{x}]攻撃追加回数x[#{xx}]#{textpm((data.value100).truncate)}
  608.     when FEATURE_STYPE_ADD
  609.       return x[#{x}]「#{$data_system.skill_types[data.data_id]}」系スキル追加
  610.     when FEATURE_STYPE_SEAL
  611.       return x[#{x}]「#{$data_system.skill_types[data.data_id]}」系スキル封印
  612.     when FEATURE_SKILL_ADD
  613.       return x[#{x}]「#{$data_skills[data.data_id].name}」習得
  614.     when FEATURE_SKILL_SEAL
  615.       return x[#{x}]「#{$data_skills[data.data_id].name}」封印
  616.     when FEATURE_EQUIP_WTYPE
  617.       return x[#{x}]「#{$data_system.weapon_types[data.data_id]}」装備可能
  618.     when FEATURE_EQUIP_ATYPE
  619.       return x[#{x}]「#{$data_system.armor_types[data.data_id]}」装備可能
  620.     when FEATURE_EQUIP_FIX
  621.       return x[#{x}]「#{$data_system.terms.etypes[data.data_id]}」装備固定化
  622.     when FEATURE_EQUIP_SEAL
  623.       return x[#{x}]「#{$data_system.terms.etypes[data.data_id]}」装備不可
  624.     when FEATURE_SLOT_TYPE
  625.       return x[#{x}] + SLOT_TYPE[data.data_id]
  626.     when FEATURE_ACTION_PLUS
  627.       return x[#{x}]複数回行動率x[#{xx}]#{textpm((data.value100).truncate)}%
  628.     when FEATURE_SPECIAL_FLAG
  629.       if data.data_id == FLAG_ID_PRESERVE_TP
  630.         return x[#{x}] + sprintf(SPECIAL[data.data_id], $data_system.terms.basic[6])
  631.       else
  632.         return x[#{x}] + SPECIAL[data.data_id]
  633.       end
  634.     when FEATURE_COLLAPSE_TYPE
  635.       return    ##x[#{x}] + COLLAPSE[data.data_id]
  636.     when FEATURE_PARTY_ABILITY
  637.       return x[#{x}] + PT_ABILITY[data.data_id]
  638.     end
  639.     return
  640.   end
  641.   #--------------------------------------------------------------------------
  642.   # ● 使用効果
  643.   #--------------------------------------------------------------------------
  644.   def self.effects(array)
  645.     info =
  646.     x = 120
  647.     a = array.select { effect effect.code == EFFECT_RECOVER_HP }
  648.     unless a.empty
  649.       info += c[16]#{sprintf(EFFECTS[a[0].code], $data_system.terms.basic[2])}c[0]
  650.       a.each do effect
  651.         info += x[#{x}]
  652.         info += #{textpm(effect.value1.truncate)}% if effect.value1 != 0
  653.         info += #{textpm(effect.value2.truncate)}   if effect.value2 != 0
  654.         info += n
  655.       end
  656.     end
  657.     a = array.select { effect effect.code == EFFECT_RECOVER_MP }
  658.     unless a.empty
  659.       info += c[16]#{sprintf(EFFECTS[a[0].code], $data_system.terms.basic[4])}c[0]
  660.       a.each do effect
  661.         info += x[#{x}]
  662.         info += #{textpm(effect.value1.truncate)}% if effect.value1 != 0
  663.         info += #{textpm(effect.value2.truncate)}   if effect.value2 != 0
  664.         info += n
  665.       end
  666.     end
  667.     a = array.select { effect effect.code == EFFECT_GAIN_TP }
  668.     unless a.empty
  669.       info += c[16]#{sprintf(EFFECTS[a[0].code], $data_system.terms.basic[6])}c[0]x[#{x}]
  670.       a.each do effect
  671.         info += #{textpm(effect.value1.truncate)}
  672.       end
  673.       info += n
  674.     end
  675.     a = array.select { effect effect.code == EFFECT_ADD_STATE and effect.data_id != 0 }
  676.     unless a.empty
  677.       info += c[16]#{EFFECTS[a[0].code]}c[0]x[#{x}]
  678.       a.each do effect
  679.         info += state_icon_text(effect.data_id)
  680.       end
  681.       info += n
  682.     end
  683.     a = array.select { effect effect.code == EFFECT_REMOVE_STATE and effect.data_id != 0 }
  684.     unless a.empty
  685.       info += c[16]#{EFFECTS[a[0].code]}c[0]x[#{x}]
  686.       a.each do effect
  687.         info += state_icon_text(effect.data_id)
  688.       end
  689.       info += n
  690.     end
  691.     a = array.select { effect effect.code == EFFECT_ADD_BUFF }
  692.     unless a.empty
  693.       info += c[16]#{EFFECTS[a[0].code]}c[0]
  694.       a.each do effect
  695.         info += x[#{x}]
  696.         info += #{$data_system.terms.params[effect.data_id]}UP
  697.         info +=  #{effect.value1.truncate}ターン
  698.         info += n
  699.       end
  700.     end
  701.     a = array.select { effect effect.code == EFFECT_ADD_DEBUFF }
  702.     unless a.empty
  703.       info += c[16]#{EFFECTS[a[0].code]}c[0]
  704.       a.each do effect
  705.         info += x[#{x}]
  706.         info += #{$data_system.terms.params[effect.data_id]}DOWN
  707.         info +=  #{effect.value1.truncate}ターン
  708.         info += n
  709.       end
  710.     end
  711.     a = array.select { effect effect.code == EFFECT_REMOVE_BUFF }
  712.     unless a.empty
  713.       info += c[16]#{EFFECTS[a[0].code]}c[0]
  714.       a.each do effect
  715.         info += x[#{x}]
  716.         info += #{$data_system.terms.params[effect.data_id]}UP解除
  717.         info += n
  718.       end
  719.     end
  720.     a = array.select { effect effect.code == EFFECT_REMOVE_DEBUFF }
  721.     unless a.empty
  722.       info += c[16]#{EFFECTS[a[0].code]}c[0]
  723.       a.each do effect
  724.         info += x[#{x}]
  725.         info += #{$data_system.terms.params[effect.data_id]}DOWN解除
  726.         info += n
  727.       end
  728.     end
  729.     a = array.select { effect effect.code == EFFECT_GROW }
  730.     unless a.empty
  731.       info += c[16]#{EFFECTS[a[0].code]}c[0]
  732.       a.each do effect
  733.         info += x[#{x}]
  734.         info += #{$data_system.terms.params[effect.data_id]}
  735.         info += #{textpm(effect.value1.truncate)}
  736.         info += n
  737.       end
  738.     end
  739.     a = array.select { effect effect.code == EFFECT_LEARN_SKILL }
  740.     unless a.empty
  741.       a.each do effect
  742.         info += x[#{x}]
  743.         info += 「#{$data_skills[effect.data_id]}」習得
  744.         info += n
  745.       end
  746.     end

  747.     return info
  748.   end
  749. #----------------------------------------------------------------------------
  750. # ■ 自動生成メソッド
  751. #----------------------------------------------------------------------------
  752.   #--------------------------------------------------------------------------
  753.   # ● アクター情報の自動生成
  754.   #--------------------------------------------------------------------------
  755.   def self.create_actor(id)
  756.     data = [n[#{id}], n[#{id}], b[#{id}], actor_text(id)]
  757.     return DictionaryDictData.new(id, data)
  758.   end
  759.   #--------------------------------------------------------------------------
  760.   # ● エネミー情報の自動生成
  761.   #--------------------------------------------------------------------------
  762.   def self.create_enemy(id)
  763.     data = [e[#{id}], , e[#{id}], enemy_text(id)]
  764.     return DictionaryDictData.new(id, data)
  765.   end
  766.   #--------------------------------------------------------------------------
  767.   # ● エネミー情報の自動生成
  768.   #--------------------------------------------------------------------------
  769.   def self.create_enemy_analize(id)
  770.     data = [e[#{id}], , e[#{id}], ]
  771.     return DictionaryDictData.new(id, data)
  772.   end
  773.   #--------------------------------------------------------------------------
  774.   # ● アイテム情報の自動生成
  775.   #--------------------------------------------------------------------------
  776.   def self.create_item(id)
  777.     data = [t[#{id}], t[#{id}], nil, item_text(id)]
  778.     return DictionaryDictData.new(id, data)
  779.   end
  780.   #--------------------------------------------------------------------------
  781.   # ● 武器情報の自動生成
  782.   #--------------------------------------------------------------------------
  783.   def self.create_weapon(id)
  784.     data = [w[#{id}], w[#{id}], nil, weapon_text(id)]
  785.     return DictionaryDictData.new(id, data)
  786.   end
  787.   #--------------------------------------------------------------------------
  788.   # ● 防具情報の自動生成
  789.   #--------------------------------------------------------------------------
  790.   def self.create_armor(id)
  791.     data = [a[#{id}], a[#{id}], nil, armor_text(id)]
  792.     return DictionaryDictData.new(id, data)
  793.   end
  794.   #--------------------------------------------------------------------------
  795.   # ● スキル情報の自動生成
  796.   #--------------------------------------------------------------------------
  797.   def self.create_skill(id)
  798.     data = [s[#{id}], s[#{id}], nil, skill_text(id)]
  799.     return DictionaryDictData.new(id, data)
  800.   end
  801.   #--------------------------------------------------------------------------
  802.   # ● クラス情報の自動生成
  803.   #--------------------------------------------------------------------------
  804.   def self.create_class(id)
  805.     data = [J[#{id}], j[#{id}], nil, class_text(id)]
  806.     return DictionaryDictData.new(id, data)
  807.   end
  808.   #--------------------------------------------------------------------------
  809.   # ● 場所情報の自動生成
  810.   #--------------------------------------------------------------------------
  811.   def self.create_town(id)
  812.     unless defined(WorldMap)
  813.       p Error  can't use ATC_TOWN [WorldMapが定義されてません];exit
  814.     end
  815.     region_id = id  1000
  816.     town_id   = (id % 1000) - 1
  817.     if town_id  0 # リージョン情報
  818.       region = $game_system.worldmap[region_id]
  819.       data = [region.region_name, 地域, nil, region.region_info, region.visible]
  820.     else # タウン情報
  821.       town = $game_system.worldmap[region_id][town_id]
  822.       data = [town.town_name, 場所, nil, town.town_info, town.visible]
  823.     end
  824.     return DictionaryDictData.new(id, data)
  825.   end
  826.   #--------------------------------------------------------------------------
  827.   # ● クエスト情報の自動生成
  828.   #--------------------------------------------------------------------------
  829.   def self.create_quest(id)
  830.     unless defined(Quest)
  831.       p Error  can't use ATC_QUEST [QuestSystemが定義されてません];exit
  832.     end
  833.     data = [#{$game_system.quest[id].name}, , nil, Quest.conv_text($game_system.quest[id].text)]
  834.     return DictionaryDictData.new(id, data)
  835.   end
  836. end





  837. module DictAutoCreate
  838.   #--------------------------------------------------------------------------
  839.   # ● Plugin-自動生成(用語ID)
  840.   #--------------------------------------------------------------------------
  841.   def self.plugin_auto_ids(type)
  842.     ids = []
  843.     case type
  844.     when ATC_ACTOR        # アクターの自動生成
  845.       $data_actors.each do d
  846.         next if d.nil or ACT_NOT_SHOW.include(d.id)
  847.         ids.push(d.id)
  848.       end
  849.     when ATC_ENEMY, ATC_ENEMY_A   # エネミーの自動生成
  850.       $data_enemies.each do d
  851.         next if d.nil or ENM_NOT_SHOW.include(d.id)
  852.         ids.push(d.id)
  853.       end
  854.     when ATC_ITEM         # アイテムの自動生成
  855.       $data_items.each do d
  856.         next if d.nil or ITM_NOT_SHOW.include(d.id)
  857.         ids.push(d.id)
  858.       end
  859.     when ATC_WEAPON       # 武器の自動生成
  860.       $data_weapons.each do d
  861.         next if d.nil or WPN_NOT_SHOW.include(d.id)
  862.         ids.push(d.id)
  863.       end
  864.     when ATC_ARMOR_ALL    # 防具(全て)の自動生成
  865.       $data_armors.each do d
  866.         next if d.nil or ARM_NOT_SHOW.include(d.id)
  867.         ids.push(d.id)
  868.       end
  869.     when ATC_ARMOR_S      # 防具(盾のみ)の自動生成
  870.       $data_armors.each do d
  871.         next if d.nil or ARM_NOT_SHOW.include(d.id)
  872.         next if $data_armors[i].kind != 0 # 盾
  873.         ids.push(d.id)
  874.       end
  875.     when ATC_ARMOR_H      # 防具(頭防具のみ)の自動生成
  876.       $data_armors.each do d
  877.         next if d.nil or ARM_NOT_SHOW.include(d.id)
  878.         next if $data_armors[i].kind != 1 # 頭防具
  879.         ids.push(d.id)
  880.       end
  881.     when ATC_ARMOR_C      # 防具(身体防具のみ)の自動生成
  882.       $data_armors.each do d
  883.         next if d.nil or ARM_NOT_SHOW.include(d.id)
  884.         next if $data_armors[i].kind != 2 # 身体防具
  885.         ids.push(d.id)
  886.       end
  887.     when ATC_ARMOR_A      # 防具(装飾品のみ)の自動生成
  888.       $data_armors.each do d
  889.         next if d.nil or ARM_NOT_SHOW.include(d.id)
  890.         next if $data_armors[i].kind != 3 # 装飾品
  891.         ids.push(d.id)
  892.       end
  893.     when ATC_SKILL        # スキルの自動生成
  894.       $data_skills.each do d
  895.         next if d.nil or SKL_NOT_SHOW.include(d.id)
  896.         ids.push(d.id)
  897.       end
  898.     when ATC_CLASS        # クラスの自動生成
  899.       $data_classes.each do d
  900.         next if d.nil or CLS_NOT_SHOW.include(d.id)
  901.         ids.push(d.id)
  902.       end
  903.     when ATC_TOWN         # 場所の自動生成
  904.       if defined(WorldMap)
  905.         WorldMapREGION.keys.sort.each do region_id
  906.           i = self.conv_region_id(region_id)
  907.           next if TWN_NOT_SHOW.include(i)
  908.           ids.push(i)
  909.           WorldMapREGION[region_id][WorldMapR_TOWN].keys.sort.each do town_id
  910.             i = self.conv_town_id(region_id, town_id)
  911.             next if TWN_NOT_SHOW.include(i)
  912.             ids.push(i)
  913.           end
  914.         end
  915.       else
  916.         p WorldMapがありません。;   exit
  917.       end
  918.     when ATC_QUEST        # クエストの自動生成
  919.       if defined(Quest)
  920.         QuestQUEST.keys.sort.each do i
  921.           next if QST_NOT_SHOW.include(i)
  922.           ids.push(i)
  923.         end
  924.       else
  925.         p QuestSystemがありません。;   exit
  926.       end
  927.     else
  928.       p [PluginAutoCreate] ATC_XXXの指定が間違ってます #{type}
  929.     end
  930.     return ids
  931.   end
  932.   #--------------------------------------------------------------------------
  933.   # ● ATC_TOWN   リージョンID - 用語ID変換
  934.   #--------------------------------------------------------------------------
  935.   def self.conv_region_id(region_id)
  936.     if defined(WorldMap)
  937.       return (region_id  1000)
  938.     else
  939.       p WorldMapがありません。;   exit
  940.     end
  941.   end
  942.   #--------------------------------------------------------------------------
  943.   # ● ATC_TOWN   タウンID - 用語ID変換
  944.   #--------------------------------------------------------------------------
  945.   def self.conv_town_id(region_id, town_id)
  946.     if defined(WorldMap)
  947.       return (self.conv_region_id(region_id) + town_id + 1)
  948.     else
  949.       p WorldMapがありません。;   exit
  950.     end
  951.   end
  952.   #--------------------------------------------------------------------------
  953.   # ● Plugin-自動生成(用語データ)
  954.   #--------------------------------------------------------------------------
  955.   def self.plugin_auto_create(type, id)
  956.     case type
  957.     when ATC_ACTOR        # アクターの自動生成
  958.       return DictAutoCreate.create_actor(id)
  959.     when ATC_ENEMY        # エネミーの自動生成
  960.       return DictAutoCreate.create_enemy(id)
  961.     when ATC_ENEMY_A      # エネミー(アナライズ用)の自動生成
  962.       return DictAutoCreate.create_enemy_analize(id)
  963.     when ATC_ITEM         # アイテムの自動生成
  964.       return DictAutoCreate.create_item(id)
  965.     when ATC_WEAPON       # 武器の自動生成
  966.       return DictAutoCreate.create_weapon(id)
  967.     when ATC_ARMOR_ALL    # 防具(全て)の自動生成
  968.       return DictAutoCreate.create_armor(id)
  969.     when ATC_ARMOR_S      # 防具(盾のみ)の自動生成
  970.       return DictAutoCreate.create_armor(id)
  971.     when ATC_ARMOR_H      # 防具(頭防具のみ)の自動生成
  972.       return DictAutoCreate.create_armor(id)
  973.     when ATC_ARMOR_C      # 防具(身体防具のみ)の自動生成
  974.       return DictAutoCreate.create_armor(id)
  975.     when ATC_ARMOR_A      # 防具(装飾品のみ)の自動生成
  976.       return DictAutoCreate.create_armor(id)
  977.     when ATC_SKILL        # スキルの自動生成
  978.       return DictAutoCreate.create_skill(id)
  979.     when ATC_CLASS        # クラスの自動生成
  980.       return DictAutoCreate.create_class(id)
  981.     when ATC_TOWN         # 場所の自動生成
  982.       return DictAutoCreate.create_town(id)
  983.     when ATC_QUEST        # クエストの自動生成
  984.       return DictAutoCreate.create_quest(id)
  985.     else
  986.       p [PluginAutoCreate] ATC_XXXの指定が間違ってます #{type}
  987.       exit
  988.     end
  989.   end
  990. end



复制代码
显示错误的地方:

删了一个又一个后还是有很多问题
↓这只是几个而已,后面还有很多……所以想请能改的大大帮忙把错误的地方都改一下



dsu_plus_rewardpost_czw
作者: feizhaodan    时间: 2012-10-14 14:19
  1. #==============================================================================
  2. # ■ VXAce-RGSS3-1 用語辞典-自動生成Plugin [Ver.1.0.0]          by Claimh
  3. #------------------------------------------------------------------------------
  4. #・データベース上のアクター/エネミー/アイテム/武器/防具/スキル/クラスの情報を
  5. #  用語辞典として自動生成します。
  6. #・自動生成された辞書データはすべて初期状態では非表示になります。
  7. #------------------------------------------------------------------------------
  8. #【アクター、エネミー、アイテム、武器、防具、スキル、クラス、クエストの自動生成】
  9. #・自動生成した場合の用語IDは生成元のIDと同じです
  10. # (例) エネミーID:5 --(自動生成)--> 用語ID:5
  11. #------------------------------------------------------------------------------
  12. #【場所情報の自動生成】
  13. #・必須:ワールドマップ
  14. #・ワールドマップのタウン・リージョン情報を用語辞典に反映します。
  15. #・リージョン情報の用語IDは リージョンID * 1000 です
  16. #  用語ID = DictAutoCreate.conv_region_id(リージョンID)
  17. #・タウン情報の用語IDは リージョンID * 1000 + タウンID + 1 です
  18. #  用語ID = DictAutoCreate.conv_town_id(リージョンID, タウンID)
  19. #   ※タウンIDは0-998しか使えません。
  20. #==============================================================================

  21. =begin
  22.   - 使い方 -
  23.     用語辞典[設定] の 「用語設定」で以下のように設定してください。
  24.       WORDS[項目番号] = ATC_ACTOR     # アクターの自動生成
  25.       WORDS[項目番号] = ATC_ENEMY     # エネミーの自動生成
  26.       WORDS[項目番号] = ATC_ENEMY_A   # エネミー(アナライズ用)の自動生成
  27.       WORDS[項目番号] = ATC_ITEM      # アイテムの自動生成
  28.       WORDS[項目番号] = ATC_WEAPON    # 武器の自動生成
  29.       WORDS[項目番号] = ATC_ARMOR_ALL # 防具(全て)の自動生成
  30.       WORDS[項目番号] = ATC_ARMOR_S   # 防具(盾のみ)の自動生成
  31.       WORDS[項目番号] = ATC_ARMOR_H   # 防具(頭防具のみ)の自動生成
  32.       WORDS[項目番号] = ATC_ARMOR_C   # 防具(身体防具のみ)の自動生成
  33.       WORDS[項目番号] = ATC_ARMOR_A   # 防具(装飾品のみ)の自動生成
  34.       WORDS[項目番号] = ATC_SKILL     # スキルの自動生成
  35.       WORDS[項目番号] = ATC_CLASS     # クラスの自動生成
  36.       WORDS[項目番号] = ATC_TOWN      # 場所の自動生成
  37.       WORDS[項目番号] = ACT_QUEST     # クエストの自動生成
  38. =end
  39. module DictAutoCreate
  40.   # 属性表示の限界個数
  41.   ELEMENTS_MAX = 10
  42.   # 表示しない属性ID  ELE_NOT_SHOW = [ID, …]
  43.   ELE_NOT_SHOW = [1, 2]
  44.   # アイコン表示する
  45.   ELE_USE_ICON = true
  46.   # アイコン(ELE_USE_ICON = trueのときだけ必要)
  47.   ELE_ICON = {  # 属性ID => アイコンIndex
  48.     3  => 96,   # 炎
  49.     4  => 97,   # 氷
  50.     5  => 98,   # 雷
  51.     6  => 99,   # 水
  52.     7  => 100,  # 大地
  53.     8  => 101,  # 風
  54.     9  => 102,  # 神聖
  55.     10 => 103,  # 暗黒
  56.   }

  57.   # ステート表示の限界個数
  58.   STATES_MAX = 5
  59.   # 表示しないステートID  STS_NOT_SHOW = [ID, …]
  60.   STS_NOT_SHOW = [3,4,5]


  61.   # 特定IDの情報は自動生成しないようにする  XXX_NOT_SHOW = [ID, …]
  62.   # アクター
  63.   ACT_NOT_SHOW = []
  64.   # エネミー
  65.   ENM_NOT_SHOW = []
  66.   # アイテム
  67.   ITM_NOT_SHOW = []
  68.   # 武器
  69.   WPN_NOT_SHOW = []
  70.   # 防具
  71.   ARM_NOT_SHOW = []
  72.   # スキル
  73.   SKL_NOT_SHOW = []
  74.   # クラス
  75.   CLS_NOT_SHOW = []
  76.   # 場所
  77.   TWN_NOT_SHOW = []
  78.   
  79. end

  80. module DictAutoCreate
  81.   include DictDef
  82.   #--------------------------------------------------------------------------
  83.   # ● 定数
  84.   #--------------------------------------------------------------------------
  85.   TARGET = ["なし", "敵単体", "敵全体",
  86.             "敵1体ランダム", "敵2体ランダム", "敵3体ランダム", "敵4体ランダム",
  87.             "味方単体", "味方全体",
  88.             "味方単体蘇生", "味方全体蘇生", "使用者"]
  89.   D_TYPE = ["なし", "%s攻撃", "%s攻撃", "%s回復", "%s回復", "%s吸収", "%s吸収"]
  90.   #--------------------------------------------------------------------------
  91.   # ● 定数(特徴)
  92.   #--------------------------------------------------------------------------
  93.   FEATURE_ELEMENT_RATE  = 11              # 属性有効度
  94.   FEATURE_DEBUFF_RATE   = 12              # 弱体有効度
  95.   FEATURE_STATE_RATE    = 13              # ステート有効度
  96.   FEATURE_STATE_RESIST  = 14              # ステート無効化
  97.   FEATURE_PARAM         = 21              # 通常能力値
  98.   FEATURE_XPARAM        = 22              # 追加能力値
  99.   FEATURE_SPARAM        = 23              # 特殊能力値
  100.   FEATURE_ATK_ELEMENT   = 31              # 攻撃時属性
  101.   FEATURE_ATK_STATE     = 32              # 攻撃時ステート
  102.   FEATURE_ATK_SPEED     = 33              # 攻撃速度補正
  103.   FEATURE_ATK_TIMES     = 34              # 攻撃追加回数
  104.   FEATURE_STYPE_ADD     = 41              # スキルタイプ追加
  105.   FEATURE_STYPE_SEAL    = 42              # スキルタイプ封印
  106.   FEATURE_SKILL_ADD     = 43              # スキル追加
  107.   FEATURE_SKILL_SEAL    = 44              # スキル封印
  108.   FEATURE_EQUIP_WTYPE   = 51              # 武器タイプ装備
  109.   FEATURE_EQUIP_ATYPE   = 52              # 防具タイプ装備
  110.   FEATURE_EQUIP_FIX     = 53              # 装備固定
  111.   FEATURE_EQUIP_SEAL    = 54              # 装備封印
  112.   FEATURE_SLOT_TYPE     = 55              # スロットタイプ
  113.   FEATURE_ACTION_PLUS   = 61              # 行動回数追加
  114.   FEATURE_SPECIAL_FLAG  = 62              # 特殊フラグ
  115.   FEATURE_COLLAPSE_TYPE = 63              # 消滅エフェクト
  116.   FEATURE_PARTY_ABILITY = 64              # パーティ能力
  117.   
  118.   FLAG_ID_AUTO_BATTLE   = 0               # 自動戦闘
  119.   FLAG_ID_GUARD         = 1               # 防御
  120.   FLAG_ID_SUBSTITUTE    = 2               # 身代わり
  121.   FLAG_ID_PRESERVE_TP   = 3               # TP持ち越し
  122.   
  123.   XPARAM = ["命中率", "回避率", "会心率", "会心回避率",
  124.             "魔法回避率", "魔法反射率", "反撃率", "%s再生率", "%s再生率", "%s再生率"]
  125.   SPARAM = ["狙われ率", "防御効果率", "回復効果率", "薬の知識", "%s消費率", "%sチャージ率",
  126.             "物理ダメージ率", "魔法ダメージ率", "床ダメージ率", "経験値獲得率"]
  127.   SLOT_TYPE = ["", "二刀流"]
  128.   SPECIAL = ["自動戦闘", "防御", "身代わり", "%s持ち越し"]
  129.   COLLAPSE = ["ボス", "瞬間消去", "消えない"]
  130.   PT_ABILITY = ["エンカウント半減", "エンカウント無効", "不意打ち無効", "先制", "獲得金額2倍", "アイテム入手率2倍"]
  131.   #--------------------------------------------------------------------------
  132.   # ● 定数(使用効果)
  133.   #--------------------------------------------------------------------------
  134.   EFFECT_RECOVER_HP     = 11              # HP 回復
  135.   EFFECT_RECOVER_MP     = 12              # MP 回復
  136.   EFFECT_GAIN_TP        = 13              # TP 増加
  137.   EFFECT_ADD_STATE      = 21              # ステート付加
  138.   EFFECT_REMOVE_STATE   = 22              # ステート解除
  139.   EFFECT_ADD_BUFF       = 31              # 能力強化
  140.   EFFECT_ADD_DEBUFF     = 32              # 能力弱体
  141.   EFFECT_REMOVE_BUFF    = 33              # 能力強化の解除
  142.   EFFECT_REMOVE_DEBUFF  = 34              # 能力弱体の解除
  143.   EFFECT_SPECIAL        = 41              # 特殊効果
  144.   EFFECT_GROW           = 42              # 成長
  145.   EFFECT_LEARN_SKILL    = 43              # スキル習得
  146.   EFFECTS = {
  147.     EFFECT_RECOVER_HP    => "%s 回復",
  148.     EFFECT_RECOVER_MP    => "%s 回復",
  149.     EFFECT_GAIN_TP       => "%s 増加",
  150.     EFFECT_ADD_STATE     => "ステート付加",
  151.     EFFECT_REMOVE_STATE  => "ステート解除",
  152.     EFFECT_ADD_BUFF      => "能力強化",
  153.     EFFECT_ADD_DEBUFF    => "能力弱体",
  154.     EFFECT_REMOVE_BUFF   => "能力強化の解除",
  155.     EFFECT_REMOVE_DEBUFF => "能力弱体の解除",
  156.     EFFECT_SPECIAL       => "特殊効果",
  157.     EFFECT_GROW          => "成長",
  158.     EFFECT_LEARN_SKILL   => "スキル習得"
  159.   }
  160. #----------------------------------------------------------------------------
  161. #   カスタマイズSTART
  162. #----------------------------------------------------------------------------
  163. =begin
  164. 【説明文の設定】
  165.   XXX_text(id)というメソッド内で、
  166.   自動生成する際の説明分を設定できます。
  167.   アイテム、武器、防具、スキルはデータベースのものを表示するようになってますが、
  168.   変更することも可能です。
  169.   また、用語辞典用の制御文字も使用可能です。
  170. 【自動生成時の設定値】
  171.   create_XXXというメソッド内で自動生成する際の設定値を決め打ちしてます。
  172.     用語名はデータベースのもの、表示は無効(false)として自動生成します。
  173. =end
  174.   #--------------------------------------------------------------------------
  175.   # ● Plugin- アクター自動生成 : 説明文
  176.   #--------------------------------------------------------------------------
  177.   def self.actor_text(id)
  178.     data = $data_actors[id]
  179.     #
  180.     return data.description
  181.   end
  182.   #--------------------------------------------------------------------------
  183.   # ● Plugin- エネミー自動生成 : 説明文
  184.   #--------------------------------------------------------------------------
  185.   def self.enemy_text(id)
  186.     data = $data_enemies[id]
  187.     #
  188.     items = []
  189.     data.drop_items.each do |item|
  190.       next if item.kind == 0
  191.       case item.kind
  192.       when 1; d = $data_items[item.data_id]
  193.       when 2; d = $data_weapons[item.data_id]
  194.       when 3; d = $data_armors[item.data_id]
  195.       end
  196.       items.push("\\i[#{d.icon_index}]#{d.name}(#{(100/item.denominator).truncate}%)")
  197.     end

  198.     info = ""
  199.     # エネミーのパラメータ情報
  200.     for i in 0...4
  201.       info += "\\c[16]#{$data_system.terms.params[i*2]}\\c[0]\\x[84]\\u[#{id},#{i*2}]"+
  202.               "\\x[170]\\c[16]#{$data_system.terms.params[i*2+1]}\\c[0]\\x[260]\\u[#{id},#{i*2+1}]\\n"
  203.     end

  204.     info +=
  205.       "\\c[16]EXP\\c[0]\\x[84]\\k[#{id}]\\n"+
  206.       "\\c[16]Gold\\c[0]\\x[84]\\g[#{id}] \\c[16]#{$data_system.currency_unit}\\c[0]"

  207.     items.each_index do |i|
  208.       info += "\\n\\c[16]Treasure#{i+1}\\c[0]\\x[100]#{items[i]}"
  209.     end
  210.     if defined?(DefeatCounter)    # ★撃破数カウンタとの併用
  211.       info += "\\n\\c[16]撃破数\\c[0]\\x[100]\\t[#{id}]"
  212.     end
  213.     #
  214.     unless $data_system.elements.empty?
  215.       rate = element_rate(Game_Enemy.new(0, id))
  216.       info += "\\p" + rate if rate != ""
  217.     end
  218.     #
  219.     unless $data_states.empty?
  220.       rate = state_rate(Game_Enemy.new(0, id))
  221.       info += "\\p" + rate if rate != ""
  222.     end
  223.     #
  224.     s_actions = {}  # skill
  225.     total = 0
  226.     data.actions.each do |action|
  227.       s_actions[action.skill_id] = 0 if s_actions[action.skill_id].nil?
  228.       s_actions[action.skill_id] += action.rating
  229.       total += action.rating
  230.     end
  231.     if !s_actions.empty?
  232.       page = 1
  233.       if (Dictionary.d_line_max - 1) < s_actions.size
  234.         info += "\\p\\c[16]【行動パターン(#{page})】\\c[0]\\n"
  235.       else
  236.         info += "\\p\\c[16]【行動パターン】\\c[0]\\n"
  237.       end
  238.       line = 1
  239.       ids = s_actions.keys.sort
  240.       ids.each do |sid|
  241.         skill = $data_skills[sid]
  242.         if (line % (Dictionary.d_line_max) == 0)
  243.           page += 1
  244.           info += "\\p\\c[16]【行動パターン(#{page})】\\c[0]\\n"
  245.           line = 1
  246.         end
  247.         per = (s_actions[sid] * 100.0 / total).round
  248.         info += "\\x[10]\\i[#{skill.icon_index}]#{skill.name}\\x[200]#{per}%\\n"
  249.         line += 1
  250.       end
  251.     end
  252.     #
  253.     text = ""
  254.     case id
  255.     when 0; text = "エネミーID:○の説明文~"
  256.     end
  257.     #
  258.     return textinfo(text, info)
  259.   end
  260.   #--------------------------------------------------------------------------
  261.   # ● Plugin- アイテム自動生成 : 説明文
  262.   #--------------------------------------------------------------------------
  263.   def self.item_text(id)
  264.     data = $data_items[id]
  265.     info = data.description
  266.     info += "\\y[4]" # 4行目へ
  267.     #
  268.     info += # アイテム情報のテキスト化
  269.       "\\c[16]価格\\c[0]\\x[84]#{data.price} \\c[16]#{$data_system.currency_unit}\\c[0]\\n"+
  270.       "\\c[16]効果範囲\\c[0]\\x[84]#{TARGET[data.scope]}\\n"
  271.     #
  272.     info += self.damage(data.damage)    unless data.damage.none?
  273.     info += self.effects(data.effects)  unless data.effects.empty?
  274.     #
  275.     return info
  276.   end
  277.   #--------------------------------------------------------------------------
  278.   # ● Plugin- 武器自動生成 : 説明文
  279.   #--------------------------------------------------------------------------
  280.   def self.weapon_text(id)
  281.     data = $data_weapons[id]
  282.     info = data.description
  283.     info += "\\y[4]" # 4行目へ
  284.     #
  285.     info += "\\c[16]武器タイプ\\c[0]\\x[120]#{$data_system.weapon_types[data.wtype_id]}\\n"
  286.     #
  287.     info += "\\c[16]価格\\c[0]\\x[84]#{data.price} \\c[16]#{$data_system.currency_unit}\\c[0]\\n"
  288.     for i in 0...4
  289.       info += "\\c[16]#{$data_system.terms.params[i*2]}\\c[0]\\x[84]#{data.params[i*2]}"+
  290.               "\\x[170]\\c[16]#{$data_system.terms.params[i*2+1]}\\c[0]\\x[260]#{data.params[i*2+1]}\\n"
  291.     end
  292.     #
  293.     info += self.features(data.features)
  294.     #
  295.     return info
  296.   end
  297.   #--------------------------------------------------------------------------
  298.   # ● Plugin- 防具自動生成 : 説明文
  299.   #--------------------------------------------------------------------------
  300.   def self.armor_text(id)
  301.     data = $data_armors[id]
  302.     info = data.description
  303.     info += "\\y[4]" # 4行目へ
  304.     #
  305.     info += "\\c[16]防具タイプ\\c[0]\\x[120]#{$data_system.armor_types[data.atype_id]}\\n"
  306.     #
  307.     info += "\\c[16]価格\\c[0]\\x[84]#{data.price} \\c[16]#{$data_system.currency_unit}\\c[0]\\n"
  308.     for i in 0...4
  309.       info += "\\c[16]#{$data_system.terms.params[i*2]}\\c[0]\\x[84]#{data.params[i*2]}"+
  310.               "\\x[170]\\c[16]#{$data_system.terms.params[i*2+1]}\\c[0]\\x[260]#{data.params[i*2+1]}\\n"
  311.     end
  312.     #
  313.     info += self.features(data.features)
  314.     #
  315.     return info
  316.   end
  317.   #--------------------------------------------------------------------------
  318.   # ● Plugin- スキル自動生成 : 説明文
  319.   #--------------------------------------------------------------------------
  320.   def self.skill_text(id)
  321.     data = $data_skills[id]
  322.     info = data.description
  323.     info += "\\y[4]" # 4行目へ
  324.     #
  325.     info += "\\c[16]スキルタイプ\\c[0]\\x[120]#{$data_system.skill_types[data.stype_id]}"
  326.     #
  327.     ids = [data.required_wtype_id1, data.required_wtype_id2].select { |a| a != 0 }
  328.     unless ids.empty?
  329.       info += "\\x[160]\\c[16]必要武器\\c[0]\\x[250]"
  330.       ids.each do |type|
  331.         info += "#{$data_system.weapon_types[type]} "
  332.       end
  333.     end
  334.     #
  335.     info += "\\n"
  336.     #
  337.     info += self.damage(data.damage)    unless data.damage.none?
  338.     #
  339.     info += "\\c[16]消費#{$data_system.terms.basic[4]}\\c[0]\\x[84]#{data.mp_cost}"
  340.     info += "\\x[160]\\c[16]消費#{$data_system.terms.basic[6]}\\c[0]\\x[250]#{data.tp_cost}\\n"
  341.     info += "\\c[16]効果範囲\\c[0]\\x[84]#{TARGET[data.scope]}\\n"
  342.     info += "\\c[16]成功率\\c[0]\\x[84]#{(data.success_rate).truncate}%\\n"
  343.     #
  344.     info += self.effects(data.effects)  unless data.effects.empty?
  345.     #
  346.     return info
  347.   end
  348.   #--------------------------------------------------------------------------
  349.   # ● Plugin- クラス自動生成 : 説明文
  350.   #--------------------------------------------------------------------------
  351.   def self.class_text(id)
  352.     data = $data_classes[id]
  353.     #
  354.     info = ""
  355.     #
  356.     unless data.learnings.empty?
  357.       learns = data.learnings.sort {|a,b| a.level - b.level }
  358.       page = 1
  359.       info += page_text("習得スキル", page, learns.size, 1)
  360.       line = 1
  361.       learns.each do |d|
  362.         if (line % (Dictionary.d_line_max) == 0)
  363.           page += 1
  364.           info += "\\p\\c[16]【習得スキル(#{page})】\\c[0]\\n"
  365.           line = 1
  366.         else
  367.           info += "\\n"
  368.           line += 1
  369.         end
  370.         skill = $data_skills[d.skill_id]
  371.         info += "\\x[0]\\c[16]Lv.#{d.level}\\c[0]\\x[80]\\i[#{skill.icon_index}]#{skill.name}"
  372.         line += 1
  373.       end
  374.     end
  375.     #
  376.     info += self.features(data.features)
  377.     #
  378.     text = ""
  379.     case id
  380.     when 0; text = "クラスID:○の説明文~"
  381.     end
  382.     #
  383.     return textinfo(text, info)
  384.   end
  385. #----------------------------------------------------------------------------
  386. #   カスタマイズEND
  387. #----------------------------------------------------------------------------

  388. #----------------------------------------------------------------------------
  389. # ■ 汎用メソッド
  390. #----------------------------------------------------------------------------
  391.   #--------------------------------------------------------------------------
  392.   # ● ページテキスト
  393.   #--------------------------------------------------------------------------
  394.   def self.page_text(text, page, size, divide)
  395.     if (Dictionary.d_line_max - 1) < (size / divide)
  396.       return "\\c[16]【#{text}(#{page})】\\c[0]"
  397.     else
  398.       return "\\c[16]【#{text}】\\c[0]"
  399.     end
  400.   end
  401.   #--------------------------------------------------------------------------
  402.   # ● 情報テキストとデータベース情報の結合
  403.   #--------------------------------------------------------------------------
  404.   def self.textinfo(text, info)
  405.     return "説明文がありません" if text == "" and info == ""
  406.     return text if info == ""
  407.     return info if text == ""
  408.     return info + "\\p" + text
  409.   end
  410.   #--------------------------------------------------------------------------
  411.   # ● 属性配列生成
  412.   #--------------------------------------------------------------------------
  413.   def self.textpm(value)
  414.     return "-#{value.abs}" if value < 0
  415.     return "+#{value.abs}"
  416.   end
  417.   #--------------------------------------------------------------------------
  418.   # ● 属性配列生成
  419.   #--------------------------------------------------------------------------
  420.   def self.element_icon_text(id)
  421.     if ELE_USE_ICON and !ELE_ICON[id].nil?
  422.       return "\\i[#{ELE_ICON[id]}]#{$data_system.elements[id]}"
  423.     end
  424.     return $data_system.elements[id]
  425.   end
  426.   def self.element_name(id)
  427.     return "\\i[#{ELE_ICON[id]}]" if ELE_USE_ICON and !ELE_ICON[id].nil?
  428.     return $data_system.elements[id]
  429.   end
  430.   def self.make_elements(elements)
  431.     text = ""
  432.     cnt = 0
  433.     for id in elements
  434.       next if ELE_NOT_SHOW.include?(id)
  435.       if cnt == ELEMENTS_MAX
  436.         text += "など"
  437.         break
  438.       end
  439.       text += element_name(id) + " "
  440.       cnt += 1
  441.     end
  442.     return text
  443.   end
  444.   #--------------------------------------------------------------------------
  445.   # ● ステート配列生成
  446.   #--------------------------------------------------------------------------
  447.   def self.state_icon_text(id)
  448.     return "\\i[#{$data_states[id].icon_index}]#{$data_states[id].name}"
  449.   end
  450.   def self.state_name(id)
  451.     return "\\i[#{$data_states[id].icon_index}]"
  452.   end
  453.   def self.make_states(states)
  454.     text = ""
  455.     cnt = 0
  456.     for id in states
  457.       next if STS_NOT_SHOW.include?(id)
  458.       if cnt == STATES_MAX
  459.         text += "など"
  460.         break
  461.       end
  462.       text += state_name(id) + " "
  463.       cnt += 1
  464.     end
  465.     return text
  466.   end
  467.   #--------------------------------------------------------------------------
  468.   # ● 属性有効度
  469.   #--------------------------------------------------------------------------
  470.   def self.element_rate(data)
  471.     divide = 2
  472.     ids = []
  473.     $data_system.elements.each_index { |i|
  474.       ids.push(i) if i != 0 and !ELE_NOT_SHOW.include?(i)
  475.     }
  476.     return "" if ids.size == 0
  477.     page = line = 1
  478.     i = 0
  479.     info = page_text("属性有効度", page, ids.size, divide)
  480.     ids.each do |id|
  481.       if (i % divide) == 0
  482.         if (line % (Dictionary.d_line_max) == 0)
  483.           page += 1
  484.           info += "\\p\\c[16]【属性有効度(#{page})】\\c[0]\\n"
  485.           line = 1
  486.         else
  487.           info += "\\n"
  488.           line += 1
  489.         end
  490.       end
  491.       ele = element_icon_text(id)
  492.       x = (i % divide) * 160
  493.       xx = x + 84
  494.       info += "\\x[#{x}]\\c[16]#{ele}\\c[0]\\x[#{xx}]#{(data.element_rate(id)*100).truncate}%"
  495.       i += 1
  496.     end
  497.     return info
  498.   end
  499.   #--------------------------------------------------------------------------
  500.   # ● ステート有効度
  501.   #--------------------------------------------------------------------------
  502.   def self.state_rate(data)
  503.     divide = 2
  504.     ids = []
  505.     $data_states.each_index { |i|
  506.       ids.push(i) if i != 0 and !STS_NOT_SHOW.include?(i)
  507.     }
  508.     return "" if ids.size == 0
  509.     page = line = 1
  510.     i = 0
  511.     info = page_text("ステート有効度", page, ids.size, divide)
  512.     ids.each do |id|
  513.       if (i % divide) == 0
  514.         if (line % (Dictionary.d_line_max) == 0)
  515.           page += 1
  516.           info += "\\p\\c[16]【ステート有効度(#{page})】\\c[0]\\n"
  517.           line = 1
  518.         else
  519.           info += "\\n"
  520.           line += 1
  521.         end
  522.       end
  523.       sts = state_icon_text(id)
  524.       x = (i % divide) * 160
  525.       xx = x + 100
  526.       info += "\\x[#{x}]\\c[16]#{sts}\\c[0]\\x[#{xx}]#{(data.state_rate(id)*100).truncate}%"
  527.       i += 1
  528.     end
  529.     return info
  530.   end
  531.   #--------------------------------------------------------------------------
  532.   # ● 属性有効度
  533.   #--------------------------------------------------------------------------
  534.   def self.damage(damage)
  535.     info = ""
  536.     case damage.type
  537.     when 1,3,5;  info += "\\c[16]効果\\c[0]\\x[84]" + sprintf(D_TYPE[damage.type], $data_system.terms.basic[2])
  538.     when 2,4,6;  info += "\\c[16]効果\\c[0]\\x[84]" + sprintf(D_TYPE[damage.type], $data_system.terms.basic[4])
  539.     end
  540.     if damage.element_id != 0
  541.       info += "\\x[160]\\c[16]属性\\c[0]\\x[250]#{element_icon_text(damage.element_id)}"
  542.     end
  543.     return info + "\\n"
  544.   end
  545.   #--------------------------------------------------------------------------
  546.   # ● 特徴
  547.   #--------------------------------------------------------------------------
  548.   def self.features(array)
  549.     return "" if array.size == 0
  550.     page = line = 1
  551.     i = 0
  552.     info = "\\p" + page_text("特徴", page, array.size, 1)
  553.     array.each do |data|
  554.       if (line % (Dictionary.d_line_max) == 0)
  555.         page += 1
  556.         info += "\\p\\c[16]【特徴(#{page})】\\c[0]\\n"
  557.         line = 1
  558.       else
  559.         info += "\\n"
  560.         line += 1
  561.       end
  562.       info += feature(data, i)
  563.       i += 1
  564.     end
  565.     return info
  566.   end
  567.   def self.feature(data, i)
  568.     x = 10
  569.     xx = x + 120
  570.     case data.code
  571.     when FEATURE_ELEMENT_RATE
  572.       return "\\x[#{x}]" + element_icon_text(data.data_id) + "\\x[#{xx}]#{textpm((data.value*100).truncate)}%"
  573.     when FEATURE_DEBUFF_RATE
  574.       return "\\x[#{x}]#{$data_system.terms.params[data.data_id]}\\x[#{xx}]#{textpm((data.value*100).truncate)}%"
  575.     when FEATURE_STATE_RATE
  576.       return "\\x[#{x}]#{$data_states[data.data_id].name}\\x[#{xx}]#{textpm((data.value*100).truncate)}%"
  577.     when FEATURE_STATE_RESIST
  578.       info += "\\x[#{x}]#{$data_states[data.data_id].name}\\x[#{xx}]無効"
  579.       return info
  580.     when FEATURE_PARAM
  581.       info += "\\x[#{x}]#{$data_system.terms.params[data.data_id]}\\x[#{xx}]#{textpm((data.value*100).truncate)}%"
  582.       return info
  583.     when FEATURE_XPARAM
  584.       info = "\\x[#{x}]"
  585.       case data.data_id
  586.       when 7; info += sprintf(XPARAM[data.data_id], $data_system.terms.basic[2])
  587.       when 8; info += sprintf(XPARAM[data.data_id], $data_system.terms.basic[4])
  588.       when 9; info += sprintf(XPARAM[data.data_id], $data_system.terms.basic[6])
  589.       else;   info += XPARAM[data.data_id]
  590.       end
  591.       return  info + "\\x[#{xx}]#{textpm((data.value*100).truncate)}%"
  592.     when FEATURE_SPARAM
  593.       info = "\\x[#{x}]"
  594.       case data.data_id
  595.       when 4; info += sprintf(SPARAM[data.data_id], $data_system.terms.basic[4])
  596.       when 5; info += sprintf(SPARAM[data.data_id], $data_system.terms.basic[6])
  597.       else;   info += SPARAM[data.data_id]
  598.       end
  599.       return info + "\\x[#{xx}]#{textpm((data.value*100).truncate)}%"
  600.     when FEATURE_ATK_ELEMENT
  601.       return "\\x[#{x}]攻撃属性\\x[#{xx}]#{$data_system.elements[data.data_id]}"
  602.     when FEATURE_ATK_STATE
  603.       return "\\x[#{x}]攻撃時ステート\\x[#{xx}]#{$data_states[data.data_id]}(#{textpm((data.value*100).truncate)}%)"
  604.     when FEATURE_ATK_SPEED
  605.       return "\\x[#{x}]攻撃速度補正\\x[#{xx}]#{textpm(data.value.truncate)}"
  606.     when FEATURE_ATK_TIMES
  607.       return "\\x[#{x}]攻撃追加回数\\x[#{xx}]#{textpm((data.value*100).truncate)}"
  608.     when FEATURE_STYPE_ADD
  609.       return "\\x[#{x}]「#{$data_system.skill_types[data.data_id]}」系スキル追加"
  610.     when FEATURE_STYPE_SEAL
  611.       return "\\x[#{x}]「#{$data_system.skill_types[data.data_id]}」系スキル封印"
  612.     when FEATURE_SKILL_ADD
  613.       return "\\x[#{x}]「#{$data_skills[data.data_id].name}」習得"
  614.     when FEATURE_SKILL_SEAL
  615.       return "\\x[#{x}]「#{$data_skills[data.data_id].name}」封印"
  616.     when FEATURE_EQUIP_WTYPE
  617.       return "\\x[#{x}]「#{$data_system.weapon_types[data.data_id]}」装備可能"
  618.     when FEATURE_EQUIP_ATYPE
  619.       return "\\x[#{x}]「#{$data_system.armor_types[data.data_id]}」装備可能"
  620.     when FEATURE_EQUIP_FIX
  621.       return "\\x[#{x}]「#{$data_system.terms.etypes[data.data_id]}」装備固定化"
  622.     when FEATURE_EQUIP_SEAL
  623.       return "\\x[#{x}]「#{$data_system.terms.etypes[data.data_id]}」装備不可"
  624.     when FEATURE_SLOT_TYPE
  625.       return "\\x[#{x}]" + SLOT_TYPE[data.data_id]
  626.     when FEATURE_ACTION_PLUS
  627.       return "\\x[#{x}]複数回行動率\\x[#{xx}]#{textpm((data.value*100).truncate)}%"
  628.     when FEATURE_SPECIAL_FLAG
  629.       if data.data_id == FLAG_ID_PRESERVE_TP
  630.         return "\\x[#{x}]" + sprintf(SPECIAL[data.data_id], $data_system.terms.basic[6])
  631.       else
  632.         return "\\x[#{x}]" + SPECIAL[data.data_id]
  633.       end
  634.     when FEATURE_COLLAPSE_TYPE
  635.       return ""   ##"\\x[#{x}]" + COLLAPSE[data.data_id]
  636.     when FEATURE_PARTY_ABILITY
  637.       return "\\x[#{x}]" + PT_ABILITY[data.data_id]
  638.     end
  639.     return ""
  640.   end
  641.   #--------------------------------------------------------------------------
  642.   # ● 使用効果
  643.   #--------------------------------------------------------------------------
  644.   def self.effects(array)
  645.     info = ""
  646.     x = 120
  647.     a = array.select { |effect| effect.code == EFFECT_RECOVER_HP }
  648.     unless a.empty?
  649.       info += "\\c[16]#{sprintf(EFFECTS[a[0].code], $data_system.terms.basic[2])}\\c[0]"
  650.       a.each do |effect|
  651.         info += "\\x[#{x}]"
  652.         info += "#{textpm(effect.value1.truncate)}%" if effect.value1 != 0
  653.         info += "#{textpm(effect.value2.truncate)}"   if effect.value2 != 0
  654.         info += "\\n"
  655.       end
  656.     end
  657.     a = array.select { |effect| effect.code == EFFECT_RECOVER_MP }
  658.     unless a.empty?
  659.       info += "\\c[16]#{sprintf(EFFECTS[a[0].code], $data_system.terms.basic[4])}\\c[0]"
  660.       a.each do |effect|
  661.         info += "\\x[#{x}]"
  662.         info += "#{textpm(effect.value1.truncate)}%" if effect.value1 != 0
  663.         info += "#{textpm(effect.value2.truncate)}"   if effect.value2 != 0
  664.         info += "\\n"
  665.       end
  666.     end
  667.     a = array.select { |effect| effect.code == EFFECT_GAIN_TP }
  668.     unless a.empty?
  669.       info += "\\c[16]#{sprintf(EFFECTS[a[0].code], $data_system.terms.basic[6])}\\c[0]\\x[#{x}]"
  670.       a.each do |effect|
  671.         info += "#{textpm(effect.value1.truncate)}"
  672.       end
  673.       info += "\\n"
  674.     end
  675.     a = array.select { |effect| effect.code == EFFECT_ADD_STATE and effect.data_id != 0 }
  676.     unless a.empty?
  677.       info += "\\c[16]#{EFFECTS[a[0].code]}\\c[0]\\x[#{x}]"
  678.       a.each do |effect|
  679.         info += state_icon_text(effect.data_id)
  680.       end
  681.       info += "\\n"
  682.     end
  683.     a = array.select { |effect| effect.code == EFFECT_REMOVE_STATE and effect.data_id != 0 }
  684.     unless a.empty?
  685.       info += "\\c[16]#{EFFECTS[a[0].code]}\\c[0]\\x[#{x}]"
  686.       a.each do |effect|
  687.         info += state_icon_text(effect.data_id)
  688.       end
  689.       info += "\\n"
  690.     end
  691.     a = array.select { |effect| effect.code == EFFECT_ADD_BUFF }
  692.     unless a.empty?
  693.       info += "\\c[16]#{EFFECTS[a[0].code]}\\c[0]"
  694.       a.each do |effect|
  695.         info += "\\x[#{x}]"
  696.         info += "#{$data_system.terms.params[effect.data_id]}UP"
  697.         info += " #{effect.value1.truncate}ターン"
  698.         info += "\\n"
  699.       end
  700.     end
  701.     a = array.select { |effect| effect.code == EFFECT_ADD_DEBUFF }
  702.     unless a.empty?
  703.       info += "\\c[16]#{EFFECTS[a[0].code]}\\c[0]"
  704.       a.each do |effect|
  705.         info += "\\x[#{x}]"
  706.         info += "#{$data_system.terms.params[effect.data_id]}DOWN"
  707.         info += " #{effect.value1.truncate}ターン"
  708.         info += "\\n"
  709.       end
  710.     end
  711.     a = array.select { |effect| effect.code == EFFECT_REMOVE_BUFF }
  712.     unless a.empty?
  713.       info += "\\c[16]#{EFFECTS[a[0].code]}\\c[0]"
  714.       a.each do |effect|
  715.         info += "\\x[#{x}]"
  716.         info += "#{$data_system.terms.params[effect.data_id]}UP解除"
  717.         info += "\\n"
  718.       end
  719.     end
  720.     a = array.select { |effect| effect.code == EFFECT_REMOVE_DEBUFF }
  721.     unless a.empty?
  722.       info += "\\c[16]#{EFFECTS[a[0].code]}\\c[0]"
  723.       a.each do |effect|
  724.         info += "\\x[#{x}]"
  725.         info += "#{$data_system.terms.params[effect.data_id]}DOWN解除"
  726.         info += "\\n"
  727.       end
  728.     end
  729.     a = array.select { |effect| effect.code == EFFECT_GROW }
  730.     unless a.empty?
  731.       info += "\\c[16]#{EFFECTS[a[0].code]}\\c[0]"
  732.       a.each do |effect|
  733.         info += "\\x[#{x}]"
  734.         info += "#{$data_system.terms.params[effect.data_id]}"
  735.         info += "#{textpm(effect.value1.truncate)}"
  736.         info += "\\n"
  737.       end
  738.     end
  739.     a = array.select { |effect| effect.code == EFFECT_LEARN_SKILL }
  740.     unless a.empty?
  741.       a.each do |effect|
  742.         info += "\\x[#{x}]"
  743.         info += "「#{$data_skills[effect.data_id]}」習得"
  744.         info += "\\n"
  745.       end
  746.     end

  747.     return info
  748.   end
  749. #----------------------------------------------------------------------------
  750. # ■ 自動生成メソッド
  751. #----------------------------------------------------------------------------
  752.   #--------------------------------------------------------------------------
  753.   # ● アクター情報の自動生成
  754.   #--------------------------------------------------------------------------
  755.   def self.create_actor(id)
  756.     data = ["\\n[#{id}]", "\\n[#{id}]", "\\b[#{id}]", actor_text(id)]
  757.     return Dictionary::DictData.new(id, data)
  758.   end
  759.   #--------------------------------------------------------------------------
  760.   # ● エネミー情報の自動生成
  761.   #--------------------------------------------------------------------------
  762.   def self.create_enemy(id)
  763.     data = ["\\e[#{id}]", "", "\\e[#{id}]", enemy_text(id)]
  764.     return Dictionary::DictData.new(id, data)
  765.   end
  766.   #--------------------------------------------------------------------------
  767.   # ● エネミー情報の自動生成
  768.   #--------------------------------------------------------------------------
  769.   def self.create_enemy_analize(id)
  770.     data = ["\\e[#{id}]", "", "\\e[#{id}]", ""]
  771.     return Dictionary::DictData.new(id, data)
  772.   end
  773.   #--------------------------------------------------------------------------
  774.   # ● アイテム情報の自動生成
  775.   #--------------------------------------------------------------------------
  776.   def self.create_item(id)
  777.     data = ["\\t[#{id}]", "\\t[#{id}]", nil, item_text(id)]
  778.     return Dictionary::DictData.new(id, data)
  779.   end
  780.   #--------------------------------------------------------------------------
  781.   # ● 武器情報の自動生成
  782.   #--------------------------------------------------------------------------
  783.   def self.create_weapon(id)
  784.     data = ["\\w[#{id}]", "\\w[#{id}]", nil, weapon_text(id)]
  785.     return Dictionary::DictData.new(id, data)
  786.   end
  787.   #--------------------------------------------------------------------------
  788.   # ● 防具情報の自動生成
  789.   #--------------------------------------------------------------------------
  790.   def self.create_armor(id)
  791.     data = ["\\a[#{id}]", "\\a[#{id}]", nil, armor_text(id)]
  792.     return Dictionary::DictData.new(id, data)
  793.   end
  794.   #--------------------------------------------------------------------------
  795.   # ● スキル情報の自動生成
  796.   #--------------------------------------------------------------------------
  797.   def self.create_skill(id)
  798.     data = ["\\s[#{id}]", "\\s[#{id}]", nil, skill_text(id)]
  799.     return Dictionary::DictData.new(id, data)
  800.   end
  801.   #--------------------------------------------------------------------------
  802.   # ● クラス情報の自動生成
  803.   #--------------------------------------------------------------------------
  804.   def self.create_class(id)
  805.     data = ["\\J[#{id}]", "\\j[#{id}]", nil, class_text(id)]
  806.     return Dictionary::DictData.new(id, data)
  807.   end
  808.   #--------------------------------------------------------------------------
  809.   # ● 場所情報の自動生成
  810.   #--------------------------------------------------------------------------
  811.   def self.create_town(id)
  812.     unless defined?(WorldMap)
  813.       p "Error : can't use ATC_TOWN [WorldMapが定義されてません]";exit
  814.     end
  815.     region_id = id / 1000
  816.     town_id   = (id % 1000) - 1
  817.     if town_id < 0 # リージョン情報
  818.       region = $game_system.worldmap[region_id]
  819.       data = [region.region_name, "地域", nil, region.region_info, region.visible]
  820.     else # タウン情報
  821.       town = $game_system.worldmap[region_id][town_id]
  822.       data = [town.town_name, "場所", nil, town.town_info, town.visible]
  823.     end
  824.     return Dictionary::DictData.new(id, data)
  825.   end
  826.   #--------------------------------------------------------------------------
  827.   # ● クエスト情報の自動生成
  828.   #--------------------------------------------------------------------------
  829.   def self.create_quest(id)
  830.     unless defined?(Quest)
  831.       p "Error : can't use ATC_QUEST [QuestSystemが定義されてません]";exit
  832.     end
  833.     data = ["#{$game_system.quest[id].name}", "", nil, Quest.conv_text($game_system.quest[id].text)]
  834.     return Dictionary::DictData.new(id, data)
  835.   end
  836. end





  837. module DictAutoCreate
  838.   #--------------------------------------------------------------------------
  839.   # ● Plugin-自動生成(用語ID)
  840.   #--------------------------------------------------------------------------
  841.   def self.plugin_auto_ids(type)
  842.     ids = []
  843.     case type
  844.     when ATC_ACTOR        # アクターの自動生成
  845.       $data_actors.each do |d|
  846.         next if d.nil? or ACT_NOT_SHOW.include?(d.id)
  847.         ids.push(d.id)
  848.       end
  849.     when ATC_ENEMY, ATC_ENEMY_A   # エネミーの自動生成
  850.       $data_enemies.each do |d|
  851.         next if d.nil? or ENM_NOT_SHOW.include?(d.id)
  852.         ids.push(d.id)
  853.       end
  854.     when ATC_ITEM         # アイテムの自動生成
  855.       $data_items.each do |d|
  856.         next if d.nil? or ITM_NOT_SHOW.include?(d.id)
  857.         ids.push(d.id)
  858.       end
  859.     when ATC_WEAPON       # 武器の自動生成
  860.       $data_weapons.each do |d|
  861.         next if d.nil? or WPN_NOT_SHOW.include?(d.id)
  862.         ids.push(d.id)
  863.       end
  864.     when ATC_ARMOR_ALL    # 防具(全て)の自動生成
  865.       $data_armors.each do |d|
  866.         next if d.nil? or ARM_NOT_SHOW.include?(d.id)
  867.         ids.push(d.id)
  868.       end
  869.     when ATC_ARMOR_S      # 防具(盾のみ)の自動生成
  870.       $data_armors.each do |d|
  871.         next if d.nil? or ARM_NOT_SHOW.include?(d.id)
  872.         next if $data_armors[i].kind != 0 # 盾
  873.         ids.push(d.id)
  874.       end
  875.     when ATC_ARMOR_H      # 防具(頭防具のみ)の自動生成
  876.       $data_armors.each do |d|
  877.         next if d.nil? or ARM_NOT_SHOW.include?(d.id)
  878.         next if $data_armors[i].kind != 1 # 頭防具
  879.         ids.push(d.id)
  880.       end
  881.     when ATC_ARMOR_C      # 防具(身体防具のみ)の自動生成
  882.       $data_armors.each do |d|
  883.         next if d.nil? or ARM_NOT_SHOW.include?(d.id)
  884.         next if $data_armors[i].kind != 2 # 身体防具
  885.         ids.push(d.id)
  886.       end
  887.     when ATC_ARMOR_A      # 防具(装飾品のみ)の自動生成
  888.       $data_armors.each do |d|
  889.         next if d.nil? or ARM_NOT_SHOW.include?(d.id)
  890.         next if $data_armors[i].kind != 3 # 装飾品
  891.         ids.push(d.id)
  892.       end
  893.     when ATC_SKILL        # スキルの自動生成
  894.       $data_skills.each do |d|
  895.         next if d.nil? or SKL_NOT_SHOW.include?(d.id)
  896.         ids.push(d.id)
  897.       end
  898.     when ATC_CLASS        # クラスの自動生成
  899.       $data_classes.each do |d|
  900.         next if d.nil? or CLS_NOT_SHOW.include?(d.id)
  901.         ids.push(d.id)
  902.       end
  903.     when ATC_TOWN         # 場所の自動生成
  904.       if defined?(WorldMap)
  905.         WorldMap::REGION.keys.sort.each do |region_id|
  906.           i = self.conv_region_id(region_id)
  907.           next if TWN_NOT_SHOW.include?(i)
  908.           ids.push(i)
  909.           WorldMap::REGION[region_id][WorldMap::R_TOWN].keys.sort.each do |town_id|
  910.             i = self.conv_town_id(region_id, town_id)
  911.             next if TWN_NOT_SHOW.include?(i)
  912.             ids.push(i)
  913.           end
  914.         end
  915.       else
  916.         p "WorldMapがありません。";   exit
  917.       end
  918.     when ATC_QUEST        # クエストの自動生成
  919.       if defined?(Quest)
  920.         Quest::QUEST.keys.sort.each do |i|
  921.           next if QST_NOT_SHOW.include?(i)
  922.           ids.push(i)
  923.         end
  924.       else
  925.         p "QuestSystemがありません。";   exit
  926.       end
  927.     else
  928.       p "[PluginAutoCreate] ATC_XXXの指定が間違ってます >>#{type}"
  929.     end
  930.     return ids
  931.   end
  932.   #--------------------------------------------------------------------------
  933.   # ● ATC_TOWN  : リージョンID -> 用語ID変換
  934.   #--------------------------------------------------------------------------
  935.   def self.conv_region_id(region_id)
  936.     if defined?(WorldMap)
  937.       return (region_id * 1000)
  938.     else
  939.       p "WorldMapがありません。";   exit
  940.     end
  941.   end
  942.   #--------------------------------------------------------------------------
  943.   # ● ATC_TOWN  : タウンID -> 用語ID変換
  944.   #--------------------------------------------------------------------------
  945.   def self.conv_town_id(region_id, town_id)
  946.     if defined?(WorldMap)
  947.       return (self.conv_region_id(region_id) + town_id + 1)
  948.     else
  949.       p "WorldMapがありません。";   exit
  950.     end
  951.   end
  952.   #--------------------------------------------------------------------------
  953.   # ● Plugin-自動生成(用語データ)
  954.   #--------------------------------------------------------------------------
  955.   def self.plugin_auto_create(type, id)
  956.     case type
  957.     when ATC_ACTOR        # アクターの自動生成
  958.       return DictAutoCreate.create_actor(id)
  959.     when ATC_ENEMY        # エネミーの自動生成
  960.       return DictAutoCreate.create_enemy(id)
  961.     when ATC_ENEMY_A      # エネミー(アナライズ用)の自動生成
  962.       return DictAutoCreate.create_enemy_analize(id)
  963.     when ATC_ITEM         # アイテムの自動生成
  964.       return DictAutoCreate.create_item(id)
  965.     when ATC_WEAPON       # 武器の自動生成
  966.       return DictAutoCreate.create_weapon(id)
  967.     when ATC_ARMOR_ALL    # 防具(全て)の自動生成
  968.       return DictAutoCreate.create_armor(id)
  969.     when ATC_ARMOR_S      # 防具(盾のみ)の自動生成
  970.       return DictAutoCreate.create_armor(id)
  971.     when ATC_ARMOR_H      # 防具(頭防具のみ)の自動生成
  972.       return DictAutoCreate.create_armor(id)
  973.     when ATC_ARMOR_C      # 防具(身体防具のみ)の自動生成
  974.       return DictAutoCreate.create_armor(id)
  975.     when ATC_ARMOR_A      # 防具(装飾品のみ)の自動生成
  976.       return DictAutoCreate.create_armor(id)
  977.     when ATC_SKILL        # スキルの自動生成
  978.       return DictAutoCreate.create_skill(id)
  979.     when ATC_CLASS        # クラスの自動生成
  980.       return DictAutoCreate.create_class(id)
  981.     when ATC_TOWN         # 場所の自動生成
  982.       return DictAutoCreate.create_town(id)
  983.     when ATC_QUEST        # クエストの自動生成
  984.       return DictAutoCreate.create_quest(id)
  985.     else
  986.       p "[PluginAutoCreate] ATC_XXXの指定が間違ってます >>#{type}"
  987.       exit
  988.     end
  989.   end
  990. end
复制代码
复制的有问题。这个试试。
"xxx"给复制成xxx啥的囧
作者: 布里蓝    时间: 2012-10-14 14:33
feizhaodan 发表于 2012-10-14 14:19
复制的有问题。这个试试。
"xxx"给复制成xxx啥的囧

谢谢,真的可以了
(看来以后不能把脚本复制到TXT里保存了……)




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1