minecraft吧 关注:2,527,410贴子:31,640,384

[CBL|玄素]1.9记分板系统介绍与基础运用

只看楼主收藏回复

scoreboard,中文译名记分板,简称scb,mc的命令系统中几乎不可或缺的一环。
当然我相信很多人看到这里会说“这啥东西”,因为他们并没怎么接触过命令……
嗯还有说“哦这玩意儿啊我都懂”的触。
然而这里呢,我依旧选择这么开个坑。老坑啦,然而一直懒,没开。
贴吧在这方面比较完善的教程我敢肯定是没有的……mcbbs那边,没注意过,然而总之1.9的应该也是没有新的。所以这里呢,也就写着来看看好了。
那么也就没什么问题了。虽然废话依旧继续,然而,我们开始吧。
//本来是准备发成直播贴防插楼结果发现[至少客户端]每层限字233字,淦那能写的下啥……
万年头像镇楼。


IP属地:江苏来自iPhone客户端1楼2016-04-20 18:46回复
    —————————内容—————————
    scoreboard系列指令讲解和运用初步
    基于scoreboard的基础逻辑框架构建
    ————————面向人群————————
    对整个命令体系有基础了解的命令玩家
    —————————目标—————————
    对愿意学的人:
    了解并熟悉scoreboard体系
    能进行简单模块架构和debug
    对看客:
    别看睡着了
    ————————注意事项————————
    文中会涉及到非大众化的一些称呼。简而言之就是“我乐意这么叫所以我这么叫了”,不服也别打我
    理解此贴可能需要一定的命令基础以及编程基础。scb体系单独脱离出来的话意义并不是特别大,特别是用在逻辑体系里。我会不定时在文中穿插补课番外,然而如果你啥都不知道的话,补课也救不了你。至于编程基础,不强求,大概看得懂伪代码是个啥就好
    由于个人习惯导致的废话不一定会很少,特别是后期指令逻辑部分。我觉得大概是去不掉的了……那就发养成风格好了√
    欢迎技术撕,毕竟并不能保证没有来自自己的手残或者脑残。不欢迎无脑撕,否则打将出去。
    不定期更新。没啥特殊理由,懒癌算不算?其实我坑品还是不错的,不过最近挖坑比较多,so,懒了。请勿催坑,否则友谊的小船说翻就翻。
    ———————废话的分割线———————
    废话。
    ————————正式开始————————
    废话。
    ……好啦,开玩笑的。


    IP属地:江苏来自iPhone客户端2楼2016-04-20 18:46
    收起回复
      目录
      §1 scoreboard体系
      1.1 /scoreboard指令
      1.1.1 /scoreboard objectives
      1.1.2 /scoreboard players
      1.1.3 /scoreboard teams
      1.2 /trigger指令
      1.3 /stats指令
      1.4 scoreboard.dat解析
      §2 scoreboard逻辑初步
      2.1 基础逻辑门:与,或,非
      2.2 if和else
      2.3 while
      2.4 基于数值的处理
      §3 系统运用实例
      3.1 分数在json里的调用
      3.2 玩家触发
      3.3 系统优化
      未完待续
      §-1 补课番外
      *注:此部分不一定会出现在最终版本的文章中,会根据读者的反馈状况来确定是否需要详细写明。文中出现比较少见的用法也会带一句。
      -1.1 NBT相关
      -1.2 选择器相关
      -1.3 execute相关
      不定期添加,虽然改不了。
      所以,此层楼中楼作为目录补充,禁止回复,否则友谊的小船也是说翻就翻。


      IP属地:江苏来自iPhone客户端4楼2016-04-20 18:47
      回复
        §1 scoreboard体系
        scoreboard,也被叫做记分板或者scb,是mc命令里面一个发枝散叶极广,影响也非常巨大的体系。
        你可能问,它能做什么?
        正如其名:记分。
        然而这个“记分”的“分”,是一个很广义的概念。
        你走了多远你用坏了多少个镐子你杀了几只僵尸几只小白……这些被记录在统计栏目的东西,是分;
        你有多少血多少饥饿多少护甲……这些能够被判据直接获取的数据,是分;
        这些都是实际意义上的分,你摸得到看得到,因为游戏本身就会统计给你。
        而还有些东西是你看不到的:一个ooc里,你用了多少次技能;一个原版小游戏地图里,游戏的进程;还有你的队伍和标签……
        它们是抽象的分,也在无声无息间被记分板记录并且带入系统的运行。
        scoreboard由一系列对应关系组成,类似一个二元列表:变量和它的判据间的对应,变量和它记录着的玩家间的对应,玩家和他所拥有的分数之间的对应。详细看scoreboard.dat你会更加理解这个体系,当然别急,它在1.4呢,以我的龟速更新到1.4都不知道猴年马月去了……没准真是猴年马月?
        而它能影响到的东西也非常多。看得见的,例如各种小游戏中显示在tab列表,侧边栏和玩家名字牌底下的信息;看不见的,通过选择器输出的对系统流程和逻辑的控制,以及更多的东西。
        与scoreboard这个体系相关的,核心是三条一级指令/scoreboard /trigger /stats,和一个游戏文件scoreboard.dat。在这一章里,我将分别描述并介绍这几个scb系统下的部分。


        IP属地:江苏来自iPhone客户端6楼2016-04-20 18:47
        回复
          前排


          星座王
          点亮12星座印记,去领取
          活动截止:2100-01-01
          去徽章馆》
          IP属地:河北来自Android客户端7楼2016-04-20 22:13
          收起回复
            居然这么久都没人,我给楼主暖暖贴


            星座王
            点亮12星座印记,去领取
            活动截止:2100-01-01
            去徽章馆》
            IP属地:河北来自Android客户端9楼2016-04-20 22:24
            收起回复
              技术贴顶


              IP属地:浙江来自Android客户端10楼2016-04-20 22:28
              回复
                收藏养肥


                IP属地:江西来自iPhone客户端11楼2016-04-20 22:28
                收起回复
                  继续更新加油


                  IP属地:广西来自Android客户端12楼2016-04-21 00:30
                  回复
                    前排留名


                    IP属地:美国来自Android客户端13楼2016-04-21 00:47
                    收起回复
                      逛贴吧居然遇到OP了


                      IP属地:四川来自Android客户端16楼2016-04-21 07:03
                      收起回复
                        1.1 /scoreboard指令
                        -格式-
                        /scoreboard <objectives|players|teams> ...
                        很明显可以看出scb的三个大分支:目标操作,玩家操作以及队伍操作。
                        作为一条可在单人条件下使用的指令存在;可被命令方块以及牌子clickEvent执行;在服务器中需求二级以上op权限。
                        作为根指令并没有太多可介绍的内容,下级指令的详细信息则将会在接下来的部分逐渐介绍,因为实在是太多了,所以做了拆分。
                        ——————碎碎念的分割线——————
                        scb系统核心指令,基本上包含了所有对记分板的操作。
                        这东西我估计很可能是全文中更的我最头疼的东西……
                        想想看,wiki上有这么一个页面:Commands,里面记录指令的格式用法之类相关。嗯除了scoreboard……/scoreboard直接指向了Scoreboard页面。量实在太大了……
                        而且呢,不太想单纯翻译wiki……那样就真的很无聊了……
                        最后的决定是拆分为理论讲解部分和碎碎念部分,如果你认为你对记分板的各种规定足够熟悉,那就单纯看我碎碎念吐槽好了。


                        IP属地:江苏来自iPhone客户端17楼2016-04-21 13:38
                        回复
                          1.1.1 /scoreboard objectives
                          -格式-
                          /scoreboard objectives <add|remove|setdisplay|list> ...
                          ———————————————————
                          /scoreboard objectives add <目标名> <准则名> [显示名]
                          /scoreboard objectives remove <目标名>
                          /scoreboard objectives setdisplay <显示位置> [目标名]
                          /scoreboard objectives list
                          ———————————————————
                          -名词注释-
                          #目标名#
                          记分板目标的实际名字。
                          指令对记分板目标的指向均通过目标名,同时目标名也被用来在实体选择器参数score_xxx_min和score_xxx中指向目标对应记分板目标的分数值。
                          目标名最长16字符。
                          请尽可能的使用在实体选择器参数中合法的字符来创建你的记分板目标,包括[0-9A-Za-z_](并不包括-,仅做连字符)。
                          请尽可能的不要用这样troll的目标名:A_min/score_A,否则在你使用选择器参数时,score_A_min或是score_score_A就成为了一个指向不明的参数。
                          #显示名#
                          记分板目标用做显示的名字。
                          当将记分板目标通过setdisplay sidebar显示在屏幕右侧时,如果设置了显示名,则最上方显示名将取代目标名展示。通常也被用来在目标数量较大时方便自己明确每个目标的作用。
                          显示名最大长度32字符。
                          #准则#
                          记分板目标追踪准则。
                          具体将在下面详述。
                          #显示位置#
                          记分板目标的显示位置。可选参数<list|belowname|sidebar|sidebar.team>
                          list:分数将被显示在tab玩家列表中。如果你在单人模式下设置了这个显示项目,这时你按tab也会显示出玩家列表——当然只有你一个人,但没有这项设置时就算你按下tab,它也是不会显示的。
                          belowname:分数将被显示在玩家的名字牌下。也就是说,你看不到自己的分数,正如你看不到自己的名字牌。
                          sidebar:分数将被显示在右侧边栏。分数将被按照从高到低的顺序排列,并显示最高的十个目标。玩家将以名字显示,不管是真实的玩家还是假名;其余实体将显示其UUID。以#开头的假名将不会被显示。
                          sidebar.team:与sidebar没有太大差别,区别在于它仅仅对某一颜色队伍的玩家显示此侧边栏,而对其余颜色队伍/不在队伍中的玩家不会有显示。team所在位置填写颜色,例如sidebar.red。
                          ———————————————————
                          -指令解析-
                          /scoreboard objectives add <目标名> <准则名> [显示名]
                          命令会尝试创建一个记分板目标。
                          目标名必须没有被已存在的记分板目标使用。如果未指定显示名,则显示名默认同于目标名。
                          所使用的准则必须存在。准则将在后面单独进行叙述。
                          命令当目标名和已有目标重复,或者使用了一个不存在的准则名时失败。如果成功,将创建由上述参数所定义的一个记分板目标。
                          -
                          /scoreboard objectives remove <目标名>
                          命令会尝试删除一个记分板目标。
                          删除是很完整的:它会直接删去所有scoreboard.dat中关于这个目标的数据,同时也不会再出现在记分板目标的各种自动补全之中。数据不会在你创建同名目标时还原。
                          如果这个目标正在被/scoreboard objectives setdisplay展示的话,它也将立刻取消展示。
                          命令当参数所指向的记分板目标不存在时失败。如果成功,将删去与这个记分板目标有关的一切数据。
                          -
                          /scoreboard objectives setdisplay <显示位置> [目标名]
                          命令会尝试将参数所指定的目标展示在对应的位置上。
                          允许的显示位置见上方的名词注释。
                          当你不填写记分板目标名时,这条指令将清空对应的显示位置,使之回复默认状态:一片空白,什么都不显示。
                          命令当目标名或是显示位置不存在时失败。如果成功,将会使参数所指定的目标显示在对应位置,或是清空那个位置。注意,当你试图清空一个本身就是空置的显示位置时,指令返回的结果将依旧是成功的。
                          -
                          /scoreboard objectives list
                          命令会尝试显示当前地图所存在的记分板目标。
                          常用来查看当前地图所存在的记分板目标,以理清思路。
                          命令当记分板上没有目标时失败。如果成功,它将显示记分板上存在的所有目标,及其对应判据和显示名。


                          IP属地:江苏来自iPhone客户端18楼2016-04-21 13:39
                          回复
                            辣鸡贴辣鸡楼主辣鸡文笔辣鸡主题


                            来自Android客户端19楼2016-04-21 13:45
                            收起回复
                              逻辑的小船说翻就翻


                              来自Android客户端21楼2016-04-21 13:50
                              回复