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

Project1

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

[RMVX发布] 合击技能

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
1 小时
注册时间
2010-7-2
帖子
18
跳转到指定楼层
1
发表于 2010-7-21 18:14:18 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 qq461627545 于 2010-7-21 18:17 编辑

脚本翻译自KGC,大家也可以光临我的BLOG,
http://blog.sina.com.cn/rpgs
里面还有一些翻译的脚本。
概要:

可以让一个技能使用时进行合击。

范例:
http://www.uushare.com/user/qq461627545/file/3297185

载图:



使用方法:

①合击技能的做成

如在技能的备注写上:



<合击技能>
必要技能 1, 83
必要技能 2, 83
必要技能 3, 83
必要技能 4, 83
最小等级 1 以上
</合击技能>

必要技能 1, 83

就是说。当技能ID1与ID83都一起使用的时候会出现合击



最小等级 1 以上
就是说需要有等级1以上的角色才可以合击。




脚本:
  1. #_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
  2. #_/    ◆ 合击技能 - KGC_CooperationSkill ◆ VX ◆
  3. #_/    ◇ Last update : 2009/08/07 ◇
  4. #_/----------------------------------------------------------------------------
  5. #_/  多个人一起使用的合击技能
  6. #_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
  7. #    翻译:星月桜           http://blog.sina.com.cn/rpgs
  8. #==============================================================================
  9. # ★ 设置項目 - Customize BEGIN ★
  10. #==============================================================================

  11. module KGC
  12. module CooperationSkill
  13.   # ◆ 合击发动名子的分割符号
  14.   NAME_SEPARATOR = "、"

  15.   # ◆ 是否按速度发动技能,
  16.   #    就是说如果合击技能如果在4人当中最后一个发动的话就会没有合击
  17.   #  true  是
  18.   #  false 否
  19.   EXECUTE_ORIGIN_SKILL = false

  20.   # ◆ 是否在目标相同的时候才发动
  21.   #  true  : 是
  22.   #           
  23.   #  false : 否
  24.   #         
  25.   SAME_TARGET_ONLY = true

  26.   # ◆ 怪物是否使用连击技能
  27.   #  true  : 可以。
  28.   #  false : 不可以
  29.   PERMIT_ENEMY = true
  30. end
  31. end

  32. #==============================================================================
  33. # ☆ カスタマイズ項目終了 - Customize END ☆
  34. #==============================================================================

  35. $imported = {} if $imported == nil
  36. $imported["CooperationSkill"] = true

  37. module KGC
  38. module CooperationSkill
  39.   # 合击技能显著等级
  40.   PARAMS = {
  41.     :level_avg => "LEVEL_AVG|平均等级",
  42.     :level_min => "LEVEL_MIN|最[小低]等级",
  43.     :level_max => "LEVEL_MAX|最[大高]等级",
  44.   }

  45.   # 合击技能用属性?状态ID
  46.   ARRAYS = {
  47.     :attack_element => "ATTACK_ELEMENT|攻击属性",
  48.     :state          => "STATE|状态",
  49.   }

  50.   module Regexp
  51.     module Skill
  52.       # 合击技能开始
  53.       BEGIN_COOPERATE = /<(?:COOPERATION_SKILL|合击技能)>/i
  54.       # 合击技能结束
  55.       END_COOPERATE   = /<\/(?:COOPERATION_SKILL|合击技能)>/i
  56.       # 必要技能ID
  57.       NEED_SKILLS = /^\s*(?:NEED_SKILLS?|必要技能)\s*(\d+(?:\s*,\s*\d+)*)\s*/i

  58.       REG_NAME = '[^:\+\-\d\s]+'
  59.       REG_OU   = 'OVER|UNDER|以上|以下'

  60.       # 条件等级
  61.       #  等级在10 以上  
  62.       COOPERATE_PARAMS = /^\s*(#{REG_NAME})\s*(\d+)\s*(#{REG_OU})?\s*$/i
  63.       # 属性?状态ID
  64.       #  状态 1,-2,3  
  65.       COOPERATE_ARRAYS = /^\s*(#{REG_NAME})\s*(\d+(?:\s*,\s*\-?\d+)*)\s*$/i
  66.     end
  67.   end
  68. end
  69. end

  70. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  71. #==============================================================================
  72. # ■ RPG::Skill
  73. #==============================================================================

  74. class RPG::Skill < RPG::UsableItem
  75.   #--------------------------------------------------------------------------
  76.   # ○ 連係スキルであるか
  77.   #--------------------------------------------------------------------------
  78.   def is_cooperation?
  79.     self.note.each_line { |line|
  80.       # 開始タグを探す
  81.       if line =~ KGC::CooperationSkill::Regexp::Skill::BEGIN_COOPERATE
  82.         return true
  83.       end
  84.     }
  85.     return false
  86.   end
  87. end

  88. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  89. #==============================================================================
  90. # ■ Game_Temp
  91. #==============================================================================

  92. class Game_Temp
  93.   #--------------------------------------------------------------------------
  94.   # ● 公開インスタンス変数
  95.   #--------------------------------------------------------------------------
  96.   attr_accessor :judging_cooperation_skill # 連係スキル判定中フラグ
  97.   #--------------------------------------------------------------------------
  98.   # ● オブジェクト初期化
  99.   #--------------------------------------------------------------------------
  100.   alias initialize_KGC_CooperationSkill initialize
  101.   def initialize
  102.     initialize_KGC_CooperationSkill

  103.     @judging_cooperation_skill = false
  104.   end
  105. end

  106. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  107. #==============================================================================
  108. # □ Game_CooperationSkill
  109. #------------------------------------------------------------------------------
  110. #   連係スキルの情報を扱うクラスです。
  111. #==============================================================================

  112. class Game_CooperationSkill
  113.   #--------------------------------------------------------------------------
  114.   # ○ 公開インスタンス変数
  115.   #--------------------------------------------------------------------------
  116.   attr_reader   :id                       # 発動スキル ID
  117.   attr_reader   :need_skills              # 必要スキル ID リスト
  118.   attr_reader   :params                   # 条件パラメータ
  119.   attr_reader   :params_over              # 条件パラメータ: ~以上
  120.   attr_reader   :need_arrays              # 必要属性?ステートリスト
  121.   attr_reader   :disuse_arrays            # 不要属性?ステートリスト
  122.   #--------------------------------------------------------------------------
  123.   # ○ オブジェクト初期化
  124.   #     skill_id : スキル ID
  125.   #     note     : メモ
  126.   #--------------------------------------------------------------------------
  127.   def initialize(skill_id, note)
  128.     @id            = skill_id
  129.     @need_skills   = []
  130.     @params        = {}
  131.     @params_over   = {}
  132.     @need_arrays   = {}
  133.     @disuse_arrays = {}
  134.     parse_note(note)
  135.   end
  136.   #--------------------------------------------------------------------------
  137.   # ○ スキルを取得
  138.   #--------------------------------------------------------------------------
  139.   def skill
  140.     return $data_skills[@id]
  141.   end
  142.   #--------------------------------------------------------------------------
  143.   # ○ メモ欄を解析
  144.   #     note : メモ
  145.   #--------------------------------------------------------------------------
  146.   def parse_note(note)
  147.     coop_flag = false
  148.     note.each_line { |line|
  149.       case line
  150.       when KGC::CooperationSkill::Regexp::Skill::BEGIN_COOPERATE
  151.         # 連係スキル定義開始
  152.         coop_flag = true
  153.       when KGC::CooperationSkill::Regexp::Skill::END_COOPERATE
  154.         # 連係スキル定義終了
  155.         coop_flag = false
  156.       end
  157.       next unless coop_flag

  158.       case line
  159.       when KGC::CooperationSkill::Regexp::Skill::NEED_SKILLS
  160.         # 必要スキル
  161.         parse_need_skills($1.scan(/\-?\d+/))
  162.       when KGC::CooperationSkill::Regexp::Skill::COOPERATE_PARAMS
  163.         # パラメータ
  164.         parse_params($1, $2.to_i, $3)
  165.       when KGC::CooperationSkill::Regexp::Skill::COOPERATE_ARRAYS
  166.         # 属性?ステート
  167.         parse_arrays($1, $2.scan(/\-?\d+/))
  168.       end
  169.     }
  170.   end
  171.   #--------------------------------------------------------------------------
  172.   # ○ 必要スキルを解析
  173.   #     list  : スキル ID 一覧
  174.   #--------------------------------------------------------------------------
  175.   def parse_need_skills(list)
  176.     skills = []
  177.     list.each { |num|
  178.       skills << num.to_i
  179.     }
  180.     @need_skills << skills
  181.   end
  182.   #--------------------------------------------------------------------------
  183.   # ○ 連係スキルの能力値修正を適用
  184.   #     param : 対象パラメータ
  185.   #     value : 修正値
  186.   #     cond  : 以上 or 以下
  187.   #--------------------------------------------------------------------------
  188.   def parse_params(param, value, cond)
  189.     KGC::CooperationSkill::PARAMS.each { |k, v|
  190.       next if param !~ /(?:#{v})/i

  191.       @params[k]      = value
  192.       @params_over[k] = (cond !~ /UNDER|以下/i)
  193.       break
  194.     }
  195.   end
  196.   #--------------------------------------------------------------------------
  197.   # ○ 連係スキルの追加属性?ステートを適用
  198.   #     param : 対象パラメータ
  199.   #     list  : 属性?ステート一覧
  200.   #--------------------------------------------------------------------------
  201.   def parse_arrays(param, list)
  202.     KGC::CooperationSkill::ARRAYS.each { |k, v|
  203.       next if param !~ /(?:#{v})/i

  204.       if @need_arrays[k] == nil
  205.         @need_arrays[k]   = []
  206.         @disuse_arrays[k] = []
  207.       end
  208.       list.each { |num|
  209.         n = num.to_i
  210.         if n > 0
  211.           @need_arrays[k] |= [n]
  212.         else
  213.           @disuse_arrays[k] |= [n.abs]
  214.         end
  215.       }
  216.       break
  217.     }
  218.   end
  219. end

  220. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  221. $data_skills = load_data("Data/Skills.rvdata") if $data_skill == nil

  222. module KGC::CooperationSkill
  223.   # 連係スキルリストを変換
  224.   list = []
  225.   $data_skills.each { |skill|
  226.     next if skill == nil
  227.     next unless skill.is_cooperation?

  228.     list << Game_CooperationSkill.new(skill.id, skill.note)
  229.   }
  230.   SKILLS = list
  231. end

  232. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  233. #==============================================================================
  234. # ■ Game_Actor
  235. #==============================================================================

  236. class Game_Actor < Game_Battler
  237.   #--------------------------------------------------------------------------
  238.   # ● スキルの使用可能判定
  239.   #     skill : スキル
  240.   #--------------------------------------------------------------------------
  241.   def skill_can_use?(skill)
  242.     return super
  243.   end
  244. end

  245. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  246. #==============================================================================
  247. # □ Game_CooperationSkillUser
  248. #------------------------------------------------------------------------------
  249. #   連係スキル発動者の情報を扱うクラスです。
  250. #==============================================================================

  251. class Game_CooperationSkillUser
  252.   #--------------------------------------------------------------------------
  253.   # ○ 公開インスタンス変数
  254.   #--------------------------------------------------------------------------
  255.   attr_reader   :index                    # 発動者のインデックス
  256.   attr_reader   :skill_id                 # 発動者が使用したスキル ID
  257.   attr_reader   :target_battlers          # 攻撃対象
  258.   #--------------------------------------------------------------------------
  259.   # ○ オブジェクト初期化
  260.   #--------------------------------------------------------------------------
  261.   def initialize(battler)
  262.     if $imported["Counter"]
  263.       battler.action.made_targets = nil
  264.     end
  265.     @index = battler.index
  266.     @skill_id = battler.action.skill_id
  267.     @target_battlers = []
  268.     battler.action.make_targets.each { |t|
  269.       @target_battlers << t.index
  270.     }
  271.   end
  272.   #--------------------------------------------------------------------------
  273.   # ○ 同値判定
  274.   #--------------------------------------------------------------------------
  275.   def equal?(obj)
  276.     return false unless obj.is_a?(Game_CooperationSkillUser)
  277.     return false if @index != obj.index
  278.     return false if @skill_id != obj.skill_id
  279.     return false if @target_battlers != obj.target_battlers

  280.     return true
  281.   end
  282.   #--------------------------------------------------------------------------
  283.   # ○ 等値演算子
  284.   #--------------------------------------------------------------------------
  285.   def ==(obj)
  286.     return self.equal?(obj)
  287.   end
  288. end

  289. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  290. #==============================================================================
  291. # □ Game_CooperationBattler
  292. #------------------------------------------------------------------------------
  293. #   連係スキル発動時のダミーバトラークラスです。
  294. #==============================================================================

  295. class Game_CooperationBattler < Game_Battler
  296.   #--------------------------------------------------------------------------
  297.   # ● 公開インスタンス変数
  298.   #--------------------------------------------------------------------------
  299.   attr_accessor :battler_type             # :actor or :enemy
  300.   attr_accessor :exec_battlers            # 発動者リスト
  301.   attr_accessor :coop_skill               # 連係スキル情報
  302.   #--------------------------------------------------------------------------
  303.   # ● オブジェクト初期化
  304.   #--------------------------------------------------------------------------
  305.   def initialize
  306.     @battler_type  = :actor
  307.     @exec_battlers = []
  308.     @coop_skill    = nil
  309.     super
  310.   end
  311.   #--------------------------------------------------------------------------
  312.   # ● アクターか否かの判定
  313.   #--------------------------------------------------------------------------
  314.   def actor?
  315.     return (@battler_type == :actor)
  316.   end
  317.   #--------------------------------------------------------------------------
  318.   # ● インデックス取得
  319.   #--------------------------------------------------------------------------
  320.   def index
  321.     return 0
  322.   end
  323.   #--------------------------------------------------------------------------
  324.   # ● 表示名の取得
  325.   #--------------------------------------------------------------------------
  326.   def name
  327.     str = ""
  328.     members = (actor? ? $game_party : $game_troop).members
  329.     exec_battlers.each_with_index { |b, i|
  330.       str += members[b.index].name
  331.       if i < exec_battlers.size - 1
  332.         str += KGC::CooperationSkill::NAME_SEPARATOR
  333.       end
  334.     }
  335.     return str
  336.   end
  337.   #--------------------------------------------------------------------------
  338.   # ● レベルの取得
  339.   #--------------------------------------------------------------------------
  340.   def level
  341.     values = []
  342.     exec_battlers.each { |b| values << b.level }
  343.     return values.max
  344.   end
  345.   #--------------------------------------------------------------------------
  346.   # ○ 最大レベルの取得
  347.   #--------------------------------------------------------------------------
  348.   def level_max
  349.     return level
  350.   end
  351.   #--------------------------------------------------------------------------
  352.   # ○ 平均レベルの取得
  353.   #--------------------------------------------------------------------------
  354.   def level_avg
  355.     n = 0
  356.     exec_battlers.each { |b| n += b.level }
  357.     return (n / exec_battlers.size)
  358.   end
  359.   #--------------------------------------------------------------------------
  360.   # ● MaxHP の取得
  361.   #--------------------------------------------------------------------------
  362.   def maxhp
  363.     values = []
  364.     exec_battlers.each { |b| values << b.maxhp }
  365.     return values.max
  366.   end
  367.   #--------------------------------------------------------------------------
  368.   # ● MaxMP の取得
  369.   #--------------------------------------------------------------------------
  370.   def maxmp
  371.     values = []
  372.     exec_battlers.each { |b| values << b.maxmp }
  373.     return values.max
  374.   end
  375.   #--------------------------------------------------------------------------
  376.   # ● HP の取得
  377.   #--------------------------------------------------------------------------
  378.   def hp
  379.     values = []
  380.     exec_battlers.each { |b| values << b.hp }
  381.     return values.min
  382.   end
  383.   #--------------------------------------------------------------------------
  384.   # ● MP の取得
  385.   #--------------------------------------------------------------------------
  386.   def mp
  387.     values = []
  388.     exec_battlers.each { |b| values << b.mp }
  389.     return values.min
  390.   end
  391.   #--------------------------------------------------------------------------
  392.   # ○ ドライブゲージ量取得
  393.   #--------------------------------------------------------------------------
  394.   def overdrive
  395.     values = []
  396.     exec_battlers.each { |b| values << b.overdrive }
  397.     return values.min
  398.   end
  399.   #--------------------------------------------------------------------------
  400.   # ● 攻撃力の取得
  401.   #--------------------------------------------------------------------------
  402.   def atk
  403.     values = []
  404.     exec_battlers.each { |b| values << b.atk }
  405.     return values.max
  406.   end
  407.   #--------------------------------------------------------------------------
  408.   # ● 防御力の取得
  409.   #--------------------------------------------------------------------------
  410.   def def
  411.     values = []
  412.     exec_battlers.each { |b| values << b.def }
  413.     return values.max
  414.   end
  415.   #--------------------------------------------------------------------------
  416.   # ● 精神力の取得
  417.   #--------------------------------------------------------------------------
  418.   def spi
  419.     values = []
  420.     exec_battlers.each { |b| values << b.spi }
  421.     return values.max
  422.   end
  423.   #--------------------------------------------------------------------------
  424.   # ● 敏捷性の取得
  425.   #--------------------------------------------------------------------------
  426.   def agi
  427.     values = []
  428.     exec_battlers.each { |b| values << b.agi }
  429.     return values.max
  430.   end
  431.   #--------------------------------------------------------------------------
  432.   # ● 命中率の取得
  433.   #--------------------------------------------------------------------------
  434.   def hit
  435.     values = []
  436.     exec_battlers.each { |b| values << b.hit }
  437.     return [values.max, 100].max
  438.   end
  439.   #--------------------------------------------------------------------------
  440.   # ● 回避率の取得
  441.   #--------------------------------------------------------------------------
  442.   def eva
  443.     return 0
  444.   end
  445.   #--------------------------------------------------------------------------
  446.   # ● クリティカル率の取得
  447.   #--------------------------------------------------------------------------
  448.   def cri
  449.     values = []
  450.     exec_battlers.each { |b| values << b.cri }
  451.     return values.max
  452.   end
  453.   #--------------------------------------------------------------------------
  454.   # ● MP の変更
  455.   #     mp : 新しい MP
  456.   #--------------------------------------------------------------------------
  457.   def mp=(mp)
  458.     # 加担者全員の MP を減らす
  459.     diff = self.mp - mp
  460.     exec_battlers.each { |b| b.mp -= diff }
  461.   end
  462.   #--------------------------------------------------------------------------
  463.   # ○ ドライブゲージの操作
  464.   #--------------------------------------------------------------------------
  465.   def overdrive=(value)
  466.     # 加担者全員のドライブゲージを減らす
  467.     diff = self.overdrive - overdrive
  468.     exec_battlers.each { |b| b.overdrive -= diff }
  469.   end
  470.   #--------------------------------------------------------------------------
  471.   # ● 全回復
  472.   #--------------------------------------------------------------------------
  473.   def recover_all
  474.     # 何もしない
  475.   end
  476.   #--------------------------------------------------------------------------
  477.   # ● 戦闘不能判定
  478.   #--------------------------------------------------------------------------
  479.   def dead?
  480.     exec_battlers.each { |b|
  481.       return true if b.dead?
  482.     }
  483.     return false
  484.   end
  485.   #--------------------------------------------------------------------------
  486.   # ● 存在判定
  487.   #--------------------------------------------------------------------------
  488.   def exist?
  489.     exec_battlers.each { |b|
  490.       return false unless b.exist?
  491.     }
  492.     return true
  493.   end
  494.   #--------------------------------------------------------------------------
  495.   # ● コマンド入力可能判定
  496.   #--------------------------------------------------------------------------
  497.   def inputable?
  498.     exec_battlers.each { |b|
  499.       return false unless b.inputtable?
  500.     }
  501.     return true
  502.   end
  503.   #--------------------------------------------------------------------------
  504.   # ● 行動可能判定
  505.   #--------------------------------------------------------------------------
  506.   def movable?
  507.     exec_battlers.each { |b|
  508.       return false unless b.movable?
  509.     }
  510.     return true
  511.   end
  512.   #--------------------------------------------------------------------------
  513.   # ● 沈黙状態判定
  514.   #--------------------------------------------------------------------------
  515.   def silent?
  516.     exec_battlers.each { |b|
  517.       return true if b.silent?
  518.     }
  519.     return false
  520.   end
  521.   #--------------------------------------------------------------------------
  522.   # ● 暴走状態判定
  523.   #--------------------------------------------------------------------------
  524.   def berserker?
  525.     return false
  526.   end
  527.   #--------------------------------------------------------------------------
  528.   # ● 混乱状態判定
  529.   #--------------------------------------------------------------------------
  530.   def confusion?
  531.     return false
  532.   end
  533.   #--------------------------------------------------------------------------
  534.   # ● 防御中判定
  535.   #--------------------------------------------------------------------------
  536.   def guarding?
  537.     return false
  538.   end
  539.   #--------------------------------------------------------------------------
  540.   # ● 通常攻撃の属性取得
  541.   #--------------------------------------------------------------------------
  542.   def element_set
  543.     result = []
  544.     exec_battlers.each { |b| result |= b.element_set }
  545.     return result
  546.   end
  547.   #--------------------------------------------------------------------------
  548.   # ● 通常攻撃のステート変化 (+) 取得
  549.   #--------------------------------------------------------------------------
  550.   def plus_state_set
  551.     result = []
  552.     exec_battlers.each { |b| result |= b.plus_state_set }
  553.     return result
  554.   end
  555.   #--------------------------------------------------------------------------
  556.   # ● 通常攻撃のステート変化 (-) 取得
  557.   #--------------------------------------------------------------------------
  558.   def minus_state_set
  559.     result = []
  560.     exec_battlers.each { |b| result |= b.minus_state_set }
  561.     return result
  562.   end
  563.   #--------------------------------------------------------------------------
  564.   # ● ステート [スリップダメージ] 判定
  565.   #--------------------------------------------------------------------------
  566.   def slip_damage?
  567.     return false
  568.   end
  569.   #--------------------------------------------------------------------------
  570.   # ● ステート [命中率減少] 判定
  571.   #--------------------------------------------------------------------------
  572.   def reduce_hit_ratio?
  573.     return false
  574.   end
  575. end

  576. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  577. #==============================================================================
  578. # ■ Scene_Battle
  579. #==============================================================================

  580. class Scene_Battle < Scene_Base
  581.   #--------------------------------------------------------------------------
  582.   # ● 開始処理
  583.   #--------------------------------------------------------------------------
  584.   alias start_KGC_CooperationSkill start
  585.   def start
  586.     start_KGC_CooperationSkill

  587.     init_cooperation_skill
  588.   end
  589.   #--------------------------------------------------------------------------
  590.   # ○ 連係スキル用変数初期化
  591.   #--------------------------------------------------------------------------
  592.   def init_cooperation_skill
  593.     @cooperation_skill_judged = false
  594.     @cooperation_skill_exec   = false
  595.     @cooperation_skill_data   = nil
  596.     @cooperate_actors  = []
  597.     @cooperate_enemies = []
  598.   end
  599.   #--------------------------------------------------------------------------
  600.   # ● パーティコマンド選択の開始
  601.   #--------------------------------------------------------------------------
  602.   alias start_party_command_selection_KGC_CooperationSkill
  603.     start_party_command_selection
  604.   def start_party_command_selection
  605.     if $game_temp.in_battle
  606.       init_cooperation_skill
  607.     end

  608.     start_party_command_selection_KGC_CooperationSkill
  609.   end
  610.   #--------------------------------------------------------------------------
  611.   # ● 戦闘処理の実行開始
  612.   #--------------------------------------------------------------------------
  613.   alias start_main_KGC_CooperationSkill start_main
  614.   def start_main
  615.     start_main_KGC_CooperationSkill

  616.     init_cooperate_battler_list
  617.   end
  618.   #--------------------------------------------------------------------------
  619.   # ○ 判定用データ初期化
  620.   #--------------------------------------------------------------------------
  621.   def init_cooperate_battler_list
  622.     [:actor, :enemy].each { |i|
  623.       case i
  624.       when :actor
  625.         cooperate_battlers = @cooperate_actors
  626.         members = $game_party.members
  627.       when :enemy
  628.         cooperate_battlers = @cooperate_enemies
  629.         members = $game_troop.members
  630.       end
  631.       # 対象側バトラーを設定
  632.       cooperate_battlers.clear
  633.       unless KGC::CooperationSkill::EXECUTE_ORIGIN_SKILL
  634.         members.each { |battler|
  635.           next unless battler.action.skill?
  636.           cooperate_battlers << Game_CooperationSkillUser.new(battler)
  637.         }
  638.       end
  639.     }
  640.   end
  641.   #--------------------------------------------------------------------------
  642.   # ● 戦闘行動の実行
  643.   #--------------------------------------------------------------------------
  644.   alias execute_action_KGC_CooperationSkill execute_action
  645.   def execute_action
  646.     @cooperation_skill_judged = false

  647.     if KGC::CooperationSkill::EXECUTE_ORIGIN_SKILL
  648.       execute_action_KGC_CooperationSkill
  649.       judge_cooperation_skill(@active_battler)
  650.     else
  651.       judge_cooperation_skill(@active_battler)
  652.       unless @cooperation_skill_judged && @cooperation_skill_exec
  653.         execute_action_KGC_CooperationSkill
  654.       end
  655.     end

  656.     if @cooperation_skill_exec
  657.       if @cooperation_skill_judged
  658.         execute_cooperation_skill
  659.       else
  660.         finish_cooperation_skill
  661.       end
  662.     end
  663.   end
  664.   #--------------------------------------------------------------------------
  665.   # ○ 連係スキル第一発動判定
  666.   #     battler : 行動者
  667.   #--------------------------------------------------------------------------
  668.   def judge_cooperation_skill(battler)
  669.     return false if @cooperation_skill_judged
  670.     return false if @cooperation_skill_exec
  671.     @cooperation_skill_judged = true

  672.     target_unit = (battler.is_a?(Game_Actor) ? $game_troop : $game_party)
  673.     if battler.action.kind == 1
  674.       # 対象が残っていれば第二発動判定
  675.       unless target_unit.all_dead?
  676.         return judge_cooperation_skill_second(battler)
  677.       end
  678.     else
  679.       # 行動がスキル以外なら判定用配列から削除
  680.       if target_unit.is_a?(Game_Party)
  681.         remove_cooperate_battler(:enemy, battler)
  682.       elsif target_unit.is_a?(Game_Troop)
  683.         remove_cooperate_battler(:actor, battler)
  684.       end
  685.     end
  686.     return false
  687.   end
  688.   #--------------------------------------------------------------------------
  689.   # ○ 連係加担者削除
  690.   #     type    : :actor or :enemy
  691.   #     battler : 削除対象
  692.   #--------------------------------------------------------------------------
  693.   def remove_cooperate_battler(type, battler)
  694.     battlers = (type == :actor ? @cooperate_actors : @cooperate_enemies)
  695.     battlers.each_index { |i|
  696.       if battlers[i].index == battler.index
  697.         battlers[i] = nil
  698.       end
  699.     }
  700.     battlers.compact!
  701.   end
  702.   #--------------------------------------------------------------------------
  703.   # ○ 連係スキル第二発動判定
  704.   #     battler : 行動者
  705.   #--------------------------------------------------------------------------
  706.   def judge_cooperation_skill_second(battler)
  707.     # 判定用データ作成
  708.     @current_cooperate_user = Game_CooperationSkillUser.new(battler)
  709.     if battler.is_a?(Game_Actor)
  710.       remove_cooperate_battler(:actor, battler)
  711.       @cooperate_actors |= [@current_cooperate_user]
  712.     elsif battler.is_a?(Game_Enemy)
  713.       remove_cooperate_battler(:enemy, battler)
  714.       @cooperate_enemies |= [@current_cooperate_user]
  715.     end
  716.     # 連係スキル発動判定
  717.     KGC::CooperationSkill::SKILLS.each { |cs|
  718.       # アクター判定
  719.       if battler.is_a?(Game_Actor)
  720.         judge_cooperation_skill_third(:actor, cs)
  721.       # エネミー判定
  722.       elsif battler.is_a?(Game_Enemy)
  723.         judge_cooperation_skill_third(:enemy, cs)
  724.       end

  725.       break if @cooperation_skill_exec
  726.     }
  727.     return @cooperation_skill_exec
  728.   end
  729.   #--------------------------------------------------------------------------
  730.   # ○ 連係スキル第三発動判定
  731.   #     type    : :actor or :enemy
  732.   #     cs_data : Cooperation skill data
  733.   #--------------------------------------------------------------------------
  734.   def judge_cooperation_skill_third(type, cs_data)
  735.     if type == :enemy
  736.       # エネミーに発動させない場合は戻る
  737.       return unless KGC::CooperationSkill::PERMIT_ENEMY
  738.     end

  739.     @cooperation_skill_exec = false
  740.     case type
  741.     when :actor
  742.       cooperate_battlers = @cooperate_actors
  743.       members = $game_party.members
  744.     when :enemy
  745.       cooperate_battlers = @cooperate_enemies
  746.       members = $game_troop.members
  747.     end

  748.     @exec_battlers = create_cooperation_exec_battlers(type, cs_data,
  749.       cooperate_battlers, members)
  750.     # 行動者が加担していなければ戻る
  751.     return if @exec_battlers.empty?

  752.     # 同一ターゲットを指定していなければ戻る
  753.     return unless same_target_include?(cs_data, cooperate_battlers, members)

  754.     $game_temp.judging_cooperation_skill = true
  755.     prepare_cooperation_exec(type, cs_data, cooperate_battlers, members)
  756.     $game_temp.judging_cooperation_skill = false
  757.   end
  758.   #--------------------------------------------------------------------------
  759.   # ○ 連係スキル発動者リスト作成
  760.   #     type               : :actor or :enemy
  761.   #     cs_data            : Cooperation skill data
  762.   #     cooperate_battlers : 連係加担者リスト
  763.   #     members            : 連係加担側のメンバー全体
  764.   #--------------------------------------------------------------------------
  765.   def create_cooperation_exec_battlers(type, cs_data,
  766.       cooperate_battlers, members)
  767.     battlers = []
  768.     cs_data.need_skills.each { |ns|
  769.       battlers.clear
  770.       # 行動者加担判定
  771.       next unless ns.include?(@current_cooperate_user.skill_id)

  772.       # 全必要スキル充足判定
  773.       skills = ns.clone
  774.       ns.each { |skill_id|
  775.         user = cooperate_battlers.find { |cb|
  776.           skill_id == cb.skill_id && !battlers.include?(cb)
  777.         }
  778.         # 使用者がいなければ失敗判定
  779.         if user == nil
  780.           battlers.clear
  781.           skills = [0]
  782.           break
  783.         end
  784.         battlers << user
  785.         skills.delete(skill_id)
  786.       }
  787.       break if skills.empty?  # 判定用配列が空 ==> 必要スキル充足
  788.     }

  789.     unless cooperation_conditions_satisfy?(type, cs_data, battlers, members)
  790.       battlers = []
  791.     end

  792.     return battlers
  793.   end
  794.   #--------------------------------------------------------------------------
  795.   # ○ 使用条件充足判定
  796.   #     type               : :actor or :enemy
  797.   #     cs_data            : Cooperation skill data
  798.   #     candidate_battlers : 判定対象の連係加担者リスト
  799.   #     members            : 連係加担側のメンバー全体
  800.   #--------------------------------------------------------------------------
  801.   def cooperation_conditions_satisfy?(type, cs_data,
  802.       candidate_battlers, members)
  803.     return false if candidate_battlers.empty?
  804.     return true  if type == :enemy

  805.     # パラメータ算出
  806.     level_avg = 0
  807.     levels = []
  808.     candidate_battlers.each { |cb|
  809.       battler = members[cb.index]
  810.       level_avg += battler.level
  811.       levels << battler.level
  812.     }
  813.     level_avg /= members.size

  814.     comp = Proc.new { |a, b, over| over ? a >= b : a <= b }  # 判定用 Proc

  815.     cs_data.params.each { |k, v|
  816.       param = 0
  817.       case k
  818.       when :level_avg  # 平均レベル
  819.         param = level_avg
  820.       when :level_min  # 最低レベル
  821.         param = levels.min
  822.       when :level_max  # 最高レベル
  823.         param = levels.max
  824.       end
  825.       return false unless comp.call(param, v, cs_data.params_over[k])
  826.     }

  827.     return true
  828.   end
  829.   #--------------------------------------------------------------------------
  830.   # ○ 連係ターゲット一致判定
  831.   #     cs_data            : Cooperation skill data
  832.   #     cooperate_battlers : 連係加担者リスト
  833.   #     members            : 連係加担側のメンバー全体
  834.   #--------------------------------------------------------------------------
  835.   def same_target_include?(cs_data, cooperate_battlers, members)
  836.     return true unless KGC::CooperationSkill::SAME_TARGET_ONLY

  837.     # 同じターゲットを指定しているか判定
  838.     duplicate_battlers = (0..99).to_a
  839.     @exec_battlers.each { |eb|
  840.       duplicate_battlers &= eb.target_battlers
  841.     }
  842.     return (duplicate_battlers.size > 0)
  843.   end
  844.   #--------------------------------------------------------------------------
  845.   # ○ 連係発動準備
  846.   #     type               : :actor or :enemy
  847.   #     cs_data            : Cooperation skill data
  848.   #     cooperate_battlers : 連係加担者リスト
  849.   #     members            : 連係加担側のメンバー全体
  850.   #--------------------------------------------------------------------------
  851.   def prepare_cooperation_exec(type, cs_data, cooperate_battlers, members)
  852.     # 発動可否判定
  853.     @exec_battlers.each { |eb|
  854.       battler = members[eb.index]
  855.       unless battler.exist? && battler.skill_can_use?(cs_data.skill)
  856.         return
  857.       end
  858.     }

  859.     @cooperation_skill_exec = true
  860.     @cooperation_skill_data = cs_data
  861.     @cooperation_skill_user = type

  862.     # 発動者を行動順リストから削除
  863.     cooperate_battlers.each_with_index { |cb, i|
  864.       if @exec_battlers.include?(cb)
  865.         @action_battlers.delete(members[cb.index])
  866.         cooperate_battlers[i] = nil
  867.       end
  868.     }
  869.     cooperate_battlers.compact!
  870.   end
  871.   #--------------------------------------------------------------------------
  872.   # ○ 連係スキル発動
  873.   #--------------------------------------------------------------------------
  874.   def execute_cooperation_skill
  875.     # ダミーを登録
  876.     @action_battlers.unshift(create_cooperation_skill_battler)
  877.   end
  878.   #--------------------------------------------------------------------------
  879.   # ○ 連係発動者 (ダミーバトラー) 作成
  880.   #--------------------------------------------------------------------------
  881.   def create_cooperation_skill_battler
  882.     battler = Game_CooperationBattler.new
  883.     battler.battler_type = @cooperation_skill_user
  884.     battler.coop_skill   = @cooperation_skill_data
  885.     battler.action.set_skill(@cooperation_skill_data.id)

  886.     # ターゲット取得
  887.     members = (@cooperation_skill_user == :actor ?
  888.       $game_party : $game_troop).members
  889.     target = (0..99).to_a
  890.     @exec_battlers.each { |eb|
  891.       battler.exec_battlers << members[eb.index]
  892.       target &= eb.target_battlers
  893.     }
  894.     if target.empty?
  895.       # ターゲット不明なら最後の行動者のターゲットを採用
  896.       target = @current_cooperate_user.target_battlers
  897.     end
  898.     battler.action.target_index = target[rand(target.size)]

  899.     return battler
  900.   end
  901.   #--------------------------------------------------------------------------
  902.   # ○ 連係スキル終了
  903.   #--------------------------------------------------------------------------
  904.   def finish_cooperation_skill
  905.     @cooperation_skill_exec = false
  906.     @cooperation_skill_data = nil
  907.     @exec_battlers          = []
  908.   end
  909.   #--------------------------------------------------------------------------
  910.   # ○ 連係スキル加担判定
  911.   #     battler : 判定するバトラー
  912.   #--------------------------------------------------------------------------
  913.   def cooperation_exec?(battler)
  914.     return false unless @cooperation_skill_exec

  915.     if battler.is_a?(Game_Actor) || KGC::CooperationSkill::PERMIT_ENEMY
  916.       # 発動者に含まれているか判定
  917.       @exec_battlers.each_index { |i|
  918.         return true if @exec_battlers[i].index == battler.index
  919.       }
  920.     end

复制代码

Lv1.梦旅人

梦石
0
星屑
85
在线时间
424 小时
注册时间
2009-8-3
帖子
984
2
发表于 2010-7-21 20:23:02 | 只看该作者

今早刚问完就有人丢翻译了的KGC了。。
期待LZ继续翻译。。。。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

水土火风重逢处

梦石
0
星屑
229
在线时间
691 小时
注册时间
2010-7-17
帖子
3042
3
发表于 2010-7-29 15:57:23 | 只看该作者
楼主帮帮忙,翻译完它吧
独坐望城,望断天涯
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
115
在线时间
0 小时
注册时间
2013-6-29
帖子
2
4
发表于 2013-6-29 19:37:07 | 只看该作者
楼主帮我一下
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
14 小时
注册时间
2013-7-8
帖子
13
5
发表于 2013-7-8 11:44:28 | 只看该作者
好复杂   
看不懂
回复 支持 反对

使用道具 举报

Lv2.观梦者

会吐槽的画师

梦石
0
星屑
782
在线时间
3431 小时
注册时间
2011-6-10
帖子
6535
6
发表于 2013-9-7 10:40:20 | 只看该作者
LZ代码没复制完全,少了两个end
长名公主玩家群:372588926 攻略娱乐应有尽有
了解更多新RM游戏,游戏制作请加入RPGmaker支援群:113622890
回复 支持 反对

使用道具 举报

Lv3.寻梦者

火烧大神

梦石
0
星屑
1808
在线时间
941 小时
注册时间
2012-1-1
帖子
1777
7
发表于 2013-9-13 20:55:42 | 只看该作者
用SW横版自带就有合击技能了,这个脚本很长,冲突就会变得很多{:2_263:}

点评

那我找找···  发表于 2014-11-29 21:06
是的  发表于 2014-11-29 21:02
楼下的短篇作品是这种吗?  发表于 2014-11-29 21:01
那样就找找有没有横版的资源吧,把脚本的设定部分看一遍就有了,这个和版本没关系的  发表于 2014-11-29 20:59
貌似下不到了···  发表于 2014-11-29 20:53

火兔游戏官网上线啦!!
戳 >>> www.huotuyouxi.com <<<戳
回复 支持 反对

使用道具 举报

Lv2.观梦者

永无止境的旅程

梦石
0
星屑
503
在线时间
1552 小时
注册时间
2012-6-19
帖子
1226

开拓者贵宾

8
发表于 2014-6-15 00:21:46 | 只看该作者
用Sideview华丽的完成

点评

2个都要下载?  发表于 2014-11-28 21:16
http://rm.66rpg.com/thread-246040-1-1.html 这游戏本身不加密  发表于 2014-11-23 18:09
这个范例能发一下吗···  发表于 2014-11-22 22:55
不是  发表于 2014-11-22 22:50
VX的SideView是自带的环状菜单吗。。。  发表于 2014-11-22 07:22

评分

参与人数 1星屑 +5 收起 理由
3106345123 + 5 天哪

查看全部评分

[url=https://rpg.blue/thread-389697-1-1.html]https://rpg.blue/https://rpg.blue/data/attachment/forum/201602/26/220128cfbxxs47xth4xkz4.jpg[/url]
&lt;font size=&quot;5&quot;&gt;[color=Green][url=https://rpg.blue/forum.php?mod=viewthread&amp;tid=396208&amp;extra=page%3D1][color=DeepSkyBlue]全新配套ACT系统,每周末一大更新,尽请期待。[/color][/url][/color]
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
97
在线时间
753 小时
注册时间
2011-7-17
帖子
781
9
发表于 2014-6-15 09:00:54 | 只看该作者
咏唱{:2_275:}
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-5-5 05:12

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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