【ウディタ2.02a】DB文字列の不具合対処法+α

2013-03-17 追記しました

シナリオフラグ管理コモンの新バージョンを出しました。
こんどは文字列条件に対応しています。「主人公の名前がNPCと被ったとき限定のイベント」も簡単になりましたよ!
詳しい説明はコモン内にみっちり書いてありますのでここでは省略します
(ご質問等あればこちらにでもコメントいただけましたら幸いです)

さて、このコモン用の新しいデータベースはこちらです
シナリオ管理DB

「条件」のところが文字列変数になっていますが、ここに数字を入れてもかまわないという仕様です。
例えば「条件」に\cdb[0:0:5](主人公0のレベル)、「閾値」に5を入れて、「以上/以下」を1(以上)にすると、
「主人公0のレベルが5以上のとき」という条件で判断できるわけです。
数字か文字かはアレコレゴニョゴニョして、判別できるからいいとして…

問題は、ウディタ2.02でのDBの仕様
「特殊文字列を含む文字列をDBから呼び出すと正常に表示されない」でした。
正確に言うと、2.02a以前はDBの文字列に特殊文字列がくっついてしまっているらしいのですが…
(2.10では修正されている模様です)

廿面骰子でいうと、アイテム名の後ろについてしまうコレですね(おそらくたぶん)
(進行に支障がないので特に修正しない予定ですが)
ten.jpg

これの何が厄介かというと、
「文字列の数字化機能」(公式マニュアル、「変数操作」の一番下)が上手く使えなくなる ということです。
特殊文字列のついた文字列を数字化しても常に0になってしまうというわけですね。これは困った。

今回はこれがなきゃ始まらないので苦労しましたが、見つけた対処法は実に簡単でした。
「DBからコモン内の文字列変数に読み込む」→「別の文字列変数に移す」→「戻す」
つまり、読み込んだままでは特殊文字列がくっついたままですが、
一旦他の文字列変数に移すことで特殊文字列が外れるみたいです。

今までの苦労はなんだったのだー、ってくらい簡単でした。ハイ。
DBから読んできた文字列が上手く表示されなくてお困りの方は、ぜひお試しください。



追記:移し替えなくても特殊文字列を外せるのか
結論から言うと、できます!

拍手コメでご質問がありましたので実験してみました。
引っ張ってくる数は基本システムの「主人公0のレベル限界値」です。外せてたら99、そうでなければ0が入るはずです。
デバッグ文を右の画像のように挟んでおきます。
引数はコレデバッグ文

まずこのまんま実行してみましょう。
試行1
読み込み時点では特殊文字列を外せていなくて、0になっていますね。

次に、「文字列操作」で自分に代入する処理を最初のデバッグ文の前にはさんでみます。
挟んでみます

できたー!
ちゃんと99になっていますね!
試行2

自己代入でも特殊文字列が外れるので、貴重な文字列変数を消費せずに済みますね。
ご質問ありがとうどざいました!
関連記事
スポンサーサイト

Comment

Comment Form
公開設定

Trackback


→ この記事にトラックバックする(FC2ブログユーザー)
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。