#タイマーを作ってみる。
command /timer <text> [<int>]:
trigger:
if arg-1 is "start":
if arg-2 is set:
set {timer.time} to arg-2
set {timer.status} to true
stop
else:
set {timer.time} to 500
set {timer.status} to true
stop
if arg-1 is "set":
if arg-2 is set:
set {timer.time} to arg-2
send "&5タイマーの時間を%arg-2%に変えました。" to player
stop
else:
send "&c時間を指定してください。" to player
stop
stop
every seconds:
if {timer.status} is true:
loop all players:
set action bar of loop-player to "残り時間 : %{timer.time}% 秒"
remove 1 from {timer.time}
それでは少しずつ説明しましょう。
まず変数の紹介です。
{timer.status} == タイマーの状態(True/False)
{timer.time} ==== タイマーの時間
#argumentを無視してみる・・・
まずコマンドです。
command /timer <text> [<int>]:
このコードは初めて見るのではないでしょうか?
これはargumentを2つ用意して、2個目のargumentを[]
で囲んだものになります。
[]
で囲むと何ができるのかといいますと、
コマンドのargumentを無視できるのです。
???
となった方が多いのではないでしょうか?
わたくしもそうなっていますww
まあ、これに関してはコマンド実行時の書き方を見てもらえばわかると思います。
/tp A B
と実行するとAの場所にBが行くというコマンドですよね?
ですが、/tp A
と実行すれば、実行したプレイヤーがAの場所に行くというコマンドです。
すると、argumentは2つの時と1つの時があるわけです。
ですが、カスタムコマンドを作るときに<~~~>
だけで書いているとargumentを用意した分、argumentを書かないと「実行できませんよ」というシステムエラーを吐くと思います。
ですが、そのargumentを[]
で囲んであげると、囲んだargumentをなかったものと扱ってもあるものと扱ってもいいようになるんです。
※argumentは常に左から順に1、2、3、4、5・・・・となっています。
/timer start
コマンド・・・
=======================
if arg-2 is set:
set {timer.time} to arg-2
set {timer.status} to true
stop
else:
set {timer.time} to 500
set {timer.status} to true
stop
=======================
まあ、これはもし、arg-2
が埋まっていればそれを開始時のタイマー時間にセット、埋まっていなければ開始時のタイマー時間を500秒にセットするというコードですね。
/timer set
コマンド・・・
=======================
if arg-2 is set:
set {timer.time} to arg-2
send "&5タイマーの時間を%arg-2%に変えました。" to player
stop
else:
send "&c時間を指定してください。" to player
stop
stop
=======================
これはタイマー時間を途中変更できるものです。
このコマンド、タイマー実行中じゃなくても実行可能ですが、タイマー開始時に時間を変更する必要があるので使っても意味がないといったことになります。
これに関しては少し弄っただけでどうにかできますが、
このコードを見て、何をしてるんだい?となってる方(汚いコードだな・・・とか以外)は、たぶんどうしようもないかと・・・
#最後に・・・
これまでのページを見てきた人は、「あれ?Loop
でやったらだめなの?なんでevery seconds
なの?」と思ってる方がいるかもしれません。
まあ、every seconds
なのは俺の好み。
while
とかでも問題ない・・・
でもLoop
はおやめなさい・・・w
詳しくはまたの機会に・・・
次はコチラ
前はコチラ