2007年09月29日

Chat Command Library version 0.8

Download CCL version 0.8

解説

・ほむTALKにチャットコマンド名と発言を出力するようにしました。
・RO関数シミュレータを、テンプレートを使って行を大幅に短縮しました。

形式を大幅に変更しないと言っていたのですが、結局してしまいました。
出入力とログの扱いが大幅に変わっています。
IDは**か?という質問をするis関数をほぼ実装し終わりました。
今後の目標。
posted by silica at 21:20| Comment(1) | TrackBack(0) | チャットコマンド | このブログの読者になる | 更新情報をチェックする

2007年09月24日

自爆AI。

リクエストされましたので、作りました。
http://winter.sgv417.jp/alchemy/download/AIs/BioExAI.lua

使い方は、単純。
AI.luaに変えて、コールホムするだけ。
コールホムした瞬間に自爆を実行します。
実行場所は、自分の真下です。(ホムは自分の足元に出現するため)

最小AI:
このAIを最短で書いてみるとすると、以下の通りです。
function AI(i) SkillObject(i,3,8016) end
たった1行、40文字で終わりました。
これで充分目的を達成できるんです。

CCLの方は、らぷそAIのほむTALKを次から使う予定です。
これなら、NPC情報を楽にリアルタイム表示できそうですね。
欠点は、同時表示が4行までしかできないこと。
もっとたくさんの行を同時に見られると便利なのですが。

現在はNPC情報仕分けの関数を設計中。
名前空間is, what, aaを設定する予定です。
is: idは**か?(真:true, 偽:false)
what: idの名前
aa: ホムのアスキーアート

posted by silica at 22:07| Comment(0) | TrackBack(0) | ホムンクルス | このブログの読者になる | 更新情報をチェックする

代売の続き。

代売計算について。

開発版のchat:have()関数を少し変更しました。

chat:have(log, true) -- 全ログから所持アイテム情報を積算

二番目の引数にtrueを指定すると、個数を自動的に加算してくれます。
指定しないと、最新の個数1つしか拾いません。

個人的には、今のままで充分完成してるような気も…。
NPC情報ってファイルに書き出ししてツールでリアルタイムに
表示できるなら、そんなに細かく判別できなくても困らない気がしてきました。

ホムにNPCIDが見えるメリットは、「見えないイベントスイッチ探し」以外
そんなにないんだよねー

ともあれ、Luaでテキスト処理ができるLvになってしまいました。
出来ることが増えると、Rubyのように簡単に書けないのがちょっと
残念だったり。

本ライブラリはLuaの標準ライブラリに沿って構成しています。
テーブル操作はtable.*に全てまとめてあるなら、こちらの作るライブラリはchat.*に全てまとめちゃおう、って言うわけです。

そんな中で不便だと思ったのは以下のようなテーブルを
idごとに簡単に自動作成できないこと。
Rubyなら、id自体がオブジェクトなので関数定義さえすれば
全てのidに対して自動的に適用できるんです。

例: id -- ID
print(id.type) -- IDのタイプコードを出力
print(id.kind) -- IDの種類(名前)を出力
print(id.owner) -- IDの主人IDコードを出力
:

Luaでできなくはないのですが、手続きが毎回面倒そう。
こうしたい理由は単純で、GetV(V_TYPE, id)をid.typeなど
簡単に書けるようになること。
posted by silica at 14:26| Comment(0) | TrackBack(0) | チャットコマンド | このブログの読者になる | 更新情報をチェックする

2007年09月22日

将来の予定

ver0.8
・画面上のオブジェクトを認識、出力

ホムAIでオブジェクト認識を統一して扱うものはまだありません。
プレイヤー、ホム、NPCなどをまとめて判別したいですね。

初回限定さんのShowState_hta.htaやこっこAIのメッセージツール
などでNPC情報を表示出来るようにするとわかりやすくなりそう。

これができれば、未知NPCの情報を集めやすくなりますねー
これらが出来てから、ver1.0正式版を出して以後はバグ修正程度
にしたいものです。

工体AIを久しぶりに見ていたら、「名前空間」のアイデアが既に使われていました。
まだまだ、工体AIの中の人に追い付けそうにありません。
posted by silica at 21:58| Comment(0) | TrackBack(0) | チャットコマンド | このブログの読者になる | 更新情報をチェックする

Chat Command Library version 0.7

Download CCL version 0.7

本バージョンからこっこAI対応ファイルを添付します。
こっこAIのステップコマンドを発言命令で代用できるようになります。
ただし、/savechatで直接ログを保存できなくなりますのでログ保存コマンドで代用してください。
ある程度の不具合に対処しましたが、思わぬバグでAI自体が使用不可能になるかもしれません。
その場合は面倒ですが添付したdelchat.batを使ってChat.txtを削除してください。
それでも直らなければ、AIファイル自体を入れ直してください。
続きを読む
posted by silica at 20:54| Comment(0) | TrackBack(0) | チャットコマンド | このブログの読者になる | 更新情報をチェックする

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年以上新しい記事の投稿がないブログに表示されております。