设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 2243|回复: 8
打印 上一主题 下一主题

[已经解决] 脚本“攻击后执行公共事件”的BUG?

[复制链接]

Lv2.观梦者

梦石
0
星屑
440
在线时间
48 小时
注册时间
2018-7-4
帖子
26
跳转到指定楼层
1
发表于 2018-7-9 20:11:20 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
先放出代码。

  1. #==============================================================================
  2. # 本脚本来自www.66rpg.com,转载和使用请保留此信息  
  3. #==============================================================================
  4. class Scene_Battle
  5. #--------------------------------------------------------------------------
  6. # ● 刷新画面 (主回合) ★
  7. #--------------------------------------------------------------------------
  8. def update_phase4
  9.    case @phase4_step
  10.    when 1
  11.      update_phase4_step1
  12.    when 2
  13.      update_phase4_step2
  14.    when 3
  15.      update_phase4_step3
  16.    when 4
  17.      update_phase4_step4
  18.    when 5
  19.      update_phase4_step5
  20.    when 6
  21.      update_phase4_step6
  22.    when 7
  23.      update_phase4_step7
  24.    end
  25. end
  26. #--------------------------------------------------------------------------
  27. # ● 刷新画面 (主回合步骤 6 : 刷新) ★
  28. #--------------------------------------------------------------------------
  29. def update_phase4_step6
  30.    # 清除强制行动对像的战斗者
  31.    $game_temp.forcing_battler = nil
  32.    # 公共事件 ID 有效的情况下
  33.    if @common_event_id > 0
  34.      # 设置事件
  35.      common_event = $data_common_events[@common_event_id]
  36.      $game_system.battle_interpreter.setup(common_event.list, 0)
  37.    end
  38.    # 移至步骤 1
  39.    @phase4_step = 7
  40. end
  41. #--------------------------------------------------------------------------
  42. # ● 刷新画面 (主回合步骤 7 : 刷新) ★
  43. #--------------------------------------------------------------------------
  44. def update_phase4_step7
  45.    common_event = $data_common_events[1]
  46.    $game_system.battle_interpreter.setup(common_event.list, 0)
  47.    @phase4_step = 1
  48. end
  49. end
  50. #==============================================================================
  51. # 本脚本来自www.66rpg.com,转载和使用请保留此信息  
  52. #==============================================================================
复制代码


根据提供者大触的说明,这个脚本可以使角色普通攻击后执行公共事件。于是我设置触发事件id为4



然后第四个公共事件设置成



但是到了战斗中以后,选用攻击指令直接毫无反应,战斗也卡壳了。
请教各位了,是我对脚本的调用有误,还是脚本出现了BUG?该如何修改?

Lv5.捕梦者

梦石
0
星屑
37754
在线时间
5385 小时
注册时间
2006-11-10
帖子
6545
2
发表于 2018-7-9 20:39:03 | 只看该作者
这个脚本不是"普通攻击后执行公共事件"  而是每次行动(包括敌人)后都执行公共事件~~

脚本很简单, 并没有什么错误.  不过因为它覆盖了update_phase4, 所以和战斗类插件冲突的可能性很大~

你战斗卡壳的原因估计就是这个
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
440
在线时间
48 小时
注册时间
2018-7-4
帖子
26
3
 楼主| 发表于 2018-7-9 22:11:39 | 只看该作者
灯笼菜刀王 发表于 2018-7-9 20:39
这个脚本不是"普通攻击后执行公共事件"  而是每次行动(包括敌人)后都执行公共事件~~

脚本很简单 ...

那……请教一下,
如果是让(我方角色)普通攻击之后执行某个公共事件的话,可以做到吗?
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
37754
在线时间
5385 小时
注册时间
2006-11-10
帖子
6545
4
发表于 2018-7-10 10:00:43 | 只看该作者
709299008 发表于 2018-7-9 22:11
那……请教一下,
如果是让(我方角色)普通攻击之后执行某个公共事件的话,可以做到吗? ...

找到这段

  #--------------------------------------------------------------------------
  # ● 生成基本行动结果
  #--------------------------------------------------------------------------
  def make_basic_action_result
    # 攻击的情况下
    if @active_battler.current_action.basic == 0
      # 设置攻击 ID
      @animation1_id = @active_battler.animation1_id
      @animation2_id = @active_battler.animation2_id
      # 行动方的战斗者是敌人的情况下
      if @active_battler.is_a?(Game_Enemy)
        if @active_battler.restriction == 3
          target = $game_troop.random_target_enemy
        elsif @active_battler.restriction == 2
          target = $game_party.random_target_actor
        else
          index = @active_battler.current_action.target_index
          target = $game_party.smooth_target_actor(index)
        end
      end
      # 行动方的战斗者是角色的情况下
      if @active_battler.is_a?(Game_Actor)
        if @active_battler.restriction == 3
          target = $game_party.random_target_actor
        elsif @active_battler.restriction == 2
          target = $game_troop.random_target_enemy
        else
          index = @active_battler.current_action.target_index
          target = $game_troop.smooth_target_enemy(index)
        end
        @common_event_id =  4 #执行4号公共事件
      end
      # 设置对像方的战斗者序列

在这里加上红色部分就可以了, 默认的脚本是在 scene battle4

这个是"我方普通攻击后就执行4号公共事件", 包括"自动攻击敌人, 自动攻击我方" 的情况, 如果想排除这两个异常状态下的普通攻击, 把红色句子和上面的end交换位置就行。

评分

参与人数 2星屑 +100 +1 收起 理由
RyanBern + 100 认可答案
709299008 + 1 明白了,多谢解疑!

查看全部评分

回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
440
在线时间
48 小时
注册时间
2018-7-4
帖子
26
5
 楼主| 发表于 2018-7-10 11:21:32 | 只看该作者
灯笼菜刀王 发表于 2018-7-10 10:00
找到这段

  #--------------------------------------------------------------------------

呃……我添加上了这一行内容,但是好像没有奏效的样子……

点评

咱给的位置是默认脚本, 你有用插件就要到插件里去加  发表于 2018-7-10 11:29
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
440
在线时间
48 小时
注册时间
2018-7-4
帖子
26
6
 楼主| 发表于 2018-7-10 14:13:14 | 只看该作者
灯笼菜刀王 发表于 2018-7-10 10:00
找到这段

  #--------------------------------------------------------------------------

那个……确实在插件里也找到了这段。
我在脚本里安的插件,相关的应该有RTAB和菜鸟横版两个
RTAB里在相同的位置,加上了这条,但是经测试后发现同样没有作用;
菜鸟横版里则是没有找到对应的代码……
问题是出在了“菜鸟横版”这个插件了吗?

点评

RTAB的话,需要好好研究一下~  发表于 2018-7-10 23:40
是在RTAB上, RTAB不能用默认的方法来做事件。 不懂脚本的话, 两个选择, 1, 放弃一切战斗事件, 2 放弃RTAB脚本。  发表于 2018-7-10 15:13
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-4-19 23:54

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表