X



UWSC初心者用スレ
■ このスレッドは過去ログ倉庫に格納されています
0008デフォルトの名無しさん
垢版 |
2018/09/24(月) 14:22:22.29ID:+VppQ0pu
改めて

nox(最新)でゲームを自動化しようとしてるのですが、マウスクリックなどの操作を受け付けてくれないですし、記録する時も記録出来ません。
何かやり方あるのでしょうか

あとchromeで裏マクロ作ろうとしてますが画像認識してくれません
試しにsaveimgでid クロームのハンドル webglのハンドルでそれぞれ確認したら
webglハンドルはブラウザフレームだけ取得して中身の画面は真っ黒 他はそもそも現在の画面しか取り込んでくれてないです。
よろしくお願いします
0010デフォルトの名無しさん
垢版 |
2018/09/24(月) 17:38:14.77ID:ZwyUHgZx
>>8
noxは直接クリックはできないのでadb使う
向こうのスレに参考スクリプトはあるしググれば出てくる
記録はできないが、単純操作ならnoxのスクリプトレコード使うか、座標系の元値としてだけ使ってもいいかも?
やろうと思えば変換も出来そうだけどね

Chromeはウインドウ指定で使うにはかなり難しい
過去スレを頑張って読むか諦めた方がいい
0017デフォルトの名無しさん
垢版 |
2018/09/25(火) 19:02:27.87ID:qc/hnwWX
ありがとうございます
とりあえずfirefox系列ならバックグラウンドで画像確認とか出来たのでこちらをベースにします
0018デフォルトの名無しさん
垢版 |
2018/09/25(火) 19:16:03.81ID:GnoTTlW7
>>1
>UWSC初心者用スレ

ここはプログラム板なんだから
初心者用スレがソフト板で
スクリプトを書きまくるスレが
こっちにある方が自然な住み分けだと思う

まあ住民視線だと
隔離で他板に飛ばす方が良いんだろうけど

なおスクリプトを書く方が偉いみたいな
思想で言っている訳ではない
利便性で言っているだけ
0020デフォルトの名無しさん
垢版 |
2018/09/26(水) 00:29:25.56ID:Mnfitxfv
まあ細かいことはええやろ
向こうはUWSCというソフト全般の話する所
こっちはUWSC初心者がプログラムの話する所
とか適当に建前言っとけば問題ない
0021デフォルトの名無しさん
垢版 |
2018/09/30(日) 21:33:27.14ID:C+d3VFtL
すみません
上に書いてあるadbって何の事ですか
0023デフォルトの名無しさん
垢版 |
2018/10/01(月) 14:21:00.29ID:cVCKaASP
検索促すだけじゃあっちと変わらんやん(笑)
調べりゃわかることでも懇切丁寧に教えてやるためにスレ建てたんじゃなかったの?(笑)
0026デフォルトの名無しさん
垢版 |
2018/10/01(月) 15:08:39.88ID:Gm5J3aUY
いや真面目な話、検索しろじゃあっちと変わらなくね?
このスレなんのために立てたの?
0028デフォルトの名無しさん
垢版 |
2018/10/01(月) 19:50:08.00ID:Fhb8wAZ6
ウィンドウ上の定点を監視するために、saveimg(,gid) で
クリップボードにキャプチャした画像の PeekColor(x, y,,TRUE) を取ってるんですが、時々 -1 が返ってくる。
うまく判定できていないのだろうと思って、PeekColor(x, y,COL_R,TRUE) もとってみたけど、こちらは時々 0 が返ってくる。

定点の仕様として、R が 0 にはならないのだけれど、何らかの例外がある場合、-1 や 0 を返す仕様でしょうか?

切り分けとして、-1 や 0 が返ってきたときのキャプチャを保存して確認してみたけど、色がついている(R も存在)しているので
対応指針が決まりません。

どのような時に、-1 や特殊な(?)0 が返ってくるのかどなたかご存知でしょうか?
0029デフォルトの名無しさん
垢版 |
2018/10/01(月) 20:13:15.44ID:AvNlBg/g
>>28
その異常値が返ってきたときのキャプチャをPeekColorかけるとやはり異常値返ってくるので?

返ってくる場合は画像よく見て分析するしかないかも
返ってこない場合は非同期でグローバル領域共有しておかしなことになってないか確認する

懸念として異常発生時のキャプチャが取れてるのかは疑問だけど…(描画乱れがランダムに起こってるんだとしたら判定後に撮っても遅い)
後は異常時にタイムスタンプ付きでログ出して周期的なものか、そのタイミング何か重い処理してないかなどを分析する
0030デフォルトの名無しさん
垢版 |
2018/10/01(月) 20:26:28.02ID:Fhb8wAZ6
>>29
キャプチャした内容(クリップボードに取り込んでた内容)を peekColor かけても、問題ないんですよねぇ。
グローバル領域かぁ。。。分からんw

> 懸念として異常発生時のキャプチャが取れてるのかは疑問だけど…
この辺の切り分けができるように、クリップボード使用してたんですけど、分からんねぇ。困った^^;

もうちょっと調べてみます。ありがと。
0031デフォルトの名無しさん
垢版 |
2018/10/01(月) 21:06:45.73ID:k8diFUao
>>26
検索しろでも懇切丁寧に教えてあげるのでも好きにすりゃいいんじゃねぇの
そういう所に変にこだわって肝心のuwscの話から脱線するのがウザくて離れたんだから
0032デフォルトの名無しさん
垢版 |
2018/10/01(月) 21:54:24.74ID:SSJgbJ3B
>>29
そもそもクリップボードから取得って確実性あんの?
他で使ってる可能性は?入っているデータ型は都度確認してる?
あんま賢いやり方とは思えないが
0036デフォルトの名無しさん
垢版 |
2018/10/03(水) 19:21:37.26ID:srylDUsH
すみません
While !chkimg("gazou",0,,,,,,IMG_MSK_BGR4)
BTN(LEFT,CLICK,G_IMG_X,G_IMG_Y)
ifb SLEEP(10) then
break
endif
WEND

と書いて10秒待っても画像が無かったらループを脱出させようとしたのですが脱出できません

サンプルでは

while true
fukidasi ("ENDキーで終了",100,100)
ifb getkeystate(vk_end) then
break
endif
wend
とエンドキー押せば止まるのでこれを真似てみたのですが
よかったら分かるかたいませんでしょうか?
よろしくお願いします。
0037デフォルトの名無しさん
垢版 |
2018/10/03(水) 19:57:21.83ID:yx3nQSMn
start = gettime()
While gettime() - start < 10
if chkimg("gazou",0,,,,,,IMG_MSK_BGR4)
BTN(LEFT,CLICK,G_IMG_X,G_IMG_Y)
break
endif
WEND
0038デフォルトの名無しさん
垢版 |
2018/10/03(水) 20:00:22.12ID:KtepAYQT
if/ifbの次には真偽値を置く
今のコードだとタイマーが置かれてて意味がわからないので無視されている
0042デフォルトの名無しさん
垢版 |
2018/10/13(土) 16:29:34.71ID:0Iqx+GXq
友人のために作成したスクリプトで、おかしな挙動が出ています。
ACW(gid,0,0,,)
として、左上隅にウィンドウを移動させ、そこを基点に特定座標の色を拾うスクリプトを書きました。
が、時々拾えなくなると言われ、切り分けのために色を拾うタイミングで、キャプチャを実施しました。
キャプチャ結果を見ると、時々、ウィンドウが移動しているように見受けられます。

友人の操作を疑っているのですが、触っていないと言われ、原因を探っています。

ACW 以外に、ウィンドウを動かす事に注意しなければならない関数は存在しますか?

昼飯で引き受けたのですが、ずいぶん高くついてしまっています。
ヒントでもあれば教えてください。
0043デフォルトの名無しさん
垢版 |
2018/10/13(土) 20:36:39.68ID:M9OwAK6A
>>42
情報が少なすぎて何とも言えないが…まず、どう動くの? 
その場所からいなくなるという意味ではCTRLWINでもBTNでも犯人になり得るがそういう話し?

対策は面倒ならしつこくACWするか、根本対応としてMOUSEORG使うかってところが今のところ浮かぶけど
もうちょっと差し支えない範囲でコードの中身見ないと分からんことが多すぎるよ
004542
垢版 |
2018/10/13(土) 21:50:49.06ID:0Iqx+GXq
定点観測して、ログを吐き出すスクリプトなんで、ざっくりというと以下な感じ。
・ウィンドウを左上に移動
・特定座標の色を変数として記憶
・記憶した色のパターンが特定の条件に合致すれば、ログに出力

キーボード操作も、マウス操作も無くて、処理としては色の監視とその条件用の演算と出力です。

元のスクリプトを簡潔にして画面キャプチャのために作成した切り分けのためのスクリプトから
更に演算処理を全部抜くと

OPTION EXPLICIT, TOPSTOPFORM
OPTION LOGFILE = 3
OPTION LOGPATH = ".\"
logprint(TRUE)
dim gid = getid("hoge")
ACW(gid,0,0,WINDOW_SIZEx,WINDOW_SIZEy)
for id = 0 to 11
FUKIDASI(x+","+y x, y)
saveimg("debug_"+ (id) + ".bmp",gid,,,,,,,IMG_FORE)
print x+","+y
sleep(2)
next

こんな感じ。saveimg してるところで、本来は色の識別してます。
この FUKIDASI の位置が、キャプチャ画面上でずれるんです。。。

手元の PC だと再現しないんですよねぇ^^;
なにか怪しい箇所があれば、ぜひ教えてください。
0047デフォルトの名無しさん
垢版 |
2018/10/13(土) 23:55:44.28ID:M9OwAK6A
>>45
で、結局どう動くの?

ワープしてデスクトップから消え失せるの? 超高速で縦横無尽に動き回るの?
0048デフォルトの名無しさん
垢版 |
2018/10/14(日) 00:39:58.87ID:TOccAP8t
>>45
昨日もうひとつのUWSCスレでふきだしの話してた人?

FUKIDASIのxとyってどうやって算出してるの?
元のスクリプトのほうでループのなかでxとyの値が更新されて
FUKIDASIの位置が変わってるんじゃないの?
それ以外吹き出しが動く要素がなさそうにおもうんだけど
それとUWSC以外を疑うなら画面全体を動画キャプチャしたら?
004945
垢版 |
2018/10/14(日) 07:47:15.28ID:pryZUL3Y
もう一つの方の人とは別です。くちばしの形状は気にしてないんでw

FUKIDASI の xy は色識別の座標です。
画面にタイル状に並んだ画像の位置情報を算出してます。
イメージとしては、ブラウザ上に同じフォーマットの画像が12個並んでいて、その特定座標の色を抜き出している感じです。
12箇所の基点座標の割り出しと、それに追加する相対座標を追加する計算をしています。
で、ぞの位置がずれていないか、FUKIDASI 出してざっくり位置確認をしたんですが、
ループの中で撮った12枚の画像で、FUKIDASI が本来の位置に無いものがある。
何度か取り直してもらったんですが、都度少しづつズレるんです。
ズレは、ちゃんと計測してないけど、xy それぞれの方向に 1 から 5 px 程度。
ループ中全部ズレるんではなくて、途中でズレるとか、最初にズレてそのままとか。
今の所、ループ内で複数回ズレた事は観測できてません(まぁ試行回数もそれほど多くないですけど)

IMG_FORE なんで、「stop ボタン」も写り込んでるんですが、そっちもズレるんでウィンドウが動いてるって判断してます。
まぁ、何が起きてるか全然分からんので、次の切り分けでは、画面全体のキャプチャ撮ろうとは思っていますが。。。
UWSC 以外は今の所疑ってませんでした。ちょっと方法を考えてみます。
0050デフォルトの名無しさん
垢版 |
2018/10/14(日) 07:48:36.02ID:pryZUL3Y
>>46
怪しいよねぇ^^;
リモートで接続させろって言ってるんだけど、見られたくないそうで。。。
めんどいwww
0051デフォルトの名無しさん
垢版 |
2018/10/14(日) 10:17:34.99ID:TOccAP8t
>>49
>>45では FUKIDASI の位置が、キャプチャ画面上でずれるんです。。。と言ってるのに
>>49ではウィンドウが動いてるって判断してますと言ってるし結局何がずれてんの?

ずれが1〜5pxなら人間が動かしてるとは考えづらい
そうするとスクリプトの座標部分が変化してるんじゃないかと疑うんだけど
肝心の座標を算出するスクリプトが書かれてないからなんとも言えない

なので要領を得ないから提案としては
fukidasiなりpeekcolorに使うxとyを定数で定義
ウィンドウとfukidasiの座標を監視して変化を検知したらログに残して
ACWで元の位置に戻してからpeekcolorを実行するようにしてはどうだろう
005249
垢版 |
2018/10/14(日) 11:26:33.14ID:pryZUL3Y
ウィンドウが動いてるんで、座標指定して表示している FUKIDASI がキャプチャ上でズレているって事です。
FUKIDASI には座標を表示しているので、FUKIDASI の座標と計算は正しいと思う。

移動を監視するのが良さそうですね。
ありがとう!
0053デフォルトの名無しさん
垢版 |
2018/10/14(日) 15:51:35.35ID:flalwaHT
>>49
えーと、fukidasiもデバッグ用ということ?

>>43でも書いたけどウインドウ基準で相対位置決められるならMOUSEORG使えばって感じなんだけどなんかダメな要件があるので?
0054デフォルトの名無しさん
垢版 |
2018/10/14(日) 16:45:43.47ID:pryZUL3Y
FUKIDASI はデバッグ用途ですね。
元々原因不明な色の抽出がうまくいかないことがあったんで、切り分けの一環として採用しています。
そのおかげで、ウィンドウが少し移動していることが判明しました。

MOUSEORG はあまり使用したくないって程度の理由で採用してません。
今回みたいに原因不明の時に人を疑いたくなるんで、できるだけ人の操作から切り離して実行しようかと。
0055デフォルトの名無しさん
垢版 |
2018/10/14(日) 21:22:37.96ID:flalwaHT
>>54
よく分からないけど使う側を信用できないなら、なおさら動かされてもリカバリできるようにするものでは?

てかウインドウが動く原因は実のところ色々ある(UWSC外)
・画面の解像度変更、最大化以外の手段でフルスクリーン、パワポのプレビュー
・タブレットなら縦横動かした時
・デスクトップのウインドウテーマ変更
・グラボのドライバアップデート
これをやってないか、やったらいかんとか再起動せよと友人に言い含めるのとスクリプトで対策するのはどっちが楽?
(まぁ一部は再起動した方がいいと思うが)
まぁやりたくないならどうぞご自由に、自分からは特に強制するつもりはないのでね
0056デフォルトの名無しさん
垢版 |
2018/10/14(日) 23:41:27.00ID:bd+C6J+S
質問です

(1)画像1を認識したらスタートして画像4をクリックするマクロA
(2)画像2を認識したらスタートして画像2をクリックするマクロB
(3)画像3を認識したらスタートする画像3をクリックするマクロC
(画像1〜3が同時に表示されることはなく、全てのマクロを常に起動しておきたい)
このようなプログラムを作成したいのですが、お知恵を貸してください

ttps://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q11135040611
ここを参考に作成してみたのですが、(1)のマクロしか動作してくれません
https://i.imgur.com/0G5273Y.jpg
0058デフォルトの名無しさん
垢版 |
2018/10/15(月) 02:43:39.99ID:9JA9/qag
たしかに1.bmpの1行とENDIFの1つを消したら2と3(4の画像が出たら4も)が動作しました

あとは添付の画像のように修正してみました
一見無事に動作しているのですがループが早すぎて気づいていないだけ…?
https://i.imgur.com/mnpJfXM.jpg
0059デフォルトの名無しさん
垢版 |
2018/10/17(水) 01:08:31.52ID:rmV2ISLZ
CALLでの呼び出しについて教えてください

「マクロ1→マクロ2」の場合、マクロ2がループしていたらマクロ1に戻りませんよね?
いまはマクロ2の最後にマクロ1に戻るようにCALLを使用して、
「マクロ1→マクロ2→マクロ1」という処理にして動作させているのですが、
「マクロ1→マクロ2→マクロ1」の他に「マクロ3→マクロ2→マクロ3」や
「マクロ4→マクロ2→マクロ4」というように、呼び出し元に戻すにはどうすれば良いのでしょうか
それとも「マクロ1→マクロ2-1→マクロ1」、「マクロ3→マクロ2-3→マクロ3」のように別に作らないといけないのでしょうか
0061デフォルトの名無しさん
垢版 |
2018/10/17(水) 05:11:55.48ID:UKmGEDWi
>>59
>マクロ2の最後にマクロ1に戻るようにCALL
勝手に呼び出し元に戻るのでCALLはいらない

というかCALLは本来インポート/インクルードに近いもので関数のように再利用するものじゃない
処理をまとめて関数化するように、関数群をまとめたファイルをCALLすることで後は好きなように関数呼び出しが出来るようになる
その際関数化してない部分がcall時に実行されるから外部スクリプトの呼び出しのように使うことができるというだけ

a.uws
public INT_A
INT_A = 1

function A()
INT_A = INT_A + 1
fend
----
main.uws
call a.uws // <-a.uwsc全体が読み込まれINT_Aの宣言と初期化だけ行われ終了する(関数化部分は自動では実行されない)

A() // <-a.uws内の関数はmain.uws内で作ったのと同じようにいつでも使える
print(INT_A) // 同様にa.uws内のpublic変数は自由にアクセスできる(G_IMG_Xみたいに)
----

仮にA()の中でループ処理をしていて抜けたい場合は単にEXITで関数を終了すればいいだけのこと
0062デフォルトの名無しさん
垢版 |
2018/10/17(水) 22:56:42.50ID:rmV2ISLZ
>>61
ありがとうございます
メインを作って各パターン毎にCALLで呼び出す…って形でしょうか

ゲームでマクロを勉強しているのですが、添付した画像のようなプログラムを作成してみました
宝箱の位置は固定ですがそれぞれクリックする場所が異なるため、このような記述にしてみました
問題なく動作はするのですが、
これだとひとつのuwsで行う処理が多すぎて実行されるのにタイムラグが発生してしまいます
何か良い改善策がありましたら教えてください


https://i.imgur.com/0G5273Y.jpg
0064デフォルトの名無しさん
垢版 |
2018/10/17(水) 23:42:45.42ID:hVOihSbt
>>63
そじゃない、そういうことじゃねぇんだよ兄ちゃん・・・
UWSCの場合、CALLはメインスクリプトだかの先頭辺りに列挙しておく。

CALL 戦闘開始.uws // 関数「戦闘開始」を定義
CALL 戦闘終了.uws // 関数「戦闘終了」を定義
CALL 回復.uws // 関数「回復」を定義


という風にな。
CALLで参照するスクリプトは最低限、必要な変数や関数定義にとどめておく。
ちょうど他の言語で言うライブラリやモジュールの役割に当たる。

これでスクリプト全部がオンメモリにロードされる。
後は、メインスクリプトで定義した戦闘開始()、戦闘終了()、回復()を好きなように呼べ。
IFの中でCALLは使わない。

WHILE TRUE
 IF CHKIMG(略
  戦闘開始()
 ENDIF
 :
0065デフォルトの名無しさん
垢版 |
2018/10/18(木) 06:45:36.30ID:9W5rJRye
CALLってそういう意味だったんですね…
今回の添付した画像のような感じであっていますか?
FUNCTIONはRESULTがどうたらこうたら出てきたのと>>61がまだ理解できなくて手こずってます

https://i.imgur.com/yikcDln.jpg
0066デフォルトの名無しさん
垢版 |
2018/10/18(木) 08:54:31.37ID:Dp9NcRGV
まあ、要するにcallの位置にファイルの中身を丸ごとペーストするだけだからね
合っているかはまず期待通りに動いたのか、君にしかわからない
理解できないとか手こずってるとか言われても困る
こう書いたら何が起きた、期待通りにならない、こうしたいと具体的に書いてくれ
そして出来ればコードはコピペしてくれ、画像貼られても見にくいしこっちで動かせねーから
ついでに言えばいつか消えるので後から見る人の参考にならない
(差し支えない範囲である程度簡略化して実際に動くのが望ましい)

あと理解出来てないままいきなり組み込まない、問題が複雑化するよ
簡単なコードでfunctionの機能だけ、callの機能だけまずは確認しよう
その際、最初はchkimgみたいな特殊な動作する関数は使わない方がいい
(動かなくてこれ変ですかって書き込まれても画像や操作対象がないと再現できないから)

まあ、長々書いてしまったけどプログラム初心者なら躓くのは普通なので色々試してくれ
0067デフォルトの名無しさん
垢版 |
2018/10/19(金) 02:45:04.72ID:TPvM9BLe
前回コードを記載して書き込みしたら、エラーが出て書き込めなかったので画像でアップしてました
zipにしてアップしてみました
ttps://17.gigafile.nu/1118-c64d3df20a4c37dbcd375a2808db916f7

実際>>63でも期待通りの動作はしており、CALLの指摘を受けて改めて>>65のように修正しても期待通りの動作はしています
個人的に現状で残る問題はメイン.uwsでループする箇所が多すぎて
>>65で言うと戦闘開始.bmpが表示されてるのに画像認識が遅れてしまうという点です
1つのuwsに全てを詰め込んでいたので遅れが出てしまうのかと思い
CALLを知ったのですが、結局これでも遅れることに変わりがなかったです

ただ>>61の記載されたように、戦闘開始.uwsの方に
FUNCTION 戦闘開始
目的の処理
FEND
として、メインを動かしたら「戦闘開始.uwsにRESULTが無い」とポップアップが出てきて動作がスタートしませんでした
そこで
PROCEDURE 戦闘開始
目的の処理
FEND
にしてみたら期待通りの動作はしているのですが、違いがわからずこれで問題ないのだろうか?ということでした
0068デフォルトの名無しさん
垢版 |
2018/10/19(金) 09:01:05.68ID:tiAvbHs0
つまり今の問題は
・スクリプトの動作が遅い(遅く感じる)
・functionとprocedureの違いが分からない
の二点ってことね

一つ目の問題はループ内でifを独立させているせいで、毎回頭から最後まで全てのif条件が働いている
つまり同時には一つしかヒットしないのに律儀に全部の画像を判定しようとして空振りしてので遅くなっている

対策は一つ目をifb、次以降をelseifにして最初のifbのブロック内に収める
そうするとn個目の処理した後、以後のifは飛ばす構造になる(そしてwhileでまた最初から判定)

##ifとifbの違いや動作を理解しよう##

応用としては頻出するものを最初に持ってきた方がトータルではやや早い

ただし結局はifbブロック内に大量にelseifでのchkimgがある時点で遅くなっていく
これはそもそもゲーム構造的に同時に判定すべきでないものを全て詰め込んでいるせい
簡単に言うとタイトル画面で戦闘開始の判定をしても意味がないしクエスト画面でタイトル画面のログインボタンの判定をしても意味がないよね

これも対策は出来るが長くなるのでヒントだけ
・まずはシーン(タイトル、クエストなど)を判定する為のメインループを作る
・各シーンごとの操作(画像認識)をまとめてループにする

ループ内というかifbブロック内になるべく空振りさせないように構造化させるのがポイント
これでも遅く感じる場合には、シーン内の画像認識をifbによる順次処理ではなく、スレッドによる並列処理にする必要がある
が、まあそれはまたやってみて遅いとか、スレッドやってみて詰まったら質問してくれ

次にfunctionとprocedureだけどこれは単に>>61では適当に構造のイメージで書いたのでresult書き忘れてるだけ
余計な混乱させてしまったなら悪いけど、正直に言えばそんなことで詰まるとは思いもしなかった…マニュアルとか見てる??
で、resultが何なのかはヘルプなりGoogle先生に聞いてもらうとして、多分懸念してる動作速度はどっちでも大差ない
0069デフォルトの名無しさん
垢版 |
2018/10/19(金) 13:46:23.05ID:qHVv99vL
>>67
スクリプト見たんだけどCHKIMGとCHKIMGXが混在してるのはこの通りであってるの?

>>67の切り分けによると戦闘開始関数だけで時間が掛かってるってことだよね
どこで処理に時間が掛かってるかGETTIMEで計測したらどうか?
たぶんCHKIMGかCHKIMGXだとおもうんだけど
まずは戦闘開始.bmpが表示されたらPrintでなにか表示させるとかして
処理を小さく区切って満足行く結果が出たら次の処理につなげてという風に
問題を細かく見てったほうがいい
そこがクリアされてるなら
「戦闘開始.bmpが表示されてるのに画像認識が遅れてしまう」こんなことにはならない

まず戦闘開始だけを満足に動かすことを考えたほうがいい
0070デフォルトの名無しさん
垢版 |
2018/10/19(金) 17:35:14.14ID:TPvM9BLe
>>68
つい先日マクロについて知って、下記のHPを読みながら1つの問題が解決したら都度次へって感じでやってます
ttps://qiita.com/macro_no_deshi/items/dd3b3405123bad0cfe4a
まずゲーム内のどこでマクロに任せるべきなのかからスタートしてるのと、
プログラミングの知識がないので手探りになってしまっているのは申し訳ないです

>同時に判定すべきでないものを全て詰め込んでいるせい
ここは理解しているのですが、どこでどう判定させて区切るべきかわからずぐちゃぐちゃになってるのだと思います
・ダンジョン1で歩いて宝箱を回収していく
・ダンジョン1で歩き回れば敵と遭遇し戦闘が開始される
・戦闘が終わればリザルトがある
以上のようにダンジョン1で宝箱を探している間に敵は出てくるので戦闘開始と戦闘終了は必要なので、メイン.uwsの記述があのようになりました

(1)ダンジョン1を宝箱を回収しながら自動で踏破
(2)途中で敵に遭遇したら自動で戦闘開始、戦闘を終えたら(1)の続きに戻る
ちなみに最終的にはこのようにできれば良いなと思ってはいるんですが、まだまだ遠い未来です…

>>69
CHKIMGとCHKIMGXが混在しているのは、CHKIMGで認識できない画像だけをCHKIMGXで作成してます
ちなみにマクロは現状正しく動作しており、それぞれのマクロだけ動作させるなら開始も機敏です
説明が下手で申し訳ないのですが、>>68の言葉を借りるなら全てをセットにしたメイン.uwsの作り方が下手で、空振りが多いのだと思います
0071デフォルトの名無しさん
垢版 |
2018/10/19(金) 18:26:33.13ID:QAno5ZfD
どんな場合があってどの様な条件(画像、回数など)が必要なのか紙に描いて整理した方が良いですよ
uwscというより設計の問題です
0072デフォルトの名無しさん
垢版 |
2018/10/19(金) 18:28:28.54ID:5Sybigz9
>>70
すまん、ダンジョン1.uws見てなかった
これはまずいわ、メイン.uwsで宝箱1〜6の画像検索してどれか見つかったら
宝箱()を呼び出してるけど、そこでまた宝箱1〜6の画像を全て検索してるじゃん
宝箱1を見つけたら宝箱1を開封する関数だけを呼び出さないと

あとメイン.uwsで戦闘開始と戦闘終了を画像検索してるけど
戦闘が始まってもないのに戦闘終了の画像を検索する必要ある?
言い方を変えると、戦闘終了してるかチェックするのは
戦闘開始を見つけてからでいいんじゃない?
その辺の動きももう一度整理したほうがよさそう
0073デフォルトの名無しさん
垢版 |
2018/10/19(金) 18:56:25.14ID:tiAvbHs0
>>70
まあとりあえず色んな人からアドバイス出たことだし、少し手を動かして頑張って
ちなみにやろうとしてるほぼ全自動でゲーム進めるってのは初学者にはかなり難しいテーマだよ、もはやゲーム設計するのと大差ないからね
コードだけ眺めてても解決しないので絵にしたりしないと無理じゃないかな
0074デフォルトの名無しさん
垢版 |
2018/10/19(金) 23:37:36.28ID:QpJkHdff
>>73
>全自動でゲーム進めるってのは
>初学者にはかなり難しいテーマ
同意

単純なクリック連打じゃなくて
ゲームの内容を判断しながら分岐させるのは
ゲームのAIレベルだから難しい
0075デフォルトの名無しさん
垢版 |
2018/10/20(土) 00:19:23.65ID:6OPiVTnP
今回も修正したuwsのファイルをアップしてみました
無事に動作はしていますが、変なところがあればご指摘いただければと思います
ttps://32.gigafile.nu/1027-bf28bd15518fed74ae750f229487ea8c8

悩み中.uwsというファイルがありますが、
同じ画像を認識したとしても処理は異なるようにするにはどうしたら良いのでしょうか
現在はSLEEPを使用して1回目の表示と2回目の表示の間隔を空けて強引に処理させてます

>>71
ある程度は整理できてるのですが、処理を開始するためにどこの画像を認識させようかの判断ができないんですよね
ダンジョンの背景とかだと使い回しで別のダンジョンと間違えられても困るし…

>>72
書き込んだあとちょうどその部分に変更を加えていました
おかげで処理は高速になったと思われます…(実感はある)

>>73
全自動というのは無理だと思っているので、移動以外は自動化できないかなって思ってます
一応今のところ8割はできてると思います
0076デフォルトの名無しさん
垢版 |
2018/10/20(土) 00:57:49.14ID:69MHWzaM
>>75
>同じ画像〜
させたい処理が違うなら何かが違うんでしょとしか言えないが
画面の見た目類で判断しにくく、仮に交互に繰り返すならカウンタ/フラグ変数を持って切り替えるのはどうかな?

これに限らず全てchkimgで判断させるのは無理があるはず
0077デフォルトの名無しさん
垢版 |
2018/10/20(土) 01:01:01.66ID:90xm7L12
>>75
ボスの画像を認識した回数をカウントして処理を分ければいいんじゃない
で、パターンを戻したくなったらカウントをリセットすればいい
行動パターンがあまりにも多かったら大変だけど

ここからは今は重要なことじゃないし
処理が早くなるわけではないからわからなかったらスルーしてくれ

1つの行動を1つの関数にするのはいいんだけどファイルを分ける必要あるかな
例えばダンジョン1宝箱3とか他のダンジョンなりスクリプトで再利用する?
それぞれのファイルで毎回全く同じCALLや変数の初期化を
何度も書くのは無駄だし間違いの元になることもある
変数のスコープやProcedureやFunctionや値渡しについて知ればもっとよくなるとおもう
0079デフォルトの名無しさん
垢版 |
2018/10/20(土) 03:46:56.86ID:I8y7CiS+
一部のbotが非常に高度なものであるのは間違いないけど。
ここの連中が作った全自動(笑)マクロなんてゴミがほとんどじゃないの。
0081デフォルトの名無しさん
垢版 |
2018/10/20(土) 10:13:45.64ID:ac1pPfcT
たかがUWSC作ったマクロしか組めない程度の人間のマクロ技術がゲーム制作やゲームAIと同じとはとても思えないわ。
まあ雑魚同士で自画自賛しあってればいいんじゃない。
0082デフォルトの名無しさん
垢版 |
2018/10/20(土) 10:25:26.46ID:q084eIUp
といちいち初心者スレ監視してる雑魚が申しております
自称天才意識高い系プロは本スレで暴れててね
0084デフォルトの名無しさん
垢版 |
2018/10/21(日) 11:27:18.44ID:ugGKSKgn
寂しがり屋さんなのかな?
本スレそれほど過疎ってるわけでもないのに
スレ分けてよかったかな今のところは
0085デフォルトの名無しさん
垢版 |
2018/10/22(月) 00:09:48.52ID:rGA5crV5
ttps://17.gigafile.nu/1029-dbd9d6de3c7c9d32c382d1be973850e30

カウントについて調べていろいろやってみたのですが、
「ボス戦ターン1()」を繰り返したり、
「ボス戦ターン2()」まで行っても「ボス戦ターン1()」に戻ったりしてしまいます
カウントの処理について教えていただきたいです

それと、最後の部分にある「CALL」ですが
ttp://kobuji.me/tips/call/
ここを参考にしてみたのですが、このCALLの使い方はあっているのでしょうか?
(前回一番上に記載するやり方だと教えてもらいましたが…)
0086デフォルトの名無しさん
垢版 |
2018/10/22(月) 00:42:44.65ID:ktdTMJw1
>>85
カウント以前の問題が多すぎる
インデントを入れると自分がどれだけ変なコード組んでるかちょっと分かるかも?
0087デフォルトの名無しさん
垢版 |
2018/10/22(月) 01:12:45.93ID:rGA5crV5
>>86
申し訳ないのですが、他のサイトを参考に組み立てたもので、そこから試行錯誤してるのですがうまくいかないのです
いまも随時修正は加えているのですが、問題の箇所を具体的に教えていただけるとありがたいです
0088デフォルトの名無しさん
垢版 |
2018/10/22(月) 01:15:13.19ID:ktdTMJw1
>>87
>>56-86に書いてある

その上で問題が認識しづらいのは「インデントのせいかも」というアドバイスをしたので、まずはインデントを入れてみてくれ
0089デフォルトの名無しさん
垢版 |
2018/10/22(月) 01:17:20.48ID:rGA5crV5
>>88
どこにカウントのことが書いてあるのでしょうか?
0090デフォルトの名無しさん
垢版 |
2018/10/22(月) 01:38:22.25ID:ktdTMJw1
>>89
カウント以前の問題だと>>86に書いているよね
カウントの処理が変なんじゃなくて、依然として最初期から指摘してるIF/IFBの書き方に問題があるということ

まずそこを直してくれないと次のステップに進むアドバイスは自分からはできない
0091デフォルトの名無しさん
垢版 |
2018/10/22(月) 02:06:06.56ID:rGA5crV5
教えを請う立場で申し訳ないですし、自分で問題解決まで知識を蓄えろというのはごもっともなのですが、
自分なりにできてるところはこちらで質問しておりませんし、いまも試行錯誤したうえで行き詰まってまして、
先ほどアップしたファイルはその試行錯誤の末、ぐちゃぐちゃになってるのは自分でも理解しています
ただ、自分なりにいろいろ手を尽くしても解決することができなかったので、
できれば具体的な解決策もしくは参考になるページを提示していただけると助かります

今回で言うとカウンタを利用して
カウント0の時、Aの画像を認識するまでループ、認識できたら1の行動(カウント+1)でループを抜け出して次の処理へ
カウント1の時、Aの画像を認識するまでループ、認識できたら2の行動(カウント+1)でループを抜け出して次の処理へ
カウント2の時、Aの画像を認識するまでループ、認識できたら3の行動(カウント+1)でループを抜け出して次の処理へ
という形にしたいのですが、カウントと画像認識を組み合わせた時の書き方、条件分岐の策がわからず、
検索しても目的の処理について出てこないので困ってるんです
0092デフォルトの名無しさん
垢版 |
2018/10/22(月) 02:12:15.48ID:ktdTMJw1
>>91
だから具体的な解決策が「インデントを入れる」なんだけど
ただ、それだけでこの数日どれだけ無駄にしてたか理解できると思うよ
0093デフォルトの名無しさん
垢版 |
2018/10/22(月) 02:18:15.10ID:rGA5crV5
>>92
それなら参考にしたいので試しに自分がアップしたファイルで、
>>92さんのインデントを入れたものを見せていただきたいです
0095デフォルトの名無しさん
垢版 |
2018/10/22(月) 02:44:54.75ID:ktdTMJw1
>>91
さてここまでやってしまったからについでに言うと
>カウント0の時、Aの画像を認識するまでループ、認識できたら1の行動(カウント+1)でループを抜け出して次の処理へ
>カウント1の時、Aの画像を認識するまでループ、認識できたら2の行動(カウント+1)でループを抜け出して次の処理へ
>カウント2の時、Aの画像を認識するまでループ、認識できたら3の行動(カウント+1)でループを抜け出して次の処理へ

まぁこの辺は経験とかないとこうなっちゃうのかなと思うが、簡単にすると以下だよね
>カウントが0からnまで繰り返し、Aの画像を認識した時、カウント別の処理実行後、カウントを+1して次へ

これをプログラムしやすく整形すると…
>カウントが0からnまで繰り返し
> Aの画像を認識した時、
>  カウント別の処理実行後、
>  カウントを+1

書くべきコードのイメージも大分違ってくるでしょう
0096デフォルトの名無しさん
垢版 |
2018/10/22(月) 03:37:01.47ID:rGA5crV5
>>94-95
ありがとうございます

にっちもさっちもいかず、ぐちゃぐちゃにしてしまったファイルをアップしたせいで、
より大きな誤解を招いてしまったところがあると思います…

ttps://22.gigafile.nu/1029-d56268c68a387a2a9e4db0865ff3cf87f
いま試行錯誤していたファイルをアップしてみました
ちょうど>>95あたり?に近かったのではないかと思われますが…
ターン1→2→3→3→1という風に書いてあるにも関わらず、
ターン1→3→2、1→3→1、1→2→3など行動が飛ばされる時があります
戦闘開始.bmpを画像認識しなければ次へ進まないはずだと思うのですが、
異なる制御文でも入れてしまっているのでしょうか…
0097デフォルトの名無しさん
垢版 |
2018/10/22(月) 04:28:57.69ID:ktdTMJw1
>>96
肝心のカウントを判定してないんだから順番通りになるわけもない
そもそも…
> カウントが0からnまで繰り返し
> Aの画像を認識した時、
>  カウント別の処理実行後、
>  カウントを+1
↑に近づけたつもりならwhileと画像認識はひとつ
カウントのif文で分岐を書けばいいだけ

同じ判定がいくつも出てくるのは構造がおかしいと指摘したはずだよね

てかこれだけ言ってもインデント無視する限りもうアドバイスしないのでそのつもりで
0098デフォルトの名無しさん
垢版 |
2018/10/22(月) 04:36:33.96ID:rGA5crV5
>>97
勘違いなさってるようなので訂正させていただきますが、
>>96のファイルは>>94-95を拝見する前に自力で作成していたものです
0099デフォルトの名無しさん
垢版 |
2018/10/22(月) 04:48:50.98ID:iCVScRLH
まず状況整理のためにインデントをいれろというアドバイスがあったのに
インデント入れてみてくれはさすがに乱暴だろ
インデントについて調べて理解したの?
IF文におかしいところがないか確認したの?
0100デフォルトの名無しさん
垢版 |
2018/10/22(月) 05:00:05.30ID:rGA5crV5
>>99
>>94を見ても一瞬で理解できない猿で申し訳ないとしか言えません
>>39を見て、どんなものかと始めたばかりなのでプログラムの記述式等に学が浅く、
言われてることを理解するのにも四苦八苦ですし、周りからすれば幼子に6+6の計算させたら指が足りないからわからないって言ってるようなものなのは申し訳ないです
■ このスレッドは過去ログ倉庫に格納されています

ニューススポーツなんでも実況