バージョンチェック

虚空に吠えろ!負け犬の遠吠え!! 過去オリスクEP4対応のコメント欄より。

あ、あとそろそろバージョンチェック命令も入れてはどうでしょうか?
Nscripter最新版はエフェクトスキップ機能がついてしまってシステム若干挙動がちがっています。
この機能は追加された命令でオン・オフ可能ですが、
以前のバージョンではこの命令は存在しません。
スタータキットで組んでる人とプレイする人のNscrioterのバージョン違いでエラーが起こらないような対策もしてあるとさらにハードルが下がると思います

ざらし | URL | 2009年03月23日(Mon)07:21

あー、なるほどねえ。
と、言う訳で作ってみた。

define節game前

mov %0,100 ; 環境に合わせて変えること。
numalias version_num,%0:inc %0 ; getversion 専用の変数
numalias effectskip_input,%0:inc %0
numalias effectskip_status,%0:inc %0
numalias effectskip_version,291

defsub effectskip
defsub get_effectskip

define節game後

*effectskip
getparam %effectskip_input
getversion %version_num
if %version_num<effectskip_version return
_effectskip %effectskip_input
if %effectskip_input=1 mov %effectskip_status,1
if %effectskip_input=0 mov %effectskip_status,-1
return

*get_effectskip
getparam i%effectskip_input
mov %%effectskip_input,1
getversion %version_num
if %version_num<effectskip_version return
if %effectskip_status=0 mov %effectskip_status,1
if %effectskip_status=1 return
mov %%effectskip_input,0
return

説明!

このライブラリを導入すると、2点の変更が行われる。

  1. effectskipにバージョンチェック機能がついて、古いバージョンで実行してもエラーは起こさなくなる。
  2. 現在の状態を取得するget_effectskip命令を追加する。
get_effectskip %0
; %0に、0か1が入る。
; 古いバージョンのNScripterで実行すると、常に1が返される。

問題!

  • effectskipが追加されたのって、ver.2.90でよかったっけ? 2.90にしてるけど、間違えてたらどうしよう。
  • getversion命令を使っているので、ver.2.48未満のNScripterではこのライブラリ自体が動きませーん。げふん。

追記

オリスクの話(6)NScripterのことはNScripterにまかせる。 - 永字八法

effectskipが導入されたのはver.2.91からです。

修正いたしました。ご指摘ありがとうございました。