忍者ブログ
Emelaldo_blog01
[145] [144] [143] [142] [141] [140] [139] [138] [137] [136] [135]
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。


おき場所ですー

Brutal LWB Swiftness早速Getしたぞい
Fumiさんに贈呈しました^^

http://blog.cnobi.jp/v1/blog/user/f98aec5c0415f9280e2682db6bfc2c21/1259325648


キーバインド変更スクリプト

これは!
最近のNotePCとかでDiabloするときにとても便利かも!

某BYAKUDANさんの欲していたものでは?w


Fumiさんお忙しい中、ありがとうございますです^^mm



===========================



半分寝ながらGris&Wirt巡り

やった!Yatta! やっちゃった!


King's Battle Axe of Haste


FumiさんDesmo/Rymoさんやったよ!

http://www12.atpages.jp/~emelaldo636/kbaoh/

目覚めたw



==========================



SSoHの微妙なものが..^^;

http://blog.cnobi.jp/v1/blog/user/f98aec5c0415f9280e2682db6bfc2c21/1259473067

買っちゃったw



==========================



であぶろ(仮)

http://www16.atpages.jp/rymo/cgi-bin/sbu2_bbs/sbu2_bbs.cgi


Desmo(Rymo)さんのBBS
こっちのほうがScript掲載やすいです

ファイル、画像も張りやすいですよ
ぜひよろ~mm^^


PR

コメント
mwbdyp,chaussures louboutin prix,ieoaeo
Ronpzqvzy Kqlbnlb Whlewz Btdmvuxf Ybuabk <a href="http://www.saintmartindeschamps.com/imagesproduits/lunette-ray-ban.html">lunette ray ban femme</a> Konuajf Oexjt Cttckyrb Ogezyfhrd Spzfrk http://www.saintmartindeschamps.com/imagesproduits/lunette-ray-ban.html
【2014/08/31 08:39】 NAME[mz0yeeoo] WEBLINK[URL] EDIT[]
無題
Hello emelaldo,

Can you to send me the script for the program that shops on diablo. My email is cfifty22@yahoo.com
【2010/08/04 08:23】 NAME[NONAME] WEBLINK[] EDIT[]
無題
名前入れ忘れた(汁
【2009/11/30 16:49】のコメントは私のものです。
【2009/11/30 16:51】 NAME[Suna] WEBLINK[] EDIT[]
無題
個人的には人が使おうとあまり気にしないかな。
自分ではManaPotionまとめ買いマクロは使うかもしれない。
ほかのマクロはたぶん使わないと思う。
GrisやWirtへの移動の類はもう体が慣れてしまっているので(笑

Potion順番に飲んでくれるマクロは魅力的だけど、
日本語KeybordでのShift押しながらいくつかの
Potionが飲めないバグ?を考えると自分で確実に
飲めるようにしたほうが良いかな、と。
(そこらへんはShift押しながらでも飲める
Potionを一個か二個、マクロの対象からはずすなりすれば
いいのかも知れないけど)

とまあ、必死にKeyの位置を指に覚えさせている
毎日です(笑
【2009/11/30 16:49】 NAME[NONAME] WEBLINK[] EDIT[]
無題
バックアップなんかぶっちゃけ複製だしねぇ。
潜ってる途中で回線切れたとか、再起動食らったとかの防衛策と言えば聞こえはいいけど。
DURアップの法則も、抵抗ある人は海外に多いね。
どこまで含めるか、どこで線引きするかは意見が分かれるところですな。

まーゲームの中でbot使うのは嫌われる傾向にあるのは間違いないスね。
chat botはゲームに直接関係ないからやってるんだろうけど。
ちなみに私は巡回マクロだけ使わせてもらってます。
【2009/11/30 08:08】 NAME[Desmo/Rymo] WEBLINK[] EDIT[]
予想はしていましたが
作る前から予想はしていましたが、この手のツールに反発を感じる方もいることでしょう。GriswoldやWirtを巡回するマクロ程度ならまだしも、これはitemの選別と購入までも自動で行ってしまいます。改良を重ねれば、BaseItemの指定や性能の指定までできるようになります。

でも、それは本当にLegitと言えるのか?CheatToolと、どのくらい違うと言うのか?

結論としては、このツールはDiabloの乱数によるItem生成に依存しているため、完全にCheatとは言えないまでも、Legitではない、グレーな領域にあると思います。

ただ、このツールを作っている間の私は、良いItemが欲しいというよりも、単純にプログラマとしての技術的な興味に突き動かされていました。スクリプトの勉強自体が楽しいのです。そして、作った以上は公開したい、皆に「すごいね」と褒めてもらいたい、そんな子供っぽい気持ちがあったことも確かです。

では、私が良いItemが欲しくなかったのか、と言われれば欲しいとしかいいようがありません。Diabloとは本当に悪魔のようなゲームです。一度はまるとより良いItemを求めてBattle.Netを彷徨い歩いてしまいます。

ただ、Diabloが発売された当時の学生だった自分と違い、今は家庭を持つ身です。Diabloのやり過ぎで嫁が怒るどころか泣き出してしまいました。GriswoldやWirtの巡回などやっていられません。でもゲームは続けたい。どうすれば良いのだろう?

このツールを使う、使わないは、各人でお考え下さい。
また、このツールをEmelaldoさんのBlogに公開すること自体が不適切であると判断されたならば、削除していただいても構いません。本来ならば、自分でHPを作成してそこで公開すべきものです。今の自分は、そこまでの気力がないので、EmelaldoさんのBlogを利用させてもらっているのです。

以上、長文失礼しました。
【2009/11/30 07:36】 NAME[Fumiko] WEBLINK[] EDIT[]
無題
Hu whats this Eme? Don't get me wrong but this looks like a shopping bot script to me ... are you using a bot to shop your items ??
I hope that I just misunderstand something here :P
【2009/11/30 01:25】 NAME[Shade] WEBLINK[] EDIT[]
ちなみに
このItem自動購入機能は、100%確実な動作を保証しません。たまに指定していないItemを買っちゃったりします。また、確認はできていませんが、指定のItemがあっても見逃すかもしれません。

これはBMPから画像データを読み込んで、パターンマッチング処理をしているためです。背景が半透明のため、Item名のBMPとゲーム中のItem欄が一致しない場合があります。そのため、ある程度の「曖昧さ」を持たせてあるのですが、これが誤動作の原因となります。
そこはご了承下さい。
【2009/11/29 12:41】 NAME[Fumiko] WEBLINK[] EDIT[]
Diablo自動Item購入スクリプトをULしました
BMP切り出しが面倒だから、適当なアップローダに置いておくように、との要望がありましたので対応いたします。

下記URLからDL可能です。

http://a-draw.com/uploader/src/up4520.zip.html

まだ、BMPが完璧じゃないです。
できたら皆さん協力して下さい。
特に、Strange,Whale、Mommoth、Thunder等のWirt用が全然ありません。
よろしくお願いします。
【2009/11/29 12:17】 NAME[Fumiko] WEBLINK[] EDIT[]
Diablo自動Item購入スクリプト バージョンアップ
Wirtへの自動購入機能を追加しました。
せっかくDesmoさんが、Wirtへ行くプログラムを書いてくれたのに、上手くマージできませんでした。ごめんなさい。

これでRuby plate of WhaleだろうがStrange Sword of Hasteだろうが、何でも来いですよ。

ちなみに、Wirtは50Gかかるので、お金は大分必要です。Wirt行きたくない場合は行かないように設定を変えて下さい。後、買い物キャラはSTR100以上にしといて下さい。(文字色が赤色になるのを防ぐため)


;*****************************************************************************/
;/* Diablo 自動買い物スクリプト ver0.60 */
;/* */
;/* 概要 :DiabloⅠの買い物を自動で行います。 */
;/* :Griswoldまで歩いて指定のItemを探し、Itemgがあれば購入、 */
;/* :なければ次のゲームを繰り返します。購入後はスクリプトを */
;/* :停止します。 */
;/* */
;/* !!!!!注意!!!!! */
;/* 本ツールにより、いかなる損害を被った場合でも、製作者はその責任を */
;/* 負わないものとする (データはちゃんとバックアップしてから使って下さい) */
;/* */
;/* 作成者 :Fumiko */
;/* 変更履歴:2009年11月28日 新規作成 現在はGriswoldのみに対応 */
;/* 変更履歴:2009年11月28日 ver0.60 Wirtの買い物に対応 */
;/****************************************************************************/

;*****************************************************************************/
;/* ★使 用 方 法★ */
;/* */
;/* ① 「AutoHotkey」をDLしてインストール */
;/* */
;/* ② 探索Itemの設定 */
;/* 現在は、ベースItemの性能指定や、Prefix・Suffixの数値指定はできません */
;/* できるのはPrefix・Base・Suffixの名称指定のみです。 */
;/* Obsidian Helm of Starsの指定方法は以下の通り。   */
;/* */
;/* prefix_name = obisidian ;prefixを指定 */
;/* base_name = helm ;baseを指定 */
;/* suffix_name = stars ;suffixを指定 */
;/* FnSearchItemGriswold( prefix_name, base_name, suffix_name ) */
;/* */
;/* これをソースに追加していって下さい。 */
;/* Wirt用は以下の関数を使用します。 */
;/* FnSearchItemWirt( prefix_name, base_name, suffix_name ) */
;/* */
;/* ③ このソースをテキストに貼り付けて「なんちゃら.ahk」という名前にして保存*/
;/* */
;/* ④ Diabloを起動してDirectLinkConnectionのゲーム作成画面まで進む */
;/* */
;/* ⑤ ALT+TABで裏画面に戻り「なんちゃら.ahk」を実行 */
;/* */
;/* ⑥ マシンによって待機時間を調整する必要があるので、ウェイト時間は */
;/* ミリ秒単位で適宜調整すること */
;/* */
;/****************************************************************************/

;*****************************************************************************/
;/* ★本ツールの仕様★ */
;/* */
;/* ① 「なんちゃら.ahk」と同じディレクトリに「bmp」フォルダを作成  */
;/* */
;/* ② 「bmp」フォルダの下に「prefix」「base」「suffix」フォルダを作成 */
;/* */
;/* ③ それぞれのフォルダにdiabloのスクリーンショットから切り出したItem名の */
;/* BMPを置いておきます。 */
;/* Obsidian Helm of Starsの場合、「prefix」にobsidian.bmp、「base」に */
;/* helm.bmp、「suffix」にstars.bmpを置きます。各BMPは余白のないよう */
;/* ぎりぎりに切り出します。1つあたり8×30程度の大きさです。 */
;/* 足りないBMPは各自で追加して下さい。 */
;/* */
;/* ④ 本ツールではゲーム内の明るさを一番暗くします。これはお店のItem窓が */
;/* 半透明のため、画像マッチング処理が背景の色によってうまくいかない不具合*/
;/* を少しでも解消するためです。 */
;/* */
;/****************************************************************************/

;/***********************************************/
;/* ウェイト時間の設定 */
;/***********************************************/
;以下に、お店を回る際の時間設定をします。
;時間はマシン毎に異なるため、自分のPCの性能に合わせた時間に設定して下さい。
;単位はすべて[ms](ミリ秒)です。

GAME_CREATE_TIME = 2500 ;ゲーム作成時間
MOVING_TO_GRISWOLD_TIME_1 = 4300 ;Griswoldまで歩くためのウェイト1
MOVING_TO_GRISWOLD_TIME_2 = 2000 ;Griswoldまで歩くためのウェイト2
GAME_FINALIZE_TIME = 3500 ;ゲーム終了時間

;/***********************************************/
;/* Wirt買い物の設定 */
;/***********************************************/
;Wirtの買い物をする場合は1、しない場合は0
g_flg_shopping_wirt = 1

;/***********************************************/
;/* グローバル変数定義 */
;/***********************************************/
g_flg_first = 0

;/***********************************************/
;/* ソフトを起動する */
;/***********************************************/
Process,Exist,diablo.exe ;ソフトが起動しているかどうかを調べる
if (ErrorLevel <> 0) ;起動していた場合(ErrorLevel変数にプロセスIDが格納される)
{
WinActivate,ahk_pid %ErrorLevel% ;そのプロセスのウィンドウをアクティブにする
}
else
{
ExitApp ;終了
}

;/***********************************************/
;/* Itemの探索 */
;/***********************************************/
LOOP ;Itemが見つかるまで延々と繰り返し
{
;/*************************************/
;/* ゲーム作成とGriswoldまで移動 */
;/*************************************/
;CreateGame
MouseClick, left, 432, 298
MouseClick, left, 432, 298
Sleep, 100

;GameLevel選択
MouseClick, left, 432, 144
MouseClick, left, 432, 144
Sleep, GAME_CREATE_TIME ;Create中

;/*************************************/
;/* 明るさを下げる */
;/*************************************/
if( g_flg_first = 1 ) ;初めの一回のみ処理する
{
MouseClick, left, 46, 465 ;Menuを出す
MouseClick, left, 274, 133 ;Option
MouseClick, left, 210, 225 ;下へ
Loop, 10
{
MouseClick, left, 288, 226 ;Gammaを下げる
}
MouseClick, left, 46, 465 ;Menuを消す

g_flg_first = 0
}
Sleep, 200

;/*************************************/
;/* Griswoldまで移動中 */
;/*************************************/
MouseClick, left, 116, 0
Sleep, MOVING_TO_GRISWOLD_TIME_1
MouseClick, left, 282, 51
Sleep, MOVING_TO_GRISWOLD_TIME_2

;/*************************************/
;/* Griswoldの探索Itemの指定 */
;/*************************************/
;itemを指定します。いらない項目は空にします
prefix_name = obsidian ;prefixを指定
base_name = helm ;baseを指定
suffix_name = stars ;suffixを指定
FnSearchItemGriswold( prefix_name, base_name, suffix_name )

prefix_name = obsidian ;prefixを指定
base_name = crown ;baseを指定
suffix_name = stars ;suffixを指定
FnSearchItemGriswold( prefix_name, base_name, suffix_name )

prefix_name = obsidian ;prefixを指定
base_name = helm ;baseを指定
suffix_name = harmony ;suffixを指定
FnSearchItemGriswold( prefix_name, base_name, suffix_name )

prefix_name = obsidian ;prefixを指定
base_name = crown ;baseを指定
suffix_name = harmony ;suffixを指定
FnSearchItemGriswold( prefix_name, base_name, suffix_name )

prefix_name = obsidian ;prefixを指定
base_name = bow ;baseを指定
suffix_name = heavens ;suffixを指定
FnSearchItemGriswold( prefix_name, base_name, suffix_name )

prefix_name = obsidian ;prefixを指定
base_name = plate ;baseを指定
suffix_name = stars ;suffixを指定
FnSearchItemGriswold( prefix_name, base_name, suffix_name )

prefix_name = obsidian ;prefixを指定
base_name = mail ;baseを指定
suffix_name = stars ;suffixを指定
FnSearchItemGriswold( prefix_name, base_name, suffix_name )

prefix_name = obsidian ;prefixを指定
base_name = armor ;baseを指定
suffix_name = stars ;suffixを指定
FnSearchItemGriswold( prefix_name, base_name, suffix_name )

prefix_name = kings ;prefixを指定
base_name = sword ;baseを指定
suffix_name = haste ;suffixを指定
FnSearchItemGriswold( prefix_name, base_name, suffix_name )

Send, {ESC}

if( g_flg_shopping_wirt = 1 )
{
;/*************************************/
;/* Wirtまで移動中 */
;/*************************************/
MouseClick, left, 49, 136
Sleep, 2200
MouseClick, left, 4, 73
Sleep, 3600
MouseClick, left, 20, 13
Sleep, 4100
MouseClick, left, 48, 14
Sleep, 4000
MouseClick, left, 24, 9
Sleep, 4000
MouseClick, left, 252, 10
Sleep, 4500
MouseClick, left, 319, 12
Sleep, 3300
MouseClick, left, 505, 28
Sleep, 3800

;/*************************************/
;/* Wirtの探索Itemの指定 */
;/*************************************/
prefix_name = kings ;prefixを指定
base_name = sword ;baseを指定
suffix_name = haste ;suffixを指定
FnSearchItemWirt( prefix_name, base_name, suffix_name )

prefix_name = ruby ;prefixを指定
base_name = helm ;baseを指定
suffix_name = whale ;suffixを指定
FnSearchItemWirt( prefix_name, base_name, suffix_name )

;Leave
MouseClick, left, 323, 308
}

;/*************************************/
;/* ゲーム終了 */
;/*************************************/
;MouseClick, left, 492, 280
MouseClick, left, 17, 463
MouseClick, left, 255, 187
Sleep, GAME_FINALIZE_TIME ;ゲーム選択画面に戻り中
}

;/***********************************************/
;/* GriswoldのItemの探索 */
;/***********************************************/
;Item欄から引数に指定のItemを探索します。
;Griswoldをクリックした後に呼び出すこと
FnSearchItemGriswold(str_prefix, str_base, str_suffix)
{
;/*************************************/
;/* ローカル変数 初期化 */
;/*************************************/
;検出フラグを初期化
flg_det_prefix = 0
flg_det_base = 0
flg_det_suffix = 0

;/*************************************/
;/* PremiumItem選択 */
;/*************************************/
MouseClick, left, 448, 207

;/*************************************/
;/* PremiumItem探索処理 */
;/*************************************/
Loop 5 ;Item欄スクロール
{
x_pos = 50 ;X座標は固定
y_pos = 90 ;初めに探索するY座標

Loop 4 ;Item欄を全探索
{
;/*************************************/
;/* Item欄から指定のItemがあるか検出 */
;/*************************************/
FnDetectItemName( str_prefix
,str_base
,str_suffix
,x_pos
,y_pos
,flg_det_prefix
,flg_det_base
,flg_det_suffix )

;/*************************************/
;/* 欲しいItemが見つかった場合 */
;/*************************************/
if( ( flg_det_prefix = 1 )
and ( flg_det_base = 1 )
and ( flg_det_suffix = 1 ) )
{
;Item選択
MouseClick, left, x_pos+50, y_pos+10
;Item購入
MouseClick, left, 323, 256
;スクリプト終了
ExitApp
}

;/*************************************/
;/* 欲しいItemが見つからなかった場合 */
;/*************************************/
;次のItem位置へ移動
y_pos += 49
}
;Item欄スクロール
MouseClick, left, 604, 279
}

;/*************************************/
;/* お店から抜ける */
;/*************************************/
MouseClick, left, 372, 305
}

;/***********************************************/
;/* WirtのItemの探索 */
;/***********************************************/
;Item欄から引数に指定のItemを探索します。
;Wirtをクリックした後に呼び出すこと
FnSearchItemWirt(str_prefix, str_base, str_suffix)
{
;/*************************************/
;/* ローカル変数 初期化 */
;/*************************************/
;検出フラグを初期化
flg_det_prefix = 0
flg_det_base = 0
flg_det_suffix = 0

;/*************************************/
;/* PremiumItem選択 */
;/*************************************/
MouseClick, left, 461, 255

;/*************************************/
;/* PremiumItem探索処理 */
;/*************************************/
x_pos = 50 ;X座標は固定
y_pos = 153 ;Y座標

;/*************************************/
;/* Item欄から指定のItemがあるか検出 */
;/*************************************/
FnDetectItemName( str_prefix
,str_base
,str_suffix
,x_pos
,y_pos
,flg_det_prefix
,flg_det_base
,flg_det_suffix )

;/*************************************/
;/* 欲しいItemが見つかった場合 */
;/*************************************/
if( ( flg_det_prefix = 1 )
and ( flg_det_base = 1 )
and ( flg_det_suffix = 1 ) )
{
;Item選択
Send, {ENTER}
;Item購入
Send, {ENTER}
;スクリプト終了
ExitApp
}
else
{
;NOP
}
}

;/***********************************************/
;/* Item欄から指定のItemがあるか検出 */
;/***********************************************/
;str_prefix ;[in ] prefix名
;str_base ;[in ] base名
;str_suffix ;[in ] suffix名
;x_pos ;[in ] 探索開始X座標
;y_pos ;[in ] 探索開始Y座標
;ByRef flg_det_prefix ;[out] prifix検出フラグ 0:未検出 1:検出
;ByRef flg_det_base ;[out] base 検出フラグ 0:未検出 1:検出
;ByRef flg_det_suffix ;[out] suffix検出フラグ 0:未検出 1:検出

FnDetectItemName( str_prefix
,str_base
,str_suffix
,x_pos
,y_pos
,ByRef b1a_flg_det_prefix
,ByRef b1a_flg_det_base
,ByRef b1a_flg_det_suffix )
{
;/*************************************/
;/* 引数チェック */
;/*************************************/
;prefixの指定があるかチェック
StringLen, num, str_prefix
if( num = 0 )
{
flg_srch_prefix = 0
b1a_flg_det_prefix := 1
}
else
{
flg_srch_prefix = 1
b1a_flg_det_prefix := 0
}

;baseの指定があるかチェック
StringLen, num, str_base
if( num = 0 )
{
flg_srch_base = 0
b1a_flg_det_base := 1
}
else
{
flg_srch_base = 1
b1a_flg_det_base := 0
}

;suffixの指定があるかチェック
StringLen, num, str_suffix
if( num = 0 )
{
flg_srch_suffix = 0
b1a_flg_det_suffix := 1
}
else
{
flg_srch_suffix = 1
b1a_flg_det_suffix := 0
}

;/*************************************/
;/* prefixの探索 */
;/*************************************/
if( flg_srch_prefix = 1 )
{
;ファイルの存在チェック
IfNotExist, %A_ScriptDir%\bmp\prefix\%str_prefix%.bmp
{
MsgBox, 指定のPrefix %str_prefix% のBMPファイルが存在しません。
;スクリプト終了
ExitApp
}

;画像マッチング処理
ImageSearch, FoundX, FoundY, x_pos, y_pos, x_pos + 470, y_pos + 16, *120 %A_ScriptDir%\bmp\prefix\%str_prefix%.bmp
;検出フラグを立てる
if ErrorLevel = 0
{
b1a_flg_det_prefix := 1
}
else
{
b1a_flg_det_prefix := 0
}
}
;/*************************************/
;/* baseの探索 */
;/*************************************/
if( flg_srch_base = 1 )
{
;ファイルの存在チェック
IfNotExist, %A_ScriptDir%\bmp\base\%str_base%.bmp
{
MsgBox, 指定のBase %str_base% のBMPファイルが存在しません。
;スクリプト終了
ExitApp
}

;画像マッチング処理
ImageSearch, FoundX, FoundY, x_pos, y_pos, x_pos + 470, y_pos + 16, *120 %A_ScriptDir%\bmp\base\%str_base%.bmp

;検出フラグを立てる
if ErrorLevel = 0
{
b1a_flg_det_base := 1
}
else
{
b1a_flg_det_base := 0
}
}
;/*************************************/
;/* suffixの探索 */
;/*************************************/
if( flg_srch_suffix = 1 )
{
;ファイルの存在チェック
IfNotExist, %A_ScriptDir%\bmp\suffix\%str_suffix%.bmp
{
MsgBox, 指定のSuffix %str_suffix% のBMPファイルが存在しません。
;スクリプト終了
ExitApp
}

;画像マッチング処理
ImageSearch, FoundX, FoundY, x_pos, y_pos, x_pos + 470, y_pos + 16, *120 %A_ScriptDir%\bmp\suffix\%str_suffix%.bmp
;検出フラグを立てる
if ErrorLevel = 0
{
b1a_flg_det_suffix := 1
}
else
{
b1a_flg_det_suffix := 0
}
}
}

s::ExitApp ;sキーで買い物中断
【2009/11/28 23:53】 NAME[Fumiko] WEBLINK[] EDIT[]
Diablo自動Item購入スクリプト
自動でGirswoldを巡回して、指定したItemを購入するスクリプトを作成しました。試したところ、Obsdian Bow Heavensが勝手にINVに入っていました。このツールにはItem名を切り出したBMPファイルが必要なのですが、どうやってお渡ししたら良いでしょう?

>Desmoさん
改良ありがとうございます。Wirt版の改良の参考にさせていただきます。

>Sunaさん
綴り間違ってましたね。(^^;今度直しておきます。ご指摘ありがとうございます。

では以下ソースです。
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓


;*****************************************************************************/
;/* Dialblo 自動買い物スクリプト ver0.50 */
;/* */
;/* 概要 :DiabloⅠの買い物を自動で行います。 */
;/* :Griswoldまで歩いて指定のItemを探し、Itemgがあれば購入、 */
;/* :なければ次のゲームを繰り返します。購入後はスクリプトを */
;/* :停止します。 */
;/* */
;/* 作成者 :Fumiko */
;/* 変更履歴:2009年11月28日 新規作成 現在はGriswoldのみに対応 */
;/****************************************************************************/

;*****************************************************************************/
;/* ★使 用 方 法★ */
;/* */
;/* ① 「AutoHotkey」をDLしてインストール */
;/* */
;/* ② 探索Itemの設定 */
;/* 現在は、ベースItemの性能指定や、Prefix・Suffixの数値指定はできません */
;/* できるのはPrefix・Base・Suffixの名称指定のみです。 */
;/* Obsidian Helm of Starsの指定方法は以下の通り。   */
;/* */
;/* prefix_name = obisidian ;prefixを指定 */
;/* base_name = helm ;baseを指定 */
;/* suffix_name = stars ;suffixを指定 */
;/* FnSearchItem( prefix_name, base_name, suffix_name ) */
;/* */
;/* これをソースに追加していって下さい。 */
;/* */
;/* ③ このソースをテキストに貼り付けて「なんちゃら.ahk」という名前にして保存*/
;/* */
;/* ④ Diabloを起動してDirectLinkConnectionのゲーム作成画面まで進む */
;/* */
;/* ⑤ ALT+TABで裏画面に戻り「なんちゃら.ahk」を実行 */
;/* */
;/* ⑥ マシンによって待機時間を調整する必要があるので、ウェイト時間は */
;/* ミリ秒単位で適宜調整すること */
;/* */
;/****************************************************************************/

;*****************************************************************************/
;/* ★本ツールの仕様★ */
;/* */
;/* ① 「なんちゃら.ahk」と同じディレクトリに「bmp」フォルダを作成  */
;/* */
;/* ② 「bmp」フォルダの下に「prefix」「base」「suffix」フォルダを作成 */
;/* */
;/* ③ それぞれのフォルダにdiabloのスクリーンショットから切り出したItem名の */
;/* BMPを置いておきます。 */
;/* Obsidian Helm of Starsの場合、「prefix」にobsidian.bmp、「base」に */
;/* helm.bmp、「suffix」にstars.bmpを置きます。各BMPは余白のないよう */
;/* ぎりぎりに切り出します。1つあたり8×30程度の大きさです。 */
;/* 足りないBMPは各自で追加して下さい。 */
;/* */
;/* ④ 本ツールではゲーム内の明るさを一番暗くします。これはお店のItem窓が */
;/* 半透明のため、画像マッチング処理が背景の色によってうまくいかない不具合*/
;/* を少しでも解消するためです。 */
;/* */
;/****************************************************************************/

;/***********************************************/
;/* ウェイト時間の設定 */
;/***********************************************/
;以下に、お店を回る際の時間設定をします。
;時間はマシン毎に異なるため、自分のPCの性能に合わせた時間に設定して下さい。
;単位はすべて[ms](ミリ秒)です。

GAME_CREATE_TIME = 2500 ;ゲーム作成時間
MOVING_TO_GRISWOLD_TIME_1 = 4300 ;Griswoldまで歩くためのウェイト1
MOVING_TO_GRISWOLD_TIME_2 = 2000 ;Griswoldまで歩くためのウェイト2
GAME_FINALIZE_TIME = 3500 ;ゲーム終了時間

;/***********************************************/
;/* グローバル変数定義 */
;/***********************************************/
g_flg_first = 1

;/***********************************************/
;/* ソフトを起動する */
;/***********************************************/
Process,Exist,diablo.exe ;ソフトが起動しているかどうかを調べる
if (ErrorLevel <> 0) ;起動していた場合(ErrorLevel変数にプロセスIDが格納される)
{
WinActivate,ahk_pid %ErrorLevel% ;そのプロセスのウィンドウをアクティブにする
}
else
{
ExitApp ;終了
}

;/***********************************************/
;/* Itemの探索 */
;/***********************************************/
LOOP ;Itemが見つかるまで延々と繰り返し
{
;/*************************************/
;/* ゲーム作成とGriswoldまで移動 */
;/*************************************/
;CreateGame
MouseClick, left, 432, 298
MouseClick, left, 432, 298
Sleep, 100

;GameLevel選択
MouseClick, left, 432, 144
MouseClick, left, 432, 144
Sleep, GAME_CREATE_TIME ;Create中

;/*************************************/
;/* 明るさを下げる */
;/*************************************/
if( g_flg_first = 1 ) ;初めの一回のみ処理する
{
MouseClick, left, 46, 465 ;Menuを出す
MouseClick, left, 274, 133 ;Option
MouseClick, left, 210, 225 ;下へ
Loop, 10
{
MouseClick, left, 288, 226 ;Gammaを下げる
}
MouseClick, left, 46, 465 ;Menuを消す

g_flg_first = 0
}
Sleep, 200

;/*************************************/
;/* Griswoldまで移動中 */
;/*************************************/
MouseClick, left, 116, 0
Sleep, MOVING_TO_GRISWOLD_TIME_1
MouseClick, left, 282, 51
Sleep, MOVING_TO_GRISWOLD_TIME_2

;/*************************************/
;/* 探索Itemの指定 */
;/*************************************/
;itemを指定します。いらない項目は空にします
prefix_name = obsidian ;prefixを指定
base_name = helm ;baseを指定
suffix_name = stars ;suffixを指定
FnSearchItem( prefix_name, base_name, suffix_name )

prefix_name = obsidian ;prefixを指定
base_name = crown ;baseを指定
suffix_name = stars ;suffixを指定
FnSearchItem( prefix_name, base_name, suffix_name )

prefix_name = obsidian ;prefixを指定
base_name = helm ;baseを指定
suffix_name = harmony ;suffixを指定
FnSearchItem( prefix_name, base_name, suffix_name )

prefix_name = obsidian ;prefixを指定
base_name = crown ;baseを指定
suffix_name = harmony ;suffixを指定
FnSearchItem( prefix_name, base_name, suffix_name )

prefix_name = obsidian ;prefixを指定
base_name = bow ;baseを指定
suffix_name = heavens ;suffixを指定
FnSearchItem( prefix_name, base_name, suffix_name )

prefix_name = obsidian ;prefixを指定
base_name = plate ;baseを指定
suffix_name = stars ;suffixを指定
FnSearchItem( prefix_name, base_name, suffix_name )

prefix_name = obsidian ;prefixを指定
base_name = mail ;baseを指定
suffix_name = stars ;suffixを指定
FnSearchItem( prefix_name, base_name, suffix_name )

prefix_name = obsidian ;prefixを指定
base_name = armor ;baseを指定
suffix_name = stars ;suffixを指定
FnSearchItem( prefix_name, base_name, suffix_name )

prefix_name = kings ;prefixを指定
base_name = sword ;baseを指定
suffix_name = haste ;suffixを指定
FnSearchItem( prefix_name, base_name, suffix_name )

;/*************************************/
;/* ゲーム終了 */
;/*************************************/
MouseClick, left, 492, 280
MouseClick, left, 17, 463
MouseClick, left, 255, 187
Sleep, GAME_FINALIZE_TIME ;ゲーム選択画面に戻り中
}

;/***********************************************/
;/* Itemの探索 */
;/***********************************************/
;Item欄から引数に指定のItemを探索します。
;Griswoldをクリックした後に呼び出すこと
FnSearchItem(str_prefix, str_base, str_suffix)
{
;/*************************************/
;/* ローカル変数 初期化 */
;/*************************************/
;検出フラグを初期化
flg_det_prefix = 0
flg_det_base = 0
flg_det_suffix = 0

;/*************************************/
;/* 引数チェック */
;/*************************************/
;prefixの指定があるかチェック
StringLen, num, str_prefix
if( num = 0 )
{
flg_srch_prefix = 0
}
else
{
flg_srch_prefix = 1
}

;baseの指定があるかチェック
StringLen, num, str_base
if( num = 0 )
{
flg_srch_base = 0
}
else
{
flg_srch_base = 1
}

;suffixの指定があるかチェック
StringLen, num, str_suffix
if( num = 0 )
{
flg_srch_suffix = 0
}
else
{
flg_srch_suffix = 1
}

;/*************************************/
;/* PremiumItem選択 */
;/*************************************/
MouseClick, left, 448, 207

;/*************************************/
;/* PremiumItem探索処理 */
;/*************************************/
Loop 5 ;Item欄スクロール
{
y_pos = 90 ;初めに探索するY座標

Loop 4 ;Item欄を全探索
{
;/*************************************/
;/* prefixの探索 */
;/*************************************/
if( flg_srch_prefix = 1 )
{
;ファイルの存在チェック
IfNotExist, %A_ScriptDir%\bmp\prefix\%str_prefix%.bmp
{
MsgBox, 指定のPrefix %str_prefix% のBMPファイルが存在しません。
;スクリプト終了
ExitApp
}

;画像マッチング処理
ImageSearch, FoundX, FoundY, 50, y_pos, 520, y_pos + 16, *120 %A_ScriptDir%\bmp\prefix\%str_prefix%.bmp
;検出フラグを立てる
if ErrorLevel = 0
{
flg_det_prefix = 1
}
else
{
flg_det_prefix = 0
}
}
;/*************************************/
;/* baseの探索 */
;/*************************************/
if( flg_srch_base = 1 )
{
;ファイルの存在チェック
IfNotExist, %A_ScriptDir%\bmp\base\%str_base%.bmp
{
MsgBox, 指定のBase %str_base% のBMPファイルが存在しません。
;スクリプト終了
ExitApp
}

;画像マッチング処理
ImageSearch, FoundX, FoundY, 50, y_pos, 520, y_pos + 16, *120 %A_ScriptDir%\bmp\base\%str_base%.bmp

;検出フラグを立てる
if ErrorLevel = 0
{
flg_det_base = 1
}
else
{
flg_det_base = 0
}
}
;/*************************************/
;/* suffixの探索 */
;/*************************************/
if( flg_srch_suffix = 1 )
{
;ファイルの存在チェック
IfNotExist, %A_ScriptDir%\bmp\suffix\%str_suffix%.bmp
{
MsgBox, 指定のsuffix %str_suffix% のBMPファイルが存在しません。
;スクリプト終了
ExitApp
}

;画像マッチング処理
ImageSearch, FoundX, FoundY, 50, y_pos, 520, y_pos + 16, *120 %A_ScriptDir%\bmp\suffix\%str_suffix%.bmp
;検出フラグを立てる
if ErrorLevel = 0
{
flg_det_suffix = 1
}
else
{
flg_det_suffix = 0
}
}

;/*************************************/
;/* 欲しいItemが見つかった場合 */
;/*************************************/
if( ( ( flg_srch_prefix = 0 ) or ( ( flg_srch_prefix = 1 ) and ( flg_det_prefix = 1 ) ) )
and ( ( flg_srch_base = 0 ) or ( ( flg_srch_base = 1 ) and ( flg_det_base = 1 ) ) )
and ( ( flg_srch_suffix = 0 ) or ( ( flg_srch_suffix = 1 ) and ( flg_det_suffix = 1 ) ) ) )
{
;MsgBox, 4%FoundX%x%FoundY%
;Item選択
MouseClick, left, 100, y_pos+10
;Item購入
MouseClick, left, 323, 256
;スクリプト終了
ExitApp
}

;/*************************************/
;/* 欲しいItemが見つからなかった場合 */
;/*************************************/
;次のItem位置へ移動
y_pos += 49
}
;Item欄スクロール
MouseClick, left, 604, 279
}

;/*************************************/
;/* お店から抜ける */
;/*************************************/
MouseClick, left, 372, 305
}

s::ExitApp ;sキーで買い物中断
【2009/11/28 18:20】 NAME[Fumiko] WEBLINK[] EDIT[]
GrisとWirt巡回
Desmoです。ついでにWirt行くように改造してみました。
さらにDirect Cable Connection ではなく、Local Area Network (IPX) バージョンです。
後半のマウスの動きがやや雑ですが、
ノンストップでGrisからWirt行ってるはずです。
Grisで最初にPremium Item開いた直後にディレイかましてあります(1500ms?)
適当にどうぞ。


Process,Exist,diablo.exe ;ソフトが起動しているかどうかを調べる
if (ErrorLevel <> 0) ;起動していた場合(ErrorLevel変数にプロセスIDが格納される)
{
WinActivate,ahk_pid %ErrorLevel% ;そのプロセスのウィンドウをアクティブにする
}
else
{
ExitApp ;終了
}

LOOP
{
;CreateGame
MouseClick, left, 432, 272
MouseClick, left, 432, 272
Sleep, 200

;GameLevel選択
MouseClick, left, 432, 144
MouseClick, left, 432, 144
Sleep, 1800 ;Create中

;Grisまで移動中
MouseClick, left, 116, 0
Sleep, 4300
MouseClick, left, 282, 51
Sleep, 2000

;PremiumItem選択
MouseClick, left, 448, 207
Sleep, 1500

;Item欄スクロール
MouseClick, left, 604, 279
Sleep, 500
MouseClick, left, 604, 279
Sleep, 500
MouseClick, left, 604, 279
Sleep, 500
MouseClick, left, 604, 279
Sleep, 500
MouseClick, left, 604, 279
Sleep, 500
MouseClick, left, 604, 279
Sleep, 2500

;Wirt移動
MouseClick, left, 372, 305
MouseClick, left, 492, 280
MouseClick, left, 0, 72
Sleep, 3000
MouseClick, left, 0, 72
Sleep, 2800
MouseClick, left, 0, 28
Sleep, 3000
MouseClick, left, 97, 0
Sleep, 3000
MouseClick, left, 0, 76
Sleep, 3000
MouseClick, left, 128, 0
Sleep, 2500
MouseClick, left, 364, 0
Sleep, 3500
MouseClick, left, 385, 0
Sleep, 2500

;Wirtクリック
MouseClick, left, 478, 74
Sleep, 2200
MouseClick, left, 451, 254
Sleep, 2800
MouseClick, left, 328, 308
;ゲーム終了
MouseClick, left, 17, 463
MouseClick, left, 255, 187
Sleep, 3800 ;ゲーム選択画面に戻り中
}

return

s::ExitApp ;sキーで買い物中断
【2009/11/28 16:33】 NAME[Desmo/Rymo] WEBLINK[] EDIT[]
無題
>;/* Dialbloキーバインド変更スクリプト ver0.40 */

Dialboになってるのが気になって、夜も眠れません…
【2009/11/28 06:07】 NAME[Suna] WEBLINK[] EDIT[]
キーバインド実装予定項目
1.INVからBeltに、ボタン1つでPotionを補給。
2.ボタン1つでPepinから赤Full Potionをいっぱい買う
3.ホットキーの有効/無効をチャットウィンドウに連動させる(無理かも?Enterキーがチャットのみでなく、選択肢決定も行うため、単純なフック処理では実装できない)
4.魔法切り替えと同時に魔法発動
  まぁ、これは簡単です。必要あるかは謎。

他に希望があったらどうぞ。

【2009/11/28 00:27】 NAME[Fumiko] WEBLINK[] EDIT[]
インデントが・・・
ここにソースを張ると、インデントがずれますね。機能には支障はないのですが。(^_^;
【2009/11/28 00:19】 NAME[Fumiko] WEBLINK[] EDIT[]
Gris自動巡回スクリプト
①AutoHotkeyをDLしてインストール
②この矢印以下のソースをテキストに貼り付けて、「なんちゃら.ahk」という名前にして保存
③Diabloを起動してDirectConnectのゲーム作成画面まで進む
④ALT+TABで裏画面に戻り「なんちゃら.ahk」を実行
⑤マシンによって待機時間を調整する必要があるので、Sleepの数字はミリ秒単位で適宜調整すること

質問はB.Nまで。
ちなみに今後バージョンアップして、GrisのItemを自動判別するかもしれません。
↓↓↓↓↓↓↓↓↓↓↓↓↓↓


Process,Exist,diablo.exe ;ソフトが起動しているかどうかを調べる
if (ErrorLevel <> 0) ;起動していた場合(ErrorLevel変数にプロセスIDが格納される)
{
WinActivate,ahk_pid %ErrorLevel% ;そのプロセスのウィンドウをアクティブにする
}
else
{
ExitApp ;終了
}

LOOP
{
;CreateGame
MouseClick, left, 432, 298
MouseClick, left, 432, 298
Sleep, 100

;GameLevel選択
MouseClick, left, 432, 144
MouseClick, left, 432, 144
Sleep, 1800 ;Create中

;Grisまで移動中
MouseClick, left, 116, 0
Sleep, 4300
MouseClick, left, 282, 51
Sleep, 2000

;PremiumItem選択
MouseClick, left, 448, 207
;Sleep, 100

;Item欄スクロール
MouseClick, left, 604, 279
Sleep, 500
MouseClick, left, 604, 279
Sleep, 500
MouseClick, left, 604, 279
Sleep, 500
MouseClick, left, 604, 279
Sleep, 500
MouseClick, left, 604, 279
Sleep, 500
MouseClick, left, 604, 279
Sleep, 2000

;ゲーム終了
MouseClick, left, 372, 305
MouseClick, left, 492, 280
MouseClick, left, 17, 463
MouseClick, left, 255, 187
Sleep, 3800 ;ゲーム選択画面に戻り中
}

return

s::ExitApp ;sキーで買い物中断
【2009/11/28 00:05】 NAME[Fumiko] WEBLINK[] EDIT[]
キーバインド使用方法
使用方法
r ;スピードスペル
a ;F5魔法
s ;F6魔法
d ;F7魔法
f ;F8魔法
Space ;Shiftキー
t ;荷物(インベントリー)
g 自動Potion飲み機能 1-8まで順番にPotionを飲む
b Potion番号を1に戻す
Ctrl キーバインドの有効/無効切り替え チャット時に無効にしてね
p Adriaから青FullPotionをINVいっぱいにかいます
【2009/11/28 00:04】 NAME[Fumiko] WEBLINK[] EDIT[]
キーバインド変更スクリプト


;************************************************************************/
;/* Dialbloキーバインド変更スクリプト ver0.40 */
;/* */
;/* 作成者 :Fumiko */
;/* 変更履歴:2009年11月27日 新規作成 */
;/* :2009年11月27日 PキーをAdriaで使用するとItemを売り払う */
;/* :バグを修正 PキーはAdriaの青Potion専用とする */
;/***********************************************************************/

;************************************************/
;/* グローバル変数の定義 */
;/***********************************************/
potion_number = 1 ;/* ポーション番号 */

;/***********************************************/
;/* ソフトを起動する */
;/***********************************************/
Process,Exist,diablo.exe ;ソフトが起動しているかどうかを調べる
if (ErrorLevel <> 0) ;起動していた場合(ErrorLevel変数にプロセスIDが格納される)
{
WinActivate,ahk_pid %ErrorLevel% ;そのプロセスのウィンドウをアクティブにする
}
else
{
ExitApp ;終了
}

;/***********************************************/
;/* 本スクリプトの待機 */
;/***********************************************/
Process,WaitClose,diablo.exe ;diabloが終了するまで待機
ExitApp ;スクリプトを終了する


;/***********************************************/
;/* キーバインドの変更 */
;/***********************************************/
#IfWinActive ahk_class DIABLO ;diabloのウィンドウがアクティブの時のみ割り当てを行わせる
;キーの割り当てはここで行います
r::s ;スピードスペル
e::b ;スペルブック
a::F5 ;F5魔法
s::F6 ;F6魔法
d::F7 ;F7魔法
f::F8 ;F8魔法
Space::Shift ;Shiftキー
t::i ;荷物(インベントリー)
#IfWinActive ;ウィンドウの限定を解除


;/***********************************************/
;/* Potionの順番飲み処理 */
;/***********************************************/
;gキーを押すと、ポーションを左から順番に飲んでいきます
g::
+g::
Send, %potion_number%
potion_number += 1

;ポーション番号が最後までいったら1に戻す
if (potion_number = 9)
{
potion_number = 1
}
return

;/***********************************************/
;/* Potionの順番初期化 */
;/***********************************************/
;bキーを押すと、ポーション番号を1番に戻します
b::
+b::
potion_number = 1
return

;/***********************************************/
;/* Hotkeyの有効/無効切り替え */
;/***********************************************/
Ctrl::Suspend, Toggle
return

;/***********************************************/
;/* Adriaで青Potionまとめ買い */
;/***********************************************/
p::
SetDefaultMouseSpeed, 0
MouseClick, left, 460, 205 ;Full Potion選択
Loop, 40 ;Inventoryがいっぱいになるまで繰り返し
{
MouseClick, left, 243, 152 ;Potionを買う
MouseClick, left, 318, 253
}
MouseClick, left, 328, 312 ;お店を閉じる
return

【2009/11/28 00:04】 NAME[Fumiko] WEBLINK[] EDIT[]
キーバインド変更スクリプト


;************************************************************************/
;/* Dialbloキーバインド変更スクリプト ver0.40 */
;/* */
;/* 作成者 :Fumiko */
;/* 変更履歴:2009年11月27日 新規作成 */
;/* :2009年11月27日 PキーをAdriaで使用するとItemを売り払う */
;/* :バグを修正 PキーはAdriaの青Potion専用とする */
;/***********************************************************************/

;************************************************/
;/* グローバル変数の定義 */
;/***********************************************/
potion_number = 1 ;/* ポーション番号 */

;/***********************************************/
;/* ソフトを起動する */
;/***********************************************/
Process,Exist,diablo.exe ;ソフトが起動しているかどうかを調べる
if (ErrorLevel <> 0) ;起動していた場合(ErrorLevel変数にプロセスIDが格納される)
{
WinActivate,ahk_pid %ErrorLevel% ;そのプロセスのウィンドウをアクティブにする
}
else
{
ExitApp ;終了
}

;/***********************************************/
;/* 本スクリプトの待機 */
;/***********************************************/
Process,WaitClose,diablo.exe ;diabloが終了するまで待機
ExitApp ;スクリプトを終了する


;/***********************************************/
;/* キーバインドの変更 */
;/***********************************************/
#IfWinActive ahk_class DIABLO ;diabloのウィンドウがアクティブの時のみ割り当てを行わせる
;キーの割り当てはここで行います
r::s ;スピードスペル
e::b ;スペルブック
a::F5 ;F5魔法
s::F6 ;F6魔法
d::F7 ;F7魔法
f::F8 ;F8魔法
Space::Shift ;Shiftキー
t::i ;荷物(インベントリー)
#IfWinActive ;ウィンドウの限定を解除


;/***********************************************/
;/* Potionの順番飲み処理 */
;/***********************************************/
;gキーを押すと、ポーションを左から順番に飲んでいきます
g::
+g::
Send, %potion_number%
potion_number += 1

;ポーション番号が最後までいったら1に戻す
if (potion_number = 9)
{
potion_number = 1
}
return

;/***********************************************/
;/* Potionの順番初期化 */
;/***********************************************/
;bキーを押すと、ポーション番号を1番に戻します
b::
+b::
potion_number = 1
return

;/***********************************************/
;/* Hotkeyの有効/無効切り替え */
;/***********************************************/
Ctrl::Suspend, Toggle
return

;/***********************************************/
;/* Adriaで青Potionまとめ買い */
;/***********************************************/
p::
SetDefaultMouseSpeed, 0
MouseClick, left, 460, 205 ;Full Potion選択
Loop, 40 ;Inventoryがいっぱいになるまで繰り返し
{
MouseClick, left, 243, 152 ;Potionを買う
MouseClick, left, 318, 253
}
MouseClick, left, 328, 312 ;お店を閉じる
return

【2009/11/27 22:38】 NAME[Fumiko] WEBLINK[] EDIT[]


コメントフォーム
お名前
タイトル
文字色
メールアドレス
URL
コメント
パスワード
  Vodafone絵文字 i-mode絵文字 Ezweb絵文字


トラックバック
この記事にトラックバックする:


忍者ブログ [PR]
カレンダー
11 2024/12 01
S M T W T F S
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
フリーエリア
最新コメント
[10/05 Gally]
[08/31 mz0yeeoo]
[05/25 Emelaldo]
[05/24 Suna]
[05/05 Emelaldo]
[05/05 mikage]
[03/14 Emelaldo]
[03/13 TIFFER]
[03/02 Emelaldo]
[03/02 Suna]
最新トラックバック
プロフィール
HN:
Emelaldo_Ninja
性別:
非公開
バーコード
ブログ内検索
最古記事
(12/11)
(12/11)
(12/11)
888
(12/12)
(12/12)
(12/12)
(12/13)
(12/13)
(12/14)
(12/15)
P R