Project1

标题: 【Blackroom+Indepth】最强大的地图区域编辑插件MapArea [打印本页]

作者: rpg-sheep    时间: 2017-2-8 09:36
标题: 【Blackroom+Indepth】最强大的地图区域编辑插件MapArea
本帖最后由 rpg-sheep 于 2017-2-8 09:44 编辑

MV在地图通行方面有Blackroom(隐藏房间)和Indepth(玩家遮罩)两个插件,前者实现了玩家不在房间房间变黑的效果,后者实现了让玩家能在某些墙下面走的功能。
但是优酱经过研究发现,这两个插件都存在致命的漏洞:
Blackroom的坐标需要在地图注释当中手动指定,其不便程度苦了很多地图作者,并且只能长方形遮罩,没法用奇怪的形状。
Indepth有很多BUG,并且他的算法并不是最优。
综上所述,优酱结合两个插件的优点,推翻了它们的算法,重新写出来MapArea,不仅提高了运算效率,还增加了新的功能!并且所有功能都用地图区域描绘。换句话说,不用在去地图注释忙活了。

首先来看一眼插件的设置项:

start和max之间的区域(包括start和max)会被描绘成黑色,每一个区域作为单独的一部分,你可以随意填涂,可以不连续地涂都没有问题。
passList:指定区域角色可以通过,并且会被当前地图的图块遮罩住,可以用来做穿墙。请注意这个数据是可以用英文逗号分隔(注意是英文逗号!!!!!),以达到多种区域遮罩的目的。
blockList:指定区域角色不可以通过。请注意这个数据是可以用英文逗号分隔(注意是英文逗号!!!!!)。
brushList:指定区域角色可以通过,但会变成半透明,类似默砂之歌的效果。请注意这个数据是可以用英文逗号分隔(注意是英文逗号!!!!!)。
soulList:这个插件最强大的地方就在于此,我管它叫“灵魂绑定列表”。它的作用是将多个区域绑定为一个。每组用英文分号分隔,每组中的区域之间用英文逗号。(再强调一遍英文!!!!!)

你应该已经对本插件有了一定了解,但肯定有很多不懂的地方,下面我们进入实战演练,教你用MapArea做一个隐藏房间。
这里有一个房间地图,我希望达成以下功能:
1、玩家在1号房间时能看到4号房间,4号房间能看到1号房间。2和3是独立的两个房间。
1、玩家在5和6走廊时半透明,7和8走廊时穿墙。

那么首先我们来完成第1项目标:

首先,将四个房间涂满四种区域,然后把插件设置中的start填成10,max填成15。
soullist填成10,13(将10号和13号绑定在一起)
运行试试?你会发现你已经完成了第一步,是不是超级简单?
然后我们需要完成第二项目标:

如图,将走廊分别涂成16和18。然后将插件设置中passList写成16,brushList写成18,再运行一下试试?
你可能会发现玩家在16号附近通行不想你一开始想的那样,能走出你设定的范围。这是因为MV默认同种类型的墙可以通行,为了避免这个BUG,你需要设置blocklist为17,然后用17围一圈。

这样玩家就不会乱走了,如果没有出现乱走,17可以不画。基本功能到这里就结束了。
但同时我们发现一个蛋疼的问题:

如图,红色圈圈的区域有问题,这两个区域在房间范围内,应该被涂黑,但是它们又是属于穿墙的情况。被涂黑了就不能穿墙,能穿墙就涂不黑?怎么办?
哈哈!soullist灵魂绑定的强大功能正是体现在此。用它可以做出极为复杂的地图判定,在此优酱仅展示最简单的方案:

把这两个区域分别涂成14和15。(请保证14,15在你的start-max划分范围内)
然后将插件设置中passList写成14,15,16。
然后把14和12绑定在一起,15和13绑定在一起。这样soullist就变成了:12,14;10,13,15
再试试?完美解决!

PS.可能到这里玩家要问了:为什么不给每个地图做自己的设置?这样统一设置很麻烦的。
的确很麻烦,但是这样不会乱。比如你的游戏有20个地图,当你回过头来修改地图的时候,如果每个地图有自己的设置,你会发现你根本不知道哪块是哪块了。后续优酱可能会添加地图注释指定当前地图的passlist这个功能。
目前的建议是:提前准备,比如做这样的设置:
start:10
max:29
passlist:10,11,12,13,14,30
blocklist:15,16,17,18,19,31
brushlist:20,21,22,23,24,32
soullist:10,15,20,25;11,16,21,26;12,17,22,27;13,18,23,28;14,19,24,29;
提前做好设置,然后按照这个去涂对应区域,你会发现得心应手。

PS.2优酱,只能用黑块遮挡么?
后续功能开发中~优酱的思考有用底层图块做遮挡,这个功能已经开发出来了,但是受内存优化限制还没有推出更新,优酱不会发布任何一个消耗多余内存的脚本。

插件下载:


作者: garfeng    时间: 2017-2-8 10:10
本帖最后由 garfeng 于 2017-2-8 10:36 编辑

受到10000点暴击。
楼主现在薪资多少?要不要来我们公司上班?
软工年薪10W起。实体产业。

我现在在编辑游戏的时候,总是会被人物头顶挡住搞得很烦,走在一个物体的前面后面。在每张地图上,每个有这类问题的物体都要单独处理……

弱弱的求一下,楼主有木有好的想法解决这个问题。

我现在是把物体的低6个像素单独截出来放在下层,6个像素往上放在上层。但这样图块量就翻倍了……
作者: 柳岳枫    时间: 2017-2-8 10:19
膜拜 跑地图的一大乐趣就是找暗道啊
作者: lt19871020    时间: 2017-2-8 12:40
膜拜大神,楼主威武
作者: walf_man    时间: 2017-2-8 12:42
小优年轻有为,前途无量,加油
作者: elaonesside    时间: 2017-2-8 13:23

春运哥顶你哟!
作者: arnie510    时间: 2017-2-20 04:36
小优年轻有为,前途无量,加油
作者: 米大湿    时间: 2017-2-20 08:58

小优年轻有为,前途无量,加油
作者: 白嫩白嫩的    时间: 2017-2-20 13:35
小优年轻有为,前途无量,加油
作者: r8u3s4h7    时间: 2017-2-20 13:42
超级给力啊!这样就能搞定更有趣的地图秘道啦
作者: 索里    时间: 2017-3-10 14:47
干脆点一个墙体一直显示是墙体(非黑色),可通行,但角色在墙体下的功能。
作者: 索里    时间: 2017-3-11 15:00
优神,开启你的插件地图上关于“河流”的图块都会变黑色。

QQ截图20170311145801.png (172.33 KB, 下载次数: 31)

QQ截图20170311145801.png

作者: coreyl    时间: 2017-4-21 15:35
同上楼的问题啊水都会变成黑色 怎么搞啊
作者: playermaker    时间: 2017-4-21 16:32
看起来好冰淇淋的样子啊,膜拜
作者: 大胃王大卫    时间: 2017-5-8 22:34
牛逼的插件 多谢大大了
作者: bualojio    时间: 2017-7-24 04:10
研究了一下,star-max的数值只是实现blackroom用的,若是只想要通行限制的功能,只要设置以外的数字就可以了,半透明通行好顶赞,遮挡通行再配合YEP的通行限制插件过暗道的时候终于不露头了。
作者: 魔力的觉醒    时间: 2017-7-30 22:24
讲真 有个范例那就美滋滋了
作者: HUISIHEXING    时间: 2017-8-12 20:43
最强大?不不不谦虚了,应该是超级旋风火箭强大
作者: yamatonadesiko0    时间: 2017-11-14 15:29
後排膜拜大神
作者: GattoNero    时间: 2017-11-15 19:48
66666666666
作者: ghxujei    时间: 2018-1-12 17:04
按照你这个设置了穿墙,然而,依旧无法穿墙。请大神看看是怎么回事呢?@rpg-sheep

作者: babywolf1984    时间: 2018-4-19 17:18
超级给力啊!这样就能搞定更有趣的地图秘道啦
作者: gao0022    时间: 2018-6-14 09:54
不回复,没有天理->强人
作者: yuxuan1177    时间: 2019-3-20 11:58
请问,这个插件是否能做到在游戏内调整通行度?
例如原本不能够通行,然后触发了某个脚本之后就能够通行?
在游戏里设置passlist x或者blocklist x的话,并不能调整x区域的通行度……
作者: wwface    时间: 2019-4-25 21:26
很有用的样子,谢谢分享。
作者: lixiuling1986    时间: 2019-4-27 13:42
楼主真是厉害啊~~
作者: kunlan    时间: 2019-8-25 12:51
厉害厉害,真的强大
作者: 新手0123    时间: 2019-8-27 17:05

小优年轻有为,前途无量,加油
作者: 艾斓    时间: 2019-10-31 23:13
先收藏一下,觉得这个不错
作者: narutorrrr    时间: 2020-1-5 21:54
感谢分享~~~
作者: eyesstworld    时间: 2020-5-27 17:22
看的我有点晕乎乎的。。
作者: gonzon1982    时间: 2020-6-4 09:28
谢谢大佬分享
作者: aoximasi    时间: 2020-6-27 07:54
支持作者
作者: kenlis    时间: 2021-2-1 10:26
本帖最后由 kenlis 于 2021-2-1 10:27 编辑

感谢大大分享!!!!
作者: A.Grothendieck    时间: 2021-2-18 22:26
非常棒的插件
作者: 醬油幽靈    时间: 2021-3-1 18:36
真希望有MZ版...
作者: 小篸    时间: 2021-5-1 20:00
感谢大佬分享
作者: plain666    时间: 2021-5-1 22:16
这工具太好用了,楼主高手啊。
作者: kumeng210    时间: 2021-5-10 18:38

感谢分享啊
作者: loveshousi    时间: 2021-12-27 23:22
膜拜大神,楼主威武
作者: yanyishe    时间: 2021-12-28 10:40
膜拜大佬
作者: asd5563178    时间: 2022-4-17 12:30
小优年轻有为,前途无量,加油
作者: 1828787002    时间: 2022-6-4 16:14
还是有bug  两格高人物的话 半透明效果 上半身无法半透明  只有下半身是半透明的
作者: 7479958    时间: 2022-6-5 03:19
感谢大佬的分享
作者: keyaki    时间: 2022-7-28 22:39
是链接坏了吗?一直没有办法下载……

作者: chenxf    时间: 2022-10-10 15:13
挖个坟,发现这个插件配合ulds无限图层插件真是好用,一些树背后、石头背后等都可以直接半透明效果。感谢作者
作者: 黎岚歌    时间: 2022-11-16 19:12
好耶!帮助很大,功能很厉害!
作者: loveinyou200    时间: 2022-11-17 17:23
太流弊啦~~~膜拜~~~
作者: lenfrey    时间: 2022-11-27 20:36
用了之后好像无法正常显示水源,会变成黑色的,可以改善吗
作者: luoyi1002    时间: 2023-4-26 08:05
感谢楼大佬,辛苦了
作者: 重新起航    时间: 2023-6-9 15:49
本帖最后由 重新起航 于 2023-6-9 15:50 编辑

不知道还有没有人使用这个插件,修改了一下,可以用于MZ
  1. 将// * ShaderTilemap与// * Game_Map之间的代码注释掉,换成下面的就可以用于Mz了,应该,,,没有bug吧。初步测试可以使用了,
  2. // * ShaderTilemap
  3. // ======================================================================
  4. Tilemap.prototype._addSpot = function(startX, startY, x, y) {
  5.     const mx = startX + x;
  6.     const my = startY + y;
  7.     const dx = x * this._tileWidth;
  8.     const dy = y * this._tileHeight;
  9.     const tileId0 = this._readMapData(mx, my, 0);
  10.     const tileId1 = this._readMapData(mx, my, 1);
  11.     const tileId2 = this._readMapData(mx, my, 2);
  12.     const tileId3 = this._readMapData(mx, my, 3);
  13.     const shadowBits = this._readMapData(mx, my, 4);
  14.     const upperTileId1 = this._readMapData(mx, my - 1, 1);

  15.     this._addSpotTile(tileId0, dx, dy);
  16.     this._addSpotTile(tileId1, dx, dy);
  17.     this._addShadow(this._lowerLayer, shadowBits, dx, dy);
  18.     if (this._isTableTile(upperTileId1) && !this._isTableTile(tileId1)) {
  19.         if (!Tilemap.isShadowingTile(tileId0)) {
  20.             this._addTableEdge(this._lowerLayer, upperTileId1, dx, dy);
  21.         }
  22.     }
  23.     if (this._isOverpassPosition(mx, my)) {
  24.         this._addTile(this._upperLayer, tileId2, dx, dy);
  25.         this._addTile(this._upperLayer, tileId3, dx, dy);
  26.     } else {
  27.         this._addSpotTile(tileId2, dx, dy);
  28.         this._addSpotTile(tileId3, dx, dy);
  29.     }
  30. };
  31. // ======================================================================
  32. // * Game_Map
  33. // ======================================================================
复制代码

作者: 1010huan    时间: 2023-8-11 21:30
超级厉害,感谢分享!
作者: roy3096832554    时间: 2023-12-28 22:07
请问大佬们,这个插件怎么做到黑块遮罩渐变时间减少呀?
作者: RadianceUmbra    时间: 2023-12-31 06:10
前来学习隐藏房间
作者: 黛烟夫人    时间: 2023-12-31 08:02
赞美大佬!
作者: 黛烟夫人    时间: 2023-12-31 08:03
赞美大佬!
作者: chaipipi    时间: 2024-2-12 13:18
反馈一个不是问题的问题,以防止之后有人问,
地图高度要在21以上,多个数字设置的地图黑块才会有效,21以内只会生效一个数字的黑块。
我也不知道具体为什么。。
作者: 黛烟夫人    时间: 2024-2-12 15:14
赞美大佬!




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