【我的世界命令教程】04记分板和服务器商店
|
*所有内容均为原创内容,未经允许禁止转载或摘编 注:今天的内容比较多,前三分之二的内容讲如何使用记分板,后面讲服务器商店。时间有限的读者可以先看后面,不懂的地方再倒回来找详细使用方法。 记分板 记分板(Scoreboard)系统是一套通过命令操纵的复杂游戏机制。主要为地图作者与服务器运营者准备。 它是一个庞大的命令系统,在使用时我总结为3个大分支,分别是: /scoreboard objectives 记分板任务管理 /scoreboard players 玩家分数管理 /scoreboard teams 队伍系统管理 以上指令无效,但其他的指令都是在此基础上延伸使用的。 这期我讲前两个分支,并在讲的过程中带你制作一个记分板,之后运用它建造一个服务器商店! /scoreboard objectives 它包含4个分支。分别是add,remove,setdisplay和list。 注:接下来的四个命令建议不要在命令方块中使用,因为聊天栏可以更直观的看到命令是否成功正常的被执行! add(创建) /scoreboard objectives add <name> <criteria> [display name] 这条命令是用来创建一个新的记分板。 /scoreboard objectives add;不做修改,原样输入; <name>;创建一个内部名称(不在外部显示,服主或op操作记分板用的名字); <criteria>;准则(部分论坛翻译为判据,慢慢看 下面讲); [display name];可选参数,输入一个显示出来的名称,不输入时默认为<name>。 注:所有的参数均区分大小写。 填写的< name> 不能重复使用,且在16个字符以内。< criteria> 必须是合法的准则类型。[ display name] 必须在32个字符以内。 我们来新建一个存档,在聊天栏中输入命令,创建一个用于货币流通的服务器商店记分板,我给它取名为暗币。内部名称为money,之后我们可以通过这个名字来操作此记分板。 /scoreboard objectives add money dummy 暗币
执行命令 执行成功后会在聊天栏显示:成功地添加了新目标'money' 。 刚刚的准则应该有很多人不懂吧,我先讲一下这个是什么。准则分为简单准则和混合准则。 简单准则 1.dummy(虚拟型):只能通过命令修改分数。因此可以被用来制作特殊事件的标记、映射和通货。我们的商店就是使用的这种记分板。 2.trigger(触发器):只能通过命令修改分数。以它作为准则的记分板可以被无权限的玩家利用命令/trigger来 设置/增加/减少。如果/trigger命令没有对玩家启用,则使用/trigger命令会失败,并且成功使用过一次此命令后该命令将重新被关闭。 注:/trigger命令在作弊被关闭的情况下可以被非管理员的普通玩家使用。 3.deathCount(死亡次数):当玩家死亡时,分数会自动增加。 4.playerKillCount(杀人数量):当玩家杀死其他玩家时分数会自动增加。 5.totalKillCount(杀怪数量):当玩家杀死其他生物时分数会自动增加。 混合准则 混合准则分为准则本名和次级准则两部分,使用时用英文输入法中的点号来分隔(".")。 因为混合准则包含的种类及其丰富,在此只讲解准则本名,每个准则本名举一个次级准则例子。更多次级准则文章末尾我会贴出原文链接❶,里面有所有可使用的次级准则。有兴趣的小伙伴们可以去看一看! 1.achievement(成就):次级准则是英文成就名, 数量取决于玩家获得此成就的次数。 例如一个玩家捡起三块原木,他的 achievement.mineWood 准则会+3。 2.stat(统计):可用次级准则见文章末尾链接❶。 当一个玩家完成次级准则中的行为,分数会自动增加。 例如一个玩家跳跃一次,他的 stat.jump 准则会+1。 3.stat.craftItem(统计.物品合成):次级准则是合成物品或方块的数字ID 或者英文ID名( 注意在准则中使用英文ID名时必须要加 minecraft.) ,只有可合成或可熔炼的方块和物品名才会被接受。例如一个玩家烧制了1组石头,当他从熔炉中拿出石头时,他的 stat.craftItem.minecraft.stone 准则会+64。 注:在工作台点击拿走物品会使数据加1,但是使用shift来拿走只会使数据加2。
基岩贴图 4.stat.useItem(统计.使用物品):次级准则是方块或物品的数字ID或英文ID名,大部分方块和物品都被接受,除了某些不存在物品形式的方块。 物品的使用次数会随着玩家使用的方块或物品的次数增加而增加。 "使用" 在下列情况被定义为: ①锹、镐、斧、打火石、剪刀、锄、弓或 剑 会消耗它们的耐久度。 即使没有损耗,使用次数也会增加,例如当它们用于破坏一个火把。 每右击钓鱼竿或萝卜钓竿一次,它们的使用次数就会增加,即使它们没有损耗。当盔甲有损耗时,使用次数不会增加。 ②放置下一个方块。 ③画, 刷怪蛋, 任何一种 矿车, 物品展示框, 船,末影之眼, 末影珍珠, 鸡蛋, 雪球, 弓, 任何一种可投掷的 药水, 附魔之瓶, 或 钓鱼竿 生成一个实体。 ④有两种使用方法的染料之一被正确地使用了。包括可可豆在丛林木头上放置可可果或骨粉被使用于催长植物,例如农作物或草。这个数值在给羊染色时并不增长。 ⑤牛奶,药水,或任何食物,及除蛋糕之外可放置的,会被记录。 ⑥由空地图,桶,熔岩桶,水桶,牛奶,书与笔,或药水制出新的物品。这个数值当由碗制作出蘑菇煲或一个桶制出牛奶时并不增长。 ⑦将一份音乐唱片放入唱片机。每个唱片有一个不同的记分板数值。 然而,这些数值不会在物品用于生物上时增长,不管是命名,驯服,喂养,繁殖,上鞍,套绳,薅毛,挤奶,或通过哞菇取得蘑菇煲;或直接穿上盔甲;或者皮革盔甲经由炼药锅染色。 例如一个玩家放置一块石头之后,他的 stat.useItem.minecraft.stone 准则会+1。 5.stat.breakItem(统计.用坏物品):次级准则是有耐久度的物品ID,当耐久度耗尽时数值增加。例如一个玩家用坏一个石镐后,他的 stat.breakItem.stone_pickaxe 准则会+1。 6.stat.mineBlock(统计.挖掘物品):次级准则为方块的ID或ID名。大多数方块都可接受,不可开采的或技术性方块除外。"挖掘" 定义为玩家能使方块掉落物品的破坏方式,除非方块不会掉落,比如 玻璃,或是会创造出另外一个方块,比如 冰。创造模式下该数值不会增加,且 doTileDrops 为false时也会计数。例如一个玩家挖掉一个石头,他的 stat.mineBlock.minecraft.stone 准则会+1。 7.stat.killEntity(统计.杀死实体):次级准则为实体的名字。在玩家杀死特定的实体时增加。例如一个玩家杀死一个僵尸后,他的 stat.killEntity.Zombie 准则会+1。 8.stat.entityKilledBy(统计.被实体杀死):次级准则为实体的名字。在玩家被特定的实体杀死时增加。例如一个玩家被僵尸杀死之后,他的 stat.entityKilledBy.Zombie 准则会+1。 9和10.killedByTeam(团队被击杀数),teamkill(团队击杀数):次级准则是队伍的颜色。在玩家杀死特定颜色的队伍成员或玩家被特定颜色的队伍成员杀死时增加。 准则终于说完了............ remove(删除) /scoreboard objectives remove <name> 它用来删除记分板系统中目标name的所有有关内容。玩家分数的数据等都会被删除。 注:填写的 name 必须是已存在的记分板内部名称 命令才会成功执行。 例如删除刚刚创建的记分板就在聊天栏输入命令:/scoreboard objectives remove money
移除记分板 setdisplay(显示位置) /scoreboard objectives setdisplay <slot> [objective] 它用来在指定位置显示目标的分数信息。 <slot>;指定记分板显示的位置。 [objective];可选参数,如果填写则名称 必须存在; 如果不填写,该显示位置显示的记分板内容将会清空。 可用的<slot>有4类:list,sidebar,sidebar.team.<color>,belowName。 list(列表)
list 在玩家列表中以黄色文字在玩家名称后显示分数信息(默认为 Tab 键),并不会显示目标名称。 sidebar(侧边栏)
sidebar 在屏幕的右侧显示。在列表的最上方显示目标的 显示名称(display name) ,并显示玩家的高分榜。值得注意的是,即使玩家离线,如果在该目标下存在一定分数也会在"侧边栏"中进行显示,并且没有痕迹的玩家也不会被显示。除此之外,以#开头的伪造的玩家名称在任何情况下都不会在侧边栏可见。 sidebar.team.< color >(侧边栏.队伍.< 颜色 >) 有16个的具体队伍的侧边栏显示形式。它们和标准的侧边栏同样操作,但只显示有指定颜色的队伍中的玩家(例如"sidebar.team.green"则只显示绿色队伍中的玩家)。有效的颜色是:"black", "dark_blue", "dark_green", "dark_aqua", "dark_red", "dark_purple", "gold", "gray", "dark_gray", "blue", "green", "aqua", "red", "light_purple", "yellow", 和 "white"。 belowName(名称下方) 在玩家的名称牌之下,在他们的头之上,于目标的 显示名称(display name) 后面显示分数。在10个方块后面、或玩家 潜行 时隐藏。在单人游戏中不可见。 list(列举) /scoreboard objectives list 它可以列出所有存在的目标,以及它们的显示名称与准则。 注:记分板中至少存在一个目标时此命令才会成功。
执行命令 /scoreboard players
它包含8个分支,分别是:set,reset,add,remove,enable,test,operation,list。
set(设置分数) /scoreboard players set < player > < objective > < score > [ dataTag ] 设置玩家 在目标记分板 上的分数 ,已有分数存在时覆盖设置。 < player >;玩家名或目标选择器或 *,* 代表所有正在被记分板追踪的玩家。 < objective >;要操作的记分板名称。 < score >;要更改的分数。 [ dataTag ];数据标签(以后讲)。 例如设置我在money记分板上的分数为1000:/scoreboard players set 暗冥夜辰 money 1000 reset(重置玩家分数) /scoreboard players reset < player > [ objective ] 删除玩家 的一项或所有记分板上的分数。 需要注意这不仅仅是设分数为0:玩家将会整个从记分板上被移除(或从给定的目标)。 < player >;玩家名或目标选择器或 *,* 代表所有正在被记分板追踪的玩家。 [ objective ] ;可选参数,填写要操作的记分板名称,不填写代表删除该玩家在所有记分板上的分数。 例如删除现在money记分板上所有玩家的分数:/scoreboard players reset * money add(增加分数) /scoreboard players add < player > < objective > < count > [ dataTag ] 增加玩家 在目标记分板 上的分数 。 < player >;玩家名或目标选择器或 *,* 代表所有正在被记分板追踪的玩家。 < count >;要增加的分数,数字 必须在1 到 2,147,483,647, 两个数字包括在内。 例如给money记分板上暗冥夜辰玩家的分数增加1000:/scoreboard players add 暗冥夜辰 money 1000 remove(扣除分数) /scoreboard players remove < player > < objective > < count > [ dataTag ]
扣除玩家
在目标记分板
上的分数。
例如将money记分板上暗冥夜辰玩家的分数减少1000:/scoreboard players remove 暗冥夜辰 money 1000 enable(授予权限) /scoreboard players enable < player > < trigger > < player >;玩家名或目标选择器或*,* 可以 代表所有正在被记分板追踪的玩家。 使玩家可以对 以触发器 trigger 为准则的记分板 使用命令 /trigger 来修改自己的分数。 在此操作完成前,玩家 使用 /trigger 操作时将会失败。一旦玩家对目标使用了/trigger,目标将再次变得不可操作。 以触发器为准则的记分板:/scoreboard objectives add name trigger test(检测分数) /scoreboard players test <player> <objective> <min> [max] 当玩家 在目标 记分板 的分数在最小值 min 与最大值 max 之间(两个数字包括在内)时输出。 <player>;玩家名或目标选择器或 *,* 可以代表所有正在被记分板追踪的玩家。 <min>;最小值或 *,* 代表的值为-2,147,483,648。 [max];可选参数,如果使用 *或不输入值,值默认为2,147,483,647。 例如检测最近的玩家在money记分板上的分数是否小于127:/scoreboard players test @p money * 127 operation(运算) /scoreboard players operation < targetName > < targetObjective > < operation > < selector > < objective > 使用目标选择器< selector> 将目标记分板 < objective > 上的分数作为输入,进行运算操作 < operation > 后把结果设为玩家< targetName> 在目标记分板< targetObjective> 上的分数。 可用的 运算操作< operation > : "+=" 加法: 把selector的分数加到 targetName的分数上。
"-=" 减法: 在targetName的分数上减去selector的分数。
"*=" 乘法: 将targetName的分数设为 targetName的分数与 selector分数的乘积。 "/=" 除法: 将targetName的分数设为被selector的分数除后的结果。 "%=" 求余: 将targetName的分数设为被selector的分数除后得到的余数。 "=" 赋值: 把targetName的分数设为 selector的分数。 "<" 取较小值: 较小值设为 targetName的分数。 ">" 取较大值: 较大值设为 targetName的分数。 "><" 交换selector与targetName的分数。 注:除"><"外,< selector> 在< objective> 上的分数会保持不变。 list(列表) /scoreboard players list [ playername ] 显示所有被记分板系统追踪的玩家。 [ playername ]; 可选参数,填写* 会显示所有正被记分板跟踪的玩家。填写 玩家名称可显示指定玩家的所有分数,但 填写的 玩家 必须记有分数。如果不填写 ,则至少需要有一个玩家正被记分板系统追踪。
执行命令 /scoreboard players list 注意聊天栏内容。
执行命令 /scoreboard players list 暗冥夜辰 服务器商店 刚刚我们已经学习了记分板如何使用。创建好一个以虚拟值为准则、名字叫暗币、内部名称为name的记分板,并且设置好显示玩家分数的位置。接下来我们利用刚刚讲的命令和一些新命令制作收购物品和卖出物品的命令。 在聊天栏输入: 创建记分板:/scoreboard objectives add money dummy 暗币 设置显示位置:/scoreboard objectives setdisplay list money (显示在列表) /scoreboard objectives setdisplay sidebar(显示在侧边栏) 获得命令方块:/give @p minecraft:command_block
123456为出售命令方块,78为收购命令方块
收购命令
首先放置2个命令方块,命令方块的颜色不要管,设置好后会自动变颜色。需要注意的是箭头的方向。放置命令方块时命令方块的箭头总会指向玩家。你们多放几个就会了~! 在 7号命令方块 中输入命令:/clear @p stone 0 1 并设置命令方块为 循环 不受制约 红石控制。 (你只要改的对,颜色和样式会和我图上的一样)
7号命令方块 这个命令的作用是按下按钮后循环 (每秒执行20次,按钮2秒弹起 ) 清除最近的玩家背包中的一块石头,直到玩家背包中没有石头或者按钮弹起为止。将循环改为脉冲则只清除一块石头。 该命令的原有格式是:/ clear [ 玩家 ] [ 物品 ] [ 数据值 ] [ 最大数量 ] [ 数据标签 ](相信从头看过我写的每一期的朋友现在已经看得懂这串吧啦吧啦是什么东西了吧!) 8号命令方块 中输入:/scoreboard players add @p money 5 并设置命令方块为 连锁 条件制约 保持开启 。 (这里有人问为什么不用红石,因为有连锁模式和保持开启功能,更小、更稳定、更灵活(反正就是好,我不管我不管!!))
8号命令方块 这个命令方块连锁上一个7号命令方块。每清除玩家背包中的一个石头,这个命令方块就将最近的玩家在money记分板上的分数加5。命令格式见上文。 收购的命令就好了! 是不是很简单啊~ 啊!啊? 真的,你们看我的文章反馈能不能多一点啊!你们的支持才是我的动力!第一次在B站发东西我很虚的啊!...... 出售命令 1号命令方块 中输入:/scoreboard players test @p money * 127 设置为脉冲 不受制约 红石控制(其实不用改,这是放之命令方块时的默认设置..)。
1号命令方块 这个命令是检测最近的玩家在money记分板上的分数是否在-2147483648到127的范围内(我卖的是鞍,定价为128)。命令格式见上文。 2号命令方块 中输入:/w @p 暗币不足 设为 连锁 条件制约 保持开启 (条件制约限制只有上一个命令方块执行成功才会执行自己的命令)。
2号命令方块(话说这个悄悄地让人觉得好猥琐啊) 这个命令方块连锁上一个1号命令方块。如果1号命令方块检测到玩家金币不足,则这个命令方块内的命令会被执行。 命令格式:/tell <玩家> <信息…> 或 /msg <玩家> <信息…> 或 /w <玩家> <信息…> 它可以 将一条私聊信息发送给一个或多个玩家。 信息可以包括空格。 3号命令方块 输入:/scoreboard players test @p money 128 * 并设置为 连锁 不受制约 保持开启
3号命令方块 检测最近的玩家在money记分板上的分数是否在128到2147483647的范围内(我卖的是鞍,定价为128)。命令格式见上文。 4号命令方块 输入:/scoreboard players remove @p money 128 设为 连锁 条件制约 保持开启。
4号命令方块 这个命令方块连锁上一个3号命令方块。如果3号命令方块检测到玩家金币足够,则这个命令方块内的命令会扣除最近的玩家在money记分板上的128分。命令格式见上文。 5号命令方块 输入:/give @p minecraft:saddle 1 设为 连锁 条件制约 保持开启。
5号命令方块 这个命令方块连锁3号命令方块。如果玩家金币足够,则给最近的玩家1个鞍。命令格式见第1期。 6号命令方块 输入:/w @p 购买成功 设为 连锁 条件制约 保持开启 (这个命令方块可以删掉,功能没什么大用,写出来你们多学一点)
6号命令方块 这个命令方块连锁3号命令方块。交易成功后告诉最近的玩家购买成功。 做好啦~ 啦!啊!
不可拾取物品下期说 注:关于服务器商店,每一条代码中的目标选择器变量@p后都可以加目标选择器参数(通过坐标选择目标[x=X,y=Y,z=Z](看不懂的可以看上一期)),可以填对应按钮的精确坐标来防止有人站在旁边偷东西! ~~~~~~~神奇的分割线~~~~~~~ 注:有想知道的代码或者好的想法可以在评论区写出来,我会考虑优先出教程哒^_^ 我写的比较细,零基础的小白们,看到有不懂的地方欢迎在评论区提问。至于大佬们吧...,欢迎批评哦~ 我学习的网站(部分内容出处)❶: https://minecraft-zh.gamepedia.com/%E8%AE%B0%E5%88%86%E6%9D%BF#.E7.9B.AE.E6.A0.87 谢谢大家的支持! 各位读者大大们觉得喜欢就点一下推荐,也可以关注我看更多Minecraft中的命令 ^_^~~~ |
[编辑:叶子猪小秘书] 本资讯及文章仅代表发表厂商及作者观点,不代表叶子猪本身观点!



