変数の名前に変数を指定できない
{tempredteam}という変数の中に入っているプレイヤーIDのUUIDを指定して変数を作りたく以下のようなコードを書いたのですがエラーが出てしまいます、、、
どなたか解決策がわかる方、教えてくださると大変助かります
環境はPaper1.16.5
skript2.5.3
Skellett v2.0.10
skRayFall v1.9.28
SkQuery v4.1.10
です
47 Replies
個人的には情報十分だと思ったけどまぁなんのエラーが出るのかは教えてほしいかな
多分unknown expressionかなんかだとは思うけど
すいませんエラー書き忘れてました、、、
一応確認するんだけどtempredteamはplayer型?
具体的にはloop-playerとかplayerを突っ込んでる?
[Skript] Can't understand this condition/effect: set {team.%{tempred}'s uuid%} to "red" (stealthetreasure.sk, line 377: set {team.%{tempred}'s uuid%} to "red"')
んー
uuid of {tempred}
で動かないかな
まず個人的に思ったのは
set {_uuid} to uuid of {tempred}
みたいな感じで、無理に一行にせず分けて可読性を上げるべき{変数}'s uuidってよくエラー吐くイメージある
それはそう
そのあと、broadcastするなり何なりde
uuid が取れてるかをチェック
あとこれuuid二回
あ、コピペしてきたからイランのついてたw
なるほど,、、一度皆さんの解決策一つ一つ試してみます!
一度構文全部張ったほうがいいですよね
構文一回全部張りますねすいません情報不足で、、、
a
stringじゃねえか
一行に複数の構文詰め込んでしまうと
それがエラーを吐いたときぱっと見で何が悪いかわからないから
過剰にならない範囲で構文は分けたほうがいいよ
草
そりゃ無理だ
えっと
set {_uuid} to {tempred} parsed as player's uuid
まずstringにして追加しなくてもよくねとは思った
set {team.%{_uuid}%} to "red"
それは思ったけど
まぁ何か理由があるんでしょう...
skrayfallの影響で今まで使っていた方法が使えなく少々回りくどい方法をとることになっていまって、、
カッコを付けて可読性を上げろおじさん
:paripi: <
set {_uuid} to ({tempred} parsed as player)'s uuid
カッコを付けてクレメンスそもそもがグローバル変数だからtempならローカル変数にしろ!とか.じゃなくて::使えとかいろいろ突っ込みたい気持ちはあるけど
そこらへんは質問と関係がないので無視してもらってもいい
player単位で変数が増えることになるので
関係なくとも
::
に関しては指摘したほうがいいと思うゾローカル変数ってやはり重要なのでしょうか、、?
最近始めたばかりで分からず。。。
https://discord.com/channels/545926404785569793/1306087288308105266
ここら辺参照してもらえると
まぁローカル変数については書いてないんだけど
要するに明示的に削除するまでサーバーに一生残るからデータ容量増えてだるいよーっていう
なるほどそういうことか、、、
ありがとうございます!
エラーも無事クリアできました!!
👍
丁寧に教えてくださりありがとうございました!!
ちょttttっとまってくれ
おせっかいなおじさんからもう一個指摘させてくれ
ありがとうございます
よく見るあれなんだけど
はい
{NAME.%状況に応じて変わる部分%}
こういう命名、やめたほうがいい
今回の
{team.%loop-player's uuid%}
これもそれに該当する
https://discord.com/channels/545926404785569793/1306426957948387379/1306437821439152210
これの何に使うの?っての参照してもらえると
さっきおっしゃっていた各プレイヤーごとに情報が増えるからでしょうか?
んと
情報が増えるのはリスト変数使っても同じなんだけど
.だといちいち変数名指定しないといけないんだよね
それだと冗長だし面倒だしって感じで
その点リストだと
clear {team::*}で全部消せるから
楽だし管理しやすいしお得
あーなるほど、、、
今回の場合だと.使わずに
{tempred}という変数に登録されたIDを{redteam::}のようなリスト変数に登録して
```
loop {redteam::}:
if "%player%" contains
```
のような形で呼び起せば管理も楽だしっていうことで会っていますかね?
なぜloopが出てきたのかよくわからなかったけど まぁ今までのskriptの構造変えていいならそれがベストかも
構造変えないならそのまま{team::なんちゃら}にする形で
それなら
みたいな感じでredチーム全員出せたりする
なるほどです、、、!
全てのデータを条件分岐でチェックする場合
-
{tempred.%PLAYER UUID%}
の命名の場合
- {tempred::%PLAYER UUID%}
の命名の場合
全てのデータを消す方法
- {tempred.%PLAYER UUID%}
の命名の場合
- {tempred::%PLAYER UUID%}
の命名の場合
これ直感的にわかりやすい
この命名のせいで120万個の変数を野放しにした男だ
面構えと必死度が違う
めっちゃわかりやすい、、、
ありがとうございます!
超昔に書いたskriptのvariable.csv
今見ると汚い
気軽にリスト変数を使おう(戒め (120万敗
こちらのほうが直感的にわかりやすいですし修正もしやすいと思うのでこちらに変更してみます
大変助かりました!
これからもskript頑張りたいと思います‼
skriptはみんななぜかあきらめていって悲しいから頑張ってくれ
諦めるというかjavaのほうが楽というかなんというか...
残当