コメント

このコメントは、【トピック】鍵が必要へのコメントです。

コメントの内容

Icon mini cdv30200(投稿日:2017/04/19 22:04/19/17)
鍵を使う方のスクリプトです。
鍵を使って開ける扉のイベントのスクリプトを書きました。

有効条件
!getFlag("扉が開いた")

イベント実行内容
  a = getItemIndexWithId(000) #000にはアイテムIDが入ります

 if a == -1
  #鍵を持っていない
  speak("鍵がないと、この扉は開かない。")
 else
  #鍵を持っている
  speak("扉が開いた。")
  speak("使った鍵は壊れた。")
  removeItemWithIndex(a)
  setFlag("扉が開いた", true)
 end

スクリプトが長くなって見にくいので、1行目で getItemIndexWithId(000)をaとします。

getItemIndexWithId関数は、IDで指定した所持アイテムのインデックス(何番目に持っているか)を取得します。
アイテムは最大32個持てるのでaには0〜31が入ります。
(例えば、鍵がアイテム欄の1番上にあれば「0」、5番目にあれば「4」がaに入ります。なんでか知りませんが)
なのでaが「-1」だとアイテム欄のどこにもない、つまり持っていないという事になります。

10行目で、持っている鍵を消去する removeItemWithIndex関数を使います。

ーー補足ーー
これだと、イベント実行内容が全部終わってから扉のイベントが消えます。
「扉が開いた。」のセリフと同時に扉のイベントを消したい場合は、mugaさんのように
warpEvent関数で表示マップの外へすっ飛ばせば良いです。

コメントの内容(一番最初の投稿)

Icon mini cdv30200(投稿日:2017/04/19 22:04/19/17)
鍵を使う方のスクリプトです。
鍵を使って開ける扉のイベントのスクリプトを書きました。

getItemIndexWithId関数removeItemWithIndex関数を使います

有効条件
!getFlag("扉が開いた")

イベント実行内容
  a = getItemIndexWithId(000) #000にはアイテムIDが入ります

 if a == -1
  #鍵を持っていない
  speak("鍵がないと、この扉は開かない。")
 else
  #鍵を持っている
  speak("扉が開いた。")
  speak("使った鍵は壊れた。")
  removeItemWithIndex(a)
  setFlag("扉が開いた", true)
 end

スクリプトが長くなって見にくいので、1行目で getItemIndexWithId(000)をaとします。

getItemIndexWithId関数は、IDで指定した所持アイテムのインデックス(何番目に持っているか)を取得します。
アイテムは最大32個持てるのでaには0〜31が入ります。
(例えば、鍵がアイテム欄の1番上にあれば「0」、5番目にあれば「4」がaに入ります。なんでか知りませんが)
なのでaが「-1」だとアイテム欄のどこにもない、つまり持っていないという事になります。

10行目で、持っている鍵を消去する removeItemWithIndex関数を使います。

ーー補足ーー
これだと、イベント実行内容が全部終わってから扉のイベントが消えます。
「扉が開いた。」のセリフと同時に扉のイベントを消したい場合は、mugaさんのように
warpEvent関数で表示マップの外へすっ飛ばせば良いです。