<   2005年 09月 ( 6 )   > この月の画像一覧

自動演説。。

----
メッセアド取得しておきました。
chronoship@hotmail.co.jp
----

明日は秋分の日ですね(もう今日だけど)。
休みの前ということで久々に長々と記事を書いていきましょう。

っとその前に、今までの記事を自分で見てみたのですが、なぜか書くごとに言葉が硬くなっている・・・
そういうわけでちょっとラフに書いていこうと思っています。

え~~と今まで窓手の稼ぎ利用とか窓手に関することを主として書いたわけですがまぁ久々にまったく違うネタっぽいものについて書きます。

そーいえば選挙終わりましたね(遅)
暑い中みなさん自分の主張を選挙カーの上で必死になって演説していました。
私も暑いなかぼーっと立ちながら聞いていました^^;

っとそこでひらめきます。
BOTを使って演説って出来るよなーと。
今までにもこういう演説はありました↓。

???? : みなさ~ん!私はBOTですよ~~!!

しかし、これは発言する文章を弄れません。。
まぁ「罠」なので発言者にも見えないわけですが^^;

では、内容を自由に設定できて自動で発言してくれる機能があればなにかと面白いんじゃない?と。

例えばイベントの案内をチャットで立てておくより発言を繰り返してれば効果絶大です。
また、「勉強会」や「未成年の主張」「演説」なんてのも簡単にできます。
逆に!狩りBOTに搭載して「通報しないで~~;;お願いT-T」とか発言させまくったりも出来ますw

というわけで早速作ってみたわけですがちょっとコード長いので分割して説明っ
まず発言したいと思った内容をauto_mes.txtに記述します。
e0056993_045315.jpg


そしてkore.plと同じ場所におきましょう↓。
e0056993_0463749.jpg


次に自動発言を発動させるフラグを立てなければいけないのでスイッチを作ります。

} elsif ($switch eq "automes") {
$Auto_Mes = 1;

$switch eq "a" とかの上でもいいので入れておきます。
次に以下のコードを追加していきます。

#$Auto_MesがONで$AutoMesFlagがカラの場合if分の内容を実行します。
if ($Auto_Mes && !$AutoMesFlag){
#txtファイルを開いて上から一文づつ取り出します。
おーぷん (INFO,"auto_mes.txt");
while () {
#一フレーズの文字数が半角81文字以上であれば分割します。
80文字以下ならそのままにして配列@auto_mesに押し込みます。

for ($len_mes = 0; length > 80;){
push @auto_mes, substr($_,$len_mes,80,"");
}
if (length $_ <= 80){
push @auto_mes, $_;
}
}
close (INFO);
#chomp関数は文字列の最後に改行があった場合、改行を消します。
chomp @auto_mes;
#次の条件に入るため、$AutoMesFlagを1にします。
$AutoMesFlag = 1;
$AMC = 0;

え~英語のおーぷんは使えないので日本語で書いてます。
まずここでtxtファイルに書かれている文章を読み込み、半角81文字以上は一度に発言できなかったと思うので分割して、配列に次々にフレーズを押し込んでいます。
読み込むtxtファイルに横一列で記入したとしてもここで分割されますが、発言が汚く見えるので注意^^;
最後に$AutoMesFlagを1にしていますが、これで次のステップへ進みます。

#$AutoMesFlagが1だったらif分の内容を実行します。
} elsif ($Auto_Mes && $AutoMesFlag == 1 && $AutoChatTime+$Mes_Time < time){
#発言間隔時間の計算をしています。詳しくは下で。
$Mes_Time = ((length $auto_mes[$AMC]) * $config{'AutoMes_CH_Time'}) / 2 + $config{'AutoMes_ST_Time'};
#次の条件に入るため、$AutoMesFlagを2にします。
$AutoMesFlag = 2;
#現在時間を代入。
$AutoChatTime = time;

ここで発言間隔時間を計算します。
最後に$AutoMesFlagを2にしていますが、これで次のステップへ進みます。

#$AutoMesFlagが2だったらif分の内容を実行します。
} elsif ($Auto_Mes && $AutoMesFlag == 2 && $AutoChatTime+$Mes_Time < time){
#フレーズをオープンで発言します。Pチャは「p」ギルチャは「g」だったかな。
sendMessage(\$remote_socket, "c", "$auto_mes[$AMC]");
#次のフレーズを選択します。つまり配列の何番目っていうのを+1して次の文を発言する為です。
$AMC++;
#次のフレーズの発言間隔時間を取得する為、一つ前のif文に入るよう$AutoMesFlagを1にします。
$AutoMesFlag = 1;
$AutoChatTime = time;

ここでフレーズを発言します。
そして最後に発言している文章が尽きた場合の処理を書きます。

#空白が6行以上連続で続いた場合、一文章終わりとみなします。
if (!$auto_mes[$AMC]){
$end_c++;
if ($end_c > 5 && $config{'AutoMes_TimesMax'}){
$config{'AutoMes_TimesMax'}--;
$AMC = 0;
print "繰り返し発言します。。\n";
} elsif ($end_c > 5 && !$config{'AutoMes_TimesMax'}){
undef $AutoMesFlag;
undef $Auto_Mes;
print "発言を終了します。。\n";
}
} else {
undef $end_c;
}
}

文章の途中でこの場合6行以上空白であけると発言終了するので注意。

そしてconfig.txtに以下を追加。

[config.txt]

#発言間隔時間の基本時間
AutoMes_ST_Time 0.2

#発言間隔時間の全角1文字に対するウェイト時間
AutoMes_CH_Time 0.1

#発言を繰り返す回数。
AutoMes_TimesMax 0

ふぅ~まぁこのようになりますね。

ここで発言間隔時間について説明をしときます。
e0056993_0502632.gif
AutoMes_ST_Timeが0.2でAutoMes_CH_Timeが0.1の場合、左の図のような発言間隔時間になります。
AutoMes_ST_Timeはすべてのフレーズの前後につき、空白フレーズがあったとしても前後0.2秒をカウントします。
AutoMes_CH_Time全角一文字を発言するのに掛かる時間を表しています。
例えば左図のように「こんにちはみなさん。」だと全角10文字なので、0.1秒 ×10 = 1秒となるわけです。
この両方の時間を足した時間が一フレーズを発言するのに要する時間となります。
これが連なるわけですから、左図の2つのフレーズの間隔は合計2.1秒となります。


なぜこのようにしているのかというと、文字を入力する手間は文字が多いほど時間が掛かるというのと長い文章ほどすべて読む時間が長くなるという肉入りでの都合という点から設定できるようにしています。
そういうわけで両方の数値を0にしてしまうとおっそろしく速いスピードでしゃべりまくりますw

今回は↑のをコピペしてというのは面倒だと思うのでtxtをあぷろだに上げておきました。

http://sackbut.or.tp/~tadabot/img/753.txt

コードのほうは#DEBUG CODEの上あたりで良いでしょう。

とまぁこのようにして↑の文章を発言させるとこのようになります。
DOS画面で「automes」と入力することで発動します!
e0056993_0514542.jpg


WaitTimeは文字数に対する待ち時間です。
わかりやすくする為に表示しているだけです。
また、全角40文字以上のフレーズは強制的に分けていますね。
ま~ネタですがなにかと使えるかも!?!?

あ~あとメッセのアドについてなのですが現在登録してません。
今度とったら載せておきますので登録したい方はお願いします。

[PR]
by chronoship | 2005-09-23 01:13 | kore

色々気になったこと。

ちょっと私用でブログに手を出せず、約一週間ぶりの更新です。
この一週間したことといえばBOTの補充と露店、狩場移動のみ・・
稼ぎ用窓BOTについてですが、かなり様々な場所で使われ始めてるのが見受けられますね。
その中でも狩りやすい場所、例えばprt_fild04等で産出されるアイテムはやはり予想通りというか相場が下がってきましたね。
窓BOTとしてどこが一番稼げるかを念頭に置いて狩場を変えていくことが重要でしょう。
また、同一の狩場に複数体窓BOTを放つことも収入が不安定になりがちです。
すぐ換金できそうなアイテムを手に入れることも重要です。

とりあえず今日は題名の通りちょっと気になったことを書いていきます。

自動露店

モンスターから出たレアアイテムを換金する手法として露店があります。
プロの露店街を見回すと、BOT専用あからさまな露店があります。
まぁ売るものがBOTが拾ってきたものですからしょうがないのですが、
カード等1つの欄にたくさんおけるものを全部まとめて置いている人が多いと思います。
ここはやはりBOTの自動露店機能を使い、1つ1つ捌くほうが相場を急激に著しく下げるということはないと思われます。
買い手も「今買わないとこんなに安く手に入るのはないかも?」という心理が働きます。
また、1つの欄に1つしか置けない装備品等を見ても自動露店であれば売れるたびに1つ1つ補充して並べていけば
結果たくさんの装備品を売ることが出来ます。
たとえばSシルク、Sガードなど露店欄すべてを占領して売ってしまうと相場もいっきに下げますし、他のBOT産出品を売ることが出来ません。
10分間隔で露店の更新を行おうとすれば其のつど売れなかった場合次回は値段を下げる、売れた場合次回は値段を上げるといった調整をも行えますので売れないということはないです。

現在の自動露店機能はエラーが多く使い勝手が難しいですが、koreをいじれる方は使ってみましょう。

自動倉庫

自動倉庫のコードですが、ちょっと気になる所が・・・

} elsif (!$config{'saveMap_warpToBuyOrSell'} || ($config{'saveMap_warpToBuyOrSell'} && $field{'name'} eq $npcs_lut{$config{'storageAuto_npc'}}{'map'})) {
print "移動ルート計算(自動倉庫)\n";

窓手koreですが、これだと例えばgef_fild00でセーブして倉庫へ行きたい場合動作しないのでは?
つまり、利用する倉庫NPCの居る場所とセーブポイントが違う場合動かないということです。
最後の条件をいじる必要ありかな。

サンクプリ

最近サンクプリの雇用費用が跳ね上がってますね。
こういうときは別垢でサンクプリを作ることをおすすめします。
といっても1PCで画面を2つ開いて操作というのは大変です。
そこでサンクプリ用koreを作るのも1つの手です。
wisやpartymesでコマンドを送りそれに反応するように改造します。
また、人検知を使い仲間が来たらフル支援を行います。
私も現在はサンクプリを自動化しましたが、かなり便利で重宝しています。

まぁこんな感じなんですが、特に自動露店
これは是非活用できる方は活用しましょう。
売れ行きが大きく変動します。
捨ててしまいたくなるようなアイテムでも売ってみよう。
[PR]
by chronoship | 2005-09-17 22:02 | BOT

窓用BOTの最適な狩場は・・・

窓BOTの稼ぎ利用について前々回説明しました。
そこで様々な狩場を教えてもらったり、自分で調べてみてよさそうだと思った狩場があるので放ってみた感想を載せてみます。

koreの方は前回のルートMOB倒し機能、gather機能の強化、重要アイテム無理やり拾う機能を強化(死なない程度)、狩場と倉庫は自動とまぁ経験値ではなく金銭効率重視にしてみました。

prt_fild04(前々回の解説場所)

やはりクリーミーがおいしいです。
Sシルクは1/909ですがもう数が半端ない・・・
捌(さば)くのがかなり大変ですね。
精錬すれば良いのですが生憎(あいにく)エルが買わないと調達できないという。
カードもゴロゴロ出てしまうので相場を著しく下げます。。
プパも同様ですね。
しかし、倉庫と矢に関しては近いし安いので管理がしやすいです。
蜂蜜も拾ったほうが良いので倉庫と狩場の自動往来は必須ですね。

gl_sew01

窓手のいるgl_sew03ではなくその逆、ガーゴイルとアクラウス、そしてウィスパーがいる場所です。
もちろん本命はウィスパーなのですが、ほんと画面内に飛んでくるとハイディングされます。。
その為1確なのですが10分での殲滅数平均が170匹と理論的にカードを出すには5時間狩る必要があります。
また、他にも強いアクティブがいる為、無理やり拾うにもなかなかうまくいきません。
うまいと思うのですがちょっと移動も窓手並みに大変なので微妙かも。

beach_dun3

タラフロ、ヒドラ狙いです。
タラフロはDEX140、普通の矢、+5DBd角弓で1確殺になります。
レアはカードのみ。
さすがにカードのみなので運に左右されますが以外にコンスタントに出ます。
ヒドラ程度の被ダメでは飛ばないようにする必要がありますね。
10分での殲滅数平均はヒドラ110匹、タラフロッグ180匹程度です。
カードを出すにはヒドラ8時間、タラフロ4時間30分程度でしょうか。
狩場と倉庫の移動も楽なのでおすすめかも。

moc_fild03

エルダー森です。
もちろん枝狙い。まぁ窓手BOT用のレッドブラッドも狙えるので意外とうまかったりします。
10分での殲滅数平均は300匹、2時間で36本の枝を産出できますが、ポポリンという強敵がいる為、ルートMOB対策はしっかりとしていないと奪われます。
天下大将軍もちといやらしい・・・
また、さすらい狼を狩るという手段もあります。
ここはkoreをいじる必要がありますが、タイマンDSで5~6発で倒せるので回復アイテムはいらないでしょう。
1日すべて狩れればまぁ1つぐらいはウェスタングレイス出るかも・・・?
フェイヨンに近いので移動関係は楽々です。

mjo_dun03

炭坑3です。
スケルワーカー狙いなのですがかなりレベルが高い・・
まず、狩場までの距離が遠すぎます。
強いアクティブもいない為、ここは高速テレポで移動します。
次に炭坑1と2です。
ファミリアー、ドレインリアー等が居るため防御力の無い窓BOTは足止めされます。
そこで炭坑1に入る時点でパケ長を取得し、反撃できるようにしておく必要があります。
次に、産出アイテムの重量です。
鋼鉄、石炭、エル等重いものが多数あるため、比較的STRに振っていなければすぐ帰還となります。
10分間の殲滅数平均は310匹で、2時間30分程度でカード1枚の計算になります。
寝ている間放ってみましたが、朝4枚も拾っていたのは驚きでした。
また、鋼鉄やらエルやら石炭やらの収入もある為、捌くのも比較的楽で儲けも多いです。
問題はやはり移動と重量ですね。
予期せぬエラーはダントツで多いです。


とまぁ他にも狩場を回ってみましたがとりあえずこのくらい。
やはり1確殺でM単位のレアを持っている敵が向いていますね。

稼ぎとは異なりますが、ステルスと稼ぎを併用したい方の狩場としては城2での禿狩り、
階段ダンジョンでのウィンドゴースト狩りでしょうか。
両方とも岩石の矢を使うので作る手間を考えると。。どうでしょうか。

現在私は窓手BOTの方がほぼすべてステルス相手が育ちきってしまったのでこのように稼ぎ主体でやってたりします。
まだ1体だけはステルス中ですけどね。
[PR]
by chronoship | 2005-09-11 13:13 | BOT

重要アイテムを取り返せ!

前回窓手BOTの稼ぎ利用について説明しました。
その中で弓BOTの1つの弱点として、ルートモンスターにアイテムをルートされやすいという点を挙げました。

窓手BOTの性質上おいしそうな狩場にはルートモンスターが配置されています。
ルートモンスターにアイテムをルートされるのを恐れてルートモンスターを叩く設定にしていると、
本命の敵の殲滅数が落ち込みます。
そこで、重要アイテムをルートされたらルートモンスターを倒してくれるコードはないのか?と思いkoreの中を探してみました。

if ($mDist < $config{'distImportantItem'} && binFind(\@root_monsters, $monsters{$_}{'name'}) ne "" && $monsters{$_}{'dmgFrom'} == 0 && $monsters{$_}{'dmgTo'} == 0) {
print "*** 重要アイテム ($items_old{$ID}{'name'}) をルートされますた ***\n";
push @{$ai_v{'ai_attack_cleanMonsters'}}, $_;
}

00A1パケ受信部にこのような箇所がありました。
このコードは、重要アイテムが消えた時、重要アイテム検知距離以内にroot_monsters.txtに記述したモンスターが放浪していた時、そのモンスターを攻撃対象にするという意味です。
しかし、これで動くのかなと思ってたのですが動きません。。
なぜ動かないのか?と思い調べてみると、、AUTO-ATTACKの部分でリセットされています。
ではどのようにすれば動くのか?そこでkoreをいじいじしてみました。

まず、誤作動を防ぐために00A1パケのif文に$flagImportantItemsModeを条件に加えます(赤い部分が追加箇所)。

if ($config{'itemsImportantAuto'} && $flagImportantItemsMode && $iDist < $config{'distImportantItem'} && binFind(\@itemsID_take, $ID) eq "") {

次にその下のpush @{$ai_v{'ai_attack_cleanMonsters'}}, $_;を↓に置換します。

$old_teleport_search = $mon_control{$monsters{$_}{'name'}}{'teleport_search'};
$mon_control{$monsters{$_}{'name'}}{'teleport_search'} = 1;
$mon_control{$monsters{$_}{'name'}}{'root_monsters'} = 1;

ルートしたMOBのsearchフラグを一応控えておき、強制的に1にします。
なぜかこうしないとすぐ飛んでしまったので・・・
無くても動くのですが念のため。。

そしてAUTO-ATTACKの

&& ($mon_control{lc($monsters{$_}{'name'})}{'attack_auto'} >= 1)) {
push @{$ai_v{'ai_attack_cleanMonsters'}}, $_;

を↓に置換します。

&& ($mon_control{lc($monsters{$_}{'name'})}{'attack_auto'} >= 1)
|| ($mon_control{lc($monsters{$_}{'name'})}{'root_monsters'})) {
push @{$ai_v{'ai_attack_cleanMonsters'}}, $_;
if ($mon_control{lc($monsters{$_}{'name'})}{'root_monsters'}){
$mon_control{$monsters{$_}{'name'}}{'teleport_search'} = $old_teleport_search;
undef $mon_control{lc($monsters{$_}{'name'})}{'root_monsters'};
}

アイテムをルートしたと思われるモンスターがいた場合、攻撃対象に加えます。
最後に、重要アイテムを無理やり拾うようにする為にお好みで↓のように変更します(赤い部分が追加箇所)。

print "攻撃されますた: $monsters{$ID1}{'name'} ($monsters{$ID1}{'binID'}) - ダメージ: $dmgdisplay\n";
if(!$flagImportantItemsMode && ($config{'teleportAuto_Attack'}) && ($damage>($config{'teleportAuto_Attack_Dmg'}))) {

強いアクティブMOBがいる場合は死ぬかもしれないので要注意^^;
スキル攻撃も変えたい人は同様に。

このようにコードを変更します。
他のkoreにはこの機能あるのかもしれませんがとりあえず、、ね。


e0056993_20584343.jpg
私は変更完了し、試しにエルダ森にて動作を確認してみました。
動作確認の為エルダの落とすアイテムすべてを重要アイテム指定にしています^^;
mon_control.txtでポポリンは0 0 0になっていますが、重要アイテムをルートされた疑いがある場合このように攻撃して古木の露を取り返します^^;


現在のROの仕様上koreでは重要アイテムをどのルートモンスターが食べたか知ることは出来ません。
その為確率的にルートしたと思われるモンスターを攻撃するようにしています。
つまり確実に重要アイテムを取り返せるという保障はありません。

また、窓手BOTの場合「攻撃がHITしたら飛ぶ」というのが基本なので重要アイテム発見の直前に攻撃を受けた場合、飛んでしまうという厄介な性質があります。
ここは修正無理そうなので仕様として諦めよう。。
[PR]
by chronoship | 2005-09-08 21:04 | kore

窓手BOTの稼ぎ利用

窓手BOTは窓手専用と思っている方いませんか?

職業、ステータス等から考えても稼ぎ用としては防御力もないし使い勝手は悪いと思いがちです。
しかし、特定の条件を満たせばステルスをする休止期間中、つまり公平圏内まで持っていく間等、稼ぎ用として窓手BOTを利用することが出来ます。

その条件とは、

DS、またはMSで敵を1確殺することが望ましい。
普通の矢、銀の矢、炎の矢を利用できる狩場。
なるべくアクティブのいない狩場。
強いルートモンスターのいない狩場。


これを満たしていれば稼ぎ用としても使えるはずです。
では、窓手用BOTの稼ぎ用への利用での利点はなにか。

①攻撃特化の為、1確殺なら敵の殲滅数が稼ぎ用より遥かに多い。
②敵に近づかない為、殲滅速度が速い。


では欠点は・・・

①重要アイテム等をルートモンスターにルートされやすい。
②主要なBOTの稼ぎ狩場に放つことは難しい。つまりアクティブが多い狩場。


この条件を満たした上で最適そうな狩場に窓手BOTを稼ぎ主体として放ってみました。
そのフィールドとは「prt_fild04」
他にも最適な狩場はあると思いますがとりあえずここで実験。
クリーミーとプパを主体で狩ります。
矢は経費が掛からない普通の矢でMSではなくDS狩り(DSでもSPが尽きないようなので)。


e0056993_13561130.jpg
12時間自動倉庫有りで狩りを行ってきた時の結果です。
殲滅数はプパ3970匹、クリーミー15357匹です。
やはり殲滅数は群を抜いていますね。


ここでこの殲滅数に対するレア算出の理論値は・・・

プパカード:3枚
クリーミーカード:6枚
Sガード:1個
Sシルクローブ:16個
ハチ蜜:231個

実際にGET出来た数は・・・

プパカード:4枚
クリーミーカード:6枚
Sガード:1個
Sシルクローブ:13個
ハチ蜜:212個

でした。
私のサーバーだと最低値で大体8.6M辺りですね。
1日ですと単純に17.2M。。
稼ぎとしてもなかなか優秀だとは思いますね。

また、弓手BOTは収集品集めにもかなり向いていると思います。
基本的に収集品のドロップ確率は約50%です。
出現した時にだけアイテムの所まで近づけば良いのでその間の時間を節約できます。
アルケミストの材料集め等にはもってこいではないでしょうか?

ステルス相方が育ちきって使い道が無くなった場合、このような利用法も良いと思いますね。
さらに良い狩場があれば教えてくれると・・・(マテ
[PR]
by chronoship | 2005-09-04 14:14 | BOT

窓手近況、、

今日は書く時間がないので久々に手短に書いていきます。

まぁ窓手についてなのですが、以前紹介した4秒座りコード。
動きますが、やはりDSとDSの間に発動したり、目標を補足した直後に発動すると一瞬硬直する、場合によってはかなりの時間硬直するという現象が私のkoreでも以前から確認していました。

そういうわけでさらに効率を伸ばせるのではないか?と思いtimeouts.txtの見直しも含めてkoreをいじいじしてみたわけですが、とりあえず硬直の度合いがほぼない座りコードが出来ました。


e0056993_22253421.jpg
まだ不安定でちょっと他の問題も出てきたのですが私の場合効率が200~300KほどUPしました。
些細なロスでもやっぱり差が出ますね。。。
12分しか狩ってませんがとりあえず4.6M→約5M付近までいってます(公平無し)。



[追記]

12分で計測したのは早計過ぎました。
よって一部修正したもので再度1時間超計測をしてみました。
計測した時の環境は、

マップ人数10~15人
21:10~22:10
GH地下水路3
SP回復力34
窓手2確殺DS狩り
SP10%以下にはならないよう設定(集中維持の為)

という感じです。
最初の15分程は10%程度までSPが減る段階で5.3Mを維持していました。
その後10%辺りで維持していきましたが、やはり多少効率が落ち1時間程で約5.2M / 3.8Mでした。
さらに狩ることで若干落ちると予想できます。

時間帯にもよるようですが、共闘等もかなり効率に関ってくるようですね。
以前の設定(4.6M程)ではSP80~90%台を維持していましたが、5Mを超えさすがに効率UPにつれてSP消費量も激しくなる為、これが限界のようです。。

ただ、SP回復力がさらに上がればまだ上昇の余地はあるようです。
といっても私の場合あと精々+4程度が限界のようです・・・
INTをあげるかSTRをあげるか、実際の所滞在時間を延ばしたほうが安定しますけどね。
SP回復剤という手段もありますがさらに矢筒を積んだほうが良いのは明確ですし。

コードについてはまだ若干問題があるので修正して安定したら載せようかと思っています。
いつかわかりませんが・・・

あと、更新頻度若干落ちるかも?
いや、まだわからないんですけどね^^;
[PR]
by chronoship | 2005-09-03 00:48 | BOT