Project1

标题: 关于VA战斗中跳过行动选择强制进入战斗action指令报错 [打印本页]

作者: c571811558    时间: 2025-3-29 23:14
标题: 关于VA战斗中跳过行动选择强制进入战斗action指令报错
本帖最后由 c571811558 于 2025-3-29 23:23 编辑

项目在这里qwq

Project1.zip (1.42 MB, 下载次数: 1)




首先敌群用这个测试,这个敌群里刚开始会打开一个aaaaa开关



然后我在公共事件里用了global common event插件把这个公共事件改成了战斗可以用的公共事件,在战斗中就可以待机三秒打开2号开关



二号开关我在这里写的是直接执行turn_start,然后在战斗中,确实可以做到第一个角色普攻了之后,第二个角色待机,

也就是这个时候待机....

180帧后开关2打开.就会强制跳过行动   进入战斗,但这个时候会面临两个问题

1.窗口不回正(如图)


2.如果我还在"选择技能窗口"出现时或"选择目标敌人窗口"出现的时候打开了开关2,窗口不会自动关闭(如图)




并且如果在这个窗口还存在的时候,我在"选择技能"被跳过后的"战斗行动"中再次选择技能或目标敌人会报错(如图)

再次选择目标敌人:


再次选择技能:


这个报错我搞不明白QWQ,我想要一个没有报错的跳过"技能选择",强制进入"战斗行动"
和在"战斗行动"中也会跳过所有技能包括动画并刷新"战斗行动"的2号开关

请求大佬援助qwq

作者: soulsaga    时间: 2025-3-30 02:28
本帖最后由 soulsaga 于 2025-3-30 02:30 编辑

要实现的是在一定时间后就会强制开始回合呀...
大概有个问题是你写的判断开关脚本在打开技能窗口时不会执行?
作者: c571811558    时间: 2025-3-30 14:30
soulsaga 发表于 2025-3-30 02:28
要实现的是在一定时间后就会强制开始回合呀...
大概有个问题是你写的判断开关脚本在打开技能窗口时不会执行 ...

会执行,只不过不会帮我关闭这两个窗口,如果能帮我关掉这两个窗口就差不多了第一个效果达到了
作者: 百里_飞柳    时间: 2025-3-30 15:08
本帖最后由 百里_飞柳 于 2025-3-30 15:10 编辑

我粗浅理解了下你想要做的,是打开开关后,限时选择角色指令,否则就跳过?

我结合自己的计时器扩展,想了这样的实现方法:

首先,脚本更改为这样:
  1. class Scene_Battle
  2.   alias eagle_battle_update update
  3.   def update
  4.     eagle_battle_update
  5.     # 当指定ID的开关开启,且名称为 "指令限时" 的老鹰的计时器扩展归零时触发
  6.     if $game_switches[1] && $game_timer["指令限时"].finish?
  7.       # 将开关关闭,防止反复触发
  8.       $game_switches[1] = false
  9.       # 针对我方全体战斗角色
  10.       $game_party.battle_members.each do |m|
  11.         # 如果还没有行动 or 还没选择指令 or 还没选择技能目标
  12.         if m.input.item == nil || m.input.item.id == 0 || m.input.target_index < 0
  13.           # 直接强制给他变成 数据库-技能 中的 7号技能待机
  14.           m.input.set_skill(7)
  15.         end
  16.       end
  17.       # 关闭 选择敌人、选择我方角色、技能、物品等窗口
  18.       @enemy_window.hide
  19.       @actor_window.hide
  20.       @skill_window.hide
  21.       @item_window.hide
  22.       # 结束指令选择,开始本回合的行动
  23.       turn_start
  24.     end
  25.   end
  26. end
复制代码


然后在 敌群 的事件页中,新增脚本,填入:
  1. # 激活老鹰的计时器,其中 5 * 60 代表 5秒
  2. $game_timer["指令限时"].start(5 * 60)
  3. # 打开开关
  4. $game_switches[1] = true
复制代码


这样,在战斗事件执行时,就会倒计时 5s(我的计时器有个简单UI在右上角),结束时直接执行待机指令。
作者: c571811558    时间: 2025-3-31 07:20
本帖最后由 c571811558 于 2025-3-31 07:26 编辑
百里_飞柳 发表于 2025-3-30 15:08
我粗浅理解了下你想要做的,是打开开关后,限时选择角色指令,否则就跳过?

我结合自己的计时器扩展,想了 ...


谢谢鹰酱,在新项目里是可以关闭,但是如果不管窗口消失按下确定,上述操作还是会存在报错

作者: c571811558    时间: 2025-3-31 07:30
百里_飞柳 发表于 2025-3-30 15:08
我粗浅理解了下你想要做的,是打开开关后,限时选择角色指令,否则就跳过?

我结合自己的计时器扩展,想了 ...

可不可以给他关闭窗口的时候默认为取消选择?这样估计就得判断输入指令的窗口状态了吧qwq

QQ_1743377274665.png (27.49 KB, 下载次数: 4)

QQ_1743377274665.png

作者: Doolet    时间: 2025-3-31 09:57
c571811558 发表于 2025-3-31 07:30
可不可以给他关闭窗口的时候默认为取消选择?这样估计就得判断输入指令的窗口状态了吧qwq ...

还是报错该怎么办qwq
作者: Doolet    时间: 2025-3-31 15:14
百里_飞柳 发表于 2025-3-30 15:08
我粗浅理解了下你想要做的,是打开开关后,限时选择角色指令,否则就跳过?

我结合自己的计时器扩展,想了 ...

还是报错该怎么办qwq
作者: c571811558    时间: 2025-3-31 17:15
百里_飞柳 发表于 2025-3-30 15:08
我粗浅理解了下你想要做的,是打开开关后,限时选择角色指令,否则就跳过?

我结合自己的计时器扩展,想了 ...

按照鹰酱给的办法只是解决了窗口看到的问题,实际上报错问题根本就没有解决,和上面提出的报错一样
作者: c571811558    时间: 2025-3-31 21:59
百里_飞柳 发表于 2025-3-30 15:08
我粗浅理解了下你想要做的,是打开开关后,限时选择角色指令,否则就跳过?

我结合自己的计时器扩展,想了 ...

emm确实还是有报错的,要不您有空测试项目看看?

作者: c571811558    时间: 2025-3-31 22:06
本帖最后由 c571811558 于 2025-3-31 22:31 编辑

..............
作者: c571811558    时间: 2025-3-31 22:31
百里_飞柳 发表于 2025-3-30 15:08
我粗浅理解了下你想要做的,是打开开关后,限时选择角色指令,否则就跳过?

我结合自己的计时器扩展,想了 ...

我确实有用到相关插件
Yanfly Engine Ace - 战斗系统 v1.22
Yanfly Engine Ace - 战斗系统插件:敌人目标信息 v1.02
Yanfly Engine Ace - 战斗信息记录 v1.02
MOTHER 3 BASE
MOTHER 3 SCROLL
RGSS3 战斗中查看状态指令 Ver1.05 by 星潟
我把我用到的能涉及到的插件整理了一个新项目给鹰酱
Project1.zip (1.46 MB, 下载次数: 3)

作者: 百里_飞柳    时间: 2025-4-4 01:59
c571811558 发表于 2025-3-31 22:31
我确实有用到相关插件
Yanfly Engine Ace - 战斗系统 v1.22
Yanfly Engine Ace - 战斗系统插件:敌人目标 ...

现在应该可以了,实际上就是要关闭下 yea 新增的一个角色状态窗口,然后把这些窗口全部取消激活状态
  1. class << BattleManager
  2.   attr_accessor :actor_index
  3. end
  4. class Scene_Battle
  5.   alias :update_20250324 :update
  6.   def update
  7.     update_20250324
  8.     if $game_switches[2]
  9.       $game_switches[2] = false
  10.       $game_party.battle_members.each do |m|
  11.         # 如果还没有行动 or 还没选择指令 or 还没选择技能目标
  12.         if m.input.item == nil || m.input.item.id == 0 || m.input.target_index < 0
  13.           # 直接强制给他变成 数据库-技能 中的 7号技能待机
  14.           m.input.set_skill(7)
  15.         end
  16.       end
  17.       # 关闭 选择敌人、选择我方角色、技能、物品等窗口
  18.       @enemy_window.deactivate.hide
  19.       @actor_window.deactivate.hide
  20.       @skill_window.deactivate.hide
  21.       @item_window.deactivate.hide
  22.       # 关闭 YEA的技能使用时的角色窗口
  23.       @status_window.show
  24.       @status_aid_window.hide
  25.       # 利用默认的行动序列,直接跳转到回合开始
  26.       BattleManager.actor_index = $game_party.members.size
  27.       next_command
  28.     end
  29.   end
  30. end
复制代码

作者: c571811558    时间: 2025-4-4 10:42
百里_飞柳 发表于 2025-4-4 01:59
现在应该可以了,实际上就是要关闭下 yea 新增的一个角色状态窗口,然后把这些窗口全部取消激活状态
...

十分感谢!!鹰酱是我的恩人qwq




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