Project1

标题: 【绝非伸手】求个怒气值脚本.. [打印本页]

作者: 八月桑    时间: 2013-7-9 13:33
标题: 【绝非伸手】求个怒气值脚本..
半天都找不到...
最好是在窗口左边竖着的..
作者: yangjunyin2002    时间: 2013-7-9 14:23
下面两个脚本插进去。素材放进system文件夹里:
要竖着的话可以自己该坐标啊
RUBY 代码复制
  1. #_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
  2. #_/    ◆ オーバードライブ - KGC_OverDrive ◆ VX ◆
  3. #_/    ◇ Last update : 2008/08/24 ◇
  4. #_/----------------------------------------------------------------------------
  5. #_/  専用のゲージを消費して使用するスキルを作成します。
  6. #_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
  7.  
  8. #==============================================================================
  9. # ★ カスタマイズ項目 - Customize ★
  10. #==============================================================================
  11.  
  12. module KGC
  13. module OverDrive
  14.   # ◆ ドライブゲージ最大値
  15.   #  普通はこのままでOK。微調整したい場合に変更。
  16.   GAUGE_MAX = 1000
  17.   # ◆ ドライブゲージ増加量
  18.   #  高いほどゲージが溜まりやすい。
  19.   #  マイナス値を指定すると減少。
  20.   #  「被ダメージ」は、受けたダメージの最大 HP に対する割合で増加量を算出。
  21.   #  (500 だと、最大 HP 相当のダメージで 500 溜まる)
  22.   GAIN_RATE = [
  23.      1000,  # 攻撃
  24.     300,  # 被ダメージ
  25.       0,  # 胜利
  26.    -500,  # 逃走
  27.      50,  # 孤独
  28.      30,  # 行動
  29.    1000,  # 瀕死
  30.      25,  # 防御
  31.   ]  # ← この ] は消さないこと!
  32.  
  33.   # ◆ ゲージの初期本数
  34.   DEFAULT_GAUGE_NUMBER = 1
  35.  
  36.   # ◆ アクターのデフォルトドライブタイプ
  37.   #   0..攻撃  1..被ダメージ  2..勝利  3..逃走  4..孤独  5..行動  6..瀕死
  38.   #   7..防御
  39.   DEFAULT_ACTOR_DRIVE_TYPE = [0,1,2,3,4,5,6]
  40.   # ◆ エネミーのデフォルトドライブタイプ
  41.   DEFAULT_ENEMY_DRIVE_TYPE = []
  42.  
  43.   # ◆ ドライブゲージの開始色 (通常時)
  44.   #  数値  : \C[n] と同じ色。
  45.   #  Color : 指定した色。 ( Color.new(255, 128, 128) など )
  46.   GAUGE_NORMAL_START_COLOR = 14
  47.   # ◆ ドライブゲージの終了色 (通常時)
  48.   GAUGE_NORMAL_END_COLOR   = 6
  49.   # ◆ ドライブゲージの開始色 (最大時)
  50.   GAUGE_MAX_START_COLOR    = 13
  51.   # ◆ ドライブゲージの終了色 (最大時)
  52.   GAUGE_MAX_END_COLOR      = 2
  53.  
  54.   # ◆ ドライブゲージの Y 座標補正値
  55.   #  -8 にすると、HP/MP ゲージと同じ位置になります。
  56.   GAUGE_OFFSET_Y = -8
  57.   # ◆ ゲージ蓄積量の数値表記
  58.   #   0 .. なし  ※ゲージが 2 本以上の場合は非推奨
  59.   #   1 .. 即値 (蓄積量そのまま)
  60.   #   2 .. 割合 --> x%
  61.   #   3 .. 割合 (詳細1) --> x.x%
  62.   #   4 .. 割合 (詳細2) --> x.xx%
  63.   #   5 .. 蓄積済み本数
  64.   GAUGE_VALUE_STYLE = 3
  65.   # ◆ ゲージ蓄積量のフォントサイズ
  66.   #  大きくしすぎると名前に被ります。
  67.   GAUGE_VALUE_FONT_SIZE = 14
  68.  
  69.   # ◆ 死亡(HP 0)時にドライブゲージを 0 にする
  70.   EMPTY_ON_DEAD = true
  71.  
  72.   # ◆ ドライブゲージを表示しないアクター
  73.   #  ゲージを隠すアクターのIDを配列に格納。
  74.   HIDE_GAUGE_ACTOR = []
  75.   # ◆ 非戦闘時はドライブゲージを隠す
  76.   HIDE_GAUGE_NOT_IN_BATTLE = true
  77.   # ◆ オーバードライブスキル未修得ならゲージを隠す
  78.   HIDE_GAUGE_NO_OD_SKILLS  = true
  79.   # ◆ ゲージを隠している場合はゲージを増加させない
  80.   NOT_GAIN_GAUGE_HIDING    = true
  81.  
  82.   # ◆ ゲージ不足のときはオーバードライブスキルを隠す
  83.   HIDE_SKILL_LACK_OF_GAUGE = false
  84. end
  85. end
  86.  
  87. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
  88.  
  89. $imported = {} if $imported == nil
  90. $imported["OverDrive"] = true
  91.  
  92. module KGC::OverDrive
  93.   # ドライブタイプ
  94.   module Type
  95.     ATTACK  = 0  # 攻撃
  96.     DAMAGE  = 1  # 被ダメージ
  97.     VICTORY = 2  # 勝利
  98.     ESCAPE  = 3  # 逃走
  99.     ALONE   = 4  # 孤独
  100.     ACTION  = 5  # 行動
  101.     FATAL   = 6  # 瀕死
  102.     GUARD   = 7  # 防御
  103.   end
  104.  
  105.   # 蓄積量表記
  106.   module ValueStyle
  107.     NONE         = 0  # なし
  108.     IMMEDIATE    = 1  # 即値
  109.     RATE         = 2  # 割合
  110.     RATE_DETAIL1 = 3  # 割合 (詳細1)
  111.     RATE_DETAIL2 = 4  # 割合 (詳細2)
  112.     NUMBER       = 5  # 蓄積済み本数
  113.   end
  114.  
  115.   # 正規表現
  116.   module Regexp
  117.     # スキル
  118.     module Skill
  119.       # オーバードライブ
  120.       OVER_DRIVE = /<(?:OVER_DRIVE|オーバードライブ)\s*(\d+)?>/i
  121.       # ゲージ増加率
  122.       OD_GAIN_RATE = /<(?:OD_GAIN_RATE|ODゲージ増加率)\s*(\d+)[%%]?>/i
  123.     end
  124.   end
  125. end
  126.  
  127. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
  128.  
  129. #==============================================================================
  130. # □ KGC::Commands
  131. #==============================================================================
  132.  
  133. module KGC
  134. module Commands
  135.   module_function
  136.   #--------------------------------------------------------------------------
  137.   # ○ アクターのドライブゲージの増減
  138.   #     actor_id : アクター ID (-1 : パーティ全体)
  139.   #     value    : 増加量 (マイナスも可)
  140.   #--------------------------------------------------------------------------
  141.   def gain_actor_od_gauge(actor_id, value)
  142.     if actor_id == -1
  143.       # 生存メンバー全員のゲージを操作
  144.       $game_party.existing_members.each { |actor|
  145.         actor.overdrive += value
  146.       }
  147.     else
  148.       actor = $game_actors[actor_id]
  149.       actor.overdrive += value if actor != nil && actor.exist?
  150.     end
  151.   end
  152.   #--------------------------------------------------------------------------
  153.   # ○ エネミーのドライブゲージの増減
  154.   #     enemy_index : エネミー index (-1 : 全体)
  155.   #     value       : 増加量 (マイナスも可)
  156.   #--------------------------------------------------------------------------
  157.   def gain_enemy_od_gauge(enemy_index, value)
  158.     if enemy_index == -1
  159.       # 生存エネミー全員のゲージを操作
  160.       $game_troop.existing_members.each { |enemy|
  161.         enemy.overdrive += value
  162.       }
  163.     else
  164.       enemy = $game_troop.members[enemy_index]
  165.       enemy.overdrive += value if enemy != nil && enemy.exist?
  166.     end
  167.   end
  168.   #--------------------------------------------------------------------------
  169.   # ○ アクターのドライブゲージの取得
  170.   #     actor_id    : アクター ID
  171.   #     variable_id : 戻り値を格納する変数 ID
  172.   #--------------------------------------------------------------------------
  173.   def get_actor_od_gauge(actor_id, variable_id = 0)
  174.     actor = $game_actors[actor_id]
  175.     n = (actor != nil ? actor.overdrive : 0)
  176.     if variable_id > 0
  177.       $game_variables[variable_id] = n
  178.     end
  179.     return n
  180.   end
  181.   #--------------------------------------------------------------------------
  182.   # ○ エネミーのドライブゲージの取得
  183.   #     enemy_index : エネミー index
  184.   #     variable_id : 戻り値を格納する変数 ID
  185.   #--------------------------------------------------------------------------
  186.   def get_enemy_od_gauge(enemy_index, variable_id = 0)
  187.     enemy = $game_troop.members[enemy_index]
  188.     n = (enemy != nil ? enemy.overdrive : 0)
  189.     if variable_id > 0
  190.       $game_variables[variable_id] = n
  191.     end
  192.     return n
  193.   end
  194.   #--------------------------------------------------------------------------
  195.   # ○ アクターのドライブゲージの本数を設定
  196.   #     actor_id : アクター ID (-1 : パーティ全体)
  197.   #     number   : ゲージ本数
  198.   #--------------------------------------------------------------------------
  199.   def set_actor_od_gauge_number(actor_id, number)
  200.     if actor_id == -1
  201.       # メンバー全員の本数を設定
  202.       $game_party.members.each { |actor|
  203.         actor.drive_gauge_number = number
  204.       }
  205.     else
  206.       actor = $game_actors[actor_id]
  207.       actor.drive_gauge_number = number if actor != nil
  208.     end
  209.   end
  210.   #--------------------------------------------------------------------------
  211.   # ○ エネミーのドライブゲージの本数を設定
  212.   #     enemy_index : エネミー index (-1 : 全体)
  213.   #     number   : ゲージ本数
  214.   #--------------------------------------------------------------------------
  215.   def set_enemy_od_gauge_number(enemy_index, number)
  216.     if enemy_index == -1
  217.       # 生存エネミー全員の本数を設定
  218.       $game_troop.members.each { |enemy|
  219.         enemy.drive_gauge_number = number
  220.       }
  221.     else
  222.       enemy = $game_troop.members[enemy_index]
  223.       enemy.drive_gauge_number = number if enemy != nil
  224.     end
  225.   end
  226.   #--------------------------------------------------------------------------
  227.   # ○ アクターのドライブゲージが最大か判定
  228.   #     actor_id : アクター ID
  229.   #--------------------------------------------------------------------------
  230.   def actor_od_gauge_max?(actor_id)
  231.     actor = $game_actors[actor_id]
  232.     return false if actor == nil
  233.     return actor.overdrive == actor.max_overdrive
  234.   end
  235.   #--------------------------------------------------------------------------
  236.   # ○ エネミーのドライブゲージが最大か判定
  237.   #     enemy_index : エネミー index
  238.   #--------------------------------------------------------------------------
  239.   def enemy_od_gauge_max?(enemy_index)
  240.     enemy = $game_troop.members[enemy_index]
  241.     return false if enemy == nil
  242.     return enemy.overdrive == enemy.max_overdrive
  243.   end
  244.   #--------------------------------------------------------------------------
  245.   # ○ アクターのドライブタイプの変更
  246.   #     actor_id : アクター ID (-1 : パーティ全体)
  247.   #     types    : ドライブタイプの配列 (省略時 : 初期化)
  248.   #--------------------------------------------------------------------------
  249.   def set_actor_drive_type(actor_id, types = nil)
  250.     if actor_id == -1
  251.       # メンバー全員のドライブタイプを変更
  252.       $game_party.members.each { |actor|
  253.         actor.drive_type = types
  254.       }
  255.     else
  256.       actor = $game_actors[actor_id]
  257.       actor.drive_type = types if actor != nil
  258.     end
  259.   end
  260.   #--------------------------------------------------------------------------
  261.   # ○ エネミーのドライブタイプの変更
  262.   #     enemy_index : エネミー index (-1 : 全体)
  263.   #     types       : ドライブタイプの配列 (省略時 : 初期化)
  264.   #--------------------------------------------------------------------------
  265.   def set_enemy_drive_type(enemy_index, types = nil)
  266.     if enemy_index == -1
  267.       # エネミー全員のドライブタイプを変更
  268.       $game_troop.members.each { |enemy|
  269.         enemy.drive_type = types
  270.       }
  271.     else
  272.       enemy = $game_troop.members[enemy_index]
  273.       enemy.drive_type = types if enemy != nil
  274.     end
  275.   end
  276. end
  277. end
  278.  
  279. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
  280.  
  281. #==============================================================================
  282. # ■ RPG::Skill
  283. #==============================================================================
  284.  
  285. class RPG::Skill < RPG::UsableItem
  286.   #--------------------------------------------------------------------------
  287.   # ○ オーバードライブのキャッシュ生成
  288.   #--------------------------------------------------------------------------
  289.   def create_overdrive_cache
  290.     @__is_overdrive = false
  291.     @__od_cost = KGC::OverDrive::GAUGE_MAX
  292.     @__od_gain_rate = 100
  293.  
  294.     self.note.split(/[\r\n]+/).each { |line|
  295.       case line
  296.       when KGC::OverDrive::Regexp::Skill::OVER_DRIVE
  297.         # オーバードライブ
  298.         @__is_overdrive = true
  299.         @__od_cost = $1.to_i if $1 != nil
  300.       when KGC::OverDrive::Regexp::Skill::OD_GAIN_RATE
  301.         # ゲージ増加率
  302.         @__od_gain_rate = $1.to_i
  303.       end
  304.     }
  305.  
  306.     # ドライブスキルでなければ、ゲージ消費量 0
  307.     unless @__is_overdrive
  308.       @__od_cost = 0
  309.     end
  310.   end
  311.   #--------------------------------------------------------------------------
  312.   # ○ ドライブスキルであるか
  313.   #--------------------------------------------------------------------------
  314.   def overdrive?
  315.     create_overdrive_cache if @__is_overdrive == nil
  316.     return @__is_overdrive
  317.   end
  318.   #--------------------------------------------------------------------------
  319.   # ○ ドライブゲージ消費量
  320.   #--------------------------------------------------------------------------
  321.   def od_cost
  322.     create_overdrive_cache if @__od_cost == nil
  323.     return @__od_cost
  324.   end
  325.   #--------------------------------------------------------------------------
  326.   # ○ ドライブゲージ増加率
  327.   #--------------------------------------------------------------------------
  328.   def od_gain_rate
  329.     create_overdrive_cache if @__od_gain_rate == nil
  330.     return @__od_gain_rate
  331.   end
  332. end
  333.  
  334. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
  335.  
  336. #==============================================================================
  337. # ■ Game_Battler
  338. #==============================================================================
  339.  
  340. class Game_Battler
  341.   #--------------------------------------------------------------------------
  342.   # ● 公開インスタンス変数
  343.   #--------------------------------------------------------------------------
  344.   attr_writer   :drive_type               # ドライブタイプ
  345.   #--------------------------------------------------------------------------
  346.   # ○ ドライブゲージ量取得
  347.   #--------------------------------------------------------------------------
  348.   def overdrive
  349.     @overdrive = 0 if @overdrive == nil
  350.     return @overdrive
  351.   end
  352.   #--------------------------------------------------------------------------
  353.   # ○ ドライブゲージの操作
  354.   #--------------------------------------------------------------------------
  355.   def overdrive=(value)
  356.     @overdrive = [[value, max_overdrive].min, 0].max
  357.   end
  358.   #--------------------------------------------------------------------------
  359.   # ○ ドライブゲージ最大量取得
  360.   #--------------------------------------------------------------------------
  361.   def max_overdrive
  362.     return KGC::OverDrive::GAUGE_MAX * drive_gauge_number
  363.   end
  364.   #--------------------------------------------------------------------------
  365.   # ○ ドライブゲージ本数取得
  366.   #--------------------------------------------------------------------------
  367.   def drive_gauge_number
  368.     if @drive_gauge_number == nil
  369.       @drive_gauge_number = KGC::OverDrive::DEFAULT_GAUGE_NUMBER
  370.     end
  371.     return @drive_gauge_number
  372.   end
  373.   #--------------------------------------------------------------------------
  374.   # ○ ドライブゲージ本数の操作
  375.   #--------------------------------------------------------------------------
  376.   def drive_gauge_number=(value)
  377.     @drive_gauge_number = [value, 1].max
  378.   end
  379.   #--------------------------------------------------------------------------
  380.   # ○ ドライブタイプの取得
  381.   #--------------------------------------------------------------------------
  382.   def drive_type
  383.     return []
  384.   end
  385.   #--------------------------------------------------------------------------
  386.   # ○ ドライブスキル習得済み判定
  387.   #--------------------------------------------------------------------------
  388.   def overdrive_skill_learned?
  389.     return true
  390.   end
  391.   #--------------------------------------------------------------------------
  392.   # ○ ゲージ表示判定
  393.   #--------------------------------------------------------------------------
  394.   def od_gauge_visible?
  395.     return false
  396.   end
  397.   #--------------------------------------------------------------------------
  398.   # ○ ゲージ増加可否判定
  399.   #--------------------------------------------------------------------------
  400.   def can_gain_overdrive?
  401.     return true
  402.   end
  403.   #--------------------------------------------------------------------------
  404.   # ○ 攻撃時増加判定
  405.   #--------------------------------------------------------------------------
  406.   def drive_attack?
  407.     return drive_type.include?(KGC::OverDrive::Type::ATTACK)
  408.   end
  409.   #--------------------------------------------------------------------------
  410.   # ○ 被ダメージ時増加判定
  411.   #--------------------------------------------------------------------------
  412.   def drive_damage?
  413.     return drive_type.include?(KGC::OverDrive::Type::DAMAGE)
  414.   end
  415.   #--------------------------------------------------------------------------
  416.   # ○ 勝利時増加判定
  417.   #--------------------------------------------------------------------------
  418.   def drive_victory?
  419.     return drive_type.include?(KGC::OverDrive::Type::VICTORY)
  420.   end
  421.   #--------------------------------------------------------------------------
  422.   # ○ 逃走時増加判定
  423.   #--------------------------------------------------------------------------
  424.   def drive_escape?
  425.     return drive_type.include?(KGC::OverDrive::Type::ESCAPE)
  426.   end
  427.   #--------------------------------------------------------------------------
  428.   # ○ 孤独時増加判定
  429.   #--------------------------------------------------------------------------
  430.   def drive_alone?
  431.     return drive_type.include?(KGC::OverDrive::Type::ALONE)
  432.   end
  433.   #--------------------------------------------------------------------------
  434.   # ○ 行動時増加判定
  435.   #--------------------------------------------------------------------------
  436.   def drive_action?
  437.     return drive_type.include?(KGC::OverDrive::Type::ACTION)
  438.   end
  439.   #--------------------------------------------------------------------------
  440.   # ○ 瀕死時増加判定
  441.   #--------------------------------------------------------------------------
  442.   def drive_fatal?
  443.     return drive_type.include?(KGC::OverDrive::Type::FATAL)
  444.   end
  445.   #--------------------------------------------------------------------------
  446.   # ○ 防御時増加判定
  447.   #--------------------------------------------------------------------------
  448.   def drive_guard?
  449.     return drive_type.include?(KGC::OverDrive::Type::GUARD)
  450.   end
  451.   #--------------------------------------------------------------------------
  452.   # ● ステートの付加
  453.   #     state_id : ステート ID
  454.   #--------------------------------------------------------------------------
  455.   alias add_state_KGC_OverDrive add_state
  456.   def add_state(state_id)
  457.     add_state_KGC_OverDrive(state_id)
  458.  
  459.     reset_overdrive_on_dead if dead?
  460.   end
  461.   #--------------------------------------------------------------------------
  462.   # ○ スキルの消費ドライブゲージ計算
  463.   #     skill : スキル
  464.   #--------------------------------------------------------------------------
  465.   def calc_od_cost(skill)
  466.     return 0 unless skill.is_a?(RPG::Skill)
  467.  
  468.     return skill.od_cost
  469.   end
  470.   #--------------------------------------------------------------------------
  471.   # ● スキルの使用可能判定
  472.   #     skill : スキル
  473.   #--------------------------------------------------------------------------
  474.   alias skill_can_use_KGC_OverDrive? skill_can_use?
  475.   def skill_can_use?(skill)
  476.     return false unless skill_can_use_KGC_OverDrive?(skill)
  477.  
  478.     return false if calc_od_cost(skill) > overdrive
  479.     return true
  480.   end
  481.   #--------------------------------------------------------------------------
  482.   # ● ダメージの反映
  483.   #     user : スキルかアイテムの使用者
  484.   #    呼び出し前に @hp_damage、@mp_damage、@absorbed が設定されていること。
  485.   #--------------------------------------------------------------------------
  486.   alias execute_damage_KGC_OverDrive execute_damage
  487.   def execute_damage(user)
  488.     execute_damage_KGC_OverDrive(user)
  489.  
  490.     increase_overdrive(user)
  491.   end
  492.   #--------------------------------------------------------------------------
  493.   # ○ 死亡時ドライブゲージ初期化処理
  494.   #--------------------------------------------------------------------------
  495.   def reset_overdrive_on_dead
  496.     return unless KGC::OverDrive::EMPTY_ON_DEAD
  497.  
  498.     self.overdrive = 0
  499.   end
  500.   #--------------------------------------------------------------------------
  501.   # ○ ドライブゲージ増加処理
  502.   #     attacker : 攻撃者
  503.   #--------------------------------------------------------------------------
  504.   def increase_overdrive(attacker = nil)
  505.     return unless attacker.is_a?(Game_Battler)  # 攻撃者がバトラーでない
  506.     return if self.class == attacker.class      # 攻撃側と防御側が同じ
  507.     return if hp_damage == 0 && mp_damage == 0  # ダメージなし
  508.  
  509.     if can_gain_overdrive?
  510.       increase_attacker_overdrive(attacker)
  511.       increase_defender_overdrive(attacker)
  512.     end
  513.     reset_overdrive_on_dead if dead?
  514.   end
  515.   #--------------------------------------------------------------------------
  516.   # ○ 攻撃側のドライブゲージ増加処理
  517.   #     attacker : 攻撃者
  518.   #--------------------------------------------------------------------------
  519.   def increase_attacker_overdrive(attacker)
  520.     return unless attacker.drive_attack?  # ドライブタイプ「攻撃」なし
  521.  
  522.     od_gain = KGC::OverDrive::GAIN_RATE[KGC::OverDrive::Type::ATTACK]
  523.     if attacker.action.kind == 1
  524.       rate = attacker.action.skill.od_gain_rate  # スキルの倍率を適用
  525.       od_gain = od_gain * rate / 100
  526.       if rate > 0
  527.         od_gain = [od_gain, 1].max
  528.       elsif rate < 0
  529.         od_gain = [od_gain, -1].min
  530.       end
  531.     end
  532.     attacker.overdrive += od_gain
  533.   end
  534.   #--------------------------------------------------------------------------
  535.   # ○ 防御側のドライブゲージ増加処理
  536.   #     attacker : 攻撃者
  537.   #--------------------------------------------------------------------------
  538.   def increase_defender_overdrive(attacker)
  539.     return unless self.drive_damage?  # ドライブタイプ「ダメージ」なし
  540.  
  541.     rate = KGC::OverDrive::GAIN_RATE[KGC::OverDrive::Type::DAMAGE]
  542.     od_gain = 0
  543.     od_gain += hp_damage * rate / maxhp if hp_damage > 0
  544.     od_gain += mp_damage * rate / maxmp if mp_damage > 0 && maxmp > 0
  545.     if rate > 0
  546.       od_gain = [od_gain, 1].max
  547.     elsif rate < 0
  548.       od_gain = [od_gain, -1].min
  549.     end
  550.     self.overdrive += od_gain
  551.   end
  552.   #--------------------------------------------------------------------------
  553.   # ● スキルの効果適用
  554.   #     user  : スキルの使用者
  555.   #     skill : スキル
  556.   #--------------------------------------------------------------------------
  557.   alias skill_effect_KGC_OverDrive skill_effect
  558.   def skill_effect(user, skill)
  559.     skill_effect_KGC_OverDrive(user, skill)
  560.  
  561.     # アイテムでスキルを発動した場合はゲージ消費判定を無視
  562.     if $imported["ReproduceFunctions"] && $game_temp.exec_skill_on_item
  563.       return
  564.     end
  565.   end
  566. end
  567.  
  568. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
  569.  
  570. #==============================================================================
  571. # ■ Game_Actor
  572. #==============================================================================
  573.  
  574. class Game_Actor < Game_Battler
  575.   #--------------------------------------------------------------------------
  576.   # ● セットアップ
  577.   #     actor_id : アクター ID
  578.   #--------------------------------------------------------------------------
  579.   alias setup_KGC_OverDrive setup
  580.   def setup(actor_id)
  581.     setup_KGC_OverDrive(actor_id)
  582.  
  583.     @overdrive = 0
  584.     @drive_type = nil
  585.   end
  586.   #--------------------------------------------------------------------------
  587.   # ○ ドライブタイプの取得
  588.   #--------------------------------------------------------------------------
  589.   def drive_type
  590.     unless @drive_type.is_a?(Array)
  591.       return KGC::OverDrive::DEFAULT_ACTOR_DRIVE_TYPE
  592.     end
  593.     return @drive_type
  594.   end
  595.   #--------------------------------------------------------------------------
  596.   # ○ ドライブスキル習得済み判定
  597.   #--------------------------------------------------------------------------
  598.   def overdrive_skill_learned?
  599.     result = false
  600.     # 一時的に戦闘中フラグを解除
  601.     last_in_battle = $game_temp.in_battle
  602.     $game_temp.in_battle = false
  603.  
  604.     self.skills.each { |skill|
  605.       if skill.overdrive?
  606.         result = true
  607.         break
  608.       end
  609.     }
  610.     $game_temp.in_battle = last_in_battle
  611.     return result
  612.   end
  613.   #--------------------------------------------------------------------------
  614.   # ○ ゲージ増加可否判定
  615.   #--------------------------------------------------------------------------
  616.   def can_gain_overdrive?
  617.     if KGC::OverDrive::NOT_GAIN_GAUGE_HIDING
  618.       # 非表示
  619.       return false if KGC::OverDrive::HIDE_GAUGE_ACTOR.include?(self.id)
  620.     end
  621.     if KGC::OverDrive::HIDE_GAUGE_NO_OD_SKILLS
  622.       # 未修得
  623.       return false unless overdrive_skill_learned?
  624.     end
  625.  
  626.     return true
  627.   end
  628.   #--------------------------------------------------------------------------
  629.   # ○ ゲージ表示判定
  630.   #--------------------------------------------------------------------------
  631.   def od_gauge_visible?
  632.     # 戦闘中非表示
  633.     if KGC::OverDrive::HIDE_GAUGE_NOT_IN_BATTLE && !$game_temp.in_battle
  634.       return false
  635.     end
  636.     # 非表示
  637.     return false if KGC::OverDrive::HIDE_GAUGE_ACTOR.include?(self.id)
  638.     # ゲージ増加不可
  639.     return false unless can_gain_overdrive?
  640.  
  641.     return true
  642.   end
  643. end
  644.  
  645. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
  646.  
  647. #==============================================================================
  648. # ■ Game_Enemy
  649. #==============================================================================
  650.  
  651. class Game_Enemy < Game_Battler
  652.   #--------------------------------------------------------------------------
  653.   # ● オブジェクト初期化
  654.   #     index    : 敵グループ内インデックス
  655.   #     enemy_id : 敵キャラ ID
  656.   #--------------------------------------------------------------------------
  657.   alias initialize_KGC_OverDrive initialize
  658.   def initialize(index, enemy_id)
  659.     initialize_KGC_OverDrive(index, enemy_id)
  660.  
  661.     @overdrive = 0
  662.     @drive_type = nil
  663.   end
  664.   #--------------------------------------------------------------------------
  665.   # ○ ドライブタイプの取得
  666.   #--------------------------------------------------------------------------
  667.   def drive_type
  668.     unless @drive_type.is_a?(Array)
  669.       return KGC::OverDrive::DEFAULT_ENEMY_DRIVE_TYPE
  670.     end
  671.     return @drive_type
  672.   end
  673. end
  674.  
  675. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
  676.  
  677. #==============================================================================
  678. # ■ Window_Base
  679. #==============================================================================
  680.  
  681. class Window_Base < Window
  682.   #--------------------------------------------------------------------------
  683.   # ○ ドライブゲージの通常時の色 1 の取得
  684.   #--------------------------------------------------------------------------
  685.   def od_gauge_normal_color1
  686.     color = KGC::OverDrive::GAUGE_NORMAL_START_COLOR
  687.     return (color.is_a?(Integer) ? text_color(color) : color)
  688.   end
  689.   #--------------------------------------------------------------------------
  690.   # ○ ドライブゲージの通常時の色 2 の取得
  691.   #--------------------------------------------------------------------------
  692.   def od_gauge_normal_color2
  693.     color = KGC::OverDrive::GAUGE_NORMAL_END_COLOR
  694.     return (color.is_a?(Integer) ? text_color(color) : color)
  695.   end
  696.   #--------------------------------------------------------------------------
  697.   # ○ ドライブゲージの最大時の色 1 の取得
  698.   #--------------------------------------------------------------------------
  699.   def od_gauge_max_color1
  700.     color = KGC::OverDrive::GAUGE_MAX_START_COLOR
  701.     return (color.is_a?(Integer) ? text_color(color) : color)
  702.   end
  703.   #--------------------------------------------------------------------------
  704.   # ○ ドライブゲージの最大時の色 2 の取得
  705.   #--------------------------------------------------------------------------
  706.   def od_gauge_max_color2
  707.     color = KGC::OverDrive::GAUGE_MAX_END_COLOR
  708.     return (color.is_a?(Integer) ? text_color(color) : color)
  709.   end
  710.   #--------------------------------------------------------------------------
  711.   # ● 名前の描画
  712.   #     actor : アクター
  713.   #     x     : 描画先 X 座標
  714.   #     y     : 描画先 Y 座標
  715.   #--------------------------------------------------------------------------
  716.   alias draw_actor_name_KGC_OverDrive draw_actor_name
  717.   def draw_actor_name(actor, x, y)
  718.     draw_actor_od_gauge(actor, x+50, y, 50)
  719.  
  720.     draw_actor_name_KGC_OverDrive(actor, x, y)
  721.   end
  722.   #--------------------------------------------------------------------------
  723.   # ○ ドライブゲージの描画
  724.   #     actor : アクター
  725.   #     x     : 描画先 X 座標
  726.   #     y     : 描画先 Y 座標
  727.   #     width : 幅
  728.   #--------------------------------------------------------------------------
  729.   def draw_actor_od_gauge(actor, x, y, width = 120)  
  730.     return unless actor.od_gauge_visible?
  731.     draw_gauge_base(x, y, width)
  732.     n = actor.overdrive % KGC::OverDrive::GAUGE_MAX
  733.     n = KGC::OverDrive::GAUGE_MAX if actor.overdrive == actor.max_overdrive
  734.     gw = width * n / KGC::OverDrive::GAUGE_MAX
  735.     gc1 = (gw == width ? od_gauge_max_color1 : od_gauge_normal_color1)
  736.     gc2 = (gw == width ? od_gauge_max_color2 : od_gauge_normal_color2)
  737.     self.contents.fill_rect(x, y + WLH + KGC::OverDrive::GAUGE_OFFSET_Y,
  738.       width, 6, gauge_back_color)
  739.     self.contents.gradient_fill_rect(
  740.       x, y + WLH + KGC::OverDrive::GAUGE_OFFSET_Y, gw, 6, gc1, gc2)
  741.     draw_actor_od_gauge_value(actor, x, y, width)
  742.  
  743.   end
  744.   #--------------------------------------------------------------------------
  745.   # ○ ドライブゲージの描画
  746.   #     actor : アクター
  747.   #     x     : 描画先 X 座標
  748.   #     y     : 描画先 Y 座標
  749.   #     width : 幅
  750.   #--------------------------------------------------------------------------
  751.   def draw_actor_od_gauge_value(actor, x, y, width = 120)
  752.     text = ""
  753.     value = actor.overdrive * 100.0 / KGC::OverDrive::GAUGE_MAX
  754.     case KGC::OverDrive::GAUGE_VALUE_STYLE
  755.     when KGC::OverDrive::ValueStyle::IMMEDIATE
  756.       text = actor.overdrive.to_s
  757.     when KGC::OverDrive::ValueStyle::RATE
  758.       text = sprintf("%d%%", actor.overdrive * 100 / KGC::OverDrive::GAUGE_MAX)
  759.     when KGC::OverDrive::ValueStyle::RATE_DETAIL1
  760.       text = sprintf("%0.1f%%", value)
  761.     when KGC::OverDrive::ValueStyle::RATE_DETAIL2
  762.       text = sprintf("%0.2f%%", value)
  763.     when KGC::OverDrive::ValueStyle::NUMBER
  764.       text = "#{actor.overdrive / KGC::OverDrive::GAUGE_MAX}"
  765.     else
  766.       return
  767.     end
  768.  
  769.     last_font_size = self.contents.font.size
  770.     new_font_size = KGC::OverDrive::GAUGE_VALUE_FONT_SIZE
  771.     self.contents.font.size = new_font_size
  772.     self.contents.draw_text(
  773.       x, y + WLH + KGC::OverDrive::GAUGE_OFFSET_Y - new_font_size / 2,
  774.       width, new_font_size, text, 2)
  775.     self.contents.font.size = last_font_size
  776.   end
  777. end
  778.  
  779. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
  780.  
  781. #==============================================================================
  782. # ■ Window_Skill
  783. #==============================================================================
  784.  
  785. if KGC::OverDrive::HIDE_SKILL_LACK_OF_GAUGE
  786.  
  787. class Window_Skill < Window_Selectable
  788.   #--------------------------------------------------------------------------
  789.   # ○ スキルをリストに含めるかどうか
  790.   #     skill : スキル
  791.   #--------------------------------------------------------------------------
  792.   unless $@
  793.     alias include_KGC_OverDrive? include? if method_defined?(:include?)
  794.   end
  795.   def include?(skill)
  796.     return false if skill == nil
  797.  
  798.     if defined?(include_KGC_OverDrive?)
  799.       return false unless include_KGC_OverDrive?(skill)
  800.     end
  801.  
  802.     if skill.overdrive?
  803.       return (@actor.calc_od_cost(skill) <= @actor.overdrive)
  804.     else
  805.       return true
  806.     end
  807.   end
  808.  
  809. if method_defined?(:include_KGC_OverDrive?)
  810.   #--------------------------------------------------------------------------
  811.   # ● リフレッシュ
  812.   #--------------------------------------------------------------------------
  813.   def refresh
  814.     @data = []
  815.     for skill in @actor.skills
  816.       next unless include?(skill)
  817.       @data.push(skill)
  818.       if skill.id == @actor.last_skill_id
  819.         self.index = @data.size - 1
  820.       end
  821.     end
  822.     @item_max = @data.size
  823.     create_contents
  824.     for i in 0...@item_max
  825.       draw_item(i)
  826.     end
  827.   end
  828. end
  829.  
  830. end  # <-- class
  831. end  # <-- if KGC::OverDrive::HIDE_SKILL_LACK_OF_GAUGE
  832.  
  833. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
  834.  
  835. #==============================================================================
  836. # ■ Scene_Skill
  837. #==============================================================================
  838.  
  839. class Scene_Skill < Scene_Base
  840.   #--------------------------------------------------------------------------
  841.   # ● スキルの使用 (味方対象以外の使用効果を適用)
  842.   #--------------------------------------------------------------------------
  843.   alias use_skill_nontarget_KGC_OverDrive use_skill_nontarget
  844.   def use_skill_nontarget
  845.     consume_od_gauge
  846.  
  847.     use_skill_nontarget_KGC_OverDrive
  848.   end
  849.   #--------------------------------------------------------------------------
  850.   # ○ スキル使用時のドライブゲージ消費
  851.   #--------------------------------------------------------------------------
  852.   def consume_od_gauge
  853.     @actor.overdrive -= @actor.calc_od_cost(@skill)
  854.   end
  855. end
  856.  
  857. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
  858.  
  859. #==============================================================================
  860. # ■ Scene_Battle
  861. #==============================================================================
  862.  
  863. class Scene_Battle < Scene_Base
  864.   #--------------------------------------------------------------------------
  865.   # ● 戦闘終了
  866.   #     result : 結果 (0:勝利 1:逃走 2:敗北)
  867.   #--------------------------------------------------------------------------
  868.   alias battle_end_KGC_OverDrive battle_end
  869.   def battle_end(result)
  870.     increase_overdrive_on_battle_end(result)
  871.  
  872.     battle_end_KGC_OverDrive(result)
  873.   end
  874.   #--------------------------------------------------------------------------
  875.   # ○ 戦闘終了時のドライブゲージ増加処理
  876.   #     result : 結果 (0:勝利 1:逃走 2:敗北)
  877.   #--------------------------------------------------------------------------
  878.   def increase_overdrive_on_battle_end(result)
  879.     case result
  880.     when 0  # 勝利
  881.       od_gain = KGC::OverDrive::GAIN_RATE[KGC::OverDrive::Type::VICTORY]
  882.       $game_party.existing_members.each { |actor|
  883.         actor.overdrive += od_gain if actor.drive_victory?
  884.       }
  885.     when 1  # 逃走
  886.       od_gain = KGC::OverDrive::GAIN_RATE[KGC::OverDrive::Type::ESCAPE]
  887.       $game_party.existing_members.each { |actor|
  888.         actor.overdrive += od_gain if actor.drive_escape?
  889.       }
  890.     end
  891.   end
  892.   #--------------------------------------------------------------------------
  893.   # ● 戦闘行動の実行
  894.   #--------------------------------------------------------------------------
  895.   alias execute_action_KGC_OverDrive execute_action
  896.   def execute_action
  897.     increase_overdrive_on_action
  898.  
  899.     execute_action_KGC_OverDrive
  900.   end
  901.   #--------------------------------------------------------------------------
  902.   # ○ 行動時のドライブゲージ増加処理
  903.   #--------------------------------------------------------------------------
  904.   def increase_overdrive_on_action
  905.     battler = @active_battler
  906.     od_gain = 0
  907.     unit = (battler.actor? ? $game_party : $game_troop)
  908.  
  909.     # 孤独戦闘
  910.     if battler.drive_alone? && unit.existing_members.size == 1
  911.       od_gain += KGC::OverDrive::GAIN_RATE[KGC::OverDrive::Type::ALONE]
  912.     end
  913.     # 行動
  914.     if battler.drive_action?
  915.       od_gain += KGC::OverDrive::GAIN_RATE[KGC::OverDrive::Type::ACTION]
  916.     end
  917.     # 瀕死
  918.     if battler.drive_fatal? && battler.hp < battler.maxhp / 4
  919.       od_gain += KGC::OverDrive::GAIN_RATE[KGC::OverDrive::Type::FATAL]
  920.     end
  921.     # 防御
  922.     if battler.drive_guard? && battler.action.kind == 0 &&
  923.         battler.action.basic == 1
  924.       od_gain += KGC::OverDrive::GAIN_RATE[KGC::OverDrive::Type::GUARD]
  925.     end
  926.     battler.overdrive += od_gain
  927.   end
  928.   #--------------------------------------------------------------------------
  929.   # ● 戦闘行動の実行 : スキル
  930.   #--------------------------------------------------------------------------
  931.   alias execute_action_skill_KGC_OverDrive execute_action_skill
  932.   def execute_action_skill
  933.     execute_action_skill_KGC_OverDrive
  934.  
  935.     consume_od_gauge
  936.   end
  937.   #--------------------------------------------------------------------------
  938.   # ○ スキル使用時のドライブゲージ消費
  939.   #--------------------------------------------------------------------------
  940.   def consume_od_gauge
  941.     skill = @active_battler.action.skill
  942.     @active_battler.overdrive -= @active_battler.calc_od_cost(skill)
  943.   end
  944. end

RUBY 代码复制
  1. #==============================================================================
  2. # ■ Window_BattleStatus
  3. #==============================================================================
  4. class Window_BattleStatus < Window_Selectable
  5.   # スキンファイル名
  6.   BTSKIN_10 = "Btskin_odg"   # スキンファイル名
  7.   BTSKIN_10XY = [280, 7]     # スキン座標 [x, y]
  8.   #--------------------------------------------------------------------------
  9.   # ★ エイリアス
  10.   #--------------------------------------------------------------------------
  11.   alias initialize_str11pog initialize
  12.   def initialize(f = false)
  13.     @odgw = (Cache.system(BTSKIN_10)).width
  14.     initialize_str11pog(f)
  15.   end
  16.   #--------------------------------------------------------------------------
  17.   # ● アイテム作成
  18.   #--------------------------------------------------------------------------
  19.   alias draw_item_str11pog draw_item
  20.   def draw_item(index)
  21.     return unless @f
  22.     actor = $game_party.members[index]
  23.     draw_item_str11pog(index)
  24.     s = @s_sprite[index]
  25.     # ODゲージ
  26.     s[21] = Sprite.new(@viewport)
  27.     s[21].bitmap = Cache.system(BTSKIN_10)
  28.     s[21].x = @x[index] + BTSKIN_B_XY[0] + BTSKIN_10XY[0]
  29.     s[21].y = @y[index] + BTSKIN_B_XY[1] + BTSKIN_10XY[1]
  30.     s[21].z = 4
  31.     w = s[21].bitmap.width
  32.     h = s[21].bitmap.height / 3
  33.     s[21].src_rect.set(0, h, w, h)
  34.     # ODゲージ下地
  35.     s[22] = Sprite.new(@viewport)
  36.     s[22].bitmap = Cache.system(BTSKIN_10)
  37.     s[22].x = @x[index] + BTSKIN_B_XY[0] + BTSKIN_10XY[0]
  38.     s[22].y = @y[index] + BTSKIN_B_XY[1] + BTSKIN_10XY[1]
  39.     s[22].z = 3
  40.     s[22].src_rect.set(0, 0, w, h)
  41.     #
  42.     s[23] = ((@odgw * (actor.overdrive / (actor.max_overdrive * 1.0))) + 1).truncate
  43.     s[21].src_rect.width = s[23]
  44.     # 不可視に
  45.     for l in [21,22]
  46.       s[l].opacity = 0
  47.     end
  48.     # 追加判定
  49.     @s_party[index].push(actor.overdrive)
  50.   end
  51.   #--------------------------------------------------------------------------
  52.   # ● オブジェクト開放
  53.   #--------------------------------------------------------------------------
  54.   alias dispose_str11pog dispose
  55.   def dispose
  56.     dispose_str11pog
  57.     for i in [email]0...@s_sprite.size[/email]
  58.       for l in [21,22]
  59.         @s_sprite[i][l].bitmap.dispose
  60.         @s_sprite[i][l].dispose
  61.       end
  62.     end
  63.   end
  64.   #--------------------------------------------------------------------------
  65.   # ● フレーム更新
  66.   #--------------------------------------------------------------------------
  67.   alias update_str11pog update
  68.   def update
  69.     update_str11pog
  70.     return unless @f
  71.     for i in [email]0...@s_sprite.size[/email]
  72.       s = @s_sprite[i]
  73.       v = (not KGC::OverDrive::HIDE_GAUGE_ACTOR.include?($game_party.members[i].id))
  74.       for l in [21,22]
  75.         s[l].visible = v
  76.       end
  77.       # 不透明度アップ
  78.       if [url=home.php?mod=space&uid=316553]@opacity[/url] < 272
  79.         for l in [21,22]
  80.           s[l].opacity = @opacity
  81.         end
  82.       end
  83.       # OD更新
  84.       update_od(s,$game_party.members[i],@s_party[i])
  85.     end
  86.   end
  87.   #--------------------------------------------------------------------------
  88.   # ● フレーム更新 (OD)
  89.   #--------------------------------------------------------------------------
  90.   def update_od(s,a,m)
  91.     sr = s[21].src_rect
  92.     # 100%フラッシュ!
  93.     if @odgw <= sr.width and Graphics.frame_count % 4 < 2
  94.       s[21].src_rect.y = (s[21].src_rect.height * 2)
  95.     else
  96.       s[21].src_rect.y = s[21].src_rect.height
  97.     end
  98.     # ゲージ更新
  99.     if a.overdrive != m[6]
  100.       s[23] = ((@odgw * (a.overdrive / (a.max_overdrive * 1.0))) + 1).truncate
  101.       m[6] = (a.overdrive)
  102.     end
  103.     if sr.width != s[23]
  104.       if sr.width < s[23]
  105.         sr.width += 1
  106.       else
  107.         sr.width -= 1
  108.       end
  109.       sr.width = s[23] if sr.width.abs <= 1
  110.     end
  111.   end
  112. end


作者: 八月桑    时间: 2013-7-11 09:13
yangjunyin2002 发表于 2013-7-9 14:23
下面两个脚本插进去。素材放进system文件夹里:
要竖着的话可以自己该坐标啊
#_/_/_/_/_/_/_/_/_/_/_/_/_/_ ...

为什么会这样啊 给个范例好了!

QQ截图20130711091344.png (7.28 KB, 下载次数: 17)

QQ截图20130711091344.png

作者: jqkice1    时间: 2013-10-23 20:49
我也是这个问题[/email] 好像[/后面开始的脚本都变成红字了?是语法那里错误了?//之间都是红字




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