本帖最后由 67880371 于 2014-8-29 23:59 编辑

[1.8+]记分板完整教程应用
前言:
好吧,本来估计写了也没什么人看.但是应小组的要求,并且1.7的记分板教程已经落时。最后还是决定写一篇这个的教程。写完才发现很多,而且大都是新手向的。所以如果想从中直接学到重点内容,看第五部分就好了。若你不想看完全部,给点人气或金粒也可以的。:P
上一篇记分板总结帖子链接:http://www.mcbbs.net/thread-264534-1-1.html
好吧开始教程
[声明:部分资料来自英文wiki]
第一章:初识记分板
1.了解记分板
记分板是Minecraft内部的一个系统。它可以储存变量或者创立多支队伍来区别实体和玩家。玩家仅能同时加入一支队伍,并以此使用队伍设定中的功能。你可以创建一个指定判据的记分板,来帮助你完成一些有趣的功能。记分板的分数范围可正可负,并且很大,但没有小数。自1.7.10以来,记分板的判据大大增加,可以统计你的各种游戏数据,包括击杀指定生物,使用指定道具,合成物品,破坏方块等等。你可以使用它来实现更多的功能,同时简化你的命令方块电路,甚至创建更有趣的多人游戏。

2.记分板的用处:
<1>简化电路
<2>减小延迟,或者为目标增加更加精准的延迟
<3>脱离红石比较器等方块,直接对指定实体执行命令.
<4>检测更丰富的内容,例如射出箭和破坏方块,甚至是指定nbt标签的实体
<5>创建多个玩家队伍,设定诸如友军伤害和名字颜色等队伍设置
<6>用侧边栏等方法丰富玩家获取资讯的方式
<7>进行数学运算

3.记分板指令组
<0>基础指令
scoreboard <objectives|players|teams>
//最基础的指令,将记分板分为变量,修改数值和队伍三类。
<1>变量指令
scoreboard objectives list
//列出所有已经存在的变量记分板,并显示它们的判据是什么。往往在研究他人地图时使用。
scoreboard objectives add<记分板名> <判据>[显示名字.]
//创建一个指定判据的新变量记分板。记分板名是执行其他指令时使用的名字,而显示名仅用于在侧边栏的部分设定显示名字。所以记分板名应当尽量简短但能明白,并且由于score_name=?等用处,记分板名尽量不要包含下划线等符号和空格,最好是全数字和字母。判据会决定这个记分板玩家分数的自动增加方法,会单独讲。
scoreboard objectives remove<记分板名>
//移除一个已经创立的记分板
scoreboard objectives setdisplay<位置> [记分板名]
//将某个记分板的数据显示在某个位置上,或者清除指定位置的记分板显示(不填记分板名)。可选位置有list[列表],sidebar[侧边栏], sidebar.team.<队伍颜色>[特定颜色队伍的侧边栏],belowName[名字下方]四种。
<2>修改数值指令
scoreboardplayers list[玩家或实体名]
//显示所有玩家/实体的所有记分板分数。即使记分板上的实体已经被删除,可是数据仍然会保存在里面,使用该实体的UUID代码。因此,如果在运行过大量实体记分板的地图中使用该指令,游戏很可能会由于显示量过大而崩溃
scoreboard players set<玩家/实体名> <记分板名><分数> [nbt标签]
//将指定的玩家或实体的记分板分数设定成一个数值。可以指定nbt标签。因此,结合execute指令可以替代testfor指令而直接对目标实体执行命令。可以为不存在的玩家名使用该指令
scoreboard players add<玩家/实体名> <记分板名><数值 > [nbt标签]
//为指定玩家或实体的记分板分数增加一个数值。可以指定nbt标签。结合set子指令可以将玩家分数控制在一定范围内,同时创建更精准的延迟可以为不存在的玩家名使用该指令
scoreboard players remove<玩家/实体名> <记分板名><数值 > [nbt标签]
//为指定玩家或实体的记分板分数移除一个数值。可以指定nbt标签。结合set子指令可以将玩家分数控制在一定范围内,同时创建更精准的延迟可以为不存在的玩家名使用该指令
scoreboard players reset<玩家/实体名> [记分板名]
//重置某个存在于世界内的玩家或实体的某个记分板数据,或者所有记分板数据(不填记分板名)。常用于消除显示在记分板侧边栏等位置的名字。
scoreboard players enable<玩家名> <触发器记分板名>
//激活一个玩家的指定触发器判据的记分板。激活后即使是没有作弊权限玩家也可以使用指令trigger来自己修改自己的该记分板分数。使用trigger指令一次后激活会关闭,需要再次激活才能使用trigger指令。
scoreboard players test<玩家/实体名> <记分板名><最小值> [最大值]
//测试一个玩家或实体的分数范围,用比较器输出成功信号。因为testfor指令便能做到,而且记分板电路可以直接对指定分数范围的实体执行指令,所以可以说是无用的。
scoreboard players operation<被执行/实体玩家> <被运算记分板名><运算符号> <执行玩家/实体><运算记分板名>
//将执行方的某个记分板分数用运算符号[+=,-=,*=,%=,/=]运算到被执行方的指定记分板分数上。可以用于同步记分板数据,比较记分板数据大小等。
[PotatoMaster101的教程链接:http://www.mcbbs.net/thread-243045-1-1.html]
<3>队伍指令
scoreboard teams list[队伍名]
//显示指定队伍信息或所有队伍列表
scoreboard teams add<队伍名 > [显示名]
//创立一支新的队伍
scoreboard teams remove<队伍名>
//移除一支以及创立的队伍
scoreboard teams empty<队伍名>
//移除一个队伍内的所有实体/玩家
scoreboard teams join<队伍名> [玩家/实体名]
//使一个玩家或实体加入一支队伍。可以是不存在的玩家。
scoreboard teams leave[玩家/实体名]
//使一个玩家或实体离开自己的队伍。若不填,即为自己离开。
scoreboard teams option<队伍名> <设定名> <对应标签>
//为一个队伍设定队伍颜色[color],友军伤害[friendlyfire],隐身可见[seeFriendlyInvisibles],名字可见[nametagVisibility],死亡讯息可见[deathMessageVisibility]等设定。下面有子指令内容。
scoreboard teams option<队伍名> color <颜色名>
//将一个队伍设定成指定颜色后队员的名字颜色会随之改变,并且可以看到对应颜色的侧边栏记分板内容。可用颜色"black","dark_blue", "dark_green", "dark_aqua","dark_red", "dark_purple", "gold","gray", "dark_gray", "blue", "green","aqua", "red", "light_purple","yellow", 和"white",或者使用"reset"来重置(移除)队伍颜色。
scoreboard teams option<队伍名> friendlyfire <开启/关闭 >
//设定同队伍间的友军伤害是否开始,可用true/false标签来开关。
scoreboard teams option<队伍名> seeFriendlyInvisibles <开启/关闭 >
//设定能否看到隐身的队友,若开启隐身的队友将是半透明状态。
scoreboard teams option<队伍名> nametagVisibility <状态>
//设定能否看到队员头上的名字。可用标签:从不[never],仅其他队员可见[hideForOtherTeams],仅自己队员可见[hideForOwnTeam],永远可见[always]
scoreboard teams option<队伍名> deathMessageVisibility<状态>
//设定能否看到队员的死亡讯息。可用标签:从不[never],仅其他队员可见[hideForOtherTeams],仅自己队员可见[hideForOwnTeam],永远可见[always]
<4>普通玩家可用指令:
trigger<触发器判据记分板名> <设置/增加><数值>
激活后可由普通玩家使用一次,来改变自己的触发记分板数据。

4.判据
用于对玩家的行为自动改变记录数值。[仅对玩家有效!]
<1>普通判据  
dummy
//普通变量,不会随外界内容改变,只能由管理指令修改。
trigger
//类似于dummy的普通变量,但激活后可以由没有作弊权限的玩家自己修改。
deathCount
//记录死亡次数变量,每当玩家死亡时会增加1。
playerKillCount
//记录击杀玩家数量,每当击杀一个玩家数值会增加1。
totalKillCount
//记录总击杀数,每当击杀一个生物时数值会增加1。
health
//记录玩家生命值,以半颗心为一个单位显示玩家生命值,不能由指令修改
<2>统计判据
achievement.成就名
//记录获得成就的次数。可用成就名:"acquireIron","bakeCake", "blazeRod", "bookcase","breedCow", "buildBetterPickaxe", "buildFurnace","buildHoe", "buildPickaxe", "buildSword","buildWorkBench", "cookFish", "diamonds","diamondsToYou", "enchantments", "exploreAllBiomes","flyPig", "fullBeacon", "ghast","killCow", "killEnemy", "killWither","makeBread", "mineWood", "onARail","openInventory", "overkill", "overpowered","portal", "potion", "snipeSkeleton","spawnWither","theEnd", 和"theEnd2".
stat.统计名
//统计玩家某种动作的次数或距离数,例如疾跑距离等。可用统计名:"animalsBred", "boatOneCm","climbOneCm", "crouchOneCm", "damageDealt","damageTaken", "deaths", "diveOneCm","drop", "fallOneCm", "fishCaught","flyOneCm", "horseOneCm", "jump","junkFished", "leaveGame", "minecartOneCm","mobKills", "pigOneCm", "playerKills","playOneMinute", "sprintOneCm", "swimOneCm","timeSinceDeath", "treasureFished", and"walkOneCm"。
stat.craftItem.物品ID
//统计玩家合成某一物品次数
stat.useItem.物品ID
//统计玩家使用某一物品次数。例如喝牛奶来使用牛奶桶,耐久类物品在正常情况降低耐久,放置方块和投掷可投物品等都会在对应情况下增加数值1。材料往往是不会有使用次数的,但地图的使用次数没有正常工作(bug?)
stat.breakItem.物品ID
//统计有耐久的物品损坏次数,例如弓和铲。
stat.mineBlock.方块ID
//统计玩家采集方块数量。仅统计生存中破坏可以掉落的方块,或创造模式中游戏规则设定为方块不掉落时统计
stat.killEntity.生物名
//统计玩家杀死指定的生物(实体)数量。可用生物名:"Bat","Blaze", "CaveSpider", "Chicken","Cow", "Creeper", "Enderman","EntityHorse", "Ghast", "LavaSlime","MushroomCow", "Ozelot", "Pig","PigZombie", "Sheep", "Silverfish","Skeleton", "Slime", "Spider", "Squid","Villager", "Witch", "Wolf", 和"Zombie"。
stat.entityKilledBy.生物名
//统计玩家被某种生物杀死的次数。可用生物名同上。但由于某些生物是不会攻击玩家的,那么这个数值将不发生自然改变。
teamkill.队伍颜色
//统计玩家杀死指定颜色的队伍队员数量。可用队伍颜色:"black", "dark_blue","dark_green", "dark_aqua", "dark_red","dark_purple", "gold", "gray","dark_gray", "blue", "green", "aqua","red", "light_purple", "yellow", 和"white"。
killedByTeam.队伍颜色
//统计玩家被指定颜色队伍的队员杀死次数。可用队伍颜色同上。

5.重点内容:
1.scoreboardplayers set/add/remove<玩家/实体名> <记分板名><分数> [nbt标签]
//可以指定nbt标签
2.scoreboardteams option<队伍名> <设定名> <对应标签>
//为一个队伍设定队伍颜色[color],友军伤害[friendlyfire],隐身可见[seeFriendlyInvisibles],名字可见[nametagVisibility],死亡讯息可见[deathMessageVisibility]等设定。
3.统计判据
4. [PotatoMaster101的教程链接:http://www.mcbbs.net/thread-243045-1-1.html]
第一章结束。
预计一周内能更新第二章内容。 :D
[groupid=546]Command Block Logic[/groupid]