2009年01月23日

Chat Command Library version 1.6

Download CCL version 1.6

詳細解説

<変更点>
・chat.luaの処理を高速化しました。
・sonarコマンドなどを実装しました。

詳細はまた後日に。

■ほむTALK2.0
http://winter.sgv417.jp/alchemy/download/rhapsoAI/homuntalk2.0.zip
posted by silica at 21:13| Comment(34) | TrackBack(0) | チャットコマンド | このブログの読者になる | 更新情報をチェックする

2008年06月02日

Chat Command Library version 1.4

Download CCL version 1.4

詳細解説

<変更点>
・what:islistをwhat:istemplateに統合・整理
・what.luaの職業名英語定義をiROのものに差し替えました。
・チェイサー(ストーカー)かどうかを判定する関数を付けました。

今回でようやく、what:*関数を簡潔にまとめることが出来るようになりました。
今後、mobdata.lua以外での更新はほとんどしないと思います。
posted by silica at 22:25| Comment(1) | TrackBack(0) | チャットコマンド | このブログの読者になる | 更新情報をチェックする

2008年05月03日

Chat Command Library version 1.3

Download CCL version 1.3

詳細解説

<変更点>
・what:get*()→what:is*()
・what:exist(), what:exist_table()を統合・整理
・what:isinchase()追加(隠れているチェイサーのみを見つける)
・what:h_family()追加(ホムンクルスの種類を判別します)

what.luaで「隠れているチェイサー発見」をサポートしました。
以下の条件を満たすと敵チェイサーだけを見つけ出せるようになります。
・味方チェイサーを登録
・味方チェイサーが隠れないように指示

※フィーリルのムーンライトLv5を使うと、金ゴスチェイス中であろうと確実にあぶり出せるようになります。

また、ホムンクルスの主な4種類別の処理を以下の書き方で楽に
かき分けられるようになります。

function AI(myid)
homtype = what:h_family(myid)
if(homtype == 1) then
-- リーフ用処理
elseif(homtype == 2) then
-- アミストル用処理
elseif(homtype == 3) then
-- フィーリル用処理
elseif(homtype == 4) then
-- バニルミルト用処理
else
-- 未定義ホム用処理
end
end
posted by silica at 22:00| Comment(0) | TrackBack(0) | チャットコマンド | このブログの読者になる | 更新情報をチェックする

2008年04月18日

Chat Command Library version 1.2

Download CCL version 1.2

解説

<変更点>
・誤字訂正が主です。
・what.luaだけで、名前識別結果を書き出せるようにしました。
posted by silica at 21:57| Comment(0) | TrackBack(0) | チャットコマンド | このブログの読者になる | 更新情報をチェックする

2008年04月17日

まだまだ間違いが…。

version 1.1 を出したはいいものの、いくつか間違いを見つけてしまいました。
じっくり時間掛けても気づかない間違いっていっぱいあるんですね。。
ただ致命的な間違いはないため、ある程度まとまったら version 1.2 を出すつもりです。

今回と前のバージョンとの違いは、コマンドと、ライブラリを一杯増やしてることです。

機能のまとめ。
・IDが何か、簡単に分かるようになります。
・必要なファイルだけを読み込む方式です。これにより、要らないファイルを入れなくても済みます。
・コマンドプロンプトやLua文実行機能を付けました。
・ライブラリテストによってエラー探しが早くなりました。
posted by silica at 19:53| Comment(0) | TrackBack(0) | チャットコマンド | このブログの読者になる | 更新情報をチェックする

2008年04月15日

Chat Command Library version 1.1

Download CCL version 1.1

解説

version 1.1 は、1.0 から大幅に拡張されています。

・初回限定AI拡張
・こっこAI拡張
・名前識別
・コマンドをいっぱい追加
・Lua文をチャットコマンドとして実行可能
・コマンドの名前を簡単に変更可能

実際の活用ライブラリを開発者向けとして色々添付しています。
(こっこAI拡張は、テストがまだ色々足りない部分があります。)
詳しい内容は、解説を見てください。
posted by silica at 21:47| Comment(0) | TrackBack(0) | チャットコマンド | このブログの読者になる | 更新情報をチェックする

2008年02月11日

Chat Command Library version 1.0 正式版

Download CCL version 1.0

解説

本バージョンを持って正式版とします。
各AI作者様が自AIに組み込んで再配布したい場合はご自由にしていただいても構いません。

プレイ情報 | ラグナロクオンライン : ニュースホムンクルスAIのカスタマイズに関するお知らせに正式対応しました。
問題となるケミスキル関係コードをすべて削除しました。
こっこAI拡張は、こっこAI最新の5.00テスト版でも動くと思います。
posted by silica at 22:03| Comment(0) | TrackBack(0) | チャットコマンド | このブログの読者になる | 更新情報をチェックする

2007年11月14日

Chat Command Library version 0.9

Download CCL version 0.9

解説

chat_extend.luaのマップ名認識にシュバルツバルドギルド、アルナベルツギルド、砦MAPを追加しました。

諸事情により、チャットコマンドライブラリは更新を停止します。
まだやり残してる点はあるにしても最低限の完成には持って行けたと思っています。
このライブラリは、関数を記述する場所の前後関係がかなり厳しいので、通常は最初に読み込むように設定するといいです。
コマンド部分を別ファイルに分けきれなかった理由はここにあります。
ファイルの途中でrequire文を書けばできるのかもしれませんが…。

最後に。他AIへの添付・改変利用についてはご自由にどうぞ。
これが他のAI進化のきっかけになればうれしいです。
posted by silica at 20:27| Comment(0) | TrackBack(0) | チャットコマンド | このブログの読者になる | 更新情報をチェックする

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日

代売の続き。

代売計算について。

開発版の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月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) | チャットコマンド | このブログの読者になる | 更新情報をチェックする

広告


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

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

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


×

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