LoginSignup
3
3

【丁寧に解説】Skriptをはじめよう 0:Skriptとは

Last updated at Posted at 2024-02-10

このシリーズで解説している Skript は、script の誤字ではなく 全くの別物 です。
あらかじめご理解ください。

この記事はマインクラフトのプラグインである Skript の解説記事ですが、筆者はこのプラグインを触り始めたばかりなので間違った記述がある可能性があります。また、質問に必ず回答できるとは限りません。以上を踏まえたうえでこの記事をお読みください。

【次回】

はじめに

皆さんこんにちは、ろぐと申します。
最近マイクラサーバー運営を始めたのですが、独自の要素をサーバーに追加するにはやっぱりプラグインの開発が必須なんですよね。
しかし、本格的にプラグインを開発するには Java や IDE の知識が必要など少々ハードルが高い...。
プログラミング初心者でも気軽にプラグインみたいなことができるものってないかなぁ...とネットの海を漂い続け、このプラグインにたどり着きました。

もう知っている方もいるかもしれませんが、Skript というプラグインは誰でも簡単にプラグインのような機能を作成できるプラグインです!
本格的な開発環境を整える必要がなく、知識がない人でも簡単にプラグイン(のようなもの)を作れる...。そんな夢のような能力を持っているのがこのプラグインなのです。

しかし...

Skript について説明している日本語の記事が少ない!!!

結構重大な問題ですよね...。英語の記事は充実しているんですが、日本語の記事となるとそれはもう数えるほどしかなくて。
おまけに記事の内容が古いものが多く、最新のバージョンだと動作しないことがあるのも困ったところ。
そこで「じゃあ自分で記事を書けばええやん!」となり、現在に至ります...w

前置きが長くなってしまいましたが、次からいよいよ Skript について説明していきます。
なるべく分かりやすいように説明していくつもりですので(むしろそうしないと自分が分からなくなる)是非参考にしてください!

特に断りのない限り、これ以降の記事ではOSは Windows 11 Home、サーバーは PaperMC のバージョン 1.20.4、Skript はバージョン 2.8.6 を使用するものとします。(現時点での最新版)この環境以外での動作は保証できません。
また、このシリーズでは初心者の方にも分かりやすいように砕けた表現を用いたり、一部要素を本来の意味とは異なるものとして説明している箇所があります。

1.Skript ってなんぞや

「そもそも Skript って何?何ができるの?」という方もいらっしゃると思います。先ほども書きましたが、超簡単に説明すると

本格的な開発なしでプラグイン(のようなもの)を作れる!

というものです。本当の意味でのプラグインではないので大規模なシステム開発には不向きですが、それでも気軽にプラグインのような機能を実装できるというのは超魅力的!
さらに、このプラグインにはアドオンというものがあり(Skript の機能を拡張できるもの)これを使えばできることがほぼ無限に広がっちゃうんです!

...なんだか Skript の回し者みたいになってしまいましたが、それだけこのプラグインはできることが多いんです!さらに具体的にできることを書き出してみると

・ログイン時やログアウト時のメッセージをカスタマイズできる!
・自分だけのオリジナルコマンドを作れる!
・Mobの挙動やブロックの設置、破壊などを細かく制御できる!

などのことができます。特に自分だけのオリジナルコマンドを作れる、というのはかなり魅力的なのではないでしょうか?
本当は他にもたくさんのことができるのですが、あまりに膨大すぎるのでそれを紹介するのは追々...。

2.Skript に触れる

では、早速 Skript をダウンロードしていきましょう!まずダウンロードしないと何も始まらないですからね...。

1.こちらにアクセスします。(Skript の公式ホームページです)
※GitHubからもダウンロードできますが、慣れていないと難しいです。
2.右側の「Skript is loaded by default...」と書いてある場所の、一番上にあるやつをクリックします。(ずらっと Skript X.X.X みたいなのが並んでいると思いますが、一番上にあるものが最新版です
※名前に「beta」と書いてあるものは開発段階のものなので、避けるようにしましょう!
3.ダウンロードが自動で始まります。
4.ダウンロードした Skript-X.X.X.jar ファイルを、サーバーの「plugins」フォルダに移動させます。
※ダウンロードしたバージョンが 2.8.4 以下だった場合、ファイル名は Skript.jar です。
5.サーバーを一度起動もしくは再起動し、「plugins」フォルダの中に「Skript」フォルダが生成されたのを確認できたら導入は完了です!

他のプラグインと導入方法は全く変わりません!ただ、ダウンロードは公式ホームページから行う必要がある点には注意してください。

Q:Bukkit とか SpigotMC とかからダウンロードできないの?

A:最新版はダウンロードできません。
Bukkit にもないことはないのですが、2014年を最後に更新が停止しています。Skript の開発者ではないので詳しいことは分かりませんが、Bukkit の開発終了に合わせて開発拠点を移動させたようです。

導入が完了したら、「Skript」フォルダ → 「scripts」フォルダと進んでください。
その中に「-examples」というフォルダがあると思います。中を覗いてみると...

.sk の拡張子がついているファイルがたくさん!

実は、この .sk のついているファイルこそこのプラグインの核と言ってもいいもので、このファイルにコーディング(実行する内容を書くこと)することによって、自分だけの要素を生み出せるんです!

試しに events.sk ファイルを開いてみると(ふつうのメモ帳で大丈夫です)

events.sk
#
# This example listens for players joining and leaving.
# Alters the default message when they do.
#

on join:
    set the join message to "Oh look, %player% joined! :)"

on quit:
    set the quit message to "Oh no, %player% left! :("

#
# This example cancels damage for players if they have a specific permission.
# If they don't, tell them how much damage they took.
#

on damage:
    victim is a player
    if the victim has permission "skript.example.damage":
        cancel the event # Stops the default behaviour - the victim taking damage.
    else:
        send "Ouch! You took %damage% damage." to the victim
        add damage to {damage::%uuid of victim%::taken}
        if the attacker is a player:
            add damage to {damage::%uuid of attacker%::dealt}

(うんたらかんたら...)

上記のように、コーディングしたもの(実行する内容を書いたもの)をスクリプトと呼びます。
うへぇ...なんじゃこりゃ... と思った人は自分だけではないはず...。
でも、よ~く見てください。例えば、上に書いてある

on join:
    set the join message to "Oh look, %player% joined! :)"

という部分を日本語訳してみると...

参加した時:
    設定する 参加メッセージを "見ろよ、%player% が参加したぞ!:)"

となります。
参加メッセージとは、プレイヤーがサーバーに参加した時に出るメッセージのことです。デフォルトだと

「○○がゲームに参加しました」

だと思いますが、上記の部分のスクリプトはこれを変更するものだったというわけです!
すると

on quit:
    set the quit message to "Oh no, %player% left! :("

も、「サーバーから退出した時のメッセージを変更するやつなんだなぁ」と分かってきます。

このように、一見 Skript のスクリプトは難しく見えますが、その本質は誰でも読み書きできるレベルの英文です。
どうですか?何だか作れる気がしてきませんか?

さっきから Skript とスクリプトが交互に出てきてややこしいですが、両者は明確に異なるものです。
Skript はプラグインそのもののことを、
スクリプトはコーディングした文章のこと.sk ファイルの中身)を指します。
「Skript のスクリプトを書く」といった使い方です。
(とはいえ、記事によっては別の呼び方をしていることもあります。お手数ですがこのあたりは臨機応変にお願いします!)

「スクリプトを書く」「コーディングする」「ソースコードを書く」「プログラムコードを書く」は、このシリーズではすべて同じ意味です。

3.フォルダやファイルのハイフンについて

「なるほど!さっきのは参加メッセージを変えるやつだったのか!早速サーバーにログインしてみよう!」と、意気揚々とログインした人もいるかと思います。(自分もそうでした)
しかし、いざログインしてみると

「あれ?メッセージ変わってない...。バグった?」

そうなんです。スクリプトに書いてあったから変わるのかと思いきや、メッセージは変わらず元のままなんです...。
ここで、勘のいい方なら気づいたかと思いますが

「そういえば『-examples』ってフォルダ、なんでハイフンが最初に...?」

実は .sk ファイルは、名前のはじめに -(ハイフン)が付けられたフォルダの中に入っていたり、そもそも .sk ファイルの名前のはじめにハイフンが付いていると無効化されるという特徴があります。例えば

・「-test」フォルダの中にある file.sk
・「test」フォルダの中にある -file.sk
・「-test」フォルダの中にある -file.sk

これらはすべて無効化されます。無効化されたスクリプトは読み込まれません。
先ほどの events.sk ファイルも「-examples」フォルダの中に入っていたので読み込まれなかった、というわけです!
event.sk ファイルを「scripts」フォルダに移動させれば(つまり『-examples』フォルダと同じ階層に置けば)ちゃんとメッセージが変わると思います!

Q:on join: ~ スクリプトの中にあった %player% って何?

A:スクリプト実行者の名前を代入するものです。
% で挟まれている playerエクスプレッション(英語表記:Expression 、変数のようなものです)といい、ここにはスクリプト実行者の名前(ID)が入ります。on join: ~ はプレイヤーが参加した時に発動するスクリプトなので実行者は参加したプレイヤーとなり、結果的にここには参加したプレイヤーの名前が代入される...ということです。
先ほど参加メッセージが変わるか確認した方は、この部分が自分の名前に変わっていることに気付いたと思います。
本来エクスプレッションはメッセージ内では使えませんが、これを % で挟むことで、メッセージ内でも使えるようになるのです。(エクスプレッションや変数、メッセージについては後の記事で詳しく解説します)

今回は以上になります。次回はスクリプト作成の前準備です!

【次回】

3
3
0

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
3
3