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

Project1

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

[已经解决] [已解决]如何做到开启穿透后,不与门发生事件?

[复制链接]

Lv4.逐梦者

梦石
0
星屑
14621
在线时间
2196 小时
注册时间
2019-1-24
帖子
1123

R考场第七期纪念奖

跳转到指定楼层
1
发表于 2019-8-30 08:26:33 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 miantouchi 于 2019-8-30 21:17 编辑

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

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

1.png

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

展示下成功效果哈哈

展示下成功效果哈哈

穿透测试.rar

193.38 KB, 下载次数: 48

Lv5.捕梦者

梦石
0
星屑
35186
在线时间
4169 小时
注册时间
2007-12-15
帖子
10067
2
发表于 2019-8-30 09:03:11 | 只看该作者
加个开关多省事,事件页加个分歧,当开关打开时 空白 中断事件处理 开关关闭时,该咋地咋地,中断事件处理,
不过缺点,每个角色和每个事件页都得加,除非能用脚本写个方法,当开关10086打开时,所有事件均不触发。
缺点,飞起来就只能满地逛了,想触发事件必须落下才可以,然后你还得写落脚点地形通行情况判断,不可通行位置不可降落,避免落到水里。

点评

o(╥﹏╥)o 丢人了。  发表于 2019-8-30 19:36
10086是菜刀老师教出来的“任意开关”表达方式XD  发表于 2019-8-30 16:49
老实人啊,10086只是个举例,你想用1-5000里面的哪个开关还不是你自己说了算  发表于 2019-8-30 15:43
开关总共5000个,拟怎么写10086,有什么特殊用途?  发表于 2019-8-30 11:42
那就用变量来分歧,0、都触发,1、触发空中不触发低下,2、都不触发  发表于 2019-8-30 10:14

评分

参与人数 1+1 收起 理由
miantouchi + 1 塞糖

查看全部评分

回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
39021
在线时间
5719 小时
注册时间
2006-11-10
帖子
6619
3
发表于 2019-8-30 10:17:29 | 只看该作者
本帖最后由 灯笼菜刀王 于 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开关的时候, 只有事件名字带"门"字的会被禁止触发

根据需要, 好好考虑用什么条件吧

点评

对船不能上岸,只能在海洋图块里面活动,行驶船的时候遇敌是海里的怪物,如果有啥问题,继续开贴。  发表于 2019-8-31 21:05
船你要啥效果,只能在海中行驶不能上岸吗,那个我感觉可以根据地形编号来处理  发表于 2019-8-31 17:39
接下来研究船,1楼展示下效果图,嘚瑟下,^_^  发表于 2019-8-30 21:18
多谢!for event in $game_map.events.values,下面加上就好用了。  发表于 2019-8-30 21:00
因为name是定义到event的方法, 所以自然就要找event的对象来调用, 自己研究下game player里在哪里调用event, 就可以用它了  发表于 2019-8-30 20:19

评分

参与人数 2星屑 +100 +1 收起 理由
RyanBern + 100 认可答案
miantouchi + 1 认可答案

查看全部评分

回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
14621
在线时间
2196 小时
注册时间
2019-1-24
帖子
1123

R考场第七期纪念奖

4
 楼主| 发表于 2019-8-30 13:18:35 | 只看该作者
本帖最后由 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, 下载次数: 16)

1.png

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

2.png

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

3.png

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

4.png

8.30穿透测试.rar

192.73 KB, 下载次数: 51

修改

点评

然后脚本返回false的问题是XP的脚本问题, 避免的方法 这样写 $game_switches[1] = false ; true 就可以了  发表于 2019-8-30 15:21
因为你并没有10086开关(game_switches脚本里去看, 它限制了开关5000个) 自然操作它就会出错  发表于 2019-8-30 15:20
哈哈,你成功绕过我的两个问题了,就算这两个问题解决了,你知不知道什么原因?不可以直接用10086号开关?,不可以写代码形式调10086号开关?  发表于 2019-8-30 15:01
你那么老实干嘛, 开关编号随便你呗, =-=, 然后可以直接用事件操作开关,干嘛还要去用脚本多打字啊  发表于 2019-8-30 14:28
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-26 17:32

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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