UWSC初心者用スレat TECH
UWSC初心者用スレ - 暇つぶし2ch2:デフォルトの名無しさん
18/09/24 12:14:19.87 an35jPjo.net
●ダウンロード
URLリンク(www.vector.co.jp)
URLリンク(web.archive.org)URLリンク(www.uwsc.info)
●サンプル
URLリンク(www.uwsc.info)
●FAQ
URLリンク(www.uwsc.info)

3:デフォルトの名無しさん
18/09/24 12:15:03.20 an35jPjo.net
●UWSC 掲示板(※作成依頼掲示版ではありません)
質問の際には自力で作ったスクリプトを晒すか、
具体的な解らない場所を提示すること
上級者が常駐、たまに作者も現れるため過去ログには有益情報の宝庫
URLリンク(www3.rocketbbs.com)
●UWSC - Wikipedia
URLリンク(ja.wikipedia.org)

4:デフォルトの名無しさん
18/09/24 12:15:36.86 an35jPjo.net
●使い方・基礎解説学習サイト
URLリンク(uwsc.g.hatena.ne.jp)
URLリンク(www.confrage.com)
URLリンク(necro.jp)
URLリンク(canal22.org)
URLリンク(big.tm.land.to)
URLリンク(www.game-rev.com)

5:デフォルトの名無しさん
18/09/24 12:16:00.59 an35jPjo.net
●スクリプトテンプレサイト
URLリンク(siromasa.html.xdomain.jp)
URLリンク(scripts.web.fc2.com)
URLリンク(nem.symphonic-net.com)
URLリンク(iriyak.adam.ne.jp)

6:デフォルトの名無しさん
18/09/24 12:22:09.57 idPCtow3.net
>>1
おー立ててくれたのか
プログラム板に立てたのはあえて?

7:デフォルトの名無しさん
18/09/24 13:25:23.39 OJN25ACF.net
板誤爆だろ

8:デフォルトの名無しさん
18/09/24 14:22:22.29 +VppQ0pu.net
改めて
nox(最新)でゲームを自動化しようとしてるのですが、マウスクリックなどの操作を受け付けてくれないですし、記録する時も記録出来ません。
何かやり方あるのでしょうか
あとchromeで裏マクロ作ろうとしてますが画像認識してくれません
試しにsaveimgでid クロームのハンドル webglのハンドルでそれぞれ確認したら
webglハンドルはブラウザフレームだけ取得して中身の画面は真っ黒 他はそもそも現在の画面しか取り込んでくれてないです。
よろしくお願いします

9:デフォルトの名無しさん
18/09/24 16:37:22.58 d+NkHGTT.net
ん~プログラム板がよかったのかソフトウェア板がよかったのか微妙

10:デフォルトの名無しさん
18/09/24 17:38:14.77 ZwyUHgZx.net
>>8
noxは直接クリックはできないのでadb使う
向こうのスレに参考スクリプトはあるしググれば出てくる
記録はできないが、単純操作ならnoxのスクリプトレコード使うか、座標系の元値としてだけ使ってもいいかも?
やろうと思えば変換も出来そうだけどね
Chromeはウインドウ指定で使うにはかなり難しい
過去スレを頑張って読むか諦めた方がいい

11:デフォルトの名無しさん
18/09/24 20:50:55.47 lHcMF3Ar.net
>>8
自分で考えろ
聞いて解決するな
死ね
殺す

12:デフォルトの名無しさん
18/09/24 21:04:24.34 DtR7Krcw.net
早速スレつぶしに来ててワロタ
とにかく罵倒したくて仕方ないんだな

13:デフォルトの名無しさん
18/09/24 23:18:39.85 an35jPjo.net
神の啓示には感謝しなきゃダメだよ

14:デフォルトの名無しさん
18/09/25 11:04:29.32 J1FBTwPW.net
初心者スレとか嘘つかずに素直にゲームマクロスレとかにすりゃいいのに

15:デフォルトの名無しさん
18/09/25 11:20:22.77 HpChLXGF.net
気になって仕方なくて覗きに来たのかw

16:デフォルトの名無しさん
18/09/25 11:32:00.41 KxeqxPCQ.net
僕はもう追いかけはしない

17:デフォルトの名無しさん
18/09/25 19:02:27.87 qc/hnwWX.net
ありがとうございます
とりあえずfirefox系列ならバックグラウンドで画像確認とか出来たのでこちらをベースにします

18:デフォルトの名無しさん
18/09/25 19:16:03.81 GnoTTlW7.net
>>1
>UWSC初心者用スレ
ここはプログラム板なんだから
初心者用スレがソフト板で
スクリプトを書きまくるスレが
こっちにある方が自然な住み分けだと思う
まあ住民視線だと
隔離で他板に飛ばす方が良いんだろうけど
なおスクリプトを書く方が偉いみたいな
思想で言っている訳ではない
利便性で言っているだけ

19:デフォルトの名無しさん
18/09/25 22:41:38.51 tvEhsayp.net
>>18
全く仰る通りで。板の住人には誠に申し訳ない。

20:デフォルトの名無しさん
18/09/26 00:29:25.56 Mnfitxfv.net
まあ細かいことはええやろ
向こうはUWSCというソフト全般の話する所
こっちはUWSC初心者がプログラムの話する所
とか適当に建前言っとけば問題ない

21:デフォルトの名無しさん
18/09/30 21:33:27.14 C+d3VFtL.net
すみません
上に書いてあるadbって何の事ですか

22:デフォルトの名無しさん
18/10/01 05:32:35.05 2PPz6CoJ.net
「android adb」で検索!

23:デフォルトの名無しさん
18/10/01 14:21:00.29 cVCKaASP.net
検索促すだけじゃあっちと変わらんやん(笑)
調べりゃわかることでも懇切丁寧に教えてやるためにスレ建てたんじゃなかったの?(笑)

24:デフォルトの名無しさん
18/10/01 15:03:21.02 k8diFUao.net
わざわざこっちもチエックして煽りに来てんのか
重症やな

25:デフォルトの名無しさん
18/10/01 15:04:35.85 BPii8/gs.net
向こうにもリンク貼っておいて何言ってんだこの馬鹿は

26:デフォルトの名無しさん
18/10/01 15:08:39.88 Gm5J3aUY.net
いや真面目な話、検索しろじゃあっちと変わらなくね?
このスレなんのために立てたの?

27:デフォルトの名無しさん
18/10/01 19:14:57.65 dpHWHOw9.net
真面目な話、adbは板違いなので

28:デフォルトの名無しさん
18/10/01 19:50:08.00 Fhb8wAZ6.net
ウィンドウ上の定点を監視するために、saveimg(,gid) で
クリップボードにキャプチャした画像の PeekColor(x, y,,TRUE) を取ってるんですが、時々 -1 が返ってくる。
うまく判定できていないのだろうと思って、PeekColor(x, y,COL_R,TRUE) もとってみたけど、こちらは時々 0 が返ってくる。
定点の仕様として、R が 0 にはならないのだけれど、何らかの例外がある場合、-1 や 0 を返す仕様でしょうか?
切り分けとして、-1 や 0 が返ってきたときのキャプチャを保存して確認してみたけど、色がついている(R も存在)しているので
対応指針が決まりません。
どのような時に、-1 や特殊な(?)0 が返ってくるのかどなたかご存知でしょうか?

29:デフォルトの名無しさん
18/10/01 20:13:15.44 AvNlBg/g.net
>>28
その異常値が返ってきたときのキャプチャをPeekColorかけるとやはり異常値返ってくるので?
返ってくる場合は画像よく見て分析するしかないかも
返ってこない場合は非同期でグローバル領域共有しておかしなことになってないか確認する
懸念として異常発生時のキャプチャが取れてるのかは疑問だけど…(描画乱れがランダムに起こってるんだとしたら判定後に撮っても遅い)
後は異常時にタイムスタンプ付きでログ出して周期的なものか、そのタイミング何か重い処理してないかなどを分析する

30:デフォルトの名無しさん
18/10/01 20:26:28.02 Fhb8wAZ6.net
>>29
キャプチャした内容(クリップボードに取り込んでた内容)を peekColor かけても、問題ないんですよねぇ。
グローバル領域かぁ。。。分からんw
> 懸念として異常発生時のキャプチャが取れてるのかは疑問だけど…
この辺の切り分けができるように、クリップボード使用してたんですけど、分からんねぇ。困った^^;
もうちょっと調べてみます。ありがと。

31:デフォルトの名無しさん
18/10/01 21:06:45.73 k8diFUao.net
>>26
検索しろでも懇切丁寧に教えてあげるのでも好きにすりゃいいんじゃねぇの
そういう所に変にこだわって肝心のuwscの話から脱線するのがウザくて離れたんだから

32:デフォルトの名無しさん
18/10/01 21:54:24.74 SSJgbJ3B.net
>>29
そもそもクリップボードから


33:取得って確実性あんの? 他で使ってる可能性は?入っているデータ型は都度確認してる? あんま賢いやり方とは思えないが



34:デフォルトの名無しさん
18/10/01 22:25:15.19 fZlkxeb/.net
chkimgxをAutoItなどに移植って可能ですかね?

35:デフォルトの名無しさん
18/10/02 00:28:05.04 me1+gMvb.net
>>33
元々C++で作ってるらしいからそっちに明るいならいけるんじゃないか

36:デフォルトの名無しさん
18/10/02 01:10:43.02 HAR2y5TT.net
元々OpenCVの関数叩いてるだけだし

37:デフォルトの名無しさん
18/10/03 19:21:37.26 srylDUsH.net
すみません
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
とエンドキー押せば止まるのでこれを真似てみたのですが
よかったら分かるかたいませんでしょうか?
よろしくお願いします。

38:デフォルトの名無しさん
18/10/03 19:57:21.83 yx3nQSMn.net
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

39:デフォルトの名無しさん
18/10/03 20:00:22.12 KtepAYQT.net
if/ifbの次には真偽値を置く
今のコードだとタイマーが置かれてて意味がわからないので無視されている

40:デフォルトの名無しさん
18/10/03 20:08:02.96 eg7MKqyj.net
UWSC × Noxでゲームマクロの入門編の記事を作成しました。
nox_adbについてサンプルコード付きで書いている記事は今までなかったと思うので、初心者さんが来た時にでも使ってください。
URLリンク(qiita.com)

41:デフォルトの名無しさん
18/10/03 20:35:01.96 srylDUsH.net
>>37
>>38
神様助かりました!一日中試してたのにおかげで無事できました!ありがとうございます!

42:デフォルトの名無しさん
18/10/09 08:09:46.16 dgVIN+8N.net
保守s

43:デフォルトの名無しさん
18/10/13 16:29:34.71 0Iqx+GXq.net
友人のために作成したスクリプトで、おかしな挙動が出ています。
ACW(gid,0,0,,)
として、左上隅にウィンドウを移動させ、そこを基点に特定座標の色を拾うスクリプトを書きました。
が、時々拾えなくなると言われ、切り分けのために色を拾うタイミングで、キャプチャを実施しました。
キャプチャ結果を見ると、時々、ウィンドウが移動しているように見受けられます。
友人の操作を疑っているのですが、触っていないと言われ、原因を探っています。
ACW 以外に、ウィンドウを動かす事に注意しなければならない関数は存在しますか?
昼飯で引き受けたのですが、ずいぶん高くついてしまっています。
ヒントでもあれば教えてください。

44:デフォルトの名無しさん
18/10/13 20:36:39.68 M9OwAK6A.net
>>42
情報が少なすぎて何とも言えないが…まず、どう動くの? 
その場所からいなくなるという意味ではCTRLWINでもBTNでも犯人になり得るがそういう話し?
対策は面倒ならしつこくACWするか、根本対応としてMOUSEORG使うかってところが今のところ浮かぶけど
もうちょっと差し支えない範囲でコードの中身見ないと分からんことが多すぎるよ

45:デフォルトの名無しさん
18/10/13 20:38:31.06 zXFRfhuI.net
念のため前後も確認したい

46:42
18/10/13 21:50:49.06 0Iqx+GXq.net
定点観測して、ログを吐き出すスクリプトなんで、ざっくりというと以下な感じ。
・ウィンドウを左上に移動
・特定座標の色を変数として記憶
・記憶した色のパターンが特定の条件に合致すれば、ログに出力
キーボード操作も、マウス操作も無くて、処理としては色の監視とその条件用の演算と出力です。
元のスクリプトを簡潔にして画面キャプチャのために作成した切り分けのためのスクリプトから
更に演算処理を全部抜くと
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 だと再現しないんですよねぇ^^;
なにか怪しい箇所があれば、ぜひ教えてください。

47:デフォルトの名無しさん
18/10/13 23:52:53.09 4mi4Ve5O.net
再現しないならその友人が怪しいだろ
本当に友人なんですかね

48:デフォルトの名無しさん
18/10/13 23:55:44.28 M9OwAK6A.net
>>45
で、結局どう動くの?
ワープしてデスクトップから消え失せるの? 超高速で縦横無尽に動き回るの?

49:デフォルトの名無しさん
18/10/14 00:39:58.87 TOccAP8t.net
>>45
昨日もうひとつのUWSCスレでふきだしの話してた人?
FUKIDASIのxとyってどうやって算出してるの?
元のスクリプトのほうでループのなかでxとyの値が更新されて
FUKIDASIの位置が変わってるんじゃないの?
それ以外吹き出しが動く要素がなさそうにおもうんだけど
それとUWSC以外を疑うなら画面全体を動画キャプチャしたら?

50:45
18/10/14 07:47:15.28 pryZUL3Y.net
もう一つの方の人とは別です。くちばしの形状は気にしてないんでw
FUKIDASI の xy は色識別の座標です。
画面にタイル状に並んだ画像の位置情報を算出してます。
イメージとしては、ブラウザ上に同じフォーマットの画像が12個並んでいて、その特定座標の色を抜き出している感じです。
12箇所の基点座標の割り出しと、それに追加する相対座標を追加する計算をしています。
で、ぞの位置がずれていないか、FUKIDASI 出してざっくり位置確認をしたんですが、
ループの中で撮った12枚の画像で、FUKIDASI が本来の位置に無いものがある。
何度か取り直してもらったんですが、都度少しづつズレるんです。
ズレは、ちゃんと計測してないけど、xy それぞれの方向に 1 から 5 px 程度。
ループ中全部ズレるんではなくて、途中でズレるとか、最初にズレてそのままとか。
今の所、ループ内で複数回ズレた事は観測できてません(まぁ試行回数もそれほど多くないですけど)
IMG_FORE なんで、「stop ボタン」も写り込んでるんですが、そっちもズレるんでウィンドウが動いてるって判断してます。
まぁ、何が起きてるか全然分からんので、次の切り分けでは、画面全体のキャプチャ撮ろうとは思っていますが。。。
UWSC 以外は今の所疑ってませんでした。ちょっと方法を考えてみます。

51:デフォルトの名無しさん
18/10/14 07:48:36.02 pryZUL3Y.net
>>46
怪しいよねぇ^^;
リモートで接続させろって言ってるんだけど、見られたくないそうで。。。
めんどいwww

52:デフォルトの名無しさん
18/10/14 10:17:34.99 TOccAP8t.net
>>49
>>45では FUKIDASI の位置が、キャプチャ画面上でずれるんです。。。と言ってるのに
>>49ではウィンドウが動いてるって判断してますと言ってるし結局何がずれてんの?
ずれが1~5pxなら人間が動かしてるとは考えづらい
そうするとスクリプトの座標部分が変化してるんじゃないかと疑うんだけど
肝心の座標を算出するスクリプトが書かれてないからなんとも言えない
なので要領を得ないから提案としては
fukidasiなりpeekcolorに使うxとyを定数で定義
ウィンドウとfukidasiの座標を監視して変化を検知したらログに残して
ACWで元の位置に戻してからpeekcolorを実行するようにしてはどうだろう

53:49
18/10/14 11:26:33.14 pryZUL3Y.net
ウィンドウが動いてるんで、座標指定して表示している FUKIDASI がキャプチャ上でズレているって事です。
FUKIDASI には座標を表示しているので、FUKIDASI の座標と計算は正しいと思う。
移動を監視するのが良さそうですね。
ありがとう!

54:デフォルトの名無しさん
18/10/14 15:51:35.35 flalwaHT.net
>>49
えーと、fukidasiもデバッグ用ということ?
>>43でも書いたけどウインドウ基準で相対位置決められるならMOUSEORG使えばって感じなんだけどなんかダメな要件があるので?

55:デフォルトの名無しさん
18/10/14 16:45:43.47 pryZUL3Y.net
FUKIDASI はデバッグ用途ですね。
元々原因不明な色の抽出がうまくいかないことがあったんで、切り分けの一環として採用しています。
そのおかげで、ウィンドウが少し移動していることが判明しました。
MOUSEORG はあまり使用したくないって程度の理由で採用してません。
今回みたいに原因不明の時に人を疑いたくなるんで、できるだけ人の操作から切り離して実行しようかと。

56:デフォルトの名無しさん
18/10/14 21:22:37.96 flalwaHT.net
>>54
よく分からないけど使う側を信用できないなら、なおさら動かされてもリカバリできるようにするものでは?
てかウインドウが動く原因は実のところ色々ある(UWSC外)
・画面の解像度変更、最大化以外の手段でフルスクリーン、パワポのプレビュー
・タブレットなら縦横動かした時
・デスクトップのウインドウテーマ変更
・グラボのドライバアップデート
これをやってないか、やったらいかんとか再起動せよと友人に言い含めるのとスクリプトで対策するのはどっちが楽?
(まぁ一部は再起動した方がいいと思うが)
まぁやりたくないならどうぞご自由に、自分からは特に強制するつもりはないのでね

57:デフォルトの名無しさん
18/10/14 23:41:27.00 bd+C6J+S.net
質問です
(1)画像1を認識したらスタートして画像4をクリックするマクロA
(2)画像2を認識したらスタートして画像2をクリックするマクロB
(3)画像3を認識したらスタートする画像3をクリックするマクロC
(画像1~3が同時に表示されることはなく、全てのマクロを常に起動しておきたい)
このようなプログラムを作成したいのですが、お知恵を貸してください
URLリンク(detail.chiebukuro.yahoo.co.jp)
ここを参考に作成してみたのですが、(1)のマクロしか動作してくれません
URLリンク(i.imgur.com)

58:デフォルトの名無しさん
18/10/14 23:52:58.88 flalwaHT.net
>>56
IFBの括りが悪い
すべてが最初のIFBの中なのでその画像がある時以外は何も動かない

59:デフォルトの名無しさん
18/10/15 02:43:39.99 9JA9/qag.net
たしかに1.bmpの1行とENDIFの1つを消したら2と3(4の画像が出たら4も)が動作しました
あとは添付の画像のように修正してみました
一見無事に動作しているのですがループが早すぎて気づいていないだけ…?
URLリンク(i.imgur.com)

60:デフォルトの名無しさん
18/10/17 01:08:31.52 rmV2ISLZ.net
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」のように別に作らないといけないのでしょうか

61:デフォルトの名無しさん
18/10/17 01:17:26.70 hVOihSbt.net
沢山のマグロがどうした
まあ落ち着け

62:デフォルトの名無しさん
18/10/17 05:11:55.48 UKmGEDWi.net
>>59
>マクロ2の最後にマクロ1に戻るようにCALL
勝手に呼び出し元に戻るのでCALLはいらない
というかCALLは本来インポート/インクルードに近いもので関数のように再利用するものじゃない
処理をまとめて関数化するように、関数群をまとめたファイルをCALLすることで後は好きなように関数呼び出しが出来るようになる
その際関数化してない部分がcall時に実行されるから外部スクリプトの呼び出しのように使うことができるというだけ
a.uws
public INT_A
INT_A = 1
function A()
INT_A = INT_A + 1
fend
----
main.uws
call a.uws // <-a.uwsc全体が読み込まれINT_Aの宣言と初期化だけ行われ終了する(関数化部分は自動では実行されない)
A() // <-a.uws内の関数はmain.uws内で作ったのと同じようにいつでも使える
print(INT_A) // 同様にa.uws内のpublic変数は自由にアクセスできる(G_IMG_Xみたいに)
----
仮にA()の中でループ処理をしていて抜けたい場合は単にEXITで関数を終了すればいいだけのこと

63:デフォルトの名無しさん
18/10/17 22:56:42.50 rmV2ISLZ.net
>>61
ありがとうございます
メインを作って各パターン毎にCALLで呼び出す…って形でしょうか
ゲームでマクロを勉強しているのですが、添付した画像のようなプログラムを作成してみました
宝箱の位置は固定ですがそれぞれクリックする場所が異なるため、このような記述にしてみました
問題なく動作はするのですが、
これだとひとつのuwsで行う処理が多すぎて実行されるのにタイムラグが発生してしまいます
何か良い改善策がありましたら教えてください

URLリンク(i.imgur.com)

64:デフォルトの名無しさん
18/10/17 22:59:23.31 rmV2ISLZ.net
アップする画像はこちらでした…
URLリンク(i.imgur.com)

65:デフォルトの名無しさん
18/10/17 23:42:45.42 hVOihSbt.net
>>63
そじゃない、そういうことじゃねぇんだよ兄ちゃん・・・
UWSCの場合、CALLはメインスクリプトだかの先頭辺りに列挙しておく。
CALL 戦闘開始.uws // 関数「戦闘開始」を定義
CALL 戦闘終了.uws // 関数「戦闘終了」を定義
CALL 回復.uws // 関数「回復」を定義

という風にな。
CALLで参照するスクリプトは最低限、必要な変数や関数定義にとどめておく。
ちょうど他の言語で言うライブラリやモジュールの役割に当たる。
これでスクリプト全部がオンメモリにロードされる。
後は、メインスクリプトで定義した戦闘開始()、戦闘終了()、回復()を好きなように呼べ。
IFの中でCALLは使わない。
WHILE TRUE
 IF CHKIMG(略
  戦闘開始()
 ENDIF
 :

66:デフォルトの名無しさん
18/10/18 06:45:36.30 9W5rJRye.net
CALLってそういう意味だったんですね…
今回の添付した画像のような感じであっていますか?
FUNCTIONはRESULTがどうたらこうたら出てきたのと>>61がまだ理解できなくて手こずってます
URLリンク(i.imgur.com)

67:デフォルトの名無しさん
18/10/18 08:54:31.37 Dp9NcRGV.net
まあ、要するにcallの位置にファイルの中身を丸ごとペーストするだけだからね
合っているかはまず期待通りに動いたのか、君にしかわからない
理解できないとか手こずってるとか言われても困る
こう書いたら何が起きた、期待通りにならない、こうしたいと具体的に書いてくれ
そして出来ればコードはコピペしてくれ、画像貼られても見にくいしこっちで動かせねーから
ついでに言えばいつか消えるので後から見る人の参考にならない
(差し支えない範囲である程度簡略化して実際に動くのが望ましい)
あと理解出来てないままいきなり組み込まない、問題が複雑化するよ
簡単なコードでfunctionの機能だけ、callの機能だけまずは確認しよう
その際、最初はchkimgみたいな特殊な動作する関数は使わない方がいい
(動かなくてこれ変ですかって書き込まれても画像や操作対象がないと再現できないから)
まあ、長々書いてしまったけどプログラム初心者なら躓くのは普通なので色々試してくれ

68:デフォルトの名無しさん
18/10/19 02:45:04.72 TPvM9BLe.net
前回コードを記載して書き込みしたら、エラーが出て書き込めなかったので画像でアップしてました
zipにしてアップしてみました
URLリンク(17.gigafile.nu)
実際>>63でも期待通りの動作はしており、CALLの指摘を受けて改めて>>65のように修正しても期待通りの動作はしています
個人的に現状で残る問題はメイン.uwsでループする箇所が多すぎて
>>65で言うと戦闘開始.bmpが表示されてるのに画像認識が遅れてしまうという点です
1つのuwsに全てを詰め込んでいたので遅れが出てしまうのかと思い
CALLを知ったのですが、結局これでも遅れることに変わりがなかったです
ただ>>61の記載されたように、戦闘開始.uwsの方に
FUNCTION 戦闘開始
目的の処理
FEND
として、メインを動かしたら「戦闘開始.uwsにRESULTが無い」とポップアップが出てきて動作がスタートしませんでした
そこで
PROCEDURE 戦闘開始
目的の処理
FEND
にしてみたら期待通りの動作はしているのですが、違いがわからずこれで問題ないのだろうか?ということでした

69:デフォルトの名無しさん
18/10/19 09:01:05.68 tiAvbHs0.net
つまり今の問題は
・スクリプトの動作が遅い(遅く感じる)
・functionとprocedureの違いが分からない
の二点ってことね
一つ目の問題はループ内でifを独立させているせいで、毎回頭から最後まで全てのif条件が働いている
つまり同時には一つしかヒットしないのに律儀に全部の画像を判定しようとして空振りしてので遅くなっている
対策は一つ目をifb、次以降をelseifにして最初のifbのブロック内に収める
そうするとn個目の処理した後、以後のifは飛ばす構造になる(そしてwhileでまた最初から判定)
##ifとifbの違いや動作を理解しよう##
応用としては頻出するものを最初に持ってきた方がトータルではやや早い
ただし結局はifbブロック内に大量にelseifでのchkimgがある時点で遅くなっていく
これはそもそもゲーム構造的に同時に判定すべきでないものを全て詰め込んでいるせい
簡単に言うとタイトル画面で戦闘開始の判定をしても意味がないしクエスト画面でタイトル画面のログインボタンの判定をしても意味がないよね
これも対策は出来るが長くなるのでヒントだけ
・まずはシーン(タイトル、クエストなど)を判定する為のメインループを作る
・各シーンごとの操作(画像認識)をまとめてループにする
ループ内というかifbブロック内になるべく空振りさせないように構造化させるのがポイント
これでも遅く感じる場合には、シーン内の画像認識をifbによる順次処理ではなく、スレッドによる並列処理にする必要がある
が、まあそれはまたやってみて遅いとか、スレッドやってみて詰まったら質問してくれ
次にfunctionとprocedureだけどこれは単に>>61では適当に構造のイメージで書いたのでresult書き忘れてるだけ
余計な混乱させてしまったなら悪いけど、正直に言えばそんなことで詰まるとは思いもしなかった…マニュアルとか見てる??
で、resultが何なのかはヘルプなりGoogle先生に聞いてもらうとして、多分懸念してる動作速度はどっちでも大差ない

70:デフォルトの名無しさん
18/10/19 13:46:23.05 qHVv99vL.net
>>67
スクリプト見たんだけどCHKIMGとCHKIMGXが混在してるのはこの通りであってるの?
>>67の切り分けによると戦闘開始関数だけで時間が掛かってるってことだよね
どこで処理に時間が掛かってるかGETTIMEで計測したらどうか?
たぶんCHKIMGかCHKIMGXだとおもうんだけど
まずは戦闘開始.bmpが表示されたらPrintでなにか表示させるとかして
処理を小さく区切って満足行く結果が出たら次の処理につなげてという風に
問題を細かく見てったほうがいい
そこがクリアされてるなら
「戦闘開始.bmpが表示されてるのに画像認識が遅れてしまう」こんなことにはならない
まず戦闘開始だけを満足に動かすことを考えたほうがいい

71:デフォルトの名無しさん
18/10/19 17:35:14.14 TPvM9BLe.net
>>68
つい先日マクロについて知って、下記のHPを読みながら1つの問題が解決したら都度次へって感じでやってます
URLリンク(qiita.com)
まずゲーム内のどこでマクロに任せるべきなのかからスタートしてるのと、
プログラミングの知識がないので手探りになってしまっているのは申し訳ないです
>同時に判定すべきでないものを全て詰め込んでいるせい
ここは理解しているのですが、どこでどう判定させて区切るべきかわからずぐちゃぐちゃになってるのだと思います
・ダンジョン1で歩いて宝箱を回収していく
・ダンジョン1で歩き回れば敵と遭遇し戦闘が開始される
・戦闘が終わればリザルトがある
以上のようにダンジョン1で宝箱を探している間に敵は出てくるので戦闘開始と戦闘終了は必要なので、メイン.uwsの記述があのようになりました
(1)ダンジョン1を宝箱を回収しながら自動で踏破
(2)途中で敵に遭遇したら自動で戦闘開始、戦闘を終えたら(1)の続きに戻る
ちなみに最終的にはこのようにできれば良いなと思ってはいるんですが、まだまだ遠い未来です…
>>69
CHKIMGとCHKIMGXが混在しているのは、CHKIMGで認識できない画像だけをCHKIMGXで作成してます
ちなみにマクロは現状正しく動作しており、それぞれのマクロだけ動作させるなら開始も機敏です
説明が下手で申し訳ないのですが、>>68の言葉を借りるなら全てをセットにしたメイン.uwsの作り方が下手で、空振りが多いのだと思います

72:デフォルトの名無しさん
18/10/19 18:26:33.13 QAno5ZfD.net
どんな場合があってどの様な条件(画像、回数など)が必要なのか紙に描いて整理した方が良いですよ
uwscというより設計の問題です

73:デフォルトの名無しさん
18/10/19 18:28:28.54 5Sybigz9.net
>>70
すまん、ダンジョン1.uws見てなかった
これはまずいわ、メイン.uwsで宝箱1~6の画像検索してどれか見つかったら
宝箱()を呼び出してるけど、そこでまた宝箱1~6の画像を全て検索してるじゃん
宝箱1を見つけたら宝箱1を開封する関数だけを呼び出さないと
あとメイン.uwsで戦闘開始と戦闘終了を画像検索してるけど
戦闘が始まってもないのに戦闘終了の画像を検索する必要ある?
言い方を変えると、戦闘終了してるかチェックするのは
戦闘開始を見つけてからでいいんじゃない?
その辺の動きももう一度整理したほうがよさそう

74:デフォルトの名無しさん
18/10/19 18:56:25.14 tiAvbHs0.net
>>70
まあとりあえず色んな人からアドバイス出たことだし、少し手を動かして頑張って
ちなみにやろうとしてるほぼ全自動でゲーム進めるってのは初学者にはかなり難しいテーマだよ、もはやゲーム設計するのと大差ないからね
コードだけ眺めてても解決しないので絵にしたりしないと無理じゃないかな

75:デフォルトの名無しさん
18/10/19 23:37:36.28 QpJkHdff.net
>>73
>全自動でゲーム進めるってのは
>初学者にはかなり難しいテーマ
同意
単純なクリック連打じゃなくて
ゲームの内容を判断しながら分岐させるのは
ゲームのAIレベルだから難しい

76:デフォルトの名無しさん
18/10/20 00:19:23.65 6OPiVTnP.net
今回も修正したuwsのファイルをアップしてみました
無事に動作はしていますが、変なところがあればご指摘いただければと思います
URLリンク(32.gigafile.nu)
悩み中.uwsというファイルがありますが、
同じ画像を認識したとしても処理は異なるようにするにはどうしたら良いのでしょうか
現在はSLEEPを使用して1回目の表示と2回目の表示の間隔を空けて強引に処理させてます
>>71
ある程度は整理できてるのですが、処理を開始するためにどこの画像を認識させようかの判断ができないんですよね
ダンジョンの背景とかだと使い回しで別のダンジョンと間違えられても困るし…
>>72
書き込んだあとちょうどその部分に変更を加えていました
おかげで処理は高速になったと思われます…(実感はある)
>>73
全自動というのは無理だと思っているので、移動以外は自動化できないかなって思ってます
一応今のところ8割はできてると思います

77:デフォルトの名無しさん
18/10/20 00:57:49.14 69MHWzaM.net
>>75
>同じ画像~
させたい処理が違うなら何かが違うんでしょとしか言えないが
画面の見た目類で判断しにくく、仮に交互に繰り返すならカウンタ/フラグ変数を持って切り替えるのはどうかな?
これに限らず全てchkimgで判断させるのは無理があるはず

78:デフォルトの名無しさん
18/10/20 01:01:01.66 90xm7L12.net
>>75
ボスの画像を認識した回数をカウントして処理を分ければいいんじゃない
で、パターンを戻したくなったらカウントをリセットすればいい
行動パターンがあまりにも多かったら大変だけど
ここからは今は重要なことじゃないし
処理が早くなるわけではないからわからなかったらスルーしてくれ
1つの行動を1つの関数にするのはいいんだけどファイルを分ける必要あるかな
例えばダンジョン1宝箱3とか他のダンジョンなりスクリプトで再利用する?
それぞれのファイルで毎回全く同じCALLや変数の初期化を
何度も書くのは無駄だし間違いの元になることもある
変数のスコープやProcedureやFunctionや値渡しについて知ればもっとよくなるとおもう

79:デフォルトの名無しさん
18/10/20 01:01:35.72 90xm7L12.net
しまった、また長文書いてる間に先越されたw

80:デフォルトの名無しさん
18/10/20 03:46:56.86 I8y7CiS+


81:.net



82:デフォルトの名無しさん
18/10/20 09:18:37.52 q084eIUp.net
とゴミが申しております
そういうのは本スレでやってね

83:デフォルトの名無しさん
18/10/20 10:13:45.64 ac1pPfcT.net
たかがUWSC作ったマクロしか組めない程度の人間のマクロ技術がゲーム制作やゲームAIと同じとはとても思えないわ。
まあ雑魚同士で自画自賛しあってればいいんじゃない。

84:デフォルトの名無しさん
18/10/20 10:25:26.46 q084eIUp.net
といちいち初心者スレ監視してる雑魚が申しております
自称天才意識高い系プロは本スレで暴れててね

85:デフォルトの名無しさん
18/10/21 03:47:50.14 gVw834nh.net
初心者スレでこれは草

86:デフォルトの名無しさん
18/10/21 11:27:18.44 ugGKSKgn.net
寂しがり屋さんなのかな?
本スレそれほど過疎ってるわけでもないのに
スレ分けてよかったかな今のところは

87:デフォルトの名無しさん
18/10/22 00:09:48.52 rGA5crV5.net
URLリンク(17.gigafile.nu)
カウントについて調べていろいろやってみたのですが、
「ボス戦ターン1()」を繰り返したり、
「ボス戦ターン2()」まで行っても「ボス戦ターン1()」に戻ったりしてしまいます
カウントの処理について教えていただきたいです
それと、最後の部分にある「CALL」ですが
URLリンク(kobuji.me)
ここを参考にしてみたのですが、このCALLの使い方はあっているのでしょうか?
(前回一番上に記載するやり方だと教えてもらいましたが…)

88:デフォルトの名無しさん
18/10/22 00:42:44.65 ktdTMJw1.net
>>85
カウント以前の問題が多すぎる
インデントを入れると自分がどれだけ変なコード組んでるかちょっと分かるかも?

89:デフォルトの名無しさん
18/10/22 01:12:45.93 rGA5crV5.net
>>86
申し訳ないのですが、他のサイトを参考に組み立てたもので、そこから試行錯誤してるのですがうまくいかないのです
いまも随時修正は加えているのですが、問題の箇所を具体的に教えていただけるとありがたいです

90:デフォルトの名無しさん
18/10/22 01:15:13.19 ktdTMJw1.net
>>87
>>56-86に書いてある
その上で問題が認識しづらいのは「インデントのせいかも」というアドバイスをしたので、まずはインデントを入れてみてくれ

91:デフォルトの名無しさん
18/10/22 01:17:20.48 rGA5crV5.net
>>88
どこにカウントのことが書いてあるのでしょうか?

92:デフォルトの名無しさん
18/10/22 01:38:22.25 ktdTMJw1.net
>>89
カウント以前の問題だと>>86に書いているよね
カウントの処理が変なんじゃなくて、依然として最初期から指摘してるIF/IFBの書き方に問題があるということ
まずそこを直してくれないと次のステップに進むアドバイスは自分からはできない

93:デフォルトの名無しさん
18/10/22 02:06:06.56 rGA5crV5.net
教えを請う立場で申し訳ないですし、自分で問題解決まで知識を蓄えろというのはごもっともなのですが、
自分なりにできてるところはこちらで質問しておりませんし、いまも試行錯誤したうえで行き詰まってまして、
先ほどアップしたファイルはその試行錯誤の末、ぐちゃぐちゃになってるのは自分でも理解しています
ただ、自分なりにいろいろ手を尽くしても解決することができなかったので、
できれば具体的な解決策もしくは参考になるページを提示していただけると助かります
今回で言うとカウンタを利用して
カウント0の時、Aの画像を認識するまでループ、認識できたら1の行動(カウント+1)でループを抜け出して次の処理へ
カウント1の時、Aの画像を認識するまでループ、認識できたら2の行動(カウント+1)でループを抜け出して次の処理へ
カウント2の時、Aの画像を認識するまでループ、認識できたら3の行動(カウント+1)でループを抜け出して次の処理へ
という形にしたいのですが、カウントと画像認識を組み合わせた時の書き方、条件分岐の策がわからず、
検索しても目的の処理について出てこないので困ってるんです

94:デフォルトの名無しさん
18/10/22 02:12:15.48 ktdTMJw1.net
>>91
だから具体的な解決策が「インデントを入れる」なんだけど
ただ、それだけでこの数日どれだけ無駄にしてたか理解できると思うよ

95:デフォルトの名無しさん
18/10/22 02:18:15.10 rGA5crV5.net
>>92
それなら参考にしたいので試しに自分がアップしたファイルで、
>>92さんのインデントを入れたものを見せていただきたいです

96:デフォルトの名無しさん
18/10/22 02:24:04.66 ktdTMJw1.net
>>93
ま、口でいうだけじゃ分からんこともあるだろうということで今回は特別にインデントを入れてあげよう
URLリンク(paiza.io)
これを見ておかしいところが分からない? それはちょっと困る展開だが…どう?

97:デフォルトの名無しさん
18/10/22 02:44:54.75 ktdTMJw1.net
>>91
さてここまでやってしまったからについでに言うと
>カウント0の時、Aの画像を認識するまでループ、認識できたら1の行動(カウント+1)でループを抜け出して次の処理へ
>カウント1の時、Aの画像を認識するまでループ、認識できたら2の行動(カウント+1)でループを抜け出して次の処理へ
>カウント2の時、Aの画像を認識するまでループ、認識できたら3の行動(カウント+1)でループを抜け出して次の処理へ
まぁこの辺は経験とかないとこうなっちゃうのかなと思うが、簡単にすると以下だよね
>カウントが0からnまで繰り返し、Aの画像を認識した時、カウント別の処理実行後、カウントを+1して次へ
これをプログラムしやすく整形すると…
>カウントが0からnまで繰り返し
> Aの画像を認識した時、
>  カウント別の処理実行後、
>  カウントを+1
書くべきコードのイメージも大分違ってくるでしょう

98:デフォルトの名無しさん
18/10/22 03:37:01.47 rGA5crV5.net
>>94-95
ありがとうございます
にっちもさっちもいかず、ぐちゃぐちゃにしてしまったファイルをアップしたせいで、
より大きな誤解を招いてしまったところがあると思います…
URLリンク(22.gigafile.nu)
いま試行錯誤していたファイルをアップしてみました
ちょうど>>95あたり?に近かったのではないかと思われますが…
ターン1→2→3→3→1という風に書いてあるにも関わらず、
ターン1→3→2、1→3→1、1→2→3など行動が飛ばされる時があります
戦闘開始.bmpを画像認識しなければ次へ進まないはずだと思うのですが、
異なる制御文でも入れてしまっているのでしょうか…

99:デフォルトの名無しさん
18/10/22 04:28:57.69 ktdTMJw1.net
>>96
肝心のカウントを判定してないんだから順番通りになるわけもない
そもそも…
> カウントが0からnまで繰り返し
> Aの画像を認識した時、
>  カウント別の処理実行後、
>  カウントを+1
↑に近づけたつもりならwhileと画像認識はひとつ
カウントのif文で分岐を書けばいいだけ
同じ判定がいくつも出てくるのは構造がおかしいと指摘したはずだよね
てかこれだけ言ってもインデント無視する限りもうアドバイスしないのでそのつもりで

100:デフォルトの名無しさん
18/10/22 04:36:33.96 rGA5crV5.net
>>97
勘違いなさってるようなので訂正させていただきますが、
>>96のファイルは>>94-95を拝見する前に自力で作成していたものです

101:デフォルトの名無しさん
18/10/22 04:48:50.98 iCVScRLH.net
まず状況整理のためにインデントをいれろというアドバイスがあったのに
インデント入れてみてくれはさすがに乱暴だろ
インデントについて調べて理解したの?
IF文におかしいところがないか確認したの?

102:デフォルトの名無しさん
18/10/22 05:00:05.30 rGA5crV5.net
>>99
>>94を見ても一瞬で理解できない猿で申し訳ないとしか言えません
>>39を見て、どんなものかと始めたばかりなのでプログラムの記述式等に学が浅く、
言われてることを理解するのにも四苦八苦ですし、周りからすれば幼子に6+6の計算させたら指が足りないからわからないって言ってるようなものなのは申し訳ないです

103:デフォルトの名無しさん
18/10/22 05:35:05.90 anSnU/H2.net
ID違うけど>>99です
>>100
>>99に対して思いもよらないレスが返ってきたので2つ確認させてください
1.あなたは日本人ですか?
2.日本語苦手ですか?
煽りとかじゃなくてマジで中国人とかが日本のゲームやってbot使ってたりするので確認です

104:デフォルトの名無しさん
18/10/22 16:04:47.06 qAlmLxF7.net
初心者用スレで何言ってんだこいつ

105:デフォルトの名無しさん
18/10/22 17:38:03.95 8Ffx9AaH.net
インデントを入れるとどこで処理が区切られているか、どこで処理がループされているかがはっきりするのでインデントを入れましょうって話だろ
初心者相手に


106:「インデントを入れればわかる」で投げっぱなしはそらキツいっしょ インデントの入れ方の規則だってわからんだろうし



107:デフォルトの名無しさん
18/10/22 18:08:33.49 X1R8clvb.net
ここはuwscの初心者スレであってプログラミングの初心者スレではないからな

108:デフォルトの名無しさん
18/10/22 18:13:22.50 FNc64wsF.net
ゲームマクロなら画像認識とマウスキーボード自動化あればいいんだから言語なんてなんでもいいんだけどね。
開発環境しっかりしてるVBとかのほうがいいような気もする。

109:デフォルトの名無しさん
18/10/22 19:00:12.21 QPF2Uwab.net
>>104
了解。次スレで検討する。
「プログラミング初心者のためのUWSCスレ」
で、よろしいか?

110:デフォルトの名無しさん
18/10/22 19:36:21.25 ofo6/h19.net
>>100
多くの人にとってはインデントがあったほうが見やすいでしょうから
今インデントをしていないのは、単にインデントするのが面倒なのではないかと思います
多くのエディタでは
複数行を選んだ状態でTABを押すとインデントが深くなり
インデントのある行を複数行を選んでSHIFT+TABでインデントが浅くなるという機能があります
(※エディタによってはキー割り当てが違うこともあります)
今これというエディタを使っていないのであれば
Mery (テキストエディタ)
URLリンク(www.haijin-boys.com)
を使ってみてください。
このエディタは最初から 表示→表示モード に最初からUWSCが含まれています。
なので、UWSファイルを読み込んだだけで自動的に見やすいカラー表示をしてくれます。
ツール→オプションで最初にここだけ設定しておくと見やすいだろうという箇所は
「基本」タブで
 「タブの桁数」で1タブでなん文字分字下げするか設定できます。
 タブより空白がよければ「タブの代わりに空白を挿入」にチェック
  タブの代わりに空白でのTAB/SHIFT+TABによるインデントの増減が効きます
「基本」タブで
 見やすいテーマを選択
「記号」タブで
 タブ表示、半角空白表示、全角空白表示 にチェックを入れる
なお、自分が常用しているのは秀丸ですので、
このMeryエディタを広めたいとかいう意図ではありません。

111:デフォルトの名無しさん
18/10/22 19:41:11.57 ofo6/h19.net
>>107
×「基本」タブで
  見やすいテーマを選択
○「表示」タブで
  見やすいテーマを選択

112:デフォルトの名無しさん
18/10/23 00:50:11.50 UxSE6/em.net
自分のせいでいろいろと申し訳ありません
インデントについては普通にメモ帳でやってるのもあり、
一部HPではインデントをつけてないところもありコピペしてたので動作してから直そうと思ってました
URLリンク(11.gigafile.nu)
再度修正してみました
「悩み中.uws」は目的の動作をしてくれるようになりましたので「ボス戦開始.uws」に名称を変更しました
一応動作はしてくれているのですが、正しい解決策がわからない部分もあります
行動が飛ばされてた原因がおそらく戦闘開始.bmpの画像を認識するスピードが速すぎて、
行動が終わる前に画像を再度認識してカウントをプラスしていたようで、
このやり方は違うとは思いつつもSLEEPで強制的に認識を止めてます
次にカウントで「戦闘開始.uws」についても修正してみました
こちらも自分の思ったとおりの動作はしてくれているのですが、
1ターン目は完璧ですが、その後に戦闘終了の処理に移行してしまうので、
当然ながら2ターン目は動作しないということに…
「戦闘終了.uws」はメインで画像認識させた方が良いですかね…
>>107
Mery調べてみます

113:デフォルトの名無しさん
18/10/23 01:54:05.77 A3TfahIO.net
>>109
気づいたところをまず指摘しておきます
ボス戦開始がどういうタイミングでどこから
よばれるか今回アップされた中からは判断できませんが
当然メインからたどって何かのタイミングで呼ばれるかたちになるのだろうと思います。
ということ�


114:ヘそこから メイン.uws をCALLしてしまうと らどんどん深いネストに入って無限ループに陥ってしまいます EXITEXITに達することはないはずです



115:デフォルトの名無しさん
18/10/23 01:57:20.66 A3TfahIO.net
単純化すると次のような状態です
破線内を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 ファイル末尾"
-----------------------

116:デフォルトの名無しさん
18/10/23 02:00:25.52 A3TfahIO.net
訂正
単純化すると次のような状態です
破線内を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 ファイル末尾"
-----------------------

117:デフォルトの名無しさん
18/10/23 02:07:54.16 mm3zor/C.net
次のようなかたちになるべきかと思います
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 ファイル末尾"
------------------------

118:デフォルトの名無しさん
18/10/23 02:27:59.59 poTZwO/U.net
>>109
…二文字か四文字半角スペースにしてくれ
書いてて見にくくない?
適宜sleep入れるのは普通のこと
何も指定しなかったら常に最速でプログラムは回っちゃうから、ボタンの反応や画面切り替えを想定したウェイトを入れるべし
従って後者もwhileの最後にターンとやらの切り替わる猶予を待たせたるか、ボタンが押せる状態か判定を入れてもいい
(もちろん組み合わせてもいい、二重操作防止のsleepと操作受付判定いれれば完璧)

119:デフォルトの名無しさん
18/10/23 03:09:10.20 UxSE6/em.net
Mery使いやすいですね
>>112
URLリンク(kobuji.me)
>他のマクロを呼び出し現在のマクロを終了する
ここの部分を参考にしてみて、一応動作はしているのですが、
なんとなくそうだろうとは思っていたものの、やはり問題ありますよね
メイン→ダンジョン選択→ダンジョン1→ボス戦開始(→戦闘が終わったらメインに戻る)
>>72の書き込みから意識して深い階層に行くようにして、
流れはこのように考えているのですが、再度ドツボにハマってきました
今のところの自分が考えている問題点は以下です
・「ボス戦開始」で戦闘が終了した時に「メイン」に戻る
・「ダンジョン選択」でダンジョンを選ばなかった時に「メイン」に戻る
・「戦闘開始」の2ターン目以降とをどうするか
>>114
普通のことだったんですね、それなら「ボス戦開始」のカウント処理は問題なさそうです
あとは2ターン目以降の問題ですが、どう判定させるか考えてみます

120:デフォルトの名無しさん
18/10/23 06:04:39.54 xet0u+mg.net
>>115
・「ボス戦開始」で戦闘が終了した時に「メイン」に戻る
ボス戦開始の条件はボス画像を発見したら?
それとボス戦は戦闘開始.uwsを再利用できる?
戦闘開始.bmpを画像検索してるルーチンに組み込めないかな?
それができれば宝箱の判定をしたあとにExit入れればメインに戻れる
・「ダンジョン選択」でダンジョンを選ばなかった時に「メイン」に戻る
メインに戻るための条件を組み込めばできそう
・「戦闘開始」の2ターン目以降とをどうするか
どのキャラにどういう行動をさせたいのか
今の所1つのキャラに対して行動が1パターンしかないよね

121:デフォルトの名無しさん
18/10/23 07:56:13.12 poTZwO/U.net
>>115
>>61-66をよく読�


122:゚



123:デフォルトの名無しさん
18/10/24 03:06:06.77 JPOPYXjO.net
>>115
例に出したようなかたちだったら問題があるというだけで
実際に問題があるかどうかは作り方次第です。
CALL おわり.uws
EXITEXIT
だとしても
-------------
//おわり.uws
FUKIDASI("おわります")
SLEEP(5)
FUKIDASI()
-------------
だとしたら何の問題もありません。
自分が呼び出されてる元を呼んでしまうので問題がある(可能性が高くなる)わけです
戦闘が終了したら「メイン.uws」に戻る
といういいかたの通り呼び出されたところに“戻る”べきであって
メインを呼んでしまっては戻るのではなく“潜って”しまいます。
前回よりもさらに単純化していうと
PROCEDER test_proc()
 test_proc()
FEND
という状態です
再帰呼び出しといいますが
test_proc()を呼ばずに抜ける条件がなければ無限ループになります

124:デフォルトの名無しさん
18/10/24 08:38:49.61 EHDjbV6E.net
再帰呼び出しや無限ループになるならまだいいが、uwscでそれやると行き着く先はスタックオーバーフローである
前にも書いたがcallのところに内容をコピペすると考えて、一度テキストエディタ上で実際にペーストしてみて
どうなるのか確かめて見たらいいと思う
※メインを上からなぞりcallの行をcall先の中身に置き換える
というか最終的に別スクリプトに分割するのは悪いことじゃないが、そもそも質問者が期待するような
動作が早くなったり制御が楽になるなんてことはなく逆にミスの温床にしかなってないから1ファイルに戻した方がいいかも?

125:デフォルトの名無しさん
18/10/26 11:32:57.00 KT8sz2lK.net
UWSCと言えば、お絵かきソフトをプロッター代わりにして
ドラゴン曲線を描いた覚えがある

126:デフォルトの名無しさん
18/10/26 12:14:58.57 rGWXcnDl.net
そういう使い方があったのか
目から鱗だな

127:デフォルトの名無しさん
18/10/26 12:35:28.21 Ho1Po0zE.net
ペイント使って最初にやったな

128:デフォルトの名無しさん
18/10/26 22:49:03.24 EeaDtgcV.net
面白いけどペイントソフトのスクリプト使った方が効率的

129:デフォルトの名無しさん
18/10/27 12:35:52.24 XTWU7dAT.net
2ヶ所クリックをctrlキー使えばいいかなーと思ってコード書いたけど、
どうしても上手くいかなくていろいろ調べたらタブで繋げばよいと知った
知らないことたくさんあるなー

130:デフォルトの名無しさん
18/10/30 12:54:19.69 wR+aWlcX.net
URLリンク(github.com)
ChkImgX AutoItにも対応いたしました。

131:デフォルトの名無しさん
18/10/30 13:07:46.54 QwfsTk/G.net
なぜuwsc専用スレに他のアプリ対応を宣伝しにくるのか…ほんと頭おかしい

132:デフォルトの名無しさん
18/10/31 20:55:50.19 Gkg/z3xB.net
>>125
個人情報抜き取られたりウイルス感染したりしない?

133:デフォルトの名無しさん
18/10/31 23:58:01.63 qEtCZoW0.net
アップしてるのはただのスクリプトなので怪しいなら見てみればわかります。
外部と通信してることなど一切ないです。
ChkImgX.uwsとほぼ同じことをしてるだけですね。

134:デフォルトの名無しさん
18/11/01 09:05:29.68 97yVLdc+.net
>>127
構っちゃだめですよ

135:デフォルトの名無しさん
18/11/04 16:41:46.76 4y7rUrKd.net
pro版のデバッガも試用期間過ぎると使えなくなりますか?
あと記憶が不確かなんですが前にpro版の試用期間を過ぎたあたりの
タイミングでスクリプトが勝手にスクランブル掛かってしまったんですが
どういう条件で起きるのでしょうか
自分でスクランブル掛けてないのは間違いないです

136:デフォルトの名無しさん
18/11/04 17:29:09.86 4dO


137:Mj00Y.net



138:デフォルトの名無しさん
18/11/04 19:29:50.98 WH4Iex1S.net
「pro版のデバッガ」はそういう意味ではないかもしれない
でも普通に読むと、何言ってんだとしか言えんわなw

139:デフォルトの名無しさん
18/11/04 21:26:15.36 4y7rUrKd.net
>>131-132
試用期間過ぎたら勝手にスクランブル掛けるって
ちょっと信じ難かったので質問しました
ありがとうございました

140:デフォルトの名無しさん
18/11/19 12:00:31.20 Bnz7GW+k.net
>>39
の見させていただいたのですが
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
とありますが逆に画像が見つからなかった場合クリックする方法はありませんでしょうか?

画像が見つかればスルー
画像が見つからなかったらクリック
よろしくお願いします。

141:デフォルトの名無しさん
18/11/19 12:22:00.42 FEO3fFuI.net
質問に対してそのまま返答すると
else内でbtn使えばいいよ
ってなるんだけど
多分そういうことを聞きたいんじゃないのだと思ってる

142:デフォルトの名無しさん
18/11/19 13:23:15.10 F1pQ/Nbq.net
見つかった場合だと座標指定にchkimgのg_img_x/yが使えるけど、見つからなかった場合はどうやってということかね
あらかじめメモって数値なり変数で指定するだけだが

143:デフォルトの名無しさん
18/11/19 13:34:46.71 Bnz7GW+k.net
ありがとうございます。
実は目的は画像が出てくるまでenterを押し続けて画像が出てきたら
enterをストップして次の行動にうつりたいのですが
While !chkimg("gazou",0,,,,,,IMG_MSK_BGR4)
KBD(VK_enter)
SLEEP(0.7)
WEND
で無限ループは可能なのですが画像がずっと見つからない場合抜け出せなくなるのですよね
どこかにbreakを入れれば抜け出せると思うのですが
理想としては10回enterを押して画像が見つからなければ次の行動にうつる
といった感じです。
前このスクリプトを聞いてかなり叩かれたのでちょっと別のスクリプトで応用しようとして聞きました。
難しいと思いますがもしよかったらお願いします。

144:デフォルトの名無しさん
18/11/19 14:20:27.92 L9zCa8ZR.net
>>137
10回押すというかそれ10回ループしたらええやん

145:デフォルトの名無しさん
18/11/19 14:45:20.37 qv8H9IjA.net
叩かれてそれから君は少しでも自分で調べようとしたの?
uwsc whileとかでググってでてくるサイトでも見りゃすぐに答え見つかるんだけど

146:デフォルトの名無しさん
18/11/19 14:54:23.56 J6erJctM.net
繰り返し回数決まっているならFor To Next文でもいいし
ヘルプ、付属サンプルみてみた?

147:デフォルトの名無しさん
18/11/19 15:00:05.80 lM8hlL/3.net
叩かれたのは調べればすぐわかることを聞きっぱなしで意味もわからず使って調べようともしないからだぞ
何もわかってねーのな
ググる以前にヘルプに書いてある程度のレベルじゃん

148:デフォルトの名無しさん
18/11/19 15:18:49.89 TYiI0aDU.net
俺が難しいと思うのは137との意思疎通であって
やりたい事も実現するコードも多分 簡単だと思ってるよ

149:デフォルトの名無しさん
18/11/19 15:35:41.43 Bnz7GW+k.net
>>140
ヘルプを結構読んでググっても付属サンプル見ても見つからないのでまたいきなり
聞くのも悪いのでしばらく経った後聞いてみました。
どうしても出てくる画像がランダムなので回数を決められないんですよね
向いてないと言われるかもしれませんがこのソフトのおかげで


150:ゲームマクロでかなり生活も助かってまして すみません また荒れると悪いのでしばらくこの辺にしておきます



151:デフォルトの名無しさん
18/11/19 15:47:05.45 X6A/Pm1x.net
おいおい初心者スレなのにそんなにいじめたら可愛そうだろ。
お前らは何か勘違いしているようだな。よく考えろ。
向こうのスレの>>10のこいつの書き込みから3ヶ月経ったが、whileやbreakはおろか、ifやforという基礎中の基礎すら未だ理解していない。
これはもはや自分で考えたり習得する気は微塵もなく、ただ答えを教えろ、代わりに作れと言っているだけ。
そんな奴にググれだのヘルプ見ろと言うことがそもそも無意味で間違いなんだよ。
さらに言えばそれでは向こうのスレと全く同じ流れでこのスレを建てた意味がない。
ここは初心者スレらしく、ヒントやヘルプ見ろなどと意地悪するのではなく、懇切丁寧に答えを教えてあげるべき。
ちなみに僕は初心者なのでよくわからない。

152:デフォルトの名無しさん
18/11/19 17:04:30.02 +ZNV2ej4.net
>>143
「条件を満たしたらループから抜ける」 なんてーのは基礎中の基礎以前にら自力でも考え付くだろ
わからなきゃこのワード+uwscでググれば答えが出てたぞ。まじめに調べてないだろお前

153:デフォルトの名無しさん
18/11/19 19:43:37.32 XkF2k9TP.net
正常性バイアスというか、それなりに動くものが一度出来ちゃうとそれに固執しちゃうのは初心者っぽくはある
たぶんもっと簡単に抜ける条件があるのに回数(しかも不定とかイミフ)に囚われすぎ

154:デフォルトの名無しさん
18/11/19 20:19:06.74 Bnz7GW+k.net
>>146
回数のほかに理想としてるのは時間ですね
>>36は私なのですが
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
>>37さんに教えてもらったこのスクリプト物凄く助かりました。
今現在も利用させてもらっています。
これは10秒の間に画像が見つからなければ次の行動に向かわせるマクロなのですが
目的のはenterを10秒間連続で押しても画像が見つからなければ
次の行動に向かうでも目的は達成できますね。
画像が見つかった場合どうしてもそれ様のスクリプトをスタートしないといけないんですよね
なので1秒ずつコレを作ってもまたenterを押してしまって
説明が下手ですみません
if 画像
見つかったときの処理
else
エンター
endif
を10個用意して試してちょっとおしいって感じだったんですけど結局途中でエンターをずっと連打
してしまうんですよね
でもこれでも別の目的のマクロでは使えてるので凄く助かっているのでuwscと
5ちゃんねるには感謝しています。

155:デフォルトの名無しさん
18/11/19 21:05:53.38 +ZNV2ej4.net
>>147
いったい何のゲームのマクロなんだ?w
有名なMMOの自動戦闘マクロなら結構作ったが、ひとつひとつ手順をつぶしていけばいつのまにか出来てるぞ
索敵してタゲった場合にゲージが出るゲームなら、それをpeekcolorでチェックしたほうが速くて確実
それと、見つかったら発見フラグを立てて、それが存在するときは「エンター動作」とやらをしなけりゃいいだけじゃないのか

156:デフォルトの名無しさん
18/11/19 21:21:32.06 Bnz7GW+k.net
>>148
すみませんゲーム名はさすがに伏せさせてください
戦闘は一通り作れたのですがもっと手を入れたいのはいわゆる生産系と特殊な行動ですね
ある程度ゲーム内通貨を稼げる生産系マクロも作れたのですがあるものにどうしても特殊な動きが必要でさきほどの内容を聞きました


157: わからなくても特別困ってはないのですがわかればもっと便利になるといった感じです。



158:デフォルトの名無しさん
18/11/21 16:57:13.35 Idcs0zEb.net
見つかるまで回す処理にwhile 変数 = falseって形でフラグ使ってるけど変数増えすぎて面倒になってきた
見つかるまで繰り返す処理を実現したい

159:デフォルトの名無しさん
18/11/21 17:15:39.42 A7QyS99w.net
while !chkimg("a.bmp")とか

160:デフォルトの名無しさん
18/11/21 17:41:08.13 WARGIWsC.net
ゲームだとカウンタを使うことも多いので、結果的にフラグと同等のものが存在することが多い
ので、それで判別しちゃうとか

161:デフォルトの名無しさん
18/11/21 18:12:22.90 R5CLMRXS.net
while true
if chkimg(略) breake
見つかるまで繰り返す処理
skeep(1)
wend
超適当だけどこういうのじゃいかんの?

162:デフォルトの名無しさん
18/11/21 20:33:04.38 cYYMBbSe.net
チェックが複雑になるならメソッドで切り出すのがいいかと
while checker(...)
exec(...)
sleep(1)
wend

163:デフォルトの名無しさん
18/11/23 13:16:42.45 WWSF1RwR.net
>>151>>153のやり方が簡単に取り入れられ便利でした!ありがとうございました!

164:デフォルトの名無しさん
18/12/01 14:30:51.62 mlx9p/i1.net
以前質問した>>137ですが
t1=GETTIME()
WHILE ((GETTIME()-t1)<3)
IF ((CHKIMG("gazou",0,,,,,,IMG_MSK_BGR4) =TRUE)) THEN BREAK
KBD(VK_enter)
SLEEP(0.7)
WEND
でついさっき解決しました
お騒がせしました
もしわからない方がいたら参考にしてください

165:デフォルトの名無しさん
18/12/01 16:43:58.50 03mmxMXD.net
=TRUEいらねーよ、ほんと何一つ身につかない奴だな…

166:デフォルトの名無しさん
18/12/01 16:55:12.78 0p3QcmHs.net
こんなゴミコードは参考にしたらあかんで

167:デフォルトの名無しさん
18/12/01 17:03:05.49 GMnbtXEB.net
こんなものに半月かかったのか…
よくこの有様で参考にしてくれとか言えるもんだな

168:デフォルトの名無しさん
18/12/01 19:53:18.31 sZ8MPu8b.net
まぁuwscの初心者スレだしいいんじゃね
普通ならpythonでChrome操作するし

169:デフォルトの名無しさん
18/12/01 19:56:00.80 sZ8MPu8b.net
Chromeの話してるの別のuwscスレだったわw

170:デフォルトの名無しさん
18/12/01 20:02:22.73 jvJ8ZaHQ.net
これはもう初心者とか言うレベルじゃねーわ
初心者でもまともな人間ならもう少しオツム使って考えるわ

171:デフォルトの名無しさん
18/12/01 21:36:21.31 WGIeQzk8.net
ソフト板から流れてきた普段プログラムなんか書かない奴のリテラシーはこんなもんじゃないの

172:デフォルトの名無しさん
18/12/03 13:56:00.28 w4MaeKI9.net
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

173:デフォルトの名無しさん
18/12/03 14:05:26.11 AISq9KtV.net
>>164
nox_adb使えばいいよ
本スレで話題に上がってた

174:デフォルトの名無しさん
18/12/03 14:19:38.04 w4MaeKI9.net
>>165
nox-adbでデバイスID指定して、その中の絶対座標でドラッグドロップさせればそれらすべてバックグラウンド処理できるという事でしょうか
試してみます



175:ありがとうございます



176:デフォルトの名無しさん
18/12/26 19:46:55.86 lZXR1qia.net
代数の呼び出し?ってどうやるんですか?
a = "abcd"
fukidasi("a ")
SLEEP(5)
これだと aしか表示されないです。
auto hot key だと%でくくる奴です。
a := "abcd"
MsgBox, 0, , %a%
Sleep, 5000

177:デフォルトの名無しさん
18/12/26 19:51:42.50 50Xsz/KL.net
fukidasi(a)

178:デフォルトの名無しさん
18/12/26 20:05:12.07 lZXR1qia.net
>>168
サーセン

179:デフォルトの名無しさん
18/12/27 16:03:50.96 lC6iyiD1.net
デスクトップにある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 + "")
どうすれば動のでしょうか。

180:デフォルトの名無しさん
18/12/27 16:10:54.01 Lwj8mmb4.net
>>170
まずはdoscmdの返り値で何のエラーか確認する
てかダブルクォート外しちゃったからってだけだろうけど

181:デフォルトの名無しさん
18/12/27 16:41:38.79 lC6iyiD1.net
返り値の出し方わからなかったんですけどダブルクォートつけたらうごきました。
b = "<#DBL>C:\Users\xxx\Desktop\a a<#DBL>"
これで良いぽいです。

182:デフォルトの名無しさん
18/12/27 22:25:30.23 TffHzaDx.net
DOSCMD("move <#DBL>" + a + "<#DBL> <#DBL>" + b + "<#DBL>")
とすれば "a","b" どちらのフルパス名内にスペースがあっても大丈夫

183:デフォルトの名無しさん
18/12/28 06:37:12.07 /5L8Sx5/.net
>>172
返り値てかコマンドプロンプトの標準出力だけど
doscmd自体が文字列返す関数なので変数に代入してもいいし、直接fukidasiとかに突っ込んでもおk

184:デフォルトの名無しさん
19/01/03 13:52:12.02 ouJm8ahfS
SELECTSLCTBOX関数SLCT_CHKでチェック欄が複数出る場合に、
一つだけチェック入れて「OK」アイコンをクリックした場合は
うまく行くのですが、二つ以上チェック入れて「OK」すると
DEFAULTになってしまいます。二つ以上チェック入れてそれらを
全部実行させる方法はないでしょうか?

x = 0
y = 0

SELECT SLCTBOX(SLCT_CHK,30,"test","a","b")
 CASE SLCT_1
  x = 1

 CASE SLCT_2
  y = 1

 DEFAULT
  x = 2
  y = 2
SELEND

  PRINT x
  PRINT y

185:デフォルトの名無しさん
19/01/09 18:25:52.61 pINC7IeU.net
UWSCからプログラムに初めて触れる程度の初心者です。
画像認識について質問があります
現在複数の画像を設定してクリックするというコードを書いています。
While True
ifb chking(“画像名1.bmp”)
btn()
elseif chking (“画像名2.bmp”)
btn()
....
Wend
という文章になっており無駄が多いです。
それで一度検出した画像の検出をさせないプログラムを書きたいのですがそのような事は可能なのでしょうか?その際に使用する関数などアドバイスをしていただきたいです。

186:デフォルトの名無しさん
19/01/09 18:34:28.37 +1cYlkH0.net
単純にチェック済みフラグ立てて画像認識の前にif置けばいいんでね

187:デフォルトの名無しさん
19/01/09 19:12:31.19 pINC7IeU.net
>>177
!!
その話詳しく聞かせて欲しいです。
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�


188:ネら画像認識、1なら画像認識しない のような文を追加するのでしょうか?



189:デフォルトの名無しさん
19/01/09 19:32:53.70 W2TzwIR9.net
そういうこと
フラグの方法だと画像の枚数分フラグが必要になる
俺の提案
画像ファイル名を配列に格納してヒットしたら配列の要素にtrue格納する
当然画像検索前に要素がtrueか否かチェックする

190:デフォルトの名無しさん
19/01/09 19:58:12.98 +1cYlkH0.net
>>178
まあ、実装方法は色々ある
最終的には配列を引数にした関数までいくと脱初心者って感じだが自分が言ったのは
/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
みたいなの
行頭の/はインデントの為なので気にしないで

191:デフォルトの名無しさん
19/01/09 19:58:28.44 pINC7IeU.net
>>179
本当に本当にありがとうございます!!
私の考えているコードです!!
本当に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
かなり短縮することができました。
ただフラグを追加した途端文が不安になってしまいました。

192:デフォルトの名無しさん
19/01/09 20:03:46.42 pINC7IeU.net
>>180
あーなるほど!考えてくださりありがとうございます
a and chkingという使い方が良さそうですね
>>181の文を少し編集してみます!

193:デフォルトの名無しさん
19/01/09 20:08:47.81 +1cYlkH0.net
>>181
for~nextの中で添字操作したらダメだよ
nextが勝手にやるからいらない
てかそれだと一周しかしないからwhileと組み合わせてね

194:デフォルトの名無しさん
19/01/09 20:14:05.78 DJbFsP/v.net
>>183
あっー!そういえばいりませんね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

195:デフォルトの名無しさん
19/01/09 20:15:43.50 pINC7IeU.net
ごめんなさいId変わってますが同一人物です

196:デフォルトの名無しさん
19/01/09 20:19:13.03 DJbFsP/v.net
ごめんなさい解決しました!
付き合ってくださった方々ありがとうございます
画像が増えるたび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

197:デフォルトの名無しさん
19/01/09 20:21:39.60 W2TzwIR9.net
>>186
画像がヒットしたらgazouに格納されてるファイル名をtrueで上書きすると言いたかった
そしたら配列のフラグいらなくなるでしょ

198:デフォルトの名無しさん
19/01/09 20:28:17.81 +1cYlkH0.net
>>186
そうやるなら
DIM flag[]= true, true, true
だね

199:デフォルトの名無しさん
19/01/09 20:31:57.46 DJbFsP/v.net
>>187
!!確かにそれを使えばもっと短くできますね
やってみます

200:デフォルトの名無しさん
19/01/09 20:36:48.88 DJbFsP/v.net
色々アドバイスありがとうございます
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
これ完璧ですね!自宅に帰り次第実行させてみたいと思います!!

201:デフォルトの名無しさん
19/01/09 21:28:06.29 pINC7IeU.net
本日ライセンス購入の件をumiumiさんに問い合わせをしたのですがやはり購入は厳しいですよね...

202:デフォルトの名無しさん
19/01/09 22:51:04.96 W2TzwIR9.net
無理じゃないかねえ、返信あったらスレに報告して欲しい

203:デフォルトの名無しさん
19/01/12 20:42:30.37 0UO0qOat.net
この前コードの相談に乗っていたものです
コードは完成したのですが
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]")
//クリック対象の画像が見つかった場合


204:、その画像をクリック BTN() //クリック後はプログラムを終了する gazou[num] = true ENDIF //監視時間間隔[s] SLEEP(0.1) next WEND これで実行した場合chking("gazou[num]")が配列から使用されずgazou[num].bmpとして反映されてしまいunko(1)bmpとして反映されません chkingの中では配列を使用することが出来ないのでしょうか?アドバイスお願いします またproライセンスの購入の件ですがまだ返信が来てません



205:デフォルトの名無しさん
19/01/12 21:04:21.05 AXIFw4s9.net
CHKIMG(gazou[num])
ダブルクォーテーションいらない

206:デフォルトの名無しさん
19/01/12 21:08:06.71 HvhCDbr8.net
別にuwscに限った話でもないんだが、文字列をダブルクォートで囲うというのは、プログラム的な解釈をさせずそのままの文字列で扱って下さいということ
引数に文字列をわたしたいからといってダブルクォートで囲う必要はない

207:デフォルトの名無しさん
19/01/12 21:15:06.03 0UO0qOat.net
返信ありがとうございます!!
配列使うの初めてで勘違いしてました。実行する事ができました!本当にありがとうございます!
あとumiumiさんから返信が来た場合連絡に来ます

208:デフォルトの名無しさん
19/01/12 21:29:00.23 HvhCDbr8.net
てかtrueの時はチェックさせないんだから!=では

209:デフォルトの名無しさん
19/01/17 17:37:08.88 ywa0zm07.net
UWSCのスクリプトの停止をALT+F2から変えたいんですが、
設定を見たところ、2つのキーを押すしか選択肢がないみたいなんですが、
これをEscキーのみに変えられないでしょうか?

210:デフォルトの名無しさん
19/01/17 18:07:29.42 3kooyktr.net
設定のところでは無理みたいだからスクリプト内で
キーを監視して押されたら止めるのを組み込むしかないね

211:デフォルトの名無しさん
19/01/17 18:15:04.25 pnYdwJsv.net
>>198
変えられない
コードでesc押したら終了するように書いておく
ループの先頭に
if GETKEYSTATE(VK_ESC) then exit
みたいな感じ

212:197
19/01/17 19:51:17.64 ywa0zm07.net
どうもありがとうございます。スクリプトの方に記述しておきました。

213:デフォルトの名無しさん
19/01/24 13:58:09.20 Vpq0nFz5.net
マウスを取られずにドラッグ&ドロップの動作を行いたいのですがうまく動作しません。
現状はウィンドウIDを取得して
mouseorg(id,2)
btn(left,down,x1,y1)
mmv(x2,y2)
btn(left,up,x3,y3)
としています。left,downまではできているようなのですがおそらくmmvが動作していない感じがします。
mouseorg(id,0)の場合はちゃんと動作するので原因が分からず困っております。
たかがドラッグ&ドロップ程度のことができないなんてことはないと思うのですがどなたか分かる方いらっしゃいませんでしょうか?

214:デフォルトの名無しさん
19/01/24 14:25:47.31 AXBwS8sa.net
>>202
ちょっとでもググって調べたらわかる事だけど、そのコードだけでは動作が早すぎる

215:デフォルトの名無しさん
19/01/25 03:55:18.58 djc20dkg.net
まずmmv挟む必要あるのかってのと遅延入れないとアプリ側で処理が追いつかない場合が多い

216:デフォルトの名無しさん
19/01/28 03:10:09.68 a09O8V2t.net
六ヶ所あるポイントをランダムで五ヶ所クリックさせたいのですが、良い方法を教えてください。
ポイント1 x座標100 y座標185
ポイント2 x座標258y座標296
ポイント3x座標315y座標580
以下略
今書こうとしてるのが
for i = 0 to 4
BTN(LEFT,CLICK,ここをランダムなポイントにしたい)
next
アドバイスよろしくお願いします。

217:デフォルトの名無しさん
19/01/28 08:20:03.77 kcLCmioN.net
>>205
配列とrandom

218:デフォルトの名無しさん
19/01/28 13:16:10.93 M4hiQU5j.net
randomで分岐してBTNのほうが
可読性が高くて俺は好き

219:デフォルトの名無しさん
19/01/28 13:47:58.51 yROeBYe4.net
分岐は座標設定だけにしてBTNは1行にしようよ

220:デフォルトの名無しさん
19/01/28 14:46:35.06 Cl/r/hmy.net
クリックしないポイントん乱数できめる

221:デフォルトの名無しさん
19/01/28 21:36:38.76 3+HKzeym.net
アドバイスって言うかお前ら暇なんだろ


222:俺のためにはよ作れ



223:デフォルトの名無しさん
19/01/28 23:59:09.72 UNSPa4Eu.net
何を作ればいいですか?

224:デフォルトの名無しさん
19/01/29 02:43:56.37 IO64zMNw.net
>>203
201です。書き忘れていて申し訳ありませんがsleepはいろいろ数値を変えて各動作に0~2秒程度余裕を持たせて試しています。
mmvも必要ないかもと思い抜いてみたりしましたが結果は変わりません。
そもそも裏動作でドラッグ&ドロップは可能なのでしょうか?
可か不可だけでも教えていただけると嬉しいです。

225:デフォルトの名無しさん
19/01/29 02:51:47.66 LOO3gYN5.net
>>212
裏動作できるかどうかはそのアプリ次第
簡単な確認方法として裏動作させて
IDでSAVEIMGして正常にスクリーンショット取れればできる
取れなければできない

226:デフォルトの名無しさん
19/02/17 20:05:21.25 z/uMXN8p.net
CHKIMGXで画像の色を判定したいんですけどできますか?
例えば、元の画像が灰色だったらfalseが返ってくるようにしたいです。

227:デフォルトの名無しさん
19/02/17 21:23:07.92 QHQeXIGO.net
!chkimgx(gray.bmp)
色を取得したいという話ならpeekcolor
ただし座標の指定になる

228:デフォルトの名無しさん
19/02/17 22:00:13.55 z/uMXN8p.net
>>215
CHKIMGX(temp.bmp)の画像の色が同じじゃないときに処理通っちゃうんですけどそれは仕様ですか?

229:デフォルトの名無しさん
19/02/17 22:08:55.58 QHQeXIGO.net
>>216
説明がめんどくさいから
とりあえずchkimgxを含めた前後のコード貼ってくれ

230:デフォルトの名無しさん
19/02/18 07:07:31.39 JSWq4P0e.net
>>216
そういう機能が既にある
CHKIMGX( 画像名, [ID, x1, y1, x2, y2, 番号, 判定閾値, 着目する色] )
着目する色: 指定した色とどれだけ近いかでグレースケール化した画像を使ってマッチングの計算を行う。文字の色などを指定することで背景の変化に強いマッチング判定を行うことが可能
着目する色の引数に認識したいカラーコードを入れればOK。「色 判定 アプリ」とかで検索すれば認識したい画像からカラーコード生成できるサイトは引っ掛かる。
これで色違いでの誤動作はだいたい弾いてくれるよ

231:デフォルトの名無しさん
19/02/18 11:57:12.20 B+vGb4gg.net
色の差(閾値)を考慮する機能、いつ頃実装されたのか個人的に興味ある
15年前には無かったような気がするんだが

232:デフォルトの名無しさん
19/02/18 21:39:57.37 2CdapbG+.net
>>217
イメージはこんな感じの処理を期待しています。
URLリンク(imgur.com)
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()

233:デフォルトの名無しさん
19/02/18 22:39:55.29 nrhNd94Q.net
>>220
スクリプトに問題はなさそう
閾値を調整しても駄目なんだよね?
あと対象の画像をsaveimgで保存した画像で検索したらどうなるか
着目する色を指定するまでもない画像だとおもうんだけど

234:デフォルトの名無しさん
19/02/18 23:02:29.08 CU6zYEEj.net
ChkImgXは画像モノクロに加工して走査


235:するからグレーボタンなんて閾値しだいかも これなら完全一致でChkImgのほうが良かったりして その際元画像はもう一回り青色範囲内にして背景含めない必要かな



236:デフォルトの名無しさん
19/02/19 01:41:50.90 Wcea5l1h.net
>>220
chkimgxは指定した判定画像に「近い」ものを探している
かつ高速化の為に内部では判定画像も画面もグレースケール化して処理をしている
(綺麗なグレースケールでなくかなりざっくりしたもの)
なのでボタン背景色の違いはグレースケール化によって判別出来ない
あるいは、あえて背景の青を着目色として指定すると青色有無が判定画像に強調されるので判別できるかもしれない
ただしその場合、文字が消えてボタンの誤判定が発生すると思われる
というわけで、素直にchkimg使ったらという>>222に同意

237:デフォルトの名無しさん
19/02/19 20:27:55.49 /Cx1K2A5.net
>>221,222,223
ありがとうございます
参考にしてちょっとやってみます

238:デフォルトの名無しさん
19/03/09 00:57:44.21 yFQrIlgr.net
すみません別のUWSCスレにも書いたんですが
クリックがうまくされず、待機時間など入れてみましたが失敗することが多く、
どのタイミングでクリックしてるのか見るためにBTN(LEFT,CLICK,)の前に print "クリックします"
という処理を入れたらなぜか確実にクリックされるようになったのですが、何が原因なのでしょうか?


次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch