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

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

1(○口○*)さん :07/02/23 00:10
このスレは、質問や要望、思いついたアイデアなどに関して雑談するスレです。
質問をする場合、最低限、『過去ログの確認』や『状況を伝える努力』をして下さい。
グレーゾーンの行為(自動PPなど)に関する話題は自粛やスルーをお願いします。

守らない悪ケミ子は、ばにるみーが触手で御仕置きだ!
  ヘヘ
 | ̄ ̄ ̄|
∠|_( ゚Д゚)ゝ <ところで触手ってどこ?

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

2(○口○*)さん :07/02/23 00:12
■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についての雑談スレ その4
http://enif.mmobbs.com/test/read.cgi/livero/1161213721/

■過去ログ保管庫
ホムンクルス用ライブラリ配布所
http://himenomikoto.at.infoseek.co.jp/kulus_project/index.html#html

りとる りとる うぃっち - アルケミ関連スレのログ
http://www.serio.ne.jp/~little-witch/log/index.html

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

■テンプレサイト
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

3(○口○*)さん :07/02/23 00:12
■AIに関して、良くある質問は「Alchemist_Template の FAQ」に。
http://alchemist.s214.xrea.com/index.php?cmd=read&page=FAQ%2FAI">http://alchemist.s214.xrea.com/index.php?cmd=read&page=FAQ%2FAI

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

■前スレ
ホムンクルスAIについての雑談スレ その4
http://enif.mmobbs.com/test/read.cgi/livero/1161213721/

■過去ログ保管庫
ホムンクルス用ライブラリ配布所
http://himenomikoto.at.infoseek.co.jp/kulus_project/index.html#html

りとる りとる うぃっち - アルケミ関連スレのログ
http://www.serio.ne.jp/~little-witch/log/index.html

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

■テンプレサイト
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

4(○口○*)さん :07/02/23 00:15
追加。
グレーゾーンの話題や質問についててはこちらで

ホム放置狩りスレ7
http://enif.mmobbs.com/test/read.cgi/livero/1170466196/

5(○口○*)さん :07/02/23 00:24
むう、かぶった。
AIFAQへのリンクも直したんでで次回からはこっちへお願いできればと。
http://alchemist.s214.xrea.com/index.php?cmd=read&page=FAQ%2FAI

6(○口○*)さん :07/02/23 00:30
>>1乙。

で、零移動なんだが、どうせ移動しないなら(x,y)の座標は敵Mobのじゃなくてホム自身のがいいよな?
AIによって実装が違うだろうからイメージだけ書くとこんな感じ。

if SPが少ない then
 (x,y) = GetV( V_POSITION, ホムのID )
 零移動でモーションキャンセル
else
 (x,y) = GetV( V_POSITION, MobのID )
 通常のモーションキャンセル
end

7(○口○*)さん :07/02/23 00:59
Move(MyID,GetV( V_POSITION, MyID))
だけ入れて有無による変化試してきます〜

8(○口○*)さん :07/02/23 01:03
if 攻撃中
を加えるのを忘れていて、移動中に動きがピクピクと不自然に…

9(○口○*)さん :07/02/23 01:04
ちょっと噴いたwがんばって

10(○口○*)さん :07/02/23 01:31
べちべち痙攣しながら跳ねるバニルを想像したw

11(○口○*)さん :07/02/23 02:28
ホム座標への零移動を試したものの…
大きく差が実感できるほどには速くなってない気がする。

12(○口○*)さん :07/02/23 02:36
うちも試したが、まぁやらないよりはマシというところ

13(○口○*)さん :07/02/23 02:47
こっこAIをMovingをON、多重を3にしていれてみた。
ASPDはいいけどAI読み込み硬直がかなりきつい(roaiplus&くまAIの1.5倍ぐらい)。
ちなみにroaiplus経由だとsetllua反映しないっぽいからデフォを編集する必要がある。

14(○口○*)さん :07/02/23 02:57
前スレより

19sec  ホムなし
19sec  デフォルトAI               16.4kb 3
19sec  幻塵AI 02/12 070212          23.3kb 4 ini(1kb)
19sec  どきどきAI 08/23 060823u       25.5kb 3
20sec  初回限定AI 02/07 0.70207       44.6k 3 ini(1kb)
21sec  くまーAI 07/23 0.53a          53.2kb  4
23sec  きのこAI 02/10 0.13a          49kb 1 ini(1kb * 6)
24sec  玉蟲AI 02/10 2.26            56.4kb 11 ini(4kb)
26sec  Glenelg 02/14 0.48a           154kb 22 ini(8個) 補足を参照
30sec  こっこAI 02/13 4.53           86kb 3
32sec  rhapsoAI 11/29 1.53          123kb 10 ini(3kb)
34sec  可能な限りAI 02/12 1.4h        110kb 1
39sec  工体AI私的修正版 02/06 103+15   145kb 11


相対的に考えるとこっこはくまの1.5倍ぐらいなのかもね。
でもうちの環境だとこっこでもSS1枚取る程度のラグで済むんでそんなに気にならない。
やっぱ環境次第で読み込み速度の絶対値も変わってるのかね。

15(○口○*)さん :07/02/23 03:05
>>14
ああ、モロにそのまんま1.5倍なのか。腹時計もバカにできないもんだなw
やっぱ機能と重さはトレードオフなのね。どのへんで折り合いをつけるかだけど
このまま読み込みラグが消えなければずっとくまAIでいきそう。もう一度くらい更新しないかなあ…

16(○口○*)さん :07/02/23 09:59
特定のmobをID指定してホムが一切攻撃しないようにするにはどうすればいいんだろう?

先行型で先制攻撃しないようにはできるけど、
ホムが殴られると反撃したり、ケミが殴ると一緒に殴ったりしてしまう…

function OnATTACK_ST ()内でmobID指定して、該当mobなら待機状態にして抜ける
ってやると殴らないんだけど該当mobが居る間は他のmobも一切殴らなくなってしまう…

17(○口○*)さん :07/02/23 10:18
GetEnemyの索敵ループの最初にOwnerIDとMyIDを敵とみなさない、とするif文があるから
そこへand v ~= MobIDとか条件をつけ加えてやればよい

18(○口○*)さん :07/02/23 13:22
>>17 dくす。理屈はわかった。でもくまAIに上手く組み込めない _| ̄|○ ボスケテ

19(○口○*)さん :07/02/23 15:17
どこをどうやって上手くいかないのか言わないとこっちも助言のしようがない。

20(○口○*)さん :07/02/23 15:18
多分IDってmobタイプのことだろーから
GetV(V_HOMUNTYPE,v) == (特定のmobタイプ)
みたいにしたいんじゃないかとは思うけど

21(○口○*)さん :07/02/23 18:11
1乙

前943,961
■公式(AIマニュアル・デフォAI)
プレイガイド/楽しみ方/ホムンクルス
http://www.ragnarokonline.jp/playguide/enjoyable/homunculus.html


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

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

22(○口○*)さん :07/02/23 19:15
突然だがサクラエディタ用の強調文字ファイルが残ってたのでうp
ttp://kasamatusan.sakura.ne.jp/cgi-bin2/src/ichi76325.lzh.html
wikiにファイルをうpする方法が分からんかったのでココへ

23(○口○*)さん :07/02/23 22:29
本スレにて、海外RoはASPD修正パッチがきたと書き込みが...
ちょっとだけ期待してしまう

24(○口○*)さん :07/02/23 22:37
>>23
結局あれは釣りだったようだが?

25(○口○*)さん :07/02/24 01:04
管理会社次第って・・・
ワロタ

26(○口○*)さん :07/02/24 03:09
ところでAIを通してツールで情報表示させるのって規約的にOKなの?

27(○口○*)さん :07/02/24 03:56
他所でやれ

28(○口○*)さん :07/02/24 04:13
うんこっこのことか

29(○口○*)さん :07/02/24 06:27
>>26
ホムやホムAI、AIで出来る事に関して個別に決められた規約は現時点で一切無い
ユーザーの判断で問題があると思えば使用を控えてくれと言うサポセンの解答はあった

聞かないで自分で判断しろ

30(○口○*)さん :07/02/24 07:16
うんこっこワロタ
セキュリティに引っかかるツールに加えてコンパイル版AIまで配りだしたな
いよいよなんかやらかすつもりか

31(○口○*)さん :07/02/24 07:59
すごい言い掛かりだな、おいw

32(○口○*)さん :07/02/24 08:36
こっこの中の人はなんでもかんでも抱えすぎな希ガス。
マニュアルもFAQも読んでないような質問に律儀に答える必要ないだろうに。
あげくそれに疲れて悪態ついてるんじゃ自縄自縛というもの。
BBSはしたらばとかに板作ってなるべくユーザー同士で互助してもらえばいいのに。
作者はどうしても解決できなさそうなら助け舟だすぐらいで十分だろ。

33(○口○*)さん :07/02/24 10:32
とりあえず設定ファイルの仕様公表しとけば済むものをどうして設定ツールに拘るかね
まあどうでもいいけど

34(○口○*)さん :07/02/24 10:36
すみません、工体私的修正版にASPD対策のコードを入れる場合、
どこに入れたら良いのでしょうか?

on Attack何とかと言うの所でしょうか

35(○口○*)さん :07/02/24 14:12
ビデオの録画のしかたもわからんよな人いるし
ボタン一発とかで設定できるってのはライトユーザにゃすごいありがたい機能のはずだよ。
俺は全部カスタムしないと気が済まないけど。

でもこっこの人はもっと適当に流すべきとは思う。
大半がマニュアルやログ読んでくださいで済む内容だし。

36(○口○*)さん :07/02/24 14:22
>>28
他にも配布してるAIあるから別にこっこに限らないけど丁度やってたから気になったんだ

>>29
そうみたいだね。ごめん。

>>30
お前は何を言っているんだ

>>33
仕様も何も変数再定義してるだけって書いてなかったかな。
変えたい変数だけ書けばそれでOKなんだけどね。
でもそれが理解できる人はそもそもBBSで聞いたりしないだろ

37(○口○*)さん :07/02/24 14:26
レスが嫌ならBBS失くすなりすれば良いのに
その癖煽り気味にレスしてるうんこっこは間違いなく屑

38(○口○*)さん :07/02/24 14:33
>>37
最近煽ってるってレス多いけど
具体的に煽りレスってのがよくわからないな。どれのことよ。

39(○口○*)さん :07/02/24 14:48
荒れるのが嫌なら匿名板なんか置かなくていいのにってこったぞそれは。

40(○口○*)さん :07/02/24 16:56
プログラムどころか「ディレクトリってなに?」なLvの人とかに
レスだけで説明するのは大変だから、そりゃ消耗するし苛つく事だってあるだろうし、
モチベーションの↑↓もあるだろう。
それでも、こっこの人は初心を忘れずにガンガッテいると思うけどな。
煽られ耐性のない初心者はこことかには来ないで、結局優しい人の所に流れていくものだし…

キャラスロ増加でホムケミやってみようって人がどれ位いるか判らないけど、
この先の事を考えると設定ツールどころか、インストーラまで付けなきゃならんような
事態になるかもしれんけど。

41(○口○*)さん :07/02/24 17:07
>>40
インストーラつけたらつけたで今度は「何をインストールされるかわかったもんじゃない」
とか騒ぎ出すに違いない。要するに叩きたいだけの人間が紛れ込んでるだろうな。

とか、ここ数日の流れをみて邪推してしまうよ。

42(○口○*)さん :07/02/24 17:25
うんこっこ養護がわらわら沸いてきてワロスwwwwwwwww

43(○口○*)さん :07/02/24 17:27
携帯から書き込みwww必死でワロスwwwwwwwww

44(○口○*)さん :07/02/24 17:27
このタイミングで携帯から援護しても…。

45(○口○*)さん :07/02/24 17:48
Use at your own risk

ということで流せばいいのにな
性格的に出来ないのか、単にしないだけなのか
それとも引っ込みつかなくなってしまったのか

46(○口○*)さん :07/02/24 18:09
中の人も既出の質問や読めば判る質問にいい加減うんざりしてるのか
初期の頃と比べれば返信に棘が立って来てるのは確か
今の状況を中の人がどう思っているのかは知らないが
自分からヘルプ出して来ない内はそっとしておけばいい

愚痴や返信の棘がヘルプ信号だと思うのなら向こうのBBSに噛り付いてやれ
こっちでgdgd言ったって荒れるだけ、適当に流せ

47(○口○*)さん :07/02/24 19:17
>>41
そのぐらいの煽りはスルーしる。匿名掲示板じゃ儀式みたいなもんだ。
叩かれる杭は出てるってことだし、出過ぎた杭は叩かれても打ち込めない。


そもそもこの程度で「わかりませんおんぶ抱っこしてください><」
なんて人は見捨てるべきじゃないの?
能力や要領の足りない人が損をするのは(本来の)世の常だろうに。
「ハトに餌を与えないで下さい」と似たようなもん。

足りない部分は人脈に頼るっていうのも正しいことだけど
人脈は日頃から育ててこそであって、いきなり他人に頼ろうと
するからしわ寄せが起きる。

48(○口○*)さん :07/02/24 19:41
ただインストーラはありな気がしてきた
ホムの事分かりません、でもAIは入れたいですって奴を全部そのAIに誘導できる

49(○口○*)さん :07/02/24 19:51
インストーラって・・・そこまでAI入れるの難しくないだろ
それすらも分からない奴が多いってことか_| ̄|○

50(○口○*)さん :07/02/24 20:01
じゃあやっぱりインストールは難解なほうがいいな
ある程度知識がない人を避けられる

51(○口○*)さん :07/02/24 21:07
まぁインストーラってのは妄想だけどね。
現状EXEにしろなんらかのスクリプトにしろ実行かけられる物は、
垢ハック中華につけこむスキを与えてしまうから、今となってはね。
残る初心者救済策は、初期に言われていたように一通りの機能がついたユーザーAIを
標準AIに採用してもらってパッチとして流してもらうって方法だけど、
相手が癌じゃ要望出する気にもならんしな。
今の標準AIはバニルや鳥だと規約違反AIともいえるんだから、
癌が何とかするべきなんだがまったく期待できないってのがなんとも_| ̄|○

52(○口○*)さん :07/02/24 21:25
インストーラを用意しても知名度と機能が伴わないとだめだな。
って初回AIの中の人が言ってた。

53(○口○*)さん :07/02/24 21:56
こっこの場合、AI.lua単体で良い身軽さが利点(機能)の一つでもあるから
知名度がどんだけ有るにしろインストーラの意味は薄くなるね

54(○口○*)さん :07/02/24 22:19
こっこの人モニタに餌やりタイマつけてくれないかな

5533 :07/02/24 22:35
>>36
そんな事言ってBBSの対応が嫌んなってりゃ世話ないじゃん?
あらかじめ設定ツールがうまく動かん場合の対応策を用意しとけば
面倒なのは全部そっちに誘導するだけで済むのに

56(○口○*)さん :07/02/24 22:35
腕時計か携帯でよくね?

57(○口○*)さん :07/02/24 22:37
時間たったらラウドボイスが止まらなくなるようにしろよ

58(○口○*)さん :07/02/24 22:46
>>55
でもどっちかっつと多いのは設定ツールは動くんだけどファイル置く場所間違えたりしてるのばっかりだぞ。
設定ツール動かない系は大抵解決されてるっぽいし。

置き場所はちゃんと書いてあるんだから仕様公開云々じゃなくて
やっぱりマニュアル読まない人間の問題だろ

59(○口○*)さん :07/02/24 22:47
ID:8YZ/fDao0さんは顔真っ赤ですけど御本人様ですか^^;;

60(○口○*)さん :07/02/24 22:53
>>59
お前は何を言っているんだ

61(○口○*)さん :07/02/24 22:54
俺にもわからん

62(○口○*)さん :07/02/24 23:10
>>59
日本語でおk

63(○口○*)さん :07/02/24 23:34
>>59
エスペラント語でおk

64(○口○*)さん :07/02/25 00:32
ディスペラントもおk

65(○口○*)さん :07/02/25 00:55
カイドクフノウ カイドクフノウ…

ピーーーーー(ぬるぽ)


ガッ




−以下、AIについての雑談をお続け下さい−

66BBS感想文 :07/02/25 01:04
どんなものかと思ってBBS覗いたらとんでもない状態になってた
PCに疎いからといってマニュアルやFAQすら読まず、BBSに突撃かけて
過去ログどころか、ちょっと上のレスすら読まずに質問する人たちがいてとてもびっくりした

有料でもないのに、彼ら一人一人に律儀に対応する慈善事業なんて
ボクにはとても出来ないと思った

67(○口○*)さん :07/02/25 01:07
ぼくにはとてもできない

68(○口○*)さん :07/02/25 01:15
うんこっこの中の人乙(^ω^)

69(○口○*)さん :07/02/25 01:21
>>66
まったくですね。
http://privatemoon.sakura.ne.jp/image/ro/070225_02.jpg

>>68
乙あり

70(○口○*)さん :07/02/25 02:32
複数のホムを育成されてる方は、AI設定の切り替えってどうされてるんですか(´・ω・`)?
30鳥ならこの設定、90バニルならこの設定・・・みたいな事は可能なんでしょうか?

71(○口○*)さん :07/02/25 03:18
USER_AIとAIのフォルダにそれぞれAI入れて、/hoaiで切り替えじゃあかんかね?
config.iniなんかで設定してる場合は、複数のconfig.ini作って別フォルダに保管。
ホムや狩場にあわせてiniを上書きとかでもいける。

72(○口○*)さん :07/02/25 03:26
AIによって違うだろうけど工体の切り替えツールか>>71だねぇ

73(○口○*)さん :07/02/25 03:32
>>71
SOREDA!チョベリサンクス。

>>72
それもチェキしてみる。チョベリサンクス。

キャラスロ増えたらもう一人増やしてみようとか思っててもうね。アフォカトバカカト。

74(○口○*)さん :07/02/25 05:23
凄く聞き辛いのですが他にどこで聞けばいいかわからないから質問させてください。

リーフ特化orリーフ向きなAIってどれでしょう?
街ケミ用の緊急回避リーフが進化したから少しは育てようかと思うんですが今までどきどきAIの回転設定くらいしかいじったことがなく戦闘向きじゃないなと感じたもので…
やはりこっこや工体をいじるのが無難ですかね?

75(○口○*)さん :07/02/25 07:24
とりあえずどこでもいいから使ってみたら?
公開されているAIのほとんどはリーフ対応してるから、ほとんど手を入れなくても使えるはず。

76(○口○*)さん :07/02/25 09:31
>>69
一応ブラクラ。

77(○口○*)さん :07/02/25 09:49
ごめん専ブラでエラー吐いたけど間違いだったかも。

78(○口○*)さん :07/02/25 09:51
いつもの煽りが来たのかとオモタw

79(○口○*)さん :07/02/25 10:11
>>75
やっぱり色々自分で使ってみるのが一番ですかね。
ありがとうございました。また手が空いたときなどに色々調べたり導入したりしてみます。

80(○口○*)さん :07/02/25 11:28
>>74
このスレのテンプレ読んで、AI紹介スレ見てくればいいだろう
ただしURLに飛ぶときはちゃんと確認してからな

81(○口○*)さん :07/02/25 13:44
あれー?

久しぶりにホム動かしてみたらaspdがガタ落ちになってる、、
モーションキャンセルされないように内部仕様変わった?

まあ、本来のASPDに戻ったということではあるのだろうけども。。

82(○口○*)さん :07/02/25 14:03
                >>81
                |
                |
                |
                |
     /V\        ,J
    /◎;;;,;,,,,ヽ
 _ ム::::(;;゚Д゚)::| ジー
ヽツ.(ノ::::::::::.:::::.:..|)
  ヾソ:::::::::::::::::.:ノ
   ` ー U'"U'

83(○口○*)さん :07/02/25 15:41
>>81
やあドク。

2/6のメンテ後のケミスレを見てくるといい。

84(○口○*)さん :07/02/25 17:23
諸兄方に質問!
バニルケミorクリエがハエorテレポでこっちがモブと交戦中付近に
飛んできていきなりボルトかますのさOTL 
普通の人は謝罪あり。イタイ奴は謝罪もせずにテレポ
あれってカスタムAIでも仕様なのかな?
ボルトかまされるとな〜 普通に横殴りじゃんって思うし
イタイ奴の言い訳は0か1か とか ラグってたのかもね
とか訳解らん事言うし・・・・
着地点でホムの視界内にいるが
他人と交戦中のモブに対してボルトかまさないような
事ってできん?どうか助けてください

85(○口○*)さん :07/02/25 17:30
しかし相手がそのAIを使わないと解決にならないだろう。
というか他人と交戦中のに手を出さない、っていう設定のところのフラグを
間違えたっていう言い訳じゃないか。

だいたいどのAIにもその機能は大昔から載ってるはずだし、AIがどうこうというよりは
使い手の問題なだけ。

86(○口○*)さん :07/02/25 17:33
できん?って聞かれたら、
配布されてるAIは既にそうなっているものが多いとしか答えられない。

他人のAIをいじれない以上、本人にもうちょっと気を使ってくれ、と伝えるしか。

87(○口○*)さん :07/02/25 17:38
激しくかぶった orz

あと、書きこんだ後に気がついたが、
相手が横殴り上等設定の場合に自衛できないか?って相談なら、
ペロスくらいしか思いつかない。

88(○口○*)さん :07/02/25 17:53
きのこAIにちょっと手加えたAI使ってるんだけど(バニルと鳥と羊もち)

テレポで飛んだ時に真横にいた人の敵に殴りかかったことがあった…
多分テレポで飛んだ時に主人より先にホムが読み込まれてるから
主人が表示される(?)までは初期AIが読み込まれてるのかも。
バニルと鳥は横殴りしてしまったことあるけど羊だけは経験は今の所ないので。

でも、あんまり知識ないから間違っててもしらない。

89(○口○*)さん :07/02/25 18:41
mobのモーションやtargetが不正確なうちに判断をした結果だと予想。

>>88
主人の視野外と同じだろうから、一切制御されない=動かないのはず。

デフォAIになるっていうのは、
・サーバ側でやってくれるなら視野外でも(ある程度)動く
・クライアント側で切り替わるなら、AI/AI.luaなくてもとりあえず動く
 (エラーにならない)
というわけで考えにくい。

90(○口○*)さん :07/02/25 18:44
テレポアウト直後なら
・直前に主人が倒した敵(タゲ残り)
・他人か敵が攻撃モーションをとる前に自身の敵と判断した場合
 (他人に移動中の敵の間に出た時も含む
・一瞬でも主人かホムをタゲに持っていた場合
に殴る
初期AIは関係ないね

91(○口○*)さん :07/02/25 18:46
他PCよりmob読み込む方が一瞬早いんでねーの?

92(○口○*)さん :07/02/25 18:59
多分だけど、V_TARGETに値が入るのは「クライアントが攻撃モーションを検知した時」のような気がするので
テレポ直後が丁度敵やPCの攻撃間隔になってどちらもMOTION_STAND状態かつ(自クライアントから見て)ターゲット0だったため
殴ってしまったとかそんなところじゃないでしょうか。

他PCにあまりにも近いMobはターゲットしないとかの条件を加えておけば防げると思います。

93(○口○*)さん :07/02/25 19:09
>>82

し、失礼ねっ!
別に釣り目的なんかじゃないんだから!


テンプレ見に行ったらかいてありましたとさ。

94(○口○*)さん :07/02/25 19:48
意外と多いのが、次のような状況。

まだ接敵はしていないアクティブの敵が、近くにいる第三者を攻撃しようとして移動中。
その「第三者」と「敵」との間に、ケミ&ホムがテレポアウト。
至近距離に新たな対象(ケミ&ホム)が出現した結果、その敵がタゲ移りしてホムorケミをタゲる。

こういう状況だと、
ホムから見れば、味方が攻撃されているので、正当な反撃。
だがその第三者から見れば、こっちに来ていたはずの敵を横殴りされた。

95(○口○*)さん :07/02/25 20:21
初期化後の数秒間をクールタイムにすればまとめて解決する話じゃない?

>>94は本AIやニブルAIだとなるだろうね。
これも間をおいて、タゲ流れが明確になってから(囓られてから)反撃すればいい。
タゲ流れ自体は事故だろうし。

9694 :07/02/25 21:02
>>95
そうですね。私もそう思います。
それなりに名の売れたAIなら、だいたいクールタイム(出現後しばらくは反撃も含めて攻撃しない)
が設定できると思いますし。

でもまあ、標準AIはもちろん、テンプレにある「パッシブに変更するだけ」の修整だと、こうなるのは事実。
きちんとした対応AIを相手がいれてくれないとダメなのが、苦しいところか。

97(○口○*)さん :07/02/26 00:49
うちはテーブル作って他プレイヤーやホムの周囲数セルを先制攻撃禁止区域にしてるな。
殴られたり主人が殴りはじめたら攻撃始める。
あと、読み込み1秒以内はGetEnemyが敵ID返さないようにしてる。テレポアウトとかの対策。
俺は自作のしか使ったことないけど他所ではそういうのやってないんかな。

98(○口○*)さん :07/02/26 01:14
ひとつ上も読めないのか

99(○口○*)さん :07/02/26 19:44
すいません、知恵を拝借したく質問されていただきます。

rhapsoAI1.5を使おうと思い、DLしてきたのですが
違うPCではすんなり起動したのですが、メインのPCで
開いたところ最初は.NETでひっかかり、そっちは解消したのですが
configを起動しようとしたところ以下のエラーメッセージがでてしまい
起動することが出来ません。
Framework|v2.0.5072|mscorwks.dll could not be loaded
v2.0.5072|mscorwks.dll ←を読み込めないといってるのかとは思うのですが
調べきれずにいます。

上記症状を解消するにはどうしたらよいのでしょうか?
Framework|v2.0.5072|mscorwks.dll could not be loadedでそのまま検索したのですが
うまく解消できる内容のページを探しきれずにいます…。

おわかりになるかたいましたら、よろしくお願い致します。

100(○口○*)さん :07/02/26 20:08
>>99
.NET Frameworkを入れると良い。
http://www.microsoft.com/downloads/details.aspx?FamilyID=0856eacb-4362-4b0d-8edd-aab15c5e04f5&DisplayLang=ja

101(○口○*)さん :07/02/26 20:09
って、入れたのか。
ちょっと根が深そうだな。力になれそうになり、すまん。

102(○口○*)さん :07/02/26 20:55
皆さんレスありがとうございます。
全てにおいて「こちらと交戦中のモブに」という場合でした
しかも相手は本読みながら狩りしているとの事OTL
つまり携帯画面見ながら車の運転してるのと同じなわけで・・・
相手がどんなAI入れたかは分かりませんが事故(横殴り)
にすら気付いてないという勇者ぶりを発揮していました
先日はボルトではなく近付いてきて通常攻撃での横をされました
裏の方では名の知れたGに所属しているので、まあ納得ですがw
これから先、横されないように・・・というのは難しいですね
対応策:こちらがマップを歩いていて「相手」が視界の端に入ったら飛ぶ
しかしこちらをタゲっているモブがいたら倒してから(マナーとして)
こちらが交戦中に横されたらしょうがないと諦める。其の度に「あやまれーっ」
て言ってたら時間の無駄ですし、取り様のよっては粘着扱いを受けるかもしれませんし

とまあ途中愚痴なぞを書き込んでしまい申し訳ないとは思います
ですがこの事からプレイヤー自身の性格が狩り方に直結してるのではないかと思います
一人一人が気をつけて気持ちよく狩りが出来ればいいなあと思います
最後にホム使いの方々へ 横殴りになっちゃったら絶対謝って下さい
間違っても逃げないで下さい それだけです
改めて、レスくれた方そして駄文を飛んでくれた方有難う御座いました

103(○口○*)さん :07/02/26 21:00
連投スイマセン↑は84の者です ここもID固定ではないみたいですね

104(○口○*)さん :07/02/26 21:15
すみません、行き詰ってしまいました・・・自動PPを組み込もうとしてるんですけど
PP投げるためのシロポや紅ポのアイテム区別をどうやってやってるのかが分かりませんorz
用いてるAutoSkill.luaのAutoPPの関数の中では
function AutoPP(myid)
  local myHP = GetV(V_HP,myid)
  local myMHP = GetV(V_MAXHP,myid)
  if (myHP/myMHP)*100 < SafetyHP then
   if GetTick() > OwnerDelay then
    SkillObject(myid,PpLevel,231,myid)   ←ここかな?
    OwnerDelay = GetTick() + 500

と宣言されていて紅ポを投げてくれます。231ってのがアイテム固有のNoなんでしょうか?

105(○口○*)さん :07/02/26 21:17
>>104
>>1を読まない子に教えるものなの何一つ無い

106(○口○*)さん :07/02/26 21:33
む、自動PPはグレーなんですね・・・分かりましたすみませんでした

107(○口○*)さん :07/02/26 21:34
自動PP以前にお前は普段どうやってPPを投げ分けてるんだと

108(○口○*)さん :07/02/26 21:38
>>107 ああっ、その通りでしたorzzzzzzzzzzzzzzzzzzzzz

109(○口○*)さん :07/02/26 21:57
>>102 どうみても粘着メンヘラ。きもい・うざい・いなくなれ☆

110(○口○*)さん :07/02/26 22:04
>>99
.NETはバージョン依存する。該当バージョンのファイルが見当たらないからエラーになっている。
入れたのは1.1SPだけとかなんじゃないのか?v2.0.5072 に該当する奴を入れないとだめ。

.NET 2.0 入れたら消えると思うよ。(.NET 3.0は2.0のファイルも書込むからそっちいれても動きそうだが)

111(○口○*)さん :07/02/26 22:58
NGID:o+kwMRqm0

112(○口○*)さん :07/02/27 01:52
>>103
というか、ID固定のほうが珍しいと思う。俺今まで一度もそんなとこ見たことない

113(○口○*)さん :07/02/27 02:53
RO関係でID固定だとRMCのUIDとかかな
大体のスレッドフロート型掲示板なら日本時間零時でID変わる

114(○口○*)さん :07/02/27 18:56
102です
>>109氏は何が言いたいのか分かりません
きっと放置ホムで晒された方なんですね。怒りの矛先をこっちに向けるのは
お門違いだと思いますよ?
メンヘラってなんですか?日本語でお願いします。

115(○口○*)さん :07/02/27 18:58
>>114
愚痴は愚痴スレに。

116(○口○*)さん :07/02/27 19:05
そんなのがあるとは・・・・失礼
では109氏へ 続きがあるなら愚痴スレで戦おうよw
ボキャブラリーがどの程度あるか知らないけど・・・

117(○口○*)さん :07/02/27 19:11
>>116
ついでに言うけど愚痴スレも愚痴すれでそういうことするとこじゃないぞ
>>1をよく読んで利用しようね

118(○口○*)さん :07/02/27 19:38
うへえ・・まあいいやOTL
もうここには来ないのでいいけど
気分良く終われるかと思ったので正直スレ汚しスマンかった
だがね?・・・・いかん小言がついついw
石ころを蹴飛ばした程度だと思ってくれればいいです ノ

119(○口○*)さん :07/02/27 19:40
>>118
どうも匿名板ってのに慣れてないみたいだからこことは言わず
LiveROを利用しない方がいい。別に煽るわけじゃなくて純粋にそう思った。

120(○口○*)さん :07/02/27 21:30
>>119
まぁ、そう言うな。
いまどき珍しい初心者だ、ここはお約束の「半年ROMれ」でいいじゃないか。

そうすりゃさすがにやっこさんも馴染むだろう

121(○口○*)さん :07/02/27 23:52
>>114
たぶんこうかと

粘着・・・しつこい人
メンヘラ・・・頭の中がお花畑でなんか電波受信してる人
きもい・・・見てる人をなんとなく不快にさせる人
うざい・・・近くに居てほしくない人
いなくなれ・・・でてけ(?)

おまけ
半年ROMれ・・・板とスレのテンプレと空気を読め

122(○口○*)さん :07/02/28 11:41
新キャラ壁育成したいがケミが土聖殴ると一緒にホムがどうしても土聖攻撃してしまう(ケミに攻撃する土聖を見てホムが助ける)
どうにかして土聖を絶対攻撃しない方法はないだろうか?

使用は工体AIで色々無視設定してもダメでした
土聖ID1516であったっているのかが疑問

123(○口○*)さん :07/02/28 11:50
>>122
Alt+T

124(○口○*)さん :07/02/28 12:54
きもいって、気持ち悪いって意味じゃないのね・・・。

125(○口○*)さん :07/02/28 12:55
こっこなら、モブ別に完全無視とか、ちょっとだけ攻撃とか指定できるぞ。

126(○口○*)さん :07/02/28 13:56
こっこに限らず、そういう設定のできるAIは結構あります。
どのAI作者も結構互いのAIの機能を参考にしていろいろいじっているので・・・
工体AIは開発が止まって久しい分、そういう細かい切磋琢磨の部分では苦戦していると思う。
まあそれでも、十分現役戦力のAIですけどね。

127(○口○*)さん :07/02/28 17:29
この機会に他のAI試し無事解決
>>125-126
アリガトー

128(○口○*)さん :07/03/01 02:02
>>127
ついでだから情報のフィードバックしていきなよ。
どのAIを使ってみたとか、様子とか。

129(○口○*)さん :07/03/02 20:53
ゼロキャンセルというのを使ってるAIはどれなのでしょうか?
こっこAIはSP回復しないのでそれじゃないですよね?

130(○口○*)さん :07/03/02 21:20
覚えている限りではこっこ、可能、Glenelg、初回、らぷそ、きのこあたりが使ってた。

そういうわけだから説明をよく読んだほうが良い。
あと移動キャンセルに比べるとASPDは落ちることが多いからあまり期待しすぎないほうが良い。

131(○口○*)さん :07/03/02 21:21
>>129
とりあえずテンプレのAI機能比較表&そこの更新情報+俺の知識でフォロー。
以下のAIは対応している模様。現機能比較表リストの上から順に。

こっこ
初回限定
可能な限り
rhapso
Glenelg
きのこ

これ以外で対応してたら、失礼。

132(○口○*)さん :07/03/03 02:19
>>129
こっこは素の状態でゼロ移動キャンセルしてる。
実移動キャンセルはそこからのオプションというだけの話。

133(○口○*)さん :07/03/03 07:19
初心者な質問で申し訳ないんですけども
ラウドボイスだったら155,ポーションピッチャーだったら231,
デモンストレーションなら229みたいなのはどうやって調べるんでしょうか?

アルケミ技ID表みたいなのがあるんでしょうか・・・
調べてるんですがどうしても分からず、ここを見ろって形でもいいので教えて欲しいですorz

134(○口○*)さん :07/03/03 08:18
どう使うのかはあえて問わないが
Roフォルダにあるdata.grfからとあるものを使いスキルIDリストを抽出してそれを参照するが
何を使えばいいのかは教えない

135(○口○*)さん :07/03/03 08:45
>>134thx!!
バイオプラントやSマインの設置がしたかったんだけどスキルIDが分からなかったんですorz <過去ログやら漁ってたYO
RO本体で規定されてるナンバーテーブルがdata.grfにあるとは知らなかった(´・ω・`)
200番台のAMスキルで無事理解できました。頑張って設置プログラム完成させてきますー

136(○口○*)さん :07/03/03 09:28
>>135
その手の話題はここでは扱わないので隔離スレ(放置スレ)でやってくれ。もう戻ってくるなよ。

137(○口○*)さん :07/03/03 09:29
>>134
data.grf展開はリバースエンジニアリング(規約違反行為)に
なるだろうから、使い道を問わない姿勢なら語らないでくれ。

138(○口○*)さん :07/03/03 09:56
グレーの部分に触れないでマジレスすると
狩場情報ひっそりのスキル一覧でリンクのid=***ってのが対応してる

139(○口○*)さん :07/03/03 11:07
>>136
自治厨乙
勝手に隔離呼ばわりとかお前のほうがそいつらよりよほど程度が低いわ

140(○口○*)さん :07/03/03 11:23
798 :(○口○*)さん [sage ]:06/05/08(月) 19:50 ID:8PXmN+P1
実際に黒だとか白だとかが問題なのではない。

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

141(○口○*)さん :07/03/03 12:29
>>139
>>139
>>139

142(○口○*)さん :07/03/03 14:05
>>139
自分も自治してるのに気づいてるかい?あとは>>140
放置スレを蔑むわけではなく、スレごとのルールが違うので
本スレ同様こっちでやるべきでない話題はあっちでやってくれってこと。

ここで白黒の議論なんてしてもしょうがないだろう?

143(○口○*)さん :07/03/03 16:23
おまいら釣られんな
つうか釣られるやつも同類

144(○口○*)さん :07/03/03 18:25
>>136>>140>>142>>143>>144
一応言っておくけどおまえら釣られてるからな
次回以降華麗にスルー汁

145(○口○*)さん :07/03/03 19:29
自治厨ばかりのスレで何言ってるんだかm9(^Д^)

146(○口○*)さん :07/03/03 23:52
多数決が日本人のやり方なのでそれでいいじゃない

147(○口○*)さん :07/03/04 01:15
スルーには二つの利点がある。

一つは荒れる話題を伸ばさないこと。
もう一つは自治に関する話題で荒れさせないこと。

スレ的なNGを指摘したい気持ちはわかるが、殆どの人は二点目を見落としがち。
結局流れとして荒れてしまっては本末転倒なので気をつけたほうがいい。

148(○口○*)さん :07/03/04 05:29
そうでもないか

149(○口○*)さん :07/03/04 09:48
初カキコ
playerjobdata.luaの作者さんではないけれど、playerjobdata.luaお使いの方へ
プレイヤーのIDは普通100000以上だけれども、
スロットが5に増えた後から、IDがそれ以下の数値の人がでてきたみたいす。調べたら80000代とか
なので、IsPlayer系の関数が正常な値を返さない可能性があります

どういうことが起きるかというと
AIによってはPCなのに敵だと思って殴りかかろうとしたり、
画面内に人がいてもアクティブのまま攻撃しにいったり、
主人にスキルをくれたプリさんについていっちゃったりする可能性があります

なのでplayerjobdata.luaを使ってる方は注意を

150149 :07/03/04 10:21
ごめんなさいorz
何度かテストしてみたら、IsPlayerの引数に変なもの入れてました;
自分の間違いでした;;

151(○口○*)さん :07/03/04 14:05
>>149
( ´∀`)σ)Д`)

そういえばライブラリの一覧みたいなのあったら便利そうだな。
・ホムンクルス用ライブラリ配布所の各種ライブラリ
・The Winter's Tale のsetini.lua
・テンプレのSelectActors

他、心当たりある?

152(○口○*)さん :07/03/04 14:31
MMOBBSにある例のアレは除外するなら、メジャー何処は
それ+AI比較表のトコのAI資料にあるやつと工体AI改のブログにいくつかある
後は個々のAI作成者が独自機能や思いついた機能なんかをライブラリ化してたりする

153(○口○*)さん :07/03/04 14:32
>MMOBBSにある
MMOBBSのアップローダでorz

154(○口○*)さん :07/03/04 16:09
>>151
152氏と微妙にかぶる気もするが。
AI比較表の Link のとこに「AIライブラリ」ってカテゴリがある。

155(○口○*)さん :07/03/05 11:56
すみません、どなたか工体AIさんのROAIPlus rev46が
ダウンロードできる場所をご存じ無いでしょうか?

工体さんの所だとファイルが消えてしまっているようで・・・

156(○口○*)さん :07/03/06 06:02
>>137
市販されている製品をリバースエンジニアリングすること自体は原則的に合法行為

157(○口○*)さん :07/03/06 07:06
うわああああああああああああああああああああああああ
何で蒸し返すかなあああああああああああああああああああああ

158(○口○*)さん :07/03/06 08:12
>>156ほど空気嫁って言葉が似合う奴はそうはいないな

159(○口○*)さん :07/03/06 08:33
ageだし釣りじゃね?

160(○口○*)さん :07/03/06 14:11
>>156
だれも違法とは言ってない。でも契約違反。

161(○口○*)さん :07/03/06 14:29
また釣りか。

162(○口○*)さん :07/03/06 16:17
>>160
契約違反ってなんだwwwwwwwwwwwwwwwwww
あとこの流れ終わらせろwwwwwwwwwwwwwwwwww

163(○口○*)さん :07/03/06 16:32
傭兵のAI詳細をミジンコにもわかりやすくよろしく!

164(○口○*)さん :07/03/06 16:36
>>162
終わらせたくないようにしか見えないwwww

>>163
ファイル名がAI_M.luaというぐらいで、AIとしては他に違いが見あたらなかった。

165(○口○*)さん :07/03/06 16:50
>>164
どう見てもお前の方が終わらせたくないだろ>>160とかwwwwwwww

166(○口○*)さん :07/03/06 17:04
未実装のソースみたけどGetV(V_MERTYPE,id)ってのが増えてたな。
これって他プレイヤーのホムと傭兵の区別つくんだろうか。
MERTYPE は1〜31の傭兵タイプ+プレイヤーやmobタイプって感じだと予想するが
ホム持ちが他人の傭兵を、傭兵持ちが他人のホムをそれぞれ区別できるかがちょっとわからん。
たいしたことじゃあないけど GetV(V_HOMUNTYPE,id)で傭兵のID入れたときにリフとアーチャーLv1が同じに見えやしないかというのがちょっと気になる。

あとSkillObjectに0 1の返り値できたみたいね。
成功で1なんだろうが不発や射程外や射線が通らない場合にどうなるかがわからん。
成否判定ならAttackにもつけりゃいいのに。

167(○口○*)さん :07/03/06 17:40
つまり、未進化羊と未進化鳥が居ると
進化後バニルからはどっちが羊かわからないじゃないか、と?
それだと両方もふもふして確かめるしかないな

まぁ、ホムはGetV(V_HOMUNTYPE,id)だから
GetV(V_MERTYPE,id)だと傭兵+PCしか引っかからんのんじゃないの?
正直きてみないと確かめようがないから何とも言えない

168(○口○*)さん :07/03/06 18:38
まあそうだなあ。
しかし先行で内部関数だけ更新されてたりせんだろうかな。

169(○口○*)さん :07/03/07 22:21
SkillObjectの返り値ってたぶん射線とSPでパケット送信をしたかしなかったかだけだろうね
今は無条件でパケットだけは送信してる(から毎ループの送りまくりで回線詰まるわけだが)
スキル自体のHitとか発動出来たかどうかなんかはパケット送ってから
しばらく後に実際に発動した後のレスポンスがサーバーから帰ってくるまで分からない
Attackにつけたとしても射程内でパケット送信できたか射程外でパケット送信しなかったかぐらいだと思う

170(○口○*)さん :07/03/08 03:19
テンプレ等一通り目を通したのですが、正確な答えが見つからなかったので質問させてください。

wikiなどに書いてありますが、カプリスにはディレイがあると思います。
しかし、先日カプリスを同じタイミングで2発打ち込んでいるホムを目撃しました。
当人に聞けば良かったのですが、放置だったらしく返答も得られず・・。

手動では再現ができないので、AIの領分ではと思うのですが
もしこのような行動を取り扱っているAIをご存じであれば教示して頂きたいと思い書き込ませて貰いました。
よろしくお願いします。

171(○口○*)さん :07/03/08 05:17
>>170
ケミが宝剣持ってたんだろ
手動で出来ない動作がAIでも出来る訳無い

172(○口○*)さん :07/03/08 05:38
きっとぴったり重なってバニルが二匹いたんだよ

173(○口○*)さん :07/03/08 08:41
アイン↑で良くなったが詠唱を画面外で始めた詠唱者が
自分の画面内に入ると突然ボルトが降ってくる様に見える
それ+カプリスが重なれば2発に見える

174(○口○*)さん :07/03/08 09:48
なるほど・・・宝剣の存在を見落としていました。
確かに画面外からだと詠唱バーなど見えませんしね。
勘違いによりよりとんちんかんな書き込みをしてしまい、スレ汚し申し訳ありませんでした。
回答してくださった方々、ありがとうございました。

175(○口○*)さん :07/03/08 09:52
宝剣手動ボルト発動
ディレイ中の殴り一発目でASボルト発動
バニルのカプリス発動

これが重なれば3連打だな

176(○口○*)さん :07/03/08 12:45
スレ汚しという言葉を使う奴にろくなのはいない

177(○口○*)さん :07/03/09 19:34
同じ画面内にいるケミのホムがボルト2色同時に出てたんだけど
どう見ても確殺に足りないダメージのボルト一発でクランプ死んでる
SS見てもカプリスとホムの通常攻撃分のダメージしか表示されてない
宝剣ボルトとカプリスと同時に出てたとしてダメージ表示重なるもんなのか?

178(○口○*)さん :07/03/09 19:51
重なる
以上

179(○口○*)さん :07/03/09 20:54
>>177
黄色ダメは対象一体につき1個しか出ない。
複数の黄色ダメの判定があった場合は最後に当たったものに即座に更新される。

DA前衛+WizでPTやったりするとわかる。
スレらしく行けばに宝剣ケミ+バニルとかな。

180(○口○*)さん :07/03/09 21:01
放置狩りスレでよく話題にでるけど、
AIで宝剣ボルト撃ったりできるらしいしそれのダメ重なってたりするんじゃ?
あとちょっと上で出てるみたいな状況とかね。

181((*'口')) :07/03/10 12:33
ところでさ、AI作ってみてるんだけどあったらいいなっていう機能とかってある?
なんか考えが纏まらなくなってきたから募集してみる

あと、あぷろだも教えてくれると助かったり

182((*'口')) :07/03/10 12:38
ってあぷろだ見つけてしまいました ゴメンナサイ見てませんでしたスイマセン

ttp://www.mmobbs.com/uploader/files/2265.zip
一応あげてみたけど、コメント付いてないから分かりにくいかもしんない

183(○口○*)さん :07/03/10 13:31
>>182
斬新でおもしろいけど今何が出来るのかサッパリわからないのに
要望とか出せるわけ無いぞ。Readmeぐらい添付してくれ。

184(○口○*)さん :07/03/10 13:51
設計は独自なのは理解した。
多少アルゴが読みづらいところはあるけど、まあモジュール・関数分けがかなり徹底してるので、
ソフト屋なら概要はつかめるか。
コメント少ないから、3ヵ月後にメンテできるかどうか知らないけどな(笑)

とりあえず、AI比較表での○×に相当するネタ&このAI独自のネタくらいが、ぱっと見でわかるような
資料はつけたほうがいいかと。
AIソースを読みなれてる人だって、そんな基本的なとこまで読もうなんて気はあんまり起きないよ。

185(○口○*)さん :07/03/10 19:36
とりあえずライブラリの綴りは Library だ。
ただ、まるごとオブジェクト構造になってんのは面白い。
やろうとは思ったけど互換性とめんどさでとてもやれんかった。

186((*'口')) :07/03/11 03:43
むん やっぱりがんばってコメントつけていくことにするーとした矢先に
AI作ってたメインPCが天に召されるとかどうなのコレッ!
でもまぁ うん 何ができるかっていうのは付けとくべきだったよorz

>>184
読みづらい部分ってどんなところ? きれいになるんだったら真似したい!

>>185
はっ スペルミスとなっ 他にもいろいろありそうな(笑)
そのあたりのツッコミも求ムよ!

今できることの一部をば
 Tracer    :TraceAI時 関数の呼び出しを見やすくするためにインデントして出力 (AI.lua内 TRACE_ON=trueが条件)
 PackageLoader:指定ミリ秒間隔で 指定ファイル数を読み込んで 全部読み終えるまで続ける
        初期ロード時の負荷分散が目的・・・なんだけど軽くなってるかなぁ・・・

 DecisionAI.lua: 索敵(画面内Actorの列挙)・判断(行動の選択)を担当
 BehaviorAI.lua: 行動(判断できまった行動に応じた攻撃や移動などの反応を取る)を担当
 AttackAction.lua:攻撃関連をまとめた
 MoveAction.lua: 移動関連をまとめた
 SearchAction.lua: 索敵関連をまとめた

ちなみにホムの種類ごとに読み込むファイル別にしてある(Main¥TacticalActionの中身のこと)

メインPCが直ったら補足してくよ(´・ω・`)

187(○口○*)さん :07/03/11 15:31
いや部品の説明はいらないんだ。
このスレならそんなのは読めばわかる人たちが集まってる。

問題のなのは「何を考えて何を目的に作られたか?」なんだ。
これは機能の羅列とにらめっこして推測するか作者に直接聞くかしないとなかなかわからなくて苦労する。
というわけで、その辺の解説ヨロ

目的を求めてやってきたなら「知らんがな(´・ω・`)」としか言えない。

188(○口○*)さん :07/03/11 17:08
関数分け、オブジェクトが〜 ファイル分け、ライブラリ読み込みが〜
ってのは最適解がある訳でもないし、各人の好みだから
正直、それだけ見せられても「へ〜」としか・・・ね

人数の多いPT戦でもスムーズに登録&判定が行える様に○○の〜とか
判定は××の関数で△△を併用して誤判定を〜とか
AIその物の機能、組み方じゃなくてホムの行動アルゴリズムとか
既存ホム機能の拡張、高速化、コンパクト化とか
何がしたくて、何をしたAIなのか、そのAIで何が出来るのかを書かないと

189(○口○*)さん :07/03/11 17:52
AIの書き方のみを突き詰める方向で、何ができるかは二の次とかじゃねーの?
見てないからしらんけど。

190(○口○*)さん :07/03/11 20:46
「何ができる」もしくは「何ができるようにしたい」のかわからないと反応しようがない。
見た感じただ無駄に分割してるようにしか思えない。
使う側のメリットが見えない。

191(○口○*)さん :07/03/12 09:43
ホム動かすのに9時間かかった。おれよく質問もせずがんばった。

192(○口○*)さん :07/03/12 11:38
こっこAIの原種進化鳥使ってるんですが、
移動モーションキャンセル使ってSP回復止めつつ戦うのと、
移動モーションキャンセル使わないでML織り交ぜつつ戦うのでは
どっちが強いんだろうか。根拠もなくML使った方がいいかなと思ってMLにしてるんだけど
モーションキャンセルとどっちが良いのか判断が・・・

193(○口○*)さん :07/03/12 11:55
単純にどっちが強いのかって事なら、前者にしかなりえない
と思うんだが、MLはオートスキル前提の話なの?

194(○口○*)さん :07/03/12 11:57
>>192
たぶんそれに対する適切な答えは、まだ誰も知らない。
いいだしっぺの法則で、実際に試して状況報告してもらえるといいんじゃないか。

195(○口○*)さん :07/03/12 14:39
鳥の場合、Fleeの高いMob(JKなど)に対してはモーションキャンセルした方が殲滅力は高かったです。
Defが低く、大量に倒すMob(婆など)に対してはMLの頻度を上げた方が最終的な効率は高くなります。

私の場合はMobのLvとAgi値からFleeを算出してその値を1つの条件に入れて
モーションキャンセルの使用/未使用を分岐しています。
現在は対象Mob情報から使用/未使用の条件分岐を行うのがAIの最低限の機能だと思いますね。

196(○口○*)さん :07/03/13 02:19
殲滅力に限ってはMLにHIT補正が無い以上敵FLEEの値は関係無い様に思えるんだが
むしろ大量に倒すMobに関してはスキル攻撃によるオーバーキルによる無駄が多くなると思う
オーバーキルに関しては戦闘時の前半部分のみ使えば解決するとして
殲滅力に関しては大体
・ML+モーションキャンセル無しの攻撃(SP回復のため)
・モーションキャンセルでの攻撃
の一定時間内でのダメージ量できまるかと
あまり1匹の戦闘に時間かからないならSP回復する前に倒しちゃう可能性あるからモーションキャンセルしたほうがいいか

とまぁ当方バニル使いで実験出来ないんだ.すまん
バニルは比較的楽なんだけどね(物理あんま効かない敵はキャンセル無しでカプリス頼り・残りSPで分岐)

197(○口○*)さん :07/03/13 03:00
バニルの場合は低Lvカプリスの意味が薄いからLv5固定でオーバーキルに注意する必要があるけど
フィーリルの場合は低LvML程、SP効率が良くなるから頻用するならLv1か2が多いはずだから
オーバーキル自体はさして気にならないよ(ML有無、キャンセル有無の差は別

単純に無キャンセル(ゼロ移動)+MLの手数とキャンセルの手数の比較になるだろうけど
進化未進化や原種亜種、何よりAIで大きく変わるから、鳥の場合〜で言うのはちょっと短絡かな
でも、混み具合とか環境の影響も受けるし個々に検証しても結局、その人の最適解しか出なさそう

198(○口○*)さん :07/03/13 09:52
モーションキャンセルはアオポPP前提機能だと思ってた

199(○口○*)さん :07/03/13 23:57
>>198
全ての敵にモーションキャンセルするならそうなるだろうね。
条件分岐させて必要なときだけキャンセルするようにできれば青PPは不要さね。

200(○口○*)さん :07/03/14 02:12
ttp://www.itmedia.co.jp/bizid/articles/0703/13/news053.html
>エラーメッセージをコピペする
>エラーメッセージのウィンドウをアクティブにして、[Ctrl]+[C]を押してみよう。

ふーん。

---------------------------
AI.lua error
---------------------------
cannot read ./AI/USER_AI/AI.lua: No such file or directory

---------------------------
OK
---------------------------

━━━━(゚∀゚)━━━━!!

201(○口○*)さん :07/03/14 03:14
目からじゃるごん(゚∀。)

202(○口○*)さん :07/03/14 08:40
これは知らんかった( д ) 。。

203(○口○*)さん :07/03/14 09:27
どうでもいいけど、AIのエラーって外部に吐き出せるぞ。

204(○口○*)さん :07/03/14 09:46
はじめまして。
こっこAIを使用しているのですが寝落ち防止機能が反映されなくて頭を抱えています。
以下のように変更をして見ました。

-- 寝落ち防止機能に関する変数 ----------------------------------------------------------------------------
AutoExit = true -- ●寝落ち防止を利用するか否か
ExitLimitTime = 60 -- ●寝落ち防止を何秒で実行するか(デフォは1800秒=30分
ExitCheckTime = 0 -- 寝落ちチェック間隔管理

これで60秒後には何も操作していなければクライアントが落とされると思ったのですが
落ちません。
どうかお知恵をお貸しください。

205(○口○*)さん :07/03/14 10:18
>>204
今最新版のソースを見てみたけど、その変更だけならうまく動くはず。
function ExitEvent()内、3593行目あたりにTrace文つっこんで、そこにきているか確認してみ。

ちなみに、ソースをいじっていないカスタマイズ値の変更だけなら、
ここで聞くよりはこっこ作者に聞いたほうが賢明だと思うが。

206(○口○*)さん :07/03/14 10:43
>>203
知ってるけど、最低限AI.luaのロードに成功しないとだめだし、
エラーログ未対応のAI使ってる人がここに質問しにきたときに
「とりあえずエラー文コピペしろ」と言えるのはでかい。

207(○口○*)さん :07/03/14 11:06
寝落ちするくらいなら潔くログアウトしろよ
オラその機能だけはよくわからんわ、放置前提のようで

208(○口○*)さん :07/03/14 12:22
おまえのヒネたくだらない主観はいらないんだよ。誰も必要としてない。

209(○口○*)さん :07/03/15 21:52
エラーメッセージの外部吐き出し導入してたが、
どうもすぐにエラーでてるって気がつきづらいし、
今回のこのネタみてエラーダイアログ出す方式に戻す事にした。

まじで感謝>>200

210(○口○*)さん :07/03/16 00:34
>>209
ダイアログ形式だと、100%エラー再現する状況になるとまともに操作もできないのは覚えてる?

211(○口○*)さん :07/03/16 02:05
まぁダイアログ消したりRoごと落とせば何とかなるし、
AI書き換えた後の動作確認では、別にまともに操作できなくてもそんなに困らないしね

212(○口○*)さん :07/03/16 10:09
俺は外部吐き出し系をおすなぁ・・・
いや、俺は自分でAI自作だから、別にダイアログ形式でも211氏に同意なんだが、
有名AIをいれてパラメータいじってるだけの人が、CTRL+Cも含めて冷静に対処できるか疑問。

まあ、最終的にはAI作者次第だが。

213209 :07/03/16 16:35
http://pc3merchant.net/ai/files/ai_070316.lua

まともに操作できないのも問題だからいろいろやってみた。

エラー出た場合はダイアログ1回だけ表示した後、
外部ファイルでフラグ立ててフラグがあったらセーフモードで起動みたいな感じになった。

しかし当初のCtrl+Cに感動したというのは役に立たなくなたt orz

214(○口○*)さん :07/03/16 16:40
流れをきって申し訳ないんだが、一つだけ教えて欲しいプログラムがある。
召還時にケミから南へ2マス自動移動させるにはどうしたら良いんでしょう?

テレポ時や召還時にケミと重なったままなのは綺麗じゃないんで切実に何とかしたい..orz

215(○口○*)さん :07/03/16 16:42
>>214
その程度もわからんのかっていうか、
そういうことやってる配布AIってないか?それの中身よく読めばわかるだろ。

216(○口○*)さん :07/03/16 16:49
>>214
細かいところ間違ってるかもしれないけどこんな感じ。

function AI(myid)
 if not IsInitialized then
  local x, y = GetV( V_POSITION, myid )
  Move( myid, x, y - 2 )
  IsInitialized = true
 end

 --以下、既存のAI()をお楽しみ下さい
 :

>>215
まあ雑談スレだし。

217(○口○*)さん :07/03/16 16:54
>>215
配布AIの中でいろんな種類があるけど、使いやすいと思ったのは一つだけで
それにはその機能がついてなかったんだよ。
プログラムはまったくの未知領域なのでここで相談。

>>216
ありがとうー。
早速追加して試してみる事にするよ。

218(○口○*)さん :07/03/16 17:31
IsInitializedのスコープってグローバルなん?

219(○口○*)さん :07/03/16 18:51
癌が配布してる元AIへのリンクが消えてて、非常に困ったが
クマさんのところに丁寧な解説突きで置いてあった(汗)

>>216を追加してみたがエラーがでる模様。
解説付き初期AIをにらめっこしながら見てたんだけど
「IsInitialized」この文の意味するところが分らない。
これって設定しないと機能しないよね?

約すと

ホムのID取得。
もし召還(?)されたなら
ホムの現在座標取得
目的地へ移動 取得座標からy-2(南へ2マス)
召還(?) = 有効
命令終了。

こんなところだとは思うんだけど…。

220(○口○*)さん :07/03/16 19:01
>>219
AI.lua内の上のほう。初期AIなら
------------------------------------------
-- global variable
------------------------------------------
MyState      = IDLE_ST  -- 最初の状態は休息
MyEnemy     = 0       -- 敵 id
とか書いてあるあたりに

IsInitialized = false

を追加する。以上。
解説 だれか たのむ

221200 :07/03/16 19:03
>>219
さっそくだけど、「とりあえずエラー文コピペしろ」
全角スペースのままコピペした疑惑が・・・。

・初期化しない変数は必ずnilが帰ってくる
 (変数名の打ち間違えでnilエラーになるの)
・not nil と true は同じ
・local宣言しない変数は全てグローバル >>218

222(○口○*)さん :07/03/16 19:03
つーか、そのAI作者さんに意見投げてみたら?
案外あっさり対応してくれるかもよ。
工体とかくまーだったらすまんが。

223(○口○*)さん :07/03/16 19:05
なんかミスった。

(変数名の打ち間違えでnilになるエラーはよくある落とし穴)

224219 :07/03/16 19:32
今試してるのはのは現在初期AI(くまさんの解説付き)
使ってるAIは去年の3月頃ので、現在はいろんな機能がつきすぎて
AI製作者に意見を相談しても豪華すぎるAIが返ってきそう...orz


>>221
>>216>>221を足してでたエラー文。
---------------------------
AI.lua error
---------------------------
./AI/USER_AI/AI.lua:910: `end' expected (to close `function' at line 67) near `<eof>'

---------------------------
OK
---------------------------

AIとにらめっこしてたら、ホムすっかり忘れて逃げそうになってた・゚・(ノД`)・゚・

225(○口○*)さん :07/03/16 19:42
>>224
ファイルの最後で(67行目のfunctionを閉じるための)endが足りない
# eof: End Of File

こうやってない?
function AI(myid)
 if not IsInitialized then
  --略
 end
function AI(myid) -- ここが余計

226(○口○*)さん :07/03/16 20:31
>>225
翻訳ありがとう! なにが書いてあるか訳して貰えると非常に理解しやすいです。
で、削除したら次のエラーが(汗)
---------------------------
AI.lua error
---------------------------
./AI/USER_AI/AI.lua:69: bad argument #2 to `GetV' (number expected, got nil)

---------------------------
OK
---------------------------


先のエラー、最後でfunctionを閉じる為のendが足りないらしかったので
逆に最後にendを追加したら無事に動かす事が出来ました。
やっとすっきり綺麗な召還になったよ。ありがとう・゚・(ノ∀`)・゚・

227(○口○*)さん :07/03/16 20:45
>>226
かなりおかしな事になってる。
書き足した部分とその周辺(60〜75行目あたり)をコピペして。

>逆に最後にendを追加
だめ、ぜったい。
エラー原因は文面通りの「endが足りない」ではなくて、
「endが必要ななにかを余分に書き足した」だから。

228(○口○*)さん :07/03/16 20:46
ここまでやっておいて、>>216が間違ってたらどうしよう・・・。
あってるよね?

229(○口○*)さん :07/03/16 21:02
>>228
理論的には合ってる。

>>226
情報を小出しにするといたちごっこになってややこしいから
いっそfunction AI(myid)周辺を全コピペしてみれ。

230(○口○*)さん :07/03/16 21:26
最後にendを追加したらエラーも出なくて、普通に動いてるんだけど
そんなにダメな行動なのかΣ(゚Д゚;

長いけど張りますね。使用は解説付き初期AI(くまー)。
普通に動いたから、自分用の解説とか足してのでエラー時と行が微妙に違うかも。


-- ホムの属性を保存するグローバル変数
-------------------------------------------------
-------------------------------------------------
MyState = IDLE_ST -- ホムの状態
MyEnemy = 0 -- 敵 id
MyDestX = 0 -- 目的位置 x座標
MyDestY = 0 -- 目的位置 y座標
MyPatrolX = 0 -- 偵察目的位置 x座標
MyPatrolY = 0 -- 偵察目的位置 y座標
ResCmdList = List.new() -- 予約コマンドリスト
MyID = 0 -- ホム id
MySkill = 0 -- ホムの使用スキル
MySkillLevel = 0 -- ホムの使用スキルレベル
IsInitialized = false -- 召還用の何か
-------------------------------------------------
-- スッキリ召還 南へ2マス --

function AI(myid)
if not IsInitialized then
local x, y = GetV( V_POSITION, myid )
Move( myid, x, y - 2 )
IsInitialized = true
end

---------- ●以下、命令処理関数● -----------

この状態で>>224のエラー
>>225を実行で>>226のエラーでした。

231(○口○*)さん :07/03/16 21:33
>>230
全然違う。まずプログラムの基礎勉強してきたらどうだね…。


-----------ここから-------------
if not IsInitialized then
local x, y = GetV( V_POSITION, myid )
Move( myid, x, y - 2 )
IsInitialized = true
---------ここまでを追加----------


まずその追加したfunction AI(myid)からendまでの部分は消去。
そのあと元AIの中を検索して、多分ずっと下の方に

function AI(myid)

という文があると思う。多分。
その直後に上の部分をコピペしれ。

232(○口○*)さん :07/03/16 21:46
>>231
function AI(myid)の項目が最初から用意してあったのね...orz
プログラムはさっぱりの未知の領域なので、基本すらさっぱりです。
通常、ゲームで遊ぶくらいじゃ触る事もなかったので(汗)


そして、>>231ではエラーが出て
>>216のようにendを追加したら素直に動きました。
たぶんend一個入れるのが正解なんだよね?

233(○口○*)さん :07/03/16 22:51
>>232
基本からというなら、endを一個入れる入れないじゃなくて
始まりと終わりを明確にさせるためだと思った方がいいとおもう
function AI(myid) <- 関数が始まった
 while(true)  <-繰り返しが始まった
  内容
 end  <-繰り返しが終わった
end   <- 関数が終わった
5つのことが始まったのに4つだけ終わりを指示とか
5つのことしか始まってないのに6つの事を終わらせようとしているとか
そういう時"にも"エラーが出る。 そういうことから覚えていくといいんじゃないかな?
ちなみに始まりを表す言葉はfunctionやwhileだけじゃないから
最近レスがついてないからここでも基本を教えてくれるかもしれないけど
やっぱり調べて学んで慣れてほしいかな?

以上自治厨のようなことを失礼した

234(○口○*)さん :07/03/16 22:55
luaてブロック終端のendがうぜーよな…
普通に量産の時流に乗って{〜}でいいのに


と、RigidChipsやってて思った。

235(○口○*)さん :07/03/16 23:20
>>217
やってることはどれだって大して変わらないんだから、
その機能が付いてる大手のを落としてきて、「どこであの機能実現してるんだろうなー」
って調べるところから始めるといいよ。

そうすりゃ自分でカスタマイズするのが楽しくなってくる

236(○口○*)さん :07/03/16 23:24
スレ全部読んでからレスしろよ俺

237(○口○*)さん :07/03/16 23:27
>>233
なにか凄く分りやすい説明です。

何か複雑な動きをさせたいわけじゃなかったので、ちょっと甘えてみました。
一年前には初心者向けの要望スレとかあったはずなんですが
もう無くなってて・゚・(ノД`)・゚・

もう少し弄りたくなったら、基礎から調べていきたいと思います。
色々ありがとうございました!

238(○口○*)さん :07/03/17 00:17
て言うかココがその元要望スレだ
語るスレ

語るスレ&雑談・要望スレ
↓ 語るスレdat落ち
雑談・要望スレ
↓ 語るスレに対する要望の意味だったからAI全般に関する意味で雑談スレに改名
雑談スレ



239(○口○*)さん :07/03/17 02:42
>>234
そこで「〜」で書いてって、最後に「end」へ一括変換ですよ

240(○口○*)さん :07/03/17 03:09
>>239
Luaの場合配列を巻き込むのでよろしくないぞ

241(○口○*)さん :07/03/17 07:24
スレ復帰の為、履歴からage

242(○口○*)さん :07/03/17 07:38
上がってねーーーーw

243182 :07/03/17 13:45
やっとPC直ったのでコメント書き込んでみた。
少しはマシになったんじゃないかなぁ。
ttp://www.mmobbs.com/uploader/files/2296.zip

ホム使って狩りしたことないから、ホムにさせたい事とか意見お願いします。

244(○口○*)さん :07/03/17 13:59
これはもう釣りとしか思えない。ひょっとしてギャグでいっているのか?

245(○口○*)さん :07/03/17 15:09
最初から>>231のように書けばよかったんだなぁ。orz

いまさらだけど状況が理解できた。

function AI(myid) -- >>226でここを消した
 if not IsInitialized then
  --略
 end
 --各種関数定義 省略
 function AI(myid)
  --略
 end
end -->>224,226でここを書き足した

function AI() って AI = function() と書き換え可能な代入処理だから
AI()の初回実行で各種関数と本命のAI関数自身を定義(AIは上書き)してる。
いわゆる自己書き換え。

そういう「最初の一回だけの処理」を定義する方法もあったのかと目から鱗だけど
無駄に複雑になるからお勧めはできない。

いまはそれでも動くだろうけど、かなりトリッキーなやり方だけに今後の修正が難しくなる。
特に>>219の腕では(この先スレでアドバイスもらっても)修正不可能な域になりそう。

>>234
endをうざったく思うときはたいていネスト深すぎるときだから
リファクタリングが必要っていう警鐘だと考えるといいよ。

246(○口○*)さん :07/03/17 15:34
>>243
悪いが182の目的がさっぱりわからん。
実地テストを他人に丸投げってどうなのよ…。

プログラム的な意味や構成はなんとなくわかりやすくなってるけど、そういう意味じゃなくて
もっと端的にどういう時に何をするとか、そういうリストがないとどういう見方でAIに接したらいいかわからない。

あと分割結構なんだが、こういう時に誰かが悪意のある改変を行って再配布とかしでかすと
原因箇所を見つけにくかったりする場合もあるよね。
本気で配布やりたいんだったらあぷろだとかじゃなくてレンタルサーバーとか借りてやる方がよくないか。

247(○口○*)さん :07/03/17 17:31
やっぱそうしたほうがいいかな

248(○口○*)さん :07/03/17 18:08
配布方法はかなりそうしたほうがいい。
最近のアップローダは普通に拡張子偽装のアカハックトロイが仕掛けられてるからな。

あと、ケミ1人ホム1匹作ってメタリンと戯れてきてくれないか?
そうすれば自然に何をさせたら便利かわかるはず。

249(○口○*)さん :07/03/17 19:15
いま商人育ててるとこなんよ。 アルケミになるの来月になりそう(´・ω・`)
まぁ適当にスルーしといてください

250(○口○*)さん :07/03/17 19:21
暇だからって変なのに触って遊んじゃダメ
春なんだからこれからいっぱい涌いてくるよ

251(○口○*)さん :07/03/20 06:23
OD2でホムと狩しててちょと気になったことが
ある一定距離にPCがいるとゼノークなどノンアクティブを攻撃しない
たげられてない敵は攻撃しないホムが居るのですが
そういった設定は可能なのでしょうか?

252(○口○*)さん :07/03/20 06:25
>>251
可能だからそういうホムが存在するんだろう?
お前は何を言っているんだ。

253(○口○*)さん :07/03/20 07:29
ちょと質問の仕方が悪かったごめん
どうやったらそうできるのか知りたかったのですよ

254(○口○*)さん :07/03/20 07:36
そんなもん

・画面内のPCから一定距離内に居るMobはターゲットしない
・指定範囲内に他PCが存在する場合はノンアクティブ化

のどちらかだろ。
具体的にどういうコードを書けばいいのっていう質問なら
今お前さんのAIがどんな構造なのかわからないと答えられない。
上の条件を見てどういうものを書いたらいいかわからないようなら
似たような機能を持つ配布AIを探して該当箇所を参考にしれ。


というか、もうちょっと質問は整理して自分が何を聞きたいのか相手に伝わるようにしてくれ。

255(○口○*)さん :07/03/20 07:37
あちこちで公開されているAIなら、そういう機能がないほうが珍しい。
質問の仕方を見るに自分でプログラムを書くほどのスキルはなさそうだから、
そういう他AIを導入するのがいいんじゃないか?

公式AIになんかこだわりがあるんなら、がんばってみてくれ。

256255 :07/03/20 08:00
これだけだとちょっと冷たすぎだから、ちょっと補足。
標準AIなら GetMyEnemyB()をちょっといじればできる。
 for i,v in ipairs(actors) do
  if (v ~= owner and v ~= myid) then
   if (v >=100000 ) then return 0 end -- この一行追加
   if (1 == IsMonster(v)) then
    enemys[index] = v
    index = index+1
   end
  end
 end

これだけでとりあえず「第三者が近くにいたらパッシブ」になる。
ただしこれは超簡易で、PTとか他ホムとかに意味がない。
他AI使ってるなら、そのAIの名前を書くことからだ。

257255 :07/03/20 09:06
ID違うけど255。
ごめん、上記内容だとちょっとダメだわ。これだと第三者が近くにいると一切反撃もしなくなっちゃう。
 local pcflg = 0 -- この一行追加
 for i,v in ipairs(actors) do
  if (v ~= owner and v ~= myid) then
   if (v >=100000 ) then pcflg = 1 end -- この一行追加
   if (1 == IsMonster(v)) then
    enemys[index] = v
    index = index+1
   end
  end
 end
 if ( pcflg ==1 ) then -- この一行追加
  result = GetMyEnemyA() -- この一行追加
  return result -- この一行追加
 end -- この一行追加
これでどうだ。

258(*○口○)さん :07/03/23 10:11
function GetMyEnemy ()
    dis = 5 -- 接近するPCによりノンアク化する距離
    if IsOutPlayer (GetV (0, 0), dis) then
        return GetMyEnemyB()
    else
        return GetMyEnemyA()
    end
end

function IsOutPlayer (id, dis)
    dis = dis or 15
    for i,v in ipairs (GetActors ()) do
        if (v ~= GetV (0, 0) and IsPlayer (v) == 1) then
            if (GetDistance2 (id, v) < dis) then
                return false
            end
        end
    end
    return true
end

function IsPlayer (id)
    return (100000 < id) and 1 or 0
end

春先は何時も眠いな

259(○口○*)さん :07/03/23 20:42
意味はわかるけど一応お約束なんだし定数使っとこうよ。
あとdisにわざわざ5代入してから渡すはなくない?

友達登録があるAIだとIsOutPlayerにプレイヤーの除外は友達もやっとく処理も要るかも。

260(○口○*)さん :07/03/23 22:23
蜃気楼最適AIってどんな感じだろう

・極限まで軽く
・主人を守る
・横殴りを防止する必要が無い

GVAIみたいになるんだろうか

261(○口○*)さん :07/03/24 00:45
古ぽりんのときは主人の標的にした相手に近接、攻撃ってだけのはやったな。
あの人ごみだとGetActors使うと止まったしそんなもんだとは思う。
でも、あそこでホム使うのはブーイングを覚悟しないといけない。

262(○口○*)さん :07/03/25 15:28
ちょっと相談。
http://alchemist.s214.xrea.com/index.php?Lua%2FAI
で開発寄りの情報をまとめてるんですがよければ助言もらえませんか。
特になければこれでケミテンプレのほうに公開しようかと思うのですが。

263(○口○*)さん :07/03/25 15:42
>>262
ちょっと意味がわからなかった。
アルケミテンプレにページが存在する以上すでに
「アルケミテンプレに公開されてる」と思うんだけど、
Lua/AI以下の感想がほしいってことでおk?

264(○口○*)さん :07/03/25 16:02
指示待ち人間なんだろう。客観的な判断をしてもらうと言いつつだから自分の責任じゃないと一生言い訳するタイプ

265(○口○*)さん :07/03/25 16:33
>>263
オープンにしてメニューからジャンプできるように、って意味でした。すいません。
現在は直接入力や一覧からでないと行けないはずです。

266(○口○*)さん :07/03/25 16:37
>>263
そうですね感想や意見などもらえればありがたいです。
まとめ方が自分なりなので実際見やすいのか使えるのかがよくわからないので。

ここまでの雛型は私がほとんど書き込んだので責任があるといえば私にあります。

267(○口○*)さん :07/03/25 16:38
まずは日本語の勉強した方がいいんではないだろうか

268(○口○*)さん :07/03/25 16:53
そういうことね。
recentに並ぶから「メニューからジャンプできる」気もするけどw

テキトーでいいよ。
Lua/AIしか見てないけど、気になったらその都度勝手に直すし。
たとえたたき台にしかならなくとも、内容のあるページを作ったこと自体は
GJなんだから、もっと誇れ。

269(○口○*)さん :07/03/25 22:43
拙いところを直せるのがWikiの強みですしあまり小難しく考えずにいきます。
ありがとうございました。

270(○口○*)さん :07/03/28 03:59
じほ

271(○口○*)さん :07/03/30 11:20
コッコAIのアクティブに関するところで
SPは50%以上のときはアクティブにしようと思って
変数のActiveHPのHPの所をSPに変えても動きませんでした
(じっとしたまま、タゲられても反撃無し)
こういう場合は新たに追記するしかないんでしょうか?

272(○口○*)さん :07/03/30 12:09
>>271
見てきたけどそれはだめでしょう
そもそもActiveSPって変数が用意されていない上に
ただ全部置換しただけじゃ実装はできないよ
HPを無視して、SPだけでいいっていうならばVer4.64
104行目くらいに
ActiveSP = 40
を追加して
2113行目の
if GetPerHP(MyID) > ActiveHP then

if GetPerSP(MyID) > ActiveSP then
と書き換えればできると思うよ (未テスト)
HPもSPも判定したいってことになると
if GetPerHP(MyID) > ActiveHP and GetPerSP(MyID) > ActiveSP then
こんな感じでできるんじゃないかな?

273(○口○*)さん :07/03/30 12:58
蜃気楼専用AIで少しでも軽くできないかと目論んでいるわけですが

1. AI()から毎回hoge()を呼び出しその中で条件判定して実行するしないを決定
2. AI()内で条件判定して一致したらhoge()を呼び出し実行
3. AI()内で同内容の処理を完結

LUAにおける123の実行速度に違いはある?

274(○口○*)さん :07/03/30 13:38
>>272
どうもありがとう
SPだけ判定したいので前者のでやってみたいと思います

275271 :07/03/30 13:55
>>272
大成功です。ありがとうございました

276(○口○*)さん :07/03/30 14:13
>>273
「インライン関数」についてぐぐって。
Luaの関数呼び出しも他言語の関数呼び出しとは大差なく、
速度が求められるC++などでそういうものが存在するというのが答え。

ただ手間はかかるし効果もLuaでは相対的に薄い。
考えるのは、アルゴリズムの面で打つ手がなくなってからでいい。
最適化は「軽くする」ではなく「重いところをなくす」と意識しよう。

forループ減らすとか、(その状況で)常にfoo(1)は2が返ってくるなら
2をキャッシュするとかが基本。

運用面絡みだけど、そもそも能動的な索敵しないというのも軽くなる。
手動指定mobのみを叩くとか、主人・自分のHPが減った瞬間だけ
GetActorsとそのループを回してmobを特定、狙い続けるとか。

コルホムラグはよく知らない。

277(○口○*)さん :07/03/30 22:41
あと主人のタゲを優先するとかね。
重い場合はGetActors止めるほどの重さなら仕方ないけど
その取得間隔を空けるとかである程度は対処できることもある。

278(○口○*)さん :07/03/31 19:25
普段主人のタゲ優先だけど、モンスターが寝ている、石化している場合は後回しにするようには出来ませんか?
状態異常の判別なんて出来ないのでしょうか

279(○口○*)さん :07/03/31 19:29
>>278
>状態異常の判別
出来たら、比較表に「氷割り機能」という項目があっただろうね。

280(○口○*)さん :07/03/31 22:00
>>278,279
原則として状態異常は判断できません。
ですが、擬似的に凍結判断をしているAIはいくつかあります:可能な限りAIとか、Glenelgとか。
それらは特定条件限定で「モーションがSTAND(ただたっているだけ)」の敵を「状態異常で止まっている」とみなしている。
おおざっぱに言うと
「それまで普通に戦闘していた敵が、急に攻撃をやめて立った状態になるのは、凍結したんだよね」
「無条件で上記判断するのでは誤判定だらけだから、近くで味方Wizが長い詠唱してたとか、手動指定とか、追加条件があればいいよね」
・・・という感じ。

ともあれ、完全に誤解のない自動判断は無理だと思います。

281(○口○*)さん :07/03/31 22:01
特に最近は重くなっててラグってると
その間はずっとSTANDが取得され続けるから、重いときほど誤認も多いと思うね。

282(○口○*)さん :07/03/31 22:33
ラグってるときは、誤認してもどうせうごけないけどな(笑)

283(○口○*)さん :07/03/31 22:52
フラグ立てて段階的に判定するようにしてると、ラグ明けに変な動作になると思うお

284(○口○*)さん :07/03/31 23:42
状態異常がいつ解除されるかわからないので、たとえ一時的に除外したとしても、
それが動き出したら「状態異常解除」と判定しないわけにはいかない。
結局、ラグ明けに「敵が動き出す」のを見て元に戻るだけだと思うけどね。

どっちにしても、本来取れない状態異常を妥協して判断しているので、
自動判断させると誤認が避けられないのは>>280に書いたとおり。
やりたくなければ使わなければいいだけです。

285(○口○*)さん :07/04/01 02:29
でも反応のなさそうなmobの優先度を下げるというのはアリかもしれない。
優先度を下げる(後回しにする)だけだから、誤認しても大したリスクはないよね。

ふと。
ホムは基本的に、「Ctrlロックで、ノックバックでSG外に引っ張られてもそのまま」
といういわゆるダメ前衛の状態になるわけだけど、こうすればだいぶ改善するような気がする。
・友達のWizが詠唱/スキルモーションを起こした
・その後に画面内のmob数匹(2〜3ぐらい)が>>280のようになった
→SG発動とみなして、一時的に行動範囲を主人周辺の狭い領域にする

主人もダメ前衛だったらどうしようもないけどw

286(○口○*)さん :07/04/02 19:25
SGでのすべりはどういうモーションになってんだろ。
移動じゃなくてダメージとスタンドが交互に出ながらすべってるならある程度は判別できるかもしれない。

287(○口○*)さん :07/04/03 18:56
クマAIみたいな奴でバニルの進化後対応してるようなAIってありませんかね?

288(○口○*)さん :07/04/03 19:04
漠然としすぎてて何がいいたいのかわからん。
「バニルの進化後対応」って何をしたいんだ?
くまーの更新がないから替えが欲しいってのはわかるが。

289(○口○*)さん :07/04/03 23:38
>>287
新化バニル動かせるか、っていうだけなら対応してないほうが少ない。

290(○口○*)さん :07/04/06 22:28
塔のラッシュ時にGetActorsの処理時間計測してみたが0〜30msだった。
やっぱ負荷になってんのはクラでの表示の方なのかな。

291(○口○*)さん :07/04/11 13:05
ケミのトマホークってホムのAI絡みで自動で使える?
mobが沸くと即座にトマホーク連打するから、そこに居るようで
でもアイテム完全放置で一歩も動かなくて、そこに居ないようで、挙句死んだまま放置されてるから不思議なんだけど

292(○口○*)さん :07/04/11 13:11
使えます

293(○口○*)さん :07/04/11 13:15
ありがと
なぞが解けますた

294(○口○*)さん :07/04/11 17:06
街中で植えたきのこや草を端からカプリスで刈り取るAIを作りたいのですが

GetActors () --画面内を探して
id = GetV(V_HOMUNTYPE,id) --IDが
if 1078 <= id and id <= 1085 then --きのこや草だったら
SkillObject (MyID,8014,5,id) --デストロイ
end

こんな感じであってるでしょうか

295(○口○*)さん :07/04/11 18:36
GetActors()だけかましてもループまわさないとIDは取れないから

local actors = GetActors ()
for i,v in ipairs(actors) do   -- 画面内を探して
  id = GetV(V_HOMUNTYPE,v) -- IDが
  if 1078 <= id and id <= 1085 then --きのこや草だったら
    SkillObject (MyID,8014,5,id) -- カプリス
    return  -- おしまい
  end
end

このように。
個人的な意見を言わせてもらうなら、本体からの距離と残りSPとスキルディレイも条件分岐に入れたいところ。

296(○口○*)さん :07/04/11 18:57
ありがとございます、SPやディレイは考えて無かったです
条件分岐などはいくらか分かるのですが基本構文がなってなかったみたいですね


あとついでなのですが青い草と輝く草の場合しないようにするには
if 1078 <= id and id <= 1085 then

if 1078 = id or 1080 = id or 1081 = id or 1082 = id or 1084 = id or 1085 then
のように一つ一つ指定しないとだめでしょうか

297(○口○*)さん :07/04/11 19:17
>>296
とりあえず
= 代入式(Luaでは文法上返値なし)
== 比較(一致)演算子(返値は真偽値)

orで数珠繋ぎにするのは理解はしやすいけど保守性最悪だから
こうするのがお勧め。
exclusions = {
 [1078] = true,
 [1080] = true,
 [1081] = true,
 [1084] = true,
 [1085] = true,
}
のようにあらかじめ定義しておいて
if exclusions[id] then

exclusionsに未定義のidならnilが返るから、if文内は実行されない。
trueを指定したidなら、id == 1078がtrueを返すようにtrueが返るので
実行される。

298(○口○*)さん :07/04/11 21:06
意見を踏まえてみて

local actors = GetActors ()
for i,v in ipairs(actors) do   -- 画面内を探して
  exclusions = {
 [1078] = true,
 [1080] = true,
 [1081] = true,
 [1082] = true,
 [1084] = true,
 [1085] = true,
}  -- きのこ定義
  id = GetV(V_HOMUNTYPE,v) -- IDが
  if exclusions[id] then --きのこや草だったら
    SkillObject (MyID,5,8013,id) -- カプリス(ID直しました)
    return  -- おしまい
  end
end

こんな感じにしてAIの最後の方に挟み込んでみましたが、エラーは出ないものの反応がありませんorz
どこかで間違っているのでしょうか

299(○口○*)さん :07/04/11 21:42
>>298
SkillObject (MyID,5,8013,id) -- カプリス(ID直しました)

ここの4つ目の引数はidじゃなくてv

300(○口○*)さん :07/04/11 21:50
vとidじゃなくてmobIdとmobTypeにでもしたほうがわかりやすいんじゃない?

301(○口○*)さん :07/04/11 22:19
exclusionsの定義はグローバルにするか
せめてforの外側にしたほうがいいと思うよ

302(○口○*)さん :07/04/11 22:30
先生! できるようになったのですけがきのこが一撃で倒せませんorz
いつのまにこんなことに……

ディレイ中やSPの無いときにちょっと重たくなる気がするのですがこれはディレイ中でも
「撃て撃て撃て撃て撃て撃てぇEEEEE」って命令が行ってるせいですよね

あとforの外側に定義を置いたらいくらか軽くなりました

これからも頑張ってきのこってきます、ありがとうございました

303(○口○*)さん :07/04/13 02:08
>>297
それ処理が速そうでいいですね。
非常に参考になりました。
でもそれだと定義部分が書きづらいので定義部分は

-- 攻撃対象Mob
TARGET_MOBS = {
  1122,
  1123,
  1124,
  1125,
  1126,
}

みたいに定義して関数の外で

tbl_target_mobs = {} -- 攻撃対象Mobテーブル

do
  -- 内部テーブルの初期化
  function InitTable(table, list, value) -- listの内容のインデックスの値をvalueで初期化
     for i,v in ipairs( list ) do
      table[v]=value
    end
  end

  InitTable(tbl_target_mobs,TARGET_MOBS,true) -- 攻撃対象Mobテーブルを初期化
end

として内部テーブルへ変換するようにした。
メンテもしやすくてイイ感じ
ありがたや〜

304(○口○*)さん :07/04/13 05:58
ぶっちゃけ植物栽培での草刈用ならアクティブにするだけでよさげだが…
どうせカプリスで一撃にならないのだし。

ピタゴラスイッチみたいに手段に凝って目的に遠回りになってない?

305(○口○*)さん :07/04/13 12:37
スティルしながらだと何本植えたかわからなくなるから一定数になったらぐるぐる回る、みたいのはやってたな。
きのこなんてCRでまとめて潰すなりすればいんじゃない。
グリード持ちいないなら手動で拾える数だけ植えてからやればいいし。

306(○口○*)さん :07/04/13 14:19
>>304
カプリスで一撃にならないのを忘れていたらしい

307(○口○*)さん :07/04/13 20:26
敵のタゲを絶対に直に引き受けずに逃げ回るAIを下さい!

308(○口○*)さん :07/04/14 10:25
逃げ回る機能を持った配布AIの設定を変えて
HP100%で逃げ始めるようにすればいいと思うよ

309(○口○*)さん :07/04/15 01:04
303で書き込んだ者です。
質問なのですが、

ある目的でデフォルトAIを編集し、Ailib.lua等から必要な関数だけもってきてカスタムAIを作りました。
で、このAIは特定の敵しか叩かないように索敵等で全てMobをチェックし指定した種類の敵しか殴りません。
まぁ大体は上手く動いてるんですが、一つだけ気になることがあったので調べてみると、

・Mobが一匹だけホムの隣に居るとき
・上記状態でそのMobにタゲられてダメを最初に受けたとき

この時になぜか一発だけMobを叩いてしまいます。
(そのあとは不思議とAIの作り通り棒立ちのままです)
調べるためにAttack()の前でMobのV_HOMUNTYPEをチェックしてトレース入れて見たけど
Attack()は一回も通ってないし、
Attack()をまったく呼ばないAIにしてみたりしましたがなぜか叩いてしまいます。

仕方ないので、

function AI(myid)
end

だけのAIにしてみたけど・・・・・ダメでした。
Attack()が無いのに攻撃するものなのでしょうか?

ご教授願いたいです。

310(○口○*)さん :07/04/15 01:08
>>309
それはうちもある。
どうもわけわからんけど、たまーにダメージを受けた時に無条件で反撃したりするくさい。
理由は謎。その空AIでも起きるのは俺も確認した。
多分どうしようもないんじゃないかな。

311(○口○*)さん :07/04/15 02:27
それどうにかして直したいよなあ
無視設定したラウレルに手を出してしまうのがかなり危ない

312(○口○*)さん :07/04/15 03:05
ホム実装直後とかに気になっていたけど結局原因判明しなかったやつだね・・・
初期のペットAIやら7行やってた頃でAIに作り込んでない攻撃が出ると
敵を倒した後でも追尾含め能動動作は全部停止してAlt操作しないと
通常の動作には戻らなかったけど、あれから若干動作変わったのかな?

ホムが移動動作中に攻撃受けると勝手に反撃しやすかったけど
頻発って程でも無かったのと、AI自体が停止してる可能性もあって
ほぼAIから対処出来ない(難しい)から主人が対処するで終わった
どうしても反撃したくない敵にタゲられた時は移動しないとか
大雑把な最悪回避の対処しか無いんじゃないかな

313(○口○*)さん :07/04/15 11:32
>>310,311,312
やっぱり昔からそういう動作するんですね。

こちらの要望としては無視すべき敵のMHを走り抜けたいのに
ホムがなんか反撃して置いてけぼりになっちゃうんですよ。
ケミ全速で走ってたら、ホムだけ敵を迂回して歩いても結果は同じだし。
(唯一リーフならホムだけ足が速いって条件を生み出せますけど・・・)

これでで行ける!と、思ってたのにシステム側の問題で出来ないなんて、
プログラム組む者としては真に悔しいです。(MSのOSにはありがちw)
まぁ、仕様なら仕方ないですねっ。
でも引き続きこれの回避方法も模索してみます。

ありがとうございました。

314(○口○*)さん :07/04/15 11:41
>>313
あぁ、馬鹿でした。

>(唯一リーフならホムだけ足が速いって条件を生み出せますけど・・・)

これ間違いですね。
アイテムとか使えば他のホムでも可能ですね。
ケミが加速状態でホム呼び出せば加速切らせればいいから、血斧とかでもできるんだよな。

315(○口○*)さん :07/04/21 21:57
       ∠Y"´゛フ
       ;' ゝ-,,ェ)  ・・・・、もフ・・・。
     ゛;(ノ    ';つ 
      ''と_)_)  旦

316(○口○*)さん :07/04/23 22:43
上げないと保守にならないんじゃなかったっけ?

317(○口○*)さん :07/04/23 23:07
人はそれを迷信と呼ぶ

上がっても下がっても書き込みさえあればおk
落ち着いて考えれば、不要な削除対象になるスレは
下がってるスレじゃなくて、書き込みの無いスレだって判るはず

318(○口○*)さん :07/04/23 23:30
いや、そこまで張り付いて見てないし…

319(○口○*)さん :07/04/24 00:06
まあどうせすぐ落ちるからあげようがさげようがどっちでもいい。

320(○口○*)さん :07/04/24 03:33
>>316-318
そんなことしなくても、LiveROトップにこう書いてあるんだな。
>■作成可能スレッド数に上限はありませんが、最終書き込みの古いスレッドからdat落ちします。

よくわからないのはRO板での「保守sage」。

321(○口○*)さん :07/04/25 02:10
過去スレ探してもぐぐっても見当たらなかったので。。。

10万ルール(100000 - MobID = 死体ID)って今は利用価値なしでしょうか?
当時(去年の今頃)の話を見てると、

「死体ID == 100000-生存時のID で、同座標」
「MOTION_DEAD があまり当てにならないので、上記ID計算で死体判定」

ってことみたいなんですが、今現在、プロ下水で調べた範囲では
「死体==100000-ry が成り立つときは常に MOTION_DEAD」
「GetV(V_POSITION, 100000-生存時のID) は -1, -1 を返す」
でした。

この辺、去年の今頃と変更になってますか?

# ホムだけが殴って倒した敵が死体になってから、
# 見えなくなるまで動かなくなることがある点が気になって10万ルールに行きついたんで、
# これの回避策調べ中です。。。とくにプランクトンとか、別マップではオークゾンビが顕著

322(○口○*)さん :07/04/25 09:23
>>321
とりあえず現状調査&報告おつ。
もともと10万ルール自体が、「調べたらそういう結果になっていた」という経験からきた事実。
絶対にそうなると仕様明示されていたものでもないので、変わっていてもおかしくはない。
もし今回調査してそうなっていなかったのなら、どこかでRO側の管理方法が変わったんでしょう。

対処方法検証のためには、画面に他の敵がいない状態で、敵が死んだ瞬間に画面内にあるActorのIDリストを作って
比較してみるのがいいかと思う。
10万ルール自体がこうやって確認したことで発見されたことだし。

323(○口○*)さん :07/04/25 11:11
>>321
即湧き判定しようかと思ったけど投げた。
MOTION_DEAD拾ったIDと時間を記憶しといて2秒いないにその反転ID(10万-ID)が現れたら即湧きだから
ターゲットがこっちを狙っててもATTACK_STを一端解除とかそんなのは考えた。

>「GetV(V_POSITION, 100000-生存時のID) は -1, -1 を返す」
つまりモーションは死体で座標が-1,-1ってことかな?
クライアントからデータ拾ってるみたいだから死体オブジェクトが存在してるときは座標も出てそうなんだけど。
ひょっとして画面内に存在してないIDをGetVにつっこんだから-1返っただけとかではない?

324(○口○*)さん :07/04/25 17:40
>>323
> ひょっとして画面内に存在してないIDをGetVにつっこんだから-1返っただけとかではない?
ずばり、っぽいきがしてきました。


>>322
> 対処方法検証のためには、画面に他の敵がいない状態で、敵が死んだ瞬間に画面内にあるActorのIDリストを作って
> 比較してみるのがいいかと思う。
追試いってきます。

# OD1 も 下水2 も他に敵が居ない状況つくりにくい... プランクトンなら伊豆あたりかな

325(○口○*)さん :07/04/25 18:47
追試結果。。。
何も変わっていないようでした。お騒がせしてすんません。
これだけじゃあれなんで、詳細
function AI(myid)
MyID = myid
if (GetDistanceFromOwner(MyID) > 3) then -- DESTINATION_ARRIVED_IN
MoveToOwner(MyID)
end
dumpActorsState()
end
MotionName = {
[MOTION_STAND] = "STAND",
(ry
}
function dumpState(id)
local x, y = GetV(V_POSITION, id)
local m = GetV(V_MOTION, id)
local target = GetV(V_TARGET, id)
local type = GetV(V_HOMUNTYPE, id)
if MotionName[m] then
m = MotionName[m]
elseif m == nil then
m = "nil"
end
TraceAI(string.format("id=%5d, x=%3d y=%3d MOTION=%-7s target=%5d type=%5d IsMob=%d",
id, x, y, m, target, type, IsMonster(id)))
end
function dumpActorsState()
owner = GetV(V_OWNER, MyID)
for i,v in ipairs(GetActors()) do
if v ~= owner and v~= MyID then
dumpState(v)
end
end
end

326(○口○*)さん :07/04/25 18:56
id=59456, x= 69 y=116 MOTION=DAMAGE target=xxxxxx type= 1153 IsMob=1
id=40544, x= 69 y=116 MOTION=DEAD target=xxxxxx type= 1153 IsMob=1

となりました。んで、MOTION が DEAD にもかかわらず GetV(V_TARGET, mob)==主人 が残るので、
「主人が攻撃された」判定となり、死体に張り付いていたようです。

一応攻撃時に MOTION==DEAD 判定は入っているのですが、
IDLE -> ATTACK -> IDLE -> ATTACK を繰り返していて、
結局死体に張り付いていた、という結果でした。

お騒がせしました

327(○口○*)さん :07/04/25 19:19
クマAIのAI編集ソフトで編集し、ホムを起動するとエラーが出て画面が真っ黒くなりホムが出せなくなってしまいます。
エラー内容は
attempt to call a nil valueです。
USER.AIファイルにはAIが入っています。
対処の仕方わかる方いらっしゃいますか?

328(○口○*)さん :07/04/25 19:35
attempt to call a nil value
これはエラーの最後のお約束みたいなもんだから判断できない。
その直前にもメッセージ出てたはずだ。
そっちのを乗せてくれないとわからない。

329(○口○*)さん :07/04/26 10:24
rhapsoAIでモーションキャンセルの方法教えてください

330(○口○*)さん :07/04/26 14:05

         ,. -‐'''''""¨¨¨ヽ
         (.___,,,... -ァァフ|          あ…ありのまま 今 起こった事を話すぜ!
          |i i|    }! }} //|
         |l、{   j} /,,ィ//|       『ホムにスキルを使わせまいと階段で座っていたら
        i|:!ヾ、_ノ/ u {:}//ヘ        いつのまにか主人のモーションに関係なく
        |リ u' }  ,ノ _,!V,ハ |         ホムがスキルを使えるようになっていた』
       /´fト、_{ル{,ィ'eラ , タ人        
     /'   ヾ|宀| {´,)⌒`/ |<ヽトiゝ       な… 何を言ってるのか わからねーと思うが 
    ,゙  / )ヽ iLレ  u' | | ヾlトハ〉        おれも何をされたのかわからなかった…
     |/_/  ハ !ニ⊇ '/:}  V:::::ヽ        頭がどうにかなりそうだった…
    // 二二二7'T'' /u' __ /:::::::/`ヽ
   /'´r -―一ァ‐゙T´ '"´ /::::/-‐  \    催眠術だとか超スピードだとか
   / //   广¨´  /'   /:::::/´ ̄`ヽ ⌒ヽ    そんなチャチなもんじゃあ 断じてねえ
  ノ ' /  ノ:::::`ー-、___/::::://       ヽ  }
_/`丶 /:::::::::::::::::::::::::: ̄`ー-{:::...       イ  もっと恐ろしいものの片鱗を味わったぜ…

331(○口○*)さん :07/04/26 15:47
うん、だいぶ前からそーなってるね

332(○口○*)さん :07/04/26 18:59
ASPD低下パッチの時からだよな。

333(○口○*)さん :07/04/27 01:17
>>329
あれ?最新のにモーションキャンセルが入ってなかったっけ?
それが気に入らないなら最新版の"AI.lua"ファイルの610行の辺あたりくらいを

if SKILL_FLAG == 0 then
Custom_MotionCancel() -- 自作のモーションキャンセル
Attack(MyID,MyEnemy)
-- MyDestX,MyDestY = GetV(V_POSITION,MyID)
-- Move(MyID,MyDestX,MyDestY)
end

とでも変更して、ファイルの末尾にでも以下を追加すればいい、長くなるので手抜き版だけどね。

_CUSTOM_MOTIONCANCEL_MOVEFLAG = true -- 移動キャンセルフラグ
_CUSTOM_MOTIONCANCEL_MOVEPOS = 0 -- 移動先位置制御

function Custom_MotionCancel()
local zx,zy

if _CUSTOM_MOTIONCANCEL_MOVEFLAG then
-- 移動キャンセル (敵の座標の周りを時計周りしながら攻撃)
zx, zy = GetV( V_POSITION, MyEnemy )
if _CUSTOM_MOTIONCANCEL_MOVEPOS == 0 then
zy = zy+1
_CUSTOM_MOTIONCANCEL_MOVEPOS = 1
elseif _CUSTOM_MOTIONCANCEL_MOVEPOS == 1 then
zx = zx+1
_CUSTOM_MOTIONCANCEL_MOVEPOS = 2
elseif _CUSTOM_MOTIONCANCEL_MOVEPOS == 2 then
zy = zy-1
_CUSTOM_MOTIONCANCEL_MOVEPOS = 3
elseif _CUSTOM_MOTIONCANCEL_MOVEPOS == 3 then
zx = zx-1
_CUSTOM_MOTIONCANCEL_MOVEPOS = 0
end
Move(MyID,zx,zy)
end
end

334(○口○*)さん :07/04/27 03:53
自作AIの動きを良くするためにAIのmove()で一回に移動できる距離について調べてみた。

デフォルトAIや配布されているAI等で一回での移動距離の限界を判別する為に
if (math.abs(x-curX)+math.abs(y-curY) > 15) then
-- 目的地が一定距離以上なら (サーバーで遠距離は処理しないため)

を利用しているみたいです。
この条件で引っかかるとAIにもよりますが中継移動(2回のmoveに分割)してたり、
適当なx,y入れてたり、移動しなかったりしてます。
しかし現状を調べた所、移動量としては
X  Y  合計 実距離
17 0  17  17
17 1  17  17.02938637
16 2  18  16.1245155
15 4  19  15.5241747
14 6  20  15.23154621
13 9  22  15.8113883
12 8  21  14.4222051
11 11  22  15.55634919
※ケミ中心で西方向から北方向へホムを移動させた場合の移動可能範囲

等の移動も可能で、見た所セル縦横単位の距離で14までは確実に移動可能です。
しかし上記の判定では移動可能なのに一回で移動できない場合も多くなる(特に斜め方向)ので
if ((x-curX)^2+(y-curY)^2 >= 225) then
-- 目的地が一定距離(15)以上なら (サーバーで遠距離は処理しないため)

と変更してみました。
ウチのAIは長距離移動(10〜18)をする場合が多いので動きが改善されましたが
デフォルトAIと同じ分割移動使ってるAIの動きの改善にはなりますかね?
それともなんか間違ってる?

335(○口○*)さん :07/04/27 05:39
何をもって動きが悪いと言うのか
何をもって改善というか次第では?

たぶん、分割で移動したときのカクカクした軌跡が
気に入らないんだと思うんですが

そんなもんは別に機能上何の問題もない
と、気にしてないのがデフォAIであり、
#要するに、サーバの許容値を超える命令を発行しなければ
#それで良いという設計思想、これ自体に良い悪いはありません
スタック対策に長距離移動自体を避ける傾向なのが
一般的なAIだと思いますが・・・

336(○口○*)さん :07/04/27 12:38
>>335
なるほど、スタック対策ですか。
勉強になりました、その辺もまた研究してみます。

あと、「動きが改善」って部分は書き方が悪かったです。
「何をもって動きが悪いと言うのか ・・・云々」って点では
書いておられる通り、カクカクした軌跡が無くなるので移動速度が改善されました。
これにより、「ケミに置いてけぼりを食らう率」が減りましたw

それと処理的に、Move()を2回発行するためにAI()関数自体が2回呼ばれなければ
ならないので単位時間当たりのAIの処理能力を損してるかなぁ、ってのもありました。
また、デフォAIのif文が、「計算式間違ったのかな?」と思う内容なのも・・・です。
個人的には、なぜmath.abs(x-curX)+math.abs(y-curY)>15なのか?ってのも知りたいです。
(わざわざmath.abs()呼ぶくらいなら二乗してもいいと思う、それの方が距離的に正確だし・・・)

まぁ、大抵のAIでは攻撃距離を8以上に設定してて、ケミが立っている場合に
ホムが走り回るような場面でしかそういう事にはなりませんのでまず関係ないですね。

337(○口○*)さん :07/04/27 18:21
ケミに置いてけぼりを食らうのが気になるんだったら

ホムの移動中は
ホムの位置とケミの現在位置を比較
->あまりにも離れている場合は障害物にホムが引っかかってると見なして
 MoveToOwner()
次にホムの移動目的地とケミの現在位置を比較
->移動目的地がケミから離れている場合はケミの現在位置を基準にして
 Move()を再発行して移動目的地を変更する

って感じでいいのでは?
出回ってるAIはたいていこの手の処理が入ってると思います

math.absに関しては、デフォAI書いた重力の人間が、nマスの定義を

□□■□□  左図は「2マス」の範囲
□■■■□  ○がキャラ
■■○■■  ■が有効範囲
□■■■□  □が無効範囲
□□■□□

という、要するに斜めを1マスと数えない方式と捉えているとか
あるいは、朝書いたように、単にそれで機能的には問題ないと
深く考えなかっただけかもしれませんが、いずれにせよ真相はわかりません

338(○口○*)さん :07/04/27 19:44
というかMOTION_MOVEきてなかったら再送、それをカウントといて
一定回数以上再送してもMOTION_MOVE拾えないなら移動不能ってことでMoveToOwnerでリセットでいいんじゃないかな。

339(○口○*)さん :07/04/27 20:45
ちょっと質問。
蜃気楼イベント頃から特定のMAP(OD等)でホムAIを動かすと
1匹くらい敵を攻撃してから動かなくなる事象が出ています。
特定のMAPでの事象だったので,当時はサーバー側の問題かと思い,
蜃気楼が終わると解消されると考えていたのですが,
蜃気楼イベント以後も状況が変わらないので,
何か仕様でも変更されたのかと疑っています。

スレ内でも蜃気楼の単語が2箇所ほど見受けられますが,
何か詳しい情報をお持ちの方はいらっしゃいませんでしょうか。

340(○口○*)さん :07/04/27 20:56
その特定のMAPがどこかということと、ホムAIとは具体的にどれかを書かねば
答えようがないぞ。

341339 :07/04/27 21:08
失礼しました。

特定のMAPについて,現状分かっているのはOD1と2くらいです。
逆に時計塔B3だと問題なく動作しているのは確認しました。

ホムAIは自作なのでなんとも言えないのですが,
アルケミスレを見ると同様に動かなくなるといった記載があったので
何らかの対応があるのかと思い,対応したAIがあれば
その改修部分を見たいと思ったもので・・・。

342(○口○*)さん :07/04/27 21:54
じゃあ、その記載が具体的にどれか教えてください
あと、デフォAIでも再現性があるのか教えてください
ちなみにOD住人が多そうな放置狩スレでは
あなたの言うような症状の人はいないようですが・・・

343339 :07/04/27 22:27
>>342殿
アルケミスレ114の541,548,590番あたりです。
ここでは蜃気楼実装時のラグが原因と記載されていますが、
蜃気楼終了以降騒いでいる人はいないようなので・・・。
また,デフォAIでの再現性はありません。

質問が漠然としすぎているのは承知ですが,
本事象を他に経験している方がいるかどうかだけでも知りたかったので。

逆に言えば一般的に普及しているAIではそのような事象は起きていないということですね。
いろいろ試して見る・・・しかないですね・・・

344(○口○*)さん :07/04/27 23:35
どうも要領を得ない。AI丸ごとあげてくれたほうが早い。

345339 :07/04/27 23:45
今自宅に戻れるような場所に居ないので・・・

蜃気楼実装時期前後でAIの動作に変化が有り,
騒がれたりしたことは『無い』ということで理解しました。

質問を取り下げます。
340殿,342殿,344殿情報ありがとうございました。

346(○口○*)さん :07/04/27 23:51
他のAIで起きないんならそのAIがどっか失敗してんだろう。
とりあえずTraceAIでログとってどこで止まってるか特定しなさい。
としか答え様がないっす。

347(○口○*)さん :07/04/28 00:14
>>337,338
なるほどMoveToOwner()で一度ケミの位置に戻す方が良いのですね。
今はケミにすぐに追いつくように常に直接目的地向けてます。
自作のAIはちょっとケミ追従の動作が普通と違うのですが検討してみます。
ありがとうございました。

あと、
「要するに斜めを1マスと数えない方式」
の件ですが、二点間の距離の公式は普通であれば、
「X距離差とY距離差それぞれの二乗を足した平方根」
ですし、実際ホムの移動可能距離はほぼその計算にも当てはまります。
だから単なるプログラマのミスかも知れないと思いました。

ただ、ホムの移動可能距離には微妙に誤差もあり、ある方向へは一定距離移動できても
(例えば右下斜めに12マス)
反対方向だと同じ距離移動できない
(戻りはなぜか左上斜め11マス)
という現象も確認しているので謎。
(そもそも、そういう部分の仕様が不明だしw)

まぁ、こうやって調べて作ってると色々面白いですね。

348(○口○*)さん :07/05/04 01:07
>■作成可能スレッド数に上限はありませんが、最終書き込みの古いスレッドからdat落ちします。
長期休暇のスレ乱立期にスレ落ち間隔早くなったり
スレ一覧見るといつも128個のほぼ固定値(たまに超えるが直ぐ減る)だったり
作成可能上限は無くても、dat落ち判定の下限(128)はありそうなんだよな

349(○口○*)さん :07/05/04 07:37
>>348
よく観察してるなぁ。

http://enif.mmobbs.com/livero/SETTING.TXT
> THREAD_NUM_LIMIT=128

http://zaurak.mmobbs.com/test/read.cgi/manage/1091261262/42
> SETTING.TXTにTHREAD_NUM_LIMITを追加。
> 新しくスレッドを立てた時、その板のスレッドが既にTHREAD_NUM_LIMITより多い場合、
> 最終更新時刻の遅いスレッド二つをdat落ちにする

最終的な実装と違うだろうけど、そういうパラメータではあるらしい。

350(○口○*)さん :07/05/04 20:52
ここで聞くのが正しいかわからないけど書き込み。
Pvでハイド中の人に地属性カリプスが発動するのと、クローク中の人にカリプスが当たるのは、AI的にセーフ?
それともオートPPみたいに使うとまずい部類のAI?
教えてえらい人。

351(○口○*)さん :07/05/04 21:12
>>350
カプリスが当たる点については仕様。
シーフ系のテンプレ見に行ってハイドとクロークのスキル説明を読んでくるといい。


もっとも、隠れてる相手をターゲットしていいのか云々については難しいとこなので
ここで議論するのは自粛してもらいたい。

352(○口○*)さん :07/05/04 21:22
AIからは隠れているかどうかは正規の手段じゃ判別できないから、
隠れている相手をターゲットしないAIのほうがNGじゃないだろうか?

353(○口○*)さん :07/05/04 21:23
・AIからはハイドクロークしていてもしていない人と同じ様に判断しか出来ない(違いが判別できない)
・対人でスキル使用する設定のAIがハイドクローク者にスキル発動させる事はある
以上2点を理解している人なら問題無いと判断する
理解していない人はチートでスキル使っていると判断する

問題ある様に取られた時にどうするかはあなた次第

354350 :07/05/05 01:41
一度ターゲットした相手に対して、とのことを書き忘れてました

355(○口○*)さん :07/05/05 01:58
一度ターゲットした相手に対してであろうと変わらないよ
>ここで議論するのは自粛
>どうするかはあなた次第

356(○口○*)さん :07/05/05 02:01
「AI的に」は>>353でFA。
>>354は運用の問題になるから>>351

357(○口○*)さん :07/05/05 02:29
リーフ向けのAIが欲しい
オートMCくらいならどのAIでもできるんだけどリーフ即死ぬから逃げ最優先のが欲しい
基本主人の後ろ5マス目標くらいで離れてついてきて
アクティブ敵近づいたらダッシュで逃げて主人がタゲ取ってる敵に攻撃する時は主人のすぐ横から1マス開けで殴るみたいな
わざわざ主人と対角の敵の裏とって攻撃するとかいらんことするから別の敵のタゲ取っちまうんだよな
あとタゲられて逃げ回ってる時主人がCtrlクリックで楽にタゲ取り返せるような動きをして欲しい
具体的にどう動けばいいかわからんけど

358(○口○*)さん :07/05/05 02:47
何が言いたいのかよくわからん

359(○口○*)さん :07/05/05 02:49
>>357
作れば?

360(○口○*)さん :07/05/05 04:16
訳「俺は頭悪いからお前ら代わりにリーフ向けAI作れ」

361(○口○*)さん :07/05/05 04:58
>>357
ホムをタゲってるモンスターをCtrlで追従すると変な動作するからお勧めしない
それに回避行動で動き回られると返ってタゲ奪いにくいし、ホムにPPもやりにくくなる
ピンチ時に主人の後ろに隠れるくらいで十分ジャマイカ
それでもタゲはがす前に死ぬってんなら、ちょっと高めのポーション積むなり、即座にリザホムできる準備をすればいいだけだよね
AIを自分でいじれないなら、まずは自分の立ち回りの改善を優先してはどうだろうか
もしくはいろんなAI試して設定いろいろいじってみることをお勧めする

それと攻撃時に敵の裏を取るAIって何のAI使ってたらそんな奇妙な行動とるのか参考までに教えて欲しい
普通のプログラマーならそういう特殊な設定は切ることもできるように実装すると思うんだけど、設定変更も不可能な作りになってるの?

362(○口○*)さん :07/05/08 05:56
>>357
攻撃スキルないから自動MCだけ追加すればどのAI使ってもいいんでは?と思います。
逃げ回る設定は、私の使ったやつでは工体AI私的修正版がいい感じ。
攻撃時のホムと敵の間合いも設定できてタゲられ具合の微調整が利きます。

ホムスキル手動でやるなら緊急回避+MCが戦闘時に攻撃速くていい。
モーションキャンセルやってれば緊急回避時はいいテンポ良く攻撃できる、結構攻撃速い。

リーフでAI作って使ってるけど、MCに頼って「ガンガンいこうぜ!」な内容なのでオススメしない。
どれくらい「ガンガンいこうぜ!」かというと、ケミの前を歩く設定があるというw

でも基本的に打たれ弱いのはなぁ、AIではあまり対処できないんじゃないかと
やっぱリーフだし。

363(○口○*)さん :07/05/08 18:38
MCがメンタルチェンジなのかモーションキャンセルなのかはっきりしてくれ
緊急回避中にMChって使えないよな?

364(○口○*)さん :07/05/08 19:04
>>362
日本語でおk

365(○口○*)さん :07/05/08 23:59
緊急回避→安息→メンタルチェンジでホムだけ常時加速ってことじゃないか?

366(○口○*)さん :07/05/10 01:22
>>363
すみません、MC=モーションキャンセルは考えてなかったです。
スキルと言う意味でMC=メンタルチェンジで書きました。

>>365
そうです、邪魔くさいですが奥義リーフで攻撃効率上げるにはそれしかないです。
勿論モーションキャンセル使ってる場合もそれで攻撃速度向上につながります。
ただし、ラグった場合はモーションキャンセルのMove()が溜まってしまって
ラグ解消後にダンスしてしまいますが・・・。


リーフ用で使ってるウチのしょぼいAI置いておきます。
自作の機能や他AIから持ってきた機能の寄せ集めですが。
残念ながら逃げ回る設定はありませんし、まだ1マス空け攻撃も実装してない・・・。

http://www27.atwiki.jp/toolya3/?cmd=upload&act=open&page=Top&file=ZeroAI_100.lzh

367(○口○*)さん :07/05/11 21:59
ちなみにMCは他にもマリオネットコントロールとか
モーションカットとかの略称に使われたりするからMChとかのが誤解ないと思う。

特に後者と誤解されるとチーター扱いなので。

368(○口○*)さん :07/05/11 22:34
なるほど、MChですね。
以後気をつけます。

と、いいつつ、
さっきのAIのバグ修正版うぷ。

369sage :07/05/14 14:17
テンプレのAI配布サイトを見て迷っているんだが
ケミもホムも初心者のバニル使いにはこっこAIあたりが
一番無難なのかな?あまり重くならないのがいいのだが。

370(○口○*)さん :07/05/14 15:37
メジャーを理由にこっこというのが、無難な選択。
もしくはバニル使いの人のAIがいいのでは。ホムの種類による挙動差は、結構大きい。

重い・重くないは、環境的な問題もあるし、先日までの「ロードが重い」問題はRO側で解除されたのであまり差はないと思う。

371(○口○*)さん :07/05/14 18:15
ホム種も重要だが、作者のケミ・クリエのステがどんな具合かも
結構特色として出てると思う。
公開されていればその辺も参考にしたらいいかも。


ていうかそんなに時間かかるもんでもないし
いろいろ試してみればいいじゃないか。

372(○口○*)さん :07/05/14 19:42
>>369

初めてのホム→くまAI使用(特に設定無デフォルトで)
ホム80台迄育ち(バニル)

特に問題なかったが、くまAIの更新が止まったようなので
こっこAIに乗り換えた
こっこのお勧ポイント→AIフォルダにつっこむだけでOKなため
設定がいらず面倒くさがりな自分には使いやすい

373(○口○*)さん :07/05/15 00:03
AIは、ラグナヴさんの所のをずっと使ってるな
更新頻度はゆっくりだけど、エラーも随時対処してもらえるし

374(○口○*)さん :07/05/16 22:50
>>371
各AIの詳細ページの開発環境に製作者のケミのタイプのってるからそこが参考になるな

375(○口○*)さん :07/05/21 19:04
えと、ここで質問するのはスレ違いかもしれないけど
遅くなったASPDを早くするAIがあるって聞いたんだけど、どのAIのことだろう?

376(○口○*)さん :07/05/21 19:11
有名どころならたいていそういう機能ついてるだろ
マニュアル読め

読んだ上でメリットデメリットを比較して有益なら
勝手に使いやがってください

377(○口○*)さん :07/05/21 22:34
たいていのAIには付いてるが、テンプレにあるURLからAI一覧とか見れば
ありなしは一目瞭然。

378(○口○*)さん :07/05/25 14:31
ふと想ったんだが GetV(V_TARGET,id) の前の標的が維持されてしまう問題で、
攻撃やスキルモーションのときだけ拾うようにすれば即湧きや移動中に標的変わったmobなんかを判定できないだろか。

379(○口○*)さん :07/05/25 17:58
それはそういう問題とは違う

380(○口○*)さん :07/05/25 20:26
スキルモーションだとノンターゲットスキル(ラウドとか)の時に誤動作する
攻撃モーションを取っている時のターゲットだけを信用して
保持ターゲットID更新のタイミングに関連する問題を回避するってのは既出

既出なんだけど攻撃開始が既存より遅くなる欠点もあって利用者は多くない

381(○口○*)さん :07/05/26 13:21
タゲ無しはまあしょうがないとしても誤爆の頻度下げられるならありかなー
プレイヤーの場合だけ攻撃や詠唱モーションだけ拾うようにしてもいいかもしれん。

382(○口○*)さん :07/05/26 17:51
ケミのボトル召喚やマジ系の地面対象スキル、各職の自分中心系スキルにエンジェマニピ他補助系スキル
詠唱はあってもタゲが更新されないスキルは結構多く狩場での使用頻度も高い
プレイヤーに限っても攻撃モーション時のタゲ以外は危ない
攻撃モーションでも弓系の画面外の敵を攻撃中の場合はその攻撃対象が画面に入るまでは
古いタゲが帰ってくるからケミからの距離も合わせて判定しないといけない

攻撃モーション時のタゲ信用で近距離反撃のみにしても絶対大丈夫になる訳じゃないから
それを承知で誤動作してもちゃんと緊急停止とか出来て謝れる姿勢は忘れない事が大事

383(○口○*)さん :07/05/29 22:09
魔法と言えば今、自作マクロに障害物回避の機能を付けようとしてるんですが
FWとかIWのオブジェクトが見えないんだよね。

仕方ないから移動不可だった場合そこを一時的に障害物として登録して回避しようとしてるわけだが
オブジェクト見えれば楽なんだけど・・・。

今は移動中に回りのオブジェクト避けるサンプル作って試している所です。
問題としては自作シミュレーター上ではうまく移動できできてもラグとかあると動きが微妙なトコ。

384(○口○*)さん :07/05/29 23:18
マクロっていうな

385(○口○*)さん :07/05/30 00:51
自作シミュレーター = エミュ

386(○口○*)さん :07/05/30 02:23
>>384
しまった、ついついEcxelとかの感覚で・・・ホムAIです。
職業病発症だな。

>>385
エミュレーターは無理w
コンソールで走らせるとデータに合わせて歩くのをシミュレートするだけです。
画面はこんな感じ、

候補18A=(171,360)
候補28B=(176,354)
決定候補8A=(171,360)
RelayMove():回避先[近距離ルート](171,360)
RelayMove():回避成功(171,360)
▼viewaxis「障害物回避」time=56
---:−|165−−−|170−−−|175−−−
362:−−−−−−−−−−人−+−−
361:−−人−−−−−−−−−+−−
360:−−−−−−−◎−−−9A+−−
359:−−−−自−−−+++−+−−
358:−−−−−−−−+o8+敵+−−
357:−−−−−−o9−+++++−−
356:−−−−−人−−人+09++終−
355:−−主−−−+++++++−−
354:−−−−−−+09+−人−8B−−
353:−−−−−−++++−−+−人
352:−−−−−−−+08+−−+人人
351:−−−−人−−+++−−+−−
350:−−−−−−−−+++−人−−
349:−−−−−−−−+07+−+−−
348:−−−−−−−−+++−+−人
RelayMove():ルート確定(168,359)→(171,360)→(177,356)

387Glenelgの人。 :07/05/30 09:53
>>383
約一年前に通ったことのある道なので、コメント

単純に既存のマップ情報を使っての迂回動作なら、ライブラリやアルゴリズムを公開しています。
興味があれば、テンプレ人力アンテナあたりから。
それに対して、「テンポラリの移動不能セル」情報を重ねていけば、障害物も含めて迂回動作自体は可能。

ただし、そのテンポラリの移動不能セルをチェックするのが結構手間。
判断するには「隣接したセルに移動試み→数サイクルまって移動できなかったら禁止セル」
というようなアルゴを組んでおかなければならないので、移動性能が非常に低下する。
また、一度そのように除外したセルを再度移動可能判断するために、
セルごとに「最後に挑戦・NGだった時刻」を記録するなどしないとならない;
まあこちらはただの力技でいいレベルですが。

388(○口○*)さん :07/05/30 13:52
ホムが侵入不可セルを挟んでモブをタゲッた場合に
そのモブを攻撃しようとしてスタックしてしまうのを
回避、もしくは対処する方法ってありますか?

389Glenelgの人。 :07/05/30 14:37
>>388
上記「障害物回避アルゴ」がそのまま使えます。
対象のモブに白兵戦攻撃が可能か? ≒そのモブの位置まで移動可能か?

移動できないと判断できるなら、そのモブを攻撃対象から外せばいいです。

390Glenelgの人。 :07/05/30 14:50
補足。
ちなみに、ライブラリなんぞを使わなくても、
移動しようとしたのに、いくら待っても1セルも動かないならば、
その敵のところにはいけないと判断してもいいと思います。

391(○口○*)さん :07/05/30 21:24
>>387
Glenelgの資料拝見させてもらいました。
参考になりました、というか読んでて非常に面白かったです。
こっちの方でも真剣に研究してみます。


今の所MAP読み込みではなく自律型の回避を作成しようと思ってます。
障害回避も本来ならゴールまでのルートがしっかりしている方法がよいですが、
目指しているのは「ケミの傍を自律して歩かせる」という物なので、移動体回避等の
アルゴリズムを色々やってみようと思います。

移動不可セル登録は基本的には同じようなやり方になると思います。

392(○口○*)さん :07/05/31 02:45
自立型の障害回避はいくつかのAIで過去に試みられたなぁ
二つくらいマップ不必要で組んでるAIあったけどどれもいまいちだった

393Glenelgの人。 :07/05/31 07:51
こちらも当初は地図情報を使わずに周囲の侵入可否を自分で調べていました。
その際にやったこととしては、移動可能セルの検出について、
「ホムが実際に動いたセル」を進入可能として記録するほかに、
「PC、敵などどんなものでも存在を確認したセル」も記録していました。
ホム部分以外でもとっているので、効率がよくなります。

その上で、移動予定ルートに未確認セルが残っている場合、まずは障害物がないと仮定して移動チャレンジ。
それで移動できないようなら、調査状況と照らし合わせて
「移動予定ルートで、進入可能な部分までは一気に移動」。
「不明なセルは1セルずつ移動」
・・・というようにして移動・調査していけば、移動性能の低下も最低限に抑えられます。

以上、経験からの情報まで。

394(○口○*)さん :07/05/31 12:37
自律回避もマップ指定回避も
出来上がったらただの追従とかわらなかったり
追従よりモッサリしてたりで苦労の割に本末転倒だったりで
結局メジャーたりえなかった希ガス。

ケミ・敵の座標を取得してまずx+2、移動できなければy+2、x-2、y-2とかやるだけで
事足りたりね。

395(○口○*)さん :07/05/31 12:54
こと追従だけの話なら、ほぼいらない機能。
ちょっとした角にひっかかるってだけの話なら、394氏の言うとおりのやり方が手っ取り早い。
一応「壁向こうの敵を攻撃対象にしてスタックとかはない」っていう点で、確かに効果がある。
そんな感じ。

396(○口○*)さん :07/05/31 14:00
壁越しスタックて・・・あーなるほど、アクティブ設定だと有用なのか。
ノンアクティブだと攻撃時は接触or射線通ってるから気にしたことなかった。

397(○口○*)さん :07/05/31 20:50
>>393
参考にあります、学習能力的な機能は組んでみたいですね。
せっかく言語もLuaなのだし面白いのがスリムに組めそうです。
PTメンバーと一緒に行動する「群れ」のアルゴリズムなんかもチャレンジするつもりです。

>>394
確かに、追従なら必要ない機能ですね。
ウチのホムは現状でアクティブ、且つケミの前を斥候として歩いてて、それで狩の成果が良いので
もうちょっと研究しがいがあるな、と思った次第です。
なんせホムの移動が完了するまでに移動先が変わっちゃうんで良い手法を模索中です。
障害物も全部、移動体回避のアルゴリズムで処理してしまっても良いかもしれない。

障害物回避についてはMobの放つFWが避けれたないいな〜と思って作成始めただけですけどね。
入り組んだ場所は想定してないですが、そういう場合でも避けれればそれはそれで良いな。
まぁ、趣味の世界ですがw

398(○口○*)さん :07/06/01 14:46
障害物回避はマップ使うのが工体とGlenelgで
マップ使わないのが玉蟲と安っぽいか
あと可能な限りも回避処理あるみたいだ

それぞれ使ってみて一番いい動きのやつの中身を参考にするのはどうだろう

399(○口○*)さん :07/06/02 01:41
>>398
的確なアドバイス、ありがとうございます。
で、実際に全部ソース見てみたんだけど、やっぱ自分のテンポラリMAP領域をコテコテやってますね。
ひとつ組み込んで見ましたが、ウチのホムだと確実に目的地まで行くのも反応に問題があり、手直しが必要です。
他のもシミュレータにかけるまでも無く、どれやっても結果は同じように見えます。

んで、
>>394,395

でおっしゃるやり方と、単純な障害物回避のアルゴリズムを合わせ、
「スタック判定に引っかかったら2セル程前方に3x3程度の大きさの障害物があると見なす」
としました、これで斜めのFWとかでも綺麗な回避運動を行えます。
この障害物情報は今の移動が成功したら消えてしまいますが、FOLLOW_ST時の時の話なので私的にはよい感じ。
万能ではないけど用途にはマッチしてるんで、しばらくテストと調整してみます。

今度は移動を全部ベクトル演算にしてもっと生物的な動きにトライしてみるかな〜。
そうすれば特にPTで行動する時に面白いだろうな。
あぁ、そういや友達登録機能がまだなかった・・・・。

400(○口○*)さん :07/06/04 04:25
聞く場所間違えてたのでこっちで聞いてみる。

Gv用のAI作って今日動かしてみたんだが、やっぱり予想以上に重くなる。
そこで更に軽くしたいんだが、GetActors()の回す頻度を下げるのは当然として
もう全てのGetV関係の関数を使うのを控えるべきなんだろうか。

GetMsgの回す頻度とかも自重すべきかな?GvAI組んでる人はどんな事に気をつけてるんだろうか。
それとファイルの読み書きはラグくはならないよね?PCに負担がかかるだけで。

401(○口○*)さん :07/06/04 06:31
GetV自体はクライアントの情報引っ張ってるはず。
処理軽くするならAI関数の呼び出しスパンを長くするくらいしか思いつかないなー
Gv中はレスポンスの悪さのせいでクラから何度も移動や攻撃命令送るハメになるけど意味ないし。

402(○口○*)さん :07/06/04 12:12
何度も命令送ってるせいで、ホム出してるときと出してないときは明らかに反応速度が違うんですよね。
もうAIそのもののループ遅らせるしかないのかな、やっぱり。

特定の重くなる命令(MoveとかGetActoers)の回す回数減らすのが理想なんですが
何が重くなって何が問題ないのかなんて普通分からないよなぁ・・・。

というよりGetActoersって重くなるんだろうか。蔵から情報引っ張ってるだけな気も・・・・うーん。
MoveとAttack命令は更に自重させておこう。

403(○口○*)さん :07/06/04 13:31
GetActorが重いとうか そのあとのループ回数が何回か じゃない?
しかもループしてるの索敵の一回だけじゃないみたいだし

404(○口○*)さん :07/06/04 13:38
塔のバカラグの中で計測したときはGetActorsの前と後の時間は0〜300msだった。
クラの情報引用するだけはほとんど負荷ではないようだ。
逆に鯖への送信と応答が必要なAttack、Move、SkllObjectあたりは以前の多重攻撃の反応みたいに負荷にはなってると思う。
どっちかっつうとスプライト解像度やスキップなりのが効果ありそうな気はする。気がするだけかもしれないけど。

405(○口○*)さん :07/06/04 13:43
>>403
だと思う。Gvの人数しゃれんならんからそれをAI関数呼び出すたびにやってたら倍倍ゲームになるし。
あのラグの中でコンマ秒以下のオブジェクトの変化なんか見ても反応できないから
GetActorsとforループ飛ばせば間接的には意味はあるだろうね。

406400 :07/06/04 14:34
GetActors()が負荷じゃないなら
その後のforループは大して問題じゃないと思うんだけどどうだろう。
ID分別するだけの計算処理だからPCが重くなることはあっても
ラグで動かないなんてことはないんじゃないだろーか。
といっても、50人以上の防衛とかだとPC側の負担がきつくなるとは思いますが・・・。

Get系が蔵からの情報読み取ってるだけなら
移動攻撃スキルの3つを思いっきり自重させる方向でいこうと思います。
Gvは週1しか出来ないのが辛い。実験しにくいー。

407(○口○*)さん :07/06/04 15:54
例えば普段50程度のオブジェクトしかないものに対して座標計算なり振り分けなりをしてたのが200になった上に
レスポンス悪いせいで同じ計算何度も何度もして命令送ったら重くもなるんじゃない?
1回で終わる処理を毎秒数回延々200回分やりなおすのだし。

408(○口○*)さん :07/06/04 16:36
だいぶ前にも話題として出てたけど
AI()の先頭部分で処理ウェイトかけてしまえばよさそうだけどな

1000ms置きにしか処理しないとか
4回に1回しか処理しないとか

DEX130クラスの相手を詠唱妨害したいというなら駄目だろうけど

4091/2 :07/06/06 12:37
オートフリットムーブのタイマーをテレポ等でリセットしないためには
どうすりゃいいんだろうと考えているが一向にひらめかない
ちなみに現在こっこAIの最新版使用
こっこのHPではリセットされるのが仕様ですみたいなことが書いてあったので
こっちに質問させてもらいにきた
俺自身はプログラムはかじったこともないのでスキル皆無
過去スレ読むと外部ファイル作成をして
タイマーを書き込み、読み込みでリセットしないとかあったんで
こっこの中身みて該当しそうなFriendとMobあたりの読んだけどわからん
ちょっと知恵を貸していただきたい

function SaveFriend(file,list)

local filename = SaveDir..file..".lua"
local fp = io.open(filename,"w")

if (fp ~= nil) then
for i,v in pairs (list) do
fp:write(string.format("FriendList[%d]=%d\n",i, v))
end
fp:close()
end
--TraceAI(" ! Save File : "..filename)
end

4102/2 :07/06/06 12:37
上のはこっこの「リストをセーブする」をそのまま持ってきた
この辺が関係あるかなと思ったんだけど見当違いだったらごめん
SaveFriendあたりはファイルの名前だから勝手に変えても問題なさそうなんだけど
「for i,v」 って何だ?
その下の行のformat以下の「%d」は登録したいIDで
「=%d」もIDの何かだろうけどわからなくて
「\n」は改行しますよってことなのは分かった
とりあえず「"」で囲まれているところが外部ファイルに書き込まれる範囲ってことかな
この中を「時間」に書き換えればいいとは思った
ここが限界

まとめると
本題 :テレポでタイマーリセットしないようにするには
他 :上で言うところのi,vの意味 本題に関係ないもの?
:format以下に書き込む「時間」の取得ってどうやるの?
→NowTime(使用した時間)=GetTick()とか書けばいいのかな
:TraceAIって何箇所かで見るけど意味あるの?
→コメントアウト?ってやつしてるけど動作に関係はないのかな

初歩的な質問&長々となってごめん
変なの沸いてると思ったらスルーをお願いする

411(○口○*)さん :07/06/06 12:48
>>409-410
テレポの際にホムは新規出現、AIは新規読み込み扱いになる。

スキルの効果もテレポした時点で切れているので、SP温存以外の目的でフリットムーブの
かけなおしを避ける意味がない。そして、SP温存目的であれば、残SPを基準にスるだけで
事足りる。

外部に保存し、AIを重くするだけの価値がないってことだよ。

412(○口○*)さん :07/06/06 12:49
>>409
頭も悪くなさそうだし、だからこそ期待を込めてこう言わせてもらうよ。


まず公式にあるAIマニュアルと>>2にあるLuaリファレンスを読んでこい。

413(○口○*)さん :07/06/06 12:49
テレポしたらFM切れるのだからタイマーをリセットされないようにする意味がわからないな。

>:TraceAIって何箇所かで見るけど意味あるの?
>→コメントアウト?ってやつしてるけど動作に関係はないのかな
デバッグ情報をファイルに書き出す機能だから別にコメントアウトしてても問題ない。

414410 :07/06/06 13:14
>>411,413
強化スキルもリセットだったのか・・・
一体何を俺はみていたんだろう

>>412
ちょっと行ってくる

みんなありがとう
スキルの仕様を把握するところから始めてくるよ

415(○口○*)さん :07/06/06 13:36
http://alchemist.s214.xrea.com/index.php?Lua%2FAI%2FFunction
関数の意味についてはこのへん参照。

416410 :07/06/06 14:54
>>415
文字化けうんぬんは聞いたことある気がしたんだが
今俺を悩ますTraceAIのことだったのか
わざわざありがとう!

417(○口○*)さん :07/06/06 18:21
>一体何を俺はみていたんだろう
夢・・・かな? 幻想かもしれない。

418(○口○*)さん :07/06/06 18:34
緊急回避じゃない?
今さっき、自分がそれで勘違いした。

419(○口○*)さん :07/06/07 15:47
あれは主人に効果があるスキルだから切れないだけでしょ

420(○口○*)さん :07/06/08 20:31
スレの最初のほうに、特定のモブを攻撃しないようにするには?
という質問があったけど、UrdなどのPK鯖でPCを攻撃に行かないようにするにはどこを書き換えたらいいんだろうか?

421(○口○*)さん :07/06/08 20:32
補足として書いておくと、ホムはリーフで緊急回避だけ使わせようと思ってます

422(○口○*)さん :07/06/08 21:23
>>420
”何の”どこを書き換えたいんだ?デフォAIか?
それならIDLE_ST内のGetEnemyを削除するだけで攻撃はしなくなる。

423(○口○*)さん :07/06/09 00:00
全てのMOBを「特定の敵」として登録して、「特定の敵だけを攻撃する」ようにすればいいんだよ!
いいんだよ!

424(○口○*)さん :07/06/09 01:50
間違えてAIフォルダのすべてのファイル形式変えてしまって、ホムを出す度にエラーが出るようになった・・・。
変えようとしても前のファイルがどんなのだったかわからないandそれっぽいの表示されない。
AIフォルダ消してインストールしなおしても変更後の形式にしかならない。。。

どうすればいいかな・・・?

425(○口○*)さん :07/06/09 02:05
>>424
具体的にどういう操作をしたのか、再現できるレベルで説明してくれ。

426(○口○*)さん :07/06/09 02:16
どうせAI固有の追記ファイルを読み取り専用にしちゃっただけだろ

全部選択して右クリック、プロパティで読み取り専用のチェック外せとしか。

427(○口○*)さん :07/06/09 07:07
>>424
公式からデフォAI拾ってきて入れろ。

ケミの起動には失敗しないようだから、ケミ以外で/hoaiやって、それからケミにキャラチェンするまでは
しなくても良さそうだが、デフォAIに戻すのは忘れるなよ。

428(○口○*)さん :07/06/09 08:29
「ファイル形式を変えた」って意味がわからない。
もっと具体的に頼む。

429424 :07/06/09 10:08
AIのプロパティを開いてプログラムってとこを変更したんだ。
たぶんそれが原因でエラーでまくりなのは間違いない。。。

430(○口○*)さん :07/06/09 10:11
>>429
だから入れなおせば解決するってば

431(○口○*)さん :07/06/09 10:16
>>429
それはエラーの原因になりえない。

ROクラごと入れ直しを。
それでもエラーでるならエラーメッセージをコピペしてくれ。

432(○口○*)さん :07/06/09 11:10
つうかエラーメッセージを何故最初に書かない。

433(○口○*)さん :07/06/09 13:59
プロパティって、読み取り専用とかの部分触ったんじゃないか?

434(○口○*)さん :07/06/09 14:06
いいから、ROのフォルダを一回クリアしてから再インストールしろよと。

435(○口○*)さん :07/06/09 20:45
小学生なんじゃないか?

436(○口○*)さん :07/06/10 00:13
>小学生
だからどうした

自分がやらかした事を判る様に説明するか、蔵の再インストール
もしくは公式のデフォAI入れ直しする以外に解決法が無い状況は変わらん

どうせ***.lua.txtとか拡張子変えちまったか、デフォで開けないluaファイルを
エディタで開いた時にエンコードをS-JIS以外に変えちまったって所だろ
AIフォルダが本当に消せたなら読み取り専用なんて関係ないしな

437(○口○*)さん :07/06/10 00:55
なんか[OK]ってBTNがあって英語がたくさん書いてある画面がでたら
CTRL+C押して、スレへの書き込み画面でCTRL+V押すんだ。

438(○口○*)さん :07/06/10 18:49
なんという爆釣w 実はここにレスしてたの忘れてたw 喧嘩すんなよm9(^Д^)プギャー

439(○口○*)さん :07/06/11 02:13
心配して親身に解決案を話し合う様を指して喧嘩とか釣れたとか申すか
不思議な人も居たものだ

440(○口○*)さん :07/06/11 10:07
439が釣られてる・・・・(私も釣られてる・・・)
---------------------------
AI.lua error
---------------------------
cannot read なんという爆釣w 実はここにレスしてたの忘れてたw 喧嘩すんなよm9(^Д^)プギャー: No such file or directory
---------------------------

441(○口○*)さん :07/06/11 10:17
AIって切り替えできるけど普段使わんよね。
俺は普通の狩り用AIと軽量用AI使い分けてるけどそういう人はいないかな。
後者は大規模な枝テロあったときにうろうろせずに攻撃するから便利ではある。

442400 :07/06/11 12:22
/hoaiだと安息コルホム等で再読み込みしなくちゃいけないのと二つしか切り替えできないから
こっこのメッセージモニタに行動パターン切替機能追加した。
移動狩り、BOSS狩り、テレポ狩り、たまり場、Gv、Gv味方登録etc
関数上書きしちゃえばAI切り替えとほぼ同じようなもんになるし。

443(○口○*)さん :07/06/11 12:24
400っていつの話だ・・・
消し忘れorz

444(○口○*)さん :07/06/11 16:12
配布AIも更新が止まってきたな
もうそろそろ微妙な仕様感の変更くらいしか更新することないのかもしれないなあ

445(○口○*)さん :07/06/11 16:22
それじゃ更新ネタでも。
カーソル優先度の都合、NPC付近にはホムが移動しないようにしてほしい。
特にくるくるみたいなアイドリング行動がまじ迷惑。
自分じゃなくて他人のホムの問題だから、配布側で対応してもらわないと
どうにもならないんだ。

446(○口○*)さん :07/06/11 20:13
>>445
そのホムとNPC近づけてる本人に言えば解決しね?
ぶっちゃけ組み込んでも殆どの場面で役に立たないので
開発リソース割く価値としては疑問。
カプラ前で製薬されると音うるさいってのと同レベルじゃないか。

447(○口○*)さん :07/06/11 20:54
NPCのIDも取れるんだっけか
NPCの周囲数セルにホムが近づかないような処理って入れられるんじゃね?

448(○口○*)さん :07/06/11 21:55
まあくるくるは邪魔だと思う。場所取るし移動不能エリアできやすいし。
せめて作者がデフォルトでオフにして欲しいね。

449(○口○*)さん :07/06/11 22:18
たしかに人が大勢いるところで意味も無くグルグル回ってるのは目障りだな
まあそういう奴はそういう奴だと自ら表現してるようなもんだと思って納得してる

450(○口○*)さん :07/06/11 22:34
なんではるか昔からくっついてるような機能に今更になって不満をこぼすのか理解に苦しむ。

こんだけ浸透しちゃったら今更配布元が止めたところで無くなることはないだろう。
言うならもっと早く言えよお前ら。

451(○口○*)さん :07/06/11 22:43
目障りとかウザいだとかいいがかりレベルだな

452(○口○*)さん :07/06/11 22:58
前から言ってたんだけどさすがに作者んとこに言いにいくまではしてないな。
まあ普及しちゃったもんはしょうがないと思う。
ライトユーザはデフォルトで使うことしかできんし。

453(○口○*)さん :07/06/11 23:11
作者に言わずに誰に言うんだよ
こんな匿名掲示板でいくら吼えても意味無いぞ

454(○口○*)さん :07/06/11 23:12
愚痴は愚痴スレにって話だわな

455(○口○*)さん :07/06/11 23:19
意味わかんね。作者に言ってどうなるもんでもない。
更新も無いって話してるじゃん。
今更そこの機能オフしただけの新バージョンだしてもだれも乗り換えないわ。

456(○口○*)さん :07/06/11 23:29
クルクル機能を削除したバージョンに誰も乗り換えないなら
誰も気にしていないということなんでしょう

それだけのことです

457(○口○*)さん :07/06/11 23:29
未進化鳥バニル辺りはちっさくて回っててもそんな気にならないけど
進化して大きくなると露店見てる時とか鬱陶しく思う事があって
進化鳥はオフにしたな・・・・永遠の梅ゼリーは今日も回ってるがなw

まぁ回ってる姿で和めなくなってイラつく様になったら
ホム使いとしてなんだかな・・・・とふと思った

458(○口○*)さん :07/06/11 23:30
アクティブな作者はここもちょくちょく見てたろうし回転については昔から言われてた。
当人が問題ないと思ってそのままならそれはしょうがないと思う。
別に無理に替えろなんて強要する気もない。喧嘩する気なんかないしギスギスしなくてもいいじゃない。

459(○口○*)さん :07/06/12 01:09
配慮する人間は機能がついてても最初から動かないようにする
しないのは結局配慮の欠けた人間
職スレでもマナーに関しては本人に直接どうぞって言われてるだろう

460(○口○*)さん :07/06/12 01:16
配慮する人間は機能がついてても最初から動かないようにする
しないのは結局配慮の欠けた人間

確かにその通りだが俺はホムが回ってるだけでウザいという感覚がまったく理解できないしむしろかわいく見える
全員がクルクルがウザいと思っているというわけではないし逆に好きな人だっている
世界はあなたの所有物じゃないんだよ

461(○口○*)さん :07/06/12 01:47
つか配慮してる人間は、動こうが動かまいがNPCまわりでホム出し露店やAFKしないだろ?
何でもAIのせいにするなよ。結局使う側の問題だ

でも追加できるんならあってもいいかもね。必須じゃないから趣味的に(・ω・)

462(○口○*)さん :07/06/12 07:00
話題がないときはAIに関する雑談で
あれはこうだなぁと感想を言い合うのは別にいいんじゃないだろうか
それを受けて愚痴や文句にしか見えないのはちょっと真面目すぎる気がする

463(○口○*)さん :07/06/12 07:21
携帯乙w

464(○口○*)さん :07/06/12 08:13
感想と愚痴は違う

465(○口○*)さん :07/06/12 09:14
>>643
そうだね、携帯=自演だね
毎日PC起動してネットできるのが当たり前だよね
これで満足かい


俺もぐるぐるはちょい邪魔だなと思ってたから、何かやってくれたら嬉しいなぁ
使う側の問題だから「嬉しいな」くらいだけど

そういや今って一番軽いAIってなんだろう
やっぱGv用のやつかな?

466(○口○*)さん :07/06/12 09:22
>>465
function AI(id) end

という冗談はおいといてGv特化AIを配布してるところってあるの?
知らないから自作してた。

467玉蟲の中 :07/06/12 09:55
くるくるについて
私のAIは、3タイプを見分けるためくるくるがついています。
自分でつかっていて時々”うざ”とかも思います。
付ける人は付ける人なりの理由があることをお忘れなく(改良中だけど・・・)
愚痴感想
個人的な意見ですが、愚痴結構感想結構どちらも改良や新たなイメージへのためになります。
実際のところ感想より愚痴の方がためになります。あまりにも不当な事は別にして・・・
GvAI
結構な人が作ってるけど公開はしないことが多いみたい。私も知人からの依頼で非公開のGvAI開発
とかはしています。多分、他の作者も実は非公開で作ってたりするんじゃないかな?
あと公開してる物はアンテナに行けばわかるかと
以上長文失礼

468(○口○*)さん :07/06/12 10:30
理由明示してれば不満は改良点にもなんだし喧嘩腰になってもしょうがないっての。
>>465も煽りに煽りで返すのはだめよ。

塔がまたあるならそれ用の軽量化やカスタムは考えられるけど
正直もう好みの差くらいしかないんだよなー
ちょっと前のログにあったGvとかでの軽量化についても
1秒単位くらいでAI関数の先頭でスキップと実行切り替えるとかくらいしか思い当たらんし。

469(○口○*)さん :07/06/12 18:52
配布AIの大きな更新はもうなさそうか…
傭兵がホムと同じようにカスタムAIで動かせるらしいけど、弓傭兵用とか槍傭兵用とか出て来るのだろうか

470(○口○*)さん :07/06/14 10:54
ホムAIを勉強しようと思い、本屋に行ったのですが
Luaについての本は日本国内では出版されていないと言われました。

皆さんはどうやってLuaの知識を身につけたのでしょうか?

471(○口○*)さん :07/06/14 11:42
lua リファレンス
でググる

基本構文とライブラリで提供されてる物さえわかればあとは言語なんてどれでも同じ
それらをどう組合せて動きを実現するかは自分で考えるしかないからね

後は公式とか配布されてるAIとか一行一行何をやっているのか読んで
すこしずつ書き換えて見れば大体わかってくると思う

それでもわからなければ解らないところ一箇所ずつここで聞けば解答貰えると思うよ

472(○口○*)さん :07/06/14 11:44
本職プログラマーだからみれば大体わかったな
あとはセンス(これ大事)

473(○口○*)さん :07/06/14 16:23
PerlとかCのニュアンスで大体わかった。
あとは上で言われてるリファレンス見たり、他人のソース見たり。

474(○口○*)さん :07/06/14 17:00
基本の分岐とループはどの言語も同じだから
Luaリファレンスを辞書に他のLuaプログラムを見て使い方を覚えたかな

他のプログラム言語で何か作ったことがあるかどうかが、かなりセンスに影響する気がする

475(○口○*)さん :07/06/14 18:11
こっこAIの最新版で全くカスタマイズせずに使ってると、Mobが主人の
足元に沸いたとき、ホムが主人の周りをぐるぐる回りはじめ攻撃しなく
なるんですがこれって解除できる方法あるんでしょうか?

476(○口○*)さん :07/06/14 18:30
Luaの基本的な構文やキーワードでぐぐるとソースはわりと見つかるから、そこから意味を汲み取るってのも勉強なるよ。
Luaに限らないけど。

477(○口○*)さん :07/06/14 18:32
>>475
こっこの方で聞いたほうがいいと思う。
配布されてるソースいちいち見てる人は多くないし、内部仕様一番わかってるのが作者だし。

478(○口○*)さん :07/06/14 18:57
>>475
放置ケミでもなければ困らない不具合ですね><

479(○口○*)さん :07/06/14 19:34
>>475
1歩動けよ

480470 :07/06/14 21:14
皆さんありがとうございます。
これから時間を見つけて少しずつ勉強していきます!

わからないときはよろしくお願いしますね

481(○口○*)さん :07/06/14 23:29
>>475
死ね

482(○口○*)さん :07/06/15 09:56
>>481
お前が死ね

483(○口○*)さん :07/06/15 18:43
>>482
>>475

484(○口○*)さん :07/06/19 20:18
       ∠Y"´゛フ
       ;' ゝ-,,ェ)  ・・・・、もフ・・・。
     ゛;(ノ    ';つ 
      ''と_)_)  旦

485(○口○*)さん :07/06/20 14:43
  ∠Y"´゛フ
  ;' ゝ・,,ェ) まぁ、もふつけ
 ゛;(ノ  † ';)  
 ヾ,;'   ';
  ''∪''∪

486(○口○*)さん :07/06/23 13:08
もふもふ

と、それはおいといて
Gvだとか蜃気楼だとかホム出してると重くなるけどさ
いったいなにがネックになってるんだろう

487(○口○*)さん :07/06/23 13:15
空AIで呼んでも重いってぐらいだから、AIのあずかり知らぬところで何か起こってんだろう…。
それ以上は通信量の問題で比例的に重さが増し、下手すれば鯖キャンということみたいだから
俺らには正直一定以下の軽量化は無理なんじゃないかと思っている。

488(○口○*)さん :07/06/23 13:27
>>486
送信されるコマンドが送りすぎが、今のところ有力かな?
中でもSkillObjectが一番大きいと思う(確証なし)


だが、真のネックは 癌呆 だろう

489(○口○*)さん :07/06/23 15:28
出してるだけで重くなる分と、AIの中にある処理で重くなる分の2種類
*鯖MAP上に1つオブジェクトが増えた分の処理
・蔵からLuaが実行できる状態に維持するメモリ他リソース管理(AIの中身にも依存)
・蔵からLuaの呼び出し分の処理(一定周期でAI(myid)を呼ぶ)
・ホムの各種描画

*Attack、Move(MoveToOwner)、SkillObject(SkillGround)等、鯖へのパケット処理
・Get〜、IsMonsterの蔵への情報問い合わせ処理
・TraceAIのファイル書き込み処理
・os、io等外部プロセス、ファイルとのやり取り
(「*」は主に鯖と蔵が、「・」は主に蔵とOSが関係)

全員の環境で等しくこれが一番のネックって言い切れる物は分かって無いけど
上の全てがラグの原因になる(他に知られて無い原因もあるかも知れない)

AttackやらGet〜はGvや蜃気楼では使わないと出してる意味が薄いし
os、ioは一部のAIでメインの機能として使われてて
出してるだけで重くなる分は空AIにしてもどうしようもない
まあ元も子もないけど、一番良いのはホムを出さない事じゃない?

490(○口○*)さん :07/06/24 04:03
主人がタゲられたら速攻助けに来てくれるaiって可能ですか?

491(○口○*)さん :07/06/24 07:05
>>490
可能。

ただし、人間の感覚での「タゲられた」で判断するのは難しい。
一回攻撃対象とされたら、というタイミングなら、可能だし公開AIでも対応されてるのはあるはず。
(別の言い方をすると、「主人を狙って接近してきている」ものはその時点では対象にしない)

492(○口○*)さん :07/06/24 08:59
ホムがノンアクティブの敵を自動で攻撃してくれないんですが、なぜでしょう・・・。
アクティブモードにしているはずなんですが。
最初にこっこAIをいれたのですが、
こっこAI使ってる時は、色々設定しても全くノンアクティブの敵には反応しなく、
その後rhapsoAIをいれてみたものの、敵に反応して追尾はするものの、
攻撃してくれないのです・・・。

493(○口○*)さん :07/06/24 09:35
いろいろ設定ねえ…
エスパーいないみたいだしどうせまともな状況説明できないんだから
設定ファイル丸ごとアップしたほうが早いよ

494(○口○*)さん :07/06/24 10:19
遅ればせながらエスパーレスすると、
「/hoai」
できてないんじゃないか?
あとrhapsoAIはデフォルトAIを上書きしてインスコだからその辺勘違いしてるだけと見た。
「敵に反応して追尾はするものの・・・」のくだりは検証してないのでわからんが・・・。

俺の予知では>>492
・ホムはリーフです。
・実はこっこAI入れたときにカスタムAIに切り替わってませんでした。
・間違えてrhapsoAIをUSER_AIに突っ込んでました。
と言う。

495(○口○*)さん :07/06/24 10:42
すいません解決しました。
言うのもあほらしい初歩的なミスでしたorz スレ汚し失礼しました。

496(○口○*)さん :07/06/24 12:33
どんなにアホなミスでも質問だしたなら報告ぐらいちゃんとしてくれよ…
エスパーの予知どおりだったとしてもw

497(○口○*)さん :07/06/24 14:47
>>491
さん ありがとうございます。探してみます

498(○口○*)さん :07/06/30 08:04
ホムが死にそうになったらリザホム or 死んだらリザホムって黒になる?

499(○口○*)さん :07/06/30 08:10
好きにしろ

500(○口○*)さん :07/06/30 13:26
>>498
ホムが死に終わった後のリザホムは黒
ホムが死ぬ直前のリザホムはグレー
どちらかというとこのスレで聞くべからず

>>499
まともに答えないのも>>498みたいな書き込みが減らない理由になるんだぜ

501(○口○*)さん :07/06/30 13:51
黒っつーかAIじゃ不可能ですがな。

502(○口○*)さん :07/06/30 17:51
ワープポイントのMobIDがわかんね/(^o^)\
数値か載ってるとこギブミー

503(○口○*)さん :07/06/30 18:32
>>502
http://pc3merchant.net/ai_antenna/index.php?cmd=read&page=AI%BB%F1%CE%C1%2FID

灯台下暗し/(^o^)\ってこったい

504(○口○*)さん :07/06/30 21:39
ワープポイントにIDがあるなんて初めて知ったぜ。
ていうか何に使うんだ?

505(○口○*)さん :07/06/30 22:38
>>503
THX、あまりにも暗すぎ/(^o^)\
比較表だけだと思ってたあのサイト

>>504
クク・・・・、最凶のアミストルAIを作るためさ・・・!

506(○口○*)さん :07/06/30 23:16
ワープポイントだけの場所に移動してgetacotorsでGetVの結果全部ファイルに出せばわかるっしょ。
そういうの作っとくとデバッグとか調べ物には便利よ。

507(○口○*)さん :07/07/01 01:34
>>504
http://pc3merchant.net/ai_antenna/index.php?cmd=read&page=AI%BE%DC%BA%D9%2FGlenelg

この辺でMAPの自動認識に使ってる

>>505
WPの上に羊移動させてキャスリンってネタは古いぜ

508(○口○*)さん :07/07/01 18:52
ちょっと知恵を拝借したいと思い、書き込みました

最近やたらテロが多くて露店中にしょっちゅうモーションが変わる為
こっこAIの寝落ち防止機能を「座ったらタイマーリセット」
にしようかと試行錯誤中です
露店してないでRO落として寝るのが一番ですがね
実際に
function ExitEvent()
do
local timestamp = os.time()
local ownerMotion = GetV(V_MOTION,GetV(V_OWNER,MyID))
ExitEvent = function()
if ownerMotion = MOTION_SIT then
ownerMotion ~= MOTION_SIT
timestamp = os.time()
ExitCheckTime = GetTick()
return
end ((@略
と入れたら ./AI/USER_AI/AI.lua:3589: `then' expected near `='
なエラー文頂いたのでifあたりをいじりなおして
ExitEvent = function()
ownerMotion = MOTION_SIT
if ownerMotion ~= MOTION_SIT then
にしてみたらエラーは起きないのですが座っても落ちるようになりました

俺の頭じゃここが限界です
マニュアルも読んでみましたがどこが該当するのかすらわからない次第です
お手数ですがミジンコにアドバイスください

509(○口○*)さん :07/07/01 19:02
まず突っ込むが

> if ownerMotion = MOTION_SIT then
> ownerMotion ~= MOTION_SIT

演算子の意味を理解せずにAI弄ろうとすると危険だからまずそのへん勉強すれ。
あとエラー文の英語ぐらい読め。

= ・・・ 代入
~= ・・・ 否定
== ・・・ 等しい

似てるけど全然違うこいつら。
if文で代入は使えない。条件式ではないからね。
あと比較する必要がないならownerMotionへの代入も別にいらん。

510(○口○*)さん :07/07/01 20:08
>>508
>お手数ですがミジンコにアドバイスください

ここだけ読んで悪質な荒らしだと認識した

511(○口○*)さん :07/07/01 20:41
>>509,510
もうちょっとAIと睨めっこしてみます
アドバイスありがとうございました

512(○口○*)さん :07/07/01 21:34
こっこの設定ツールで使ってるVBだと比較も = だったりするからややこしい

>>511
とりあえずお前はAIと睨めっこする前にリファレンスマニュアルを理解しろ

513(○口○*)さん :07/07/01 22:00
こっこ設定ツール、少なくとも今持ってるVer1.10はVBじゃありませんぜダンナ

しかしちょくちょく見に行くんだが、Luaリファレンスの分かりにくさは異常
俺はC言語かじってたからなんとか着いていけるが全くの初心者がAI作るために
リファレンス読んだら一体どうなるんだろうか(・∀・;

514(○口○*)さん :07/07/01 22:06
VBではないがVBScriptだからまぁ親戚みたいなもんだな。

515(○口○*)さん :07/07/03 12:49
そういや新mob実装だからまたHOMUNTYPE調べ直さないとアクティブ相手とかちょっと面倒かな。

516(○口○*)さん :07/07/03 21:01
Autokinoko\(^o^)/owata

517(○口○*)さん :07/07/03 22:17
自動CR付きの拡張版も出てるんだからそっち使えばいい話。
見つからなくても自分で組めばいい話。

それと俺含めてスレ違い。

518(○口○*)さん :07/07/04 07:34
ラヘルのモブIDか対応のmobdata.luaどっかにないすかね?

519(○口○*)さん :07/07/04 11:28
1780 マスキプラー 非移動 射程3
1781 ドロセラ 非移動 射程7
1782 ロウィーン
1783 ガリオン
1784 スタポ

まだないと思う。
とりあえず拾ったのは出しとく。

520(○口○*)さん :07/07/04 11:47
1775 スノウアー
1776 シロマ
1777 アイスタイタン
1778 ゲイズティ 射程10
1780 マスキプラー 非移動 射程3
1781 ドロセラ 非移動 射程7
1782 ロウィーン
1783 ガリオン
1784 スタポ
1789 アイシクル 非移動 射程3

クエやりつつ拾ってきたよ
MVPはさすがに見つけられんしいてもID拾うのはむりだ

521(○口○*)さん :07/07/04 12:01
暫定的な情報ということで、iROのサイトから足りないID調べてきた。

1768 Gloom Under Night
1769 Agav
1770 Echio
1771 Vanberk
1772 Isilla
1773 Hodremlin
1774 Seeker
1779 Ktullanux
1785 Atros
1787 X_Echio

522(○口○*)さん :07/07/04 12:05
すまん、見落とした。
1786 X_Agav
1788 X_Ice Titan

jROで違う可能性もないとはいえないから、くれぐれも参考までに。

523(○口○*)さん :07/07/04 12:11
さすがにMobIDなんかは独自仕様を持ち出すことは無いと思うんだ。
乙。

524(○口○*)さん :07/07/04 12:30
まだあったよ・・・。orz
1791 X_Galion
1794 X_Roween

取り巻き関係もこれでコンプしたはず。
どれもexpなさそうだ。

あと実装時期の問題だろうけど、タオグンカ取り巻きのメガリスが
こんなところにいて驚いた。
1793 X_Megalith

>>523
なにせ相手は斜め上行く癌だからなぁ。

525(○口○*)さん :07/07/04 13:27
追加
1779 名前忘れたけど氷DのMVPボス
1788 アイスタイタン(取り巻き)

526518 :07/07/04 17:57
ありがとうございますー!

527(○口○*)さん :07/07/04 22:18
ラグについて質問です。
テレポ狩りをしているときによく起こるのですが、テレポアウト後、しばらくホムや敵が表示されないときがあります。
ケミ本体は表示されています。この現象の原因は次のどれになりますでしょうか?
1 プロバイダーの回線のラグ
2 ラグナロクのサーバーのラグ
3 PCのスペック不足
4 AIで負荷がかかっている
通常の戦闘中もしばらく敵が動かず、しばらくたって一気にダメージが表示されたりします。
狩場はOD2で、AIはデフォベースの自作です。
3 4が原因なら改善する努力をしてみようと思います。
わかる人がいましたらアドバイスお願いします。

528(○口○*)さん :07/07/04 22:35
初歩的な質問ですみませんが
GetTick() ←これって起動時間って説明があったんですけど
ラグナを立ち上げてからの時間なのか
ホムをコールしてからの時間なのか
どちらなのでしょうか? 教えてください

529(○口○*)さん :07/07/04 22:47
>>527
回線、スペック、AIのどれが一番の原因かは詳細を晒さないと判る人なんて居ない
毎回必ず起きる現象なら3,4の可能性は十分にあるが
「表示されないときがある」程度なら1〜4全てが原因になる

ラグの問題は基本的にどれか1つ対処すれば大丈夫って訳じゃないし
いつまで経っても付いて回る問題だから、改善したいと思うなら1,3,4全部改善すべし
まずは自作AIを一旦やめてノーマルのデフォで症状が起きるか試せ

>>528
どちらでも無い
計算すれば判るが起動直後のコールホムでも普通に数日分経過してたりする
前に逆算した時は確か鯖メンテ中に0カウントだった
今日のが気になるなら自分で計算してくれ

530(○口○*)さん :07/07/04 22:52
>>528
PCが起動してからの時間

531(○口○*)さん :07/07/04 22:53
>>529 さんの説明で理解できました
ありがとうございました♪
aiが起動してからの累積時間だとずっと勘違いしてました。

532(○口○*)さん :07/07/04 22:56
>>530 さんもありがとうです。8時間ラグナとは良いidですねw

533(○口○*)さん :07/07/04 23:12
>>529
まず簡単に試せそうな、デフォAIで連続テレポから試してみようと思います。
PCのスペックは推奨スペックを下回っているので、かなり怪しいです。
デフォAIで改善されなかったら、PCの新調も考慮したいと思います。
ありがとうございました。

534(○口○*)さん :07/07/04 23:28
>>531
そういえば前に逆算したのって1年以上前だなと思って
試してみたら>>530だった

535(○口○*)さん :07/07/06 19:39
現時点で
ASPD一番快適なんって何かな?
今こっこなんだが実感がわかん……他人のムゲンが早く見えてしゃーない

536(○口○*)さん :07/07/06 19:39
すまん……orz

537(○口○*)さん :07/07/07 10:15
どのバージョンの.NET入れたん

538(○口○*)さん :07/07/08 14:01
工体AI(修正版rev103)を使用している人にご相談。
ラヘルパッチ以降、Mobのいるマップに行くとこんなエラーが出るようになりました。
---------------------------
AI.lua error
---------------------------
(none):0: attempt to compare number with nil
---------------------------
OK
---------------------------

デフォAIにすると発生せず、工体AIそのまま(設定変更なし)ではエラーが発生します。
同じ現象が出た方、解決方法を教えていただけないでしょうか…。

539(○口○*)さん :07/07/08 14:04
>>538
そんなエラーでないんだが

540(○口○*)さん :07/07/08 17:47
工体のソースは見てないから推測でしかないけど、ラヘルmobIDとの比較演算でエラってるんだと思う。
>>538がラヘルマップでエラーが出て、既存マップで出ないならそーゆーことだと思う。

541(○口○*)さん :07/07/08 17:50
Mobデータとか、MAP判定とか
アップデートのたびに更新しないとならないファイルが結構あるからな工体は

542(○口○*)さん :07/07/09 07:20
工体で氷D行ったら全然攻撃しなくて苦労したぜ
Mobデータ自分で更新せんとだめなのかな
上の参考にしてIDは打ち込んどいたけど
どっかいい詳細データあるとこない?
まー取り敢えずは別の敵のデータでもぶち込んでお茶を濁すか

543(○口○*)さん :07/07/09 20:10
一応作ってみました(8割程度あってると思います)

1768 [[グルームアンダーナイト]],'b89c2298000d962175e276445f0g8h3i3j0k0l1m1n0o1p0q5880r9516s10t98u518v864w20x127y200z2880A3B224C275',
1769 [[アガヴ]],'b73c29620d9780e6622f7g0h2i2j0k0l1m0n0o1p0q103r1109s15t27u626v1133w35x145y300z768A1B125C217',
1770 [[エキオ]],'b69c34900d13560e430f7g0h2i2j0k0l1m0n0o0p0q750r1800s33t52u143v235w11x61y250z768A1B163C203',
1771 [[ヴァンベルク]],'b59c9988d4203e901f7g0h4i2j0k0l1m0n0o0p0q230r660s24t39u96v148w6x48y250z768A1B145C185',
1772 [[アイシラ]],'b 62c8297d3001e3001f7g0h4i2j0k0l1m0n0o1p0q89r733s11t12u343v578w19x103y300z768A1B110C194',
1773 [[ホドレムリン]],'b61c12180d6782e2022f6g7h3i2j0k0l1m0n0o0p0q845r1678s26t81u304v525w25x96y140z960A1B122C198',
1774 [[シーカー]],'b65c10090d5671e4278f0g4h3i1j0k0l1m1n0o0p1q723r852s17t34u740v1361w30x160y190z576A6B137C247',
1775 [[スノウィアー]],'b60c19230d5882e2699f0g1h2i3j0k0l1m0n0o1p0q770r1347s22t72u114v173w12x51y220z1020A2B126C187',
1776 [[シロマ]],'b42c6800d2230e1005f0g1h3i1j1k0l0m0n0o0p0q220r440s12t52u71v98w8x37y180z648A1B85C157',
1777 [[アイスタイタン]],'b60c38200d13872e7928f0g1h3i3j0k0l1m0n0o1p0q1090r1570s71t88u118v177w15x54y250z861A1B114C214',
1778 [[ゲイズティ]],'b55c12300d5758e2075f6g1h1i2j0k0l1m0n0o0p1q512r612s65t20u195v305w25x70y190z576A10B87C231',
1779 [[クトルラナックス]],'b98c4417000d2720050e1120020f2g1h4i3j0k0l1m1n0o1p0q1680r10360s40t82u799v1443w42x166y400z840A3B244C350',
1780 [[ムスキプラー]],'b57c4332d1706e1706f3g2h1i2j0k0l1m0n1o1p0q521r726s12t39u92v124w12x44y2000z672A3B130C224',
1781 [[ドロセラ]],'b 46c7221d2612e1022f3g2h1i2j0k0l1m0n1o0p1q389r589s10t27u52v75w13x30y2000z864A7B96C197',
1782 [[ロウィーン]],'b31c5716d1669e1266f2g4h1i2j1k1l1m0n0o0p0q298r377s0t48u89v121w7x42y200z840A1B90C173',
1783 [[ガリオン]],'b44c32240d10020e3368f2g4h2i2j1k1l1m0n0o0p0q336r441s11t59u118v177w12x54y150z864A1B116C191',
1784 [[スタポ]],'b23c666d332e221f0g2h2i1j1k0l0m0n0o0p0q135r370s90t15u26v32w5x19y300z936A1B54C121',
1785 [[アトロス]],'b82c1008420d295550e118895f2g7h3i3j0k0l1m1n0o1p0q2526r3646s25t56u227v347w25x77y150z600A2B189C246',
1786 [[X_アガヴ]],'b73c25620d0e0f7g0h2i2j0k0l1m0n0o1p0q103r909s15t27u626v1133w35x145y300z768A1B125C217',
1787 [[X_エキオ]],'b69c36900d0e0f7g0h2i2j0k0l1m0n0o0p0q750r1500s33t52u143v235w11x61y250z768A1B163C203',
1788 [[X_アイスタイタン]],'b60c32900d0e0f0g1h3i3j0k0l1m0n0o1p0q1090r1570s71t88u118v177w15x54y250z861A1B114C214',
1789 [[アイシクル]],'b38c10d5e5f0g1h2i1j0k0l1m0n1o0p0q241r1082s0t10u21v27w10x15y2000z1344A3B68C285',
1791 [[X_ガリオン]],'b44c32240d10020e3368f2g4h2i2j1k1l1m0n0o0p0q336r441s11t59u118v177w12x54y150z864A1B116C191',
1794 [[X_ロウィーン]],'b31c5716d0e0f2g4h1i2j1k1l1m0n0o0p0q298r377s0t48u89v121w7x42y200z840A1B90C173',

544(○口○*)さん :07/07/09 20:45
訂正)ムスキプラー→マスキプラー

545(○口○*)さん :07/07/09 22:59
>>543
乙。
早速組み込んでみた。行けるのは先になりそうだがな・・・。
ランドグリスゴーストが1765だから、2つほど飛んでるのか。
アイシクルとX_ガリオン、X_ロウィーンの隙間も気になるなあ。

546(*○口○)さん :07/07/10 04:00
http://himenomikoto.at.infoseek.co.jp/kulus_project/index.html#mobdata.lua
半年ぶりで編集に手間取って遅れましたが、ラヘルパッチ暫定対応しました。
とりあえず今は休みなs・・・zzz

547(○口○*)さん :07/07/10 10:37
>>546
乙です。
1780 マスキプラー、1781 ドロセラ、1789 アイシクルは非移動。
1782 ロウィーン、1783 ガリオンにルート属性ついてますがおそらくアクティブですね。

548(○口○*)さん :07/07/14 11:05
mobdata.lua更新したらAIlib.luaのエラーでたんですが

549(○口○*)さん :07/07/14 12:23
エラー出たじゃわからない。
具体的にどういうエラーメッセージでたのかも言ってくれ。

550(○口○*)さん :07/07/15 09:07
工体AIで質問なんだが、当方バニルで常にある程度の確立でスキル(カプリス)を使って欲しいんだけど
何故か初撃以外あんまり出してくれない。
一応config.luaいじってみてるんだけど、
たまに2発以上出してくれるものの確立は大分低い気がする。
常にある程度の確立で出してくれるようにするにはどうしたらいいんだろうか?

ちなみに今の設定は

SELF_SKILL = true,
SELF_SKILL_FIRST_ATTACK = false,
SELF_SKILL_PERCENTAGE = 0,
SELF_SKILL_BURST_PERCENTAGE = 20,

こんな感じになってる。

551(○口○*)さん :07/07/15 10:28
>>550
ざっと見たところ発動率の計算は
コンフィグでは調整できなくなっているようなので

event.lua内の335〜339行目あたり

1   local x = GetPercentSP( MyID )
2   local a = (x^2-x*2) / 100
3   local r = math.random( 100 )
4 -- a = a * ( a / 100 )
5   a = a / count  -- スキル試行回数にあわせて確率を下げる
6   TraceAI("Try Skill: a="..tostring(a).." r="..tostring(r).." sp="..tostring(x) )
7   if a <= r then
8     return
9   end

ここの2行目と5行目あたりをいじってみるといい。

552(○口○*)さん :07/07/16 14:26
少しわからない記述が出てきたので質問します。
function ExitEvent()
do
EXIT_TIME = 600

local x, y, timestamp = -1, -1, os.time()
ExitEvent = function()
MyOWNER = GetV(V_OWNER,MyID)
local x2, y2 = GetV( V_POSITION, MyOWNER )
if x ~= x2 or y ~= y2 then
x, y = x2, y2
timestamp = os.time()
return
end
if os.difftime( os.time(), timestamp ) >= EXIT_TIME then
os.exit()
end
end
end
end

これの ExitEvent = function()の部分はいったいどういう処理なのでしょうか?
なんとなくdoからendで繰り返すのかなと思いました。
便利な記述でしたら自分でも使いたいので、どなたか解説お願いします。

553(○口○*)さん :07/07/16 15:52
>>552
lua リファレンスを読みなさい・・・というのではあまりに不親切なので。
function() 〜〜 end の間を「ローカルな関数」として定義している記述です。
インデントとコメントをつけます。

ExitEvent = function() -- ローカル関数開始
 -- ここ以降、ローカル関数の中身
 MyOWNER = GetV(V_OWNER,MyID)
 local x2, y2 = GetV( V_POSITION, MyOWNER )
 if x ~= x2 or y ~= y2 then
  x, y = x2, y2
  timestamp = os.time()
  return
 end
 if os.difftime( os.time(), timestamp ) >= EXIT_TIME then
  os.exit()
 end
end -- ローカル関数終了

554553 :07/07/16 15:58
すまん、送ってしまった。追加記述。

注意点としては・・・
・上記の return 部分は、「ローカル関数からの離脱」であること。
 つまりx~=x2、 y~=y2 となった(言い換えるとオーナーが移動した)なら、timestampがローカル関数の戻りとなり、
 結果 ExitEvent に代入される。
・このローカル関数自体が、ExitEvent()という関数の中身であること。
 関数名と同じ変数に値を代入した場合、その関数の戻りがその値になる。
 つまり前述の「オーナーが移動した」条件が満たされると、実質ExitEvent() の戻りが os.time() になる。

これでわかるかい?

555553 :07/07/16 16:07
あ〜。ごめん、嘘書いた。554の書き込みは間違い。

・上記の return 部分は、「ローカル関数からの離脱」であること。
 つまりx~=x2、 y~=y2 となった(言い換えるとオーナーが移動した)なら、timestampが現状のos.time()値になる。

・このローカル関数自体が、ExitEvent()という関数の中身であること。
 関数名と同じ変数に値を代入した場合、その関数の戻りがその値になる。
 実際にはローカル関数での戻りは未定義なので、実質ExitEvent() の戻りは nil。

失礼しました。

556(○口○*)さん :07/07/16 16:13
停止状態10分で自動終了処理ってのはわかるが部分的だしなんかすっきりしない感じだな。

ExitEvent = のとこはローカルでこれを定義してるのと同じだと思うけど。
function ExitEvent()
    MyOWNER = GetV(V_OWNER,MyID)
    local x2, y2 = GetV( V_POSITION, MyOWNER )
    if x ~= x2 or y ~= y2 then
        x, y = x2, y2
        timestamp = os.time()
        return
    end
    if os.difftime( os.time(), timestamp ) >= EXIT_TIME then
        os.exit()
    end
end

557(○口○*)さん :07/07/16 16:20
まあローカル関数定義なんかしなくても同じもの作れるわけで、
これ使う利点とかを説明してもらえると助かると思う。

俺はなんとなく仕組みはわかったが、このやり方の何がいいのかさっぱりわからん。

558(○口○*)さん :07/07/16 16:32
これってさ、要は、
EXIT_TIME = 600
local x, y, timestamp = -1, -1, os.time()

↑のこの二つを初回実行時のみ実行させたいがためだけの処理だよね。
もうちょい分かりやすい方法ありそうなもんだったのに、
なんでここだけわざわざ関数上書きなんて使うのか不思議だった。処理が軽くなるんだろうか?

559(○口○*)さん :07/07/16 16:39
ローカル関数のメリットは、ローカル変数が何故使われるのかと同じ部分だと思う。

たぶん一番大きいところは、ローカルな定義だから他の関数と干渉することがない、
というところじゃないかな。

ただまあ個人的にはあまり見やすいとは思えないので、使いづらいと思う。

560552 :07/07/16 17:10
ローカル関数というものだったのですか。
少し時間をかけてにらめっこしてみます。
どういう意図で書かれたかがようやくわかりました。
皆様丁寧にありがとうございます。

561(○口○*)さん :07/07/16 17:52
これはローカル関数じゃない。
関数が実行されたときに関数定義(しかも自己書き換え)をしてるだけ。

ローカル関数にしたければ、
local f; f = function() end
local f; function f() end
local f = function() end
local function f() end
これのどれか。今回はlocal宣言がないからグローバル関数。

>>558
・どこから呼んでも、初使用時に初期化される
・初期化済みかのチェックがいらない
・x, y, timestampがクロージャ
 関数の外部からは見えないけど、内部からはグローバル変数的に扱える
 (つまり値を共有する)

562(○口○*)さん :07/07/16 17:55
>>557-55
単におもいついた機能をその都度末尾に追加してるだけとみた。

563(○口○*)さん :07/07/16 20:15
宣言してないしローカルじゃなかったな。
初回実行で初期化処理を実行,その後に継続する処理を上書きしてるだけだな。
適当なこといってすまんかった。

564(○口○*)さん :07/07/16 21:57
あんま良く分かって無いけど、ローカル関数定義使わずに同じ事しようとすると
function ExitEvent() 〜 end の外部に ExitEvent() を呼び出す以外の記述が必要だからじゃない?
1つの関数で外部に特別な記述無しに自分で初回実行を検出できるってのが利点かなと思った
確かこの手は工体の人が得意だった気がする

565(○口○*)さん :07/07/16 21:58
ローカル関数定義 じゃなくて 自己関数上書き だったねorz

566(○口○*)さん :07/07/16 22:09
ゴメンもうちょっと追記
>>561でも出てるけど関数の外部から見えないって事は(必要かどうかは別として
予期せぬ変数の書き換えを防げて、Cで良くやるメモリリーク見たいなのが無いってのと
作者が工体の人と仮定すれば、自分とこで使ってた寝落ち関係の処理を
ライブラリみたいな感じで他のAIにも組み込める様にしたのが>552ってだけだと思う

567(○口○*)さん :07/07/17 20:26
取り巻き用のグリスゴーストが増えるみたいだからmobIDがまた一個増えるのかな。

568552 :07/07/17 20:49
しばらく考えた末、やっと理解できたような気がします。
初回に呼ばれた時は
local x, y, timestamp = -1, -1, os.time()
を実行するが、その下の
ExitEvent = function()
によってfunction ExitEvent()自体が
function ExitEvent()
  MyOWNER = GetV(V_OWNER,MyID)
  local x2, y2 = GetV( V_POSITION, MyOWNER )
  if x ~= x2 or y ~= y2 then
    x, y = x2, y2
    timestamp = os.time()
    return
  end
  if os.difftime( os.time(), timestamp ) >= exit then
    os.exit()
  end
end
書き換わり、次回からはこれが実行されるということでよろしいですか?
グローバル変数が減らせるのでスッキリさせたいときに使ってみようと思います。

569(○口○*)さん :07/07/17 21:06
それはスッキリしているのか・・・

570(○口○*)さん :07/07/17 21:32
そういうことでOK
ただ落ちるまでの時間を変えたりを考えると EXIT_TIME はグローバルの方が使いやすい
スッキリしていると思うかは人それぞれ、グローバルが2~300個あっても気にならない人も居るし

571(○口○*)さん :07/07/17 23:01
グローバル変数と関数を分けたい人とか
関数と設定ファイルだけ分けたい人とかまあ人それぞれだろうね。

572(○口○*)さん :07/07/19 00:04
取り巻きのグリスゴースト、某所によると1891かな
まあホムで対峙する事は滅多に無いけど

573(○口○*)さん :07/07/23 02:01
もフ

574(○口○*)さん :07/07/23 02:11
某所ってソースもお願い。

575(○口○*)さん :07/07/23 04:48
>>574
どこぞのサポートしないBBSより

[0x0763]
Name=X_ランドグリスゴースト

0x0763 = 1891

576(○口○*)さん :07/07/23 08:47
そのどこぞがどこですかって話ですよ。

577(○口○*)さん :07/07/23 10:01
>>576
お前は故意に読み飛ばしてるのか?書いてあるだろうが。
ある程度信用できる情報。信用できないなら自分で調べてくるんだな。

578(○口○*)さん :07/07/23 10:25
何だ、サポートしない掲示板って名前か。
故意に読み飛ばすも何もこれわかりにくいよ。

579(○口○*)さん :07/07/23 12:09
既出だったらすいません。
みなさんエディタは何を使っているのでしょうか。
私は使い慣れているのがPeggyなので簡単なキーワード定義ファイルを作成して
必要に応じて追記、
Peggyで編集>LuaEditで確認という手順をとっているのですが使い勝手がイマイチなので(´・ω・`)

580(○口○*)さん :07/07/23 12:27
http://alchemist.s214.xrea.com/index.php?cmd=read&page=FAQ%2FHomunculus#content_1_39
こっちでいくつかでてるけど俺は秀丸。

581(○口○*)さん :07/07/23 18:42
質問があります。
枝mobと変化mobのIDに何かしらの特徴はありますか?
よろしくおねがいします。

582(○口○*)さん :07/07/23 18:56
NPCの特徴として番号が100000以下ではありますが他に特にありません。

583(○口○*)さん :07/07/23 23:11
>>579
俺はダンゼンnotepad.exe
確認だのバグチェックだのはログインして行うオトコマエデバッグ

584(○口○*)さん :07/07/23 23:30
notepadはタブ幅に問題があるからなー
3階層くらいのインデントでもすごいことになる
あれって変更できないのかね

>>579
秀丸かなー

マクロ組んで、ソース中に一回しか出てこない変数と
グローバルなのに関数内にしか出てこない変数だけ刎ねる
あとはコールホムでデバッグするので、統合開発環境は使ってない

585(○口○*)さん :07/07/24 01:04
無印エディタってやつを使ってる。複数ファイルをタブで同時に開けて軽いのがいい。
本格的なプログラム組む人には物足りないんだろうけど
自分はせいぜいホムAIとかHTMLいじるぐらいだから十分かな。

586(○口○*)さん :07/07/24 12:04
Gvでホムを使うと重くなると見ました。
今はGvAIを使っています。特に重さが気になることはないです。

カプリスを打たせているだけなんですが、通常攻撃で粘着させたいと思います。
Gvではctrl + クリックが効かないように、ホムも永続攻撃はできないんでしょうか?

587(○口○*)さん :07/07/24 12:26
ホムにCTRL攻撃と同じ事をさせるにはそういう動きをAIで定義すればいい
Gvだとその動きは主人の行動阻害(ラグ)になり易いからGvAIでは制限が掛かってるはず

粘着は出来るけど通常狩りのASPDで攻撃させると余程過疎のGvでなければラグで動けない

588(○口○*)さん :07/07/24 12:34
やっぱりラグで動けないですか・・・
ありがとうございます。

589(○口○*)さん :07/07/24 22:31
体感で多重ATTACKとか移動キャンセルとかやっていたんだが、ちゃんと計測してみた

0移動キャンセル ホムの現在地にNOVEを送る
移動キャンセル 一歩近づいたり離れたりしながら攻撃する
多重ATTACK1 AIの最後でATTACKを追加
多重ATTACK2 AIの先頭でさらにATTACK送信

これらを組み合わせてどれが良いか調べてみた
使用ホム 未進化原種バニルLV82
ターゲットはデーモンパンク素殴りの平均撃破タイム

何もしないで普通に攻撃 約45秒
多重ATTACK1      約38秒
多重ATTACK2      約38秒
0移動キャンセル      約30秒
多重ATTACK1+0移動キャンセル1回 約30秒
多重ATTACK1+0移動キャンセル2回 約28秒
多重ATTACK2+0移動キャンセル1回 約29秒
多重ATTACK2+0移動キャンセル2回 約29秒
多重ATTACK2+0移動キャンセル3回 約28秒
移動キャンセル 約32秒

この結果からすると、多重ATTACK11回、ATTACKごとに0移動キャンセルが最速っぽい
パケット送信を考えると、多重なしで0移動キャンセルも良いかもしれない

590(○口○*)さん :07/07/24 23:05
度々言われている事だけど計測してもその結果はその環境でしか通用しない
極類似しているスペック、常駐ソフト種、回線状況、接続時間帯なら目安になるんだけどね
折角だからサンプルとして計測環境も書ける範囲で書いとくといいと思う

591(○口○*)さん :07/07/24 23:49
同じ環境でしか通用しないとかどんだけごねる気だよw
計測報告した奴にかける最初の言葉はもっと別のものだろう
例え自分に無益であろうと誰かのプラスになるようにと書かれたものならな

>>589

多重実験はしてないが俺のほうでも移動キャンセルとZERO移動キャンセルの結果は似たようなもんだった
回線速度は同じ光だが稼動スペック割れしてるPCと推奨スペックの3倍はあるPC両方で
移動キャンセル<ZERO移動キャンセル
という結果だった
スキルアタックを考えると鳥バニルは、どんな条件だか知らないが環境の違いによって
多少ASPD下げることになってもZERO移動決定かねぇ

592(○口○*)さん :07/07/24 23:56
>>589
とりあえず乙。
しかし平均時間の計測方法とか、サンプル数とか気になる点は多いな。
何匹分の平均かしらんが1秒差じゃ誤差の可能性もあるんじゃないかね。
小数点以下も出来れば出した方がいいと思う。

593(○口○*)さん :07/07/24 23:59
移動によるモーションキャンセルのが早いと思ったんだけど0移動のほうが早いのかな。
まあ、動かずにそこそこの速度になれるならSP回復できるし、タゲ移りにくいのはありがたい。

594(○口○*)さん :07/07/25 00:03
進化鳥みたいなコマ数多いのだとどうなるかも知りたいとこだなあ。

595589 :07/07/25 00:26
情報が足りなくて申し訳ありませんでした。
回線はADSL 速度は下り4Nくらい
PCスペックはアスロンXP1700+ メモリ512M
AIはデフォベース自作
計測方法は、MyEnemyにデーモンパンクがセットされるときに現在時刻を記録
死亡確認時に現在時刻からさっきの値を引いたものをTraceAiで記録
サンプル数は、1トライあたり5回ほど、ブラウザで随時確認しながらでしたので、5回ほどで納得してやめました。
サンプル数が少ないのが気になりますが、私の環境では効果の割合が
0移動キンセル>移動キャンセル>多重アタック
であることが確認できたので計測を終了しました。

596(○口○*)さん :07/07/25 03:51
春先だったかGetTickとos.timeがTraceAIを使うとかなりずれるって話題に出たてたけど
TraceAIは空のtxtから始めて死亡確認時のみに実行してるのかな?
あと一応だけど戦闘時間の長さから来る赤missと、確殺攻撃回数のズレは考慮してるよね?

戦闘時間記録はこっこの記録部分を若干手を加えて
検証モードフラグ+1001.txtに分割+死亡記録時に累計平均も計算、とかすると
他の外的影響減らして毎回の確認が必要なくなって緑草の計測やった時便利だったよ

597589 :07/07/25 07:37
>>596
毎回TraceAi.txtを削除して空ではじめており、デーモンパンク死亡時以外は記録しないように細工してあります。
誤差が減るように戦闘時間が長くなるデーモンパンクを選択しました。
途中で石化した時の記録も除外してます。
5回計ると、振れ幅2秒以内だったし、目的は効果の程度が知りたいだけだったのでこれで良しとしました。
正確な検証は必要な人が各自でやってください。
あまり長らく滞在するのもなんですのでここらでROMに戻りたいと思います。

598(○口○*)さん :07/07/26 07:05
引数にテーブルを入れるには以下のとおりでよろしいのでしょうか?

function a (oppai)
 処理
end

function b ()
 local t = {1,2,3}
 a(t)
end

//おちまい

oppai はテーブルになっているのでしょうか

599(○口○*)さん :07/07/26 07:36
>>598
なる。
勝手に展開されたりはしないし、そうしたいならこうする。
a( unpack(t) ) --> a(1,2,3)
…けど、tableなoppaiってまな板?

余談だけど関数も渡せる。
function foo(f)
 return f(2,3)
end

function add(a,b)
 return a + b
end

multiply = function(a,b)
 return a * b
end

result1 = foo(add)
result2 = foo(multiply)

600(○口○*)さん :07/07/27 04:23
放置狩りスレの次スレが立ってないので一時非難所あげ

601(○口○*)さん :07/07/27 04:28
避難所じゃないよここは。
自分で立てておくれ。

602(○口○*)さん :07/07/27 10:04
ホム放置狩りスレ11
http://enif.mmobbs.com/test/read.cgi/livero/1185478380/

立ってたよ、グレーゾーンの行為(自動PPなど)はこちらのスレへどうぞ

603(○口○*)さん :07/07/27 11:56
>>599
レスありがとうございます.
勝手に1番目の値を渡されたり,長さが渡されていたりしないか不安になっていました.

追加で質問なのですが,横殴り対策に,他人をタゲっていない敵を判断するという目的で

local target = GetV(V_TARGET,敵id)
local own = GetV(V_OWNER,ホムID)
if (target == 0 or target == own or target == ホムID) then -- タゲ無し,ホム,主人のどれかである
(中略)
end

としたのですが,
GetV(V_TARGET,ID) で返る値は最後にターゲットした相手という仕様のため,
最後に叩いていたのはホム(ID:a とする)という状態で,ホムが死亡し再生成をした場合,
その際にホムには新しい ID が再び割り当てられ(ID:B),その状況で横殴りこの判定処理を行うと,
相手のタゲは以前のホムの ID(a) となっているために,現在のホムの ID(b) とは違うということになり
他人をタゲっているとなってしまい,攻撃を行わないとなってしまいます.

アクティブの敵はすぐに誰かしら殴ってタゲは再割り当てされるので,
基本的に非アクティブを適当に殴らせているときぐらいにしか起きなくてどうでも良いといえば
どうでも良いのですが,少し気持ち悪いので何か良い回避方法は無いものでしょうか?

604(○口○*)さん :07/07/27 11:59
工体AIのページから全部DLできないようになってしまったみたいなんですが
最新版(といっても古いですが)とROAIPlusお持ちの方
どこかに上げてもらえませんでしょうか?
HDDクラッシュしてしまいバックアップもしてなかったので困っております(;つД`) 

605(○口○*)さん :07/07/27 12:28
>>603
ターゲットのIDが画面内に無かったら横殴り防止は無視、
という判定を増やすといいよ。
PC相手の時が不安ならID100000以下限定にするも良し。

606(○口○*)さん :07/07/27 12:38
>>605
なるほど!
その方法で実装してみます

607(○口○*)さん :07/07/27 13:02
>>604
工体研究所AI私的修正版 で探すといいよ。

608(○口○*)さん :07/07/27 20:00
10万以下のIDだけで組むと他のホムの時困るから
画面内と併用した方がいいよ

609(○口○*)さん :07/07/27 21:30
俺はそのつもりで書いたんだけどね。
画面外でも十万以上は不許可にしたままの方がいいかもね、という意味。

あとついでにターゲットがMobの時、
つまりMobが他Mobをターゲットしてる時も除外した方がいいかもね。
ノンアクMobが他MobにヒールやPPかけると
ターゲットがそのMobになるから。
こちらから主人が攻撃する分には問題ないけど
アクティブに攻撃させたい場合は
そういった相手に横殴り防止が作動しちゃう。

610(○口○*)さん :07/07/27 22:06
画面内にいるか、タゲがあるかは
target = GetV(V_TARGET,v)
if target > 0 and GetV(V_MOTION, target) > 0 then
とか入れて0以下は捨てる感じでいけばよかろ。

611(○口○*)さん :07/07/27 22:08
間違った。こうか。

if target > 0 and GetV(V_MOTION, target) ~= -1 and GetV(V_MOTION,target) ~= MOTION_DEAD then

612606 :07/07/28 00:01
>>608は,10,000 以下除外仕様のみの場合だと起こりえる問題.

他人のホムをタゲっていても殴ってしまう.
ホムの ID は 10,000 以下であるため.

>>609(前半部)は,画面内除外仕様のみの場合に起こりえる問題.

画面内にターゲットがなかったとしても,何らかの理由で敵を引っ張っている
というシチュの場合などがあり,トラブルになるかもしれないため.

という意味だと読み取ったのですが,問題ないでしょうか?

>>609(後半部)
配布されている IA をちょこっと参考にと覗かせてもらったときに
敵をターゲットとした際の処理はあったので,入れてありましたです.

>>610
ターゲットが画面内にあるかのチェックはループ処理でしているのですが,
そちらの方が軽くはありそうですね…うーむ

613(○口○*)さん :07/07/28 00:09
突っ込んでいいよな
10万=100,000

>ループ処理
索敵のGetEnemyでは最低2回ループが必要だから
最初のループでプレイヤー、ホム、プラント、mobとかIDをkeyにした配列を組んで
2つ目ループで距離以外に画面内に居るかチェックするとループ2回で済む

614(○口○*)さん :07/07/30 18:03
現在49Lvの進化原種フィーリルで
こっこAIの移動モーションキャンセルを設定していて、

たしかにAspdは早くなっているのを実感するのですが、
SPが回復しないのでムーンライトが出ません。

そこで質問なのですが、実際のところ
モーションキャンセルでAspd増加・ムーンライト無し と
モーションキャンセル無しでムーンライト使用   だと
どちらが強いでしょうか?
自分で何度も比べてみたんですがいまいちわからなくて・・

そもそも、もっとホムが強くならないとモーションキャンセルの良さが
発揮されないんですかね?どなたかご教示お願いします。

615606 :07/07/30 18:56
>>613
ループ処理自体しない610-611法の方が良いのではと思ったわけであります

>>614
50レス以内にゼロ移動の話が出ているというのに…

616(○口○*)さん :07/08/01 02:26
工体私的修正版を使っている宝剣ケミ・クリエさんに質問

mobがこっちに向かって移動してくる間に、そのmobに手動FB・CBをすると
ホムがとんでもない方向に移動してmobを攻撃してくれないのですが
他に同じ現象の起こっている方はいますか?また改善策が分かればお願いします。

ちなみにメンテ前は#16を使用していましたが特に問題はありませんでした。
メンテ中に#18に更新。上記の現象が起こりました。
#16を導入し直してみたのですがダメでした。
また、くまー、こっこの両AIでは大丈夫でした。

617(○口○*)さん :07/08/01 19:56
導入し直してダメってことは工体関係ないんじゃね…?

618(○口○*)さん :07/08/02 18:24
カプリスって地属性出たときディレイ短くなるのかしらん

619(○口○*)さん :07/08/02 18:24
ってスレ間違えた!するーで

620(○口○*)さん :07/08/02 18:48
本スレにも書いたけどESのディレイは転生パッチで他ボルトと同じに。
Lv5で一律1.8秒。

621(○口○*)さん :07/08/03 11:27
実はtargetはかなり挙動が怪しいので頼りきりはおすすめできない

横殴り防止はGetEnemyのactorループ内でIsMonsterに反応したら
別actorループを起こしてそのmobの近くに他プレイヤーがいないかチェックさせるのがいいよ
他プレイヤーが詠唱中なら12セル以内、それ以外ならその半分以内位でタゲ取られてると判定

さらにmob追尾中にこの他プレイヤーチェックをやらせるとかなり精度が高くなるね

622(○口○*)さん :07/08/03 11:30
あ、もちろん同時にV_TARGET判定もやらせるよ

623(○口○*)さん :07/08/03 13:52
>>621
V_TARGETの挙動は怪しいというか、
最後に何か行動を起こした相手を返すで間違いないと思うんだが

624(○口○*)さん :07/08/03 14:27
mobのV_TARGETは攻撃スキル詠唱モーションのときだけ拾って「攻撃されている」と判断すると安心。

625(○口○*)さん :07/08/03 20:27
mobがターゲット指定スキルしか使わないならそれでいいんだが
速度とか召喚とか攻撃モーション以外は何かしら信用できない部分がある

オークに限って言えば喫煙のモーション(3ダメ出る奴)もダメージと取り違えたりする

626(○口○*)さん :07/08/03 20:33
スモーキングは自分指定攻撃だから単に、V_TARGET==vのときは除外すりゃいいんじゃ?
自己ヒールとか他mobヒールとかも対象がmobなら除外ってのやりゃいいし。

確かに対象指定でないこともあって完璧ではないけど
だから何もしない、じゃあモーションチェックするより間違いが多くなるわけだし。

627(○口○*)さん :07/08/04 00:45
>>625はそれで判定するなって事じゃなくて
その判定だけで安心するなって事じゃね?
判定方法は過去にも色々例が出てるし1つ2つやって安心だなんて楽観せず
3つでも4つでも組み合わせて精度は上げられるだけあげておいた方が良いよ

あと序に攻撃モーションの時のタゲも弓mobが相手だったりすると
mobのターゲットが自分の画面内に居ない事があるから
タゲ更新されずに判断に失敗して横殴る事がある
画面外から画面内へのmobへの弓職や魔法詠唱も然り