我的世界指令商店-scoreboard记分板的运用

127次阅读
2 条评论

本文将简单介绍如何使用scoreboard记分板指令来搭建一个简易的指令商店。

scoreboard基础语法

创建记分板:scoreboard objectives add <objective: string> dummy [displayName: string]

<objective: string>是记分板的名字,可以是中文、英文等。[displayName: string]是记分板的显示名字,如果未指定,默认为记分板的名字。

检测记分板:scoreboard players test <player: target> <objective: string> <min: wildcard int> [max: wildcard int]

检测目标分数是否在<min: wildcard int>(最小值)和<max: wildcard int>(最大值)之间。(不填默认为(2147483647))

增减计分板:scoreboard players add <player: target> <objective: string> <count: int>

<count: int>是你要增加减小的数值。若目标实体在记分项中不存在分数,则在增加前视为0分。若为负数,则将减去相应的分数。

将记分板显示出来:scoreboard objectives setdisplay <list|sidebar> [objective: string] [ascending|descending]

list是显示在游戏暂停界面的右边。sidebar的显示在侧边栏。list与sidebar可以填写ascending(从小到大排列)或descending(从大到小排列)

原理介绍

我们可以先创建一个记分板用来当作服务器的虚拟货币,并且将货币显示出来,这样玩家可以直接看到自己的货币数量。

商店部分我们可以先检测玩家的金币数量是否超过该物品的售价,然后减去该物品的售价,最后给予玩家物品。

指令实践

一、创建一个名为money的记分板用来当作货币

scoreboard objectives add money dummy

二、将记分板显示在侧边栏

scoreboard objectives setdisplay sidebar money descending

购买商店

三、放置一个脉冲命令方块、无条件、需要红石,写入一下指令检查玩家的金币数量,假定出售10金币的苹果。

scoreboard players test @p money 10

四、在后面接着放置一个命令方块,设置为连锁、有条件、始终开启。给玩家扣10金币数。

scoreboard players add @p money -10

五、在后面接着放置一个命令方块,设置为连锁、有条件、始终开启。给予玩家一个苹果。这里的apple可替换为其他物品。

give @p apple

命令方块摆放方向朝向一定要一致,可以在脉冲命令方块前放置一个方块,再放置一个按钮,这样玩家点击按钮就能触发命令方块。如下图所示:

我的世界指令商店-scoreboard记分板的运用

出售商店

1、放置一个脉冲命令方块,无条件,需要红石。这条指令可以清除玩家身上的一个苹果。这里的apple可以替换为其他物品。这种方法只能一个个出售。

clear @p apple 0 1

2、放置一个连锁命令方块,有条件,保持开启。这条指令能给玩家增加10金币数。这样就实现了物品换钱。

scoreboard players add @p money 10

命令方块摆放方向朝向一定要一致,可以在脉冲命令方块前放置一个方块,再放置一个按钮,这样玩家点击按钮就能触发命令方块。

这样,一个用scoreboard的指令搭建的简易商店就做好了。

更多有关我的世界服务器金币的内容可参考这篇文章:我的世界金币系统

正文完
 1
评论(2 条评论)
xiao
2025-01-26 12:06:59 回复

如果我的金币数量突破了21亿 我该如何将它运用到实际的货币系统中 让这21亿金币显示并可以运用

    2025-01-26 12:57:08 回复

    我尽量建议不要把玩家能获得到的金币数目弄的如此巨大。在我的世界原版里实现虚拟金币效果只能用scoreboard记分板。上面的文章介绍了一种显示金币的方法。其实想显示记分板数字的方法有很多,但对于还不是很了解指令的玩家来说,本文提到的方法比较简单。但这种方法会把玩家下线的数值显示出来,想去除玩家下线可以参考这篇文章https://mc.ziyueyoushang.com/minecraft-rental-server-gold-coin-system.html
    在我的世界基岩版里也可以用execute检测记分板,这种方法其实优于本文介绍的方法,但本文的指令更简单一些。
    execute as @p at @s if score @s money matches 100.. run scoreboard players add @s money -100
    这条指令的意思是如果最近的玩家money记分板的数值大于100就扣除该玩家money记分板100点数值。