赤チームと青チームに均等にわけるコマンドを作りたいがなぜか均等にならない

赤チームと青チームへプレイヤーを均等にわけるコマンドを作りたく
command /randomteam:
permission: sk.admin
permission message: &cYou don't have permission.
trigger:
set {player} to 0
delete {tempredteam::*}
loop all players:
if {team.%loop-player's uuid%} is not set:
add 1 to {player}
add "%loop-player%" to {tempredteam::*}
wait 1 tick
set {playerhalf} to {player} / 2
loop {playerhalf} times:
set {tempred} to random object out of {tempredteam::*}
command "/team join red %{tempred}%"
set {_uuid} to {tempred} parsed as player's uuid
set {team.%{_uuid}%} to "red"
command "/team join blue @a[team=temp]"
loop all players:
if {team.%loop-player's uuid%} is not set:
set {team.%loop-player's uuid%} to "blue"
broadcast "&eチーム分けが完了しました"
command /randomteam:
permission: sk.admin
permission message: &cYou don't have permission.
trigger:
set {player} to 0
delete {tempredteam::*}
loop all players:
if {team.%loop-player's uuid%} is not set:
add 1 to {player}
add "%loop-player%" to {tempredteam::*}
wait 1 tick
set {playerhalf} to {player} / 2
loop {playerhalf} times:
set {tempred} to random object out of {tempredteam::*}
command "/team join red %{tempred}%"
set {_uuid} to {tempred} parsed as player's uuid
set {team.%{_uuid}%} to "red"
command "/team join blue @a[team=temp]"
loop all players:
if {team.%loop-player's uuid%} is not set:
set {team.%loop-player's uuid%} to "blue"
broadcast "&eチーム分けが完了しました"
というコードを書いたのですがなぜか均等にならずほぼ毎回赤チームが3人か二人になってしまい均等にならないのですが解決方法わかるかたいらっしゃいますか? 環境はPaper1.16.5 skript2.5.3 Skellett v2.0.10 skRayFall v1.9.28 SkQuery v4.1.10 です
7 Replies
mirageeeeeeeeeeeeeeeeeeeeeeeeeee
赤チームの人数に対して青チームは何人になっていますか?
PAKOM
PAKOMOP5d ago
全体の人数が8人の時は赤チームが2人で青チームが6人でした
tanoKun
tanoKun5d ago
普通に重複してんでしょ かなりコード変えるから見てほしいんだけど
command /randomteam:
permission: sk.admin
permission message: &cYou don't have permission.
trigger:
set {_candidatedPlayers::*} to shuffled all players
set {_amountOfOneTeamPlayer} to size of {_candidatedPlayers::*} / 2

wait 1 tick

loop {_amountOfOneTeamPlayer} times:
add {_candidatedPlayers::%loop-number%} to {_redTeam::*}
remove {_redTeam::*} from {_candidatedPlayers::*}

set {_blueTeam::*} to {_candidatedPlayers::*}

send "%{_redTeam::*}%"
send "%{_blueTeam::*}%"

broadcast "&eチーム分けが完了しました"
command /randomteam:
permission: sk.admin
permission message: &cYou don't have permission.
trigger:
set {_candidatedPlayers::*} to shuffled all players
set {_amountOfOneTeamPlayer} to size of {_candidatedPlayers::*} / 2

wait 1 tick

loop {_amountOfOneTeamPlayer} times:
add {_candidatedPlayers::%loop-number%} to {_redTeam::*}
remove {_redTeam::*} from {_candidatedPlayers::*}

set {_blueTeam::*} to {_candidatedPlayers::*}

send "%{_redTeam::*}%"
send "%{_blueTeam::*}%"

broadcast "&eチーム分けが完了しました"
はいこれでどうですかね やってることはほとんど一緒っすね たぶん set {tempred} to random object out of {tempredteam::*} を リストからランダムで取り出すから、選ばれたものは{tempredteam::*}から 消えるって考えたっぽいけど これ実際は消えないんだよね だから、重複して取り出されてる @PAKOM 修正ポイントのおすすめとして、宣伝したいです! https://discord.com/channels/545926404785569793/1306069692540260494/1306069692540260494 これ見てください
tanoKun
tanoKun5d ago
これの解説として 1~2行目は、この写真にある通りすべてのプレイヤーをshuffleしたリスト変数を作ります
No description
tanoKun
tanoKun5d ago
loop {_amountOfOneTeamPlayer} times:
add {_candidatedPlayers::%loop-number%} to {_redTeam::*}
remove {_redTeam::*} from {_candidatedPlayers::*}
loop {_amountOfOneTeamPlayer} times:
add {_candidatedPlayers::%loop-number%} to {_redTeam::*}
remove {_redTeam::*} from {_candidatedPlayers::*}
の部分で人数の半分だけを取り出して、赤チームに入れます。 図では青くなってる部分ですね remove {_redTeam::*} from {_candidatedPlayers::*}することで、残りの人をあぶりだします。 あとは残った人を青にすれば完成です
tanoKun
tanoKun5d ago
No description
PAKOM
PAKOMOP5d ago
なるほど。。。 ランダムで選択したらてっきり削除されるものかとかってに持ってましたが消えないんですね、、、 ありがとうございます!試してみます! 無事成功しました! ありがとうございました!
Want results from more Discord servers?
Add your server