#Loopについて・・・
Loopというのは、簡単に説明すればループするという意味ですww
まあ、さきに例文を書いてみましょう。
loop all players:
これですべてのプレイヤーをLoopします。
とはいえ、これにはイベントがないので動きません。
on join:
loop all players:
send "&e%player%さんがサーバーに来ちゃった・・・w" to loop-player
はい。
これで動きます。
以前書いたのはplayer
に送信でしたが、今回はloop-player
です。
loop-player
は、loop all players:
を書いたときに使います。
先ほどのコードならbroadcast
と同じ働きをすることになりますので、いちいち書くのは馬鹿らしいですよね・・・
正しい使い方?じゃないというのが事実です。
on join:
loop all players:
loop-player do not have permission "skript.admin"
send "&e%player% さんがサーバーに来たぞ!!" to loop-player
これでそのパーミッションを持っていない人がきたらメッセージを送信、持っていたらなにも起きなくなります。
#カスタムコマンドについて・・・
command /任意のコマンド:
description:
usage:
permission:
permission message:
executable by:
aliases:
trigger:
まず、/test
というコマンドが作りたいなら、
1行目はcommand /test:
としてください。
2行目のdescription:
はMinecraftに元からある/help
コマンド実行時に表示される説明を書きます。
3行目のusage:
はコマンドの使い方である/test
を書きます。
4行目のpermission:
はそのコマンドを使うために必要な権限(パーミッション)を書きます。
5行目のpermission message:
はその権限を持っていないプレイヤーが使った場合に返すメッセージです。
6行目のexecutable by:
はコマンドを実行できる環境を書きます。例えば、コンソールとプレイヤーのチャットから実行できるようにするにはexecutable by: player and console
と書くことになります。
7行目のaliases:
はコマンドの省略形式を書きます。/ts
など
そしてもっとも重要な8行目のtrigger:
ですが・・・・
ここまで説明したが、
command /test:
trigger:
で、構いません。
あ、これだと一般のプレイヤーも使えるのでpermission
だけでも書いてるほうがいいかもしれませんね・・・
※permissionを設定していてもOP権限を持っていると関係なしに使える場合があるので注意
command /test:
trigger:
send "test" to player
これでコマンドを実行すると「test」と表示されます。
では鯖に実用的なコマンドを作ってみましょう。
command /close:
permission: skript.admin
trigger:
execute console command "/whitelist on"
loop all players:
loop-player is not an op
kick the loop-player due to "サーバーが非公開になりました"
send "サーバーを非公開にしました" to player
また、新しいものがいくつか出てきましたね。
まず、1~3行目は記述済みなので4行目から解説していきます。
4行目のexecute console command "/whitelist on"
ですが、これはコンソールで指定したコマンドを実行するというものです。
これでサーバーのホワリスがオンになります。
5行目でこのページの1番最初に書いたLoopが出てきましたね。
6行目のif loop-player is not an op:
はloop-player
がOPじゃなかったらという条件になります。
7行目のkick the loop-player due to "サーバーが非公開になりました"
でloop-player
をキックできます。また、キックの理由も指定できます。
8行目は・・・わかるねw
中には気づいた方もいるかもですが、OP権限者=permission所持者は成立しても、permission所持者=OP権限者は成立しないのです。
ということは、これだと実行者がキックされてもおかしくありませんね。
ではその対策を書きましょう。
command /close:
permission: skript.admin
trigger:
execute console command "/whitelist on"
loop all players:
loop-player is not an op
loop-player is not player
kick the loop-player due to "サーバーが非公開になりました"
send "サーバーを非公開にしました" to player
loop-player
の条件にif loop-player is not player:
を付けたしただけです。
loop-player
はplayer
とは違いまっせてね。
最後の対策ははっきり言っていりませんw
次はコチラ
前はコチラ