事情是这样的,外星人打算仿照Qbeh-1: The Atlas Cube做个地图【steam安利http://store.steampowered.com/app/252550】
解谜跑酷型
但我对命令块一窍不通
关于要完成我的设想,需要用命令块完成以下工作:
请回答外星人,以上命令那些可以实现,那些不能实现,那些实现起来有难度以及电路规模,你是否愿意在我做完建筑部分以后帮我布置命令电路部分并且评分帖子评分或者都归你,以及其他我疏漏掉的困难和问题。
大概就是这样子。
解谜跑酷型
但我对命令块一窍不通
关于要完成我的设想,需要用命令块完成以下工作:
请回答外星人,以上命令那些可以实现,那些不能实现,那些实现起来有难度以及电路规模,你是否愿意在我做完建筑部分以后帮我布置命令电路部分并且评分帖子评分或者都归你,以及其他我疏漏掉的困难和问题。
大概就是这样子。
这个是要支持单人吗?...还有5本来就是的吧... 8的是想怎样重置?F键?Q键还是啥?
哇,版主星人发话了...
都可以做到
都可以做到
hqqaazz 发表于 2017-9-7 14:47
这个是要支持单人吗?...还有5本来就是的吧... 8的是想怎样重置?F键?Q键还是啥? ...
单独悬空意思就是说六面都没有接触的方块独立放在那里
记录点重置使用踏板或者按钮或者拉杆
我就当单人来写了..
1.按钮后面放个指令方块,写/tp 玩家 x y z 如果不能,就在暗处放个testforblock x y z button 数据值
数据值你可以先放个指令方块,写testforblock x y z button 0 然后按下按钮,在激活取消前激活该指令方块,然后指令方块下面输出栏会有提示当前数据值,把那个数据值替代掉0
2、3.给玩家高等级急迫,然后不能击碎的用基岩等换上去,就达到了一下击碎的效果,特定区域可以给挖掘疲劳,然后一下击碎的用粘液块、TNT等方块
4.tp所有物品实体到玩家身上
5.用刷怪蛋代替方块,模拟放置方块,保留一个盔甲架,每tick或更长的时间间隔检查盔甲架周围
6.探测到悬空后,清除自己,give玩家物品
7.spawnpoint
8.按钮下面放个指令方块,写/spawnpoint ~ ~2 ~
9.如果是拥有某些方块不能通过,就探测范围内玩家往反方向tp,这样一进去就会被tp,跟撞墙一样,如果是进入后不能通过的方块消失,就用clear
10.需要的地方testforblock
11.kill指定物品实体,stats连接计分板
12.探测区域外存在玩家,然后用结构方块或者clone替换
1.按钮后面放个指令方块,写/tp 玩家 x y z 如果不能,就在暗处放个testforblock x y z button 数据值
数据值你可以先放个指令方块,写testforblock x y z button 0 然后按下按钮,在激活取消前激活该指令方块,然后指令方块下面输出栏会有提示当前数据值,把那个数据值替代掉0
2、3.给玩家高等级急迫,然后不能击碎的用基岩等换上去,就达到了一下击碎的效果,特定区域可以给挖掘疲劳,然后一下击碎的用粘液块、TNT等方块
4.tp所有物品实体到玩家身上
5.用刷怪蛋代替方块,模拟放置方块,保留一个盔甲架,每tick或更长的时间间隔检查盔甲架周围
6.探测到悬空后,清除自己,give玩家物品
7.spawnpoint
8.按钮下面放个指令方块,写/spawnpoint ~ ~2 ~
9.如果是拥有某些方块不能通过,就探测范围内玩家往反方向tp,这样一进去就会被tp,跟撞墙一样,如果是进入后不能通过的方块消失,就用clear
10.需要的地方testforblock
11.kill指定物品实体,stats连接计分板
12.探测区域外存在玩家,然后用结构方块或者clone替换
冥王星人 发表于 2017-9-6 22:09
电路需要多大空间?
每个问题应该都不会用多少个命令块。
但实际情况要看你的地图怎么做,又或者是要做得多完美
各个认为比较好的做法大概是
(大概就是冒险模式为游戏模式了...)
1.testforblock 按下状态的按钮,检测成功则tp
2.3.和4.隐身1血slime或AS,检测此AS,不存在时setblock replace此方块,同时give玩家此方块
5.已经是这样了吧...
[6.]这个要看看什么情况下会出现单独悬空...
7.8.spawnpoint...
9.testfor inventory
10.canplaceon
11.scoreboard stat.mineBlock,如果用2.3.4.的方法,在那个的基础上用dummy记分...红石灯对命令方块来说不是问题...
12.区域最好不要太大...clone
有空的话不妨看看 https://mc-command.oschina.io/command-tutorial/output/ ,这是一个命令的教程,虽然建筑师未必需要完全懂命令,但是知道点命令能干啥、效率如何,相信对地图制作还是有点好处的。不过倒是不需要细看。
问题1,7,8就是很简单的使用tp spawnpoint等命令就能解决的问题,上面也有解决方法,就不再多说。
第二、三、四号问题可以使用冒险模式解决,冒险模式无法破坏方块。在可击碎方块四周放一些史莱姆检测玩家攻击,徒手攻击即可杀死,也就代表破坏了那个方块。如果那些方块的数量少并且预先知道位置,则可以设置命令专门在那些位置放置史莱姆;否则,便需要对玩家四周方块进行扫描,然后穷举定向生成史莱姆。
不过使用史莱姆就会非常麻烦,我的建议是让玩家带着工具设置CanDestroy,那样虽然不符合徒手的原则,然而在实行上非常简单。然后离开了那个区域就移除那个工具什么的。
第五、六号问题比较奇怪,何谓单独悬空的方块呢?如果只有两个方块在悬空,没有其他支撑,算是单独悬空么?如果不算的话问题就比较简单,当玩家移除方块的时候检测附近的方块是不是六面都没有其他方块,是就自动收回至背包。如果也算是单独悬空,就得看你需要的是下方没有方块就算是悬空,还是连着其他方块到指定的“地面”也不算是悬空。如果是前者也十分方便,只需要检测下方是否空气;后者就非常麻烦,因为得大量检测,得不偿失,不建议做。
第九号问题倒不是困难,只需要检测玩家的背包,使用 Inventory NBT,如果有指定物品就添加tag,然后就不tp有那个tag的玩家。
第十号问题也非常简单。如果只需要放在背包的话,就检测玩家背包;如果需要检测是不是拿在手上的话,就检测SelectedItem;如果需要进行某些特别动作的话,比如说打开箱子,则可以使用锁箱子(不过只能检测物品名称),或者是使用盔甲架(玩家需要右击盔甲架)然后看看盔甲架拿着什么。
第十一号问题不建议使用红石计数,使用记分板比较方便,有stat.mineBlock.minecraft.方块id 判据自动在玩家破坏方块时加分。记分板可以进行很多处理,也比较适合其他命令使用那些数值,红石的话会比较麻烦。
第十二号问题其实就是检测玩家离开某个区域,这个只需要做个not就好,检测玩家是否在特定范围可以使用选择器,球型范围可以用r,长方体范围可以用dx dy dz。
最主要想说的是,检测方块方面命令是比较麻烦的,如果能避免检测玩家点击、破坏什么方块的话,做起来会方便很多。由于我太懒,这样的地图之后肯定会有命令玩家帮忙写的,所以就只提供思路和建议,不直接提供命令了。
如果要找命令玩家或者是希望找他们提供意见,不妨去找不同小组的人,比如是CBL,TCP,(前)TML等,他们对地图制作挺有经验的。也欢迎来我们的交流群(见签名),里面有很多命令玩家,有时候还是能给一点新奇的想法的。
问答版发问的话不太适合交流,大部分人想的是解决问题而一般不会改变问题。但这样的问题其实更需要的是长时间的讨论,改变一下需求,看看怎么在效能、实现和用户体验上找到平衡。
而且如果想制作这样的地图的话,还是了解一下命令吧,并不复杂。有点概念的话,交流起来方便很多的。
问题1,7,8就是很简单的使用tp spawnpoint等命令就能解决的问题,上面也有解决方法,就不再多说。
第二、三、四号问题可以使用冒险模式解决,冒险模式无法破坏方块。在可击碎方块四周放一些史莱姆检测玩家攻击,徒手攻击即可杀死,也就代表破坏了那个方块。如果那些方块的数量少并且预先知道位置,则可以设置命令专门在那些位置放置史莱姆;否则,便需要对玩家四周方块进行扫描,然后穷举定向生成史莱姆。
不过使用史莱姆就会非常麻烦,我的建议是让玩家带着工具设置CanDestroy,那样虽然不符合徒手的原则,然而在实行上非常简单。然后离开了那个区域就移除那个工具什么的。
第五、六号问题比较奇怪,何谓单独悬空的方块呢?如果只有两个方块在悬空,没有其他支撑,算是单独悬空么?如果不算的话问题就比较简单,当玩家移除方块的时候检测附近的方块是不是六面都没有其他方块,是就自动收回至背包。如果也算是单独悬空,就得看你需要的是下方没有方块就算是悬空,还是连着其他方块到指定的“地面”也不算是悬空。如果是前者也十分方便,只需要检测下方是否空气;后者就非常麻烦,因为得大量检测,得不偿失,不建议做。
第九号问题倒不是困难,只需要检测玩家的背包,使用 Inventory NBT,如果有指定物品就添加tag,然后就不tp有那个tag的玩家。
第十号问题也非常简单。如果只需要放在背包的话,就检测玩家背包;如果需要检测是不是拿在手上的话,就检测SelectedItem;如果需要进行某些特别动作的话,比如说打开箱子,则可以使用锁箱子(不过只能检测物品名称),或者是使用盔甲架(玩家需要右击盔甲架)然后看看盔甲架拿着什么。
第十一号问题不建议使用红石计数,使用记分板比较方便,有stat.mineBlock.minecraft.方块id 判据自动在玩家破坏方块时加分。记分板可以进行很多处理,也比较适合其他命令使用那些数值,红石的话会比较麻烦。
第十二号问题其实就是检测玩家离开某个区域,这个只需要做个not就好,检测玩家是否在特定范围可以使用选择器,球型范围可以用r,长方体范围可以用dx dy dz。
最主要想说的是,检测方块方面命令是比较麻烦的,如果能避免检测玩家点击、破坏什么方块的话,做起来会方便很多。由于我太懒,这样的地图之后肯定会有命令玩家帮忙写的,所以就只提供思路和建议,不直接提供命令了。
如果要找命令玩家或者是希望找他们提供意见,不妨去找不同小组的人,比如是CBL,TCP,(前)TML等,他们对地图制作挺有经验的。也欢迎来我们的交流群(见签名),里面有很多命令玩家,有时候还是能给一点新奇的想法的。
问答版发问的话不太适合交流,大部分人想的是解决问题而一般不会改变问题。但这样的问题其实更需要的是长时间的讨论,改变一下需求,看看怎么在效能、实现和用户体验上找到平衡。
而且如果想制作这样的地图的话,还是了解一下命令吧,并不复杂。有点概念的话,交流起来方便很多的。
⊙v⊙ 发表于 2017-9-7 16:55
每个问题应该都不会用多少个命令块。
但实际情况要看你的地图怎么做,又或者是要做得多完美
区域不会太大
目前计划每个区域100*100,但是这样单独的区域需要做几十个,每个单独区域内都应用全部命令特性
单独悬空就是说六面都没有任何东西连接
整个区域内的方块种类不超过五种【可击碎、不可击碎,可击碎连接限定、透明不可击碎、特殊计数类】
冥王星人 发表于 2017-9-7 01:23
区域不会太大
目前计划每个区域100*100,但是这样单独的区域需要做几十个,每个单独区域内都应用全部命令 ...
单独浮空的意思我看到了...单个方块,6面空气对吧...
只是想知道什么情况下会出现浮空。
毕竟如果是地图本身就有的话,会感觉没意义(除非特殊需要),因为部署时就能避免。
如果是因为玩家的操作导致出现有方块浮空,那么根据之前讲的几条,玩家能做到的无非就是按预设好的按钮,或者放置/破坏方块。
这种情况,浮空即将发生的地点都是已知且固定的情况下,在激活方式(slime的死亡/按钮,踏板的激活/stat的放置方块/...)之后再激活一条setblock air和give就好。
#其实穷举是个好东西...
但是在我们布设者不知道位置发生的情况下,就麻烦一点了
以玩家为中心,以玩家能放置/破坏方块(或者说是所探测的范围)最远距离为半径。
以这个半径范围形成的圆为区域,把(有tag的)盔甲架tp到此区域里的每个方块位置。
execute 以有此tag的盔甲架detect ~ ~ ~ 为air时执行命令,命令为给这个站在air方块上的盔甲架设置为1分。
然后...同样的方法
(比如以一个浮空方块下面的air开始计算)
execute以有tag,分数为1的盔甲架在detect到其y轴~2位置为air时,给自己设2分。(为每个面重复几遍)
execute [tag,score=2] detect x~1 y~1 air时,此盔甲设3分
execute [tag,score=3] detect x~-1 y~1 air时,此盔甲设4分
...score=4...y~1 z~1...设score=5
...score=5...y~1 z~-1...设score=6
一轮分数设置之后,
只有一个盔甲架的分数为6时,此盔甲架y~1的位置的方块为浮空方块
(麻烦的地方就是判断浮空...还有设立这些AS)
(好像和走路AI同理...)
那么算出了位置就好办了。
以score=6的盔甲执行setblock destroy...或者其他一系列指令
⊙v⊙ 发表于 2017-9-7 20:32
单独浮空的意思我看到了...单个方块,6面空气对吧...
只是想知道什么情况下会出现浮空。
因为有些地方需要玩家用手上的东西做脚踏才能跳过去,如果方块数量不够,那么也就是说此路不通,玩家必须去另外的路上寻找放置的方块,比如说要跳上3高的位置,那么允许放置地点距离台面3,那么最少需要3个块,但如果中间堆好了两个块以后打掉下面的块,那么一个块悬空,一个做一阶,用两个块就可以跳上去,所以为了阻止绕路行为,不能出现悬空块。
三个悬空块最高可以让玩家跳上4的台子,禁止悬空最高3
我这么说你能懂么,,,
冥王星人 发表于 2017-9-7 04:11
因为有些地方需要玩家用手上的东西做脚踏才能跳过去,如果方块数量不够,那么也就是说此路不通,玩家必须 ...
给张图吧...越解释我越看不懂
比如这样
如果说这些是玩家能在放置/破坏方块后形成的
那么,哪些为悬空
红:单面靠墙,下面为air
绿:单面靠墙,靠墙块与另一个块横向连接,另一个块下面为air
橙:6面为air (我认为的完全悬空)
浅:单面着地,着地块与另一个6面为air的块斜角连接
深:上下相连,相连以外的面均为air
黄:红+绿的结合体
粉:浅的变种
嘛...或许我该先去看几个别人玩的视频
如果说这些是玩家能在放置/破坏方块后形成的那么,哪些为悬空
红:单面靠墙,下面为air
绿:单面靠墙,靠墙块与另一个块横向连接,另一个块下面为air
橙:6面为air (我认为的完全悬空)
浅:单面着地,着地块与另一个6面为air的块斜角连接
深:上下相连,相连以外的面均为air
粉:浅的变种
嘛...或许我该先去看几个别人玩的视频
下一关将不保持上一关获得的方块
可收回既可破坏,不可收回既不可破坏
黄色区域 红色,蓝色(允许放置方块的区域位置)
蓝色区域 蓝色(允许放置方块的区域位置)
红色区域 蓝色(允许放置方块的区域位置)
物品块:
红色块 能放置在黄色区域,放置后可收回
能放置在红色块,放置后可收回
任何“既没有接触黄色区域,又没有接触红色块”的红色块,将返回背包
若以放置在黄色区域上的红色块为基点,在此基点消失时,任何以基点延伸放置的红色块(且此红色块没有与其他基点或其他基点上延伸的红色块相连),将返回背包
蓝色块 适用红色块的规则
能放置在红色区域,放置后可收回,打开门/触发机关(收回后,机关貌似归位)
能放置在蓝色区域,放置后不可收回,打开门
能放置在红色块上
机关 移动板。有被放置方块阻隔时,不移动
门。
暂时看到world 2...
紫色块 减少重力?...
这样的话,把所有规则结合在一起,不是说不行,实现起来就比较麻烦了...
啊...要是能添加帖子内容该多好
可收回既可破坏,不可收回既不可破坏
黄色区域 红色,蓝色(允许放置方块的区域位置)
蓝色区域 蓝色(允许放置方块的区域位置)
红色区域 蓝色(允许放置方块的区域位置)
物品块:
红色块 能放置在黄色区域,放置后可收回
能放置在红色块,放置后可收回
任何“既没有接触黄色区域,又没有接触红色块”的红色块,将返回背包
若以放置在黄色区域上的红色块为基点,在此基点消失时,任何以基点延伸放置的红色块(且此红色块没有与其他基点或其他基点上延伸的红色块相连),将返回背包
蓝色块 适用红色块的规则
能放置在红色区域,放置后可收回,打开门/触发机关(收回后,机关貌似归位)
能放置在蓝色区域,放置后不可收回,打开门
能放置在红色块上
机关 移动板。有被放置方块阻隔时,不移动
门。
暂时看到world 2...
紫色块 减少重力?...
这样的话,把所有规则结合在一起,不是说不行,实现起来就比较麻烦了...
啊...要是能添加帖子内容该多好
为什么大家都没想到潜影贝呢?可以让玩家破坏/放置的方块其实可以换成潜影贝(玩家可以站在潜影贝上),写个lotttable,让潜影贝死亡后掉落潜影贝蛋(生成一个一滴血,没有AI,一撸就死的潜影贝,实在不放心可以给玩家上力量buff),这样玩家一放置就生成潜影贝,一撸就掉落潜影贝蛋(或者按你的说法,一撸掉立即获得,可以通过检测掉落物,give玩家潜影贝蛋),检测浮空的话就更方便了,潜影贝是实体,检测潜影贝前后左右上下有没有方块,没有就kill潜影贝。而且玩家也不用特地设成生存模式,徒手就能杀死,潜影贝也不能放在另一个潜影贝上(实体),这样岂不是更好(给点辛苦费吧QWQ)
@⊙v⊙
@⊙v⊙
brooke1999 发表于 2017-9-8 01:18
为什么大家都没想到潜影贝呢?可以让玩家破坏/放置的方块其实可以换成潜影贝(玩家可以站在潜影贝上),写个l ...
啊...好注意
潜影贝和lottable都是我没接触过的,所以没想过。
但是要求实现的还有这么一条...
玩家放置的方块能放在"玩家放置的方块"上