1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Minecraft Skript 応用編 Part.2 VoidSpawn

Last updated at Posted at 2019-05-01

#VoidSpawnとは・・・
VoidSpawnというPluginをご存知でしょうか?
単純に言えば、奈落に落ちると設定したポイントにテレポートするというものです。

それをSkriptで書いてみようと思います。

#とにかくイベントを考える・・・
まず、問題となるのはイベントです。
奈落に落ちたらというPluginは存在しません。。。

が、奈落に落ちたときのダメージを調べることは可能です。

ですが、これだと、もしDamageをキャンセルしてしまうコードを書いていたら動かない可能性が考えられます。

なので、今回は、常にプレイヤーの座標を調べてみましょう。

#じゃあ、書いてみる・・・

voidspawn.sk
every tick:
    loop all players:
        if {%loop-player's world%.voidspawn.status} is true:
            if loop-player's y-coordinate is less than 1:
                teleport loop-player to {%loop-player's world%.voidspawn.point}

command /vssk <text>:
    trigger:
        if arg-1 is "set":
            set {%player's world%.voidspawn.status} to true
            set {%player's world%.voidspawn.point} to location of player
            send "&5VoidSpawn.sk の座標を設定しました。" to player
            stop
        if arg-1 is "remove":
            delete {%player's world%.voidspawn.status}
            delete {%player's world%.voidspawn.point}
            send "&5あなたのいる世界のVoidSpawn.sk を初期設定にしました。" to player
            stop
        if arg-1 is "tp":
            if {%player's world%.voidspawn.status} is true:
                teleport player to {%player's world%.voidspawn.point} 
                stop
        else:
            send "&cそのようなコマンドは存在しません。" to player

#解説
まず主となる部分を解説していこう。

voidspawn.sk
every tick:
    loop all players:
        if {%loop-player's world%.voidspawn.status} is true:
            if loop-player's y-coordinate is less than 1:
                teleport loop-player to {%loop-player's world%.voidspawn.point}

every tickというのは1チックごとに常に起こるイベントです。
これには起こす人というのはいなく、Skript側が勝手に起こしてくれるイベントです。

loop all playersですべてのプレイヤーをループし、if {%loop-player's world%.voidspawn.status} is true:で各プレイヤーがいるワールドのVoidSpawn.skの設定(変数)がどうなっているのかを確認しています。

もし設定(変数)がTrueならばと書いているので、その場合if loop-player's y-coordinate is less than 1:で各プレイヤーのY座標をチェックします。
y-coordinateでY座標を取得できます。(yxzに変えたら同様にX座標やZ座標も取得できます。)
そしてY座標がless than 1なので1よりも小さい→0以下であれば・・・というコードになります。

あとはteleport loop-player to {%loop-player's world%.voidspawn.point}で設定した所定の位置にテレポートする・・・といったコードになるわけです。

それではVoidSpawn.skを使用するためのコマンドを解説していこう。
#まず/vssk setというコマンドについて・・・

voidspawn.sk
command /vssk <text>:
    trigger:
        if arg-1 is "set":
            set {%player's world%.voidspawn.status} to true
            set {%player's world%.voidspawn.point} to location of player
            send "&5VoidSpawn.sk の座標を設定しました。" to player
            stop
        if arg-1 is "remove":
            delete {%player's world%.voidspawn.status}
            delete {%player's world%.voidspawn.point}
            send "&5あなたのいる世界のVoidSpawn.sk を初期設定にしました。" to player
            stop
        if arg-1 is "tp":
            if {%player's world%.voidspawn.status} is true:
                teleport player to {%player's world%.voidspawn.point} 
                stop
        else:
            send "&cそのようなコマンドは存在しません。" to player

今回コマンドは/vsskというものにしました。(※意味はVoidSpawn SKript)
まずif arg-1 is "set":/vssk setというコマンドを実行したらというコードになります。
その場合{%player's world%.voidspawn.status}というそのワールドのVoidSpawnを有効かどうかを確認する際に用いる変数をset {%player's world%.voidspawn.status} to trueで有効にします。

それと同時にプレイヤーがいる座標をset {%player's world%.voidspawn.point} to location of playerで変数に保存します。
あとはメッセージを流すといった形で/vssk setの解説は終了となります。

#/vssk removeというコマンドについて・・・
これは単純に変数である{%player's world%.voidspawn.status}{%player's world%.voidspawn.point}deleteで消しただけです。
以前にもコチラでも解説した通りdelete {A}という形で変数を削除することができます。

#/vssk tpというコマンドについて・・・
if {%player's world%.voidspawn.status} is true:でプレイヤーがいる世界のVoidSpawn設定を確認します。
もし有効になっていたらteleport player to {%player's world%.voidspawn.point}でテレポートするといったコードになります。

#最後に・・・
どうでしたか?
中にはVoidSpawn(plugin)を入れたほうが速いなどと思った方もいるのでは?

まあ、それは否定しないけど、例えばクリエイティブのユーザー、OPのユーザーはVoidSpawnでTPされないようにしたいとか思ったときにSkriptができたら同じものを作れるよ・・・といったコードです。

もしかしたらもっと最善の策があったかもなんで見つけたら教えてほしいな・・・とか思ってたりしてます。

次はコチラ

前はコチラ

1
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?