菜鸡_lmao
我想tag一些固定数量的玩家
但是我想先tag一些带有特定tag的玩家
再去tag(固定数量-特定tag的玩家数)数量的玩家

Stone_ingot
那就给没有tag的玩家一个新tag呗
线

菜鸡_lmao
Stone_ingot 发表于 2023-1-27 19:57
那就给没有tag的玩家一个新tag呗
曲线救国

但是是从>x个玩家里抽取x个玩家诶

Stone_ingot
菜鸡_lmao 发表于 2023-1-27 19:59
但是是从>x个玩家里抽取x个玩家诶

那么就先随机选一个玩家
如果之前没被选中,就选中并加选中的标签
如果之前被选中,就跳过
重复执行直到选中的玩家数量为所需玩家数量
(只是个思路)

LM_NiuMa
假设计算tag标签为z的玩家数量
可以新建一个计分板A
召唤一个tag标签为x的盔甲架
execute @a[tag=z] ~ ~ ~ scoreboard players add @e[type=armor_stand,tag=x]
(此处自行想办法显示盔甲架A计分板的分数,方法很多,不一一概述)
scoreboard players tag @a[tag=z] remove z
以上三个命令方块为循环无条件、连锁无条件、连锁无条件
可用函数文件制作
如有帮助请设置为最佳 谢谢

菜鸡_lmao
tag @a[tag=first,sort=random,limit=8] add selected_player
tag @a[team=playing,sort=random,limit=8] add selected_player
这个8怎么改成8-(selected_player目前的数量)

实况主小博
本帖最后由 实况主小博 于 2023-1-27 22:23 编辑

那就直接计算出固定数量-特定tag人数的结果好了。先用execute获取特定tag人数,然后计分板用固定数量减去人数并给予特殊tag的玩家tag,最后用函数递归循环随机赋予没有tag的人tag,每次执行函数先前的结果分数就-1,只有先前分数大于等于1才会执行下一次
按固定数量为8的话我写一下具体命令

具体命令:
添加计分板test
  1. scoreboard objectives add test dummy
复制代码
函数test:1
  1. execute store result score player_first test if entity @a[tag=first]
  2. scoreboard players set player_tag test 8
  3. scoreboard players operation player_tag test -= player_first test
  4. tag @a[tag=first,sort=random,limit=8] add selected_player
  5. execute if score player_tag test matches 1.. run function test:2
复制代码
函数test:2
  1. scoreboard players remove player_tag test 1
  2. tag @a[team=playing,sort=random,limit=1,tag=!selected_player] add selected_player
  3. execute if score player_tag test matches 1.. run function test:2
复制代码
然后执行函数test:1就可以达到目的了




信徒233
666666666666666666