更好的组队系统(思路)
由于网易最近更了hasitem所以让我想起了我曾经想过的一个组队,比之前掉落物检测强太多
本来是视频简介内容,不过简介有2千字限制,限制我的发挥所以写了这一篇专栏。
1. 核心关键 平均分配队伍原理
一般的组队思路是红蓝红蓝红蓝红蓝红蓝红
为了说的方便我用3代表组队队伍(可能是红也可能是蓝)1代表红,2代表蓝
那一般的组队就是12121212121,
也就是说当人数是偶数时两个队伍人数一样
当人数是奇数的时候红队比蓝队多1个
然后呢这个组队就是改变这个分队顺序(以组队队伍为蓝队举例)
分队顺序就是311121(7-11)1(9-11)1(11-11)2222
如果组队队伍是红队那就反过来
322212(7-11)2(9-11)2(11-11)1111
这个括号里面的意思就是说如果总人数在7-11个就分配一个蓝队
比如说此时总人数是8个那么就只分配一次带括号的蓝队
如果是9个那就分配两次带括号的蓝队
为什么这么分,研究了发现的规律仅此而已。
2.检测组队玩家和显示被取消组队请求的玩家
给前3个手持羊毛的玩家添加组队1标签
给有组队1标签的玩家添加组队2
显示有组队2标签的玩家加入了组队
给有组队2标签的玩家移除组队1
给有组队2标签的玩家添加组队标签
给有组队2标签的玩家移除组队2
T显有组队3标签的玩家,显示组队队伍有谁谁谁
将每一个有组队标签的玩家人数分数设置为1
设置组队玩家的人数分数为0
把组队玩家的分数等于每一个有组队标签的玩家的人数分数的和
检测到组队玩家的人数的分数在1-3范围内
给有组队标签的玩家添加组队3
检测到组队玩家的人数的分数在4-4范围内
tellraw显示有组队标签没组队3标签的玩家被移除了组队
给有组队标签没组队3标签的玩家移除组队标签
给没有组队标签的玩家添加非组队标签
这块可能是类似遍历的东西,刚开始我弄的是当组队玩家人数在3个以上那么就随机取消一名
组队的玩家,因为简单嘛,后来觉得不太合适就花了几个小时想出来这个
3.半穷举分队
首先生成3个工具人
summon 后台1(分数等于玩家总数,operation加法)
summon 后台2(分数等于组队玩家人数,operation加法)
summon 后台3(分数等于组队队伍颜色,random 1 2)
首先测试一下后台2的分数,如果是0-1也就是没人组队或者1人组队那么取消这个人组队,
你一个人组队和没组有什么区别嘛,再给这个人加上非组队标签
然后用那个execute嵌套执行条件
当后台1的分数在4分及以下取消所有人组队,随机分队
当后台1的分数在5-11分,那么随机一下组队队伍颜色可能是红可能是蓝
还是用那个311121112222的原理解释一下(也就是组队队伍颜色是蓝)
如果说那个组队队伍颜色是蓝队也就是2
那么3的执行条件就是execute @e[type=armor_stand,name=后台3,scores={人数=2}] ~~~
3的完整指令就是execute @e[type=armor_stand,name=后台3,scores={人数=2}] ~~~
Scoreboard players set @e[type=armor_stand,tag=组队,scores={队伍=0}] 队伍 2
然后1就是 execute @e[type=armor_stand,name=后台3,scores={人数=2}] ~~~
Scoreboard players set @e[type=armor_stand,tag=非组队,scores={队伍=0},c=1] 队伍 1
然后写3遍这个
那个2要注意一下条件, 除了execute @e[type=armor_stand,name=后台3,scores={人数=2}] ~~~这个条件外还要再嵌套一个execute @e[type=armor_stand,name=后台2,scores={人数=0..2}] ~~~这个是干嘛的?
就是说比如7个人3人组队分出来的组队那个队伍人数要比没组队的队伍人数少一个也就是3:4,这个更公平一点
然后是那3条有人数限制的1
第一条就是execute @e[type=armor_stand,name=后台3,scores={人数=2}] ~~~
Execute @e[type=armor_stand,name=后台1,scores={人数=7..11}] ~~~ Scoreboard players set @e[type=armor_stand,tag=非组队,scores={队伍=0},c=1] 队伍 1
第二条就把后台1那个人数分数改成9,第三条就是改成11
最后那4个2就是为了补充一下人数,防止没人组队的尴尬
execute @e[type=armor_stand,name=后台3,scores={人数=2}] ~~~ Scoreboard players set @e[type=armor_stand,tag=非组队,scores={队伍=0},c=1] 队伍 2
写4遍这个
如果组队队伍颜色是红队那就反着写322212(7-11)2(9-11)2(11-11)1111
4.一些花里胡哨的东西
CHINA-X音乐不是服务器导入的,本人不玩基岩租赁服,用的function,在自己地图听的
QA
1. 为什么就搞了2个队伍?
因为2个队伍简单啊,而且很方便又实用啊。。。
队伍多了穷举最简单可是那样还有什么意义?
还有就是最关键得你这房间一共最多11个人,不是总能保持8个以上(8个多算多了得好嘛,日常都是2,3个3,4个,如果你不天天开的话),分那么多队伍干嘛,没必要.
2. 为什么拿11个盔甲架在那测试?
还是那个最多11个人,至于为什么拿盔甲架来测,因为我凑不到10个好友帮我测,就这么简单..盔甲架能成的,把选择器一改成玩家不就照样也行嘛,改成@e[type=player] 那种最好。
Ps.这个组队就是起床的一小部分,也不算特别重要,有的时候也怀疑这玩意到底有没有用,
不过研究的这个过程挺享受的。。。
