Minecraft(我的世界)中文论坛

 找回密码
 注册(register)

!header_login!

只需一步,立刻登录

查看: 2023|回复: 8

[命令方块] 【CBL·pca006132】 记分板基础用法

[复制链接]
发表于 2015-2-9 21:55:28 | 显示全部楼层 |阅读模式

您尚未登录,立即登录享受更好的浏览体验!

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

x
本帖最后由 pca006132 于 2016-1-10 18:18 编辑

科技日新月异,发展一日千里.CB(命令方块)也一样
当我们有1秒20次开关的高频时,我们发现是不能用红石逻辑门/电路於高频的,否则高频就失去了他的功用(很快的探测/给反应)
於是,我们就用一种叫计分板的命令去代替红石,实行逻辑门/电路
在我解释如何用计分板实行逻辑门前,你必须明白以下这些概念,本人不认为可以写的给他好,所以发连接了(如果你知道/看过的话可以跳了)
“同时”执行多个命令方块,谁先谁后?
基本的計分板也要懂,不會的話百度吧(我不想帖子太長,懂dummy就行了)

首先,你们应该知道,计分板是可以探测NBT Tag吧
基本的命令是这样的:(我设了一个计分板对象叫inGround)
/scoreboard players set @e[type=Arrow] inGround 1 {inGround:1b}
先解释一下,这条命令就是把所有在地上("{inGround:1b}")的箭("@e[type=Arrow]")的"inGround"分数设为1
为甚麽要用计分板呢?我们高频用testfor的话,因为它要红石比较器输出,又不能独立一每个实体计算,用它的话可能会又比较多bug
然後,我加一个命令(用高频激活):
/kill @e[type=Arrow,score_inGround_min=1]
把所有"inGround"分数大於1(包括1)的箭都删除
由於NBT Tag 无法直接设为条件,我们必须把它变为NBT Tag以方便计算
以下为一些常用的用法:

  • 检测"事件":
        一般来说我们都会使用判据/检测NBT的方法来检测某个特定事情的发生的。
       比如说,stat.walkOneCm这个判据便能够检测玩家有没有走路了。
       或者,我们会使用NBT来检测,比如scoreboard players set @a dummy 1 {OnGround:1b},便会把所有在地上的玩家的分数设置为1
       怎么检测呢?我们的方法是十分简单的,先检测分数大于等于1的玩家,执行一些命令,然后再把所有玩家的分数设置为0。

  • 或门:很简单,多个CB有不同的条件就行了
       比如:/kill @e[score_a_min=1,score_a=1]
               /kill @e[score_b_min=1,score_b=1]
               /kill @e[score_c_min=1,score_c=1]
       这样,就会把所有a/b/c分数为1的实体删除

  • 与门:也不难,只要把需要的条件都列出来就行了
       比如:/kill @e[score_a_min=1,score_a=1,score_b_min=1,score_b=1,score_c_min=1,score_c=1]
       就会把分数a,b,c都是1的实体删除
       P.S. 计分板的分数条件可以为范围,比如 [score_a_min=0,score_a=10] 就是分数a 0-10

  • 非门:这难题来了,我会尽全力解释的!
       一般来说,我们会用会先重置分数,再探测,最後运行命令的方法
       比如我要知道有没有生物不是坐在矿车里({Riding:{id:"MinecartRideable"}}),不是的话就tp 到一个地点(比如 X=0,Y=64,Z=0)
       计分板名为"RidingMinecart",接下来的是以执行顺序排列(先至後)
       先假定实体没坐在矿车里,分数设为0,如果在矿车里分数就+1,如果它没坐在矿车里就啥也不做
       /scoreboard players set @e RidingMinecart 0 (重置分数)
       /scoreboard players set @e RidingMinecart 1 {Riding:{id:"MinecartRideable"}}
       /tp @e[score_RidingMinecart_min=0,score_RidingMinecart=0] 0 64 0      
       解释一下:我们重置分数的原因,是计分板不会把分数重设,就是条件不符合
       然後探测再运行命令是因为我们要肯定这个分数的人(比如0)副合这个分数的条件,之後才运行命令
       否则,可能会发生分数应该是1的人,因重置後马上运行命令,而当成分数为0处理


  • 延迟:这不难,只要用计分板每次加1,过了一定次数後(比如100,就是5秒),就运行命令
       比如:/scoreboard players add @e[type=Fireball] timer 1
               /kill @e[type=Fireball,score_timer_min=200]
       就是把所有存在10秒以上(以这个命令方块启动开始计算,高频要1秒20次)的火球删除

  • 时钟:
       用計分板把玩家(可以是假玩家們名)的分數每秒加20
       當他的分數到一個指定的分數時(比如20),就把它重置(設為0)
       當他的分數是0時,就可以運行某個命令了,比如:
       /scoreboard players add @a Clock 1
       /scoreboard players set @a[score_Clock_min=20] Clock 0
       /effect @a[score_Clock=0,score_Clock_min=0] instant_health 1 1 true
       这就是每秒加血了

  • 随机器:
       方法1:先做一个装备架,Marker为1(拥有一个极小的碰撞箱,不会干扰到别的东西),NoGravity为1(盔甲架在空不会掉落。)CustomName为random
       /summon ArmorStand ~ ~ ~ {Marker:1b,CustomName:random,NoGravity:1}
       然後这些要高频
       /execute @r[type=ArmorStand,name=random] ~ ~ ~ setblock ~ ~ ~ redstone_block
       /execute @e[type=ArmorStand,name=random] ~ ~ ~ setblock ~ ~ ~ wool
       就是先随机找一个叫random的装备架,把他所在的地方换为红石方块
       再把所有的叫random的装备架所在的地方换为羊毛
       只要把叫random的装备架所在的地方下加上命令方块,就可以随机了
       例子:

                               
登录/注册后可看大图


       方法2:此方法只适合生成随机数(可以根据分数执行命令),然而比较好的地方是可以瞬间为多个实体提供多个随机分数
       首先生成一些marker(比如ArmorStand),指令见上
       然后为那些marker设置不同的分数(这些会是可能的结果)。如果你想某个分数的可能性大一点,请为两个或以上的marker设置相同分数
       然后execute想设置随机分数的实体: scoreboard players operation @e[c=1,r=0] 记分板 = @e[type=ArmorStand,name=random] 记分板

  • 比较分数:
        我们会使用scoreboard players operation的-=
        首先我们有两个分数,如果不想改变他们的话请弄多一个记分板,然后把那个分数赋值过去
        (scoreboard players operation 实体 可以改变的记分板 = 实体 不想改变分数的记分板)
        然后,我们有把那两个分数相减(分数就是实体+记分板):scoreboard players operation 分数A -= 分数B
        之后,分数A如果=0,就代表两个分数一样,如果小于0,就代表A<B,如果>0,就代表A>B

有问题的话欢迎说出来,大家讨论讨论
谢谢





来自群组: Command Block Logic

评分

参与人数 2人气 +4 金粒 +20 收起 理由
sylqiuyifeng + 2 + 20 Mcbbs有你更精彩~
我的世界sun123 + 2 8戳是8戳,就是繁体字……

查看全部评分

回复

使用道具 举报

发表于 2015-2-9 21:59:18 | 显示全部楼层
8戳是8戳,就是繁体字……
回复

使用道具 举报

发表于 2015-2-9 22:10:26 | 显示全部楼层
CBL强势围观
我觉得内个重置分数可以说成
“先假定实体没坐在矿车里,分数设为0,如果在矿车里分数+1,如果它没坐在矿车里就啥也不做”

点评

謝謝,我真的不知道要如何解釋(我表達能力真的不好)  详情 回复 发表于 2015-2-9 22:18
回复

使用道具 举报

 楼主| 发表于 2015-2-9 22:18:09 | 显示全部楼层
kongbaiyo 发表于 2015-2-9 22:10
CBL强势围观
我觉得内个重置分数可以说成
“先假定实体没坐在矿车里,分数设为0,如果在矿车里分数+1,如果 ...

謝謝,我真的不知道要如何解釋(我表達能力真的不好)
回复

使用道具 举报

发表于 2015-2-9 22:34:39 | 显示全部楼层
我的世界--指令和生存技巧&键盘使用_中国_我的世界吧_百度贴吧 http://tieba.baidu.com/p/3576275137
回复

使用道具 举报

发表于 2015-2-10 08:55:19 | 显示全部楼层
=,=目前最简单的高频可能是两个clone的cb交换红石块?
回复

使用道具 举报

发表于 2015-2-10 09:33:51 | 显示全部楼层
把非门做了的话与门或门都应该不是问题吧
回复

使用道具 举报

头像被屏蔽
发表于 2015-2-21 22:09:11 | 显示全部楼层
表示命令渣看不懂。。。
回复

使用道具 举报

发表于 2015-2-22 10:30:54 | 显示全部楼层
我是红石渣
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册(register)

本版积分规则

Archiver|小黑屋|Mcbbs.net ( 京ICP备15023768号-1 ) | 手机版本

GMT+8, 2017-10-22 21:38 , Processed in 0.084540 second(s), 7 queries , Memcache On.

"Minecraft"以及"我的世界"为Mojang Synergies AB的商标。本站与Mojang以及微软公司没有从属关系。

© 2010-2017 我的世界中文论坛 版权所有。本站原创图文内容版权属于原创作者,未经许可不得转载。

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