设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 1711|回复: 2
打印 上一主题 下一主题

[已经解决] 脚本微调

[复制链接]

Lv2.观梦者

梦石
0
星屑
836
在线时间
159 小时
注册时间
2012-6-3
帖子
124
跳转到指定楼层
1
发表于 2014-8-18 18:11:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
还是这个脚本啦
这边32到56的部分是计算cp值的,装备的技能数量和基础CP是定值,然后随等级成长
我希望这两个数值可以调用变量,这样方便在游戏流程中变化
但是直接使用"$game_variables[42]"或者$game_variables[42]都不行……
RUBY 代码复制
  1. #_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
  2. #_/    ◆ スキルCP制 - KGC_SkillCPSystem ◆ VX Ace ◆
  3. #_/    ◇ Last update : 2009/09/13 ◇
  4. #_/----------------------------------------------------------------------------
  5. #_/  戦闘中に使用可能なスキルを限定する機能を追加します。
  6. #_/============================================================================
  7. #_/ 【装備】≪スキル習得装備≫ より下に導入してください。
  8. #_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
  9. #==============================================================================
  10. #    ☆VXAce RGSS3 「スキルCP制」☆
  11. #      EnDlEss DREamER
  12. #     URL:[url]http://mitsu-evo.6.ql.bz/[/url]
  13. #     製作者 mitsu-evo
  14. #     Last:2014/5/8
  15. #   KGC様のスキルCP制RGSS3移植版
  16. #     ▼ 素材よりも下に。
  17. #==============================================================================
  18. =begin
  19. 5/8:ステータス画面のCPゲージ位置を修正。
  20. メニューコマンドからの挙動を修正。
  21.  
  22.  
  23.  
  24. =end
  25. #==============================================================================
  26. # ★ カスタマイズ項目 - Customize ★
  27. #==============================================================================
  28.  
  29. module KGC
  30. module SkillCPSystem
  31.   # ◆ 登録スキル最大数
  32.   MAX_SKILLS = 9
  33.   # ◆ CP の名称
  34.   VOCAB_CP   = "CP"
  35.   # ◆ CP の名称 (略)
  36.   VOCAB_CP_A = "C"
  37.   # ◆ ステータス画面に CP を表示する
  38.   SHOW_STATUS_CP = true
  39.  
  40.   # ◆ 消費 CP 既定値
  41.   #  消費 CP 未指定のスキルで使用。
  42.   DEFAULT_CP_COST = 1
  43.   # ◆ CP 上限
  44.   #  (固有 CP などを除いた) 素の状態での CP 上限。
  45.   CP_MAX = 15
  46.   # ◆ CP 下限
  47.   CP_MIN = 1
  48.   # ◆ 補正後の CP 上限
  49.   #  固有 CP や装備品による変動を含めた上限。
  50.   REVISED_CP_MAX = 20
  51.   # ◆ 補正後の CP 下限
  52.   REVISED_CP_MIN = 0
  53.   # ◆ 最大 CP 算出式
  54.   #   level..現在のレベル
  55.   #  自動的に整数変換するので、結果が小数になってもOK。
  56.   CP_CALC_EXP = "level * 0.6 + 1.0"
  57.   # ◆ アクター毎の最大 CP 算出式
  58.   PERSONAL_CP_CALC_EXP = []
  59.   #  ここから下に、アクターごとの最大 CP を
  60.   #   PERSONAL_CP_CALC_EXP[アクター ID] = "計算式"
  61.   #  という書式で指定。
  62.   #  計算式は CP_CALC_EXP と同様の書式。
  63.   #  指定しなかったアクターは CP_CALC_EXP を使用。
  64.   #   <例> ラルフだけ優遇
  65.   # PERSONAL_CP_CALC_EXP[1] = "level * 0.8 + 2.0"
  66.  
  67.   # ◆ 戦闘テスト時は無効化
  68.   #  true  : 戦闘テスト時は全スキルを使用可能。
  69.   #  false : 戦闘テスト時は (セットしない限り) 使用不可。
  70.   DISABLE_IN_BATTLETEST  = true
  71.   # ◆ 使用不可スキルもセット可能
  72.   SHOW_UNUSABLE_SKILL    = true
  73.   # ◆ 消費 CP 0 のスキルはセットしなくても使用可能
  74.   USABLE_COST_ZERO_SKILL = true
  75.   # ◆ パッシブスキルはセットしないと効果なし
  76.   #  ≪パッシブスキル≫ 導入時のみ有効。
  77.   PASSIVE_NEED_TO_SET    = true
  78.   # ◆ 新規習得スキルを自動的にセット
  79.   #  true  : 習得したスキルを空きスロットにセット。
  80.   #           ※ ≪スキル習得装備≫ で習得したスキルは無効。
  81.   #  false : 習得しただけではセットされない (手動でセット)。
  82.   AUTO_SET_NEW_SKILL     = true
  83.   # ◆ 消費 CP 0 の場合も消費 CP を表示する
  84.   #  true  : 消費 CP 0 でも表示
  85.   #  false : 消費 CP 1 以上の場合のみ表示
  86.   SHOW_ZERO_COST         = false
  87.  
  88.   # ◆ CP ゲージの色
  89.   #  数値  : \C[n] と同じ色。
  90.   #  Color : 指定した色。 ( Color.new(255, 128, 128) など )
  91.   GAUGE_START_COLOR = 13  # 開始色
  92.   GAUGE_END_COLOR   =  5  # 終了色
  93.  
  94.   # ◆ CP ゲージに汎用ゲージを使用する
  95.   #  ≪汎用ゲージ描画≫ 導入時のみ有効。
  96.   ENABLE_GENERIC_GAUGE = true
  97.   # ◆ CP ゲージ設定
  98.   #  画像は "Graphics/System" から読み込む。
  99.   GAUGE_IMAGE  = "GaugeCP"  # 画像
  100.   GAUGE_OFFSET = [-23, -2]  # 位置補正 [x, y]
  101.   GAUGE_LENGTH = -4         # 長さ補正
  102.   GAUGE_SLOPE  = 30         # 傾き (-89 ~ 89)
  103.  
  104.   # ◆ メニュー画面に「スキル設定」コマンドを追加する
  105.   #  追加する場所は、メニューコマンドの最下部です。
  106.   #  他の部分に追加したければ、≪カスタムメニューコマンド≫ をご利用ください。
  107.   USE_MENU_SET_SKILL_COMMAND = true
  108.   # ◆ メニュー画面の「スキル設定」コマンドの名称
  109.   VOCAB_MENU_SET_SKILL       = "スキル設定"
  110.  
  111.   # ◆ 未設定項目の表示文字列
  112.   BLANK_TEXT   = "-  EMPTY  -"
  113.   # ◆ 設定解除の表示文字列
  114.   RELEASE_TEXT = "( 設定解除 )"
  115. end
  116. end
  117.  
  118. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
  119.  
  120. $imported = {} if $imported == nil
  121. $imported["SkillCPSystem"] = true
  122.  
  123. module KGC::SkillCPSystem
  124.   module Regexp
  125.     module BaseItem
  126.       # 最大 CP
  127.       MAXCP_PLUS = /<(?:MAX|最大)CP\s*([\-\+]?\d+)>/
  128.       # 登録スキル数
  129.       BATTLE_SKILL_MAX = /<(?:BATTLE_SKILL_MAX|登録スキル数)\s*([\-\+]?\d+)>/i
  130.     end
  131.  
  132.     module Skill
  133.       # 消費 CP
  134.       CP_COST = /<CP\s*(\d+)>/i
  135.       # 同時セット不可
  136.       EXCLUDE = /<(?:EXCLUDE|同時セット不可)\s*(\d+(?:\s*,\s*\d+)*)>/
  137.     end
  138.   end
  139. end
  140.  
  141. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
  142.  
  143. #==============================================================================
  144. # □ KGC::Commands
  145. #==============================================================================
  146.  
  147. module KGC
  148. module Commands
  149.   module_function
  150.   #--------------------------------------------------------------------------
  151.   # ○ MaxCP 補正値の取得
  152.   #     actor_id    : アクター ID
  153.   #     variable_id : 取得した値を代入する変数の ID
  154.   #--------------------------------------------------------------------------
  155.   def get_actor_own_cp(actor_id, variable_id = 0)
  156.     value = $game_actors[actor_id].maxcp_plus
  157.     $game_variables[variable_id] = value if variable_id > 0
  158.     return value
  159.   end
  160.   alias get_own_cp get_actor_own_cp
  161.   #--------------------------------------------------------------------------
  162.   # ○ MaxCP 補正値の変更
  163.   #     actor_id : アクター ID
  164.   #     value    : MaxCP 補正値
  165.   #--------------------------------------------------------------------------
  166.   def set_actor_own_cp(actor_id, value)
  167.     $game_actors[actor_id].maxcp_plus = value
  168.   end
  169.   alias set_own_cp set_actor_own_cp
  170.   #--------------------------------------------------------------------------
  171.   # ○ アクターの MaxCP 補正値の増加
  172.   #     actor_id : アクター ID
  173.   #     value    : 増加量
  174.   #--------------------------------------------------------------------------
  175.   def gain_actor_cp(actor_id, value)
  176.     $game_actors[actor_id].maxcp_plus += value
  177.   end
  178.   #--------------------------------------------------------------------------
  179.   # ○ 登録スキル最大数の取得
  180.   #     actor_id : アクター ID
  181.   #     variable_id : 取得した値を代入する変数の ID
  182.   #--------------------------------------------------------------------------
  183.   def get_battle_skill_max(actor_id, variable_id = 0)
  184.     value = $game_actors[actor_id].battle_skill_max
  185.     $game_variables[variable_id] = value if variable_id > 0
  186.     return value
  187.   end
  188.   #--------------------------------------------------------------------------
  189.   # ○ 登録スキル最大数の変更
  190.   #     actor_id : アクター ID
  191.   #     value    : 登録可能数
  192.   #--------------------------------------------------------------------------
  193.   def set_battle_skill_max(actor_id, value = -1)
  194.     $game_actors[actor_id].battle_skill_max = value
  195.   end
  196.   #--------------------------------------------------------------------------
  197.   # ○ スキルが登録されているか
  198.   #     actor_id : アクター ID
  199.   #     skill_id : 確認するスキル ID
  200.   #--------------------------------------------------------------------------
  201.   def battle_skill_set?(actor_id, skill_id)
  202.     return $game_actors[actor_id].battle_skill_ids.include?(skill_id)
  203.   end
  204.   #--------------------------------------------------------------------------
  205.   # ○ スキルの登録
  206.   #     actor_id : アクター ID
  207.   #     index    : 登録箇所
  208.   #     skill_id : 登録するスキル ID (nil で解除)
  209.   #--------------------------------------------------------------------------
  210.   def set_battle_skill(actor_id, index, skill_id = nil)
  211.     actor = $game_actors[actor_id]
  212.     if skill_id.is_a?(Integer)
  213.       # 登録
  214.       skill = $data_skills[skill_id]
  215.       return unless actor.battle_skill_settable?(index, skill)  # セット不可
  216.  
  217.       actor.set_battle_skill(index, skill)
  218.       actor.restore_battle_skill
  219.     else
  220.       # 解除
  221.       actor.remove_battle_skill(index)
  222.     end
  223.   end
  224.   #--------------------------------------------------------------------------
  225.   # ○ スキルの追加登録
  226.   #     actor_id : アクター ID
  227.   #     skill_id : 登録するスキル ID
  228.   #--------------------------------------------------------------------------
  229.   def add_battle_skill(actor_id, skill_id)
  230.     actor = $game_actors[actor_id]
  231.     skill = $data_skills[skill_id]
  232.     return if actor == nil || skill == nil
  233.  
  234.     actor.add_battle_skill(skill)
  235.   end
  236.   #--------------------------------------------------------------------------
  237.   # ○ スキルの全解除
  238.   #     actor_id : アクター ID
  239.   #--------------------------------------------------------------------------
  240.   def clear_battle_skill(actor_id)
  241.     $game_actors[actor_id].clear_battle_skill
  242.   end
  243.   #--------------------------------------------------------------------------
  244.   # ○ スキル設定画面の呼び出し
  245.   #     actor_index : アクターインデックス
  246.   #--------------------------------------------------------------------------
  247.   def call_set_battle_skill(actor_index = 0)
  248.     #return if $game_party.in_battle
  249.     #$game_temp.next_scene = :set_battle_skill
  250.     #$game_temp.next_scene_actor_index = actor_index
  251.     SceneManager.call(Scene_SetBattleSkill)
  252.     Fiber.yield
  253.   end
  254. end
  255. end
  256.  
  257. class Game_Interpreter
  258.   include KGC::Commands
  259. end
  260.  
  261. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
  262.  
  263. #==============================================================================
  264. # ■ Vocab
  265. #==============================================================================
  266.  
  267. module Vocab
  268.   # CP
  269.   def self.cp
  270.     return KGC::SkillCPSystem::VOCAB_CP
  271.   end
  272.  
  273.   # CP (略)
  274.   def self.cp_a
  275.     return KGC::SkillCPSystem::VOCAB_CP_A
  276.   end
  277.  
  278.   # スキル設定
  279.   def self.set_battle_skill
  280.     return KGC::SkillCPSystem::VOCAB_MENU_SET_SKILL
  281.   end
  282. end
  283.  
  284. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
  285.  
  286. #==============================================================================
  287. # ■ RPG::BaseItem
  288. #==============================================================================
  289.  
  290. class RPG::BaseItem
  291.   #--------------------------------------------------------------------------
  292.   # ○ スキルCP制のキャッシュを生成
  293.   #--------------------------------------------------------------------------
  294.   def create_skill_cp_system_cache
  295.     @__maxcp_plus = 0
  296.     @__battle_skill_max_plus = 0
  297.  
  298.     self.note.each_line { |line|
  299.       case line
  300.       when KGC::SkillCPSystem::Regexp::BaseItem::MAXCP_PLUS
  301.         # 最大 CP
  302.         @__maxcp_plus += $1.to_i
  303.       when KGC::SkillCPSystem::Regexp::BaseItem::BATTLE_SKILL_MAX
  304.         # 登録スキル数
  305.         @__battle_skill_max_plus += $1.to_i
  306.       end
  307.     }
  308.   end
  309.   #--------------------------------------------------------------------------
  310.   # ○ 最大 CP 補正
  311.   #--------------------------------------------------------------------------
  312.   def maxcp_plus
  313.     create_skill_cp_system_cache if @__maxcp_plus == nil
  314.     return @__maxcp_plus
  315.   end
  316.   #--------------------------------------------------------------------------
  317.   # ○ 登録スキル数補正
  318.   #--------------------------------------------------------------------------
  319.   def battle_skill_max_plus
  320.     create_skill_cp_system_cache if @__battle_skill_max_plus == nil
  321.     return @__battle_skill_max_plus
  322.   end
  323. end
  324.  
  325. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
  326.  
  327. #==============================================================================
  328. # ■ RPG::Skill
  329. #==============================================================================
  330.  
  331. class RPG::Skill < RPG::UsableItem
  332.   #--------------------------------------------------------------------------
  333.   # ○ スキルCP制のキャッシュを生成
  334.   #--------------------------------------------------------------------------
  335.   def create_skill_cp_system_cache
  336.     @__cp_cost = KGC::SkillCPSystem::DEFAULT_CP_COST
  337.     # 攻撃・防御設定スキルならコスト0
  338.     @__cp_cost = 0 if @id == 1 or @id == 2
  339.     @__excluded_skills = []
  340.  
  341.     self.note.each_line { |line|
  342.       case line
  343.       when KGC::SkillCPSystem::Regexp::Skill::CP_COST
  344.         # 消費 CP
  345.         @__cp_cost = $1.to_i
  346.       when KGC::SkillCPSystem::Regexp::Skill::EXCLUDE
  347.         # 同時セット不可
  348.         $1.scan(/\d+/).each { |num| @__excluded_skills << num.to_i }
  349.         @__excluded_skills.uniq!
  350.       end
  351.     }
  352.   end
  353.   #--------------------------------------------------------------------------
  354.   # ○ 消費 CP
  355.   #--------------------------------------------------------------------------
  356.   def cp_cost
  357.     create_skill_cp_system_cache if @__cp_cost == nil
  358.     return @__cp_cost
  359.   end
  360.   #--------------------------------------------------------------------------
  361.   # ○ 同時セット不可
  362.   #--------------------------------------------------------------------------
  363.   def excluded_skills
  364.     create_skill_cp_system_cache if @__excluded_skills == nil
  365.     return @__excluded_skills
  366.   end
  367. end
  368.  
  369. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
  370.  
  371. #==============================================================================
  372. # ■ Game_Battler
  373. #==============================================================================
  374.  
  375. class Game_Battler
  376.   #--------------------------------------------------------------------------
  377.   # ○ 戦闘用スキルセット済み判定
  378.   #     skill : スキル
  379.   #--------------------------------------------------------------------------
  380.   def battle_skill_set?(skill)
  381.     return true
  382.   end
  383. end
  384.  
  385. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
  386.  
  387. #==============================================================================
  388. # ■ Game_Actor
  389. #==============================================================================
  390.  
  391. class Game_Actor < Game_Battler
  392.   #--------------------------------------------------------------------------
  393.   # ● 公開インスタンス変数
  394.   #--------------------------------------------------------------------------
  395.   attr_writer   :maxcp_plus               # MaxCP 補正値
  396.   #--------------------------------------------------------------------------
  397.   # ○ MaxCP 取得
  398.   #--------------------------------------------------------------------------
  399.   def maxcp
  400.     calc_exp = KGC::SkillCPSystem::PERSONAL_CP_CALC_EXP[self.id]
  401.     if calc_exp == nil
  402.       calc_exp = KGC::SkillCPSystem::CP_CALC_EXP
  403.     end
  404.     n = Integer(eval(calc_exp))
  405.     n = [[n, cp_limit].min, KGC::SkillCPSystem::CP_MIN].max
  406.     n += maxcp_plus + maxcp_plus_equip
  407.     return [[n, revised_cp_limit].min, KGC::SkillCPSystem::REVISED_CP_MIN].max
  408.   end
  409.   #--------------------------------------------------------------------------
  410.   # ○ CP 取得
  411.   #--------------------------------------------------------------------------
  412.   def cp
  413.     return [maxcp - consumed_cp, 0].max
  414.   end
  415.   #--------------------------------------------------------------------------
  416.   # ○ CP 消費量取得
  417.   #--------------------------------------------------------------------------
  418.   def consumed_cp
  419.     n = 0
  420.     battle_skills.compact.each { |skill| n += skill.cp_cost }
  421.     return n
  422.   end
  423.   #--------------------------------------------------------------------------
  424.   # ○ CP 上限取得
  425.   #--------------------------------------------------------------------------
  426.   def cp_limit
  427.     return KGC::SkillCPSystem::CP_MAX
  428.   end
  429.   #--------------------------------------------------------------------------
  430.   # ○ 補正後の CP 上限取得
  431.   #--------------------------------------------------------------------------
  432.   def revised_cp_limit
  433.     return KGC::SkillCPSystem::REVISED_CP_MAX
  434.   end
  435.   #--------------------------------------------------------------------------
  436.   # ○ MaxCP 補正値取得
  437.   #--------------------------------------------------------------------------
  438.   def maxcp_plus
  439.     if @maxcp_plus == nil
  440.       if @own_cp != nil
  441.         @maxcp_plus = @own_cp
  442.         @own_cp = nil
  443.       else
  444.         @maxcp_plus = 0
  445.       end
  446.     end
  447.     return @maxcp_plus
  448.   end
  449.   #--------------------------------------------------------------------------
  450.   # ○ 装備品による MaxCP 補正値取得
  451.   #--------------------------------------------------------------------------
  452.   def maxcp_plus_equip
  453.     n = 0
  454.     equips.compact.each { |item| n += item.maxcp_plus }
  455.     return n
  456.   end
  457.   #--------------------------------------------------------------------------
  458.   # ● スキル取得
  459.   #--------------------------------------------------------------------------
  460.   alias skills_KGC_SkillCPSystem skills
  461.   def skills
  462.     return (skill_cp_restrict? ? restricted_skills : skills_KGC_SkillCPSystem)
  463.   end
  464.   #--------------------------------------------------------------------------
  465.   # ● スキルの習得済み判定
  466.   #--------------------------------------------------------------------------
  467.   def skill_learn?(skill)
  468.     skill.is_a?(RPG::Skill) && @skills.include?(skill.id)
  469.   end
  470.   #--------------------------------------------------------------------------
  471.   # ○ スキルを制限するか
  472.   #--------------------------------------------------------------------------
  473.   def skill_cp_restrict?
  474.     if $game_party.in_battle
  475.       # 戦闘テストでないか、戦闘テストでも制限する場合
  476.       return true unless $BTEST && KGC::SkillCPSystem::DISABLE_IN_BATTLETEST
  477.     end
  478.  
  479.     return false
  480.   end
  481.   #--------------------------------------------------------------------------
  482.   # ○ スキルを制限
  483.   #--------------------------------------------------------------------------
  484.   def restricted_skills
  485.     result = all_skills
  486.     result.each_with_index { |skill, i|
  487.       # 消費 CP > 0 のスキルを除外
  488.       if !KGC::SkillCPSystem::USABLE_COST_ZERO_SKILL || skill.cp_cost > 0
  489.         result[i] = nil
  490.       end
  491.       # パッシブスキルを除外
  492.       if $imported["PassiveSkill"] && KGC::SkillCPSystem::PASSIVE_NEED_TO_SET
  493.         if skill.passive &&
  494.             (!KGC::SkillCPSystem::USABLE_COST_ZERO_SKILL || skill.cp_cost > 0)
  495.           result[i] = nil
  496.         end
  497.       end
  498.     }
  499.     result.compact!
  500.     # 戦闘スキルを追加
  501.     result |= battle_skills
  502.     result.sort! { |a, b| a.id <=> b.id }
  503.     return result
  504.   end
  505.   #--------------------------------------------------------------------------
  506.   # ○ 全スキル取得
  507.   #--------------------------------------------------------------------------
  508.   def all_skills
  509.     # 一時的に非戦闘中にする
  510.     #last_in_battle = $game_party.in_battle
  511.     #$game_party.on_battle_end
  512.  
  513.     result = skills_KGC_SkillCPSystem
  514.     if $imported["EquipLearnSkill"]
  515.       result |= (equipment_skills | full_ap_skills)
  516.       result.sort! { |a, b| a.id <=> b.id }
  517.     end
  518.  
  519.     # 戦闘中フラグを戻す
  520.     #$game_party.on_battle_start#in_battle = last_in_battle
  521.  
  522.     return result
  523.   end
  524.  
  525.   #--------------------------------------------------------------------------
  526.   # ○ 登録スキル最大数取得
  527.   #--------------------------------------------------------------------------
  528.   def battle_skill_max
  529.     @battle_skill_max = -1 if @battle_skill_max == nil
  530.     n = (@battle_skill_max < 0 ?
  531.       KGC::SkillCPSystem::MAX_SKILLS : @battle_skill_max)
  532.     n += equipment_battle_skill_max_plus
  533.     return [n, 0].max
  534.   end
  535.   #--------------------------------------------------------------------------
  536.   # ○ 装備品による登録スキル数補正
  537.   #--------------------------------------------------------------------------
  538.   def equipment_battle_skill_max_plus
  539.     n = 0
  540.     equips.compact.each { |item| n += item.battle_skill_max_plus }
  541.     return n
  542.   end
  543.   #--------------------------------------------------------------------------
  544.   # ○ 登録スキル最大数設定
  545.   #--------------------------------------------------------------------------
  546.   def battle_skill_max=(value)
  547.     @battle_skill_max = value
  548.     if @battle_skills == nil
  549.       @battle_skills = []
  550.     else
  551.       @battle_skills = @battle_skills[0...value]
  552.     end
  553.     restore_passive_rev if $imported["PassiveSkill"]
  554.   end
  555.   #--------------------------------------------------------------------------
  556.   # ○ 戦闘用スキル ID 取得
  557.   #--------------------------------------------------------------------------
  558.   def battle_skill_ids
  559.     @battle_skills = [] if @battle_skills == nil
  560.     return @battle_skills
  561.   end
  562.   #--------------------------------------------------------------------------
  563.   # ○ 戦闘用スキル取得
  564.   #--------------------------------------------------------------------------
  565.   def battle_skills
  566.     result = []
  567.     battle_skill_ids.each { |i|
  568.       next if i == nil           # 無効なスキルは無視
  569.       result << $data_skills[i]
  570.     }
  571.     return result
  572.   end
  573.   #--------------------------------------------------------------------------
  574.   # ○ 戦闘用スキル登録
  575.   #     index : 位置
  576.   #     skill : スキル (nil で解除)
  577.   #--------------------------------------------------------------------------
  578.   def set_battle_skill(index, skill)
  579.     if skill == nil
  580.       @battle_skills[index] = nil
  581.     else
  582.       return unless skill.is_a?(RPG::Skill)  # スキル以外
  583.       return if cp < skill.cp_cost           # CP 不足
  584.       if KGC::SkillCPSystem::USABLE_COST_ZERO_SKILL && skill.cp_cost == 0
  585.         return
  586.       end
  587.  
  588.       @battle_skills[index] = skill.id
  589.     end
  590.     restore_passive_rev if $imported["PassiveSkill"]
  591.   end
  592.   #--------------------------------------------------------------------------
  593.   # ○ 戦闘用スキル追加登録
  594.   #     skill : スキル
  595.   #--------------------------------------------------------------------------
  596.   def add_battle_skill(skill)
  597.     return unless skill.is_a?(RPG::Skill)  # スキル以外
  598.     skills = battle_skill_ids
  599.     return if skills.include?(skill.id)    # 登録済み
  600.     return if cp < skill.cp_cost           # CP 不足
  601.     return if KGC::SkillCPSystem::USABLE_COST_ZERO_SKILL && skill.cp_cost == 0
  602.  
  603.     battle_skill_max.times { |i|
  604.       # 空きがあれば登録
  605.       if skills[i] == nil
  606.         set_battle_skill(i, skill)
  607.         break
  608.       end
  609.     }
  610.     restore_battle_skill
  611.   end
  612.   #--------------------------------------------------------------------------
  613.   # ○ 戦闘用スキル解除
  614.   #     index : 位置
  615.   #--------------------------------------------------------------------------
  616.   def remove_battle_skill(index)
  617.     @battle_skills[index] = nil
  618.     restore_passive_rev if $imported["PassiveSkill"]
  619.   end
  620.   #--------------------------------------------------------------------------
  621.   # ○ 戦闘用スキル全解除
  622.   #--------------------------------------------------------------------------
  623.   def clear_battle_skill
  624.     @battle_skills = []
  625.     restore_passive_rev if $imported["PassiveSkill"]
  626.   end
  627.   #--------------------------------------------------------------------------
  628.   # ○ 戦闘用スキルセット可否判定
  629.   #     index : 位置
  630.   #     skill : スキル
  631.   #--------------------------------------------------------------------------
  632.   def battle_skill_settable?(index, skill)
  633.     return false if battle_skill_max <= index  # 範囲外
  634.     return true  if skill == nil               # nil は解除なので OK
  635.  
  636.     return false if battle_skill_ids.include?(skill.id)  # セット済み
  637.  
  638.     curr_skill_id = battle_skill_ids[index]
  639.     curr_skill    = (curr_skill_id != nil ? $data_skills[curr_skill_id] : nil)
  640.  
  641.     # 同時セット不可
  642.     excluded  = excluded_battle_skill_ids
  643.     excluded -= curr_skill.excluded_skills if curr_skill != nil
  644.     return false if excluded.include?(skill.id)
  645.  
  646.     offset = (curr_skill != nil ? curr_skill.cp_cost : 0)
  647.     return false if self.cp < (skill.cp_cost - offset)  # CP 不足
  648.  
  649.     return true
  650.   end
  651.   #--------------------------------------------------------------------------
  652.   # ○ Exclude スキル ID 取得
  653.   #--------------------------------------------------------------------------
  654.   def excluded_battle_skill_ids
  655.     result = []
  656.     battle_skills.each { |skill| result |= skill.excluded_skills }
  657.     return result
  658.   end
  659.   #--------------------------------------------------------------------------
  660.   # ○ 戦闘用スキルを修復
  661.   #--------------------------------------------------------------------------
  662.   def restore_battle_skill
  663.     return
  664. =begin
  665.     result = battle_skill_ids.clone
  666.     usable_skills = all_skills
  667.  
  668.     result.each_with_index { |n, i|
  669.       next if n == nil
  670.       # 未修得の場合は解除
  671.       if (usable_skills.find { |s| s.id == n }) == nil
  672.         result[i] = nil
  673.       end
  674.     }
  675.     @battle_skills = result[0...battle_skill_max]
  676.     # CP 不足のスキルを下から順に外す
  677.     (battle_skill_max - 1).downto(0) { |i|
  678.       @battle_skills[i] = nil if maxcp - consumed_cp < 0
  679.     }
  680. =end
  681.   end
  682.   #--------------------------------------------------------------------------
  683.   # ● 装備の破棄
  684.   #     item : 破棄する武器 or 防具
  685.   #    武器/防具の増減で「装備品も含める」のとき使用する。
  686.   #--------------------------------------------------------------------------
  687.   alias discard_equip_KGC_SkillCPSystem discard_equip
  688.   def discard_equip(item)
  689.     discard_equip_KGC_SkillCPSystem(item)
  690.  
  691.     restore_battle_skill
  692.     restore_passive_rev if $imported["PassiveSkill"]
  693.   end
  694.   #--------------------------------------------------------------------------
  695.   # ● 経験値の変更
  696.   #     exp  : 新しい経験値
  697.   #     show : レベルアップ表示フラグ
  698.   #--------------------------------------------------------------------------
  699.   alias change_exp_KGC_SkillCPSystem change_exp
  700.   def change_exp(exp, show)
  701.     # 習得したスキルを表示するため、戦闘中フラグを一時的に解除
  702.     #last_in_battle = $game_party.in_battle
  703.     #$game_party.on_battle_end#in_battle = false
  704.  
  705.     change_exp_KGC_SkillCPSystem(exp, show)
  706.  
  707.     #$game_party.on_battle_start#in_battle = last_in_battle
  708.   end
  709.   if KGC::SkillCPSystem::AUTO_SET_NEW_SKILL
  710.   #--------------------------------------------------------------------------
  711.   # ● スキルを覚える
  712.   #     skill_id : スキル ID
  713.   #--------------------------------------------------------------------------
  714.   alias learn_skill_KGC_SkillCPSystem learn_skill
  715.   def learn_skill(skill_id)
  716.     unless skill_learn?($data_skills[skill_id])
  717.       learn_skill_KGC_SkillCPSystem(skill_id)
  718.       add_battle_skill($data_skills[skill_id])
  719.     end
  720.   end
  721.   end  # <- if KGC::SkillCPSystem::AUTO_SET_NEW_SKILL
  722.   #--------------------------------------------------------------------------
  723.   # ● スキルを忘れる
  724.   #     skill_id : スキル ID
  725.   #--------------------------------------------------------------------------
  726.   alias forget_skill_KGC_SkillCPSystem forget_skill
  727.   def forget_skill(skill_id)
  728.     # 忘れるスキルを戦闘用スキルから削除
  729.     battle_skill_ids.each_with_index { |s, i|
  730.       remove_battle_skill(i) if s == skill_id
  731.     }
  732.  
  733.     forget_skill_KGC_SkillCPSystem(skill_id)
  734.   end
  735.   #--------------------------------------------------------------------------
  736.   # ○ 戦闘用スキルセット済み判定
  737.   #     skill : スキル
  738.   #--------------------------------------------------------------------------
  739.   def battle_skill_set?(skill)
  740.     return false unless skill.is_a?(RPG::Skill)  # スキル以外
  741.  
  742.     return battle_skill_ids.include?(skill.id)
  743.   end
  744. end
  745.  
  746. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
  747.  
  748. #==============================================================================
  749. # ■ Window_Base
  750. #==============================================================================
  751.  
  752. class Window_Base < Window
  753.   #--------------------------------------------------------------------------
  754.   # ○ CP の文字色を取得
  755.   #     actor : アクター
  756.   #--------------------------------------------------------------------------
  757.   def cp_color(actor)
  758.     return knockout_color if actor.maxcp > 0 && actor.cp == 0
  759.     return normal_color
  760.   end
  761.   #--------------------------------------------------------------------------
  762.   # ○ CP ゲージの色 1 の取得
  763.   #--------------------------------------------------------------------------
  764.   def cp_gauge_color1
  765.     color = KGC::SkillCPSystem::GAUGE_START_COLOR
  766.     return (color.is_a?(Integer) ? text_color(color) : color)
  767.   end
  768.   #--------------------------------------------------------------------------
  769.   # ○ CP ゲージの色 2 の取得
  770.   #--------------------------------------------------------------------------
  771.   def cp_gauge_color2
  772.     color = KGC::SkillCPSystem::GAUGE_END_COLOR
  773.     return (color.is_a?(Integer) ? text_color(color) : color)
  774.   end
  775.   #--------------------------------------------------------------------------
  776.   # ○ CP の描画
  777.   #     actor : アクター
  778.   #     x     : 描画先 X 座標
  779.   #     y     : 描画先 Y 座標
  780.   #     width : 幅
  781.   #--------------------------------------------------------------------------
  782.   def draw_actor_cp(actor, x, y, width = 120)
  783.     draw_actor_cp_gauge(actor, x, y, width)
  784.     self.contents.font.color = system_color
  785.     self.contents.draw_text(x, y, 30, line_height, Vocab::cp_a)
  786.     self.contents.font.color = cp_color(actor)
  787.     xr = x + width
  788.     if width < 120
  789.       self.contents.draw_text(xr - 40, y, 40, line_height, actor.cp, 2)
  790.     else
  791.       self.contents.draw_text(xr - 90, y, 40, line_height, actor.cp, 2)
  792.       self.contents.font.color = normal_color
  793.       self.contents.draw_text(xr - 50, y, 10, line_height, "/", 2)
  794.       self.contents.draw_text(xr - 40, y, 40, line_height, actor.maxcp, 2)
  795.     end
  796.     self.contents.font.color = normal_color
  797.   end
  798.   #--------------------------------------------------------------------------
  799.   # ○ CP ゲージの描画
  800.   #     actor : アクター
  801.   #     x     : 描画先 X 座標
  802.   #     y     : 描画先 Y 座標
  803.   #     width : 幅
  804.   #--------------------------------------------------------------------------
  805.   def draw_actor_cp_gauge(actor, x, y, width = 120)
  806.     if KGC::SkillCPSystem::ENABLE_GENERIC_GAUGE && $imported["GenericGauge"]
  807.       # 汎用ゲージ
  808.       draw_gauge(KGC::SkillCPSystem::GAUGE_IMAGE,
  809.         x, y, width, actor.cp, [actor.maxcp, 1].max,
  810.         KGC::SkillCPSystem::GAUGE_OFFSET,
  811.         KGC::SkillCPSystem::GAUGE_LENGTH,
  812.         KGC::SkillCPSystem::GAUGE_SLOPE)
  813.     else
  814.       # デフォルトゲージ
  815.       gw = width * actor.cp / [actor.maxcp, 1].max
  816.       gc1 = cp_gauge_color1
  817.       gc2 = cp_gauge_color2
  818.       self.contents.fill_rect(x, y + line_height - 8, width, 6, gauge_back_color)
  819.       self.contents.gradient_fill_rect(x, y + line_height - 8, gw, 6, gc1, gc2)
  820.     end
  821.   end
  822. end
  823.  
  824.  
  825. #==============================================================================
  826. # ■ Window_MenuCommand
  827. #------------------------------------------------------------------------------
  828. #  メニュー画面で表示するコマンドウィンドウです。
  829. #==============================================================================
  830.  
  831. class Window_MenuCommand < Window_Command
  832.   #--------------------------------------------------------------------------
  833.   # ● 独自コマンドの追加用
  834.   #--------------------------------------------------------------------------
  835.   alias add_original_commands_KGC_SkillCPSystem add_original_commands
  836.   def add_original_commands
  837.     add_original_commands_KGC_SkillCPSystem
  838.     add_command(Vocab.set_battle_skill, :battle_skill, battle_skill_enabled)
  839.   end
  840.   #--------------------------------------------------------------------------
  841.   # ● スキル設定の有効状態を取得
  842.   #--------------------------------------------------------------------------
  843.   def battle_skill_enabled
  844.     KGC::SkillCPSystem::USE_MENU_SET_SKILL_COMMAND  
  845.   end
  846. end
  847. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
  848.  
  849. #==============================================================================
  850. # ■ Window_Status
  851. #==============================================================================
  852.  
  853. if KGC::SkillCPSystem::SHOW_STATUS_CP
  854. class Window_Status < Window_Selectable
  855.   #--------------------------------------------------------------------------
  856.   # ● 基本情報の描画
  857.   #     x : 描画先 X 座標
  858.   #     y : 描画先 Y 座標
  859.   #--------------------------------------------------------------------------
  860.   alias draw_basic_info_KGC_SkillCPSystem draw_basic_info
  861.   def draw_basic_info(x, y)
  862.     draw_basic_info_KGC_SkillCPSystem(x, y)
  863.  
  864.     draw_actor_cp(@actor, x, y + line_height * 1)
  865.   end
  866. end
  867. end
  868.  
  869. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
  870.  
  871. #==============================================================================
  872. # □ Window_BattleSkillStatus
  873. #------------------------------------------------------------------------------
  874. #   戦闘スキル設定画面で、設定者のステータスを表示するウィンドウです。
  875. #==============================================================================
  876.  
  877. class Window_BattleSkillStatus < Window_Base
  878.   #--------------------------------------------------------------------------
  879.   # ● オブジェクト初期化
  880.   #     x     : ウィンドウの X 座標
  881.   #     y     : ウィンドウの Y 座標
  882.   #     actor : アクター
  883.   #--------------------------------------------------------------------------
  884.   def initialize(x, y, actor)
  885.     super(x, y, Graphics.width, line_height + 32)
  886.     @actor = actor
  887.     refresh
  888.   end
  889.   #--------------------------------------------------------------------------
  890.   # ● リフレッシュ
  891.   #--------------------------------------------------------------------------
  892.   def refresh
  893.     self.contents.clear
  894.     draw_actor_name(@actor, 4, 0)
  895.     draw_actor_level(@actor, 140, 0)
  896.     draw_actor_cp(@actor, 240, 0)
  897.   end
  898.   #--------------------------------------------------------------------------
  899.   # ● アクターの設定
  900.   #--------------------------------------------------------------------------
  901.   def actor=(actor)
  902.     return if @actor == actor
  903.     @actor = actor
  904.     refresh
  905.   end
  906. end
  907.  
  908. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
  909.  
  910. #==============================================================================
  911. # □ Window_BattleSkillSlot
  912. #------------------------------------------------------------------------------
  913. #   戦闘スキル選択画面で、設定したスキルの一覧を表示するウィンドウです。
  914. #==============================================================================
  915.  
  916. class Window_BattleSkillSlot < Window_Selectable
  917.   #--------------------------------------------------------------------------
  918.   # ● オブジェクト初期化
  919.   #     x      : ウィンドウの X 座標
  920.   #     y      : ウィンドウの Y 座標
  921.   #     width  : ウィンドウの幅
  922.   #     height : ウィンドウの高さ
  923.   #     actor  : アクター
  924.   #--------------------------------------------------------------------------
  925.   def initialize(x, y, width, height, actor)
  926.     super(x, y, width, height)
  927.     @actor = actor
  928.     self.index = 0
  929.     self.active = false
  930.     refresh
  931.   end
  932.   #--------------------------------------------------------------------------
  933.   # ○ スキルの取得
  934.   #--------------------------------------------------------------------------
  935.   def skill
  936.     return @data[self.index]
  937.   end
  938.   #--------------------------------------------------------------------------
  939.   # ● リフレッシュ
  940.   #--------------------------------------------------------------------------
  941.   def refresh
  942.     @data = []
  943.     skill_ids = @actor.battle_skill_ids
  944.     @actor.battle_skill_max.times { |i|
  945.       if skill_ids[i] != nil
  946.         @data << $data_skills[skill_ids[i]]
  947.       else
  948.         @data << nil
  949.       end
  950.     }
  951.     @item_max = @data.size
  952.     create_contents
  953.     @item_max.times { |i| draw_item(i) }
  954.   end
  955.   #--------------------------------------------------------------------------
  956.   # ● 桁数の取得
  957.   #--------------------------------------------------------------------------
  958.   def col_max
  959.     return 1
  960.   end
  961.   #--------------------------------------------------------------------------
  962.   # ● 項目数の取得
  963.   #--------------------------------------------------------------------------
  964.   def item_max
  965.     @data ? @data.size : 1
  966.   end
  967.   #--------------------------------------------------------------------------
  968.   # ● 前回の選択位置を復帰
  969.   #--------------------------------------------------------------------------
  970.   def select_last
  971.     select(@data.index(@actor.last_skill.object) || 0)
  972.   end
  973.   #--------------------------------------------------------------------------
  974.   # ● アクターの設定
  975.   #--------------------------------------------------------------------------
  976.   def actor=(actor)
  977.     return if @actor == actor
  978.     @actor = actor
  979.     refresh
  980.   end
  981.   #--------------------------------------------------------------------------
  982.   # ● 決定やキャンセルなどのハンドリング処理
  983.   #--------------------------------------------------------------------------
  984.   alias process_handling_KGC_SkillCPSystem process_handling
  985.   def process_handling
  986.     process_handling_KGC_SkillCPSystem
  987.     return unless open? && active
  988.     return call_handler(:remove_slot) if handle?(:remove_slot) && Input.trigger?(:A)
  989.   end
  990.   #--------------------------------------------------------------------------
  991.   # ● 決定処理の有効状態を取得
  992.   #--------------------------------------------------------------------------
  993.   def ok_enabled?
  994.     handle?(:ok)
  995.   end
  996.   #--------------------------------------------------------------------------
  997.   # ● キャンセル処理の有効状態を取得
  998.   #--------------------------------------------------------------------------
  999.   def cancel_enabled?
  1000.     handle?(:cancel)
  1001.   end
  1002.   #--------------------------------------------------------------------------
  1003.   # ○ 消費 CP 描画判定
  1004.   #--------------------------------------------------------------------------
  1005.   def cp_cost_show?(skill)
  1006.     return true if KGC::SkillCPSystem::SHOW_ZERO_COST
  1007.  
  1008.     return (skill.cp_cost > 0)
  1009.   end
  1010.   #--------------------------------------------------------------------------
  1011.   # ○ 項目の描画
  1012.   #     index : 項目番号
  1013.   #--------------------------------------------------------------------------
  1014.   def draw_item(index)
  1015.     rect = item_rect(index)
  1016.     self.contents.clear_rect(rect)
  1017.     skill = @data[index]
  1018.     if skill != nil
  1019.       rect.width -= 4
  1020.       draw_item_name(skill, rect.x, rect.y)
  1021.       self.contents.draw_text(rect, skill.cp_cost, 2) if cp_cost_show?(skill)
  1022.     else
  1023.       self.contents.draw_text(rect, KGC::SkillCPSystem::BLANK_TEXT, 1)
  1024.     end
  1025.   end
  1026.   #--------------------------------------------------------------------------
  1027.   # ● ヘルプテキスト更新
  1028.   #--------------------------------------------------------------------------
  1029.   def update_help
  1030.     @help_window.set_item(skill)
  1031.     #@help_window.set_text(skill == nil ? "" : skill.description)
  1032.   end
  1033. end
  1034.  
  1035. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
  1036.  
  1037. #==============================================================================
  1038. # □ Window_BattleSkillList
  1039. #------------------------------------------------------------------------------
  1040. #   戦闘スキル選択画面で、設定できるスキルの一覧を表示するウィンドウです。
  1041. #==============================================================================
  1042.  
  1043. class Window_BattleSkillList < Window_Selectable
  1044.   #--------------------------------------------------------------------------
  1045.   # ● 公開インスタンス変数
  1046.   #--------------------------------------------------------------------------
  1047.   attr_accessor :slot_index               # スロット番号
  1048.   #--------------------------------------------------------------------------
  1049.   # ● オブジェクト初期化
  1050.   #     x      : ウィンドウの X 座標
  1051.   #     y      : ウィンドウの Y 座標
  1052.   #     width  : ウィンドウの幅
  1053.   #     height : ウィンドウの高さ
  1054.   #     actor  : アクター
  1055.   #--------------------------------------------------------------------------
  1056.   def initialize(x, y, width, height, actor)
  1057.     super(x, y, width, height)
  1058.     @actor = actor
  1059.     @slot_index = 0
  1060.     self.index = 0
  1061.     self.active = false
  1062.     refresh
  1063.   end
  1064.   #--------------------------------------------------------------------------
  1065.   # ○ スキルの取得
  1066.   #--------------------------------------------------------------------------
  1067.   def skill
  1068.     return @data[self.index]
  1069.   end
  1070.   #--------------------------------------------------------------------------
  1071.   # ● アクターの設定
  1072.   #--------------------------------------------------------------------------
  1073.   def actor=(actor)
  1074.     return if @actor == actor
  1075.     @actor = actor
  1076.     refresh
  1077.   end
  1078.   #--------------------------------------------------------------------------
  1079.   # ● 前回の選択位置を復帰
  1080.   #--------------------------------------------------------------------------
  1081.   def select_last
  1082.     select(@data.index(@actor.last_skill.object) || 0)
  1083.   end
  1084.   #--------------------------------------------------------------------------
  1085.   # ● 桁数の取得
  1086.   #--------------------------------------------------------------------------
  1087.   def col_max
  1088.     return 1
  1089.   end
  1090.   #--------------------------------------------------------------------------
  1091.   # ● 項目数の取得
  1092.   #--------------------------------------------------------------------------
  1093.   def item_max
  1094.     @data ? @data.size : 1
  1095.   end
  1096.   #--------------------------------------------------------------------------
  1097.   # ● リフレッシュ
  1098.   #--------------------------------------------------------------------------
  1099.   def refresh
  1100.     @data = []
  1101.     # 選択可能なスキルのみを取得
  1102.     @actor.all_skills.each { |skill|
  1103.       @data.push(skill) if selectable?(skill)
  1104.     }
  1105.     @item_max = @data.size
  1106.     create_contents
  1107.     @item_max.times { |i| draw_item(i) }
  1108.   end
  1109.   #--------------------------------------------------------------------------
  1110.   # ○ スキル選択可否判定
  1111.   #     skill : スキル
  1112.   #--------------------------------------------------------------------------
  1113.   def selectable?(skill)
  1114.     return false if skill == nil
  1115.  
  1116.     # 消費 CP 0 なら常に使用可能な場合
  1117.     if KGC::SkillCPSystem::USABLE_COST_ZERO_SKILL && skill.cp_cost == 0
  1118.       return false
  1119.     end
  1120.     # 戦闘時に使用可能ならOK
  1121.     return true if skill.battle_ok?
  1122.     # 使用不可でもセット可能な場合
  1123.     if KGC::SkillCPSystem::SHOW_UNUSABLE_SKILL && skill.occasion == 3
  1124.       return true
  1125.     end
  1126.  
  1127.     return false
  1128.   end
  1129.   #--------------------------------------------------------------------------
  1130.   # ○ 消費 CP 描画判定
  1131.   #--------------------------------------------------------------------------
  1132.   def cp_cost_show?(skill)
  1133.     return true if KGC::SkillCPSystem::SHOW_ZERO_COST
  1134.  
  1135.     return (skill.cp_cost > 0)
  1136.   end
  1137.   #--------------------------------------------------------------------------
  1138.   # ○ 項目の描画
  1139.   #     index : 項目番号
  1140.   #--------------------------------------------------------------------------
  1141.   def draw_item(index)
  1142.     rect = item_rect(index)
  1143.     self.contents.clear_rect(rect)
  1144.     skill = @data[index]
  1145.     if skill != nil
  1146.       rect.width -= 4
  1147.       enabled = @actor.battle_skill_settable?(@slot_index, skill)
  1148.       draw_item_name(skill, rect.x, rect.y, enabled)
  1149.       self.contents.draw_text(rect, skill.cp_cost, 2) if cp_cost_show?(skill)
  1150.     else
  1151.       self.contents.draw_text(rect, KGC::SkillCPSystem::RELEASE_TEXT, 1)
  1152.     end
  1153.   end
  1154.  
  1155.   #--------------------------------------------------------------------------
  1156.   # ● ヘルプテキスト更新
  1157.   #--------------------------------------------------------------------------
  1158.   def update_help
  1159.     @help_window.set_item(skill)
  1160.     #@help_window.set_text(skill == nil ? "" : skill.description)
  1161.   end
  1162. end
  1163.  
  1164. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
  1165.  
  1166. #==============================================================================
  1167. # ■ Scene_Menu
  1168. #==============================================================================
  1169.  
  1170. class Scene_Menu < Scene_MenuBase
  1171.  
  1172.   #--------------------------------------------------------------------------
  1173.   # ● コマンドウィンドウの作成
  1174.   #--------------------------------------------------------------------------
  1175.   alias create_command_window_KGC_SkillCPSystem create_command_window
  1176.   def create_command_window
  1177.     create_command_window_KGC_SkillCPSystem
  1178.     if KGC::SkillCPSystem::USE_MENU_SET_SKILL_COMMAND  
  1179.       @command_window.set_handler(:battle_skill,    method(:command_personal))
  1180.     end
  1181.   end
  1182.   #--------------------------------------------------------------------------
  1183.   # ● 個人コマンド[決定]
  1184.   #--------------------------------------------------------------------------
  1185.   alias on_personal_ok_KGC_SkillCPSystem on_personal_ok
  1186.   def on_personal_ok
  1187.     on_personal_ok_KGC_SkillCPSystem
  1188.     case @command_window.current_symbol
  1189.     when :battle_skill
  1190.       SceneManager.call(Scene_SetBattleSkill)
  1191.     end
  1192.   end
  1193.   #--------------------------------------------------------------------------
  1194.   # ● コマンド[スキル設定]
  1195.   #--------------------------------------------------------------------------
  1196.   def command_set_battle_skill
  1197.     SceneManager.call(Scene_SetBattleSkill)
  1198.   end
  1199. end
  1200.  
  1201. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
  1202.  
  1203. #==============================================================================
  1204. # □ Scene_SetBattleSkill
  1205. #------------------------------------------------------------------------------
  1206. #   戦闘スキル設定画面の処理を行うクラスです。
  1207. #==============================================================================
  1208.  
  1209. class Scene_SetBattleSkill < Scene_MenuBase
  1210.   #--------------------------------------------------------------------------
  1211.   # ○ 定数
  1212.   #--------------------------------------------------------------------------
  1213.   HOST_MENU   = 0  # 呼び出し元 : メニュー
  1214.   HOST_MAP    = 1  # 呼び出し元 : マップ
  1215.   #--------------------------------------------------------------------------
  1216.   # ● 開始処理
  1217.   #--------------------------------------------------------------------------
  1218.   def start
  1219.     super
  1220.     create_background
  1221.     create_help_window
  1222.     create_status_window
  1223.     create_slot_window
  1224.     create_list_window
  1225.   end
  1226.   #--------------------------------------------------------------------------
  1227.   # ● ヘルプウィンドウの作成
  1228.   #--------------------------------------------------------------------------
  1229.   def create_help_window
  1230.     @help_window = Window_Help.new
  1231.     @help_window.viewport = @viewport
  1232.   end
  1233.   #--------------------------------------------------------------------------
  1234.   # ● ステータスウィンドウの作成
  1235.   #--------------------------------------------------------------------------
  1236.   def create_status_window
  1237.     dy = @help_window.height
  1238.     @status_window = Window_BattleSkillStatus.new(0, dy, @actor)
  1239.   end
  1240.   #--------------------------------------------------------------------------
  1241.   # ● スロットウィンドウの作成
  1242.   #--------------------------------------------------------------------------
  1243.   def create_slot_window
  1244.     dy = @help_window.height + @status_window.height
  1245.     @slot_window = Window_BattleSkillSlot.new(
  1246.       0,
  1247.       dy,
  1248.       Graphics.width / 2,
  1249.       Graphics.height - dy,
  1250.       @actor)
  1251.     @slot_window.activate
  1252.     @slot_window.help_window = @help_window
  1253.     @slot_window.set_handler(:ok,    method(:on_slot_skill))
  1254.     @slot_window.set_handler(:remove_slot,    method(:remove_skill))
  1255.     @slot_window.set_handler(:cancel,   method(:return_scene))
  1256.     @slot_window.set_handler(:pagedown, method(:next_actor))
  1257.     @slot_window.set_handler(:pageup,   method(:prev_actor))
  1258.     @slot_window.select_last
  1259.   end
  1260.   #--------------------------------------------------------------------------
  1261.   # ● アクターの切り替え
  1262.   #--------------------------------------------------------------------------
  1263.   def on_actor_change
  1264.     @status_window.actor = @actor
  1265.     @slot_window.actor = @actor
  1266.     @list_window.actor = @actor
  1267.     @slot_window.activate
  1268.     refresh_window
  1269.   end
  1270.   #--------------------------------------------------------------------------
  1271.   # ● スキルの選択
  1272.   #--------------------------------------------------------------------------
  1273.   def on_slot_skill
  1274.     Sound.play_ok
  1275.     # リストウィンドウに切り替え
  1276.     @slot_window.deactivate
  1277.     @list_window.activate
  1278.   end
  1279.   #--------------------------------------------------------------------------
  1280.   # ● スキルを外す
  1281.   #--------------------------------------------------------------------------
  1282.   def remove_skill
  1283.     # 選択しているスキルを外す
  1284.     Sound.play_ok
  1285.     @actor.remove_battle_skill(@slot_window.index)
  1286.     refresh_window
  1287.   end
  1288.   #--------------------------------------------------------------------------
  1289.   # ● リストウィンドウの作成
  1290.   #--------------------------------------------------------------------------
  1291.   def create_list_window
  1292.     dy = @help_window.height + @status_window.height
  1293.     @list_window = Window_BattleSkillList.new(
  1294.       Graphics.width - @slot_window.width,
  1295.       dy,
  1296.       Graphics.width - @slot_window.width,
  1297.       Graphics.height - dy,
  1298.       @actor)
  1299.     @list_window.help_window = @help_window
  1300.     @list_window.set_handler(:ok,    method(:on_set_list_skill))
  1301.     @list_window.set_handler(:cancel,   method(:cancel_list_window))
  1302.     @list_window.select_last
  1303.   end
  1304.   #--------------------------------------------------------------------------
  1305.   # ● スキルリストからの選択
  1306.   #--------------------------------------------------------------------------
  1307.   def on_set_list_skill
  1308.     skill = @list_window.skill
  1309.     # セットできない場合
  1310.     unless @actor.battle_skill_settable?(@slot_window.index, skill)
  1311.       Sound.play_buzzer
  1312.       @slot_window.activate
  1313.       @list_window.deactivate
  1314.       return
  1315.     end
  1316.     Sound.play_ok
  1317.     set_skill(@slot_window.index, skill)
  1318.     # スロットウィンドウに切り替え
  1319.     @slot_window.activate
  1320.     @list_window.deactivate
  1321.   end
  1322.   #--------------------------------------------------------------------------
  1323.   # ● スキルリストから戻る
  1324.   #--------------------------------------------------------------------------
  1325.   def cancel_list_window
  1326.     Sound.play_cancel
  1327.     # スロットウィンドウに切り替え
  1328.     @slot_window.activate
  1329.     @list_window.deactivate
  1330.   end
  1331.  
  1332.   #--------------------------------------------------------------------------
  1333.   # ● 終了処理
  1334.   #--------------------------------------------------------------------------
  1335.   def terminate
  1336.     super
  1337.     dispose_background
  1338.     @help_window.dispose
  1339.     @status_window.dispose
  1340.     @slot_window.dispose
  1341.     @list_window.dispose
  1342.   end
  1343.   #--------------------------------------------------------------------------
  1344.   # ○ ウィンドウ再描画
  1345.   #--------------------------------------------------------------------------
  1346.   def refresh_window
  1347.     @status_window.refresh
  1348.     @slot_window.refresh
  1349.     @list_window.refresh
  1350.   end
  1351.  
  1352.   #--------------------------------------------------------------------------
  1353.   # ○ スキル設定
  1354.   #     index : 設定する場所
  1355.   #     skill : 設定するスキル
  1356.   #--------------------------------------------------------------------------
  1357.   def set_skill(index, skill)
  1358.     @actor.remove_battle_skill(index)
  1359.     if skill != nil
  1360.       @actor.set_battle_skill(index, skill)
  1361.     end
  1362.     refresh_window
  1363.   end
  1364.  
  1365. end

Lv3.寻梦者 (版主)

…あたしは天使なんかじゃないわ

梦石
0
星屑
2208
在线时间
4033 小时
注册时间
2010-10-4
帖子
10779

开拓者贵宾

2
发表于 2014-8-18 18:16:15 | 只看该作者
第32行的设置,在531行修改:将 KGC::SkillCPSystem::MAX_SKILLS 改为 $game_variables[变量ID] 即可
第56行的设置应该可以直接在第56行修改

评分

参与人数 1星屑 +188 收起 理由
VIPArcher + 188 谜の结界

查看全部评分

回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
836
在线时间
159 小时
注册时间
2012-6-3
帖子
124
3
 楼主| 发表于 2014-8-19 20:58:45 | 只看该作者
taroxd 发表于 2014-8-18 18:16
第32行的设置,在531行修改:将 KGC::SkillCPSystem::MAX_SKILLS 改为 $game_variables[变量ID] 即可
第56 ...

搞定了,谢谢,可以修改分类了
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-11-14 10:01

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表