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

Project1

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

[已经过期] CP值啊……在菜单外怎么调用= =

 关闭 [复制链接]

Lv1.梦旅人

梦石
0
星屑
48
在线时间
678 小时
注册时间
2010-8-11
帖子
1533
跳转到指定楼层
1
发表于 2011-8-5 09:43:56 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 RPGmaster 于 2011-8-8 05:44 编辑

我用的是此脚本
  1. #_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
  2. #_/    ◆ スキルCP制 - KGC_SkillCPSystem ◆ VX ◆
  3. #_/    ◇ Last update : 2009/09/13 ◇
  4. #_/----------------------------------------------------------------------------
  5. #_/  戦闘中に使用可能なスキルを限定する機能を追加します。
  6. #_/============================================================================
  7. #_/ 【装備】≪スキル習得装備≫ より下に導入してください。
  8. #_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/

  9. #==============================================================================
  10. # ★ カスタマイズ項目 - Customize ★
  11. #==============================================================================

  12. module KGC
  13. module SkillCPSystem
  14.   # ◆ 登録スキル最大数
  15.   MAX_SKILLS = 1
  16.   # ◆ CP の名称
  17.   VOCAB_CP   = "守护神"
  18.   # ◆ CP の名称 (略)
  19.   VOCAB_CP_A = "守护神"
  20.   # ◆ ステータス画面に CP を表示する
  21.   SHOW_STATUS_CP = true

  22.   # ◆ 消費 CP 既定値
  23.   #  消費 CP 未指定のスキルで使用。
  24.   DEFAULT_CP_COST = 0
  25.   # ◆ CP 上限
  26.   #  (固有 CP などを除いた) 素の状態での CP 上限。
  27.   CP_MAX = 15
  28.   # ◆ CP 下限
  29.   CP_MIN = 1
  30.   # ◆ 補正後の CP 上限
  31.   #  固有 CP や装備品による変動を含めた上限。
  32.   REVISED_CP_MAX = 20
  33.   # ◆ 補正後の CP 下限
  34.   REVISED_CP_MIN = 0
  35.   # ◆ 最大 CP 算出式
  36.   #   level..現在のレベル
  37.   #  自動的に整数変換するので、結果が小数になってもOK。
  38.   CP_CALC_EXP = "level * 0.1 + 1.0"
  39.   # ◆ アクター毎の最大 CP 算出式
  40.   PERSONAL_CP_CALC_EXP = []
  41.   #  ここから下に、アクターごとの最大 CP を
  42.   #   PERSONAL_CP_CALC_EXP[アクター ID] = "計算式"
  43.   #  という書式で指定。
  44.   #  計算式は CP_CALC_EXP と同様の書式。
  45.   #  指定しなかったアクターは CP_CALC_EXP を使用。
  46.   #   <例> ラルフだけ優遇
  47.   # PERSONAL_CP_CALC_EXP[1] = "level * 0.8 + 2.0"

  48.   # ◆ 戦闘テスト時は無効化
  49.   #  true  : 戦闘テスト時は全スキルを使用可能。
  50.   #  false : 戦闘テスト時は (セットしない限り) 使用不可。
  51.   DISABLE_IN_BATTLETEST  = true
  52.   # ◆ 使用不可スキルもセット可能
  53.   SHOW_UNUSABLE_SKILL    = true
  54.   # ◆ 消費 CP 0 のスキルはセットしなくても使用可能
  55.   USABLE_COST_ZERO_SKILL = true
  56.   # ◆ パッシブスキルはセットしないと効果なし
  57.   #  ≪パッシブスキル≫ 導入時のみ有効。
  58.   PASSIVE_NEED_TO_SET    = true
  59.   # ◆ 新規習得スキルを自動的にセット
  60.   #  true  : 習得したスキルを空きスロットにセット。
  61.   #           ※ ≪スキル習得装備≫ で習得したスキルは無効。
  62.   #  false : 習得しただけではセットされない (手動でセット)。
  63.   AUTO_SET_NEW_SKILL     = false
  64.   # ◆ 消費 CP 0 の場合も消費 CP を表示する
  65.   #  true  : 消費 CP 0 でも表示
  66.   #  false : 消費 CP 1 以上の場合のみ表示
  67.   SHOW_ZERO_COST         = false

  68.   # ◆ CP ゲージの色
  69.   #  数値  : \C[n] と同じ色。
  70.   #  Color : 指定した色。 ( Color.new(255, 128, 128) など )
  71.   GAUGE_START_COLOR = 13  # 開始色
  72.   GAUGE_END_COLOR   =  5  # 終了色

  73.   # ◆ CP ゲージに汎用ゲージを使用する
  74.   #  ≪汎用ゲージ描画≫ 導入時のみ有効。
  75.   ENABLE_GENERIC_GAUGE = false
  76.   # ◆ CP ゲージ設定
  77.   #  画像は "Graphics/System" から読み込む。
  78.   GAUGE_IMAGE  = "GaugeCP"  # 画像
  79.   GAUGE_OFFSET = [-23, -2]  # 位置補正 [x, y]
  80.   GAUGE_LENGTH = -4         # 長さ補正
  81.   GAUGE_SLOPE  = 30         # 傾き (-89 ~ 89)

  82.   # ◆ メニュー画面に「スキル設定」コマンドを追加する
  83.   #  追加する場所は、メニューコマンドの最下部です。
  84.   #  他の部分に追加したければ、≪カスタムメニューコマンド≫ をご利用ください。
  85.   USE_MENU_SET_SKILL_COMMAND = true
  86.   # ◆ メニュー画面の「スキル設定」コマンドの名称
  87.   VOCAB_MENU_SET_SKILL       = "スキル設定"

  88.   # ◆ 未設定項目の表示文字列
  89.   BLANK_TEXT   = "-  EMPTY  -"
  90.   # ◆ 設定解除の表示文字列
  91.   RELEASE_TEXT = "( 设定解除 )"
  92. end
  93. end

  94. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  95. $imported = {} if $imported == nil
  96. $imported["SkillCPSystem"] = true

  97. module KGC::SkillCPSystem
  98.   module Regexp
  99.     module BaseItem
  100.       # 最大 CP
  101.       MAXCP_PLUS = /<(?:MAX|最大)CP\s*([\-\+]?\d+)>/
  102.       # 登録スキル数
  103.       BATTLE_SKILL_MAX = /<(?:BATTLE_SKILL_MAX|登録スキル数)\s*([\-\+]?\d+)>/i
  104.     end

  105.     module Skill
  106.       # 消費 CP
  107.       CP_COST = /<CP\s*(\d+)>/i
  108.       # 同時セット不可
  109.       EXCLUDE = /<(?:EXCLUDE|同時セット不可)\s*(\d+(?:\s*,\s*\d+)*)>/
  110.     end
  111.   end
  112. end

  113. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  114. #==============================================================================
  115. # □ KGC::Commands
  116. #==============================================================================

  117. module KGC
  118. module Commands
  119.   module_function
  120.   #--------------------------------------------------------------------------
  121.   # ○ MaxCP 補正値の取得
  122.   #     actor_id    : アクター ID
  123.   #     variable_id : 取得した値を代入する変数の ID
  124.   #--------------------------------------------------------------------------
  125.   def get_actor_own_cp(actor_id, variable_id = 0)
  126.     value = $game_actors[actor_id].maxcp_plus
  127.     $game_variables[variable_id] = value if variable_id > 0
  128.     return value
  129.   end
  130.   alias get_own_cp get_actor_own_cp
  131.   #--------------------------------------------------------------------------
  132.   # ○ MaxCP 補正値の変更
  133.   #     actor_id : アクター ID
  134.   #     value    : MaxCP 補正値
  135.   #--------------------------------------------------------------------------
  136.   def set_actor_own_cp(actor_id, value)
  137.     $game_actors[actor_id].maxcp_plus = value
  138.   end
  139.   alias set_own_cp set_actor_own_cp
  140.   #--------------------------------------------------------------------------
  141.   # ○ アクターの MaxCP 補正値の増加
  142.   #     actor_id : アクター ID
  143.   #     value    : 増加量
  144.   #--------------------------------------------------------------------------
  145.   def gain_actor_cp(actor_id, value)
  146.     $game_actors[actor_id].maxcp_plus += value
  147.   end
  148.   #--------------------------------------------------------------------------
  149.   # ○ 登録スキル最大数の取得
  150.   #     actor_id : アクター ID
  151.   #     variable_id : 取得した値を代入する変数の ID
  152.   #--------------------------------------------------------------------------
  153.   def get_battle_skill_max(actor_id, variable_id = 0)
  154.     value = $game_actors[actor_id].battle_skill_max
  155.     $game_variables[variable_id] = value if variable_id > 0
  156.     return value
  157.   end
  158.   #--------------------------------------------------------------------------
  159.   # ○ 登録スキル最大数の変更
  160.   #     actor_id : アクター ID
  161.   #     value    : 登録可能数
  162.   #--------------------------------------------------------------------------
  163.   def set_battle_skill_max(actor_id, value = -1)
  164.     $game_actors[actor_id].battle_skill_max = value
  165.   end
  166.   #--------------------------------------------------------------------------
  167.   # ○ スキルが登録されているか
  168.   #     actor_id : アクター ID
  169.   #     skill_id : 確認するスキル ID
  170.   #--------------------------------------------------------------------------
  171.   def battle_skill_set?(actor_id, skill_id)
  172.     return $game_actors[actor_id].battle_skill_ids.include?(skill_id)
  173.   end
  174.   #--------------------------------------------------------------------------
  175.   # ○ スキルの登録
  176.   #     actor_id : アクター ID
  177.   #     index    : 登録箇所
  178.   #     skill_id : 登録するスキル ID (nil で解除)
  179.   #--------------------------------------------------------------------------
  180.   def set_battle_skill(actor_id, index, skill_id = nil)
  181.     actor = $game_actors[actor_id]
  182.     if skill_id.is_a?(Integer)
  183.       # 登録
  184.       skill = $data_skills[skill_id]
  185.       return unless actor.battle_skill_settable?(index, skill)  # セット不可

  186.       actor.set_battle_skill(index, skill)
  187.       actor.restore_battle_skill
  188.     else
  189.       # 解除
  190.       actor.remove_battle_skill(index)
  191.     end
  192.   end
  193.   #--------------------------------------------------------------------------
  194.   # ○ スキルの追加登録
  195.   #     actor_id : アクター ID
  196.   #     skill_id : 登録するスキル ID
  197.   #--------------------------------------------------------------------------
  198.   def add_battle_skill(actor_id, skill_id)
  199.     actor = $game_actors[actor_id]
  200.     skill = $data_skills[skill_id]
  201.     return if actor == nil || skill == nil

  202.     actor.add_battle_skill(skill)
  203.   end
  204.   #--------------------------------------------------------------------------
  205.   # ○ スキルの全解除
  206.   #     actor_id : アクター ID
  207.   #--------------------------------------------------------------------------
  208.   def clear_battle_skill(actor_id)
  209.     $game_actors[actor_id].clear_battle_skill
  210.   end
  211.   #--------------------------------------------------------------------------
  212.   # ○ スキル設定画面の呼び出し
  213.   #     actor_index : アクターインデックス
  214.   #--------------------------------------------------------------------------
  215.   def call_set_battle_skill(actor_index = 0)
  216.     return if $game_temp.in_battle
  217.     $game_temp.next_scene = :set_battle_skill
  218.     $game_temp.next_scene_actor_index = actor_index
  219.   end
  220. end
  221. end

  222. class Game_Interpreter
  223.   include KGC::Commands
  224. end

  225. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  226. #==============================================================================
  227. # ■ Vocab
  228. #==============================================================================

  229. module Vocab
  230.   # CP
  231.   def self.cp
  232.     return KGC::SkillCPSystem::VOCAB_CP
  233.   end

  234.   # CP (略)
  235.   def self.cp_a
  236.     return KGC::SkillCPSystem::VOCAB_CP_A
  237.   end

  238.   # スキル設定
  239.   def self.set_battle_skill
  240.     return KGC::SkillCPSystem::VOCAB_MENU_SET_SKILL
  241.   end
  242. end

  243. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  244. #==============================================================================
  245. # ■ RPG::BaseItem
  246. #==============================================================================

  247. class RPG::BaseItem
  248.   #--------------------------------------------------------------------------
  249.   # ○ スキルCP制のキャッシュを生成
  250.   #--------------------------------------------------------------------------
  251.   def create_skill_cp_system_cache
  252.     @__maxcp_plus = 0
  253.     @__battle_skill_max_plus = 0

  254.     self.note.each_line { |line|
  255.       case line
  256.       when KGC::SkillCPSystem::Regexp::BaseItem::MAXCP_PLUS
  257.         # 最大 CP
  258.         @__maxcp_plus += $1.to_i
  259.       when KGC::SkillCPSystem::Regexp::BaseItem::BATTLE_SKILL_MAX
  260.         # 登録スキル数
  261.         @__battle_skill_max_plus += $1.to_i
  262.       end
  263.     }
  264.   end
  265.   #--------------------------------------------------------------------------
  266.   # ○ 最大 CP 補正
  267.   #--------------------------------------------------------------------------
  268.   def maxcp_plus
  269.     create_skill_cp_system_cache if @__maxcp_plus == nil
  270.     return @__maxcp_plus
  271.   end
  272.   #--------------------------------------------------------------------------
  273.   # ○ 登録スキル数補正
  274.   #--------------------------------------------------------------------------
  275.   def battle_skill_max_plus
  276.     create_skill_cp_system_cache if @__battle_skill_max_plus == nil
  277.     return @__battle_skill_max_plus
  278.   end
  279. end

  280. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  281. #==============================================================================
  282. # ■ RPG::Skill
  283. #==============================================================================

  284. class RPG::Skill < RPG::UsableItem
  285.   #--------------------------------------------------------------------------
  286.   # ○ スキルCP制のキャッシュを生成
  287.   #--------------------------------------------------------------------------
  288.   def create_skill_cp_system_cache
  289.     @__cp_cost = KGC::SkillCPSystem::DEFAULT_CP_COST
  290.     @__excluded_skills = []

  291.     self.note.each_line { |line|
  292.       case line
  293.       when KGC::SkillCPSystem::Regexp::Skill::CP_COST
  294.         # 消費 CP
  295.         @__cp_cost = $1.to_i
  296.       when KGC::SkillCPSystem::Regexp::Skill::EXCLUDE
  297.         # 同時セット不可
  298.         $1.scan(/\d+/).each { |num| @__excluded_skills << num.to_i }
  299.         @__excluded_skills.uniq!
  300.       end
  301.     }
  302.   end
  303.   #--------------------------------------------------------------------------
  304.   # ○ 消費 CP
  305.   #--------------------------------------------------------------------------
  306.   def cp_cost
  307.     create_skill_cp_system_cache if @__cp_cost == nil
  308.     return @__cp_cost
  309.   end
  310.   #--------------------------------------------------------------------------
  311.   # ○ 同時セット不可
  312.   #--------------------------------------------------------------------------
  313.   def excluded_skills
  314.     create_skill_cp_system_cache if @__excluded_skills == nil
  315.     return @__excluded_skills
  316.   end
  317. end

  318. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  319. #==============================================================================
  320. # ■ Game_Battler
  321. #==============================================================================

  322. class Game_Battler
  323.   #--------------------------------------------------------------------------
  324.   # ○ 戦闘用スキルセット済み判定
  325.   #     skill : スキル
  326.   #--------------------------------------------------------------------------
  327.   def battle_skill_set?(skill)
  328.     return true
  329.   end
  330. end

  331. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  332. #==============================================================================
  333. # ■ Game_Actor
  334. #==============================================================================

  335. class Game_Actor < Game_Battler
  336.   #--------------------------------------------------------------------------
  337.   # ● 公開インスタンス変数
  338.   #--------------------------------------------------------------------------
  339.   attr_writer   :maxcp_plus               # MaxCP 補正値
  340.   #--------------------------------------------------------------------------
  341.   # ○ MaxCP 取得
  342.   #--------------------------------------------------------------------------
  343.   def maxcp
  344.     calc_exp = KGC::SkillCPSystem::PERSONAL_CP_CALC_EXP[self.id]
  345.     if calc_exp == nil
  346.       calc_exp = KGC::SkillCPSystem::CP_CALC_EXP
  347.     end
  348.     n = Integer(eval(calc_exp))
  349.     n = [[n, cp_limit].min, KGC::SkillCPSystem::CP_MIN].max
  350.     n += maxcp_plus + maxcp_plus_equip
  351.     return [[n, revised_cp_limit].min, KGC::SkillCPSystem::REVISED_CP_MIN].max
  352.   end
  353.   #--------------------------------------------------------------------------
  354.   # ○ CP 取得
  355.   #--------------------------------------------------------------------------
  356.   def cp
  357.     return [maxcp - consumed_cp, 0].max
  358.   end
  359.   #--------------------------------------------------------------------------
  360.   # ○ CP 消費量取得
  361.   #--------------------------------------------------------------------------
  362.   def consumed_cp
  363.     n = 0
  364.     battle_skills.compact.each { |skill| n += skill.cp_cost }
  365.     return n
  366.   end
  367.   #--------------------------------------------------------------------------
  368.   # ○ CP 上限取得
  369.   #--------------------------------------------------------------------------
  370.   def cp_limit
  371.     return KGC::SkillCPSystem::CP_MAX
  372.   end
  373.   #--------------------------------------------------------------------------
  374.   # ○ 補正後の CP 上限取得
  375.   #--------------------------------------------------------------------------
  376.   def revised_cp_limit
  377.     return KGC::SkillCPSystem::REVISED_CP_MAX
  378.   end
  379.   #--------------------------------------------------------------------------
  380.   # ○ MaxCP 補正値取得
  381.   #--------------------------------------------------------------------------
  382.   def maxcp_plus
  383.     if @maxcp_plus == nil
  384.       if @own_cp != nil
  385.         @maxcp_plus = @own_cp
  386.         @own_cp = nil
  387.       else
  388.         @maxcp_plus = 0
  389.       end
  390.     end
  391.     return @maxcp_plus
  392.   end
  393.   #--------------------------------------------------------------------------
  394.   # ○ 装備品による MaxCP 補正値取得
  395.   #--------------------------------------------------------------------------
  396.   def maxcp_plus_equip
  397.     n = 0
  398.     equips.compact.each { |item| n += item.maxcp_plus }
  399.     return n
  400.   end
  401.   #--------------------------------------------------------------------------
  402.   # ● スキル取得
  403.   #--------------------------------------------------------------------------
  404.   alias skills_KGC_SkillCPSystem skills
  405.   def skills
  406.     return (skill_cp_restrict? ? restricted_skills : skills_KGC_SkillCPSystem)
  407.   end
  408.   #--------------------------------------------------------------------------
  409.   # ○ スキルを制限するか
  410.   #--------------------------------------------------------------------------
  411.   def skill_cp_restrict?
  412.     if $game_temp.in_battle
  413.       # 戦闘テストでないか、戦闘テストでも制限する場合
  414.       return true unless $BTEST && KGC::SkillCPSystem::DISABLE_IN_BATTLETEST
  415.     end

  416.     return false
  417.   end
  418.   #--------------------------------------------------------------------------
  419.   # ○ スキルを制限
  420.   #--------------------------------------------------------------------------
  421.   def restricted_skills
  422.     result = all_skills
  423.     result.each_with_index { |skill, i|
  424.       # 消費 CP > 0 のスキルを除外
  425.       if !KGC::SkillCPSystem::USABLE_COST_ZERO_SKILL || skill.cp_cost > 0
  426.         result[i] = nil
  427.       end
  428.       # パッシブスキルを除外
  429.       if $imported["PassiveSkill"] && KGC::SkillCPSystem::PASSIVE_NEED_TO_SET
  430.         if skill.passive &&
  431.             (!KGC::SkillCPSystem::USABLE_COST_ZERO_SKILL || skill.cp_cost > 0)
  432.           result[i] = nil
  433.         end
  434.       end
  435.     }
  436.     result.compact!
  437.     # 戦闘スキルを追加
  438.     result |= battle_skills
  439.     result.sort! { |a, b| a.id <=> b.id }
  440.     return result
  441.   end
  442.   #--------------------------------------------------------------------------
  443.   # ○ 全スキル取得
  444.   #--------------------------------------------------------------------------
  445.   def all_skills
  446.     # 一時的に非戦闘中にする
  447.     last_in_battle = $game_temp.in_battle
  448.     $game_temp.in_battle = false

  449.     result = skills_KGC_SkillCPSystem
  450.     if $imported["EquipLearnSkill"]
  451.       result |= (equipment_skills | full_ap_skills)
  452.       result.sort! { |a, b| a.id <=> b.id }
  453.     end

  454.     # 戦闘中フラグを戻す
  455.     $game_temp.in_battle = last_in_battle

  456.     return result
  457.   end
  458.   #--------------------------------------------------------------------------
  459.   # ○ 登録スキル最大数取得
  460.   #--------------------------------------------------------------------------
  461.   def battle_skill_max
  462.     @battle_skill_max = -1 if @battle_skill_max == nil
  463.     n = (@battle_skill_max < 0 ?
  464.       KGC::SkillCPSystem::MAX_SKILLS : @battle_skill_max)
  465.     n += equipment_battle_skill_max_plus
  466.     return [n, 0].max
  467.   end
  468.   #--------------------------------------------------------------------------
  469.   # ○ 装備品による登録スキル数補正
  470.   #--------------------------------------------------------------------------
  471.   def equipment_battle_skill_max_plus
  472.     n = 0
  473.     equips.compact.each { |item| n += item.battle_skill_max_plus }
  474.     return n
  475.   end
  476.   #--------------------------------------------------------------------------
  477.   # ○ 登録スキル最大数設定
  478.   #--------------------------------------------------------------------------
  479.   def battle_skill_max=(value)
  480.     @battle_skill_max = value
  481.     if @battle_skills == nil
  482.       @battle_skills = []
  483.     else
  484.       @battle_skills = @battle_skills[0...value]
  485.     end
  486.     restore_passive_rev if $imported["PassiveSkill"]
  487.   end
  488.   #--------------------------------------------------------------------------
  489.   # ○ 戦闘用スキル ID 取得
  490.   #--------------------------------------------------------------------------
  491.   def battle_skill_ids
  492.     @battle_skills = [] if @battle_skills == nil
  493.     return @battle_skills
  494.   end
  495.   #--------------------------------------------------------------------------
  496.   # ○ 戦闘用スキル取得
  497.   #--------------------------------------------------------------------------
  498.   def battle_skills
  499.     result = []
  500.     battle_skill_ids.each { |i|
  501.       next if i == nil           # 無効なスキルは無視
  502.       result << $data_skills[i]
  503.     }
  504.     return result
  505.   end
  506.   #--------------------------------------------------------------------------
  507.   # ○ 戦闘用スキル登録
  508.   #     index : 位置
  509.   #     skill : スキル (nil で解除)
  510.   #--------------------------------------------------------------------------
  511.   def set_battle_skill(index, skill)
  512.     if skill == nil
  513.       @battle_skills[index] = nil
  514.     else
  515.       return unless skill.is_a?(RPG::Skill)  # スキル以外
  516.       return if cp < skill.cp_cost           # CP 不足
  517.       return if KGC::SkillCPSystem::USABLE_COST_ZERO_SKILL && skill.cp_cost == 0

  518.       @battle_skills[index] = skill.id
  519.     end
  520.     restore_passive_rev if $imported["PassiveSkill"]
  521.   end
  522.   #--------------------------------------------------------------------------
  523.   # ○ 戦闘用スキル追加登録
  524.   #     skill : スキル
  525.   #--------------------------------------------------------------------------
  526.   def add_battle_skill(skill)
  527.     return unless skill.is_a?(RPG::Skill)  # スキル以外
  528.     skills = battle_skill_ids
  529.     return if skills.include?(skill.id)    # 登録済み
  530.     return if cp < skill.cp_cost           # CP 不足
  531.     return if KGC::SkillCPSystem::USABLE_COST_ZERO_SKILL && skill.cp_cost == 0

  532.     battle_skill_max.times { |i|
  533.       # 空きがあれば登録
  534.       if skills[i] == nil
  535.         set_battle_skill(i, skill)
  536.         break
  537.       end
  538.     }
  539.     restore_battle_skill
  540.   end
  541.   #--------------------------------------------------------------------------
  542.   # ○ 戦闘用スキル解除
  543.   #     index : 位置
  544.   #--------------------------------------------------------------------------
  545.   def remove_battle_skill(index)
  546.     @battle_skills[index] = nil
  547.     restore_passive_rev if $imported["PassiveSkill"]
  548.   end
  549.   #--------------------------------------------------------------------------
  550.   # ○ 戦闘用スキル全解除
  551.   #--------------------------------------------------------------------------
  552.   def clear_battle_skill
  553.     @battle_skills = []
  554.     restore_passive_rev if $imported["PassiveSkill"]
  555.   end
  556.   #--------------------------------------------------------------------------
  557.   # ○ 戦闘用スキルセット可否判定
  558.   #     index : 位置
  559.   #     skill : スキル
  560.   #--------------------------------------------------------------------------
  561.   def battle_skill_settable?(index, skill)
  562.     return false if battle_skill_max <= index  # 範囲外
  563.     return true  if skill == nil               # nil は解除なので OK

  564.     return false if battle_skill_ids.include?(skill.id)  # セット済み

  565.     curr_skill_id = battle_skill_ids[index]
  566.     curr_skill    = (curr_skill_id != nil ? $data_skills[curr_skill_id] : nil)

  567.     # 同時セット不可
  568.     excluded  = excluded_battle_skill_ids
  569.     excluded -= curr_skill.excluded_skills if curr_skill != nil
  570.     return false if excluded.include?(skill.id)

  571.     offset = (curr_skill != nil ? curr_skill.cp_cost : 0)
  572.     return false if self.cp < (skill.cp_cost - offset)  # CP 不足

  573.     return true
  574.   end
  575.   #--------------------------------------------------------------------------
  576.   # ○ Exclude スキル ID 取得
  577.   #--------------------------------------------------------------------------
  578.   def excluded_battle_skill_ids
  579.     result = []
  580.     battle_skills.each { |skill| result |= skill.excluded_skills }
  581.     return result
  582.   end
  583.   #--------------------------------------------------------------------------
  584.   # ○ 戦闘用スキルを修復
  585.   #--------------------------------------------------------------------------
  586.   def restore_battle_skill
  587.     result = battle_skill_ids.clone
  588.     usable_skills = all_skills

  589.     result.each_with_index { |n, i|
  590.       next if n == nil
  591.       # 未修得の場合は解除
  592.       if (usable_skills.find { |s| s.id == n }) == nil
  593.         result[i] = nil
  594.       end
  595.     }
  596.     @battle_skills = result[0...battle_skill_max]
  597.     # CP 不足のスキルを下から順に外す
  598.     (battle_skill_max - 1).downto(0) { |i|
  599.       @battle_skills[i] = nil if maxcp - consumed_cp < 0
  600.     }
  601.   end
  602.   #--------------------------------------------------------------------------
  603.   # ● 装備の変更 (オブジェクトで指定)
  604.   #     equip_type : 装備部位 (0..4)
  605.   #     item       : 武器 or 防具 (nil なら装備解除)
  606.   #     test       : テストフラグ (戦闘テスト、または装備画面での一時装備)
  607.   #--------------------------------------------------------------------------
  608.   alias change_equip_KGC_SkillCPSystem change_equip
  609.   def change_equip(equip_type, item, test = false)
  610.     change_equip_KGC_SkillCPSystem(equip_type, item, test)

  611.     unless test
  612.       restore_battle_skill
  613.       restore_passive_rev if $imported["PassiveSkill"]
  614.     end
  615.   end
  616.   #--------------------------------------------------------------------------
  617.   # ● 装備の破棄
  618.   #     item : 破棄する武器 or 防具
  619.   #    武器/防具の増減で「装備品も含める」のとき使用する。
  620.   #--------------------------------------------------------------------------
  621.   alias discard_equip_KGC_SkillCPSystem discard_equip
  622.   def discard_equip(item)
  623.     discard_equip_KGC_SkillCPSystem(item)

  624.     restore_battle_skill
  625.     restore_passive_rev if $imported["PassiveSkill"]
  626.   end
  627.   #--------------------------------------------------------------------------
  628.   # ● 経験値の変更
  629.   #     exp  : 新しい経験値
  630.   #     show : レベルアップ表示フラグ
  631.   #--------------------------------------------------------------------------
  632.   alias change_exp_KGC_SkillCPSystem change_exp
  633.   def change_exp(exp, show)
  634.     # 習得したスキルを表示するため、戦闘中フラグを一時的に解除
  635.     last_in_battle = $game_temp.in_battle
  636.     $game_temp.in_battle = false

  637.     change_exp_KGC_SkillCPSystem(exp, show)

  638.     $game_temp.in_battle = last_in_battle
  639.   end

  640.   if KGC::SkillCPSystem::AUTO_SET_NEW_SKILL
  641.   #--------------------------------------------------------------------------
  642.   # ● スキルを覚える
  643.   #     skill_id : スキル ID
  644.   #--------------------------------------------------------------------------
  645.   alias learn_skill_KGC_SkillCPSystem learn_skill
  646.   def learn_skill(skill_id)
  647.     learn_skill_KGC_SkillCPSystem(skill_id)

  648.     add_battle_skill($data_skills[skill_id])
  649.   end
  650.   end  # <- if KGC::SkillCPSystem::AUTO_SET_NEW_SKILL

  651.   #--------------------------------------------------------------------------
  652.   # ● スキルを忘れる
  653.   #     skill_id : スキル ID
  654.   #--------------------------------------------------------------------------
  655.   alias forget_skill_KGC_SkillCPSystem forget_skill
  656.   def forget_skill(skill_id)
  657.     # 忘れるスキルを戦闘用スキルから削除
  658.     battle_skill_ids.each_with_index { |s, i|
  659.       remove_battle_skill(i) if s == skill_id
  660.     }

  661.     forget_skill_KGC_SkillCPSystem(skill_id)
  662.   end
  663.   #--------------------------------------------------------------------------
  664.   # ○ 戦闘用スキルセット済み判定
  665.   #     skill : スキル
  666.   #--------------------------------------------------------------------------
  667.   def battle_skill_set?(skill)
  668.     return false unless skill.is_a?(RPG::Skill)  # スキル以外

  669.     return battle_skill_ids.include?(skill.id)
  670.   end
  671. end

  672. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
复制代码
  1. #==============================================================================
  2. # ■ Window_Base
  3. #==============================================================================

  4. class Window_Base < Window
  5.   #--------------------------------------------------------------------------
  6.   # ○ CP の文字色を取得
  7.   #     actor : アクター
  8.   #--------------------------------------------------------------------------
  9.   def cp_color(actor)
  10.     return knockout_color if actor.maxcp > 0 && actor.cp == 0
  11.     return normal_color
  12.   end
  13.   #--------------------------------------------------------------------------
  14.   # ○ CP ゲージの色 1 の取得
  15.   #--------------------------------------------------------------------------
  16.   def cp_gauge_color1
  17.     color = KGC::SkillCPSystem::GAUGE_START_COLOR
  18.     return (color.is_a?(Integer) ? text_color(color) : color)
  19.   end
  20.   #--------------------------------------------------------------------------
  21.   # ○ CP ゲージの色 2 の取得
  22.   #--------------------------------------------------------------------------
  23.   def cp_gauge_color2
  24.     color = KGC::SkillCPSystem::GAUGE_END_COLOR
  25.     return (color.is_a?(Integer) ? text_color(color) : color)
  26.   end
  27.   #--------------------------------------------------------------------------
  28.   # ○ CP の描画
  29.   #     actor : アクター
  30.   #     x     : 描画先 X 座標
  31.   #     y     : 描画先 Y 座標
  32.   #     width : 幅
  33.   #--------------------------------------------------------------------------
  34.   def draw_actor_cp(actor, x, y, width = 120)
  35.     draw_actor_cp_gauge(actor, x, y, width)
  36.     self.contents.font.color = system_color
  37.     self.contents.draw_text(x, y, 30, WLH, Vocab::cp_a)
  38.     self.contents.font.color = cp_color(actor)
  39.     xr = x + width
  40.     if width < 120
  41.       self.contents.draw_text(xr - 40, y, 40, WLH, actor.cp, 2)
  42.     else
  43.       self.contents.draw_text(xr - 90, y, 40, WLH, actor.cp, 2)
  44.       self.contents.font.color = normal_color
  45.       self.contents.draw_text(xr - 50, y, 10, WLH, "/", 2)
  46.       self.contents.draw_text(xr - 40, y, 40, WLH, actor.maxcp, 2)
  47.     end
  48.     self.contents.font.color = normal_color
  49.   end
  50.   #--------------------------------------------------------------------------
  51.   # ○ CP ゲージの描画
  52.   #     actor : アクター
  53.   #     x     : 描画先 X 座標
  54.   #     y     : 描画先 Y 座標
  55.   #     width : 幅
  56.   #--------------------------------------------------------------------------
  57.   def draw_actor_cp_gauge(actor, x, y, width = 120)
  58.     if KGC::SkillCPSystem::ENABLE_GENERIC_GAUGE && $imported["GenericGauge"]
  59.       # 汎用ゲージ
  60.       draw_gauge(KGC::SkillCPSystem::GAUGE_IMAGE,
  61.         x, y, width, actor.cp, [actor.maxcp, 1].max,
  62.         KGC::SkillCPSystem::GAUGE_OFFSET,
  63.         KGC::SkillCPSystem::GAUGE_LENGTH,
  64.         KGC::SkillCPSystem::GAUGE_SLOPE)
  65.     else
  66.       # デフォルトゲージ
  67.       gw = width * actor.cp / [actor.maxcp, 1].max
  68.       gc1 = cp_gauge_color1
  69.       gc2 = cp_gauge_color2
  70.       self.contents.fill_rect(x, y + WLH - 8, width, 6, gauge_back_color)
  71.       self.contents.gradient_fill_rect(x, y + WLH - 8, gw, 6, gc1, gc2)
  72.     end
  73.   end
  74. end

  75. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  76. #==============================================================================
  77. # ■ Window_Command
  78. #==============================================================================

  79. class Window_Command < Window_Selectable
  80.   unless method_defined?(:add_command)
  81.   #--------------------------------------------------------------------------
  82.   # ○ コマンドを追加
  83.   #    追加した位置を返す
  84.   #--------------------------------------------------------------------------
  85.   def add_command(command)
  86.     @commands << command
  87.     @item_max = @commands.size
  88.     item_index = @item_max - 1
  89.     refresh_command
  90.     draw_item(item_index)
  91.     return item_index
  92.   end
  93.   #--------------------------------------------------------------------------
  94.   # ○ コマンドをリフレッシュ
  95.   #--------------------------------------------------------------------------
  96.   def refresh_command
  97.     buf = self.contents.clone
  98.     self.height = [self.height, row_max * WLH + 32].max
  99.     create_contents
  100.     self.contents.blt(0, 0, buf, buf.rect)
  101.     buf.dispose
  102.   end
  103.   #--------------------------------------------------------------------------
  104.   # ○ コマンドを挿入
  105.   #--------------------------------------------------------------------------
  106.   def insert_command(index, command)
  107.     @commands.insert(index, command)
  108.     @item_max = @commands.size
  109.     refresh_command
  110.     refresh
  111.   end
  112.   #--------------------------------------------------------------------------
  113.   # ○ コマンドを削除
  114.   #--------------------------------------------------------------------------
  115.   def remove_command(command)
  116.     @commands.delete(command)
  117.     @item_max = @commands.size
  118.     refresh
  119.   end
  120.   end
  121. end

  122. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  123. #==============================================================================
  124. # ■ Window_Status
  125. #==============================================================================

  126. if KGC::SkillCPSystem::SHOW_STATUS_CP
  127. class Window_Status < Window_Base
  128.   #--------------------------------------------------------------------------
  129.   # ● 基本情報の描画
  130.   #     x : 描画先 X 座標
  131.   #     y : 描画先 Y 座標
  132.   #--------------------------------------------------------------------------
  133.   alias draw_basic_info_KGC_SkillCPSystem draw_basic_info
  134.   def draw_basic_info(x, y)
  135.     draw_basic_info_KGC_SkillCPSystem(x, y)

  136.     draw_actor_cp(@actor, x, y + WLH * 4)
  137.   end
  138. end
  139. end

  140. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  141. #==============================================================================
  142. # □ Window_BattleSkillStatus
  143. #------------------------------------------------------------------------------
  144. #   戦闘スキル設定画面で、設定者のステータスを表示するウィンドウです。
  145. #==============================================================================

  146. class Window_BattleSkillStatus < Window_Base
  147.   #--------------------------------------------------------------------------
  148.   # ● オブジェクト初期化
  149.   #     x     : ウィンドウの X 座標
  150.   #     y     : ウィンドウの Y 座標
  151.   #     actor : アクター
  152.   #--------------------------------------------------------------------------
  153.   def initialize(x, y, actor)
  154.     super(x, y, Graphics.width, WLH + 32)
  155.     @actor = actor
  156.     refresh
  157.   end
  158.   #--------------------------------------------------------------------------
  159.   # ● リフレッシュ
  160.   #--------------------------------------------------------------------------
  161.   def refresh
  162.     self.contents.clear
  163.     draw_actor_name(@actor, 4, 0)
  164.     draw_actor_level(@actor, 140, 0)
  165.     draw_actor_cp(@actor, 240, 0)
  166.   end
  167. end

  168. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  169. #==============================================================================
  170. # □ Window_BattleSkillSlot
  171. #------------------------------------------------------------------------------
  172. #   戦闘スキル選択画面で、設定したスキルの一覧を表示するウィンドウです。
  173. #==============================================================================

  174. class Window_BattleSkillSlot < Window_Selectable
  175.   #--------------------------------------------------------------------------
  176.   # ● オブジェクト初期化
  177.   #     x      : ウィンドウの X 座標
  178.   #     y      : ウィンドウの Y 座標
  179.   #     width  : ウィンドウの幅
  180.   #     height : ウィンドウの高さ
  181.   #     actor  : アクター
  182.   #--------------------------------------------------------------------------
  183.   def initialize(x, y, width, height, actor)
  184.     super(x, y, width, height)
  185.     @actor = actor
  186.     self.index = 0
  187.     self.active = false
  188.     refresh
  189.   end
  190.   #--------------------------------------------------------------------------
  191.   # ○ スキルの取得
  192.   #--------------------------------------------------------------------------
  193.   def skill
  194.     return @data[self.index]
  195.   end
  196.   #--------------------------------------------------------------------------
  197.   # ● リフレッシュ
  198.   #--------------------------------------------------------------------------
  199.   def refresh
  200.     @data = []
  201.     skill_ids = @actor.battle_skill_ids
  202.     @actor.battle_skill_max.times { |i|
  203.       if skill_ids[i] != nil
  204.         @data << $data_skills[skill_ids[i]]
  205.       else
  206.         @data << nil
  207.       end
  208.     }
  209.     @item_max = @data.size
  210.     create_contents
  211.     @item_max.times { |i| draw_item(i) }
  212.   end
  213.   #--------------------------------------------------------------------------
  214.   # ○ 消費 CP 描画判定
  215.   #--------------------------------------------------------------------------
  216.   def cp_cost_show?(skill)
  217.     return true if KGC::SkillCPSystem::SHOW_ZERO_COST

  218.     return (skill.cp_cost > 0)
  219.   end
  220.   #--------------------------------------------------------------------------
  221.   # ○ 項目の描画
  222.   #     index : 項目番号
  223.   #--------------------------------------------------------------------------
  224.   def draw_item(index)
  225.     rect = item_rect(index)
  226.     self.contents.clear_rect(rect)
  227.     skill = @data[index]
  228.     if skill != nil
  229.       rect.width -= 4
  230.       draw_item_name(skill, rect.x, rect.y)
  231.       self.contents.draw_text(rect, skill.cp_cost, 2) if cp_cost_show?(skill)
  232.     else
  233.       self.contents.draw_text(rect, KGC::SkillCPSystem::BLANK_TEXT, 1)
  234.     end
  235.   end
  236.   #--------------------------------------------------------------------------
  237.   # ● カーソルを 1 ページ後ろに移動
  238.   #--------------------------------------------------------------------------
  239.   def cursor_pagedown
  240.     return if Input.repeat?(Input::R)
  241.     super
  242.   end
  243.   #--------------------------------------------------------------------------
  244.   # ● カーソルを 1 ページ前に移動
  245.   #--------------------------------------------------------------------------
  246.   def cursor_pageup
  247.     return if Input.repeat?(Input::L)
  248.     super
  249.   end
  250.   #--------------------------------------------------------------------------
  251.   # ● フレーム更新
  252.   #--------------------------------------------------------------------------
  253.   def update
  254.     super
  255.     return unless self.active

  256.     if Input.repeat?(Input::RIGHT)
  257.       Sound.play_cursor
  258.       cursor_pagedown
  259.     elsif Input.repeat?(Input::LEFT)
  260.       Sound.play_cursor
  261.       cursor_pageup
  262.     end
  263.   end
  264.   #--------------------------------------------------------------------------
  265.   # ● ヘルプテキスト更新
  266.   #--------------------------------------------------------------------------
  267.   def update_help
  268.     @help_window.set_text(skill == nil ? "" : skill.description)
  269.   end
  270. end

  271. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  272. #==============================================================================
  273. # □ Window_BattleSkillList
  274. #------------------------------------------------------------------------------
  275. #   戦闘スキル選択画面で、設定できるスキルの一覧を表示するウィンドウです。
  276. #==============================================================================

  277. class Window_BattleSkillList < Window_Selectable
  278.   #--------------------------------------------------------------------------
  279.   # ● 公開インスタンス変数
  280.   #--------------------------------------------------------------------------
  281.   attr_accessor :slot_index               # スロット番号
  282.   #--------------------------------------------------------------------------
  283.   # ● オブジェクト初期化
  284.   #     x      : ウィンドウの X 座標
  285.   #     y      : ウィンドウの Y 座標
  286.   #     width  : ウィンドウの幅
  287.   #     height : ウィンドウの高さ
  288.   #     actor  : アクター
  289.   #--------------------------------------------------------------------------
  290.   def initialize(x, y, width, height, actor)
  291.     super(x, y, width, height)
  292.     @actor = actor
  293.     @slot_index = 0
  294.     self.index = 0
  295.     self.active = false
  296.     refresh
  297.   end
  298.   #--------------------------------------------------------------------------
  299.   # ○ スキルの取得
  300.   #--------------------------------------------------------------------------
  301.   def skill
  302.     return @data[self.index]
  303.   end
  304.   #--------------------------------------------------------------------------
  305.   # ● リフレッシュ
  306.   #--------------------------------------------------------------------------
  307.   def refresh
  308.     @data = [nil]
  309.     # 選択可能なスキルのみを取得
  310.     @actor.all_skills.each { |skill|
  311.       @data.push(skill) if selectable?(skill)
  312.     }

  313.     @item_max = @data.size
  314.     create_contents
  315.     @item_max.times { |i| draw_item(i) }
  316.   end
  317.   #--------------------------------------------------------------------------
  318.   # ○ スキル選択可否判定
  319.   #     skill : スキル
  320.   #--------------------------------------------------------------------------
  321.   def selectable?(skill)
  322.     return false if skill == nil

  323.     # 消費 CP 0 なら常に使用可能な場合
  324.     if KGC::SkillCPSystem::USABLE_COST_ZERO_SKILL && skill.cp_cost == 0
  325.       return false
  326.     end
  327.     # 戦闘時に使用可能ならOK
  328.     return true if skill.battle_ok?
  329.     # 使用不可でもセット可能な場合
  330.     if KGC::SkillCPSystem::SHOW_UNUSABLE_SKILL && skill.occasion == 3
  331.       return true
  332.     end

  333.     return false
  334.   end
  335.   #--------------------------------------------------------------------------
  336.   # ○ 消費 CP 描画判定
  337.   #--------------------------------------------------------------------------
  338.   def cp_cost_show?(skill)
  339.     return true if KGC::SkillCPSystem::SHOW_ZERO_COST

  340.     return (skill.cp_cost > 0)
  341.   end
  342.   #--------------------------------------------------------------------------
  343.   # ○ 項目の描画
  344.   #     index : 項目番号
  345.   #--------------------------------------------------------------------------
  346.   def draw_item(index)
  347.     rect = item_rect(index)
  348.     self.contents.clear_rect(rect)
  349.     skill = @data[index]
  350.     if skill != nil
  351.       rect.width -= 4
  352.       enabled = @actor.battle_skill_settable?(@slot_index, skill)
  353.       draw_item_name(skill, rect.x, rect.y, enabled)
  354.       self.contents.draw_text(rect, skill.cp_cost, 2) if cp_cost_show?(skill)
  355.     else
  356.       self.contents.draw_text(rect, KGC::SkillCPSystem::RELEASE_TEXT, 1)
  357.     end
  358.   end
  359.   #--------------------------------------------------------------------------
  360.   # ● フレーム更新
  361.   #--------------------------------------------------------------------------
  362.   def update
  363.     super
  364.     return unless self.active

  365.     if Input.repeat?(Input::RIGHT)
  366.       cursor_pagedown
  367.     elsif Input.repeat?(Input::LEFT)
  368.       cursor_pageup
  369.     end
  370.   end
  371.   #--------------------------------------------------------------------------
  372.   # ● ヘルプテキスト更新
  373.   #--------------------------------------------------------------------------
  374.   def update_help
  375.     @help_window.set_text(skill == nil ? "" : skill.description)
  376.   end
  377. end

  378. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  379. #==============================================================================
  380. # ■ Scene_Map
  381. #==============================================================================

  382. class Scene_Map < Scene_Base
  383.   #--------------------------------------------------------------------------
  384.   # ● 画面切り替えの実行
  385.   #--------------------------------------------------------------------------
  386.   alias update_scene_change_KGC_SkillCPSystem update_scene_change
  387.   def update_scene_change
  388.     return if $game_player.moving?    # プレイヤーの移動中?

  389.     if $game_temp.next_scene == :set_battle_skill
  390.       call_set_battle_skill
  391.       return
  392.     end

  393.     update_scene_change_KGC_SkillCPSystem
  394.   end
  395.   #--------------------------------------------------------------------------
  396.   # ○ スキル設定画面への切り替え
  397.   #--------------------------------------------------------------------------
  398.   def call_set_battle_skill
  399.     $game_temp.next_scene = nil
  400.     $scene = Scene_SetBattleSkill.new(
  401.       $game_temp.next_scene_actor_index,
  402.       0,
  403.       Scene_SetBattleSkill::HOST_MAP)
  404.   end
  405. end

  406. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  407. #==============================================================================
  408. # ■ Scene_Menu
  409. #==============================================================================

  410. class Scene_Menu < Scene_Base
  411.   if KGC::SkillCPSystem::USE_MENU_SET_SKILL_COMMAND
  412.   #--------------------------------------------------------------------------
  413.   # ● コマンドウィンドウの作成
  414.   #--------------------------------------------------------------------------
  415.   alias create_command_window_KGC_SkillCPSystem create_command_window
  416.   def create_command_window
  417.     create_command_window_KGC_SkillCPSystem

  418.     return if $imported["CustomMenuCommand"]

  419.     @__command_set_battle_skill_index =
  420.       @command_window.add_command(Vocab.set_battle_skill)
  421.     if @command_window.oy > 0
  422.       @command_window.oy -= Window_Base::WLH
  423.     end
  424.     @command_window.index = @menu_index
  425.   end
  426.   end
  427.   #--------------------------------------------------------------------------
  428.   # ● コマンド選択の更新
  429.   #--------------------------------------------------------------------------
  430.   alias update_command_selection_KGC_SkillCPSystem update_command_selection
  431.   def update_command_selection
  432.     call_set_battle_skill_flag = false
  433.     if Input.trigger?(Input::C)
  434.       case @command_window.index
  435.       when @__command_set_battle_skill_index  # スキル設定
  436.         call_set_battle_skill_flag = true
  437.       end
  438.     end

  439.     # スキル設定画面に移行
  440.     if call_set_battle_skill_flag
  441.       if $game_party.members.size == 0
  442.         Sound.play_buzzer
  443.         return
  444.       end
  445.       Sound.play_decision
  446.       start_actor_selection
  447.       return
  448.     end

  449.     update_command_selection_KGC_SkillCPSystem
  450.   end
  451.   #--------------------------------------------------------------------------
  452.   # ● アクター選択の更新
  453.   #--------------------------------------------------------------------------
  454.   alias update_actor_selection_KGC_SkillCPSystem update_actor_selection
  455.   def update_actor_selection
  456.     if Input.trigger?(Input::C)
  457.       $game_party.last_actor_index = @status_window.index
  458.       Sound.play_decision
  459.       case @command_window.index
  460.       when @__command_set_battle_skill_index  # スキル設定
  461.         $scene = Scene_SetBattleSkill.new(
  462.           @status_window.index,
  463.           @__command_set_battle_skill_index,
  464.           Scene_SetBattleSkill::HOST_MENU)
  465.         return
  466.       end
  467.     end

  468.     update_actor_selection_KGC_SkillCPSystem
  469.   end
  470. end

  471. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  472. #==============================================================================
  473. # □ Scene_SetBattleSkill
  474. #------------------------------------------------------------------------------
  475. #   戦闘スキル設定画面の処理を行うクラスです。
  476. #==============================================================================

  477. class Scene_SetBattleSkill < Scene_Base
  478.   #--------------------------------------------------------------------------
  479.   # ○ 定数
  480.   #--------------------------------------------------------------------------
  481.   HOST_MENU   = 0  # 呼び出し元 : メニュー
  482.   HOST_MAP    = 1  # 呼び出し元 : マップ
  483.   #--------------------------------------------------------------------------
  484.   # ● オブジェクト初期化
  485.   #     actor_index : アクターインデックス
  486.   #     menu_index  : コマンドのカーソル初期位置
  487.   #     host_scene  : 呼び出し元 (0..メニュー  1..マップ)
  488.   #--------------------------------------------------------------------------
  489.   def initialize(actor_index = 0, menu_index = 0, host_scene = HOST_MENU)
  490.     @actor_index = actor_index
  491.     @menu_index = menu_index
  492.     @host_scene = host_scene
  493.   end
  494.   #--------------------------------------------------------------------------
  495.   # ● 開始処理
  496.   #--------------------------------------------------------------------------
  497.   def start
  498.     super
  499.     create_menu_background

  500.     @actor = $game_party.members[@actor_index]
  501.     create_windows
  502.   end
  503.   #--------------------------------------------------------------------------
  504.   # ○ ウィンドウ作成
  505.   #--------------------------------------------------------------------------
  506.   def create_windows
  507.     @help_window = Window_Help.new
  508.     if $imported["HelpExtension"]
  509.       @help_window.row_max = KGC::HelpExtension::ROW_MAX
  510.     end

  511.     dy = @help_window.height
  512.     @status_window = Window_BattleSkillStatus.new(0, dy, @actor)

  513.     dy += @status_window.height
  514.     @slot_window = Window_BattleSkillSlot.new(
  515.       0,
  516.       dy,
  517.       Graphics.width / 2,
  518.       Graphics.height - dy,
  519.       @actor)
  520.     @slot_window.active = true
  521.     @slot_window.help_window = @help_window

  522.     @list_window = Window_BattleSkillList.new(
  523.       Graphics.width - @slot_window.width,
  524.       dy,
  525.       Graphics.width - @slot_window.width,
  526.       Graphics.height - dy,
  527.       @actor)
  528.     @list_window.help_window = @help_window
  529.   end
  530.   #--------------------------------------------------------------------------
  531.   # ● 終了処理
  532.   #--------------------------------------------------------------------------
  533.   def terminate
  534.     super
  535.     dispose_menu_background
  536.     @help_window.dispose
  537.     @status_window.dispose
  538.     @slot_window.dispose
  539.     @list_window.dispose
  540.   end
  541.   #--------------------------------------------------------------------------
  542.   # ○ 元の画面へ戻る
  543.   #--------------------------------------------------------------------------
  544.   def return_scene
  545.     case @host_scene
  546.     when HOST_MENU
  547.       $scene = Scene_Menu.new(@menu_index)
  548.     when HOST_MAP
  549.       $scene = Scene_Map.new
  550.     end
  551.   end
  552.   #--------------------------------------------------------------------------
  553.   # ● フレーム更新
  554.   #--------------------------------------------------------------------------
  555.   def update
  556.     super
  557.     update_menu_background
  558.     update_window
  559.     if @slot_window.active
  560.       update_slot
  561.     elsif @list_window.active
  562.       update_list
  563.     end
  564.   end
  565.   #--------------------------------------------------------------------------
  566.   # ○ ウィンドウ更新
  567.   #--------------------------------------------------------------------------
  568.   def update_window
  569.     @help_window.update
  570.     @status_window.update
  571.     @slot_window.update
  572.     @list_window.update
  573.   end
  574.   #--------------------------------------------------------------------------
  575.   # ○ ウィンドウ再描画
  576.   #--------------------------------------------------------------------------
  577.   def refresh_window
  578.     @status_window.refresh
  579.     @slot_window.refresh
  580.     @list_window.refresh
  581.   end
  582.   #--------------------------------------------------------------------------
  583.   # ○ 次のアクターの画面に切り替え
  584.   #--------------------------------------------------------------------------
  585.   def next_actor
  586.     @actor_index += 1
  587.     @actor_index %= $game_party.members.size
  588.     $scene = Scene_SetBattleSkill.new(@actor_index, @menu_index, @host_scene)
  589.   end
  590.   #--------------------------------------------------------------------------
  591.   # ○ 前のアクターの画面に切り替え
  592.   #--------------------------------------------------------------------------
  593.   def prev_actor
  594.     @actor_index += $game_party.members.size - 1
  595.     @actor_index %= $game_party.members.size
  596.     $scene = Scene_SetBattleSkill.new(@actor_index, @menu_index, @host_scene)
  597.   end
  598.   #--------------------------------------------------------------------------
  599.   # ○ フレーム更新 (スロットウィンドウがアクティブの場合)
  600.   #--------------------------------------------------------------------------
  601.   def update_slot
  602.     # 選択項目が変化した場合
  603.     if @last_slot_index != @slot_window.index
  604.       @list_window.slot_index = @slot_window.index
  605.       @list_window.refresh
  606.       @last_slot_index = @slot_window.index
  607.     end

  608.     if Input.trigger?(Input::A)
  609.       Sound.play_decision
  610.       # 選択しているスキルを外す
  611.       @actor.remove_battle_skill(@slot_window.index)
  612.       refresh_window
  613.     elsif Input.trigger?(Input::B)
  614.       Sound.play_cancel
  615.       return_scene
  616.     elsif Input.trigger?(Input::C)
  617.       Sound.play_decision
  618.       # リストウィンドウに切り替え
  619.       @slot_window.active = false
  620.       @list_window.active = true
  621.     elsif Input.trigger?(Input::R)
  622.       Sound.play_cursor
  623.       next_actor
  624.     elsif Input.trigger?(Input::L)
  625.       Sound.play_cursor
  626.       prev_actor
  627.     end
  628.   end
  629.   #--------------------------------------------------------------------------
  630.   # ○ フレーム更新 (リストウィンドウがアクティブの場合)
  631.   #--------------------------------------------------------------------------
  632.   def update_list
  633.     if Input.trigger?(Input::B)
  634.       Sound.play_cancel
  635.       # スロットウィンドウに切り替え
  636.       @slot_window.active = true
  637.       @list_window.active = false
  638.     elsif Input.trigger?(Input::C)
  639.       skill = @list_window.skill
  640.       # セットできない場合
  641.       unless @actor.battle_skill_settable?(@slot_window.index, skill)
  642.         Sound.play_buzzer
  643.         return
  644.       end
  645.       Sound.play_decision
  646.       set_skill(@slot_window.index, skill)
  647.       # スロットウィンドウに切り替え
  648.       @slot_window.active = true
  649.       @list_window.active = false
  650.     end
  651.   end
  652.   #--------------------------------------------------------------------------
  653.   # ○ スキル設定
  654.   #     index : 設定する場所
  655.   #     skill : 設定するスキル
  656.   #--------------------------------------------------------------------------
  657.   def set_skill(index, skill)
  658.     @actor.remove_battle_skill(index)
  659.     if skill != nil
  660.       @actor.set_battle_skill(index, skill)
  661.     end
  662.     refresh_window
  663.   end
  664. end
复制代码
简单说就是……在菜单外弹出CP值设定画面,应为我用的是自定义菜单,所以说这个没用
必须用公共事件代替,可是问题发生了=A=
首先我试了以下方法,不行
  1. $Scene = KGC::SkillCPSystem::VOCAB_CP.new
复制代码
我试了这个:
  1. $Scene = KGC::SkillCPSystem::VOCAB_CP_A.new
复制代码
和这个:
  1. $Scene = KGC::SkillCPSystem::VOCAB_MENU_SET_SKILL.new
复制代码
都不行
我把以上的去掉KGC::后试了,也不行
然后我去找了一个游戏,有CP值相关的
因为那个也是自定义菜单,调用方法是
  1. Scene_SetBattleSkill.new(s_index)
复制代码
(在脚本了)
我试了,不行,
然后我加了
  1. $Scene =
复制代码
  1. .new
复制代码
也不行
最后我在s_index那行改成1和s_1(都试过)
不行
好吧,肯定是我差了那一步= =
谁告诉我{:nm_2:}


已自行解决(原来不需要用.New啊……)

点评

论坛到底肿么了= = 怎么显示不了= =  发表于 2011-8-5 09:58
小艾工作室开张= =

Lv2.观梦者

梦石
0
星屑
354
在线时间
1036 小时
注册时间
2011-5-19
帖子
2098
2
发表于 2011-8-5 09:58:29 | 只看该作者
{:nm_9:}那个~~~脚本我不太懂,但我发现这个脚本里有笑脸的说~~~在脚本中把它们去掉试一试吧……其他的我也不懂了,偶很菜的说~~

点评

那个笑脸就是脚本= =|| 只是代码巧合一样而已= =  发表于 2011-8-5 10:09
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
48
在线时间
678 小时
注册时间
2010-8-11
帖子
1533
3
 楼主| 发表于 2011-8-5 10:02:41 | 只看该作者
MSQ 发表于 2011-8-5 02:58
那个~~~脚本我不太懂,但我发现这个脚本里有笑脸的说~~~在脚本中把它们去掉试一试吧……其他的我也 ...

关于那个笑脸啊,不知道为什么用代码再查看贴时那脚本竟然消失了= =
用引用竟然这个贴也木有= =
6R到底发生了神马?!

点评

一帖贴不了可以贴两贴么。 我已经将脚本分贴了  发表于 2011-8-5 10:36
MSQ
这脚本~~~巧合的让我情何以堪~~~对不起,我只会用事件的说,估计帮不了你了。  发表于 2011-8-5 10:12
MSQ
想起来了~~好像6R的代码框有问题~~只要代码太长就显示不出来的说~~话说关键是那个笑脸吧~~把它去了,再调用试试。  发表于 2011-8-5 10:06
MSQ
这~~这是神马情况!!!  发表于 2011-8-5 10:04
小艾工作室开张= =
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
1071 小时
注册时间
2011-5-12
帖子
2317

贵宾

4
发表于 2011-8-5 11:35:17 | 只看该作者
本帖最后由 月夜神音 于 2011-8-5 11:35 编辑

如果是在事件中调用就用
  1. call_set_battle_skill(角色队里ID) # 默认为0
复制代码
如果在场景(Scene)中调用就用这个
  1. $scene = Scene_SetBattleSkill.new(角色队里ID,返菜单时的index,返回时的场景)
复制代码
找我请找芙蕾娅
顺带一提,完全看得懂我头像请捡起你自己的节操哟(自重
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
48
在线时间
678 小时
注册时间
2010-8-11
帖子
1533
5
 楼主| 发表于 2011-8-5 22:42:01 | 只看该作者
月夜神音 发表于  
如果是在事件中调用就用如果在场景(Scene)中调用就用这个

难道没有选择人物的么= =
小艾工作室开张= =
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
1071 小时
注册时间
2011-5-12
帖子
2317

贵宾

6
发表于 2011-8-6 08:48:40 | 只看该作者
是要在菜单中调用吗?

点评

语句就是那个场景中调用的哦~  发表于 2011-8-6 19:53
嗯。要在菜单中调用  发表于 2011-8-6 18:57
因为我用的不是默认菜单= =所以才问的嘛= =  发表于 2011-8-6 18:55
找我请找芙蕾娅
顺带一提,完全看得懂我头像请捡起你自己的节操哟(自重
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2025-1-10 17:31

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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