top10ランキングをつくりたい

リスト変数内の数値をUUIDと紐づけたまま降順に並び替えたい
20 Replies
ふぁたおくん
command /ranking:
permission: *
trigger:
set {_sorted::*} to sorted {Catching::Hit::Success::*}
loop {Catching::Hit::Success::*}:
set {_reversed::%loop-index%} to last element of {_sorted::*}
remove {_sorted::%loop-index%} from {_sorted::*}

command /top10:
permission: *
trigger:
if {BugRankingLoc} is set:
delete holo {BugHolo}
set {BugHolo} to new hologram at {BugRankingLoc}
add text "&6&l===&a&l虫取りランキング&6&l====" to holo {BugHolo} in line 0
loop {Reversed::*}:
add 1 to {_rank}
set {_num} to {Reversed::%loop-index%}
set {_player} to loop-index parsed as player
add text "&7%{_player}% - %{_num}%回" to holo {BugHolo} in line {_rank}
if {_rank} > 9:
stop
add text "&6&l========================" to holo {BugHolo} in line {_rank} + 1
else:
send "&cホログラムを表示する座標が設定されていません。"
command /ranking:
permission: *
trigger:
set {_sorted::*} to sorted {Catching::Hit::Success::*}
loop {Catching::Hit::Success::*}:
set {_reversed::%loop-index%} to last element of {_sorted::*}
remove {_sorted::%loop-index%} from {_sorted::*}

command /top10:
permission: *
trigger:
if {BugRankingLoc} is set:
delete holo {BugHolo}
set {BugHolo} to new hologram at {BugRankingLoc}
add text "&6&l===&a&l虫取りランキング&6&l====" to holo {BugHolo} in line 0
loop {Reversed::*}:
add 1 to {_rank}
set {_num} to {Reversed::%loop-index%}
set {_player} to loop-index parsed as player
add text "&7%{_player}% - %{_num}%回" to holo {BugHolo} in line {_rank}
if {_rank} > 9:
stop
add text "&6&l========================" to holo {BugHolo} in line {_rank} + 1
else:
send "&cホログラムを表示する座標が設定されていません。"
2人でテストしてみたら両者2回から動かなくなりました
mirageeeeeeeeeeeeeeeeeeeeeeeeeee
rankingコマンドどうなってるんやこれ なにも意味成して無くないか
ふぁたおくん
とおもいます ネットで調べて海外の人が書いてたんでとりあえずパクってみたやつ
yukkina
yukkina10mo ago
これって どういう変数構造してるの? {hoge::%uuid%}→数値 じゃ無さそうだよね いや合ってるか
akon
akon10mo ago
ぼくは値が更新されるたびに自動的に並び替えられるような仕組みをつくるべきだと思います じゃないとランキングを取得するたびに毎回並び替え処理が発生します
yukkina
yukkina10mo ago
sortすればいいな?
akon
akon10mo ago
おそらくsort使わずに自前で実装したほうがいい 減ったら自分より下の奴と値を比較する
yukkina
yukkina10mo ago
スマホで打ってみてるけど あー
akon
akon10mo ago
増えたら自分より上と比較
yukkina
yukkina10mo ago
それありだな 毎回並び替え実装のつもりで書いてたわ 並び替え実装重いかな 重いわな
ふぁたおくん
虫取りっていう要素があって、虫捕ったら{Catching::Hit::Success::%uuid of player%}に1加算される からへることはないとおもいます
akon
akon10mo ago
とりあえず加算用の関数を作っておいて変数変えるときは全部そっからやる その中で並び替えを行うようにしましょう
ふぁたおくん
しばらく考えてみたけど全体を並び替えるものしか思いつかなかった
akon
akon10mo ago
nandeya
ふぁたおくん
減ったら自分より下だったものより減ったか、増えたら自分より上だったものより増えたか けんちするのって どうする
akon
akon10mo ago
そもそも常に順番が保持されるようにしておく そのうえで更新時に順番も一緒に更新する
ふぁたおくん
1位はこの人で〇回、2位はこの人で〇回って保持しといて それを どーすん
akon
akon10mo ago
2位を更新するときに自分より上のやつ全員と更新後の値を比較して順位を変える
unnnnnnnnnnn
unnnnnnnnnnn10mo ago
わからなかったらpriority queueで検索
akon
akon10mo ago
記録の変数自体はindexが数字のリスト変数に格納しておいて それとは別にプレイヤーから順位を取得できるリスト変数も作っておく(その逆も) 記録にアクセスするには順位を取得してから記録の変数から取り出す 記録更新時には順位を取得して自分より上の順位の記録と比較 順位が入れ替わる場所だけ更新 もう少し改善すれば多分比較回数減らせる まぁskriptでツリー構造とかめんどくさいからこれで十分でしょ
Want results from more Discord servers?
Add your server
More Posts
Discord BOT開発に推奨されるアドオンvixio?DiSky? フォーラム機能弄るのがメイン(post/edit) 私は過去にvixioを使ったことがあるんだけど、正直もう覚えてないので新しいアドオンでもいいなと。 今のトレンドというか、make shootで出したアーマースタンドをカスタマイズしたい``` make player shoot an armor stand at speed 1 set {_e} to last spawned entity add "{Invisible:1b,Aダメージeffectについてskript 最新 ```damage player by 15``` 初心者からの質問です(_-) ダメージは基本これで与えてるのですが、これだとプレイヤーが攻撃した判定にならないですよね。プレvector lengthについてちょっとした質問わりと初歩的な質問なんですが vector(矢印)の先っぽの座標をとるとき set {_loc} to {vectorの開始地点の座標} ~ {_vector} でやると思うんですが  {_ve数字からその数字に該当するブロックのrawnameを取得したい半ブロックの件と同じ動画 https://www.youtube.com/watch?v=vbZPv5aW9SQ&ab_channel=Air 1:39~ //gmask <block> を実行したSkellettのLib's Disguise構文SkriptでLib's Disguiseの構文がSkellettにあるのですが 使おうとするとエラーが出ます Skellettのバージョンは1.9.11、Skriptのバージョンは2.6.3です二つ重なった半ブロックを片方だけ壊したいhttps://www.youtube.com/watch?v=vbZPv5aW9SQ&ab_channel=Air 0:58~ double slab を壊したときに、ブロックの上の方を壊したらb条件を満たしていない場合のクラフトキャンセル以下のコードを入力しています。確かに機能自体はするのですが、シフトと右クリックで回収してしまうと、アイテムがクラフトできてしまう不具合が発生します。どなたかご教授いただきたいです。 ``` on cチャットのクリックアクションに変数を使用したいここに載ってる`<suggest command:parameter>`に 変数を代入したいのですがもし変数を入れると画像のように普通にチャットに出てしまいます 解決方法を教えてください ログは特に出パーティクルを出す位置タバコから煙出したいのでプレイヤーの少し前にパーティクルを出したいのです