我的世界自定义发红包系统指令教学,玩家可以自定义金额和数量。

自定义红包系统
作者:哔哩哔哩小鑫
介绍:本套指令可以实现,玩家可以随时随地都可以发送红包,因为发的红包是平均的,所以抢到的红包都是一样的金额,原来我想做拼手气红包,可是因为实力不足,最后只能做成这样的,有能力的可以发视频@我我想学习一下!
————————————————
前者指令
创建6个计分板分别是:
scoreboard objectives add 计时 dummy
scoreboard objectives add 红包 dummy
scoreboard objectives add 输入 dummy
scoreboard objectives add 金额 dummy
scoreboard objectives add 数量 dummy
scoreboard objectives add 金币 dummy
设置计分项“十”的分数
scoreboard players set 十 输入 10
(以上指令都是在聊天栏输入)
==========================
①初始化玩家分数
1.数量
scoreboard players add @a 数量 0
(循环/无条件/保持开启)
2.金额
scoreboard players add @a 金额 0
(连锁/无条件/保持开启)
3.输入
scoreboard players add @a 输入 0
(连锁/无条件/保持开启)
4.计时
scoreboard players add @a 计时 0
(连锁/无条件/保持开启)
==========================
②综合系统指令
1.丢蛋加分
execute @e[type=minecraft:egg] ~ ~ ~ scoreboard players add @p[r=4] 红包 1
(循环/无条件/保持开启)
2.删除丢蛋原本音效
execute @e[type=minecraft:egg] ~ ~ ~ stopsound @p random.bow
(连锁/无条件/保持开启)
3.丢蛋新音效
execute @e[type=minecraft:egg] ~ ~ ~ playsound random.orb @p ~ ~ ~ 200 3
(连锁/无条件/保持开启)
4.kill鸡蛋
execute @e[type=minecraft:egg] ~ ~ ~ kill @s
(连锁/无条件/保持开启)
5.低头提示
execute @a[rxm=80,scores={红包=0..29}] ~ ~ ~ title @s actionbar §l§6✘已取消红包菜单
(连锁/无条件/保持开启)
6.低头音效
execute @a[rxm=80,scores={红包=0..29}] ~ ~ ~ playsound beacon.deactivate @s ~ ~ ~ 200 30
(连锁/无条件/保持开启)
7.低头初始化红包分数
execute @a[rxm=80,scores={红包=!-1}] ~ ~ ~ scoreboard players set @s 红包 -1
(连锁/无条件/保持开启)
8.红包0..15t显
execute @a[scores={红包=0..15}] ~ ~ ~ titleraw @s actionbar {"rawtext":[{"text":"§l§c 自定义红包¥
§r§c=========================
§r§g§o 红包金额1k-9999金币
§3红包数量1-20个§l§7§r
"},{"translate":"%%2%%3","with":{"rawtext":[{"selector":"@s[scores={红包=0}]"},{"text":"§7"},{"text":""}]}},{"text":"§7"},{"translate":"%%2%%3","with":{"rawtext":[{"selector":"@s[scores={红包=1}]"},{"text":"§a"},{"text":" ①"}]}},{"text":"§7"},{"translate":"%%2%%3","with":{"rawtext":[{"selector":"@s[scores={红包=2}]"},{"text":"§a"},{"text":" ②"}]}},{"text":"§7"},{"translate":"%%2%%3","with":{"rawtext":[{"selector":"@s[scores={红包=3}]"},{"text":"§a"},{"text":" ③"}]}},{"text":"§7"},{"translate":"%%2%%3","with":{"rawtext":[{"selector":"@s[scores={红包=13}]"},{"text":"§6"},{"text":" 确认"}]}},{"text":"§7"},{"text":"§c"},{"score":{"name":"@s","objective":"数量"}},{"text":"个红包§r§7\n"},{"translate":"%%2%%3","with":{"rawtext":[{"selector":"@s[scores={红包=4}]"},{"text":"§a"},{"text":" ④"}]}},{"text":"§7"},{"translate":"%%2%%3","with":{"rawtext":[{"selector":"@s[scores={红包=5}]"},{"text":"§a"},{"text":" ⑤"}]}},{"text":"§7"},{"translate":"%%2%%3","with":{"rawtext":[{"selector":"@s[scores={红包=6}]"},{"text":"§a"},{"text":" ⑥"}]}},{"text":"§7"},{"translate":"%%2%%3","with":{"rawtext":[{"selector":"@s[scores={红包=14}]"},{"text":"§6"},{"text":" 确认"}]}},{"text":"§7"},{"text":"§e"},{"score":{"name":"@s","objective":"金额"}},{"text":"金币§7\n"},{"translate":"%%2%%3","with":{"rawtext":[{"selector":"@s[scores={红包=7}]"},{"text":"§a"},{"text":" ⑦"}]}},{"text":"§7"},{"translate":"%%2%%3","with":{"rawtext":[{"selector":"@s[scores={红包=8}]"},{"text":"§a"},{"text":" ⑧"}]}},{"text":"§7"},{"translate":"%%2%%3","with":{"rawtext":[{"selector":"@s[scores={红包=9}]"},{"text":"§a"},{"text":" ⑨"}]}},{"text":"§c"},{"text":"  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄§7\n"},{"translate":"%%2%%3","with":{"rawtext":[{"selector":"@s[scores={红包=10}]"},{"text":"§6"},{"text":" ◁═"}]}},{"text":"§7"},{"translate":"%%2%%3","with":{"rawtext":[{"selector":"@s[scores={红包=11}]"},{"text":"§a"},{"text":" (0)"}]}},{"text":"§7"},{"translate":"%%2%%3","with":{"rawtext":[{"selector":"@s[scores={红包=12}]"},{"text":"§4"},{"text":" ✕"}]}},{"text":"§7"},{"translate":"%%2%%3","with":{"rawtext":[{"selector":"@s[scores={红包=15}]"},{"text":"§a"},{"text":"§l 发送红包"}]}},{"text":"§r§7\n"},{"text":"§o§d当前输入:§4§l "},{"score":{"name":"@s","objective":"输入"}},{"text":"
§r§d  ̄ ̄ ̄ ̄ ̄ ̄"}]}
(连锁/无条件/保持开启)
9.重置分数
execute @a[scores={红包=16}] ~ ~ ~ scoreboard players set @s 红包 0
(连锁/无条件/保持开启)
10.低头初始化输入分数
execute @a[rxm=80] ~ ~ ~ scoreboard players set @s 输入 0
(连锁/无条件/保持开启)
11.超出输入提示
execute @a[scores={输入=999999..}] ~ ~ ~ title @s title §4超出输入范围
(连锁/无条件/保持开启)
12.超过输入就重置
execute @a[scores={输入=999999..}] ~ ~ ~ scoreboard players set @s 输入 0
(连锁/无条件/保持开启)
==========================
扣除计时玩家分数从而实现倒计时效果
execute @a[tag=发红包,scores={计时=1..}] ~ ~ ~ scoreboard players remove @s 计时 1
(循环/无条件/保持开启/延迟25)
==========================
1.检测有“发红包”标签的玩家
testfor @a[tag=发红包]
(循环/无条件/保持开启)
2.检测到就将其他玩家的分数初始化
实现有人发红包时别人发不了红包
execute @a[tag=!发红包] ~ ~ ~ scoreboard players set @s 红包 -1
(连锁/有条件/保持开启)
==========================
③输入功能
1.给输入1-9的玩家都先*10
execute @a[scores={红包=1..9},rx=-80] ~ ~ ~ scoreboard players operation @s 输入 *= 十 输入
(循环/无条件/保持开启)
然后在将玩家加1-9
2.加1
execute @a[scores={红包=1},rx=-80] ~ ~ ~ scoreboard players add @s 输入 1
(连锁/无条件/保持开启)
3.加2
execute @a[scores={红包=2},rx=-80] ~ ~ ~ scoreboard players add @s 输入 2
(连锁/无条件/保持开启)
4.加3
execute @a[scores={红包=3},rx=-80] ~ ~ ~ scoreboard players add @s 输入 3
(连锁/无条件/保持开启)
5.加4
execute @a[scores={红包=4},rx=-80] ~ ~ ~ scoreboard players add @s 输入 4
(连锁/无条件/保持开启)
6.加5
execute @a[scores={红包=5},rx=-80] ~ ~ ~ scoreboard players add @s 输入 4
(连锁/无条件/保持开启)
7.加6
execute @a[scores={红包=6},rx=-80] ~ ~ ~ scoreboard players add @s 输入 6
(连锁/无条件/保持开启)
8.加7
execute @a[scores={红包=7},rx=-80] ~ ~ ~ scoreboard players add @s 输入 7
(连锁/无条件/保持开启)
9.加8
execute @a[scores={红包=8},rx=-80] ~ ~ ~ scoreboard players add @s 输入 8
(连锁/无条件/保持开启)
10.加9
execute @a[scores={红包=9},rx=-80] ~ ~ ~ scoreboard players add @s 输入 9
(连锁/无条件/保持开启)
11.重置红包分数
execute @a[scores={红包=1..9},rx=-80] ~ ~ ~ scoreboard players set @s 红包 0
(连锁/无条件/保持开启)
12.加0也就是乘10
execute @a[scores={红包=11},rx=-80] ~ ~ ~ scoreboard players operation @s 输入 *= 十 输入
(连锁/无条件/保持开启)
13.退格也就是除以10
execute @a[scores={红包=10},rx=-80] ~ ~ ~ scoreboard players operation @s 输入 /= 十 输入
(连锁/无条件/保持开启)
14.重置也就是设置为0
execute @a[scores={红包=12},rx=-80] ~ ~ ~ scoreboard players set @s 输入 0
(连锁/无条件/保持开启)
15.重置红包分数
execute @a[scores={红包=10..12},rx=-80] ~ ~ ~ scoreboard players set @s 红包 0
(连锁/无条件/保持开启)
==========================
④检测红包数量
1.检测输入21后
execute @a[scores={红包=13},rx=-80] ~ ~ ~ scoreboard players test @s 输入 21 *
(循环/无条件/保持开启)
2.就提示过大
execute @a[scores={红包=13},rx=-80] ~ ~ ~ tellraw @s {"rawtext":[{"text":"§4§l数量过大不能>20个红包"}]}
(连锁/有条件/保持开启)
3.检测在1-20
execute @a[scores={红包=13},rx=-80] ~ ~ ~ scoreboard players test @s 输入 1 20
(连锁/无条件/保持开启)
4.数量=输入
execute @a[scores={红包=13},rx=-80] ~ ~ ~ scoreboard players operation @s 数量 = @s 输入
(连锁/有条件/保持开启)
5.重置分数
execute @a[scores={红包=13},rx=-80] ~ ~ ~ scoreboard players set @s 输入 0
(连锁/无条件/保持开启)
==========================
⑤检测红包金额
1.检测在9999后
execute @a[scores={红包=14},rx=-80] ~ ~ ~ scoreboard players test @s 输入 9999 *
(循环/无条件/保持开启)
2.就提示过大
execute @a[scores={红包=14},rx=-80] ~ ~ ~ tellraw @s {"rawtext":[{"text":"§4§l数量过大不能>1w金币"}]}
(连锁/有条件/保持开启)
3.检测在1000-9998
execute @a[scores={红包=14},rx=-80] ~ ~ ~ scoreboard players test @s 输入 1000 9998
(连锁/无条件/保持开启)
4.就将金额=输入
execute @a[scores={红包=14},rx=-80] ~ ~ ~ scoreboard players operation @s 金额 = @s 输入
(连锁/有条件/保持开启)
5.重置输入分数
execute @a[scores={红包=14},rx=-80] ~ ~ ~ scoreboard players set @s 输入 0
(连锁/无条件/保持开启)
==========================
⑥发红包系统
1.检测数量不足提示
execute @a[scores={红包=15},rx=-80] ~ ~ ~ tellraw @s[scores={数量=..0}] {"rawtext":[{"text":"§l§c红包数量必须大于0个!"}]}
(循环/无条件/保持开启)
2.就重置分数
execute @a[scores={红包=15},rx=-80] ~ ~ ~ scoreboard players set @s[scores={数量=..0}] 红包 0
(连锁/有条件/保持开启)
3.检测金额过小就提示
execute @a[scores={红包=15},rx=-80] ~ ~ ~ tellraw @s[scores={金额=..1001}] {"rawtext":[{"text":"§l§c红包金额必须大于1k金币!"}]}
(连锁/无条件/保持开启)
4.重置金额分数
execute @a[scores={红包=15},rx=-80] ~ ~ ~ scoreboard players set @s[scores={金额=..1000}] 红包 0
(连锁/有条件/保持开启)
5.将金币-金额
execute @a[scores={红包=15},rx=-80] ~ ~ ~ scoreboard players operation @s 金币 -= @s 金额
(连锁/无条件/保持开启)
6.>1就给标签
execute @a[scores={金币=1..}] ~ ~ ~ tag @s[scores={红包=15},rx=-80] add 发红包
(连锁/无条件/保持开启)
7.全服通告有人发红包
say §l§a玩家§e @a[tag=发红包] §c发红包啦!§d跳+抬头即可领取§b先到先得。
(连锁/有条件/保持开启)
8.<1就提示金币不足
execute @a[scores={金币=..0}] ~ ~ ~ title @s[scores={红包=15},rx=-80] title §4金币不足!
(连锁/无条件/保持开启)
9.退还金币
execute @a[scores={金币=..0}] ~ ~ ~ scoreboard players operation @s 金币 += @s 金额
(连锁/有条件/保持开启)
10.有标签玩家设置红包为30分
execute @a[tag=发红包] ~ ~ ~ scoreboard players set @s 红包 30
(连锁/无条件/保持开启)
11.30分玩家显示t显
execute @a[scores={红包=30}] ~ ~ ~ titleraw @s actionbar {"rawtext":[{"text":"§e§o查看红包进度
====================§r
§l§6玩家名称:
"},{"selector":"@s"},{"text":"
§g剩余红包余额:"},{"score":{"name":"@s","objective":"金额"}},{"text":"
§b剩余红包数量:"},{"score":{"name":"@s","objective":"数量"}},{"text":"
§a抢红包倒计时:§4"},{"score":{"name":"@s","objective":"计时"}}]}
(连锁/无条件/保持开启)
12.有标签玩家计时设置30分
execute @a[scores={计时=-1},tag=发红包] ~ ~ ~ scoreboard players set @s 计时 30
(连锁/无条件/保持开启)
13.重置红包分数
execute @a[scores={红包=15},rx=-80] ~ ~ ~ scoreboard players set @s 红包 0
(连锁/无条件/保持开启)
14.红包没时给玩家计时设置为0
execute @a[scores={数量=0},tag=发红包] ~ ~ ~ scoreboard players set @s[scores={计时=0..}] 计时 0
(连锁/无条件/保持开启)
==========================
⑦计时管理
1.退回金币提示
execute @a[scores={计时=0},tag=发红包] ~ ~ ~ tellraw @s {"rawtext":[{"text":"§l§c本次红包已结束§g已归还剩余的"},{"score":{"name":"@s","objective":"金额"}},{"text":"金币到你的账户上"}]}
(循环/无条件/保持开启)
2.全服通告
say §l§a本次红包已结束§a谢谢§d @a[scores={计时=0},tag=发红包] §a的红包,老板大气!
(连锁/有条件/保持开启)
3.退回金币
execute @a[scores={计时=0},tag=发红包] ~ ~ ~ scoreboard players operation @s 金币 += @s 金额
(连锁/无条件/保持开启)
4.初始化红包分数
execute @a[scores={计时=0},tag=发红包] ~ ~ ~ scoreboard players set @s 红包 -1
(连锁/无条件/保持开启)
5.初始化计分分数
execute @a[scores={计时=0},tag=发红包] ~ ~ ~ scoreboard players set @s 计时 -1
(连锁/无条件/保持开启)
6.删除发红包标签
execute @a[tag=发红包] ~ ~ ~ tag @s remove 发红包
(连锁/有条件/保持开启)
7.删除收红包标签
tag @a remove 收红包
(连锁/有条件/保持开启)
==========================
⑧玩家抢红包系统
1.检测有人发红包
testfor @a[tag=发红包]
(循环/无条件/保持开启)
比较器⇦
2.检测到就平均等于金额
execute @a[tag=发红包] ~ ~ ~ scoreboard players operation 平均 输入 = @s 金额
(脉冲/无条件/红石控制)
3.在平均除以数量
execute @a[tag=发红包] ~ ~ ~ scoreboard players operation 平均 输入 /= @s 数量
(连锁/有条件/保持开启)
==========================
1.在检测是否有人发红包
testfor @a[tag=发红包]
(循环/无条件/保持开启)
比较器⇦
2.抬头加跳玩家金币加平均
execute @a[rx=-80,tag=!收红包] ~ ~ ~ detect ~ ~-1 ~ air 0 scoreboard players operation @s 金币 += 平均 输入
(循环/无条件/红石控制)
3.全服通告比如某某人抢到了红包
execute @a[tag=!收红包,rx=-80] ~ ~ ~ detect ~ ~-1 ~ air 0 tellraw @a {"rawtext":[{"text":"§d玩家◁§e"},{"selector":"@a[tag=!收红包,rx=-80]"},{"text":"§d▷§6抢到了§c红包!§a恭喜获得§e"},{"score":{"name":"平均","objective":"输入"}},{"text":"金币"}]}
(连锁/有条件/保持开启)
4.在减去发红包玩家的余额
execute @a[rx=-80,tag=!收红包] ~ ~ ~ detect ~ ~-1 ~ air 0 scoreboard players operation @a[tag=发红包] 金额 -= 平均 输入
(连锁/无条件/保持开启)
5.红包数量-1
execute @a[rx=-80,tag=!收红包] ~ ~ ~ detect ~ ~-1 ~ air 0 scoreboard players remove @a[tag=发红包] 数量 1
(连锁/无条件/保持开启)
6.抢到红包音效
execute @a[rx=-80,tag=!收红包] ~ ~ ~ detect ~ ~-1 ~ air 0 playsound random.levelup @s ~ ~ ~
(连锁/无条件/保持开启)
7.给没标签的玩家跳加抬头给予标签
execute @a[rx=-80,tag=!收红包] ~ ~ ~ detect ~ ~-1 ~ air 0 tag @s add 收红包
(连锁/无条件/保持开启)
————————————————
展示完毕!