赞 | 7 |
VIP | 0 |
好人卡 | 1 |
积分 | 9 |
经验 | 33876 |
最后登录 | 2019-3-1 |
在线时间 | 576 小时 |
Lv2.观梦者
- 梦石
- 0
- 星屑
- 878
- 在线时间
- 576 小时
- 注册时间
- 2010-6-26
- 帖子
- 793
|
加入我们,或者,欢迎回来。
您需要 登录 才可以下载或查看,没有帐号?注册会员
x
本帖最后由 VIPArcher 于 2016-11-23 01:01 编辑
1.2个关于分歧触发条件问题的解决。
2.关于物理反击定义的修改。
酬金不少于50元可支付宝转账,求大神帮助解决!
问题一:2个条件分歧BUG
#-------------------------------------------------------------------------- # ● 条件分歧 (技能) ( 无论怎么设置都无任何效果 ) #-------------------------------------------------------------------------- # 对象…条件参考角色对象 [0=自己] [1=目标] [2=敌全体] [3=我方全体] [4=敌我全体] [5=第二个目标] # 技能ID…设置哪个技能 # 条件…[0=可以使用] [1=不能使用] # 人数…上面条件的必要人数。条件对象队伍的場合、0队伍全员的数量 # 分岐…当条件满足的分支处理。如果不符合却恰恰相反被处理 # [0=请执行以下操作] [1=取消以下操作] [2=全部动作结束] # #―――动作名称――― 区别 目标 技能ID 条件 人数 分歧 "10号技能可使用时运行" => ["n_4", 0, 10, 0, 1, 0], "10号技能可使用时停止" => ["n_4", 0, 10, 0, 1, 2], #(无论怎样设置分歧都无效,无法影响后面动作的触发和禁止) #-------------------------------------------------------------------------- # ● 条件分岐 (参数) (当设置为HP,TP时,无论是大于,小于,等于任何值都是默# 认触发,其它数值触发条件正常) #-------------------------------------------------------------------------- # 对象…条件参考角色对象 [0=自己] [1=目标] [2=敌全体] [3=我方全体] [4=敌我全体] [5=第二个目标] # 种別…设置参数条件 # [1=Lv] [2=最大HP] [3=最大MP] [4=HP] [5=MP] [6=TP] [7=攻击力] # [8=防御力] [9=魔法力] [10=魔法防御] [11=敏捷性] [12=幸运] # 数值…条件的数字。从最大值减去的百分比%(HP・MP・TP限定) # 条件…引用变量条件的数字…[0=等于] [1=小于] [2=大于] # 人数…上面条件的必要人数。条件对象队伍的場合、0队伍全员的数量 # 分岐…当条件满足的分支处理。如果不符合却恰恰相反被处理 # [0=请执行以下操作] [1=取消以下操作] [2=全部动作结束] # 目标行动名 判別 对象 种别 数值 条件 人数 分岐 "HP50%以上实行" => ["n_5", 0, 4, -50, 2, 1, 0], "HP100以下实行" => ["n_5", 0, 4, 100, 1, 1, 0], "TP50以上实行" => ["n_5", 0, 6, 50, 2, 1, 0], "TP30以下停止" => ["n_5", 0, 6, 30, 1, 1, 2], "TP100实行" => ["n_5", 0, 6, 100, 0, 1, 0], #(HP,TP设置时不管条件是否达到,都是百分百触发分歧) "MP50%以上实行" => ["n_5", 0, 5, -50, 2, 1, 0], "MP100以下实行" => ["n_5", 0, 5, 100, 1, 1, 0], #(MP与其它属性值的触发条件正常,都是达到条件才会触发分歧)
#--------------------------------------------------------------------------
# ● 条件分歧 (技能) ( 无论怎么设置都无任何效果 )
#--------------------------------------------------------------------------
# 对象…条件参考角色对象 [0=自己] [1=目标] [2=敌全体] [3=我方全体] [4=敌我全体] [5=第二个目标]
# 技能ID…设置哪个技能
# 条件…[0=可以使用] [1=不能使用]
# 人数…上面条件的必要人数。条件对象队伍的場合、0队伍全员的数量
# 分岐…当条件满足的分支处理。如果不符合却恰恰相反被处理
# [0=请执行以下操作] [1=取消以下操作] [2=全部动作结束]
#
#―――动作名称――― 区别 目标 技能ID 条件 人数 分歧
"10号技能可使用时运行" => ["n_4", 0, 10, 0, 1, 0],
"10号技能可使用时停止" => ["n_4", 0, 10, 0, 1, 2],
#(无论怎样设置分歧都无效,无法影响后面动作的触发和禁止)
#--------------------------------------------------------------------------
# ● 条件分岐 (参数) (当设置为HP,TP时,无论是大于,小于,等于任何值都是默# 认触发,其它数值触发条件正常)
#--------------------------------------------------------------------------
# 对象…条件参考角色对象 [0=自己] [1=目标] [2=敌全体] [3=我方全体] [4=敌我全体] [5=第二个目标]
# 种別…设置参数条件
# [1=Lv] [2=最大HP] [3=最大MP] [4=HP] [5=MP] [6=TP] [7=攻击力]
# [8=防御力] [9=魔法力] [10=魔法防御] [11=敏捷性] [12=幸运]
# 数值…条件的数字。从最大值减去的百分比%(HP・MP・TP限定)
# 条件…引用变量条件的数字…[0=等于] [1=小于] [2=大于]
# 人数…上面条件的必要人数。条件对象队伍的場合、0队伍全员的数量
# 分岐…当条件满足的分支处理。如果不符合却恰恰相反被处理
# [0=请执行以下操作] [1=取消以下操作] [2=全部动作结束]
# 目标行动名 判別 对象 种别 数值 条件 人数 分岐
"HP50%以上实行" => ["n_5", 0, 4, -50, 2, 1, 0],
"HP100以下实行" => ["n_5", 0, 4, 100, 1, 1, 0],
"TP50以上实行" => ["n_5", 0, 6, 50, 2, 1, 0],
"TP30以下停止" => ["n_5", 0, 6, 30, 1, 1, 2],
"TP100实行" => ["n_5", 0, 6, 100, 0, 1, 0],
#(HP,TP设置时不管条件是否达到,都是百分百触发分歧)
"MP50%以上实行" => ["n_5", 0, 5, -50, 2, 1, 0],
"MP100以下实行" => ["n_5", 0, 5, 100, 1, 1, 0],
#(MP与其它属性值的触发条件正常,都是达到条件才会触发分歧)
(下面是Sideview的管理相关的部分,请大大看下是否有BUG导致以上分歧触发问题或者是我错误理解了上面脚本的使用方法)
# 条件分歧(技能)の場合 return nece_4 if action == "n_4" # 条件分歧(パラメータ)の場合 return nece_5 if action == "n_5" ........…… # ● 条件分歧 (技能) #-------------------------------------------------------------------------- def nece_4 targets = N03.get_targets(@action_data[1], @battler) return if targets == [] member_num = @action_data[4] member_num = targets.size if @action_data[4] == 0 && targets.size > 1 hit_count = 0 miss_count = 0 for target in targets hit_count += 1 if target.skill_learn?($data_skills[@action_data[2]]) && target.skill_conditions_met?($data_skills[@action_data[2]]) miss_count += 1 if !target.skill_learn?($data_skills[@action_data[2]]) or !target.skill_conditions_met?($data_skills[@action_data[2]]) end case @action_data[3] when 0 ; judgment = hit_count >= member_num when 1 ; judgment = miss_count >= member_num end action_diverging(judgment, @action_data[5]) end #-------------------------------------------------------------------------- # ● 条件分歧 (パラメータ) #-------------------------------------------------------------------------- def nece_5 targets = N03.get_targets(@action_data[1], @battler) return if targets == [] member_num = @action_data[5] member_num = targets.size if @action_data[5] == 0 && targets.size > 1 hit_count = 0 for target in targets hit_count += 1 if target.comparison_parameter([@action_data[2],@action_data[3],@action_data[4]]) end judgment = hit_count >= member_num action_diverging(judgment, @action_data[6]) end #-------------------------------------------------------------------------- # ● パラメータ条件比較 data = [类别, 数值, 区别] #-------------------------------------------------------------------------- def comparison_parameter(data) return true if data[0][0] == 0 kind = data[0] num = data[1] select = data[2] case kind when 1 ; par = level when 2 ; par = mhp when 3 ; par = mmp when 4 ; par = hp when 5 ; par = mp when 6 ; par = tp when 7 ; par = atk when 8 ; par = self.def when 9 ; par = mat when 10 ; par = mdf when 11 ; par = agi when 12 ; par = luk end if num < 0 case kind when 4 ; num = mhp * num / 100 when 5 ; num = mmp * num / 100 when 6 ; num = max_tp * num / 100 end num = num.abs end case select when 0 ; return par == num when 1 ; return par < num when 2 ; return par > num end end
# 条件分歧(技能)の場合
return nece_4 if action == "n_4"
# 条件分歧(パラメータ)の場合
return nece_5 if action == "n_5"
........……
# ● 条件分歧 (技能)
#--------------------------------------------------------------------------
def nece_4
targets = N03.get_targets(@action_data[1], @battler)
return if targets == []
member_num = @action_data[4]
member_num = targets.size if @action_data[4] == 0 && targets.size > 1
hit_count = 0
miss_count = 0
for target in targets
hit_count += 1 if target.skill_learn?($data_skills[@action_data[2]]) && target.skill_conditions_met?($data_skills[@action_data[2]])
miss_count += 1 if !target.skill_learn?($data_skills[@action_data[2]]) or !target.skill_conditions_met?($data_skills[@action_data[2]])
end
case @action_data[3]
when 0 ; judgment = hit_count >= member_num
when 1 ; judgment = miss_count >= member_num
end
action_diverging(judgment, @action_data[5])
end
#--------------------------------------------------------------------------
# ● 条件分歧 (パラメータ)
#--------------------------------------------------------------------------
def nece_5
targets = N03.get_targets(@action_data[1], @battler)
return if targets == []
member_num = @action_data[5]
member_num = targets.size if @action_data[5] == 0 && targets.size > 1
hit_count = 0
for target in targets
hit_count += 1 if target.comparison_parameter([@action_data[2],@action_data[3],@action_data[4]])
end
judgment = hit_count >= member_num
action_diverging(judgment, @action_data[6])
end
#--------------------------------------------------------------------------
# ● パラメータ条件比較 data = [类别, 数值, 区别]
#--------------------------------------------------------------------------
def comparison_parameter(data)
return true if data[0][0] == 0
kind = data[0]
num = data[1]
select = data[2]
case kind
when 1 ; par = level
when 2 ; par = mhp
when 3 ; par = mmp
when 4 ; par = hp
when 5 ; par = mp
when 6 ; par = tp
when 7 ; par = atk
when 8 ; par = self.def
when 9 ; par = mat
when 10 ; par = mdf
when 11 ; par = agi
when 12 ; par = luk
end
if num < 0
case kind
when 4 ; num = mhp * num / 100
when 5 ; num = mmp * num / 100
when 6 ; num = max_tp * num / 100
end
num = num.abs
end
case select
when 0 ; return par == num
when 1 ; return par < num
when 2 ; return par > num
end
end
问题二.关于物理反击
效果:改成受到物理伤害后再反击;而且只反击一次。
下面是SV100横版 管理脚本的部分
#-------------------------------------------------------------------------- # ● 反击の发动 ★再定義 #-------------------------------------------------------------------------- def invoke_counter_attack(target, item) return if @subject.sv.counter_id != 0 @counter_attacker = [] if @counter_attacker == nil return apply_item_effects(apply_substitute(target, item), item) if !target.movable? @log_window.add_text(sprintf(Vocab::CounterAttack, target.name)) if N03::BATTLE_LOG target.sv.counter_id = target.sv.counter_skill_id @counter_attacker.push(target) end #-------------------------------------------------------------------------- # ● 反击 #-------------------------------------------------------------------------- def set_counter_attack pre_subject = @subject for attacker in @counter_attacker @subject = attacker item = $data_skills[attacker.sv.counter_skill_id] play_sideview([pre_subject], item) end # 同一カウンター者を考慮してカウンターIDの初期化は动作后に运行 for attacker in @counter_attacker do attacker.sv.counter_id = 0 end @subject = pre_subject @counter_attacker = nil end
#--------------------------------------------------------------------------
# ● 反击の发动 ★再定義
#--------------------------------------------------------------------------
def invoke_counter_attack(target, item)
return if @subject.sv.counter_id != 0
@counter_attacker = [] if @counter_attacker == nil
return apply_item_effects(apply_substitute(target, item), item) if !target.movable?
@log_window.add_text(sprintf(Vocab::CounterAttack, target.name)) if N03::BATTLE_LOG
target.sv.counter_id = target.sv.counter_skill_id
@counter_attacker.push(target)
end
#--------------------------------------------------------------------------
# ● 反击
#--------------------------------------------------------------------------
def set_counter_attack
pre_subject = @subject
for attacker in @counter_attacker
@subject = attacker
item = $data_skills[attacker.sv.counter_skill_id]
play_sideview([pre_subject], item)
end
# 同一カウンター者を考慮してカウンターIDの初期化は动作后に运行
for attacker in @counter_attacker do attacker.sv.counter_id = 0 end
@subject = pre_subject
@counter_attacker = nil
end
帮你改了排版,加上了代码框=。=,
下次你再发脚本的时候可以尝试代码使用工具栏里的<>代码框功能 —— VIPArcher |
评分
-
查看全部评分
|