67880371
本帖最后由 67880371 于 2014-5-17 13:45 编辑

[1.8+]记分板完整教程应用
[声明:部分资料来自英文wiki]
最近组里搞了个规定,只有作品成品才能发布,否则就发到群组里。
所以估计大家最近是看不到CBL小组的成果了←w←

第二章:记分板进阶应用


1.额外篇目
<1>指令方块激活时序
由同一次红石信号激活的命令方块执行命令的次序也是有先后的。它们执行顺序差别微乎其微,几乎可以忽略不计。但是,这差别却可以用来替代中续器等红石元件的0.1秒延迟,使得电路系统更加精确。现在,我们可以用记分板来大大使用这一类型的电路。
<2>实体选择器
在玩家/实体名内,可以使用@a,@p,@f,@r,@e等来选择具体的一个玩家/实体。实体选择器则是在该选择名字后面加一个中括号:[内容],如@e[name=123,type=Zombie],可以具体选择某种属性的实体/玩家。可用的选择器有name(名字),l(最大等级),type(实体类型)等。而在记分板系统中也有了对应的选择器:score_记分板名=?score_记分板名_min=?
score_记分板名=数值
//选择记分板分数最多为某个数值的实体/玩家
score_记分板名_min=数值
//选择记分板分数至少为某个数值的实体/玩家
巧用以上两种选择器,是记分板进阶中的必修课。
<3>自动补全指令
打出指令前若干字母后按TAB键可以自动补全可能的指令,多用可以防止记错输错指令。


2.记分板位置使用
你可以使用指令:
scoreboardobjectives setdisplay <位置> [记分板名]
//将某个记分板的数据显示在某个位置上,或者清除指定位置的记分板显示(不填记分板名)。可选位置有list[列表],sidebar[侧边栏], sidebar.team.<颜色>[特定颜色队伍的侧边栏],belowName[名字下方]四种。
来将一个记分板的内容显示到一个位置上,清楚直观。
<1>侧边栏
由于其位置无需任何操作就能直接看到,且可以显示任何实体的分数,是最常用的位置。它主要可以用来:
①显示分数内容
②模拟菜单
③调试指令系统
①最简单的是显示分数的内容。例如,我们可以创建一个“击杀数”的记分板:
scoreboardobjectives add kill totalKillCount ====>击杀数<====
这样,就能创建一个自动记录玩家击杀生物的数量的记分板了。
接下来用指令:
scoreboardobjectives setdisplay sidebar kill
来将这个记分板的位置设定成侧边栏。这样,你就可以创建一个漂亮的侧边栏内容了。
注意,当任何实体的记分板内容没有被“激活”时,它不会出现在任何一个位置,因为记分板的值是空的(无法被实体选择器用该记分板选中)。而当它的分数被修改时,将会被激活。
当侧边栏内容启用时,此时在线玩家的记分板分数也会被激活(而后加入的玩家需要重新激活)。
②菜单系统
我们可以使用侧边栏来建立一个稍稍高级的菜单系统。国外小游戏服务器常见的菜单系统一般有:游戏时间,在线人数(死亡/存活人数),或者多个队伍的分数等等。在1.8更新后,记分板可以给不存在的玩家名一个分数:
scoreboardplayers set <玩家/实体名> <记分板名><分数> [nbt标签]
//将指定的玩家或实体的记分板分数设定成一个数值。可以指定nbt标签。因此,结合execute指令可以替代testfor指令而直接对目标实体执行命令。可以为不存在的玩家名使用该指令。
因此,我们可以将玩家名设定成为“游戏时间”,“红队分数”,“存活玩家”等等,用脉冲和比较器等系统为其设定或添加若干的分数。
由于激活机制,一开始可能会出现玩家名在菜单上,我们可以使用指令:
scoreboardplayers reset <玩家/实体名> [记分板名]
//重置某个存在于世界内的玩家或实体的某个记分板数据,或者所有记分板数据(不填记分板名)。常用于消除显示在记分板侧边栏等位置的名字。
来将其移除。若想做出更美观的菜单,可以结合记分板的team指令来为其带上颜色。
③调试记分板系统
在创建一个庞大的记分板运算系统时往往需要测试,查看记分板的量。将其设定为侧边栏,清楚又直观!
<2>列表
列表中的内容需要按TAB来查看,分数会显示在玩家名字的右侧。大多数记分板的量都会用黄色数字来表示,除了health判据(自动检测玩家生命值)的记分板会用血条来表示,和生存模式下面的血条一样。在1.8更新中,玩家有额外生命时会自动压缩空间来显示血条,甚至转换为数字显示。因此,用记分板来显示生命值或许是个好选择。
<3>名字下方
将记分板的分数显示在名字的下方,将统一使用数字来显示。常用于显示生命值系统或货币系统
<4>队伍侧边栏
功能参考侧边栏系统,但有了队伍可见的功能。


3.记分板队伍的使用
你可以创建多个队伍来区别玩家或实体:将其归为一类,或者利用队伍的功能增添新的“游戏规则”,诸如修改名字游戏等。先使用指令:
scoreboardteams add <队伍名 > [显示名]
//创立一支新的队伍
创立一支新队伍后,可以用指令:
scoreboardteams join <队伍名> [玩家/实体名]
//使一个玩家或实体加入一支队伍.可以是不存在的玩家。
虽然实体可以加入队伍,但是并没有什么用:队伍的设置只能针对玩家。
而后就可以使用我们的队伍指令系列:
scoreboardteams option<队伍名> <设定名> <对应标签>
//为一个队伍设定队伍颜色[color],友军伤害[friendlyfire],隐身可见[seeFriendlyInvisibles],名字可见[nametagVisibility],死亡讯息可见[deathMessageVisibility]等设定。
<1>队伍颜色
用来给队伍的成员填上颜色。设置色彩后,聊天框和侧边栏中玩家名字会变成相应颜色,并且可以看到相应颜色队伍的侧边栏了。
<2>友军伤害
用来实现自动开关pvp系统等。如,游戏刚加入时设定所有玩家为player队伍,并设置友军伤害关闭。这样,就简单的实现了开局保护。当游戏倒计时结束后,设定友军伤害开启,便实现了自动开关pvp系统。
<3>隐身可见
是否开启取决于作用。若是指向同一游戏队伍间pvp可以关闭,若是不同队伍pvp建议开启。
<4>名字可见
名字设定为队友可见后,加强了pvp队伍系统的公平性。或者在个人pvp赛中设定成永不可见,加强公平性,以免部分玩家用名字找到其他玩家的位置。
<5>死亡讯息可见
避免让敌方看到你们队伍的情况!

4.瞬时分数概念
这个本来是打算到第三章高级篇讲的,不过想到这个在之前版本就能实现,所以提前讲。
所谓瞬时分数概念,即:某个记分板的分数在正常情况下均为0,而在某个事件导致数据变动时,便执行相应指令,然后将这个值清零。由于这种记分板的分数变化往往用于执行指令而不是计数,且在瞬间执行指令后清零,所以我称之为瞬时分数。这种变化一般是由判据引起的,所以之前版本由于判据过少,这种记分板应用并不多。使用方法:
<1>创建一个记分板:
/scoreboardobjectives add K totalKillCount
//创建一个判据为生物击杀数的记分板K
事实上可以使用更多的统计判据,这里是普通的一种。
<2>创立一个超频,激活以下两个命令方块:
/give @a[score_K_min=1] minecraft:gold 1 0
//给予K至少为1的玩家一个金锭
/scoreboard players set @a[score_K_min=1] K 0
//将K为1的玩家K分数设置成0
这样,就做出一个每当玩家击杀一个生物就给予他一个金锭的系统。这样的系统可以支持多人游戏,并且不会相互冲突。事实上根据判据和指令可以大幅扩大其功能,任何可以使用实体选择器的指令都可以运用,并且可以同时执行多个指令。例如effect,give,tp等等。而判据则参考我的上一章。利用这个功能,可以做出例如吃面包就回血,奔跑就加速,跳跃就得到个钻石等丰富功能。

5.重点内容
由同一次红石信号激活的命令方块执行命令的次序也是有先后的。
在记分板系统中也有了对应的选择器:score_记分板名=?score_记分板名_min=?
打出指令前若干字母后按TAB键可以自动补全可能的指令,多用可以防止记错输错指令。
当任何实体的记分板内容没有被“激活”时,它不会出现在任何一个位置,因为记分板的值是空的(无法被实体选择器用该记分板选中)。而当它的分数被修改时,将会被激活。
当侧边栏内容启用时,此时在线玩家的记分板分数也会被激活(而后加入的玩家需要重新激活)。
瞬时分数概念

这篇很少,因为其实这部分没什么可讲的。下一章,才是记分板在1.8中的真正高级运用!
一周内发布~
上一章链接:[http://www.mcbbs.net/thread-274969-1-3.html]
PS:真的没有回复么QAQ
来自群组: Command Block Logic

我的世界sun123
CBL速度顶贴不解释~

kongbaiyo
顶一下哦也!

捌柒
基础指令一章讲完就可以了=A=两章是骗高亮的节奏

dd86217197
请问计分板teams加入队伍权限怎么给玩家

wdsjgll
楼主666+  O(∩_∩)O谢谢

第一页 上一页 下一页 最后一页