2005年 08月 24日 ( 1 )

手動マニピコードとはなんぞや

前回は罠について書きましたが今回は窓手の話も含めてタイトルのモノについて説明していきたいと思います。

現在ステルスあげが主流となっていますがみなさん経験値効率はどれほど出ているでしょうか?

私は窓手兄者koreを使用する前、というかステルス公平を知った直後は通常のkoreをいじり、様々な場所でステルス用キャラを放っていました。
最初はローグで公平を行い、人避けでなるべく人が居ない場所(gl_sew02)等でチマチマ狩をしていました。
経験値効率は約700K~800Kで、Lv90にするまでも相当キツキツでした。

これじゃ埒(らち)があかないということで、弓手に手を出してみてびっくり、
亀島でも1.4M 窓手に至っては1.6Mも出るじゃないかとはしゃいでいました。

その後ローグ2人が永眠され、弓手一本へと絞ることが出来ました。
そして、窓手でチマチマ狩っている時、らぐろだに「窓手兄者kore」がUPされ罠に怯えながらも試してみたいと思い使ってみると・・・時給2.3Mでるじゃないですか。

目が点になりました。

その後、兄者koreを使い弓手をINT90 DEX140 窓約2確殺までひっぱっていくと時給3Mを超えました。公平で時給1.5Mです。

当分はこの状態で満足し、快適なステルスライフを送っておりました。
このように1人のんきに過ごしていたわけですが、8月6日愛読していたBOTNEWSに次の記事が載ります。

>窓手で時給6.5Mとかワロスwwwどんな過疎鯖だよwww
>4秒ごとに座るコード追加してSP補給しても、
>窓手を独占できる数に限界があるんだから効率は頭打ちだろ^^


Σ(゚Д゚;=;゚Д゚)
これはすごいと思い、早速perlと睨(にら)めっこしてみました。
ちなみに↑の時給6.5Mというのは2倍期間に計測したものらしいです。

SP自然回復時間はみなさんわかっていると思いますが棒立ち状態で8秒に1回、座り状態で4秒に1回、座りマニピで2秒に1回回復となります。

しかしここが重力仕様と言いますか、立っている状態でSPが回復した時点から4秒~8秒の間に座ると、その時点でSPが回復します。

最近巷で騒がれている「手動マニピコード」はこれを利用しています。
最後のSP回復から約4秒後に一瞬でも座れたら・・・立ち状態でプリのスキル「マグニフィカート」を貰っている状態とほぼ同じになり、SPを消費したDS(ダブルストレイフィング)で攻撃する弓手にとっては効率の格段UPに繋がります。

では一体どのようなコードなのか?(ここは自作なのでしょぼいです)

4秒に1回座ると書いてありますが、ただ単に4秒に1回座れば良いというものではありません。
4秒に1回回復するのはサーバー時間であり、こちらで4秒きっかり数えて必ずしも一致するものではありません。
ではどのようにしてそのタイミングを見計らうか?
それは最後にSPが回復した時点から4秒数えることが必要となります。
そこで次のコード↓

#変数「$val」には現在のSP量が入っています。

#↓現在のSP量から前回のSP量を引く。$r_spにSPの増減値が入る。
$r_sp = $val - $old_sp;
#↓この条件分岐は前回のSP量より現在のSP量が多い場合、そして
#SP増加値が3以外(SPR回避)の場合真となる。

if ($old_sp < $val && $r_sp != 3){
#↓前回の回復時間からの経過時間を$old_sp_time変数に代入。
$old_sp_time = time - $sp_time;
#↓現在の時間を$sp_time変数に代入。
$sp_time = time;
#↓後程解説
undef $sp_frag;
#↓前回の回復から5秒以内であれば真。
if ($old_sp_time < 5){
$sp_com = "成功"; #$sp_com変数に「成功」を代入。
$sp_suc++; #$sp_suc変数に数字を+1する。
#↓上の条件が偽の場合(5秒以上の場合)$sp_com変数に「失敗」を代入。

} else {
$sp_com = "失敗";
}
$sp_all++; #SP回復回数を+1させる。
print "★SP回復$sp_com ($sp_suc / $sp_all\)\n"; #DOS画面に結果表示
}
$old_sp = $val; #$old_sp変数に現在のSP量を代入。

このコードをSP値更新受信部に挿入します。
print部分にある($sp_suc / $sp_all\)についてですが、
これはSP回復を5秒以内に出来たのは何回か?を表示しています。
つまり手動マニピの成功率で、大体95%ぐらいいきます。
このコードによりSPの更新時間を取得し、座るタイミングの土台を作ります。
よってこれだけでは動きません。
次のコードを動作する任意の場所に追加↓

#↓SP回復時間から4秒経過し、尚且つ$sp_frag変数が偽の時、フィールドネームがロックマップと同じ場合座る。
if ($sp_time+4 < time && !$sp_frag && $field{'name'} eq "$config{'lockMap'}"){
sendSit(\$remote_socket);
$sp_frag = 1; #このコードをループさせない為に$sp_frag変数を真にする。
}

$sp_frag変数をここで真にし、SP自然回復が行われた部分で未定義値に戻しています。
ここで疑問に思うのが何故座った後立たないのか?という所です。
BOTの性質上常にハエパケを使い行動します。
ハエパケは座っていても可能であり、座った直後にハエパケで飛ぶと立った状態になります。
また、koreの内部で大体のモノは立った後攻撃するように攻撃前にsendStandを実行しています。
この為座るだけでもOKということなのです。

とりあえず手動マニピはこの程度でも動作します。
しかし、手動マニピを行ったといっても設定がしょぼければ意味ありません。
そこでtimeouts.txtをいじる必要があります。

これは個人個人で設定が違うと思いますので説明しませんがとにかく切り詰めればOKですね。

さて、この座りコードを入れて私も窓手BOTを動かしてみるとBOTNEWS様に書いてある通り約1.5倍に経験値効率が跳ね上がりました↓
e0056993_20341129.jpg







公平無しでこの時給を11時間維持、、(´Д`;もう言葉もありませんでした。
1日でLv98からLv99になれる効率です。
普通のBOTでも使えると思うけど、移動して敵に近づく職では微妙かもしれません。

ここまでうまくなるとやはりなかなか下水からは抜けられませんね。
ご利用は計画的に~だね。
[PR]
by chronoship | 2005-08-24 20:44 | kore