查看: 5484|回复: 14

[原创发布] 队列行进不被门夹的事件设置

[复制链接]
梦石
1
星屑
24088
在线时间
3339 小时
注册时间
2011-7-8
回帖
3862

开拓者

发表于 2017-6-5 11:56:17 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 guoxiaomi 于 2017-6-30 23:51 编辑

如图,队列行进的时候开关门会导致后面的队友被夹脸或者穿门而过。

于是我尝试了一下事件设置,现在会判断最后一个人的位置再关门。素材仍然来自上面的这款游戏。
首先在脚本里添加:
[pre lang="ruby"]class Game_Party
  attr_reader :characters
end[/pre]
然后设置门事件,一共2页。
第1页是玩家接触触发:
door1.PNG
第2页并行处理,出现条件是独立开关 A 为 ON:
door2.PNG
下面是公共事件的内容:
第1页的开门事件,就是一般的设置:
door3.PNG
第2页的关门事件,会判断队伍里(Train Actors)最后一名角色的位置,然后执行关门事件。
[fold=旧的设置]
这里,设置独立开关为 OFF 之后,就没有其他内容直接条件分歧结束了。
door4.PNG
如此设置就可以做到随手关门不被门夹住。
附上关门事件的2个脚本:
[pre lang="ruby"]size = $game_party.actors.size
if size <= 1
@actor = $game_player
else
@actor = $game_party.characters[size - 2]
end[/pre]
[pre lang="ruby"]x1 = @actor.x
y1 = @actor.y
d = @actor.direction
event = $game_map.events[@event_id]
x2 = event.x
y2 = event.y
if d == 2
@close_door = (x1 == x2) && (y1 - 1 == y2)
elsif d == 8
@close_door = (x1 == x2) && (y1 + 1 == y2)
end[/pre]
[/fold]
新的设置利用了RB提供的脚本(3楼),然后修改了穿透 OFF 的时机,这样就不会穿墙了:
捕获.PNG
新的脚本:
[pre lang="ruby"]all_chars = [$game_player]
size = $game_party.actors.size - 2
if size >= 0
all_chars += $game_party.characters[0..size]
end
ev = $game_map.events[@event_id]
@close_door = !all_chars.any?{ |ch|
  ch.x == ev.x && ch.y == ev.y
}[/pre]
发张示意图,可以看到最后一个角色还在门上的时候,门仍然是开着的,但是此角色走出去之后门就关上了。
door5.PNG
door6.PNG
如此设置就可以做到不被门夹住~

评分

参与人数 1梦石 +1 收起 理由
RyanBern + 1 精品文章

查看全部评分

熟悉rgss和ruby,xp区版主~
正在填坑:《膜拜组传奇》讲述膜拜组和学霸们的故事。
已上steam:与TXBD合作的Reformers《变革者》
* 战斗调用公共事件 *
* RGSOS 网络脚本 *
梦石
1
星屑
24088
在线时间
3339 小时
注册时间
2011-7-8
回帖
3862

开拓者

 楼主| 发表于 2017-6-5 12:19:30 | 显示全部楼层
以前发的其他两个对跟随脚本的优化:
让跟随的人头上显示对话框
解决人物跟随脚本的卡顿问题
熟悉rgss和ruby,xp区版主~
正在填坑:《膜拜组传奇》讲述膜拜组和学霸们的故事。
已上steam:与TXBD合作的Reformers《变革者》
* 战斗调用公共事件 *
* RGSOS 网络脚本 *
回复

使用道具 举报

梦石
0
星屑
9557
在线时间
5074 小时
注册时间
2013-6-21
回帖
3459

开拓者贵宾剧作品鉴家

发表于 2017-6-5 22:49:00 | 显示全部楼层
[pre lang="Ruby"]all_chars = [$game_player] + $game_party.characters
ev = $game_map.events[@event_id]
@close = !all_chars.any?{|ch| ch.x == ev.x && ch.y == ev.y}
[/pre]

注意使用逻辑与 '&&' 而不是按位与 '&'。

萌新瑟瑟发抖。

点评

我感觉是编辑器一直存在的bug……事件脚本和条件分歧里面都会错误的只显示一个 '&'  发表于 2017-6-5 23:05
突然 bug  发表于 2017-6-5 22:54
我觉得你这个思路更好,以及那个 '&' 是XP的bug,脚本输入的是 '&&' 但是显示只有1个。  发表于 2017-6-5 22:53

评分

参与人数 1星屑 +66 收起 理由
guoxiaomi + 66 塞糖

查看全部评分

回复

使用道具 举报

梦石
0
星屑
50
在线时间
2 小时
注册时间
2017-6-28
回帖
3
发表于 2017-6-28 21:11:57 | 显示全部楼层
老哥能把你做的工程发来看看吗             我复制你的脚本有bug啊   
捕获1.PNG
捕获2.PNG
捕获4.PNG
捕获5.PNG
回复

使用道具 举报

梦石
1
星屑
24088
在线时间
3339 小时
注册时间
2011-7-8
回帖
3862

开拓者

 楼主| 发表于 2017-6-28 21:31:41 | 显示全部楼层
九幽魔道 发表于 2017-6-28 21:11
老哥能把你做的工程发来看看吗             我复制你的脚本有bug啊

首先,下载队列行进的脚本,主楼已经有链接了,插入main前,
然后在此脚本后面,main前插入我写的三行脚本。
剩下的全部是事件的设置
熟悉rgss和ruby,xp区版主~
正在填坑:《膜拜组传奇》讲述膜拜组和学霸们的故事。
已上steam:与TXBD合作的Reformers《变革者》
* 战斗调用公共事件 *
* RGSOS 网络脚本 *
回复

使用道具 举报

梦石
0
星屑
14802
在线时间
1014 小时
注册时间
2014-10-24
回帖
325
发表于 2017-6-29 08:36:55 | 显示全部楼层
如果进门后有事件格,会先处理事件格还是门

点评

注意看事件的设置,门开了之后是并行处理,判断没有角色(包括同伴)和门重合时,执行关闭事件。  发表于 2017-6-29 12:19
回复

使用道具 举报

梦石
0
星屑
50
在线时间
2 小时
注册时间
2017-6-28
回帖
3
发表于 2017-6-29 22:16:26 | 显示全部楼层
谢谢  楼主解答     我做出来后测试一遍四个人正好     如果只有一个角色的话   这个角色的向前走四步门才可以关上   
更多图片 小图 大图
组图打开中,请稍候......

点评

试试看新的脚本吧~  发表于 2017-6-30 14:24
回复

使用道具 举报

梦石
1
星屑
24088
在线时间
3339 小时
注册时间
2011-7-8
回帖
3862

开拓者

 楼主| 发表于 2017-6-30 10:26:15 | 显示全部楼层
九幽魔道 发表于 2017-6-29 22:16
谢谢  楼主解答     我做出来后测试一遍四个人正好     如果只有一个角色的话   这个角色的向前走四步门才 ...

居然有这么大的bug……我改一下,改好了再通知你……
熟悉rgss和ruby,xp区版主~
正在填坑:《膜拜组传奇》讲述膜拜组和学霸们的故事。
已上steam:与TXBD合作的Reformers《变革者》
* 战斗调用公共事件 *
* RGSOS 网络脚本 *
回复

使用道具 举报

梦石
0
星屑
50
在线时间
2 小时
注册时间
2017-6-28
回帖
3
发表于 2017-6-30 19:32:01 | 显示全部楼层
恩    无线期待中..........................................
回复

使用道具 举报

梦石
0
星屑
149
在线时间
21 小时
注册时间
2017-12-22
回帖
4
发表于 2018-8-24 18:27:16 | 显示全部楼层
可以的 3333333333333
回复

使用道具 举报

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

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部