Project1
标题:
特殊释放时机的技能
[打印本页]
作者:
cnocg
时间:
2014-7-20 23:46
标题:
特殊释放时机的技能
本帖最后由 cnocg 于 2014-7-21 14:25 编辑
问题详述:1 传统回合制RPG战斗 2每个队员都有一个特殊技能 3 这个技能的触发时机是 当技能持有者排在队伍第五位 并且 回合结束时(即,在每回合回合结束时,施放队列中第五位成员(不在战场上出现)的特殊技能)
1 不知是怎么实现(脚本or事件)?(^O^;) \n
2 如果可以的话(弱弱伸手),可以写或叙述一个demo的代码或是事件参考一下吗 (′▽`〃) \n
新手初来乍到请多包涵
作者:
恐惧剑刃
时间:
2014-7-21 07:36
这个技能的触发时机是 当技能持有者排在队伍第五位 并且 回合结束时
不太明白
估计纯事件就可以,找到队伍哪里
条件改成某一回合 后边加 nx 会“跳着”触发
如果角色存活就强制行动
作者:
cnocg
时间:
2014-7-21 08:11
恐惧剑刃 发表于 2014-7-21 07:36
这个技能的触发时机是 当技能持有者排在队伍第五位 并且 回合结束时
不太明白
抱歉,开始没说清。其实就是回合结束时发动第五位成员的特殊技能(^O^;)
作者:
芯☆淡茹水
时间:
2014-7-21 09:42
本帖最后由 芯☆淡茹水 于 2014-7-21 09:44 编辑
下面这个,因为没弄 5 人队伍,所以未测试。有问题 @
#==============================================================================
class Scene_Battle
#----------------------------------------------------------------------------
# 在最后释放的特殊技能 ID。
SPECIAL_SKILLS = [15, 24]
#--------------------------------------------------------------------------
alias add_main_xdrs main
def main
@fifth_fight = nil
add_main_xdrs
end
#--------------------------------------------------------------------------
def make_action_orders
# 初始化序列 @action_battlers
@action_battlers = []
# 添加敌人到 @action_battlers 序列
for enemy in $game_troop.enemies
@action_battlers.push(enemy)
end
# 添加角色到 @action_battlers 序列
for actor in $game_party.actors
@action_battlers.push(actor)
end
# 确定全体的行动速度
for battler in @action_battlers
battler.make_action_speed
end
# 按照行动速度从大到小排列
@action_battlers.sort! {|a,b|
b.current_action.speed - a.current_action.speed }
@fifth_fight = $game_party.actors[4] if $game_party.actors.size == 5
end
#--------------------------------------------------------------------------
def update_phase4_step1
# 隐藏帮助窗口
@help_window.visible = false
# 判定胜败
if judge
# 胜利或者失败的情况下 : 过程结束
return
end
# 强制行动的战斗者不存在的情况下
if $game_temp.forcing_battler == nil
# 设置战斗事件
setup_battle_event
# 执行战斗事件中的情况下
if $game_system.battle_interpreter.running?
return
end
end
# 强制行动的战斗者存在的情况下
if $game_temp.forcing_battler != nil
# 在头部添加后移动
@action_battlers.delete($game_temp.forcing_battler)
@action_battlers.unshift($game_temp.forcing_battler)
end
# 未行动的战斗者不存在的情况下 (全员已经行动)
if @action_battlers.size == 0
if @fifth_fight != nil
discharge_skill
return
end
# 开始同伴命令回合
start_phase2
return
end
# 初始化动画 ID 和公共事件 ID
@animation1_id = 0
@animation2_id = 0
@common_event_id = 0
# 未行动的战斗者移动到序列的头部
@active_battler = @action_battlers.shift
# 如果已经在战斗之外的情况下
if @active_battler.index == nil
return
end
# 连续伤害
if @active_battler.hp > 0 and @active_battler.slip_damage?
@active_battler.slip_damage_effect
@active_battler.damage_pop = true
end
# 自然解除状态
@active_battler.remove_states_auto
# 刷新状态窗口
@status_window.refresh
# 移至步骤 2
@phase4_step = 2
end
#---------------------------------------------------------------------------
def discharge_skill
skill_id = 0
for id in SPECIAL_SKILLS
if @fifth_fight.skill_can_use?(id)
skill_id = id
break
end
end
if skill_id > 0
@active_battler = @fifth_fight
@fifth_fight = nil
@active_battler.current_action.kind = 1
@active_battler.current_action.skill_id = skill_id
@animation1_id = 0
@animation2_id = 0
@common_event_id = 0
@phase4_step = 2
else
@fifth_fight = nil
start_phase2
end
end
end
复制代码
作者:
cnocg
时间:
2014-7-21 14:30
本帖最后由 cnocg 于 2014-7-24 23:29 编辑
其实是战场上有4个人
而队列中的第五人不登场
但是会释放特殊技能
抱歉,脚本(特殊技能那个)还是看的不太懂哦(=^・・^=)
四人战斗 第五人释放技能和这个脚本的实现方式差异很大吗
直接把32行改成>=5不可以吗(^O^;)
@ 芯☆淡茹水
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1