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

Project1

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

组合技能的问题

 关闭 [复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
1 小时
注册时间
2007-7-5
帖子
44
跳转到指定楼层
1
发表于 2007-7-16 22:43:47 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
我还是不懂
假如我要a+b=c
        a+b≠ab
    而且a+b+d=c+d
    而且e+d=e+d≠ed
我要怎么做啊?
请举个例子。
脚本内容(翻译后):
==============================================================================
# 本脚本来自www.66RPG.com,使用和转载请保留此信息
#==============================================================================

# 特技组合   源自日本
# 如(十字斩+扫荡=十字斩扫荡)
# 我方的特技可以组合。
# 条件基本如下
# 1.施展组合技能的角色的技能中间敌人没攻击.
# 2.攻击同一个敌人
#
# 组合成功的话,伤害增加.
# 伤害率:
# 不组合一律100%
# 每多组合1人增加25%
#===============================================



module Combo_Skill_Config
  # 组合技威力(%)
  COMBO_BONUS = 25
  # 全体攻撃的组合值,=0表示无效
  ALL_ATTCK_SKILL_MAX = 1
  # 组合技能动画编号
  COMBO_ANIME_ID = 101
  # 基本前组合成功率
  BASE_BEFORE_REVISION = 100
  # 基本後组合成功率
  BASE_AFTER_REVISION = 100
  # 是不是损坏一揽子表示
  SHOW_DAMAGE_LUMP = true
  # 显示组合名称
  COMBO_NAME_SHOW = true
  # 特级名段落最小字数
  # 这个数字以下的文字数的技艺就那样被联合编入。
  COMBO_NAME_SPLIT = 3
end

class Scene_Battle
  include Combo_Skill_Config
  #--------------------------------------------------------------------------
  # ● 主要阶段开始
  #--------------------------------------------------------------------------
  alias scene_battle_skill_combo_start_phase4 start_phase4
  def start_phase4
    @combo_on = false
    @combo_bese_target = nil
    @combo_finish = false
    @combo_count = 0
    @combo_name = ""
    scene_battle_skill_combo_start_phase4
  end
  #--------------------------------------------------------------------------
  # ● 框架更新(主要阶段)
  #--------------------------------------------------------------------------
  alias scene_battle_skill_combo_update_phase4 update_phase4
  def update_phase4
    if @combo_effect_start
      update_phase4_combo_effect
      return
    end
    scene_battle_skill_combo_update_phase4
  end
  #--------------------------------------------------------------------------
  # ● 框架更新(主要阶段 阶段 2: 动作开始)
  #--------------------------------------------------------------------------
  alias scene_battle_skill_combo_update_phase4_step2 update_phase4_step2
  def update_phase4_step2
    # 如果不是强制动作
    unless @active_battler.current_action.forcing
      # 规定通常攻击 [敌人]是[通常攻击伙伴的]情况
      if @active_battler.restriction == 2 or @active_battler.restriction == 3
        # 动作设定攻击
        @active_battler.current_action.kind = 0
        @active_battler.current_action.basic = 0
      end
      # 规定不能是 [行动的]情况
      if @active_battler.restriction == 4
        # 清洁动作强制对象的butler
        $game_temp.forcing_battler = nil
        # 阶段 1 转移
        @phase4_step = 1
        return
      end
    end
    # 联合判断
    # 未行动butler不是0,如果不是联合的进行中联合判断
    if @action_battlers.size != 0 and @combo_on == false
      # 行动者联合可能或者判断
      if combo_ok?(@active_battler)
        @combo_skill = []
        @combo_skill.push(@active_battler.current_action.skill_id)
        @combo_member = []
        @combo_member.push(@active_battler)
        last_battler = @active_battler
        # 继续的朋友的联合判断
        for i in 0...@action_battlers.size
          next_battler = @action_battlers
          break if combo_ok?(next_battler) == false
          break if combo_probability(last_battler, next_battler) == false
          next_battler.combo_number = i + 2
          @combo_skill.push(next_battler.current_action.skill_id)
          @combo_member.push(next_battler)
          last_battler = @action_battlers
        end
        @combo_max = @combo_member.size
        if @combo_max > 1
          @combo_count = 0
          @active_battler.combo_number = 1
          @combo_on = true
          @combo_effect = true
        else
          @combo_bese_target = nil
          @combo_all_target_count = 0
          @combo_on = false
        end
      end
    end
    if @combo_effect
      @combo_effect_start = true
    end
    scene_battle_skill_combo_update_phase4_step2
  end
  #--------------------------------------------------------------------------
  # ● 特级动作 结果作成
  #--------------------------------------------------------------------------
  alias scene_battle_skill_combo_make_skill_action_result make_skill_action_result
  def make_skill_action_result
    scene_battle_skill_combo_make_skill_action_result
    # 消去行动者的联合号码
    if @combo_on
      @active_battler.combo_number = nil
      @combo_count += 1
      if @combo_count >= @combo_max
        @combo_finish = true
      end
      if COMBO_NAME_SHOW
        c_name = get_combo_skill_name(@skill)
        if @combo_finish
          @combo_name += c_name[1]
          @help_window.set_text(@combo_name, 1)
          @help_window.visible = true
        else
          @combo_name += c_name[0]
          @help_window.visible = false
        end
      end
    end
  end
  #--------------------------------------------------------------------------
  # ● 框架更新(联合效果表示)
  #--------------------------------------------------------------------------
  def update_phase4_combo_effect
    # 行动方面动画
    @active_battler.animation_id = COMBO_ANIME_ID
    @active_battler.animation_hit = true
    # 尽管是动画的长度,最低8 框架等候
    @wait_count = 8
    @combo_effect_start = false
    @phase4_step = 3
  end
  #--------------------------------------------------------------------------
  # ● 框架更新(主要阶段 阶段 5: 损坏表示)
  #--------------------------------------------------------------------------
  alias scene_battle_skill_combo_update_phase4_step5 update_phase4_step5
  def update_phase4_step5
    scene_battle_skill_combo_update_phase4_step5
    # 是联合的最后的情况
    if @combo_finish
      # 联合的时候的处理遗漏的应对
      battler = []
      battler += $game_troop.enemies
      battler += $game_party.actors
      for target in battler
        if target.exist?
          if SHOW_DAMAGE_LUMP
            if target.combo_total_damage != nil
              target.damage = target.combo_total_damage
              target.damage_pop = true
              target.combo_total_damage = nil
            end
          end
          if target.combo_dead
            target.hp = 0
            target.combo_dead = false
          end
        end
      end
    end
  end
  #--------------------------------------------------------------------------
  # ● 框架更新(主要阶段 阶段 6: 恢复精神)
  #--------------------------------------------------------------------------
  alias scene_battle_skill_combo_update_phase4_step6 update_phase4_step6
  def update_phase4_step6
    scene_battle_skill_combo_update_phase4_step6
    if @combo_finish
      @combo_on = false
      @combo_bese_target = nil
      @combo_count = 0
      @combo_finish = false
      @combo_effect = false
      @combo_name = ""
    end
  end
  #--------------------------------------------------------------------------
  # ● 联合发动判断
  #--------------------------------------------------------------------------
  def combo_ok?(actor)
    all_attck_skill_max = ALL_ATTCK_SKILL_MAX
    # 行动者要是敌人还false
    if actor.is_a?(Game_Enemy)
      return false
    end
    # 行动者如果是特级以外的行动还false
    if actor.current_action.kind != 1
      return false
    end
    # 行动者如果不能使用特级还false
    unless actor.skill_can_use?(actor.current_action.skill_id)
      return false
    end
    # 取得特级
    skill = $data_skills[actor.current_action.skill_id]
    # 使用特级如果有联合禁止属性还false
    for i in skill.element_set
      if $data_system.elements != nil
        if $data_system.elements =~ /連携禁止/
          return false
        end
      end
    end
    # 基本目标没决定的情况
    if @combo_bese_target == nil
      @combo_all_target_count = 0
      # 本来是攻击的情况
      if skill.scope == 2
        if @combo_all_target_count >= all_attck_skill_max
          return false
        end
        # 全体(-1)设定基本目标
        @combo_bese_target = -1
        @combo_all_target_count += 1
      # 是单体攻击的情况
      else
        @combo_bese_target = actor.current_action.target_index
     end
    # 如果基本目标决定最初的
    # 攻击本来是攻击的情况
    elsif @combo_bese_target == -1
      if skill.scope == 2
        # 1联合中规定回数以上的全体攻击不能编入
        if @combo_all_target_count >= all_attck_skill_max
          return false
        end
        @combo_all_target_count += 1
      else
        @combo_bese_target = actor.current_action.target_index
      end
    else
      if skill.scope == 2
        # 1联合中规定回数以上的全体攻击不能编入
        if @combo_all_target_count >= all_attck_skill_max
          return false
        end
        @combo_all_target_count += 1
      else
        # 目标是不是与基本目标一起
        if actor.current_action.target_index != @combo_bese_target
          return false
        end
      end
    end
    return true
  end
  #--------------------------------------------------------------------------
  # ● 联合概率计算
  #--------------------------------------------------------------------------
  def combo_probability(last_battler, next_battler)
    s_num = $data_system.switches.index("テスト用 絶対連携")
    if s_num != nil
      return true if $game_switches[s_num]
    end
    last_skill = $data_skills[last_battler.current_action.skill_id]
    next_skill = $data_skills[next_battler.current_action.skill_id]
    last_n = skill_combo_after_revision(last_skill)
    last_n += actor_combo_after_revision(last_battler)
    next_n = skill_combo_before_revision(next_skill)
    next_n += actor_combo_before_revision(next_battler)
    n = last_n + next_n
    if (rand(100) < n)
      return true
    end
    return false
  end
  #--------------------------------------------------------------------------
  # ● actor 的基本联合概率补正取得
  #--------------------------------------------------------------------------
  def actor_combo_base_revision(actor)
    return 0
  end
  #--------------------------------------------------------------------------
  # ● actor 的前联合概率补正取得
  #--------------------------------------------------------------------------
  def actor_combo_before_revision(actor)
    n = actor_combo_base_revision(actor)
    n += BASE_BEFORE_REVISION
    return n
  end
  #--------------------------------------------------------------------------
  # ● actor 之后联合概率补正取得
  #--------------------------------------------------------------------------
  def actor_combo_after_revision(actor)
    n = actor_combo_base_revision(actor)
    n += BASE_AFTER_REVISION
    return n
  end
  #--------------------------------------------------------------------------
  # ● 特级的前联合概率补正取得
  #--------------------------------------------------------------------------
  def skill_combo_before_revision(skill)
    rate = 0
    for i in skill.element_set
      if $data_system.elements != nil
        if $data_system.elements =~ /前連携率([+-]?[0-9]+)(%|%)/
          rate += $1.to_i
        end
      end
    end
    return rate
  end
  #--------------------------------------------------------------------------
  # ●特级之后联合概率补正取得
  #--------------------------------------------------------------------------
  def skill_combo_after_revision(skill)
    rate = 0
    for i in skill.element_set
      if $data_system.elements != nil
        if $data_system.elements =~ /後連携率([+-]?[0-9]+)(%|%)/
          rate += $1.to_i
        end
      end
    end
    return rate
  end
  #--------------------------------------------------------------------------
  # ● 把特级名分成前半部分后半还那个排列
  #--------------------------------------------------------------------------
  def get_combo_skill_name(skill)
    name = skill.name.split('')
    if name.size == 1
      return [name[0], name[0]]
    elsif name.size <= COMBO_NAME_SPLIT
      tempname = name.join
      return [tempname, tempname]
    end
    num = name.size / 2
    name1 = ""
    name2 = ""
    for i in 0...num
      name1 += name
    end
    for i in num...name.size
      name2 += name
    end
    return [name1, name2]
  end
end

class Game_Battler
  include Combo_Skill_Config
  attr_accessor :combo_number             # 联合发动的时候的顺
  attr_accessor :combo_dead               # 序联合发动的时候的死亡标
  attr_accessor :combo_total_damage       # 志联合发动的时候的总损坏
  #--------------------------------------------------------------------------
  # ● 客观初始化
  #--------------------------------------------------------------------------
  alias game_battler_skill_combo_initialize initialize
  def initialize
    game_battler_skill_combo_initialize
    @combo_number = nil
    @combo_dead = false
    @combo_total_damage = nil
  end
  #--------------------------------------------------------------------------
  # ● 特级的效果适用
  #     user  : 特级的使用者(butler)
  #     skill : 特级
  #--------------------------------------------------------------------------
  alias game_battler_skill_combo_skill_effect skill_effect
  def skill_effect(user, skill)
    result = game_battler_skill_combo_skill_effect(user, skill)
    if user.combo_number != nil
      # 联合补正
      if self.damage.is_a?(Numeric)
        combo_rate = user.combo_number * COMBO_BONUS
        damage = self.damage * combo_rate / 100
        self.damage += damage
        self.hp -= damage
        if SHOW_DAMAGE_LUMP
          @combo_total_damage = 0 if @combo_total_damage == nil
          @combo_total_damage += self.damage
          self.damage = nil
        end
      end
      if self.dead?
        self.combo_dead = true
        self.hp = 1
      end
    end
    return result
  end
end

#==============================================================================
# 本脚本来自www.66RPG.com,使用和转载请保留此信息
#==============================================================================

本贴由论坛斑竹柳柳结贴,如楼主认为问题未解决,请重新将此贴编辑为“有事请教”,并回帖叙述疑点即可~ ^-^
我是超级采鸟

Lv1.梦旅人

梦石
0
星屑
50
在线时间
1 小时
注册时间
2007-7-5
帖子
44
2
 楼主| 发表于 2007-7-16 22:43:47 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
我还是不懂
假如我要a+b=c
        a+b≠ab
    而且a+b+d=c+d
    而且e+d=e+d≠ed
我要怎么做啊?
请举个例子。
脚本内容(翻译后):
==============================================================================
# 本脚本来自www.66RPG.com,使用和转载请保留此信息
#==============================================================================

# 特技组合   源自日本
# 如(十字斩+扫荡=十字斩扫荡)
# 我方的特技可以组合。
# 条件基本如下
# 1.施展组合技能的角色的技能中间敌人没攻击.
# 2.攻击同一个敌人
#
# 组合成功的话,伤害增加.
# 伤害率:
# 不组合一律100%
# 每多组合1人增加25%
#===============================================



module Combo_Skill_Config
  # 组合技威力(%)
  COMBO_BONUS = 25
  # 全体攻撃的组合值,=0表示无效
  ALL_ATTCK_SKILL_MAX = 1
  # 组合技能动画编号
  COMBO_ANIME_ID = 101
  # 基本前组合成功率
  BASE_BEFORE_REVISION = 100
  # 基本後组合成功率
  BASE_AFTER_REVISION = 100
  # 是不是损坏一揽子表示
  SHOW_DAMAGE_LUMP = true
  # 显示组合名称
  COMBO_NAME_SHOW = true
  # 特级名段落最小字数
  # 这个数字以下的文字数的技艺就那样被联合编入。
  COMBO_NAME_SPLIT = 3
end

class Scene_Battle
  include Combo_Skill_Config
  #--------------------------------------------------------------------------
  # ● 主要阶段开始
  #--------------------------------------------------------------------------
  alias scene_battle_skill_combo_start_phase4 start_phase4
  def start_phase4
    @combo_on = false
    @combo_bese_target = nil
    @combo_finish = false
    @combo_count = 0
    @combo_name = ""
    scene_battle_skill_combo_start_phase4
  end
  #--------------------------------------------------------------------------
  # ● 框架更新(主要阶段)
  #--------------------------------------------------------------------------
  alias scene_battle_skill_combo_update_phase4 update_phase4
  def update_phase4
    if @combo_effect_start
      update_phase4_combo_effect
      return
    end
    scene_battle_skill_combo_update_phase4
  end
  #--------------------------------------------------------------------------
  # ● 框架更新(主要阶段 阶段 2: 动作开始)
  #--------------------------------------------------------------------------
  alias scene_battle_skill_combo_update_phase4_step2 update_phase4_step2
  def update_phase4_step2
    # 如果不是强制动作
    unless @active_battler.current_action.forcing
      # 规定通常攻击 [敌人]是[通常攻击伙伴的]情况
      if @active_battler.restriction == 2 or @active_battler.restriction == 3
        # 动作设定攻击
        @active_battler.current_action.kind = 0
        @active_battler.current_action.basic = 0
      end
      # 规定不能是 [行动的]情况
      if @active_battler.restriction == 4
        # 清洁动作强制对象的butler
        $game_temp.forcing_battler = nil
        # 阶段 1 转移
        @phase4_step = 1
        return
      end
    end
    # 联合判断
    # 未行动butler不是0,如果不是联合的进行中联合判断
    if @action_battlers.size != 0 and @combo_on == false
      # 行动者联合可能或者判断
      if combo_ok?(@active_battler)
        @combo_skill = []
        @combo_skill.push(@active_battler.current_action.skill_id)
        @combo_member = []
        @combo_member.push(@active_battler)
        last_battler = @active_battler
        # 继续的朋友的联合判断
        for i in 0...@action_battlers.size
          next_battler = @action_battlers
          break if combo_ok?(next_battler) == false
          break if combo_probability(last_battler, next_battler) == false
          next_battler.combo_number = i + 2
          @combo_skill.push(next_battler.current_action.skill_id)
          @combo_member.push(next_battler)
          last_battler = @action_battlers
        end
        @combo_max = @combo_member.size
        if @combo_max > 1
          @combo_count = 0
          @active_battler.combo_number = 1
          @combo_on = true
          @combo_effect = true
        else
          @combo_bese_target = nil
          @combo_all_target_count = 0
          @combo_on = false
        end
      end
    end
    if @combo_effect
      @combo_effect_start = true
    end
    scene_battle_skill_combo_update_phase4_step2
  end
  #--------------------------------------------------------------------------
  # ● 特级动作 结果作成
  #--------------------------------------------------------------------------
  alias scene_battle_skill_combo_make_skill_action_result make_skill_action_result
  def make_skill_action_result
    scene_battle_skill_combo_make_skill_action_result
    # 消去行动者的联合号码
    if @combo_on
      @active_battler.combo_number = nil
      @combo_count += 1
      if @combo_count >= @combo_max
        @combo_finish = true
      end
      if COMBO_NAME_SHOW
        c_name = get_combo_skill_name(@skill)
        if @combo_finish
          @combo_name += c_name[1]
          @help_window.set_text(@combo_name, 1)
          @help_window.visible = true
        else
          @combo_name += c_name[0]
          @help_window.visible = false
        end
      end
    end
  end
  #--------------------------------------------------------------------------
  # ● 框架更新(联合效果表示)
  #--------------------------------------------------------------------------
  def update_phase4_combo_effect
    # 行动方面动画
    @active_battler.animation_id = COMBO_ANIME_ID
    @active_battler.animation_hit = true
    # 尽管是动画的长度,最低8 框架等候
    @wait_count = 8
    @combo_effect_start = false
    @phase4_step = 3
  end
  #--------------------------------------------------------------------------
  # ● 框架更新(主要阶段 阶段 5: 损坏表示)
  #--------------------------------------------------------------------------
  alias scene_battle_skill_combo_update_phase4_step5 update_phase4_step5
  def update_phase4_step5
    scene_battle_skill_combo_update_phase4_step5
    # 是联合的最后的情况
    if @combo_finish
      # 联合的时候的处理遗漏的应对
      battler = []
      battler += $game_troop.enemies
      battler += $game_party.actors
      for target in battler
        if target.exist?
          if SHOW_DAMAGE_LUMP
            if target.combo_total_damage != nil
              target.damage = target.combo_total_damage
              target.damage_pop = true
              target.combo_total_damage = nil
            end
          end
          if target.combo_dead
            target.hp = 0
            target.combo_dead = false
          end
        end
      end
    end
  end
  #--------------------------------------------------------------------------
  # ● 框架更新(主要阶段 阶段 6: 恢复精神)
  #--------------------------------------------------------------------------
  alias scene_battle_skill_combo_update_phase4_step6 update_phase4_step6
  def update_phase4_step6
    scene_battle_skill_combo_update_phase4_step6
    if @combo_finish
      @combo_on = false
      @combo_bese_target = nil
      @combo_count = 0
      @combo_finish = false
      @combo_effect = false
      @combo_name = ""
    end
  end
  #--------------------------------------------------------------------------
  # ● 联合发动判断
  #--------------------------------------------------------------------------
  def combo_ok?(actor)
    all_attck_skill_max = ALL_ATTCK_SKILL_MAX
    # 行动者要是敌人还false
    if actor.is_a?(Game_Enemy)
      return false
    end
    # 行动者如果是特级以外的行动还false
    if actor.current_action.kind != 1
      return false
    end
    # 行动者如果不能使用特级还false
    unless actor.skill_can_use?(actor.current_action.skill_id)
      return false
    end
    # 取得特级
    skill = $data_skills[actor.current_action.skill_id]
    # 使用特级如果有联合禁止属性还false
    for i in skill.element_set
      if $data_system.elements != nil
        if $data_system.elements =~ /連携禁止/
          return false
        end
      end
    end
    # 基本目标没决定的情况
    if @combo_bese_target == nil
      @combo_all_target_count = 0
      # 本来是攻击的情况
      if skill.scope == 2
        if @combo_all_target_count >= all_attck_skill_max
          return false
        end
        # 全体(-1)设定基本目标
        @combo_bese_target = -1
        @combo_all_target_count += 1
      # 是单体攻击的情况
      else
        @combo_bese_target = actor.current_action.target_index
     end
    # 如果基本目标决定最初的
    # 攻击本来是攻击的情况
    elsif @combo_bese_target == -1
      if skill.scope == 2
        # 1联合中规定回数以上的全体攻击不能编入
        if @combo_all_target_count >= all_attck_skill_max
          return false
        end
        @combo_all_target_count += 1
      else
        @combo_bese_target = actor.current_action.target_index
      end
    else
      if skill.scope == 2
        # 1联合中规定回数以上的全体攻击不能编入
        if @combo_all_target_count >= all_attck_skill_max
          return false
        end
        @combo_all_target_count += 1
      else
        # 目标是不是与基本目标一起
        if actor.current_action.target_index != @combo_bese_target
          return false
        end
      end
    end
    return true
  end
  #--------------------------------------------------------------------------
  # ● 联合概率计算
  #--------------------------------------------------------------------------
  def combo_probability(last_battler, next_battler)
    s_num = $data_system.switches.index("テスト用 絶対連携")
    if s_num != nil
      return true if $game_switches[s_num]
    end
    last_skill = $data_skills[last_battler.current_action.skill_id]
    next_skill = $data_skills[next_battler.current_action.skill_id]
    last_n = skill_combo_after_revision(last_skill)
    last_n += actor_combo_after_revision(last_battler)
    next_n = skill_combo_before_revision(next_skill)
    next_n += actor_combo_before_revision(next_battler)
    n = last_n + next_n
    if (rand(100) < n)
      return true
    end
    return false
  end
  #--------------------------------------------------------------------------
  # ● actor 的基本联合概率补正取得
  #--------------------------------------------------------------------------
  def actor_combo_base_revision(actor)
    return 0
  end
  #--------------------------------------------------------------------------
  # ● actor 的前联合概率补正取得
  #--------------------------------------------------------------------------
  def actor_combo_before_revision(actor)
    n = actor_combo_base_revision(actor)
    n += BASE_BEFORE_REVISION
    return n
  end
  #--------------------------------------------------------------------------
  # ● actor 之后联合概率补正取得
  #--------------------------------------------------------------------------
  def actor_combo_after_revision(actor)
    n = actor_combo_base_revision(actor)
    n += BASE_AFTER_REVISION
    return n
  end
  #--------------------------------------------------------------------------
  # ● 特级的前联合概率补正取得
  #--------------------------------------------------------------------------
  def skill_combo_before_revision(skill)
    rate = 0
    for i in skill.element_set
      if $data_system.elements != nil
        if $data_system.elements =~ /前連携率([+-]?[0-9]+)(%|%)/
          rate += $1.to_i
        end
      end
    end
    return rate
  end
  #--------------------------------------------------------------------------
  # ●特级之后联合概率补正取得
  #--------------------------------------------------------------------------
  def skill_combo_after_revision(skill)
    rate = 0
    for i in skill.element_set
      if $data_system.elements != nil
        if $data_system.elements =~ /後連携率([+-]?[0-9]+)(%|%)/
          rate += $1.to_i
        end
      end
    end
    return rate
  end
  #--------------------------------------------------------------------------
  # ● 把特级名分成前半部分后半还那个排列
  #--------------------------------------------------------------------------
  def get_combo_skill_name(skill)
    name = skill.name.split('')
    if name.size == 1
      return [name[0], name[0]]
    elsif name.size <= COMBO_NAME_SPLIT
      tempname = name.join
      return [tempname, tempname]
    end
    num = name.size / 2
    name1 = ""
    name2 = ""
    for i in 0...num
      name1 += name
    end
    for i in num...name.size
      name2 += name
    end
    return [name1, name2]
  end
end

class Game_Battler
  include Combo_Skill_Config
  attr_accessor :combo_number             # 联合发动的时候的顺
  attr_accessor :combo_dead               # 序联合发动的时候的死亡标
  attr_accessor :combo_total_damage       # 志联合发动的时候的总损坏
  #--------------------------------------------------------------------------
  # ● 客观初始化
  #--------------------------------------------------------------------------
  alias game_battler_skill_combo_initialize initialize
  def initialize
    game_battler_skill_combo_initialize
    @combo_number = nil
    @combo_dead = false
    @combo_total_damage = nil
  end
  #--------------------------------------------------------------------------
  # ● 特级的效果适用
  #     user  : 特级的使用者(butler)
  #     skill : 特级
  #--------------------------------------------------------------------------
  alias game_battler_skill_combo_skill_effect skill_effect
  def skill_effect(user, skill)
    result = game_battler_skill_combo_skill_effect(user, skill)
    if user.combo_number != nil
      # 联合补正
      if self.damage.is_a?(Numeric)
        combo_rate = user.combo_number * COMBO_BONUS
        damage = self.damage * combo_rate / 100
        self.damage += damage
        self.hp -= damage
        if SHOW_DAMAGE_LUMP
          @combo_total_damage = 0 if @combo_total_damage == nil
          @combo_total_damage += self.damage
          self.damage = nil
        end
      end
      if self.dead?
        self.combo_dead = true
        self.hp = 1
      end
    end
    return result
  end
end

#==============================================================================
# 本脚本来自www.66RPG.com,使用和转载请保留此信息
#==============================================================================

本贴由论坛斑竹柳柳结贴,如楼主认为问题未解决,请重新将此贴编辑为“有事请教”,并回帖叙述疑点即可~ ^-^
我是超级采鸟

Lv3.寻梦者 (暗夜天使)

精灵族の天使

梦石
0
星屑
1712
在线时间
3039 小时
注册时间
2007-3-16
帖子
33731

开拓者贵宾

3
发表于 2007-7-16 22:58:01 | 只看该作者
这个的意思我试验过。
2个技能,例如一个名字叫十字斩,一个名字叫扫荡,
说不定就成了十字斩扫荡。
反弹雷射+绿色风弹=绿色雷射……
等等。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
1 小时
注册时间
2007-7-5
帖子
44
4
 楼主| 发表于 2007-7-18 03:11:25 | 只看该作者
55555555555~~~~~~~~~~~~~~~~~~~~~``
哪个可以帮帮我?
我是超级采鸟
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
1 小时
注册时间
2007-7-5
帖子
44
5
 楼主| 发表于 2007-7-18 19:29:41 | 只看该作者
怎么没人了?
回复 支持 反对

使用道具 举报

Lv3.寻梦者 (暗夜天使)

精灵族の天使

梦石
0
星屑
1712
在线时间
3039 小时
注册时间
2007-3-16
帖子
33731

开拓者贵宾

6
发表于 2007-7-18 19:33:38 | 只看该作者
= =好像斑竹没在。我建议在晚上顶顶看。
不一定所有的问题都有解答的……
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
1 小时
注册时间
2007-7-5
帖子
44
7
 楼主| 发表于 2007-7-18 20:57:04 | 只看该作者
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
1 小时
注册时间
2007-7-5
帖子
44
8
 楼主| 发表于 2007-7-20 01:19:48 | 只看该作者
没人啊??!!
HELP ME~~~~~~~~~~~~~~~~
我是超级采鸟
回复 支持 反对

使用道具 举报

Lv1.梦旅人

66RPG站长

梦石
0
星屑
54
在线时间
615 小时
注册时间
2005-10-10
帖子
5734

RMVX自由创作大赛亚军第2届短篇游戏比赛亚军第5届短篇游戏比赛冠军

9
发表于 2007-7-22 22:51:38 | 只看该作者
这个脚本只是“连续发动”,而不具备真正的“组合技”功能。
比如“暴雨”+“狂风”=“风雨如晦”,这个是做不到的,只能组合出“狂风暴雨”或者“暴雨狂风”。
真需要“风雨如晦”这种,改动相当多,不知楼主是怎么考虑的。等论坛恢复再慢慢讨论好了。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
1 小时
注册时间
2007-7-5
帖子
44
10
 楼主| 发表于 2007-7-28 20:31:34 | 只看该作者
哦,好,我还没有深入研究脚本,有些还读不懂
我是超级采鸟
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-7-3 00:51

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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