Project1

标题: RTAB连携脚本无法进行伤害运算 [打印本页]

作者: 18649119621    时间: 2018-10-6 12:53
标题: RTAB连携脚本无法进行伤害运算
使用后无法进行伤害运算 会导致卡死
我用的是这个脚本…………


#==============================================================================
# RTAB 特技连携 (0.16b新增官方特效,必须配合RTAB特技吟唱)
#
# 解说+汉化 by SixRice
#==============================================================================
# 連携スキル Ver 1.02
# 配布元・サポートURL
# http://members.jcom.home.ne.jp/cogwheel/

class Scene_Battle
#------------------------------------------------------------------------------
# 合成特技判定
#
# 考虑到可能会存在同名特技,将默认的根据name判断改成id判断则不会重复了(0.16b)
#------------------------------------------------------------------------------
  def synthe_spell(battler)
    if battler.is_a?(Game_Actor)
      @spell_p[battler] = $data_skills[battler.current_action.skill_id].id
    end
    if battler.is_a?(Game_Enemy)
      @spell_e[battler] = $data_skills[battler.current_action.skill_id].id
    end
#------------------------------------------------------------------------------   
  synthe_s = []#合成特技判定数组
#------------------------------------------------------------------------------
# 官方说明:
# 设定为『synthe_s.push([["特技idA","特技idB"],"特技idC"]』的情况下,
# 特技A和特技B同时使用时会发动特技C,称为“合成特技”。
#------------------------------------------------------------------------------
# 以下是官方设置范例(这里一样给出翻译,当作创作参考也不错,不用则删):
#------------------------------------------------------------------------------   

#  synthe_s.push([[57,22,61],89])#十字斩 + 风 + 扫荡 = 暗黑十字斩
#  synthe_s.push([[59,61],60])# 扫荡 + 旋风斩 = 螺旋斩
#  synthe_s.push([[57,22],59])# 十字斩 + 风 = 旋风斩
#  synthe_s.push([[61,13],63])# 扫荡 + 雷电 = 雷电环
#  synthe_s.push([[57,63],64])# 十字斩 + 雷电环 = 螺旋推
#  synthe_s.push([[57,61,7],72])#十字斩 + 扫荡 + 火炎 = 迪特利之舞
#  synthe_s.push([[16,16],17])
#  synthe_s.push([[16,17],18])
#  synthe_s.push([[17,17],18])
#  synthe_s.push([[60,18],74])
#------------------------------------------------------------------------------
# 下为自己制定的技能
  synthe_s.push([[1,2],3])#治疗术+圣疗术=神疗术
  synthe_s.push([[7,11],8])#火炎+寒冰=寒冰之火
#------------------------------------------------------------------------------
# 初级教学——A + B = C:
#
# 就拿第一个例子来说,57号特技+22号特技 = 59号特技
# 也就是“十字斩” + “风” = “旋风斩”
# 但实际使用起来存在一个时间差的问题,同一时间内,不可能同时打出两招,总有个先后。
# 因此就必须用到“RTAB特技吟唱”这个特效,来弥补所谓的时间差。
#------------------------------------------------------------------------------
# 接续上面的例子,将“风”这个魔法,在“RTAB特技吟唱”中设置一个吟唱时间,
# 则选择发动“风”的时候就不会即时发动,而会进入“吟唱时间”,
# 然后再在“风”的“吟唱时间”内发动“十字斩” ,这一连携就成立了。
# 也就是说,这个连携一定要先出“风”,后出“十字斩”,才会判定成立。
# 如果需要无视先后顺序的话,给“十字斩”也加个“吟唱时间”判定就可以了。
#------------------------------------------------------------------------------
# 再次接续上面的例子,如果给合成特技“旋风斩”也加上“吟唱时间”,
# 则符合连携判定时,几个特技的发动者会同时进入“连携吟唱时间”,
# 此时的吟唱速度是根据发动者速度叠加计算的,吟唱时间槽也会变成一种新的颜色,
# ……貌似很有趣的样子哦。(详细说明参见“RTAB特技吟唱”第27行)
#------------------------------------------------------------------------------
# 中级教学——合成特技的作用目标:
#
# 敌方全体,己方全体的情况就不解释了……
# 敌方单体,己方单体的情况,判定己方领队的指定对象为作用目标;(官方解释)
#
# 另外一些情况:(官方解释 + RP解说)
#
# 其一,当我方一号位队员(领队),二号位队员,三号位队员发动连携的时候;
# 三个人分别指向三个目标,最后以领队的指向为准。
#
# 其二,比较无聊的情况,当连携的构成要素全部指向对方,而合成特技的作用范围
# 却是与其相反(比如指敌方,合成作用己方;指自方,合成却作用敌方)的时候,
# 或者构成要素的作用范围全都是全体,合成的作用范围却是单体……
# 此类情况判定为失去作用目标,此时作用对象随机确定。
#
# 其三,特技附带了“RTAB战斗特效”中的出招收招效果的情况;
# 参考其一,效果会全部作用在领队身上。
#------------------------------------------------------------------------------
# 高级教学——多人连携:(是不是在数学课本上见过以下公式?……)
#
#1. A + B + C + D = E
#
#2.(A + B) + (C + D) = E
#
#3.{[(A + B) + C] + D} = E
#
#3的顺序是锁死的,必须这样排。
#另外需要指出的是,A+B的合成结果必须也是有吟唱时间的,
#这样才能在这段时间中完成与C的连携判定,下同,具体自己体会一下吧。
#
#2是双重连携,但也有可能出现(A+C)+(B+D)=F,(A+D)+(B+C)=G(貌似越来越混乱了……)
#
#1的顺序看似任意,但是其中任何数量的要素存在其他连携方式的话,就要注意顺序了。
#
#比如上面的例子中:
#synthe_s.push([[57,22],59]) # 十字斩 + 风 = 旋风斩
#synthe_s.push([[59,61],60]) # 扫荡 + 旋风斩 = 螺旋斩
#synthe_s.push([[57,22,61],88])#十字斩 + 风 + 扫荡 = 暗黑十字斩
#设 57 = A , 22 = B , 59 = C , 61 = D , 88 = E
#如果要达成“暗黑十字斩”,( A + B + D ) = E
#则必须绕过“旋风斩”A+B=C和“螺旋斩”C+D=E的连携成立判定。
#正确的出招顺序是 D + B + A = E
#反之 A + B + D 的顺序则会打出“螺旋斩”。
#
#------------------------------------------------------------------------------   
    temp = [@spell_p, @spell_e]
    for spell in temp
      for spells in synthe_s
        magic = spells[1]
        spell_c = spell.clone
        for id in spells[0]
          if spell_c.has_value?(id)
            spell_c.delete(spell_c.index(id))
          else
            magic = nil
            break
          end
        end
        # 连携成立判定
        if magic != nil
          for skill in $data_skills
            if magic == $data_skills[skill.id].id
              break
            end
          end
          if magic != $data_skills[skill.id].id
            p  "注意:特技编号在数据库中不存在!请重新设置!"
          end
          rt = 0
          synthe_b = []
          spell_c = spell.clone
          for id in spells[0]
            actor = spell_c.index(id)
            speller = synthe?(actor)
            if speller != nil
              for battlers in speller
                synthe_b.push(battlers)
                spell_c.delete(battlers)
              end
              rt += battlers.rt
            end
            unless synthe_b.include?(actor)
              synthe_b.push(actor)
              spell_c.delete(actor)
              rt += actor.rt
            end
          end
#------------------------------------------------------------------------------
# 特技连携的消费SP设置:
#(A号连携者消费等同于特技A,B号连携者消费等同于特技B,下同……。)
# 如果不在这里设置,则参与连携的战斗者每人消费的SP等于合成特技所需消费的SP。
#------------------------------------------------------------------------------
          case magic #合成特技id
          when 59
            spells = [59,23]
            success = spell_effect(battler, synthe_b, spells)
          when 63
            spells = [63,14]
            success = spell_effect(battler, synthe_b, spells)
          when 60
            spells = [62,59,23]
            success = spell_effect(battler, synthe_b, spells)
          when 64
            spells = [58,63,14]
            success = spell_effect(battler, synthe_b, spells)
          when 72
            spells = [59,63,8]
            success = spell_effect(battler, synthe_b, spells)
          else
            spells = [magic]
            success = spell_effect(battler, synthe_b, spells)
          end
          if success == true
            for actor in synthe_b
              speller = synthe?(actor)
              if speller != nil
                @synthe.delete(speller)
              end
              if battler != actor
                @action_battlers.delete(actor)
              end
              actor.spell = true
              if actor == synthe_b[0]
                spell[actor] = $data_skills[skill.id].id
              else
                spell.delete(actor)
              end
              actor.current_action.skill_id = skill.id
              recite_time(actor)
              actor.rtp = 1 if actor.rtp == 0
#------------------------------------------------------------------------------              
# 当特技为无吟唱特技的情况下,连携发动者的吟唱所需时间代入1,
# 防止可能因即时发动而导致连携失败。
# 合成特技发动时发动者吟唱槽清零重新进入计算,
# 所有参与连携的发动者的吟唱值带入整体吟唱值。
#------------------------------------------------------------------------------
              actor.rt = rt
            end
            @synthe.push(synthe_b)
          else
            for actor in synthe_b
              actor.current_action.spell_id = 0
            end
          end
        end
      end
    end
  end
  def spell_effect(battler, synthe, spells)
    spell_id = []
    for actor in synthe
      if spells.size != 0
        spell = spells.shift
      end
      for skill in $data_skills
        if spell == $data_skills[skill.id].id
          break
        end
      end
      if spell != $data_skills[skill.id].id
        p "注意:特技编号在数据库中不存在!请重新设置!"
      end
      if actor.skill_can_use?(skill.id) or
          battler.current_action.forcing == true
        spell_id.push(skill.id)
      else
        return false
      end
    end
    for actor in synthe
      actor.current_action.spell_id = spell_id.shift
    end
    return true
  end
end
使用的咏唱脚本…………
#==============================================================================
#RTAB观光游第四站,特技吟唱
#==============================================================================
# スキル詠唱 Ver 1.00
# 配布元・サポートURL
# http://members.jcom.home.ne.jp/cogwheel/

class Scene_Battle
#------------------------------------------------------------------------------
# ● 特技吟唱
#------------------------------------------------------------------------------
  def recite_time(battler)
    # 詠唱に要する時間。『battler.rtp = 100』でタイムゲージが溜まる時間と同等。
    # 合成スキル使用時は、全員で詠唱タイムを稼ぐため人数×100で通常時と同等。
    case $data_skills[battler.current_action.skill_id].name
    when "符の壱「梦想妙珠」"
      battler.rtp = 60
    when "霊符「梦想封印 集」"
      battler.rtp = 100
    when "神技「八方龙杀阵」"
      battler.rtp = 120
    when "「梦想天生」"
      battler.rtp = 100
    when "恋心「四重花火」"
      battler.rtp = 80
    when "魔炮「超究极花火」"
      battler.rtp = 150
    when "魔符「星光台风」"
      battler.rtp = 100
    when "「Blazing Star」"
      battler.rtp = 120
    when "能力「停止时间」"
      battler.rtp = 250
    when "竜巻「天孫降臨の道しるべ」"
      battler.rtp = 70
    when "「幻想风靡」"
      battler.rtp = 0
    when "「無双風神」」"
      battler.rtp = 80
    when "火符「火神之光」"
      battler.rtp = 70
    when "水符「水精公主」"
      battler.rtp = 70
    when "木符「风灵的角笛」"
      battler.rtp = 70
    when "土符「慵懒三石塔」"
      battler.rtp = 70
    when "金符「金属疲劳」"
      battler.rtp = 70
    when "日符「皇家圣焰」"
      battler.rtp = 100
    when "月符「沉静的月神」"
      battler.rtp = 100
    when "火水木金土符「贤者の石」"
      battler.rtp = 300
    when "QED「495年的波纹」"
      battler.rtp = 150
    when "恋心「万重火花」"
      battler.rtp = 500
    when "「猎奇剧团里的怪人」"
      battler.rtp = 130
    when "罔两「八云紫的神隐」"
      battler.rtp = 100
    when "魍魉「二重黑死蝶」"
      battler.rtp = 100
    when "式神「八云蓝」"
      battler.rtp = 80
    when "紫奥义「弹幕结界」"
      battler.rtp = 200  
    when "狱炎剑「业风闪影阵」"
      battler.rtp = 80
    when "「反魂蝶 -八分咲-」"
      battler.rtp = 0
    when "「百万鬼夜行」"
      battler.rtp = 10
    when "死亡「幻视之毒」"
      battler.rtp = 100
    when "「幻胧月睨」"
      battler.rtp = 120
    when "漂溺「粼粼水底之心伤」"
      battler.rtp = 70
    when "河童「回转顶板」"
      battler.rtp = 0
    when "火土符「环状熔岩带」"
      battler.rtp = 120
    when "金水符「水银之毒」"
      battler.rtp = 120
    when "火金符「圣爱尔摩火柱」"
      battler.rtp = 120
    when "土水符「诺亚的大洪水」"
      battler.rtp = 120
    when "土金符「翡翠巨城」"
      battler.rtp = 120
    when "月木符「卫星向日葵」"
      battler.rtp = 150
    when "日金符「日光反射器」"
      battler.rtp = 150
    when "水火符「森林大火」"
      battler.rtp = 100
    when "火符「火神的光辉」"
      battler.rtp = 100
    when "水符「湖葬」"
      battler.rtp = 100
    when "木符「翠绿风暴」"
      battler.rtp = 100
    when "土符「三石塔的震动」"
      battler.rtp = 100
    when "金符「银龙」"
      battler.rtp = 100
    when "土著神「小小青蛙不输风雨」"
      battler.rtp = 0
    when "神德「五谷丰穰米之浴」"
      battler.rtp = 80
    when "丰收「谷物神的允诺」"
      battler.rtp = 50
    when "悲运「大钟婆之火」"
      battler.rtp = 0
    when "「风神之神德」"
      battler.rtp = 160
    when "爆裂-超范围爆破"
      battler.rtp = 100
    when "地震「先忧后乐之剑」"
      battler.rtp = 130
    when "珠符「五爪龙之珠」"
      battler.rtp = 60
    when "「全人类的绯想天」"
      battler.rtp = 120
    when "「断续的噩梦」"
      battler.rtp = 20
    when "「反魂蝶 -八分咲-」"
      battler.rtp = 85
    when "力业「大江山颪」"
      battler.rtp = 100
    when "四天王奥义「三步必杀」"
      battler.rtp = 200
    when "「地底太阳」"
      battler.rtp = 250
    when "「死灰复燃」"
      battler.rtp = 145
    when "「Subterranean Rose」"
      battler.rtp = 100
    when "QED-「495年的波纹」"
      battler.rtp = 80
    when "「西行寺无余涅槃」"
      battler.rtp = 100
    when "方符「奇门遁甲」"
      battler.rtp = 20
    when "仙符「凤凰展翅」"
      battler.rtp = 0
    when "咒詛「首吊り蓬莱人形」"
      battler.rtp = 90
    when "禁忌「莱瓦汀」"
      battler.rtp = 0

#以上为举例说明,有需要请在下面自行设定  
   
   
    else
      battler.rtp = 30 #如不设定,默认为无吟唱效果
    end
    battler.rtp *= @Max  / 100
  end
end





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