Project1
标题:
求解关于RTAB的特技连携的问题
[打印本页]
作者:
绝弦之月
时间:
2016-9-9 20:58
标题:
求解关于RTAB的特技连携的问题
请问如何设置RTAB的特技连携的消耗sp值调整?也就是截图的脚本如何更改、使用。求大神解决,十分感谢。
#==============================================================================
# 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
复制代码
图片1.jpg
(109.86 KB, 下载次数: 10)
下载附件
保存到相册
2016-9-9 20:58 上传
作者:
绝弦之月
时间:
2016-9-23 20:57
有人能帮个忙吗?
作者:
夜狠简单
时间:
2016-9-23 22:48
绝弦之月 发表于 2016-9-23 20:57
有人能帮个忙吗?
好像是
case 合成的特技
when 如果合成的特技是59
那么A号连携者消耗59法力,B连携者消耗23法力。
然后合击成60 那个消耗法力可能是多些了。60号合击2个人就可以了。
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1