UWSC初心者用スレ
: [sage] 2018/09/24(月) 12:13:49.92:an35jPjo UWSC初心者用スレです わかってる人はこっち 自動化ツールUWSC使いよ集まれ21 ttp://egg.5ch.net/test/read.cgi/software/1533818531/ 降臨される神々においては相手を人と思わず猿と思し召されるよう 何卒お願い申し上げます : [sage] 2018/09/24(月) 12:14:19.87:an35jPjo ●ダウンロード ttp://jump.5ch.net/?https://www.vector.co.jp/soft/winnt/util/se115105.html ttp://jump.5ch.net/?https://web.archive.org/web/20180125141222/http://www.uwsc.info/download.html ●サンプル ttp://jump.5ch.net/?http://www.uwsc.info/sample.html ●FAQ ttp://jump.5ch.net/?http://www.uwsc.info/faq.html : [sage] 2018/09/24(月) 12:15:03.20:an35jPjo ●UWSC 掲示板(※作成依頼掲示版ではありません) 質問の際には自力で作ったスクリプトを晒すか、 具体的な解らない場所を提示すること 上級者が常駐、たまに作者も現れるため過去ログには有益情報の宝庫 ttp://jump.5ch.net/?http://www3.rocketbbs.com/13/bbs.cgi?id=umiumi ●UWSC - Wikipedia ttp://jump.5ch.net/?http://ja.wikipedia.org/wiki/UWSC : [sage] 2018/09/24(月) 12:15:36.86:an35jPjo ●使い方・基礎解説学習サイト ttp://jump.5ch.net/?http://uwsc.g.hatena.ne.jp/cx20/20100131/1264938584 ttp://jump.5ch.net/?http://www.confrage.com/uwsc/ ttp://jump.5ch.net/?http://necro.jp/dev/uwsc/ ttp://jump.5ch.net/?http://canal22.org/ ttp://jump.5ch.net/?http://big.tm.land.to/handbook/uwsc.htm ttp://jump.5ch.net/?http://www.game-rev.com/review/gameut/uwsc.html : [sage] 2018/09/24(月) 12:16:00.59:an35jPjo ●スクリプトテンプレサイト ttp://jump.5ch.net/?http://siromasa.html.xdomain.jp/uwsc/index.html ttp://jump.5ch.net/?http://scripts.web.fc2.com/ ttp://jump.5ch.net/?http://nem.symphonic-net.com/uwsct/0610uwsct.html ttp://jump.5ch.net/?http://iriyak.adam.ne.jp/uwsc.html : [sage] 2018/09/24(月) 12:22:09.57:idPCtow3 おー立ててくれたのか プログラム板に立てたのはあえて? : [sage] 2018/09/24(月) 13:25:23.39:OJN25ACF 板誤爆だろ : [sage] 2018/09/24(月) 14:22:22.29:+VppQ0pu 改めて nox(最新)でゲームを自動化しようとしてるのですが、マウスクリックなどの操作を受け付けてくれないですし、記録する時も記録出来ません。 何かやり方あるのでしょうか あとchromeで裏マクロ作ろうとしてますが画像認識してくれません 試しにsaveimgでid クロームのハンドル webglのハンドルでそれぞれ確認したら webglハンドルはブラウザフレームだけ取得して中身の画面は真っ黒 他はそもそも現在の画面しか取り込んでくれてないです。 よろしくお願いします : [sage] 2018/09/24(月) 16:37:22.58:d+NkHGTT ん~プログラム板がよかったのかソフトウェア板がよかったのか微妙 : [sage] 2018/09/24(月) 17:38:14.77:ZwyUHgZx noxは直接クリックはできないのでadb使う 向こうのスレに参考スクリプトはあるしググれば出てくる 記録はできないが、単純操作ならnoxのスクリプトレコード使うか、座標系の元値としてだけ使ってもいいかも? やろうと思えば変換も出来そうだけどね Chromeはウインドウ指定で使うにはかなり難しい 過去スレを頑張って読むか諦めた方がいい : [sage] 2018/09/24(月) 20:50:55.47:lHcMF3Ar 自分で考えろ 聞いて解決するな 死ね 殺す : [sage] 2018/09/24(月) 21:04:24.34:DtR7Krcw 早速スレつぶしに来ててワロタ とにかく罵倒したくて仕方ないんだな : [sage] 2018/09/24(月) 23:18:39.85:an35jPjo 神の啓示には感謝しなきゃダメだよ : [sage] 2018/09/25(火) 11:04:29.32:J1FBTwPW 初心者スレとか嘘つかずに素直にゲームマクロスレとかにすりゃいいのに : [sage] 2018/09/25(火) 11:20:22.77:HpChLXGF 気になって仕方なくて覗きに来たのかw : [sage] 2018/09/25(火) 11:32:00.41:KxeqxPCQ 僕はもう追いかけはしない : [] 2018/09/25(火) 19:02:27.87:qc/hnwWX ありがとうございます とりあえずfirefox系列ならバックグラウンドで画像確認とか出来たのでこちらをベースにします : [sage] 2018/09/25(火) 19:16:03.81:GnoTTlW7 >UWSC初心者用スレ ここはプログラム板なんだから 初心者用スレがソフト板で スクリプトを書きまくるスレが こっちにある方が自然な住み分けだと思う まあ住民視線だと 隔離で他板に飛ばす方が良いんだろうけど なおスクリプトを書く方が偉いみたいな 思想で言っている訳ではない 利便性で言っているだけ : [sage] 2018/09/25(火) 22:41:38.51:tvEhsayp 全く仰る通りで。板の住人には誠に申し訳ない。 : [sage] 2018/09/26(水) 00:29:25.56:Mnfitxfv まあ細かいことはええやろ 向こうはUWSCというソフト全般の話する所 こっちはUWSC初心者がプログラムの話する所 とか適当に建前言っとけば問題ない : [] 2018/09/30(日) 21:33:27.14:C+d3VFtL すみません 上に書いてあるadbって何の事ですか : [sage] 2018/10/01(月) 05:32:35.05:2PPz6CoJ 「android adb」で検索! : [sage] 2018/10/01(月) 14:21:00.29:cVCKaASP 検索促すだけじゃあっちと変わらんやん(笑) 調べりゃわかることでも懇切丁寧に教えてやるためにスレ建てたんじゃなかったの?(笑) : [sage] 2018/10/01(月) 15:03:21.02:k8diFUao わざわざこっちもチエックして煽りに来てんのか 重症やな : [sage] 2018/10/01(月) 15:04:35.85:BPii8/gs 向こうにもリンク貼っておいて何言ってんだこの馬鹿は : [] 2018/10/01(月) 15:08:39.88:Gm5J3aUY いや真面目な話、検索しろじゃあっちと変わらなくね? このスレなんのために立てたの? : [sage] 2018/10/01(月) 19:14:57.65:dpHWHOw9 真面目な話、adbは板違いなので : [sage] 2018/10/01(月) 19:50:08.00:Fhb8wAZ6 ウィンドウ上の定点を監視するために、saveimg(,gid) で クリップボードにキャプチャした画像の PeekColor(x, y,,TRUE) を取ってるんですが、時々 -1 が返ってくる。 うまく判定できていないのだろうと思って、PeekColor(x, y,COL_R,TRUE) もとってみたけど、こちらは時々 0 が返ってくる。 定点の仕様として、R が 0 にはならないのだけれど、何らかの例外がある場合、-1 や 0 を返す仕様でしょうか? 切り分けとして、-1 や 0 が返ってきたときのキャプチャを保存して確認してみたけど、色がついている(R も存在)しているので 対応指針が決まりません。 どのような時に、-1 や特殊な(?)0 が返ってくるのかどなたかご存知でしょうか? : [sage] 2018/10/01(月) 20:13:15.44:AvNlBg/g その異常値が返ってきたときのキャプチャをPeekColorかけるとやはり異常値返ってくるので? 返ってくる場合は画像よく見て分析するしかないかも 返ってこない場合は非同期でグローバル領域共有しておかしなことになってないか確認する 懸念として異常発生時のキャプチャが取れてるのかは疑問だけど…(描画乱れがランダムに起こってるんだとしたら判定後に撮っても遅い) 後は異常時にタイムスタンプ付きでログ出して周期的なものか、そのタイミング何か重い処理してないかなどを分析する : [sage] 2018/10/01(月) 20:26:28.02:Fhb8wAZ6 キャプチャした内容(クリップボードに取り込んでた内容)を peekColor かけても、問題ないんですよねぇ。 グローバル領域かぁ。。。分からんw > 懸念として異常発生時のキャプチャが取れてるのかは疑問だけど… この辺の切り分けができるように、クリップボード使用してたんですけど、分からんねぇ。困った^^; もうちょっと調べてみます。ありがと。 : [sage] 2018/10/01(月) 21:06:45.73:k8diFUao 検索しろでも懇切丁寧に教えてあげるのでも好きにすりゃいいんじゃねぇの そういう所に変にこだわって肝心のuwscの話から脱線するのがウザくて離れたんだから : [sage] 2018/10/01(月) 21:54:24.74:SSJgbJ3B そもそもクリップボードから取得って確実性あんの? 他で使ってる可能性は?入っているデータ型は都度確認してる? あんま賢いやり方とは思えないが : [sage] 2018/10/01(月) 22:25:15.19:fZlkxeb/ chkimgxをAutoItなどに移植って可能ですかね? : [sage] 2018/10/02(火) 00:28:05.04:me1+gMvb 元々C++で作ってるらしいからそっちに明るいならいけるんじゃないか : [sage] 2018/10/02(火) 01:10:43.02:HAR2y5TT 元々OpenCVの関数叩いてるだけだし : [あ] 2018/10/03(水) 19:21:37.26: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 とエンドキー押せば止まるのでこれを真似てみたのですが よかったら分かるかたいませんでしょうか? よろしくお願いします。 : [sage] 2018/10/03(水) 19:57:21.83: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 : [sage] 2018/10/03(水) 20:00:22.12:KtepAYQT if/ifbの次には真偽値を置く 今のコードだとタイマーが置かれてて意味がわからないので無視されている : [sage] 2018/10/03(水) 20:08:02.96:eg7MKqyj UWSC Noxでゲームマクロの入門編の記事を作成しました。 nox_adbについてサンプルコード付きで書いている記事は今までなかったと思うので、初心者さんが来た時にでも使ってください。 ttp://jump.5ch.net/?https://qiita.com/macro_no_deshi/items/dd3b3405123bad0cfe4a : [あ] 2018/10/03(水) 20:35:01.96:srylDUsH 神様助かりました!一日中試してたのにおかげで無事できました!ありがとうございます! : [s] 2018/10/09(火) 08:09:46.16:dgVIN+8N 保守s : [sage] 2018/10/13(土) 16:29:34.71:0Iqx+GXq 友人のために作成したスクリプトで、おかしな挙動が出ています。 ACW(gid,0,0,,) として、左上隅にウィンドウを移動させ、そこを基点に特定座標の色を拾うスクリプトを書きました。 が、時々拾えなくなると言われ、切り分けのために色を拾うタイミングで、キャプチャを実施しました。 キャプチャ結果を見ると、時々、ウィンドウが移動しているように見受けられます。 友人の操作を疑っているのですが、触っていないと言われ、原因を探っています。 ACW 以外に、ウィンドウを動かす事に注意しなければならない関数は存在しますか? 昼飯で引き受けたのですが、ずいぶん高くついてしまっています。 ヒントでもあれば教えてください。 : [sage] 2018/10/13(土) 20:36:39.68:M9OwAK6A 情報が少なすぎて何とも言えないが…まず、どう動くの? その場所からいなくなるという意味ではCTRLWINでもBTNでも犯人になり得るがそういう話し? 対策は面倒ならしつこくACWするか、根本対応としてMOUSEORG使うかってところが今のところ浮かぶけど もうちょっと差し支えない範囲でコードの中身見ないと分からんことが多すぎるよ : [sage] 2018/10/13(土) 20:38:31.06:zXFRfhuI 念のため前後も確認したい : [sage] 2018/10/13(土) 21:50:49.06: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 だと再現しないんですよねぇ^^; なにか怪しい箇所があれば、ぜひ教えてください。 : [sage] 2018/10/13(土) 23:52:53.09:4mi4Ve5O 再現しないならその友人が怪しいだろ 本当に友人なんですかね : [sage] 2018/10/13(土) 23:55:44.28:M9OwAK6A で、結局どう動くの? ワープしてデスクトップから消え失せるの? 超高速で縦横無尽に動き回るの? : [sage] 2018/10/14(日) 00:39:58.87:TOccAP8t 昨日もうひとつのUWSCスレでふきだしの話してた人? FUKIDASIのxとyってどうやって算出してるの? 元のスクリプトのほうでループのなかでxとyの値が更新されて FUKIDASIの位置が変わってるんじゃないの? それ以外吹き出しが動く要素がなさそうにおもうんだけど それとUWSC以外を疑うなら画面全体を動画キャプチャしたら? : [sage] 2018/10/14(日) 07:47:15.28:pryZUL3Y もう一つの方の人とは別です。くちばしの形状は気にしてないんでw FUKIDASI の xy は色識別の座標です。 画面にタイル状に並んだ画像の位置情報を算出してます。 イメージとしては、ブラウザ上に同じフォーマットの画像が12個並んでいて、その特定座標の色を抜き出している感じです。 12箇所の基点座標の割り出しと、それに追加する相対座標を追加する計算をしています。 で、ぞの位置がずれていないか、FUKIDASI 出してざっくり位置確認をしたんですが、 ループの中で撮った12枚の画像で、FUKIDASI が本来の位置に無いものがある。 何度か取り直してもらったんですが、都度少しづつズレるんです。 ズレは、ちゃんと計測してないけど、xy それぞれの方向に 1 から 5 px 程度。 ループ中全部ズレるんではなくて、途中でズレるとか、最初にズレてそのままとか。 今の所、ループ内で複数回ズレた事は観測できてません(まぁ試行回数もそれほど多くないですけど) IMG_FORE なんで、「stop ボタン」も写り込んでるんですが、そっちもズレるんでウィンドウが動いてるって判断してます。 まぁ、何が起きてるか全然分からんので、次の切り分けでは、画面全体のキャプチャ撮ろうとは思っていますが。。。 UWSC 以外は今の所疑ってませんでした。ちょっと方法を考えてみます。 : [sage] 2018/10/14(日) 07:48:36.02:pryZUL3Y 怪しいよねぇ^^; リモートで接続させろって言ってるんだけど、見られたくないそうで。。。 めんどいwww : [sage] 2018/10/14(日) 10:17:34.99:TOccAP8t では FUKIDASI の位置が、キャプチャ画面上でずれるんです。。。と言ってるのに ではウィンドウが動いてるって判断してますと言ってるし結局何がずれてんの? ずれが1~5pxなら人間が動かしてるとは考えづらい そうするとスクリプトの座標部分が変化してるんじゃないかと疑うんだけど 肝心の座標を算出するスクリプトが書かれてないからなんとも言えない なので要領を得ないから提案としては fukidasiなりpeekcolorに使うxとyを定数で定義 ウィンドウとfukidasiの座標を監視して変化を検知したらログに残して ACWで元の位置に戻してからpeekcolorを実行するようにしてはどうだろう : [sage] 2018/10/14(日) 11:26:33.14:pryZUL3Y ウィンドウが動いてるんで、座標指定して表示している FUKIDASI がキャプチャ上でズレているって事です。 FUKIDASI には座標を表示しているので、FUKIDASI の座標と計算は正しいと思う。 移動を監視するのが良さそうですね。 ありがとう! : [sage] 2018/10/14(日) 15:51:35.35:flalwaHT えーと、fukidasiもデバッグ用ということ? でも書いたけどウインドウ基準で相対位置決められるならMOUSEORG使えばって感じなんだけどなんかダメな要件があるので? : [sage] 2018/10/14(日) 16:45:43.47:pryZUL3Y FUKIDASI はデバッグ用途ですね。 元々原因不明な色の抽出がうまくいかないことがあったんで、切り分けの一環として採用しています。 そのおかげで、ウィンドウが少し移動していることが判明しました。 MOUSEORG はあまり使用したくないって程度の理由で採用してません。 今回みたいに原因不明の時に人を疑いたくなるんで、できるだけ人の操作から切り離して実行しようかと。 : [sage] 2018/10/14(日) 21:22:37.96:flalwaHT よく分からないけど使う側を信用できないなら、なおさら動かされてもリカバリできるようにするものでは? てかウインドウが動く原因は実のところ色々ある(UWSC外) ・画面の解像度変更、最大化以外の手段でフルスクリーン、パワポのプレビュー ・タブレットなら縦横動かした時 ・デスクトップのウインドウテーマ変更 ・グラボのドライバアップデート これをやってないか、やったらいかんとか再起動せよと友人に言い含めるのとスクリプトで対策するのはどっちが楽? (まぁ一部は再起動した方がいいと思うが) まぁやりたくないならどうぞご自由に、自分からは特に強制するつもりはないのでね : [] 2018/10/14(日) 23:41:27.00: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)のマクロしか動作してくれません ttps://i.imgur.com/0G5273Y.jpg : [sage] 2018/10/14(日) 23:52:58.88:flalwaHT IFBの括りが悪い すべてが最初のIFBの中なのでその画像がある時以外は何も動かない : [] 2018/10/15(月) 02:43:39.99:9JA9/qag たしかに1.bmpの1行とENDIFの1つを消したら2と3(4の画像が出たら4も)が動作しました あとは添付の画像のように修正してみました 一見無事に動作しているのですがループが早すぎて気づいていないだけ…? ttps://i.imgur.com/mnpJfXM.jpg : [] 2018/10/17(水) 01:08:31.52: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」のように別に作らないといけないのでしょうか : [sage] 2018/10/17(水) 01:17:26.70:hVOihSbt 沢山のマグロがどうした まあ落ち着け : [sage] 2018/10/17(水) 05:11:55.48:UKmGEDWi >マクロ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で関数を終了すればいいだけのこと : [] 2018/10/17(水) 22:56:42.50:rmV2ISLZ ありがとうございます メインを作って各パターン毎にCALLで呼び出す…って形でしょうか ゲームでマクロを勉強しているのですが、添付した画像のようなプログラムを作成してみました 宝箱の位置は固定ですがそれぞれクリックする場所が異なるため、このような記述にしてみました 問題なく動作はするのですが、 これだとひとつのuwsで行う処理が多すぎて実行されるのにタイムラグが発生してしまいます 何か良い改善策がありましたら教えてください ttps://i.imgur.com/0G5273Y.jpg : [] 2018/10/17(水) 22:59:23.31:rmV2ISLZ アップする画像はこちらでした… ttps://i.imgur.com/yEU102b.jpg : [sage] 2018/10/17(水) 23:42:45.42:hVOihSbt そじゃない、そういうことじゃねぇんだよ兄ちゃん・・・ UWSCの場合、CALLはメインスクリプトだかの先頭辺りに列挙しておく。 CALL 戦闘開始.uws // 関数「戦闘開始」を定義 CALL 戦闘終了.uws // 関数「戦闘終了」を定義 CALL 回復.uws // 関数「回復」を定義 : という風にな。 CALLで参照するスクリプトは最低限、必要な変数や関数定義にとどめておく。 ちょうど他の言語で言うライブラリやモジュールの役割に当たる。 これでスクリプト全部がオンメモリにロードされる。 後は、メインスクリプトで定義した戦闘開始()、戦闘終了()、回復()を好きなように呼べ。 IFの中でCALLは使わない。 WHILE TRUE IF CHKIMG(略 戦闘開始() ENDIF : : [] 2018/10/18(木) 06:45:36.30:9W5rJRye CALLってそういう意味だったんですね… 今回の添付した画像のような感じであっていますか? FUNCTIONはRESULTがどうたらこうたら出てきたのとがまだ理解できなくて手こずってます ttps://i.imgur.com/yikcDln.jpg : [sage] 2018/10/18(木) 08:54:31.37:Dp9NcRGV まあ、要するにcallの位置にファイルの中身を丸ごとペーストするだけだからね 合っているかはまず期待通りに動いたのか、君にしかわからない 理解できないとか手こずってるとか言われても困る こう書いたら何が起きた、期待通りにならない、こうしたいと具体的に書いてくれ そして出来ればコードはコピペしてくれ、画像貼られても見にくいしこっちで動かせねーから ついでに言えばいつか消えるので後から見る人の参考にならない (差し支えない範囲である程度簡略化して実際に動くのが望ましい) あと理解出来てないままいきなり組み込まない、問題が複雑化するよ 簡単なコードでfunctionの機能だけ、callの機能だけまずは確認しよう その際、最初はchkimgみたいな特殊な動作する関数は使わない方がいい (動かなくてこれ変ですかって書き込まれても画像や操作対象がないと再現できないから) まあ、長々書いてしまったけどプログラム初心者なら躓くのは普通なので色々試してくれ : [] 2018/10/19(金) 02:45:04.72:TPvM9BLe 前回コードを記載して書き込みしたら、エラーが出て書き込めなかったので画像でアップしてました zipにしてアップしてみました ttps://17.gigafile.nu/1118-c64d3df20a4c37dbcd375a2808db916f7 実際でも期待通りの動作はしており、CALLの指摘を受けて改めてのように修正しても期待通りの動作はしています 個人的に現状で残る問題はメイン.uwsでループする箇所が多すぎて で言うと戦闘開始.bmpが表示されてるのに画像認識が遅れてしまうという点です 1つのuwsに全てを詰め込んでいたので遅れが出てしまうのかと思い CALLを知ったのですが、結局これでも遅れることに変わりがなかったです ただの記載されたように、戦闘開始.uwsの方に FUNCTION 戦闘開始 目的の処理 FEND として、メインを動かしたら「戦闘開始.uwsにRESULTが無い」とポップアップが出てきて動作がスタートしませんでした そこで PROCEDURE 戦闘開始 目的の処理 FEND にしてみたら期待通りの動作はしているのですが、違いがわからずこれで問題ないのだろうか?ということでした : [sage] 2018/10/19(金) 09:01:05.68:tiAvbHs0 つまり今の問題は ・スクリプトの動作が遅い(遅く感じる) ・functionとprocedureの違いが分からない の二点ってことね 一つ目の問題はループ内でifを独立させているせいで、毎回頭から最後まで全てのif条件が働いている つまり同時には一つしかヒットしないのに律儀に全部の画像を判定しようとして空振りしてので遅くなっている 対策は一つ目をifb、次以降をelseifにして最初のifbのブロック内に収める そうするとn個目の処理した後、以後のifは飛ばす構造になる(そしてwhileでまた最初から判定) ##ifとifbの違いや動作を理解しよう## 応用としては頻出するものを最初に持ってきた方がトータルではやや早い ただし結局はifbブロック内に大量にelseifでのchkimgがある時点で遅くなっていく これはそもそもゲーム構造的に同時に判定すべきでないものを全て詰め込んでいるせい 簡単に言うとタイトル画面で戦闘開始の判定をしても意味がないしクエスト画面でタイトル画面のログインボタンの判定をしても意味がないよね これも対策は出来るが長くなるのでヒントだけ ・まずはシーン(タイトル、クエストなど)を判定する為のメインループを作る ・各シーンごとの操作(画像認識)をまとめてループにする ループ内というかifbブロック内になるべく空振りさせないように構造化させるのがポイント これでも遅く感じる場合には、シーン内の画像認識をifbによる順次処理ではなく、スレッドによる並列処理にする必要がある が、まあそれはまたやってみて遅いとか、スレッドやってみて詰まったら質問してくれ 次にfunctionとprocedureだけどこれは単にでは適当に構造のイメージで書いたのでresult書き忘れてるだけ 余計な混乱させてしまったなら悪いけど、正直に言えばそんなことで詰まるとは思いもしなかった…マニュアルとか見てる?? で、resultが何なのかはヘルプなりGoogle先生に聞いてもらうとして、多分懸念してる動作速度はどっちでも大差ない : [sage] 2018/10/19(金) 13:46:23.05:qHVv99vL スクリプト見たんだけどCHKIMGとCHKIMGXが混在してるのはこの通りであってるの? の切り分けによると戦闘開始関数だけで時間が掛かってるってことだよね どこで処理に時間が掛かってるかGETTIMEで計測したらどうか? たぶんCHKIMGかCHKIMGXだとおもうんだけど まずは戦闘開始.bmpが表示されたらPrintでなにか表示させるとかして 処理を小さく区切って満足行く結果が出たら次の処理につなげてという風に 問題を細かく見てったほうがいい そこがクリアされてるなら 「戦闘開始.bmpが表示されてるのに画像認識が遅れてしまう」こんなことにはならない まず戦闘開始だけを満足に動かすことを考えたほうがいい : [] 2018/10/19(金) 17:35:14.14:TPvM9BLe つい先日マクロについて知って、下記のHPを読みながら1つの問題が解決したら都度次へって感じでやってます ttps://qiita.com/macro_no_deshi/items/dd3b3405123bad0cfe4a まずゲーム内のどこでマクロに任せるべきなのかからスタートしてるのと、 プログラミングの知識がないので手探りになってしまっているのは申し訳ないです >同時に判定すべきでないものを全て詰め込んでいるせい ここは理解しているのですが、どこでどう判定させて区切るべきかわからずぐちゃぐちゃになってるのだと思います ・ダンジョン1で歩いて宝箱を回収していく ・ダンジョン1で歩き回れば敵と遭遇し戦闘が開始される ・戦闘が終わればリザルトがある 以上のようにダンジョン1で宝箱を探している間に敵は出てくるので戦闘開始と戦闘終了は必要なので、メイン.uwsの記述があのようになりました (1)ダンジョン1を宝箱を回収しながら自動で踏破 (2)途中で敵に遭遇したら自動で戦闘開始、戦闘を終えたら(1)の続きに戻る ちなみに最終的にはこのようにできれば良いなと思ってはいるんですが、まだまだ遠い未来です… CHKIMGとCHKIMGXが混在しているのは、CHKIMGで認識できない画像だけをCHKIMGXで作成してます ちなみにマクロは現状正しく動作しており、それぞれのマクロだけ動作させるなら開始も機敏です 説明が下手で申し訳ないのですが、の言葉を借りるなら全てをセットにしたメイン.uwsの作り方が下手で、空振りが多いのだと思います : [sage] 2018/10/19(金) 18:26:33.13:QAno5ZfD どんな場合があってどの様な条件(画像、回数など)が必要なのか紙に描いて整理した方が良いですよ uwscというより設計の問題です : [sage] 2018/10/19(金) 18:28:28.54:5Sybigz9 すまん、ダンジョン1.uws見てなかった これはまずいわ、メイン.uwsで宝箱1~6の画像検索してどれか見つかったら 宝箱()を呼び出してるけど、そこでまた宝箱1~6の画像を全て検索してるじゃん 宝箱1を見つけたら宝箱1を開封する関数だけを呼び出さないと あとメイン.uwsで戦闘開始と戦闘終了を画像検索してるけど 戦闘が始まってもないのに戦闘終了の画像を検索する必要ある? 言い方を変えると、戦闘終了してるかチェックするのは 戦闘開始を見つけてからでいいんじゃない? その辺の動きももう一度整理したほうがよさそう : [sage] 2018/10/19(金) 18:56:25.14:tiAvbHs0 まあとりあえず色んな人からアドバイス出たことだし、少し手を動かして頑張って ちなみにやろうとしてるほぼ全自動でゲーム進めるってのは初学者にはかなり難しいテーマだよ、もはやゲーム設計するのと大差ないからね コードだけ眺めてても解決しないので絵にしたりしないと無理じゃないかな : [sage] 2018/10/19(金) 23:37:36.28:QpJkHdff >全自動でゲーム進めるってのは >初学者にはかなり難しいテーマ 同意 単純なクリック連打じゃなくて ゲームの内容を判断しながら分岐させるのは ゲームのAIレベルだから難しい : [] 2018/10/20(土) 00:19:23.65:6OPiVTnP 今回も修正したuwsのファイルをアップしてみました 無事に動作はしていますが、変なところがあればご指摘いただければと思います ttps://32.gigafile.nu/1027-bf28bd15518fed74ae750f229487ea8c8 悩み中.uwsというファイルがありますが、 同じ画像を認識したとしても処理は異なるようにするにはどうしたら良いのでしょうか 現在はSLEEPを使用して1回目の表示と2回目の表示の間隔を空けて強引に処理させてます ある程度は整理できてるのですが、処理を開始するためにどこの画像を認識させようかの判断ができないんですよね ダンジョンの背景とかだと使い回しで別のダンジョンと間違えられても困るし… 書き込んだあとちょうどその部分に変更を加えていました おかげで処理は高速になったと思われます…(実感はある) 全自動というのは無理だと思っているので、移動以外は自動化できないかなって思ってます 一応今のところ8割はできてると思います : [sage] 2018/10/20(土) 00:57:49.14:69MHWzaM >同じ画像~ させたい処理が違うなら何かが違うんでしょとしか言えないが 画面の見た目類で判断しにくく、仮に交互に繰り返すならカウンタ/フラグ変数を持って切り替えるのはどうかな? これに限らず全てchkimgで判断させるのは無理があるはず : [sage] 2018/10/20(土) 01:01:01.66:90xm7L12 ボスの画像を認識した回数をカウントして処理を分ければいいんじゃない で、パターンを戻したくなったらカウントをリセットすればいい 行動パターンがあまりにも多かったら大変だけど ここからは今は重要なことじゃないし 処理が早くなるわけではないからわからなかったらスルーしてくれ 1つの行動を1つの関数にするのはいいんだけどファイルを分ける必要あるかな 例えばダンジョン1宝箱3とか他のダンジョンなりスクリプトで再利用する? それぞれのファイルで毎回全く同じCALLや変数の初期化を 何度も書くのは無駄だし間違いの元になることもある 変数のスコープやProcedureやFunctionや値渡しについて知ればもっとよくなるとおもう : [sage] 2018/10/20(土) 01:01:35.72:90xm7L12 しまった、また長文書いてる間に先越されたw : [sage] 2018/10/20(土) 03:46:56.86:I8y7CiS+ 一部のbotが非常に高度なものであるのは間違いないけど。 ここの連中が作った全自動(笑)マクロなんてゴミがほとんどじゃないの。 : [sage] 2018/10/20(土) 09:18:37.52:q084eIUp とゴミが申しております そういうのは本スレでやってね : [sage] 2018/10/20(土) 10:13:45.64:ac1pPfcT たかがUWSC作ったマクロしか組めない程度の人間のマクロ技術がゲーム制作やゲームAIと同じとはとても思えないわ。 まあ雑魚同士で自画自賛しあってればいいんじゃない。 : [sage] 2018/10/20(土) 10:25:26.46:q084eIUp といちいち初心者スレ監視してる雑魚が申しております 自称天才意識高い系プロは本スレで暴れててね : [sage] 2018/10/21(日) 03:47:50.14:gVw834nh 初心者スレでこれは草 : [sage] 2018/10/21(日) 11:27:18.44:ugGKSKgn 寂しがり屋さんなのかな? 本スレそれほど過疎ってるわけでもないのに スレ分けてよかったかな今のところは : [] 2018/10/22(月) 00:09:48.52:rGA5crV5 ttps://17.gigafile.nu/1029-dbd9d6de3c7c9d32c382d1be973850e30 カウントについて調べていろいろやってみたのですが、 「ボス戦ターン1()」を繰り返したり、 「ボス戦ターン2()」まで行っても「ボス戦ターン1()」に戻ったりしてしまいます カウントの処理について教えていただきたいです それと、最後の部分にある「CALL」ですが ttp://kobuji.me/tips/call/ ここを参考にしてみたのですが、このCALLの使い方はあっているのでしょうか? (前回一番上に記載するやり方だと教えてもらいましたが…) : [sage] 2018/10/22(月) 00:42:44.65:ktdTMJw1 カウント以前の問題が多すぎる インデントを入れると自分がどれだけ変なコード組んでるかちょっと分かるかも? : [] 2018/10/22(月) 01:12:45.93:rGA5crV5 申し訳ないのですが、他のサイトを参考に組み立てたもので、そこから試行錯誤してるのですがうまくいかないのです いまも随時修正は加えているのですが、問題の箇所を具体的に教えていただけるとありがたいです : [sage] 2018/10/22(月) 01:15:13.19:ktdTMJw1 に書いてある その上で問題が認識しづらいのは「インデントのせいかも」というアドバイスをしたので、まずはインデントを入れてみてくれ : [] 2018/10/22(月) 01:17:20.48:rGA5crV5 どこにカウントのことが書いてあるのでしょうか? : [sage] 2018/10/22(月) 01:38:22.25:ktdTMJw1 カウント以前の問題だとに書いているよね カウントの処理が変なんじゃなくて、依然として最初期から指摘してるIF/IFBの書き方に問題があるということ まずそこを直してくれないと次のステップに進むアドバイスは自分からはできない : [] 2018/10/22(月) 02:06:06.56:rGA5crV5 教えを請う立場で申し訳ないですし、自分で問題解決まで知識を蓄えろというのはごもっともなのですが、 自分なりにできてるところはこちらで質問しておりませんし、いまも試行錯誤したうえで行き詰まってまして、 先ほどアップしたファイルはその試行錯誤の末、ぐちゃぐちゃになってるのは自分でも理解しています ただ、自分なりにいろいろ手を尽くしても解決することができなかったので、 できれば具体的な解決策もしくは参考になるページを提示していただけると助かります 今回で言うとカウンタを利用して カウント0の時、Aの画像を認識するまでループ、認識できたら1の行動(カウント+1)でループを抜け出して次の処理へ カウント1の時、Aの画像を認識するまでループ、認識できたら2の行動(カウント+1)でループを抜け出して次の処理へ カウント2の時、Aの画像を認識するまでループ、認識できたら3の行動(カウント+1)でループを抜け出して次の処理へ という形にしたいのですが、カウントと画像認識を組み合わせた時の書き方、条件分岐の策がわからず、 検索しても目的の処理について出てこないので困ってるんです : [sage] 2018/10/22(月) 02:12:15.48:ktdTMJw1 だから具体的な解決策が「インデントを入れる」なんだけど ただ、それだけでこの数日どれだけ無駄にしてたか理解できると思うよ : [] 2018/10/22(月) 02:18:15.10:rGA5crV5 それなら参考にしたいので試しに自分がアップしたファイルで、 さんのインデントを入れたものを見せていただきたいです : [sage] 2018/10/22(月) 02:24:04.66:ktdTMJw1 ま、口でいうだけじゃ分からんこともあるだろうということで今回は特別にインデントを入れてあげよう ttp://jump.5ch.net/?https://paiza.io/projects/1R9_xdNXduPIL2T-pXM42Q これを見ておかしいところが分からない? それはちょっと困る展開だが…どう? : [sage] 2018/10/22(月) 02:44:54.75:ktdTMJw1 さてここまでやってしまったからについでに言うと >カウント0の時、Aの画像を認識するまでループ、認識できたら1の行動(カウント+1)でループを抜け出して次の処理へ >カウント1の時、Aの画像を認識するまでループ、認識できたら2の行動(カウント+1)でループを抜け出して次の処理へ >カウント2の時、Aの画像を認識するまでループ、認識できたら3の行動(カウント+1)でループを抜け出して次の処理へ まぁこの辺は経験とかないとこうなっちゃうのかなと思うが、簡単にすると以下だよね >カウントが0からnまで繰り返し、Aの画像を認識した時、カウント別の処理実行後、カウントを+1して次へ これをプログラムしやすく整形すると… >カウントが0からnまで繰り返し > Aの画像を認識した時、 > カウント別の処理実行後、 > カウントを+1 書くべきコードのイメージも大分違ってくるでしょう : [] 2018/10/22(月) 03:37:01.47:rGA5crV5 ありがとうございます にっちもさっちもいかず、ぐちゃぐちゃにしてしまったファイルをアップしたせいで、 より大きな誤解を招いてしまったところがあると思います… ttps://22.gigafile.nu/1029-d56268c68a387a2a9e4db0865ff3cf87f いま試行錯誤していたファイルをアップしてみました ちょうどあたり?に近かったのではないかと思われますが… ターン1→2→3→3→1という風に書いてあるにも関わらず、 ターン1→3→2、1→3→1、1→2→3など行動が飛ばされる時があります 戦闘開始.bmpを画像認識しなければ次へ進まないはずだと思うのですが、 異なる制御文でも入れてしまっているのでしょうか… : [sage] 2018/10/22(月) 04:28:57.69:ktdTMJw1 肝心のカウントを判定してないんだから順番通りになるわけもない そもそも… > カウントが0からnまで繰り返し > Aの画像を認識した時、 > カウント別の処理実行後、 > カウントを+1 ↑に近づけたつもりならwhileと画像認識はひとつ カウントのif文で分岐を書けばいいだけ 同じ判定がいくつも出てくるのは構造がおかしいと指摘したはずだよね てかこれだけ言ってもインデント無視する限りもうアドバイスしないのでそのつもりで : [] 2018/10/22(月) 04:36:33.96:rGA5crV5 勘違いなさってるようなので訂正させていただきますが、 のファイルはを拝見する前に自力で作成していたものです : [sage] 2018/10/22(月) 04:48:50.98:iCVScRLH まず状況整理のためにインデントをいれろというアドバイスがあったのに インデント入れてみてくれはさすがに乱暴だろ インデントについて調べて理解したの? IF文におかしいところがないか確認したの? : [] 2018/10/22(月) 05:00:05.30:rGA5crV5 を見ても一瞬で理解できない猿で申し訳ないとしか言えません を見て、どんなものかと始めたばかりなのでプログラムの記述式等に学が浅く、 言われてることを理解するのにも四苦八苦ですし、周りからすれば幼子に6+6の計算させたら指が足りないからわからないって言ってるようなものなのは申し訳ないです : [sage] 2018/10/22(月) 05:35:05.90:anSnU/H2 ID違うけどです に対して思いもよらないレスが返ってきたので2つ確認させてください 1.あなたは日本人ですか? 2.日本語苦手ですか? 煽りとかじゃなくてマジで中国人とかが日本のゲームやってbot使ってたりするので確認です : [] 2018/10/22(月) 16:04:47.06:qAlmLxF7 初心者用スレで何言ってんだこいつ : [sage] 2018/10/22(月) 17:38:03.95:8Ffx9AaH インデントを入れるとどこで処理が区切られているか、どこで処理がループされているかがはっきりするのでインデントを入れましょうって話だろ 初心者相手に「インデントを入れればわかる」で投げっぱなしはそらキツいっしょ インデントの入れ方の規則だってわからんだろうし : [sage] 2018/10/22(月) 18:08:33.49:X1R8clvb ここはuwscの初心者スレであってプログラミングの初心者スレではないからな : [sage] 2018/10/22(月) 18:13:22.50:FNc64wsF ゲームマクロなら画像認識とマウスキーボード自動化あればいいんだから言語なんてなんでもいいんだけどね。 開発環境しっかりしてるVBとかのほうがいいような気もする。 : [sage] 2018/10/22(月) 19:00:12.21:QPF2Uwab 了解。次スレで検討する。 「プログラミング初心者のためのUWSCスレ」 で、よろしいか? : [sage] 2018/10/22(月) 19:36:21.25:ofo6/h19 多くの人にとってはインデントがあったほうが見やすいでしょうから 今インデントをしていないのは、単にインデントするのが面倒なのではないかと思います 多くのエディタでは 複数行を選んだ状態でTABを押すとインデントが深くなり インデントのある行を複数行を選んでSHIFT+TABでインデントが浅くなるという機能があります (※エディタによってはキー割り当てが違うこともあります) 今これというエディタを使っていないのであれば Mery (テキストエディタ) ttp://jump.5ch.net/?https://www.haijin-boys.com/wiki/ を使ってみてください。 このエディタは最初から 表示→表示モード に最初からUWSCが含まれています。 なので、UWSファイルを読み込んだだけで自動的に見やすいカラー表示をしてくれます。 ツール→オプションで最初にここだけ設定しておくと見やすいだろうという箇所は 「基本」タブで 「タブの桁数」で1タブでなん文字分字下げするか設定できます。 タブより空白がよければ「タブの代わりに空白を挿入」にチェック タブの代わりに空白でのTAB/SHIFT+TABによるインデントの増減が効きます 「基本」タブで 見やすいテーマを選択 「記号」タブで タブ表示、半角空白表示、全角空白表示 にチェックを入れる なお、自分が常用しているのは秀丸ですので、 このMeryエディタを広めたいとかいう意図ではありません。 : [sage] 2018/10/22(月) 19:41:11.57:ofo6/h19 ラ「基本」タブで 見やすいテーマを選択 ○「表示」タブで 見やすいテーマを選択 : [] 2018/10/23(火) 00:50:11.50:UxSE6/em 自分のせいでいろいろと申し訳ありません インデントについては普通にメモ帳でやってるのもあり、 一部HPではインデントをつけてないところもありコピペしてたので動作してから直そうと思ってました ttps://11.gigafile.nu/1030-dd4e47c88d4952d781d2d600256473315 再度修正してみました 「悩み中.uws」は目的の動作をしてくれるようになりましたので「ボス戦開始.uws」に名称を変更しました 一応動作はしてくれているのですが、正しい解決策がわからない部分もあります 行動が飛ばされてた原因がおそらく戦闘開始.bmpの画像を認識するスピードが速すぎて、 行動が終わる前に画像を再度認識してカウントをプラスしていたようで、 このやり方は違うとは思いつつもSLEEPで強制的に認識を止めてます 次にカウントで「戦闘開始.uws」についても修正してみました こちらも自分の思ったとおりの動作はしてくれているのですが、 1ターン目は完璧ですが、その後に戦闘終了の処理に移行してしまうので、 当然ながら2ターン目は動作しないということに… 「戦闘終了.uws」はメインで画像認識させた方が良いですかね… Mery調べてみます : [sage] 2018/10/23(火) 01:54:05.77:A3TfahIO 気づいたところをまず指摘しておきます ボス戦開始がどういうタイミングでどこから よばれるか今回アップされた中からは判断できませんが 当然メインからたどって何かのタイミングで呼ばれるかたちになるのだろうと思います。 ということはそこから メイン.uws をCALLしてしまうと らどんどん深いネストに入って無限ループに陥ってしまいます EXITEXITに達することはないはずです : [sage] 2018/10/23(火) 01:57:20.66:A3TfahIO 単純化すると次のような状態です 破線内をCALL_TEST1_MAIN.UWS,CALL_TEST2.UWSとして保存し CALL_TEST1_MAIN.UWSを実行してみてください ------------------------ //CALL_TEST1_MAIN.UWS STOPFORM( TRUE, G_SCREEN_W-400, 0) LOGPRINT( TRUE, G_SCREEN_W-400, 60, 400, 400) PRINT "CALL_TEST1_MAIN.UWS ファイル先頭" CALL CALL_TEST1.UWS SLEEP(2) PRINT "CALL_TEST1_MAIN.UWS CALL FUNC_MAIN1" FUNC_MAIN1(); PRINT "CALL_TEST1_MAIN.UWS ファイル末尾" ------------------------ //CALL_TEST2.UWS PRINT "CALL_TEST2.UWS TOP" FUNCTION FUNC_MAIN1() RESULT = 0 SLEEP(2) CALL CALL_TEST1_MAIN.UWS PRINT "FUNC_MAIN1 END" EXITEXIT FEND PRINT "CALL_TEST1.UWS ファイル末尾" ----------------------- : [sage] 2018/10/23(火) 02:00:25.52:A3TfahIO 訂正 単純化すると次のような状態です 破線内をCALL_TEST1_MAIN.UWS,CALL_TEST1.UWSとして保存し CALL_TEST1_MAIN.UWSを実行してみてください ------------------------ //CALL_TEST1_MAIN.UWS STOPFORM( TRUE, G_SCREEN_W-400, 0) LOGPRINT( TRUE, G_SCREEN_W-400, 60, 400, 400) PRINT "CALL_TEST1_MAIN.UWS ファイル先頭" CALL CALL_TEST1.UWS SLEEP(2) PRINT "CALL_TEST1_MAIN.UWS CALL FUNC_MAIN1" FUNC_MAIN1(); PRINT "CALL_TEST1_MAIN.UWS ファイル末尾" ------------------------ //CALL_TEST1.UWS PRINT "CALL_TEST1.UWS TOP" FUNCTION FUNC_MAIN1() RESULT = 0 SLEEP(2) CALL CALL_TEST1_MAIN.UWS PRINT "FUNC_MAIN1() 終了" EXITEXIT FEND PRINT "CALL_TEST1.UWS ファイル末尾" ----------------------- : [sage] 2018/10/23(火) 02:07:54.16:mm3zor/C 次のようなかたちになるべきかと思います CALL_TEST2_MAIN.UWS,CALL_TEST2.UWS を保存し、CALL_TEST2_MAIN.UWSを実行してみてください ----------------------- //CALL_TEST2_MAIN.UWS PRINT "CALL_TEST2_MAIN.UWS ファイル先頭" STOPFORM( TRUE, G_SCREEN_W-400, 0) LOGPRINT( TRUE, G_SCREEN_W-400, 60, 400, 400) CALL CALL_TEST2.UWS WHILE 1 SLEEP(1) PRINT "CALL_TEST2_MAIN.UWS FUNC_MAIN1() 実行" FUNC_MAIN1(); IFB BTN_NO = MSGBOX( "もう一度実行しますか", BTN_YES OR BTN_NO) THEN MSGBOX( "OK後20秒で終了します") // EXEIEXIT してもいいが抜ければ自然に終了する BREAK ENDIF WEND PRINT "CALL_TEST2_MAIN.UWS ファイル末尾" SLEEP(20) ------------------------ //CALL_TEST2.UWS PRINT "CALL_TEST2.UWS ファイル先" FUNCTION FUNC_MAIN1() PRINT "FUNC_MAIN1() 関数先頭" RESULT = 0 SLEEP(1) PRINT "RETURN TO MAIN" PRINT "FUNC_MAIN1() 関数末尾" FEND PRINT "CALL_TEST2.UWS ファイル末尾" ------------------------ : [sage] 2018/10/23(火) 02:27:59.59:poTZwO/U …二文字か四文字半角スペースにしてくれ 書いてて見にくくない? 適宜sleep入れるのは普通のこと 何も指定しなかったら常に最速でプログラムは回っちゃうから、ボタンの反応や画面切り替えを想定したウェイトを入れるべし 従って後者もwhileの最後にターンとやらの切り替わる猶予を待たせたるか、ボタンが押せる状態か判定を入れてもいい (もちろん組み合わせてもいい、二重操作防止のsleepと操作受付判定いれれば完璧) : [] 2018/10/23(火) 03:09:10.20:UxSE6/em Mery使いやすいですね ttp://kobuji.me/tips/call/ >他のマクロを呼び出し現在のマクロを終了する ここの部分を参考にしてみて、一応動作はしているのですが、 なんとなくそうだろうとは思っていたものの、やはり問題ありますよね メイン→ダンジョン選択→ダンジョン1→ボス戦開始(→戦闘が終わったらメインに戻る) の書き込みから意識して深い階層に行くようにして、 流れはこのように考えているのですが、再度ドツボにハマってきました 今のところの自分が考えている問題点は以下です ・「ボス戦開始」で戦闘が終了した時に「メイン」に戻る ・「ダンジョン選択」でダンジョンを選ばなかった時に「メイン」に戻る ・「戦闘開始」の2ターン目以降とをどうするか 普通のことだったんですね、それなら「ボス戦開始」のカウント処理は問題なさそうです あとは2ターン目以降の問題ですが、どう判定させるか考えてみます : [] 2018/10/23(火) 06:04:39.54:xet0u+mg ・「ボス戦開始」で戦闘が終了した時に「メイン」に戻る ボス戦開始の条件はボス画像を発見したら? それとボス戦は戦闘開始.uwsを再利用できる? 戦闘開始.bmpを画像検索してるルーチンに組み込めないかな? それができれば宝箱の判定をしたあとにExit入れればメインに戻れる ・「ダンジョン選択」でダンジョンを選ばなかった時に「メイン」に戻る メインに戻るための条件を組み込めばできそう ・「戦闘開始」の2ターン目以降とをどうするか どのキャラにどういう行動をさせたいのか 今の所1つのキャラに対して行動が1パターンしかないよね : [sage] 2018/10/23(火) 07:56:13.12:poTZwO/U をよく読め : [sage] 2018/10/24(水) 03:06:06.77:JPOPYXjO 例に出したようなかたちだったら問題があるというだけで 実際に問題があるかどうかは作り方次第です。 CALL おわり.uws EXITEXIT だとしても ------------- //おわり.uws FUKIDASI("おわります") SLEEP(5) FUKIDASI() ------------- だとしたら何の問題もありません。 自分が呼び出されてる元を呼んでしまうので問題がある(可能性が高くなる)わけです 戦闘が終了したら「メイン.uws」に戻る といういいかたの通り呼び出されたところに“戻る”べきであって メインを呼んでしまっては戻るのではなく“潜って”しまいます。 前回よりもさらに単純化していうと PROCEDER test_proc() test_proc() FEND という状態です 再帰呼び出しといいますが test_proc()を呼ばずに抜ける条件がなければ無限ループになります : [sage] 2018/10/24(水) 08:38:49.61:EHDjbV6E 再帰呼び出しや無限ループになるならまだいいが、uwscでそれやると行き着く先はスタックオーバーフローである 前にも書いたがcallのところに内容をコピペすると考えて、一度テキストエディタ上で実際にペーストしてみて どうなるのか確かめて見たらいいと思う ※メインを上からなぞりcallの行をcall先の中身に置き換える というか最終的に別スクリプトに分割するのは悪いことじゃないが、そもそも質問者が期待するような 動作が早くなったり制御が楽になるなんてことはなく逆にミスの温床にしかなってないから1ファイルに戻した方がいいかも? : [] 2018/10/26(金) 11:32:57.00:KT8sz2lK UWSCと言えば、お絵かきソフトをプロッター代わりにして ドラゴン曲線を描いた覚えがある : [sage] 2018/10/26(金) 12:14:58.57:rGWXcnDl そういう使い方があったのか 目から鱗だな : [sage] 2018/10/26(金) 12:35:28.21:Ho1Po0zE ペイント使って最初にやったな : [sage] 2018/10/26(金) 22:49:03.24:EeaDtgcV 面白いけどペイントソフトのスクリプト使った方が効率的 : [sage] 2018/10/27(土) 12:35:52.24:XTWU7dAT 2ヶ所クリックをctrlキー使えばいいかなーと思ってコード書いたけど、 どうしても上手くいかなくていろいろ調べたらタブで繋げばよいと知った 知らないことたくさんあるなー : [sage] 2018/10/30(火) 12:54:19.69:wR+aWlcX ttp://jump.5ch.net/?https://github.com/DoranekoSystems/ChkImgX_Extension ChkImgX AutoItにも対応いたしました。 : [sage] 2018/10/30(火) 13:07:46.54:QwfsTk/G なぜuwsc専用スレに他のアプリ対応を宣伝しにくるのか…ほんと頭おかしい : [sage] 2018/10/31(水) 20:55:50.19:Gkg/z3xB 個人情報抜き取られたりウイルス感染したりしない? : [sage] 2018/10/31(水) 23:58:01.63:qEtCZoW0 アップしてるのはただのスクリプトなので怪しいなら見てみればわかります。 外部と通信してることなど一切ないです。 ChkImgX.uwsとほぼ同じことをしてるだけですね。 : [sage] 2018/11/01(木) 09:05:29.68:97yVLdc+ 構っちゃだめですよ : [sage] 2018/11/04(日) 16:41:46.76:4y7rUrKd pro版のデバッガも試用期間過ぎると使えなくなりますか? あと記憶が不確かなんですが前にpro版の試用期間を過ぎたあたりの タイミングでスクリプトが勝手にスクランブル掛かってしまったんですが どういう条件で起きるのでしょうか 自分でスクランブル掛けてないのは間違いないです : [sage] 2018/11/04(日) 17:29:09.86:4dOMj00Y 自分で試用期間を過ぎたって連呼してて何言ってんだ… : [sage] 2018/11/04(日) 19:29:50.98:WH4Iex1S 「pro版のデバッガ」はそういう意味ではないかもしれない でも普通に読むと、何言ってんだとしか言えんわなw : [sage] 2018/11/04(日) 21:26:15.36:4y7rUrKd 試用期間過ぎたら勝手にスクランブル掛けるって ちょっと信じ難かったので質問しました ありがとうございました : [あ] 2018/11/19(月) 12:00:31.20:Bnz7GW+k の見させていただいたのですが While True //Wendまでの処理を繰り返す。 ifb chkimg("image1.bmp") //" "内に指定した画像を認識したら処理開始 btn(left,click,g_img_x,g_img_y) //画像の座標をマウスの左ボタンでクリック elseif chkimg("image2.bmp") //1つ目の画像が見つからなかったら別の画像を検索 btn(left,click,g_img_x,g_img_y) //画像の座標をマウスの左ボタンでクリック else //上記の条件全てに当てはまらなかった場合 print "画像が見つかりません" //メッセージを出す。 endif sleep(3.5) //()内の秒数待機 Wend とありますが逆に画像が見つからなかった場合クリックする方法はありませんでしょうか? 例 画像が見つかればスルー 画像が見つからなかったらクリック よろしくお願いします。 : [sage] 2018/11/19(月) 12:22:00.42:FEO3fFuI 質問に対してそのまま返答すると else内でbtn使えばいいよ ってなるんだけど 多分そういうことを聞きたいんじゃないのだと思ってる : [sage] 2018/11/19(月) 13:23:15.10:F1pQ/Nbq 見つかった場合だと座標指定にchkimgのg_img_x/yが使えるけど、見つからなかった場合はどうやってということかね あらかじめメモって数値なり変数で指定するだけだが : [あ] 2018/11/19(月) 13:34:46.71:Bnz7GW+k ありがとうございます。 実は目的は画像が出てくるまでenterを押し続けて画像が出てきたら enterをストップして次の行動にうつりたいのですが While !chkimg("gazou",0,,,,,,IMG_MSK_BGR4) KBD(VK_enter) SLEEP(0.7) WEND で無限ループは可能なのですが画像がずっと見つからない場合抜け出せなくなるのですよね どこかにbreakを入れれば抜け出せると思うのですが 理想としては10回enterを押して画像が見つからなければ次の行動にうつる といった感じです。 前このスクリプトを聞いてかなり叩かれたのでちょっと別のスクリプトで応用しようとして聞きました。 難しいと思いますがもしよかったらお願いします。 : [sage] 2018/11/19(月) 14:20:27.92:L9zCa8ZR 10回押すというかそれ10回ループしたらええやん : [sage] 2018/11/19(月) 14:45:20.37:qv8H9IjA 叩かれてそれから君は少しでも自分で調べようとしたの? uwsc whileとかでググってでてくるサイトでも見りゃすぐに答え見つかるんだけど : [sage] 2018/11/19(月) 14:54:23.56:J6erJctM 繰り返し回数決まっているならFor To Next文でもいいし ヘルプ、付属サンプルみてみた? : [] 2018/11/19(月) 15:00:05.80:lM8hlL/3 叩かれたのは調べればすぐわかることを聞きっぱなしで意味もわからず使って調べようともしないからだぞ 何もわかってねーのな ググる以前にヘルプに書いてある程度のレベルじゃん : [sage] 2018/11/19(月) 15:18:49.89:TYiI0aDU 俺が難しいと思うのは137との意思疎通であって やりたい事も実現するコードも多分 簡単だと思ってるよ : [あ] 2018/11/19(月) 15:35:41.43:Bnz7GW+k ヘルプを結構読んでググっても付属サンプル見ても見つからないのでまたいきなり 聞くのも悪いのでしばらく経った後聞いてみました。 どうしても出てくる画像がランダムなので回数を決められないんですよね 向いてないと言われるかもしれませんがこのソフトのおかげでゲームマクロでかなり生活も助かってまして すみません また荒れると悪いのでしばらくこの辺にしておきます : [sage] 2018/11/19(月) 15:47:05.45:X6A/Pm1x おいおい初心者スレなのにそんなにいじめたら可愛そうだろ。 お前らは何か勘違いしているようだな。よく考えろ。 向こうのスレののこいつの書き込みから3ヶ月経ったが、whileやbreakはおろか、ifやforという基礎中の基礎すら未だ理解していない。 これはもはや自分で考えたり習得する気は微塵もなく、ただ答えを教えろ、代わりに作れと言っているだけ。 そんな奴にググれだのヘルプ見ろと言うことがそもそも無意味で間違いなんだよ。 さらに言えばそれでは向こうのスレと全く同じ流れでこのスレを建てた意味がない。 ここは初心者スレらしく、ヒントやヘルプ見ろなどと意地悪するのではなく、懇切丁寧に答えを教えてあげるべき。 ちなみに僕は初心者なのでよくわからない。 : [sage] 2018/11/19(月) 17:04:30.02:+ZNV2ej4 「条件を満たしたらループから抜ける」 なんてーのは基礎中の基礎以前にら自力でも考え付くだろ わからなきゃこのワード+uwscでググれば答えが出てたぞ。まじめに調べてないだろお前 : [sage] 2018/11/19(月) 19:43:37.32:XkF2k9TP 正常性バイアスというか、それなりに動くものが一度出来ちゃうとそれに固執しちゃうのは初心者っぽくはある たぶんもっと簡単に抜ける条件があるのに回数(しかも不定とかイミフ)に囚われすぎ : [さs] 2018/11/19(月) 20:19:06.74:Bnz7GW+k 回数のほかに理想としてるのは時間ですね は私なのですが 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 さんに教えてもらったこのスクリプト物凄く助かりました。 今現在も利用させてもらっています。 これは10秒の間に画像が見つからなければ次の行動に向かわせるマクロなのですが 目的のはenterを10秒間連続で押しても画像が見つからなければ 次の行動に向かうでも目的は達成できますね。 画像が見つかった場合どうしてもそれ様のスクリプトをスタートしないといけないんですよね なので1秒ずつコレを作ってもまたenterを押してしまって 説明が下手ですみません if 画像 見つかったときの処理 else エンター endif を10個用意して試してちょっとおしいって感じだったんですけど結局途中でエンターをずっと連打 してしまうんですよね でもこれでも別の目的のマクロでは使えてるので凄く助かっているのでuwscと 5ちゃんねるには感謝しています。 : [sage] 2018/11/19(月) 21:05:53.38:+ZNV2ej4 いったい何のゲームのマクロなんだ?w 有名なMMOの自動戦闘マクロなら結構作ったが、ひとつひとつ手順をつぶしていけばいつのまにか出来てるぞ 索敵してタゲった場合にゲージが出るゲームなら、それをpeekcolorでチェックしたほうが速くて確実 それと、見つかったら発見フラグを立てて、それが存在するときは「エンター動作」とやらをしなけりゃいいだけじゃないのか : [さ] 2018/11/19(月) 21:21:32.06:Bnz7GW+k すみませんゲーム名はさすがに伏せさせてください 戦闘は一通り作れたのですがもっと手を入れたいのはいわゆる生産系と特殊な行動ですね ある程度ゲーム内通貨を稼げる生産系マクロも作れたのですがあるものにどうしても特殊な動きが必要でさきほどの内容を聞きました わからなくても特別困ってはないのですがわかればもっと便利になるといった感じです。 : [sage] 2018/11/21(水) 16:57:13.35:Idcs0zEb 見つかるまで回す処理にwhile 変数 = falseって形でフラグ使ってるけど変数増えすぎて面倒になってきた 見つかるまで繰り返す処理を実現したい : [sage] 2018/11/21(水) 17:15:39.42:A7QyS99w while !chkimg("a.bmp")とか : [sage] 2018/11/21(水) 17:41:08.13:WARGIWsC ゲームだとカウンタを使うことも多いので、結果的にフラグと同等のものが存在することが多い ので、それで判別しちゃうとか : [sage] 2018/11/21(水) 18:12:22.90:R5CLMRXS while true if chkimg(略) breake 見つかるまで繰り返す処理 skeep(1) wend 超適当だけどこういうのじゃいかんの? : [sage] 2018/11/21(水) 20:33:04.38:cYYMBbSe チェックが複雑になるならメソッドで切り出すのがいいかと while checker(...) exec(...) sleep(1) wend : [sage] 2018/11/23(金) 13:16:42.45:WWSF1RwR とのやり方が簡単に取り入れられ便利でした!ありがとうございました! : [あ] 2018/12/01(土) 14:30:51.62:mlx9p/i1 以前質問したですが t1=GETTIME() WHILE ((GETTIME()-t1)<3) IF ((CHKIMG("gazou",0,,,,,,IMG_MSK_BGR4) =TRUE)) THEN BREAK KBD(VK_enter) SLEEP(0.7) WEND でついさっき解決しました お騒がせしました もしわからない方がいたら参考にしてください : [sage] 2018/12/01(土) 16:43:58.50:03mmxMXD =TRUEいらねーよ、ほんと何一つ身につかない奴だな… : [sage] 2018/12/01(土) 16:55:12.78:0p3QcmHs こんなゴミコードは参考にしたらあかんで : [sage] 2018/12/01(土) 17:03:05.49:GMnbtXEB こんなものに半月かかったのか… よくこの有様で参考にしてくれとか言えるもんだな : [sage] 2018/12/01(土) 19:53:18.31:sZ8MPu8b まぁuwscの初心者スレだしいいんじゃね 普通ならpythonでChrome操作するし : [sage] 2018/12/01(土) 19:56:00.80:sZ8MPu8b Chromeの話してるの別のuwscスレだったわw : [sage] 2018/12/01(土) 20:02:22.73:jvJ8ZaHQ これはもう初心者とか言うレベルじゃねーわ 初心者でもまともな人間ならもう少しオツム使って考えるわ : [sage] 2018/12/01(土) 21:36:21.31:WGIeQzk8 ソフト板から流れてきた普段プログラムなんか書かない奴のリテラシーはこんなもんじゃないの : [sage] 2018/12/03(月) 13:56:00.28:w4MaeKI9 noxで以下の用にドラッグドロップを繰り返すようにしているのですが、 これをウィンドウをアクティブ化せずにバックグラウンドで行わせて手前でPCの操作を出来るようにすることは可能でしょうか? ACW(GETID("NoxPlayer","Qt5QWindowIcon"),339,239,425,593,0) FOR X = 1 to 5000 BTN(LEFT,DOWN,641,740,30) MMV(641,755,11) MMV(639,751,10) MMV(569,653,5) MMV(566,646,1) BTN(LEFT,UP,565,644,3) MMV(565,643,15) MMV(564,600,15) BTN(LEFT,DOWN,564,597,47) MMV(563,597,31) MMV(562,597,16) MMV(518,628,16) MMV(513,631,16) MMV(511,633,15) BTN(LEFT,UP,511,634,78) NEXT : [sage] 2018/12/03(月) 14:05:26.11:AISq9KtV nox_adb使えばいいよ 本スレで話題に上がってた : [sage] 2018/12/03(月) 14:19:38.04:w4MaeKI9 nox-adbでデバイスID指定して、その中の絶対座標でドラッグドロップさせればそれらすべてバックグラウンド処理できるという事でしょうか 試してみます ありがとうございます : [sage] 2018/12/26(水) 19:46:55.86:lZXR1qia 代数の呼び出し?ってどうやるんですか? a = "abcd" fukidasi("a ") SLEEP(5) これだと aしか表示されないです。 auto hot key だと%でくくる奴です。 a := "abcd" MsgBox, 0, , %a% Sleep, 5000 : [sage] 2018/12/26(水) 19:51:42.50:50Xsz/KL fukidasi(a) : [sage] 2018/12/26(水) 20:05:12.07:lZXR1qia サーセン : [sage] 2018/12/27(木) 16:03:50.96:lC6iyiD1 デスクトップにあるaaa.txtをデスクトップのa aフォルダに移動したいのですが a = "C:\Users\xxx\Desktop\aaa.txt" b = "C:\Users\xxx\Desktop\a a" DOSCMD("move " + a + " <#DBL>C:\Users\N'o'Te\Desktop\a a<#DBL>") これだと動くのですが、下の記述だと移動してくれません。 DOSCMD("move " + a + " " + b + "") どうすれば動のでしょうか。 : [sage] 2018/12/27(木) 16:10:54.01:Lwj8mmb4 まずはdoscmdの返り値で何のエラーか確認する てかダブルクォート外しちゃったからってだけだろうけど : [sage] 2018/12/27(木) 16:41:38.79:lC6iyiD1 返り値の出し方わからなかったんですけどダブルクォートつけたらうごきました。 b = "<#DBL>C:\Users\xxx\Desktop\a a<#DBL>" これで良いぽいです。 : [sage] 2018/12/27(木) 22:25:30.23:TffHzaDx DOSCMD("move <#DBL>" + a + "<#DBL> <#DBL>" + b + "<#DBL>") とすれば "a","b" どちらのフルパス名内にスペースがあっても大丈夫 : [sage] 2018/12/28(金) 06:37:12.07:/5L8Sx5/ 返り値てかコマンドプロンプトの標準出力だけど doscmd自体が文字列返す関数なので変数に代入してもいいし、直接fukidasiとかに突っ込んでもおk : [sage] 2019/01/09(水) 18:25:52.61:pINC7IeU UWSCからプログラムに初めて触れる程度の初心者です。 画像認識について質問があります 現在複数の画像を設定してクリックするというコードを書いています。 While True ifb chking(“画像名1.bmp”) btn() elseif chking (“画像名2.bmp”) btn() .... Wend という文章になっており無駄が多いです。 それで一度検出した画像の検出をさせないプログラムを書きたいのですがそのような事は可能なのでしょうか?その際に使用する関数などアドバイスをしていただきたいです。 : [sage] 2019/01/09(水) 18:34:28.37:+1cYlkH0 単純にチェック済みフラグ立てて画像認識の前にif置けばいいんでね : [sage] 2019/01/09(水) 19:12:31.19:pINC7IeU !! その話詳しく聞かせて欲しいです。 While True if chking(“画像名1.bmp”) else ifb chking(“画像名1.bmp”) btn() if chking(“画像名2.bmp”) else elseif chking (“画像名2.bmp”) btn() .... Wend というわけではないですよね... 画像名1.bmp=0なら画像認識、1なら画像認識しない のような文を追加するのでしょうか? : [sage] 2019/01/09(水) 19:32:53.70:W2TzwIR9 そういうこと フラグの方法だと画像の枚数分フラグが必要になる 俺の提案 画像ファイル名を配列に格納してヒットしたら配列の要素にtrue格納する 当然画像検索前に要素がtrueか否かチェックする : [sage] 2019/01/09(水) 19:58:12.98:+1cYlkH0 まあ、実装方法は色々ある 最終的には配列を引数にした関数までいくと脱初心者って感じだが自分が言ったのは /a = true /b = true /略 /while true / if a and chkimg(“a.bmp”) then / btn() / a = false / endif / if b and chkimg(“b.bmp”) then /略 /wend みたいなの 行頭の/はインデントの為なので気にしないで : [sage] 2019/01/09(水) 19:58:28.44:pINC7IeU 本当に本当にありがとうございます!! 私の考えているコードです!! 本当にC言語等学んだ事がないので助かりました。 DIM gazou[]=“画像1.bmp”,”画像2.bmp”,”画像3.bmp” DIM flag[]=0,0,0 For num = 0 to length(gazou)-1 ifb flag[num]=0 ifb chking(“gazou[num]”) btn() num=num+1 else num=+1 NEXT かなり短縮することができました。 ただフラグを追加した途端文が不安になってしまいました。 : [sage] 2019/01/09(水) 20:03:46.42:pINC7IeU あーなるほど!考えてくださりありがとうございます a and chkingという使い方が良さそうですね の文を少し編集してみます! : [sage] 2019/01/09(水) 20:08:47.81:+1cYlkH0 for~nextの中で添字操作したらダメだよ nextが勝手にやるからいらない てかそれだと一周しかしないからwhileと組み合わせてね : [] 2019/01/09(水) 20:14:05.78:DJbFsP/v あっー!そういえばいりませんねw アドバイスありがとうございます あとこれのフラグを配列化したいのですがa,b,cは定数ですよね? 配列の中に入ったままa=trueなどの情報を持てるのでしょうか? DIM gazou[]=“画像1.bmp”,”画像2.bmp”,”画像3.bmp” DIM flag[]= a,b,c a = true b = true c = true while true for num=0 to length(gazou)-1 if a and chkimg(“gazou[num]”) then btn() a = false next wend : [sage] 2019/01/09(水) 20:15:43.50:pINC7IeU ごめんなさいId変わってますが同一人物です : [] 2019/01/09(水) 20:19:13.03:DJbFsP/v ごめんなさい解決しました! 付き合ってくださった方々ありがとうございます 画像が増えるたびa=trueを追加していけば以下の文章で大丈夫そうですね DIM gazou[]=“画像1.bmp”,”画像2.bmp”,”画像3.bmp” DIM flag[]= a,b,c a = true b = true c = true while true for num=0 to length(gazou)-1 if flag[num] and chkimg(“gazou[num]”) then btn() flag[num] = false next wend : [sage] 2019/01/09(水) 20:21:39.60:W2TzwIR9 画像がヒットしたらgazouに格納されてるファイル名をtrueで上書きすると言いたかった そしたら配列のフラグいらなくなるでしょ : [sage] 2019/01/09(水) 20:28:17.81:+1cYlkH0 そうやるなら DIM flag[]= true, true, true だね : [] 2019/01/09(水) 20:31:57.46:DJbFsP/v !!確かにそれを使えばもっと短くできますね やってみます : [] 2019/01/09(水) 20:36:48.88:DJbFsP/v 色々アドバイスありがとうございます DIM gazou[]=“画像1.bmp”,”画像2.bmp”,”画像3.bmp” while true for num=0 to length(gazou)-1 if gazou[num]!==flase and chkimg(“gazou[num]”) then btn() gazou[num] = false next wend これ完璧ですね!自宅に帰り次第実行させてみたいと思います!! : [sage] 2019/01/09(水) 21:28:06.29:pINC7IeU 本日ライセンス購入の件をumiumiさんに問い合わせをしたのですがやはり購入は厳しいですよね... : [sage] 2019/01/09(水) 22:51:04.96:W2TzwIR9 無理じゃないかねえ、返信あったらスレに報告して欲しい : [] 2019/01/12(土) 20:42:30.37:0UO0qOat この前コードの相談に乗っていたものです コードは完成したのですが DIM gazou[]="unko(1).bmp","unko(2).bmp","unko(3).bmp","unko(4).bmp","unko(5).bmp" //画像名 WHILE TRUE for num=0 to length(gazou)-1 //クリック対象マークの画像ファイルを指定 IFB gazou[num]=true and CHKIMG("gazou[num]") //クリック対象の画像が見つかった場合、その画像をクリック BTN() //クリック後はプログラムを終了する gazou[num] = true ENDIF //監視時間間隔[s] SLEEP(0.1) next WEND これで実行した場合chking("gazou[num]")が配列から使用されずgazou[num].bmpとして反映されてしまいunko(1)bmpとして反映されません chkingの中では配列を使用することが出来ないのでしょうか?アドバイスお願いします またproライセンスの購入の件ですがまだ返信が来てません : [sage] 2019/01/12(土) 21:04:21.05:AXIFw4s9 CHKIMG(gazou[num]) ダブルクォーテーションいらない : [sage] 2019/01/12(土) 21:08:06.71:HvhCDbr8 別にuwscに限った話でもないんだが、文字列をダブルクォートで囲うというのは、プログラム的な解釈をさせずそのままの文字列で扱って下さいということ 引数に文字列をわたしたいからといってダブルクォートで囲う必要はない : [sage] 2019/01/12(土) 21:15:06.03:0UO0qOat 返信ありがとうございます!! 配列使うの初めてで勘違いしてました。実行する事ができました!本当にありがとうございます! あとumiumiさんから返信が来た場合連絡に来ます : [sage] 2019/01/12(土) 21:29:00.23:HvhCDbr8 てかtrueの時はチェックさせないんだから!=では : [sage] 2019/01/17(木) 17:37:08.88:ywa0zm07 UWSCのスクリプトの停止をALT+F2から変えたいんですが、 設定を見たところ、2つのキーを押すしか選択肢がないみたいなんですが、 これをEscキーのみに変えられないでしょうか? : [sage] 2019/01/17(木) 18:07:29.42:3kooyktr 設定のところでは無理みたいだからスクリプト内で キーを監視して押されたら止めるのを組み込むしかないね : [sage] 2019/01/17(木) 18:15:04.25:pnYdwJsv 変えられない コードでesc押したら終了するように書いておく ループの先頭に if GETKEYSTATE(VK_ESC) then exit みたいな感じ : [sage] 2019/01/17(木) 19:51:17.64:ywa0zm07 どうもありがとうございます。スクリプトの方に記述しておきました。 : [] 2019/01/24(木) 13:58:09.20:Vpq0nFz5 マウスを取られずにドラッグ&ドロップの動作を行いたいのですがうまく動作しません。 現状はウィンドウIDを取得して mouseorg(id,2) btn(left,down,x1,y1) mmv(x2,y2) btn(left,up,x3,y3) としています。left,downまではできているようなのですがおそらくmmvが動作していない感じがします。 mouseorg(id,0)の場合はちゃんと動作するので原因が分からず困っております。 たかがドラッグ&ドロップ程度のことができないなんてことはないと思うのですがどなたか分かる方いらっしゃいませんでしょうか? : [sage] 2019/01/24(木) 14:25:47.31:AXBwS8sa ちょっとでもググって調べたらわかる事だけど、そのコードだけでは動作が早すぎる : [sage] 2019/01/25(金) 03:55:18.58:djc20dkg まずmmv挟む必要あるのかってのと遅延入れないとアプリ側で処理が追いつかない場合が多い : [sage] 2019/01/28(月) 03:10:09.68:a09O8V2t 六ヶ所あるポイントをランダムで五ヶ所クリックさせたいのですが、良い方法を教えてください。 ポイント1 x座標100 y座標185 ポイント2 x座標258y座標296 ポイント3x座標315y座標580 以下略 今書こうとしてるのが for i = 0 to 4 BTN(LEFT,CLICK,ここをランダムなポイントにしたい) next アドバイスよろしくお願いします。 : [sage] 2019/01/28(月) 08:20:03.77:kcLCmioN 配列とrandom : [sage] 2019/01/28(月) 13:16:10.93:M4hiQU5j randomで分岐してBTNのほうが 可読性が高くて俺は好き : [sage] 2019/01/28(月) 13:47:58.51:yROeBYe4 分岐は座標設定だけにしてBTNは1行にしようよ : [sage] 2019/01/28(月) 14:46:35.06:Cl/r/hmy クリックしないポイントん乱数できめる : [sage] 2019/01/28(月) 21:36:38.76:3+HKzeym アドバイスって言うかお前ら暇なんだろ俺のためにはよ作れ : [sage] 2019/01/28(月) 23:59:09.72:UNSPa4Eu 何を作ればいいですか? : [] 2019/01/29(火) 02:43:56.37:IO64zMNw 201です。書き忘れていて申し訳ありませんがsleepはいろいろ数値を変えて各動作に0~2秒程度余裕を持たせて試しています。 mmvも必要ないかもと思い抜いてみたりしましたが結果は変わりません。 そもそも裏動作でドラッグ&ドロップは可能なのでしょうか? 可か不可だけでも教えていただけると嬉しいです。 : [sage] 2019/01/29(火) 02:51:47.66:LOO3gYN5 裏動作できるかどうかはそのアプリ次第 簡単な確認方法として裏動作させて IDでSAVEIMGして正常にスクリーンショット取れればできる 取れなければできない : [] 2019/02/17(日) 20:05:21.25:z/uMXN8p CHKIMGXで画像の色を判定したいんですけどできますか? 例えば、元の画像が灰色だったらfalseが返ってくるようにしたいです。 : [sage] 2019/02/17(日) 21:23:07.92:QHQeXIGO !chkimgx(gray.bmp) 色を取得したいという話ならpeekcolor ただし座標の指定になる : [] 2019/02/17(日) 22:00:13.55:z/uMXN8p CHKIMGX(temp.bmp)の画像の色が同じじゃないときに処理通っちゃうんですけどそれは仕様ですか? : [sage] 2019/02/17(日) 22:08:55.58:QHQeXIGO 説明がめんどくさいから とりあえずchkimgxを含めた前後のコード貼ってくれ : [sage] 2019/02/18(月) 07:07:31.39:JSWq4P0e そういう機能が既にある CHKIMGX( 画像名, [ID, x1, y1, x2, y2, 番号, 判定閾値, 着目する色] ) 着目する色: 指定した色とどれだけ近いかでグレースケール化した画像を使ってマッチングの計算を行う。文字の色などを指定することで背景の変化に強いマッチング判定を行うことが可能 着目する色の引数に認識したいカラーコードを入れればOK。「色 判定 アプリ」とかで検索すれば認識したい画像からカラーコード生成できるサイトは引っ掛かる。 これで色違いでの誤動作はだいたい弾いてくれるよ : [sage] 2019/02/18(月) 11:57:12.20:B+vGb4gg 色の差(閾値)を考慮する機能、いつ頃実装されたのか個人的に興味ある 15年前には無かったような気がするんだが : [] 2019/02/18(月) 21:39:57.37:2CdapbG+ イメージはこんな感じの処理を期待しています。 ttp://jump.5ch.net/?https://imgur.com/Ax1fWdO CALL ChkImgX.uws winid = getid("Main") x1 = 0 y1 = 0 x2 = 1280 y2 = 720 Detect_num = 1 Threshold_delta = 5 Target_color = -1 startup_chkimgx() ifb CHKIMGX("pic/select.png" , winid , x1 , y1 , x2 , y2 , Detect_num , Threshold_delta , Target_color) CMD = "cd C:\Program Files (x86)\Nox\bin & nox_adb shell input touchscreen tap " + G_IMGX_X + " " + G_IMGX_Y DOSCMD(CMD) endif shutdown_chkimgx() : [sage] 2019/02/18(月) 22:39:55.29:nrhNd94Q スクリプトに問題はなさそう 閾値を調整しても駄目なんだよね? あと対象の画像をsaveimgで保存した画像で検索したらどうなるか 着目する色を指定するまでもない画像だとおもうんだけど : [sage] 2019/02/18(月) 23:02:29.08:CU6zYEEj ChkImgXは画像モノクロに加工して走査するからグレーボタンなんて閾値しだいかも これなら完全一致でChkImgのほうが良かったりして その際元画像はもう一回り青色範囲内にして背景含めない必要かな : [sage] 2019/02/19(火) 01:41:50.90:Wcea5l1h chkimgxは指定した判定画像に「近い」ものを探している かつ高速化の為に内部では判定画像も画面もグレースケール化して処理をしている (綺麗なグレースケールでなくかなりざっくりしたもの) なのでボタン背景色の違いはグレースケール化によって判別出来ない あるいは、あえて背景の青を着目色として指定すると青色有無が判定画像に強調されるので判別できるかもしれない ただしその場合、文字が消えてボタンの誤判定が発生すると思われる というわけで、素直にchkimg使ったらというに同意 : [] 2019/02/19(火) 20:27:55.49:/Cx1K2A5 ,221,222 ありがとうございます 参考にしてちょっとやってみます : [sage] 2019/03/09(土) 00:57:44.21:yFQrIlgr すみません別のUWSCスレにも書いたんですが クリックがうまくされず、待機時間など入れてみましたが失敗することが多く、 どのタイミングでクリックしてるのか見るためにBTN(LEFT,CLICK,)の前に print "クリックします" という処理を入れたらなぜか確実にクリックされるようになったのですが、何が原因なのでしょうか? : [sage] 2019/03/09(土) 17:08:59.22:kABtCqRT メッセージループやフォーカス問題かな アイドル状態になるまでメッセージループ回しつつ待機する処理を置く : [sage] 2019/03/09(土) 17:20:18.72:qrlmwqjK いや単に実行速度が早すぎるだけでしょ sleep入れるかbtnの引数見て待ち時間入れればいい : [sage] 2019/03/09(土) 17:22:38.46:pzt1chqt btn失敗するときはたいていウィンドウが非アクティブになってて1クリック目が受け付けられてないことが多いからウィンドウのアクティブ化を書いてあげると確実になる : [sage] 2019/03/09(土) 17:56:05.87:yFQrIlgr ありがとうございます。 とりあえず使えてはいますが毎回 ”クリックします” が表示されるので困ってます。 BTN(LEFT,CLICK,,,100)では失敗が多く、sleep(5)では機能しますが遅すぎるので、 print "クリックします"を仕方なく使っています 失敗するのはランダムなのでウィンドウはアクティブになっていると思うのですが。 : [sage] 2019/03/09(土) 18:00:11.83:yFQrIlgr クリックが長押しになっているのが原因のような気がしています 画面がドラッグされてしまうことが多いので : [sage] 2019/03/09(土) 21:35:40.19:qrlmwqjK よく分からないので再現できる程度のコード貼ってくれないか? アプリ隠したいならペイントでも電卓でも適当なものでいいからさ もしそれらで再現しないなら操作したいアプリ側の仕様もあるかもしれないし、切り分けの一助にはなるだろう : [] 2019/04/02(火) 13:20:23.00:VFSC/5Or INIファイルで16進表記はできないでしょうか? UWSC INI 16進 で調べてみたけど見つかりませんでした わかる方いたら教えてください 因みに$FFでは駄目でした : [sage] 2019/04/02(火) 13:43:08.63:jgYgVP75 10進数じゃなければ文字列として扱われるので その文字列を自力で変換するしかない : [] 2019/04/02(火) 19:46:22.94:Vs75GbqA EVAL : [sage] 2019/04/08(月) 02:47:11.35:YAySA4WV DIM writetval = $0000FFFF WRITEINI( "section", "hex", num_to_hexstr(writetval,8)) DIM readeval = hexstr_to_num(READINI( "section", "hex")) MSGBOX(num_to_hexstr(readeval,8)) FUNCTION num_to_hexstr(num, iwidth) RESULT = "$"+REPLACE(FORMAT(num, iwidth,-1)," ","0") FEND FUNCTION hexstr_to_num(strhex) RESULT = EVAL(strhex) FEND : [sage] 2019/04/08(月) 12:52:33.87:C44A9NNj 得られる結果は同じだが EVAL より VAL のほうが素直だったな : [sage] 2019/04/09(火) 23:02:37.42:hVRP1zbV UWSCでIBM大型計算機エミュレーターの制御はできるのだろうか? 録画機能を使ってもうまく録画してくれない : [sage] 2019/04/09(火) 23:56:12.98:elRErDJW TSO(TSS)かね? P-COMとかFalconとかソフト名含めてググれば(UWSCじゃなくてVBSとかで)多少事例は出てくるだろう てかそもそもエミュレータにマクロ機能ついてて外部ソフトで操作する必要はないと思うんだけど : [sage] 2019/04/10(水) 04:23:21.00:P1NdIghv 汎用機のエミュレータなんてあるのかよ 知らんかった : [sage] 2019/04/10(水) 08:14:42.95:m7iPF43E いや汎用機のエミュレータって例外的にコンソール端末のエミュレータを指すんだよ : [sage] 2019/04/10(水) 09:15:41.71:84IJZde6 PCで他のマシンのエミュレータなどという言葉が認知されるよりずっと前から汎用機の端末エミュレータの方が知られていたわけだが。 : [sage] 2019/04/10(水) 19:59:20.55:C73Jm2jh 別業務システムからExcelに落としたデータを 大型計算機に入力していきたいニーズがあり、 ふさわしい手段としてUWSCを選択しました : [sage] 2019/04/10(水) 20:44:34.98:frbWEK8l FTPやっていいか管理者に相談してみれば? 必要なデータ変換方法もこみで : [sage] 2019/04/10(水) 23:22:57.82:m7iPF43E ISPFで入力フォームがあって転記するのを自動化したいというお話し? そんなことするよりCSVか固定長に直してエミュレータのファイル転送機能かFTPでデータセットにしちゃった方がいいと思うけど まぁとにかくUWSCは全く適してないので、悪いこと言わんからさっさと有識者捕まえて教えてもらいな : [sage] 2019/04/15(月) 13:11:00.13:R0+d+gEp ttp://jump.5ch.net/?https://qiita.com/macro_no_deshi/items/dd3b3405123bad0cfe4a ここを参考に、NOXで裏マクロ化したいのですが動作しません IF CHKIMGX( "画像1.bmp", winid, x1, y1, x2, y2, Detect_num, Threshold_delta, Target_color) BTN(LEFT, CLICK, G_IMGX_X+300, G_IMGX_Y+200) ENDIF これで動作するマクロを裏マクロ化したいので、上記HPを参考に以下の記述にしてみましたが動作しません NOXの保存先はデフォルトです IF CHKIMGX( "画像1.bmp", winid, x1, y1, x2, y2, Detect_num, Threshold_delta, Target_color) CMD = "cd C:\Program Files (x86)\Nox\bin & nox_adb shell input touchscreen tap " + (G_IMGX_X+300) + " " + (G_IMGX_Y+200) PRINT CMD DOSCMD(CMD) ENDIF PRINTで表示されるテキストには、以下のように記載されています cd C:\Program Files (x86)\Nox\bin & nox_adb shell input touchscreen tap 440 300 コマンドプロンプトで直接入力すると以下のように返ってきます error: no devices/emulators found : [sage] 2019/04/15(月) 13:31:06.08:cJYPoSuP no devices/emulators found エミュレーターが接続されていませんよと出てるので今立ち上げているエミュがadbに接続されているか確認 複数立ち上げているならマクロを回したいエミュを指定する必要がある no devices/emulators foundまで表示されているということはnox_adbまではコマンドが通っているはずだからその先を見直す : [sage] 2019/04/16(火) 16:11:07.01:OH4xxM/G エンコードの自動化をしたいのですが、エンコードソフトにファイルを渡した時、 たまにエラーが出るのですがそれを回避したいです。 エラー時はコマンドウインドウが出るので "いいえ"を選択すれば回避できます。 if ID = -1 でエラーウインドウが出なかった場合は行けるのですが エラーウインドウが出た場合の指定ってできるのですか? 一応下のコマンドで作ってみたのですが、動くには動くのですがエラーが出なかった場合10秒ほど 止まってしまい、その後動き始めます。 うまく動かすにはどうすればいいのでしょうか 質問id=GetID("質問","Qt5QWindowIcon") IF 質問id = -1 ELSE clkitem(質問id,"いいえ",CLK_BTN) endif : [sage] 2019/04/16(火) 16:18:38.91:8xPkTgw7 ヘルプより 戻値 = GETID( タイトル, [クラス名, 待ち時間秒, MDI子タイトル] ) 待ち時間秒: 確認できるまで指定された秒数待ちます (0.01~) 0: 0.1~10秒まで状況や負荷により自動判断 (デフォルト) -1: 無期限待ち : [sage] 2019/04/16(火) 16:52:24.80:OH4xxM/G 質問id=GetID("質問","Qt5QWindowIcon",0.5,) こうしたらサクッと動きました! ありがとうございます。 : [sage] 2019/04/24(水) 22:39:44.25:HpurvKDn 私もと同じサイト見て裏マクロを実行しようとしているのですがうまくいきません 認識した位置でSAVEIMGを使って確認すると、認識している位置はあっていましたが、 ペイントソフトを入れてどこをタップしてるのか見ると認識したところからずれているのが分かりました 縮尺がずれているような感じなのですがなぜそうなったのかがわかりません : [sage] 2019/04/24(水) 23:08:04.34:HpurvKDn 手探りで調節すると x方向に1.8倍、y方向に1.9倍ぐらいすれば近いようになるのですがよくわかりません… : [sage] 2019/04/25(木) 00:53:43.08:/PrCm3A4 Noxでやってるって話ならウインドウ縮小してるのでは? 当然ながらデスクトップの解像度よりNoxは小さいサイズで縮尺100%の状態で座標判定する必要がある (設定からウインドウサイズの復元でサイズ100%になる) 注意点は縦画面のアプリ、横のサイズが縦になるから入らなくなるので自動で縮小される : [sage] 2019/04/25(木) 01:18:48.74:nkG7yKYZ Yだけズレてるなら画面枠だろ マクロ解説のqiitaの最後の方に書いてる : [sage] 2019/04/25(木) 14:40:58.77:nqSsKFf7 解像度を携帯電話720ラ1280でやってましたが PCの解像度が低くて自動的に縮小されてたんですね カスタムで360ラ640のサイズにしたら狙った通りの場所をタップしてくれました マクロ以前の話でしたね… レス有難うございました : [sage] 2019/05/07(火) 19:34:12.96:tBIfA+Hb 音が止まったら(無音状態になったら)クリックする というマクロを作りたいのですが音が出ているか出ていないかを検知する関数はないのでしょうか? : [sage] 2019/05/07(火) 21:18:38.19:uIMNwWvX そんな関数あるわけないじゃん やり方はいくらか思いつくが ・サウンドドライバから出力レベルを取る ・常駐するレベルメーターを表示するソフトを使って画像認識する : [sage] 2019/05/07(火) 23:25:46.31:L8iv3v8M 音って何? マイクから拾う音? PCが出してる音? : [sage] 2019/05/07(火) 23:33:02.29:tBIfA+Hb サウンドドライバから出力レベルを取る方法が知りたいです 教えてください PCから出してる音 : [sage] 2019/05/07(火) 23:42:30.40:uIMNwWvX 具体的な方法は知らん それこそレベルメーターのソースでも読んでくれよ : [sage] 2019/05/08(水) 20:51:34.11:bLQQQcYM 高速リアルタイム スペクトラムアナライザー WaveSpectra ttp://jump.5ch.net/?http://efu.jp.net/soft/ws/ws.html WS151.ZIP とかで上の波形が直線になることを画像認識するのがお手軽と思う Core Audio Interfaces ttp://jump.5ch.net/?https://docs.microsoft.com/en-us/windows/desktop/coreaudio/core-audio-interfaces IAudioPeakMeter interface ttp://jump.5ch.net/?https://docs.microsoft.com/en-us/windows/desktop/api/Devicetopology/nn-devicetopology-iaudiopeakmeter IAudioPeakMeter interface ttp://jump.5ch.net/?https://docs.microsoft.com/en-us/windows/desktop/api/Endpointvolume/nn-endpointvolume-iaudiometerinformation For a code example that uses the IAudioMeterInformation interface, see Peak Meters ttp://jump.5ch.net/?https://docs.microsoft.com/ja-jp/windows/desktop/CoreAudio/peak-meters hr = pMeterInfo->GetPeakValue(&peak); IAudioMeterInformation::GetPeakValue method ttp://jump.5ch.net/?https://docs.microsoft.com/en-us/windows/desktop/api/Endpointvolume/nf-endpointvolume-iaudiometerinformation-getpeakvalue ↓これはPowershellでの例 .net – ウィンドウが現在サウンドを再生しているかどうかを調べる ttp://jump.5ch.net/?https://codeday.me/jp/qa/20190319/438303.html : [sage] 2019/05/09(木) 20:25:45.26:Tv5gs4em 試してみたけど これそのまんますんなり使えるな ttp://jump.5ch.net/?https://codeday.me/jp/qa/20190319/438303.html Add-Type -TypeDefinition @' から '@ までの後ろに [Foo.Bar]::IsWindowsPlayingSound() を付け足して IsWindowsPlayingSound.ps1で保存 DIM playng = POWERSHELL("C:\TEST\IsWindowsPlayingSound.ps1") で音が出てればTrue、出ていなければFalseが返るようになる 今までPOWERSHELLスクリプトを実行したことがなれれば 実行できないとエラーがでるので管理者権限でポリシーの設定が必要 UWSCでpowershell()関数使ったらエラー出た問題 ttp://jump.5ch.net/?https://stuncloud.wordpress.com/2014/07/10/uwsc_powershell_func_had_error/ もしくはPOWERSHELL()でなくDOSCMD()を使って DIM playng = DOSCMD("powershell -ExecutionPolicy RemoteSigned -File C:\TEST\IsWindowsPlayingSound.ps1") : [sage] 2019/05/09(木) 20:32:53.56:Tv5gs4em 数値として取りたい場合は public static bool IsWindowsPlayingSound() を public static float GetWindowsPlayingSoundLevel() にして return value > 1E-08; を return value; [Foo.Bar]::IsWindowsPlayingSound() を [Foo.Bar]::GetWindowsPlayingSoundLevel() にすれば 数値としてとれるようになる : [sage] 2019/05/09(木) 22:09:26.74:vpcETFXO いやいや、何でPowerShell経由にするのよ? UWSCに移植できないの? : [sage] 2019/05/09(木) 22:23:47.98:QmBofejm ??? : [sage] 2019/05/11(土) 14:40:46.22:DJ2xDk2H この内容ならC#でexe化した方が良いよ : [sage] 2019/05/14(火) 08:05:11.43:sv+72Rh7 のサイトのサンプルコード(完成形)を、画面サイズと画像ファイル名だけ変更して 実行してみたのですが、 jobexp.bmpを発見しました。 cd C:\Program Files (x86)\Nox\bin & nox_adb shell input touchscreen tap 718 183 とテキストだけが繰り返されて、画面がタップされません。 パスをコマンドプロンプトから実行すると、画像認識した座標がタップされるのですが・・・。 どこを見直したら良いでしょうか? : [sage] 2019/05/14(火) 12:37:31.12:1misB5a+ noxのパスを確認 ドライブ跨ぐならそのコードでは通らない : [sage] 2019/05/14(火) 14:48:00.89:sv+72Rh7 ドライブは跨いでいないと思います。デフォルトのCドライブにインストールしてあり、 パスも確認しました。 試しに、 DOSCMD("cd C:\Program Files (x86)\Nox\bin & nox_adb shell input touchscreen tap 718 183") コレだけUWSに書いて実行しましたが、やはりタップされません。 コマンドプロンプトからだとタップされます。何でだろう。 : [sage] 2019/05/14(火) 17:45:58.53:0VcVEbfQ コマンドプロンプトで cd C:\Program Files (x86) はスペースが入っているからだめ cd "C:\Program Files (x86)" uwscでの"の書き方は<#DBL>なので注意 : [sage] 2019/05/14(火) 18:41:30.62:RRkLRWVV その結果(doscmdの返り値)のメッセージを確認しよう ちなみにドライブ跨ぎの指摘はnoxとuwscが同じドライブかという話し : [sage] 2019/05/14(火) 19:44:15.43:yddlmgGB GETKEYSTATEの入力キャッチするタイミングがよく分からないです。 SLEEP(30) IFB GETKEYSTATE(VK_A) MSGBOX("Aが押されました") ENDIF て感じでSLEEP中にAキーを押下するとSLEEP後の判定でTRUEになる。 気持ち的にはIFBのタイミングで押下していないとFALSEになると思うんだけど。 そういう仕様なのか自分の環境によるのかどっちなんだろう。 : [sage] 2019/05/14(火) 20:35:55.94:sv+72Rh7 PRINT DOSCMD(省略) の出力内容で良いでしょうか? 'nox_adb' は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されていません。 で、uwsc自体はDドライブに置いてありまして、これをCドライブへ移したら正常に動作しました。 ドライブ跨ぎってこういう意味だったんですね。 コマンドプロンプトは元々Cドライブなので動作していたと。 今回はコピペでしたが、自分で書く時は気をつけます。 助言頂いた方ありがとうございました。 : [sage] 2019/05/14(火) 22:21:46.02:RRkLRWVV まあ仕様と言えば仕様 keystateという変数があり、キーボードを押下するとsetされるとイメージすればどうかな getされるまでは他のキーが押されると書き換わり getされるとクリアされる というかそうでないとまさにコード実行のミリ秒タイミングでキーボード押さないと反応出来なくなっちゃうわけで イベントハンドラーではないキー受け付けはこんな仕様になる : [sage] 2019/05/15(水) 01:04:26.89:NO6iccuH chkimgについてですが検索画像は大きいより小さい方が処理速いんでしょうか? どういう検索方法なのかご存知の方居たらざっくりでいいので教えて貰えると嬉しいです : [sage] 2019/05/15(水) 07:49:23.40:l0E6gxGG なるほど、変数に格納するイメージなら分かりやすいです。 そういう仕様としてやってみます。 ありがとう! : [sage] 2019/05/15(水) 07:59:26.04:AZdJp4Mp イメージとしては解像度分の1ピクセルずつズラしながら単にビットマップ変数同士を比較してるだけ なのでまず比較用の画像が小さくても大きくても最大試行回数は変わらない 例えば対象が解像度1920*1080のデスクトップ全体であればヒットしない場合の最大は約200万回ということ (はみ出るところを省略してるかは知らない) 比較処理そのものはサイズで大いに影響があると言える 例えば100*100ピクセルの24ビットカラーであれば、3万byte、約30kbが完全一致するか比較が行われる もちろん一回は1ミリ秒にすらならないがなんせ200万回もやれば馬鹿にならない 従って小さいほど速くなる 言うまでもなく検索画像より検索対象をデスクトップ全体ではなくウインドウ内に限定した方が遥かに速くなる (可能なら範囲指定した方がさらに速い) 必ず見つかる状態なら試行回数以下で終わるからいいけど、出現待ちする場合なんかは毎回最大回数空回りさせるので遅くなる : [sage] 2019/05/15(水) 23:05:42.88:NO6iccuH 理解出来ました ありがとうございました : [] 2019/05/16(木) 11:03:04.25:k6wqzKwn Chkimgにおいて24bmpで画像認識させたのですが認識してくれませんでした 4重の別々に撮ったクリックしたい箇所の画像認識、chkingx関数による曖昧認識、色幅を持たせるなどしても認識してくれません また、一回は認識したものの同じクエストに入ったのに2回目は認識しないということもあります これ以外の方法または自分の見落としなどはありますか? : [sage] 2019/05/16(木) 11:07:54.44:/xtfCvGN saveimgで保存して手を加えずchkimgしてもだめ? : [] 2019/05/16(木) 11:13:35.45:k6wqzKwn ある画像がランダム出現した時に画面全体から探して一致する、その画像をクリックしたいのでペイントに貼って : [] 2019/05/16(木) 11:15:54.41:k6wqzKwn ある画像がランダム出現した時に画面全体から探して一致する、その画像をクリックしたいのでペイントに貼ってトリミングしています Saveimgでもトリミング出来ますか? : [sage] 2019/05/16(木) 11:34:15.95:/xtfCvGN x,y,幅,高さを指定してsaveimgすればいい : [] 2019/05/16(木) 11:41:42.70:k6wqzKwn やってみます! : [] 2019/05/16(木) 19:48:50.75:zw/t/jBa この方法でも2回目以降が出来ませんでした、chkimgxとの併用は指定範囲が有効ではありません、スタックトレースの取得に失敗って感じでエラー出ます…こちらも良ければ教えてください : [] 2019/05/16(木) 20:00:17.42:zw/t/jBa Chkimgxは色幅を持たせていたが故のエラーでした : [sage] 2019/05/17(金) 01:32:37.00:a8AA4Bsn スクリプトが悪い可能性は一切ないの? そうでなければ画像の一部にエフェクトが掛っているか透過色があって完全一致しないとか : [sage] 2019/05/18(土) 17:14:28.38:qzRA2hRY しまった メイン側でプログラム作ってからVPCに持っていったら解像度違うせいか画像認識しないわ… vmwだとWQHD無いのねめんどーくさー : [sage] 2019/05/21(火) 10:26:46.97:UcoHXcCc Chkimgxって64bit版なんてないよね? : [sage] 2019/05/21(火) 12:08:21.57:DJoW+AAC もしあったとしてuwscと何の関係が? : [] 2019/05/21(火) 21:50:55.46:9ncm2Kmj ifb chkimg or chkimg or chkimg or のように横に長くor文を続けると見栄えが悪く、修正なども面倒なため、縦に綺麗に並べたいのですが改行するとエラー(or型があっていない)が出ます ifb (~ ~); のようにカッコで括っても無理でした 綺麗にする方法はありますか? : [sage] 2019/05/21(火) 22:00:10.45:GOukkBG2 SELECT - SELEND使えばどうだろう : [sage] 2019/05/21(火) 22:01:42.81:pQ6gs7NX <行結合> _ (アンダーバー) // 行の最後に付ける事により次の行と結合させます : [] 2019/05/21(火) 22:11:23.08:9ncm2Kmj ありがとうございます!今回は行結合を使うことにしました、しかしselect文も場合分けする時に使えそうですし、自分の知らない関数だったので視野が広がりました : [] 2019/05/21(火) 22:12:47.36:9ncm2Kmj 検索しても到底見つかることは無かったであろう答えをありがとうございます!おかげで綺麗なコードが書けます! : [sage] 2019/05/22(水) 01:45:18.21:t4YpuTXH 一つのif/ifbに全部orで条件結合すると途中で見つかっても全部チェックするから条件増えるほどパフォーマンス悪くなるし あり得るか知らないけど複数見つかった場合に座標の変数が書き換えられてしまうのでバグの温床にもなるから止めた方がいい 共通した処理を関数化するなりして以下のようにすればさほど可読性は悪くないと思う ifb chkimg(A.bmp) 処理() elseif chkimg(B.bmp) 処理() elseif chkimg(C.bmp) 処理() endif あとSELECTはある特定の変数(関数の戻り値)の評価の列挙だから別の条件のchkimgには使えない : [] 2019/05/22(水) 09:09:42.03:KgqzAKkh option shortcircuit を使えばいいだけでは? : [sage] 2019/05/22(水) 12:47:18.70:t4YpuTXH 短絡評価あるの知らんかった…ほんとよく出来てるなあ ならまあ、後は好みでいいかな 自分は別々の処理させたりフラグ建てたりする事が多いからみたいにしてるけど : [sage] 2019/05/22(水) 19:54:39.43:Q2YhfS/Q ifとifbって何が違うの? みたいにelseifと混ぜて大丈夫? : [sage] 2019/05/22(水) 19:56:04.78:Q2YhfS/Q ごめんぐぐったら変な仕様なの理解した : [sage] 2019/05/23(木) 17:42:34.32:HnnhfQrk HASHTBL型の変数を簡単にコピーする方法はありませんか? HASHTBL a = HASH_CASECARE a["asd"] = 100 HASHTBL b = HASH_CASECARE b = a とするとシンタックスエラーになってしまいます。 FOR文で回す方法しかありませんか? : [sage] 2019/05/24(金) 01:28:29.43:k9T5g2vH //------------------------------------------------------ // HASHTBL のコピー // dst: コピー先 // src: コピー元 // bCarryKey: 複製/変更 // CarryKey=FALSE(デフォルト)なら通常の複製となる // bCarryKey=TRUEのとき // dstにしか含まれていないキーとそれに関わる値を残す //------------------------------------------------------ FUNCTION HASHTBL_COPY(var dst[],src[],bCarryKey=FALSE) DIM size = LENGTH(src) IFB FALSE=bCarryKey THEN dst = HASH_REMOVEALL ENDIF DIM i FOR i=0 TO size-1 dst[src[i,HASH_KEY]]=src[i,HASH_VAL] NEXT RESULT = LENGTH(dst) FEND 👀 Rock54: Caution(BBR-MD5:1341adc37120578f18dba9451e6c8c3b) : [sage] 2019/05/24(金) 01:30:21.06:k9T5g2vH LOGPRINT( TRUE, 0, 0) HASHTBL hst_a HASHTBL hst_b hst_a["a"]=1 hst_a["c"]=3 hst_b["z"]=26 MSG("hst_aコピー前サイズ="+LENGTH(hst_a)) MSG("hst_bコピー前サイズ="+LENGTH(hst_b)) HASHTBL_COPY(hst_b,hst_a,TRUE) MSG("hst_bコピー(変更)後サイズ="+LENGTH(hst_b)) MSG("hst_b[<#DBL>a<#DBL>]="+hst_b["a"]) MSG("hst_b[<#DBL>c<#DBL>]="+hst_b["c"]) MSG("hst_b[<#DBL>z<#DBL>]="+hst_b["z"]) HASHTBL_COPY(hst_b,hst_a) MSG("hst_bコピー(複製)後サイズ="+LENGTH(hst_b)) MSG("hst_b[<#DBL>a<#DBL>]="+hst_b["a"]) MSG("hst_b[<#DBL>c<#DBL>]="+hst_b["c"]) MSG("hst_b[<#DBL>z<#DBL>]="+hst_b["z"]) MSG("30秒後に終了") SLEEP(30) FUNCTION MSG(str) RESULT=0 PRINT str // MSGBOX(str) FEND : [sage] 2019/05/25(土) 16:57:36.33:kezAIt7g 回答ありがとうございます! やはりFOR文で回す方法になるのですね。 HASHTBLを引数にする時は [] がいることを初めて知りました。 使用方法も合わせて分かりやすい回答ありがとうございました!! : [sage] 2019/05/26(日) 07:21:07.00:gyA6d7Mz noxで画面をスクロールするマクロを作りたいと思い、スワイプで動かそうと思い作って見ましたがダメでした。 DOSCMD("cd C:\Nox\bin & nox_adb shell input touchscreen swipe"+353 + 1107 + 353 + 250 ) アドバイスください。 追加で質問なんですがスワイプとドラックの違いがよくわかりません スワイプは一回タッチして軽く放して動かす。ドラックはタッチしたまま動かす であっているのでしょうか? : [sage] 2019/05/26(日) 09:33:03.37:JiVdzwM6 ダメと言うのはどうなる? …てかもしそのレスの通りのコマンドだとswipeの後にスペースないし、 その後の座標も全部スペースなしで連結されるからシンタックスエラーな気がするが : [sage] 2019/05/26(日) 09:35:17.03:JiVdzwM6 スワイプとドラッグは大差ない 強いて言うならドラッグはタッチして対象を掴んでから自由に動かす スワイプは最初に貯めなく、一定方向に動かす : [sage] 2019/05/26(日) 10:51:33.10:G6snbdcx androidをscrcpyというソフトを使ってでPCで自動化しています BTN(LEFT,CLICK,,,)でクリックがされないことが度々あるのですが、待機時間を入れたり BTN(LEFT,DOWN)BTN(LEFT,UP)のように記述したりしているのですが、失敗することがあります 操作の関係上、必要以上に待機時間を長くすることはできません。 失敗した時に画面を確認するとマウスカーソルはクリックする場所にキチンと移動しているようです 確実にクリックさせる方法はないでしょうか? : [sage] 2019/05/26(日) 19:53:41.40:gyA6d7Mz 実行するとエラーは出ないのですが、何も起きません。 どう書けば動くのかわからないので、アドバイスください。 : [sage] 2019/05/26(日) 20:30:10.96:JiVdzwM6 エラーが出ないってのはエラー見てないだけでしょ doscmdはあくまでコマンドプロンプト叩くだけだからコマンド内容が成功しても失敗してもエラーにはならない その代わりコマンドプロンプトで叩いた時の出力が返り値になっているのでそれをprintなりすることで結果を確認できる print doscmd(~) しかしそんなことするまでもなく、まずdoscmdに突っ込もうとしてる文字列を見直しなって それこそprintしたらわかりやすい print (のdoscmdの()の中身) 後はに書いた通りなので以下略 : [sage] 2019/05/26(日) 21:15:47.46:gyA6d7Mz Printで確認しながら書いたら動きました。 色々情報ありがとうございました DOSCMD("cd C:\Nox\bin & nox_adb shell input touchscreen swipe "+ 353 + " " + 1107 + " " + 353 + " " + 250 ) これで動きました。 : [sage] 2019/05/30(木) 10:50:09.25:tA+gABtL HASHTBLの値に配列を設定する方法はありませんか? 以下のようにすると「式がおかしい or 型があっていない」とエラーになってしまいます。 HASHTBL aaaa = HASH_CASECARE aaaa["abs"] = 1,2,3 配列変数は DIM 宣言する必要があるみたいなので DIM a = 1,2,3 HASHTBL aaaa = HASH_CASECARE aaaa["abs"] = a と代入した所「1」しか値が代入されていません。 以下の様に値をとれると助かります。 FOR i = 0 TO (LENGTH(aaaa) - 1) key = aaaa[i, HASH_KEY] value = aaaa[i, HASH_VAL] FOR j = 0 TO (LENGTH(value) - j) PRINT key + ": " + value[j] NEXT NEXT : [sage] 2019/05/30(木) 10:53:57.13:tA+gABtL 配列宣言を間違えました。 DIM a = 1,2,3 ではなく、DIM a[] = 1,2,3 になります。 この状態で aaaa["abs"] = a すると「次元数が合いません」のエラーになります。 : [sage] 2019/05/30(木) 12:47:43.35:aNGWRP0o ttps://junjun777.hatenablog.com/entry/20121022/uwsc_hashtbl_parameter ググろう : [sage] 2019/05/30(木) 14:11:44.19:DRIu++Kq SafeArray使えば? : [sage] 2019/05/30(木) 20:29:16.58:EoC6wIfp なるほど を aaaa["abs"] = SLICE(a) とすればあとはそのままいけるね ケアレスミスの FOR j = 0 TO (LENGTH(value) - j) を FOR j = 0 TO (LENGTH(value) - 1) にする必要はあるけど べつに配列の内容をJOIN()で保存して SPLIT()で取り出して再配列化するとかいう必要はないのか 5ちゃんに書き込んだ行頭のスペースやタブは削除されるので 全角スペースにすれば字下げできる uwscは字下げを全角スペースのままにしても実行可能 : [sage] 2019/06/01(土) 05:28:16.71:Rgk748+T CMD = "cd D:\ChangZhi\LDPlayer & adb -s 127.0.0.1:5555 shell input tap 200 200" DOSCMD(CMD) エミュレーターの画面がタップされる。 次にDOSCMDで画像認識から得られた座標を変数に置き換えて attack_x=g_imgx_x attack_y=g_imgx_y CMD = "cd D:\ChangZhi\LDPlayer & adb -s 127.0.0.1:5555 shell input tap " + (attack_x) + " " + (attack_y) print CMD DOSCMD(CMD) こちらの場合だとタップされない。 printを見る限り座標自体は送られているようなのですが動作しません どう弄ればいいのか正直分かりません。分かる方いたら教えて欲しいです : [sage] 2019/06/01(土) 07:07:10.14:Rgk748+T すいません自己解決しました ウィンドウ側の座標とエミュレーター側の座標を勘違いしてました : [sage] 2019/06/05(水) 05:31:25.89:PDrTjnI7 久々に使おうとしたところ 記録(R)ボタンで操作を記録しようとしたら 最初のウインドウ移動コード以降全く記録できませんがもう使えないのでしょうか 作者死亡の噂があるし… : [sage] 2019/06/05(水) 05:50:47.86:PDrTjnI7 勘違いしてました すまそ : [sage] 2019/06/05(水) 05:52:56.58:x4OhbciW 記録できない、(記録されていないので)有効データはありませんってことは良くあるってネットで話題沸騰中 低レベル記録にすればなんとかなるかも : [sage] 2019/06/05(水) 07:53:42.20:PDrTjnI7 そうなんですね 高レベル記録にすると空っぽになってしまう : [sage] 2019/06/05(水) 10:36:15.48:S7VTZIha 再インストールすれば直るよ : [sage] 2019/06/15(土) 18:50:19.87:RDrVtj7Z UWSC+Noxの環境で画像認識のマクロ使っているのですが Noxを起動しマクロを動かしながら、別のゲームをフルスクリーンで遊ぶと動かなくなってしまいます。 確認した所ボーダレスもダメで動くのはウィンドウモードでは動きました。 殆ど ttps://qiita.com/macro_no_deshi/items/dd3b3405123bad0cfe4a ここのサイトを見て作りました なにかいい手段はないでしょうか? : [sage] 2019/06/15(土) 19:44:32.64:TdaUWTtt 別ゲーをフルスクリーンにすることでディスプレイの解像度変わって動作不良みたいな事なってそう : [sage] 2019/06/16(日) 06:23:33.22:HmejiRXR 呼び出されたマクロの中にEXITEXITがあると呼び出しもとのマクロまで終了するの何とかなりませんか? : [sage] 2019/06/16(日) 06:35:40.69:POuLEWBj EXITEXITを使わなければいい そのスクリプトの構造が悪い : [sage] 2019/06/16(日) 07:02:22.57:NHc+bxmH 起動時パラメータでEXIT/EXITEXIT実行を切り分け : [] 2019/06/16(日) 08:15:28.28:HmejiRXR なるほど、そういう方法がありましたね。 ただEXITEXITの挙動にどうも納得がいかないですね。 レスには感謝いたします。 : [sage] 2019/06/16(日) 08:48:29.51:rf1Bxp8m うっそーん… : [sage] 2019/06/16(日) 09:58:41.01:EZeI/CqZ CALLしたスクリプトは呼び出し元にとりこんで実行されてるだけだからね EXITEXITで呼び出し元が終了するのは通常通りの挙動 どうしてもEXITEXITで呼び出し元終了させたくないなら EXECとかDOSCMDから同期フラグ立てて呼び出すとかしないと無理 : [sage] 2019/06/16(日) 12:50:13.33:VTXg1tr4 どこに納得がいかないのか興味があるな…そもそもなんでEXITEXIT使ってるのか てか呼び出し元も終了させたいときはどうするつもりなのか : [sage] 2019/06/16(日) 14:29:18.86:HmejiRXR マクロの中でサブルーチンがあり、そこでサブルーチンのみを終了するときはEXIT, マクロ自体を終了するときはEXITEXITを使っています。 単独でこのマクロを動かすときは正常に動きます。しかし、他のマクロから呼び出し ループさせようとしても1回動いて呼出し元のマクロごと終了してしまうのですよ。 : [sage] 2019/06/16(日) 14:56:07.49:VTXg1tr4 うーん? サブルーチン側にEXITEXITある時点で作りが悪いよと言ったら怒られるかな ぶっちゃけEXITEXITなんてGOTO並みの超限定的な場面でしか使うべきじゃない命令だし サブルーチンは関数にして返り値出してメインで EXITすればいいだけだよね : [sage] 2019/06/16(日) 15:12:02.08:VTXg1tr4 例えばだけどboolean型にして 今EXITのところと最後はRETURN TRUE EXITEXITのところはRETURN FALSE 呼び出し側はこんな感じで IF !関数名() EXITEXIT 逆でもいいかな、まあお好みで : [sage] 2019/06/16(日) 15:15:47.43:VTXg1tr4 連投すまん 呼び出し側はEXITすれば良いって話なのにEXITEXITにしてしまったEXITに読み替えてね : [sage] 2019/06/16(日) 15:22:52.91:HmejiRXR 作りの悪いマクロですみません。 レスには感謝です。 : [sage] 2019/06/17(月) 06:07:04.67:0Q+iBl83 EXILEに空見した : [sage] 2019/06/17(月) 06:23:43.98:nD3RS79c EXILEって気持ち悪くて大嫌いだわ : [sage] 2019/06/28(金) 23:06:18.54:5LM4ivGb NOXであるゲームにあるミニゲームの釣りマクロを作ったのですが、 画像発見からクリックまでにラグがあるみたいでクリックしたときには、釣り上げるタイミングを逃しています。 CMD0 = "cd C:\Nox\bin & nox_adb shell input touchscreen tap " + (350) + " " + (1030) ///////ヒットしたら釣り上げる ifb CHKIMGX("釣りヒット.bmp", winid, 115, 430, 230, 555, Detect_num, Threshold_delta, Target_color) print "ヒット" //画像を発見したらログに表示 DOSCMD(CMD0) //Noxに操作を送信 Sleep(0.1) こんな感じで作ってあるのですが、なにかいいアドバイスはありませんか? : [] 2019/06/28(金) 23:24:25.29:4HrFS9y+ せっかくの釣りゲームなのにそんなことして楽しい? : [sage] 2019/06/29(土) 09:44:30.14:Of7sgcsJ 何処で遅延発生してるのかわからないけど ChkImgXで遅延発生してるならマッチングの範囲絞るとかマッチング画像トリムして小さくするとか ChkImgXエアプだから出来るかはしらない : [sage] 2019/06/29(土) 11:16:41.58:eEFCox6T です 調べたら、adbでの操作は遅延が出るみたいでそれが原因でした btn(left,click,400,140,10) にしたら大丈夫でした : [sage] 2019/06/30(日) 13:11:18.40:7IuFi4Dp NOXで画像認識でマクロ使っているのですが、 NOX解像度の設定が720x1280でモニタ解像度が1920x1280のためNOXの実際のウィンドウサイズは581x1060なっているため 画像認識をしても座標がずれてしまいます。今は画像認識したら予め決めた座標をクリックするようにしています NOXの解像度を540x960にすると問題なく動きます NOXの解像度を変更しないで、座標のズレを直す方法はないでしょうか? : [sage] 2019/06/30(日) 13:48:02.61:LiwPiLEo 正確なサイズが分かってるなら比率を掛けるだけでは?(タイトルバー分忘れないように) モニタの縦に収まるサイズで問題ないならそれでいいじゃんとも思うが : [sage] 2019/06/30(日) 16:35:49.95:9VVtcacA ゲームの座標はクリックしてそこのドットの座標とカラーなりなんなりを記憶・登録するようにすると便利だよ どのゲームやアプリでも使いまわしが利くしね 今のところメジャーな3Dゲーム4作品程度にしか使ってないけど、自動戦闘はすべてpeekcolorで済んでる このスレで人気?のchkimgはいかにも遅そうなので出番がない : [sage] 2019/06/30(日) 16:56:27.56:VDp+hLNV Botかよ。 そんな使われ方じゃ作者が可哀想だな。 : [sage] 2019/06/30(日) 17:10:40.85:9VVtcacA 可哀想も何も、後から画像関係の関数がわざわざ増強されたのは作者も認知してるってこった 私はその前から同様の機能を拡張して使っていたので新関数を使ってないがね : [sage] 2019/06/30(日) 19:45:50.69:VDp+hLNV それとBotと何の関係が? : [sage] 2019/06/30(日) 20:46:18.95:a2qR2cp+ 役立たずは黙ってろ : [] 2019/06/30(日) 21:32:04.04:nMEM26ki 仮想マシンでUWSCを使う際に uwsファイルや画像認識用の画像がネットワークドライブにある場合 フルパス指定しても、「Not found 中断しますか?」と聞かれ 画像認識ができません。パスにはスペースは入っていませんが、日本語は入っています。 コマンドプロンプトでネットワークドライブをZに割り当てるなど いろいろ試してみましたが、解決には至りませんでした。 ファイルが大量かつ、仮想マシンが何台もあるので、コピーなどはできません。 どなたか解決策を教えていただけないでしょうか。よろしくお願いいたします。 : [] 2019/06/30(日) 21:40:49.75:nMEM26ki です。 書き忘れていました。仮想1台1台別のuwsを使用しています。 使う画像はすべて同じなので、画像をまとめているファイルは別にあり パスを指定しなければなりません。uwsと画像が同じフォルダにある場合でも 同じような現象が起きます。 : [sage] 2019/07/01(月) 02:10:35.83:BhUQI10d 試してみて ネットワークをドライブ名にマップした場合でも そのパス名に日本語が入っていても(表のように0x5Cが含まれている文字も含め) 問題は起こらななかった CHKIMG()に渡すパス名が "\\machine\folder\表現\a.bmp" のようなネットワークパスだとしても有効だった なにか勘違いしているだけで 単純にパス名が間違っているのではないか : [sage] 2019/07/01(月) 02:48:36.99:g5QsZuxD 例の記事でnoxマクロが誰でも組めるようになったせいでレベルの低下が著しいな : [sage] 2019/07/01(月) 07:49:38.60:O1pDJEnN ファイルパス・ユーザー名など、システム関係に、ASCII 以外を使ったらダメ! 半角英数字(英小文字のみ)と、アンダーバーだけを使うと安全 外人の作ったアプリは、sjis を想定していないから! : [sage] 2019/07/01(月) 09:50:46.62:Ud6nL9Ft ネットワークドライブでも問題ないし、Googleドライブでも問題ない ただ意識せずに毎秒画像見に行ってたせいで転送量がすごい : [sage] 2019/07/05(金) 12:06:58.79:alcGemYM はじめまして、このミジンコ誰か教えてください。 noxにてadbを使ってバックグラウンドにて動作するマクロを作成しようと思っております。 単純なタップやスワイプ等のコマンド送信は出来たのですが、画像認識(chkimg)のような仕組みは可能なのでしょうか? また可能ならどのようなソースの書き方をすればいいのか教えて頂けませんでしょうか? よろしくお願いします : [sage] 2019/07/05(金) 12:10:55.06:S/iigIKp このスレもしくは前スレに同じような質問や実践的内容が書いてあるよ : [sage] 2019/07/06(土) 11:03:00.32:szQx9Drp すいません!pro版でRECIEを使おうとしたらL18が存在しません とでるのは、割れだからでしょうか?それとシリアルは必ず17桁でしょうか? : [sage] 2019/07/06(土) 14:57:38.96:s7rosYjh 割れだから : [sage] 2019/07/06(土) 15:40:43.73:szQx9Drp そのあと正式な登録がされてません とでるんですが : [sage] 2019/07/06(土) 15:48:34.88:6ShlGEgv よくまあ割れの質問なんかするな : [sage] 2019/07/06(土) 16:19:04.02:f5b28dyd 割れ割れによる割れ割れのための割れ割れの政治 : [sage] 2019/07/06(土) 16:30:15.77:1YLcU5Mg 割れだからって言われて、それに対して正式な登録が~って聞く意味が分からん 正式な登録してから出直してこい : [sage] 2019/07/06(土) 16:33:01.72:o0MaAedS どうせ釣りだろ はい釣れた釣れた : [] 2019/07/06(土) 18:05:48.63:aan9FGim えっ、釣りだったの!? もう通報しちゃった… : [sage] 2019/07/19(金) 17:51:44.45:+VZsoYG6 noxのadbって別窓でフルスクリーンにすると数字がガッツリ変わるんですけど、noxの座標をどうやって調べればいいか教えてくださいお願いします : [sage] 2019/07/19(金) 18:04:34.79:TdSe3tZb windowID取得してstatusで取れない? : [sage] 2019/07/19(金) 19:08:09.92:eawjkefv 話が見えないなあ 数字ってのは座標? 別窓ってのはまさかサブディスプレイ? adbというかAndroid内で座標なんかズレやしないんだから外側からの与え方、取得の仕方に問題があるだろう ウインドウ指定で取らずデスクトップ基準で取ってるのでは? 何言ってるのかわからんレベルならスクリプト貼ってくれた方が話しがはやい : [sage] 2019/07/20(土) 06:23:49.81:5yy6Rgji ありがとう、まさしくその通りでデスクトップ基準で取ってたからフルスクリーン後にタップが行ってなかったみたいです。 現在とりあえず動かすことが出来ました。ありがとうございました : [] 2019/07/29(月) 10:35:08.27:OnS04pQR UWSC総合スレという名でディスコードのコミュニティを作ってみました。 これから仕事なのでまだ何も記載してませんが、よかったらどうぞ ttp://jump.5ch.net/?https://t.co/R0e07jjoOZ 👀 Rock54: Caution(BBR-MD5:b73a9cd27f0065c395082e3925dacf01) : [sage] 2019/07/29(月) 20:31:52.42:nFx6ozTz メアド集めて何する気だよ? : [sage] 2019/07/29(月) 21:41:55.00:CSar0obt ttps://i.imgur.com/l91swsP.jpg : [sage] 2019/07/30(火) 20:50:17.33:P8HnQUDX LDplayerでゲームを起動し、バックグラウンドで画像認識した場所をクリックという動作をしたいのですがうまくいきません。 ゲームが前面に来ている時は、画像認識して座標は取ってるがクリックせず ブラウザなどで隠れ裏面に来ている時は画像認識を失敗しています。 IDが取れてないか最初のMOUSEORG指定がおかしいのかとおもうのですが、見てもらえないでしょうか w_id = getid( GET_ACTIVE_WIN ) mouseorg( w_id ,2 ,MORG_BACK ) と w_id = getid( "ウィンドウ名" ) //w_id にアクティブウィンドウを格納 Hnd = GETCTLHND( w_id, "RenderWindow") MOUSEORG(Hnd, MORG_DIRECT, MORG_FORE) どちらを使っても上記と同じ症状です OSはWindows10 画像認識にはchkimgxを使っています。 似たような処理を作ったことある方、解決策ご教授頂けないでしょうか。 : [sage] 2019/07/30(火) 20:58:37.57:tS2fmUug LDplayerは使ったことがないからわからないけど バックグラウンド操作が効かないソフトもある 似たような過去スレに似たような質問たくさんあるから一読してみて : [sage] 2019/08/02(金) 18:41:27.29:R+vlhR/4 NOX用のマクロを作ろうと思ってるのですが、画像認識でつまづいています。 のサイトを参考にテスト用のuwsファイル ttps://dotup.org/uploda/dotup.org1911694.png を走らせた結果が ttps://dotup.org/uploda/dotup.org1911695.png です。 bmpファイルはsaveimgで取得したもので、PCの解像度は1920ラ1080、NOXの解像度は540ラ960、ウィンドウサイズの復元もしてあります。 この場合画像認識が上手くいかない原因としてどのような事が考えられますか? : [sage] 2019/08/02(金) 19:40:31.57:R+vlhR/4 ちなみに IFB CHKIMG("テスト用.bmp") MSGBOX("画像認識に成功しました。<#CR>G_IMG_X = " + G_IMG_X + "<#CR>G_IMG_Y = " + G_IMG_Y) で画面全体を検索するとNOX上の画像がきちんと認識されます。 : [sage] 2019/08/02(金) 20:36:33.96:zrwPHBgv あのさあ コード画像で貼るとか、試すのに全部手打ちさせる気? 判定画像もどんなのか分からんし なので全く試してないが単に縦横間違ってるとかそんなレベルじゃなかろうね : [sage] 2019/08/02(金) 21:02:16.41:R+vlhR/4 申し訳ないです。 長くなってしまうので画像でと思ったのですが、言われてみれば仰るとおりでした。 改行数の関係で少し変わりますが下のコードです。 winid = getid("NoxPlayer") //ゲームウィンドウを名前で検索して取得 winPosX = STATUS(winid,ST_X) winPosY = STATUS(winid,ST_Y) winsizeX = STATUS(winid,ST_WIDTH) winsizeY = STATUS(winid,ST_HEIGHT) print "位置X 位置Y 幅 高さ" print winPosX + " " + winPosY + " " + winsizeX + " " + winsizeY CALL ChkImgX.uws x1 = 0 y1 = 0 x2 = 540 y2 = 994 Detect_num = 1 Threshold_delta =20 Target_color = -1 startup_chkimgx() //CHKIMGX関数開始 While True //Wendまでの処理を繰り返す ifb CHKIMGX("テスト用.bmp", winid, x1, y1, x2, y2, Detect_num, Threshold_delta, Target_color) print "テスト用を発見しました。" //画像を発見したらログに表示 else //上記の条件全てに当てはまらなかった場合 print "画像が見つかりません" //メッセージを出す。 endif //ifbの処理の終了地点 sleep(3) //()内の秒数待機 Wend : [sage] 2019/08/02(金) 21:04:55.14:R+vlhR/4 デスクトップ左端に ttps://dotup.org/uploda/dotup.org1911827.jpg こう置かれてるNoxのAppCenterのアイコン( ttp://jump.5ch.net/?https://dotup.org/uploda/dotup.org1911829.bmp.html)で認識させてます : [sage] 2019/08/02(金) 22:37:11.99:zrwPHBgv うーん? コードは違和感ないけど 試しにwinidじゃなくて0を与えるとどうなる? ※chkimgと同じく全画面という指定 後はsaveimgじゃなくてprintscreenで画像作ってみるとか : [sage] 2019/08/02(金) 23:11:18.56:R+vlhR/4 winid = 0って書き方で大丈夫ですかね? プリントスクリーンで作ってwinid = 0で試してみると認識されたので画像位置をクリックするように書きえ変えてみたのですが実際にはクリックされませんでした。 : [sage] 2019/08/02(金) 23:14:15.77:R+vlhR/4 winid = 0 CALL ChkImgX.uws x1 = 0 y1 = 0 x2 = 0 y2 = 0 Detect_num = 1 Threshold_delta =20 Target_color = -1 startup_chkimgx() //CHKIMGX関数開始 While True //Wendまでの処理を繰り返す ifb CHKIMGX("テスト用.bmp", winid, x1, y1, x2, y2, Detect_num, Threshold_delta, Target_color) print "テスト用を発見しました。" //画像を発見したらログに表示 deffence_x=g_imgx_x deffence_y=g_imgx_y //画像認識で取得した値を代入してDOSCMDで送る内容を作成 CMD = "cd C:\Program Files (x86)\Nox\bin & nox_adb shell input touchscreen tap " + (deffence_x) + " " + (deffence_y) print CMD //CMDの内容を確認 DOSCMD(CMD) //Noxに操作を送信 else //上記の条件全てに当てはまらなかった場合 print "画像が見つかりません" //メッセージを出す。 endif //ifbの処理の終了地点 sleep(3) //()内の秒数待機 Wend これを走らせると テスト用を発見しました。 cd C:\Program Files (x86)\Nox\bin & nox_adb shell input touchscreen tap 1358 556 と出るのですが実際にはクリックされてない状況です。 : [sage] 2019/08/03(土) 00:23:17.82:/xlhahKC windid = 0 のときはデスクトップの座標 winid が getid()で得た値で それが1以上なら そのウィンドウの座標 この場合はwinidに0を渡して返ってきた座標からは ウィンドウのx,y位置とさらに実際の表示領域までの 枠幅を引いてやらないといけない : [sage] 2019/08/03(土) 00:49:19.44:/xlhahKC getid()でとっていた値が対象ウィンドウの ものでなかった場合を除いてだが winidに0を指定しただけで認識できるというのは 不思議なので検索領域が広くなったことで単に 違った箇所が誤認識されているのかも : [sage] 2019/08/03(土) 01:11:14.59:U4dG53It 別にwinid=0じゃなくて直接0で良かったんだけど、まあいいや で0と画像の作り方両方同時にするんじゃなくて片方ずつではどう? 問題を切り分けたい ちなみに仮に今の方法でadbにしたいならその座標からウインドウの座標を引いて後タイトルバー分も引けば出来ることはできる : [sage] 2019/08/03(土) 01:12:38.38:lOZq4lm8 winid=0の時はNoxを移動しても移動先にあるアイコンの座標を出してくれるので誤認識って事は無さそうです どうもgetid()で対象ウィンドウの値が取れていない気がするのですが の画像のようにNoxの左上にNoxPlayerとあればgetid("NoxPlayer")っていう認識で間違ってないですか? エミュレーターの追加をしていないのでこのNoxPlayerしかないのですが… : [sage] 2019/08/03(土) 01:19:42.46:Ks0WXhsa が既に指摘してるけどgetidの戻り値はいくつなのよ : [sage] 2019/08/03(土) 01:22:44.43:U4dG53It ウインドウは取れてる chkimgx時に何か変なようだけど何かなあ ウインドウがアクティブじゃなくてもいいはずなんだけどね : [sage] 2019/08/03(土) 01:54:21.96:lOZq4lm8 0にする前のコードでsaveimg、WinShot、プリントスクリーンで試しても変わらずでした 逆に0にした後はどの方法で作った画像でも認識はされます 皆さん色々とご意見ありがとうございます こういうプログラム的な事をするのが初めてなので煩わせてしまって申し訳ない : [sage] 2019/08/03(土) 01:57:35.42:/xlhahKC >Noxの左上にNoxPlayerとあればgetid("NoxPlayer")っていう認識で間違ってないですか? たいていそうだが、必ずそうだとはいえない ヘルプのGETIDを見ると タイトル: 識別したいウィンドウのタイトル (タイトルの一部分だけでもOK) なので とれるIDは "NoxPlayer_1.txt"や"NoxPlayerについて"などのうち最初にみつけたもの また " "などが含まれているのに気づかない場合もある また の画像を見ると Windowsの標準的な形式のウィンドウスタイルではなく タイトルバー部分に関して独自の描画をしているようなので 内部的なウィンドウタイトルがNoxPlayerで始まっていない可能性もある GETID()でとった値の STATUS(id,ST_X),STATUS(id,ST_Y)などはすでに見ていて それらしい値になっているのだと思うが いちおう STATUS(id,ST_CLASS)がそれらしい名前になっているか 見たほうがいいかも さらに GETALLWIN( ) でとったリストの中に"NoxPlayer"で始まるウィンドウタイトルがほかにないことを 確かめれば完璧 : [sage] 2019/08/03(土) 02:38:29.78:lOZq4lm8 fukidasi("ゲームウィンドウ上でSキー") //Sキー入力待ちの告知 While !(GETKEYSTATE(VK_S)) //Sキー入力まで無限ループ sleep(0.1) Wend fukidasi() //入力待ち告知の吹き出しを消す winid = getid(GET_ACTIVE_WIN) //Sを押したウィンドウでIDが取得されるので確実に取得できる cls = STATUS(winid, ST_class) title = STATUS(winid, ST_title) print "ウィンドウ名は" + title print "ウィンドウIDは" + winid print "ウィンドウクラス名は" + cls の結果が ウィンドウ名はNoxPlayer ウィンドウIDは1 ウィンドウクラス名はQt5QWindowIcon n = GETALLWIN() PRINT "ウィンドウの数:" + n IFB n > 0 FOR i = 0 TO (n - 1) PRINT ALL_WIN_ID[i] + ":" + STATUS(ALL_WIN_ID[i], ST_TITLE) NEXT ELSE PRINT "ウィンドウが見つかりませんでした" ENDIF で全ウィンドウを取得してみた所NoxPlayerは一つだけでした にもかかわらず0以外では認識されずどうしたものかと… : [sage] 2019/08/03(土) 03:03:14.23:U4dG53It さて仕方ないということでのままで実行してみると普通に成功するね (テスト用を発見しました。が3秒毎に出る) となると基本的なところを見直そう 環境としてはWindows10? 念のためUWSCのバージョンは5.3.0.2? あと念のためNoxの設定でレンダリングモードを変えたりしてみた? 自動化ツールUWSC使いよ集まれ21 756- によれば一部の環境でOpenGLではうまく動作しないなどあるらしいよ (Windowsなのかグラボ依存なのかはっきりとはしない) : [sage] 2019/08/03(土) 08:20:35.61:OFX4DJO3 >ウィンドウクラス名はQt5QWindowIcon このクラス名を見る限り実態は別にあるんじゃなかろうか : [sage] 2019/08/03(土) 08:43:36.26:OFX4DJO3 あ失礼 Qt5QWindowIconのクラス名はこのスレにも過去に出てきていた それであっているようですね : [sage] 2019/08/03(土) 12:32:06.93:lOZq4lm8 すみません、理由は分からないのですが動くようになりました というのも訳あってWin7にダウングレードしていたのですが、Win10に戻した所画像が認識されるようになりました ご協力いただいた皆様本当にありがとうございました : [sage] 2019/08/04(日) 13:50:12.50:z/hKv82K 画像認識のループマクロで画像が認識されず一定回数ループした場合に別の処理をさせたいのですがどのような手法をとればいいのでしょうか? : [sage] 2019/08/04(日) 14:43:10.09:YK9Zosi+ 画像が認識できないのとループ回数で処理分けたいのは別の話だし手法というほどもない 自分がやるのならwhileによるループ内に画像認識とカウンタで分岐するifなりselectなりで作るが 後のことはそのうまくいかないスクリプト見ないと何が悪いのかは分からん : [sage] 2019/08/10(土) 04:37:33.43:7UvH5Dc6 >一定回数ループ 本当にやりたい処理はそうじゃないだろう : [sage] 2019/08/25(日) 02:21:47.46:02nOh0YG noxにchkimgx走らせたらたまにx:-1332736054 y:399917186 とかとんでもない座標が帰ってくるのですが原因わかりません助けてください : [sage] 2019/08/25(日) 04:06:47.43:YF3o46xU 分からないものは分からないで済ませる方法を考えよう たまに変になるだけならxyが指定範囲外ならもう一度走らせればいい : [] 2019/08/26(月) 14:35:17.89:yberui11 確かにそうですね・・・異常値の検知やってみますありがとうございました : [] 2019/08/26(月) 22:00:32.81:D4IbCpMk DOSCMDを管理者として実行する方法ありますか?Windows7です : [sage] 2019/08/26(月) 22:10:52.63:mEUMz2+C そのままググれ : [sage] 2019/08/26(月) 22:21:25.54:D4IbCpMk UWSC.exeの設定を変更したあとUWSCを再起動してなかったわ ありがとう : [sage] 2019/08/31(土) 15:41:17.68:/dYnoZCL とあるフリーゲームのセーブデータのバックアップを取りたいのですが、1時間毎にファイルサイズを比較して、変化があればバックアップを取るということをしたいです。 (現在はファイルサイズの変化に関わらずバックアップを取るようにしているため、容量がどんどん増えています) ですが、ファイルサイズの取得方法がググってもイマイチわかりませんでした。 何方か教えていただけませんか? : [] 2019/08/31(土) 16:30:13.80:7TXshm9s BETWEENSTR(doscmd(“for %z in (ファイル名) do echo %~zz”), “<#CR>”, “<#CR>”, -1); 試してないので予めごめん。 : [sage] 2019/08/31(土) 17:14:37.69:/dYnoZCL 親切にありがとうございます。ダブルクォーテーションを半角に直して、コマンドプロンプトを直接叩くと数字が出てくるのですが、UWSCで PRINT BETWEENSTR(doscmd("for %z in (ファイル名) do echo %~zz"), "<#CR>", "<#CR>", -1); とすると、『ECHO は <ON> です。』と出てきて、数字になりません。どうしたらいいでしょうか。 : [sage] 2019/08/31(土) 17:25:18.95:/dYnoZCL 自己解決しました。回答ありがとうございました! : [sage] 2019/08/31(土) 18:08:17.65:0Yc9lQY2 uwsc使う必要ないような…? : [sage] 2019/09/01(日) 19:24:18.75:5mFrqnue すみません、以前から同じ問題に悩まされていて、未だに原因が分かりません。 UWSCでandroidを自動化しており、scrcpyというソフトでPCから操作しています。 クリックがうまくされないことが多く、待機時間など入れても全く解決しないのですが、 クリックの前に 「print "クリックします"」という記述を入れると問題なくクリックされるようになります。 このような記述を無意味に入れたくはないのですが、原因は何なのでしょうか? : [sage] 2019/09/01(日) 19:46:09.23:5mFrqnue 追加です。 全く同じスクリプトでその症状がWindows10のみに出ます。 Windows7ではprintの記述がなくても問題なくクリックされます。 何かPC側の設定でそのような問題が起きる項目があるのでしょうか? : [sage] 2019/09/01(日) 19:46:25.58:zpdGYnJT 問題が再現するスクリプト貼ってくれよ あと環境やらもね : [sage] 2019/09/01(日) 20:13:35.68:5mFrqnue NGワードやら、改行が多すぎるやらでスクリプトは貼れないです。 : [sage] 2019/09/01(日) 20:29:24.70:5mFrqnue 色々検証してみましたが、PRINTでなくも関係ないところを一回クリックすると動作するようです。 なのでBTN(LEFT,CLICK,,)を2回連続して書くと一回クリックされます。 もしくは10秒以上の待機を入れればクリックされました。こちらは待機時間が長すぎて実用性がありません。 : [sage] 2019/09/01(日) 20:41:43.66:N1GXnBlH そうですか : [sage] 2019/09/01(日) 21:20:42.64:zpdGYnJT まあ、Windows10だとそういう問題が多々ある 更新止まってるソフトだし解決しない まあ、幸いAndroidの操作ならadbという手があるのでbtnの代わりにdoscmdでadbコマンドに置き換えればいいよ : [sage] 2019/09/01(日) 21:39:50.56:5mFrqnue ありがとうございます。色々調べても同じような解決方法しかないみたいですね。 次はadb shell input touchscreen tap x yを試してみたいと思います。 : [sage] 2019/09/02(月) 09:23:16.27:IEOCJvHA サウンドで「プログラムの起動」に何かの音付けると分かるけど win10って見えないプログラムがしょっちゅう起動してる?から フォーカスを奪われたようになってるんでない : [sage] 2019/09/02(月) 15:24:43.08:y60Hvlvu ありがとうございます。 My Window Loggerというソフトを使って調べてみましたが、 フォーカスは外れていないようです。 : [sage] 2019/09/09(月) 11:38:19.09:0frhp+Tu スレチかもしれないんですが、UWSCのスクリプトファイルが複数あって、同じ個所を同時に修正するようなソフトってないですか? WinMergeを使っていますが、3個までしか同時編集できません。 : [sage] 2019/09/09(月) 11:38:51.09:TLffwesQ 関数化する : [sage] 2019/09/09(月) 12:17:09.85:eI5EZMSU 関数化というか同じという箇所を別ファイルに切り出してcallするだけでもいい まあ、変数の管理があるので関数化が望ましいかもだけど : [sage] 2019/09/12(木) 14:37:32.43:pwiI+xHT 今まで使ってた物がwin10アプデ後動かなくて調べたら、原因はわかったんだけど、対処法がわからないのでアドバイスください ttps://qiita.com/macro_no_deshi/items/dd3b3405123bad0cfe4a ここのサイトを参考に作ったもので、「サンプルコード(完成形)」の画像を発見したあとの処理にBTN関数を入れると反応がありません。 原因は「MOUSEORGによる補正」の MOUSEORG(winid,MORG_DIRECT,MORG_FORE) が原因みたいです。 MOUSEORG関数について読んだのですが、正直良くわかりませんでした。 削除すれば一応動くのですが、どうしたら良いでしょうか? : [sage] 2019/09/12(木) 15:12:59.56:psJkeShP 過去にもそれ何度か話題になってるけど直接的な解決方法はなかった気がする NoXとかならadbで接続してタップするコマンド送信するとか : [sage] 2019/09/12(木) 18:50:26.13:IcXkdgTx 常にデスクトップに表示してマウス取られていいなら消せばいい それが嫌なら記事の通り : [sage] 2019/09/12(木) 19:48:01.48:pwiI+xHT そうなんですね。情報ありがとうございます。 : [sage] 2019/09/14(土) 18:38:20.96:J9OvsDUU あいまい検索できるCHKIMGXって使うたびにstartup_chkimgxとshutdown_chkimgxではさまないといけないの? startup_chkimgx() while true <処理> wend shutdown_chkimgx() て形ではさむの1回でもあいまい検索できてる気がするんだけど <処理>のところにいくつもchkimgxて書くこと考えると毎回はさむの大変なんだけど楽なやり方ある? : [sage] 2019/09/14(土) 19:00:58.02:suhfvUA6 できてりゃいいし、気になるなら何やってるかスクリプトお読みなさいよ : [sage] 2019/09/14(土) 19:29:28.42:T/fmJAyy これはもはや初心者ではなくて考えることを放棄した猿 : [sage] 2019/09/16(月) 00:21:03.12:J++fziTo メールアドレスをEXCELからIEのアドレス欄にコピペしようとしたら、コピペ出来ないどころか右クリックもきかない場合はコントロールCもダメなときは、どうすれば良いでしょうか? : [sage] 2019/09/16(月) 02:24:56.23:c545q6Mo python勉強してuwscでやってたこと移行していってるけど chkimgxってめちゃくちゃ使い勝手良かったんだなー うまくここまでいい具合のもの作れないや : [sage] 2019/09/16(月) 03:46:26.17:d0MhJ3Yl chkimgxに相当する物が無いのか 人工知能やweb巡回ロボなどで注目されていから Pythonやってみようかと思っているのに : [sage] 2019/09/16(月) 06:36:15.46:shGVxZhQ シートの保護を解除する ,431 ただのopenCVラッパーなので同じように関数化すれば同じ使い勝手だが…? : [sage] 2019/09/16(月) 09:02:03.26:J++fziTo ありがとうございます。 やってみます : [sage] 2019/09/17(火) 09:29:48.59:Qlpvvbbr OpenCVそのままだね、あいまい検索もパターンマッチングの閾値さげるだけ 連番ファイル名のあいまいとか細かい処理は自分で追加しなきゃいけないけど name, ext = os.path.splitext(FileName) multi = glob.glob(name + '.[0-9]' + ext) : [sage] 2019/09/17(火) 12:15:59.14:W7Brc645 画像の特定の色指定してマッチングとかは? まあここらへんまで実装するのがただのuwscユーザーとしては難しいって意味じゃないの : [sage] 2019/09/17(火) 23:07:48.56:Qcff0eSx 何が難しいのかは本人以外には分からんが難しくたってやりゃできるお手本あるんだからその内できるだろ : [] 2019/09/21(土) 15:31:11.62:MHWtiGlt 質問失礼します。 ifb chkimg("画像名",0,,,,,,IMG_MSK_BGR4)=True SLEEP(2) BTN(LEFT,CLICK,G_IMG_X,G_IMG_Y) SLEEP(1) Else endif で画像をクリックしているのですが目標の画像のすぐ下をクリックする方法ってありますでしょうか? 目標の画像が見つかれば座標に関係なくその画像の下にカーソルが少し移動してクリックするといった感じです。 よろしくお願いします。 : [sage] 2019/09/21(土) 15:35:02.99:idUljkgM あるんじゃない? 元々そういうソフトだし : [sage] 2019/09/21(土) 15:47:33.83:mk38kF2N 画像の下とはどういう意味か : [] 2019/09/21(土) 15:48:10.01:d3d5sbQS BTNの前にいったん適当な変数へG_IMG_Yを コピー代入し、それをずらしたい量だけ増加させてから その変数でBTNを呼ぶ、という単純な話ではなくて? : [sage] 2019/09/21(土) 18:30:07.78:VtT+26ja 検索画像の座標に関係あるのかないのかどっちなんだ クリックするかの判定に画像使ってるだけで実際クリックするボタンの位置固定がなら そもそもg_img_x/y使わず、クリックしたい場所を固定値なり別の変数/定数にしたらいい : [sage] 2019/09/24(火) 21:54:56.01:lGKeQ6/A Edge上でドラッグ&ドロップ動作をエミュレーションしようとしてるけどうまく行かない Edge側の問題っぽいが : [sage] 2019/09/25(水) 02:02:13.55:idiO5sU0 EdgeというよりUWPアプリ全般で多分うまくいかないんじゃないの : [] 2019/09/26(木) 11:47:45.82:2E8AEgsX UWSCを今日から始めました。 皆様、宜しくおねがいします。 早速なのですがSLEEPについて教えて下さい <理解していること> SLEEP(0.1) 0.1秒スリープ --------------- SLEEP(RANDOM(2)) 0or1or2秒スリープ --------------- <やりたいこと> 0.01秒から1秒の範囲でランダムにスリープしたい場合は どうしたら実現できますか? 皆様のお知恵を宜しくおねがいします。 : [sage] 2019/09/26(木) 11:56:29.09:8zbcqLQ8 Sleep(Random(100) / 100) : [] 2019/09/26(木) 12:09:10.09:2E8AEgsX 早速のご回答有り難うございます。 こういう表記の仕方があるんですね まったく思いつきもしませんでした。 有り難うございます!!! : [sage] 2019/09/26(木) 12:13:50.53:bGOHcRaB randomは引数の範囲最大値は出ないことに注意 例示の引数2の場合で言えば0か1しか出ない で、要するに1~100の値を求めて100で割れば0.01~1.00となるわけで randomの仕様を考慮&利用すると以下の通り (random(100) + 1) / 100 : [sage] 2019/09/26(木) 12:20:51.72:8zbcqLQ8 >randomは引数の範囲最大値は出ないことに注意 知らなかった、申し訳ない : [] 2019/09/26(木) 12:46:58.57:2E8AEgsX 更に詳しい解説及びSLEEP(RANDOM(2))についての指摘 有り難うございます。 「引数2の場合ば0か1」勉強になりました。 本当に有り難うございます。 : [sage] 2019/09/26(木) 13:55:37.41:iUaFKvJQ すっごい初歩的な質問かもしれませんが、 メモ帳にもの凄い長い文字列がありその途中に a b c という1文字ずつの文字列が10個くらいあってそれを全部 d e f に簡単に変える方法ってあるでしょうか? 最終的にはそのabcをdefに変えたもの ghiに変えたもの、jklに変えたものなど沢山必要なため、手作業で一つ一つ変えていくのだと膨大な時間がかかってしまうためよろしくお願いします。 : [sage] 2019/09/26(木) 14:03:02.51:5T2rMbCQ んなもんUWSCじゃなくてエディタの正規表現で置換せーや : [sage] 2019/09/26(木) 14:07:22.25:bMINaTXu すっごい初歩的な質問だし、やり方も何通りも思いつくけど、お前が思いつかないって事はあとから要件がコロコロ変わるか、全くの初心者かなので一つ一つ手作業でやったほうが早い。 : [sage] 2019/09/26(木) 14:09:46.30:DaWSSFTy Replaceってあったっけメモ帳の置換の方が早そう : [sage] 2019/09/26(木) 14:25:46.18:iUaFKvJQ メモ帳の置換を使った場合 abcという横に並んだ文字列をdefという横に並んだ文字列に変えるってのだと一瞬でできたんですが、縦に並んだ a b c を d e f に変える場合だと上手くいかないんですが 何か方法はありますか? : [sage] 2019/09/26(木) 14:29:56.39:ff/FN5DC 改行を含めて直列にしてから元に戻せば楽なんじゃね つーか、改行をまたいで文字列置換してくれるエディタがあった気がするが : [sage] 2019/09/26(木) 14:36:55.66:5T2rMbCQ 正規表現でぐぐれ あとはスレチだ失せろ : [sage] 2019/09/26(木) 14:41:33.51:bMINaTXu 正規表現なんていらんだろ。。。何いってんだw : [] 2019/09/26(木) 14:47:35.38:PdDoKstg それこそ、マイクロソフトのワード(苦笑)ですら 置換画面であいまい検索にチェックを入れて a^pb^pc^p を abc へ置き換えることで可能かと。 秀丸エディタその他のエディタでも一般的にできる。 : [] 2019/09/26(木) 14:53:59.09:i7CtdN8G 具体的なことは一切書かず偉そうなことだけ抜かしてるお前こそ一体なんやねん アホは黙っとけ : [sage] 2019/09/26(木) 14:56:42.66:bMINaTXu 間違いしか書いてないやつに言われたくないぞwあほ : [sage] 2019/09/26(木) 14:58:41.92:3k8gDmD5 別に正規表現でもできるし間違いではなくね? : [sage] 2019/09/26(木) 15:00:59.83:5T2rMbCQ なにがどう間違いなのか詳しく頼むわ そしてさっさと正しいやり方を書いてくれ それと、は俺じゃないぞ阿呆w : [sage] 2019/09/26(木) 15:04:09.18:bMINaTXu 正規表現なんて必要ない。UWSCならREPLACEでも使えばいい。 スレ内で対応可能だし、正規表現でググるとかアホ : [sage] 2019/09/26(木) 15:05:49.73:/5glJw3r 何がしたいのかいまいちわからんが abcをdefに変えるだけなら正規表現は必要ないかもしれんけど 他にも色々変えるんだったらさっさと正規表現でも使ったほうが速いだろ : [sage] 2019/09/26(木) 15:07:24.62:bMINaTXu だから「要件がコロコロ変わるか、全くの初心者かなので一つ一つ手作業でやったほうが早い」 : [sage] 2019/09/26(木) 15:09:23.30:5T2rMbCQ マクロの流れで書き換える必要があるならreplace使うのは分かるが 単純にテキストの文字列書き換えるだけでわざわざuwscでreplace使うとかどっちがアホなんだよw : [sage] 2019/09/26(木) 15:12:54.58:bMINaTXu はいはい。アホとの会話は要件聞き出すより無駄だわ。 わざわざメモ帳で正規表現使う方法でもググっとけw : [sage] 2019/09/26(木) 15:12:58.19:OcEGW6mq んで、具体的なやり方は? : [sage] 2019/09/26(木) 15:13:06.47:DaWSSFTy 行・列関係なく縦に並んだ指定文字なら面白い質問なのに : [sage] 2019/09/26(木) 15:14:37.41:bMINaTXu だから「要件がコロコロ変わるか、全くの初心者かなので一つ一つ手作業でやったほうが早い」 : [sage] 2019/09/26(木) 15:19:02.37:eZXWH36o abcをdef、ghi、jklとかたくさん変えるとか言ってるし正規表現でやったほうが早いだろ : [sage] 2019/09/26(木) 15:20:58.61:bMINaTXu お前は正規表現をググったほうがいいw : [sage] 2019/09/26(木) 15:24:30.08:VJCVWXU0 煽るだけのベテラン基地外がまた湧いたのか 向こうが過疎ってるからってこっちにくんなよ : [sage] 2019/09/26(木) 15:24:57.66:5T2rMbCQ 何通りもやり方は思いつくとか言いながら、煽るだけで決して何一つ言わない時点でお察し どうしようもねえなw : [sage] 2019/09/26(木) 15:27:37.43:Dz9wKQLF メモ帳で正規表現なんて使えるの? : [sage] 2019/09/26(木) 15:32:08.31:bMINaTXu おぃおぃ。本気で置換と正規表現を混同してるやつがいるのか^^; ググるなら「置換」だし、作業するなら「改行を検索に含めることができるテキストエディタを探す」だぞ。 要件変わるから多分無意味だけどw > メモ帳で正規表現なんて使えるの? メモ帳のテキストを吸い出して、正規表現にマッチングさせればいいけど、普通はやらん。 対応してるテキストエディタ使う。 : [sage] 2019/09/26(木) 15:32:23.98:balOv07a 教える気もない上級者さんはのスレから出てこないでください : [sage] 2019/09/26(木) 15:38:07.93:bMINaTXu そうする。ひどいなここ。 : [sage] 2019/09/26(木) 15:42:08.85:tLIoXhFC それだけ長文かけるならやり方書いてあげればいいのに uwscスレって定期的に煽りキチガイ沸くよな : [] 2019/09/26(木) 16:15:32.47:2E8AEgsX WindowsのTeraPadで置換機能つかって 検索する文字列を「\na\nb\bc\n」 置換後の文字列を「\nd\ne\nf\n」 とすれば a b c を d e f とに力技でできます。 UWSCは本日1日目なのでわかりません。 : [] 2019/09/26(木) 16:23:29.46:2E8AEgsX 上の補足 qwea b c の変換はちゃんと行わないのですが 先頭から a b c となるテキストは変換できません。 先頭がaとなるときの表現方法が正規表現で可能なのかな? 詳しくないのでごめんなさい。 : [sage] 2019/09/26(木) 16:40:53.92:iUaFKvJQ ありがとうございます。 やってみます。 : [sage] 2019/09/26(木) 17:09:08.72:dB4DsoxS と同じことをUWSCでやろうとすると kekka = REPLACE( taisyou, "<#CR>a<#CR>b<#CR>c<#CR>", "<#CR>d<#CR>e<#CR>f<#CR>") TeraPadは正規表現は使えないと思うので Meryを使った場合は 検索する文字列 "(^|\n)a\nb\nc" 置換後の文字列 "\1d\ne\nf" (^|\n)で先頭か前に開業がある場合のどちらかを指し それに一致した内容が\1に入る : [] 2019/09/26(木) 18:14:18.26:2E8AEgsX わかりやすい解説有り難うございます。 おっしゃる通り、TeraPadは正規表現使えないみたいです。 Meryを使って 検索する文字列 "(^|\n)a\nb\nc" 置換後の文字列 "\1d\ne\nf" を使えば先頭文字aの場合も解決できて 置換後の文字列を何種類か作っておけば さんは幸せになれますね。 個人的にはでMaryをUWSCで操作すると言う手も考えちゃいますけど スマートな方法は UWSCで正規表現を使う場合にはVBScript等使えばできるみたいですね。 : [sage] 2019/09/26(木) 18:45:29.17:iUaFKvJQ Meryだと無事に置換ができました。 本当にありがとうございます。助かりました。 : [] 2019/09/26(木) 19:56:14.78:2E8AEgsX 自分もMery使用したことがなかったのでインストールして 上記置換処理やってみました。 一瞬で置換され便利ですね 過去ログでもおすすめエディターみたいですので少し使ってみます。 さんに感謝 : [] 2019/09/27(金) 06:24:51.56:HGFU/goi ものすごく初心者な質問させて頂きます。 過去ログのソースコードを見させて頂いているのですが 人によってコマンドの記述が違います。 例 1.print XXXX 2.Print XXXX 3.PRINT XXXX というように大文字と小文字を混在されています。 なにか理由があるのでしょうか? : [sage] 2019/09/27(金) 08:17:47.20:C42tS7ey 言語的に予約語、関数名、変数名に大文字小文字の区別がなく、専用のエディタもないから好きなように書いているだけ ※専用じゃないけどvscodeやサクラエディタ用の拡張や予約語リストはあるので入れることをオススメ ちなみに例えば自分はPCでなら関数は大文字、変数名は小文字キャメル(定数は大文字)を緩く守るが 掲示板なんかにスマホから短いコード投下する時は面倒なので小文字かな : [sage] 2019/09/27(金) 08:18:23.10:P2udmMmf 1.個人のこだわり(ひとによっては宗教レベル) 2.タイピングの癖 3.UWSCの寛容さへの甘え : [sage] 2019/09/27(金) 10:12:57.50:UTbYC5kd Pascal系は大文字小文字を区別しないものが多い、C系はほとんど区別される。UWSC作った人がPascal好きだったか? : [sage] 2019/09/27(金) 10:56:47.41:C42tS7ey uwscはPascalというかDelphi由来 : [] 2019/09/27(金) 11:16:12.69:HGFU/goi 大文字と小文字に区別がないこと理解しました。 私も関数は大文字、変数名は小文字キャメル(定数は大文字)で 同じ様に記述してみます。 個性が出やすくなるんですね。 短期間でのレスありがとうございます。 : [sage] 2019/09/27(金) 21:12:48.80:swY7XTEk スクリプト終了しても消えない変数みたいなのは作れますか? いちいちファイルに保存しないとダメ? : [sage] 2019/09/27(金) 21:18:29.42:szJrwaq1 ファイルに保存しないと駄目 : [age] 2019/09/27(金) 22:06:37.44:0SGX+H6c プログラミング自体はじめたばかりの初心者です。 データのあるexcelから1つずつセルを、別ソフトへとコピペさせるループのマクロを作っております。 終了条件として、excelからコピーしたセル内容が空白となるまでループさせたいのですが、ループが始まりません。 どうしたらよろしいでしょうか? ※excelでセル内容が空白の場合に取得される内容は改行(<#CR>)です。 A = GETSTR(0) WHILE A = "<#CR>" //excelをアクティブに CTRLWIN(EXCELID, NORMAL) CTRLWIN(EXCELID, ACTIVATE) //セルを1つ移動させる KBD(VK_DOWN, CLICK, 50) //セルをコピー KBD(VK_CTRL, DOWN) // キーを押しっぱなしにする KBD(VK_C, CLICK, 50) KBD(VK_CTRL, UP, 50) // キーを離す //貼り付け先ソフトをアクティブに CTRLWIN(pasteID, NORMAL) CTRLWIN(pasteID, ACTIVATE) //コピー内容を貼り付け KBD(VK_CTRL, DOWN) // キーを押しっぱなしにする KBD(VK_V, CLICK, 50) KBD(VK_CTRL, UP, 50) // キーを離す A = GETSTR(0) WEND : [age] 2019/09/27(金) 22:09:22.58:0SGX+H6c 連投スマソ、補足です。 495では省略してしまいましたが、 ループが始まる前に、クリップボードにはなにかしらのデータをコピーしておく プログラムを書いています。 : [sage] 2019/09/27(金) 22:28:07.12:szJrwaq1 WHILE A = "<#CR>" これだとAが改行の間ループすることになる : [sage] 2019/09/27(金) 22:34:58.29:Fhm0Ycov WHILE A = "<#CR>" だと空白である間ループするようになると思うけど それはそうと 今やろうとしてるような表示上のセルを直接見ながらという手もあるとは思うけど CSVなりに内容を吐き出させた上でファイルを処理したほうがよいのでは とくにセル数が多ければそちらのほうが圧倒的に速いし キー操作をおこなうより安全だと思う : [sage] 2019/09/27(金) 23:15:06.36:C42tS7ey 一列程度ならリストに突っ込んでforで回せばいいと思うが 範囲選択してコピーは省略、手作業なりスクリプト化なりご自由に //Excelでコピーした列データをリスト化 list = SPLIT(GETSTR(0),"<#CR>") //貼り付け先をアクティブに CTRLWIN(pasteID, NORMAL) CTRLWIN(pasteID, ACTIVATE) //リスト終端まで回す FOR A = 0 TO RESIZE(list) SENDSTR(0, list[A]) SCKEY(pasteID, VK_CTRL, VK_V) NEXT 貼り付け先がどんなんかよく分からんのでSLEEP入れたりは適当に調整してくれ : [age] 2019/09/28(土) 00:24:45.36:qPxO4zq5 皆様迅速なご回答をしていただきありがとうございます。 whileの基礎的なことすら分かっていなかった自分が恥ずかしいです。 マクロは、excelデータから社内の伝票作成ソフトへ相手会社名や振込先口座、金額などを 転記したいために作っております。 おかげさまで=を<>にしたらイケました。 csvもあるんですね。確かにキー操作は不安でした。 ただ、このマクロを最終的に「B列のコピーした内容が"x"ならC列を飛ばしてD列をコピー」など IF?で分岐させていく予定なのですが、それでもcsvで対応できるんですかね・・・ 8列くらいのデータがあるんです、、、 ただ、今後使うことがあるかもしれないので、参考にさせていただきます。 : [sage] 2019/09/28(土) 01:21:29.50:Y40c4v1p CSVカンマ区切りにしか対応してないがFGET()で読めば 戻値 = FGET( ファイルID, 行, [列, ダブルコーテイション] ) のように列を指定して取り出せる 渡す相手に対しても相手のウィンドウに直接入れるのではなく ファイルをつくり渡すことも考えられる 相手がカンマ区切りのCSVを読み込めるならFPUT()で書き出し安いが そうでなかったとしてもXMLやJSONあるいは相手の独自形式のファイルに して受け渡すことは検討してみたほうがいいと思う : [sage] 2019/09/28(土) 01:51:10.04:Y40c4v1p あるいは1行まるごとを読んでSPLIT()で配列化して扱える ファイルを読んで新しいファイルを作るような場合だと もしかしたらperlやpythonで扱うほうが楽かもしれないが : [sage] 2019/09/28(土) 04:36:04.09:va6TJWDv ん、rpa的なことやるならuwscはやめた方がいいよ 理由は色々あるが懸念の通りexcelフォーマットを読み解き柔軟に組むのは不可能じゃないが向いてない そういうのはVBAか標準でexcel操作可能なrpa用ソフト使った方がいい (まあ、uwscもproはちょっとexcel専用関数あるんだけど…) 自分が組むならまずは分岐とか余りしなくて済むような、単純作業のインプットになるデータフォーマットを考える (何なら貼り付け先のソフトの画面全項目でもいい) そのフォーマットにexcelから落とし込むのは恐らくはVBAが適当で、転記はuwscにやらせるのがいいんじゃないかな excelから直接別ソフトへ転記は無駄に難易度上がるだけだよ : [sage] 2019/09/28(土) 06:16:08.57:Ct1nF35m 向いてないのか 職場でRPAが話題になってるの聞きながらuwscでいいじゃんって思ってた : [sage] 2019/09/28(土) 06:30:07.11:CcJW/+z6 向いてないと言うか力技なんだよ データをcsvで読みこんで対象のテキストボックスに流し込むとかやりようはありそう : [] 2019/09/28(土) 20:20:42.41:2HxgDAhh 今日でこのソフトに出会って3日目なんですけど むちゃくちゃ便利ですね。 今まで手動で3時間くらいポチポチしてたことが 皆さんのソースコードを読みながらお茶してるだけで勝手にやってくれる もうちょい早く出会ってPro版を購入したかった。 : [sage] 2019/09/28(土) 21:58:40.51:Bvcc+55+ CSV なら、Ruby で処理するのが簡単 : [sage] 2019/09/29(日) 00:24:15.19:2oHQQmaP いやcsv処理する話しじゃないんで… : [] 2019/09/29(日) 17:38:04.40:yyfVEle8 このソフトてモニタースリープ状態のまま動かすのて無理ですかね? : [] 2019/09/29(日) 17:42:46.79:4kqLeu2A uwscでマウスのカーソルを移動させても反応しません 手動で移動させると反応します この違いはなぜ起こるのでしょう mmvで移動させています クリックは両方とも反応します : [] 2019/09/29(日) 18:04:51.80:4kqLeu2A 連投すみません uwscではマウスオーバーしたという判定が出ないんです html5の仕組みが関係しているんでしょうか : [sage] 2019/09/29(日) 19:15:04.42:uzWuDMUd 試してみたいからスクリプト貼ってくれよラ2 : [sage] 2019/09/29(日) 22:43:58.25:NTZExMlG たいていのことはできると思うが POFF(P_MONIPOWER2) と POFF(P_MONIPOWER3) との間に 試したい処理を入れてテストしてみればいい : [sage] 2019/09/29(日) 22:51:03.21:NTZExMlG どんなページのどういう部分かわからないけど MMVでピタッとある座標に移動しても反応しないものが 人がマウスを移動するようにMMVで位置を少しづつ ずらして移動すると反応する場合もある : [sage] 2019/09/30(月) 06:38:09.68:PihPYg9U マウスオーバーってマウスカーソルが要素の境界またいだら起きるイベントだったりしない? : [sage] 2019/09/30(月) 09:37:01.91:n0JFz+mK RPAはコーディングいらないんだよ 高性能なやつだとAIが操作内容を解析して最適化までしてくれる : [sage] 2019/09/30(月) 11:10:24.43:jC4keZpM それは幻想だ : [sage] 2019/09/30(月) 14:38:39.72:dVa1Usr4 RPAはボタンやOCR的に画面の字を認識するのはデフォだろ UWSCの画像認識はお世辞にもry : [] 2019/10/01(火) 23:49:48.17:s21ezsHI mmvで動かしてるだけです。 mmvを何回もやって、ゆっくりにしてもだめでした。 境界をまたいでもだめでした。 : [sage] 2019/10/08(火) 13:22:45.54:9e1T1J7x Noxをアクティブ化せずに日本語の文字列を入力したいのですが何か良い方法は無いでしょうか ・MOUSEORG(ID,2)を使ってCtrl+VをKBDで送信、SENDSTRのACC指定を2にして実行 →反応せず ・ADBKeyBoardをインストール後、DOSCMDにて nox_adb.exe shell ime set com.android.adbkeyboard/.AdbIME nox_adb.exe shell am broadcast -a ADB_INPUT_TEXT --es msg 'テスト' を送信 →反応せず : [sage] 2019/10/08(火) 17:10:33.10:Jw4k5nXF MOUSEORG(ID,1)だとできるの? : [sage] 2019/10/08(火) 19:10:24.22:9e1T1J7x KBDとACC指定デフォルトのSENDSTRは入力が通ります : [sage] 2019/10/08(火) 19:25:09.29:WUNHA4Q/ 変なことせずに単に nox_adb shell input text ‘文字列’ じゃなんか駄目なのかね テキストボックスにフォーカスあたってる? : [sage] 2019/10/08(火) 20:18:11.78:9e1T1J7x input textは2バイト文字送れないようです フォーカスはもちろん当たってます : [sage] 2019/10/08(火) 20:40:35.50:WUNHA4Q/ なるほど、そういえば自分も同じことやった気がする 結局どうやったかなあ input keyevent 279 (もしくはKEYCODE_PASTE) でnox内のクリップボードから貼り付けは出来るよね で、sendstrだと直接Windows側のクリップボードに送っちゃうから確かnox内に送れなくてなんかしたんだけど何かを忘れた Windows側でctrl+cとかそんなレベルのことやったような…sendstrのパラメータで解決したようなうろ覚え : [sage] 2019/10/09(水) 01:21:59.63:dWWBbVm8 確かにNox内のクリップボードにある文字列は貼り付け出来ますね ただ同じくUWSCからNox内のクリップボードに文字列を送る方法が分からなくて、あーだこーだしてる内に解決しました NoxでADBKeyBoardを使う場合はAndroid7でないと動作しないようで、 Android7でインスタンスを作り直したらBroadcastで2バイト文字の送信が出来ました UWSCというよりAndroidの質問になってしまいましたが、回答してくれた方々ありがとうございました : [sage] 2019/10/11(金) 02:29:57.15:l8XLJu9S 今pro番を使おうと思ったらどうしたらいいですか? : [] 2019/10/11(金) 06:58:36.99:Td6I+Zpy Pro版のインストールファイルを入手できれば 方法はあるけれど.... : [sage] 2019/10/11(金) 07:57:18.50:aMgrTkTz ファイルがあってもライセンスキーがなければだめでしょ : [sage] 2019/10/16(水) 21:26:16.96:2hMqi2nO 質問なのですが、万が一のためにマクロ実行中に、Escキーを押すと マクロを中断させたいのですが、Escキー以外は操作を無効にさせたいです。 LockHardを覚えましたが、Escキーが効かなくなってしまいます・・・ sethotkey(VK_ESC, 0, "ForceStop") LockHard(true) : [sage] 2019/10/16(水) 23:23:09.03:Feea5J53 STOPFORM()出しといたらダメなの あとLOCKHARDEX()でウィンドウ限定するとかは : [] 2019/10/17(木) 12:12:39.95:A4Rdxp6g なるほど、stopformという手もあるんですね! マウスとキーボード操作を受け付けないようにしながら、escキーだけ受付・・・というのはやはり難しいでしょうか? : [sage] 2019/10/17(木) 12:52:54.52:A4Rdxp6g たびたび質問ですみません。 ものすごく初歩的なことなのかもしれませんが、chkimgxって画面に前面で表示されていないのだめなのでしょうか? 2つのソフトをsckeyでキー操作しているのですが、片方が裏にまわってしまうと認識していないような気がします。 とりあえずの対策として、acw(0,0)とctrlwin(showとtopmost)でウインドウ位置+手前表示固定しているのですが。 : [sage] 2019/10/17(木) 13:06:59.02:bO7Ftz48 MOUSEORGの引数が間違ってなければウィンドウが被ると駄目なソフトなんでしょ その2つのソフト名は?他に使ってる人が居れば情報が得られるかもしれない : [sage] 2019/10/17(木) 14:09:22.00:tJ4XAWvT 例えばNoxだと単発ウインドウなんで裏に隠れてても取れる BlueStacksだと親ウインドウしか指定してないと描画してる子ウインドウが隠れると取れない、子ウインドウを指定すればいい : [sage] 2019/10/17(木) 21:35:08.48:4XXN/n+s ご回答ありがとうございます。 なるほどですね、そういう仕組みになっているのですね。 : [sage] 2019/10/22(火) 02:49:35.92:L/O8BxfD UWSC+NOX環境でadb使ってダブルタップをする場合ってどうすれば良いのですか? DOSCMD("cd C:\Nox\bin & nox_adb shell input touchscreen tap " + (370) + " " + (600)) sleep(0.1) DOSCMD("cd C:\Nox\bin & nox_adb shell input touchscreen tap " + (370) + " " + (600)) と書いてみましたがだめでした。アドバイスお願いします : [sage] 2019/10/22(火) 04:41:04.07:a1/9gbM9 シングルタップはできてるんだよね? : [sage] 2019/10/22(火) 13:39:26.21:L/O8BxfD シングルタップは問題なく動いています : [sage] 2019/10/22(火) 13:46:16.17:a1/9gbM9 Sleepを増やしてどうか : [sage] 2019/10/22(火) 13:56:35.11:8YNql35h いちいち、cdから始めるから間隔空き過ぎって話じゃないの? shell以降で連続してタップ送るとか、path通して処理時間短縮するとかそういうアプローチの仕方してみたら : [] 2019/10/24(木) 18:01:47.14:xBrr20Dc 多分そうじゃないかな。 nox_adb.exe はフルパスで.exeも略さずに記載する。 sleep 0.1 は消してみる。 それでもだめなら、android本体側にダブルタップの イベントを用意し、それをadbで起動する手がある。 試していないが例えば下記。 ttp://jump.5ch.net/?https://stackoverflow.com/questions/25865259/how-to-make-a-double-tap-to-expand-the-video-screen-using-android-adb-commands ttp://jump.5ch.net/?https://sp.ch.nicovideo.jp/sakaki_sourai/blomaga/ar1232345 : [sage] 2019/10/25(金) 10:35:07.95:V94JerTM Noxの話題が出ているので便乗して… CHKIMG関数をNoxウィンドウに走らせると画面がチラついてそのまま真っ暗になることがあります MOUSEORGでMORG_FOREを指定してもチラつきが抑えられません 発生頻度は数時間に1回発生するかどうかで偶にという感じです 解決策か原因をご存知の方はいらっしゃいませんか 環境はOSがWindows10、Noxのバージョンが6.0.8.3です : [sage] 2019/10/25(金) 11:34:44.08:iWBj7Wic noxの設定で描画のOpenGLをDirectXに変えてみるとか : [sage] 2019/10/25(金) 12:17:47.97:Pn1d2knk です フルパスで書いてみましたがだめでした DOSCMD("C:\Nox\bin\nox_adb.exe shell input touchscreen tap 600 300") DOSCMD("C:\Nox\bin\nox_adb.exe shell input touchscreen tap 600 300") shell以降で連続してタップ送る、と言う書き方がわかりません アドバイスください : [sage] 2019/10/25(金) 12:53:23.96:gsbQkWqD 試してないから出来るか微妙な気もするけど shellで1回区切ればリモートシェル状態になるので nox_adb shell & input ~ & input ~ & exit とする(exitなくてもいいかも?) 次善策としては nox_adb shell input ~ & nox_adb shell input ~ とする : [sage] 2019/10/25(金) 17:43:44.15:Pn1d2knk ありがとうございます DOSCMD("C:\Nox\bin\nox_adb.exe shell & input touchscreen tap 600 300 & input touchscreen tap 600 300 & exit") これでやってみましたがUWSCが落ちました 一応 DOSCMD("C:\Nox\bin\nox_adb.exe shell input touchscreen tap 600 300 & C:\Nox\bin\nox_adb.exe shell input touchscreen tap 500 300") これで2回クリックされていました。ですが2行で書くよりはわずかに早くなった程度でゲーム側でダブルタップとして認識してくれませんでした : [sage] 2019/10/25(金) 18:48:26.13:gsbQkWqD & exit外しても落ちる? もし落ちたとしてダメならの提示方法 ただこれはぶっちゃけ準備面倒で現実的じゃないので noxの仮想キーのスクリプトボタンでダブルタップ作ってuwscからはsckeyでどうかな : [sage] 2019/10/29(火) 18:26:13.64:tLCpEMn0 Windows10については徐々に更新されているらしい Windows Command-Line: Unicode and UTF-8 Output Text Buffer ttp://jump.5ch.net/?https://devblogs.microsoft.com/commandline/windows-command-line-unicode-and-utf-8-output-text-buffer/ : [sage] 2019/10/29(火) 18:33:02.66:tLCpEMn0 誤爆です すみません。 : [age] 2019/10/30(水) 22:06:29.29:zKjMcLjE もしかしてですけど、excelのCOMオブジェクトでシート名を指定して それをアクティブにするにはpro版じゃないとできないのでしょうか? (XLACTIVATEというpro専用関数を見つけました・・・) たとえば、「test1」と「test2」というシートを交互に選択したいのですが。 : [sage] 2019/10/30(水) 22:20:41.62:zKjMcLjE たびたびすみません。 既に開いているexcelファイルに対してrange.selectなどの操作をしたいのですが、 サンプルスクリプトを改変しながらやっておりますが、 EXCEL.Workbooks.add() // 新規ワークブック作成 を抜くとcomエラーが出ます。 どうすればよいのでしょうか・・・ : [sage] 2019/10/31(木) 22:19:57.30:2PR/MUI3 そういう場合Activeworkbookで拾うんだよ : [sage] 2019/11/13(水) 14:06:54.83:KJOE9J4P 作者さんはお亡くなりになられたのですか? : [sage] 2019/11/13(水) 21:11:38.75:HJ+xL4oZ うn : [sage] 2019/11/14(木) 00:26:50.94:1xX/pUlc ついにFirefoxの動作が思わしくなくなったので卒業した : [] 2019/11/24(日) 21:08:58.59:twqCowHe ずっとWindows7で使用していたスクリプトをWindows10で実行したところうまく動かないので UWSCを5.0から5.302へアップしたら今度はエラーが出て実行すらしなくなってしまいました 今まで動いていたスクリプトがなぜエラーになったのか見当がつきません 同じ経験をして解決された方いましたら教えて下さい エラー箇所はforループで起こりネスト構造がおかしいような内容でした よろしくおねがいします : [sage] 2019/11/24(日) 22:55:11.94:7ZFsEzWw ソース見せてもらえへんとなんとも : [] 2019/11/25(月) 14:38:22.16:7t0vtsJ9 ですが解決しました 因みにforループの中のif文で if xx then 処理A elseif yy 処理B else 処理C endif といった書き方をところどころしていたのですが 1行でif xx then 処理 の後ブロック構文ががだめになったみたいで 全部 if xx 処理A にしたら動きました : [sage] 2019/11/25(月) 14:56:34.71:E9DgYFh2 ifb って書けば良いのでは? : [sage] 2019/11/25(月) 15:52:04.30:zoSkKdve 5302のヘルプ見るとその書き方は載ってないからもともと非対応だったのかも : [sage] 2019/11/25(月) 21:00:32.82:efEnk7rY 構文解釈してるのはUWSC自体のはずだと思うけど なんでOSの影響受けるんだろう? : [sage] 2019/11/25(月) 22:32:08.47:QpqOy3LM x86→x64だと結構影響あるよ 特にActiveX使ってるとバグ作り込みやすい : [sage] 2019/11/26(火) 00:20:42.15:Swtl+iDB sckeyって裏マクロ非対応ですか? 変数に入れた文字列を送りたいのですが・・・ : [sage] 2019/11/26(火) 02:13:46.52:Swtl+iDB すみません、sendstrの間違いでした、、、 : [] 2019/11/26(火) 16:25:19.36:Mtvvcsi1 どのバージョンからか忘れたけどifでも ifb でもどっちでも良くなったと説明書きがあったと思うのですが それ以来ifb は使用してないです 結構昔です 10年以上前かも 今まで動いていたのは作者のバグだったのでしょうか? それよりエラーメッセージが日本語になったのは驚きました あとwin7のエラーメッセージは編集して行が変わっててもその都度エラーが発生した行番号を表示しますが win10は編集して行が変わっても最初に表示した行番号を表示します ファイルを編集してもすぐには反映されないのかと思いましたがとりあえずエラーは出なくなったので原因はわかりませ 後iniファイルを起動時に読みこんだ値と変わってしまっていてまともに動きません 現在調査中ですがわかる方いたら教えて下さい あと7ではタスクバーから起動したり終了させたり(マウス中ボタン)できてたのもできなくなって大変困ってます 他にも問題だらけでwin10への以降は不可能な気がしてきて気が重いです : [sage] 2019/11/27(水) 02:18:16.73:7G4RG5sM 数年前の事(Win7→Win10、UWSCバージョンアップ)を今更騒いでも当時の記憶掘り出せるかは怪しいもんだと思うし スクリプト全体像なり再現用のミニマムコードでもくれなきゃこっちで確認なんかできないよ 特にWin10では色々問題あったがほとんどの人はとっくに対応しちゃって何が問題だったか忘れてるか UWSC自体に見切りつけて簡単に使えるところにしか使ってないというのが現状と思われる てかね、Win10自体も最近1909出たばかリで、またUWSCの動作が何か変わっているかもしれないし変わってないかもしれない ただ言えることはUWSCは今後更新されないので、改善は見込めないということ : [sage] 2019/11/27(水) 03:42:15.27:DxUr7XIY まさかと思うけどUWSCのフォルダを Program Files Program Files (x86) に置いてないよね もし置いていたら、いまからでも遅くないから、そこじゃないどこかへ : [sage] 2019/11/27(水) 14:33:22.39:8E8c4VQb そ~こではないど~こか~へと~ : [sage] 2019/11/27(水) 21:15:02.15:aGnYyAi4 excelブックのシートすべてに対して各シートの1行目に検索をかけ、「印刷対象」というワードが存在する場合、そのシートを印刷する というマクロなのですが、1回目ループの印刷されたところでcomエラーが出てしまいます。 どうしたらよいのでしょうか・・・? EXCEL = CREATEOLEOBJ("Excel.Application") EXCEL.visible = True EXCEL.workbooks.add() WITH EXCEL FOR A = 1 TO .Sheets.count .Sheets(A).Select printiffind = .Range("1:1").Find("印刷対象") printif = .Cells(printiffind.row , printiffind.column).value msgbox(printif) IF printif = "印刷対象" THEN .activesheet.printout else ENDIF NEXT ENDWITH : [sage] 2019/11/27(水) 22:40:20.96:MWZwasL9 何故それをuwsc にしようとしたのかがまったく理解できない 1つでも印刷されるのそれ? : [sage] 2019/11/28(木) 10:04:18.53:p/uKw1d3 Excelのマクロでよくねw : [sage] 2019/12/06(金) 18:31:31.17:43TcIdUK noxではなくMumuで裏マクロをしたいのですが、CMD = "~~"の中身を書き換えるだけでは動きませんでした パス部分をMumuのadbがある場所にすればいいのかなと思ってこうしたら CMD = "cd C:\Program Files\Mumu\emulator\nemu\vmonitor\bin & adb_server shell input touchscreen tap " + 100 + " " + 100 PRINT CMD DOSCMD(CMD) PRINTで表示されたのはこうで cd C:\Program Files\Mumu\emulator\nemu\vmonitor\bin & adb_server shell input touchscreen tap 100 100 コマンドフロンプトに入力するとこう返ってきました error: device '(null)' not found 本スレ21のと同じ?だと思うのですが、の指す「いつものという感じ」が何なのか分かりませんでした。 : [sage] 2019/12/06(金) 23:53:28.48:56eN38dl server叩いて何してんのよという話 まずはコマンドプロンプトなりで普通にコマンド叩けるようになってからスクリプトにしなされ : [sage] 2019/12/10(火) 19:46:27.81:lD8f3lrI もうここは初心者用スレとして成立してないなw : [sage] 2019/12/11(水) 00:59:28.66:VzIBlOls 本当の初心者なんですけどどこがおすすめですか? さっぱり分かりません : [sage] 2019/12/12(木) 10:56:26.42:lDgwg3+p 573です。sdk?入れてそこのadb.exe指すようにしたら裏マクロ動きました DOSCMDから実際にタップされるまで半秒ほどかかっているのと、コマンド実行したらMumuを再起動するまでやたらカクつくようになるのはなぜでしょうか : [sage] 2019/12/12(木) 11:26:37.80:u7RWFF/r Mumuってエミュが重いか単純にPCのスペック不足 : [sage] 2019/12/12(木) 12:00:09.18:OHjSk6WK スクリプトが悪いのでは 本スレで話題になってたように画像認識にウエイトがないとかそういう : [sage] 2019/12/12(木) 19:50:24.51:D8fZkyt4 コマンドプロンプトで試して同じ挙動かどうか まずは原因がUWSCなのか、PCその他環境なのか調べないと : [sage] 2019/12/17(火) 21:25:34.41:+LcZYIpJ excelのfindで見つからなかったときのcomエラー回避ってあるんでしょうか? wikiみても載ってないし、vbaにあるIS NOTHINGも使えないし・・・ : [sage] 2019/12/17(火) 21:31:30.08:+LcZYIpJ すみません、自己解決しました : [sage] 2020/02/07(金) 17:05:22.18:4XbBvaET saveimg(gazou,0,200,300,30,30,,0,img_fore) とした時は今見えている画面の200,300の位置の30,30サイズのbmpが保存されますか? またその画像を指定して同じ画面で画像検索できますか? : [sage] 2020/02/07(金) 20:48:29.13:SnbR1xpB されないんじゃない てか動かしてから聞きにきてくれよ : [sage] 2020/02/09(日) 14:17:47.93:+d0DSBvE f12でソース見ると色の指定は#rrggbbで統一されてるのに iegetsrcで全文抜き出して見ると部分的にrgb(n,n,n)になっている なぜこんなことに… : [sage] 2020/03/02(月) 09:25:47.29:1HOipiaV すいません質問させてください クリップボードに取り込んだwebのタイトルをそのままファイル名にして保存したくて調べているのですが クエスチョンやスラッシュなどファイル名に使えない文字を変換してクリップボードに上書きする方法はありますか? よろしくお願いします : [sage] 2020/03/02(月) 09:33:54.26:1Poklgsp 変換とはどういうこと?消せばいいの? : [sage] 2020/03/02(月) 09:50:57.67:1HOipiaV 消すかアンダーバーなどの使える文字に変換したいと思ってまさ。 : [sage] 2020/03/02(月) 09:51:59.04:1HOipiaV 消すかアンダーバーなどの使える文字に変換したいと思ってます。 : [sage] 2020/03/02(月) 09:52:58.04:1Poklgsp Replaceで置換は? : [sage] 2020/03/02(月) 11:58:20.46:RHbccdbo ありがとうございました。 Replaceでうまく変換出来ました。 助かりました。 : [sage] 2020/03/09(月) 21:11:27.70:bpMBC8cG すみませんが、知っている方がいらしたら、教えて下さい。 Pro版のシリアルはなんですか? : [sage] 2020/03/09(月) 22:23:49.27:xFD8Q/oe いいえなんではないです : [sage] 2020/03/19(木) 08:38:19.27:8+JNVm+N ゲームでレベリングのマクロ組みたいんですが 操作としては左右移動(右移動キー押しっぱなしで左移動キーで調整するやり方)しながら左クリック連打だけです while 1 KBD(VK_D,DOWN) while 1 KBD(VK_A,DOWN) sleep(1) KBD(VK_A,UP) sleep(1) wend wend 左右移動はこれでできたんですが、ここに左クリック連打入れようとすると上手くいきません どうすればいいですか? : [sage] 2020/03/19(木) 09:28:56.69:E5mfm90d 関数化してthreadで別々に動かす : [sage] 2020/03/19(木) 09:36:31.31:8+JNVm+N 何やら新しいUWSC知識が必要のようですね 調べてきます : [sage] 2020/03/19(木) 13:31:47.43:8+JNVm+N まったく意味がわかりませんでした : [sage] 2020/03/19(木) 13:39:26.52:Nl/flVcz ヘルプのスクリプト構文のスレッド生成読んだ? それに当てはめるだけなんだけど : [sage] 2020/03/19(木) 14:00:08.00:8+JNVm+N thread BTN() BTN(LEFT,CLICK,666,374,200) とかなんか色々やってみたけどだめですね : [sage] 2020/03/19(木) 14:20:06.38:8+JNVm+N 他のマクロソフトと組み合わせて操作できました : [sage] 2020/03/19(木) 14:32:16.48:E5mfm90d それならuwsc2つ起動する方がマシな対処だが…まあ希望が満たせりゃあ何でもよかろ : [sage] 2020/03/19(木) 15:51:14.43:I/ufwmzm Threadって便利なんだけど変数に同時参照すると固まるのがな 確率的には物凄く低いんだろうけど・・・ : [sage] 2020/03/19(木) 16:30:35.09:Nl/flVcz 参照してるだけで変数を書き換えてなければ大丈夫とおもったんだけど : [sage] 2020/03/19(木) 19:08:00.33:vTx0gGjB スレッドが最大64個も作れるから面白いんだよな : [] 2020/03/29(日) 20:54:34.79:Qbasze3R 初心的質問で申し訳ありません。 ページ内の画像を探し見つければクリック、見つからなければスクロール+画像検索、 を三回繰り返して見つからなければ処理を停止してメッセージを出すというマクロを考えているのですが、まぁ難しくて とっかかりすらつかめていません。 ご教示いただけませんでしょうか。よろしくお願いいたします。 : [sage] 2020/03/29(日) 20:58:57.31:pPr1xaO6 自分ではどこまでできたの?コード貼ってくれ : [sage] 2020/03/29(日) 21:50:02.93:/EyNUXLu まずそれぞれ単体で動くものを作る ページ内の画像を探す クリックする スクロールする 三回繰り返す 処理を停止する メッセージを出す あとは条件とかでくっ付けるだけ : [] 2020/03/29(日) 21:59:10.97:Qbasze3R すいません、一番基本的な動きすらまともに作れてません… ifb chkimg("img.bmp") btn(left,click,g_img_x,g_img_y) else KBD(VK_SPACE) print "画像が見つかりません" endif : [sage] 2020/03/30(月) 02:39:01.09:bxGMTHZO そのサイトがどうなってるかわからないからなんとも言えないけど スクロール量をコントロールするの難しくないか? 違ったアプローチが必要な気がする : [sage] 2020/03/30(月) 02:57:48.27:fgzboYRU g_img_x g_img_yがどこの位置か知ってる クリックするのはその座標で間違いない : [sage] 2020/03/30(月) 03:21:30.15:bxGMTHZO ああ、そうか 失礼しました : [sage] 2020/03/30(月) 05:32:35.02:Lez7EJJt 画像 = 画像の場所.bmp カウンター = 0 while カウンター < 3 ifb chkimg(画像,画像の色、位置指定) sleep(1) btn(left,click,g_img_x,g_img_y,50) else btn(left,down,画面のどこかx,画面のどこかy,50) mmv(スクロール幅) btn(left,up,上と同じx,スクロール幅y,50) print "再検索" カウンター = カウンター + 1 endif wend : [sage] 2020/03/30(月) 09:11:09.86:K5J2OuWJ スペースキーで1ページ分スクロールするの知らないのだろうか… : [sage] 2020/03/30(月) 10:27:43.27:Lez7EJJt ごめん、知らなかった それってゲームのフレンド一覧でも使えたりする? : [sage] 2020/03/30(月) 11:10:38.38:/ApxdN83 普通は無理でしょう : [sage] 2020/03/30(月) 11:26:59.29:8cfGBpvw いや、で、スペースキー押してるじゃん 608の勘違いの可能性も否定できないけど、スクロールでまず思いつくPgDownじゃないから、多分、普段行っている操作なんだと思う 今の段階で、スペースキーでスクロールしない対応しても、複雑になるだけで意味ないよ あと、 さんのコメント、文尾に?がついてないせいで、逆の意味になってるよ IF文の真偽が出てないけど、printの位置から、スクロールしなかったんだと思うから、とりあえず真と仮定 真の場合は、クリックが失敗してるわけだから、まず、クリック位置を怪しむべき : [sage] 2020/03/30(月) 13:03:44.81:Lez7EJJt 無理かぁ じゃあこのまま行くか btnにx軸y軸はあるけど最後に時間入れてないのって問題ないの?
凡例:
レス番
100 (赤) → 2つ以上レスが付いている
100 (紫) → 1つ以上レスが付いている
名前
名無しさん (青) → sage のレス
名無しさん (緑) → age のレス
ID
ID:xxxxxxx (赤) → 発言が3つ以上のID
ID:xxxxxxx (青) → 発言が2つ以上のID
このページは2ch勢いランキング が作成したアーカイブです。削除についてはこちら 。