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