2007年09月21日

文字コード対策。

Windows版Lua5.0.2やROクライアント組込Luaは、
スクリプトの文字コードをShift_JISとして読み込みます。

1.「ー」
code.lua:
str="ー"
print("1:", string.sub(str, 1, 1))
print("2:", string.sub(str, 2, 2))
結果:
1:
2: [

「ー」は2バイト目に"["となる文字コードが割り当てられています。
string.findのパターンマッチング機能をオフにすることで解決。
以後部分文字列との一致しか行わなくなります。
例:string.find(s, pattern, 1, true)

2.「表」「ソ」etc...

命令コマンドの名前にするとエラーになる理由は、
以下のサイトに書いてある通りです。
http://www.kent-web.com/pubc/jcode/

対処方法は、エスケープ記号「\」をその文字の後に付け加える。
「表示」→「表\示」
posted by silica at 23:52| Comment(0) | TrackBack(0) | チャットコマンド | このブログの読者になる | 更新情報をチェックする

2007年09月20日

代売と「中の人がいない」人。

string.findの意外な問題点はstring.gfindで回避できればいいのですが
文字コードが原因なら難しそうです。

日記/2007-09-17 - Singing and Thinking.より。

代売計算:
require("chat.lua")
require("chat_extra.lua")
local log, err
log, err = chat:open(chat:logfile()) -- 全ログ
item = chat:have(log) -- 全ログから所持アイテム情報を拾う

ここで得られるitemテーブルが、所持アイテム情報になります。
(キーにアイテム名、値に個数)

アイテム名とOC価格を格納したテーブルを用意できれば、
「!計算開始」コマンドはすぐ実装出来るでしょう。

問題は、ROアイテムの種類が半端ないことです。

「中の人がいない」人たち:
名前をファイルに書き込むようにすれば、WIS確認したログから
自動的に名前リストを作ることができます。

これはchat:separete()関数でsyslogとして分離したテーブルから
「耳打ちを拒否にしました」を含む行を取り出してファイルに
書きこめばOKです。
ここで、問題はCR+LFなどを含む名前です。
string.gsub("\r\n", "≪CRLF≫")
string.gsub("\n", "≪LF≫")
としておくといいかもしれません。
posted by silica at 22:45| Comment(0) | TrackBack(0) | チャットコマンド | このブログの読者になる | 更新情報をチェックする

CCLバグ。

string.find()は、パターン内に「ー」が命令に入ってるとエラーになります。
つまり、「ー」を含む単語は命令語にできません。
命令語「サーチング!」「アラート!」がそれにあたります。
ただし、文字列は問題なく処理できます。
例えば、発言「サーチングしてみましょう!」はエラーになりません。

エラーメッセージ:
malformed pattern (missing `]')
「ー」の中に「[」と解釈できる文字が含まれていて、パターンを閉じる「]」が伴わないとエラーになってるっぽい?

対処方法:
エラーが出た場合、そのままではChat.txtを再度読み込むので
以下のバッチスクリプトで消さないといつまでもエラーになります。

delChat.bat:
del ..\\Chat\Chat.txt

chat_cocco.luaのうち問題になりそうな「ー」を含む
単語はコメントアウトしました。
posted by silica at 21:36| Comment(0) | TrackBack(0) | チャットコマンド | このブログの読者になる | 更新情報をチェックする

2007年09月19日

こっこAI拡張べーた版。

ver0.8で実現する予定だった他のAIを操作するスクリプトが思ったより早くできました。

こっこAI拡張を用意しました。
ステップコマンドをチャットコマンドで実行可能にする拡張です。
chat_cocco.lua

※まだ試作品です。戦闘での動作は未検証。

chat.luaにちょっとだけ変更加えることで、こっこAIでも安息命令が使えるようになりました。
ただし、問題があれば削除します。そのためこちらは公開を当分の間保留します。

チャットコマンドライブラリはAI本来の動作を尊重することを設計思想にしています。
他のAIを乗っ取るためのツールではありません。
また、数行程度追加するだけでお手軽に使えるようにしてあります。

#重力のクライアント仕様を強引に乗っ取っているのは気にしない方向でお願いします。
導入方法と使い方。
posted by silica at 21:15| Comment(0) | TrackBack(0) | チャットコマンド | このブログの読者になる | 更新情報をチェックする

2007年09月13日

組込関数しみゅれーとが出来上がった。

ROクライアント組込関数をシミュレートするスクリプトを作成しました。
RampageAIのSimulator.luaを参考にしています。

これがうまく動くようならver0.6に添付すると思います。
作るきっかけは、オフラインテストプログラムでスキル使用のシミュレートが欲しいと思ったからです。

オフラインテストプログラムを作成したら仕様が明確に、問題点を見つけやすくなりました。
テストケースから作成するというのはこういうことを言うのですねー

後の予定:
ver0.6 関数仕様決定、組込関数シミュレータ添付
ver0.7 オブジェクト情報取得添付
ver0.8 他AI操作スクリプト添付
ここまで来たらAIでやりたいことは終わりになります。

他AIについては実際に出来てから、考えていきたいと思います。
posted by silica at 22:00| Comment(0) | TrackBack(0) | チャットコマンド | このブログの読者になる | 更新情報をチェックする

2007年09月12日

現在していること。

チャットライブラリを色々変更中。
関数の流れと出入力を明確化させました。
基本の骨組みはこれでほぼ確定。
次のバージョンからは、基本関数の仕組みをほとんど変更しないと思います。
最小単位(メイン)に他の機能を順次追加していく形をとります。
今は、メイン、拡張、テストの3つです。

ver0.6はできましたが、細かい変更がいくつか入るかもしれないので
さらに数日間様子を見ます。

今考えているのはオブジェクト情報を簡単に読み取れるようにすること。
例えばイベントスイッチがもしあれば、そこまでの距離を分かりやすく表示。
敵のリストを一番近い順から表示、他の関数で選択可能に。

後は、ほかのAIで実現済みのコマンドをチャットからも操作できるように拡張すること。

このために以前作成したdiscriminator.luaをもっと使いやすく簡潔にまとめ直す予定。
posted by silica at 22:53| Comment(0) | TrackBack(0) | チャットコマンド | このブログの読者になる | 更新情報をチェックする

2007年09月10日

ホムンクルス進化。

チャットコマンドライブラリが完成した直後に、テストに使っていた
ホムンクルスが「極めて親しい」になりました。
リーフ亜種が進化してさらに派手に!

説明書書きにデバッグに簡単に使えるように修正…色々と。
後はチャットコマンドを他のAIに追加して何か出来ないか試してみたいものです。
現時点では「安息」以外の命令を作っていないので工体AIの方に
組み込んでも応用することがほとんどありません。。
posted by silica at 23:04| Comment(0) | TrackBack(0) | ホムンクルス | このブログの読者になる | 更新情報をチェックする

2007年09月08日

Chat Command Library version 0.5

Download CCL version 0.5

詳細は、チャットコマンドライブラリ解説書を参照してください。

チャットコマンドライブラリはGlenelgの人の改変を参考に
再構築しなおしたものです。
マップ名、座標、アイテム種類、個数をログから取得できるようにしました。
また、チャットログを任意の範囲読み込めるよう追加修正しています。

説明:
・チャットからホム・傭兵へ命令が出来るようにします。
・全てのAIと相互干渉しないため、容易に追加出来ます。
・オブジェクト指向で設計しました。
chatを唯一の名前空間にします。
chatオブジェクトは関数、テーブルを持ち、中身を動的に変更可能です。

・修正
savechatコマンドを実行した時、ログを正常に保存できるようにしました。
・追加
元のログファイルを消さずに移動出来る機能を付けました。

・ファイル分割
chat_extra.lua
chat_debug.lua

これで、1年来の目標を達成しました。
Luaのオブジェクト指向について前より色々わかるようになりました。
今までやりたかったこともこれで大部分が完成です。




posted by silica at 20:50| Comment(0) | TrackBack(0) | チャットコマンド | このブログの読者になる | 更新情報をチェックする

2007年09月04日

Chat Command Library version 0.4

Download CCL version 0.4

・ホムンクルス・傭兵に命令出来るようにするライブラリです。
・各種AIに数行追加するだけで使えるようになります。
・chatを「名前空間」として予約します。

詳細は、チャットコマンドライブラリ解説書を参照してください。

このライブラリをデバッグするために作成したライブラリも添えておきます。
テーブルの内容を直接書き出したり、保存したりする関数もあります。(以前作成したsetini.lua
の上位互換みたいなもの)

標準追加ライブラリ
テーブル保存・読出関数
テーブル保存・読出関数テストファイル
続きを読む
posted by silica at 21:01| Comment(0) | TrackBack(0) | チャットコマンド | このブログの読者になる | 更新情報をチェックする

広告


この広告は60日以上更新がないブログに表示がされております。

以下のいずれかの方法で非表示にすることが可能です。

・記事の投稿、編集をおこなう
・マイブログの【設定】 > 【広告設定】 より、「60日間更新が無い場合」 の 「広告を表示しない」にチェックを入れて保存する。


×

この広告は1年以上新しい記事の投稿がないブログに表示されております。