1- 101- 201- 301- 401- 501- 601- 701- 801- 901-

ホムンクルスAIについての雑談スレ その3

1(○口○*)さん :06/08/10 16:13
このスレは、質問や要望、思いついたアイデアなどに関して雑談するスレです。
質問をする場合、最低限、『過去ログの確認』や『状況を伝える努力』をして下さい。

守らない悪ケミ子は、ばにるみーが触手で御仕置きだ!
  ヘヘ
 | ̄ ̄ ̄|
∠|_( ゚Д゚)ゝ <おしおきだべ〜

リンクは>>2-5あたり。

2(○口○*)さん :06/08/10 16:13
■AIに関して、良くある質問は「Alchemist_Template の FAQ」に。
ttp://alchemist.s214.xrea.com/index.php?%A5%DB%A5%E0%A5%F3%A5%AF%A5%EB%A5%B9%2FLua%2FAI#r025e50a">ttp://alchemist.s214.xrea.com/index.php?%A5%DB%A5%E0%A5%F3%A5%AF%A5%EB%A5%B9%2FLua%2FAI#r025e50a

■ホムに関して、良くある質問は「AlchemyNote の ホムンクルス基礎」に。
ttp://www15t.sakura.ne.jp/~privatemoon/alc/hom_100.html

■前スレ
ホムンクルスAIについての雑談・要望スレ その2
ttp://enif.mmobbs.com/test/read.cgi/livero/1146584661/

■過去ログ保管庫
ホムンクルス用ライブラリを配布するサイトLv.1
ttp://himenomikoto.at.infoseek.co.jp/kulus_project/index.html#html

■関連スレ
アルケミスト・クリエイター情報交換スレッド第88巻
ttp://gemma.mmobbs.com/test/read.cgi/ragnarok/1155032957/

■テンプレサイト
Alchemist_Template
ttp://alchemist.s214.xrea.com/

■AI配布サイト
Alchemist_Template - ホムンクルス/Lua/AI - AI配布サイト
ttp://alchemist.s214.xrea.com/index.php?%A5%DB%A5%E0%A5%F3%A5%AF%A5%EB%A5%B9%2FLua%2FAI#f7c155f4

AI機能比較表+人力アンテナ
ttp://pc3merchant.net/ai_antenna/

■Lua 5.0 リファレンスマニュアル
ttp://www.uri.sakura.ne.jp/~cosmic/yuno/lab/lua5_manual_ja.html

3(○口○*)さん :06/08/10 20:58
>>1

比較表見てきたんだが
ぱっと見どのAIが軽いのかわからんけど
たいていの人は気にしないもんなのかね?

4ぜりぃの人 :06/08/10 21:44
前スレ70@工体AI設定エクセルです
色々やってココまで出来たけどココで詰まりました。
完成するか不明ですがエクセルの練習もかねて変更掛けていきます。
ご意見あればお願いします。

http://www.mmobbs.com/uploader/files/783.lzh
中身はエクセルです。
マクロは使ってませんので、何かマクロ反応がでたら「イイエ」にして下さい。

5(○口○*)さん :06/08/10 22:22
>>3
多くはPC側の性能依存だから、「重そう」なAIでも、人によっては気にならないのかもしれない。
現実問題、開発している側だって重かったら改善検討するだろうしね。
一般狩りでは、どのAIを使ってもそれほどの差はないのでは。

そういう意味では、環境が大きく異なるGV用に使えるレベルの軽さか否か?っていう基準は、どこかで引くべきかもしれないですね。

6(○口○*)さん :06/08/10 22:27
PC性能でAIの処理に差が出るなんてこともやっぱりあるのかな?
自分の環境だけでテストするしかないとちょっとどの程度まで
処理をがんばらせていいのか掴みにくくて困るね。

7(○口○*)さん :06/08/10 22:28
各開発者の開発環境も分かればそれが指標になりそうなものだけどな
環境スペック晒してくれないものだろうか

8⊂(*'ω')⊃ :06/08/10 23:27
こっこの人ですが

CPU : Pentium4 3.20 GHz
メモリ : 2.0 GB
OS : WindowsXP SP2

一年前はミドルエンドクラスだったと思うので
現在ならもう少し低めに当たるのかも。
丁度先日の更新で重めの処理を加えたら「遅くなってませんか?」というコメントを頂いたので
処理の重さに関してもちょっと気になってきてます。

9(○口○*)さん :06/08/10 23:38
・2PC用のサブPC
・あまったパーツを組み合わせたPC
・眠ってるお古
ここまで用意する義務は無いと思うけど言って見る

いっそ機能を削った軽量版を用意する手もあるが、需要の問題以上に
AIごとの特色が薄れるのが泣き所か

10t2s :06/08/10 23:47
スペック調査ということで、とりあえずこんな環境でホムってる人もいるんだよ
ということで。

CPU:Pentium3 533 KHz
メモリ: 512kb
OS:Windows 98SE

たぶんここらが下限だw

11(○口○*)さん :06/08/11 00:02
>>10
それROまともに動く?
特にプロ中央とか

12(○口○*)さん :06/08/11 00:24
>>10
kHz ってのがすごいな

1310 :06/08/11 00:53
ごめんなさいMhzでした

Khz単位はMSXで十分です・・・

14(○口○*)さん :06/08/11 00:59
比較表に掲載されてるAIの作者ですが
CPU:Pentium3 866 MHz
メモリ: 256kb
OS:Windows Me
です
人が多いところとかきついっす
あと攻撃速度ですがAIの最後にもう一度OnATTACK_ST()を入れたら早くなりました

15(○口○*)さん :06/08/11 01:27
>>10,14
メモリが1MBいってないのが印象に・・・あれ?

16(○口○*)さん :06/08/11 01:29
2次キャッシュの間違いじゃねw

1714 :06/08/11 01:38
暑さと眠気で脳がやられたようだ・・・orz
メモリ256Mbです

18(○口○*)さん :06/08/11 01:42
細かいこと言うと、MbだとMbitだから32MBになっちまうなw

19(○口○*)さん :06/08/11 01:47
まぁそうとりたきゃそう取ればいいんじゃねーの?
何かの役に立ちそうだから提供したのにアホくさ

20(○口○*)さん :06/08/11 01:53
∧_∧   ほんのちょっとした冗談だったのに…我々の悪ふざけが行き過ぎたのも認めますが
(´・ω・`)  とりあえずお茶でも飲んで落ち着いてください、ね?
( つ旦O  
       旦旦旦旦旦

21(○口○*)さん :06/08/11 01:54
うちも比較表に載ってるんで晒し、名前はメール欄

CPU:AMDデューロン1.6Ghz
メモリ:768MB
OS:Windows ME
グラボ:FX534
HDD:Cドライブ10GB Dドライブ40GB
回線:光ファイバーで1M
補足:PCのクーラー貧弱なので夏場はすぐ熱暴走するためカバー開けて扇風機で冷やし

というか9×系意外と多いのね
私は好みでダメOSのMEあえて使ってます
昔使ってたMX440と体感変わらなくてお金無駄にしたかなとか思い始めてる

他キャラでGV参加するときあるけど、エフェクトONでも動く
プロの密集地がちょっとカクカクするくらい

22(○口○*)さん :06/08/11 01:57
回線が強いのでうちのAIは、処理の重さはともかく回線の重さは改善の効果がよく分からないのです・・・

23(○口○*)さん :06/08/11 02:27
とりあえず、低スペックな人が公開してるやつは軽いってことか

晒してくれても開発者の名前が分からないことには・・・・・・
ともかくアンテナのAIの中にはかなり負荷が少ないのがいくつかあるってことだな

CPU+メモリ
両方の性能が良いほどROだとスムーズ
AIの軽さだけなら低いCPU性能で開発してる人のほうが確実

回線
回線が弱い環境で開発してる人の方がパケを送る量と頻度を抑えている可能性大、これも軽さに繋がる

OS
95 98 98SE ME はメモリの使い方が下手だから処理が重くなりやすい
この環境で作られたAIは負荷が少ない確率が高い
特にMEはダメOSの代名詞

このへんがAIの軽さの信頼性を見る指標かな?

24(○口○*)さん :06/08/11 02:28
名前(AI名)晒さないと、>>7の趣旨にそぐわない気がする。

良い環境を使って作るほど(本人気にならない・気がつかないから)
重たくなりやすい、だから開発者はプアな環境を使っておけ
とはよく聞く話。

25(○口○*)さん :06/08/11 02:36
補足があった
CPUの種類も微妙に関係するな
Imtel社のPentiumやCeleronは性能は良いがゲームの処理に弱いためROと同時に動かすAIが重くなりやすいと思われ(近年のPCの主流CPU)

AMD社のAthlonやDuronは上記より若干劣るものの連続処理に強くゲームに適しているため三割り増しのGHzで見てもたぶん大丈夫


↑記憶だけで特性書いたから間違ってるかもしれないが参考にしてくれ

26(○口○*)さん :06/08/11 02:39
とりあえず>>10>>14のAIは確実に軽そうだ
AI名前が分からないのが残念

27(○口○*)さん :06/08/11 02:48
× Imtel社
○ Intel社
ここだけ気になった

28(○口○*)さん :06/08/11 02:49
そういえば名前晒してなかった、申し訳ない
幻塵AIとか命名されてるのが私の作ってるAIです
デフォAIに基本的な機能ちょこっと付け加えただけの物なんで、軽いといえば軽いかもしれませんね

29(○口○*)さん :06/08/11 02:51
とはいえ、ある程度凝った機能のためには
重くなる処理も必要な場合もあるのでトレードオフだろうなあ。
逆に言えばPCに自信があればどれでも使っていけるってわけだし
PC弱めの人以外はあんまり気にしなくてもいいんじゃないかな。

前スレでもあったけどAIのループは呼び出し周期よりも
遥かに短い時間で終わるみたいだから、よほどの処理を組み込んでない限り
やばいほど重くなることもないよね。

>>24
よく聞く話だけど、ホムAIの開発者なんて皆有志で
アマばっかりだろうから(もしかしたらプロも居るかもしれないけど)
開発者にそこまで要求するのもちょっとね。

30(○口○*)さん :06/08/11 03:02
折角人力アンテナ、外部の人も更新出来るんだからAIが軽いかどうかだけじゃなくコード解析の難易度もランク化してみたいな

基本のテキストはくま〜にあるデフォAIを勧めるとして
自作AI志望者のAI開発の芽を伸ばすためにも解析しやすいかどうかは大事じゃないかなと思う
と、初期に工体のコード見て挫折と共にやる気無くした俺が言ってみる

31(○口○*)さん :06/08/11 03:03
>>29
誤解させて申し訳ない。
そこまで含めて「よく聞く話」だってことで、要求したつもりはないんだ。

32(○口○*)さん :06/08/11 03:06
>>28
thx、後でどんな処理が組まれてるか見に行ってみる

33(○口○*)さん :06/08/11 03:32
AIについての質問があります
SGでの氷割りを考えているのですがモンスターが凍結中のときのGetV(V_MOTION,mobID)の値をどなたかご存知ないでしょうか?

ちなみに予定としましては友達登録したWiz|HiWizがSG詠唱開始→ホムを詠唱場所に移動指定(Alt+右クリ)→Wiz|HiWizがCAST中だったら指定場所中心に旋回&CAST監視→CASTが切れたら(詠唱完了?)、3秒ぐらい攻撃(凍結中の敵優先) というような感じにしようと思ってます

3433 :06/08/11 03:33
ってすまん、sage忘れてたorz

35Glenelgの人。 :06/08/11 06:18
ふらっと。
この件だと、CPUとメモリとが主要用件かな。

CPU:AMD Athlon2.0GHz
メモリ:1GB
OS:Windows XP Sp2
グラボ:オンボード、GeForce4相当

3年くらい前に買ったキューブPC。
AIの重さについては・・・日常はそんなに気にならない。
ログをフルに取るとちと重いと思うときがあるかな。

ついでに解析難易度をつけると、「難」かな。
コメントはかなり多めにしてるつもりだけど、いかんせんファイル数が多いのと、
標準AIとはだいぶ違う構造になってるのが大きい。
増築の繰り返しもあって、結構複雑になっちゃってます。

というわけで、夏のイベントに出発です。/

36初回限定 :06/08/11 06:56
メイン
CPU: Sempron 3000+ (1.8GMhz)
メモリ:1GB
OS:WindowsXP SP2

サブ
CPU: Pentium3 733Mhz
メモリ:512MB
OS:Windows2000

サブマシンでもしっかり動く程度に仕上がってます。
でも友達登録ありません orz

>>30
こんな感じでどうでしょうか?
完全に自由に編集OKにすると、理由なしで適当に入れ替わって収集つかなそうですので
少しめんどくさくしてみました。
企画倒れだったら自由に編集できるように直します。

処理の重さ
ttp://pc3merchant.net/ai_antenna/index.php?ReadOnly%2F%A5%B3%A1%BC%A5%C9%A4%CE%B8%AB%B0%D7%A4%B5
編集の難易度
ttp://pc3merchant.net/ai_antenna/index.php?ReadOnly%2F%BD%E8%CD%FD%A4%CE%B7%DA%A4%B5%C8%E6%B3%D3

37GvAI ◆g37UcEp//g :06/08/11 16:29
自分のマシンで実地テストしないダメ作者です
CPU Pen4 Ath3700+
Mem 1G 1G
VGA Rade9600XT RadeX800XL
回線 光実測30程度

一番重さ気にしなきゃならないGv用なのにこんなんなので全部理論だけですね…
そもそも他の職で出ているのでケミが出せないのです


AI自体の短い処理速度よりただでさえ悲鳴を上げてるクライアントに命令を送らないようにするの方がいいかも
話に上がっていた攻撃速度上げるためのAttack2回とか
スムーズな移動のために毎回Moveとかはは重くなりやすそうですね


一応実験するときは南十字路(画面内120人程度)でやるんですが
実際のGvとは重さが違いますからね…

38(○口○*)さん :06/08/11 17:14
実際のGVは魔法のエフェクト処理やそのエフェクトに関する命令のやり取りも含まれますからね・・・
GVは回線への負担が一番大きい

39(○口○*)さん :06/08/11 17:19
そういえばコードの見易さっていっても色々ありそう
一回の条件分岐での分岐の数か、分岐条件の条件の数か、独自関数の数か、使用変数のネーミングセンスか、
代入が多くてもその変数の中身を特定するのが大変になるし、コメントの数だけでなく分かり易さも大事だし
コメントが多すぎるとかえって混乱して分からなくなる時もある

40(○口○*)さん :06/08/11 21:21
流れを無視して最近組み込んだやつを晒してみる
工体にて、OnCHASE_ST () のMoveToNearのかわりに下記のものを組み込みました
敵を追跡するとき中間点に移動
近くまで寄ったときは毎回Moveを送ることになるけど、特に重くはないようです
オークアチャに殴られてるときにヒットストップしにくいです


local x, y = GetV (V_POSITION,MyEnemy)
local mx,my=GetV (V_POSITION,MyID)
Move(MyID,(x+mx)/2,(y+my)/2)

41きのこ :06/08/11 22:51
メイン
CPU:Pen4 2.26GHz
Mem:768MB
OS:WinXP Home SP2
VGA:GeForceFX5200

サブ
CPU:Cele733MHz
Mem:512MB
OS:Win98SE
VGA:GeForce3Ti200

Excelがサブの方しか入っていないので、
AIをいじったりするときは主にサブの方で動かしています。

ASPDの件は環境による違いがありそうなのと、
自分では進化前のバニルとバニル亜種しか検証が出来ないため、
今回は諦めました…orz
AIの方は設定次第でいろいろ出来るようにはしてあります。
進化させることが出来たら、またいろいろやってみようと思います。

42(○口○*)さん :06/08/12 21:15
つ OpenOffice.org
私用なら十分。

433 :06/08/13 10:31
実際にひととおり試してみた感じ重さ的には差はほぼ感じられませんでした

ソースやファイルの量が多いもの(参照・判断することが多いもの)が僅かに描画レートに影響を与える程度
(といってもプログラミングなんて昔PC98でBASIC触った程度の人間の感想だが)
普通の環境下では実感できないレベルと推測

進化ホムのASPD問題についてはAI自体の重さの差は無いに等しいことを考えると
きのこAIのようにAIが動いていない間をフォローするように攻撃コマンドを出すしかないかも

ちなみに私のテスト環境は
PIII733Mhz、RADEON9600、メモリ512MB、OSはXPSP2
これで画面解像度が1280*1024だから重いのは自分のせいなんだがねぇ

44(○口○*)さん :06/08/13 15:17
>>43
こういうの助かる、検証乙

453 :06/08/13 16:37
追記
基本的にソロ環境下でのテストなんで
大人数PTとかの場合は参考にならんかも

46(○口○*)さん :06/08/15 14:11
ヽ(`Д´)ノ

47 ◆g37UcEp//g :06/08/15 20:41
今週の実装予定
友達以外無差別攻撃(その場で)
哨戒機能
Alt+Tを押すと通常状態ハイド状態クローク状態チェイスウォーク状態関係なく友達以外が画面内にいたら座標を画面に一覧表示


ロキ妨害は面白そうなので実装方法検討中
読み込み時に近くの演奏してる雷鳥にスキル1回落とす感じでいいのかな?
それとも攻め用AIとして分けるなりして他の機能といっしょに常時狙う形にするか

とネタ振り
丸一日以上進行が無いのは寂しい(´・ω・`)

48(○口○*)さん :06/08/15 21:04
今あれかもね。
ふつーに育ててる人は、エサやりメインになってるのかもね

すでに進化させてる人は別として。

49(○口○*)さん :06/08/15 21:20
進化前、進化後でASPDはかってきました
ホロンを10秒間殴らせて最頻値をとりました
進化によるステアップはAGI+2 DEX+5 (もうちょっとAGI上がってほしかった。。

AIは 工体ほぼノーマル
進化前 秒間 2,2回
進化後 秒間 2,2回

AI 工体 AI() はじめと終わりにATTACK()
進化前 秒間 3,2回
進化後 秒間 3,3回

進化によるASPD減少はなさそうです
ATTACK()を追加するのは非常に効果的ですね

50(○口○*)さん :06/08/15 21:21
なさそうですとか勝手に結論付けないほうが良いと思うよ
実際遅くなったっていう報告が複数あるわけだし

51(○口○*)さん :06/08/15 21:27
いらん事付け加えてしまったようです。もうしわけない
データ以外脳内削除お願いします

52(○口○*)さん :06/08/15 22:41
AI自分であまりいじれないのですが
工体AIのどこにATTACK() って記述かきたせばいいんでしょうか
はじめと終わりってどこ・・(つд`) 

53(○口○*)さん :06/08/15 22:56
AI() はじめと終わりにATTACK()

って書いてあるから

AI(){
ここと


既存の処理


ここ
}

じゃないのかね。

54(○口○*)さん :06/08/15 23:03
あっ、なんかluaって関数の書き方ちがうのな

function AI(myid)
  ●←ここと

  既存処理

  -- 状態処理
  if (MyState == IDLE_ST) then
    OnIDLE_ST ()
  elseif (MyState == CHASE_ST) then
    OnCHASE_ST ()
  elseif (MyState == ATTACK_ST) then
    :
    :
  elseif (MyState == FOLLOW_CMD_ST) then
    OnFOLLOW_CMD_ST ()
  end

  ●←ここじゃね?
end

55(○口○*)さん :06/08/16 00:46
>>54の●の部分に

if (MyState == ATTACK_ST) then
  OnATTACK_ST ()
end

を追加だと思う。
個人的には終わりに追加しとくだけで十分だとは思うけどね。

5652 :06/08/16 11:20
ありがとうございました 今仕事中ですので帰り次第書き加えて試してみます 工体さんの更新がないままですけれどなかなか乗り換えられないので助かりました

57(○口○*)さん :06/08/16 18:59
思い切りスルーされてるが、エクセルツールの人乙です。
ただ、出来ればシート何枚かに分けたほうが使い勝手が
良いと思います。

また結果書き込んで下さい。
俺が使いたいのでw

5852 :06/08/16 19:57
ID変わりましたが52です
書き加えたAIで試してみました、狩場はOD2です
ホムは進化鳥77
体感ですが少し早くなった気もします
弓兄貴相手だと早くなったの実感できるかなと

ありがとうございました、感謝です

59(○口○*)さん :06/08/16 23:19
>>47
演奏してるキャラを読み込むと、クライアントではただ立ってるだけに見えるけど
AIだとちゃんと演奏中かどうか判別できるのかな?

ロキ妨害については
設定項目に0or1で攻めモードにするか否かの値を追加して、手動で切り替え出来るようにして
攻めモードなら詠唱妨害はせずに、援護射撃とロキ妨害だけするとか・・・

以前から言われていた要注意人物登録のようなものを実装すれば、
攻め時でも要注意人物(ギルマス)の詠唱だけは妨害するようにしたりして
EmCを阻止し一気に勝てるかも?

60(○口○*)さん :06/08/17 01:13
>>59
演奏開始を見たときだけモーション17を返す。
立ってるだけに見えるときはモーション0になる。

転生してるとダメかもしれないけど、隣り合って立ってる雷鳥を探すのが妥当な線でしょうか。

61 ◆g37UcEp//g :06/08/17 08:38
画面切り替えると演奏モーション取ってませんでしたね
私を縛らないではひとまず置いておいて
隣り合わせを探す方向で当座は凌げるかな?
もしくは単純に一番近い雷鳥とか…

可能不可能は考えずに
要注意人物に対してやりたいこと
それ以外に対してやりたくない事ってなにがあるかな
考えが纏まったら今週の予定より先に作るかも

62(○口○*)さん :06/08/17 11:04
天の声がきたので妄想全開で!
そもそも食らうと痛い詠唱スキル(LP・SG・阿修羅・ADS)は軒並み詠唱速度が速いので、
詠唱妨害はやはりEMC対策として一番活躍すると思う
ので要注意人物以外は詠唱妨害をしないようにする(設定で従来型と切り替えれるといいかも
要注意人物に対する動作も数値で設定可能にして、
1なら詠唱妨害のみ、2だと画面内に居たらとにかくスキル連打、などなど

ついでに要注意職も同様の動作で実装できれば(優先順位は注意人物>注意職で
敵のクリエやダンサーがERへ入ってきたらスキル連打して落とす、とか
ホムの活躍の場が広がること間違いなし

63(○口○*)さん :06/08/17 22:42
工体AIに
ほむがいる場所にケミや敵が重なったら、
移動するようにしたいんですけど、
どなたかサンプルかヒントをいただけませんか?
よろしくおねがいします。

64(○口○*)さん :06/08/17 23:05
>>63
ホムと他キャラ(敵・ケミ)の距離を比べていって、一番近いヤツが
0距離にいたら上下左右のどこかにMOVE

65(○口○*)さん :06/08/18 17:46
>>52,54,55
MyIDがグローバル変数だから問題ないだろうけど、一応
function OnATTACK_ST ()内でMyIDが使われてるから、挿入場所は

function AI(myid)

MyID = myid

if (MyState == ATTACK_ST) then --AIスレ3の54-55
  OnATTACK_ST ()
end

(中略)

elseif MyState == FAVOR_ST then
OnFAVOR_ST()
end

DispatchEvents( EVENT_END_STATE )

if (MyState == ATTACK_ST) then -- AIスレ3の54-55
  OnATTACK_ST ()
end

end

って感じのほうが安全?
#まぁ、MyIDとmyidがルーチン実行中に不整合起すとか考えにくいけど・・・
 こまめな安息コールでも最初はIDLE_STだから問題ないのか。

66 ◆g37UcEp//g :06/08/19 00:52
GvAI更新
Alchemist_Template
http://alchemist.s214.xrea.com/index.php?Alchemist_Template
直リン
http://alchemist.s214.xrea.com/index.php?plugin=attach&pcmd=open&file=GvAI.zip&refer=%A5%DB%A5%E0%A5%F3%A5%AF%A5%EB%A5%B9%2FLua%2FAI
今回の変更点は
・哨戒機能
Alt+Tを押したときに画面内の友達以外をリストアップして画面に表示
画面を表示している間はクラが止まるので注意
何かキーを押すと画面を消して復帰
・詠唱妨害優先度
「VIP.ini」にFriends.iniと同じ書式で優先させたいIDを記入してください
AI.lua内の設定値を変更すれば
0:従来動作
1:画面内に重要人物が居る場合その他を無視
2:画面内に居なくとも重要人物以外を常に無視
現状VIP.iniを作る機能は提供してません
別の方法でIDを調べてメモ帳なりテキストエディタか何かで値を書き込んで下さい

っと、こんな感じで作ってみましたがどうですかねぇ
哨戒機能は禁じ手といえなくもないos.executeつかっちゃってるので公開するか悩みましたが・・・せっかく作っちゃいましたしw
中で使ってるのもWindowsの基本機能ってことでココは一つ

※ケミが現在チケ切れのため優先度のテストがまだ済んでません
 Gvで使用する前に十分な実地検証を行うことをお勧めします。

67(○口○*)さん :06/08/19 03:14
>>66
使ってみたけど、これは流石にまずくないか?って思った
使えてしまう物は仕方ないし、AIで書いてるには変わりないから何とも言えないが、
使用感としては、チートやツールを使ってる人ってこう言う感じなんだろうな、って感覚になった
今までGvAI使わせて貰ってましたが、この機能だけは外して使わせて貰います

68(○口○*)さん :06/08/19 04:00
os.execute自体は別にかまわないと思う。

でもハイド透過の性質の故意的な利用って、スレ的にはどうだったっけ?
さすがにプレイヤーに可視化するのはグレーもいいところだと思うし、
それをケミテンプレで公開するというのは自粛する範囲になりそう。
(AIサンプルに自動PPを入れないとかそういうレベル)

69(○口○*)さん :06/08/19 04:08
ハイド透過は別にいいでしょ
デフォAIでもウィスパおっかけるんだし
もし問題があるとしたら、それを塞ぐのが重力の仕事

70(○口○*)さん :06/08/19 04:16
ホムンクルスがそれを感知して自律的に追いかけるのと、
ケミというかプレイヤーが検知するのは別のコンセプトだとは思うが…。

何にせよふさがれてない以上どう捉えるかはまた語るに落ちた話題だが、
何度も言われてるように「少しでも黒いと捉えられる可能性があったら自粛」という方向が望ましいのではないか。

71(○口○*)さん :06/08/19 05:16
この機能の使用はおいといて
北と南が逆になってるのが気になったり
まだAIに目を通してないけど
この位置を消すだけでいいのかな

72(○口○*)さん :06/08/19 09:47
>>69
PPのAI制御は、ホムAIがケミキャラに干渉するのはおかしいという理由から
自粛が必要とされている。
今回のもハイド透過の情報を与えるという点で、ホムAIがケミプレイヤーに
干渉している。

そしてここが一番のポイントなんだけど、それを公共のwikiで配布しているってこと。
自分のサイトで配ってる分にはここまで言わないよ。

73(○口○*)さん :06/08/19 10:23
ホム本来のASPDを出すことのできるAIってありますか?
亀地上でめちゃくちゃ早いASPDの進化鳥を見つけたもので・・・
ちなみに自分は進化バニルです

74(○口○*)さん :06/08/19 10:39
マルチ乙

75(○口○*)さん :06/08/19 10:44
マルチじゃないだろぅ
向こうでは間違えたとちゃんと謝罪してる
荒れのもとになるレスは控えような

76(○口○*)さん :06/08/19 10:51
見落としてた、スマン

んで攻撃速度だが
現時点ではきのこAIだけだっけ、対処されてるのは?
うちの亜種鳥は大降りなモーションがまったく出なくなった

77(○口○*)さん :06/08/19 13:32
>>55をくまAIだと何行目にいれればいいのかな? それともくまAIじゃそのまま使えない?

78(○口○*)さん :06/08/19 13:56
>>54のとおりに2箇所に>>55を貼り付けたら明らかに速くなった〜♪
ちなみに後ろだけだとちょっとモタついた。

79 ◆g37UcEp//g :06/08/19 14:28
とりあえず取り下げときました
機能停止は128行目の「EyesOfSunlight()」をコメントアウトなり削除なりすればOKです
ついでに従来の友達登録に戻したものを再UP

外部のツール(ここではcmd.exe)を使ってることで何かしらの反応はあるだろうとは思っていたものの
情報をプレイヤーに提供すること自体が疑問視されたのはちょっと意外だったかな
ファイル名にして出力表示とかTraceAIのリアルタイム表示とか結構一般的だと思ったから
ハイド透過することの意図的利用については兎も角
要望上がってて制止意見も見当たらなかったのでそのまま作っちゃいましたってところですね

コマンドプロンプトのデフォ見た目がチートっぽいイメージなのはとっても同意

80(○口○*)さん :06/08/19 14:44
乙。だが言い訳ウザい。そんなに卑屈になる必要ないかと。

81(○口○*)さん :06/08/19 17:32
>>80
無償で提供してくれてる作者にウザいは無いだろう、と
機能や文章に思う所があっても、他に言い方あるだろう

>>79
ウィンドウズの機能とはいえ
本来クライアントで表示されない情報を表示できるってことで、反対意見が多そうですね
となるとクライアントのみで表示できるように、
ホムの移動等で表せるようになるといいかもですね

82(○口○*)さん :06/08/19 17:59
実際見えちゃうことは確かなんだけど、
それだとマヤパがわざわざ存在してることの意義を覆しちゃうし
「ホムが教えてくれる」っても限度があるんじゃないかなぁ。

83(○口○*)さん :06/08/19 19:18
くま〜AI使用者で>>54-55の改造をしようとおもったんですけど、
unexpected symbol near
というエラーウィンドウと、またそれとは別に
attempt to call a nil value
というエラーウィンドウもでます。
これは何かしらの定義が抜けたりしてるのでしょうか?

また、
elseif (MyState == FOLLOW_CMD_ST) then
OnFOLLOW_CMD_ST ()
の後ろがなく、endではなく

elseif (MyState == FOLLOW_CMD_ST) then
OnFOLLOW_CMD_ST () -- 休戦状態の処理
elseif (MyState == STOP_CMD_ST) then
        :
        :
elseif (MyState == SKILL_AREA_CMD_ST) then
OnSKILL_AREA_CMD_ST ()
end
   ★
end
となっている場合、入れる場所は★でいいのでしょうか??

84(○口○*)さん :06/08/19 19:32
>>65も参考にしてみれば?

あと、★は、function AI()の一番前と後ってだけだから自分で探して
入れればいいと思う。(function ai()の締めのendの前)

85(○口○*)さん :06/08/19 19:46
>>83 は本スレ見る限りだと解決してるっぽい
原因は恐らく全角スペースのままコピペ

解決したならこっちにも書こうぜっ

8683 :06/08/19 20:00
>>85
本スレのあれは別人だったんですが、結局おんなじ原因でした。
>>84もありがとうございます![。・ω・]〜♪バニルミー

87(○口○*)さん :06/08/19 20:55
tabが一切無視されるから、スレ上では見易さを考慮して全角スペース使ってるんだよ

まぁAI弄った後は全角スペースを全検索するとかを習慣づけたほうがいいよ。

88(○口○*)さん :06/08/19 21:05
置換機能を使って全角スペース→半角スペースor何も無しにすると一掃出来るマジオススメ

89(○口○*)さん :06/08/19 21:15
哨戒機能付きのGvAIってもうDLできないんでしょうか?

90(○口○*)さん :06/08/19 21:46
テンプレに入れるのがマズイって話みたいだから
どこかのアップローダーにでも上げてもらえばいいんじゃないかな

91(○口○*)さん :06/08/19 22:12
GvAIの作者様どこかのアップローダーに上げてもらえませんか?

92(○口○*)さん :06/08/20 02:12
アップローダーというかそろそろどこかにHP持っても良いと思う。
だが、それではスレが寂れるし難しいな。

93(○口○*)さん :06/08/20 02:17
ケミテンプレに、アプロダって付けられないの?
いや、このあたり詳しくないからトンチンカンなこと言ってるかもしれないけど。

94(○口○*)さん :06/08/20 03:24
ページにファイルを添付することはできるよ。GvAIの人もその機能でファイル置いてるはず
ただwikiは性質上アプロダ目的には向かないから、どっかのアプロダ使うのがベストだと思う

95(○口○*)さん :06/08/20 04:11
こっこAI と どきどきAI が更新されてる

96(○口○*)さん :06/08/20 11:43
そういえば鳥奥義連打AI組んでる人ってどんな感じになってる?
OnATTACK_ST ()のAttackコマンドの直前にスキル使用を組み込むだけでいいんでしょうか?
何度かSSは出てたので組み込んでみたいのですが、進化鳥いないため、自分では試せません。

97(○口○*)さん :06/08/20 16:14
ぜろマテ久々だな
攻撃速度はいいけどあいかわらずプラントジオが…
やっぱり最後に↓を追記しないとだめっぽ。

do
local _getactors = GetActors
local IgnoreType = {[1590]=true}
function GetActors()
local actors = _getactors()
local result = {}
local i = 1
for _,v in ipairs(actors) do
if not IgnoreType[GetV( V_HOMUNTYPE, v)] then
result[i] = v
i = i + 1
end
end
return result
end
end

98(○口○*)さん :06/08/20 16:18
http://pc3merchant.net/ai_antenna/index.php?%A5%A2%A5%F3%A5%B1%A1%BC%A5%C8

AIアンテナにアンケートできてた。

99(○口○*)さん :06/08/20 20:31
工体と自動PP人気だな

100(○口○*)さん :06/08/20 21:20
>>99
rhapsoは自動PPもさることながら設定ツールがあって挙動も扱いやすいからな。
工体は工体でASPDの弱点が克服されたからまた当分はトップシェアなんじゃないかな。

101(○口○*)さん :06/08/20 21:28
でも工体に例の部分加えるとちょっと重くなるんだよな
低スペックだとキビシス

102(○口○*)さん :06/08/20 22:17
くまがまだ0なのが…。

103(○口○*)さん :06/08/20 22:26
このスレを見ている人だけがAI使っているわけじゃないからね。
特にくまーの場合「初心者向け」とテンプレにもある通り、
AI雑談までには興味がないホム使いが使っている可能性はたぶんにありそう。

104 ◆g37UcEp//g :06/08/20 22:54
>>89,91,
申し訳ありませんが現状での再配布はすこし見合わせたいと思います
Up場所を変える場合この板のUpLoaderを使うのも手かな?
どちらにしても反対意見が多かったので何らかの修正もしくは機能凍結のどちらかになるかと

ここで実際に落としてみた人にちょっと質問どのあたりがダメだと思った?
・ハイドしててもホムには見えてることを意図的に利用した見破り機能であること
・os.executeからコマンドラインをつかったプレイヤーへのフィードバック方法
・表示される内容
・その他

基本的にはこのスレの意識に準拠した形で作って行きたいのでご意見お待ちしてます

105(○口○*)さん :06/08/20 23:48
>>104
>・ハイドしててもホムには見えてることを意図的に利用した見破り機能であること
>・os.executeからコマンドラインをつかったプレイヤーへのフィードバック方法
これの複合。どっちがわるいってわけじゃなくて。

前スレ155あたりのこれとかが類似意見だと思う。
>隠れているキャラを出力してリストアップするようなのはアレだが

あとこれも理由。
・Gv絡みである

必死な人も多いから・・・。
スリーパーとか見破ってるだけならきっと気にならなかった。

106(○口○*)さん :06/08/20 23:53
>>104
人間の見えない部分を意図的に見せる、
しかもどこに居るか正確にわかってしまう。
基本AIではハイドしてる敵について行くってのがあったから
これもOKな気なんじゃね?っては思ったけど…自粛すべき内容だとは思った

あと、os.executeは問題無いように思うけど、
どうにもコマンドラインで見てるとツールっぽく見えてしまう
あくまでそれっぽく見える〜ってだけで、これは私的な思い込みだと思う

とは書いてみたものの、なんと言う俺ルールなんだろうな!
人それぞれの許容範囲が違うだろうし、会社はその範囲を指定してくれてないし、
ぶっちゃけAIで書いてできる事はなんでもOKなんじゃないかと思う事もある。が
ただそれだと世間の目は許さないだろうから、自粛する必要があると思う

107(○口○*)さん :06/08/20 23:56
配布前に反対意見がなかったのは多分、
肯定派3割・どっちでもいい派6割・否定派1割
くらいの割合だからだと思う
批判にも負けずいろいろ挑戦する精神は続けて欲しいなあ

今日ほど雷鳥撃墜機能が欲しいとおもったGvはなかった(´;ω;`)

108106 :06/08/20 23:56
連続すまん。
>>105の言う「必死な人が多いから」ってのにものすごく同意
GvのAIじゃなかったら俺も何も思わなかったと思う

過去に何度もクローク見破りのツール?チート?が出回り、
ちょっとでもそれっぽいやつがいると晒し上げていた時代もあった
それを考えるとこれはやばいと思う

109(○口○*)さん :06/08/21 00:05
個人的には告知が出てから使うのやめれば良いと思ってるんだが
議論になった時点でこのスレ的にはアウト!ってことじゃないのかな?
審判がアウト!って言ってないのに自らアウトでしたって言う必要はないと思うんだがね。

110(○口○*)さん :06/08/21 00:59
その審判がいい加減な判定と告知を出したり
引っ込めたりしてきた過去(前科)があるから、
最終的に自主性に頼らざるを得ないってことだろう。

「叩かれたくなければ余計なことはするな」
結局、ここに行き着くんだろうな。個人的には残念だが。

111(○口○*)さん :06/08/21 01:01
798 名前:(○口○*)さん[sage] 投稿日:06/05/08 19:50 ID:8PXmN+P1
実際に黒だとか白だとかが問題なのではない。

「黒と取れる可能性が少しでもある」場合、それを黒と捉えて
鬼の首を取ったように叩きに来る人物が現れる可能性があるから
面倒を回避するために自粛すべきだって言ってるんだ。

112(○口○*)さん :06/08/21 02:37
くまは拡張するにはソースが長すぎていろんな部分削がなきゃならんから改造には向かないってのもな

ハイド見破りは「正確な位置が視覚でわかる」のがまずいんじゃないか

「ハイドが見えるから仕方ない」の範囲をおもいっきし逸脱して
「見えるんだから最大限に利用してやるぜ」みたいな感じ

便利すぎたんだと思う

113(○口○*)さん :06/08/21 06:40
「使えるんだから最大限に利用してやるぜ」って理屈は
アサシンの矢バグ利用と同レベル

114(○口○*)さん :06/08/21 07:40
本来遅いASPDが、モーションキャンセル出来てるのはバグ?仕様?
プルプルしながら攻撃してるのみたらバグ利用だと思えばいいのかな。
手動マニピはバグ?仕様?斜めFWは?自粛してる人なんていねえだろ。

115(○口○*)さん :06/08/21 07:48
デフォルトのAIでも同じなのに何言ってるんだコイツ
頭沸いてるな

116(○口○*)さん :06/08/21 07:50
まあ餅でも食え

117(○口○*)さん :06/08/21 10:04
他人・他職から見たときに、行き過ぎだと思われる機能はスレ全体では自粛しないと、
スレがOK出したから問題ない機能だとか言い出されて他のホムに迷惑がかかるよ
どうしても欲しい機能であれば個人でソースを書いて自己責任の上でやってください

118(○口○*)さん :06/08/21 10:24
>>113
アサシンは矢アイテムであるベナムナイフを装備するために
矢が装備できるようになってる、ここまでは仕様
矢消費なしで状態異常が乗るのはバグ利用だ!っていうなら
盗作BBローグなんかは矢消費なしで属性や状態異常乗せ放題だが、これもバグ利用?
としたら弓BBローグは全員通報しないとな
っとスレ違いだったスマソ

119(○口○*)さん :06/08/21 10:25
馬鹿が次から次へと湧いてくるぜっ・・・!

120(○口○*)さん :06/08/21 10:48
>◆g37UcEp//g
ま、あれよ。HPなりBlogなり持ってそこで配布してくれ。
現状じゃ苦情や意見はこのスレにくる訳で、道連れになるのは勘弁して欲しいとこだ。
1回2回のAIテスト依頼やデバッグにこのスレ利用するなら判るが、
そろそろ限度超えてきてないか?と思うわけよ。

121(○口○*)さん :06/08/21 11:16
>>118
>アサシンは矢アイテムであるベナムナイフを装備するために
>矢が装備できるようになってる、ここまでは仕様
仕様と確定して無いよ。公式見ろ。確認中となってるだろ。

122(○口○*)さん :06/08/21 11:33
では三段をクローンする不具合は?確認中になってるが
まさか使ってる人が多いので白、とは言わないよね?

123(○口○*)さん :06/08/21 11:34
なんか一気に臭くなったなこのスレ

124(○口○*)さん :06/08/21 11:35
とまあ明確に禁止されてなければなんだかんだで利用してるのがROの現状
古くはFWのワープ撃ちとかな。どうみてもバグ利用くさいが
当時は立派なPスキルとして紹介されていた。
スレ違いなので以降は消えます ノシ

125(○口○*)さん :06/08/21 11:51
>>123
まあ荒らす目的で来るんだろうし
どこのスレも板も凄いよ
頭が夏っぽいのがあちこちに湧いてて

126(○口○*)さん :06/08/21 12:01
レジポ飲んだら死なねーとかESC連打したら死なねーとかいうレベルでなければ好きにしていーんじゃん?

127(○口○*)さん :06/08/21 12:19
そもそもこのスレは他にもグレーな話題を普通に話しているので、なにをいまさら、な結論になるなw
此処での善悪の議論は不毛なので、語ってる人達は他所でやってくれ。

>◆g37UcEp//g
このスレに基準を求めると、管理会社の無能さもあって結局スレが荒れるだけで結論が出ない。
こっちに意見を求めないで自分基準ででokと思った機能を好きに作ればいい。
それを利用するかしないかは利用者の判断基準次第。

ただ、>>120の言う通り、そろそろ自分のBLOG等での配布に切り替える時期かもしれない。
場所を分けて配布してもらわないと、そろそろスレ側が責任背負ってると勘違いしてる人が出てきそうなので。
アンケとるにしても無益にスレが流れそうなので、そちらで投票作ってもらってこっちのスレで宣伝という形にして欲しい。


最後に個人的な戯言。この発想とプログラムソースが一度公開されてしまった以上、
PG組めてこの機能使いたい人はどうせ使用するので、Gv事情的には誰かが公開しても大差はない気がする。

128(○口○*)さん :06/08/21 12:28
はいはい

129(○口○*)さん :06/08/21 12:33
>>128
スルーした方が良かったか?長文ウザならすまなかった。スルーしといてくれ。

130(○口○*)さん :06/08/21 14:13
>>129が蛇足で台無しだな

131(○口○*)さん :06/08/21 16:59
黒の可能性で自粛するしないの2択なら
通常「クライアント」では知りえないmob、スキル、キャラIDは
「黒と取れる可能性が少しでもある」に当てはまるよね?
知りえない範囲の各IDを故意に使っているAIってほぼ全部だけど
自粛するの?

132(○口○*)さん :06/08/21 17:00
sage忘れたorz

133(○口○*)さん :06/08/21 17:14
そういう情報を使っているAIの作者だけど。
個人的に、以下のような考えで使用する・しない、見せる・見せないを制限している。
おおざっぱに言えば、あくまで「知られても問題ない」と判断した範囲のみをユーザーに見せている。
極めて個人的な意見・判断なのは否定しないし、故に人にこのパターンを強要する気はないが、
反論されても変える気もない。

・キャラIDは、「名前の代替」なので、OKと判断。
 同じアカウントで共通になるのは知っているが、「同じアカウントということがばれても」普通は何の悪影響もない。
・スキルIDは、「スキル名の代替」なので、OKと判断。
 スキルIDがばれても、何か悪影響があるとは思えない。
・mobIDは、直接ユーザーには見せていないし、今後も直接見せる気はない。
 ばれても問題ないとは思うが。
 内部的には使っているが、それは人間が「同じ画面内にいる敵の区別」をしているのと同じレベル。
 なにか不都合があるとは思えない。
・mobIDから敵のIDが取れて、それはファイルに記録している。
 これは「敵の種類名称の代替」なので、OKと判断。
 それがばれたからといって、何か不都合があるとは思えない。

134(○口○*)さん :06/08/21 17:16
見た目が怪しすぎて受け付けないなー
ハイドクロークCW見破ってカプリス叩きこんでるけど
具体的に出力させるのには抵抗感がある

黒か白かと問われたら、白じゃないかと答えるけど
後ろめたい気分で使うより、自分は使わない道を選ぶ

どっちにしろ、ここで公開しようとしまいと
同じような機能を付けてる人は少なくないだろうしね

135(○口○*)さん :06/08/21 17:25
http://www.ragnarokonline.jp/gamedata/episode/060314/homunculus.html
>ホムンクルスのAIをカスタマイズするために、「AI」フォルダ内のスクリプトを
>改変したものを使用しても構いません。

AIスクリプトはクライアントの一部であり、スキンのように改変を許可されているだけ。
つまりAIはプレイヤーではない。
クライアントがプレイヤーに見せない(プレイヤーが知り得ない)情報も、
AIが処理に使う分には問題があるとは思えない。

>>127,134
スレが荒れないための線引きという話だから、Gv事情は関係ないし、
ここで公開しないということにも意味がある。
ていうか>>111

136134 :06/08/21 17:25
連投スマソ
ただここに常駐し公開してるとスレが荒れて他の話が出来ない要因になるから
自分のblogやHPで改めて公開したり意見を求めたりするほうが良いと思う

137(○口○*)さん :06/08/21 17:49
AIスクリプトがクライアントの一部ならmob、スキル、キャラIDも
画面内キャラクターの座標も「クライアント」で知りえる情報になっちゃうYO!

AIスクリプトが「クライアント」に含まれるのかどうかの問い合わせには
措置や警告の抜け道を指し示す事になりかねない為、返答不可と言われたし・・・
ハイドは特に不要だけど、もうちょっとはっきりして欲しい気がする・・・

138(○口○*)さん :06/08/21 17:55
>>136
スレが荒れないために製作者にAI規制しろと言う意味ならば、それは違う気がするんだよね。
あくまで各個人の問題であって、規約的には今のところ違反でもなんでもないし。
スレ全体の方向で臭い物に蓋をするなら、それこそrapso等の自動PP機能の紹介
(テンプレからいけるAI比較表のリンク)やその話題自体止めた方がいいと自分は思う。

もっともココで本格的に感想・意見交換をやられても困るので、ココから先は自BLOGに行ってくれという意味なら同意。
テストかねて宣伝・意見募集にアド貼り付けるくらいなら別にかまわないけど、これ以上議論でgdgdになるのは微妙。
少しでもスレで叩かれた機能を全部未実装にする、というスタンスが作者氏にあるのならばこのままでもいいとおもうけど。


そして1番愚痴りたいのは管理会社のテンプレ返答の無能さ_| ̄|○

139(○口○*)さん :06/08/21 18:16
>>137
クライアントはもともと知っているし、AIの中で閉じているうちは問題がない。

それをプレイヤーに知らせるっていうのはまた別の話。

140(○口○*)さん :06/08/21 18:17
失礼。
AIの中で閉じているうちは問題があるとは思えない。

141(○口○*)さん :06/08/21 18:20
>もっともココで本格的に感想・意見交換をやられても困るので、ココから先は自BLOGに行ってくれという意味なら同意。

ならまずアンタが黙るといい。無自覚なのがタチわるい。煽りででなく。

142(○口○*)さん :06/08/21 18:41
流れを切りつつ少し気になった事を。

進化バニルでこっこAIを使っています。
最近気付いたのですが、かなりの率で敵一体に対して自動カプリスが一回しか発動しないようなのです。

ホムが攻撃をしはじめカプリス発動→敵を倒すまでひたすら叩いてる

という感じです。


自動スキルの発動率を上げたり、ばくれつけんモードにしても同じでした。
初撃でのスキル発動はオフで、戦闘時間によるスキルレベル調整をオフにしても変わりませんでした。

攻撃中にホムを移動させるなど、無理矢理攻撃をやめさせた場合は
再びスキルを使ってくれます。


ただ、たまにちゃんと複数回かスキルを使ってくれる時もあります。


そこまで困っている訳ではないのですが、やはりスキルをばしばし使ってもらいたくて…

ちなみにver3.00、2.63で確認しましたがどちらもダメでした。
ただ、ver2.18を試したところ
問題なくスキル連発してくれました。


少し分かりにくいかもしれませんが、分かる方いましたら
宜しくお願いします。

143 ◆g37UcEp//g :06/08/21 20:46
荒れる元になってしまったようですね申し訳ない
確かに運営元が何か示さない以上いまさらな話でしたね

いつまでもWIKIとこのスレ間借りしてるわけにも行かないですしね
どこか外部スペースを探してみます
いつになるかわからないけどこの話の続きはそちらで

>>142
PrivateMoonより引用
>●オートスキルを使わない相手を設定する(Ver2.43以降)
>オートムーンライト(カプリス)は基本的に全ての敵で発動しますが、意図的に使わない相手を登録することが出来ます。
>オートスキルに関する変数カテゴリのEditNoSkillをtrueにすると、

>手動でムーンライトLv1を使用したとき、その相手Mob種に対しては以後オートスキルを使わなくなります。

>AS非使用Mobリストは、NoSkill.iniで保存されます。デフォルトでは草・キノコのIDが一通り登録されています。
>この機能はデフォルトではオン(ture)になっていますが、EditNoSkillをfalseにして機能オフすれば、Lv1のムーンライト(カプリス)を使ってもMob登録はしません。
コレじゃない?
2.20から設定のセーブ機能がついたって話しだからちょうど掲示されてる情報にあってる
コレじゃないにしてもこの手の設定ファイルに何か保存されてそうだから
一度古いの捨てて新しいの落としてきてやればいいかも?

144(○口○*)さん :06/08/21 21:02
平均戦闘時間記録の方が原因じゃない?
一定時間過ぎるとASしなくなる仕様のはずだけど。

145142 :06/08/21 21:19
>>143
>>144
レスありがとうございました。

平均戦闘時間記録も含め設定ファイルを一度すべて削除し
バージョンも最新の3.12にしてみたところ
ちゃんとスキルを使ってくれるようになりました。

アドバイスして頂いてありがとうございました。
とても助かりました。

146(○口○*)さん :06/08/21 22:55
すいません、mobdata2に乗り換えてみた工体AI使いのばにるなのですが
なんかmobdataがうまく働いてないのか、SELF_SKILL_RIVAL_TABLEを設定してもあんまりボルトを連射しない気がします
前スレを見てAILIBにreturn GetMobData2( mv, id )とif v == name thenを前のを消して付け加えたのですが
移行方法何か間違ってたりしますか?お助けください(´・ω・`)

147(○口○*)さん :06/08/22 12:23
デフラグしたんでRO再インスコしたんだ
そしたら、ROフォルダの中に今までなかったLua.exeってのができたんだケド
これって何するのに使うの?必要ないもの?

148(○口○*)さん :06/08/22 12:36
とりあえずダブルクリックよろ

149(○口○*)さん :06/08/22 13:09
ちょっとググった感じではlua(ホムンクルスを制御するAIで使われているプログラム言語)のコンパイラか何かなのだろうか?
最新のクライアントには含まれてるのかね
少なくともうちの使ってるクライアント(たぶん060113ver)だと含まれてないみたい
まあ普通にゲームしてる分には触る必要も無いかと

150(○口○*)さん :06/08/22 13:18
ダブルクリックしてみてもプロンプト開くだけで別段何も起こらない
必要なさそうな感じだね
それにしても、何のために入れたんだろう?

151(○口○*)さん :06/08/22 13:50
以前の不正ツール混入事件があるから、怖くて開く気にもならない

152(○口○*)さん :06/08/22 13:57
>>147
コマンドラインからLuaを動かすインタプリタ
ttp://homepage2.nifty.com/kujira_niku/okayu/lua.html

ここのと比較して同じだったらコレじゃね?

153(○口○*)さん :06/08/22 14:53
どうやらlua5.0.2のスタンドアロン版同等。
Luaで公式に配布されているものと使える関数は同じ。
つまりtableやloadlibが存在していて、RO独自関数はダミーすらない。

初期化にRO独自関数を使っていないAIなら、文法チェック程度には使える。
あとLuaの文法や挙動に自信がないときに、対話モード(引数なしで起動)で
実験するのにもいい。

154(○口○*)さん :06/08/22 14:54
全く同じではないがそれっぽぃ

素人には何に使うのかさっぱり分からない・・

155(○口○*)さん :06/08/22 18:17
マジか
文法チェックや対話モードはいいな、クライアント再DLしてこよう

156(○口○*)さん :06/08/22 20:49
>>146
NO_USE_MAGIC_MDEFを調整しても起きる?

157146 :06/08/23 17:15
>>156
そこの機能はnilで使えないようにしてあるから大丈夫なはずなんですけど・・・
SELF_SKILL_RIVAL_TABLEで名前で登録してあるのですけどやっぱり魔法の落とし方が普通通りな気がするのです
一応登録してるのはイグニゼム=セニア、ヒュッケバイン=トリス、アルマイア=デュンゼなのですけど
試しに違う敵で調べてみますね

158(○口○*)さん :06/08/23 19:14
次期Verでない旧版も中身は最新なので、移行変更前に戻しても同様な症状が起きれば

オートスキル関連の設定
SELF_SKILL_FIRST_ATTACK がtrueになっている -> 初撃以外スキル不使用

SELF_SKILL_PERCENTAGE が低く
SELF_SKILL_BURST_PERCENTAGE が高い -> 強敵モンスターに対して使う分のSPが確保されていない

SELF_SKILL_RIVAL_BURST がtrueでない -> 高確率設定がされていない

SELF_SKILL_RIVAL_TABLE の名前がmobdataと違う -> 高確率設定の失敗

SELF_SKILL_RIVAL_LEVEL が低い -> 一様に高確率使用

SELF_SKILL_HIGH_DEF_BURST がtrueになっていて
SELF_SKILL_HIGH_DEF が低い -> 回りが高DEFで一様に高確率使用

MAPに該当の強敵が多すぎて常にSPギリギリ -> 確率がSP回復時間に左右されほぼ一定

この辺も確認してみてください。

おまけ
1652 イグニゼム=セニア
1653 ヒュッケバイン=トリス
1654 アルマイア=デュンゼ

159(○口○*)さん :06/08/24 00:35
アンケート、こっこAIが強いなぁ・・・

160(○口○*)さん :06/08/24 00:37
こっこの場合、機能が豊富というのもさることながら、
もともとキャラ人気があるっぽいのが強い原因のような気がする。

161(○口○*)さん :06/08/24 00:46
それで一位二位がこっこAIとどきどきAIなのか

162(○口○*)さん :06/08/24 00:56
つい数日前は工体がTOPだったと思ったが。
なんで短期間でこんな圧倒的な差がついてるんだ。
まさかとは思うが・・・。

163(○口○*)さん :06/08/24 01:04
組織票。


かどうかはわからないが、これ重複投票出来るぞ…?

164(○口○*)さん :06/08/24 01:10
>>161
知名度だろうな。もちろん需要を満たすだけの機能があるのも認めるが。
ぜろまてAIはライトユーザーの利用者が多そう。

>>162
単純に各AIサイトがアンケートにリンクしたからじゃね?

数日前までのアンケート結果:ケミスレ読者の利用分布
最近のアンケート結果:RO全般での利用分布

このスレに興味ない人だと工体AIの存在すら知らない人も事実いる。

165(○口○*)さん :06/08/24 02:14
デファクトスンダードってヤツだな
認知度が高くてまぁまぁの性能なら何でも人気が出る世の中だし

166(○口○*)さん :06/08/24 02:19
今まで工体AIをカスタムして使ってたんだが、試しにこっこAI使ってみた。
設定もやりやすいし、欲しい機能もそろってるし、カスタムしなくても十分使えるな。

167(○口○*)さん :06/08/24 02:49
>>164
数日前までのアンケート結果:ケミスレ閲覧者+初回限定閲覧者
最近のアンケート結果:こっこ、どきどきサイトの閲覧者+α

AIの機能に拘らず作者の人柄が好きで使う事も考慮すれば
組織票じゃなくても概ね妥当な数字だと思う

168(○口○*)さん :06/08/24 05:31
デファクトスタンダードと聞くと真っ先にマイクロソフトとIntelが思い浮かんでしまう俺

169(○口○*)さん :06/08/24 07:11
重複できる時点で信憑性なんて無いだろ

170(○口○*)さん :06/08/24 07:28
ケミスレテンプレに比較表人力アンテナが入れば
また変わるかもしれん
工体はテンプレから飛べるが、上級者向けってことわりが付いてる

171(○口○*)さん :06/08/24 14:32
アンケートが荒らされてるな・・・
韓国AIが一位というのはどう考えてもありえないだろ

172(○口○*)さん :06/08/24 14:44
大方「韓国が一位じゃないのはおかしいニダ!」とファビョったチョンが
必死に投票し、261票入れたところで飽きたか疲れた、ってとこだろう

173(○口○*)さん :06/08/24 15:08
ひどいなこれは…。
重複投票の簡単な回避くらいはIPログ取るだけで出来るはずなんだけど、
Wikiだとそういうの出来ないのかな。

174(○口○*)さん :06/08/24 16:04
>>173
Wikiの簡易的な投票システムだと対応できないです。
事情によりすぐに対応できないので、投票できなくしておきました。

175(○口○*)さん :06/08/24 19:08
工体のファイル置場が復活してた
AIの更新も期待・・・・・出来るといいな

176(○口○*)さん :06/08/24 20:08
凍結時点の投票データを順位別に並び替え

1位 こっこAI 32%
2位 どきどきAI 27%
3位 rhapsoAI 10%
4位 工体AI 10%
5位 くまAI 8%
6位 自作 3%
7位 きのこAI 2%

ここから先は1%以下なので省略

177(○口○*)さん :06/08/24 21:20
ttp://pc3merchant.net/ai_antenna/enq/index.cgi?

どうやら仕切りなおしの様子

178(○口○*)さん :06/08/24 21:29
>>167
こっこの中の人乙^−^

179(○口○*)さん :06/08/24 21:37
とにかく高速攻撃ルーチン(AIメインループの頭と最後にも入れる)が最優先だろ
これが全AIに搭載されるとまた変わる

180玉蟲の人。 :06/08/24 22:07
>>178
こっこ中のひとかどうかは分からないけど、こっこは完成度高いと思うよ?
基本的な機能、ステップコマンドをはじめとする拡張機能とか見れば
まぁ それなりに納得の行く結果だとは思ってるけどね

>>179
全AIに3連攻撃は難しいよ。すべてのAIが標準AIをベースにしてるわけじゃないからね
最後に攻撃コマンドを入れる2連攻撃ならできるけどね

っと旧アンケートで3票しかもらえなかったマイナーAI玉蟲の中の人でした

181(○口○*)さん :06/08/24 22:16
>>180
学習するというのはツボな人には良さそうだけど、
自分の場合は、自分で決めた発動率が自動で変化されると嫌な感じかなあ
試してないので偏見だったらすみませんorz

182(○口○*)さん :06/08/24 22:20
そういうスタティックな動きをさせたい人は工体とかくまでいいと思うよ。
好みの問題なんだし、むしろ学習系は癖があるから本来あんまり初心者向けじゃないと思う。

183167=175=ASAHI-NETのmobdataな人 :06/08/24 22:27
>>178
乙あり

ホムンクルス用ライブラリplayerjobdata.lua
プレイヤーを100000のみで判定に変え
GunslingerとNinjaらしきIDを見切り設定しました。


MAPライブラリにタナトス・アビス差分を用意しました。
MapReader.lua本体は無変更なので該当MAPが不要ならそのままで平気です。
Glenelg使いの方は自動判別の対処されるまでmap.htaでの個別指定が必要です。
工体版のMAPデータはもう暫く本サイトの動向を見てから判断します。


>>146,157
その後何か進展があれば報告お待ちしてます。

184(○口○*)さん :06/08/24 22:27
そして結局は上級こっこと初級どきどきに二極化するわけか

185Glenelgの人。 :06/08/24 22:36
まあ、全部のAIをつかってみろや、とは言えないからね。
変則的なこと(内部動作にしてもユーザ操作にしても)をやっているAIは、
どうしても敷居が高く感じられるのは仕方ないところ。

>>179
高速攻撃、必須なのかねぇ・・・
うちでも実験して確かに「うちの進化バニルでは」速くなることは事実として把握してるけど、
モーションキャンセル自体が論理的にも手法的にも保障・裏づけがないのが苦しいところ。
他のホム・環境で同じように高速になるという保障がないから、「速くならないじゃん」って
クレーム付いたらどうしようもないのがネックになるので、入れてないんだけど。
そういう事前説明付きで対応しようかしらん。

186玉蟲の人。 :06/08/24 22:42
>>184
まだアンケート序盤だから2極化までは、行かないんじゃないかな?
工体とかrhapsoAIの使用者とかもまだ投票されてないだろうしね

>>185
そういう時はこっそり入れて告知しないといいよ。
うちのも同じ理由でこっそり導入してるからね・・・

あと製作者は自作AIに投票すりゃいいのかな?

187Glenelgの人。 :06/08/24 22:44
>>183
まいどどうもです>地図情報

認識情報収集に行かないと・・・
最近の追加マップはソロで行くのはきついんだがなぁ(笑)

188(○口○*)さん :06/08/24 22:49
>>185-186
高速攻撃というかモーションキャンセルは
自分にとっては最重視項目

まああくまで一名無しの意見なんで、参考にするほどでもないかと
個人的には対応が容易なら普及して欲しいと思うが

189(○口○*)さん :06/08/24 23:00
進化ホムのASPDを上げるのはないと困るな
時給に直結するし戦い方も変わってしまうから

190(○口○*)さん :06/08/24 23:21
アンケートをずっと更新連打してヲチしてたら、2分に1回くらいこっこの票が増えててワロタ
いくらなんでもそんなペースで、こっこAIを使っていて尚且つあのアンケートに答える人がいるのか?

191(○口○*)さん :06/08/24 23:25
仕切りなおしってここで発表しちゃってるから
それ見て投票しなおしに行った人けっこういるんじゃない?
最低でも旧投票結果までは増える可能性はあるわけだし

192(○口○*)さん :06/08/24 23:27
15分で10票入った
ここを見てる人がそんなに多かったのは驚きだw

193(○口○*)さん :06/08/24 23:29
ケミスレにも貼られたし0マテでも貼られてる。
前回の結果が虚偽じゃなければそれに近い結果になるだろうけども。

194アンテナの中の人。 :06/08/24 23:30
現在進行形で多重されているのを確認しました。
IPを替えて投票しているみたいですので、対応が難しいです。
仕事中なので対応できませんが、またリセット予定です。

195(○口○*)さん :06/08/24 23:31
>>190
配布元が大手サイトという事を忘れてないか?



妬み乙

196(○口○*)さん :06/08/24 23:35
>>195
>>194
だそうな

197(○口○*)さん :06/08/24 23:47
>>194
やっぱりこっこは多重だったってこと?

198(○口○*)さん :06/08/24 23:50
投票ももういいんじゃないか?
人気AIだからこれにしようかな、と同じAIばかりに偏っていては
サイトがマイナーだとか些細な理由で、優良なAIが埋もれてしまう結果になる
ちなみに俺はAI作者でもなんでもないんで妬む理由もこっこAIを叩く理由も何も無い
ただ投票速度を不審に思っただけ

199(○口○*)さん :06/08/24 23:51
>>194
どうやって多重を確認してるんだろう?
ここアマプログラマ(?)も結構居るだろうし
皆で話し合ったら対策立てられないかな?

まぁ
ここで話し合っちゃったら対策の対策立てられそうな気もするけどね

200(○口○*)さん :06/08/24 23:56
こっこの中の人乙wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww

201(○口○*)さん :06/08/24 23:57
乙あり

202& ◆BuZFvddac6 :06/08/25 00:00
そう言うことになります。
ただそれがこっこAI使用者はマナーが悪いと言う事とイコールではない事に注意してください。

>>199
今回はIPとブラウザを記録しています。
明らかに似たIP、同じブラウザで何件も投稿されていました。

詳しく記入はしませんが、対策しやすい手口でしたのでがんばって対応してみます。

203(○口○*)さん :06/08/25 00:12
>>198の言う通り、争いの火種になるだけだから
もうアンケートはやめにしないか?

一回目(>>176)と二回目の投票結果を比べても
分布に大きな誤差は見あたらなかったわけだ

なによりこんなgdgdを何度も繰り返してたら
投票数が少なかったAI作者のやる気を削ぎかねないだろ・・・

204⊂(*'ω')⊃ :06/08/25 00:17
正直な話、シェアが拡大してるからっていいことなんてそれ程無いと思ってます。
自分のAIを使って、それで喜んでもらえるならそれは嬉しいことなんですが、
あまり多く広められるほど精度の良いAIが書けているとも思えないし、
妙な責任感のようなものを自ら背負ってしまったり、ときに背負わされたりと。

使いたい、と思ってくれる人にはその気持ちに応えたいと思いますが、
何分プロではありませんし、そもそもAIだって自分のホムのために作ってるわけです。
主観ですが、私のAIなんかより工体さんの方がよっぽどスマートな構成してると思うし、
設定ツールがあるくまさんは凄いと思うし、クセのあるAIだからあんまり
人にお勧めできるもんじゃないなぁと思っています。
実際このAI投票の結果もいろいろ複雑な気持ちで見てました。

>>198
仰るとおり、AIが偏ることは結果的に全体のためにならないと思います。

>>200
乙あり

205アンテナの中の人。 :06/08/25 00:18
それもそうですね。
少し頭に血が上っていました。

お騒がせしました。

206198 :06/08/25 00:27
>>こっこの中の人
サインいただいていいですか!orz
サイトちょくちょくみてます、面白くていいですね・・っとスレ違いか

投票数少なかった作者さんにも独自機能とかこれからも頑張っていただけたら幸いだなー

207(○口○*)さん :06/08/25 00:30
なにはともあれ、企画としては面白かったですよ。
一AI作者としては目標にもなりました。

208(○口○*)さん :06/08/25 01:51
工体AIを使ってて、ASPD最適化をしたいのですが
どうやればいいでしょうか?
54のをやってみましたがエラーでできなかったです・・

209(○口○*)さん :06/08/25 01:56
個人的には利用者数なんてアクセスログ見りゃわかるけどあんま興味ない

210(○口○*)さん :06/08/25 03:03
AIいじりとバイトに明け暮れていたらこんな面白い流れになっていたなんてw

アンケートは企画としては面白かったですね、
「AI用のBBSに来る人は毎日10人前後いるのに投票すくNEEEEEEEEE」とか思って楽しんでたのにw

アンケートは凍結した方がよさそうですね、するならもっとローカルな、AI紹介とはあまり関係ないようなところがいいでしょうね

もし再びアンケート投票再開するなら多重を防ぐ良い方法がw
同じIPはじくのはもちろん、投票の時にテキスト窓への入力も必須にして
「このAIのいいところは?」
「他のAIではなくこのAIを選んだキッカケは?」
「このAIを使っての乾燥は?」
といった項目に必ず答えなければならない、とすれば多重はかなり減る

多重する時は投票の数だけ違うコメントを考えないといけないから!
コピペっぽい同じコメントの投票は無効にすればいいと思う

でも最初に書いたとおり、やるならもう少しAI紹介の役割から離れたサイトがいいかなと思います

211(○口○*)さん :06/08/25 03:04
>>208
>>85

212(○口○*)さん :06/08/25 10:39
投票は余興としてはおもしろかったし、各AI作者さんのコメントが聞けたしで
最後はgdgdにはなったけども、とりあえずよかったかな。

>>210
投票という、さながら優劣を数字で争うような形にするから、最強厨やら
愉快犯が紛れ込む。
やるならより単純に、ただの記述式アンケートにすればいいんじゃない?
投票じゃないから集計は不要。
数ではなく、読み手がコメントの質で判断することになるから、多重云々は
大して問題にならないはず。
(妙に重複っぽいコメントが目立つなら、それはそれで「裾野の広いAI」だといえる)
ただ(余興としてではなく)成功させるためには、もっと明確な「目的」を
設定する必要はあるけど。

個人的には(>>210の設問とほとんど変わらないけど)
「なぜそのAIを選んだのか」「どこが気に入ったのか」
「強いて不満を言うなら?」というアンケートに興味あるかも。

独自機能が気に入られるのか、それとも目立ちにくい基本性能が評価されるのか。
もしくは平均的に機能を備えているほうがいいのか。
どきどき・こっこの人気には、出来とネームバリューのバランスがどれぐらいなのか。
とかそのへん。

213(○口○*)さん :06/08/25 11:17
そのAIをどこで知ったか?ってあたりじゃないか?

214(*○□○)さん :06/08/25 18:55
微妙に今更な機能だけどくるくるが無くて使わなかったAI向けに

http://himenomikoto.at.infoseek.co.jp/kulus_project/index.html#revolver.lua
ホムンクルス用くるくるライブラリ revolver.lua
require "./AI/USER_AI/revolver.lua" -- AI.luaの文頭に追加
if Revolver() then return end -- OnIDLE_ST () 索敵とケミ距離判定の間に挿入
ResetRevolver () -- AIメイン関数の最後に追加

くるくるパターン
その場で小さく、円形、十字、四角、菱形を時計反時計回りの
2パターンと範囲内ランダムの計11パターン
RoundArrayにstep数とケミから見た{x,y}差分座標を指定でカスタム出来ます。

くるくる動作検証済みAI(挿入箇所概説あり)
工体、幻塵、安っぽい、初回限定、Glenelg

既存の回転動作があるAIもデフォルトの機能をOFFにして
類似箇所に追加すれば動作すると思います。

215(○口○*)さん :06/08/26 01:38
176 名前:(^ー^*)ノ〜さん[sage] 投稿日:06/08/25 21:06 ID:ZGZ2PCLe0
つい最近までくまAI使っていた者ですが
鳥も進化しあともうちょい頑張れば奥義を覚えれそうなので
こっこAIに変えてみた所AIデフォ状態でも敵が3匹↑溜まると
非常にスタックして本体も動けずスキルもアイテムも使えずに敵のダメージだけ貰うという
ステキ状況になってしまったのですが
こっこAIマジ使えるぜ!と言ってる人達はどういう環境で使っているんでしょうか・・・?

ちなみに私のPC環境はCPU1.8G メモリ512M グラボは数年前の物でFF11が結構滑らかに動く程度の物を使っています・・
AIスレに書き込むべきなのでしょうが向こうはなんだが寂れていそうなので本スレに書き込ましてもらったのですが
どうかご教授の方ヨロシクお願いしますorz


176本人じゃないけど、BBSの方でも似たような報告があったので気になってこちらに持ってきてみた。
こっこAI使ってて同じことが起きたって人居るかな?
あれだけ使われてて報告が2件だけだと使用者の環境に何か問題あるのかもしれないが…。

216(○口○*)さん :06/08/26 02:15
キャラ人気があると愛着持って使われたりするからなんとも言えない
スタック自体右クリック移動ですぐ脱出するし、気にならないやつは報告しないんじゃないかな

217(○口○*)さん :06/08/26 05:56
リーフ用にメンチェン→安息→コール→メンチェン→・・・無限にメンチェンできるAIってありませんか?

218(○口○*)さん :06/08/26 06:14
ホム畳んでるのにAIでコルホムとな。

219(○口○*)さん :06/08/26 06:22
アルケミスト同士のPTで
PTのホムと共闘するっていう風にはできませんか?
一緒に狩りしててもどちらかが殴らなくなってしまいます
方法もしくはできるAIがあれば教えてもらえませんか?

220(○口○*)さん :06/08/26 07:03
PTのケミのホムを友達登録すれば普通に共闘してくれると思う。
ただし、相手ホムが死んだり、MAP移動したり、安息コールしたりするとID変わるから、
その場合は再登録が必要となるはず。

221(○口○*)さん :06/08/26 10:50
>>217
コールホムンクルスも安息もケミのスキルです。

222(○口○*)さん :06/08/26 11:53
工体の人更新待ってるからねー!(>_<)

223(○口○*)さん :06/08/26 12:17
>>217
ホムが居ない時にAIは動かない。
安息まではいいが、その後どうやってコールホムするというのだ。

手動でやれ手動で。

224(○口○*)さん :06/08/26 12:58
>>217
ソロ狩りならテレポ(ハエ)でもしとけばいいんじゃね?
出た瞬間に1回使うって設定AIに組み込んでからな。
こっこAIなら4分経過あたりでくるくるとかしてくれるはずだし、
そしたらもっかい飛べばいいだろ。これじゃ何か不満でもあるのか?

225(○口○*)さん :06/08/26 16:42
この流れで思いついた。突っ込まれるのは承知の上。

死にそうなHPになったら自動でリザホム詠唱開始するのよくねー?
あとイクラが詠唱はじめて2秒後とかにスイッチ入るようにしとけば
うっかり爆破されたときもオートで対処できるぜ!!!

226(○口○*)さん :06/08/26 16:45
>>225
寝落ちでボンバーマンに爆破されても、本体のSPがある限り永遠に蘇り続けるな

227(○口○*)さん :06/08/26 16:51
>>225
やったことあるけど、モーションディレイとかで隙間あるから成功率低いよ
それにAIからリザホムするとホムに詠唱タゲが見えるんで
見た目が相当怪しくなる

228(○口○*)さん :06/08/26 16:52
ホムが死ぬような状況で自動リザホムなんかやったら、主人が沈没する可能性が高いな
例えばオーガトゥースと戦闘中にホムがSBで死ぬ→リザホム詠唱により行動不可→主人がSBで死ぬってことになりかねない
リザホムするならジオ+白PPで十分なHPを確保したり、危険なモンスターやMHを処理してからじゃないと危険すぎる

229(○口○*)さん :06/08/26 19:05
こっこ用スタック回避 AI()の末尾にStuck ()を追加
適当に書き殴っただけだが機能ははしてるようだ。誰かキレイに書き直しておくれ。
工体の場合はIDLE_STの状態でも移動可能なのでもうちょいスッキリする。

stuck=0 --グローバル変数
function Stuck ()
--待機から復帰させる 一回だけだと全く移動しないのでループ二回分FOLLOW_CMD_ST
 if MyState == FOLLOW_CMD_ST then
  if stuck>=100 then
   MyState = IDLE_ST
   stuck=0
  end
  if stuck>=10 then
   stuck=100
  end
 end
-- 交戦中に10回連続でスカだったら待機させて主のとこに戻る
 if MyState == ATTACK_ST then
  if stuck>=10 then
   MoveToOwner(MyID)
   MyState = FOLLOW_CMD_ST
  end
  if GetV(V_MOTION, MyEnemy)~=MOTION_DAMAGE then
   stuck=stuck+1
  else
   stuck=0
  end
 end
end

230(○口○*)さん :06/08/26 19:14
>>229
stuckの閾値をもうちょい引き上げてもいいかも。
1回の攻撃に対してATTACK_STは2〜3回ってるはずだから
それだと3〜5連続スカぐらいでスタック判定になる。
3連スカくらいなら普通に起きるしな…。

あと敵の座標ズレが問題の場合は、いくら一度IDLEに戻しても
敵側がズレたままだとまたスタックする可能性あるし、難しいとこ。

231(○口○*)さん :06/08/26 19:28
ついでなんで工体用 普段こっちを常用してます。
ATTACK複数回送ってるけど判定はループ一回につき一回なんで大丈夫。
相当な時間チェックしてるけどスタックでとまってた事はないですね。
ゼノのタゲとって少し引っ張るとスタックさせれます。確認するときにどうぞ。
stuck=0 --グローバル変数
以下をAI()末尾に追記
if (MyState == ATTACK_ST) then
 if stuck>=10 then
  MyState = IDLE_ST
  MoveToOwner(MyID)
  stuck=0
 else
  if GetV(V_MOTION, MyEnemy)~=MOTION_DAMAGE then
   stuck=stuck+1
  else
   stuck=0
  end
 end
end

232(○口○*)さん :06/08/26 19:31
AI素人に○○AIの何行目に追加すれとかおしえてくださいませんか

233(○口○*)さん :06/08/26 19:36
>>232
>>229
>AI()の末尾にStuck ()を追加

で、こっこ用が>>229、工体用がStuck()の中身を>>231にしたもの。
Stck()を追加するとAI()の末尾の行変わるから指定しづらい。


あと、>>229なんだけどFOLLOW_CMD_STじゃなくてFOLLOW_STに送れば
前半部分要らなくならない?

234(○口○*)さん :06/08/26 20:23
>>233
プログラム経験ないと末尾とか言ってもどこを挿してるのかわからんぞ

235(○口○*)さん :06/08/26 20:37
それもそうか。
でもどのAIのを答えたらいいのかもわからんので指定して欲しいな。
よもや全部のメジャーな配布AIについて答えろとでも言ってるのか。

236(○口○*)さん :06/08/26 20:48
話の流れから工体のような気もするけど
まあ工体とこっこで良いんじゃないかしら?

237(○口○*)さん :06/08/26 20:51
>>232
>>52-56あたりを参考にしておくれ。
行頭に全角スペースが入ってるから半角に置換しないとエラー出るよ。
適当に書き殴っただけなんで、詳しい人キレイにまとめておくれ。
俺の知識だとこんなもんで精一杯とです。。
要点をまとめときます。
射程が長い敵、ノンアクティブの敵でスタックしやすい(ゼノーク、ヒルウィンド、オークアチャなど)
スタックしてるときはいつもMyState == ATTACK_STで無限ループしてる。
時間でスタックを判断でも良いけど、タフな敵のときに問題が出る。
こっこの場合はステータス変化が激しいから(if endでAIを回している)一回FOLLOW_CMD_STにしないと移動しない。

238(○口○*)さん :06/08/26 20:57
>>237
それだったら「ダメージモーションじゃない時間」でも良くないかな。
あともう一度聞くけどFOLLOW_STじゃなくてCMDの方なのは何故に?
FOLLOW_STのがスマートにいかない?

239(○口○*)さん :06/08/26 21:10
>>238
そっちんがスマートだね。また時間があるときにでも推敲してみるよ。
本スレで荒れてたから、とりあえず自分で使ってるのをそのまま投稿したんよ。
プログラム経験ほとんどないからスマートなやり方じゃないってのはわかってる。
ここに投稿しとけば知識ある人が、うまくやってくれると思うんでたたき台にしとくれ。

240(○口○*)さん :06/08/26 21:33
ケミスレからの伝言を持ってきた
>>215の奴だが少々、精神に異常を来たしてる奴だった
わざわざ誘導させてもらったが、どうもまともな会話の通じる生物では無かった
>>215の件は今後無視してくれて構わない、俺
がこんな事を言う理由はケミスレを見てくれれば理解出来ると思う

241(○口○*)さん :06/08/27 03:39
本スレは見てないが、なんとなく理由に察しがつくあたり嫌だな。

242(○口○*)さん :06/08/27 08:44
Lv90鳥持ちのケミです。
自分の鳥はこのまま99になるとFM5でASPD189になりそうなんですけど、
AIって約140msごとに回ってますよね?
189だと220msに1回くらいだと思うのですが、AIの回る速度から考えると
1回目の140msでは無視されて、次の280msに攻撃される事になってしまいます。
となるとASPD189の数値は出なくて、大体186くらいまで下がってしまいそうなんですが、
これをなんとかASPD189に近づける方法はあるのでしょうか?

243(○口○*)さん :06/08/27 09:18
>>49くらいから読んでみるといいとおもうよ

244(○口○*)さん :06/08/27 10:27
>>243
返答ありがとうございます
いつもこのスレは読んでいますが、
49以降読んでもそれらしいレスを見つけられませんでした
ATTACK()を増やすだけでは出来ないのでは?と思ったので質問しました
ATTACK()を追加して効果が出るのはモーションキャンセルの話じゃないんですか?

245(○口○*)さん :06/08/27 11:11
そのあたりの詳しいのは、前スレですね。
概要を書くと・・・理論上最速を出そうとするなら、方法論は2つありそう、ってことになっている。
モーションキャンセルと、時間あわせ。

モーションキャンセルは、Attack()を複数出すことで起きることがあって、発生すれば前の攻撃のディレイを消せるらしいというもの。
「理論的に確実にできるかどうかは判らない」ものだが、もし1サイクルで確実にキャンセルできるなら、140msecごとに攻撃が発生する。
繰り返すがその「確実にキャンセル」という方法がわからないので、この手法で242氏の求める速度がでるか否かは保証はない。

もう1つの手法:時間あわせは、ホムの攻撃速度に無理矢理AI()の動作タイミングを合わせる方法。
例えば242氏の例だと、一度攻撃を行ったあとAIを無理矢理80msec止めることで、次のAI動作タイミングを220msec後にしてしまう。
理論的には、かなり確実に速度調整できる。
だがこの手法では、時間合わせする量によってはユーザーから見るとROクライアントが
「ラグってる」ようになってしまい、操作性が落ちる。
また、通信系の問題:140msec周期ということ自体が安定していないので、無駄に時間待ちしてしまうことはある。

246(○口○*)さん :06/08/27 11:20
AIの周期は環境によるけども140〜200くらい
それに一回一回の周期も固定ではない
そうするとスリープをさせてその秒数にしようとなったけども
もしスリープ時間が長いと、クライアント自体がスリープしちゃうのでラグみたいなのが発生してしまうし
通信の関係で、ちゃんと220msに調整してもASPD189にならない可能性もある

だったら 何度もAttack()関数を呼んで、ASPDを高くしようということなの
モーションキャンセルの話でもあるけど、ASPDを189に近づける方法として
現段階では、3連Attackもしくは2連Attackが有効であるとなっているの

もしもっと高めたいなら、ほとんど一緒のやり方だけど、
AI(myid)
 ここにコマンド系処理
 local index_ai = 0
 while (index_ai < 6)
  ここにコマンド系処理を抜いた元のAIをコピー
  index_ai = index_ai +1
 end
end
これでも上がる。これだと元のAIの処理がそのままスリープと似た役目を担って、6回AI処理を行う
スリープを取り入れた時と同様でクライアントが、ラグが生じたような重さになったり、最悪鯖缶されるけど
ポリンに対して、一確ラインの攻撃を2回当てれるようになったりする
これでもダメっていうなら、自分で考えるといいよ
皆今もAspdに関しては、いい方法がないか模索中だと思うし

247(○口○*)さん :06/08/27 12:34
あなたは模索さんじゃないですか?

248(*○口○)さん :06/08/27 16:01
時間あわせの合わせ方を、AI関数の最後にループを掛けるのではなく
AIの初めに前回のAI実行からの経過時間で、動的にループ時間を変化させれば
AI周期のズレは補正できて無駄なラグが減らせる、が操作性が落ちるのは相変わらず・・・・

AIの初めにする補正が30ms以下なら補正してそれ以上ならスルーとかなら
多少間隔がバラけるが、ラグは余り目立たなくなるかもしれない

249Glenelgの人。 :06/08/27 17:15
話の流れをぶったぎります・・・ご容赦を。
ブースト系スキルの常時使用の仕組みを盛り込もうと検討していて、悩んでしまったので、
フィーリル・アミストル使いの人にご意見をいただきたく。

フィーリルのフリットムーブやアミストルのディフェンスなど、
「レベルが上がると相応のデメリットが増える」というようなスキルがありますよね?
このへんのスキル、状況によって使い分けるようなことって、ありますかね?
例えば「普段は低レベルで使用」「対強敵では高レベルで」・・・みたいな感じで。

当方バニル使いなので、このあたりの事情がよくわからないのです。
機械的に固定レベルで使うのならほとんど悩む余地はないのですが・・・

250(○口○*)さん :06/08/27 18:03
>>249
鳥に関してお答えしますが、基本的には固定でいいと思います。
敵ごとにあれを使い分けると、ちょっとSPに無理が出てきます。
そうするくらいなら月光の回数が増えた方がいいような…。

また、各レベルでの効果時間を考慮して、「効果が切れるまで次のFMは使わない」場合だと
敵ごとの設定があっても、次に仕様するタイミングでその場に居た敵に合わせたレベルを使うのみで
機能をそれほど活かすことが出来ないと思います。
また、効果の残り時間を無視して敵に出会ったごとにかけなおすのではSPが持ちません。

「よほどの強敵が現れた時に色々無視してFM5をかけなおす」
とかならアリだと思いますが、普段は固定でいいんじゃないかと思います。
正直低Lv鳥だとMLもそこそこの頻度で使う場合は、Lv1FMの常用も厳しいので…。

251(○口○*)さん :06/08/27 18:09
追記。

逆に言うと、Lvが高くなってくるとFM3くらいの常用は余裕になってきます。
Glenergさんのコンセプトを汲むと、「一定%以上SPが余る期間が長い場合はFMの使用Lvを上げる」とか、
「SPが一定%以下の状態が続くようならFMのLvを下げる」とかやると面白いかもしれません。
FMは敵云々より残りSPとの相談が多い気がしますので。

鳥のSPRはバニルには全然及びませんので、このあたりは掴みづらいかもしれませんが…。
応援してますのでがんばってください。

252Glenelgの人。 :06/08/27 18:34
なるほど、SPの問題か・・・それは考えてなかったですね。
とりあえずは「SPに余裕があるとき」「固定レベル」の条件で進めてみるかなぁ・・・

ともあれ、情報感謝です。

253(○口○*)さん :06/08/27 18:38
掛けなおしのタイミングで、その時タゲられてる敵の数に応じてLv調整するならありかも。
「強敵」となると敵IDを指定云々でめんどくさそう。

テレポ狩りしてるからFM全切りして残りSPに対応した月光連打仕様だなぁ・・・。

254(○口○*)さん :06/08/27 18:45
鳥は狩り方次第でスキルの使い方が分かれるしね。

テレポ索敵だと>>253の通り、FM切りでMLメイン
徒歩索敵だと、狩場・レベルによってFMとMLの割合がきまるのかな?
カツカツなSPをうまく使うことは鳥使いの命題なので、かなり難しいね・・・。

個人的には、「強敵」と会ったときはFMよりもML連打の方で
さっさと倒してしまった方が楽ではあるんだけれども。

255Glenelgの人。 :06/08/27 19:02
一応当初考えていたのは・・・各敵ごとに「欲しい強化スキルのレベル」を持たせるのが前提条件。
(もちろんデフォルトの値は持たせる)
で・・・
・まず周囲にいる敵を全てチェックして、種類&数に応じて強化レベルを決める。
→それが、現状の強化状況を超えていなければ無視。
 強い敵が着たとかたくさん湧いたとかでより強い強化が求められるなら、上書き強化。
・・・って感じでした。
Glenelgではもともと「敵ごとにスキルをnレベルで使う」とか指定できる仕組みを持たせています。
(例えばやわらかい敵にはML1レベル連打、硬いのにはML5レベルとかできるように)
その応用で必要ならば「強敵」指定はできるな〜、なんていう漠然とした読み。

でもまあ確かに、ML連打があるから緊急時はそっちのほうがよさそうですね。

アミストルだと打撃スキルがないから、基本的には同じポリシーでいいのかな・・・

256(○口○*)さん :06/08/27 19:09
羊は羊で、「やっても大差無い」という予感が…。(ノ∀`)
ブラッドラストが使えればそっちをMAXLvで使うだろうし、こっちも微妙かもですね。
羊のSPは鳥よりも更にやばいですから。

257(○口○*)さん :06/08/27 19:11
そもそも戦闘時間が短くなればなるほどSPが回復しなくなるからな

258(○口○*)さん :06/08/27 21:29
トリさんでお気に入りの使い方は、フリットムーブ3ほぼ常時、ムーンライト1を最速で連打。
ムーンライトはレベル1を連打するのがSP効率が良いです。
ここで問題になるのが、ムーンライトのディレイ中にフリットムーブが使いにくいところですね。手動ですらなかなか発動出来ません。
よくあるフリットのコードだと、使えなかったときでも使った事にしてしまうので、しばらくフリットが切れた状態になります。
そこでSPを監視して一定以上減ったらフリットを使ったというフラグを立てて組み込んだほうが良いと思います。
ただ、ラグると連打でフリット5使ったりするんですよね。。なんかウマイ方法がないものでしょうか。

259(○口○*)さん :06/08/27 21:33
忘れてた。戦闘に入るときだけ発動するほうが良いと思います。索敵中に発動するとSPがもったいないです。

260Glenelgの人。 :06/08/27 21:50
一応ディレイ関連はともに監視するつもりですが、ムーンライトのディレイの正確な値ってわからないんですよね・・・

使用トリガーは、すでに戦闘中にしかトリガーされないようにしています。
逆に「非戦闘中でも使用」となるものもあります:リーフの緊急回避は本当に常時です。
まあリーフの場合は、進化後奥義が使えるようになるまでの話だと思いますが。

あとは・・・常時使用するか否かをRO画面上からも切り替え可能にしたいところですかね。

261(○口○*)さん :06/08/27 21:51
そうでなくて、自動も手動もMLの使用があったときにディレイ時間を設定しといて、
そのディレイ時間中は自動FMをスキップするようにすればいいと思う。
FMの効果時間も調べて管理してあると思うから、
条件文は

・フリット効果がきれてかけなおすタイミングかどうか
・ムーンライトのディレイ中ではないかどうか

について見てやればいい。
ディレイ中ならスキップするけど効果時間のほうの使用条件は満たしたままだから
ディレイが切れた後に回ってきた時にちゃんと自動FMの方を実行してくれるはず。

あと、自動MLよりも先に自動FMの方を書いておくだけでも
自動FMが優先されやすくなっていい。

262(○口○*)さん :06/08/27 21:57
GvAIの人ホムペ作ったのかな?

263Glenelgの人。 :06/08/27 23:56
皆さんご意見ありがとうございました。

とりまとめてみると、どうもあんまり「状況による使い分け」は需要なさそうなんで、
単純に
「使用する強化スキルの種類とレベルは、iniファイル記載で固定」
「常時使用するか否かはiniファイル&画面操作で切り替え可能」
・・・っていう形で実装・ベータ版を出すことにしました。

あとは、使用者がどれくらいいるか、ってところだけだ(笑)

264⊂(*'ω')⊃ :06/08/28 01:58
>>263
MLディレイで悩んでらしたようなので軽くコメントをば。
私も正確な値はわかりませんが、以前PvでML連打を検証してたとき、
ディレイ間隔につき1回ずつSkillObjectを送るという仕様で

・スキルディレイを2000ms
2秒チャージで打てることもあるが、大抵はモアレにひっかかり4秒間隔になったり

・スキルディレイを2500ms
ほぼ問題なく2.5秒間隔でML使用

・スキルディレイを2300ms
基本的には2.3秒間隔だが、ラグや処理の微妙な遅延で、稀に遅れる


といった感じでした。
少なくとも2.5秒はとっておけば問題なさそうなので、うちではMLは2.5秒ということにしております。
もう少し減らしても大丈夫かもしれないですけど、参考になれば幸いです。

265(○口○*)さん :06/08/28 07:44
>>231
「何行目付近のXXXXの下にこの部分を埋め込む」みたいな書き方をしてもらえると助かる

266(○口○*)さん :06/08/28 08:05
>>233

267(○口○*)さん :06/08/28 08:57
>>266

>>234

268(○口○*)さん :06/08/28 13:23
>AI()の末尾

function AI(myid)
--中身省略

--ここがAI()の末尾
end

ただしforやifのあとにもendがつくし、それはfunctionのendではないから
対応する数に注意すること。

function AI(myid)
 if 〜 then --if(1)
  if 〜 then -- if(2)
   --省略
  else
   --省略

   --ここはAI()末尾ではない
  end --if(2)の終わり
 end --if(1)の終わり

--AI()の末尾
end

変な改造をしていなければ、インデント(字下げ)を見ればだいじょうぶ。
(対応するendを間違えないようにするためにインデントをしてる)

269(○口○*)さん :06/08/28 16:26
>>264
モーションキャンセルの処理の応用でSkillObjectを時間差で数回送ればラグに対応できそうですね
2.0秒、2.3秒、2.6秒の三回ならどんな環境でも対応出来るかも・・・

270(○口○*)さん :06/08/28 20:43
プログラム経験ないからわかんない、じゃなくて
プログラム経験ないからこそ、関数の始まりと終わりぐらいは
自力で見つけられるように努力していくほうがいいと思うんだ。

なにも「オートスキル発動ロジックのスキル決定箇所の前」とか
難しいことを要求してるわけじゃないんだから。

271(○口○*)さん :06/08/28 21:18
>>270
この流れを選択したのは重力
公開して自由配布にしたのも重力

272(○口○*)さん :06/08/28 21:26
質問があります。
クルーザーみたいな敵で、
実際の位置と、見えている位置がずれている敵に対して、
ホムの攻撃ができない現象って、
どうしようもないのでしょうか?
対応しているAI、しにくいAIってありますか?

273(○口○*)さん :06/08/28 21:33
AIの問題じゃなくてクライアントの問題だからAI関係ないと思う

274(○口○*)さん :06/08/28 21:46
>>271
「ユーザーにプログラムをさせる」ことを選択したのは重力だが、
「ユーザーがプログラムをする努力をしない」のはその人の問題。
ことその点については、重力に責任はない。
確かに一部ホムでは「先行・非先行」変更改造くらいはしなければならないのは重力の落ち度だと思うが、
幸いにも多くのAI作者がある程度練りこんだAIを公開してくれているので、
「ただ他の作者のAIを入れる」だけで、非改造の公式AIよりは便利なはず。
ここにプログラムスキルの余地はない。

「誰もがプログラムスキルを持たなければならない」とは言わないけど、
その「他AI作者のモノ」以上を求めるのなら、最低限の知識を持つべきだと思う。


>>272
いわゆる重力座標問題なので、難しいところかな。
ホム自体がずれる件についてはAIのつくりで結構回避できるけど、
クルーザー自身がずれてしまっているのはAIでは対処しづらいのでは。
ゼロ距離戦闘できるようになっているAIは、多少有利なんじゃない?

275(○口○*)さん :06/08/28 23:06
>268

>231の
>stuck=0 --グローバル変数

も同じ場所でおk?

276(○口○*)さん :06/08/28 23:14
>275
グローバル変数ってのは関数の中に入ってない変数。
同じ場所じゃまずい。

関数ってのはlua の場合は

function xxx()

end

で囲まれている部分。

以上の条件を考えつつ好きな場所に入れるといいよ。

277(○口○*)さん :06/08/28 23:28
グローバル変数、でAIの中を検索掛ければ、グローバル変数だけ
固めて書いてあるところが見つかるからそこらへんに入れとけばいいさ。

たぶんかなり先頭に近いところにあるとおもうが。

278(○口○*)さん :06/08/29 03:17
流れと関係がないのですが・・・
遠距離攻撃する敵相手だと、ゴムヨーヨー現象で鯖上では隣接してるのに蔵上では離れているように見えてスタックすることがある
それ対策でOnCHASE_ST()内の
Move(myid,enemyX,enemyY)を

Move(myid,enemyX-1,enemyY)
Move(myid,enemyX+1,enemyY)
Move(myid,enemyX,enemyY)
と書き換えてみたら対ペノ・弓兄貴などで結構ずれにくくなりました
基本的に最後のMove命令が有効となるのですが、鯖上で移動先の座標と同一の場合は最後のMove命令が無効になり
一つ前に送ったMove命令が有効になるみたいです
1セルずつずらして計三つ入れているのは、単に敵が壁や障害物に隣接している場合を考えてのことです
ひっじょーに場当たり的な処置ですが、割と効果があります
ただ、蔵上で敵の座標自体が大きくずれてる場合には使えませんけどorz
既出だったらすみません

279(○口○*)さん :06/08/29 04:28
>>278それ工体だとどこにいれればいいんでしょうか

280(○口○*)さん :06/08/29 04:56
日本語わからないのかw

281(○口○*)さん :06/08/29 05:23
ここは煽り役が常駐してるのか?

282(○口○*)さん :06/08/29 06:47
>>279
>OnCHASE_ST()内の
>Move(myid,enemyX,enemyY)を

>Move(myid,enemyX-1,enemyY)
>Move(myid,enemyX+1,enemyY)
>Move(myid,enemyX,enemyY)
>と書き換えて

283(○口○*)さん :06/08/29 07:25
>>279
まぁ 最初だと分からないかもね
工体のOnCHASE_ST内にはMove関数使ってないから
工体ver103+4の場合 594行目
MoveToNear( MyID, MyEnemy, Settings.ATTACK_DISTANCE )

Move(myid,x-1,y)
Move(myid,x+1,y)
MoveToNear( MyID, MyEnemy, Settings.ATTACK_DISTANCE )
ってすればいいと思う
ついでに有名だからこっこver3.15の場合 981行目
MoveToNear(MyEnemy,AttackDistance)

Move(myid,x-1,y)
Move(myid,x+1,y)
MoveToNear(MyEnemy, Settings.ATTACK_DISTANCE )
こんな風に
オマケだ!!ちょい難解AI Glenelg ver0.40の場合 AImain.luaファイル内339行目
MoveEx (MyID,MyDestX,MyDestY)

Move(MyID,MyDestX-1,MyDestY)
Move(MyID,MyDestX+1,MyDestY)
MoveEx (MyID,MyDestX,MyDestY)
これに変更
ついでに難解AIだから玉蟲ver2.14もいくか USER_AIフォルダ内>etcフォルダ内>FMS_Stateフォルダ内>FMS.luaファイル内 117行目
MoveToTarget()

local x, y = GetV (V_POSITION,MyEnemy)
Move(MyID,x-1,y)
Move(MyID,x+1,y)
MoveToTarget()
こんな風に  (てかさすが難解AI・・・分かりにくさ爆発)
こんなものでいいかな?
他のも多分似たようなところがあるから各自で
それとVerが合わないと行目も違う(と思う)から

最後にこれ大事 全部中身をはじめて見た かつ 全部デバッグしてないから確実に”なる”かは分かんない
失敗しても泣かない 泣いても文句言わない 各自でちょっと考える
方向でお願いします

284(○口○*)さん :06/08/29 07:30
連続投稿失礼
Move(myid,x-1,y)
Move(myid,x+1,y)
は、全部
Move(MyID,x-1,y)
Move(MyID,x+1,y)
にしないとダメだった。。。
初歩だ。。。もぅダメポ

285278 :06/08/29 07:43
×myid
○MyID

間違っててごめんなさい∧||∧
もうだめぽ
遠距離Mobが移動する時に座標すれまくるのもどうにかしたいですね
方向は大体同じだから1,2歩ずつ動かしていって敵の被弾モーション取るのがいいのかな?
へたれ自作AIerにはスマートなAIなんて書けないぜフゥーハハハー

286Glenelgの人。 :06/08/29 07:56
純粋に技術的な話をすると、278氏の対策は
「ホムが移動中に攻撃を受けてしまって、
 クライアント上(AI内)では目標地点まで移動中のつもりなのに
 サーバ上では移動停止していて、結果的に止まってしまう」
というケースの対策になります。
何度もMove()命令を出しなおしているので、サーバ上での移動がやりなおしになるので、
きちんと移動できる・・・ということになるのでうまくいきます。

ただ、Move()は行えば行うだけパケットが飛んでるみたいなので、ちょっとお行儀悪いかも。
(以前に『Move()呼びすぎはよくないかも』っていう話題がでてます)

うちのAIではホムのモーションを見て、移動中のつもりなのに移動モーションでなかったら、
という条件をつけてMove()のやり直しをしています。
移動はライブラリを使ってるので解析が面倒だと思うので先の例にあわせて書き直すと・・・
 if( GetV(V_MOTION, MyOwner ) ~= MOTION_MOVE ) then
  MoveToOwner() -- 移動やり直しのため、一度移動座標リセット。
  Move(myid,enemyX,enemyY) -- こっちが本命の移動アクション。
 end
って感じですね。

ただし、これだけだと敵側がずれているケースには対応できません。
こちらについてはちょっと対応が難しいです:敵の移動を強制することはできないので。
現状のAIでは『敵が射程に入ったらATTACK_STになる』というアルゴリズムなので、
ここを射程に入ったらではなく『射程0まで近づいたら』という形にすると
比較的回避できる率は上がります・・・が、その代わり相手がずれていないと「重なってしまう」ので
あまりよくないかも。

以上、長文失礼。

287(○口○*)さん :06/08/29 08:26
結局、AI側でいくら努力したところで座標ずれは防げない。

移動周りの修正にこだわりすぎて動作を重くするよりは、
素直に諦めて現状のまま使うしかないと思うがね。

288(○口○*)さん :06/08/29 08:36
>>283様丁寧な説明でありがとうございました
Move(myid,enemyX,enemyY)探しても無かったのでどこなんだろうと思ってました
書き換えて動作確認しました、スムーズになったようです

>>278様素適な記述です、ありがとうございます

289Glenelgの人。 :06/08/29 08:52
Σ('-'つ)つ
>>283
こっそりうちのも紛れ込んでる(笑)

Glenelgについては、上記286での記載どおり、特に今回の提案をいれるまでもなく
「ホム側の重力座標」についてはすでに対策済みなので、特に手を入れる必要はありません。
ともあれ、解析・修整対象にしてくださったことには感謝。

290(○口○*)さん :06/08/29 10:28
こっこかきのこにしようか迷ってるんだが
自分はバニル使いなので
やっぱり同じバニラーであるきのこがいいのかと悩んでる
バニル使ってる人で両方試してみた人いるかな・・・

291(○口○*)さん :06/08/29 10:36
たった2個だし自分が両方試せばいいじゃん。

と、10個以上試した鳥使い。

292(○口○*)さん :06/08/29 12:55
こっこはやや自分勝手な挙動を含むので、
そういうのが嫌な場合はきのこがいいかもしれないよ。

>>291
その結果どれに落ち着いたのかが気になる。

293(○口○*)さん :06/08/29 13:26
どのAIでも、カタログスペックにない使い勝手はある。
自分が触ってみて、それで結果を出すのが無難だと思うよ。無料のものなんだし。

294290 :06/08/30 11:06
>>291
>>292
>>293
試してみたら今まで使ってたくまが自分に一番合ってたかも
AIによって動きが色々で面白いな
ありがとう
せっかくなのでアンテナにあるの全部試してみようと思った

295(○口○*)さん :06/08/30 12:37
いろいろ使ってみたものの最終的に工体改変しつつ使ってる鳥使い mobdeta2に対応出来ない_| ̄|〇ボスケテ工体のしと

296(○口○*)さん :06/08/30 15:45
>>295
AI人力アンテナに工体のバグ取りと新しいライブラリに対応できるように改良してるAIがあった気がする

297(*○口○)さん :06/08/30 20:12
冬物語の人の工体研究所AI私的修正版を使うのが速いでしょうが
次期Ver以外の改造も過去に挙げているのでまとめ
http://himenomikoto.at.infoseek.co.jp/kulus_project/rev_ex.html

298(○口○*)さん :06/08/30 20:20
せめてhくらい抜こうぜ

299(*○口○)さん :06/08/30 21:11
前に抜くの忘れてからすっかり失念してたけど
転送量規定がない自サイトへのリンクでh抜く
理由が思いつかないので調べて納得したら気を付ける

300(○口○*)さん :06/08/30 21:15
自サイトかい。
それならむしろGJと言っておきます。

301(○口○*)さん :06/08/30 22:48
いまどきリファラ隠し以外にh抜く意味はないんじゃないかと思う。
>>2(スレ立ててくれた人の気遣い?)もそうなんだけど、
本人じゃなくともここのスレを知っているサイトばかりだから
いまさらhを抜く意味はないんじゃない?

LiveROの鯖負荷云々なら、専ブラ流行らせた方が建設的だし効果的。
たまにブラウザから見たときにh抜きは不便だし。

302(*○口○)さん :06/08/30 23:40
アングラ全盛期に解析などにリファラを残さない&URL変換の板負荷軽減
相手鯖に渡すリファラ分Byte削減による負荷軽減が始まりらしい

余程相手側に知られたくない場合(企業リンク等)か
住人が多く極端な負荷が掛かる場合でなければ今は不要かな
携帯とか専ブラ以外や、タッチパッド(実家PCorz)だとコピペしにくい等、
周囲への配慮より利便性の低下の方が徐々に目立って(求められて)来てる

だけど相変わらず慣習として続いている(or信仰っぽぃ?)感じかな
抜かないと叩かれ、とにかく抜けと言われる板が多い

自サイトは抜く必要なさそうだし、もう少し自サイトと分かる書き方に気を付けます
>>297は まとめておきました とか)

303(○口○*)さん :06/08/31 00:16
GvAIの人はもうここ見てないんだろうか
新機能に期待してるんだけどなーorz

304(○口○*)さん :06/08/31 01:38
安っぽい人がブログ作ってる
AI開発をマジで楽しそうにやっててちょっと羨ましい

305(○口○*)さん :06/08/31 03:04
質問です。
こっこAIでモンスターの範囲何セルに
他PCが居たら攻撃しないってようにできませんか?
もし、できるならやり方を教えてください。

306(*○口○)さん :06/08/31 07:14
>>297
ミス発見の為、修正しましたorz

307(○口○*)さん :06/08/31 07:23
>>305
Ver3.15の場合
1718行目から始まる関数部分
function IsNotNoManner( myid, id )
 local target = GetV( V_TARGET, id )
 return target == 0 or ( target == myid or target == GetV( V_OWNER, myid ) or IsFriend(target) == 1) or IsMonster(target) == 1
end

function IsNotNoManner( myid, id )
 local target = GetV( V_TARGET, id )
 local actors = {}
 local index = 0
 local dist = 3 -- ここを書き換えることで捜索範囲を変更
 actors = GetActors()-- アクターIn
 actors = SelectActors(SELECT_PLAYERS,actors)-- アクターからプレイヤーを選出
 actors = SelectActors(SELECT_IN_RANGE, actors, id, dist)-- さらに↑アクターズからid(敵ID)の距離dist内のアクターを選出
 actors = GetNotFriend(actors)-- さらにさらに↑アクターズから友達じゃないのを選出
 
 for i,nfpc in ipairs (actors) do  -- ここから3行はforとipairsのちゃんとした動きが分からないため、ごり押しの汚い書き方です
  index = index + 1
 end
 
 -- 最後の返り値の中に index > 0 を追加。 
 return index > 0 or target == 0 or (target == myid or target == GetV(V_OWNER, myid) or IsFriend(target) == 1) or IsMonster(target) == 1
end
で いけると思います。

デバッグしてないので、エラーが出たら各個撃破してください
失敗しても泣かない 泣いても文句言わない 各自ちょっと考える
の方向でお願いします。

308307 :06/08/31 07:33
連続投稿失礼
最後の方
×return index > 0 or target == 0 or (target == myid or target == GetV(V_OWNER, myid) or IsFriend(target) == 1) or IsMonster(target) == 1
○return index > 0 and (target == 0 or (target == myid or target == GetV(V_OWNER, myid) or IsFriend(target) == 1) or IsMonster(target) == 1)
だね

309(○口○*)さん :06/08/31 07:46
初歩的な質問ですいません

最近鳥で工体AIを使ってみてるんですが、フリットムーブを索敵中に使ってしまい困ってます・・。
いろいろ試してるんですがうまくいかなくてorz
出会い頭にFMをするようにしたいのですが、どうすればいいんでしょうか。

310(○口○*)さん :06/08/31 08:11
工体AI rev103+patch6
ファイル名AI.lua内616行目
function OnATTACK_ST()
付近を

FMtime = GetTick()
function OnATTACK_ST() -- 元からある部分
 TraceAI ("OnATTACK_ST") -- 元からある部分
 
 if (GetTick() - FMtime > 40000) then -- ここの40000はフリットLv5の時の持続時間40秒のことLvによって書き換えるよぅに テンプレ参照すれば見れるし
  SkillObject(MyID,SKILL_FLEET_MOVE,5,MyID) -- もちろんここの5もLvによって書き換える
  FMtime = GetTick()
 end
 
 if Settings.FOLLOW_OWNER_TARGETTING then -- もとからある部分
・・・・・・・・
とするといいんじゃないかな?
とりあえずのごり押しだから持続時間とかLvとかは工夫してください

デバッグしてないので、エラーが出たら各個撃破してください
失敗しても泣かない 泣いても文句言わない 各自ちょっと考える
の方向でお願いします。

311(○口○*)さん :06/08/31 08:54
>>310
FMTime初期値は0じゃないと、テレポ・コルホム・リザホム直後に
使わないんじゃない?

312(○口○*)さん :06/08/31 10:15
ちょっと言葉足らずだったかも。

AIが初期化されたときを「前回FMを使った時刻」とみなすから、
ホム再生成されてから40秒以内の交戦ではFMを使わないだろう。
ということ。

FM前提でテレポ狩りや安息コールはしないだろうけど、
交戦中の(予約)リザホムあたりでネックになりそう。

313309 :06/08/31 11:07
>>310さんありがとうございます。
でも自分の望む形とは違ってました。言い方が悪かったかもorz

今の設定ではFMが切れたら即FMをかけなおすようになってるんですが、
交戦が終わって敵がいない時にFMするとSPがもったいないので、
敵がいない時はFMしないようにしたいんです。

314(○口○*)さん :06/08/31 11:14
>>313
>>310を簡単に解説すると

function OnATTACK_ST() -- 攻撃時に
 if (GetTick() - FMtime > 40000) then -- 前回FM使った時間より40秒経っていれば
  SkillObject(MyID,SKILL_FLEET_MOVE,5,MyID) -- FMを使う

つまり、敵がいない→攻撃しない→FM使わない

315(○口○*)さん :06/08/31 11:19
>>313
もともと待機状態でも使う方の自動FMを塞がないとダメじゃない?

316309 :06/08/31 12:16
>>315
config.luaのほうをSELF_BUFF = fales,にすると全くFMを使わなくなっちゃうんですが、
ここではないんでしょうか?

AI.luaのほうの書く場所が間違ってるかもなので一応だしときます。


FMtime = GetTick()

function OnATTACK_ST ()

TraceAI ("OnATTACK_ST")

if (GetTick() - FMtime > 50000) then
SkillObject(MyID,SKILL_FLEET_MOVE,3,MyID)
FMtime = GetTick()
end

if Settings.FOLLOW_OWNER_TARGETTING then
local target = GetV( V_TARGET, GetV( V_OWNER, MyID ) )

317(○口○*)さん :06/08/31 12:46
>>316
その条件だと、AIが回り始めてから50秒立たないと使わないんじゃない?
最初の1回まではFMtime = 0 にしとくべきだと思うよ。

あとFMはディレイが今無いから、効果時間で指定したほうがいいよ。

318310 :06/08/31 13:23
帰ったら 修正いっぱい
皆ありがとう〜
FMtime=0もその通り
本機能の方のオートFMも切るっていうのもその通り
もぅ 不甲斐ないばかりです

それと、懲りずに追加です
FMtime = 0
buf_FMsp = 1000
function OnATTACK_ST ()

TraceAI ("OnATTACK_ST")

 if (GetTick() - FMtime > 50000) then
  if (buf_FMsp > GetV(V_SP,MyID) or GetV(V_SP,MyID) < 50) then -- 前回SPより減っているまたはSPが50(Lv3の消費SP)を切っている場合
   FMtime = GetTick()
  else
   SkillObject(MyID,SKILL_FLEET_MOVE,3,MyID)
  end
 end
 buf_FMsp = GetV(V_SP,MyID)

みたいにSP消費も監視するようにしたら
失敗したときも使えるかもしれない

319309 :06/08/31 13:44
知識が全くないのに質問したのを悔やんでおります。

現状>>316の状態だと、

コールホムから50秒後にFM→その後FMが切れたら即FM(SELF_BUFF = true)

で、SELF_BUFF = falesにすると全くFMを使いません。

一番上のFMtimeを0にしても、コール後FMをせず、しばらくしてからFM(以下同上)
敵を攻撃してもFMはしないです。

もう何が何やらorzスイマセン

320(○口○*)さん :06/08/31 14:26
こっちも工体の中身を知ってるわけじゃないんで適当なんだけど…。
SELF_BUFFを色んなところのスイッチに使ってて、一筋縄じゃ抑えられないようになってるのかな?

まぁ攻撃時にFM使うAIは他にあるからそっち試してみるのもどうかね。

321309 :06/08/31 14:59
とりあえず他のAIも試してみることにします。
どうもお騒がせしました。

322(○口○*)さん :06/08/31 17:13
>>309
工体AI rev103+patch6
ファイル名 events.lua内340行目

for i,v in ipairs( GetActors() ) do
  if IsMonster( v ) == 1 then
    fight = true
    return true  -- 敵を発見したらタイマーを開始
  end
end
ここを
if (MyState == ATTACK_ST or MyState == CHASE_ST) then
  fight = true
  return true-- 敵を発見したらタイマーを開始
end

323(○口○*)さん :06/08/31 17:17
修正途中で送信してしまった。
下側のとこ
×  return true-- 敵を発見したらタイマーを開始
○  return true  -- 交戦時にタイマーを開始

まあコメントの差でしかないわけだが
上記のように変更するといいはず。

324(○口○*)さん :06/09/01 02:19
スレ自体のコンセプトと真逆になってしまうのだが
意外と手動FMいいぞ。

325(○口○*)さん :06/09/01 06:09
人によってかけなおしたいタイミング違うからなぁ
細かい設定できるAIありゃいいんだけど

326Glenelgの人。 :06/09/01 07:23
>>325
AI作者からすると、その『細かい設定』ってのがどういうものを期待されているのか、
それが具体的になっていないと手が出せない、っていうのがあります。
現状の実装になっているのはまさにご指摘の「人によってかけなおしたいタイミングが違う」
というところで、多くの場合
『AI作者の使い方or想像では、このタイミングがいいと思っている』
ところで作られているはず。
具体的にどういう条件で使うべきなのか、そういう情報があれば対応できるケースも少なくないと思います。

ただまあ、324氏のご指摘の通り、プレイヤーの割とファジーな感覚で使うっていうケースもあるのは間違いなく、
そういうケースだとなかなか手がつけられないんですが(笑)

327(○口○*)さん :06/09/01 11:55
こーいうときに使いたいかも、ってのを列挙してみる

・攻撃する前にFMを使ったら初弾遠距離MLを撃たない
 コンマ数秒がなんとなく気になるので・・・。これはあくまで超個人的意見。美的感覚というか。

・HPが低い敵では途中でかけ直しをしない。
・逆にHPが高い敵でももう少しで倒せそうならばかけ直しをしない。
 HPというかDEF、HP、必要HITを見て総合戦闘時間、みたいな。
 ホムは自分が攻撃してるかも分からなく、ダメージをどれぐらい与えたのかも分からないので
 この項目はかなり難しいかも。MLがスカってたら時間かかるしね・・・。

 もっと掘り下げると
 ・今周りにいるmobが少なく、戦闘時間が短くすみそうだったらかけ直しをしない。
 ・多い(強さ・それぞれの数で変動)からさっさと処理したいってときは途中でもかけ直す
 みたいな。でもやっぱり交戦中の敵を倒したときにFMかけたいときも。ここらへんが適当

・HPが低い敵と戦闘中でも次にタゲ取りにいけるのがいる・視界内に捉えられたら途中でもかけ直す。
 さっさと目の前の敵Aを倒して次のタゲを取りたいときかなー。
 このときはAを倒したらBにざくっと初弾遠距離MLを決められるとなんかカッコイイ
 これは多分SPに余裕があるときにやるかも。自己満足の世界。

・ざくざく沸くような場所に突撃する前に使う。
 少しでもSP消費を減らしたいというか。前準備はしっかりしておきたいというか。
 かけ直しのタイミングになったけど移動中とかだったらかけ直したくないし
 かといって交戦始まる前には掛っててほしい、みたいな。
 この先は敵がいる!って予感あるじゃない。そんな感じ。

ぱっと見て思いつく限り列挙してみたけど自分のことながら実に適当だ。

328(○口○*)さん :06/09/01 11:55
バニル使いでAI作ってると支援スキル使用のタイミングがわかりませんね。
手動で使った方が便利な気がしますが実際はどうなんでしょう?

329Glenelgの人。 :06/09/01 13:32
出先だからIDちがいますが。

>>329
なるほど・・・
イメージとしては「戦闘が終わるころでかつ余裕がありそうなら」無理にかけなおししない、って感じですかね。
うちだと周囲の状況は見てるから後続がいるかいないかで判断することは簡単そうだけど、
「この相手はそろそろ死ぬ」ってのがわからないのが苦しいかんじ。

平均戦闘時間が影響しそうだから・・・そういう記録を取ってるこっこAIあたりは、近いところにいるのかも。

330305 :06/09/01 16:11
>>307さん
ありがとうございました。
いまからやってみます

331(○口○*)さん :06/09/01 17:35
うちはmobdataのHPを大体のスキルダメージで割って、
その敵に何発までスキル使うか決めてる。

332(○口○*)さん :06/09/01 18:42
こちらはオーバーキルとかあまり気にしない人なので何発きっかりとか考えた事も無かった・・・
1〜2確でなければ攻撃力と敵HPの比率とか意識しないもので、オートスキルの攻撃の部分は適当に作ってる

1stメインがプリだからなのかな・・・

333Glenelgの人。 :06/09/01 18:56
うちの場合は、オーバーキルが起きるのはわかっちゃいるんですが、ランダムで妥協しています
ポリシーとしてmobdataを使わないことにしてるので、1発どれくらい入るとかわからんのよね。
確かにそのほうが効率はいいんですけど。

ユーザー設定で「この敵には最大n発まで」とかいうのも考えたけど、そこまでやる必要もないと判断。
ML空振りやカプリス属性不一致って可能性もあるし。

334⊂(*'ω')⊃ :06/09/01 19:04
MLは消費もばかにならないし、Lv調整するようになって実際に自分もSPに余裕が出たと感じるので
そのあたりは割と気を使ってましたが、FMに関しては戦闘時に使うのみで特に
条件分岐させなくてもいいかな、と思ってました。

>・攻撃する前にFMを使ったら初弾遠距離MLを撃たない
解決策1:初撃MLを優先させるため先に記述する
問題点:今度はFMの発動が最低2.5秒遅れる

解決策2:CHACE時にFMするようにする
問題点:遠距離MLが遅れる,または発動前に攻撃態勢に

とまぁ、トレードオフです。
好みによって切り替えられるようにすると上手く書かなければAI自体が冗長になるので
書き手としては重要度が見られない限りはあまり…。

>・HPが低い敵では途中でかけ直しをしない。
>・逆にHPが高い敵でももう少しで倒せそうならばかけ直しをしない。
極力おさえるように、現行の自動ASオフをFMも含むように出来ることは出来ます。
ただ割合判定なのでHPが低い敵の場合人間から見たらもういいだろう、というタイミングでも
使ってしまうことはあると思います。絶対値判定も付けるほうがいいのかな?

>・HPが低い敵と戦闘中でも次にタゲ取りにいけるのがいる・視界内に捉えられたら途中でもかけ直す。
敵の数は数えてますが、視界内というのが微妙なとこです。
「その視界内のMobは本当に此方の敵か」という判定が難しいです。
フリー索敵に流用も出来るには出来ますが…。

>・ざくざく沸くような場所に突撃する前に使う。
手動が最適だと思います。(・ω・)
ただ即時発動系の手動発動が検知できないので自動FMも勝手に使っちゃうかも。


というわけで、個人的には苦労の割にそれほど効果が出るのか?という疑問があるので
あまり食指が動きませんでした。

335(○口○*)さん :06/09/01 23:53
前アンテナの人が呟いてたAIの擬人化について興味があるのだけど、利用者側から見る各AIはどんな印象なのでしょうか?
スレ違いかなとは思ったけど、話題もないし・・・
AIに対する利用者からのイメージもAI開発の参考になると思ったので
(そのイメージから、利用者がそのAIに何を求めているのかが分かり易くなる)

336(○口○*)さん :06/09/02 06:12
>AIに対する利用者からのイメージもAI開発の参考になると思ったので
>(そのイメージから、利用者がそのAIに何を求めているのかが分かり易くなる)
正気なのか?

337(○口○*)さん :06/09/02 06:27
っと、煽りが目的じゃないから追記

擬人化(キャラクター化)ってのは結果から想起されるもので決して逆じゃないってこと。
提供側がイメージ戦略としてうちだすマスコットキャラクターの類とは違う。

つまり、
OS娘ではMeに天然ボケを期待してるんじゃなくてMeというOSがそういうものだったということ。
逆に、
ペ●ちゃんならおいしものを食べて笑っている子供から不●家はおいしいという印象をあたえる。

338(○口○*)さん :06/09/02 07:22
工体はなんか工作が好きそうな女の子
こっこはなんか鳥っぽい女の子
クマーはなんか毛深い女の子
GvAIはなんか喧嘩っ早い主婦

339(○口○*)さん :06/09/02 08:44
擬人化きんもーw

340(○口○*)さん :06/09/02 11:15
安っぽい人は貧乏性でついついポケットティッシュを2つ貰ってしまう子

341(○口○*)さん :06/09/02 11:35
個人的には擬人化する意図が理解出来ない・・

ま、それは置いといて、それはココで聞いて作るようなもんなのか?
やりたいんだったら自分で勝手に描いて自分のサイトででも公開すればいいと思うが
スレ違いとわかってるのにここで話を始めることがそもそもの間違い

342(○口○*)さん :06/09/02 11:44
まあ「雑談スレ」なんだからかまわんじゃない?
興味なければスルーすればいいだけの話。
反応がなければ沈静化するでしょ。

343(○口○*)さん :06/09/02 15:02
というか、そろそろAI開発的にもネタが無くなって来たので
どういう更新したらいいのやらと悩むところ。

別に更新しつづける必要もないと思うけれども
求められるものがあるならそれを知ってみたいというのはある。
自分じゃ気づかない部分が、他人が使ってみて初めて気づかされるというのはよくあるので。

先日のアンケート、単に票数じゃなくって
ひたすらコメントを書いてもらう感じでやってもらえてたら良かったなぁ。
もっともコメント入りは面倒くさいって人が多数だと思うけどね。

344(○口○*)さん :06/09/02 15:41
こっから先は各種族特化にするとか
プリセットの調整が色々違うとかのバージョン違いのような進化になるのでは?
タブブラウザの歴史を見てるようなそんな気が

345(○口○*)さん :06/09/02 16:06
いくつかのAIをためさせてもらいましたが、
質問があります。
非アクティブ状態で、
主人が叩いたのと、ホムが食らっているmobだけ、
攻撃するようにしている設定で、
非アクティブなmobを倒したとき、
同IDのmob(たぶん)が沸くと、
そっちのほうに叩きに行ってしまいます。
叩きに行かないようにできないのでしょうか?

当方、I>Aの宝剣型で、
こちらが、詠唱中に
その敵をホムが叩きに行くAIが、
上の現象が起きているように感じました。

346(○口○*)さん :06/09/02 16:17
同ID横湧きはちょっと難しいな。
死亡モーションとろうとしても新しく沸いた方の同IDが居ると
単に「瞬間移動した」みたいな認識するだけだし。

>>345
どのAIで試してもそうなる?

347345 :06/09/02 16:21
上にも書きましたが、
詠唱中にその敵に対して叩きに行くAIが、
同IDに対して叩きに行ってしまうみたいです。

どのAIかちょっと出先のため確かめられませんが、
主人の攻撃が成立?したとき、(ダメージを与えたとき)に、
叩きに行くAIがありましたが、
そのAIのときは、同IDに対して叩きに行ってないようでした。

348(○口○*)さん :06/09/02 16:32
半公開の自作AI使ってるんだが、その状況があまりにも目につくようになったからこの前直した。

原因は、敵を倒しても主人がターゲットしてるIDがリセットされない為。
自分はA>D=Sタイプだから
主人がタゲっている敵で、かつ主人から2セル以内にいる敵
という条件にした。

ただこのやり方だと宝剣型は射程の関係で上手くいかない気がする。

349(○口○*)さん :06/09/02 17:00
で、思いついた。

主人がタゲっている敵で、かつ主人が詠唱中[ GetV(V_MOTION, GetV(V_OWNER, MyID) == 8 ]の場合。

これでどうだろう。
即沸きの敵が出たあとにスフィアマインとかの詠唱始めた場合の挙動は保障できないが。


>主人の攻撃が成立?したとき、(ダメージを与えたとき)に、
>叩きに行くAIがありましたが
これはダメージが発生した瞬間に、その敵が主人をタゲるから叩きに行ってるということで
つまるところ主人のタゲは見ていないということ。だから即沸きを叩きに行かない訳ですね。

350(○口○*)さん :06/09/02 17:37
>>349
そういう改良してみようと思ったんですが、ふとトマホークを思い出した。
持ってる人なんて殆ど居ないしあんまり考えなくてもいいとおもうけど
トマホークがスキルモーションならスキルモーションも加えないと不便という意見もあるかもだし、
とはいえスキルモーションを加えると変なところで射程拡張してしまいそうで困る。

というかトマホークのモーションはどれだろう…?

351(○口○*)さん :06/09/02 18:31
詠唱じゃなくて、スキルモーションで殴りに行かせればいいんじゃないだろうか

352(○口○*)さん :06/09/02 18:43
スキルモーションだと、極稀に対応に失敗するケースが出てくると思う。

例えばCR連打中に敵死亡→同ID湧きがくると
その時点では「主人のターゲットかつスキルモーション中なので距離制限なし」
となって、宝剣のための条件のはずなのに宝剣以外で満たす可能性がある。

353(○口○*)さん :06/09/02 19:03
敵ID取得のあたりで分岐増やすとか・・・
敵取得(GetEnemy)の段階で今格納されてる直前の敵ID(MyEnemy)を見比べて、
ループで取得する敵IDとその直前の敵IDが同じかどうかで分岐を行う(v = MyEnemy)
同じIDならモーションで続行して攻撃するべき敵か判断させて、そうでないなら主人のタゲかどうかだけで判断

ここまで書いてAttack_STがまわってて同じ敵IDが即沸きしたらそのままChaseにいって追おうとするなと気付いた・・・
|||orz

敵の座標を監視して、3セル以上一瞬で動いたらそのタゲは放棄、という文を
Attack_STとChase_STに入れればいいんでないかな?

敵の座標取得のタイミングは敵が射程内に入ったとき、だけで十分だと思うけど
実際にどうかは実装したあと暫く動作テストしてみないことには分からないけど・・・

354(○口○*)さん :06/09/02 19:16
タゲIDリセットは昔散々議論されたけど、テンプレとかに例はのってないのかな
なんか死亡モーションがどうたらこうたらとか言ってたような気がするが

それか結論でなかったのか

355(○口○*)さん :06/09/02 19:20
>>353のとおり、死亡モーションとっても、「生きているIDが画面内に居る」となると
普通に「攻撃中敵との距離が離れた」という認識でそっちを追いかける。
よって、ただ死亡モーション取るだけでは対応できない。


…てことは。
画面内に死亡・生存でIDが重複したら破棄すればいいのかな?

356(○口○*)さん :06/09/02 19:21
あ、>>346ってことか

357(○口○*)さん :06/09/02 19:26
じゃあこれはどうだろうか

549 名前:(○口○*)さん[sage] 投稿日:06/04/14(金) 12:05 ID:1oy6xIUY
>>548
ペースが速くなりがちなPT狩りでそんなに綿密にやると
共闘入れが追いつかなくなったりしないかな。
mobのタゲを奪っちゃったらその事後処理が大変そうだし。

あ、ということは共闘入れは「PTMが攻撃中のmob」を狙うように
したほうがお行儀良い?

>多分消えない
thx。
となると、このどれかだね。
・死亡判定+画面外リセット(出入りしたmobを誤認)
・死亡判定+時間判定(ピーキーで調整が手間かも)
・時間判定のみ
(比較的シンプルだけど即湧き対応が遅れる上、やっぱり調整が手間そう)
・画面外リセット(最もシンプルだけど、即湧き対応不可と出入りmobの誤認)

ふと思ったんだけど、画面外チェックを多用するとプロ露店のような
過密地帯では重くなりそう。

550 名前:(○口○*)さん[sage] 投稿日:06/04/14(金) 12:07 ID:1oy6xIUY
時間判定の方がよりシンプルな気もしてきた…。
頭の中で考えてるだけじゃだめだなぁ。あとでコード書いてみよう。

551 名前:(○口○*)さん[sage] 投稿日:06/04/14(金) 13:50 ID:Z2z1xo0w
>>549
死亡判定の10万ルールを上手く使えば即沸き対応は出来るかも。
55000の奴を倒したら45000の死亡オブジェクトが出て55000の奴が画面内に沸く
ってことを考えると、
45000が出てるにも関わらず55000の奴が存在していたら即沸きなのでMyEnemy除外
みたいなこと出来るんじゃない?

55000が沸いた瞬間45000が消滅するんじゃなければ、だが。

358(○口○*)さん :06/09/02 19:26
あ、これが>>355

359(○口○*)さん :06/09/02 19:34
そうなる。
ただ、これにも問題があって
結局主人のターゲット情報は保持したままだから、これが変わらない限り
死亡オブジェクトが消え次第攻撃しにいってしまうし、
また画面外に沸いていたとしても、その後タゲ情報固定のまま
遭遇した場合もこちらから攻撃しにいってしまうわけで。

やっぱり距離判定がいいような気がする。

360(○口○*)さん :06/09/02 19:51
デフォルトAIを基準に、距離で判断する処理簡単に考えてみた

敵の座標監視しなくてもよさそう

OnATTACK_ST ()内の

 if (false == IsInAttackSight(MyID,MyEnemy)) then -- ENEMY_OUTATTACKSIGHT_IN

の上に

 local dis = GetDistance2 (myid,MyEnemy)
 if (dis >= 4) then -- 攻撃中に攻撃してるMobが4セル瞬間移動したらタゲリセットして一旦待機
  MyState = IDLE_ST
  MyEnemy = 0
  TraceAI ("ATTACK_ST -> IDLE_ST")
  return
 end

これでいけるはず

361(○口○*)さん :06/09/02 19:57
>>360
それでも主人のターゲット情報は固定されてるから、
「主人のターゲット」を攻撃しにいく設定の場合は
再度同じ敵をターゲットしなおして追うだけだからダメじゃない?

索敵条件にも主人かrなお距離を含むならうまくいくかもしれないけど。

あと、あんまり無いと思うけど4セル以上のノックバック攻撃でも
常にリセットされることになっちゃうと思う。
グレイトアックスメマーとかボンゴンバッシュとか…。

362(○口○*)さん :06/09/02 20:11
ケミのタゲ問題は要は
GetV(V_TARGET,MYOwner)==一度殺した敵のIDが保持されていること。
お行儀がいいかどうかという話を抜きにすると、解決できる荒業がある。

ケミが攻撃していた敵の死亡を確認したら、自動PPでホムにPPする。
こうすればGetV(V_TARGET,MYOwner)==MyIDになるはず。

言うだけ言ったが俺は自動PPは否定派なので対応しません。

363(○口○*)さん :06/09/02 20:23
>361
主人の敵再取得のほうは
>敵取得(GetEnemy)の段階で今格納されてる直前の敵ID(MyEnemy)を見比べて、
>ループで取得する敵IDとその直前の敵IDが同じかどうかで分岐を行う(v = MyEnemy)
>同じIDならモーションで続行して攻撃するべき敵か判断させて、そうでないなら主人のタゲかどうかだけで判断
でいけるんじゃないかと思ったんだけど

コードにすると
GetOwnerEnemy (id)内部で

  if (v == owner) then -- オブジェクトが主人だった場合
    target = GetV (V_TARGET,v) -- 主人のターゲットのIDを代入
    if (IsMonster(target) == 1) then
      if (MyEnemy == target) then
        motion = GetV(V_MOTION, owner)
        if (motion == MOTION_ATTACK) then --それがモンスターだったら、さらに主人が攻撃中だったら
          enemys[index] = target -- そのターゲットを敵とみなす
          index = index+1
        end
      else
        enemys[index] = target -- そのターゲットを敵とみなす
        index = index+1
      end
    end
  end

自分のAIでは主人のタゲ残る件はこれで解決してるんだけど、
それだと>>350だからダメなのかな

364(○口○*)さん :06/09/02 20:26
>>363のコメントがテキトーなのは許して・゚・(ノД`)・゚・

365(○口○*)さん :06/09/03 00:37
進化ホムの攻撃モーションキャンセル対策がされたAIって
実際にはどれだけあるの?
スレ見た感じ、こっそり追加されてるものもあるようだけども…。

366(○口○*)さん :06/09/03 01:07
きのこ、こっこ、幻塵、安、Glenelg、初回限定
このあたりはキャンセル処理入ってるっぽい

367(○口○*)さん :06/09/03 01:08
>>366
Thx。
これは人によっては気休め程度だろうし
比較表に入れる項目でもないんだろうからなあ

368(○口○*)さん :06/09/03 01:18
>>365
数回攻撃関数を呼ぶことが、攻撃モーションキャンセル対策ってことなら
きのこAI、どきどきAI、こっこAI、安っぽいAI、玉蟲、幻塵AI、初回限定AI、Glenelg、rhapsoAI
が入ってた。
各AIでもやり方が違うみたいで、2回送信・3回送信やOnATTACK_ST関数を再呼び出し・フラグ立てて攻撃コマンドだけ
などなどいろんなやり方があったよ

369(○口○*)さん :06/09/03 01:41
流れよまずに、、質問させてください・・OTL

工体AIつかってるんですが、けんせーとか認識しないで
横殴りしてしまうんですが、どのようにすればいいのか、
ご教授ねがいたく・・OTL

370(○口○*)さん :06/09/03 01:41
修正版使えばいいのに。
AIアンテナから探せば見つかるよ。

371(○口○*)さん :06/09/03 01:45
なんですと、、修正版なるものが、、あったのですか・・OTL
工体のところの最新版らしきもの落としてみたのですが、、
違ったのかぁ

playerjobdata.lua っていうのをいじらないといけないと思ってました・・OTL

ありがとうございました。修正版さがしてきます λ、、

372(○口○*)さん :06/09/03 03:04
>>371
アンテナに載ってるべ
探すまでもない

373(○口○*)さん :06/09/03 03:08
ありがとうございますた。みつかって、設定したんですが
ログインサバしんでて、、ためせない・・

素直にねまふ・・・__○_

374(○口○*)さん :06/09/03 07:34
7時間頑張ってみましたが、どうにも改善出来ないのでどなたかご教授お願いします。

現在こっこAI(自分で多少弄ってあります)と
何処かで拾ったノンアクティブAIを使っているのですが
これをRO内で切り替える事は出来ないのでしょうか?

今までAIフォルダとUSER_AIフォルダは
/hoaiで切り替えられるものだと思っていましたが
違うのでしょうか・・?

理想としてはINした時には、拾ったAIの方
戦闘時にはこっこAIを使いたいのですが・・;

375(○口○*)さん :06/09/03 07:41
/hoai で切り替えれるのは「次の読み込み時に呼び出すAIファイル」
よって安息コールかテレポかMAP移動かリログをしないと切り替えはできない。普通では。

工体研究所の最後の更新のとこに、リアルタイムで変更できるスクリプトがあるから
それ使ってみたらどうかな。

376374 :06/09/03 08:23
こんなに早くお返事いただけるとは思ってもいませんでした!
早速
>工体研究所の最後の更新のとこに、リアルタイムで変更できるスクリプト
を試してみました。

こっこAI以外の拾ってきたAIとくま〜(上記の2つしか無かったので追加しました)
は上手く切り替え出来ました。
こっこAIは指定したMobへの先行攻撃が働いていないようなので
もう少し弄ってみて、無理なようなら作者の方へ問い合わせてみようと思います。

>375さん
こんな時間にありがとうございました!

377373 :06/09/03 12:45
たびたびすいません、諸兄の知恵をおかりしたく・・

工体AI103から、修正版へ乗り換えたのですが、
MONSTER_PRIORITY、ENEMY_PRIORITY がうまく機能しなくなってしまいました・・

修正版と未修正版とで、上記の設定で変わったところとかありますでしょうか?

378373 :06/09/03 13:25
何度もすいません。
MONSTER_PRIORITY、ENEMY_PRIORITY の設定でMobIDで設定すると動きました。

どーやら、Mobdataの取得でこけてた模様です。
修正版のmobdataの中身と、修正以前のmobdataの中身が違いすぎて、
いまいちわからないままですが、とりあえず旧mobdataからIDひっぱってきて
設定できましたので、一応解決しました。

スレ汚しすんませんでしたOTL

379(○口○*)さん :06/09/03 14:29
ちょと質問です
今オートスキル関連を調整していて分かったのですが
通常バニルのカオティックベネディクションは、
SkillObject(MyID, 1, 8014, MyID)
で発動しますが、コマンド入力からのカオティックベネディクション
はSkillObject(中身略)を使用してないみたいなんです
あれはどういう原理で動いているのかどなたか教えてもらえませんか?

380(○口○*)さん :06/09/03 14:51
>>379
ユーザーがクライアント操作した時点で、クライアント側で勝手に使っています。
AI側にはなんの通知もないので、使われているのかどうかも判りません。

381380 :06/09/03 14:55
もうちょっと丁寧に書くと・・・
例えばカプリスなどは、
・ユーザーがクライアント操作(スキル選んで敵を指定)
→クライアントからAIにSKILL_OBJECT_CMDメッセージが通知される
→AIプログラムで、上記メッセージ分岐して、SkillObject()使用
→クライアントがその指示を受付、サーバに通知

・・・という流れ。対してカオティック(や、他のホムの対象指定無し系スキル)では
・ユーザーがクライアント操作(スキル選んで敵を指定)
→クライアントがその指示を受付、サーバに通知

・・・という流れ。
ご理解いただけます?

382380 :06/09/03 14:57
Σ('-'つ)つ
解説こぴぺして訂正忘れた・・・
カオティック(や、他のホムの対象指定無し系スキル)では

・ユーザーがクライアント操作(スキル選択)
→クライアントがその指示を受付、サーバに通知

です。スレ汚し失礼。

383379 :06/09/03 15:29
>>380-382
ありがとうございます。
まったくAIの中を通って居ないので、そんな感じはしたのですが、まさか本当だとは・・・

だとするとSP監視で判定ですね
ディレイ関連をやり直さないと・・・

384(○口○*)さん :06/09/03 16:01
>>378
修正する資料になるので、どんな設定で動かなかったのか書いてもらえると助かる。

385(○口○*)さん :06/09/03 16:39
初心者ケミなんですが、ホムを出して戦ってると
敵を倒した後、すぐ動き出すことができないんです。
ラグとはちょっと違うような気がするんですが。。

386(○口○*)さん :06/09/03 16:42
>>385
デフォAIなら仕様。
なんとかしたかったら索敵条件から10万ルールで死亡モーションのを外すかしないとならない。

初心者なら↑の意味がサッパリだと思うので
とりあえず適当に配布されてるAI落として使えばいい。

387(○口○*)さん :06/09/03 16:55
素早いレスポンス感謝です〜!
AIはゼロマテリアルさんのどきどきAIを使わせてもらってます。
変更したところといえばくるくる回る範囲とかくるくるの速さくらいなんですが。。
ほかのAIなんかもためしてみますー。
ありがとうございましたー

388(○口○*)さん :06/09/03 18:19
さて初回AIを入れてみたのだが
敵の横のセルをクリックした場合の機能を殺すというか
単にそのマスに移動させるようにはできないんだろうか?

座標ずれで殴ってくれないときにちと困った

389(○口○*)さん :06/09/03 19:14
他AIに乗り換えるとかじゃだめなのか?

390(○口○*)さん :06/09/03 21:14
多分ALT+Tを2回ぽんぽんと押して一度IDLEにしたほうが早いと思う・・

391(○口○*)さん :06/09/03 21:39
いやまあ自分でAIいじれない人間がここでどうこう言うのも
スレ違いといえばスレ違いなんだろうしな、失礼。

392(○口○*)さん :06/09/03 21:53
>>388
初回AIであれば、敵の周囲1セルをAlt+右クリックを割り当てできるでしょ?
Config.lua内 102行目辺りをいじって見ればいいのでは?

393(○口○*)さん :06/09/03 22:14
>>392
いやそれは試してる。
「敵の隣に移動」に対応する部分を空にするとエラー吐いて落ちるんだわ。
「敵の隣に移動」という動作を他の動作に置き換えてるのだと思うけど…。

394(○口○*)さん :06/09/03 22:36
>>393
空にするんじゃなくて、何もしない(普通に移動する)ものがないかな?
初回AI、最近のバージョンは見てないけど、以前はそういう感じで「任意に置き換えられる」ように
作ってあったように記憶している。

>>389
ポルシェに乗ってみようと手に入れたばかりの人に、
いきなりフェラーリ勧めちゃいかんだろうて(笑)
とりあえず乗り換えは最後の手段かと。

395初回の人。 :06/09/03 22:39
そういえば、「使用しない」場合は 0 にするって書き忘れてました。 orz
ただ移動命令自体は握りつぶしたままですので、対応します。少々お待ちを。

396(○口○*)さん :06/09/03 22:51
>>388
Config.lua内の特定部位を
Cmd_MoveToSide[0] = 0
Cmd_MoveToSide[1] = 0
にすればいいんじゃないかな?
0じゃなくても0以下ならOKみたい
あと、特殊コマンドをなしにするだけなら、片方でいいんだけど
特殊コマンドをなしにして移動はさせたいってことなら両方0にしないと
いけないみたい

397(○口○*)さん :06/09/03 23:12
>>396
両方0にしたら問題なく移動させることができました
これで勝つる

398(○口○*)さん :06/09/03 23:15
何に勝つ気だw

399(○口○*)さん :06/09/03 23:17
ただありがとうございましたのほうがよかったと
書いてから思った
無駄レスを反省している

400(○口○*)さん :06/09/03 23:27
初回初回っていうからデフォルトのやつかと思って、ナンノ話をしてるんだと
聞いてたが、そういう名前のAIが最近はあるのか・・・

401(○口○*)さん :06/09/03 23:42
最近どころかかなり最初からあるぞ

402(○口○*)さん :06/09/03 23:49
Σ(゚Д゚;)エッ

403(○口○*)さん :06/09/03 23:50
最初の配布は3月18日
ついでにAI機能比較表のオーナーさんですしね

404(○口○*)さん :06/09/03 23:52
機能比較表見に行ったことないからなぁ。
AIスレのテンプレにあるところくらいしか行った事なかった・・・

405(○口○*)さん :06/09/04 00:10
比較表もテンプレ入りでいいだろ

406(○口○*)さん :06/09/04 00:26
今日Gvにホム出したんですが、ホムが思ったように動いてくれません。
先行型にしてても、敵を全く攻撃せず、手動物理攻撃も受け付けず、
手動のカプリスだけなんとかできました。
できれば、自動で攻撃できるようにしたいのですが、いいAI配布してるところないでしょうか?
例えば、突入時ロキの鳥を優先的に攻撃するとか、本体が攻撃されたらそのキャラを攻撃するとか
できたら、最高です。
ご存知な方おられましたらよろしくお願いします。

407(*○口○)さん :06/09/04 00:36
テンプレのサンプルライブラリにGvAIがある

408(○口○*)さん :06/09/04 00:36
アルケミテンプレ->AI研究室->サンプルライブラリ->GvAI.zip
が今配布されてるのではGv用AIとしては一番なのかな
あとはこっことかにもGvG対応機能ついてたっけか

409(○口○*)さん :06/09/04 02:40
こっこのは別配布だ
下の方にGVG用のをダウンロードできるリンクがある

あとは安っぽいやつがGVG用のを抱き合わせ配布してたはず

でも実績があるのがケミテンプレのGV用AIだから確実に動かしたいならそっちがいいな

410(○口○*)さん :06/09/04 02:41
突入時ロキ攻撃は実装してほしいな。
ホムって無敵時間無いからあたふたタゲしてるうちにSGで凍って死ぬんだよな。

411(○口○*)さん :06/09/04 02:46
ちなみに狩り用AIだと敵のIDを取得する部分で、シーズ独特の仕様のせいで敵を判別できないため殴らない
既存のAIをGV用にするならGetEnemyの中の、ID保存の条件を変えなきゃならない

412(○口○*)さん :06/09/04 14:26
ちょっとしたAIの不具合?の報告を。(半分未満のAIが該当すると思います)
自分の子でないホムにPPをしてから座ると、そのホムに追跡されることがあります(PPはスキル失敗でOK)。PPケミを攻撃対象だと判断し、追いかけるAIなのだと思います。
私が使っているAIも、PPした人を追いかけるものでした。
このままだと街で狩場で、見知らぬケミさんに自分のホムが(一時的に)連れ去られてしまいます。「うちの子におなり」って連れ去ることも可能…

(くま○〜、どきどき版 をご使用の方はPPを投げられてからAlt+Tをして検証を、
1マス後追従・空け攻撃、まったり製造工場、Nei AI、AIスレ4の4、daiAI、紫陽花AI、Nono's AI、Art:Staub、玉蟲 をご使用の方はPPを投げられる検証をよろしくお願いします)

413412 :06/09/04 14:34
一時的な対処ですが、

function OnIDLE_ST ()

のちょっと下に

local object = GetOwnerEnemy (MyID)
if (object ~= 0) then

が入っているAIは、 (object ~= 0) の部分を (IsMonster(object) ~= 0) にすればPPされても人を追わなくなるはずです。
(ですがPvP、GvGでプレイヤーと戦わなくなる不具合がおこるかも。参加する人はこの修正をしないように。)
バグの検証と、ちゃんとした修正をえらい方お願いします…

414(○口○*)さん :06/09/04 15:01
現在くまとどきどきがなってるのかな?
くまの原因は、AI.lua ver0.53 2048行目以降あたりでで、オーナーのターゲットが、
モンスターかどうかを判定して居ないのが原因
とりあえずの解決なら
2049行目を
if (IsMonster(GetV(V_TARGET, owner)) == 1 and FlagHelpNonActMob == NO and FlagIgnoreNonActMob == YES) then
に変更すればOKだと思うけど
どきどきはその不具合なるのかな?ソース見る感じだとちゃんと動いてくれそうなんだけどね

415(○口○*)さん :06/09/04 15:16
連続失礼
414ではできませんね
414の代わりに
2048行目を
if (FlagAttackQuickly == YES and IsMonster(GetV(V_TARGET, owner)) == 1 ) then
にしないとならない・・・

416412 :06/09/04 15:27
くまとどきどきだと、PP投げられて座られたあとに、ALT+Tで切り替えると投げたケミさんに向かうかな。上記の中だと軽症。
玉蟲とNono's AIは、自分と相手の間を行ったり来たり。
それ以外の上記のAIだと(ALT+Tで切り替えなくても)、そのままついていきますね

とりあえず自分のホムは修正したのですが、PP受ける側のAIの問題なので
修正してない人のホムは浚われ放題です

417(○口○*)さん :06/09/04 17:27
支援スキルを攻撃とみなしちゃう現象?

418(○口○*)さん :06/09/04 18:24
「非先攻・反撃AIで主人へのジオヒールに反応、BPジオを殴りだした」
っていう話がくまーAIだったかに昔あったけど、その延長っぽいね。
スキル失敗でいいなら、主人へのPPでも反応しそう。

419(○口○*)さん :06/09/04 20:35
「自分をターゲットにしている相手を敵と認識」
これが動作してこうなってしまってるね

IsMonster()でモンスターかどうかの条件入れてID捌かないとこうなる

420(○口○*)さん :06/09/04 22:21
逆に、それやってるAIが今「Gvで攻撃出来ない」現象を引き起こしてるな。
Gv中だけIsMonster外す様にしないとダメぽい。
もちろんAI内で判定出来ないから自分でやるしかないが…。

あとAlt+クリックで攻撃出来ないのは仕様みたいね。
PC相手だとAlt+クリックで対象のIDが取れないみたい。TraceAIしてみたら0しか吐かない。
だから攻撃出来ないというよりは、IDが取れないから攻撃しに行けないというのが正解ぽい。
擬似的に同じようなことをしたかったら、友達登録とかと同じ形態でIDとって、
それを攻撃対象に入れればいいと思う。問題点は、GetActorsを回さなきゃならないので
その操作を行うと一瞬重くなるかもしれないのと、地面をクリックしないとならないので
普通に対象クリックしてもダメだという点かな。

421(○口○*)さん :06/09/04 23:29
これ相手がPTに入ってるかどうか無関係なの?

422(○口○*)さん :06/09/04 23:33
無いんじゃない?
ターゲットするかどうかの問題だから。
不発しててもターゲット情報は拾われてるってことだろ。

423(○口○*)さん :06/09/04 23:38
試してはいないけどPT以外で不発もV_TARGETの値がセットされるんだろうな。
殴れはしないけど近接してしまうんでALT+Tで解除すればすむ話しではあるけど。

対処としてはIsMonsterが0の敵はすべてはじくのでいいんじゃないかなー
シーズなら1になるからPPで反撃してしまうし実際殴れてしまうけど
これは友達登録してある人は標的から除外って処理入れればなんとか。

424(○口○*)さん :06/09/04 23:44
ALT+Tで行ったりきたりとかするのは敵を見失ったり倒した後やIDLEに戻った時にMyEnemyリセットしてないせいだね
自作のは待機にした時やIsOutOfSightやMOTION_DEADとか10万ルールの死亡状態拾って
戦闘解除したらMyEnemyをリセットしてるけどデフォルトのやほとんどのはこの値保持したままみたいだしね

425(○口○*)さん :06/09/04 23:54
シーズだと主人と同ギルドの人が IsMonster で0 それ以外が全部 1 じゃなかったっけ・・・

GVで敵を殴らない現象は多分、
そのキャラクターが既に誰かに殴られてて「タゲが被ってる」と誤認されてるせいじゃないかと思うのですが・・・

あとプレイヤーとの距離を測って、近くの敵は殴らない、という処理を入れてるAIも
横殴りをしない対象プレイヤーと対人での敵が同じ「プレイヤー」と認識されるためこれが働いてIDが破棄されてるように見えます

PVだと同PT以外は全部1で帰ってきたのだけどなぁ
GVでの動作確認は一回しかやってないからなんとも・・・
とりあえず、過去のテストではIsMonsterを使っててもGV中の砦で敵を殴ることは出来ました

426(○口○*)さん :06/09/04 23:55
×IDが破棄されてるように見えます
○IDが破棄されます

書きかけの文が残ってた
|||orz

427(○口○*)さん :06/09/04 23:57
GV用にするなら友達登録を最大限活用して、全ての敵ID取得の処理で友達リストと同一IDを敵候補から弾くようにしなきゃだめだなぁ・・・

428(○口○*)さん :06/09/05 01:47
対人専用AI(もしくは対人モード)と割り切って「反撃をしない」で
済むんじゃない?
対mobならともかく、対人では反撃の必要性を感じないんだ。

429(○口○*)さん :06/09/05 02:20
簡単な検証。
PP術者のモーションとターゲットを調べてみた。

初期状態→motion=STAND target=0
PP→motion=STAND target=0
座る→motion=SIT target=対象ホムID
立つ→motion=STAND target=対象ホムID
自ホムにPP→motion=STAND target=対象ホムID
座る→motion=SIT target=自ホムID

PP使用後座るとターゲットが変更されるらしい。
PPは「成功」「PT外のため失敗」「POT未所持のため失敗」のどれでも同じ。

PP以外のスキルでもこうなるのか調べたほうがいいかな…?

430(○口○*)さん :06/09/05 02:22
追記。モーションとターゲットは上から時系列です。
PP→座る→立つ→自ホムにPP→座る
の順で行動したときのモーションとターゲットの値が書いてあります。

431(○口○*)さん :06/09/05 08:32
GetMyOwnerEnemy の除外条件に 友達登録済み、IsMonster==0 あたりを入れておけばなんとかなるかな
単純にプレイヤーを攻撃させたくなきゃID 100000 以下を拾えばいいし

432(○口○*)さん :06/09/05 14:51
こっこAIが敵をターゲット時、自分で移動して攻撃してくれないのは何故だc( っ'-')っ

433(○口○*)さん :06/09/05 15:43
>>432
それはこっちが聞きたい。
何故そんなことになってるんだ。

434(○口○*)さん :06/09/05 16:08
把握した
何故か敵との間合いを1セル開けにすると移動しなくなる
敵の横につくようにしたら正常に動いた

なんなんだろね、蔵でも壊れてんのかね

435(○口○*)さん :06/09/05 16:22
>>434
FollowDistanceが1でChaseDistanceが2にしているとかいうオチではあるまいな。

436(○口○*)さん :06/09/05 16:42
それはないc( っ'-')っ

437(○口○*)さん :06/09/05 19:11
ついにゲーム内の発言でホムに命令することが出来る時代がきたか

438(○口○*)さん :06/09/05 19:18
ログ保存から読み取るやり方?

439(○口○*)さん :06/09/05 20:12
いちいちチャットログをセーブするのがだるい上によりによってダンスかw
カプリス撃たせろよw

440(○口○*)さん :06/09/05 21:49
実戦で長台詞は厳しいとかそういうのがあるからこそ、ダンスへの適用は無難だとおもうけど。

441(○口○*)さん :06/09/05 21:56
でもこの機能、周りから見たら台詞に反応しているのか、
主人が喋ってるだけで実は手動で動かしているのか
まったくわからないところがさみしいな。
痛い人と思われるかもしれん……。

442(○口○*)さん :06/09/05 22:11
中見たら設定した発言が混ざってるとフラグが切り替わる様になってるのか
切り替わるフラグを条件にしてるとこ消して他のとこにこのフラグ使った新しいif付け足せば改造できそうだ
やってみるかw

工体AIを改良してるとこが開発元みたいだからそのうちライブラリとして使いやすくされて配られるだろうし
他AIでどんな使われ方するんだろ

443(○口○*)さん :06/09/05 22:25
発言命令は諸刃の剣であることは確かだ
でもソロケミが過疎地で狩る時にお遊びで「キャスリング!」とか発言して遊ぶ分には面白そうだと思った
(キャスリングする様に改造する必要あるが)

おまけ機能使う時は気をつけたほうがいいぞ
独り言の発生率が長時間の狩りを意識されてないから気がつくとAIのフォルダにtxtファイルが大量に作られる
正直ホム召還の時のおみくじログだけで十分だなこれ

ダンスは使ってみたが対象移動するだけで地味、下手するとクルクルのほうが踊ってるように見える
壁モードは勝手に殴りに行くのが気になったが一匹タゲ持ってたら殴りに行かないし
タゲ剥がし自動でするし溜まったら数減らして溜め込みにならないようにするし結構使えると思った
ただどれも無理して乗り換えるほどの物じゃないな

444(○口○*)さん :06/09/05 22:37
発言ネタはどこの事だよ。探してるけどわかんねええええよ。
パトラッシュ。。。僕、疲れたよ。。。少し眠るね。。。

445(○口○*)さん :06/09/05 22:45
安っぽいAIだよ
使い方としてはやっぱり/whereコマンドを打って、
それ保存させると、地図情報取得して、マップデータ切り替えがいいと思うんだけど
マップデータを使ってるAIがちょっと少ないんだよね

446(○口○*)さん :06/09/05 22:47
>>445
サンクス!!発狂寸前から解放されたよ。
ちょっと見てくる!!

447Glenelgの人。 :06/09/05 22:48
savechatからの文字入力ネタは、一応考えてますが、まだ当分先です。
コマンド入力→savechatの2手がかかるので、リアルタイム性の高い指示類には使いづらいと判断、
逆に画面操作では教えづらい複雑な情報を渡すために使えるかな、と考えています。
うちでやろうとしているのは、以下のようなもの。
なにかの参考になれば。

・地図名入力。
 /where入力→/savechat で、そこに現れたマップ名をホムで拾う。
 地図利用しているAI独特(笑)
・リーフ、赤スリムPot本数登録。
 カートから手持ちに動かすと「赤スリムn本取得」系のログが残る。
 これを元に、ケミが何本Potを持っているか判断。

448(○口○*)さん :06/09/05 22:53
ログから特定の文字を読むってことはRO内のコマンドのログも読ませることが出来るのか
今後の活用のされ方が楽しみだな

冬物語の人マジ良いもの作ったな、バグとった安っぽいAIの人もGJだと思うわ
早くライブラリ公開されないかな

>>444
他AIの更新が気になってAIアンテナ毎日見てたがよく考えると全員が毎日あそこ見てるわけじゃないしな
次から新機能の話題出す時はAI名も一緒に書くわ
すまなかった

449(○口○*)さん :06/09/06 07:26
/sauechatする度にログのファイル名変わるよな
ファイル名変わっても大丈夫なのか

もしかして/savechatの度にログ読んだ後すぐ削除されるのか?
だとしたらログを残したい時不便な気がするんだが

450(○口○*)さん :06/09/06 07:49
>>449
当然必要な懸念ですね。
動きとしては、
・ファイル名はデフォルトの「RO/chat/chat.txt」固定で考える。
・上記ログがある場合・・・
 ・ログ解析してコマンド実行。
 →ログのコピーをAIフォルダ下に作成。
 →元ログファイルを削除。

・・・という動きになるようです。
chatログの保管には気を使わなければならないのには同意。

451(○口○*)さん :06/09/06 20:16
タイムスタンプが最新のを、ってのはできないのかな
ていうかそもそも、RO\AI\の上位ディレクトリにあるファイルを弄れるのか・・・なんか怖いな、それって

452(○口○*)さん :06/09/06 20:40
規則性あるんだから、番号順にひたすらio.openしてみてnil返ってきたらその手前を読むとかでいいんでないかな。
相当処理重くなるのかもしれないけど。

453(○口○*)さん :06/09/07 01:47
>>449
ダウンロードして検証してきた

なんかログのコピーがchatフォルダの中に作られてるっぽい
/savechatするたびにsavechat__0.txt、savechat__1.txt、savechat__2.txtとコピーファイルが増えてった
最初からログファイルあったら自動的にコピーファイル作られてもとのファイルは削除されてた
ログ保存に関しては特に不便はなさそうだ

454(○口○*)さん :06/09/07 01:55
>>451
ファイルパスの設定次第ではROフォルダに限らず他のフォルダも弄れるんじゃないかって気がする
これの元ネタになったらしい初期配布のライブラリのバージョン0.3探してきたけど、発言ログをトリガーにしたDosコマンドの実行もやろうと思えばできるらしい
(ブログの古いライブラリ配布記事の記事へのコメントによるとバグがあって初期のバージョン0.3は動かないらしいが)

冗談抜きで今後は信頼できるところ以外からはAIをダウンロードしない方がいいかもしれん

455(○口○*)さん :06/09/07 02:07
すみません質問させてください。
ホムンクルスと一緒に戦ってるんですが、とにかく戦闘中も、敵を倒した後も、動きが止まるような感じになってしまって
牛乳の回復(ショートカットの連打)もまともにできない状態になってしまいます。

動けない間、ホムは攻撃を続けてるようなしぐさをとっていて(攻撃モーションで細かく痙攣してる)、
敵を倒した後も続きます。この間はチャットでの発言やアイテムを拾ったり、移動したりすることができなくて、
長いラグのような感じになります。(ホムの攻撃モーションが解除されるとそれまでにとった行動が一気に開放されます)

戦っている最中にアイテムを拾ったり、危なくなったときに翼や羽を使うこともできなくて困ってます。
こんな状況はボクだけなんでしょうか。もしよかったら問題ないAIを配布されているサイトさんを教えていただければ幸いです。
よろしくおねがいします。(ちなみにホムはスライムのやつです)

456(○口○*)さん :06/09/07 02:25
>>455
とりあえず、今使ってるAIを教えておくれ
その現象に心当たりはあるんだが初出の情報だし
名前が分かればそうでないものを勧めるなり作者にバグ情報送るなりできるしね

>>454
DOSコマンドの実行なら既にGvAIで表示使われてたね
なんかすぐに取り下げられたみたいだけど

457(○口○*)さん :06/09/07 02:51
>>455
ケミ+ホムだけなのか、他キャラでもなるのか
最近発生したのか
OSはなんなのか
ツールつかってるのか
PC自体重いのか

情報整理して提出してくれ

458 ◆g37UcEp//g :06/09/07 05:41
少し間が空きすぎてしまいましたがGvAI配布所作成しました。
http://gvai.blogzine.jp/gvai/

それに伴いケミWIKIのほうからはファイル削除させてもらいましたのでご了承ください。
GvAIへのご指摘ご要望から配布所運営の運営についてまで幅広く承ります。
というか、たぶんそれがないとこのまま動きません。

現在は攻め時の対ロキについて構想中

459Glenelgの人。 :06/09/07 07:06
>>455,456
それ、例の「モーションキャンセル狙いのATTACK_STを複数回実施」系の弊害と思われる。
うちのAIでもATTACK回数を増加させると起きることがある。
どうもホムによって差があるようで・・・こちらで確認したかぎりでは、以下のような感じ。
 ・進化後のバニル(古代魚)では、ほとんど問題なし。
 ・進化前リーフ(緑)で、ときどき起きていた。

参考までに、GlenelgではAI()内のATTACK_ST実施回数を増やすようなタイプでの対応。
デフォルトは「複数回実施はしない」カスタマイズ項目にしてある。

460(○口○*)さん :06/09/07 13:41
>>455-457,459
今出先なので調査不能なので、仮説というか懸念事項のみ。
GetV()の戻り値って、1回のAImain()中で変化することはあるんでしょうか?

現在のモーションキャンセル対応って、1回のAImain()内で複数回 ATTACK_ST動作を呼び出すのが主流ですよね。
もし最初の1回目のATTACK_ST動作で敵を倒してしまった場合に、その敵のモーション:
GetV(V_MOTION, <その敵のID> )は、2回目以降のATTACK_ST処理時点では正しくMOTION_DEADになっているんでしょうか。

もし変化していないとなると、多くのAIで考慮している死体には攻撃しない処理が動作しなくなっているはず。
そのあたりが気になります。

461(○口○*)さん :06/09/07 14:37
>>455
のは三回ATTACKをするときのタイミング調整のループ処理でクライアントが止まってるだけじゃないか

>>460
AImain()自体が恐ろしく一瞬で終わるからその中で変化する確率は非常に低いと思う
確か過去の検証だと一回で1/100秒以下だったかと思う
その一瞬にATTACK_STを入れることで、攻撃行動自体は鯖で処理されないが、
クライアントで管理してるモーションだけはキャンセル出来るという状態を利用したのがモーションキャンセル
(低Agi弓手のDSキャンセルと同じ理屈)

例えモンスターが生きててもキャンセル用のATTACKでは攻撃出来ないので(AImain自体の速度が速すぎるため)その懸念は考えなくてもいいかもしれない

462Glenelgの人。 :06/09/07 19:58
>>461
>のは三回ATTACKをするときのタイミング調整のループ処理でクライアントが止まってるだけじゃないか

そう断ずるのは、早計かもしれません。

うちのAIでは、タイミング調整のループ(AI中でのwait処理)は一切入っておらず、単純にATTACK_STの処理を増やしているだけ。
ですが上述の459にあるように、まったく同じAIでもホムの種類によって動作が違う「ことがある」ことも確認しています。
「進化バニルでは、複数回ATTACK_ST実施の結果、なぜか早くなった(おそらくモーションキャンセル発生)」ということと同時に、
「未進化リーフでは、複数回ATTACK_ST実施の結果、なぜかラグっぽく動作することが起きることがある」というのも事実です。

まあもともと「ATTACK_STをたくさん実施で速くなる」ってこと自体が論理的な裏づけがないので、
今回の現象も起きても不思議はないところ。
各AIで適当に対処するしかないでしょうね。

463(○口○*)さん :06/09/07 20:03
ホムのASPDや状況によるし他にそういう例がないからわからんなあ

464(○口○*)さん :06/09/07 22:07
同じ複数ATTACK処理でもAIによる気がする
この辺はそうそう解決できる問題ではないのかもな

465455 :06/09/07 22:09
使ってるAIはゼロマテリアルさんのROホムンクルス用-どきどき版AIです。
テキストファイルの最初に2006/08/23uと記述があるので、現在配布されている最新版を使っています。
PCは古いですがラグナロク自体は何の問題もなくプレイできます。OSはXP-Professionalです。
ちなみにCPUはPentium3s-1.26GHz / メモリは768MB / GPUはGeforce5900です。
町の中を歩いたり、フィールドを歩いているときも戦闘をしなければ一切問題は発生しないです。
AIファイルをカスタマイズする際に編集をミスった可能性があるかもしれないとおもい、念のために配布されている
そのままの設定でも遊んでみましたが、症状は同じでした。

455ではスライムのホムンクルスと書きましたが、正確にはバニルミルトの亜種、進化前です。
いつもはスキルの自動発生率を70%くらいにしています。

バニルミルトでも問題なく使えてるよっていうAIがあったら教えてもらえないでしょうか。。

466(○口○*)さん :06/09/07 22:09
AIによるっていうかATTACK_STを複数回回すと一口に言っても
そのATTACK_STそのものの中身で何をどれだけやってるかが大分違うから
差が出るのは当たり前だろうな。

467(○口○*)さん :06/09/07 22:15
>>455
配布間も無いわけでも利用者が少ないわけでもないAIで
そんな問題が起きるって事は自身の環境の問題である可能性が濃厚。
どきどきAIは比較的デフォに近くてあまり処理をしない軽い方だと思うので、
アレでダメだとすると他は殆どダメなような気も。

ただ恐らく問題がATTACKの複数回試行なのだとしたら
そこだけ塞げば他のAIでもいいかもしれないし、どきどきAIでも平気になるかもしれない。

とりあえずどきどきAIでAttack複数回試行をさせたくなかったら
最新版の1147〜1150行と1211〜1213行をコメントアウト(文の頭に--と書く)すればよし。
↓この部分が1147〜のとこ。

-- 最速攻撃対策(攻撃命令キューを再送信)
if (ActionFlag == 1) then
Attack (MyID,MyEnemy)
ActionFlag = 0
end

468455 :06/09/07 23:16
>>467
該当する部分をコメントアウトしたところ、普通に遊べるようになりました!
1147と1211の両方をコメントアウトしましたーこれでODにいけるぅ。
ありがとうございましたー!

469(○口○*)さん :06/09/07 23:46
起こらなくなったってことはやっぱりそこが原因なのかな?
どきどきも今見た限りだと少なくともロジック的にAIが止まる要素は無いみたいなんだよねー

コメントアウトした場所も単純にAttack送ってるだけの場所みたい

470(○口○*)さん :06/09/07 23:49
関係ないけど、GVAIの人とID同じでびっくりw

471(○口○*)さん :06/09/07 23:54
>チャットでの発言やアイテムを拾ったり、移動したりすることができなくて、長いラグのような感じになります


こういう報告、前にもあったような気がする。
丁度ATTACK複数回が流行りだした頃だと思うけど、
環境によってはこれが原因で上記のようになるケースもあるってことなんかね。

各AIは一応複数試行のON/OFFスイッチ出来るようにしといた方がいいかもね。

472(○口○*)さん :06/09/07 23:57
ごめん追記。

ふと思ったんだけど、これはPCスペックっていうよりもしかすると
回線やセキュリティ系ソフトの可能性もある…?
要はAttack()を多重送信して引っかかってるんだから
通信系で何かあるとしたらその辺なんだろうと予想するが。

もしまだ見てれば>>455の人は
ネットの接続方法とインストールしてるセキュリティソフトについても教えて欲しいな。

473Glenelgの人。 :06/09/08 00:10
>>472
繰り返しますが、こちらでは
「同じ環境(PC)で」
「同じAI動作(同じATTACK_ST追加実行パターン)で」
ホムの種類だけが違う(進化バニルと未進化リーフ)だけで、動きが変わっています。
PC環境だけの問題では説明ができません。

そしてこれも繰り返しですが、そもそも攻撃処理を繰り返すことでモーションキャンセルできているらしい、というのもあくまで経験則。
理論上は起きないはずのモーションキャンセルが起きるのですから、
理論上は起きないはずのROクライアント硬直が起きても、不思議はないです。

474Glenelgの人。 :06/09/08 00:11
ごめん、書きかけで送ってしまった(^^;;

とにかく、理論上説明しきれない話だと私は思っているので、
うまく複数攻撃処理を切り離せるようにしておくのが望ましいかもしれませんね。

475(○口○*)さん :06/09/08 02:23
実相当初からモーションキャンセルのON/OFF出来るようにしていてさらにテフォルトでOFFになってるAIが二〜三個あった気がする
その制作者はこのこと知ってたのかもしれないな

476(○口○*)さん :06/09/08 03:46
進化前はOFFに進化後はONってのがいいのかな

477(*○口○)さん :06/09/08 07:06
ホムの種類によって違うなら一応は説明できるんじゃない?
実際のASPDにも依存してキャンセルできるタイミングが違うから
キャンセル出来なかった分のAttackが影響を与えている可能性がある

説明が出来ない理論上おかしいと頭打ちにするより
ちょっとこじ付けっぽくても体感や推察も交えて
実験したりしていった方が楽しめると思うけど・・・

478(○口○*)さん :06/09/08 07:11
個人の環境によるものは個人で対処するしかないけれど
Luaどころかプログラムも知らない人がある程度中身を理解して
それなりに改造できるようになれっていうのも酷な気が

479(○口○*)さん :06/09/08 07:13
誰かそんなこと言った?

480(○口○*)さん :06/09/08 07:25
書き掛けだったんだよ

で、そうなるとこういった場所で有志に質問したりするわけだけれども、
それでも原因の特定が難しいことだってある
AIを公開する側も頭を抱えるとなるとトライ&エラーの繰り返し

組めない側としては申し訳ないやらもどかしいやら
自分はどきどきAIで不具合が起きた人ではないんで、大きなお世話だろうけど

481(○口○*)さん :06/09/08 07:31
チラシ
自分は何か不具合が出たら
適当に他のAIも入れて試してみたりする

482Glenelgの人。 :06/09/08 08:02
>>477
観点がちょっと違うのです。
AIを個人で作成・改造する分には、仮説と現実動作だけでAIをいじるのはやぶさかではないです。
ですがAIを公開している側からすると、自分が論理的に説明しきれない内容のモノを公開して
その部分で問題が起きた場合、それは対処が困難な迷惑になるわけで。

実験・推察も楽しみの1つという点は否定はしません。そこから新しい理論が確立できるなら、むしろ歓迎です。
ですが、今回の場合はかなりやっかい:自分ひとりでは解決できそうもないし、それはどのホム作者も同じだと
思うので、当面の回避策として「Offできるようにする」ことを提案したまでです。
前向きに検証を進めることを否定するわけではないです。

文句をいうだけなら誰でもできるので、前向きな話を。
発生条件がわかれば、そのケースで今回の多重Attack処理を行わないようにするだけなので、対処は簡単です。
ですが、その条件が絞り込めないのが大きな問題。
今回の現象を「わたし自身の体験から」言えば、ホムの違いが発生条件の1つになっていることはまず確実です。
つまりこの現象を実験・検証・理論化するには、ホム作者が「16種類のホム全て」について動作確認をしないと
なりません。
また「わたしの推測から」言えば、おそらくはこの現象は未進化のホムでのみ起きるはず。
(455氏の未進化バニル、わたしの未進化リーフで現象が起きており、推察とも一致)
ですがそれでも最低8種の動作検証をしなければなりません。
さすがに勤め人1人では検証困難です。情報求む。

483(○口○*)さん :06/09/08 10:00
仮説と現実動作でAIいじってる自分
バグ出たら仮説と実際の値とのズレからバグ特定してます

このへん、研究者気質な人とプロ気質な人の差だなと思ったとです

こちらの環境では、未進化バニルでAttack2回でも3回でもラグは感じませんでした
攻撃速度も全く変わらないように感じます
(Attack複数送ったほうが僅かに「ちょっと遅い?」と思うくらい、「気のせいかな?」で済むくらいの差です)

スペックはAIアンテナの開発環境の欄にあるとおり、3年以上前に6万くらい(OS除く)で組めるハードスペックに光回線です

484(○口○*)さん :06/09/08 10:01
ふと思った、自分もメール欄じゃなくて名前欄で名乗った方が良さげ?

485(○口○*)さん :06/09/08 10:11
どうでもいい。

わけじゃなくて
トリップないなら名乗ってもあまり意味ない。

486(○口○*)さん :06/09/08 10:28
つーかディレイキャンセル使うとラグるとかいつの話してるんだ?
ラグらないようにディレイキャンセルは不可能だろう?
限りなくラグが無くなるように、なら可能だろうが、
初期の状態よりラグくなるのは至極当然だわな。何を今更騒いでるんだか・・・

487(○口○*)さん :06/09/08 10:55
現状をまとめると、報告があったのは以下のような感じ。

○異常発生
 ・未進化リーフ(緑) Glenelg
 ・未進化バニル(なめくじ) どきどきAI
○異常なし
 ・進化バニル(古代魚) Glenelg
 ・未進化バニル(ゼリー?) 安っぽいAI
 ・未進化バニル(なめくじ) どきどきAI+複数攻撃しない改造

ここから言えるのは、
・複数攻撃で、なにかおかしなことが起きることがあるのは確か。
・GlenelgのようにAI共通でも異なるケースがあるので、AIのつくりだけの問題とも思えない。
・安っぽい人のはほんとにゼリー?なめくじだと、ホム種類以外にも何か原因があるはず。

どっちにしても情報不足。

>>486
ディレイキャンセルじゃないです。
単純に「ディレイをいれないでAttack()だけを増やす」ような話でも、ラグっています。

488(○口○*)さん :06/09/08 11:19
報告とか見てても、ホムの種類というより進化と未進化で何か違いがあるんじゃないかなぁ
進化後もっさりする仕組みもまだハッキリしてないし
>>487の言うとおり情報不足なのは確かだけど

489(*○口○)さん :06/09/08 11:26
別にAI作者だからって必ず自分のAIにどうこうって事じゃないんだけどなぁ
前スレできのこAIの人が名無しでAIにループウェイト掛けてASPD調整を行っていた様に
公開しているAIとは別に個々の話題に対して、それぞれLua弄くれる人は弄くるし、
コード書けない人も使ってみた感想や症状報告したりしていけばいいだけだと思うんだけど・・・

何というか硬いというか483の研究者気質プロ気質というか・・・
名乗る名乗らないもそうだけど、別にAIの問題は特定の人が解決しなければいけない訳じゃない
どこのAIだって皆、AIスレから生まれた何かが関わってる
どこのAI作者だろうとAIスレでは一ホムケミストでいいじゃん?って感じ

OFFにしておくべきとか、良く解らないモノをAIに入れたくないとか
そんなコトじゃなくて、まぁ未検証ではあるが未知の問題に対する可能性を
一例だけで頭打ちにしないで〜って事なんだけどプログラマとしての
プライドというか自信、責任みたいな物も分かるからムズカシイ所・・・


で、話を戻してASPD
>>455氏より回線、PC環境共に良い状態で深夜〜早朝だったけど
未進化フィリル+どきどきAIデフォで異常なしは確認
ただ、ほんのワンクリック分ケミの移動が送れる感じが稀にあったので
今夜サブPCの方でも確認取って見ます。

490(○口○*)さん :06/09/08 12:08
「よくわからないけどうまくいく」というブラックボックスから
副作用が発見されたなら、デフォルトOFFにするという流れも
ごく自然だと思うけど。

こと公開AIでは、デフォルトは安全側にしておくほうがいいよ。
AIを利用するだれもがこのスレ見てるわけじゃないから。
G(ry)の人もこのことを主張してるんだと。

たぶん勘違いしているのは「切り離す」の意味。
削除するとかじゃなくて、ただ埋め込んだだけの状態から条件式を
挟むようにする(つまり設定可能)ということのはず。

どうでもいいけどGlenelgって山本山だよね。

491(○口○*)さん :06/09/08 13:02
>>455さんの現象を見てコメント。
工体AIをベースに色々いじってる者です。

Attack()ルーチンはAI()の前後に挿入して使っていて同様の現象になったことがあります。
ホムはフィーリル2進化体。
場所はOD1,2、アサG前サンドマンで発生。
対処としては、AI()の前後に挿入したAttack()をコメントアウトしてその場は
直したのですが、後日このコメントアウトを戻しても同様の現象にはならず。
>>455さんの記事日時から鯖が激重だった日じゃないかなぁとは思うのですが、以下邪推。

こっからはIP通信のお話になるけど、モーションキャンセルしつつホムが本来持つ、
ASPDの潜在能力(本来の能力?)を出すためにAttack()を複数回呼び出す訳ですが、
鯖の激重も相まって、TCP通信のACKがもらえず硬直したとかは考えられないかな。
 ホムのモーション<ASPD(モーションキャンセルで高速化可)<過剰なAttackパケ
と考えたとき、過剰なAttackパケに対して鯖が応答を返さず、クライアント側でタイムアウト待ち、
タイムアウト後にドバッと整合合わせでパケ破棄で動き出すとか。
どうも進化体か、種族かというより、ホムのステータス(=ベースレベル)で決まる
ASPDと過剰なAttackパケのバランス(鯖の重さも?)のような気がしなくもない。

492(○口○*)さん :06/09/08 14:47
俺も>491とほぼ同じ考え
古鯖でココ最近やけに酷いラグが発生してたが、
そのときはAttack()をAI()の最初と最後に1回ずつ送るだけでも
稀にそんな感じになった
同じもの使ってる友人はそうでもなかったとか言ってるし、
PCの差もあるのかもしれないが

流れを見てるとそれぞれに発生条件があるようだし、複数の原因があるんだろう

493(○口○*)さん :06/09/08 16:53
>>487
梅ゼリーです

>>489
ちょっと考えすぎてました、もちょっと気楽に書き込みますね
確かにトリップないと意味ないし、私が考えすぎてました

んー、もうちょっと条件ごとの実測結果が集まらないと今以上の仮説すら出ないですね・・・
検証してくれている方々はほんとうにありがたいです、パターン量が必要な検証ほど検証する人が多くないと厳しいですからね

494(○口○*)さん :06/09/08 16:59
自分は回線とパケットの関係が原因だと睨んでるけど、これも仮説の域を出ないし情報待ち

ホムの種類、使用AI、回線スペック、PCスペック、同時に動かしているソフト、といった情報があると便利かもしれない

自分の場合は、梅ゼリー、AIは安っぽいAI、光回線、同時起動のソフトはノートンとIRCのみ、
OSはMEでCPUは1.6GhzのAMDのデューロン、メモリは768MB
Attack複数回送る処理をONにしてる時にいったフィールドは
プロンテラ街、フェイヨン街、フェイヨンダンジョン1F〜2F、プロンテラ南マップ、イズルード街、アルベルタ街

これでラグは確認できず

495(○口○*)さん :06/09/08 17:27
491だけど、ちょっと自分の推論を基に考えてみました。
ASPDを「秒間何回攻撃するか」に換算したとき、[秒間攻撃回数=50/(200-ASPD)]で
求められるっぽい。
ROクライアント上(プレイヤーキャラクターでは)、ASPDの最高値は190だから
攻撃間隔は最大で50/10で秒間5回。つまりRO上の最小攻撃間隔は200msってことになる。
なので、グローバル変数を1つ用意して、Attack()の冒頭にGetTick()で攻撃した
時間をグローバル変数に代入。AI()の冒頭と末尾に記載するAttack()呼び出しに
条件をつけて、(現在時刻−グローバル変数)≧200ならAttack()呼び出し
ってのはどうでしょうかね。
実際にはコマンド予約とかがあるから綺麗にはいかないかも知れないけど。
今、テストできる環境がないのでコーディング含めて確認は後日になりそう。
できれば、ここを見ている開発陣営でも確認してもらえるとちょっと幸せかも。

#一番いいのは自動的にステータスを読み出せればいいんだけどそれは仕様上無理っぽいので
 手動で現在のASPDを入力するグローバル定数(工体ならconfig.luaに追記)を用いて調整・・・
 っていうのが一番いいのかな。
 鯖側でASPDを超えるAttack()パケを正しく破棄・無視してくれることを前提として組むよりは
 AI側で多少自衛したほうがいいのかもね。

>>494さんの提案のわたしのRO環境。
 PenM725(1.6G)/RAM:768M/ADSL8M(実効:上0.8M、下り2M)/OS:XP ProSP2
AI:工体・改(自力改造)
  ※AI()ルーチン内にAttack()の複数呼び出し記述:あり

496Glenelgの人。 :06/09/08 19:51
荒らしてしまった感じで申し訳ない。
490氏のフォローどおり:人によって現象が出たり出なかったりしてるけど、出ている人は100%困ってるわけで。
困っていない人は元通りに使えて、困っている人は(ソースをいじる以外で)回避できるような、
そういう形で提供するのがいいんじゃない?ってことです。


ともあれ、こちらの環境。
CPU:AMD Athlon2.0GHz
メモリ:1GB
OS:Windows XP Sp2
グラボ:オンボード、GeForce4相当
通信系:ADSL1.5M
AI:Glenelg

実際の接続時間と状況でいうと・・・
メインキャラの古代魚バニルは普通に月額課金しているのでいろんな時間につないでいるけど、
ついぞ現象がでたことはない。
対して、テスト用に作った緑リーフは(課金状況の関係で)ごく稀にしかつないでいないけど、
早朝(日曜AM800台)に動かしていたときでも現象は起きることはあった。

確かにうちの環境は回線は細いので、通信の影響がでている可能性はありそう。
通信状況でばらつくのは確かなので、起きたり起きなかったりというのも納得できる。

・・・さて、どう対処するべぇか(笑)

>>495
そのやり方だと、公式AIよりもAttack()回数減りますよね?
公式AIは理論上AI呼び出し周期ごとに1回Attack()してますし。
・・・それでかえって速くなったら笑うけど(^^;;

497(○口○*)さん :06/09/08 21:06
>>495
やってることが、既存の攻撃モーション(アニメ)を優先した
「攻撃ディレイ設定」と変わらないような。

それともモーションキャンセル用追加Attack()にだけタイマーを
設けるということ?

498(○口○*)さん :06/09/08 21:31
>>495は多重送信側のAttackにディレイ入れようって言ってる。
つまり、必ず1回送られる純正のAttack()と多重Attack()が

*ループ1
純正Attack()  --待ち時間240ms設定(1ループ飛ばしと近似する
多重Attack()

*ループ2
純正Attack()  --数値代入は飛ばす

*ループ3
純正Attack()  --待ち時間240ms設定
多重Attack()





てことじゃない?
このコードだと「AI()の先頭付近に入れた多重Attack()」は出なくなるけどね。

499(○口○*)さん :06/09/08 21:37
壮大に間違えた。

*ループ1(初回)
純正Attack()  --待ち時間240ms設定(1ループ飛ばしと近似する

*ループ2
純正Attack()  --数値代入は飛ばす

*ループ3
多重Attack()
純正Attack()  --待ち時間240ms設定

*ループ4
純正Attack()  --数値代入は飛ばす

*ループ5
多重Attack()
純正Attack()  --待ち時間240ms設定


AI最後の多重Attackが一切無意味に。
AI冒頭の多重Attackが1回おきに出る感じかな。
しかし純正Attack自体蹴られるタイミングもあるので、多重も出るループが有効Attackを送れる回にならないと
結局デフォと変わらないことになってしまうような気がする。

500(○口○*)さん :06/09/08 22:54
んー、どうせAIの周期めちゃ早いんだから、いっそ純正ATTACKもキャンセル用のATTACKも両方とも制限しちゃえばよくない?

キャラクターの限界ASPD→重力が設定した(動作システム的な)快適プレイのASPD限界値
かもしれないし
ATTACK回数を自重するのは面白いかも

パケット無駄に飛ばす回数減らせばそれだけラグは減るはず
ROは特に多量のパケットに弱いみたいだから他の面でも効果があるかもしれないですよ

乱数処理の件もあるし、クライアントもサーバーも操作予定のパケット全部処理しようとしてるプログラムになってるんじゃなかろうか

重力の「とりあえず情熱で組んでみました」みたいな穴だらけっぷりは凄いものがあるし(酷い意味で)、
不要なパケットわざと弾いて負担軽くするという配慮がなされてない可能性が高いわけで・・・
無駄なパケット極力はじけるならそのほうがいいかもしれないです

直接現在の問題解決に繋がるかはあやしいけど、それほど的外れではないと思う

501(○口○*)さん :06/09/08 23:27
関係ないかもしれないが
ハンターの攻撃罠で敵を巻き込みすぎるとクライアントや回線が落ちるのや、ホム連れてるとデフォAIでも妙にラグりやすいのと似てる気がしなくもない

502455 :06/09/09 02:28
>>472
もちろんみてます〜
インターネットへの接続はメルコ(Buffalo)のルータを使った常時接続のADSLです。
回線はフレッツADSLの32Mくらいのサービスです。
セキュリティ関連のソフトはなにも入ってません。(ノートンとかバスターとかなんにも。。)
Windowsもサービスパックなんかがあたってない無印のXP Professionalです。

503489 :06/09/09 04:52
回線:Bフレッツベーシック
サブPC
WinXP Pro SP2 (SP2のFW使用、常駐無)
Celeron 1.70GHz
224MB RAM (※256-32)
SiS 651 32.0 MB

ホム:未進化フィリル 時間帯:22:30〜23:30
AI:どきどきAI、こっこAI、GlenelgAI、安っぽいAI
実装されている基本的なASPD対策は全て異常なし
(GlenelgAIはiniのループ設定を2で時々、3で戦闘時常にラグ発生)

これらにデフォAIを加えて状態処理の前後を

    if (MyState == ATTACK_ST) then
        Attack(MyID,MyEnemy)
    end

    -- 状態処理

    if (MyState == ATTACK_ST) then    -- *1
        Attack(MyID,MyEnemy)
        for i = 1, 1000, 1 do j = i + 1 end
        Attack(MyID,MyEnemy)
        for i = 1, 1000, 1 do j = i + 1 end
        Attack(MyID,MyEnemy)
        for i = 1, 1000, 1 do j = i + 1 end
        Attack(MyID,MyEnemy)
    end
と同一処理にした場合、全てのAIで>>455と思われるラグ発生
*1部分をAttack()3回にした場合は若干発生しGlenelgAI、安っぽいAIの2つが他よりは少し発生しやすい
1、2回では特に異常は感じられない
ループにより遅延を掛けているが、AI()終始でのGetTick()の差は0(1ms未満)

504489 :06/09/09 04:52
〜続き〜
回線:Bフレッツベーシック
メインPC
WinXP Pro SP1 (バスター2006常駐)
Pen4 2.80GHz (2 CPUs)LGA775
512MB RAM (※256*2 Dual)
GeForce 6600 128.0 MB (PCI-E)

時間帯:23:30〜00:30
基本ASPD対策は異常なし(GlenelgAIは3回以降ラグ発生)
同一処理にした場合は3回以降、全てのAIで>>455と思われるラグ発生
1回では特に異常は感じらず、2回で稀に発生


状況としてはメインサブ共に、敵やホムの攻撃など周囲の状況は異常ないが、
ケミの移動、攻撃、発言などパケットを介すと思われる全ての行動が遅延する
Ctrl+クリックをすればケミは通常通り攻撃するが、1クリックごとは遅延により困難

過去の等速移動パケットの関連も考えて、サブPCでAI周期毎にMoveして
プロ十字路周辺を歩いたがホムなしと特に変わらず、等速移動はきちんと動作

戦闘開始からラグが体感出来るまでの時間は特に法則は見られずバラバラ
ラグその物は、死体IDを考慮しないAIで回復に若干時間が掛かり
その他AIでは、起きたラグの具合や戦闘時間にのみ関係して回復時間が増減する
戦闘時間が長ければ長いほど回復に時間は掛かるが、回復すれば通常通り

メインの方がAttack()回数に弱いのがイマイチ腑に落ちないが、
サブが回数分処理し切れていない為、強く見えるだけの可能性もある



Ctrl+クリックや周囲の状況が問題なく、ケミの行動のみ支障が出ることから
パケット多過ぎじゃなく、AIの攻撃命令多過ぎに影響していそうな感じがしました

>>502
次から次へとあれですが、ラグが出る状態のAIでラグ発生中、周囲の状況が
どうなっているか(ダメ表示が出ているor止まっている)もお願いします

505Glenelgの人。 :06/09/09 06:42
検証おつかれ。

503の後半部分が興味深い、というかキモになりそうな。
やっぱり単純にAttack()回数が多いだけで起きるということが言えそう。
パケット仮説が正しそうな気配。いよいよ対策が厄介に。

つーか・・・うちのはおきやすいのか oTL
仕組みから考えて、AIの複雑さはあんまり関係ないだろうしなぁ・・・
どっかでチェックもれして余計なコマンドなげてるかしらん。
これは個体の問題だからこっちで調査するしかないか。

506(○口○*)さん :06/09/09 06:54
検証お疲れ様です!

AI一回の周期で複数のパケットを送るのがまずそうですね
そう考えるとデフォルトAIは一回 AI(myid) をまわす間、一個のパケットしか飛ばさない仕組みなのが実に巧妙だなと感心してしまいます
攻撃時はほとんどのAIが、Attackだけでなくオートスキルでスキルを飛ばすパケットも同時に送ってるから
これも関係してるのではないでしょうか?

一応、こちらで行った検証を
光回線で梅ゼリー、自作のAIでPCスペックは自ブログで晒してるもの
ATTACK2回送る方ではラグは確認できず、攻撃後ホムがプルプルと痙攣してモーションキャンセルが発生するだけで異常は見られません

こっちでもAttack複数送る処理作って検証してみよっと

3回目から異常が出るのだとしたら、ROは不要パケットを弾く処理が脆弱で不完全なのかもしれませんね
3つ想定がパケットが送られるとクライアントが若干フリーズしかかるということでしょうか

507(○口○*)さん :06/09/09 06:56
×想定が
○想定外

508(○口○*)さん :06/09/09 07:00
追記:Pen4は連続処理に弱くてゲーム処理が特に苦手なのでラグが出やすかったのかもしれないです
確か、他AIで不具合の話が出たときもPen4のPCで特に不具合が出てたと思います
Pen系は主流CPUであるだけに、AI組む時もマシンへの負担は特に気をつけないといけないかもしれないですね

509(○口○*)さん :06/09/09 07:04
とりあえず報告。

くまAI、進化バニルにてAI.lua末尾の

> end
> -------------------------------------------------

の前に以下を3回追加して使用。

> if (MyState == ATTACK_ST) then
> OnATTACK_ST ()
> end

ASPD上昇効果確認。
これによるラグはない模様。

510491の人 :06/09/09 08:29
検証お疲れ様です。
こちらも何とか時間を作って検証したいところですがいまいち時間とれずorz
>>Glenelgの人。
>ROは不要パケットを弾く処理が脆弱で不完全
TCPにお詳しいか分かりませんが、下のような仮説は立てられませんかね・・・
もともと、わたしが考えていたのをTCP通信の図で描いてみた。
(改行多すぎエラーが出たので次へ続く)

511491の人 :06/09/09 08:31
RO鯖      RO蔵(+AI)
|  ←SYN      |
|  →SYN+ACK  |(TCPコネクション確立)
|  ←AI攻撃    |
|  →ACK      |(攻撃成功)
(AI攻撃に対してACKがきっちり返ってくる間のケミのほかの行動はOK)
|  ←AI攻撃(過剰)|(鯖からACK返らず)
|  ←AI攻撃(過剰)|(鯖からACK返らず)
|  ←AI攻撃(過剰)|(鯖からACK返らず)
|  ←AI攻撃(過剰)|(鯖からACK返らず)
(ここでACKが鯖から貰えないため、TCPの特性上、ケミの行動含め
 順次パケ詰まりが蔵で発生するが、AI側でAttack()が呼び出されているため、
 RO蔵内はAttack()実行されたことにより、見た目、ホムは攻撃モーションを
 高速で繰り返す*痙攣状態*結果、TCPタイムアウトが発生し、
 コネクションを張りなおす)
|  ←RST      |
|  →RST+ACK  |(TCPコネクション破棄)
|  ←SYN      |
|  →SYN+ACK  |(TCPコネクション確立)
(この時点でラグ解消、溜まったパケ*RO蔵で再送してる可能性を仮定。RO蔵で詰まったパケは
 全て破棄をしているのであれば最新行動まで一気に「コマとび」してるように見えるはず。
 どっちの現象だったかは前者の可能性が高い*を新コネクションで順次、鯖へ送信し、
 ラグで一気に行動が動くような現象が発生)

上図のような状態を仮定した場合、回線能力やネットワークカード(CPU含むハードウェア)に
至る相性にまで及ぶので、万能なモーションキャンセルアルゴリズムをAI側で組むのは
かなり困難になりそう。

一部スレ違いになるけど、升で擬似蔵が蔵依存のディレイをカットして、
超高速攻撃を可能にしていた点からもASPDを鯖側できっちり検知して、
ACKは返すが攻撃処理は無視するというアルゴリズムが鯖側で脆弱な気がします。
#上記の升対策がされているのかどうかは分かりませんが、超高速攻撃パケの
 防御策として意図的に受理してない可能性(だとしたらものすごい手抜きともいえなくないけど)も?

ここまでくると、後ろでEthereal等でパケットをモニタしないとなんとも言えないレベルになってきそう。。。

512491の人 :06/09/09 08:39
そこで、発想を逆転させてみてはどうでしょうか。

Attack()の冒頭にタイマー用のグローバル変数を用いることは変わらないけど、
「ラグが発生したと思われる状態」を検知するようにしてみる。

例えば、1000ms以上Attack()の呼び出しに時間がかかっているようであれば、
Attack()のルーチンを即座にreturnでルーチンを切り上げてAttack()を
キャンセルさせる。

この「1000ms」も環境変数にしてしまえば、利用者の環境に応じて
「ラグが生じたと検知する時間(ms)」という環境変数を利用環境に合わせて
変えてもらうとか。
#上級利用者を想定するのであれば、「ラグ検知機能を有効にする(F/T)」も
 環境変数に加えてAttack()の冒頭にIF文で条件分岐させる。

513(○口○*)さん :06/09/09 09:03
>>508
>ゲーム処理が特に苦手
よく聞くフレーズだし、同世代CPU勝負では正しいだろうとは思うけど、
一般的にPen3やCeleronよりも苦手なの?
それにAIとそれにまつわる処理のほとんどは事務処理に近いものじゃないかな。

あとCPU原因によるものなら、ラグる前にコマ落ちするはず。
幻覚状態のコマ落ちっぷりを想像してもらえると。

>>511
TCPコネクション途切れたときが「鯖缶」のはず。
ADSLの着話瞬断(PPPoEは死なない)でも鯖缶するから、
張り直すようなことはしてないと思う。

で、本題。
>>504
>敵やホムの攻撃など周囲の状況は異常ない
周囲は何事もなく(パケット受信を伴う)普通の動きをする、ということで
合ってる?

もしそうだとすると送信部分に限定されるから、こういう仮説。

送信キューは鯖応答(ROパケットレベル)を待ってから吐き出すという仕様
→鯖の応答が間に合わず、未解決のコマンドが送信キューに蓄積
→Attack()のコマンドが解消されるまでケミ本人の行動が遅延

514(○口○*)さん :06/09/09 09:10
>ADSLの着話瞬断(PPPoEは死なない)
そういえばPPPoE死んでないときちんと確認したこと無かった…。
見なかったことに。orz

とはいえコネクション死んだら鯖缶は確実だと思う。
無線LAN原因(有線だと問題なし)の鯖缶もよく聞くし、張り直してくれたら
こんなに鯖缶しないはず。

515Glenelgの人。 :06/09/09 09:48
通信についてはいくらなんでもWindowsのソケットを使っているだろうから、
さすがに今回のレベルでTCP/IPのトランスポート層以下に影響がでるというのは考えづらい。
あくまでアプリ層の論理レベルでの通信待ちでしょうね。
複数回のAttackで不整合が起きる、そしてうまくいくケースもあるということから推論すると、
以下のような状況かもしれません。513氏の意見に近いかな。

・公式AIの動作
ROクライアント   ROサーバ
 Attack() 指示→
 受付応答待ち(画面描画止まる)
       ← Attack()受付応答
 動作再開(描画再開)
          攻撃処理
       ← 攻撃の結果通知
 ダメージ表示

長すぎなので次に続く。

516Glenelgの人。 :06/09/09 09:49
・過剰攻撃、正常に動いて見えるケース
ROクライアント   ROサーバ
 Attack() 指示→
 受付応答待ち(画面描画止まる)
       ← Attack()受付応答
 動作再開(描画再開)
        攻撃処理
 過剰Attack() 指示→
 受付応答待ち(画面描画止まる)
       ← 過剰Attack()受付応答
        (ただし攻撃ディレイ中なので攻撃はなされず)
 動作再開(描画再開)
       ← 攻撃の結果通知
 ダメージ表示


・過剰攻撃、異常ケース
ROクライアント   ROサーバ
 Attack() 指示→
 受付応答待ち(画面描画止まる)
       ← Attack()受付応答
 動作再開(描画再開)
 過剰Attack() 指示→
 受付応答待ち(画面描画止まる)
         攻撃未実施なので次のAttack()を受け付けられず。
       ← 攻撃の結果通知
 過剰Attackへの応答がないので、描画せず。
 (タイムアウトして)ROクライアント動作再開
 ダメージ表示

517Glenelgの人。 :06/09/09 09:54
・・・長々と書いたけど、論旨はあくまで
「クライアントはAttackをしたつもりで、応答待ち」
「サーバが取りこぼしかなにかで応答してない」
ということは同じことですね(^^;;

以上、あくまで推論ですが。長文失礼。

518491の人 :06/09/09 10:47
たしかに、TCPコネクション切断で鯖キャンが多いですね。
一度だけですがPPPoE切断されても激ラグで耐えたことがあったのでRST送信にも耐える
ケースもあるかなと思ってました。
Windowsのソケットを使っているだろうと言う点もほぼ同じ所感で、
逆を返せば鯖も蔵もTCP層以下は「見えていない」と想定していたので、
TCP切断は必ずしも鯖キャンとして扱われないでラグとして現れることもあるかなぁと。

どちらにせよ、Glenelgの人。の
>「クライアントはAttackをしたつもりで、応答待ち」
>「サーバが取りこぼしかなにかで応答してない」
このコメント部分には同じ所感です。

鯖側をどうこうしろというのは不可能なので建設的にAI側で出来ることを考えると
 ○「ラグが生じた(と思われる)」ものの検知を蔵側タイマーで作る
   これが>>512に描いてみたことだけど、今から思えば弊害もありそう。
   弊害:鯖側のラグ(本来のラグ)が生じたときもAttack()の呼び出しがキャンセルされる。
      でもラグが解消された瞬間からAttack()が呼び出されるから体感はそれほどでも?
      ただ、ホムは本来のラグ中は攻撃を停止してるため、鯖の中では一方的にMOBに叩かれそう。

 ○Attack()の送出タイミングを現在のアルゴリズムから若干抑止させる方向検討する

この2つかなぁ。

519489 :06/09/09 10:49
>>513
>>敵やホムの攻撃など周囲の状況は異常ない
>周囲は何事もなく(パケット受信を伴う)普通の動きをする、ということで
>合ってる?
合ってます、がホムも問題なく動いているので鯖−蔵間は問題なく
蔵−GUI(ユーザー)間に支障が出ていると予想しています。

実際に試して見てもらうのが一番ですが、>>503の*1部分をAttack()10個にして
草、きのこの側でAlt攻撃指定すれば、画面上は普通通りに
ホムの攻撃(ピクついていますが)モーションもダメージも表示されますし周囲のmobも移動します
勿論殴り終えればドロップも見えますが、終わった後も数秒ピクつきが残り、ケミも動けません
ラグ中にマウス操作等をしなければ、ラグが起きている様に見えないという事です。

過剰なAttack()がユーザー操作を阻害する為、
蔵に送るリクエストに対するレスポンスが著しく低下している
と言うのが実験からの推測です。

過去「ラウドが止まらない」の時期にPPをポーションなしでAI()に直接入れただけの
SkillObject()がAI周期でリクエストされるモノを実行した時に
発言は出来るが攻撃、スキル使用が殆ど出来なくなり
移動はゴムヨーヨー状態で鯖上では移動していない状態でした。

520(○口○*)さん :06/09/09 12:50
同PTとか同Gとかって勝手に友達登録って出来ないのかな。
やっぱ皆手動で友達登録なのかな。

521(○口○*)さん :06/09/09 13:02
同PT、同Gかどうかが、AI側から見えないからできないんじゃないかな?
でも、全AIの友達登録が手動ってわけでもなく、自動登録機能をつけてるところもある
それでも同PT同Gが友達登録されるわけじゃないけどね

522491の人 :06/09/09 16:50
>>489
>周りは動いているのに自分は動けない状態。
そういえば、わたしのときもそうでした(もっと早く気づけ自分orz)

そう考えるとUI(User-Interface)を受け付けないタイミングが
ルーチンじゃなく、AIの命令文の中に何かあるのかも知れませんね。
サーバの激重状態だと顕著に出ることもあるので、関数のAttack (id1,id2)実行後、
なんらかのやり取りが鯖と蔵、蔵とAIで行われてる間に、UI入力を受け付けないタイミングがあるのかも。
蔵側でASPDに対して過剰なAIからのAttack (id1,id2)の呼び出しに対して防御がなされているのかも知れませんね。

Attack (id1,id2)の呼び出しのタイミングは考えれば考えるほどシビアになってきそうですね。

523(○口○*)さん :06/09/09 18:50
てゆか連打しなきゃいんじゃないかな

524(○口○*)さん :06/09/09 19:29
当方原種の進化バニルを使ってます。
AIはラプソを使ってるのですが、きのこを使ってみたところASPDの速さに感動いたしました。

>>54-55のコードをラプソに取り入れたところエラー落ちします。
原因がなんなのかもよくわかってません。

使いやすいテキストエディタ等を教えていただきたいです。
さくらはインストーラーを起動したらエラーで起動できなかったのであきらめました。

手軽にASPDを一段階あげることができればいいのですが、なんとも初心者なので…Orz

525(○口○*)さん :06/09/09 19:46
>>524
エラー窓にどんな警告文があったかも併せて書くとこちらとしても回答しやすい。
というかそれがないと何がダメなのかよくわからん。

とりあえず、コピペした文に全角スペースが含まれていたとかいうオチだったらファッキン

526(○口○*)さん :06/09/09 19:54
>>525
まさしくそれでした…Orz
申し訳ないです(´・ω・`)

結構早くなりました・゚・(ノД`;)・゚・

527(○口○*)さん :06/09/09 20:24
Terapadマジオススメ
自分みたいなド素人でも簡単に使える(メモ帳の延長みたいなひどい使い方だが)
他のは機能が多すぎて何が何だかわからなくなって投げ出してしまう(´・ω・`)

528(○口○*)さん :06/09/09 20:41
俺はMKEditor使ってるなぁ。
左に行数でるから友達と試行錯誤しながらいぢってると
「〜の何行目」とか言ってもお互いにすぐ見つけられるし。

プラグイン入れないといけなかったような気もするけどちょっと憶えてない…(´・ω・`)

529(○口○*)さん :06/09/09 20:43
自分はサクラエディタかな。
ケミスレテンプレにあったので選んだ。

530(○口○*)さん :06/09/09 21:21
自分もサクラエディタ使ってる
設定でコメントに色着けれるから楽チン

531sage :06/09/09 21:23
俺はSpaceEditorかな・・
AI・LUAの関数名とか変数名,自分用のグローバル変数名をやたらキーワード登録して色変えてる

532(○口○*)さん :06/09/09 21:24
OK,sageミス┐(´ー`)┌

533(○口○*)さん :06/09/09 22:02
もう有名所以外AI作ってないんだろうか…
色んなヤツ試してみたいからここにあるAI以外のAI使ってる人、
そのAIの名前が分かるヒントか何かを教えて欲しい

534(○口○*)さん :06/09/09 22:19
アルケミテンプレ→AI研究室→▼中級者向け The Winter's Tale→ユーザーAIスクリプト

まあこれに限らず有名どころAI開発ページのリンクとか見ると結構あるよ。

535(○口○*)さん :06/09/09 23:17
>>534
いや、そこらへんは知ってるんだ
もっとマイナーなヤツを頼むorz

536(○口○*)さん :06/09/09 23:22
無いんじゃない?
あるとしてもギルド専用ページで身内限定とか。

537(○口○*)さん :06/09/09 23:37
>>535
おれ自分が使いやすいように必要な機能だけ組み込んだの作ってるけど公開する気ない。
ぶっちゃけ、当たり前ではあるけど他のどの公開AIよりも使いやすい。

他のマイナー作家さんも状況はほぼ同様じゃないか。そこで公開するかしないかが
大手になるかどうかの分かれ道になってるだけで。

538(○口○*)さん :06/09/09 23:49
とある配布AIのコメント部分に誤変換があったのに気がついたけど
それを報告するのは嫌味くさいので黙ってる俺

539(○口○*)さん :06/09/10 02:31
>>519
thx。おかげさまで現象(≠原因)が把握できた。ありがとう。

>>533
マイナーAIでも、どこかに宣伝したら人力アンテナにひっかかるだろうから
それなりに有名になっちゃう気がする。
だから新しいのが公開されたって以外には、早々出てこないんじゃないかなぁ。

>>538
なんというか、その発言の方が嫌みっぽいよ。
ネタ半分にでもさくっと言っちゃえー。

540(○口○*)さん :06/09/10 02:39
>>539
どこのAIかまでは言わないけど「新密度」になってたところが

541(○口○*)さん :06/09/10 02:40
検索とか配布サイトからのリンクを辿ってAI公開してるとこ探してみた。
下のキーワードでググればOK

小さな幸せ AI配布
Mascarade RO (3/27の日記)
ホムけみ日記 AI
GARAGE-GT ホムAI

アドレスは貼っていないから大丈夫…か?

542(○口○*)さん :06/09/10 07:29
>>541
どちらもAIアンテナのリンクページにあったようなきがする

543(○口○*)さん :06/09/10 10:20
AIアンテナは一覧表にないAIがLinkページにあるからねぇ

比較表に15、Linkページにさらに9くらいAI配布サイトがあるのかな

544(○口○*)さん :06/09/10 10:38
スクリプトかじってればいじれるだろうから
完全オリジナルは少なかろうがカスタムAIなら結構ありそうだね。
あくまで自分用カスタムだから配布する汎用性は難しいだろうけど。

545(○口○*)さん :06/09/10 15:00
その自分用を公開してるかどうかって差だけな気もする
要望に答えて追加するやつも、自分に必要ない機能に対しては結構適当だし

546(○口○*)さん :06/09/10 17:11
つまり>>537

547(○口○*)さん :06/09/10 23:12
mobNPCって全部IsMonsterで0返るかとおもったらそうとは限らんみたいだね
アマツ 243,106 のカキ氷のフリーズタートルは攻撃できないけどIsMonで1返ってて攻撃しようと移動してしまってた。

548(○口○*)さん :06/09/12 14:12
そういえば、かき氷製造器にはマウスカーソルが攻撃カーソルになった気がする

549(○口○*)さん :06/09/12 16:55
初回AIを使ってるんだけれども
最近戦闘中にブーストスキルが切れた場合すぐかけなおしてくれなくなった
これなんでだろ?
フリットの使用Lvを1→2にしたせいだろうか?

550(○口○*)さん :06/09/12 17:10
ちなみに常用ではなく1体以上の敵にタゲられたら発動する設定
常時だと切れ間なくかけなおしてくれる

551(○口○*)さん :06/09/12 17:18
>>550
予想で答えるぞ。

「敵の数」というのを捉える段階が索敵の部分で判定しているからかもしれない。
AIの動きとしては

待機→敵発見→追従→戦闘
     ↑ここで数える

ものすごく簡単に書くとこういう流れになるんだが、
既に「戦闘」まで進んでしまっていると、敵発見の段階に戻るまで使用フラグが立たないのかもしれない。
ちなみにデフォを基準としていれば、相手が複数居ても基本的には敵を一体倒すごとに待機まで戻って
またすぐそばに居る敵を発見して戦闘まで移る。

常時だと、おそらく全てのプロセスを無視して時間ごとかけなおしをするんだろうけど、
敵の数をトリガにしている場合はフラグを立てる箇所によってはそうなってしまう。


なんて中身ろくに見てないので間違ってるかもしれんけどそんな感じじゃないのかな
とりあえずここじゃなくて本人に聞け。

552(○口○*)さん :06/09/12 17:22
>>551
Thx
戦ってる感じ法則性がさほど掴めないんで
もう少し動かし続けてから考えて見ます

553(○口○*)さん :06/09/12 21:04
ちょっと小ネタ
バニルでカプリス使う場合、LV5固定で使ってる人が多いと思う(レベル調整のないAIもあり)
INTが上がってくると一発でゼノやオクスケが瀕死または即死。ディレイが長いので次の敵にカプリスが撃てない。
LV2とか3カプリスとかを使えば、全敵初撃カプリスが可能
SP効率は悪くなるが、殲滅速度は後者のほうが速いね。
SP的には5固定だけどディレイを考えるとLV調整もアリかなと思う。

554(○口○*)さん :06/09/12 21:09
昨日やっとホムを手に入れたんだけど、攻撃モーションによって明らかに
ASPDに差が出てくるんだけど、これってAIで修正、または修正したAIを配布している所って無い?
鳥育ててるんだけど、体当たりモーションだとASPDが早いけど、羽で殴るモーションだと明らかにASPDが
遅いのがスゲー気になるよ

555(○口○*)さん :06/09/12 21:19
>553
マジテンプレによるとボルトのディレイは800+LV×200msだけど
バニルのボルトだとディレイは違うのかな

556(○口○*)さん :06/09/12 21:35
>>553
バニル育ててた頃ODでカプリス4とか3を撃ちまくった。4で即死3で瀕死だったから。
5以外をレベル固定で撃つようにできるAIないのかなあと思ったものだ。

557(○口○*)さん :06/09/12 21:38
どれも大抵は調整できない?

558Glenelgの人。 :06/09/12 21:56
いちおー売りの機能だけは宣伝(^^)
うちのAIは、敵ごとに何レベルを使用するか、指定できます。

559(○口○*)さん :06/09/13 03:33
AI関係ないんだが、
ホムスキル使用時にマウスホイールでLv変更できないバグは
なんとかならんものか

560(*○口○)さん :06/09/13 13:11
ホムンクルス用モンスターデータライブラリmobdata.lua
http://himenomikoto.at.infoseek.co.jp/kulus_project/index.html#mobdata.lua

射程距離、MDEF、MATK、HIT、FLEE、及び一部敵名称を修正しました。
特にアマツパッチ以降の多数のmobで減算MDEFが増加修正されていますので
工体AIご利用の際はスキル使用の閾値設定にご注意下さい。
敵名称については「mobID名称一覧」から確認が出来ますが、
可能な限りIDでの指定をお勧めします。


ホムンクルスAIに関するアンケートを設置してみました。
ホムケミストとしての傾向(ホム種類とか)、AIカスタム経験者の傾向、
必要と思っている機能の傾向を主に集計する予定です。
串回答は全数記録しているので利用された串傾向も集計する予定です。

561(○口○*)さん :06/09/13 14:25
工体AIで質問なんですが。
闇3と聖2でカプリスを使用しないというところを、
闇4と聖3などに変えることは出来ないのでしょうか?

562(*○口○)さん :06/09/13 15:58
工体AI(rev103) events.lua
function AllowAttackSkill( enemy )関数内
  if attr == M_ATT_HOLY and attrlv >= 2 then
  elseif attr == M_ATT_DARK and attrlv >= 3 then

2を3に、3を4に変えればおk

563(○口○*)さん :06/09/13 19:32
>>560
ちらっと見ただけだけど
function GetMobData(type, id)
return GetMobData(type, GetV(7,id))
end
って無限ループになってない?
return GetMobData2(type, GetV(7,id))
のまちがいでは?

564(*○口○)さん :06/09/13 19:49
修正しました_| ̄|.....○

2の後コピペで付け足した分を2ヶ月も放置してたのかorz

565(○口○*)さん :06/09/14 09:50
>>560のは名称使ってないけど2のほう?
もう完全移行したのかなあ

566(*○口○)さん :06/09/14 12:02
中身を見れば分かると思いますが、移行後の物です。
2ヶ月前から告知はしていたので正規版にしていますが、
一応旧版をmobdataold.luaで置いてはあるので緊急?であればそちらを使ってください。
ただ、旧版はメモリ消費や未定義idの点で問題があるので移行をお勧めします。


    local obj = GetV(V_HOMUNTYPE,id)
-   local moblv = MOBDATA[obj][M_V_LV]
+   local moblv = GetMobData2(M_V_LV, obj) -- 関数側で未定義チェックをしているのでif MOBDATA then等は不要です。

補足
rhapsoAI
Ver1.31(AI.luaはVer1.2と記載)
上記例を参考に下記行を書き換えれば動くと思います。

additional.lua
219,329〜334,381,535行
AI.lua
653,705,714,725,734,776,829,838,849,858行
message.lua
106,118行

567rhapsoAIの中の人 :06/09/14 13:19
>>566
補足どうもです。
修正箇所が多くて対応先送りにしてましたが、次期バージョンで新版に対応させようと思います。

>Ver1.31(AI.luaはVer1.2と記載)
こんなところにずさんなチェック体制が露呈w

ところでこれってデータにないidが入るとnilを返すんでしょうか?

568(*○口○)さん :06/09/14 14:30
nilです。もしnilで都合が悪い様であればGetMobData2最後のreturn nilを
if (type == M_V_NAME) then return 'データなし' end
return 0
等として頂いても構いません。

569rhapsoAIの中の人 :06/09/14 14:54
>>568
まさにそれです。ありがとうございました。

570(○口○*)さん :06/09/14 21:43
いきなりですいません。
過去ログを探したのですが無かったようなので質問です。
先日監獄で狩りをしていたところ高速でムーンライトのみを
使う鳥がいたのですが
詳細分かる方いないでしょうか?
よろしくお願いします。

571(○口○*)さん :06/09/14 21:51
ムーンライトじゃなくて奥義狩りじゃないの。

572(○口○*)さん :06/09/14 22:15
奥義狩りの可能性も高いがムーンライトのみ狩りもある
実際俺は0マテさんのAIで発動確率と使用スキルLV弄ってML2の連発狩りしてる
0マテさんのとこはページの下の方にこの辺の説明も書いてある
他のAIでもオートスキル部分の設定でいけるんじゃないかと

573(○口○*)さん :06/09/14 22:25
あれ、MLも低Lvだとディレイ少ないの?

574(○口○*)さん :06/09/14 23:08
ML2にしたのはSPRの都合、SP尽きない程度にして全弾ML狩り
奥義未修得でもそれなりに高めのダメ連発でいい感じ
なんか間違えられたこともある
秒間4発600前後の与ダメってなら奥義だろうね

575561 :06/09/15 02:39
>>562
遅れて申し訳ありません
ありがとうございました

576(○口○*)さん :06/09/15 08:07
AI制作者の日記みると
某人がもの凄く楽しそうにやってるのが印象に残るな

577(○口○*)さん :06/09/15 11:04
>>576
某人って誰だろう?

ところでGlenelgの人、
なぜかサイトが見れなくなってしまいました。なぜでしょう?

578(*○口○)さん :06/09/15 12:44
スレを「楽しそう」でCtrl+F

>Glenelg
自鯖が一時的に落ちてるだけかと

579Glenelgの人。 :06/09/15 13:23
出先から。
自宅サーバなんですが、なんかコケたみたいです(^^;
帰宅してからメンテなので、夜には復帰すると思います。

580(○口○*)さん :06/09/16 19:08
全然更新されないけどくまの人最近忙しいのかなー

581(○口○*)さん :06/09/16 19:11
BBSにも出てこないから色んな質問が放置状態だな…。

582(○口○*)さん :06/09/16 23:53
どなたか工体AIに主人のHPが〇〇%以下になったら、自動でCVを使う
という機能を入れている方は居られないでしょうか?

583(○口○*)さん :06/09/17 01:30
>>582
一番最後のendのすぐ上に挿入
一応入れてるけど、役に立ってるような立ってないような。


local ownerhp=GetV(V_HP,GetV( V_OWNER, MyID ))/GetV (V_MAXHP,GetV( V_OWNER, MyID ))*100 --主人のHPの割合
local sp=GetV (V_SP,MyID)/GetV (V_MAXSP,MyID)*100 --ホムのSPの割合
if ownerhp<70 and sp>30 then
SkillObject(MyID,3,8014,MyID)
end

584582 :06/09/17 08:21
>>583
ID変わりましたが582です。
有り難うございます。
早速組み込んでみます。

585(○口○*)さん :06/09/17 11:34
もう雑談でさえ語り尽くしたか・・・

なんか「今これに注目してる」っていうAI関係の話題ないものかな?
俺はホムAI使ったウイルスとか気になるんだけど

586(○口○*)さん :06/09/17 11:43
3連休だから出かけてる人も多いんじゃないかと。
まあとりあえず、黒いネタはあんまりお勧めしない。

587(○口○*)さん :06/09/17 12:20
PTM自動認識機能ってのはどうだろう?

PTMの判断条件を「移動狩り中、主人の近くにいることが多い人」とすれば精度よく認識できそうな気がするけど
(狩場で知り合い見つけて井戸端会議になることがあるから移動して無いときは除外で)

具体的には
1. 視界内のPCを一定時間(1〜5分くらい?)監視
2. 主人の近く(半径6セル圏内くらい?)にいる割合(圏内にいた回数/AI()実行回数)を算出
3. 割合が閾値1(0.5〜0.8くらい?)を上回っていればPTMとして登録
4. 閾値2(0.1くらい?)を下回っていればPTMから除外
5. カウントをリセットして1.に戻る
見たいな感じで、一定時間毎にPTM自動登録・解除が行われるように

……というようなことを布団の中で思いついた

588(○口○*)さん :06/09/17 13:16
Gv中の復帰阻止や突撃待機中に友達登録以外を攻撃ってのはダメなんだろうか
やっぱ共闘同盟の人まで攻撃するからダメなんだろう

AIなのかどうかよくわからないけど、エンペリウムって攻撃できるんだろうか
って言うか攻撃できたとしてホムが割ったらどうあんるんだろうか
割る前に範囲魔法で即殺されるからダメなんだろう

ロキ破壊には使えるんだろうか
入った時に味方を攻撃していない、かつ一番近い人物にスキル攻撃でいけるだろうか
SWやら献身にダメージが行ってダメなんだろう

そんな妄想してた。暇だから書いた。反省はしてない。

589(○口○*)さん :06/09/17 14:13
以前にも話題出てたと思うけど、
(ホム含む)周りは動いてるのに、ケミだけ動けなくなる現象
ここ最近でいきなりそういう症状が出た!って人いない?

1週間前に改良版工体AI導入して、なぜか昨日辺りから↑の現象が・・・

590(○口○*)さん :06/09/17 14:15
いきなりかはわからないけど1.5倍の前後あたりからちょくちょく3秒程度停止するラグならある
でも俺の場合は周りも動いてないから鯖が重いだけかもな
止まった後いきなりゲージ減ってるとか敵増えてるとかはないし

591(○口○*)さん :06/09/17 14:17
前例に従ってAttack()をチェックして見るとかどうだろう
工体AI使ってないし、今は症状出てないんで何の力にもなれそうにナイ

592(○口○*)さん :06/09/17 14:34
>>587
詳しいことはわすれたけど、こっこあたりがそういうことしてなかったっけ?

自動認識は特にホム同士の共闘で有効なんだけど、ギルメンのように
よく組むような人相手には手動の方が確実。
だから両方あるのが理想じゃないかな。

自動認識は永続化…どのタイミングでファイルに書き出すかも悩み。
PTではリザホムの使用率が高いから、いちいち忘れるようだとめんどう。
(ファイナライザ使えればいいんだけど、C側からじゃないとダメみたい)

井戸端会議するような相手には、一時的にでも共闘しちゃうぐらいのほうが
かわいいかも。


あと>>585で思い出した。
別の理由で伏せてたんだけど、明らかにしておこう。

Luaスタンドアロン版のバイナリパッケージにはluacというコンパイラ
(luaファイルのロード直後に行われる処理を事前にやっておくもの)が
同梱されていて、luaファイルをバイナリ化できる。

このlc形式も通常のluaファイルと同じように扱える(自動判別される)けど、
多少なりとも難読化されるから「悪意あるコード」を含めやすくなる。

これから先、例えばファイルを消すような「悪意の含まれるAI」が出てこないとは
限らない。だから「エディタで読めないAIは使わない」もしくは
「エディタで読めるものが同梱されているAIのみ使う」みたいな最低限の
自衛は必要。ソースが明らかなら、トラブルがあっても対処がしやすい。
少なくとも配布者への疑念はすぐに晴らせる。

配布するときも「利用者の便を考えてlc版を同梱配布」というのも不要だとは思う。
ROが動くようなPCのスペックでAI程度のLuaスクリプトなら、luacも体感できる
差はでないだろうから。簡単な作業だから、必要なら個々人でやればいいし。

593(○口○*)さん :06/09/17 14:34
>>589
ATTACKなんどもぶん回してるところをとっぱずせば
動くようになる、っていう前例が報告されてるんだから、追加されてるATTACKんとこ
コメントアウトして動かしてみるとかで確認できるでしょう。

>>590
サーバによってはごく普通に5秒以上のラグが起きるようになってるね。
ホムとかケミとか関係なく。

594(○口○*)さん :06/09/17 16:44
>583
CVは敵と交戦中じゃないときにしたほうがいいんじゃないかな
交戦中だと敵を回復するときもあるし

595(○口○*)さん :06/09/17 21:43
ところで
ホムがブーストスキルを使ってるかどうかは
AI側から参照することはできないんだっけ?

使用したかどうかのタイマーだけなら(パケ蹴られてるとかで)
AI上では使ってるけど実際には使ってないということがおこるのではと思うけれど…

596(○口○*)さん :06/09/17 21:48
できんね

597(○口○*)さん :06/09/17 21:52
Thx
となるとブーストスキルのかけわすれはそのあたりに依存する問題なんだろうか?
SPの変化を見て実際に使用されたかを見るのも面倒そうだと思う俺AI作れない人

598587 :06/09/17 22:08
>>592
自動認識のファイル保存は1サイクルごとでいいんじゃないかと思ってる(監視→判定→保存)
保存処理の負荷を気にしなければいけないほどサイクルを短くすることはできないしね

手動と自動の両方あるほうがいいのは同意
井戸端共闘は、、、、「この子横殴りしてくるよ…」って言われますた_| ̄|○

599(○口○*)さん :06/09/17 23:19
>>597
フリットの監視にSPをチェックしてるけど一回命令を送ると5秒は送らないとかしないとだめだな。
フリット使った瞬間にラグがくるとSPの変化が読み取れないんだろな。フリットムーブが止まらない!!
>>598
こっこの友達登録がまさしくそれじゃなかったかね?
一定時間近くにいる人や複数回共闘した人を登録するはず。

600(○口○*)さん :06/09/17 23:24
>>599
正確には、

1) 周囲数セル以内に友達以外のプレイヤーがいるかどうか(10秒周期で確認

2) 居るならば、一番近くに居る人のターゲットを監視

3) ターゲットの被りが一定時間続けば登録

となる。
ちなみに、自動の方でホムの登録はやってない。
ファイルに保存しちゃうから、IDの変わるホムは登録すると色々マズイから。

601587 :06/09/18 00:07
みんなありがと、こっこAI見てみるよ

>>600
登録時にホムかどうかを調べて、ホムならフラグを立てる(フラグもファイルに保存)
ホムフラグが立っているIDは視界から消えた時点で即登録解除
これならホムのIDが変わるせいでIDが被って横殴りをしてしまう心配はなくなると思うけどどうだろう?

602Glenelgの人。 :06/09/18 00:35
自動登録じゃないけど、ホム友達登録をやってるAIなので、参考意見。

>ホムフラグが立っているIDは視界から消えた時点で即登録解除
これ、このままだと結構使い勝手悪いです。
特にノックバック系スキルが絡んだりすると、ふとしたはずみで互いに画面外に動いてしまうことは
あるので、一瞬でも見失うとNGってのはリスクがあります。
でもあれか、また自動登録されるからいいのか。

#ちなみに、うちのAIでは「見失って10秒以内なら復帰OK」にしています。
#参考までに。

603595 :06/09/18 01:11
>>599
とすると結局鯖依存の問題なんで
対処は難しいってことなのかな?ブースト周期一回飛ぶのは。

とまあ初回AIについて以前聞いた人間な訳だが
これは報告しても難しいだろうなとは思ってた訳でここで聞いたんだ

604(○口○*)さん :06/09/18 01:49
ちょっと質問なのですが
待機命令(普通ALT+Tでなるやつ)のとき
私が知ってるAIはすべて主人の元に戻ってくるのですが
これをその場で待機とするようにはできないでしょうか?

またはそういう仕様になってるAIってないでしょうか?

LAとかを消さないように
本体に近づかずにアクティブの壁をさせたいので…

605(○口○*)さん :06/09/18 04:53
>>604
今何を使ってるかは分からないが
デフォルトAIに近いやつなら

function OnFOLLOW_CMD () と
function OnFOLLOW_CMD_ST () の中にある

MoveToOwner (MyID)

を全てコメントアウトするといいはず。

606(○口○*)さん :06/09/18 04:56
昨日だったかな、亀地上で狩りしているときに、
いきなり重いときのGvみたいになって
ホムをしまうと直るんですが、原因わかる方おられますか?

AIは工体で、そのときgamemondesプログラムが始めてアクセスしました
とファイアウォールででて許可したんですが、
これが原因かなぁと思いこれも切ってやってみましたがだめでした
クライアントも再インストール 工体AIもダウンロードしてきて新しいのにしましたが
だめでした。 この現象は亀地上だけなるんですが、もう狩りになりません・・・
どなたか同じ現象になった方、わかる方がいればご教授願います。

607(○口○*)さん :06/09/18 09:35
ラグの出るAIと出ないAIがはっきり分かれば構造を見比べることが出来るんだが……

608(○口○*)さん :06/09/18 09:52
>>606
何度も何度も何度も何度も何度も何度も何度も何度もホムで固まるという報告が
このスレ内でなされてそのたびに解決策が示唆されているのだが、

・それらの症状とは違うのか同じなのか
・同じならば解決策は試してみたのか。
・ぶっちゃけ進化ホムASPD対応で追加されたATTACK部分を
コメントアウトして動かしたらどうなるか

というところに関して聞かせていただきたい

609589でした :06/09/18 09:57
レスくれた人ありがとう
取りあえず対策してみるよ

ちなみに俺も亀地で現象が起きてたりする

610606 :06/09/18 16:33
色々試してきました、くまAIで亀地上行っても固まったりしませんでした。
そしてくまAIにATTACK追加してやってみたところ、
これが固まったので、工体AIのATTACKの追加した分を消してみてやってみたのですが
これは固まりました。 もうほんとうに今まで普通に亀地上でずっと狩りしてたんですが
なんともなかったのです、ほんと2日前にいきなりこんな現象になったので
わけがわからずここで質問してみました。
その日にあったことはファイアウォールのGamemondesプログラムが始めて
アクセスしましたと出たくらいで、なにも触っていなかったです。

611(○口○*)さん :06/09/18 16:44
ATTACK多重以外にも固まる要素があるんだね。
ATTACKに限らずSkillObjectとかも他の命令と重なったりしてないか
チェックしてみたほうがいいかも。

612(○口○*)さん :06/09/18 16:47
きっと金曜のメンテで潜水艦パッチきて多重の制限厳しくなったんじゃないかな

613(○口○*)さん :06/09/18 16:47
sage忘れた、ごめん

614(○口○*)さん :06/09/18 19:40
どうでもいいけど
SkillObject(MyID,4,231,MyOwner)
みたいにしてもケミにはPP飛ばないよな
間違ってたらすまん

615(○口○*)さん :06/09/18 19:54
だいぶタブーな話題なので長い間その話がでてないだけだ
忘れちまえ

616(○口○*)さん :06/09/18 20:19
いやホムに飛ぶのは知ってる
Ownerを対称に取るスキルは使用できないよなという確認

Ownerを対称に取らないラウドやCVは飛ぶ

617(*○口○)さん :06/09/18 21:38
リーフの治癒は対象がMyIDでもMyOwnerでも発動する
MyIDの場合はホム、MyOwnerはケミにエフェクトが出るが回復するのはケミのみ
だったはず

ちなみに射程外でメマ呼んでも発動も移動もしない

618(○口○*)さん :06/09/19 03:08
つまりホムのスキルをケミ対象で使用することは可能だけど
ケミのスキルをケミ対象で使用するのは不可能ということ(選択を必要としないものは可能)
当然といえば当然か

619(○口○*)さん :06/09/19 06:18
工体AIと亀地上の話でてるけど
工体デフォなんだか、自分で改造なんだか、比較の改なんだか教えてほしいな
俺工体デフォだけど重くならないよ

620(○口○*)さん :06/09/19 06:30
AI提供してる奴がBOTERだったらお前らどうする?

621(○口○*)さん :06/09/19 07:48
そいつが祭られて引退に追い込まれようがコードに罪はない
BOT露天で並んでる品を買うか?というのと同じような釣り臭さを感じる

まぁデフォAI改造した自作AI使ってるからどうでもいいな

622(○口○*)さん :06/09/19 08:42
亀地上の話はPC環境が出てないからな〜

623(○口○*)さん :06/09/19 09:45
症状でるのが全員P4だったら笑えるな

624(○口○*)さん :06/09/19 10:01
鳥飼いでこっこAI愛用してたんですが、ver3.xにしたらホムが反応しなくなりました。
アクティブにしようが主人が殴ったらホムも殴るように設定しようが止まってます。
で、何歩か動き、mobをホムの隣接マスまで移動してやると殴ります。
ホムの攻撃は2セル隣からに設定しているのですが。
デフォルトAIでは索敵ちゃんとしました。
これがスタックという現象でしょうか?
ALT+Tで直るっちゃ直るけど、囲まれた時とか反応しなくて焦ってしまい。。
同じような方いますか?

625(○口○*)さん :06/09/19 11:43
こっこAIはホムがケミの斜め後ろにいると、
斜めのままで追従してくるのがすげー気になる。
プロの中央噴水方面から下の露店街に向かうときにこの状態になると
ホムに嫌われてるみたいで非常に気まずい。
ケミの真後ろについてきて欲しいぜ。

626(○口○*)さん :06/09/19 14:13
安っぽいAIの人がブログで書いてるが、AI一回転の間に使う関数が多すぎてもラグが出る可能性があるあるみたいだな

5k回関数を通すとかは極端だが、ラグにこれも関係してたりするんじゃないか?

工体って確かMAPデータ使ってたよな
亀地上のデータ捌く時に変なループになってんじゃね?

627(○口○*)さん :06/09/19 16:40
>>624
「攻撃モーションキャンセラー」がいくつに設定されているかわかりませんが
3になってる場合は1にして動作させてみてください。
変数名はMultiAttackです。

628(○口○*)さん :06/09/19 18:29
あんま関係ないかもしれんけど、ホム連れてなくても亀地上はマップが重いよ。
回線がラグいってより、パソコンでの処理が大変な感じ。
マウスカーソルの動きが鈍くなったり、
クリック反応しにくくて、キャラの動きが鈍くなる症状。

普通に遊んでて問題なくて、特定の場所に近寄ると途端に重くなる。
亀地上の他では、騎士団1Fの北東の噴水辺り、時計↓↓のアカイモマップ。
あとは季節パッチで桜が咲くと、桜の木3本くらい画面内に入ると重い。
亀地上も全体が重いって訳ではなく、場所によって普通に動けたり。

パソコンのスペック自体がショボイから、ちょっとのことで敏感に変わるのと思う。
OS98seで、CPUがP3-500Mhz、メモリ383M、VRAM4Mくらいだったかな。
ホム連れて亀地上は、キャラのレベル足りないから行ったことないです。

629(○口○*)さん :06/09/19 19:01
>>626
可能性としてはありえそう・・・

>>589だけど、一応こちらのスペック

マシン
・CPU:Pentium4 2.4GHz
・MEM:1024MByte
・グラボ:gefo(型番ド忘れ)
・OS:XP home
・回線:FTTH

AI
・工体AI私的修正版(カスタマイズはconfig.lua内のみ)
・MAPファイル使用
・mobdata使用
・進化バニル

630624 :06/09/19 21:15
>627
ありがとうございます。
デフォが3になってたので、1にしてみました。
んが、相変わらずMobが隣接マスじゃないと殴りません。
索敵には行くのですが、敵の2マス前で殴れず止まってる感じです
そこで、AttackDistanceがデフォ2のところを1にしてみたら動作しました。
前のとおり1マス開けて殴れたらいいなー・・とは思いますが
とりあえずご報告までー。

631(*○口○)さん :06/09/19 22:17
>>625
ケミが45度斜めに動いた時だけ斜め位置、それ以外は縦横の移動が大きい位置に移動する差分
AI.luaの一番最後に追加するか、MoveToNearを差し替える
function MoveToNear (id,dist)
    local x1,y1 = GetV(V_POSITION,id)
    local x,y = x1,y1
    local dis = GetDistance2(MyID,id)
    if not SPR_Flag or MyState == CHASE_ST then
    if (dis > 5 and id == MyOwner) then
        Move (MyID,x,y)
    else
        local mx,my = GetV(V_POSITION,MyID)
        if (x < mx) then
            x = x1 + dist
        else
            x = x1 - dist
        end
        if (y < my) then
            y = y1 + dist
        else
            y = y1 - dist
        end
        if (math.abs(x1 - mx) < math.abs(y1 - my)) then
            x = x1
        elseif (math.abs(x1 - mx) > math.abs(y1 - my)) then
            y = y1
        end
        Move (MyID,x,y)
    end
    end
end
但し、こっこはケミ追従以外に接敵にもMoveToNearを使っているので微妙な位置に動く・・・かも?

632(*○口○)さん :06/09/19 23:09
>>624,630
>ホムの攻撃は2セル隣からに設定している
丁度、安AIの人のブログでも語られているけど
攻撃しないのではなく、単に当たらない位置に居るとかじゃない?
隣接にしたら殴れるってのがそれっぽい感じがする


>工体亀ラグ
安AIの人のブログで書かれてるのは関数の中で関数を呼び、更にその関数の中で関数を呼び・・・・
の繰り返しが5k回でアウトだったってパターン(再帰、ネスト、入れ子)
MAP判定系は該当セルまで移動可能かどうかを、1セルづつ読み出してチェックしてるけど
ループで座標をずらして読み出すタイプだから、ループ中の関数はそれぞれ1回で終了する

アウトなのが関数を直列に呼び出してて、MAPは並列に呼び出してる感じかな
今の所MAPデータは工体とGlenelgだけど、どちらも並列型
とは言えMAPデータを見ないAIよりは重くなりやすいのは確か
因みに工体とGlenelgだとメモリの使用量が劇的に違う点に注意

実測ではなく計算だけど、mobdataの旧版が約400k、現版が約70kのメモリ使用(Byte単位)
工体MAPは大きさで異なり、100セル四方で240k、200で1M、300で2.2M、400で3.8MByte使用する
亀地上なら300四方だから2.2Mだね (このデカさが気になって画像化した経緯もあり
Glenelgはバイナリの画像化データを使っている為、10〜20k前後で済む、がバイナリを扱う分、
配列型の工体よりは読み出しに誤差程度の時間が掛かるのとMAP自動判定処理に少しリソースが取られるかな

後は工体、Glenelg共にテレポで消えるが、移動範囲が増える程に移動判定済データが増えていく位かな
Attack()やSkillObject()の影響は今後も継続して要調査だねぇ

個人的には
鯖が止まっているラグ:人多過ぎetc(カーソルは動く、他キャラも止まっている)
蔵が止まっているラグ:大魔法etc(カーソルすら動かない、フリーズに近い)
UIを受け付けないラグ:AIの命令多過ぎ(カーソルは動く、他キャラは動いている)
の3つのラグのどれが起きているのか、しっかり区別して欲しいかな
鯖、蔵のラグだとAIではどうしようも無いから・・・

ただ、鯖のラグ中にAIの命令を送り続けると復帰に時間が掛かったり、最悪鯖キャンもありえるから
ラグに気づいた時、コマンドで命令送信を抑止出来るといいんだが、使えるコマンド少な過ぎるorz
又は蔵ラグの時にAIも止まるなら、周囲のモーションが変化しないならAttack()を控えるというのは出来そう

633(○口○*)さん :06/09/19 23:48
ホムンクルスのAIって空腹度は取得できない

であってるよね?
自動餌やりAIなんて作れないはずだから取得できてもいいのにな。
腹が減ったら暴れる設定にしたい・・・

634(○口○*)さん :06/09/20 00:02
10分ごとに暴れさせれば良いんじゃね?

635(○口○*)さん :06/09/20 03:44
AI利用してマップごとの敵の生息数や湧き時間調べられないかなあ

636(○口○*)さん :06/09/20 03:53
>>635
マップ名さえ手動設定してやれば、生息数を調べるのは比較的簡単。
沸き時間もデータとるのに時間はかかるけど一応可能。

問題は枝mobとかハイロゾ変化mobとかのノイズデータを混入させない工夫と、
複数のマップにまたがってデータ収集してしまわないようにする工夫だと思う。

637(*○口○)さん :06/09/20 15:19
まともに調査が行える様なMAPであれば出現する種類は既に分かってるのと
枝、召喚mobは発生時にIDがランダム割り振り、通常mobは常に固定IDだから
ノイズデータ弾きも難しくはない、複数マップも移動前にデータを移せばいいだけ

沸き時間は自分ないし他キャラが、画面内で倒した時間から計測する訳だけど
画面内にテレポしてきたのか、画面外から入ったのか、沸いたのかの区別がないから
記録された一番短い物を湧き時間とするしかないんだけど・・・・・

何を使ったかは別として、既に調査済みであろうデータを、あえてAIでやりたいって事?
極最近のMAPで無ければ各種情報サイトなどを参照すれば分かるとは思う
逆にホムには各種情報サイトのデータ(要するにmobdata.lua)は見せずに、
自分で調べさせたデータだけ使わせたいって事かな

どちらにしろほぼ常時GetActors ()回し続けるから
ちょっと重くなる可能性はあるけど調べられるよ

638(*○口○)さん :06/09/20 15:25
>(要するにmobdata.lua)は
(要するにmobdata.luaの様な物)を

で脳n(ry

639(○口○*)さん :06/09/20 16:59
自作AIでSBR連打仕様にしてるんだけど
ふと思いついて遠距離射撃モードを試しに作ってみたんだが
Attackコマンド使えないとモーションキャンセルできなくて
連打性能が一気に落ちるんだな。

PT時の共闘用としてならまあ問題は無いんだけどうーん

640(○口○*)さん :06/09/20 17:38
SkillObjectを多重してみたら?

641(○口○*)さん :06/09/20 18:10
>>637
>枝、召喚mobは発生時にIDがランダム割り振り、通常mobは常に固定IDだから
あれ?そうなの?IDってmobも10万以下のどれかってだけじゃないのか

642(○口○*)さん :06/09/20 19:10
実は始めからmapに登録されているmobは全部固定ID
十万以下のどれかを固定で持って
沸き間隔や沸きポイントが設定されてる
まぁ大半は即沸きのmap全域指定だろうけど

643(*○口○)さん :06/09/20 19:15
10万以下のドコかではあるけど枝、召喚mob、及びホム、ペットは
1〜100000まで(一部65536迄との情報もあり)のドコかが割り振られ
通常mobは大雑把言うと5〜6万番台に固定されているっぽぃ

プロ地下水路のとあるゴキ卵IDが57001だとして、召喚(孵化)で4匹のゴキが
適当に見えるIDで発生して、MAPのどこかに57001のゴキ卵が沸く
プパ、ペコ、ドラ、蟻卵なんかも同じ

ただこのIDが曲者で、本当にランダムなのかは分からない
以前、安息コールを連打した時のホムIDをチェックしたら、徐々に数値が増えていたから
時間を元にしているか、MAP内発生順に振っている可能性もある
通常mobと全く同じIDが振られる事は無いと思うけどかなり近いIDが振られる事はありそう

644(○口○*)さん :06/09/20 22:46
質問です
自動PPをがんばって追加しようと
こっこAIのAI.luaのOrigenal Function
の欄に
function AI(myid)
if (GetV (V_HP,MyID)/GetV (V_MAXHP,MyID)*100<=40) then
SkillObject(MyID,2,231,MyID)
end

と追加したのですが
./AI/AIlua:2906:`end'expected(to close'function'at line 438)near`<eof>'
OKを選択すると
attempt to call a nil value
と出てしまいました…5時間リンクなどを渡って漁ったのですが
どうすればいいかまったく分からないのです…
どうすれば自動PPをしてくれるのでしょうか?
長文駄文になりましたがよろしくお願いします。

645(○口○*)さん :06/09/20 22:58
正直その程度の技術力なら自動PP追加なんてしようと思わないほうがいい。
というよりここじゃ基本タブーなんだけど。

あくまで技術的な点でつっこむならば
まずそのエラー文の意味を理解しようとするべきだぞ。
何が足りてないのかちゃんと書いてある。

それと、function AI(myid)なんて関数名のを追加したら
とんでもないことになると思うが。

646(○口○*)さん :06/09/20 23:01
まぁとりあえず自動PPの話題はスルーで

647(○口○*)さん :06/09/20 23:07
>644
書く場所が違う。

あと自動PPをタブー視するのは不毛。
やりたきゃやれ。

648(○口○*)さん :06/09/20 23:26
ホムンクルスを操作するAIでケミを操作していて荒れた時
ホムケミだからという理由だけでとばっちりを喰らうのは御免だ

タブーにしたほうが後のためだと思う

>>644
とりあえず、エラー文に原因書いてあるよ
そのエラーで困ってる様だとプログラム知識皆無っぽいから
その力量で弄るならもっと勉強した方がいい

649(○口○*)さん :06/09/20 23:29
国際ROのコミュニティサイトを翻訳経由で覗いてみたけど、
そこでも自動餌やりや自動PPのコードについて質問する人がいて軽くあしらわれてたな

650(○口○*)さん :06/09/20 23:51
>>647
>やりたきゃやれ。
同意。やりたい人は勝手にやればいい。
でもこのスレの話題にするなっていうのも散々既出。

651(○口○*)さん :06/09/20 23:58
ところで、こないだ初めてアンテナ見たらいろんなAIあったけど
AIごとの特徴がいまいち分からなかった
今ってどのAIも同じでネームバリューの違いしか無くないか?

652(○口○*)さん :06/09/21 00:07
>>651
きちんと手動アンテナの解説、読みましたか?

>どのAIにも表には表示されない性能や使い勝手があるため、表を見るだけではなく実際に使ってみることをお勧めします。

653(○口○*)さん :06/09/21 00:13
詳細ページは簡潔にまとめてあるだけだから
一見同じに見える機能でも細かい設定部分が違ったり
実際の動きにも差があるから、本家のマニュアルをよく読んでみたり
導入してみて動きを確認してみた方がいい。割と違いがある。

654(○口○*)さん :06/09/21 00:20
うーん、こっこAIで>>229を導入させて貰って、ためしにOD行ってみたんだけど機能してないっぽい、、
きちんとグローバル変数にstuck追加して、function AI(myid)の末尾に追加してみたんだけどなぁ(無論、全角スペースは半角に直し済み)。

こっこAIの場合、追加する場所はファイルの末尾のendの前で合ってるんだよねえ?
「-- 状態処理」の一連の記述が終わった後で、、

655(○口○*)さん :06/09/21 00:29
stuck=0 --グローバル変数
function Stuck ()
 if MyState == ATTACK_ST then
  if stuck>=10 then
   MoveToOwner(MyID)
   MyState = FOLLOW_ST
   return
  end
  if GetV(V_MOTION, MyEnemy)~=MOTION_DAMAGE then
   stuck=stuck+1
  else
   stuck=0
  end
 end
end


改良版。
これを貼るのはfunction AI(myid)より上のスペースにね。
そんで、AI(myid)内の最期の方にStuck()と記述すればよい。




end
if (MyState == ATTACK_OBJECT_CMD_ST) then
  OnATTACK_OBJECT_CMD_ST ()
end
if (MyState == FOLLOW_CMD_ST) then
  OnFOLLOW_CMD_ST ()
end

Stuck()          ←このへん

if AttackedFlag and not AdjustASPD and MultiAttack >= 2 then -- 攻撃フラグ立ってたら




656(○口○*)さん :06/09/21 00:42
あ、意味わかった!やってみるね

※とか言った人間の8割は内容を理解していないという説も、、後で報告します

657(○口○*)さん :06/09/21 01:07
できたかも!
最初、「stuck=0 --グローバル変数」の記述を、元のAIのグローバル関数設定の所(冒頭の方)に入れてたんだけど、
それだとうまくいかなかったみたい。>>655を忠実に再現したらできたっぽい。

以前と違って主人とmobの間をウロウロと頻繁に行き来するので、多分間違いないと思う。

658(○口○*)さん :06/09/21 01:08
あれ?カキコした直後にスタックしてしもうた、、うーむ?
万全ではないと言うことか..それともまだなにかちがうのかなあ

659(○口○*)さん :06/09/21 01:14
>Stuck()          ←このへん

う、、もしかして「Stuck()」じゃなくて「Stuck ()」が正解と言うことか、、?

660(○口○*)さん :06/09/21 02:10
「MyEnemyが一定時間ダメージを受けていなければスタックとみなす」っていう処理っぽいから
主人がMyEnemyを攻撃中の場合はスタックを認識できないんじゃないかと思う。

「Stuck()」と「Stuck ()」は全く同じだよ。

661(○口○*)さん :06/09/21 02:44
ホム単体で狩りさせてるときのスタック回避用なんだろう
主人が攻撃してるときは考慮してないと思われ

662644 :06/09/21 02:57
スタック回避の文読んでたら何か出来ました(笑
お騒がせしましたー

663(○口○*)さん :06/09/21 08:19
>>660

なるほど、、そうなんですねぇ。現在ホムが攻撃してるmobであっても
主人が攻撃してる場合はmyenemyに該当mobのidが入らないのか。
確かに実験のために主人がゼノ殴って引きずってましたので<スタック

今、索敵優先度で主人のタゲを最優先にしてるので、myenemyの値が初期値になっている場合は
ownerenemyを取得しに行くようにいじってみようかな!

664(○口○*)さん :06/09/21 08:27
myenemyをtargetに変更するだけでできるのかな、、ドキドキ

665(○口○*)さん :06/09/21 12:11
中身変わってなければいけるはず
デフォAIからしてもう、targetとMyEnemy両方ある意味があまりない

注意点は 関数内で初めて出てくる変数(グローバル変数じゃないやつ、ローカル変数と呼ばれる) は
"end"の内側でしか使えないってこと


デフォAIだとtargetがローカル変数だから、
宣言されたIDLE_STでした使えない上にIDLE_STが終わる度に中身リセットされるからそこが注意点

666(○口○*)さん :06/09/21 13:44
ノーマルの進化バニルで以前は攻撃するたびに「ばりばり」となっていたのですが、
こっこAIに変えてからあまり「ばりばり」とならなくなりました。
これは上で出ているようなASPDが適正になるように調整されているからなんでしょうか?

667(○口○*)さん :06/09/21 13:45
「ばりばり」の解説頼む
俺にはちょっと難解だった

668(○口○*)さん :06/09/21 13:47
電撃っぽいモーションのことじゃないか?
あのモーションが出ると次の攻撃が異様に遅くなるので、
モーションをキャンセルするように調整されているからです

669(○口○*)さん :06/09/21 14:23
>>668
サンクス
バニル使ってたけど気付かなかった

今の配布AIは殆ど全部がAspd対策されてるな

670666 :06/09/21 14:29
>>667,668,669
「ばりばり」は668さんが解説してくれた通りの意味です。わかりにくい表現ですいませんでしたOrz

やはりASPD対策だったのですね。どうもありがとうございました。

671(○口○*)さん :06/09/21 18:58
現在Gv用のAI考えていていろんなAIを基に作っていて
地面設置用の定義?変数?がConstの中に見つけたんですが
うまくAIが作動しません。どこかに地面設置系のスキル(スリムPP,火炎瓶、BP等)
を行えるAIを置いているサイト等はないですか?

672(○口○*)さん :06/09/21 19:57
火炎瓶やBPを使えるホムがいるとは知らなんだ。

673(○口○*)さん :06/09/21 20:00
>>671
>>644-650

674(○口○*)さん :06/09/21 20:05
これだから全角厨は

675(○口○*)さん :06/09/21 20:39
>>671
ない。理由は673の出した通り。

676(○口○*)さん :06/09/21 20:40
まぁ、やろうと思っても出来ないがな。

677(○口○*)さん :06/09/21 20:49
クマAIの索敵状態で

 ケミ
  |
 /


このように移動すると

 ホム
 |
  \
  /

という軌道を通る。非索敵状態ではケミと同じ軌道を通る。
なんかムカいです。

678(○口○*)さん :06/09/21 22:27
>>671
どうがんばっても、どうアングラなページを参考にしようとも、
地面設置は仕様的に無理なので今この場であきらめて
僕らと一緒に眠眠打破

679(○口○*)さん :06/09/22 06:35
公式のAIいぢって作ってたんだけどスタックすることが多くて
Util.lua の IsInAttackSight (id1,id2)部分を
a = GetV (V_ATTACKRANGE,id1) - 1
って変えてみたら自分のホムではスタックしなくなったように感じました
運が良かっただけなのかもですが・・・

まだ転職したばかりでゼノークとか行けないので
これで本当にスタック減るかどうか
誰か試してくれないでしょうか(´・ω・`)

680(○口○*)さん :06/09/22 08:55
>>679
それは、確かに減る。
1セルよけいに近づくことで、「1セル分」重力座標に強くなる。

というか、いくつかの公開AIではすでに通っている道。

681(○口○*)さん :06/09/22 13:59
指定したxとy座標のオブジェクトのIDをGetActorsを使用せずに得る方法を教えてください。

682679 :06/09/22 14:04
>>680
既出でしたか。お恥ずかしい。

しばらく先輩のAIを学んできます。
レスありがとうございました。

683(○口○*)さん :06/09/22 14:11
>>681
ない。

684(○口○*)さん :06/09/22 14:15
ありがとうございます。

685(○口○*)さん :06/09/22 21:36
なぜGetActors使いたくないか書けばなにか案がでるかもしれないじゃないか

686(○口○*)さん :06/09/22 23:29
初めてホムAIを使って見ようと思ってます。
配布されているAIの中で、外部ツールを使用してインストールしたり設定を変更したりするAIもあるようですが、
ROフォルダの中に入れるようなのでNproに不正ツールと見なされたりしないのでしょうか?

687(○口○*)さん :06/09/22 23:33
ROと同時起動しないものはそもそもツール扱いにならないとおもうが。

まれに起動中に動作するものもあるが、NproだかGameguardだかが
どういう基準で不正ツールを検出してるかがわからんので。

688(○口○*)さん :06/09/22 23:42
>>686
ツールで設定変えるのはAIのテキストエディタで書き換えを楽にしたようなもんで
別にゲームのクライアントに干渉するもんじゃない。
要するに気にしなくていい。

689686 :06/09/23 00:00
大丈夫なのですね〜
安心しました^^
早速使って見ます〜

690(○口○*)さん :06/09/23 00:20
ゲーム中に情報表示するやつは微妙
ってか黒だと個人的には思う

691(○口○*)さん :06/09/23 00:32
>>690
勝手に黒って決めるなよ。
このスレでは扱わないって事でいいだろ。

692(○口○*)さん :06/09/23 00:34
経路が違うだけで結局ゲーム内の情報を別の形で出力してるわけだからなぁ。

693(○口○*)さん :06/09/23 01:22
/traceai に出せることだけどまあこれに関しては個人の裁量に任せればいい

694 ◆g37UcEp//g :06/09/23 14:10
とはいえ外向け出力がダメとなると、友達登録すら出来なくなるからね。難しいところ
まぁ、前にやったあれは行き過ぎだったとは思うけど
ならどこまでいいんだ?なんて考えると結局自分の判断で決めるしか無い

それはそうとバグ修正したので告知
GvAIrev2.0落とした人は2.1にUpしてください
http://gvai.blogzine.jp/

コレを使うとMAP移動やコールホムするたびに近くの雷鳥に打ち込むんだけど
なんとか突撃時だけ反応させる良い方法は無いかなぁ
共闘相手に発動して平地戦の火種になんてことになると笑えない。

ホムへの命令手段とホムからのフィードバック手段が乏しいのがなんとも
エモを出したりエモに反応できたらいろいろ面白そうなんだけどねぇ
とりあえずAlt+Tによるモード切替が第一候補かな

695(○口○*)さん :06/09/23 14:12
出力じゃなくて、出力したものをリアルタイムに視認できるもののことだと思うよ。
外部情報表示というか。

696(○口○*)さん :06/09/23 17:01
プロンプト表示させて云々って話でそ
ただ表示中はROの制御がそっちに移るから、グレーどうのこうのより好んで使う人あんまいなさそうな・・・
デバッグくらいか

697(○口○*)さん :06/09/23 17:03
っと途中送信

要するに、標準出力に出力するか、ファイルに出力するかの違いだよね
Cで言ったらprintfとfprintfの違い、みたいな

698(*○口○)さん :06/09/23 17:07
Luaって只のテキストでしかない訳で、/traceaiもそうだけど
内容を解析して、実際に実行出力してるのはクライアントだし
出力された物についても、設定ツールがファイルエディタ、
状態表示がフォルダビューアーなら、ファイルビューアーともね

癌の”ろ運営班”から白黒の判断が出されるまでは各自の判断でやる
公式の判断が出ない以上、各自の判断を元に白だ黒だ言っても
不毛な言い合いにしかならないってのは分かっているとは思う
愚痴やホム放置狩りでスレ荒れてた残りが出張してくる事もある

>対雷鳥
突撃前にWPにAlt+右、Alt+T等でフラグ書き出し>読み込みで発動とか
G変数MyState = ONLOAD_STで1ループ目のみの処理を決めて置くと拡張が楽になるかも

699(○口○*)さん :06/09/23 18:07
こっこAIで>>655を使わせてもらってるんだけど、移動命令がMoveToOwner(MyID)だと、
既に主人の近くにいる場合うまくスタックセルから抜け出せないので、
「MyEnemyまたはtargetとMyIDの座標を比較して、ホムがタゲってるmobの方向へ指定セル数(Attackdistance+1程度)移動させる」
というのをつくってみようかと思ったんですが、座標取得はいいとして、そこから移動方向をどうやって割り出したらいいのか、、

元のAIのavoidoverlap関係の処理をうまくアレンジできそうな気がしてにらめっこしてるんだけど
なんかこう、、閃かないorz

700(○口○*)さん :06/09/23 18:43
>>699
MoveToOwner(MyID)をそのままAvoidOverlap()で置き換えたらダメかな。
そのまますぐFOLLOW移るとダメなときもあるかもしれないから
念のため

AvoidStuckStep = false -- スタック回避移動管理フラグ
function Stuck ()
 if MyState == ATTACK_ST then
  if stuck>=10 then
    if not AvoidStuckStep then
    AvoidOverlap()
AvoidStuckStep = true
else
    MyState = FOLLOW_ST
end
   return
  end
  if GetV(V_MOTION, MyEnemy)~=MOTION_DAMAGE then
   stuck=stuck+1
  else
   stuck=0
  end
 end
end


こうやってループ1回分待ってみるといいかも。
FOLLOWに移る時点で、FOLLOW内にもMoveToNearがあるんで
主人から遠いとこでも普通に帰ってくると思う。
またこの回避動作を「主人の近くだけ」でやらせたい場合は更に「主人と自分の距離がFollowDistance以内」
みたいな条件で分岐させたらいいかも。

とりあえずこういうスタック条件が成立するような狩りは普段しないし検証も面倒なのでやらないけど
うまくいくといいですね。

701(○口○*)さん :06/09/23 18:45
まちがえた。
else
    AvoidStuckStep = false
    MyState = FOLLOW_ST
end

MyState=FOLLOW_STのところにフラグをfalseに戻すように入れないとダメね。

702(○口○*)さん :06/09/23 19:40
むむむ、、どうだろう。
もうちっと勉強してみます。提案サンクス>>700

703699 :06/09/24 17:22
>>700を試してみつつ、更に念には念を入れてAvoidOverlap()の前に

SkillObject (MyID,MySkillLevel,MySkill,MyEnemy)
AttackSkillDelay = GetTick() + SkillDelay
MySkill = 0

↑を入れてみました(ちなみに使用ホムはバニル)
これでどうしようもない位置ズレに遭遇してもカプリス掃射でなんとかできる、、とおもう

704(○口○*)さん :06/09/24 17:46
状況次第じゃその文に来る段階でMySkillもMySkillLevelも0にクリアされてることがあるから
それだけじゃ発動しない可能性があるよ。発動する時もあるけど。
それと、AttackSkillDelayを考えて分岐を判定条件に入れないなら
直後にディレイ時間設定する意味も無い。
どうせやるならこうかな。ローカル使ってるのは好みの問題なんで別にグローバルのMySkillとか使ってもいいけども。

if AttackSkillDelay < GetTick() then
 local level = 0
 local skill = 0
 level,skill = SetActiveSkill(SetSkillLevel)
 SkillObject (MyID,level,skill,MyEnemy)
 AttackSkillDelay = GetTick() + SkillDelay
end

ただ、スタック中も普通に確率制でのオートスキルは発動するから
待ってればそのうち出るには出ると思うけどね。

705(○口○*)さん :06/09/24 17:56
>>704

>状況次第じゃその文に来る段階でMySkillもMySkillLevelも0にクリアされてることがあるから
うん、それは思ったけど、頭回らなくて端折ったw
ありがとう

>ただ、スタック中も普通に確率制でのオートスキルは発動するから
それを見ていて思いついたのでした。

706(○口○*)さん :06/09/26 14:27
       ∠Y"´゛フ
       ;' ゝ-,,ェ)  ・・・・、もフ・・・。
     ゛;(ノ    ';つ 
      ''と_)_)  旦

707(○口○*)さん :06/09/26 14:34
どなたかMoonLightのディレイ検証された方いますか?

708(○口○*)さん :06/09/26 18:53
Luaの関数作成時にデフォルト引数指定できるか?

function hoge(id=1 no=nil)
 〜
end

↑このような感じで。

709(○口○*)さん :06/09/26 19:47
詳しく見て無いけどたぶん無理だろう
function hoge(id, no)
if id == nil then
id=1
end
 〜
end
こうするぐらい

ちなみに引数を指定しないときはnilが入ることが保障されてるはず

710(○口○*)さん :06/09/26 19:54
サンクル

711(○口○*)さん :06/09/26 21:39
すみませんが質問です。
現在こっこAIを使わせて頂いているんですが、
最近になって異常に重くて狩りにならなくなってしまいました。
敵も他の人たちも普通に動いているのですが、
自分とホムだけが異常に重い状態で動けず回復も叩けない状態です。
上の方でどきどきAIの場合の直す方法は見たのですが、
こっこAIの場合はどうすれば良いのか、どなたかご存知の方がいましたらよろしくお願いします。

712(○口○*)さん :06/09/26 21:47
マニュアルをよく読んだりBBSを読んだりしましょう。
つい最近似たような質問投稿がありました。

具体的にはMultiAttackを1か2に。

713(○口○*)さん :06/09/26 21:48
とりあえず少し前のログを見てそれに適合するかを検証したほうがいい

714(○口○*)さん :06/09/26 21:49
しかし何回目だろ。テンプレにでも入れたほうがいいのかなこの質問

715711 :06/09/26 22:06
>>712 713
試してみたところ直りました。
マニュアルとBBSも見てみたところ思いっきり自分の症状がのっていました。。。
ご親切にどうもありがとうございました。

716(*○口○)さん :06/09/26 23:54
>>707
鳥の攻撃を移動せずに月光1のみAIで草刈して、結果に納得だけしてデータ消しちゃったけど
おおよそ月光の間隔は2.3秒程度、月光→攻撃の間隔はwiki通り0.5秒程度、
攻撃が混ざった場合、月光の間隔は1.8秒程度に短縮される(モーションキャンセル?)
ディレイは0.5秒でリチャージが2.3秒って感じ(数値消しちゃったので曖昧)

また、至近距離だとディレイ中は勝手に攻撃するので
バーストさせるなら連打させても然程問題はない

まあ、ムーンライトならこっこの人が検証&AIに反映済みなんだけどね

717(○口○*)さん :06/09/27 23:41
aspd対策切って、mobデータ読まないようにしても重いなら
単純に鯖が重いだけなのかもしれないね。

AIがそんなに重くなるとは考えてないけども・・・
各々のAIってどれくらいメモリ食べるモノなんでしょうか

718(○口○*)さん :06/09/27 23:43
MAPデータ使うものがどうとか過去レスにあったような?

719(○口○*)さん :06/09/28 02:27
流れぶったぎり。
頭の体操がてらちょっとAI.luaを書いてみたよ( ・ω・)っ

-- ai.lua ------------------------------------------------------------------
require"./AI/Util.lua"function E(m,d,p,b,r)for i,a in ipairs(GetActors())do b=
GetDistance2(m,a)if(IsMonster(a)==p)and(b*b<d*b)and(a~=o)and(p<1 or not E(a,b,0)
)then b,r=d,a end end return r end function AI(m) f,d,o=nil,4,GetV(V_OWNER,m)
t=E(m,9,1)or o;if GetDistance2(m,t)>2then if GetV(V_MOTION,m)~=MOTION_MOVE then
Move(m,GetV(V_POSITION,t))end elseif t~=o then Attack(m,t) end end
--------------------------------------------------------------------------

横殴りに多少気をつけつつアクティブで敵を攻撃、敵がいなければ主人の元へ
とかそんな感じ
可視性0だけどたまには短く書いてみるのも面白いかもマジオヌヌメ。

720(○口○*)さん :06/09/28 03:03
IOCCC並のを期待してる

721(○口○*)さん :06/09/28 03:28
>>720
一見ホムのAAだけど実行できるとかね
誰かやってくれ。

ところで使わなくなった変数を消し忘れてたよorz
3行目最後
f,d,o=nil,4,GetV(V_OWNER,m)

o=GetV(V_OWNER,m)
に削ってください。

722(○口○*)さん :06/09/28 13:09
語るスレ4に「pipeを利用したAIデバッグ窓」がありましたが、これはどこかで配布されてないでしょうか?

723(○口○*)さん :06/09/28 21:43
AI初心者なのですが、質問させてください。
一応過去ログにも目を通したのですが、見落としあれば申し訳ない。
現在くまAIさんのスクリプトを使わせてもらってるのですが、それに自動PPを付け加えたいと思ってます。
どこにどのような構文をつければ発動するのか教えてもらえないでしょうかorz

724(○口○*)さん :06/09/28 21:49
>>723
>>644-650

725(○口○*)さん :06/09/28 21:52
しっかりと過去ログ検索しているなら、
ここで自動PPの話を聞くことがいかに無意味なことか分かるはずなんですが・・・
このスレではケミの自動操作になりかねない自動PPの話はタブーになってるらしいです。
どうしてもやりたいのであれば自力で頑張ってください。

もう自動PP話の対応テンプレ入れてもいいんでないか?w

726(○口○*)さん :06/09/28 21:56
自動PPの話を蒸し返しているのは自爆バニルを楽に生産したいGVer

727723 :06/09/28 22:19
スレ汚しすみませんでしたorz

728(○口○*)さん :06/09/28 22:35
書いてもいいけど?簡単だし
ただ自動PPできる=自動えさやりできるって奴が多いんだよな
それがいやだな、おれは

729(○口○*)さん :06/09/28 23:37
Gメンバからも自動餌やりできない?ってよく聞かれるんだよな
最近は「BOTでも使えば出来るんじゃね?」で終わらせてる
まぁ、実際そうだし

730(*○口○)さん :06/09/28 23:48
>>719
Const.luaの定数が無いのと、索敵関数で距離代入が
遠い敵優先になっているのを勝手に&7行仕様で修正+α

α:手動スキル、他キャラがタゲっている敵を無視、戦闘時、主人から離れすぎない
--------------------------------------------------------------------------------
function E(m,d,p,b,r)for i,a in pairs(GetActors())do b=D(m,a)if(IsMonster(a)==p)
and(b<d)and(a~=o)and(GetV(3,a)~=3)and(M==m or m~=GetV(5,a))and(p<1or not E(a,b,0
))then d,r=b,a end end return r end function D(x,y)e,f=GetV(1,x)g,h=GetV(1,y)if
e<0or g<0then return 9 end return math.floor(math.sqrt((e-g)^2+(f-h)^2))end M=0
function AI(m)M=m o=GetV(0,0)c=GetMsg(m)if c[1]==7then SkillObject(m,c[2],c[3],
c[4])return end t=D(m,o)<9and E(m,9,1)or o if D(m,t)>2then if GetV(3,m)~=1then
Move(m,GetV(1,t))end elseif t~=o then Attack(m,t) end end
--------------------------------------------------------------------------------

731(○口○*)さん :06/09/29 03:08
>>730
ktkr!(・∀・)
このスピードで、2行追加でこの+αはすげぇ

+αの部分を参考にして"T"で待機切り替え、地面をALT+右クリックで移動 を追加
でもぶっちゃけ待機切り替えは使わないから、別の有用な機能が欲しいのぅ
--------------------------------------------------------------------------------
function E(m,d,p,b,r)for i,a in pairs(GetActors())do b=D(m,a)if(IsMonster(a)==p)
and(b<d)and(a~=o)and(GetV(3,a)~=3)and(M==m or m~=GetV(5,a))and(p<1or not E(a,b,0
))then d,r=b,a end end return r end M,T=0,1function D(x,y)e,f=GetV(1,x)g,h=GetV(
1,y)return(81and(e<0or g<0))or((e-g)^2+(f-h)^2)end function AI(m)M,o=m,GetV(0,0)
c=GetMsg(m)t=D(m,o)<81and E(m,81,1)or o;if c[1]==9 then T=-T end A=(c[1]==1)and(
Move(m,c[2],c[3])or 1)or(T<0)or(c[1]==7)and(SkillObject(m,c[2],c[3],c[4])or 1)or
(D(m,t)<3)and((t~=o)and Attack(m,t)or 1)or(GetV(3,m)~=1)and Move(m,GetV(1,t))end
--------------------------------------------------------------------------------

732731 :06/09/29 03:27
6行目の (T<0)or を、同行の文末へ移動しないと
待機中にスキル攻撃命令を受けつけないね
やっぱり蛇足だったorz

733(*○口○)さん :06/09/29 09:12
4行目は「(e<0or g<0)and 81」じゃないと返り値が真偽値になっちゃう

あと、2行目の他キャラのタゲにミスがあったので修正+ホムより遠くのキャラのタゲも無視
and(a~=o)and(p<1and m==GetV(5,a)or b<d)and GetV(3,a)~=3and(p<1or not E(a,b,0

734731 :06/09/29 09:43
>真偽血になっちゃう
うおやっちまった…
字数が、と思ったけどそうか丸括弧はずせるのね

しばらくお茶でも飲んで落ち着いてきます

735(○口○*)さん :06/09/29 13:25
自動PPとか搭載してるAIは普通に出回ってるんだからAIアンテナから探せよと

736(○口○*)さん :06/09/29 13:28
いつの間にか7行プログラミングスレになってることに驚き。

>>734
真偽血ワラタw

737(○口○*)さん :06/09/29 13:45
中には「自動PPだけ他のAIに組み込んで使いたいんですけど」なんて人もいるね。
未だにAIで出来ること、出来ないことを理解してない人が多いと思う。
まあ自分で調べる気もないんだろうけど。

738(○口○*)さん :06/09/29 14:58
>>694
外部iniの中身を見て、一部のグローバル変数の初期値をAIロード時に強制書き換えする処理を挟めばいけそうですよ
一定操作でモードを変化させて、同時に外部iniの中身を書き換えて保存
AIロード時にその変化させたモードを引き継ぐ

うちのAIではどう使うかまだ考えてないのでろくに動作確認してないですが
ややこしいだけでそう難しくないので結構楽に組めると思いますよ

739(○口○*)さん :06/09/29 14:59
って、>>698で同じ案が出てる
被ってしまいました

740(○口○*)さん :06/09/30 02:43
主人が殴った敵を自動追撃してくれるAIは無いでしょうか、PTでは前衛がタゲ取りするので毎度手動で殴らせて自分の動きが遅れてしまう…
後敵に挟まれてPPできない時HPがやばかったら勝手に癒しの手を使うようには出来ませんでしょうか?

741(○口○*)さん :06/09/30 03:20
工体AIの中の人が帰ってきてるね。
しばらくは更新しないそうだけど・・。

742(○口○*)さん :06/09/30 03:31
>>740
日本語でおk

743(○口○*)さん :06/09/30 03:34
>>740
主人がターゲットした敵を殴るAIはある。探せ。
自動で治癒の手を使うAIもある。探せ。

744(○口○*)さん :06/09/30 06:13
>>737
自分はむしろきのこAIの攻撃速度速いのを他のAIに組みたい・・・

745(○口○*)さん :06/09/30 07:23
ASPDついでにちょっと報告
コレまでは長いモーションも短いモーションもランダムで発生してそれをモーションキャンセルしてるのかと思ってた
でも攻撃周期を逆に遅く0.5秒程度にすると「ほぼ長いモーションだけ」しかでないみたい

つまりは攻撃周期によってモーションが変わるということなら意図的に短いモーションだけを表示させることも出来るんじゃないだろうか?

746(○口○*)さん :06/09/30 12:32
>>740
>>744
今は殆どの配布AIで同じ機能がついてる

747(○口○*)さん :06/09/30 13:13
>>741
だな。
切り替え機の最新版が出てるな。

だが、切り替え機使うとアタック関数の重複処理みたく重たくなるから
なかなか使いドコロが難しい。
(関数でAI呼び出してるから仕方ないけどね)

748(○口○*)さん :06/09/30 17:08
ありがとうございます、自分超ボケていたようですorz

こっこAIと言う物を使わせて頂いたのですがこれに更に元にあったようなAlt+右クリアタックのような機能は追加できません物でしょうか?

749(○口○*)さん :06/09/30 17:12
まだボケてないか?
人に聞く前に試してみようぜ。

750(○口○*)さん :06/09/30 17:50
え、今度こそ隅々まで読んだハズなのに…
もう3度読んできます(ノд`)

751(○口○*)さん :06/09/30 17:53
というより書き方がとてもわかりにくい。

>元
これが指すのは何?デフォAI?

>右クリアタック
Alt+右ダブルクリックの攻撃命令ならデフォAIとこっこAIは同じ動きをするはず。
追加とか考えなくていい。

752(○口○*)さん :06/09/30 18:07
>>751
デフォ=初期AIです、やっぱり右クリアタックしてくれんです(ノд`)
じっくり読んで来ますわ!

753(○口○*)さん :06/09/30 18:19
Gv用のAIが欲しいのですが、いいものないでしょうか?
少し前に、「GvAI」かな? という名前のAIを落としていたのですが、
最近使ったら、エラーを吐き出して動かなくなりました。。
その配布HPも、なくなっていました(´・ω・`)

・敵が射程距離に入ったら、ムーンライトをする。
・基本、ホムは移動しないでOKです。
・敵ターゲット指定で通常攻撃ができる(エンペリウムを叩きたいがため)
(3つめは、できたらで)

これぐらいの機能を備えているAIがございましたら、
是非教えていただけないでしょうか?
よろしくお願いいたします。

754(○口○*)さん :06/09/30 18:33
>>753
まずはこのスレだけでも調べてみたらどうかな

755(○口○*)さん :06/09/30 18:33
>>752
考えられる原因
・ALT+右クリックではなくてALT+右クリック2回
・指定した敵の距離が遠すぎる(敵とケミの距離が一定以上の場合は殴りにいかないようになっている為)
・指定した敵が他の人をタゲっている、または他の人にタゲられている

756(○口○*)さん :06/09/30 19:59
>>755
ありがとうございます、ヒントで判明しました
横殴り防止機能が働いてPTMが触れたMob判定してくれなかっただけぽいです…
スペルキャストとPPだけじゃ友達登録してくれなかったよママン(ノд`)

757(○口○*)さん :06/09/30 21:30
>>753
エラーを解消するのが一番早いとおもうの

758(○口○*)さん :06/09/30 21:40
>>753
http://gvai.blogzine.jp/gvai/

ていうか、無くなってないんだが。

759(○口○*)さん :06/09/30 22:39
>>756
右クリックの攻撃の時だけ横殴りの判断をキャンセルして強制的に殴れるAIもあるよ
アンテナの各AIの説明文を見ることをオススメする

760(○口○*)さん :06/10/01 05:51

ホム&ケミだけ激ラグ現象ですが、今月のWindowsUpdateは再起動を必要としませんでしたが
再起動せずにRO続けると激ラグ現象が起こりました。使用AIはラプソ&クマー
参考までに。


>>719〜の流れは止まっちゃったのかなーこの流れでスレから軽量AIが生まれるかと期待してたのになー
無駄に攻撃しないPT壁用AIとか需要ありそうだから作ってみても面白いかもね。横脇に一番早く反応できるのはホムだしね。

761(*○口○)さん :06/10/01 07:15
>軽量AI
>>719からの7行系は、ちゃんと処理を順に追って見れば分かると思うけど
ファイル容量は軽量でも、策敵用関数のE()が再帰呼び出しになってて
画面内オブジェクトが多くなればなる程、ループが増える罠

ただ、敵追跡とケミ追尾が同一ルーチンで組まれていたり
索敵から攻撃に掛けての無駄の無さについては多分どのAIよりも速い
拡張性、汎用性を排除し、目的物に近づき攻撃する事に特化されたAIとして
今の何でも機能が付いて肥大化&特徴が希薄化してきてる分、見習いたい点かな

762(○口○*)さん :06/10/01 07:21
おまいらどのAI使ってる?主人の型、ホム、使用AI教えてくれないか?
宝剣ボルト(I>D)ケミと戦闘クリエ持ちで使用ホムがフィリとリフだから最適なAIが見つからんのよねぇ

763(○口○*)さん :06/10/01 07:39
AI制作者のケミの型も参考になるんじゃないか?

確かいくつかのAI作者はケミの型を公開してたはず
ほとんどAGI戦闘だがな

764744 :06/10/01 08:20
>>746
それって進化後のASPDのになるのかな?
自分見たの、進化前ので攻撃はやかったからきのこAIだと思った訳で

765(○口○*)さん :06/10/01 08:21
どうせ大手のやつ使ってる人多いだろうから、自分で一通り使ってみたほうがいい

766(○口○*)さん :06/10/01 08:25
そんなのうりょくあったらやってるさ!羅列見てもなんもわがんねえ!

767(○口○*)さん :06/10/01 08:27
ぬあ、何故かメインレス部分が消失している

>>763
サンクス、機能ばかり見ていて肝心な使用者(製作者)見て無かったよ
似たようなステの人が居たらその視点で欲しい物入れたAIになるわな。
1から見直してきますわ

768(○口○*)さん :06/10/01 15:33
>>766
だから羅列みてるだけじゃ何も分からないから一個ずつ使えって言ってるんだよ、
>>765は。能力なんかなんもいらん。

ファイルのダウンロード方法が分かりません、とか言うなよ。

769(○口○*)さん :06/10/01 17:11
こっこの鳥奥義連打って、純粋に奥義だけ使うんじゃなくて
間に通常攻撃が入るもの?

770(○口○*)さん :06/10/01 17:22
厳密にはこっこに奥義連打機能があるわけじゃない。
オートスキルのMLをSBRに置き換えることが出来るだけなので、
スキル発動率を100%に設定すると結果的に連打することになる。

当然通常攻撃も試行するので通常攻撃が挟まれる。
ただこれは多重送信ラグの原因になる可能性があるかも。


Attack*n と Attack+SkillObject じゃ結果は違うかな?

771(○口○*)さん :06/10/01 20:55
ありがとう。
やっぱり奥義+通常攻撃か。

772731 :06/10/02 02:57
>>719のは、毎回索敵しているのもちょっと重いかな、
>>761が上げたループ回数の削減とmyEnemyの記憶を行えば
動きも軽くなる。

「一番近くにいる 他プレイヤーよりも一番近くにいる敵」
という条件をいかに効率良く行うか、もしくは条件そのものを変えるか…

773(○口○*)さん :06/10/02 02:57
名前残ってたorz

774(○口○*)さん :06/10/02 10:15
バニルで一歩も動かず固定砲台できるAIってありますか?
今きのこAI使ってるんですが
遠距離攻撃に反応して固定砲台が解除されてしまうようなので

775(○口○*)さん :06/10/02 11:10
鳥奥義連打って秒間4発ぐらいは出るらしいけど、
こっこで100%に設定したのだがそんなにでない。。2秒に1発ぐらい?
100%に設定する他になにか変えないといけないだろうか?
くまーでMLをSBRに置き換えてやってみたところ変なディレイが残るしorz

776(○口○*)さん :06/10/02 11:46
>>774
固定じゃないが安AIがAlt+tで敵に反応しないケミ追尾状態のまま砲台になったと思う

777(○口○*)さん :06/10/02 11:48
>>775
それ、AI側で設定されているML用のディレイで止まってるんじゃないのか

778707 :06/10/02 12:55
>>716
亀レスで申し訳ない

貴重な情報ありがとうございました。
参考にさせて頂きます。

779(○口○*)さん :06/10/02 16:18
>>775
うちも秒間3発程度が限界ぽい。
というか3発前後が1セットで間が少し途切れる感じ。
だったのだがフリットムーブを未使用からLv1設定にしたら目に見えて変わった。

というわけであくまで予想だが元々のASPDが関係してるような気がする。
フリットムーブの使用レベル上げてみてはどうだろう

780(○口○*)さん :06/10/02 17:02
工体(パッチ版)でバニルとか鳥の遠距離スキル固定砲台ってできますか?
色々試行錯誤してるけどどうしても敵に向っていってしまう…。

781(○口○*)さん :06/10/02 17:49
>>780
・自動スキル発動率を100%にする
・MyState=CHASE_STとなってる部分をMyState=ATTACK_STに書き換える

でダメかな。

782(○口○*)さん :06/10/02 19:05
>>781に加えて
ai.lua
OnATTACK_ST () 内の

if (false == IsInAttackSight(MyID,MyEnemy)) then -- ENEMY_OUTATTACKSIGHT_IN
  MyState = CHASE_ST
  MyDestX, MyDestY = GetV (V_POSITION,MyEnemy);
  Move (MyID,MyDestX,MyDestY)
  TraceAI ("ATTACK_ST -> CHASE_ST : ENEMY_OUTATTACKSIGHT_IN")
  return
end

この部分を全部コメントアウト。

ただしサブレ44は近距離で使うほどの連打は普通だと無理。
一応方法はあるんだが組み込むのは結構な手間が。

783(○口○*)さん :06/10/02 20:08
>>782のせいでもうサブレとしか読めなくなった。

784(○口○*)さん :06/10/02 22:09
>>781-782
ありがとうございます。やってみます。
低レベルバニルや鳥でPT行ったときに共闘だけ入れられないかなあと思って。

785(○口○*)さん :06/10/02 22:56
そうか、ハトサブレ44だったのか・・・。

786(○口○*)さん :06/10/02 23:51
使用AI:工体AIrev103patch10
進化後ASPD対策:使用しない

この状態で狩りしていると、クライアントがどんどん重たくなっていくのですが
こういった症状の方いらっしゃいますでしょうか?
以前在った進化後aspd対策でATTACK関数を複数回回したような感じです。

安息すると多少改善するのでホムの問題かなと思ってますが、有効な解決方法が
解らないでいます

787(○口○*)さん :06/10/02 23:54
>>786
原因はわからんがだんだん重くなるってことはメモリリークか…?
あんまり聞かないからそのVerになって起こるようになったバグかもね。
とりあえず配布元にも聞いてみたらいいと思う。
あとPCスペックも明記した方がいいかもしんない。

788(○口○*)さん :06/10/03 00:38
>>786
テレポや安息時にLuaレベルでのメモリは全部開放されるはずだから、
多少しか改善しないならROクラレベルのメモリリークだと思う。

789(○口○*)さん :06/10/03 00:42
アンカー微妙に間違えた。文章も微妙に間違えた。
>>787宛てで、原因がメモリリークだとしたらROクラレベル。

ROクラレベルのメモリリークだとしても、動がそれを直すまでは
AI側で軽減してやる工夫が必要になるわけだけど…。

その現象が起きないVerを調べて、それとの変更点をチェックするのがいいかも?

790(○口○*)さん :06/10/03 01:33
SBR810ならハトサブレだったのになぁ

791(○口○*)さん :06/10/03 08:02
そうか、知り合いがサブレほしーって言ってたのはSBR44の事だったのか( ´д`)

792(○口○*)さん :06/10/03 10:29
サブレとしか読めなくなった…orz

>>786
単にtraceaiしててファイルが大きくなってるとか…

793(○口○*)さん :06/10/03 13:02
SBR44のSBRはサブレでいいとして44ってなんだろうな

サブレ一個44z?

794(○口○*)さん :06/10/03 15:11
色々と調べてみたんですが…どうしてもわからなかったので質問させてください。

どきどきAI(0マテ)を使っているんですが、
ホムを召喚したりテレポした後など、ホムが主人(x,y)から左下の方(x-1,y-1)に移動してしまうのですが、
これを移動しないようにする方法とかはあるでしょうか…?
今一つどこの命令文に関わっているのかわからなくて…

795(○口○*)さん :06/10/03 15:26
>>794
くるくるじゃないですか?
PatrolType=-1 にすれば直りますよ^^

796(○口○*)さん :06/10/03 15:32
>>794
それ確か「主人に重ならない」ってやつじゃないのか?

IDLEにMoveがあったらその命令行を削除すればいいと思うが

797(○口○*)さん :06/10/03 15:36
>>795はなんか違うようですね。
待機状態処理内のMoveBackward()関数をコメントアウトすれば大丈夫でしょう^^

798(○口○*)さん :06/10/03 15:39
レスありがとうございます!
えっと、なんとか自己解決できました…orz

PatrolTypeで閃いて、もしやEscapeRange=1になってたのが原因かなと調べたところ、
思いっきりビンゴでした(;´Д`)
この値が2だと(x-2,y-2)に移動したので0にしてみたら移動しなくなりました。
(ちなみにPatrolTypeが0〜5の値以外だとランダム移動になるっぽいです)
お騒がせしてすみませんでした…でもヒントになったので助かりました。

799(○口○*)さん :06/10/03 15:44
>>798
あ、でもそれだと副作用で戦闘時の逃避行動がうまく動かないかもしれないけど、
今のところ使わないなら問題ないね。

逃避は使いたいけど待機状態では動かないで欲しい場合は、
OnIDLE_STの中のMoveBackwordだけをコメントアウトしてEscapeRangeを戻せば思ったとおりに動くと思うよ^^

800(○口○*)さん :06/10/03 15:56
^^ に嫌悪感を抱く俺はきっと汚れている

801(○口○*)さん :06/10/03 15:57
^^って他人を小馬鹿にするとき以外使ったこと無いな

802(○口○*)さん :06/10/03 19:43
今日リンク辿って見つけたタイ産のUSER_AI見てて
OnIDLE_ST内でactors回してGetV(V_HP,v)を取得
nil以外かつ0より大きい場合、PTMとしてリストに登録という処理があった。
え、何これマジできるの?とおもってwktkして組み込んで見たんだが

主人とホム以外全部-1が返ってきました。

そうだね、こんな簡単にできるならもうみんなやってるよね。と思いつつ
もしかして海外ROだとこれで取得できてたりするんだろうかいいなあとも思ったり。

803(○口○*)さん :06/10/03 19:56
>>802
それみてふと思ったんだけど、
「本当にPT組んでるメンバーのHP」ってホムから見えるのかな。
試したことないけど。

804(○口○*)さん :06/10/03 20:08
>>803
「本当に」にどんなニュアンスを込めてるかわからないけど、
「PTMの(だけ)HPが見えるならそれを基にPTM判定できる。けど見えなかった」
っていうのが>>802の話。

805803 :06/10/03 20:53
ああ、すまんです、言葉不足だった。

要は
「PT組んでない人のHPは、AIだろうが人間だろうが、わからない」のはYes。
「PT組んでいる人のHPは、人間はわかる。」というのもYes。

ただ単に、俺が
「PT組んでいる人のHPは、AIから取れるか?」
・・・っていうのを試してなかったら、そういう意味だよね?っていうのを確認したかっただけ。

802の書き込みだけだと、上述の「PT組んでない人のHPは〜〜」のところにも読めたので。

806(○口○*)さん :06/10/03 21:01
>>805
>「PT組んでない人のHPは〜〜」のところにも読めたので。
解釈は可能だけど、さすがにタイAIを読み解いておいてそれはないだろう。
もしそれだったら>>802を指さして笑う。>>802の運命やいかに。

807(○口○*)さん :06/10/03 21:07
OnSKILL_OBJECT_CMD()って引数3つで定義してるじゃん。
でもProcessCommand()で呼び出し時は引数4つ渡してるじゃん。
これデフォAIだけでなくどの配布AI見てもそうなってんだけどいいの?
2,3,4 と 雑談・要望、雑談・要望2 見たけど載ってなかったっす。

808802 :06/10/03 21:26
なんか呼ばれた気がする。
ちゃんとPT組んでHPバー表示されるの待ってからやりましたよ。
「HPバーが見える=クライアントに情報が来ている=AIから取得できる?」という仮説も立ててから組んだし。
崩れ去ったけど。

そういえばPT組んだあと相手側がリログした後の動作は試してないな。

809 ◆g37UcEp//g :06/10/03 21:28
答えるだけなら「いいの。」

Luaの場合引数はかなり甘い
多すぎた引数は捨てられるだけだし
足りなかったらnilで補完される

func(...)ってやると何十個でも引数が渡せてarg[n]に順番に入る

810(○口○*)さん :06/10/03 21:29
いや可変引数を取る場合の定義は知ってるよ。
ただ前者は知らなかったな、サンクル

811(○口○*)さん :06/10/03 21:33
トリ外し忘れたorz

>>802
一瞬だけひらめいて撃沈した
自分の出したプラントもHP取得不可能

いったい何のためにあるコードなんだろう?

812(○口○*)さん :06/10/03 21:46
>>811
仮説で一度組んだ後、「動いているつもり」でそのままにしてるコードじゃない?
論理エラーって原因特定しづらいし

813(○口○*)さん :06/10/04 10:57
技術的な裏付けも何もないチラシの裏だが聞いてくれ

AIは自作でattackの多重送信は1サイクルで2回出力している
古参鯖だが状態は順調なOD2Fで1時間に2回蔵のラグ?が発生し瀕死な状態に至った。
この2回の間にPCを再起動している。

2回目のラグが起こった後、もう使わなくなったWinPcapをアンインストールし、PCも再起動して小1時間。。
ラグが発生しなくなったので、試しにattackの多重1サイクル5回まで引き上げてさらに1時間。。。
ラグは発生しなかった。。

当方の環境はXPsp2/P4 2.2G/メモリ512/回線ahoBBADSL8M

試行時間も短いし不確かな情報だが、蔵のラグが発生するって方は、WinPcap等のパケキャプチャー
入れてないか確認してみてはどうだろうか?

814(○口○*)さん :06/10/04 11:01
初歩的な質問かもしれないんですが…質問です。

モンスターによってスキルを使う場合と使わない場合にわけているんですが、
スキルを使う文の前にそのモンスターのIDなら除外するという条件文で、

if (GetV(V_HOMUNTYPE,MyEnemy) ~= 1102) then -- バースリーでなければ
 if (GetV(V_HOMUNTYPE,MyEnemy) ~= 1613) then -- メタリンでなければ
  if (GetV(V_HOMUNTYPE,MyEnemy) ~= 1078) then -- 赤い草でなければ
   if (GetV(V_HOMUNTYPE,MyEnemy) ~= 1081) then -- 黄色い草でなければ
    if (GetV(V_HOMUNTYPE,MyEnemy) ~= 1082) then -- 白い草でなければ

という具合にモンスターIDを追加するたびに文が長くなってしまって…
これを一括でしようとして

local ID_NoSkill = {1102,1613,1078,1081,1082}
for i,v in ipairs(ID_NoSkill) do
if (GetV(V_HOMUNTYPE,MyEnemy) ~= ID_NoSkill[v]) then

みたいにしてやろうと思ったんですが、うまくいかず…(LUAの知識不足なだけなんだすが
動作もおかしくなって原因もよくわからなくなって、
いいアドバイスとかありましたら助言おねがいします…orz

815(○口○*)さん :06/10/04 11:15
>>814
>if (GetV(V_HOMUNTYPE,MyEnemy) ~= ID_NoSkill[v]) then

if (GetV(V_HOMUNTYPE,MyEnemy) ~= v) then

でいいんじゃないかな

816(○口○*)さん :06/10/04 11:58
>>815
それでもやっぱり駄目でした;

for文にしてから通常攻撃をなかなかしてくれなくなったりで
どんどんおかしな方向に…
面倒でもやはり一文ずつ書いていくのがベストなのかなぁ;

817(○口○*)さん :06/10/04 12:13
>>808
良い方の期待に添ってくれてありがとう。

>>813
盲点といえば盲点だけど、WinPCapのドライバってそんなにヤワなのかな…。
余裕あったら、もう一度WinPCapをインストールして再発するか
確かめてもらえると嬉しい。

>>814
>>815が普通だけど、>>814の書き方ならID_NoSkill[i]としても動く。
Javascript経験者だとやりかねないミスかもしれない。

あとその手の処理はよくあるから、関数作った方が楽だと思う。
function IsInclude(table, val)
 for i, v in ipairs(t) do
  if v == val then
   return true
  end
 end
 return false
end

if !IsInclude(ID_NoSkill, GetV(V_HOMUNTYPE,MyEnemy)) then --ID_NoSkillに含まれてなければ
間違ってたらごめん。

818(○口○*)さん :06/10/04 12:31
>>816
試行錯誤してたときに、余計なところまで書き換えてそこでバグ出してる
なんてこともある。
一旦、うまく動いていたときまで遡ってみるといいよ。
上記部分でミスがあっても、通常攻撃になんら影響するとも思えないし。

それと「うまくいかない」「おかしい」「駄目」とかは主観すぎて
困ってるのはわかるけど、状況がよくわからない。
本当にアドバイスを求めるなら、「どうなってほしい」「こういうコードを書いた」
「でもこういう動きになった」というように、もっと客観的な情報を教えて。
(それを要約したのが>>1の『状況を伝える努力』)

819(○口○*)さん :06/10/04 12:32
>>816
テーブルの宣言が面倒になるけどこういうのもあるよ
local ID_NoSkill = {[1102]=1,[1613]=1,[1078]=1,[1081]=1,[1082]=1}
if (ID_NoSkill[GetV(V_HOMUNTYPE,MyEnemy)]) then

forにするだけで挙動がおかしくなるのはどこかを間違えてるだけだと思うけどなぁ…

820(*○口○)さん :06/10/04 12:32
Lua5.0リファレンス(ja)から
ipairs (t)
イテレータ関数と、テーブル t と、0を返す。

    for i,v in ipairs(t) do ... end

は (1,t[1])、(2,t[2])、…のペアを、最初に値にnilが現れるまで繰り返す。


>>814
要するにデフォAIの類似ミスをしてる
>if (GetV(V_HOMUNTYPE,MyEnemy) ~= ID_NoSkill[v]) then
if (GetV(V_HOMUNTYPE,MyEnemy) ~= ID_NoSkill[i]) then

また、グローバルで
ID_NoSkill = {[1102]=1,[1613]=1,[1078]=1,[1081]=1,[1082]=1}

function IsNoUseSkill (id)
local type = GetV (V_HOMUNTYPE, id)
if ID_NoSkill[type] then
return true
end
return false
end
とすればforループ使わずに出来る

821(*○口○)さん :06/10/04 12:34
被った上にタブ変換忘れたorz

822(○口○*)さん :06/10/04 12:36
たぶん省略されてる箇所の組み方に問題ありそう

それとは別にこういう方法もある
local NoUseList = {[1102]=1,[1613]=1}
if NoUseList[MyEnemy] ~= 1 then
skill〜(スキル攻撃)

823(○口○*)さん :06/10/04 12:46
[1102]=1を[1102]=true
ってしたほうが二値だからいいように思うのは間違い?細かすぎ?

824(○口○*)さん :06/10/04 13:06
連想配列忘れてた(゚д゚)
あと>>818は少し言い過ぎたかも…。反省。

>>823
「直観的にfalseのつもりで0をいれてしまう」のを防ぐ意味も込めて
基本的に同意。というか1派が意外に多くてにびっくり。
でも記述のしやすさと見通しの良さは 配列>連想配列(1代入)>連想配列(true代入)
だと思う。試しにtrueに書き換えてみたら読みにくかった。

個人的な折衷案としては、配列で指定してから初期化時に連想配列(true代入)に
作り替えること。
もしくは>>820>>822の中間。
function IsNoUseSkill (id)
 return ID_NoSkill[GetV(V_HOMUNTYPE, id)] == 1
end
0がfalse扱いされる言語なら>>820のままでもよかったんだけど。

ごめん自分も細かすぎ。

825(○口○*)さん :06/10/04 13:13
皆さんどうもありがとうッスー
何度も読み返しては、頭がショートする寸前まで試行錯誤中です;
forループを使わない方がとりあえずは良さげなので、そちらの方向で挑戦してみます。

今は代案…ていうか逃げの手で以下のようにしてます;
notの使い方を初めて知ったなんて口が裂けても言えない…(;´Д`)

local s = GetV(V_HOMUNTYPE,MyEnemy)
 if not(s == 1078 or s == 1081 or s == 1082 or s == 1102 or s == 1613) then

826(○口○*)さん :06/10/04 13:13
>>814のfor文を使う前のif条件に全て一致した時の処理は恐らく「スキルを使用する」設定を行ってると思うが
for文にしてその中のif条件で同じ事書いてんじゃねーの?
あのif文の書き方「一致しなかったら」なんてやったらID_NoSkillテーブル全参照する馬鹿げた処理になるし
フラグも1個余分に作らなきゃならんだろ。

普通こうやる。
for i,v in ipairs(ID_NoSkill) do
if (GetV(V_HOMUNTYPE,MyEnemy) == v) then
〜〜スキルを使用しない設定〜〜
break
end


>>824
キー設定してない配列の要素って0が入るのか?
nilがデフォルトで入るなら>>820で問題ないと思いますが。

827(○口○*)さん :06/10/04 13:22
>>826
存在しないキーはnilが返る。
使う側が「キーが存在すれば(false以外の)値に関係なく不使用の対象」と
わかっているなら>>820のままで問題ないよ。

キー指定されてるけど一時的にスキル使用の対象にしたいなんてときに、
>falseのつもりで0をいれてしまう
のを防ぐという話。

転ばぬ先の杖に過ぎなくて、だから細かすぎだし個人的趣味。

828(○口○*)さん :06/10/04 18:23
にるぽ

829823 :06/10/04 21:05
転ばぬ先の杖って意味もあったんだけど
Cだとブール値は2byte、数は整数値ならば同じ2byteだけど
Luaは数値になっているので、4〜8byteではないかと思っただけ(非検証)
CとLuaは違うから個人趣味に収まりそうだけど。

830(○口○*)さん :06/10/04 21:23
>>829
調べてみた

-- 検証コード
a = {}
print("Start: press enter to continue");
io.read()
-- ここで一旦止まるのでタスクマネージャでlua.exeのメモリ使用量を調べる(○○KB)
-- Enterキーで続行
for i = 0, 16777216 do -- 16M個の要素を挿入
a[i] = 1
-- a[i] = true
end
print("End: press enter to exit");
io.read()
-- ここでもう一度止まるのでタスクマネージャでlua.exeのメモリ使用量を調べる(××KB)
-- Enterキーで終了
-- ×× - ○○ KBが16M個分のメモリ消費

結果: 1でもtrueでも同じ262,972KB≒256MB
16M個で256Mだから、一個当たり16バイト
たぶんキー・値ともにCでのdouble型=8バイトだから1要素16バイトになってるんだとおもう

あとCでboolは1バイト、整数値(int)は機種依存(32bitシステムなら4バイト)だよ

831813 :06/10/05 10:00
>>817
とりあえず検証してみた

ってか、WinPCapを再インスコする以前に既に再発
全く持ってチラシの裏の誤情報を勇んで書き込んでしまって申し訳ない

832(○口○*)さん :06/10/05 10:38
>>813

ヒント1:蜃気楼の塔開催中
ヒント2:OD2と同じゲーム鯖割り当てられてる

時間を見てみよう。イベント中の同期落ちは不可避ですわ

833(○口○*)さん :06/10/05 12:03
ちょっと自分用に作っただけだけど張ってみる

--
-- mobdata.lua をcsv形式に変換
--
require "mobdata"
list = {
    {type=M_V_NAME,name="NAME"},
    {type=M_V_LV,name="LV"},
    {type=M_V_MAXHP,name="MAXHP"},
    {type=M_V_BASEEXP,name="BASEEXP"},
    {type=M_V_JOBEXP,name="JOBEXP"},
    {type=M_V_SPEC,name="SPEC"},
    {type=M_V_ATT,name="ATT"},
    {type=M_V_ATTLV,name="ATTLV"},
    {type=M_V_SIZE,name="SIZE"},
    {type=M_V_LOOT,name="LOOT"},
    {type=M_V_LINK,name="LINK"},
    {type=M_V_ACTIVE,name="ACTIVE"},
    {type=M_V_SPELL,name="SPELL"},
    {type=M_V_NOMOVE,name="NOMOVE"},
    {type=M_V_SPLASH,name="SPLASH"},
    {type=M_V_LONGRANGE,name="LONGRANGE"},
    {type=M_V_ATKMIN,name="ATKMIN"},
    {type=M_V_ATKMAX,name="ATKMAX"},
    {type=M_V_DEFDIV,name="DEFDIV"},
    {type=M_V_DEFSUB,name="DEFSUB"},
    {type=M_V_MATKMIN,name="MATKMIN"},
    {type=M_V_MATKMAX,name="MATKMAX"},
    {type=M_V_MDEFDIV,name="MDEFDIV"},
    {type=M_V_MDEFSUB,name="MDEFSUB"},
    {type=M_V_MOVESPD,name="MOVESPD"},
    {type=M_V_ASPD,name="ASPD"},
    {type=M_V_RANGE,name="RANGE"},
    {type=M_V_NEEDHIT,name="NEEDHIT"},
    {type=M_V_NEEDFLEE,name="NEEDFLEE"}
}

834続き :06/10/05 12:03
fp = io.open("mobdata.csv","w")
line = "HOMUNTYPE"
for i,v in ipairs(list) do
    line = line..","..v.name
end
fp:write( line.."\n" )
homuntype = 1
while homuntype <= M_V_LASTDATA do
    if GetMobData2(M_V_NAME,homuntype) then
        line = homuntype
        for i,v in ipairs(list) do
            line = line..","..GetMobData2(v.type, homuntype)
        end
        fp:write( line.."\n" )
    end
    homuntype = homuntype + 1
end
fp:close()

835(*○口○)さん :06/10/05 18:27
if文でnil弾いてるから気づかないのかもしれないけどmobIDの範囲は1001〜1721

>homuntype = 1
>while homuntype <= M_V_LASTDATA do
for homuntype = 1001, M_V_LASTDATA, 1 do
とすれば「homuntype = homuntype + 1」はいらない

836(○口○*)さん :06/10/05 19:24
わりと使い捨てのスクリプトとはいえ、マジックナンバー埋め込むのもなぁ。
せっかく末尾IDの定数があるなら開始IDの定数もほしいところ。

837(*○口○)さん :06/10/05 19:53
ID自体は1001以下に来ることはあり得ないだろうけど・・・
まあ M_V_FIRSTDATA で追加しておいた

for homuntype = M_V_FIRSTDATA, M_V_LASTDATA, 1 do

838(○口○*)さん :06/10/05 20:06
>if文でnil弾いてるから気づかないのかもしれないけどmobIDの範囲は1001〜1721
ああ、それはわざと。LASTDATAは定義されてるけどFIRSTDATAの定数ないから一応ね。

>for homuntype = 1001, M_V_LASTDATA, 1 do
>とすれば「homuntype = homuntype + 1」はいらない
Cとかの構文に近いこともできたんだね。そっちのほうがよさげだ。

839(○口○*)さん :06/10/05 20:07
って早速できてた

840(○口○*)さん :06/10/05 20:08
>>837
IDがRO

841(○口○*)さん :06/10/05 21:51
R-ZEROじゃNEEEEEEEEEEEEEEEEえか!適当なこと言ってると
右の頬にキスすんぞ!

842(○口○*)さん :06/10/06 06:11
8月に更新されたどきどきAIで、主人が殴ってるモブもホムが殴るようになったぽいのですが、
これを元のホムが殴らない設定にしたいのですが…

function GetOwnerEnemy (myid)
のところを前のように書き換えてもうまくいかず。
ていうか、どの文のところで主人が殴る→ホムも殴るというようになったのかを
わかる方いらっしゃいましたら、ご教授お願いします。orz

843(○口○*)さん :06/10/06 06:41
function OnIDLE_ST() の中の

-- 主人が戦闘状態か否かをスプライトパターンから判断
if (GetV(V_MOTION,GetV(V_OWNER,MyID)) == (MOTION_ATTACK or MOTION_CASTING or MOTION_SKILL) and IsMonster(GetV(V_TARGET,GetV(V_OWNER,MyID))) == 1) then
    MyState = CHASE_ST
    MyEnemy = GetV(V_TARGET,GetV(V_OWNER,MyID))
    TraceAI ("IDLE_ST -> CHASE_ST : MYOWNER_IS_FIGHTING")
    return
end

この部分をコメントアウト

844(○口○*)さん :06/10/06 07:09
即レスありがとうございますー
実はプラントジオに間違って主人が攻撃した時に、
ホムが攻撃しかけないように仕掛けたかったので助かりました。
混戦時だとジオを間違って叩いてしまうことが多くて…(ノД`)゚。・

845(○口○*)さん :06/10/06 09:13
右にされたら左を差し出せ

846(○口○*)さん :06/10/06 09:16
1HITだけ入れる共闘専用機能のあるAIってありましたっけ?

847(○口○*)さん :06/10/06 09:46
こっこはホムが戦闘参加する時間を決めれるはず。
これを短くすれば共闘でしょ。

848(○口○*)さん :06/10/06 09:46
どうだろう。俺も構想はあったけど1HITと判断させる部分が難しい
Attackは実際殴ってるかどうかはわからんしなあ。
スキル攻撃だと離れてるうえに遮蔽物判定しないからさらに難しい。
実際にあるなら参考にしてみたいな。

849(○口○*)さん :06/10/06 09:55
ALT+右クリックで一発殴って待機状態になるとかは?

850(○口○*)さん :06/10/06 11:02
「1hit」って判定はまず無理。
なにしろ、Attack()したとしても攻撃後ディレイでは無意味だし、もしディレイがなくても「空振り」が判断できない。

いくつかのAIで「一定時間だけ攻撃したら、あとは止める」ってのは組み込まれている。
こっことかGlenelgとか。

851(○口○*)さん :06/10/06 13:26
工体使ってるけどやっぱり工体って重い?
最近よくラグるような気がする

852(○口○*)さん :06/10/06 13:41
狩場がイベントMAPを含む鯖と一緒というオチは無いか?

853(○口○*)さん :06/10/06 13:47
「重い」関連では、とりあえずは以下の条件を確認してみるのがお勧め。

・いわゆる「キャンセルのための攻撃多重化」はされていないか?
・AIに関係なく、単純に時間・マップなどで重くないか?
・/traceAI(や、そのAI独特のログ類)が出力されっぱなしになっていないか?

854(○口○*)さん :06/10/06 14:22
>846
配布されてるAIはどうなってるか知らんけど、
俺はOnCHASE_STで接敵後ATTACK_STに移る前に1回殴らせて
ATTACK_STを攻撃せずに空回し、ってさせてる
Mobが動いて追っかけるとまた殴るが、ホムがタゲ持って壁するには
これで問題なく使えてるよ〜

855(○口○*)さん :06/10/06 20:00
>>846
1HITが空振りしたら右クリックでもう一回攻撃させればいいんじゃない?
安AIが壁設定にしたら右クリックでも一回しか殴らなかったからケミでHITしたかどうかを判断させることが出来たはず

3匹以上は殴らないとはいえ、壁設定でも勝手に動き回るからオススメはできないが試してみたらどうだろう

856(○口○*)さん :06/10/07 03:56
最近身内の間でPvが流行って自分も行くようになったのですが、Pvに特化or動くようなAIってどこかに公開されてますか?
Glenelg使わせてもらってるんですが、Pvだと人を殴ってくれず、デフォルトAIだと殴りっぱなしだったりで融通効かなかったりでイマイチなんです。

857(○口○*)さん :06/10/07 04:30
Pv特化じゃないけどGv用AIが近いと思う

858(○口○*)さん :06/10/07 04:45
自分用で使ってるのでよければうpるけど
コードがゴミ過ぎる上に使いにくくしかもバニル専用な件

859(○口○*)さん :06/10/07 17:11
>>858
是非是非お願いしたいです。
丁度、自分も相棒がバニルですのでー。

860(○口○*)さん :06/10/08 08:52
くまAIで

リーフの緊急回避をオートスペルで使用させようと
設定ツールでやってみたんだけどうまくいかない…
・主人追従時使用
・第一段階 Lv5 ホムSP40%〜100%
にして保存→安息コルホムしてもオートで使ってくれない。

要はAI再読み込み時にオートで緊急回避させたい。
理想はAI再読み込み時にオートでLv5使用してディレイ終了後に再使用。

きのこAIのでやってみたけど、他の挙動が肌にあわなかった…
できればくまAIベースでやりたい。簡単な追記でできるなら教えてほしい。

861(○口○*)さん :06/10/08 09:28
・スキル上限と下限の設定が逆になってないか
・デフォ設定だと「第1段階のケミの上限HP(%)」が20になってるので、ここで引っかかってないか

862(○口○*)さん :06/10/08 09:53
>>861
HPSPの欄を全部0〜100%にしてみたけど駄目だった。

前スレの231の↓をくまAIに組み込めればいけそうなんだけど
コピペじゃエラー吐いて駄目だった…

SkilltickA = 0

function AI(myID)
 ...
 local nowTime = GetTick()
 local casting = false
 if (SkilltickA + 35000 < nowTime) then
  casting = true
  SkilltickA = nowTime
end
 if (casting == true) then
SkillObject(MyID,5,8002,MyID)
 end
 ...
end

863(○口○*)さん :06/10/08 11:01
>>859
Pvと狩り兼用で使っていたので
Pv用に手直し終わったら何かでうpしま
すぐ出せなくてすまそ

864(○口○*)さん :06/10/08 11:59
漏れの場合こんな感じかな

【変数初期化】
HomSkillTime1_1 = 0 -- 緊急回避の使用間隔(初回)
HomSkillTime1_2 = 35 -- 緊急回避の使用間隔(2回目以降)
HomLastTime1 = os.time() -- 前回の緊急回避の使用時間
HomSkillFirst1 = 0 -- 緊急回避初回判別フラグ


【ルーチン】
function HomAutoSkill1()
if os.difftime( os.time(), HomLastTime1 ) > HomSkillTime1_1 and
GetV(V_MOTION,MyID) < 2 and HomSkillFirst1 ==0 then
SkillObject(MyID,5,8002,MyID) -- 緊急回避使用(初回)
HomLastTime1 = os.time() -- 前回使用時間更新
HomSkillFirst1 = 1 -- 初回判別フラグ変更
end

if os.difftime( os.time(), HomLastTime1 ) > HomSkillTime1_2 and
GetV(V_MOTION,MyID) < 2 then
SkillObject(MyID,5,8002,MyID) -- 緊急回避使用(2回目以降)
HomLastTime1 = os.time() -- 前回使用時間更新
end
end


【functionAIの先頭か末尾に追加】
HomAutoSkill1() -- ホム定期スキル使用1

865(○口○*)さん :06/10/08 22:53
一晩悩んでみましたがサッパリわからなかったので質問させていただきます。

ホムを攻撃している複数(単体の場合も含む)のモンスターの中に
指定したモンスターが居る場合のみ
優先的にSPが尽きるまでスキルを使わせてから通常攻撃をさせたいです。

具体的には下水4や炭鉱で囲まれている状況でクランプ(ID 1209)が居る場合に
ホムのSPが尽きるまでLv5のカプリス(ID 8013)を使ってから通常攻撃をさせたいです。

AIはこっこAI Ver3.30を使わせていただいています。

866(○口○*)さん :06/10/08 22:55
質問になってない

867865 :06/10/08 23:09
どこにどういう文を追加すればいいのか具体的に教えてほしいです。

例えばホムのSPが200以上ならクランプにLv5カプリス撃ちたいならfunction AI(myid)以降にこう書く
if (GetV (V_SP,MyID)>=200) then
SkillObject(MyID,5,8013,1209)
end
という風に。 いや、この文も間違いだらけだと思いますが。
良ければヒントだけでも教えていただけるとありがたいです。

868(○口○*)さん :06/10/08 23:30
>>859
もし見ておられたら
明日中にはUP出来そうですがどこに上げればいいでしょか

869(○口○*)さん :06/10/08 23:35
>>865
もう少し条件をつけて貰えると解りやすい。
例えばスキル連打する間は通常攻撃していいのかダメなのか。
まぁダメな理由もあんまり無いと思うが。

クランプに限らず色んな相手に拡張性持たせるなら
こっこベースにしても簡単に数行加えるだけじゃ難しいと思うんで
自分がやりたいこと、それを実行する上でやってほしくないこととか
とにかくわかりやすく整理して書いて欲しい。


とりあえずこれまでの情報で思いついたのは

・強敵リストを作る
・ATTACK_ST内で全敵を走査するのでその中でリストに合う相手をチェック
・相手が居たらスキルを使わせてreturn

870865 :06/10/08 23:57
>>865
レスありがとうございます。
単に苦手なモンスターを優先的にスキル攻撃で倒したいだけですので
通常攻撃しながらスキル連打が可能なのならばそれに越した事はありません。

優先するリストを作って使えたりしたら便利だろうなとは確かに思ったのですが
AIやLuaの事をほとんどわかってない私にはそれをどうやって呼び出すとかもわからず

仮にリストを呼び出せたとしても、こっこAIをかなり多岐にわたって書き換えないと
実現できないだろうと思い、それならば面倒でも1匹のモンスターごとに指定して
毎回狩場によって敵のID書き換える程度にすれば

こっこAIを大幅に変更することなく、
function AI(myid)以降に数行書き足す程度で実現できるのではと思い
その程度ならばこちらで質問しても
具体的に文を書いて教えていただけるのではないかと思い書き込みました。

871(○口○*)さん :06/10/09 00:11
リストの書き方わかんなくて一種類に対して条件書くくらいなら、
その条件の中で「もし敵のIDが あれかこれかそれかだったら」って
orで並べとけばいいんじゃないだろうかな。

それ以前に、function AI は全体の流れを制御してるところだから、下手にそこに書くと
待機中も非戦闘中も主人追尾中もそのロジックを通ってしまうので、
まずは公式のマニュアル等でAIの中の状態遷移がどうなっているかを
見極めるところから始めるべきだと思います。

そうすれば、すくなくともどこら辺にコード付け足せばいいかは見えてくるはず。

872(○口○*)さん :06/10/09 00:21
>>870
「今、ターゲットしている相手がクランプなら、それに対してスキル連打」
みたいなことは数行で出来るんだけど、スケワカとかタゲってる時にクランプが来たとかだと
ちょいと対応出来ない。とりあえずパッと思いついたのはこんな感じ。
これをATTACK_ST内の適当なトコに入れればいいんじゃないかな。
オートスキルよりは前がいい。攻撃直後の1528行目あたりかな?

--グローバル指定
AppointedID = 1209 -- とりあえずクランプのID

function AttackAppointedMob()

 if AttackSkillDelay < GetTick() then -- スキルディレイ中は操作しない。負荷軽減。
  local enemys = GetActors()
  enemys = GetOurEnemys(enemys)  -- 自分たちをターゲットしてる敵を取得

  for i, id in ipairs(enemys) do
   if GetV(V_HOMUNTYPE,id) == AppointedID then -- 敵の中に指定IDが居たらそれにスキル使用して抜ける
    SkillObject(MyID,5,8013,id)
    AttackSkillDelay = GetTick() + 1800
    return
   end
  end
 end
end


激しく未テストなので不具合おきたらゴメンよ。
あと、AppointIDはリスト化して、forループももう1重かければ
複数対象を指定していけるんだけどもややこしいからとりあえずこれで。

873(○口○*)さん :06/10/09 00:23
大丈夫だと思うけど一応捕捉。
ATTACK_ST内に書き込むのは

AttackAppointedMob()

の一行だけね。
↑のコードは全部適当な別のとこにコピペで。全角スペースは抜いてね。

874856 :06/10/09 00:56
>>868
わざわざ手直しまでして頂いてすみません。
アップロードの場所なのですが、MMOBBSアップローダーでいいのかな・・

ttp://www.mmobbs.com/uploader/

自分、アップロードの経験とか無いので間違ってたらすみませんorz

875865 :06/10/09 01:20
>>871
IDとIDの間にor付けて並べるってことでしょうか。
プログラム自体全くしたことがなかったのでそういう基本的なことすら知りませんでした。
function AIはなんとなくそこにホムへの命令文を書けば実行してくれるのかなと思ってました。
一度は参考に公式のPDFのマニュアル見てみたりはしたのですがサッパリでした。
とりあえずもう一度くま〜AIさんとことかの詳しい状態遷移図見てみます。

>>872
具体的に書いていただきありがとうございます!
ATTACK_ST内のオートスキルより前の1528行目あたりということで
-- +++ オートスキル +++ --
と書いてある部分の直前に、全角スペースを半角にしてから貼ってみたのですが

ATTACK_ST内に書き込むのは

>AttackAppointedMob()の一行だけね。↑のコードは全部適当な別のとこにコピペ
の意味がわかりませんでした。

AttackAppointedMob()
だけを-- +++ オートスキル +++ 直前に書き、他を全部function AI(myid)以降に書くのかそれとも違う場所なのか、
もしくはAppointedID = 1209も一緒に書くのかなど、試しに色々やってみましたがわかりませんでした。

適当な別の場所とはどこでしょうか?

876(○口○*)さん :06/10/09 01:25
>>875
関数の意味を理解してればすぐわかったと思うけど、そうでもないのかな。
要は他のfunction 〜 end で区切られている区間以外の部分に書けばいいってこと。

まぁどこでもいいんだけど、1374行目のところに>>872の内容を全部コピペすればいいよ。

>AttackAppointedMob()だけを-- +++ オートスキル +++ 直前に書き

↑これは合ってる。そのままで。


これでダメだと中身がダメだったってことになるのでまたあとで考えます。

877865 :06/10/09 02:07
やっとうまくいきました!

てっきりAttackAppointedMob()だけは-- +++ オートスキル +++ のとこで使うので
文から抜き取るのだと思って、抜き取った状態で他のfunction〜endの前後に書いてました。

動作的にもすごく満足です。
ホムがまだ弱いのでクランプとは相打ちになりましたが今後かなり役に立ちそうです。

こんなプログラム全くした事の無い人間にもなんとかわかるように
丁寧に書いていただき本当にありがとうございました。

878858 :06/10/09 15:47
大体出来たけど説明書(?)書くの大変だね、よくわからんし
人に見せるもんだから自己満足じゃいけない・・・
大手AIの人はやはり凄いと感じるorz

879(○口○*)さん :06/10/09 20:23
だから俺は自分用の組んでそれで終わってるな。
正規化したいんだけど自分が使うのにはなんら問題ないしなあ。

880(○口○*)さん :06/10/10 01:25
0MATERIALさんの、どきどき版AIを使わせていただいているんですが、このAIは基本ノンアクティブなんですが
このAIをアクティブにしたいんですがもしよかったら方法など教えていただけないでしょうか。すみません。
よろしくお願いします。

881(○口○*)さん :06/10/10 02:01
1064行目
function GetMyEnemy (myid)

  local result = 0
  result = GetMyEnemyA (myid)  -- 種族に関係なくノンアクティブ化
          -- どうしても常時アクティブにしたい場合は GetMyEnemyB (myid)
          -- ただし人の多い狩り場ではノーマーナーになるので注意!!
  return result
end

書いてある通り。
但しどきどきAIはデフォルトAIに近めで横殴りの対策が無いから
どうしてもアクティブでやりたいなら他のを使うほうが良い。

882(○口○*)さん :06/10/10 02:13
>>881
ありがとうございますー!
ALT+Tと組み合わせて横にならないように使ってみます〜。
もしよかったらアクティブのお勧めがあったら教えてもらえないでしょうかー。
重ねてすみません。

883(○口○*)さん :06/10/10 02:25
俺は自作AI使ってるから正直お勧めなんて知らないが
>>2のAI機能比較表+人力アンテナで
先行非先行切替ができるようになってるやつは
アクティブ時の動作も考慮されているはず。

いろいろ試してしっくりくる物を探すがよい。

884(*○口○)さん :06/10/10 06:20
どきどきAIになれているならこっこAIが、両作者同士知り合いで
AIも共通点はあるから試してみると良いかも

かなり細かい部分だとオートスペル確立とかも各AIごとに違うから
AI読めるなら該当部分を、読めないならそれぞれ実際に使ってみるのが良いね

885858 :06/10/10 08:01
説明も大体出来たので今夜にUPします
情けは人のためならずというか、自分でも前より大分すっきり出来たので満足
やはりモチベーションが違うと進み方が違うなと実感
なおバニル専用なのは変わっていません

886(○口○*)さん :06/10/10 13:52
GvでエンペリウムにIsMonster()を使うとどうなるんでしょうか?
砦保有者でない場合は1が返ってくる気がしますが、自分がその砦の保有者の時は0が返ってくるんでしょうか?

887(○口○*)さん :06/10/10 14:29
相手がPTMでもプレイヤー攻撃可能MAPだと1が返ってくるし
1が返ってくるんじゃね?
エンペと同じように保有している時は攻撃が出来ない自砦のガーディアンにでも試してみたらどうだろう

888(○口○*)さん :06/10/10 15:50
砦持ちじゃないので誰か砦持ちの方が実験してくれるのを待ちます

889(○口○*)さん :06/10/10 17:42
SBR44=死屍サブレ
と96の鳥ホムに逃げられ今はバニルを育ててる私が命名してみる

890(○口○*)さん :06/10/10 22:07
44マグナムとかけてるんだろう

891(○口○*)さん :06/10/11 00:58
450 :(^ー^*)ノ〜さん :06/10/09 16:32 ID:18sqrRvN0
散々既出だけどARMORED COREってゲームにそのまんまSBR44って武器がある

458 :(^ー^*)ノ〜さん :06/10/09 17:07 ID:d3uy+m1J0
KWB-SBR44
一発の攻撃力にかけた射突型ブレード

892(○口○*)さん :06/10/11 01:09
>>883-884
いろいろ試してみますー。ありがとうございました!

893(○口○*)さん :06/10/11 11:00
散々既出を重ねるとARMORED COREってゲームにはそのまま「MOONLIGHT」ってブレードもある。
神器クエストでも登場キャラ名パロってるし、重力的には多分この辺が元ネタ。

894(○口○*)さん :06/10/11 15:19
遠距離でSBR連打できないんだよね?
主人がタゲもって数セル離れると奥義のみ連打してくれるんだが
遠距離で手動SBR打ったらその場で攻撃命令だしても、モーションキャンセル無理?

895(○口○*)さん :06/10/11 18:13
1行目と2行目で矛盾してる気がするが、できる。

896(○口○*)さん :06/10/11 18:36
質問ですが、寝落ち機能って不正ツール類ではないよね?
こっこAIの導入したばかりで、一回その機能なったような気がするんだけど、今日BAN・・・。

897(○口○*)さん :06/10/11 18:40
どうせ放置狩りでもしてたんだろ

898(○口○*)さん :06/10/11 18:46
>>897
全くしてないです
とりあえず何が原因なのか分からないので可能性を潰していってるところです。

899(○口○*)さん :06/10/11 19:02
とりあえずスレ違いな
他に寝落ち機能でBANされたって人でも探したら?
BOTと取引してBANされたとかならともかく、聞いたこともないけど

900(○口○*)さん :06/10/11 19:02
1日に3回くらい溜まり場でダベりつつ寝落ち機能発動させてる俺が全く問題なく無事だから関係ない。

901(○口○*)さん :06/10/11 19:04
誓ってBOTしてたんじゃないというのなら、
BOT露店から大量購入とかしてないか。それでBANの可能性もあるらしい。
あとは同じIPアドレスでBOTしてる奴が居るかどうか。
家族の誰かとか、同じアパートでケーブル回線だと他人でも同IPだから疑われたりな。

これ以上はお前さんのPCや周囲の環境覗いてみないと誰にもわからんから
まったく心当たりないならヘルプとガチで話し合え。

902(○口○*)さん :06/10/11 19:14
スレ違いとは思いませんでした。申し訳ありません。

903(○口○*)さん :06/10/11 19:22
天然だなw

904894 :06/10/11 19:33
>>895
あまり深く考えないでくれww
サンクス。

905(○口○*)さん :06/10/11 19:57
ないとは言い切れないけど限りなく可能性はゼロに近いな。
os.exit はクライアント側のLuaの機能であるから、サーバー側でそれを探知しにくいと思うんだがな。
横殴りや放置やトレインなんかの恨み買うようなことしてたならともかくまっとうにやっててダメなら講義したほうがいいと思う。
一応BOTBANやってるみたいだから冤罪の可能性も高いし。

906858 :06/10/11 20:14
PvAI出来たのでUPしました
ttp://www.mmobbs.com/uploader/files/1118.zip
説明書長すぎもうだめだー
人にわかりやすいように説明する能力が死ぬほど欲しい

907(○口○*)さん :06/10/12 00:09
>>896
RMTした、とか。

908(○口○*)さん :06/10/12 04:23
ソレダ

909(○口○*)さん :06/10/12 08:01
工体のとこで配布してるROAIPlus38が動かなかったんだけどこれでいけるっぽ。
ググってみるもんだ。

・下記のレジストリキーを作成
HKEY_CLASSES_ROOT\Licenses\4D553650-6ABE-11cf-8ADB-00AA00C00905
・値に下記を入力
gfjmrfkfifkmkfffrlmmgmhmnlulkmfmqkqj

910(○口○*)さん :06/10/12 12:54
一応真似する輩への注意事項

※PCのレジストリを弄る行為は、場合によっては最悪PCが起動しなくなります。
自己責任で行ってください。

911(○口○*)さん :06/10/12 23:16
>>909大丈夫か?コレ

912(○口○*)さん :06/10/13 00:28
調べたらライセンスのレジストリらしいがどうなんだ。
WSHのライセンスどうこういじって使えるようにするもんだと解釈したが勧めていいものなのか?

913(○口○*)さん :06/10/13 00:38
ROAIPlusっていうのをいじったことないからわからないんだけど、
どんなエラーを、どういう理由によって回避できるかが説明できない限り
勧めるのはマズいと思う。

>>909自体はチラシ裏みたいなもんだし、マネするのも自己責任だから
それは構わないけどね。

914856 :06/10/13 02:20
>>906
ネット出来ず返信遅れました・・・すみませんorz

ありがとうございます〜
早速使わせていただいたのですが、オートカプリスの時にエラーが1回、SHIFT+Alt+右クリした時に1回出ました。
オートカプリスの方は、エラー出た行のMSPをMaxSPに書き換えたら直りましたが、右クリックの方が分かりませんでした。

Util.lua内の
function GetDistance2 (id1, id2)
 local x1, y1 = GetV (V_POSITION,id1)
 local x2, y2 = GetV (V_POSITION,id2)
 if (x1 == -1 or x2 == -1) then

の上から3つ目でエラーが出るみたいです。

915(○口○*)さん :06/10/13 02:27
どうでもいいけど、デフォAIでDistance2関数でなく、Distance関数を使って引数が−1だったら・・
みたいな判定してる場所があったな

916(○口○*)さん :06/10/13 02:30
どうも今回のroaiplusは
VB(?)のライセンスがないと実行できないコマンドを使って組んだものを公開してしまって
>>909はそのライセンスそのものっぽ。

roaiplus自体は単なるAI切り換えツール。

917(○口○*)さん :06/10/13 03:15
そういやいつの間にかアンケートが終了してたな。
結果発表が待ち遠しい…。

918856 :06/10/13 03:36
すみません、>>916の補足です

>SHIFT+Alt+右クリした時に1回出ました。

のところ、
”プラントをSHIFT+Alt+右クリした時に1回出ました。”
でした。
ポリンにもやってみたところ同じエラーが出ました。
人には時間が合わなくてまだ試してないですorz

919(○口○*)さん :06/10/13 03:44
>>914
それ、その関数に移る時に渡したIDが中身空か文字が入ってるとそうなるよ
どっかでGetDistance2を利用する前にそのIDの変数の中身をチェックする必要がある

もし外部ファイルに保存したIDを読み込む処理を利用しているなら、
外部読み込みのライブラリはデフォルトで文字として読み込むからいちど数字に戻す必要がある

そのエラーから出来る助言はこれくらい

920(○口○*)さん :06/10/13 03:46
たぶん右クリックした相手と、自分か主人かの距離を比べる時にどっちかのIDがちゃんと格納されてないんじゃないかね

921(○口○*)さん :06/10/13 06:46
>>916
つまり、>>909はリアル犯罪って事か。

922(○口○*)さん :06/10/13 09:53
犯罪とは限らんけどエラーの意味もわからんユーザーにレジストリいじるのを勧めるべきじゃない。
おそらくは
http://support.microsoft.com/kb/411156/ja
http://support.microsoft.com/kb/318597/ja
このへんの問題だと思う。一応回避方法っぽいのは書いてあるけど俺は工体使ってないんでよくわからね。

923858 :06/10/13 12:47
>>914
うわああああ(AA略
同じエラー出てたのに修正してないほうをUPしてしまってたらしいorz

少々お待ちくだされ

924858 :06/10/13 12:54
原因発見

AI(myid)内の

elseif rmsg[1] == ATTACK_OBJECT_CMD then
OnATTACK_OBJECT_CMD (msg[2]) ←これを
end

OnATTACK_OBJECT_CMD (rmsg[2]) ←こう差し替えてください

r付け忘れ(ノ∀`)タハー
テストまでさせてしまって申し訳ないですorz

925(○口○*)さん :06/10/13 17:00
>>922
どう見ても著作権法違反です。
本当にありがとうございました。

926(○口○*)さん :06/10/13 17:33
>>922からするとVB側のバグみたいね。
配布元が対処しないとダメやね。

>>925
これはライセンスといっても割れとは違くね?

927(○口○*)さん :06/10/13 17:54
割れじゃなければ著作権法違反じゃないとでも言うのか?
んなわきゃーない。
正規の方法以外で取得したライセンスを使ったら、立派な著作権法違反です。

928(○口○*)さん :06/10/13 17:59
>>927
割れ云々じゃなくて、これのどのへんが著作権法違反なの?

929(○口○*)さん :06/10/13 18:07
>>928
>>909はどう見ても正規の方法で取得したライセンスじゃないだろ。
それとも、>>909の方法をマイクロソフトが公開してるのか?

930(○口○*)さん :06/10/13 18:15
その「どう見ても」の根拠がわからないので教えてください。
ググって出る程度ならフリーライセンスなのかもしれないし。

931(○口○*)さん :06/10/13 18:32
VBはフリーだった気がするけど、どのみち推奨されるものではないね
グレーなものはスルーだ

932(○口○*)さん :06/10/13 18:38
いろいろ言いたいことはあるんだけど、一点だけ。

VBとかスレ違いもいいところ。
工体ローカルで、しかも他AIに役に立たなさそうな話を引きずられても困る。
続けたいならム板や当人のblogにでも行ってくれ。

933(○口○*)さん :06/10/13 18:56
マイクロソフトが>>909のようなライセンス入力方式を公開することはない。

>>909のレジストリキーと値で検索をかけてみても、マイクロソフトが公開した情報はヒットしない。
(マイクロソフトのサイト内検索でもヒットしない)
つまりマイクロソフトが公開した情報じゃないことが判るはず。

で、マイクロソフトが公開している方法以外で取得した方法でライセンス入力したら著作権法違反なんだから、
>>909は著作権法違反な訳だ。
これでいい?

>>931フリーだからって何してもいいわけじゃないぞ。
フリーってのは、「著作者の定める条件を満たす範囲内で利用する限りにおいて無料で利用していいよ」っていうライセンス。
マイクロソフトが認めないことはやっちゃダメ。

>>932
雑談スレで何ムキになってるの?
1つのAI限定の話はしちゃいけないってルールはないと思うが?
現に、1つのAIに限定した話もいくらでもでてるぞ。
俺ルールを振りかざすのは自分の管理サイトだけにしてくださいね。

934(○口○*)さん :06/10/13 19:06
なるほど。
まぁうだうだ言ってる間に対策版公開されてるしこの話は終わっとこうか。

935(○口○*)さん :06/10/13 19:22
馬鹿ID:nKzTdDnYO晒しage
と思ったら御自分でageられてますね

936(○口○*)さん :06/10/13 19:55
共闘モードで殴ったらその敵死ぬまで行動しないんだけど2~3匹に殴られている時他のターゲットに共闘入れるようになりませんかね?

3匹来ると痛いんで2匹でCR入れつつ、3匹で超必死になるんで…

937(○口○*)さん :06/10/13 20:04
技術的には可能。

その共闘モードとやらは恐らくどこかの配布AIのものだろうが
それすら明らかにしないとこれ以上は何も言えない。

938(○口○*)さん :06/10/13 20:38
>>936
なんか2匹まで一発だけ殴って3匹タゲが超えると敵の数減らしにかかるAIがあった気がする

余談だが自分は
>グレーなものはスルーだ
と書いたのに、なんで容認してるようにとられたのかといささか不満に感じた

939(○口○*)さん :06/10/13 21:01
物事を白黒で分けないと我慢ならん人はいるもんさ。ほっときなさい。
Luaとは全く関係ない方向にいってるしこれ以上ぐだぐだになるのも勘弁だ。

940(○口○*)さん :06/10/13 21:01
>>933
正論けっこう。
ただ文面が虎の威を借る狐といったところなのがちょいとイタイ。
一方的に攻撃できそうだからって嬉々として携帯でブヒブヒやってるのは微笑ましい。
狙って釣ろうとしてるのかもしれないけどまあほどほどにね。

>>938 ひっぱってそう振らせたこちらが悪かった。ごめん。

941(○口○*)さん :06/10/13 21:10
釣るのも釣られるのも勘弁してくれまじで。

942(○口○*)さん :06/10/13 21:20
流れを読まずに質問したいんですが、
こっこAIで蜃気楼の塔でアクティブで動かすためにはどの設定を変えればいいんですか?
アクティブについて設定のところいじったのですが、塔でピクリとも動かなかったので・・・
よろしくお願いします!

943(○口○*)さん :06/10/13 21:29
横殴り対策を全部外してやれば動くと予想

944(○口○*)さん :06/10/13 21:30
こっこはあんまり使ったこと無いけど、多分横殴り関係の設定
LimitRangeDist=0でいけるんじゃない?

945(○口○*)さん :06/10/13 21:32
>>942
原因:横殴り防止機能が働いている為。
対策:一緒に昇る人を全員友達登録する。

946(○口○*)さん :06/10/13 21:44
というかデフォルトAIにすればいいんじゃないかな

947942 :06/10/13 21:52
奥義連打状態を維持しながらアクティブで狩らせてあげたいのです。。。
わがままですいません。。。

948(○口○*)さん :06/10/13 22:03
んじゃ、デフォAIのAttack (MyID,MyEnemy)のすぐ下に、SkillObject(MyID,3,8012,MyEnemy)を追記でどうだ?
バニル使いなんでテストできんけど、一番近いターゲットに奥義連打しながら攻撃するんじゃね?

949(○口○*)さん :06/10/13 22:18
俺もそれで困って自分で書き換えたよ。
とりあえず、手っ取り早いのが全員を友達として認識させてしまう方法。
1740行目あたりにある"対象が友達であるかどうかを確かめる関数"の項目を
-------------------
function IsFriend(id)
    return 1
end
-------------------
に書き換える。これで周りのプレイヤーはListに無くても強制的にお友達。

あとは上にもあるように180行目あたりの"アクティブ状態に関する変数"の
LimitRangeDistの値を0に。

念の為、1030行目あたりにある
if not IsNotNoManner(MyID, MyEnemy) then    -- 接近中に誰かターゲットを奪われたとき
    ResetEnemy()
    return
end
をコメントアウト。
これで行けるはず、というか俺はこれで行けた。責任は持てんが。

950936 :06/10/14 03:37
こっこ使ってます、そこそこJObも欲しいんでホムと主人がタゲ持ってる敵一発or一定ずつ殴ってくれるようなAI解ると嬉しいのですが。

951(○口○*)さん :06/10/14 05:47
>>950
アンテナの説明ざっと見たらあったぞ

きのこAIが
>一発だけ殴る共闘モードに設定可能(殴れたかどうかは見てない)
安AIが
>config.luaの設定から攻撃パターンを変更し壁モードにすることが出来る。

ぱっと見たところこの二つにその機能があるんじゃないのか?

952(○口○*)さん :06/10/14 11:43
ROAIPlusの46がでてるな。
主人のHPSPも取得できるのか。

953(○口○*)さん :06/10/14 13:26
周辺状況を通知しないと取得出来ないから、AI周りが重くなるのは
致し方ないかorz
導入したいが、入れるとデフォでGv時並に重くなるからなぁ・・・

954(○口○*)さん :06/10/14 13:29
>>953
詠唱妨害だって常に周囲の敵のモーション監視してるし、
やり方次第では普通に動くんじゃないの?

今のよくある詠唱妨害系でも重くなるっていうならそれはPCや回線の問題かも。

955(○口○*)さん :06/10/14 16:36
Gv並に重くなるのってパケ送りすぎか
蜃気楼の塔と鯖・時間がかぶってるんじゃないか?

956953 :06/10/14 17:32
バニルミルトで工体103+パッチ10使用してますで。
進化aspd対策:しない
詠唱妨害:しない
mobdata関連:読込・処理する
map:読み込まない

こんな感じの設定で使っていて、蜃気楼と重なると重たくなります。
また、平日の22時〜でも偶に主人が動けなくなるときがあります。

ここにroaiplusを入れるとノートンなどの処理を掛けながらROをしているような
感じになります。
通信周りは弱いかもしれません。
無線LAN使わざるを得ませんので・・・

ちなみに、PC自体は問題なく、推奨スペックを満たしているモノです。
設定などもう一度見直してみます。

957(○口○*)さん :06/10/14 17:51
いや蜃気楼と重なったら重くなるのはどれでも一緒だから。
Roaiplusはどうだかわからんが、蜃気楼以外の時に普通なら問題ないと思うぞ。

958(○口○*)さん :06/10/14 18:21
Roaiplusで重くなるってのは疑わしいな。
そりゃ間に1つ挟むことになるから全く重くならないってわけじゃないが
体感できるほどの変化はない。実質IE窓一つ開いてるだけだし。
注意書きにもあるように監視ソフトが悪さでもしてるんじゃない?

959953 :06/10/14 18:57
色々試してみましたところ、roaiplusの動作ををノートンアンチウィルスが
監視していると言うのが濃厚でした。

しかしながら、Navから除外する方法を見つけることが出来ませんでしたので
Roaiplusの使用を中止しようと思います。
解決方法が見つかりましたらまた此方に来ます。

960(○口○*)さん :06/10/14 23:54
>>924
Pvで試す機会がありましたのでやってみたところ治りました〜。
それで、色々やってみたのですが、どうも手動索敵がうまく働いてくれない模様。
自分なりに考えた結果、config.lua内のGetEnemy2関数で、

local min_dis = 50
+AttackFlag = 1
for i,v in ipairs(actors) do

if result ~= 0 then
  MyEnemy = result
- AttackFlag = 1
  MyState = CHASE_ST
+else
+ AttackFlag = 0
end

としたら手動索敵時に攻撃を行ってくれるようになりました。
しかし何分プログラムのことを良く分かって居ないものですから、これでいいのか不安で・・・
ご指摘等あればお願いします。

961(○口○*)さん :06/10/15 01:41
蜃気楼のときに固定砲台やったらAttack×2だけで動けなくなった
たぶんもっと多重送信や全ループでMove送るような鯖攻撃タイプだと
相当重くなりそう

962(○口○*)さん :06/10/15 07:18
処理の軽さや鯖アタックに気を使ってるAIって何なんだろう
なんか工体とこっこは重いイメージがある

963(○口○*)さん :06/10/15 08:33
風評乙

964(○口○*)さん :06/10/15 13:14
トレードオフだよ。

機敏に動かすためにはMoveやAttackを多めに送る必要がある。
鯖に気を遣って送信減らせば「もっさり」した動作になる。

多分だけど機構としては鯖にMobが一匹増えたのと大差ないはずだから
よっぽどなAIを作らない限り鯖攻撃とまではいかないだろう。

965858 :06/10/15 16:36
>>960
ミスだらけでごめんなさい&ありがとう(うωと)

GetEnemy2内の

〜〜
if GetPriority(v) > 0 then ←この行を
〜〜
if GetPriority(v) => 0 then ←こう直してくださいorz

AttackFlag=1に最初にすると、プラントも攻撃対象に入れてしまうので
間違えて攻撃してしまう恐れがあります

他にも色々ありそうなので直したらもう一度修正版UPしますね
やはりいろんな人に使ってもらいたいので
言い訳をすると、塔の影響でPvが過疎って検証がしにくい・・・orz

966858 :06/10/15 16:41
ぎゃああ寝ぼけてた

正しくは
if GetPriority(v) >= 0 then
です
連投スマソ

967858 :06/10/15 17:12
さらに連投スマソorz
>>914,916,918,960のバグ取った修正版うpしときました
よかったらどうぞ
ttp://www.mmobbs.com/uploader/files/1134.zip
バグ見つけるか報告出るまで雲隠れしときます

968(○口○*)さん :06/10/15 21:13
GvでホムをWP裏に置くだけのえらいシンプルなAI組んでみた。
しかしカプリス等が発動しない。
どなたかお知恵を・・・

ttp://www.mmobbs.com/uploader/files/1136.lzh

969(○口○*)さん :06/10/15 21:19
>>968
目的としては手動カプリスするだけでいいの?
だったら108行目を

MyState=ATTACK_ST

にすればよくないかね。
あとそのままだと状態がATTACK_STのまま戻ってこれないから
117行目に

MyState=IDLE_ST

を追記してみるといいかもね。

970(○口○*)さん :06/10/15 21:31
>>969さん
素早いレスありがとうございます。
ギルメンらに追加の意見求めたところ以下の動作がほしいとのこと。

・勝手に移動しない(ケミを追従しない、ぐるぐる回転等も無し)
・手動で攻撃(どうやらカプリス・自爆だけでなく手動でタゲって通常攻撃もしたいようです)
・殴る相手は敵PC、エンペ
・ただし攻撃されても反撃はしない

この手のAIって需要あるのかな・・・

971(○口○*)さん :06/10/15 21:41
>>970
1と4は可能。てか>>968の時点でもそうなってるでしょ?

2は難しい、というか対Mobと同様の操作にすることが出来ない。
デフォだと対MobにはShit+右クリ2回で攻撃命令を出せるが、
対人だとPvでもGvでも”対象クリック”では攻撃させることが出来ないみたい。
代替案として地面右クリックしてその上に居るキャラに攻撃、とかは出来る。
でも操作が若干難しくなる。

あと、そもそも「攻撃させる」という行動を固定させると
ラグが起き易く、最悪鯖キャンされる可能性も出てくるので
通常MAPと同じようなペースで攻撃させられるとは思わないほうがいい。
やるとしたら相当気を遣ってやらないと重くて本体が動けなくなる。


とりあえずGvAIっての配布してるとこあるからまずそこから見てみたら?

972(○口○*)さん :06/10/15 21:51
>>971さん
969の箇所を修正してみたとkろおカプリス発動しますた。
これでWP裏おいておいてプチプチ攻撃が出せます。

PC相手の攻撃についてはご指摘の点を踏まえて見送りたいと思います。
GvAIについては一度目を通してみたいと思います。

ご教示ありがとうございました。

973(○口○*)さん :06/10/16 08:20

これって、自動エサやりとかできないの??

974(○口○*)さん :06/10/16 09:02
>>973
クマー(AA略

975(*○口○)さん :06/10/16 09:53
>>973
真面目に言えばAIでは出来ない
BOT他違反ツールでそういう機能はある(かもしれない

976(○口○*)さん :06/10/16 19:19
エンペのV_HOMNTYPEって誰かが調べたのないかな

これさえ解ればエンペ狙い出来そうだけど

977(○口○*)さん :06/10/16 19:19
エンペのV_HOMNTYPEって誰かが調べたのないかな

これさえ解ればエンペ狙い出来そうだけど

978(○口○*)さん :06/10/16 19:24
その前に自分で調べたか?
テンプレリンク辿ればあるぞ。

979(○口○*)さん :06/10/16 19:41
AIってファイルの書き込みは出来るんだよな?

ファイルに台詞を書き出して
それを書き換えを検知して常に表示するツールを作れば
ホムの状態がわかって便利かなーと思ったんだが…すでにある?

逆に、キーボードでON/OFFをファイルに書き出して
それを定期的に読み込めば
ALT+T以上の細かい動作を切り替えられて便利かも

とか考えたんだが、癌になんか言われそうだ

980803 :06/10/16 19:50
>>979
テンプレのAI機能比較表内、外部で情報表示参照。

981(○口○*)さん :06/10/16 19:51
なんか余計な名前残ってるし・・・orz

982(○口○*)さん :06/10/16 20:02
>>979
安いAIがおまけ機能だかで似た機能実装してた気がする

>それを書き換えを検知して常に表示する
これはないけど、ホムの台詞をファイルに書き出す機能があるらしい
また/savechatで保存したログを読み込んで命令発言がログにあったら、発言者と命令ログを確認してダンスパターンを変更する様だ

変な機能だったから印象に残ってた程度の記憶なんで勘違いかもしれないが

983(○口○*)さん :06/10/16 23:11
>>979
rhapsoAIで配ってるほむTalkが台詞表示アプリ。
./AI/massage.txt の内容を表示するだけなので、これを書き換えればどこのAIでも使える。
Glenelg の Singing and Thinking. で配ってる状態表示ライブラリを利用するとかなり楽に追加できる。

984(○口○*)さん :06/10/16 23:30
質問です。
現在工体AIを使っています。
ぶち切れラウレル君を無視するために、「-- ホムに無視させるモンスター名をカンマで区切って記述」のところに追加したのにホムが無視してくれません。
-- ホムに無視させるモンスター名をカンマで区切って記述
IGNORE_MONSTER_NAME_TABLE = {
[[ワイルドローズ]], [[チンピラ]], [[ラウレル=ヴィンダー]],
},

↑の設定の仕方ではダメだったのですが、間違っているんでしょうか?

また、ラウレル君を雑草のように「-- 草やきのこと同様に扱うモンスターのIDを指定」に追加したくてもモンスターIDが分からないので追加できません。

どうしたらラウレル君を無視できるようになるか教えて下さい。

985(*○口○)さん :06/10/17 00:41
ラウレル=ヴィンダーはアクティブなので無視設定をしても
攻撃されれば反撃してしまうのが仕様です。
草やきのこと同様に扱ったとしても攻撃されれば反撃はします。

986(○口○*)さん :06/10/18 17:16
ばにるみー@くまーAI使いで質問が。

自動カプリス使用設定で、特定の敵(具体的にはMDEFが除算50以上、
もしくは除算35以上かつ減算との合計が100以上の相手・・・早い話、
ウィレスや婆、Rやミミック等)に使わないようにしたいと考えてます。

AI.lua 1382行目「 -- ■カプリス@バニルミルトの自動使用が有効の場合」の直後に
敵のMDEF取得(mobdata.luaを利用)と判別処理として

local MobMDefDiv = GetMobData2(M_V_MDEFDIV, MobID) -- ■敵の乗算MDEFを得る
local MobMDefSub = GetMobData2(M_V_MDEFSUB, MobID) -- ■敵の減算MDEFを得る
if (MobMDefDiv >= 50 or (MobMdefDiv >= 35 and (MobMDefDiv + MobMdefSub) >= 100) ) then
return end

と加えればうまくいくでしょうか?

987(○口○*)さん :06/10/18 17:18
最後の
return end

return
end
です。orz

988(○口○*)さん :06/10/18 19:12
うまくいくと思う。
ただせっかくmobdata.lua使うなら属性チェックも入れたいところ。

local MobAtt = GetMobData2(M_V_ATT, MobID)
local MobAttLv = GetMobData2(M_V_ATTLV, MobID)
if (MobAtt == M_ATT_SHADOW and MobAttLv >= 4) then -- 闇Lv4の場合は使用しない
  return
end
if (MobAtt == M_ATT_HOLY and MobAttLv >= 3) then -- 聖Lv3以上の場合は使用しない
  return
end

例えばこんな感じ。入れる場所は同じ場所。
これだと聖or闇で相性25%以下なら使用しない。
相性50%も切りたいなら闇を3 聖を2に変更
相性75%も切りたいなら闇を2 聖を1に変更
既に入れてるならスルー。

989(○口○*)さん :06/10/18 20:57
オマエラ新スレの季節ですよ。きっと立てられないので誰かお願い。
変更点にツッコミ入れたい人は改善案を早めによろしく。

変更:グレーゾーンネタ自粛について明記
    過去ログ保管庫に「りとる りとる うぃっち」追加
注意:hは抜かない(>>298-302)
    Luaリファレンスは5.0のまま変えない(RO組み込みは5.0.2)
保留:多重Attack問題(>>711-714)
     AI制作者への認知はあらかた済んでいるだろうから、
     「配布AIの説明書をよく読め」でよいかなと。

ホムンクルスAIについての雑談スレ その4
----
このスレは、質問や要望、思いついたアイデアなどに関して雑談するスレです。
質問をする場合、最低限、『過去ログの確認』や『状況を伝える努力』をして下さい。
グレーゾーンの行為(自動PPなど)に関する話題は自粛やスルーをお願いします。

守らない悪ケミ子は、ばにるみーが触手で御仕置きだ!
  ヘヘ
 | ̄ ̄ ̄|
∠|_( ゚Д゚)ゝ <おしおきだべ〜

リンクは>>2-5あたり。

990(○口○*)さん :06/10/18 20:58
■AIに関して、良くある質問は「Alchemist_Template の FAQ」に。
http://alchemist.s214.xrea.com/index.php?%A5%DB%A5%E0%A5%F3%A5%AF%A5%EB%A5%B9%2FLua%2FAI#r025e50a">http://alchemist.s214.xrea.com/index.php?%A5%DB%A5%E0%A5%F3%A5%AF%A5%EB%A5%B9%2FLua%2FAI#r025e50a

■ホムに関して、良くある質問は「AlchemyNote の ホムンクルス基礎」に。
http://www15t.sakura.ne.jp/~privatemoon/alc/hom_100.html

■前スレ
ホムンクルスAIについての雑談・要望スレ その3
http://enif.mmobbs.c#

■過去ログ保管庫
ホムンクルス用ライブラリを配布するサイトLv.1
http://himenomikoto.at.infoseek.co.jp/kulus_project/index.html#html

りとる りとる うぃっち - アルケミ関連スレのログ
http://www.serio.ne.jp/~little-witch/log/index.html

■関連スレ
アルケミスト・クリエイター情報交換スレッド第96巻
http://gemma.mmobbs.com/test/read.cgi/ragnarok/1160922701/l50

■テンプレサイト
Alchemist_Template
http://alchemist.s214.xrea.com/

■AI配布サイト リンク集
Alchemist_Template - ホムンクルス/Lua/AI - AI配布サイト
http://alchemist.s214.xrea.com/index.php?%A5%DB%A5%E0%A5%F3%A5%AF%A5%EB%A5%B9%2FLua%2FAI#f7c155f4

AI機能比較表+人力アンテナ
http://pc3merchant.net/ai_antenna/

■Lua 5.0 リファレンスマニュアル
http://www.uri.sakura.ne.jp/~cosmic/yuno/lab/lua5_manual_ja.html

991986 :06/10/18 22:28
>>988
ありがとうございます。

んで試してみましたが・・・
「attempt to compare number with nil」
とでてしまいます。どうやら、
GetMobData2(M_V_MDEFDIV, MobID)の戻り値がnilになっている模様。
--GetMobData()を使ってもダメでした。

くまAIとmobdata.luaのIDで整合が取れてないんでしょうか?
MobIDはAutoObjectSkill()の先頭のほうで、
MobID = GetV(V_HOMUNTYPE,MyEnemy)
で取得したものを使ってるんですが・・・これそのままじゃまずい?

992986 :06/10/18 23:02
自己解決。条件文のとこが

誤:MobMdefDiv
正:MobMDefDiv

でした・・・お騒がせしてすまないorz

これでもプログラムで食ってるのにこんな初歩ミスするとは。。。

993(*○口○)さん :06/10/19 01:57
細かい事ですまないが
>>990
>ホムンクルス用ライブラリを配布するサイトLv.1
ホムンクルス用ライブラリ配布所
に名前変わってるのでよろしく

994(○口○*)さん :06/10/19 08:21
スレ立てチャレンジ

995(○口○*)さん :06/10/19 08:23
ホムンクルスAIについての雑談スレ その4
http://enif.mmobbs.com/test/read.cgi/livero/1161213721/

996(○口○*)さん :06/10/19 12:16
埋めゼリー

997(○口○*)さん :06/10/19 12:57
うめめ

998(○口○*)さん :06/10/19 16:49
はいはいうめうめ

999(○口○*)さん :06/10/19 17:01
本当のホムンクルスはエサを与えなくても良い

よって全てまがいもの

1000(○口○*)さん :06/10/19 17:04
ε=ε=ε=(┌ ^ω^)┘シュタシュタシュタ...[次スレ]

10011001 :Over 1000 Thre
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。