ツール升スレ35 抜粋
21 名前:ネトゲ廃人@名無し[sage] 投稿日:2006/08/24(木) 14:17:38
釣りマクロプログラム
ヤフーブリーフケース
http://briefcase.yahoo.co.jp/bc/talesmacro/lst?.dir=/ 
にアップしました。どうぞご自由に。竜泉郷もレベル制限なくなってることだし。
釣りマクロプログラム
ヤフーブリーフケース
http://briefcase.yahoo.co.jp/bc/talesmacro/lst?.dir=/ 
にアップしました。どうぞご自由に。竜泉郷もレベル制限なくなってることだし。
348 名前:ネトゲ廃人@名無し[sage] 投稿日:2006/08/28(月) 11:18:12
今、karimacro_v1使ってる人居る?
Call用.uwsのほうの設定も結構いじらないと、正直使い物にならない気が。
というか、そもそも起動用の設定いじるだけでは今のバージョンでは機能しないと思うんだけどどうかな。
今、karimacro_v1使ってる人居る?
Call用.uwsのほうの設定も結構いじらないと、正直使い物にならない気が。
というか、そもそも起動用の設定いじるだけでは今のバージョンでは機能しないと思うんだけどどうかな。
350 名前:ネトゲ廃人@名無し[sage] 投稿日:2006/08/28(月) 11:53:07
→349 でもいじらないと動かないような・・・。動いてる?
→349 でもいじらないと動かないような・・・。動いてる?
作成者は凄いと思うけど、C言語やってたっぽい記述で
フラグやら変数やらが英字一文字とかでわかりづらいから、そこから直してる。
判定もフラグばっかで無駄が多いし、全体をとりあえず回しつつ
全てにフラグを入れて実行するしないを判断するような作りはどうかと思う。
だったら各所の作りは関数にしてくれと。流れがわかりにくくて仕方ない。
理論上横回避してそうなんだけど、結局これ100%横回避してくれないしな。
何よりもタゲでもたつくのが腹立つ。
敵はもう止まってるのに、周りをうろうろと2秒ほどうろついたり。
あとこれ、敵に囲まれると逃げない?
横回避とWP回避が影響してるっぽいんだけど、
せっかく雑魚がうじゃってるところに突っ込んでも逃げ出すからショボス。
フラグやら変数やらが英字一文字とかでわかりづらいから、そこから直してる。
判定もフラグばっかで無駄が多いし、全体をとりあえず回しつつ
全てにフラグを入れて実行するしないを判断するような作りはどうかと思う。
だったら各所の作りは関数にしてくれと。流れがわかりにくくて仕方ない。
理論上横回避してそうなんだけど、結局これ100%横回避してくれないしな。
何よりもタゲでもたつくのが腹立つ。
敵はもう止まってるのに、周りをうろうろと2秒ほどうろついたり。
あとこれ、敵に囲まれると逃げない?
横回避とWP回避が影響してるっぽいんだけど、
せっかく雑魚がうじゃってるところに突っ込んでも逃げ出すからショボス。
358 名前:ネトゲ廃人@名無し[sage] 投稿日:2006/08/28(月) 14:21:02
→350
バグ多いし仕方ない。
左に行く習性直すヒントはMapの座標
敵が多いとこで逃げないようにするにはLock()をいじる
locktimeは削っていい
skilldelayはコンボ数表示されてるとこを判断するようにする
これはv2みればわかるかな
とりあえずこんなもん
→350
バグ多いし仕方ない。
左に行く習性直すヒントはMapの座標
敵が多いとこで逃げないようにするにはLock()をいじる
locktimeは削っていい
skilldelayはコンボ数表示されてるとこを判断するようにする
これはv2みればわかるかな
とりあえずこんなもん
419 名前:ネトゲ廃人@名無し[sage] 投稿日:2006/08/29(火) 11:34:03
すみません。ちょっと狩りマクロについて質問させてください。
peekcolor( 63, 5) = $F77DAD
といったような記述が、攻撃の判定の一部に使われているんですけど、
この座標の意味がわかりかねます。
座標と色的に、HPバーを表しているのかなぁと最初思ったんですが、POT設定で
public px1 = 140 ; public py1 = 35
って書いてある時点で違うなと。
これは何を意味しているのでしょうか。わかる方、どうか教えて下さい。
すみません。ちょっと狩りマクロについて質問させてください。
peekcolor( 63, 5) = $F77DAD
といったような記述が、攻撃の判定の一部に使われているんですけど、
この座標の意味がわかりかねます。
座標と色的に、HPバーを表しているのかなぁと最初思ったんですが、POT設定で
public px1 = 140 ; public py1 = 35
って書いてある時点で違うなと。
これは何を意味しているのでしょうか。わかる方、どうか教えて下さい。
421 名前:419[sage] 投稿日:2006/08/29(火) 11:47:39
あ、すみません自己解決しました。
名前なんてゆーのか知らないけど、ディレイカウントバー?ですね。
お騒がせしました。
あ、すみません自己解決しました。
名前なんてゆーのか知らないけど、ディレイカウントバー?ですね。
お騒がせしました。
580 名前:ネトゲ廃人@名無し[sage] 投稿日:2006/08/30(水) 19:42:33
あ、あと、誰か移動の部分のロジックだけもうちょっとまともにできませんか。
ここを直す気力が湧かない。
あ、あと、誰か移動の部分のロジックだけもうちょっとまともにできませんか。
ここを直す気力が湧かない。
移動設定の座標指定がわかりにくいと思うんだけどどう?
public cx = maxx / 2 ; public cy = maxy / 2
で自分の座標取得してんだから
maxx - rightx やら maxy - downy で右や下指定するくらいなら
cx + rightx とか cy -downy みたいに、自分からの距離で指定させたほうが
直感的にわかりやすくない?
public cx = maxx / 2 ; public cy = maxy / 2
で自分の座標取得してんだから
maxx - rightx やら maxy - downy で右や下指定するくらいなら
cx + rightx とか cy -downy みたいに、自分からの距離で指定させたほうが
直感的にわかりやすくない?
582 名前:ネトゲ廃人@名無し[sage] 投稿日:2006/08/30(水) 20:11:29
→580
オレはこんな感じに作ってる
mv_xy:動く方向0~7 mv:クリックする距離 c_center:キャラの中心座標
→580
オレはこんな感じに作ってる
mv_xy:動く方向0~7 mv:クリックする距離 c_center:キャラの中心座標
select mv_xy
case 0 auto_mv_x = +0.0 ; auto_mv_y = -1.0 // 上
case 1 auto_mv_x = +0.7 ; auto_mv_y = -0.7 // 右上
case 2 auto_mv_x = +1.0 ; auto_mv_y = +0.0 // 右
(略)
selend
Btn( left, click,c_center_x + mv * auto_mv_x , c_center_y + mv* auto_mv_y,10)
case 0 auto_mv_x = +0.0 ; auto_mv_y = -1.0 // 上
case 1 auto_mv_x = +0.7 ; auto_mv_y = -0.7 // 右上
case 2 auto_mv_x = +1.0 ; auto_mv_y = +0.0 // 右
(略)
selend
Btn( left, click,c_center_x + mv * auto_mv_x , c_center_y + mv* auto_mv_y,10)
583 名前:ネトゲ廃人@名無し[sage] 投稿日:2006/08/30(水) 20:24:05
→581
やっぱそうだよね。戦闘中に補助かけ直す必要があるような狩場で使うなってことで。w
で、下二行は試し?w 狩りマクロ自体升必須だし暗号て。w
→581
やっぱそうだよね。戦闘中に補助かけ直す必要があるような狩場で使うなってことで。w
で、下二行は試し?w 狩りマクロ自体升必須だし暗号て。w
→582
おお。そっちのほうがソースの量も少なくて済むし、
設定値も一個で済むし、遥かにイイネ!
auto_mv_xとauto_mv_yのバランスを調節したケース作れば、
8パターンのさらにその間の方向とか指定できるね。w
いっそのこと倍率はランダムにしたほうが面白いか?w
参考にさせていただきます。ありが㌧!
おお。そっちのほうがソースの量も少なくて済むし、
設定値も一個で済むし、遥かにイイネ!
auto_mv_xとauto_mv_yのバランスを調節したケース作れば、
8パターンのさらにその間の方向とか指定できるね。w
いっそのこと倍率はランダムにしたほうが面白いか?w
参考にさせていただきます。ありが㌧!
585 名前:ネトゲ廃人@名無し[sage] 投稿日:2006/08/30(水) 20:44:46
→580
せっかくなのでもう一つ
a:移動方向(※a<bunkatsu) PI=3.1416
bunkatsu = 36 //分割数
circle_r = 280 //円の半径
circlestep = 2 * PI / bunkatsu //一度に移動する角度[rad]
→580
せっかくなのでもう一つ
a:移動方向(※a<bunkatsu) PI=3.1416
bunkatsu = 36 //分割数
circle_r = 280 //円の半径
circlestep = 2 * PI / bunkatsu //一度に移動する角度[rad]
Btn( left, click,c_center_x+circle_r*cos(circlestep*a-PI/2),c_center_y+circle_r*sin(circlestep*a-PI/2))
591 名前:ネトゲ廃人@名無し[sage] 投稿日:2006/08/30(水) 21:53:29
→588
速度的には問題無かったのですが、8方向移動でガチガチに組んでしまっていたので
他の部分を修正するのが面倒だった・・・
→588
速度的には問題無かったのですが、8方向移動でガチガチに組んでしまっていたので
他の部分を修正するのが面倒だった・・・
Karimacroには升は組み込まれていませんがUWSCでも升は出来ますよ。
DEF_DLL ReadProcessMemory(long,long,Var long,long,Var long) :long :Kernel32.dll
DEF_DLL WriteProcessMemory(long,long,Var long,long,Var long) :long :Kernel32.dll
DEF_DLL WriteProcessMemory(long,long,Var long,long,Var long) :long :Kernel32.dll
- GetWindowThreadProcessId , OpenProcess , CloseHandle , PostMessageA , GetTickCount
必要なのはこれくらいかな?ちょっと面倒ですがメモリ操作は出来ます。
607 名前:ネトゲ廃人@名無し[sage] 投稿日:2006/08/31(木) 00:11:24
→599
ありが㌧!
中身を拝見させてもらいました。
計算式そのものよりもスレッドの存在に驚きました!
→599
ありが㌧!
中身を拝見させてもらいました。
計算式そのものよりもスレッドの存在に驚きました!
これならEscだけでなく、特定のキーでモードを変えることも簡単そうですね。
たとえば誤って横殴りに行ってしまった時なんかに、
「すみません」と発言して走り去る緊急回避モードとか。w
たとえば誤って横殴りに行ってしまった時なんかに、
「すみません」と発言して走り去る緊急回避モードとか。w
とりあえずデバッグモードの即時切替にでも利用させてもらいます。
695 名前:ネトゲ廃人@名無し[sage] 投稿日:2006/09/02(土) 02:16:00
→688
「マウスの左ボタン」を押している間、「マウスの左ボタン」を連打を希望します。
BTN(LEFT,CLICK or UP)を使うとVK_LBUTTONの状態が上書きされますが解決方法ってあります?
→688
「マウスの左ボタン」を押している間、「マウスの左ボタン」を連打を希望します。
BTN(LEFT,CLICK or UP)を使うとVK_LBUTTONの状態が上書きされますが解決方法ってあります?
710 名前:ネトゲ廃人@名無し[sage] 投稿日:2006/09/02(土) 13:33:53
btn関数だけで送るとvk_lbuttonに影響が出るから
mouseorgでアクティブウインドウだけにクリック送信してやればできるはず。
あとはアクティブウインドウがTWのウインドウが判断するぐらいはしてやったほうがいいかも
btn関数だけで送るとvk_lbuttonに影響が出るから
mouseorgでアクティブウインドウだけにクリック送信してやればできるはず。
あとはアクティブウインドウがTWのウインドウが判断するぐらいはしてやったほうがいいかも
以下スクリプト(Escで終了できるタイプ)
cnt = 0
while ! getkeystate(vk_esc)
sleep(0.01)
while ! getkeystate(vk_esc)
sleep(0.01)
//マウス押してるか判断
if ! getkeystate(vk_lbutton) then continue
if ! getkeystate(vk_lbutton) then continue
//アクティブウインドウのID取得(事前にTW窓のID取得して比較するといいかも)
id = getid(get_active_win)
//クリックの送信先を取得したIDのみに限定
mouseorg(id, 2)
id = getid(get_active_win)
//クリックの送信先を取得したIDのみに限定
mouseorg(id, 2)
//クリックを送信
btn(left, click)
//クリックした回数を表示(きっといらないと思うので消してよし)
cnt = cnt +1
fukidasi(cnt)
btn(left, click)
//クリックした回数を表示(きっといらないと思うので消してよし)
cnt = cnt +1
fukidasi(cnt)
//送信先の指定を開放
mouseorg(0)
wend
mouseorg(0)
wend
とまぁこんな感じでどーでしょうか。
713 名前:ネトゲ廃人@名無し[sage] 投稿日:2006/09/02(土) 14:08:31
「緊急時用ダッシュツール」(uwscスクリプト+dll)
PTメンバが死んでしまったが気づくのが遅れてしまった
一刻も早く駆けつけたい
そんなときに使うと少しの間 3.141592倍速で移動します
http://2sen.dip.jp:81/cgi-bin/upgun/up1/source/up2031.lzh
「緊急時用ダッシュツール」(uwscスクリプト+dll)
PTメンバが死んでしまったが気づくのが遅れてしまった
一刻も早く駆けつけたい
そんなときに使うと少しの間 3.141592倍速で移動します
http://2sen.dip.jp:81/cgi-bin/upgun/up1/source/up2031.lzh
717 名前:710[sage] 投稿日:2006/09/02(土) 14:24:39
→711
とりあえず自分でTW開いてやってみたらクリック位置指定しないと
座標0,0をクリックしにいくっぽい?
G_MOUSE_XとかYとかでカーソル位置を指定してやってくださいな。
後、窓モードだとタイトルバーとかフレーム幅もちょこっと影響するから
その辺は自分で微調整してください
→711
とりあえず自分でTW開いてやってみたらクリック位置指定しないと
座標0,0をクリックしにいくっぽい?
G_MOUSE_XとかYとかでカーソル位置を指定してやってくださいな。
後、窓モードだとタイトルバーとかフレーム幅もちょこっと影響するから
その辺は自分で微調整してください
836 名前:ネトゲ廃人@名無し[sage] 投稿日:2006/09/03(日) 22:25:28
狩りのマクロはできあがったんだが、まだ人の認識ができないので横殴りしてしまう。
回復、補助、コンボ攻撃を組み込んでるから、敵が画面上にいないときに適当に走ってるところを
見られない限りはマクロとは思われないはず。
狩りのマクロはできあがったんだが、まだ人の認識ができないので横殴りしてしまう。
回復、補助、コンボ攻撃を組み込んでるから、敵が画面上にいないときに適当に走ってるところを
見られない限りはマクロとは思われないはず。
人の認識は、染色や装備であまり変わらない顔の画像でも認識させようと思ったが、
後ろ姿入れなくても8*3種類も必要なのは正直ダルイ。
できてるやつらはどういうアルゴリズム組み込んでるんだ?
ママンは安心して側を離れられる強い子に育ってほしい。なんかいい案あれば適当でもいいので教えて欲しい。
後ろ姿入れなくても8*3種類も必要なのは正直ダルイ。
できてるやつらはどういうアルゴリズム組み込んでるんだ?
ママンは安心して側を離れられる強い子に育ってほしい。なんかいい案あれば適当でもいいので教えて欲しい。
837 名前:ネトゲ廃人@名無し[sage] 投稿日:2006/09/03(日) 22:30:42
→836
ヒント: 共有メモリ
→836
ヒント: 共有メモリ
838 名前:ネトゲ廃人@名無し[sage] 投稿日:2006/09/03(日) 22:31:42
正直画像認識よりメモリ見た方が数十倍軽い上に高機能化できる
正直画像認識よりメモリ見た方が数十倍軽い上に高機能化できる
839 名前:ネトゲ廃人@名無し[sage] 投稿日:2006/09/03(日) 22:32:31
→836
マウスカーソルを調べるってのはどうだ?
もし顔だったらそれはキャラ
剣だったら敵
手だったらアイテム
→836
マウスカーソルを調べるってのはどうだ?
もし顔だったらそれはキャラ
剣だったら敵
手だったらアイテム
俺はそんな感じでBOT作ってる
841 名前:ネトゲ廃人@名無し[sage] 投稿日:2006/09/03(日) 22:33:59
→836
キャラの下に出るHPバーで認識
ペットはオプションから表示を消せるので問題ないが、HPが0に近いMOBは誤認する
→836
キャラの下に出るHPバーで認識
ペットはオプションから表示を消せるので問題ないが、HPが0に近いMOBは誤認する
842 名前:ネトゲ廃人@名無し[sage] 投稿日:2006/09/03(日) 22:37:03
→841
なるほど
カーソル調べるより早いな
→841
なるほど
カーソル調べるより早いな
MOB倒した判定はどうしてる?
敵のカーソル吸着設定利用しようと思ってるんだが
敵のカーソル吸着設定利用しようと思ってるんだが
845 名前:ネトゲ廃人@名無し[sage] 投稿日:2006/09/03(日) 22:47:05
DEF_DLL CloseHandle(HWND):BOOL:kernel32
DEF_DLL GetWindowThreadProcessId(HWND,var DWORD):DWORD:user32
DEF_DLL OpenProcess(DWORD,BOOL,DWORD):HWND:kernel32
DEF_DLL VirtualAllocEx(HWND,HWND,DWORD,DWORD,DWORD):DWORD:kernel32 //戻り値は変数で取得
DEF_DLL VirtualFreeEx(HWND,HWND,DWORD,DWORD):BOOL:kernel32
DEF_DLL ReadProcessMemory(HWND,DWORD,DWORD,DWORD):BOOL:kernel32
DEF_DLL CloseHandle(HWND):BOOL:kernel32
DEF_DLL GetWindowThreadProcessId(HWND,var DWORD):DWORD:user32
DEF_DLL OpenProcess(DWORD,BOOL,DWORD):HWND:kernel32
DEF_DLL VirtualAllocEx(HWND,HWND,DWORD,DWORD,DWORD):DWORD:kernel32 //戻り値は変数で取得
DEF_DLL VirtualFreeEx(HWND,HWND,DWORD,DWORD):BOOL:kernel32
DEF_DLL ReadProcessMemory(HWND,DWORD,DWORD,DWORD):BOOL:kernel32
Const MEM_COMMIT = $1000
Const MEM_RESERVE = $2000
Const MEM_RELEASE = $8000
Const PAGE_READWRITE = $4
Const PROCESS_VM_OPERATION = $8
Const PROCESS_VM_READ = $10
Const PROCESS_VM_WRITE = $20
Dim IdPro
Dim HndPro
Dim DwdMain
GetWindowThreadProcessId(HndMain,IdPro)
HndPro = OpenProcess(PROCESS_VM_OPERATION or PROCESS_VM_READ or PROCESS_VM_WRITE,False,IdPro)
DwdMain = VirtualAllocEx(HndPro,NULL,4096,MEM_RESERVE or MEM_COMMIT,PAGE_READWRITE)
VirtualFreeEx(HndPro, DwdMain, 0, MEM_RELEASE)
CloseHandle(HndPro)
Const MEM_RESERVE = $2000
Const MEM_RELEASE = $8000
Const PAGE_READWRITE = $4
Const PROCESS_VM_OPERATION = $8
Const PROCESS_VM_READ = $10
Const PROCESS_VM_WRITE = $20
Dim IdPro
Dim HndPro
Dim DwdMain
GetWindowThreadProcessId(HndMain,IdPro)
HndPro = OpenProcess(PROCESS_VM_OPERATION or PROCESS_VM_READ or PROCESS_VM_WRITE,False,IdPro)
DwdMain = VirtualAllocEx(HndPro,NULL,4096,MEM_RESERVE or MEM_COMMIT,PAGE_READWRITE)
VirtualFreeEx(HndPro, DwdMain, 0, MEM_RELEASE)
CloseHandle(HndPro)
850 名前:ネトゲ廃人@名無し[sage] 投稿日:2006/09/03(日) 22:59:29
→843-845
こんな感じで書いたんだが・・・ 俺も知識無くて挫折
→843-845
こんな感じで書いたんだが・・・ 俺も知識無くて挫折
DEF_DLL GetWindowThreadProcessId(HWND,Var long) :long :User32.dll
DEF_DLL OpenProcess(long,bool,long) :long :Kernel32.dll
DEF_DLL CloseHandle(long) :bool :Kernel32.dll
DEF_DLL ReadProcessMemory(long,long,Var long,long,Var long) :long :Kernel32.dll
DEF_DLL WriteProcessMemory(long,long,Var long,long,Var long) :long :Kernel32.dll
DEF_DLL PostMessageA(hwnd, uint, uint, uint): bool : user32.dll
DEF_DLL GetTickCount():DWord:Kernel32.dll
DEF_DLL OpenProcess(long,bool,long) :long :Kernel32.dll
DEF_DLL CloseHandle(long) :bool :Kernel32.dll
DEF_DLL ReadProcessMemory(long,long,Var long,long,Var long) :long :Kernel32.dll
DEF_DLL WriteProcessMemory(long,long,Var long,long,Var long) :long :Kernel32.dll
DEF_DLL PostMessageA(hwnd, uint, uint, uint): bool : user32.dll
DEF_DLL GetTickCount():DWord:Kernel32.dll
TW_PROC_ID=0
TW_WND_ID = GETID("Talesweaver", "D2MainWindow")
TW_WND_ID = GETID("Talesweaver", "D2MainWindow")
TW_WND=IDTOHND(TW_WND_ID)
TW_THREAD_ID=GETWINDOWTHREADPROCESSID(TW_WND, TW_PROC_ID)
TW_THREAD_ID=GETWINDOWTHREADPROCESSID(TW_WND, TW_PROC_ID)
851 名前:ネトゲ廃人@名無し[sage] 投稿日:2006/09/03(日) 23:05:49
→850
APIがよく分からんかったからテキトーにDWORSにしたぞw
→850
APIがよく分からんかったからテキトーにDWORSにしたぞw
857 名前:ネトゲ廃人@名無し[sage] 投稿日:2006/09/04(月) 05:07:56
共有メモリが書き換えられるようになったら、
あとは自分の座標が格納されてるメモリの中身を移動先の座標に書き換えればワープする
共有メモリが書き換えられるようになったら、
あとは自分の座標が格納されてるメモリの中身を移動先の座標に書き換えればワープする
858 名前:ネトゲ廃人@名無し[sage] 投稿日:2006/09/04(月) 09:39:07
流れ無視して、UWSCでステの読み込みのソース
peekcolorなんでマウス乗っかると誤認識
回避方法はあるけど、めんどくさくて未実装
誰かウマいことツカッテクレ
流れ無視して、UWSCでステの読み込みのソース
peekcolorなんでマウス乗っかると誤認識
回避方法はあるけど、めんどくさくて未実装
誰かウマいことツカッテクレ
function checkNum(x,y)
dim nc[11]
num = -1
nc[0] = peekcolor(x+5,y )
nc[1] = peekcolor(x+2,y+2)
nc[2] = peekcolor(x+1,y+8)
nc[3] = peekcolor(x+5,y+8)
nc[4] = peekcolor(x ,y+7)
nc[5] = peekcolor(x+2,y+6)
nc[6] = peekcolor(x+3,y+7)
nc[7] = peekcolor(x+1,y+5)
nc[8] = peekcolor(x+1,y+7)
nc[9] = peekcolor(x ,y+6)
nc[10] = peekcolor(x+1,y+6)
if nc[1]=$FFFFFF then num = 1
if nc[2]=$FFFFFF and nc[3]<>$FFFFFF then num = 2
if nc[5]=$FFFFFF and nc[1]<>$FFFFFF and nc[4]<>$FFFFFF then num = 3
if nc[3]=$FFFFFF then num = 4
if nc[7]=$FFFFFF then num = 5
if nc[10]=$FFFFFF and nc[9]=$FFFFFF then num = 6
if nc[6]=$FFFFFF then num = 7
if nc[5]=$FFFFFF and nc[4]=$FFFFFF then num = 8
if nc[8]=$FFFFFF and nc[9]=$FFFFFF then num = 9
if nc[9]=$FFFFFF and nc[4]=$FFFFFF and nc[10]<>$FFFFFF then num = 0
if nc[0]=$FFFFFF then num = 10
result = num
fend
dim nc[11]
num = -1
nc[0] = peekcolor(x+5,y )
nc[1] = peekcolor(x+2,y+2)
nc[2] = peekcolor(x+1,y+8)
nc[3] = peekcolor(x+5,y+8)
nc[4] = peekcolor(x ,y+7)
nc[5] = peekcolor(x+2,y+6)
nc[6] = peekcolor(x+3,y+7)
nc[7] = peekcolor(x+1,y+5)
nc[8] = peekcolor(x+1,y+7)
nc[9] = peekcolor(x ,y+6)
nc[10] = peekcolor(x+1,y+6)
if nc[1]=$FFFFFF then num = 1
if nc[2]=$FFFFFF and nc[3]<>$FFFFFF then num = 2
if nc[5]=$FFFFFF and nc[1]<>$FFFFFF and nc[4]<>$FFFFFF then num = 3
if nc[3]=$FFFFFF then num = 4
if nc[7]=$FFFFFF then num = 5
if nc[10]=$FFFFFF and nc[9]=$FFFFFF then num = 6
if nc[6]=$FFFFFF then num = 7
if nc[5]=$FFFFFF and nc[4]=$FFFFFF then num = 8
if nc[8]=$FFFFFF and nc[9]=$FFFFFF then num = 9
if nc[9]=$FFFFFF and nc[4]=$FFFFFF and nc[10]<>$FFFFFF then num = 0
if nc[0]=$FFFFFF then num = 10
result = num
fend
function checkPRM2(s)
SELECT s
CASE 0// HP
x = 62;y = 135
CASE 1// MP
x = 62;y = 149
CASE 2// SP
x = 62;y = 164
CASE 3// XP
x = 62;y = 178
DEFAULT// WT
x = 62;y = 199
SELEND
pp = -1
ifb STATUS( ID,ST_ACTIVE ) = true then
pp = 0 ; i = 0
p = checkNum(x,y)
while p<>-1 and i<=10 and p<>10
pp = pp*10+p
i = i + 1
p = checkNum(i*7+x,y)
wend
endif
result = pp
fend
SELECT s
CASE 0// HP
x = 62;y = 135
CASE 1// MP
x = 62;y = 149
CASE 2// SP
x = 62;y = 164
CASE 3// XP
x = 62;y = 178
DEFAULT// WT
x = 62;y = 199
SELEND
pp = -1
ifb STATUS( ID,ST_ACTIVE ) = true then
pp = 0 ; i = 0
p = checkNum(x,y)
while p<>-1 and i<=10 and p<>10
pp = pp*10+p
i = i + 1
p = checkNum(i*7+x,y)
wend
endif
result = pp
fend
862 名前:ネトゲ廃人@名無し[sage] 投稿日:2006/09/04(月) 10:24:41
蛇足ですが、→859をちょっと直してしまいました。
蛇足ですが、→859をちょっと直してしまいました。
if nc[1]=$FFFFFF then result = 1
if nc[2]=$FFFFFF and nc[3]<>$FFFFFF then result = 2
if nc[5]=$FFFFFF and nc[1]<>$FFFFFF and nc[4]<>$FFFFFF then result = 3
if nc[3]=$FFFFFF then result = 4
if nc[7]=$FFFFFF then result = 5
if nc[10]=$FFFFFF and nc[9]=$FFFFFF then result = 6
if nc[6]=$FFFFFF then result = 7
if nc[5]=$FFFFFF and nc[4]=$FFFFFF then result = 8
if nc[8]=$FFFFFF and nc[9]=$FFFFFF then result = 9
if nc[9]=$FFFFFF and nc[4]=$FFFFFF and nc[10]<>$FFFFFF then result = 0
if nc[0]=$FFFFFF then result = 10
result = -1
fend
if nc[2]=$FFFFFF and nc[3]<>$FFFFFF then result = 2
if nc[5]=$FFFFFF and nc[1]<>$FFFFFF and nc[4]<>$FFFFFF then result = 3
if nc[3]=$FFFFFF then result = 4
if nc[7]=$FFFFFF then result = 5
if nc[10]=$FFFFFF and nc[9]=$FFFFFF then result = 6
if nc[6]=$FFFFFF then result = 7
if nc[5]=$FFFFFF and nc[4]=$FFFFFF then result = 8
if nc[8]=$FFFFFF and nc[9]=$FFFFFF then result = 9
if nc[9]=$FFFFFF and nc[4]=$FFFFFF and nc[10]<>$FFFFFF then result = 0
if nc[0]=$FFFFFF then result = 10
result = -1
fend
で、if nc[0]=$FFFFFF then result = 10 がどのように作用するのかわからないのですが
どういった意図で作成されておられますでしょうか。
どういった意図で作成されておられますでしょうか。
863 名前:八百五十八[sage] 投稿日:2006/09/04(月) 10:39:16
あー、それは”/”の判定用
このソースは現在値しかヌケンけど、checkPRM2をちょっと書き換えれば
現在値、最大値がヌケルと思う
あー、それは”/”の判定用
このソースは現在値しかヌケンけど、checkPRM2をちょっと書き換えれば
現在値、最大値がヌケルと思う
自分でもオートハブ簡易版つくったけど、結局ゲージ判定で満足しちゃって
数値判断はやってない
参考なるかわからんけど、いる?
数値判断はやってない
参考なるかわからんけど、いる?
866 名前:八百五十八[sage] 投稿日:2006/09/04(月) 12:33:01
→864
最大値からマイナスなんぼとかってのもある
できるだけHPをMAXにしたいときとかにつかえるな
→864
最大値からマイナスなんぼとかってのもある
できるだけHPをMAXにしたいときとかにつかえるな
ゲージ判定部分を貼ってみる
function checkPRM(s)
SELECT s
CASE 0// HP
x = 107;y = 30
CASE 1// MP
x = 117;y = 45
DEFAULT// SP
x = 127;y = 60
SELEND
i = -1
ifb STATUS( ID,ST_ACTIVE ) = true then
i = 10
while PEEKCOLOR( x+((i-1)*4),y )=$100000 or i = 0
i = i -1
wend
endif
result = i
fend
SELECT s
CASE 0// HP
x = 107;y = 30
CASE 1// MP
x = 117;y = 45
DEFAULT// SP
x = 127;y = 60
SELEND
i = -1
ifb STATUS( ID,ST_ACTIVE ) = true then
i = 10
while PEEKCOLOR( x+((i-1)*4),y )=$100000 or i = 0
i = i -1
wend
endif
result = i
fend
871 名前:ネトゲ廃人@名無し[sage] 投稿日:2006/09/04(月) 13:19:51
→858
色で数字認識とは賢いな GJ!
俺が作ったのは、画像での数字認識
0~9までの画像を用意しないといけなかったし効率悪かった
→858
色で数字認識とは賢いな GJ!
俺が作ったのは、画像での数字認識
0~9までの画像を用意しないといけなかったし効率悪かった
- XPの部分だけ抜粋
xp=0
for b = 0 to 5 step 1
for a = 9 to 0 step -1
ifb chkimg("number\" + a +".bmp" ,1 ,61+7*b ,179 ,68+7*b ,190) then
xp = xp * 10 + a
break
endif
next
next
print "XP=" + xp
for b = 0 to 5 step 1
for a = 9 to 0 step -1
ifb chkimg("number\" + a +".bmp" ,1 ,61+7*b ,179 ,68+7*b ,190) then
xp = xp * 10 + a
break
endif
next
next
print "XP=" + xp
874 名前:八百五十八[sage] 投稿日:2006/09/04(月) 14:00:52
検証シテミタ
ゲージ:HP
0:0%
1:0~19%
2:20~29%
3:30~39%
・
・
・
9:90~99%
10:100%
ぽい
検証シテミタ
ゲージ:HP
0:0%
1:0~19%
2:20~29%
3:30~39%
・
・
・
9:90~99%
10:100%
ぽい
876 名前:ネトゲ廃人@名無し[sage] 投稿日:2006/09/04(月) 17:57:35
→874
画像は透過してチェックできるから結構簡単だ
HP、MP取得専用のUWSC作って外部呼出し専用にしたら楽そうだな
→874
画像は透過してチェックできるから結構簡単だ
HP、MP取得専用のUWSC作って外部呼出し専用にしたら楽そうだな
877 名前:ネトゲ廃人@名無し[sage] 投稿日:2006/09/04(月) 18:39:10
→871で使っていたHP,MP,XP取得用の数字画像詰め合わせ(0~9.bmp+数字.psd)
使うときは左上(赤色)を透過色設定してください。
http://2sen.dip.jp:81/cgi-bin/up/source/up2279.zip
→871で使っていたHP,MP,XP取得用の数字画像詰め合わせ(0~9.bmp+数字.psd)
使うときは左上(赤色)を透過色設定してください。
http://2sen.dip.jp:81/cgi-bin/up/source/up2279.zip
879 名前:ネトゲ廃人@名無し[sage] 投稿日:2006/09/04(月) 19:09:14
<豆知識>
ステの数字なら MSゴシック11ポイント
アイテム名なら MSゴシック9ポイント
テキストエディタに書きこんでスクリーンショット
or MSペイントで文字入力すると
レアアイテムなんかの名前も作れる
<豆知識>
ステの数字なら MSゴシック11ポイント
アイテム名なら MSゴシック9ポイント
テキストエディタに書きこんでスクリーンショット
or MSペイントで文字入力すると
レアアイテムなんかの名前も作れる
883 名前:八百五十八[sage] 投稿日:2006/09/04(月) 19:54:07
→862
変数じゃないな==;
要はCALLで呼び出した場合戻り値を受けれるの?ってこと
HELP見る限りじゃできないけど、どうなんかな?
→862
変数じゃないな==;
要はCALLで呼び出した場合戻り値を受けれるの?ってこと
HELP見る限りじゃできないけど、どうなんかな?
886 名前:ネトゲ廃人@名無し[sage] 投稿日:2006/09/04(月) 20:09:11
→883
へ?CALLって要するにファイルのインポートですよ。
CALLで呼び出すUWSファイルには
関数だけを記述しておいて、冒頭でCALLしておけば
あとは関数を呼び出したらその関数の戻り値を受けることができますよ。
→883
へ?CALLって要するにファイルのインポートですよ。
CALLで呼び出すUWSファイルには
関数だけを記述しておいて、冒頭でCALLしておけば
あとは関数を呼び出したらその関数の戻り値を受けることができますよ。
また、publicな変数に関しても、
変数の宣言位置をCALLの位置より前に設定しておけば問題なく使えます。
A.UWSファイルで宣言したpublicな変数も、B.UWSファイルで使えると思います。
ただしCALLの順番はA→Bの順番じゃないと変な動きになるかもしれませんが。
変数の宣言位置をCALLの位置より前に設定しておけば問題なく使えます。
A.UWSファイルで宣言したpublicな変数も、B.UWSファイルで使えると思います。
ただしCALLの順番はA→Bの順番じゃないと変な動きになるかもしれませんが。
個人的には、むしろ各ライブラリ同士で変数名がカブっていた場合
おかしな動きをするんじゃないかと、そっちのほうが気になります。
おかしな動きをするんじゃないかと、そっちのほうが気になります。
887 名前:ネトゲ廃人@名無し[sage] 投稿日:2006/09/04(月) 20:16:22
あー手続き型だからインクルードって言うべきかもしれないな。
スレッドの宣言くらいしか、インクルードで使う意味って無いんじゃないのかと思うけど。
あー手続き型だからインクルードって言うべきかもしれないな。
スレッドの宣言くらいしか、インクルードで使う意味って無いんじゃないのかと思うけど。
891 名前:ネトゲ廃人@名無し[sage] 投稿日:2006/09/04(月) 20:34:25
→889
ヒント PosACCではDrawTextで書かれた文字は取得できないが、書かれる瞬間に取得できる。
→889
ヒント PosACCではDrawTextで書かれた文字は取得できないが、書かれる瞬間に取得できる。
900 名前:ネトゲ廃人@名無し[sage] 投稿日:2006/09/04(月) 22:38:56
→891 →894
この方法って タイミングシビアじゃない?
sleep(0.01)でLoopして、APIをトラップしてみたけど
取りこぼしが結構あるような気がする。
→891 →894
この方法って タイミングシビアじゃない?
sleep(0.01)でLoopして、APIをトラップしてみたけど
取りこぼしが結構あるような気がする。
908 名前:ネトゲ廃人@名無し[sage] 投稿日:2006/09/05(火) 00:10:18
→905
これ動かしてみ
id = GETID("Talesweaver")
While !GetKeyState(VK_ESC)
x = G_MOUSE_X; y = G_MOUSE_Y // マウス位置
ofx = x - STATUS(id, ST_CLX) // 相対位置
ofy = y - STATUS(id, ST_CLY)
if GetKeyState(VK_SHIFT) then print PosACC(id, ofx, ofy,ACC_API)
Sleep(0.01)
Wend
→905
これ動かしてみ
id = GETID("Talesweaver")
While !GetKeyState(VK_ESC)
x = G_MOUSE_X; y = G_MOUSE_Y // マウス位置
ofx = x - STATUS(id, ST_CLX) // 相対位置
ofy = y - STATUS(id, ST_CLY)
if GetKeyState(VK_SHIFT) then print PosACC(id, ofx, ofy,ACC_API)
Sleep(0.01)
Wend
930 名前:836=843[sage] 投稿日:2006/09/05(火) 05:28:31
→908 マジサンクス!
動かし方は流石にわかったものの、マウスの相対位置って意味ないような気がする。
画面上で動きのあったものの座標と左のマップ番号みたいな奴を取得してるな。
はじめは左の番号がMOBと自分で違ったように見えてこれで完成すると激しく興奮したが、
また見てみるとMOBと同じになってた。激しくぬか喜びしたアホな俺。
でも、これを読んで自分の座標書き換えられたらナヤ軍団みたいなワープするBOTが作れるな。
→908 マジサンクス!
動かし方は流石にわかったものの、マウスの相対位置って意味ないような気がする。
画面上で動きのあったものの座標と左のマップ番号みたいな奴を取得してるな。
はじめは左の番号がMOBと自分で違ったように見えてこれで完成すると激しく興奮したが、
また見てみるとMOBと同じになってた。激しくぬか喜びしたアホな俺。
でも、これを読んで自分の座標書き換えられたらナヤ軍団みたいなワープするBOTが作れるな。
961 名前:908[sage] 投稿日:2006/09/05(火) 13:21:24
→930
提供しているコードだけでは、どうにもならないから。
あくまでもヒントの提示であって、努力しない人にとって、このコードは無意味かと。
836=843氏がコードを見てありがたいと思うのは、自分で努力をして
提示された物を理解しようとしているからじゃないのかな?
→930
提供しているコードだけでは、どうにもならないから。
あくまでもヒントの提示であって、努力しない人にとって、このコードは無意味かと。
836=843氏がコードを見てありがたいと思うのは、自分で努力をして
提示された物を理解しようとしているからじゃないのかな?
自分の座標の表示位置は固定なので画像認識で取得可能
敵の座標は自分からの相対座標で計算可能かと考えているんだけどどうだろう?
(TW座標系はX-Y垂直から、反時計回りに30度回転でしたよね?)
敵の座標は自分からの相対座標で計算可能かと考えているんだけどどうだろう?
(TW座標系はX-Y垂直から、反時計回りに30度回転でしたよね?)
メモリから直接データを読めれば、全て簡単に解決するのでしょうが、
俺も勉強はしているけどまだメモリを直接いじれない程度のミジンコなので・・・
俺も勉強はしているけどまだメモリを直接いじれない程度のミジンコなので・・・