誰が新スレなんかたてるかよwww ねーよwww
●AIチート上達手順 1.策敵範囲拡大 2.オートヒール範囲拡大 3.スカだけ拾い 4.三人拾い 5.JOB指定拾い 6.JOB指定スキル使用(タゲあり) 7.JOB指定スキル使用(タゲなし) 8.タゲ共通化 9.ITEM使用 10.オートバフ使用(使用間隔設定付き) 11.リソースエリア節約 以上は過去ログ参照
>>3 1〜10は分かるんだが、11のリソースエリア節約ってなんだ?
出来るだけ短いプログラムにするってこと?
改AIばれて晒される奴増えてきたなw トポロとかビアで放置してる大手党員の挙動チェックするかな。
古代のチケットきれて外に出されてもキープ維持してる奴いるよな。
>>1 乙です
前スレ
>>982 乙です
>>6-7 確かに多いですねぇ
だが、一般の方々は改AIくらいで何をそんなに騒いでいるのだろう。
ここまで改AIが浸透しているんだから、監獄がどうとかどうでもいいと思うが。
2階直行への確立が下がって、イラついてるのかな。
一般ざまあwwwwwwwwww とでも言ってみようか。
前スレ996 997と998はまぁスイッチを書こうとしてるんだよな。 実際の拾う動作は999のNEARITEMだけど、LIB_NEARITEMは読んだか? ヒント:デフォルトではハーベストモードでアイテム拾った後は棒立ちになる。 それから997だが、これだとg_auto_getItemは1以外にならない。
みじんこのブログをデザインいじったからたぶん壊れて表示されてた人も正しく見えると思う。 IE7と一部のFirefox?で変だった模様。
みじんこぶろぐのおかげで彼氏できた
var Switch = 0; //AUTO GET ITEM CHANGE SETTING func SCR_AI_LIB_CHANGE_SETTING_AUTOGETITEM() { // declare variables var g_auto_getItem = 0; g_auto_getItem = g_auto_getItem + 1; if(g_auto_getItem >= 6){ g_auto_getItem = 0; } SysMsg('[Setting Change]Auto Get Item Setting :: ' .. g_auto_getItem); SysMsg('0:Disabled 1:Adjacent only 2:Lisa only 3:Gracielo only 4:Leader only 5:Everyone'); } どうすれば1〜0 まで変えていけるんだでうsか'A`) いじったらログでないようなった
>>13 を要約すると
グローバル変数でSwitchを定義
☆
AUTOGETITEM関数を呼び出すと、まずg_auto_getItemをローカル変数で定義し0で初期化。
g_auto_getItemに1を加える。(つまり1になった)
☆
この関数を呼び出すたびに☆の間を毎回実行するのわかるよな?
みじんこぶろぐ、大体思いついてたの書き終わったんだけどなんかネタないかな 同職業の分離かね・・・前スレで少し話題になってたけど俺理解してないんだ(´・ω・`) g_self1〜3に値をセットする関数を自分で作って、ifでGetAiIndexと比較すればいいのか?
構造体の利用についてはなんか情報ないんかね・・・・ 好きなように構造体定義して使えたら、もっとAiすっきりするんだけれども
var gTarget = nil; // Near Target Check func SCR_AI_LIB_NEARTARGET(self, selfAi) { if(gTarget != nil && IsExist(gTarget) == 'YES'){ SetAiTarget(selfAi, gTarget); return 'ChangeTS_BATTLE'; }else if( gTarget == nil){ var curTarget = GetNearAtkableEnemy(selfAi, vAttackRange); if( curTarget != nil ) { //saved grobal target gTarget = curTarget; SetAiTarget(selfAi, gTarget); return 'ChangeTS_BATTLE'; } }else if(IsExist(gTarget) != 'YES'){ gTarget = nil; return ; } } タゲ共通化って、ニアターゲットで共通化してアタッカー以外も同じ関数使ったほうが便利じゃね? 条件分岐ちょっと考えなきゃだけどな
あ、変なの残った。 vAttackRange は可変にしてあるoption.keepRangeね
なるほどね curTarget必要なくね?あと最後のgTarget = nilも。
curTarget は個人的にあった方が分かりやすいからこれでおk 最後のgTarget=nil はとっても重要。 実体が無いのにターゲットしてしまう場合 (エリア移動したのに前のエリアのターゲットとか)の gTargetの初期化なんで 無いとエラーで落ちてしまうぜ。
あとはアサルトモードのときの挙動も条件で通常動作するとかにしとけばおk とにかく、方法は1個じゃないって事なんです。ミジンコの皆さん。完成形は自分で書きたいように書いて動作することです。
//saved grobal target って表現が変じゃね?grobal targetに保存するっていう意味でsave使うなら過去形なのは変
本気で過去形だと思ってるのか?w
grobalって何?
コメントなんだし放っといてやろうぜwwwww 勢い余ってうpしたのに涙目な結果でざまぁwwww コードは参考になったからそれでいいよwwwwwwwwざまぁwww
これだと、対空できないキャラが飛んでるキャラタゲったり、 場合によっては不安定になったりすると思うが。
うぁ・・・涙目・・・・・・ 俺のソース切なさ全開だな・・・
>>27 えっと、NearAtkableでとってきてAiのターゲットにセットして返してるだけなんで、
近接キャラはAtkableでnilを返す滞空をタゲッたりしないと思うよ。
共通ターゲットが滞空にセットされてたら共通化でタゲっちゃうけど
攻撃の部分は通常AiのAttackTargetに任せてるから、あとはそっちで判断しればいいんじゃないでしょうか
今まで出てる方法でも共通化タゲが滞空の敵にあったら近接もそれ攻撃しようとするんじゃないの?
IsAbleToAttack(selfAi)つかって、攻撃できなかったらその場でタゲ再取得してセットして返せばいいんじゃね?
○○の場合は共通タゲを使用しない。 とかなんか複雑にしてるだけだな。。。共通化の先にある1個の形なだけだな
だよね。そこまでは入れなくていいや。
関数一覧ってどっかのファイルに格納されてたりしない? あとGetAiIndexについて誰かkwskお願いします。
自動収集をスムーズにしたいんだけどうまくいかない・・・ ライブラリのpick item項目にsleep入れたんですが 拾ってから次に移るのにかかる時間でした
ゾンビアイテム回避=収集前にsleep入れる スムーズ・・・?どういうのを言いたいんだろう
目の前に出たアイテム空中キャッチ防止です func SCR_AI_LIB_NEARITEM(selfAi) { var nearItem = GetNearItem(selfAi, 900); if(nearItem != 0){ sleep(600);PickItem(selfAi, nearItem); ChangeTacticsAi(selfAi, 'TS_HARVEST_PICK'); return 'ChangeTS'; } } sleepの場所が違うんだと思うんですが
俺はそれにしてから一度もゾンビアイテムでてないぞ。sleep(800)だけど。
ゾンビアイテムは出ないんですが 空中キャッチだけは治らないんですよねぇ どうみても目の前にアイテム出たらすぐ取る→sleep分だけ停止後→次のアイテム の無限ループって感じです
俺みじんこだからよくわかんないけど じゃあLIB_NEARITEMに飛ばす前にsleepいれたら?
んー変わんない・・・ もっと探ってみます ありでした
前から思ってたんだけどタゲ共通化する必要性は何?
バカだなお前w↑
はぃぃぃいいI!?
シージキャノンのIDどなたかお願いします
話題の無限ループって怖いなwwwwww 過去見れば分かるけど、バグアイテムの発生はPCスペックとかネットワークラグとかで 発生要因が色々あるから一概にいえないですよ。 拾うところで対処するなら、拾う前にsleep入れる バグアイテム発生した後で対処するなら、拾う動作のループのリミットを決める こんな感じがトレンドだと思う ファイターが勝手に敵を索敵する → 一人走りしてどっか行く タゲ共通化 → 3人で団体行動、共通ターゲットなので火力集中で個体殲滅速度うp こんなところかね
>>44 みじんこぶろぐで晒してあるからみてこいよ
ホセです・・・お願いします ジャックはいらないです
誰が教えてやるもんか 11315 SiegecannonShot
おお!即レスありがとうございました
円滑なコミュニケーション過ぎて自演に見えてきたwww
高級シルバーコントローラーレベル 96 - 編入キャラクターのみ使用可能 人形を操縦する時、使う高級シルバーで作ったコントローラ。人形の攻撃等級と防御等級が上がる。 [召喚類攻撃/防御等級 +1] iesみてたらこんなんはいってたwwいらねぇww ビキのスタンスのスキルIDってどこにのってんの?見当たんなかったんだけど
普通にiesに入ってるよ
datatable_stance.iesであってる?
見つけた。ies.ipfの中身の1900個のファイルを端から見ていったぜ・・・w
何をいまさら
みじんこだもの
ホセの自動攻撃についてなんですが パペットのTS_KEEPに // Auto Cannon if(job == 'Jose'){ if('ChangeTS_BATTLE' == SCR_AI_LIB_NEARTARGET(self, selfAi)){ ChangeTacticsAi(selfAi, 'TS_KEEP_BATTLE'); return; } } パペットのキープバトルをアタッカーを元に
SCR_PUPPET_TS_KEEP_BATTLE(self) { sleep(100); // start log AiLog('ATTACKER_TS_KEEP_BATTLE : Start!!!'); // declare variables var selfAi = GetAiActor(self); var prevTS = GetPrevTS(selfAi); //Hold Check SCR_AI_LIB_UNHOLD(selfAi, prevTS); // Attack Target SCR_AI_LIB_ATTACKTARGET(selfAi); // Main Loop while(1){ //Common Target Check var layer = GetMyAtkLayer(selfAi); if(layer == 2){ gTarget = GetAiTarget(selfAi); } if(gTarget == nil || IsExist(gTarget) != 'YES'){ gTarget = GetAiTarget(selfAi); } SCR_AI_LIB_ATTACKTARGET_CHECK(selfAi,gTarget); // User Skill Check
過去スレ見たんですが アタッカーが攻撃を行う、Attack(selfAi,gTarget);の次に UseSkill(selfAi,gTarget,[シージバーストのID]); となってました。が、Attack(selfAi,gTarget);を探したんですが見つかりませんでした LIBのどこにあるのでしょう
Attackっていう関数は見えないところだと思うんだけどな てかそれって必要なの?UseSkillだけでいいように思えるのは俺がみじんこだからだろうか
ためしにやったけど 自動キープが解除された。。。 んんんん〜
みじんこ君かわいいな。
死ね塵w
サーセン調子のりました('A`)
本スレの皆さん、なんだかんだいいながらもぶろぐのなか結構見回っててワロタw やっぱみんな興味あるよね・・・w
\___________/ ○ 。 . 彡川三三三ミ _ 川川 ::::::⌒ ⌒ヽ /  ̄  ̄ \ 川川::::::::ー◎-◎-) /、 ヽ .川(6|:::::::: ( 。。)) |・ |―-、 | , ―-、川;;;::∴ ノ 3 ノ q -´ 二 ヽ | はぁ・・・ | -⊂) \_;;;;;;;;;;;;;;;;ノ ノ_ ー | | | ̄ ̄|/ (_ ∧ / 、 \ \. ̄` | / ヽ ` ,.|  ̄ | | O===== | `− ´ | | _| / | | (t ) / / |
皆自分のやり方と比べてるだけだろ。
お前らもなんだかんだでみじんこ AIじゃなくdllいじってBOT作った俺こそ勝ち組
\___________/ ○ 。 . 彡川三三三ミ _ 川川 ::::::⌒ ⌒ヽ /  ̄  ̄ \ 川川::::::::ー◎-◎-) /、 ヽ .川(6|:::::::: ( 。。)) |・ |―-、 | , ―-、川;;;::∴ ノ 3 ノ q -´ 二 ヽ | はぁ・・・ | -⊂) \_;;;;;;;;;;;;;;;;ノ ノ_ ー | | | ̄ ̄|/ (_ ∧ / 、 \ \. ̄` | / ヽ ` ,.|  ̄ | | O===== | `− ´ | | _| / | | (t ) / / |
凄いな。お前凄いよ。勝ち組に間違いないよ。俺尊敬するよ。マジで。 だってただのゲームで必死に有利になろうとしてるんだろ。マジで尊敬するよ。
スゴススゴス
>>70 凄いよ。
>>70 凄いよ。勝ち組だよ俺も尊敬するよマジで。
ゲームで勝ち組(笑)
func SCR_AI_LIB_AUTOPOTION(selfAi) { var need = GetNeedHealFriend(selfAi,1,50); var layer = GetMyAtkLayer(selfAi); if(need != nil) { if(layer == 1) { UseItem(0,0); } else if(layer == 2) { UseItem(1,0); } else if(layer == 3) { UseItem(2,0); } } } キープに // AUTO POTION CHECK SCR_AI_LIB_AUTOPOTION(selfAi); 突っ込んだらエラー落ちしちゃいます。 ここをこうすれば治るという感じでヒントお願いします
keepいじったらできました すまそ
layer == 3 って存在したっけ?
人が画面ないに移ったらログオフとかできない?
できるよ
VMwareで仮想化すれば多重起動できる? OS 2ついるけど。
無理
82 :
ネトゲ廃人@名無し :2008/02/01(金) 15:49:16 ID:SGGFOaxo
>75 GetMyAtkLayerって、キャラクタスロット番号得る関数じゃないとおもったけど
>>75 何やりたいのかわからんが、意味もなく冗長
if(nil != GetNeedHealFriend(selfAi,0,50)){
UseItem(GetMyAtkLayer(selfAi),0);
}
でいいんじゃないの。
決定的な間違いが2ヶ所あるけど、、、
各Layerが1人ずつで固定パーティーで放流すんじゃねーの? 柔軟じゃないAiを作ろうとしてるのは確か。
GetMyAtkLayer(selfAi);はキャラスロットを返す関数じゃない。 近接キャラは1、遠距離は2を返す関数だ。3が返ることはない
防御値とかのステを取得する関数ってないんかね iesみてたらSCR_GET_AtkLayerに並んでSCR_GET_DEFみたいなんがあったから GetMyDefとか打ち込んだけど動かなかったわorz
Layerで言うと、ヒーラーとパペットも遠距離になるんだなこれが。
今から始めようと思うんだが これっていきなり垢BANされる? それとも1ヶ月停止で警告とかですか
>>88 いきなり垢BANも、他プレイヤーの申告食らって監獄行きもある。
一ヶ月停止とか意味ないよ。ベテラン3キャラ育成なんか1週間でおk。
うん。1週間で3キャラともベテランにできる。
ねえよ
ども AIは出来たんで GMのいなさそうな夜に放流してみるわ
だいなのキャッシュとかログ 見る方法ありますか?
まだグーグルのキャッシュに残ってるね
func SCR_HEALER_TS_SWITCH(self) { sleep(100); // declare variables var selfAi = GetAiActor(self); var prevTS = GetPrevTS(selfAi); var job = GetJobName(selfAi); //Change Switch if(Switch == 0){ Switch = 1; SysMsg('Switch ON1 : ' .. job); sleep(100); }else{ Switch = 0; SysMsg('Switch OFF : ' .. job); sleep(100); }
while(1){ if(Switch == 0){ デフォの行動 }else if(Switch == 1){ デフォの行動 // Near Item if('ChangeTS' == SCR_AI_LIB_NEARITEM(selfAi)){ return; } でやったんですがうまくできませんでした。 ぶろぐの方も見させてもらったんですが。 お願いします で、
どんな風にうまくいかないのかを書いて みじんこだけど、スイッチは実はブログに書いてるのを使ったことが無いんだw スイッチ切り替えたあとにNONEにでも戻るように書いておくといいかもなぁと今思った
追記:当然Switchはグローバルで宣言してるよな?
var Change Switch = 0; func SCR_ATTACKER_TS_KEEP(self) { だよね
Changeはいらないね
みじんこだけど、ちゃんとスイッチ切り替えの関数の最後でNONEに戻るように書いてたなw
>>96 だとその部分抜けてるけどw
ログイン直後で落ちるんだと・・・問題があるのはAIの内容じゃないと思うんだがどうだろう・・・
func SCR_HEALER_TS_SWITCH(self) { sleep(100); // declare variables var selfAi = GetAiActor(self); var prevTS = GetPrevTS(selfAi); var job = GetJobName(selfAi); //Change Switch if(Switch == 0){ Switch = 1; SysMsg('Switch ON1 : ' .. job); sleep(100); }else{ Switch = 0; SysMsg('Switch OFF : ' .. job); sleep(100); } }
var Switch = 0; func SCR_HEALER_TS_KEEP(self) { デフォ省略 // Main Loop while(1){ if(Switch == 0){ デフォ省略 }else if(Switch == 1){ // User Skill Check if('ChangeTS' == SCR_AI_LIB_USERSKILL(selfAi)){ return; } // HEALER Healing Check if('ChangeTS' == SCR_AI_LIB_HEALING(self, selfAi)){ return; } // Near Item if('ChangeTS' == SCR_AI_LIB_NEARITEM(selfAi)){ return; } // Keep Position Check SCR_AI_LIB_KEEPPOSITION(selfAi); // Main Sleep sleep(100); } } }
あれ・・・
>>100 ではアタッカーのところで宣言してることになってるけど、100がミスってるんだよな?
>>105 の最後の閉じる前にNONEへ飛ぶように書いてみてテストよろ
それから
>>106 の最後のKeepPositionCheckがSwitch==1のときしか読まないから括弧の位置が不適切
お陰さまでシステムメッセージ出てGEフリーズなくなりました ありがとうごじあました チャント動作してくれるかやってみます
var Switch = 0;
func SCR_HEALER_TS_HARVEST_PICK(self)
{
sleep(100);
// start log
AiLog('HEALER_TS_HARVEST_PICK : Start!!!');
// declare variables
var selfAi = GetAiActor(self);
// Main Loop
while(1){
if(Switch == 0){
デフォ
}else if(Switch == 1){
デフォ
デフォのTS_HARVESTをKEEPに置き換え
// Main Sleep
sleep(500);
}
}
でやると、システムメッセージが出なくなり、
>>105 >>106 だけでは効果がなしでシステムメッセージonly
NONEの終わりに無理やり
ChangeTacticsAi(selfAi, 'TS_KEEP');
のが悪いんですかね
何がしたいんだ?自動的にアイテムを拾いたいだけ?
そうです
それならスイッチなんて要らんよ。 TS_KEEPのSub healingとNear target checkの間に↓でもいれてみ。 // Near Item Check Unk Version for Mizinko while(1) { var nearItem = GetNearItem(selfAi, 500); if(nearItem == 0) { break; } PickItem(selfAi, nearItem); while(IsExistItem(pickItem) == 'YES') { sleep(100); } }
適当にコピペして間違えた、pickItemじゃなくてnearItemな。 // Near Item Check Unk Version for Mizinko while(1) { var nearItem = GetNearItem(selfAi, 500); if(nearItem == 0) { break; } PickItem(selfAi, nearItem); while(IsExistItem(nearItem) == 'YES') { sleep(100); } }
ぶろぐにスイッチの使い方のサンプル書いておいたよ
頭の中では動いてるけど実際にHotkeyにスイッチあててないから、間違ってるって思ったら指摘おね
アイテム回収の書き方は何通りもあるしもちろん
>>114 でもおk
>>110 だと変数の定義が不十分かもしれない・・・けどよくわかんねw
グローバル変数の値変えるだけなら↓でおk。この場合、中でsleepは使えない。 var g_switch = 0; func SCR_AI_LIB_SWITCH() { g_switch = g_switch + 1; if(g_switch > 最大値) { g_switch = 0; } SysMsg('g_switch = ' .. g_switch); } <HotKey Name="SWITCH " Scp="SCR_AI_LIB_SWITCH()"
無駄に冗長だったな・・・
>>116 な感じにしておくか
LIBで定義したグローバル変数ってTSでも使えるのか?
試したことがないが、TS内はLIBの関数呼ぶだけにして、関数から変数参照するのが良いと思う。
ならreturn使うべきかもな
今書いてて思ったんだが、LIBだと変数1つの場合、操作が若干わかりにくい気がw 直感的にはTSでスイッチいじったほうがいい気もするんだが
121 :
110 :2008/02/03(日) 22:01:00 ID:???
助かりました どうも。
グローバル変数TSのほうで宣言してる香具師って多いみたいだが どんなメリットあるの?
TSで使うスイッチ・カウンターはTSで宣言するし LIBで使うcurTargetとかはLIBで宣言してるけど?
あ、ミス。LIBで宣言してるのもカウンターだった
>>123 ふ〜ん、そんなこともあるんだ。
ありがとうごじあました
イッジのスペルてYedge であってます?
自己解決 すまそ
10秒置きにKEEPでコールしたいんですが Call()どこに入れればいいんですか? sleepとかの直前に入れても応答しませんでした
10秒でコールされたら狩り効率悪いだろw 一定の範囲から出ないように組んだほうが良いと思われ。
近接がばらけないようにしたいだけなら、策敵範囲減らしたLIB_NEARTARGET2とかを書いて job指定で近接だけそっちで策敵させればおkかな
クレイジーヒールてなんだ?
>>133 MCC全員のHP監視判別して、マスキュアとかキュアオールをオートで喰らわせるスクリプトの事だな。
ありがと ちょっくら試してくる
imclang::Init() エラーて何?
137 :
136 :2008/02/04(月) 11:50:23 ID:???
AI追加するのはいいのに消すのはだめなの?
無理に決まってんだろはげ
>>134 マスキュアって味方が範囲内にいるか調べるのは難しいよな
細かい事は気にするなw
パケ付きBOT使ってるやつなんているのかな そろそろクエ受けてはやり直して の繰り返しで疲れてきた
このゲーム自体終わりだろ 大体テンプレしかかえってこねーしなw 運営が最悪だ
メンテで暇だからソース見直してみた。 コメントアウトされた //Chat('Kill me if you can') が微笑ましくて痛々しかった。
暇すぐる
改AI vs 改AIでデュエルでもさせとけ
うちの改AIはMAP移動でよく強制終了するんだけど、なんでかなぁ・・・
GetAiIndexの実装がまずいんじゃね? マップ移動するとselfの値が変わる。
GEって接続IDかIP表示できるようなチートないかな? BOTとメイン垢特定できそうだが って自分の首しめるようなことはしないかスレ住人も
接続IDハックしたらリアルで手が後ろに回るぜ
パスはわからないが。
OCNマンションタイプの俺には関係ないな
俺もマップ移動とかでjob初期化する時たまに落ちるな。
むぅ、NearTagetのとこだけ
>>18 に書き換えたら改AI自体が働かなくなった;;
不正者申告ウィンドウを検知して文字認識もできるようになったけど、 肝心のキー入力ができず回答できない… みんなX罠解除してんのか
申告きたらBEEP音鳴らす方法はないでしょうか。 できたらヒントお願いします。
誰だよジャック3人配置してるの
162 :
ネトゲ廃人@名無し :2008/02/06(水) 10:43:39 ID:qFSSuX0L
ラピスのぽぴ党ってのは、他党の人間見たら不正申告だすように言われてるってマジ?
晒しからなのか、変なの沸いたなw まぁオレもかww
164 :
ネトゲ廃人@名無し :2008/02/06(水) 13:25:43 ID:qFSSuX0L
まー素人が手を出すと監獄にいくんだよw みてみー賢い奴ははたからBOT臭いいわれながらも尻尾出さない 証拠もつかませない、申告制度きてから逆にBOTやりやすくなってるよ。 申告来ても答えりゃいいのだからwどんなにBOTの動きしても答えればOKなんだからw
>>157 そこまでやったのかw
素直に凄いと思うが結論
無駄。
ぽぴのお蔭で、ラピスがキチガイ鯖認定受けておりますw
ラピスサーバーには「ぽぴ党」と言う嫌われ度No1党があります。 その党は、誰彼かまわずインビジまで使って不正者申告を送ってきます このような党は各サーバーにも居るのでしょうか?
168 :
ネトゲ廃人@名無し :2008/02/06(水) 15:04:24 ID:qqTRRz+x
BOTwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
鯖連結したらいやだなぁ ぽぴ党とか言うの来ちゃう^^@
たのむ、来ないでくれw
ほぴのおかげか知らんけれど、ラピ鯖は古くから基地外鯖ですよ。 ほぴだけがそうなのかしらんけどBOT申告って個人の解釈で申告するんだから別におかしいことじゃないんじゃね? そういう仕様にした運営がおかしいだけ
マジレスするとカンニングは黙認 その場でチクられた場合のみ対処
どうみても誤爆だろカス
何かもうどうでも良くなってきた。 アイテム拾いONでメイン垢放置で出勤してきた\(^0^)/
わかるその気持ちw
とりあえず昨日から初めて30になりました このスレにお世話になりそうです
監獄も疲れたぜ・・・・ アイテム拾わせたり拾わせなかったり切り替えながらも投獄3回でミジンコ俺な涙目
パケット作れば対処できる?
>>178 何を言っているのか分からないが、君にチートは無理だと言うことは分かる。
春休みにしてはちょっと早いな
俺は明日のテスト終わったら春休み
俺は3〜5月が春休み、6〜8月が夏休み、9〜11月が秋休み、12〜2月が冬休み。
そんな区別してるのか。めんどくせーな ボクは毎日が日曜日\(^o^)/ 毎日がエヴリデイだぜ
それを言うなら毎日がホリd(うわ何をするやm
お前 毎日がエブリデイ知らないのか・・・・
知りません教えてもらえませんか?
ぶろぐで、一部で話題のココロを飼い始めてみますた 使い方よくわからんけどw
みじんこ以下の糞ですが、質問です。 // Near Target Check func SCR_AI_LIB_NEARTARGET(self, selfAi) { var option = GetOption(self); var curTarget = GetNearAtkableEnemy(selfAi, 10000); if( curTarget != nil ) { SetAiTarget(selfAi, curTarget); return 'ChangeTS_BATTLE'; } } このように索敵範囲を増やして、コンパイルし、保存してからGE起動しても索敵範囲は以前のままです。 昨日から少しずつ勉強している糞ですので、あまり深いところはわかっていないのですが、 記述的に間違えているのでしょうか?ご指南よろしくお願いします。
189 :
ネトゲ廃人@名無し :2008/02/10(日) 23:10:21 ID:3pFAuiSa
保存したファイル名を良く見てみろバカタレ
D:\Program Files\Granado Espada\release\ge.exe ですよね?
自己解決しました。ファイルのどこか一箇所でも記述ミスがあると適用されないみたいですね・・・。 それとグローバル変数についてなのですが、どこからでもアクセスできるSUGE奴らしいのですが、 これはどこに配置したらよいのでしょうか?よろしくお願いします。
関数の外側。ソースの一番上で書けばおk
var gTarget = nil; func SCR_ATTACKER_TS_KEEP_BATTLE(self) { sleep(100); // start log AiLog('ATTACKER_TS_KEEP_BATTLE : Start!!!'); // declare variables var selfAi = GetAiActor(self); var prevTS = GetPrevTS(selfAi); //Hold Check SCR_AI_LIB_UNHOLD(selfAi, prevTS); // Common Target Check if(gTarget == nil || IsExist(gTarget) != 'YES'){ gTarget = GetAiTarget(selfAi); } // Attack Target SCR_AI_LIB_ATTACKTARGET_CHECK(selfAi, gTarget); // Main Loop 例えば上のような記述の仕方で合ってますか?
それで動くかどうかはしらないけど、グローバル変数は一番最初のTS_KEEPの前でやるんじゃね? みじんこだから常識はわからないけど。
var auto_keepatt = 'OFF'; func SCR_ATTACKER_TS_KEEP(self) 俺のはこんな感じ
ミジンコ以下の糞野郎にご教授ありがとうございます。タゲ共通化が5時間ぐらいやっても出来なかったので グローバル変数を間違えているのかと思いました。 先輩のみじんこブログ様のタゲ共通化がうまくいかないもので・・・ //Hold Check SCR_AI_LIB_UNHOLD(selfAi, prevTS); // Attack Target SCR_AI_LIB_ATTACKTARGET(selfAi); // Main Loop while(1){略 を //Hold Check SCR_AI_LIB_UNHOLD(selfAi, prevTS); // Common Target Check if(gTarget == nil || IsExist(gTarget) != 'YES'){ gTarget = GetAiTarget(selfAi); } // Attack Target SCR_AI_LIB_ATTACKTARGET_CHECK(selfAi, gTarget); // Main Loop while(1){ に書き換えればよいということですよね?このように書き換えても共通化してくれません・・・ 糞野郎のわたしにご教授お願いします。
死ねばいいと思うよ
その部分はあってる。 全角スペースがはいってない?
>>198 仰るとおりLIBのほうに全角スペースがふんだんに使われていました。
機能するようになりました。ありがとうございました。
ぶろぐのトップページに一応全角スペースで書いてるからそのままじゃダメよって載せたんだがなぁw
コンパイルしたときに全角が入ってると文字のフォント変わらないからそれでわかる
バイト行ってる間に監獄送りにされた俺が来ましたよ
>>注)このサイトにあるサンプルコードの文頭には全角スペースを使っているので、そのままコピペしても使えません。 よく読んでいませんでした。100回読んできました・・・。 武器持ちヒールについてなのですが、それをスイッチでやるときとやらないときに分けることは可能なのでしょうか?
可能です
できるよ <HotKey Name=" test78 " Scp="SCR_AI_LIB_SUBHEAL()" Key="P" UseAlt="NO" UseCtrl="NO" UseShift="YES" OnEdit="NO" /> 俺のはこんな感じ ただ、サブヒールやって放置ってると俺みたいに監獄送りにされるよ
さっき改AIを監獄送ってやったw そんな俺はミジンコ改AI ふひひ
SUBHEALの部分を該当するifの中にいれればおkじゃね?
あるいは
>>205 のようにSUBHEAL専用のスイッチつくっておいてそれを切り替えるか
むしろそれを可能かどうか聞く時点でifのことわかってなさそうだからぶろぐでなら
・変数の定義とスイッチ
・Hotkeyの設定とif文の使い方
・スイッチのサンプル
この3つの記事あたり参考にじっくり考えて
// Sub Healing Healing Check
func SCR_AI_LIB_SUBHEALING(self, selfAi)
{
var option = GetOption(self);
var job = GetJobName(selfAi);
if(job == 'Soho' || job=='Emilia' || job== 'Scout' || job== 'EmiliaSage' || job== 'Viki'){
var needHealFriend = GetNeedHealFriend(selfAi, rangheal, option.Heal);
if( needHealFriend != nil ){
InstantHold(selfAi);
UseSkill(selfAi, needHealFriend, 1003);
ChangeTacticsAi(selfAi, 'TS_USER_SKILL');
return 'ChangeTS';
}
}
}
>>206 いや、お前じゃないな
つーか看守の優しさに涙(´;ω;`)ウッ…
2度目は監獄Lv2になるのか つーかゴーストアイテム出過ぎで誰が入ってるか分かるんだな なんか感動した
>>208 はただのLIBのSUBHEALINGのコメントアウトはずしてジョブ判定増やしただけだよな
213 :
206 :2008/02/11(月) 14:10:57 ID:???
つうかさっき監獄送った奴が もう戻ってきてるんだが 肉入り監視に労力費やすほどでは無いのか? 監獄ノルマ
214 :
205 :2008/02/11(月) 14:18:25 ID:???
kjgdj とかいう家門多分日本人だな
チートやり始めてほやほやなんだけど やっぱりチーター同士で不正申告バトルしたりするの?w
ここは鯖別のスレじゃないし、同じ鯖に仲間は少ねぇよw 下手なAIつくってるやつとかたまにいるからそういうのは送ってやるw
217 :
203 :2008/02/11(月) 14:35:25 ID:???
if文の外側に大きなif文がかけたとしたら、自分なりに構想が出来るのですが・・・ おそらく出来ませんよね・・・。そういうようなもの書いてありませんし・・・。
できるからwwwwwwwwwwwwできなかったらまともなプログラムかけねえよwwww
ミジンコとかってレベルじゃねーぞ。 CでもJAVAでもなんでもいいから1週間なんか言語勉強しろ。 改造AIなんていくらでもオリジナル書けるようになるから。
いきなりAI改造しようとするな
うん
>>219 のとおり、1週間Cあたり勉強してこいw
理系じゃないならCすらきついだろう
var Switch = 0; 略 // Main Loop while(1){ if(Switch == 0){ // User Target Check if('ChangeTS' == SCR_AI_LIB_USERTARGET(selfAi)){ return; } // User Skill Check if('ChangeTS' == SCR_AI_LIB_USERSKILL(selfAi)){ return; } // SUBHEALING Healing Check if('ChangeTS' == SCR_AI_LIB_SUBHEALING(self, selfAi)){ return; } // Near Target Check if('ChangeTS_BATTLE' == SCR_AI_LIB_NEARTARGET(self, selfAi)){ ChangeTacticsAi(selfAi, 'TS_KEEP_BATTLE'); return; } // Keep Position Check SCR_AI_LIB_KEEPPOSITION(selfAi); }
else if(Switch == 1){ // User Target Check if('ChangeTS' == SCR_AI_LIB_USERTARGET(selfAi)){ return; } // User Skill Check if('ChangeTS' == SCR_AI_LIB_USERSKILL(selfAi)){ return; } // SUBHEALING Healing Check /*if('ChangeTS' == SCR_AI_LIB_SUBHEALING(self, selfAi)){ return; }*/ // Near Target Check if('ChangeTS_BATTLE' == SCR_AI_LIB_NEARTARGET(self, selfAi)){ ChangeTacticsAi(selfAi, 'TS_KEEP_BATTLE'); return; } // Keep Position Check SCR_AI_LIB_KEEPPOSITION(selfAi); } // Main Sleep sleep(100); } }
1週間でわかるなんとかみたいな入門書ならそこまでじゃないとおもう しかしこのAI書いてる言語はすげぇわかりやすいよな・・・w
func SCR_ATTACKER_TS_SWITCH(self) { sleep(100); // declare variables var selfAi = GetAiActor(self); var prevTS = GetPrevTS(selfAi); //Change Switch Switch = Switch + 1; if(Switch > 2){ Switch = 0; } SysMsg('Switch : ' .. Switch); ChangeTacticsAi(selfAi, prevTS); } これで合ってますかね?
まず動かせよ
思ったとおり動かなかったらそのとき聞けよ
>>222 の最後と
>>223 の最後両方でKeepPositionCheckがかいてあるが、その部分をif文からはずせば記述が1回ですむ。MainSleepも同様
これで合ってますかね? × やってみたんだけど変わりないんですがこれで合ってますかね? ○
監獄から戻ってきたと思ったら即申告かよ ラピス鯖の奴、ぽぴに釣られて申請厨か?
先輩方ありがとうございました。こんな糞の私でもできるようになりました。 スイッチについてほんの少しだけ理解できたかもしれません。 これからもご教授お願いします。
たまに改Aiで移動すると蔵落ちするんだが ミッションロビー行ったら落ちて涙目
申告厨って無差別申告する奴の事だろ? 監獄行くような奴を申告するのはどの鯖でも普通じゃねwwwww
スキルID一覧表のっけたよ〜
>>232 おぉ〜すばらしいです。とっても尊敬しちゃいます。
先ほどのスイッチをブログから少しいじくって
func SCR_ATTACKER_TS_HEALSWITCH(self)
{
sleep(100);
// declare variables
var selfAi = GetAiActor(self);
var prevTS = GetPrevTS(selfAi);
//Change HEALSwitch
if(HEALSwitch == 0){
HEALSwitch = 1;
SysMsg('ヒールON');
sleep(100);
}else if(HEALSwitch == 1){
HEALSwitch = 0;
SysMsg('ヒールOFF');
sleep(100);
}
ChangeTacticsAi(selfAi, prevTS);
}
なんてコマンドにしてやってみたら成功して、とっても達成感がありました。
おめw
技術的ではないのですが質問です。 2.オートヒール範囲拡大 これってヒールの射程を延ばすということですか? それとも、離れている味方のそばまで歩いてヒールする距離を伸ばすということですか? よろしくお願いします。
HP減ってるキャラがいないか探索する範囲が広がるだけ
>>236 なるほど、それならば必要性はあまりないですね。
自分は糞なので、まだタゲ共通、索敵範囲向上、武器持ちヒール、スカキープ拾いを導入しているのですが、
みなさんはどのようなものを導入なさっていますか?
参考までに教えていただけると嬉しいです。
かとり、じゃっくの自動だけだなw
メインの放置用は、ノックバック対策、HPバグ対策、銃キャラ押され対策、トレイン対策、暴走対策。 手動狩り&PvP用は、自動ヒール改、タゲ補助、特定スキルオート連打、自動POT、スタンス登録の自動化。 サブ垢BOT用は、敵を集めてプロヴォして範囲スキルで一掃してアイテム拾うの自動リピート。 召喚系のキャラは使ってない。弱いし。
自動ポーション 自動リビテ 自動バフ 自動レビテ 自動ジャック サブヒル 自動プロテ スウィッチKEEP HARVEST スウィッチカトリ・ジャック ぐらいか
>>239 暴走禁止対策取るとニアタゲでいったり来たり繰り返さないか?
ついていけなす
>>241 それは作り方が悪いんじゃね?
わざと放置つぶしに来る馬鹿もいるから、ばれない程度にやってるよ。
(゚Д゚)ポカーン 半分以上理解できない\(^o^)/ ヒール改は導入してうまく動いています。 それと、ブログのほうにあるタゲ共通化すると、一回敵をタゲってキープ解除しその敵が離れた後再びキープするとその前タゲってた敵に走っていってしまう。 これは改善する方法ありますかね?
オートキープ オートハーベストだけで十分な俺
>>244 targetをグローバル変数に入れてるからだろ。
それやると下手するとマップ移動で落ちるぞ。
改善する方法は、ある。
var gTarget = nil; をグローバル変数に入れています。やはり、上辺だけの理解ではこのような難しいものは無理なのですかね。 レンジをいじくる、とかの問題ではないような気がするので・・・
レーダーに丸かなんかで人が範囲内に来たら映るようにできませんか?
>>247 自分の場合ブログので問題なくできてたと思うけど。
共通化したい理由はバラバラになるの防ぎたいだけ?
共通化よりキープ位置の一定範囲内から出ないようにすればいいと思うよ。
>>249 共通化は出来ればして欲しいぐらいで、一番重要なのはそのキープ範囲から離れないということなのですが、
そちらは、おそらく糞の私では到底出来なさそうなので、諦めております。
ヒント:// Keep Position Check みじんこの想像では、実験はしてないけどこれで実装できると思う。
IsNearFromKeepDestPositionが何を指しているのかがわかったらこの左の100という数字を変えられるというのに・・・。 DESTなんて単語見たことありませんし・・orz
Destinationの略じゃない?dst/src ⇒ 送り先/送り元、みたいな感じで。 ちなみに今からAI入学生だから関数の使い方は意味不明('A`)
この2時間上げたり下げたりしてみたけど、何もわからなかった\(^o^)/ スカのキープの脆さは異常です/(^o^)\
destを1000にしてみな
みじんこだからよくわかってないけど キープとして記憶してる位置からどれだけ離れたらキープ位置に戻るか、だと思う それがキープのループの最後にはいってるけど、それをBATTLEのほうにつっこんで 距離を調整すればいいんじゃないかなって思ったわけだ あくまでも想像ね
再キープすると前のタゲをタゲるっていう場合の 柔軟じゃないけど簡単な対処は Callに引っ掛けて共通ターゲットをnilに戻すとかがいいと思うよ。 func_call_gtarget_init(){ call(); gtarget = nil; } 久々に書いたから構文あってるかわからん あと、エリア移動したら前のタゲってのはこのすれの最初の方かなんかに載ってた気がする
>>256 俺が下手なのか、キープモード→ターゲット→敵を追っていく→設定した距離以上になったらキープ位置に帰ってくる→タゲはそのまま(キープはしていない)
こんな動きをするんだが、うまくはさんだら、いけそうなきがするのだが・・・
>>258 キープ位置から離れすぎたら→キープ位置に戻り、KEEPに遷移
こう書けばいいんじゃね?
KEEPに飛ばす前に少しのsleepが必要かも?
リソースハッカーでGe.exeを開いたけど丸分かりだろ・・・・ 改AIハジマタ\(^o^)/
くそしてネロ
大手の6割くらい改変AI使ってるような気がしてきた。 そんな俺もその一人\(^o^)/
AUTO POTIONを作るときに
if(nil != GetNeedHealFriend(selfAi,0,50)){
UseItem(ここに何入れるか),0);
}
上の部分の情報(HPを回復したいキャラクター)はどのような関数で拾ってこられますかね?
>>75-85 あたりで書かれているようにGetMyAtkLayer(selfAi)は違う関数らしいので・・
よろしくお願いします。
つまりjob指定ではなく、キャラスロット指定がしたいってことだな? ヒント:GetAiIndexみたいだけど詳しいことわかんねww
用意されていた関数が廃止されたから、同程度の機能を自分で作るのがトレンド ヒント群 ・SelectMyPC() ・IsReader() ・グローバルな変数 ・初期化作業 あとは過去ログさらってください
リーダーのつづりはゆとり脳の産物だと思ってください。
廃止された関数って何? 蔵落ちがもしかしてこれに関連してるのか
GetAiIndexってのは、自分でそういうの定義しろっていうことだったのかな?w リーダー判定を使って左から順にキャラID?を変数に保存 ifで判定してオートPOT関数に分岐、かな?
ちょっとサンプル作ってみるぜ
var Slot0 = 0; var Slot1 = 0; var Slot2 = 0; func SCR_ATTACKER_TS_GETSLOT(self) { 略 // Main Loop while(1){ SelectMyPc(0); sleep(100); if(IsLeader(selfAi) == 'YES'){ slot0 = self; SysMsg('Slot0 OK :' .. job); ChangeTacticsAi(selfAi, prevTS); } SelectMyPc(1); sleep(100); if(IsLeader(selfAi) == 'YES'){ slot1 = self; SysMsg('Slot1 OK :' .. job); ChangeTacticsAi(selfAi, prevTS); } SelectMyPc(2); sleep(100); if(IsLeader(selfAi) == 'YES'){ slot2 = self; SysMsg('Slot2 OK :' .. job); ChangeTacticsAi(selfAi, prevTS); } }
func SCR_ATTACKER_TS_CLEAR() { sleep(100); //declare variables var selfAi = GetAiActor(self); var prevTS = GetPrevTS(selfAi); //Main gTarget = nil; slot0 = nil; slot1 = nil; slot2 = nil; ChangeTacticsAi(selfAi, 'TS_NONE'); }
テストもなんもしてない(というかメンテでできないw) とりあえず書いてみたんだけど・・・ これだと個別選択で1キャラずつ関数実行しないといけない気がするんだがどうなんだろ
補足:というのは、複数キャラがアタッカーだとSelectMyPcが複数でバラバラに行われて・・・カオス?w
関数実行するだけで状態遷移とかいらないんじゃないの? 命名規則は人それぞれだが、遷移の必要がない関数まで わざわざくっつけてる感じがなんか嫌だ
CLEARはエリア移動準備用だからバラックいけるようNONEに 変数にセットするほうは、その後直前のモードに戻ったほうがいいかなと・・・ どうすればスマートなんだろ
・・・NONEはいらないっすねサーセンw
278 :
ネトゲ廃人@名無し :2008/02/12(火) 10:46:58 ID:B+f1tLtM
KEEPモードのまま棒立ちになるのは対策できるんですかね? 吹っ飛ばされて、NONEになった分にはKEEPに戻るようにできたんですが 誰か教えて><
定期的にcallで呼べば治るじゃない? 知らんけど
あ、アゲてスマソン そうか 他のキャラがcallすればいいのか なんか、変な思い込みしてました>< 後でやってみます。さんくす
スカがキープ切れるときってオートヒール詠唱中に転ばされるからだよね? それで、無い頭使って考えてみたのですが、 スカのNONEのところに、「もし前の動作がオートヒールならキープに移行」 みたいにすればいいのかな?なんて思っているのですが、 if(prevTS == 'この関数') このオートヒールの関数ってどう記述するのかな? よろしくお願いします。
>>280 スキル発動でもうまくいってますよ。
>>281 良くわからないなら、とりあえずNONE内をキープのコード全部と入れ替えればいいと思うよ。
>>282 仮にそうした場合、スイッチかなんか作っておかないと街中でも常時キープみたいになりませんか?
メイン垢で使うなら不便だが、サブ垢BOTならそれでもよくね。 BOT用はHoldの索敵をコメントアウトして停止ボタン代わりにしてるよ。
やっべ、綿花のあるマップに改変放置してきた 俺涙目
スイッチ作って制御できるようになった・・でもスイッチ入ってるとHP減ってたらキープしてないのに勝手にオートヒールしてくれる。 不自然すぎる・・・・これは使い道あるのだろうか・・ ちょっとカトリの自動召喚をログから漁ってきたのですが、カトリが棒立ちなのでアドバイスいただけたら嬉しいです。
func SCR_AI_LIB_AUTOSAMMON(selfAi) { if(g_sammon_mode == 0) { return; } var job = GetJobName(selfAi); var curTarget = GetNearAtkableEnemy(selfAi, 1200); var curTarget2 = GetNeedHealFriend(selfAi, 1, 101); g_sammon_timer = g_sammon_timer + 1; if( curTarget != nil ) { if(job == 'CatherineREAL' && g_sammon_timer >= 30){ InstantHold(selfAi); g_cat_count = g_cat_count + 1; if(g_cat_count == 1) { UseSkill(selfAi, curTarget2, 30311); } else if(g_cat_count == 2) { UseSkill(selfAi, curTarget2, 30315); } else if(g_cat_count == 3) { UseSkill(selfAi, curTarget2, 30314); } else if(g_cat_count == 4) { UseSkill(selfAi, curTarget2, 30313); } else { UseSkill(selfAi, curTarget2, 30312); g_cat_count = 0; }
sleep(300); g_sammon_timer = 0; ChangeTacticsAi(selfAi, 'TS_USER_SKILL'); return 'ChangeTS'; } } return; } func SCR_AI_LIB_CHANGE_SETTING_AUTOSAMMON() { if( g_sammon_mode == 0) { g_sammon_mode = 1; } else { g_sammon_mode = 0; } SysMsg('[Setting Change]Auto Sammon Mode :: ' .. g_sammon_mode);
// Main Loop while(1){ // User Skill Check if('ChangeTS' == SCR_AI_LIB_USERSKILL(selfAi)){ return; } // SUBHEALING Healing Check /*if('ChangeTS' == SCR_AI_LIB_SUBHEALING(self, selfAi)){ return; }*/ // Catherine sammon mode if(job=='CatherineREAL') { if('ChangeTS' == SCR_AI_LIB_AUTOSAMMON(selfAi)){ return; } } // Keep Position Check SCR_AI_LIB_KEEPPOSITION(selfAi); // Main Sleep sleep(100); }
ホットキーなどは正常ぬ動いているのですが、召喚はしてくれません・・。 括弧の数などもあってると思うのですが・・・ 根本的に記述ミスかもしれませんが、ご指摘いただけたら、よろしくお願いします。
変数グローバルで定義してるよな? あと過去ログあさらなくても俺がぶろぐにm(ry
var g_sammon_mode = 0; var g_cat_count = 0; var g_sammon_timer = 0; これをSCRパペットの一番上においてます。
みじんごブログみろよw
みじんこ様のほうは、スイッチがないので・・・私はスイッチ作るのにも数時間かかるので、こちらを入れてみようかと・・。 みじんこ様のほう挑戦してみます。
var kat = 0; var timer= 0; func SCR_PUPPET_TS_KEEP(self) { 略 // Main Loop while(1){ // User Skill Check if('ChangeTS' == SCR_AI_LIB_USERSKILL(selfAi)){ return; } // Auto Sammon if('ChangeTS' == SCR_AI_LIB_PUPPET(selfAi)){ return; } // SUBHEALING Healing Check /*if('ChangeTS' == SCR_AI_LIB_SUBHEALING(self, selfAi)){ return; }*/ // Keep Position Check SCR_AI_LIB_KEEPPOSITION(selfAi); // Main Sleep sleep(100); } }
スイッチについても解説してあるんだけどな・・・wわかりにくいんかな
上のように記述しても応答しませんでした。 それとみじんこ様のスイッチは3つぐらい導入してますが、アタッカー、ヒーラー、パペットとそれぞれに書かなくてはいけないので、 とってもリソースを食っているような(お前が気にするのは1万年と2千年早い)気がするんですよ・・。 糞なのでLIBにスイッチ作るのは無理ですし・・・。
あーみじんこの俺は理解しやすければいいって感じだからなーw
みじんこが独自で作ろうとするから引っかかるんだよ
それは言えてる
自動召喚+スイッチ完成した・・・これは便利ですね・・・。 func SCR_PUPPET_TS_HEALERGET(self) これがヒーラー自動収拾のスイッチ { sleep(100); // declare variables var selfAi = GetAiActor(self); var prevTS = GetPrevTS(selfAi); //Change HEALERGet ChangeTacticsAi(selfAi, prevTS); } func SCR_PUPPET_TS_SAMMON(self) これが自動召喚のスイッチ { sleep(100); // declare variables var selfAi = GetAiActor(self); var prevTS = GetPrevTS(selfAi); //Change SAMMON if(SAMMON == 0){ SAMMON = 1; SysMsg('自動召喚○'); sleep(100); }else if(SAMMON == 1){ SAMMON = 0; SysMsg('自動召喚×'); sleep(100); } ChangeTacticsAi(selfAi, prevTS); }
これをアタッカーとヒーラーにそれぞれ書かないと、例えば全キャラ選択中にヒーラーのスイッチ押すとそのスイッチが 全員に適用されてしまうので、関係のないパペットとアタッカーに前の動作に戻るように記述しないといけない・・。 これを改善する方法ありますかね?
ある
やはるLIBに書いて呼び出すのが一番少なくてすみそうですね・・。 私みたいなみじんこ以下の糞野郎には到底無理ですよ・・・
変数の仕様とか今度しらべておこっと
まあ、そう自虐的にならんでもいいと思うよ。
誰でも最初はど素人なんだからさw
俺もGE初めて一カ月程度のミジンコだけどね。
知識が何も無い状態だったら、いくら考えても何も出てこないと思うから
他人のソースを見てマネることが上達への近道だと思うよ。
日本じゃないけど海外のGEフォーラムとかは結構AIがうpされてるから
どう動いてるのか参考になるよ。
http://www.mod2play.com/forums/index.php?showforum=60 適当に見てみたら?そのまま突っ込んでも動かんと思うけど
暇な時にちょっとづつ移植していけばいいと思うよ。
310 :
ネトゲ廃人@名無し :2008/02/13(水) 02:04:01 ID:IvUovgY1
func SCR_AI_LIB_AUTOPOTION(selfAi) { var need = GetNeedHealFriend(selfAi,1,50); var layer = GetMyAtkLayer(selfAi); if(need != nil){ if(layer == 1){ UseItem(0,0); } else if(layer == 2){ UseItem(1,0); } else if(layer == 3){ UseItem(2,0); } sleep(500); return 'ChangeTS_'; } } オートPOTを試しているのですが 上のやつをいれても 2番目のキャラにしかPOTを使わないんです。 どこを直せばいいですか?
>>310 ファイターでもいれれば1番目もつかうようになるんじゃない
全キャラ遠距離だから2番目のキャラしかつかわねーんだろw
やべ 一人監獄送りにしてもた
アタックレイヤーは攻撃階層?だから、おおむね近接職=1、遠距離職=2だ。
315 :
ネトゲ廃人@名無し :2008/02/13(水) 12:20:02 ID:IvUovgY1
>>310 311 314
わかりました。ありがとうございます!
layerについて勘違いしてました。
勉強しときます
あと質問なんですが
ヒーラーやパペットのレイヤーはあるんですか?
なぜだかヒーラーとパペットはレイヤー3に成りますよ。
間違いだwレイヤー2だったな。
こうすれば、POTの消費は激しいが・・・ func SCR_AI_LIB_AUTOPOTION(selfAi) { var need = GetNeedHealFriend(selfAi,1,50); var layer = GetMyAtkLayer(selfAi); if(need != nil){ if(layer == 1 || layer == 2 || layer == 3){ UseItem(0,0); UseItem(1,0); UseItem(2,0); } sleep(500); return 'ChangeTS_'; } }
ジョブ指定でやれば? func SCR_AI_LIB_AUTOPOTION(selfAi) { var need = GetNeedHealFriend(selfAi, 1, 50); var job = GetJobName(selfAi); if( need != nil ){ if( job == 'Fighter' ){ UseItem(0,0); } else if( job == 'Warlock' ){ UseItem(1,0); } else if( job == 'Scout' ){ UseItem(2,0); } else{ SysMsg('Error: job not found - ' .. job); } sleep(500); } }
>>318 それじゃ明らかにレイヤーの意味ないよね?
あれか・・例えば、スイッチでオートヒールするスロットとJOBをあらかじめ数パターン用意しておいて、実際に使うのを指定すればいいのか・・。
オートヒールじゃないな・・ちょっと吊ってくる
自分で使うだけのパターン用意すればいいだろ? アタックレイヤーで分けるのは無理があると思う。
レイヤーは、 // Near Target Check func SCR_AI_LIB_NEARTARGET(self, selfAi) { var option = GetOption(self); var layer = GetMyAtkLayer(selfAi); var range = option.KeepRange; if (layer == 1){ range = 800; } if (layer == 2){ range = 1300; } var curTarget = GetNearAtkableEnemy(selfAi, range); if( curTarget != nil ) { sleep(100); SetAiTarget(selfAi, curTarget); return 'ChangeTS_BATTLE'; } } みたいに使った方が良くないか?
いいね
たしかに、とっても賢い使い方ですね・・・。私じゃ思い浮かばないです\(^o^)/
┏━━━━━━━━━━━━━━━━
┃*新規さん初級講座その1*
┃
┃プレオープンは無料 正式から3000円+月々1500円(税別)
┃クライアントの[ゲーム起動]の前に[マニュアル]をまず読む
┃初期村のクエはとりあえずやる
┃【三国志】三國志Online 質問スレ Part5
┃
http://live27.2ch.net/test/read.cgi/mmoqa/1201735828/ ┃
┃アンチに惑わされるな とにかくやってみる!
┃ 人
┃ <。 .>
┃ ∧∧ /Vミ バシ!!
┗━━(´・ω・`)/ ミ━━━━━━━━━━
/) y )つ ココ重要
|~ ̄] ̄ ̄ ̄ ̄ ̄ ̄|
328 :
ネトゲ廃人@名無し :2008/02/13(水) 14:38:10 ID:IvUovgY1
func SCR_AI_LIB_AUTOPOTION(selfAi)
{
var need = GetNeedHealFriend(selfAi,1,50);
var job = GetJobName(selfAi);
if(need != nil){
if(job == 'Musketeer'){
UseItem(0,0);
}
sleep(1000);
if(job == 'Grace'){
UseItem(1,0);
}
sleep(1000);
if(job == 'Scout'){
UseItem(2,0);
}
sleep(1000);
return 'ChangeTS_';
}
}
>>315 です
レイヤーでわけるのは難しそうなので
ジョブ指定ですることにしたんですが
今度はスカウトがポーションを使わないです。
上のやつは問題ないと思うんです。
自分ではヒーラーとアッタカーの違いで
何か動かなくなってると思ってます。
ご指摘お願いします。
三国無双>>>>>三国志
else if使えばもしかしたらかいぜんするかもしれないとみじんこ以下の俺が・・・違ってらスマン
うん、ぼく、にほんごのべんきょうが、さきみたいだね。
とりあえず下げろカス
なんでifで判定するたびに1秒止めてるんだ?w あと脳内イメージ的にはif文を3つ書くんじゃなくて、 ifマスケelse ifグレelse ifスカウトっていう1文のほうが好きだったりw これでスカウトだけ動かないってのはよくわからん。 最後のreturnでなんか余計なアンダーバーが・・・
ホセの自動砲撃つええw
的外れなこと書くけど if(nil != GetNeedHealFriend(selfAi,1,50)){ }ってやればneedって変数はいらない
336 :
ネトゲ廃人@名無し :2008/02/13(水) 14:49:35 ID:IvUovgY1
>>328 今試したらちゃんと使ってました・・・
ちょっと吊ってきます
func SCR_AI_LIB_NEARTARGET2(self, selfAi) { var option = GetOption(self); var range = 1000; var curTarget; if( IsNearFromKeepDestPosition(selfAi, 100) == 'YES' ){range = 1000;} else if( IsNearFromKeepDestPosition(selfAi, 400) == 'YES' ){range = 600;} else if( IsNearFromKeepDestPosition(selfAi, 700) == 'YES' ){range = 300;} else if( IsNearFromKeepDestPosition(selfAi, 1000) == 'YES' ){range = 100;} else{return;} range = range + option.KeepRange; if( range > 1000 ){range = 1000;} curTarget = GetNearAtkableEnemy(selfAi, range); if( curTarget != nil ) {SetAiTarget(selfAi, curTarget);return 'ChangeTS_BATTLE';} }
キャラが行ったり来たりするんですが何故だかわかりますか
>>337 問題はそこじゃないと思う
ニアタゲ検索の方じゃない?
rangeにoption.KeepRange加えたら常に1000越えるから 常にrangeは1000のまま・・・ww
>>333 1秒で止めてるのはPOT使う時何個も使うんで
1秒空ければ大丈夫かなと思ってつけました。
アンダーバー気づかなかったw
多分他のとこからコピペした時に
消し忘れたんだと思います・・・
カルヤライネンのJOB名ってなにかな・・前々スレにJOB貼ってあったんだが、その中にカルヤライネンはなかったんですよね・・。
>>342 job = GetJobNameでSysMsg('job : ' .. job)ってやる気はないのか?
Karjalainen
>>344 すまんそんなコマンド知らなかった。勉強しなおしてくる。そしてありがとう。
なにやってんだかw 手順踏まないで飛び越すと変な質問するようになるんだよ、ばっかじゃね? さすがにもう教える気にならん。
ifマスケならPOTのむ→1秒sleep→ifグレイスならPOTのむ→1秒sleep→ifスカウトならPOTのむ→1秒sleep すげぇ無駄じゃね?w ifマスケなら左のPOTelse ifグレなら真ん中のPOTelse ifスカなら右のPOTを飲む→1秒sleepならまだわかる
>>348 自分ではないですね。JOB名を使ったのは今日が初めてだったので、いろいろと試行錯誤中です。
// AUTO POTION func SCR_AI_LIB_AUTOPOTION(selfAi) { if( a_pot == 1) { var need = GetNeedHealFriend(selfAi, 1, 50); var job = GetJobName(selfAi); if( need != nil ){ if( job == 'Fighter' ){UseItem(0,0);} else if( job == 'CatherineSTR' ){UseItem(1,0);} else if( job == 'Scout' ){UseItem(2,0);} else{SysMsg('Error: job not found - ' .. job);} } } else if( a_pot == 2) { var need = GetNeedHealFriend(selfAi, 1, 50); var job = GetJobName(selfAi); if( need != nil ){ if( job == 'Fighter' ){UseItem(0,0);} else if( job == 'Karjalainen' ){UseItem(1,0);} else if( job == 'Scout' ){UseItem(2,0);} else{SysMsg('Error: job not found - ' .. job);} } }
else if( a_pot == 3) { var need = GetNeedHealFriend(selfAi, 1, 50); var job = GetJobName(selfAi); if( need != nil ){ if( job == 'CatherineREAL' ){UseItem(0,0);} else if( job == 'Karjalainen' ){UseItem(1,0);} else if( job == 'Scout' ){UseItem(2,0);} else{SysMsg('Error: job not found - ' .. job);} } } sleep(500); }
var a_pot = 0; // AUTO POTION CHANGE func SCR_AI_LIB_POT() { if(a_pot == 0){ a_pot = 1; SysMsg('ファイ・力カトリ・スカ POT'); } else if(a_pot == 1){ a_pot = 2; SysMsg('ファイ・カルヤライネン・スカ POT'); } else if(a_pot == 2){ a_pot = 3; SysMsg('召喚カトリ・カルヤライネン・スカ POT'); } else if(a_pot == 3){ a_pot = 0; SysMsg('AUTOPOT OFF'); } }
job名だけど Muathai = ラワンでおk? Neolithって何?ClassID的にGM系キャラっぽいけど無視していいのかな あとエデュアルドとカートのjob名が分かればたぶん一覧になる
Scp="SCR_AI_LIB_POT() ホットキーでこれで呼び出しているのですが、LIBでこの形式のスイッチを作ることは可能ですかね? 数値を足していく方法でないと無理ですかね?
jobの定義を(needが必要ならそれも)a_potの判定より前におけば記述1回で済む
>>355 先ほどその方法でやってみて、機能しなかったのでこのような書き方にしてみたのですが、こちらでもうまくいかなくて・・・
記述ミスなどをしているのでしょうか・・・。
a_potの定義はLIBの一番上で行ってる?
自己解決しました・・・もう自分死んだ方がいいんじゃないかという間違えを・・ Scp="SCR_AI_LIB_POT()" Key="NEXT" UseAlt="NO" UseCtrl="YES" PageDown連打しても出来ないわけだ\(^o^)/
みじんこですが、先輩の意見を聞かせてください。 グローバル変数・スイッチについてなんですが、 TSでスイッチを定義→条件分岐してから必要なLIBの関数だけ呼び出す LIBでスイッチを定義→全関数を呼び出し、その後LIBの関数で条件分岐 こう考え、呼び出す前に分岐したほうが処理が単純だと思いTSで定義してたんですが 少し前にLIBで条件分岐するほうが・・・というような書き込みがありました。 どちらのほうがいい(or一般的)なんでしょうか?
好みの問題
俺はLIBで統一だな
結局どっちでもいいんですね パーティに関係ないAUTOPOTを実装するために selfを変数に代入してLIB内に保存しようとしたけどできなさそうなので NeedHealに引っかかるたびにスロットのチェックさせればよさそうという結論を出してみた。 これならAUTOPOTの関数をLIBに1つ書くだけでおkぽいし ・・・先人達はこうやってるのかな?w
self代入できた('A`)
func SCR_AI_LIB_GETSLOT(self) { var selfAi = GetAiActor(self); var job = GetJobName(selfAi); SelectMyPc(0); if(IsLeader(selfAi) == 'YES'){ return 0; } SelectMyPc(1); if(IsLeader(selfAi) == 'YES'){ return 1; } SelectMyPc(2); if(IsLeader(selfAi) == 'YES'){ return 2; } } func SCR_AI_LIB_AUTOPOT(self) { var slot = SCR_AI_LIB_GETSLOT(self); if(slot != nil){ UseItem(slot, 0); sleep(100); } return; }
みじんこだけど、スロット指定のAUTOPOTがおおむねできたぽい。 改良意見ぼしゅ〜w TS側からはジョブに関係なく全てLIB_AUTOPOTを呼び出せばおkなように考えてみますた。
func SCR_AI_LIB_GETSLOT(self)
{
var selfAi = GetAiActor(self);
SelectMyPc(0);
if(IsLeader(selfAi) == 'YES'){
return 0;
}else if{
SelectMyPc(1);
if(IsLeader(selfAi) == 'YES'){
return 1;
}else if{
SelectMyPc(2);
if(IsLeader(selfAi) == 'YES'){
return 2;
}
}
}
}
連投すみません。
>>364 の前半を書き換えてみました。
>>366 else ifじゃなくてelseでした。
度々ほんと申し訳ないorz
リーダー変わりまくって大変だろw
放置用なので・・・だめですか><;
exe切り替えて使うなら良いかもしれないけど、 例えば、1人目のキャラが死んだら、2人目のキャラはPOT使わないな。
ん〜そっかぁ・・・でも1キャラ死んで残り稼動っておかしくね?w 死ぬのはPKか強力なスピネルだけだろうし、死んだら潔くry やっぱりスロット指定は無理があるかな〜
エデュアルドのJobNameを晒してもらえるとジョブ名一覧表が完成します・・・よろ
Eduardo
そっちはそのままなのか カートがまったく違う名前だったから疑ってたぜw
だなw
更新してきますた でも需要たいしてないんだろうけど('A`)
>>376 賢者エミリアって EmiliaSage2 2って必要でしたっけ?
確かめたらいらなかったねw 俺が見たリストがなんか違ったのかなー適当にies見てたんだけどw
Muathai アイラワン これは正しい?ラワン持ってなくて確かめられん
初めての監獄 期待と不安が入り混じる中 彼はそっけない口調でこう言った 「爪51個肉80個持ってこい」 ごめんなさい肉が出ません・・・
肉はねずみに喋りかけないとだめだよ
---武器もちヒールがデフォルトで封印されている訳--- 党員(職業マークが黄色)が、ヒール範囲に入るとスカAIが停止するバグ?がある為。 SQを組めば問題なし。
現在放置されているバグ(なおすきも無い) 上記バグ ゾンビアイテム HPバグ
クライアントで制限されている事 マイクの連続投稿タイマー
スロット位置を取得するのってやっぱIsLeader関数使ってやるしかないのかな
個別オートバフがうまくいかにゃい。。。 これであってる? var buff_time1 = 0; var buff_time2 = 0; var buff_time3 = 0; // Auto Buff if(job=='Emilia'){ buff_time1 = buff_time1 + 1; buff_time2 = buff_time2 + 1; buff_time3 = buff_time3 + 1; if( buff_time1 >= 90){ Skill(2,2); SkillOnMyPc(2); SkillOnMyPc(2); buff_time1 = 0; ChangeTacticsAi(selfAi, 'TS_USER_SKILL'); return 'ChangeTS_BATTLE'; } else if( buff_time2 >=220){
Skill(2,2); SkillOnMyPc(1); SkillOnMyPc(1); buff_time2 = 0; ChangeTacticsAi(selfAi, 'TS_USER_SKILL'); return 'ChangeTS_BATTLE'; } else if( buff_time3 >= 360){ Skill(2,2); SkillOnMyPc(0); SkillOnMyPc(0); buff_time3 = 0; ChangeTacticsAi(selfAi, 'TS_USER_SKILL'); return 'ChangeTS_BATTLE'; } }
個別バフはやったことないからよくわからんけど、発動の後にsleepいれたほうが安定しない?
あぁ・・・後ifの条件判定が微妙かも。BuffTime1 BuffTime2 BuffTime3として 0 0 0 / 90 90 90 / 0 90 90 / 90 180 180 / 0 180 180 / 40 220 220 40 0 220 / 90 50 270 / 0 50 270 / 90 140 360 / 0 140 360 / 0 140 0 こんな感じで推移するの分かる?
var buff_timer = 0; if(buff_timer == 100){左にかける} else if(buff_timer == 200){中央にかける} else if(buff_timer > 300){右にかけてbuff_timer = 0;} else{buff_timer = 0;} もしくは var buff_timer1〜3 = 0; if(buff_timer1 > 100){左にかけてbuff_timer1 = 0;} if(buff_timer2 > 100){中央にかけてbuff_timer 2 = 0;} if(buff_timer3 > 100){右にかけてbuff_timer3 = 0;} こうじゃね?と、なんとなく書いてみるテスト
TSとLIBそれぞれのスカバフサンプル書いてきたよ 脳内シミュレーションだけで作ってて面倒で挙動チェックなどはしていない('A`) 特にLIBなんかは思いつきで書いたのでまずかったら教えてw メイン垢での補助でしか使わないからチェックするモチベが(言い訳
モチベねぇ。 俺はもうAIいじって楽しむことが目的になってしまったぜ。 ばりばりBOTで申告されずにとりあえず52まで到達。 100まで申告されなかったらAI晒すよ。 様子見てメガタルトが増えてると嬉しいな。
どんなAIかkwsk
394 :
392 :2008/02/14(木) 15:34:47 ID:???
kwskはまだ言えないが、効率よりも肉入りに見せかけることを重視して作ったAI。 SQ組みませんか?って話しかけられてたことが2回あるよ。
俺のAIはBOTがよってくるAIだぜ?仲間だと思われてるのかな・・・\(^o^)/
AIうpよろです
実装してる機能書いてもらえるとwktkなんだぜ
ベースだが 歌う
誤爆ってることに今気が付いた///
割りと素敵な機能なんじゃね
なかなかすばらしい昨日だと思うぞ
ワープってサバ側管理?
何が言いたいのかみじんこにはわかりません>< たぶんわかってもわかりません><
どうせミジンコだから何やってもいいが、鉄は熱いうちに打てともいう。 グローバル変数をTSに定義しているやつがおるが、やめとけ。 よくある例ではスカウトに気まぐれに武器をもたせたりするとタイマーをインクリメントしなくなったり、そのぐらいならまだいいが、場合によってはやらなきゃいけない処理を飛ばしても分かりにくくなる。 状態遷移・維持と思考、実行は出来る限り分離しろ。
たしかにそうかもなぁ・・・ HotkeyでLIBの関数を呼び出すときに、引数にselfいれれないじゃん? すると例えばスイッチ切り替えたときにジョブ名を確認できないんだよね。
あーまだTSの考え方抜けてなかったorzはずかしい/// 機能別でスイッチつくって分離するわ ぶろぐの方は過去の記事を直すのは大変なので、目次で分離してLIB編を書き加えるわ
オートPOT、自動召喚、自動建築を全てLIBで制御するようにして、TS側のグローバル変数なくしました。 あとはキープの維持なんだ・・・ 今までNONEからスイッチが1のときにKEEPに飛ばしていてそれをやめようと思ったんだが スキル詠唱中に吹き飛ばされたり、あるいはダメージ蓄積で吹っ飛んだときはどこでループしてるのか\(^o^)/
func SCR_AI_LIB_PICKITEM(selfAi) { var nearItem = GetNearItem(selfAi, 1000); if(nearItem != 0 && ItemSwitch == 1){ sleep(800); PickItem(selfAi, nearItem); while(IsExistItem(nearItem) == 'YES'){sleep(100);} } return; } ハーベストを経由させない自動拾い。 ダメで吹き飛びのはCallでしか解決できないかな?スキル詠唱のはLIB_SKILLUSINGでNONEに飛んじゃってるのかな?
↑の修正版。 func SCR_AI_LIB_PICKITEM(selfAi) { var nearItem = GetNearItem(selfAi, 1000); if(nearItem != 0 && ItemSwitch == 1){ sleep(800); PickItem(selfAi, nearItem); while(IsExistItem(nearItem) == 'YES'){sleep(100);} if(GetNearItem(selfAi, 1000) != 0){SCR_AI_LIB_PICKITEM(selfAi);} } return; } スレに今俺しかいないなw
吹っ飛ばされ対策なんて1年前には話が終わってたわけで。
スイッチON:Call→MOVE→KEEP(キープ維持用) スイッチOFF:MOVE→NONE(手動操作時用) かね?
調べる気を起こすためにも 誰かちーとスレ11までのログをどっかにうpして公開しておけばいいんじゃないか 問題になったり気になったりしてるところが改Ai初期からループしすぎててみぐるしすぎるよ。 どっかでちゃんとまとめてくれるならスレ8〜11のログと、4〜7のhtmlログなら提供できるぞ
みじんこぶろぐいつ消えるかわかんないけどそこにhtmlおいておけるよ
LIB内で条件を書き、TS内で条件分岐するスイッチって出来ませんかね? 今ままでTSで条件分岐と条件を両方書いていたのですが、TS内のスイッチだと例えばヒーラーがいないときに動作しなかったりするので・・ やはりLIB内で条件分岐も書かないといけないのでしょうか?
TS内 if(SCR_AI_LIB_SAMPLE(selfAi) == 1){挙動1} else{挙動2} LIB内 func SCR_AI_LIB_SAMPLE(selfAi) { var job = GetJobName(selfAi); if(job == 'Fighter'){return 1} else{return 0;} } 適当にLIBでやる意味のないことしてみたけどこういうこと?全然違う?
TSのKEEPのwhileの中に if{ switch == 1){ 適当に行動 } else if( switch ==2){ 以下略 それでLIBにグローバルで var switch = 0; func SCR_AI_LIB_SWITCH() { if(switch == 1){ switch == 2; Sysmsg('適当にコメント'); } else if( 略 } みたいにLIBで条件つけたいのですが・・・。
なるほ func SCR_AI_LIB_SWITCH() { if(switch == 1){ switch = 0; return 1; } if(switch == 0){ switch = 1; return 0; } こんな感じ(適当)で、KEEPのほうでif(SCR_AI_LIB_SWITCH() == 1){適当}以下略 これでどう?
リターンはSCR_AI_LIB_SWITCH()の値を示しているんですよね? ならば逆かな? それと、上の入れてみましたが、攻撃せずに、キープ押すたびにホットキーを実行しているみたいになってます。 難しいですね・・
さっき急いでて敵等だったので真面目に書き直す。 func SCR_AI_LIB_CHANGESWITCH() { switch = switch + 1; if(switch > 1){switch = 0;} SysMsg('switch : ' .. switch); } func SCR_AI_LIB_SWITCH() { return switch; } func SCR_ATTACKER_TS_KEEP(self) {略 while(1){ if(SCR_AI_LIB_SWITCH() == 1){略} }}
補足説明:スイッチ切り替え関数とスイッチの値を返す関数の2つをLIBに書いておいやるっていうことを考えた。
>>418 はまじ適当だったごめんw
(switch >= 1) にしないと呼ばれるたびにifの中身実行しないか? 常にswitch = 0にしたいならいいけど。 まぁ読めれば分かる部分か・・・ func SCR_AI_LIB_CHANGESW(arg) { switch = arg; SysMsg('switch ;' .. switch); } 引数使うっていうのどうっすかね。スイッチよりモード切替っぽいかと思って
関数自体は読み込まれているが、適用されないな・・・なぜだろう・・。
>>422 if(switch > 1){switch = 0;}はswitchが1より大きい、つまり2以上のときに0に戻すって挙動だと思うんだけど・・・俺間違ってる?
あとその関数は、TS側からLIB内のswitchの値をいじるためって意味だよね?よーわからんw
どのレスしてるのが415なのかわからないけど
>>415 がいまいち理解しにくいので
>>417 からやりたいことを想像してみる。
・LIB内にスイッチを定義し、スイッチの切り替え(Hotkey使用)はLIB内に書きたい
・TSからそのスイッチの状態を見て、それによって動作を変化させたい
これでいいんだよな?
426 :
415 :2008/02/16(土) 01:03:29 ID:???
>>425 仰るとおりでございます。今は9割がたTSの方にスイッチ作ってあって、そのキャラがいないと機能しない状況なので、
是非LIBに作りたいと・・・プルテウス幼生の僕ではお手上げです・・。
そう思って
>>420 を書いてみたんだが・・・うまくないかな('A`)
>>426 >>420 のさらに補足説明つき
LIB内にそれぞれのスイッチを切り替える関数をつくる。これはHotkeyから呼び出すもの。Scp="SCR_AI_LIB_CHANGESWITCH()"てな具合でHotkeyに登録。
func SCR_AI_LIB_CHANGESWITCH()
{
switch = switch + 1;
if(switch > 1){switch = 0;}
SysMsg('switch : ' .. switch);
}
こんな感じでスイッチ変数の数だけ関数を作る。
次に、TSからLIB内の変数の値を得るための関数を書く。
func SCR_AI_LIB_GETSWITCH()
{
return switch;
}
ただ単にswitchに入ってる値を返すだけの関数。
TS_KEEPとかからこんな風にこれを呼び出せばswitchの値が返る(はず)。
if(SCR_AI_LIB_GETSWITCH() == 0){挙動0}
else if(SCR_AI_LIB_GETSWITCH() == 1){挙動1}
これはTSでスイッチを定義してた時のif(switch == 1){挙動1}とかって書いてたのとまったく同じになるつもりなんだが・・・?
気になって眠れないのでレスたのむw
429 :
415 :2008/02/16(土) 02:07:42 ID:???
>>428 上の方は自分なり書き方で条件分岐して、
下の方はまるっきり同じような書き方にしてるが、スイッチ自体は機能しているが、実際には行動しない・・
というカオスなことになりました・・・。
ぼくの書きかたがわるいのですかね?
ttp://mizinco.cocolog-nifty.com/file/switch.jpg SSとってきたらもうレスついてたw('A`)
いまテストできる状態じゃなくて自分で試せないんだけど
TS内の適当なところでvar test = SCR_AI_LIB_GETSWITCH();とかってやって
SysMsg('test : ' .. test);で、GETSWITCHが機能してるか確かめてもらえる?
もしかしたらGETSWITCHはreturn switchっていう書き方じゃなくて
if(switch == 0){return 0;}
else if(switch == 1){return 1;}
って書かなきゃダメなのかもしれないと思って。
431 :
415 :2008/02/16(土) 02:21:33 ID:???
func SCR_AI_LIB_SUBHEAL() { if(subHEAL == 0){ subHEAL = 1; SysMsg('サブヒール○'); } else if(subHEAL == 1){ subHEAL = 2; SysMsg('キープ保持○'); } else if(subHEAL == 2){ subHEAL = 0; SysMsg('ノーマル'); } } func SCR_AI_LIB_HEALSWITCH() { return subHEAL; }
432 :
415 :2008/02/16(土) 02:21:55 ID:???
一応こういう風に変えてやっているのだが・・・上のほうがまずいかな?
そのSysMsgは表示されるんだよな?なら問題ないだろう。 てか代入できてるかは普通に変数の中身を確認しろw それよりもHEALSWITCH関数でのreturnが動いているかどうか・・・w
434 :
415 :2008/02/16(土) 02:33:28 ID:???
スイッチとしては動いてるが、行動してくれないとプルテウス幼生の僕が前にレスを・・。
どこまで動いてるのかよくわかんなくてw TS側でLIB内スイッチの値取得できてるんならもう問題ないように見えるんだけどな。 TS_KEEPのwhileのなかに if(SCR_AI_LIB_HEALSWITCH() == 1){SysMsg('healswitch : 1');}とかって書いて ちゃんとhealswitch : 1って出てるんだよね? だったら行動しないわけがないんだが('A`)
>>431 TSのほうのソースもうぷれ。
お前の説明がひどすぎて要領を得ない。ソースを直接見たほうが100倍早いわ
書き直しましょうね(・ω・)
438 :
415 :2008/02/16(土) 10:24:24 ID:???
大変ご面倒おかけします。 while(1){ if(SCR_AI_LIB_HEALSWITCH() == 0 || SCR_AI_LIB_HEALSWITCH() == 2){ Sysmsg('hi-rusuitti0 2'); 略 } else if(SCR_AI_LIB_HEALSWITCH() == 1 || SCR_AI_LIB_HEALSWITCH() == 3){ Sysmsg('hi-rusuitti1 3'); 略 } else if(SCR_AI_LIB_HEALSWITCH() == 4){ Sysmsg('hi-rusuitti4'); 略 } // Keep Position Check SCR_AI_LIB_KEEPPOSITION(selfAi); // Main Sleep sleep(100); }
439 :
415 :2008/02/16(土) 10:25:32 ID:???
こちらの方のシステムメッセージは表示されませんでした。なにが原因なのでしょうか? よろしくお願いします。
おはよう
これでSysMsgが出ないって事はつまり
SCR_AI_LIB_HEALSWITCHをTSから呼び出したときにreturnがうまく動いてないってわけだよね
じゃあreturn switchじゃなくて
>>430 に書いたように
if(switch == 0){return 0;}
else if(switch == 1){return 1;}
に置き換えて試してみて?
441 :
415 :2008/02/16(土) 10:54:45 ID:???
func SCR_AI_LIB_HEALSWITCH()
{
if(subHEAL == 0){return 0;}
else if(subHEAL == 1){return 1;}
else if(subHEAL == 2){return 2;}
else if(subHEAL == 3){return 3;}
else if(subHEAL == 4){return 4;}
}
システムメッセージが出てきませんでした・・
>>440 朝からすみません・・。
これでreturnできてないってことは、さらにその前のsubHEALに値が入ってないってことだよね。 スイッチ切り替えの関数で変数の中身をみてみ? func SCR_AI_LIB_SUBHEAL() { if(subHEAL == 0){ subHEAL = 1; SysMsg('サブヒール○' .. subHEAL); } else if(subHEAL == 1){ subHEAL = 2; SysMsg('キープ保持○' .. subHEAL); } else{ subHEAL = 0; SysMsg('ノーマル' .. subHEAL); } }
とにかくね、どこまで動いているかとその時点で変数の値がどうなってるかを事細かくSysMsgで表示していけ 動かしてる自分にしかそれはできないし、どこが問題なのかくらいは自分ではっきりさせてほしい
if文でelse if使うときは最後else文になってないとだめなんじゃないか?
そんなことはないと思うぞ〜? 俺の自動建設はなくて動いてるし。
>441 単純な構文エラーか存在している可能性はない?、この処理系は構文エラーあってもメッセージの一つもでない ので、スペルミスとかあるだけで、挙動しなくなるから。
447 :
415 :2008/02/16(土) 11:45:48 ID:???
>>442 変数はちゃんと代入されてました。
やはり、スイッチには問題がないみたいですね。
値が入ってるのにreturn出来てない状態なのかな?無論TSのほうのメッセージは出ませんでした。
無知ですみません・・・。
じゃあこういうのは? func SCR_AI_LIB_HEALSWITCH() { if(subHEAL == 0){'SysMsg(healswitch0 : ' .. subHEAL);} 略 }
'の位置間違った
まずは while(1){ if(SCR_AI_LIB_HEALSWITCH() == 0 || SCR_AI_LIB_HEALSWITCH() == 2){ Sysmsg('hi-rusuitti0 2'); 略 } else if(SCR_AI_LIB_HEALSWITCH() == 1 || SCR_AI_LIB_HEALSWITCH() == 3){ Sysmsg('hi-rusuitti1 3'); 略 } else if(SCR_AI_LIB_HEALSWITCH() == 4){ //ここを else{ にかえろ Sysmsg('hi-rusuitti4'); 略 } // Keep Position Check SCR_AI_LIB_KEEPPOSITION(selfAi); // Main Sleep sleep(100); } 上のように最後をelseに変えろ。 それでも何もでなかったらそもそもwhile文に処理が到達していない。 そしてその可能性が高い。
451 :
415 :2008/02/16(土) 11:55:41 ID:???
>>450 else(SCR_AI_LIB_HEALSWITCH() == 4){
Sysmsg('hi-rusuitti4');
こうした場合、スイッチすら反応しませんでした。
else ifに戻すとスイッチだけは反応するのですが・・。
if文勉強してこい elseなのになんで条件文書いてんだよww
453 :
415 :2008/02/16(土) 12:01:40 ID:???
プルテウスですみません・・elseを書いたこと無かったので、理解しました。
出直しましょうね(・ω・)
頼むぜ兄さん・・ else{ Sysmsg('hi-rusuitti4'); 略 } な。で、結果はどうよ
456 :
415 :2008/02/16(土) 12:04:13 ID:???
まぁ結果はわかってはいたものの・・ダメでした・・・。
457 :
415 :2008/02/16(土) 12:05:43 ID:???
動作的にはelse if(略 sys略 で書いたときと全く同じ動作をしました。 subHEAL自体の値は読み込まれていても、それがTS まで届いてない感じですかね?詳しくはわからないです・・。
whileにたどり着いてないのなら、それが含まれている関数全体を書け
あとSysmsgじゃ動かなかったような気がする。SysMsgじゃないと・・・キノセイだったかな?
460 :
415 :2008/02/16(土) 12:07:06 ID:???
func SCR_ATTACKER_TS_KEEP(self) { sleep(100); // start log AiLog('ATTACKER_TS_KEEP : Start!!!'); // declare variables var selfAi = GetAiActor(self); var prevTS = GetPrevTS(selfAi); // Hold Check SCR_AI_LIB_UNHOLD(selfAi, prevTS); // Main Loop while(1){
多分気のせいじゃねえな・・・
あぅあぅw
僕には今、嵐に見えています。 出直してください。
465 :
415 :2008/02/16(土) 12:14:20 ID:???
if(SCR_AI_LIB_HEALSWITCH() == 0 || SCR_AI_LIB_HEALSWITCH() == 2){ SysMsg('hi-rusuitti0 2'); // AUTO POTION if('ChangeTS' == SCR_AI_LIB_AUTOPOTION(selfAi)){ return; } // User Target Check if('ChangeTS' == SCR_AI_LIB_USERTARGET(selfAi)){ return; } // User Skill Check if('ChangeTS' == SCR_AI_LIB_USERSKILL(selfAi)){ return; } // SUBHEALING Healing Check /*if('ChangeTS' == SCR_AI_LIB_SUBHEALING(self, selfAi)){ return; }*/ // Near Target Check if('ChangeTS_BATTLE' == SCR_AI_LIB_NEARTARGET(self, selfAi)){ ChangeTacticsAi(selfAi, 'TS_KEEP_BATTLE'); return; } }
466 :
415 :2008/02/16(土) 12:14:42 ID:???
else if(SCR_AI_LIB_HEALSWITCH() == 1 || SCR_AI_LIB_HEALSWITCH() == 3){ SysMsg('hi-rusuitti1 3'); // AUTO POTION if('ChangeTS' == SCR_AI_LIB_AUTOPOTION(selfAi)){ return; } // User Target Check if('ChangeTS' == SCR_AI_LIB_USERTARGET(selfAi)){ return; } // User Skill Check if('ChangeTS' == SCR_AI_LIB_USERSKILL(selfAi)){ return; } // SUBHEALING Healing Check if('ChangeTS' == SCR_AI_LIB_SUBHEALING(self, selfAi)){ return; } // Near Target Check if('ChangeTS_BATTLE' == SCR_AI_LIB_NEARTARGET(self, selfAi)){ ChangeTacticsAi(selfAi, 'TS_KEEP_BATTLE'); return; } }
467 :
415 :2008/02/16(土) 12:15:11 ID:???
else{ SysMsg('hi-rusuitti4'); // AUTO POTION if('ChangeTS' == SCR_AI_LIB_AUTOPOTION(selfAi)){ return; } // User Target Check if('ChangeTS' == SCR_AI_LIB_USERTARGET(selfAi)){ return; } // User Skill Check if('ChangeTS' == SCR_AI_LIB_USERSKILL(selfAi)){ return; } // SUBHEALING Healing Check /*if('ChangeTS' == SCR_AI_LIB_SUBHEALING(self, selfAi)){ return; }*/ // Near Target Check2 if('ChangeTS_BATTLE' == SCR_AI_LIB_NEARTARGET2(self, selfAi)){ ChangeTacticsAi(selfAi, 'TS_KEEP_BATTLE'); return; } } ちなみにSysMsgでもでませんでした・・・よ?
なんとぉ 読み込んでるかテストするときは具体的な動作は全部消して、SysMsgだけにしてね どういう状態でテストしてるのかわからんけど while(1){ if(SCR_AI_LIB_HEALSWITCH() == 0 || SCR_AI_LIB_HEALSWITCH() == 2){ SysMsg('hi-rusuitti0 2'); } else if(SCR_AI_LIB_HEALSWITCH() == 1 || SCR_AI_LIB_HEALSWITCH() == 3){ SysMsg('hi-rusuitti1 3'); } else{ SysMsg('hi-rusuitti4'); } // Keep Position Check SCR_AI_LIB_KEEPPOSITION(selfAi); // Main Sleep sleep(100); } これでテストしてSysMsgが出なかったら↓
while(1){ SysMsg('test'); // Keep Position Check SCR_AI_LIB_KEEPPOSITION(selfAi); // Main Sleep sleep(100); } これでテストして、表示されたら↓を試す var healswitch = SCR_AI_LIB_HEALSWITCH(); SysMsg('healswitch : ' .. healswitch);
まあまさかと思うが、467で終わりじゃないよな・・・? while文の閉じ括弧とfuncの閉じ括弧 }
471 :
470 :2008/02/16(土) 12:29:28 ID:???
while文の閉じ括弧とfuncの閉じ括弧はちゃんとあるんだよな?
472 :
415 :2008/02/16(土) 12:33:30 ID:???
>>468 >>469 スイッチなくしても表示されてません・・・・
これはつまりスイッチ以前にどこか間違えているということですよね・・・
論外だったのかな・・?ちょっと見直してきます・・
TSのどっかの構文が間違ってるな。 TS全体が死んでるんだよ。 アタッカーをキープやホールドにすることすらできてないだろ? セミコロンの付け忘れやif(test = 1)みたいなありがちなミスしてないか見直せ あと{ }はしっかり全部閉じてるか
474 :
415 :2008/02/16(土) 12:38:51 ID:???
>>473 KEEPにした場合普通に攻撃するから不思議なんですよ・・・
なんだかge.exeのKEEPを全て無視しているかのような動きなんですよね・・・なんだかデフォルトみたいな動きで・・
正直外部の人間にはお手上げだろw exeごとうpするかデフォルトで我慢しろ
476 :
415 :2008/02/16(土) 12:50:59 ID:???
プルテウス幼生ごときがLIBにスイッチを移動するという考え自体がいけなかったのかな・・。 ここまで、アドバイスなどを頂きありがとうございました。 私には無理だということがわかりました。 一応スイッチとしてはTSの方で機能しているので、私みたいな糞はそちらで我慢します。 プルテウスごときが高望みなんてしてはいけませんよね・・・ ここまでレスを沢山いただき、ありがとうございました。
レイドしててレス付けれなかった あのなー 文法的とかの根本的なミスがあると自動的にデフォのAIにおきかわんだよ だからShowInfo(1)とか書いておいて、根本的なミスおかしてたらデバッグコード表示されないからすぐわかるからってぶろぐにもかいたのにまったく・・・
EL改AIerだけど何か質問ある?
GetNeedHealFriendとかの戻り値の形式わかる? スキル発動時に立っているところのすぐとなりの位置を指定したいんだがどうすればいいかな。
var curTarget2 = GetNeedHealFriend(selfAi, 1, 101); SysMsg('standx : ' .. curTarget2.x); とかって構造体っぽく書いてみたが動かなかったw x,y,h座標かなと思ったんだがな〜
もう1つ質問。これよりもっと良質なスロット指定型つくるヒントくだしあ>< func SCR_AI_LIB_GETSLOT(self) { var selfAi = GetAiActor(self); SelectMyPc(0); if(IsLeader(selfAi) == 'YES'){return 0;} else{SelectMyPc(1); if(IsLeader(selfAi) == 'YES'){return 1;} else{SelectMyPc(2); if(IsLeader(selfAi) == 'YES'){return 2;}}}} func SCR_AI_LIB_AUTOPOT(self) { if(PotSwitch == 1){ var slot = SCR_AI_LIB_GETSLOT(self); if(slot != nil){UseItem(slot, 0);sleep(100);} } return;}
>>479-480 召喚つかってねーから分からないけど、
option.KeepRangeの例から推測してできたとしてもXは大文字じゃね?
カトリソロなら知らんが、俺ならスカをターゲットにして召喚するかな。
大文字でも無理だったわ。 BOTで綺麗にY方向に一定間隔で砲台建設してるやつとかいるからAIでできんのかなとね。
>>481 正直ジョブ決めうちが一番安定してシンプル。
SelectMyPcで取得するなら一度スロット取得したselfはグローバル変数にいれておけば?
var g_friends = { nil, nil, nil };
func SCR_AI_LIB_GETSLOT(self)
{
if(g_friends[1] == self) { return 0; }
を3スロット繰り返し、配列の添え字は1から始まるので注意
var selfAi = GetAiActor(self);
if(IsDead(GetNeedHealFriend(selfAi, 1, 101)) == 'YES') { return nil; } 死んでたら選択できない
SelectMyPc(0);
if(IsLeader(selfAi) == 'YES'){ g_friends[1] = self; return 0; }
を3スロット繰り返し
return nil;
}
>484 ナイスでビューティフルなアルゴリズムですこと、加えてスマートな関数に脱帽
お、IsDead関数なんてあったのか。それは便利だ。 selfを変数にいれておくのって最初考えてたんだけどなんでやめたんだったかなぁ・・・思いだせん
お 配列つかえるの なんかワクワクしてきた
って思い出したw リーダー変えながら3回操作しなくちゃいけないから、準備の要らない方法を模索してたんだったw
3回ってことはないか。 個別選択でTSから1度呼び出して全員のself保存する必要があるよね。 使用手順が決まってるとぶろぐに載せにくいと思って回避したんだった('A`) IsDeadについてだけど、死んでてもAIって動いてるの?w 1.自動蘇生するには、自分が死んでたらスイッチがはいって蘇生してスイッチ戻る 2.それともスカのAIに組み込んで、近くのキャラをIsDeadで判定して死んでるやつがいたら蘇生 どっちもできるのかな。
インテシファイをスキルスロットじゃなくて UseSkill(〜で、発動できんのかね?
>>489 死んだらAIは動いてない。HEALERからこんな感じでおこせるんじゃね?
func SCR_AI_LIB_RESUSCITATION(self)
{
var i = 0;
while(i < 3) {
if(g_friends[i+1] != nil) {
var friendAi = GetAiActor(g_friends[i+1]);
if(IsDead(friendAi) == 'YES') {
var friendTarget = GetNeedHealFriend(friendAi, 1, 101);
UseSkill(selfAi, friendTarget, 30113);
while(IsSkillUsing(selfAi) == 'YES') { sleep(100); }
}
}
i = i + 1;
}
}
>>490 ターゲットに自分自身やnilを入れてもだめ?
>>491 あーミスった、IsDeadの引数はターゲットな。
先にfriendTargetを取得してくれ。
自PC内ならいくらでもいけるんだけど、これSQ内の自動蘇生に膨らませられないかなとおもってさ。 func SCR_AI_LIB_RESUSCITATION(self) { var selfAi = GetAiActor(self); var friendTarget = GetNeedHealFriend(selfAi, 1500 , 10); if(IsDead(friendTarget) =='YES'){ UseSkill(selfAi, friendTarget, 30113); while(IsSkillUsing(selfAi) == 'YES'){sleep(100);} } } こんなんで・・・。てかIsDeadの引数がさっきと違うけどどっち?
>>494 死んだSQ内のキャラは知られてる関数だけじゃとれないだろうな。
死ぬ前にターゲットを配列に詰め込むしかないんじゃね?
なるほど GetNeedHealFriendだと自分の一番近くのキャラしか見なさそうだな・・・ 配列に全部保存はちょっと現実的でなさそうだw
498 :
ネトゲ廃人@名無し :2008/02/16(土) 17:24:56 ID:f22msgCa
IsDeadは使えないって昔おしえてやったろうがwww
普通に使えてるが。 放置が一人でも死んだらチートOFFにしてるぜ。 スカだけ生き残ってヒールとかしてると不自然だしな。
俺はキャラ一人でも死んだら蔵落ちるようにしてたな。
韓国蔵を解析しようと思ってひさしぶりに韓国垢に入ろうと思ったら ログインできねー。垢BANはされてないんだけど何故か入れない。 再インスコでもだめだ
ログインしないと蔵落とせないの?
func _GetPersonal(self, selfAi) { if(F_person0 == self){ return 0; }else if(F_person1 == self){ return 1; }else if(F_person2 == self){ return 2; }else if(F_person0 == nil || F_person1 == nil || F_person2 == nil){ if(F_person0 == nil){ SelectMyPc (0); if (IsLeader(selfAi) == 'YES'){ F_person0 = self; return 0; } } if(F_person1 == nil){ SelectMyPc (1); if (IsLeader(selfAi) == 'YES'){ F_person1 = self; return 1; } }
if(F_person2 == nil){ SelectMyPc (2); if (IsLeader(selfAi) == 'YES'){ F_person2 = self; return 2; } } } _ResetPerson(); return -1; } 自分のIDを返す関数 _ResetPerson();は全部nilにする関数 必要なときに呼んで、初期化されてなかったら初期化
505 :
ネトゲ廃人@名無し :2008/02/17(日) 20:11:57 ID:owwfNgkA
皆さんがしてるようなことをするには 何をすればいいのでしょうか? 簡単に手順などを教えてください;;
原生生物キタ━━━━━━(゚∀゚)━━━━━━ !!
スレの頭近くのテンプレみてこい
508 :
ネトゲ廃人@名無し :2008/02/17(日) 21:08:24 ID:owwfNgkA
ResourceHackerってのを開いてge.exeを開いたんですが そこから何をすればいいのかがわかりません;;
\(^o^)/
releaseのほうのge.exeな。中身読んで意味さっぱりだったらプログラミングできないからあきらめろ
511 :
ネトゲ廃人@名無し :2008/02/17(日) 21:32:26 ID:owwfNgkA
;; releaseの方のge.exe開いたて23を開いたら110~113があったんですが その中身をどういじればどうなるかなどがわかりません;; ちなみに今年パソコン関係の専門学校いきますorz
みじんこブログ見て、理解できないなら無理、諦めろ。
513 :
ネトゲ廃人@名無し :2008/02/17(日) 21:44:27 ID:owwfNgkA
>>512 返事ありです;;
みじんこブログを最初のとこから見たらだいぶわかってきました
がんばってみますorz
みじんこだけど、最近LIBで制御するように気が変わったから、ブログも後で色々変えたんだ。 前のTSで制御するイメージの記事が残ってるかもだけど惑わされんように。 TSで制御するかLIBで制御するかをはっきりさせてからいじること。
515 :
ネトゲ廃人@名無し :2008/02/17(日) 22:09:48 ID:owwfNgkA
TSで制御する場合110.111.113でLIBで制御する場合112を変えるんですか?
両方変えることになるけど、グローバル変数を定義するのが呼び出し側TSか、呼び出される側LIBかっていう話し。LIBオススメ。
TSで制御とか、プログラミング的に相当頭わりーぞ
みじんこ以下の相手をする方がもっと頭悪い 過去ログ嫁
サーセンwみじんこはプログラミング習い始めて2年目なのですorz
>>519 2年もやってたらだいたいわかると思うけど、これはAIなんていってるが、人工知能なんてものじゃなくフラグでインスタンスのステートを遷移するだけのもの。
解析もだいたいあがってるし、すぐにマスターできるだろ
>>517 の言う、プログラミングの常識がかけてることの言い訳なのです><
とても簡単なプログラミングで、自分の実装したい機能を考えて動かすのが楽しいです
LIBでスイッチ切り替えてから、すごい操作が楽になったわ
チャット欄からAI側になにか入力することってできる? 変数の値とか、あるいはコマンドで関数実行とか
みじんこだけど、この前過去ログ持ってるって言ってた人、zipで固めてどっかうpしてもらえたら出来るだけ整理しようと思う。
>>523 できない。
少しでもソースみたらそんなのすぐわかるだろ。脳みそとけてんのか?
たしかにiesに登録されてるコマンドしかチャットから入力できなかったなスマソ
>>523 ためしてみてよ
キー入力をバッファにためてenterでsysmsgっての
何を言ってるのかよくわからんorz
馬鹿すぎるw
召喚カトリの自動召喚で だいなあいらんどにあったやつにInstantHoldが入ってたから今までそのまま使ってたんだけど アイテム拾った後にキープ位置に戻るときにこれのせいでカクカクして不自然だからコメントアウトしてみた 特に問題が起きてるように見えないんだけどInstantHoldは必要なものなのか?
InstantHold いらねー
532 :
ネトゲ廃人@名無し :2008/02/18(月) 15:37:55 ID:xBkWyl3d
策敵範囲拡大 を拡大するにはどこをいじればいいのでしょうかorz
それを自分で探し出すことくらいできないとこの先プログラミングやってらんねーぞ どこで策敵してるかくらいわかれ Enemyって文字列が入ってる関数が112にあるだろ
>>策敵範囲拡大を拡大 難しいんじゃねーかなぁ、俺は策敵範囲拡大は出来るけど 策敵範囲拡大の拡大は出来ないじぇTT。w
つーかみじんこぶろぐの基本的な関数のところ見てこいよw
おぷしょんきーぷれんじをぎせんとかいちまんにしてみそ。
つーらーれーたー
538 :
ネトゲ廃人@名無し :2008/02/18(月) 15:48:55 ID:xBkWyl3d
GetNearAtkableEnemy(selfAi, 1000) ここをいじった後にスクリプトをコンバイルするってのを 押したんですけど これで策敵範囲はひろがるんですか?
こんばいるwwwwww compileでググってこいwww コンパイル→保存→蔵再起動→テストだゴルァ
1000じゃ分かりにくいから、2500とかで試しやがれ〜
1000じゃわかりにくいってか1000がデフォじゃね?
542 :
ネトゲ廃人@名無し :2008/02/18(月) 16:04:11 ID:xBkWyl3d
テストってなんですか?
自称元EL改AIerだけど、このスレをお気に入りから消す前にもう質問ない?
オートSP回復スクリプト教えて。
545 :
543 :2008/02/18(月) 16:24:59 ID:???
>>544 残念ながら、SPを直接取得する関数は分からない。
オート召喚やオートレビテでSPを回復しながら使いたいなら
UseSkill(selfAi, 召喚・・・
if(IsSkillUsing(selfAi) == 'NO') {
// 何らかの理由でスキル失敗、SPPOTを飲んで再挑戦
UseItem(0, 1);
UseSkill(selfAi, 召喚・・・
}
といったふうに書くか、タイマーで調整するしかないんじゃないかな。
546 :
543 :2008/02/18(月) 16:28:18 ID:???
PvPで使うなら無駄を承知でTS_USERSKILLから抜ける前にSPPOT飲んでおけばいいだろう。
547 :
ネトゲ廃人@名無し :2008/02/18(月) 16:28:44 ID:xBkWyl3d
えと 3000にしてもなんもかわってなかったですorz 方法がちがうのでしょうか? GetNearAtkableEnemy(selfAi これをいじる前になにかする作業がありますか?
ない
549 :
ネトゲ廃人@名無し :2008/02/18(月) 16:33:12 ID:xBkWyl3d
そうなんですか・・・・・・ 俺やったの↓の方法なんですが GetNearAtkableEnemy(selfAix xを3000などにした後 スクリプトをコンバイルするを押して 保存してゲームを起動させたんですが これであってるのでしょうか?
>>545 設置系の任意な場所指定してのオートスキル教えて
552 :
ネトゲ廃人@名無し :2008/02/18(月) 16:44:42 ID:xBkWyl3d
>>551 すみません
どういう意味なんでしょうか?
ごめん適当に書いた。見直したら1箇所しかなかったからキニスンナw GetNearAtkableEnemy(selfAi, 3000);な それで動かないならわけわからん
554 :
ネトゲ廃人@名無し :2008/02/18(月) 17:04:22 ID:xBkWyl3d
合ってるとおもうのにできませんorz
できればはじめからの手順をおしえてください;;
それと
>>539 が言ってたテストとはなんなんですか?;;
555 :
ネトゲ廃人@名無し :2008/02/18(月) 17:15:39 ID:xBkWyl3d
それと GetNearAtkableEnemyの設定って ゲームを起動してる時にするんですか?
とうとう、サポートセンター化してきて、ワロタ
ここまでの原生生物は初めてだ・・・・
索敵範囲拡大はすぐにバレるぞ
いや、きっと全てを知り尽くしている者の暇つぶしの釣りなんだというきがしてきたw
>>550 ミッションとかで特定の座標に正確に建築したいのなら分からん。
targetオブジェクトの座標プロパティを探さないと無理だろうね。
MOVE、ASSULT、KEEPの3地点を手動で指定すればいろいろ出来るけどね。
561 :
ネトゲ廃人@名無し :2008/02/18(月) 17:32:27 ID:xBkWyl3d
いや 本当にまったくわかりませんorz だれかこのゴミクズにもわかるように説明してください;;
過去スレ含めて見てもわからないなら、 あきらめるか自分専用スレ立てたほうがいいよ。 親切な僕ちゃんからのアドヴァイス
いじれないなら中華のBOT配布サイトから落としてくれば?
564 :
ネトゲ廃人@名無し :2008/02/18(月) 17:48:41 ID:xBkWyl3d
中華のBOT配布サイトググっても出てきませんorz
鯖は?
566 :
ネトゲ廃人@名無し :2008/02/18(月) 17:51:57 ID:xBkWyl3d
スピネルです
アカウント名は?
568 :
ネトゲ廃人@名無し :2008/02/18(月) 17:55:07 ID:xBkWyl3d
それは・・・・・
うぜえから消えること
おまえageっぱなしだなw ちょっと相手にしてらんないから諦めろ 特定座標にばっかりスキル打ちたいんなら あらかじめその座標をGetNeedHealFriendでグローバル変数に代入していくスイッチつくって それで座標保存したあとで好きなようにUseSkillじゃね
>>570 みじんこには難しいなw
座標を変数に置き換えるのは予想してたけど構文がわからん
GetNeedHealFriendは座標返すはずだから
var pointとかをグローバルで定義してスイッチで呼び出してGetNeedHealFriend(0.101)=point
みたいな感じ?
570の俺はみじんこなんだがw 人形召喚したり建築物たてたりするときに、curTargetっていうのにそのスキル発動位置をいれてるだろ? 俺が考えたのはそれと同じ感じでcurTargetをいくつもあらかじめ保存する。 その分Hotkeyから呼び出す数は増えるw グローバルで保存したい座標の数だけ変数作って func 1 {curTarget1 = GetNeedHealFriend(selfAi, 1, 101);} こんなんを保存する座標の数だけ作って Skill(selfAi, curTarget1, スキルID); で指定すればおkじゃね?出かけ前で急いでるんで簡単でスマソww
あーなるほど把握した 1回別に保存してスキル発動の時呼び出してって考えたんだが2度手間かw サンクスw
ヤバい、このスレじっくり読んでたら、俺もみじんこになりたくなってきたwww
>>560 のやり方で俺もフォトン狩りしてたけど、
最近はGEなんかのvis稼ぐためにPCつけっぱにする価値を感じない。
577 :
ネトゲ廃人@名無し :2008/02/18(月) 19:59:40 ID:xBkWyl3d
>>575 配布サイトってそこのこと言ってたんですねorz
そこって6月6000円ぐらい金かかるんですよね?
それとやっと範囲拡大できるようになりましたorz
>>577 とりあえず、sageてから質問しろ sageないなら消えろ
580 :
ネトゲ廃人@名無し :2008/02/18(月) 20:18:25 ID:xBkWyl3d
>>579 すいませんsageます
質問なんですが
範囲拡大などをした後もとにもどすには
変えたとこを戻さないと治りませんよね?
クソゲーよくあきないな
( ゚д゚) (つд⊂)ゴシゴシ (;゚д゚) (つд⊂)ゴシゴシ _, ._ (;゚ Д゚)
みじんこ以下は放置しろ
死んだら即ログアウト→ログイン→ワープ→自動キープ って中華BOTであってAiではないよね?
>>573 あれーwなんか食い違ってる気がするw何を把握したんだろうww
俺が考えてるのは、あらかじめスキル発動したい位置で
func SCR_PUPPET_TS_SAVE(self)
{var selfAi = GetAiActor(self);
SCR_AI_LIB_SAVE(selfAi);}
をHotkeyから実行して(selfAiをLIBに渡すため、TSから呼び出すしかない?
func SCR_AI_LIB_SAVE(selfAi)
{
if(curTarget1 == nil){curTarget1 = GetNeedHealFriend(selfAi, 1, 101);
return;}
else if(curTarget2 == nil){curTarget2 = GetNeedHealFriend(selfAi, 1, 101);}
・・・
}
curTarget2でreturnが抜けたorz こんな感じで座標をつっこんでいって、スキル発動位置に適当にいれれば・・・と。 あと↑の書き方よりも配列使ったほうがよかったねw
配列とカウンター使えばもっと楽じゃね?
座標保存する変数を配列変数にして、 代入もスキル発動もwhile文とかでカウンターインクリメント(増やして)やればおkだなw
スイッチも配列にすれば、切り替えの関数を何個も書かなくていいと。 楽かもしれん。
Ai デフォルトが当てられてるね なんなんだろ、この中途半端な たまに差し替える感じ
何が狙いなんだろ
AI差し替えたら、 バージョン違うって怒られて接続できねえええええ
593 :
ネトゲ廃人@名無し :2008/02/19(火) 13:49:57 ID:wLcJJpY/
UZEEEEEEEEEEEEEEEEEEEEEE
興奮して下げ忘れたスマン(´・ω・`)
俺は問題なく入れてるけど
みじんこウザイw 入れない事してるから入れないんだよ!
やっぱりみじんこが沸いたな 過去ログ読んだら幸せになれるよ
598 :
592 :2008/02/19(火) 14:28:48 ID:???
入れますた(つД`)
はいれない(^o^)
AI差し替えきたんなら、前までのソースを新しいファイルにコピペだ
>>596 みじんこは普通に入れてるからそれは冤罪だww
差し替えられたやつざっと読んでみたけどなにも変更点ないぽいね?
何が変わったか見てるけどわかんねぇ
NONEにある if (true == IsUseAutoKeep()) { KeepAlone(selfAi); } をだれか日本語にしてくんね?
IsUseAutoKeep()が真ならば、KeepAlone(selfAi)を実行する 日本語にするってこうですか? よくわかりません!!
if文の意味はわかるwww じゃなくて関数が具体的にどういう状態ならどうするってことをいってるのあわかんねw
楽天的に考えると、吹っ飛ばされてNONEになった場合、状態をキープに戻すような処理。 悲観的に考えると、自動キープ使用判定された場合は、タイーホ用通報処理を。。。ガクガク(;;゚Д゚;)ブルブル
中華BOTさえ手に入れば深刻されんで済むのに
大分前からあるよ。 どんなときにTrue返すか確かめてみればわかるよ
中華BOTって金出せば手に入るじゃん。簡単に そんで金だすならRMTでもやれば普通に俺TUEEEEできるじゃん。 改Aiはミジンコが金出したくなくてやってる措置なんだから中華BOTと同等で語るものじゃないぞ
金出したくじゃなくて貧乏人の集まりだから金がないんだろ^^
中華には金払いたくないです
同じく
ゲームを楽しんでるのではなくて、AIプログラミングを楽しんでるのです。
GEじゃなくてもいいじゃんw
>613は手段が目的になる例。 そんな俺もAIいじる方が楽しくなってきたwww
でもほんとわざわざ中華BOTに手を出すぐらいならRMTしたほうがまだいいよな。 中華に金なんてあげたくないし。
>>616 RMTも業者の中間マージン以外は大陸に行ってますが。
不正者申告機能 回避は不可能なのでしょうか?
無理
リオンの四角部屋にジャックで綺麗に全部カバーして設置しているのは。 クレイジの機能です。 座標指定で設置物を置けるようになりましたw さらに、凶悪なTOOLになってきました、そろそろ会員が多くなってきたので 当分の間か永久に現会員のみの継続販売に移行するようです。
で?
リオン合同で十分稼げるほど凶悪なツールなのかそりゃやう゛ぁい
>>620 多少手間かかるけどみじんこでもAIでそれ実現できるから引っ込んでな
みじんこぶろぐで飼ってるココロが段々言葉を覚えだしました。 関数とかスタンスとか自動とか変数とか口走ります・・・w
AIBOTは邪魔なんですwキエテナクナレ
AIBOTてなんだよw
S○NYの犬みたいな・・・
武器を持たないキャラ(カトリとか)をニアタゲで常に走らせたいんですが keep rangeを6000に変えても動作しませんでした。 どこをいじればいいですか?
自動でアイテムを拾わせたいんですが func SCR_AI_LIB_PICKITEM(selfAi) { var nearItem = GetNearItem(selfAi, 1000); if(nearItem != 0 && ItemSwitch == 1){ sleep(800); PickItem(selfAi, nearItem); while(IsExistItem(nearItem) == 'YES'){ sleep(100); } if(GetNearItem(selfAi, 1000) != 0){ SCR_AI_LIB_PICKITEM(selfAi); } } return; } をLIBのとこにいれても 反応しませんorz どうすればいいのでしょうか?
AIの流れがわかってからスレにこような まずはソースを追っていって全体像把握してこい
自動で拾わせるのは、いいんだが ゴースト出しまくるヤツどうにかならんかな? 他人のゴーストで、コッチのAIが止まっちまう!
他人のどうにもなんねw 止まるのいやなら、拾えないアイテムがあったらItemPickのスイッチOFF
動詞と目的語が逆になって恥ずかしす///
>>630 ソースめんどくさいから見てないけど反応するところに入れればいいんじゃね?
エラー100回くらいで強制終了してから質問にこいよ
func SCR_AI_LIB_PICKITEM(selfAi) { var nearItem = GetNearItem(selfAi, 1000); if(nearItem != 0 && ItemSwitch == 1){ sleep(800); PickItem(selfAi, nearItem); while(IsExistItem(nearItem) == 'YES'){ sleep(100); } if(GetNearItem(selfAi, 1000) != 0){ SCR_AI_LIB_PICKITEM(selfAi); } } return; } 色々調べたんですがいまだにわかりませんorz これドコにいれるか教えてくださいorz
うるせぇカス
入れたいところに入れる。
駄目なら変える これを繰り返すだけだよ。
>>635 の言うとおりだと思うよ。がんばってね。
さっき、ゴースト出しまくりながら走り回ってたヤツが ゴーストもろとも消えた(@@ナ、ナニゴト
みじんこぶろぐに乗ってるのって そのままコピーして貼り付けても使えないんですよね? どうすればいいんですか?
どうすればいいんだろうね ミジンコな僕から言わせて貰うと、あなたは考えるとか調べるっていう機能が抜けていますよ さて、どうやって考えましょうかね、調べましょうかね
普通に考えて、ソースに全角文字はいってたらアウトだろ? 記事の体裁整えやすいから行頭のスペースは全角で書いてる。
643 :
ネトゲ廃人@名無し :2008/02/20(水) 17:53:32 ID:FUDnRqBv
ミジンコの氾濫だぁあああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああ
そろそろ春休みか
だなぁ
ようやく入れた・・・ exeのバックアップとり忘れで作り直し。 メンドイので2日かけてダラダラと(´A`)
リソースハカーでやってるんだとしたら なんでリソースハカーでバックアップとってないのか不思議でたまらないよ。
みじんこの人へ ブログ大変参考になった、アリガト! 一般ミジンコとみじんこぶろぐと ごっちゃでどのミジンコか分からんね、最近w
自動拾いがどうしてもできませんorz いろいろ調べていろんな場所につっこんでみたんですが 反応しませんorz どなたかこの馬鹿にわかるように 教えてください;; おねがいしますorz
出来ることからやればいいんじゃないでしょうか。
今 策敵範囲拡大と ヒール範囲拡大 はできるんですけど 自動拾いができないんですorz どうか教えてくださいorz
ヒント:「他人のソースを見てマネる」
>>653 そのソースってたまに掲示板とかに張ってあるのですか?
原生生物へ 機能を拡張するときは、LIBの関数を新たに自分で作り追加する。 一番下にでも追加していけばいいだろ。 func SCR_AI_LIB_SAMPLE() { うんたらかんたら } その関数を呼び出したいところに SCR_AI_LIB_SAMPLE(); みたいな記述を入れてやれば呼び出される。どこにいれるかは好きなように。
あと最近簡単なデバッグすら自分でしないゆとり単細胞生物がいるなぁ・・・ みじんこぶろぐの中の人もゆとり世代なんだが('A`)
どう考えても釣りだろ お前らのお人よし加減に脱糞するわ
そうだな。 もうスルーする。
スルーポ
残念ながら
>>635 頭抱えて苦しんでください ゆとり世代の方々
SysMsg( );
AIの全体の流れを読む気がないやつに言うことはない
ゆとり排斥の正しいふいんきになってよかった
なんかGEって、ガッチャマンは妬まれて嫌われるねw 俺もAIとかTOOLで今度から稼ごう。
ガッチャマン = 現状の運営体制に満足して、さらに寄与している 運営がもっとしっかりしていれば、単純に経済力からの妬みにみえるけど、 価格とか確率とか、Bot状況とか単純に文字化けとか色々おかしい場所が噴出してるのに それに目をつぶってか享受してか、お金をつぎ込んでしまうプレイヤーを嫌うのは当然な気がする。
俺の印象はこうだな ガッチャマン>>>改AI>>>>>>>>>>>>KYガッチャマン>>>BOT>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>運営
>>666 一般人っていないんだな。 そうだと思ってた。ありがとう
今日からいじりだして、まだまったく理解できてないんだけど、 キープモードとかホールドモードを維持するためには、 // Hold Check以下を「//」で全て除外すれば、 ホールドキープできるの? // Hold Checkの最後にChangeTacticsAi(selfAi, 'TS_HOLD'); とかぶちこんどけばいいの?
うん
とりあえず今いろんなところに SysMsg('');ぶちこんでどんなときにこのスクリプトが実行されてるか実験中。
みじんこぶろぐの自動アイテム拾いで、 ItemSwitch == 1って何? どっかで定義しなきゃいけないの?関数?
672 :
671 :2008/02/22(金) 00:28:52 ID:???
自己解決orz よく読んでなかった。。。
ガンガレ プログラミング初心者のようなのでみじんこからヒント 関数にはかならず関数名のあとに括弧が付く
ありがとうございます。 みじんこぶろぐ見ながらがんばってるんですけど、 共通タゲとかはどこに書くってのが書いてあったので、できたのですが、 アイテム拾いのSCR_AI_LIB_PICKITEM(selfAi);をどこに入れたらいいのか。。 いろいろやってるのですけど、うまくいきません。
じゃあ無理だな クソシテネロ
本スレでみじんこの宣伝すんのやめろ 旨みが減るし 原生動物が沸いてくる あとBOT販売の某学生 最近必死みたいだが 欠陥商品売れなくて困ってるのかw お前は勝手に氏ね
>>674 自分の好きなところにいれればいいからどこに入れるって書かなかったんだが。
ヒント:どのタイミングで周囲にアイテムが落ちていないかをチェックしたいか
好きなところに入れて動くまで試してみろって何回言わせればいいんだ 現代文の論述問題で、文意が合ってるのに丸つけられないみたいな奴だな
スレの過去ログまとめてもってる人、zipでうpよろです
誰か不正者申告回避か監獄クエ自動のスクリプト作ってくれる神はいないのだろうか。。。
俺も過去ログを歯抜けながらもうpしようとまとめてた最中だった( ´・ω・`)
でも、完ログがそろったので
>>683 まりがとう
>>682 何甘えたこと言ってるんだ。
申告されないAIを作れ。
>>683 わざわざありがとう。3〜7が抜けていたんだ。ちょっと勉強してくる
改AI自分で作るのはダルいけど欲しいって奴いる? オートpot、アイテム拾い、キープ維持、時間でbuff使ったり基本的なのは一通り入ってる 所々で不具合があるかもしれないけど、俺に分かる範囲でサポートしてやるぞ。 欲しい奴はメールくれ alpa456123@yahoo.co.jp
>>687 原生動物が湧いてうざくなるからやめとけ
デフォだと全体マイクで「I am a BOTer, kill me!」とか出るんならおk
>>685 そんなのあるのか。。
もしかして申告されないAIってアイテム、スキル使わずキープオンリーだけって事?
それともちゃんと方法があるのか否か
zip受け取りますたthx
まとめられたらぶろぐあたりにうpるつもり。
>>689 いかにも人間が操作してるようなAIを自分で作るんだ。
もしくは申告に反応しないだけのAIかどちらか。
これ書いてる今もメイン垢でアイテム拾いまくってるよ。 申告食らったことなんて一度もない。 PKされた腹いせに中華から申告されたことを除けばw
落ち着いてなにか別なことするときは普通な放置してるけど 2chみたり程度は自動で動かしたままだな
GetLeaderIndex GetSlotIndex GetTeamIndex ってなんだろ。 exe眺めると楽しいなぁ。
中華申告してくるのか 中華の周りで1日おいてるとほぼ死ぬことはなくなったのに
アタッカーのサブヒールに慣れすぎて、ネカフェで普通のAiでエミリアつれて放置してたら すぐに死んでたwwwwwwサブヒールって怪しすぎるんだなって事に今気づいたわ
ネカフェのAIいじっとけw
前スレはキャッシュで見れるし別にいらないと思う 6〜10お願い
いずれ見えなくなるからさ。 とりあえずdatをbbs2chreaderの形式でHTMLにまとめたのをうpするかな。 レス整理はそれなりに時間がかかる。
乙
スレをまとめるの初めてだから結構戸惑いつつやったのが
>>697 なんだが、
まとめ方とか、CSSいらねぇwとかってある?
特になければ同様にして気力が続く限り古い方にさかのぼって行く。
省いたり抜き出したりしなくても、単にhtml化だけでいいと思う。 専ブラから生dat読みに行ける環境も作ってもらえれば尚良いかも。
少なくとも11ではAIに関係ない話題が半分くらいなんだよね。。。 生dat見に行けるようにするのどうすればいいか知らねぇw datを置いておくことはできる。
みじんこです。
>>706 でおk?見方わからないんだがw
>>706 subject.txtの最後に改行がないからなのか、見れないっす。(JaneStyle)
bbs2chreaderとかで見たい場合は、自分で板一覧を作ってそれに追加しないと駄目な気が。
まぁ、「生datはここにあるから、要るヤツは好きに持って行け」でもいいような気はしなくもないがw
>707 文字コードがUnicode(UTF-8)になっているのかな? Shift-JISにしないとマズいみたいです。(datも)
添削したログがどれほど需要あるか分からんけど
>>683 での生ログをそのまま保存しとくだけでもいいんじゃないか?
変に削るくらいならなんでスクリプトごとに整理しないんだって話になるし、
個人的な感想では無駄な作業乙ってとこだな
見にくいな
ブログのところがUTF-8専用なのでわざわざそっちで保存したのは無駄だったかorz そして見にくいときたか・・・ 一応AIに関連する部分だけ取り出せば読む量が半分程度に減るから良かれと思いorz 用途ごとでの分類とか始めるとスレごとに分ける意味がなくなり、 過去ログ全てを一気にまとめることになり・・・無理 じゃあ一切いじらずにHTMLとできればdatの二つをうpしておいたほうがいいんですかね
AIいじるような人は相当なゆとり意外専ブラ入れてると思うから、datだけでいいと思う
>>713 htmlとdat両方に1票
ログ内での取捨選択は、各自ですればいいだけの話しだし、もしかしたら不要と思われる雑談の中にも、何かヒントになる事があるかもしれないし。
みじんこぶろぐのコンテンツとしてまとめるのもありだと思うけど、それはログとは別でやるといいんじゃないかな。
>>714 そのゆとりに「過去ログ嫁や」って言えないと、過去ログ置く意味無いんじゃない?
たしかにゆとり撃退には「過去ログ嫁」が一番いいな でもそれでも読まないのがゆとりクオリティーだがね。 テンプレにhtmlとdatの両方置くに1票入れることにするわ 無論htmlはそのままでね
俺はゆとりでもしっかりしてる方だと思う
両方ともShift-JISにしたけど見方よくわかんなくて涙目。 まだ見れないとしたら、ぶろぐの鯖がUTF-8専用だからそこでなんかうまくいかないのかも。 いずれにしても生datは置いておくよ。 HTMLはこのままbbs2chreaderのスタイルでいいでしょうか
switch range でニアタゲを上げて行くことは可能? アイテムと回復はできるんですがニアタゲ入れるとエラー出ます
>>718 subject.txt及びdat、両方とも文字化けせずに正常に取得できました。(JaneStyle)
乙です
>>717 お前はわりと好感持てるゆとりだよな。 結局ゆとりだけど
JaneStyleもいれてみたけど使い方わからなくてやっぱり涙目なゆとりですorz
>>720 見られたならよかった。同じ要領で全部載せておく。
HTMLの形式はbbs2chreader形式のままでいきます。作業おわったら報告に来ます。
直接は見られないけど、専ブラにそのURLぶち込んだらdat一覧取得できたけどやりかた違った?
まさか
>>678 ,679のLIBのどこにいれるかわからんってやつ、LIBしかさわってなかったりして
>>727 725と同じくdat一覧とやらが404エラーなんだが
過去ログみて思ったけど 最近ミジンコ以下に親切すぎじゃね?
ぶろぐのほうに、TSからの呼び出しって書いてあるだろ・・・
datは専ブラじゃないと見られん
Janeの場合:板一覧の適当なフォルダで右クリック→板追加でURL追加(
>>723 )
b2rの場合:
>>727 その他:知らない
>>678 ,728
いまさらですが、
668=670=671=674です。
630とかじゃないです。
似たようなミジンコですけど。。
TSの中にいろいろSCRの呼び出し入れてるんですが、いまいちうまく動作しなくて。。。
過去ログが必要なヤツはおいといて、 そろそろ本題に戻らないか?
ちょっとだけ浦島な俺に教えてちょ コロニー戦時は申告不可で仕様変更無し? あと21〜23時だよな
なんか話題ある?
それがサッパリなすなんだな。。。w
俺は使用できる関数の一覧がほしいっていうくらいだな
>>742 739じゃないけど乙!
タイ?から引っ張ってきたのか。
これをうまくまとめるとかなり使えそうだな。
showinfo(1)がいまいちわかんね。
Chat(itemname); Chat(monsName); ワロタ
>>745 どこがおかしいんだ?それを好きなところにはさんだらいいじゃないかww
もしかしたらアイテムのIDとかわかるかもしれねえからさwwww
うまくいけば、Mob指定で戦うことも出来るかもしれないなwwwwwwwww
ダメだ腹痛いww
ぶろぐが1万Pv行きました。どもー(・∀・) ShowInfoって、引数1でON、0でOFFじゃね?と勝手に想像してみる。一切試してないw
タイ語翻訳まともにできねぇww List item function ? AI ? strings and ge.exe ? ? list come ? ? no argument of each function ? (? fast ? ?) ? aggrandize fill recommend with/as ... ? can ? recommend with/as ...
翻訳が必要か分からないんだけどタイ語インスコしてないとかいうオチじゃないよな ゆとり以前の問題だぜ?
インストールはしてないが表示はできてる。 翻訳サイトに1単語ずつぶちこんでるけどnot foundがおおいwそこが?になってる
733だけど、 やっとオートバフまで辿り着いた! スキルLv10だとタイマーは1800がベストですね。 で、このオートバフで、スカウトの位置(キャラスロット)を判別したり、wizの支援(エミリア等含む)にも応用したいんだけど、 var chaslot = キャラの位置(0〜2) var skillslot = スタンスごとのスキルの位置(0〜4)で定義して、 Skill(chaslot,skillslot);っていうふうに処理を分けたいんですけど、どうしたらいいですか? if(job == 'Scout'){ 処理 if(job=='EmiliaSage'){処理・・・ ってのは長くなりすぎ、あんまりスマートじゃないので。 ちなみに今回使ったのは、ブログのLIBにタイマー置いて、HEELER_TSから呼び出す方法のを元に作成しました。
752 :
751 :2008/02/24(日) 12:25:51 ID:???
補足ですけど、 wizのESPはまだスタンス上げてないので、スキルスロットがわかりません。 スキル数がフォーティテュードと同じ数なので、もしかすると、skillslotは省略できるかもしれません。 支援を使えるキャラが2人以上いる場合、どこの位置に配置しても使用できるような分岐をご教授願います。
SkillじゃなくてUseSkillつかえばいいんじゃね?やったことないけどw
スキルIDからでいいんじゃね?
そういいたかったw
757 :
たまごやき :2008/02/24(日) 14:57:27 ID:???
758 :
751 :2008/02/24(日) 15:15:10 ID:???
ほんとにみじんこですみません。
>>754 ,755 UseSkill使うってことは
キャラの位置の問題はこれでおkだとして、
スカウト系、wiz系で分けるにはやっぱり、
if(job == 'Scout' || job=='soho'){ UseSkill(スカウトの支援ID)
if(job=='Wizard' || job=='Emilia Sage'){ UseSkill(WIZの支援ID)
って具合にするのがベスト?
最近、ちょっとかじりだすと、とりあえずで動くものよりスマートな構文作りってのが気になり始めて・・・。
すみません。ほんとミジンコですみません。ペコペコ
759 :
ネトゲ廃人@名無し :2008/02/24(日) 15:17:08 ID:xXSsxAuG
>757 くんなばーかw
ageんなカス ジョブ判別が一番スマートだと思うんだが。 スカのバフに関しては、HEALER_TSからしか呼び出さないようにすればif一つ消せるね。
まぁ、ときたまageる馬鹿がいるおかげで助かる香具師もいるんだけどね。
結論。
>>759 ageんなカス
>751 >スキルLv10だとタイマーは1800がベストですね。 コードの書き方によっては、そうならないので注意、またアイテム拾ったり、スカの自動ヒールはいったり することにより、タイマー値変わるはず。少しキツ目の狩場でためしてみソ。
764 :
ネトゲ廃人@名無し :2008/02/24(日) 15:56:17 ID:xXSsxAuG
あげあげーーーー
>>761 ありがとうございます。
今出先でテストはできないんですが、
>>758 で書いた方法で試してみます。
HEALER_TS_KEEP内で、
if('ChangeTS' == SCR_AI_LIB_AUTOBUFF(selfAi)){
return;
で呼び出して、
LIB内で
if(job == 'Scout' || job=='soho'){
BuffTime = BuffTime + 1;
if(BuffTime == 100){
//Intensify
UseSkill(スカウトのスキル)
以下略
}
if(BuffTime == 200){
略
if(job=='Wizard' || job=='Emilia Sage'){
BuffTime = BuffTime + 1;
if(BuffTime == 100){
//Spiritual shield
UseSkill(wizのスキル)
以下略
}
if(BuffTime == 200){
略
}
でってことですね!
>>763 いつも放置では比較的安全な狩場のみでやってましたので・・・。
アイテム消費面では難アリですけど、少し低め(1700程度)に見ておきます!
ありがとうございました!
さげ方知らない
>>764 涙目w
必死すぎる(バロス
アゲアゲ
おおおおおおおおおおおおおお?
何休みだ?
大学は春休みに入ってるよ
1日放置で6M]しかあがらん おまいらいくらぐらい溜まる?
なにが6Mあがるんだい? 君のIQ?
マスケx2スカの組み合わせで スカだけ自動で拾うようにしたいんですが ↓をSub healingとNear target checkの間にいれたら マスケだけ拾ってスカは拾いませんなんででしょうか? // Near Item Check Unk Version for Mizinko while(1) { var nearItem = GetNearItem(selfAi, 500); if(nearItem == 0) { break; } PickItem(selfAi, nearItem); while(IsExistItem(nearItem) == 'YES') { sleep(100); } }
>>774 もう原因わかってるじゃんw 後はリソースエディタをよーくみたら、なぜマスケ”だけ”拾ったのかがわかるよ〜
俺が無限ループの一部として回答してやんよ マスケって何で動いてるの? スカウトって何で動いてるの? カトリって何で動いてるの? これでわかんなければ過去ログ探して
>>775 すんません
わかんないんすorz
なんかbreakいじったら拾わなくなりますたorz
return;の仕組みがいまいちわからない。 func SCRの中を戻ってる? return 'ChangeTS'; って書いたらLIB抜け出してTSに戻るの?
>>776 言っていることが全てだな、リソースエディタで
>>776 が言っていることを
よぉ〜く考える(っても考えるじゃなくて見るだけなんだが)ことが大事なんだぜ?
つうかいじる必要なんて何もない・・ただ”入れるべきところ”に入れるだけだぞ。
わからんかったら過去ログ
>>774 きっと書くところ間違えてるはずだ。
マスケのところに書かずにスカウトのところに書けばいい。
>>774 アタッカーなのかヒーラーなのかパペットなのかでTSは分かれている。
>>778 何かを渡して、なにかが返ってくるのが関数。
渡すものは関数名の後ろの()の中に入れ、それを引数と呼ぶ。
返ってくるものはreturnで指定して、それを戻り値と呼ぶ。
var job = GetJobName(selfAi);
これだとGetJobNameという関数にselfAiという引数を渡し、戻り値をjobという変数に代入してる。
というようなことをぶろぐの関数とはの記事に載せたつもりでいた。
できました!!! ありがとうございます;; いじる必要まったくなかったですねorz 入れるだけでした;;
今日ぶろぐのコメつけてたのは782かな?
KEEP解除になるのはHOLD CHECK? そこのUnHold(selfAi);をいじればいい? ChangeTacticsAi(selfAi, 'TS_KEEP'); とかに置き換えればいけるかな?
NONEのところの最後にChangeTacticsAi(selfAi, 'TS_KEEP');入れてスイッチで制御してる漏れってorz
NONEのどこに入れてる?
問題なく動いているからいいのだが、UnHoldを使う高等テクなんて俺には出来ないぜw
ies.ipfの中身見るのおもしれーな。 ドロップ率とかまで載ってんのな。 今後の狩りの参考にしようっと。
zip内のファイル名を日本語環境に対応するように直すのって普通Zi.exeでできるのか? stlport.5.1.dllを同じディレクトリにいれて、Zi.exeにzipをD&Dしても中身のファイル名変わらんのだが・・・
俺のはMOVEの最後にKEEPへの遷移をスイッチ制御で入れてるよ。
僕にはこれで十分。 好きなようにいじればいいのさ
>>751 >何かを渡して、なにかが返ってくるのが関数。
ミジンコにはいい説明だけど、ここがちょっと気になった。
おまいさんならなんと説明する?
795 :
794 :2008/02/24(日) 22:26:18 ID:???
引数を受け取って戻り値を返すのが関数、というべきかな? 関数視点に変えてみた。
>>793 がいいたいのは何も受け取らないこともあるし何も返さないこともあるってことだろ
797 :
794 :2008/02/24(日) 22:30:18 ID:???
そういうことか。 nilを扱ってると考えていたわ。
数学的な関数だと2変数のうち片方の変数に値を代入するとそれによってもう片方の変数の値が決まる。 ってのが定義だが、って書いてて筋違いなことに気が付いたわw
>>798 それこそぶろぐに書いたところなんだがww
y = ax^2 + bx + cとかだと、f(x) = ax^2 + bx + cと置いてるだけだと思うぞ?
笑
何かを渡して、なにかが返ってくるのが「Ai」の関数 このくらいの補足でいいんじゃね ミジンコブログの人のスレの私物化が最近目に付くね ちょっと自重してくんね?ブログでやったほうがいいようなやり取りもちらほら あとブログのひと「ミジンコ」とAiの初心者「ミジンコ」がややこしいから何か呼び方決めて ごんずい太郎でもなんでもいいからさ
うざかったかwじちょー気味にするわスマソw 今度から名前が必要なときはなんか入れることにする。
もうこのスレ明日で終了なw
うざくいは無いけど 敷居下げすぎは良くないとおもた
だれか
>>792 について教えてくださいm(__)m
なんかスレでも一人で解説ってのが多かったしな
重ねて気をつけます
>>793 MOVEだとスイッチ入れてるとすごい動きづらくならないか?
はい、終了。 みなさま長い間ありがとうございました。
>>808 どうせ放置してっから、キャラが離れたりスキルで吹っ飛んだり対処してるだけで
動かす用途あんまりないからなw Nominateの時とCallに引っ掛けて共通ターゲット初期化するようにしてあるから
そんなに使い辛くないよ。俺仕様だからおk
MCCでカトリ入れて狩らせたいんですがよくわかりません パペキープ main loop内に // Near Target Check if('ChangeTS_BATTLE' == SCR_ATTACKER_TS_KEEP_NEARTARGET(self, selfAi)){ ChangeTacticsAi(selfAi, 'TS_KEEP_BATTLE'); return; } キープバトルに { sleep(100); // start log AiLog('ATTACKER_TS_KEEP_BATTLE : Start!!!'); // declare variables var selfAi = GetAiActor(self); var prevTS = GetPrevTS(selfAi); //Hold Check SCR_AI_LIB_UNHOLD(selfAi, prevTS); // Attack Target SCR_AI_LIB_ATTACKTARGET(selfAi); んですが反応しなくなりました。 カトリのタゲ共通化はとりあえず置いといて近寄る動作はどすればいいんですかね
カトリもアタックすればいいじゃん
シルバーコントローラー着剣型
共通化=近寄る動作だろう
そもそもPUPPETからATTACKERに飛ぼうとしてる時点で お帰りくださいなんだけどね^−^ アタッカーはアタッカー ヒーラーはヒーラー パペはパペ
>>815 ど素人がw知った風な口きくなよw
アタッカーに飛ばすのがイチバン簡単なんだよwww
お前らなんだかんだでみじんこなんだよなぁ・・・
改AiでBOTの近くで放置すると両者ともアイテム拾うの止まるのはバグ?
頼むから、近寄らんでくれ
>>818 真夜中にBOTだらけのとこですると30分はアイテム拾い放題になる
何故か知らんが勝手にログオフorちゃんねる移動する模様
誰かBOTうpお願いします!
馬鹿が本スレで暴れるから ブログもっと分かりにくくていいよ みじんこ
ミジンコが増殖したほうが俺のAIが目立たなくて良い
現在、SelectMyPc(0)等でリーダーを変更してからChangeStance(1)としてスタンスを変更しているんですが、 リーダーを変更せずにスタンスを変える方法って在りませんかね?
最近AI組み換え何かよりも多重起動に興味が湧いてる今日この頃なんだけど 皆はどう?てかやっぱX虎が邪魔で無理か。。。
ぶろぐの中身です。 SSを一定時間ごとにチェックして、全チャ・党チャ・囁き・SQチャ・不正申告のうち 指定した色が混じっていたら音を鳴らすソフトつくってみますた。 一定範囲をタイマー付きでキャプチャできるほかのソフトとセットの使用で うまいことできるはずだけど需要あるかな?
あるに決まってる
テスト完了。俺の想定してる範囲では問題なく使えますた。 Capture STAFF -Light-とかの適当なフリーソフトでクリップボードにSSを飛ばしていき、 それをチェックし続けて判定する。 exe作るの初めてDelphi触るの初めてで、単純な200行程度のソースなのに10時間はかかったぜorz あとで使い方とか含めてぶろぐにうpしてみるよ。
俺はCygwinいれてシェルスクリプトでやってたけど、 全く申告こねーから放置して寝てるわw
>>831 GE起動しながら絵描けないってどんな環境?
ペンタブが使えないとかそういうところだろ。
俺の環境だとペンタブ問題なく動くんだけど 古いintuosだけどな intuos2以降はシラネ
>>829 指定したwavが起動した瞬間に鳴るのは仕様でいいんですよね
仕様です。それ書き忘れてたスマソ。
みじんこで失礼します。 キープで敵に自キャラが轢きずられて、キープが解ける場所まで追いかけて、キープが切れる というのがキープが解ける一般的な理由じゃないですか?これをキーポジを利用してキープ維持しているのですが、 これって相当目立ちますよね?もっと賢い方法ないのかなって思ったのですが・・ みじんこ如きではこれ以上考えられないです。なにか方法はないのでしょうか?
キープ基点から離れたときに Chat('トレインすんなボケ!'); してから基点に戻すようにすれば良いと思う。
>>838 それはwwアレですねタイマーかなんか用意しておいて、トレインされる度に違うコメント用意しておけばいいんですねww
監獄ケテーイw
837と同じ事を思ってTS_KEEP_BATTLEに Target Out Of Range Checkを放り込んだけど ダメダッタアアア!! 追い駆けて行かないヒントちゃぶだい(つД`)
ポジションチェックしつづけて、一定以上はなれたらクリアタゲじゃね?
842 :
837 :2008/02/27(水) 21:29:35 ID:???
キープ維持自体は出来ているのですが、明らかに挙動がおかしいんですよね〜 一応私は3000でやっているのですが、 距離3000まで敵を追う ↓ 3000超えるとタゲを切ってキープ位置に帰還(ここにスリープ2秒) ↓ 2秒後にキープに遷移 というようなプログラミングなんですけどね・・ 傍から見ると、リーダーから離れすぎてNONEに遷移するはずなのにまたキープ始めるというんですよね・・・。 アレですかね、2秒というのをもっと縮めて距離2000ぐらいの位置で戦わせれば、いいのかな・・・。 悩みどころ満載ですね。
843 :
840 :2008/02/27(水) 22:45:23 ID:???
>>841 KEEP_BATTLEにKeep Position Checkするってことだよね?
>>837 それなら、極端に距離を短くして、スリープ消したらどうなん?
効率悪すぎるかな^^;
844 :
840 :2008/02/27(水) 22:53:03 ID:???
>>841 あ!なんかわかった!
いけそうな気がするサンクス!
低レベルでスンマソ^^;
845 :
837 :2008/02/27(水) 23:03:11 ID:???
今頭で考えてみた。 もしキープ位置から300離れたらカットターゲット 0.5秒スリープのうちにキープ位置に戻る キープモードに移行 ってすれば、旨く扱えるかもしれない・・。これを範囲やら秒数やらを旨くすると・・もしかして心置きなくキープが・・・。 はやく家に帰りたいな・・・。
837は無事に家に帰れたのだろうか。
今頃永遠の眠りについてるころじゃね
久しぶりにINしようとしたらサーバーのバージョンが違いますってでて はいれねー だれか助けてくr
それはチートスレでやる質問なんだろうか 前バージョンのクライアントそのまま使ってるとかそんなバカじゃないんだろ?
エラーメッセージ見れば解決法は明らかだろボケ。 サーバーのバージョンを下げれ。
みじんこ以下な質問はヌルー
スルーの技術なんか備えてたらここ最近の流れなんかおこってねえだろww
「SS見張ってます。」の不正申告判別で引っかかる色はシステムに表示される暗い白であって 画像認識の赤色じゃないので注意、と書き忘れてますたスマソ。 これつかえねーYOみたいなコメもないのでちゃんと動いてんのかな(´・ω・`)
854 :
ぼったー :2008/02/29(金) 02:58:02 ID:???
BOT売りたいんだけど欲しい人いるかな??(ダイヤ鯖) 有料の自動更新のやつ、引退したフレにもらったんだけど興味ないんだ。 ちょっと知識があって中国語わかれば使えるんだが・・・ 欲しい人がいればサブ垢でもいいから家門名出してくれればおk
C:\>Zi.exe bgm.zip ファイルを解析中... ファイル名を置換中... ローカルアイテムを保存しています... (146/146) セントラルアイテムを保存しています... (146/146) 処理は正常に終了しました。 〜〜〜〜ここまでコピペ〜〜〜〜 しかしファイル名が文字化けのままなんだがどうしてだ?
856 :
ぼったー :2008/02/29(金) 03:04:11 ID:???
ラピ鯖も募集中
857 :
855 :2008/02/29(金) 03:05:54 ID:???
もしかしていまGeerのとこにあるのはうまく動作しないZi.exeなんかな ちゃんと動くのが別にあるならだれかくだしあ><
858 :
855 :2008/02/29(金) 03:12:40 ID:???
そもそもDz.exeも全然うごいてねーや\(^o^)/
>>854 金出す気がある奴ならとうの昔に使ってる
860 :
ぼったー :2008/02/29(金) 04:50:42 ID:???
肉入り偽装できないBOTなんかいらんだろjk
ラピ鯖のコロニーで多数の党が乱戦中コロニーを叩いていた党が綺麗に落ちる神業はやはり運営絡みとしか考えられないわね?敵対党だったけどあれはオカシカッタ。不正アクセスもあまり露骨だと手が後ろに回りますよ。 糞運営さん
ミジンコが失礼します。 var slot = 0; var Tartar = GetNearEnemy(selfAi,1500); SetAiTarget(selfAi, Tartar); Skill(slot,0); Tartar = GetNearEnemy(selfAi,1500); SetAiTarget(selfAi, Tartar); というような処理を書いたんだが、対象を選択してください〜 というメッセージがかなりの確率ででてしまいます。 理想としては、Mobをクリックした時のように範囲外のときは追いかけていってスキル利用、という形にしたいのですが、 どのように直せばいいでしょうか? できればUseSkillではなくSkill指定で使いたいのですが・・・。 なお、GetNearAtkableEnemyを使っていないのは、ファイのHoHの用に対空スキルを対象にした時に、 スキルで攻撃できるようにという考えがあり、GetNearEnemyを利用しています。
UseSkillを使いたくない理由がわかんね。 俺その書き方したことなくて良くわかんないけど時々成功するんならsleepいれてみたら? とかって思った俺もミジンコ。 あとTartarに萌えた。
どーでもいいけど、馬鹿みたいに策敵範囲広げて人が居ても平気で突撃するから報告される。 報告対策云々なら、一定範囲内から出ないようなAI組む方が余程対策になると思うんだが。
ところが、狭いマップだと一定範囲内にいるってことは、報告するプレイヤーに視認される確率が上がっちまうんだな バカみたいな策敵だと、他のプレイヤーが放置してるあたり通り過ぎてしまえばマップ内のどこかをウロウロしてるから 報告されるのは結局運。 まぁどっちもどっち。 迷惑掛けないAIとしては一定範囲内でFA
明らかなBOT行為してるのはうぜぇから申告するよ。 改造AIと有料BOTの動きの差はなんとなくわかるし。 一定範囲内で自動で拾っていようが自分に迷惑かかんなければまったく気にしないわ。
>>867 すげえな。これこそチラ裏だな。
>一定範囲内で自動で拾っていようが自分に迷惑かかんなければまったく気にしないわ。
こういうプレイヤーだけじゃないから対策が要るんだろバカ
バカっていうなバカw 通報するときはそのエリアの全ch全域見て回るし関係ないね。
だから誰もお前の個人的な意見なんて聞いてないって話だろ オフゲーかオナニーしてたほうがいいんじゃない?
申告受けにくいAIにするのにはやっぱ策敵範囲を抑えて 暴走しないようにしておくのが一番だと思うなぁと言いたかっただけだ。 その上で対策するなら画面チェックしかないだろう・・・
GetMyAtkLayer(selfAi) == 1ってどっちだっけ?
1近接2遠距離
あり!
875 :
863 :2008/03/01(土) 09:35:22 ID:???
自己解決しました。
GetNearEnemyだと、倒した後のMobの死体をターゲットとして設定してしまうことがあり、
その場合にうまくいっていなかったようです。
var Tartar = GetNearEnemy(selfAi,1500);
SetAiTarget(selfAi, Tartar);
Skill(slot,0);
SetAiTarget(selfAi, Tartar);
Tartar = GetNearAtkableEnemy(selfAi,1500);
SetAiTarget(selfAi, Tartar);
とりあえず、かなり無理やり感ただよりますが、上記のように変更したところ
死体だけがあって、攻撃できる敵がいないときはタゲミスになっていますが、
それ以外ではほとんどターゲットをミスすることがなくなりました。
>>864 UseSkillではなくSkillを利用するのはスタンスにこだわらずSlot番目のスキルを利用するような関数をつくりたかったからです。
Tartarは……なんかTarで作っていたらグローバル変数と被ってしまっていたので繰り返してみました。
冗長すぎて意味がわかりません
F4の集合の記述を教えてください。 TS内のNONEの中にぶち込んでおこうと思うんだが、 Call()ってのを入れておけばOK? 引数はなし?
878 :
877 :2008/03/01(土) 12:14:10 ID:???
Call();ですね。 過去ログ見ると引数にstartとかってあるんですけど、 他にどんな引数が使えるんですか?
879 :
877 :2008/03/01(土) 12:57:30 ID:???
NONEにぶち込んだら挙動不審っぷり発揮したので、 タイマーで制御することに。
>>875 こうすればよくね?
if(IsKd(Tartar) == 'NO' && IsDead(Tartar) == 'NO') {
Skill(slot, 0);
}
ies.ipfを展開したファイルの先頭に、ファイル名にすればよさげな文字列が入ってんのな。 自動でリネームするプログラム作ったから、次からは楽だぁ。
自動復活は
>>484 ,491を使って、
var g_friends = { nil, nil, nil };
func SCR_AI_LIB_RESUSCITATION(self)
{
var i = 0;
while(i < 3) {
if(g_friends[i+1] != nil) {
var friendAi = GetAiActor(g_friends[i+1]);
var friendTarget = GetNeedHealFriend(friendAi, 1, 101);
if(IsDead(friendTarget) == 'YES') {
UseSkill(selfAi, friendTarget, 30113);
while(IsSkillUsing(selfAi) == 'YES') { sleep(100); }
}
}
i = i + 1;
}
}
これでいいんかな?SQ組むことあんまりないけど、それもいける?
動かしてみてから聞け
SQ組むことがなくて…。
GMの不正は普通にあるんだなぁっと、思った一日でしたw
>>882 自分のMCCのキャラは復活できるだろうけど、SQは_
>>886 882だけど、MCC内でもうまくいかない・・・。
スペースはちゃんと処理してるとして、記述にどこか問題あり?
誰かみじんこのスキルIDで、そのスタンスに対応するスキルか教えてくれまいか? リサのGMのほうとか誰のスキル?
>>882 これ釣り?wwwww
どう見てもこの関数だと動くわけ無いんだけどwwwww
くだらないミスが入ってるな。
ミジンコのオレにはどこが釣りなのかわからん。 試してみたら動かなかったけどww
GetNeedHealFriendの引数がおかしい。
894 :
882 :2008/03/02(日) 23:21:22 ID:???
どこが違うのか教えてください(涙目
よく見るんだ。定義されてない変数が参照されてる。
func SCR_AI_LIB_RESUSCITATION(self) この行よーく見ろw それでミスがどこかはわかるはずwwww
897 :
882 :2008/03/03(月) 01:41:38 ID:???
>>892 で言ってる
GetNeedHealFriend(friendAi, 1, 101);
は問題なし?
よく考えたら1の距離でHP101%の仲間じゃない?
>>898 GetNeedHealFriend(friendAi, 1, 101);
でも間違いじゃないが
GetNeedHealFriend(friendAi, 0, 101);
のほうがいいと思う
101は全く問題なし
101って%じゃないの?
101でうごかしてみろよチンカス
みじんこのくせに他のみじんこを叩いて優越感に浸るバカが増えたな。
491を書いたものだがミス多くてすまんねw 引退前に動作チェックしたAI置いていくからちょっと待ってくれ。 自分で使ってなかったオートPOTとか自動召喚を追加中。
やっぱいじりつくしたら引退なんかな。
いじるところなんてまだまだ山ほどあるぜ!!!!!!!!!!!!!
とりあえず、チンコいじってくる。
最近改AIを使用すると急に近寄ってくる党員がいるんだが もしかして疑われてるのかのぅ… 晒しスレのたまごやきといい全てが見透かされているような気がしてきた 気のせいだとは思うけどなw
Toggle("autoinspect") PlaySnd("drop_jewel.wav")
そりゃお前、党員からBOTなんて出したらずっとネチネチ叩かれるんだし、 ほぼ放置オンリーで会話少なかったり不審な出入りを続ける奴とか変な噂がある奴とかはたまに巡回して見回ってるぜ? もちろん党首と一部党員だけでそれとなく確認するだけで党チャットでいうような真似はしない 疑ってるわけじゃなくて定期巡回みたいなもんだしな 要するにメインでやる奴はアホ
メインでやらない賢い人はどんな使いかたしてるん? まさか複数台のPC電源つけっぱなしで1日数Mの利益とかじゃないよね?
1台は放置用 もう1台は娯楽用
中華産BOTを5垢同時起動バハマル放流で1日100M以上は稼げてるよ けどRMもかかるし、もう神OPをつけることぐらいしかやることなくなってきたから正直微妙。
俺は元々複数PCつけっぱだったから全く気にせずそのままGEも稼動させてるけど 人それぞれじゃねえ? 申告実装されてからはかなり適当だよもう だからこそこんなに情報が出てくるわけで ウマーできるなら自分だけで独占気味になるだろ普通
if( 'YES' == IsVisible('autoinspect')) { PlaySnd("drop_jewel.wav") } 不正利用者自動確認窓が開いてたら音が鳴るかも。 このままだと宝石ドロップの時の高い「キーン」って音だけど。
未だにBOTやってるのはアフォw もう昔みたいにウッハウッハウッ〜ウマウマできないよw
それでも満足だから俺はいいけどねww
出来ない奴はヘボなだけだろ^−^
BOTはみじんこ専用だぞ
確かに昔みたいに馬鹿みたいに稼げなくなった 申告なかったからねー10アカ回して1週間に一回のVis回収で10G15Gあたまえだった。
そんなもんだから、俺ノ武器防具は全部神OP
ドロップ率改変されてるな
なんかもう、バレたから何なんだ?って気になってきたオレって・・・ BANされたら引退だしね
家門低くてもデュエルとか出来るんだっけ? 捨てキャラ改AIのキープモードだけでPvP大会やらないかw
925 :
837 :2008/03/04(火) 22:15:05 ID:???
GetNeedHealFriend(friendAi, 1, 101); この関数ってあらゆるところに応用できるんだな・・・なんだかいろいろと試してみたら面白いな
おっとコテハン記憶していたようだw
101%未満ってことだからHP満タンでも値返すんだよ
ui.ipfの中、「々_9N_」で始まる名前のファイルもスクリプト。 「々_jl・」で始まる名前のxmlと併せて見ると、出来ることがいろいろ増えるかも試練。
if(IsNearFromKeepDestPosition(selfAi, 100) != 'YES'){ KeepDestMoveTo(selfAi); sleep(100); } 上ってのは「自動操作のときにキープ位置から周辺距離100離れる」というのがYESになった時に 元々キープしていた場所に戻る。という動作だよね?これをいじって然るべきところに入れたらアタッカーをキープ維持ってできますよね?
やってみたら?
「こんなことやってみたら出来ませんか?」 っていう話題は過去ログで既出なことが多い。
あはは、ガッチャマンとか多すぎて萎えて改造に走る奴が急増中。 だがしかし!一つ言っておく。 AI改造してBOT飼うだけじゃ、ガッチャマンには遠く及ばないのが現実。
別にガッチャマンに勝とうとしてるわけじゃないだろ。 勝つまではしなくても、金払いたくないが、それなりの利潤が欲しい奴が改造Aiやってるってだけだ 金払っても問題ない奴は、中華BOTとかRMTそれに加えてガチャも回してるよ
BOTやっても優位に立てないGAMEはGEが初めてだw
ガチャやりつつBOTの俺が最強
>>935 そりゃー最強まつがいない!
正直いいなぁって思うぜっTT
そりゃそーと、通算100万円使った奴がラピスで出だしたわー。
今回のガチャは何回回しても最強になれる気がしねーなw 1.2Gvis用意してwktkしてたのに買うものねーしw
>>932 よう!おれ
全部がそうでは無いけど
いろいろと馬鹿過ぎるガッチャマンと運営に萎えて
始めたわw
別にガッチャマンに勝つつもりは無いが、 はいはいガチャ回してマケに流してくださいねw みたいな精神的余裕が出来た 俺ってちいせえ〜 まさに貧しいミジンコ精神でサーセンwww orzorzorz
精神的余裕 できるよなwwwww 健康的だと思うぜw
敵に倒されるときの関数って存在するのですか?
943 :
837 :2008/03/05(水) 16:40:13 ID:???
そういえば、
>>837 報告がまだだったので、一応報告を・・
>>845 の考え方でまずスリープをなくしてみたら、キープ策敵範囲内よりも内側で距離500以上に敵がいると、
キープ位置を行ったりきたりして、非アクのMobのときは他のMobが沸かない限り永遠と繰り返して、
腹が壊れそうなぐらい笑える絵でしたw他人が見ていたら確実に改AIなど使っているんじゃないかと疑われるような動きでした。
スリープ入れてみたら、また滑稽な動きをしてですね。なんだか明らかに不自然な動きになってしまいました。
結局のところ私如きでは、上手なアタッカーのキープ維持は考えられないということ結論でした。
何か旨い方法はないものでしょうかね。
アタッカーのキープ維持? TS_KEEP_BATTLEのATTACKTARGETをwhileループ内に入れれば済む話だろ?
945 :
837 :2008/03/05(水) 17:04:06 ID:???
>>944 キープ維持といのは、Mobに引っ張られてリーダーからはなれてキープが切れるのを防ぐものですよね?
なら、
>TS_KEEP_BATTLEのATTACKTARGETをwhileループ内に入れれば済む話だろ?
こちらは、どういう意図なのですか?試してみましたが、遠く連れて行かれキープが解けてリーダーの場所に戻ってもきてもキープには遷移しませんでした。
無論KEEPBATTLEにも遷移しませんでした。
俺が書いたのはノックダウンで止まる時の話だった。 引っ張られ防止はいろいろあるが、分かる人が見ればバレるのでお勧めしないw 上等ってんだったら索敵をこんな感じにすればマシになる。 if(IsNearFromKeepDestPosition(selfAi, option.KeepRange / 2) == 'YES') { curTarget = GetNearAtkableEnemy(selfAi, option.KeepRange); } else { curTarget = GetNearAtkableEnemy(selfAi, option.KeepRange / 2); }
947 :
837 :2008/03/05(水) 17:24:30 ID:???
>>946 なるほど。curTargetをキープ位置より離れているか否かで場合わけするんですね。
ちょっと、試してきます。
948 :
837 :2008/03/05(水) 17:36:27 ID:???
ちょっと考えていたのですが、
>>946 さんが書いていることは、遠くにつれて行かれても平気なようにするものではなく、
そもそも、自MCCをMobに引っ張られないようにするものですよね?
全く発想しなかった考え方ですね。
そうだね。引っ張られてからタゲきったら不自然。 この程度で安定しないような狩場なら放置すべきではないな。
エキスパ育成一通り終わったから晒しておくよ ヒーラーキープ解除防止法 112のSCR_AI_LIB_HEALING内 ChangeTacticsAi(selfAi, 'TS_USER_SKILL'); return 'ChangeTS'; を while(IsSkillUsing(selfAi) == 'YES') { sleep(100); } return; で置き換えてTSをかえずにスキル完了を待つようにする。
アタッカー攻撃停止防止法 110のSCR_ATTACKER_TS_KEEP_BATTLE内 var count = 0; をprevTSの次に宣言して、main sleepの直前にでも // Anti Knockback Stall if(count > 20) { SCR_AI_LIB_ATTACKTARGET(selfAi); count = 0; } else { count = count + 1; } を追加して2秒おきに再攻撃をかける。countしないと0.1秒おきなので重くなることがある。
アタッカー引っ張られ軽減 112に下の関数を追加、110のTS_KEEPのNEARTARGETをこれを呼び出すようにかえる。 func SCR_AI_LIB_NEARTARGET_ON_KEEP(self, selfAi) { var option = GetOption(self); var range = 0; if(IsNearFromKeepDestPosition(selfAi, option.KeepRange / 2) == 'YES') { range = option.KeepRange; } else if(IsNearFromKeepDestPosition(selfAi, option.KeepRange) == 'YES') { range = option.KeepRange / 2; } else { range = option.KeepRange / 3; } var curTarget = GetNearAtkableEnemy(selfAi, range); if( curTarget != nil ) { SetAiTarget(selfAi, curTarget); return 'ChangeTS_BATTLE'; } }
アタッカーが押されてじりじり下がる現象防止 112のSCR_AI_LIB_TARGETAVAILABLEの最後に以下を追加 敵が近くに居るのに射程外ならキープ基点に向かって0.25秒走る if(IsTargetInMyAttackRange(selfAi, curTarget) == 'NO') { var nearRange = 60; if(GetMyAtkLayer(selfAi) == 2) { nearRange = 400; } var nearTarget = GetNearAtkableEnemy(selfAi, nearRange); if(nearTarget == nil) { return; } if(IsTargetInMyAttackRange(selfAi, nearTarget) == 'YES') { return; } if(IsNearFromKeepDestPosition(selfAi, 200) == 'NO') { KeepDestMoveTo(selfAi); sleep(250); Attack(selfAi, curTarget); } }
誰か監獄脱出作ってくれ。
監獄脱出手伝ってくれに見えた/(^o^)\ 監獄なんて行くようなAiにしてるから駄目なんだろ
アイテムの個数とか結構めんどそうだよな。
クエストで要求されるアイテムの数って、どうやって取得すんだろ? 所持品のアイテム数は簡単に取得できるんだけどねぇ。
クエ受けたあといじるしかないのかな。
なぁ、おまいら。 ShowAutoKeepMode() ShowAllPcLevel() USAっていいな。
>>960 ブログのほうも誰でも出来るようになっちゃってるんだよね。
改AIへの敷居が低いというかなんというか
バラックに戻る関数教えて!><
950から953のコードを入れたのですが953のコードだけ機能せずAIがデフォルトに戻ってしまいます。 SCR_AI_LIB_TARGETAVAILABLEの最後に追加とありますが、return 'ChangeTS_Prev';の下に追加では駄目なのでしょうか??
>>963 括弧の数をよぉ〜くみたら幸せになれるかもな
お、伊達臣人ですw 君達は先人達を超えたね!
改造AIの歴史 1.誰かがai.ipfの存在を発表、海外で改造してウマウマしてると言う、日本サバにそれらしき中華が出現し始める 2.ai.ipfの展開方法がわからず、苦汁を飲んでいるとgeer作成者がai.ipf展開圧縮TOOLをUPする。 3.第一次BOT大発生 4.AIがai.ipfからexe内に収納される、BOT収束の様に見えたが、だがしかし! 5.英雄がバイナリエディタで改造できるんだぜっ!って言い出す、バイナリエディタ使うならもっといいのがあるよ!って言い出す! 6.リソースハッカー登場! 7.第二次BOT大発生、geer作者がiesの展開TOOLを発表。全てのJOBスキル関数が発見される。 8.改造AI高性能化、主だったもの:タゲ共通 バフタイマ 9.不正者申告システム導入、改造AIBOTが監獄へ次々と送還される。 10.中華TOOL導入者増加(不正申告されにくい設定やアラーム機能を有する) 11.ミジンコ達が過去の歴史を繰り返し中。
12.古の契約により悪の大王復活。世界は混沌の渦に飲み込まれ、主に運営の主導によりサービス終了
中華BOTの近くに改AIで少し放置 ↓ 中華BOTに不具合発生?してスキルのみ使用 ↓ 不正申告 できる場合とできない場合があるんだが中華BOTに似せたただの改AIちゃんかね?
ちょwwwwwwwwwwwwおまいらGeer様が更新してるぞwwwwwwwww まだ試してないけど、人柱いけるか?
つまら話題の中耐えながらも潜伏していましたが Geer更新と聞いて飛んできました
AIを簡単にいじれるように盛り込んだねw スカベンジャーも復活してるけど、BOSS避けと優先が使えるね。
新参者でgeer時代を知らない・・・。 今でも不自由ないけどとりあえず使ってみるかな。
geerの内容ってどういった感じ?
geerはX虎でひっかかって起動できなかった
まだそんなレベルなのか、おまいら。
972だけど、 まだ導入してないけど、解除しなきゃいけないのか。 そんなツールは調べればすぐ見つかるんだろうけど結構めんどいな。
>>977 そんなことにすら対応してないgeer作者を恨むべき。
そして、それなら自分が作れって言われてできない自分も恨むべき。
経験値表示だけでも対応して欲しいところだわ
宣伝乙
いきなりzipDLかよ! チェックするものまんどくせぇ!
>>952 の110のTS_KEEPのNEARTARGETをこれを呼び出すようにかえる。
ってどういうこと?
if('ChangeTS_BATTLE' == SCR_AI_LIB_NEARTARGET_ON_KEEP(self, selfAi)){
略
}
ってこと?
試してから聞けよ
で、合ってるにも係らずなぜか動かない
>>983 に対して
>>984 が括弧がどうとか、全部書けとかだろ?
いい加減そのループ見飽きたな。
Ver.0080309 一部機能を XTrap 有りでも動作するように修正。
1〜10は全てできたが、 なぜか、ショートカットでのスイッチ切り替えだけうまくいかない。 誰かエスパーしてくれ。
どこでも家門倉庫テラワロス
ショートカットのXMLがうまくローディングされてないとか?
992 :
989 :2008/03/09(日) 11:25:50 ID:???
とりあえず全てそのまま書いてみる。 ・hotkey内Myhotkey.xml <HotKey Name="UI ワープリスト " Scp='Toggle("warplist")' Key="R" UseAlt="NO" UseCtrl="YES" UseShift="NO" OnEdit="YES" /> <HotKey Name="HOTKEY1" Scp='SCR_AI_LIB_HOTKEY1()' Key="F1" UseAlt="YES" UseCtrl="NO" UseShift="NO" OnEdit="YES" /> </Category> ・release内user.xml <Hotkey Hotkeyfilename="C:\Program Files\Granado Espada\release\user\hotkey\Myhotkey.xml" /> ・LIB内 func SCR_AI_LIB_HOTKEY1() { SysMsg('Hotkey test'); } スペースとかも含めそのままの状態です。 オプションの中とか見落としがちな点はありませんか?
Geerは入手したが使い道がわからぬ 原生生物\(^o^)/オワタ
Scp='Toggle("warplist")' 関数呼び出しは ' (シングルクォーテーション)可 Scp="SCR_AI_LIB_HOTKEY1()" スクリプト呼び出しは " (ダブルクォーテーション)じゃないと駄目とかじゃなかったっけ?
995 :
989 :2008/03/09(日) 11:38:49 ID:???
UIワープリスト、</Category>については入力位置をわかってもらうために、 元々の記述をそのまま貼り付けています。 HOTKEY1については、みじんこぶろぐそのままだと思うんですが。。 とりあえずダブルクォテーションで試してみます。
996 :
989 :2008/03/09(日) 11:44:39 ID:???
連投すみません。 <HotKey Name="HOTKEY1" Scp="SCR_AI_LIB_HOTKEY1()" Key="F1" UseAlt="YES" UseCtrl="NO" UseShift="NO" OnEdit="YES" /> に直しましたが変化なしです。
F1あたりに割り振れないとかで使ってなさそうなF10~12あたりに振ってテストしてみたりはどうですか
F1をF10に変えても変化なしです。 既存のショートカットは動いているので、キーボード上の問題でもなさそうです。。。
1000ならGE終了
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。