Project1

标题: [已解决]如何做到开启穿透后,不与门发生事件? [打印本页]

作者: miantouchi    时间: 2019-8-30 08:26
标题: [已解决]如何做到开启穿透后,不与门发生事件?
本帖最后由 miantouchi 于 2019-8-30 21:17 编辑

如何做到开启穿透后,不与门发生事件?
人物开启穿透功能后,还能进去帐篷里面,我想让他开启穿透后,不与门事件发生。
(其实我就是想做个飞行功能,开启后改下人物图片,开启穿透功能,如果是飞艇还能和地下的村子接触是不是很诡异,空中城市能发生接触)
另外一张地图里面有很多村子的话,是不是很麻烦?

1.png (140.27 KB, 下载次数: 15)

1.png

展示下.gif (2 MB, 下载次数: 8)

展示下成功效果哈哈

展示下成功效果哈哈

穿透测试.rar

193.38 KB, 下载次数: 48


作者: 89444640    时间: 2019-8-30 09:03
加个开关多省事,事件页加个分歧,当开关打开时 空白 中断事件处理 开关关闭时,该咋地咋地,中断事件处理,
不过缺点,每个角色和每个事件页都得加,除非能用脚本写个方法,当开关10086打开时,所有事件均不触发。
缺点,飞起来就只能满地逛了,想触发事件必须落下才可以,然后你还得写落脚点地形通行情况判断,不可通行位置不可降落,避免落到水里。
作者: 灯笼菜刀王    时间: 2019-8-30 10:17
本帖最后由 灯笼菜刀王 于 2019-8-30 10:38 编辑

一句话就可以了,  当10086开关打开的时候, 中断执行,  注意check_event_trigger_touch 这个函数有两个, game player 和 game event , 一个是主角碰事件,一个是事件碰主角, 要禁止的话要都禁了哦  还有一个 check_event_trigger_here 也要一起禁

  #--------------------------------------------------------------------------
  # ● 接触事件启动判定
  #--------------------------------------------------------------------------
  def check_event_trigger_touch(x, y)
    return false if $game_switches[10086]
    result = false
    # 事件执行中的情况下
    if $game_system.map_interpreter.running?
      return result
    end
    # 全事件的循环
    for event in $game_map.events.values
      # 事件坐标与目标一致的情况下
      if event.x == x and event.y == y and [1,2].include?(event.trigger)
        # 跳跃中以外的情况下、启动判定是正面的事件
        if not event.jumping? and not event.over_trigger?
          event.start
          result = true
        end
      end
    end
    return result
  end

后排提醒, 虽然禁止是很容易, 但是要应用可不容易, 要好好考虑如何安排这个开关的启动和关闭, 打开它是"所有接触启动的事件都无效了哦"

当然, 也可以增加条件, 让它不"禁止全部"

先加入这个插件

class Game_Event < Game_Character
   def  name ; return @event.name ; end
end

然后, 把条件改为   return false if $game_switches[10086] && name.include?("门")   这样,打开10086开关的时候, 只有事件名字带"门"字的会被禁止触发

根据需要, 好好考虑用什么条件吧
作者: miantouchi    时间: 2019-8-30 13:18
本帖最后由 miantouchi 于 2019-8-30 13:20 编辑
灯笼菜刀王 发表于 2019-8-30 10:17
一句话就可以了,  当10086开关打开的时候, 中断执行,  注意check_event_trigger_touch 这个函数有两个, gam ...


出现了几个问题。
1.我用$game_switches[10086]这个开关的时候不好使,开启这个开关后,没有作用。F9调试模式里面最多能看5000个开关,没有办法在调试模式里面开启或者关闭。
2.用$game_switches[1]时开启好用,可以穿透那个门,并不进入屋内,但是再次去老头那关闭$game_switches[1] 开关后人物界面卡死。
如果用F9调试模式,开关1号开关就正常,用地图中的老头,关闭时就卡死。我看了下,论坛说是 $game_switches[1] = false 有BUG,我放到前面或者后面加上注释也不行
以下是我改代码地方和测试工程。

1.png (61.11 KB, 下载次数: 8)

1.png

2.png (24.92 KB, 下载次数: 10)

2.png

3.png (27.77 KB, 下载次数: 11)

3.png

4.png (28.2 KB, 下载次数: 11)

4.png

8.30穿透测试.rar

192.73 KB, 下载次数: 51

修改






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