« 何もしないで寝てた | メイン | Dragonkin »

2005年03月31日

SavedVariables.luaの編集でエラーが発生

色々苦労したので忘れないようにメモ。
もし試してみる場合は必ず自己責任でお願いします、何かあっても責任は取れません。
最低限SavedVariables.luaのバックアップは取ることをお勧めします。

また、Windowsについているメモ帳だと上手く編集できません。
多分開いた時点で改行コードがおかしいはず。
いわゆる高機能エディタの使用をお勧めします。

これ、実は常識とかだったら恥ずかしいなぁ。


始めに


World of Warcraftでは、AddOnの設定値等はSavedVariables.luaという名前のファイルに格納されます。

手動で設定値を変更したい場合はテキストエディタなどを使って内容を更新する必要がありますが、使用しているAddOnによってはエラーになる条件があるようです。

僕の場合はQuestHistoryが原因でエラーが発生しました。

SavedVariables.luaの編集について日本語で解説しているサイトが発見できなかったので、色々調べてみました。


改行コード


まずはSavedVariables.lua編集後の文字コード、もしくは改行コードに原因があるのかと思い色々試してみました。

当初は文字コード'Shift_JIS'、改行コード'CR+LF'でやっていたのですが、この設定だとログイン時にエラーが出力されます。

何パターンか試したところ、文字コード'EUC'で改行コード'CR'ならログイン時のエラーを回避する事ができました。

この時はこれで問題が解決したと思っていたのですが、ログアウト後に再度SavedVariables.luaを編集したところ、またログイン時にエラーが発生しました。
今度は先ほどとは違う部分で問題が発生しているようです。


Lua言語とSavedVariables.lua


World of WarcraftのAddOnは、ブラジルで開発されたLua言語で記述されています。
Luaとは「月」を意味するポルトガル語で、ルアと発音します。

Luaのリファレンスに目を通し、エラーを出したSavedVariables.luaを調べたところ、QuestHistory設定値の["description"]の内容に異常を見つけました。
修正前のSavedVariables.luaでは'\改行'だったものが、修正後にはただの'改行'に変わっていました。

Luaの仕様では文字列には一般的なエスケープシークエンス以外に'\改行'(バックスラッシュ+改行)が許可されているので'\改行'に問題はありませんが、どうにも'改行'に変わってしまった原因が判りません。
編集作業に失敗したのかと思い、バックアップしていたSavedVariables.luaを再度修正してWoWを再起動した所、今度は正常に動作しました。

しかし、念のためにと思ってSavedVariables.luaを再度確認したところ、先ほど'\改行'だった部分が全て'改行'に変わっていました。

どうやら修正内容に問題があるため、WoWがSavedVariables.luaを更新する際に情報が壊れてしまっているようです。


二つの改行コード


色々試行錯誤の結果、'\改行'の部分を全て'\n'(バックスラッシュ+半角小文字のn)に変換することで、WoWがSavedVariables.luaを更新しても問題が無くなることがわかりました。
また、更新後には'\n'だった部分は全て'\改行'に変わっていました。

Luaの仕様ではどちらも同じ扱いをするはずなのですが、なぜこうなるかは判りません。

'\改行'をちまちま更新するのは大変だったので、使用しているテキストエディタの置換機能を使用しました。
正規表現で \\\n を \\n に置換しています。

また、このとき文字コードは'EUC'で改行コードは'CR'を指定していましたが、改行コードは'LF'や'CR+LF'でも問題ないかもしれません。
面倒だったので調べていませんが、機会があったら試してみようと思います。

最後に、バックスラッシュと表現した部分がありますが、いわゆる半角円記号のことだと思ってください。

投稿者 Misk : 2005年03月31日 22:18

トラックバック

このエントリーのトラックバックURL:
http://www.miskdou.com/cgi-bin/mt/mt-tb.cgi/295

コメント

コメントしてください




保存しますか?