1 名前:名無しさん@お腹いっぱい。 [2015/11/11(水) 13:45:28.80 ID:+oPzgSay0.net] Windowsの作業を自動化するツール フリーソフト版とシェアウェア版の2種類がある ttp://www.uwsc.info/download.html ●UWSC 掲示板(※作成依頼掲示版ではありません) 質問の際には自力で作ったスクリプトを晒すか、具体的な解らない場所を提示すること 上級者が常駐、たまに作者も現れるため過去ログには有益情報の宝庫 www3.rocketbbs.com/13/bbs.cgi?id=umiumi www3.bigcosmic.com/board/s/board.cgi?id=umiumi&mode=past ●UWSC - Wikipedia ja.wikipedia.org/wiki/UWSC ●使い方・基礎解説学習サイト uwsc.g.hatena.ne.jp/cx20/20100131/1264938584 www.confrage.com/uwsc/ necro.jp/dev/uwsc/ park14.wakwak.com/~simizu/uwsc/fruwsc.html canal22.org/ big.tm.land.to/handbook/uwsc.htm www.game-rev.com/review/gameut/uwsc.html ●スクリプトテンプレサイト izagne.com/uwsc/ scripts.web.fc2.com/ www.nagomi-jp.net/~liners/ nem.symphonic-net.com/uwsct/0610uwsct.html siromasa.digi2.jp/uwsc/ iriyak.adam.ne.jp/uwsc.html 前スレ 自動化ツールUWSC使いよ集まれ15 anago.2ch.net/test/read.cgi/software/1436671958/
540 名前:rLv) key = lists[curLv-1, HASH_KEY] curRows = split(lists[curLv-1, HASH_VAL], SPLT_V) combinationCSV = "" ifb curLv >= length(lists) then for curIdx=0 to length(curRows)-1 combinationCSV = combinationCSV + key + "=" + curRows[curIdx] + SPLT_R next else childRows = split(structCombinationCSV(lists, curLv+1), SPLT_R) for curIdx=0 to length(curRows)-1 for childIdx=0 to length(childRows)-1 combinationCSV = combinationCSV + key + "=" + curRows[curIdx] + SPLT_C + childRows[childIdx] + SPLT_R next next endif result = combinationCSV fend っしゃぁ! [] [ここ壊れてます]
541 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/08(月) 22:29:31.74 ID:kO8wU/DR0.net] 500 Internal Server Error
542 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/09(火) 00:41:55.44 ID:l/ELWwG70.net] 複雑すぎワロタ
543 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/09(火) 10:19:05.55 ID:dxLnf7NN0.net] 松屋で飯食いながら仕事ができるタイプか
544 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/09(火) 12:33:29.38 ID:qpHYw0y/0.net] すげえレベル高いな
545 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/09(火) 12:40:47.60 ID:kzjhglVU0.net] えっ!?あのお客さん…ウチで飯食いながらコーディングしてる!?
546 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/09(火) 12:47:42.64 ID:XfpXz+/C0.net] >>504 それだと関数化するとき困るんじゃね? ary2までしかないときは動かないし ary4まであってもちゃんと動かない
547 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/09(火) 17:31:23.26 ID:FV1/KP6n0.net] >>506 は入れ子になってるくり返しで使われる再帰処理だね。 再帰を終わらす終了条件が最初あって、次にやりたい事ってふうに見ると分かる。
548 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/09(火) 18:04:46.21 ID:+8zDwgB90.net] そっか項目数だけじゃなく要素数も変わるのか なら関数化するならこんな感じかな //配列組み合わせ生成関数 戻り値は配列を返す FUNCTION fnc_ArryComb(strarry[]) DIM tmpstr[0],tmp //文字列 DIM i,j,k,l,m=0,tmpcount = 1,maxcount = 1,preCount = 1 //整数 CONST cnt_SPLSTR = "," for i = 0 to LENGTH(strarry) - 1 maxcount =maxcount * LENGTH(SPLIT(strarry[i],cnt_SPLSTR)) next resize(tmpstr,maxcount-1) //結果格納用の変数を引数に合わせてリサイズ m=0;i=0 //未使用再利用変数の初期化 repeat //順列組み合わせの作成 tmpcount = 1 for l = m to LENGTH(strarry) - 1 tmpcount = tmpcount * LENGTH(SPLIT(strarry[l],cnt_SPLSTR)) next for l = 1 to maxcount / tmpcount for tmp in SPLIT(strarry[i],",") for j = 0 to tmpcount / LENGTH(SPLIT(strarry[i],cnt_SPLSTR)) - 1 tmpstr[k] = tmpstr[k] + " " + tmp k=k+1 next next next m=m+1;k=0;i=i+1 //カウンターの整理 until i >= LENGTH(strarry) result = slice(tmpstr,0,maxcount-1) fend //関数ここまで
549 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/09(火) 18:06:08.69 ID:+8zDwgB90.net] 関数Callのサンプルはこんなかんじ //関数の呼び出し部 hashtbl lists DIM strarry[0] DIM i //ここで入力する項目数を増やしたりlistsの要素数を増やしたり減らしたりする lists["あ"] = "a10,a20,a30"; lists["い"] = "b100,b200"; lists["う"] = "c1,c2,c3";lists["ぼんば"] = "d1,d2,d3" resize(strarry,length(lists)-1) //ハッシュの要素数で配列をリサイズ for i= 0 to length(lists) - 1 strarry[i]=lists[i,HASH_VAL] next fukidasi(join(fnc_ArryComb(strarry),"<#CR>")) msgbox("終わり") //呼び出し部ここまで
550 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/09(火) 19:17:28.30 ID:GXdSKXvs0.net] 自作関数って引数を設定した場合、引数の数を合わせないと「引数の数が合いません」ってエラー出るけれど ""を使えば引数を省略できるのか chkimgみたいなデフォルト関数は引数省略できるからどうやるのかなーってずっと悩んでたわ UWSC: 引数を省略できる関数をつくる blogs.yahoo.co.jp/nullpage_vwxyz/52255157.html
551 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/09(火) 19:24:17.43 ID:4bdWm2Pw0.net] 引数の省略はデフォルト値を関数宣言時に代入しているか否かだ
552 名前:関数の呼び出し時に変数を使用しているが場合によってはデフォルト値にしたい時はEMPTY(定数)を代入する [] [ここ壊れてます]
553 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/09(火) 19:29:44.25 ID:+8zDwgB90.net] ""てかデフォルト値であればtrueでも1でもなんか指定してあげればいいだけね ただまぁプロ版使ってるけどこんな関数用意して procedure procsmp(t=true,m=1,n="オイヨイヨ") t=false fend こんな感じで呼ぶと procsmp(,,"へい") デバッガでは通るのにスクリプトファイルをUWSCで実行するとsyntaxエラー出たりと 環境で動作変わるからあんま使わない方が良いと思ってる
554 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/09(火) 19:34:33.12 ID:GXdSKXvs0.net] なんでもいいのか
555 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/09(火) 19:59:33.20 ID:p4ai4XIh0.net] >>514-515 この方法もいいね。予め全体サイズを把握してからトップダウンで計画的に構築する感じだね。
556 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/09(火) 20:25:23.95 ID:+8zDwgB90.net] 2chは改行制限のおかげでどうやって可読性上げつつコンパクト化するか必死で考えるから質問に答えるだけで色々勉強になるのよね 今回はslice関数をうまいこと使えたので良かった カウンター使い過ぎだけど
557 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/10(水) 07:52:47.08 ID:Z7PL/WtA0.net] 例示された処理方法よりも長いし遅くなってないか?
558 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/10(水) 08:45:28.77 ID:+W75uBK+0.net] つか質問者のコードが素手にかなりスマートなのに もっとスマートって要求だから釣りなんだろうなw
559 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/10(水) 09:04:15.50 ID:MxWBE2100.net] 2進数表記で 111 なら処理三つ 011なら処理二つ みたいなの
560 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/10(水) 10:37:39.26 ID:R/okCavp0.net] www.nminoru.jp/~nminoru/programming/bitcount.html
561 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/10(水) 11:26:49.90 ID:wTSkFc930.net] phpならarray_shift使ってかなり短くできたがUWSCで組めない
562 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/10(水) 12:19:18.86 ID:mXr4GQ/h0.net] 悩みようがないだろ コード書いてみろ 添削してやんよ
563 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/10(水) 12:25:07.38 ID:wTSkFc930.net] 添削というか、移植してくれ。sliceとか使うのかな $lists["あ"] = "a10 a20 a30"; $lists["い"] = "b100 b200"; $lists["う"] = "c1 c2 c3 c4"; print implode("<br>\n",(combi($lists))); function combi($lists){ $l_cur = array_shift($lists); $l_cur_arr = explode(" ",$l_cur); if(count($lists)>0){ while($l_cur_1 = array_shift($l_cur_arr)){ foreach(combi($lists) as $extra){ $res[] = $l_cur_1." ".$extra; } } }else{ return explode(" ",$l_cur); } return $res; }
564 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/10(水) 12:45:52.49 ID:R/okCavp0.net] そっちかよw
565 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/10(水) 12:54:34.10 ID:wTSkFc930.net] すまぬ499をベースにやろうとしてみたけど 5行目で「listsが定義されていません」エラーになる理由がもうわからない UWSCの配列もよく分からない hashtbl lists lists["あ"] = "a10 a20 a30"; lists["い"] = "b100 b200"; lists["う"] = "c1 c2 c3 c4" print combi(lists) function combi(lists) res = "" l_cur = lists[0] SHIFTARRAY(lists,-1); l_cur_arr = split(l_cur," "); if length(lists)>0 then while length(l_cur_arr)>0 l_cur_1 = l_cur_arr[0] SHIFTARRAY(l_cur_arr,-1) for extra in combi(lists) res = res + l_cur_1+" "+extra+"<#CR>" next wend else result = l_cur_arr endif result = res fend
566 名前:名無しさん@お腹いっぱい。 [2016/02/10(水) 14:26:42.18 ID:Lx2sic3p0.net] >>530 関数定義の方の変数が配列として定義されてないから
567 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/10(水) 17:16:00.23 ID:cNgK9kX70.net] 連想配列を、多次元で使うのは無理ですか? 可能であれば、方法を教えてください
568 名前:名無しさん@お腹いっぱい。 [2016/02/10(水) 19:45:44.31 ID:CFiYTXoe0.net] www.dotup.org/uploda
569 名前:/www.dotup.org733222.txt.html 少し長いのでうpろだに上げましたm(_ _"m) 質問です。 おそらくこの〜〜〜〜部分に稀に出てくる画像があるのですが、 処理をどう書いたら稀に出てくる画像を検出して押してループ出来ますかね? そして出ないときはスルーしてループしてくれると良いのですが.... 中々調べてもパッとしたものが出てこないので困ってます... [] [ここ壊れてます]
570 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/10(水) 22:49:09.18 ID:UdxSvPdk0.net] >>533 質問の趣旨が今一つかめないけどCASE1〜8の処理をループさせながら定期的に特定の画像をチェックしたいってことでいいのかな それならとりあえず全ケース文の先頭にその稀に出現する画像をチェックする処理入れればいいのでは ただこれだけそっくりな処理をケース分けするなら状態遷移用のパラメータ持たせた配列用意して回した方がすっきりするね
571 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/10(水) 22:55:35.86 ID:UdxSvPdk0.net] >>533 とりあえずこんな感じ? 細かい部分は適当なので後は自分でいじって dim tmpstr dim def_StateParam[8] dim VWS = 1 def_StateParam[1] = "CASE1,400,200,0,30,1.5,画像9.bmp,1,1,0" def_StateParam[2] = "CASE2,400,200,0,30,1.5,画像2.bmp,2,1,0" def_StateParam[3] = "CASE3,400,200,0,30,1.5,画像3.bmp,3,1,0" def_StateParam[4] = "CASE4,400,200,0,30,1.5,画像4.bmp,4,1,0.1" def_StateParam[5] = "CASE5,400,200,0,30,1.5,画像4.bmp,5,1,0" def_StateParam[6] = "CASE6,400,200,0,30,1.5,画像4.bmp,6,1,0" def_StateParam[7] = "CASE7,400,200,0,30,1.5,画像4.bmp,7,1,0" def_StateParam[8] = "CASE8,400,200,0,30,1.5,画像5.bmp,8,1,0" while true tmpstr = split(def_StateParam[VWS],",") fukidasi(tmpstr[0],val(tmpstr[1]),val(tmpstr[2]),val(tmpstr[3]),val(tmpstr[4]),,,) SLEEP(val(tmpstr[5])) fukidasi() //ここに稀に出現する画像をチェックする処理を書く IF VWS = 4 THEN WHILE (CHKIMG(tmpstr[6])=FALSE) SLEEP(val(tmpstr[9])) WEND ENDIF IFb Chkimg(tmpstr[6]) Then MMV(G_IMG_X, G_IMG_Y) BTN(LEFT,CLICK) VSW = val(tmpstr[7]) ELSE VSW = val(tmpstr[8]) ENDIF wend
572 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/10(水) 23:00:18.61 ID:UdxSvPdk0.net] まちがった こっちで dim tmpstr, def_StateParam[8], VWS = 1 def_StateParam[1] = "CASE1,400,200,0,30,1.5,画像9.bmp,1,1,0" def_StateParam[2] = "CASE2,400,200,0,30,1.5,画像2.bmp,2,1,0" def_StateParam[3] = "CASE3,400,200,0,30,1.5,画像3.bmp,3,1,0" def_StateParam[4] = "CASE4,400,200,0,30,1.5,画像4.bmp,4,1,0.1" def_StateParam[5] = "CASE5,400,200,0,30,1.5,画像4.bmp,5,1,0" def_StateParam[6] = "CASE6,400,200,0,30,1.5,画像4.bmp,6,1,0" def_StateParam[7] = "CASE7,400,200,0,30,1.5,画像4.bmp,7,1,0" def_StateParam[8] = "CASE8,400,200,0,30,1.5,画像5.bmp,8,1,0" while true tmpstr = split(def_StateParam[VWS],",") fukidasi(tmpstr[0],val(tmpstr[1]),val(tmpstr[2]),val(tmpstr[3]),val(tmpstr[4]),,,) SLEEP(val(tmpstr[5])) fukidasi() //ここに稀に出現する画像をチェックする処理を書く IF VWS = 4 THEN WHILE (CHKIMG(tmpstr[6])=FALSE) SLEEP(val(tmpstr[9])) WEND ELSE IFb Chkimg(tmpstr[6]) Then MMV(G_IMG_X, G_IMG_Y) BTN(LEFT,CLICK) VSW = val(tmpstr[7]) ELSE VSW = val(tmpstr[8]) ENDIF ENDIF wend
573 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/11(木) 01:00:59.88 ID:2xnip+Tc0.net] せめて構造体が使えればねぇ
574 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/11(木) 01:02:56.58 ID:PFox1uTL0.net] もしかしてselect処理毎に稀の画像チェックしたいけどselendの前に書いちゃって 毎回通らなくてうまくいかないよ!っていうことだったりするのかな?
575 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/11(木) 01:21:45.52 ID:0c+JQyo+0.net] classで構造体っぽい物は作れるけど複数のインスタンス持てるわけでもないしあんま意味ないのがな
576 名前:名無しさん@お腹いっぱい。 [2016/02/11(木) 02:19:21.45 ID:ZBhxJU1k0.net] PowerShell ではクラスを扱えるけど、クラスを作れなかったと思う。 UWSC も、クラスのデータを他言語から受け取って接着剤みたいに使えばいいんじゃね?
577 名前:526 mailto:sage [2016/02/11(木) 03:35:07.99 ID:b+3w0CHx0.net] UWSC使い始めてまだ2日目で色々酷くてすみません( ;∀;) やりたいこととして無限ループを行い、ゲーム内の画像を検出してクリックして放置が できるようにしたかったのですが、先述の通り稀に押さないと進めない物が出てきまして、それのせいでCASE1に飛ばされてしまい マクロが止まるという事態が起きてました。
578 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/11(木) 03:39:32.11 ID:b+3w0CHx0.net] >>534 527さんの解釈で合ってます! 色々検索したり、知恵袋使って質問していたのですがその仕組みが作れませんでした... >>536 529さんのが自分からすると高度すぎてよく分からない状態です( ;∀;)
579 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/11(木) 04:06:02.47 ID:BAwW+2D
] [ここ壊れてます]
580 名前:70.net mailto: エフェクトや透過処理等で素材画像とは完全一致しないケースがある クリックはあくまでイベントを送ってみようとするだけで溢れる可能性がある 次のループに入ってクリックをキャンセルしまったり やり直しが出来ない重要なクリックの場合は クリックを受け付けたか何らかの方法で確認しないと安定しなかったりする 動く時と動かない時があるのは大抵この辺 [] [ここ壊れてます]
581 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/11(木) 04:17:43.34 ID:TCAo9itq0.net] 始めて2日の>>541 に>>536 見せても意味理解できないんじゃないかなあ プログラム初心者とは書いてないけれど、どうなんだろう 始めて2週間の俺が低レベルなプログラムを書いてみる WHILE !GETKEYSTATE(VK_ESC) REPEAT IFB CHKIMG("画像9.bmp") BTN(LEFT,CLICK) ELSE BREAK ENDIF IFB CHKIMG("画像2.bmp") BTN(LEFT,CLICK) ELSE BREAK ENDIF ・ ・ ・ UNTIL FALSE WEND ん? これでよくね? 見つからない場合にBREAKすれば最初に戻るんだろ?
582 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/11(木) 12:23:32.74 ID:z++B2lkF0.net] >>544 状態遷移を省いちゃダメでしょ
583 名前:521 mailto:sage [2016/02/11(木) 13:16:17.89 ID:okUdFipF0.net] >>502 のやついまさらで「あ・い・う」も略しちゃってるけどやっと一応できた 配列の順次追加・戻り値・shiftに苦労したが勉強になって楽しかった 空の配列宣言が分からなくて if ref[0]<>""とか不恰好なのが入ってる dim res[] = ""に代わる中身0の配列宣言分かりましたら教えてください 行数も構造もあまり499と代わらなくなっちゃったかな dim lists[] = "a10 a20 a30","b100 b200","c1 c2 c3 c4" print join(combi(lists),"<#CR>") function combi(lists[]) dim res[] = "" l_cur = lists[0]; lists_s = slice(lists,1,length(lists)-1) l_cur_arr = split(l_cur," ") if length(lists_s)>0 then while length(l_cur_arr)>0 l_cur_1 = l_cur_arr[0] l_cur_arr = slice(l_cur_arr,1,length(l_cur_arr)-1) for extra in combi(lists_s) if res[0]<>"" then Resize(res,length(res)) res[length(res)-1] = l_cur_1+" "+extra+"" next wend result = slice(res,0,length(res)-1) else result = l_cur_arr endif fend
584 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/11(木) 13:26:13.37 ID:IFP6rTWM0.net] emptyとかvartypeとかそういう話でなく?
585 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/11(木) 13:32:44.65 ID:okUdFipF0.net] >>547 ごめんよく分からない。多分違うかな dim res[] = ""の部分の時点でlength 1 になっちゃうから length 0 の状態で宣言できるとそこは解決だと思うのだが
586 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/11(木) 14:11:26.72 ID:PFox1uTL0.net] >>542 単純に書くならこうなる while 1 if chkimg("稀?") elseif chkimg("9?") elseif chkimg("2?") elseif chkimg("3?") endif sleep(3)//? wend VSWでの全体の管理が必要なのかも怪しい VSWに捕らわれすぎてやりたいことが出来なくなってる可能性もある まぁそれぞれの画像の条件(出方・消え方)がいまいちわからないから・・・
587 名前:名無しさん@お腹いっぱい。 [2016/02/11(木) 19:58:05.91 ID:RBcXi3Gt0.net] 教えて下さい。 このソフトを使ってExcelシートに入力されている値を別の計算ソフトへ 自動で入力するというようなことはできますか?
588 名前:名無しさん@お腹いっぱい。 [2016/02/11(木) 20:29:19.42 ID:WYFXkEVH0.net] www.dotup.org/uploda/www.dotup.org734791.zip.html
589 名前:名無しさん@お腹いっぱい。 [2016/02/11(木) 21:05:25.66 ID:z8n8XQ1d0.net] >>524 msgbox(bitcount(7)) //3 msgbox(bitcount(3)) //2 function bitcount(n) if n<>0 then result=result+n mod 2+bitcount(int(n/2)) fend
590 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/12(金) 00:04:53.83 ID:k6qMW81B0.net] 素人でこの言語最近知ったんだが、これ最強の言語じゃね?なんであまり知られてないの?
591 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/12(金) 00:12:52.00 ID:9BztTFw/0.net] いや、言語っていうか・・・
592 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/12(金) 00:45:52.84 ID:ywMkiNaR0.net] >>553 素人判断はやめましょう
593 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/12(金) 00:51:12.45 ID:GKVk0beF0.net] ゲームを自動化すると楽しく学べるね(´・ω・`)
594 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/12(金) 00:54:49.48 ID:8lgU0Jr00.net] やっちゃいけない領域な気がするけどね!
595 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/12(金) 01:26:26.97 ID:g/t37I2b0.net] 言語というよりも録画再生機能が好き
596 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/12(金) 08:54:55.690943 ID:k6qMW81B0.net] いや、本当に素人でもブラウザとソフトウェアの自動連携を作れるってのはすごいと思うんやけど。なんで知られてないん?
597 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/12(金) 08:56:56.102247 ID:4JLZMnR80.net] お前の類友が無知だからかな
598 名前:名無しさん@お腹いっぱい。 [2016/02/12(金) 10:04:21.88 ID:i4qbzSJ40.net] 時間どうなってんのそれ
599 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/12(金) 13:27:19.60 ID:cKYrB2r90.net] >>549 元コード見るとすべてのステージで異なる画像を判別に使用してるわけじゃないから無理じゃね 画像4チェックのときだけケース分けするにしてもそれなら一括でステージ管理したほうがよさげ
600 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/12(金) 15:17:28.05 ID:8lgU0Jr00.net] >>562 不明な点が多すぎて基本的なやつになった
601 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/12(金) 16:30:11.66 ID:cKYrB2r90.net] >>546 UWSCで空配列は宣言できないからslice関数を使って普通の変数に入れる 初期値指定みたいに文字列使いたい場合はsplit関数も組み合わせる DIM x = slice(SPLIT("a,b,c,d",",")) print x[2] x=slice(SPLIT("e,f,g,h,i,j",",")) print x[2] DIM y = slice(SPLIT("w,x,y,z",",")) DIM z = slice(y) print z[2] これ使えばよくある空配列の宣言に近いことはできる
602 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/12(金) 16:42:46.02 ID:cKYrB2r90.net] >>546 もちろんslice関数での変数x初期化前にlength(x)すると0は返ってくるけど 単純にxの文字列長が返ってきてるだけで要素数では無い点には注意が必要 戻値的には同じだから十分使えるけどね
603 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/12(金) 17:09:37.34 ID:UbZzXFO50.net] >>564 おー、ありがとう >>564 を直接どう使えばいいか分からなかったけど (「変数x初期化前にlength(x)すると0は返ってくる」てのがどういう状態の時か分からず) >>546 の宣言部分を DIM res = slice(SPLIT("",",")) と 空文字列のsliceから取得したらlength 0で宣言できた あとはphpと同じようにshiftarrayの戻り値としてあふれた値取得できたり 式ひとつで配列に値を追加できるとかなりシンプルに出来るんだが そこはUWSCの仕様ってことであきらめるしかなさそうかな〜
604 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/12(金) 17:20:03.48 ID:cKYrB2r90.net] >>566 言い方悪かった >変数x初期化前にlength(x)すると0は返ってくる DIM x //初期値を与えない print length(x) //xの文字列長0が返る x = slice(SPLIT("a,b,c",",")) length(x) //x[]の要素数の3が返る って意味だったんだけど確かに宣言時に slice(SPLIT("",",")) で初期値設定しておいたほうが 後からコード見たとき変数の用途が解りやすくていいね 使わせてもらいます
605 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/12(金) 17:32:07.53 ID:bdQKZ6P80.net] 長さ0のsafearrayはこれで作れる safearray(0,-1)
606 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/12(金) 17:37:10.80 ID:ckS+rd0L0.net] phpはデフォで色々な関数が用意されてるだけなんだから array_shiftと同じ関数を自作すりゃいい
607 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/12(金) 17:42:19.65 ID:UbZzXFO50.net] >>567 なるほど> DIM x しかしそれだとその後のResizeで「配列ではありません」エラーになっちゃうな いずれにしても宣言わかってよかったですありがとう 1行での配列の追加もその線で出来ないかと res = slice(split(join(res,","),",")) とトリッキーにやってみたが上手く行かず もし出来たらまた貼らせていただくかも >>568 おー、ほんとだスッキリ >>56
608 名前:9 元の配列操作しつつ戻り値も得るって出来るのかな? [] [ここ壊れてます]
609 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/12(金) 19:27:59.43 ID:k6qMW81B0.net] ブラウザ操作する場合、uwscとエクセルvbaはどちらがいいの?同じ? それなら、ページが多いエクセルの方が良くね。
610 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/12(金) 19:32:42.63 ID:dphmFixd0.net] COM操作で解決する範囲の自動化なら同じなので自分が使いやすい方でやれば良いのです
611 名前:名無しさん@お腹いっぱい。 [2016/02/12(金) 19:53:59.16 ID:i4qbzSJ40.net] alert窓 を閉じるのは VBA では基本的に出来ないと思う。 でも、出ることが分かってる「ファイルを保存する」ダイアログは SendKeys でコントロールできるらしい。
612 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/13(土) 01:10:16.19 ID:smbIwZzf0.net] UWSCでクワインとなるソースコードを教えてください なるべく最短で、出力はmsgboxでお願いします
613 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/13(土) 01:15:32.21 ID:hFFChm3k0.net] 誰かがそれを出してもwikiとかに追記に行くなよ
614 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/13(土) 09:26:54.53 ID:7eVjLkIC0.net] MOUSEORG(id,0) if chkimgx(img_name, id) then btn(left, click, G_IMGX_X, G_IMGX_Y) これだと画像より少し左上にずれてクリックする 修正して使ってきたがこれってしかたないのか?
615 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/13(土) 14:16:58.30 ID:9elgN/hL0.net] statusでウィンドウの幅と高さとクライアント幅とクライアント高さ この辺が違ってたらその可能性もある
616 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/13(土) 18:52:01.69 ID:abY5DV330.net] >>576 使用した画像の一番左上を原点とするからだよ だから何も指示しないと左上に行く
617 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/13(土) 19:32:42.79 ID:AtiKTq4d0.net] 569の言う左上って画像の中心より左上って意味なのか? 画像の左上角より左上なのかと思った
618 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/13(土) 19:56:20.37 ID:2icoSvut0.net] chkimgってサーチ範囲の座標記述すると見た目が悪くなるのが嫌いなんだけど 俺が作ってるのはサーチ範囲は変わらないから全部同じ数字入れるのがだるい かといって書かないと遅くなるらしいし 良い方法ないかな 新しく関数作って固定させるぐらいしか思いつかん chkimgA() function chkimgA(PARAM_IMG) ifb chkimg( "PARAM_IMG" + ".bmp", 1, x1, y1, x2, y2) result = true else result = false endif fend
619 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/13(土) 20:07:46.86 ID:hFFChm3k0.net] 基本的には関数化しかない 例外を記述する時に楽するためにデフォルト引数使うと良いかもね
620 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/13(土) 20:08:01.19 ID:JoYsMZYi0.net] 定数作れよ
621 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/13(土) 20:15:10.67 ID:2icoSvut0.net] >>581 やっぱそうか デフォルト引数ってのは function chkimgA(PARAM_IMG="") みたいに書けばいいってこと? >>582 定数作れってのはCONST使えって言うこと?
622 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/13(土) 20:26:32.08 ID:hFFChm3k0.net] 全部聞いていたら何も造れないぞ 少しは考えろ //デフォルトの範囲(面倒だからXのみ) CONST checkImageRange_X = 100 checkImage("test1") //デフォルト引数な呼び出し checkImage("test2", 200) //例外的な呼び出し procedure checkImage(imageName, x = checkImageRange_X) Print imageName + "=" + x Fend
623 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/13(土) 20:37:26.58 ID:2icoSvut0.net] ごめん、全部聞いたつもりじゃなくて言葉の意味、意図がわからないから聞いただけなんだ
624 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/13(土) 21:11:34.08 ID:2icoSvut0.net] デフォルト引数とかCONSTについての知識があまりないからググって考えたんだけど >>584 は例外を引数で指定するためのやり方、ということだよね? 自作関数そのものの機能としては>>580 で問題ないよね? 俺は例外の場合は普通にCHKIMG関数を使おうと思っていたんだけど、
625 名前:>584のやり方で例外のために記述を加えたほうがいいのはどうして? [] [ここ壊れてます]
626 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/13(土) 21:19:16.44 ID:JoYsMZYi0.net] >例外の場合は普通にCHKIMG関数を使おうと思っていたんだけど だったら関数作んなくていいって 定数作れ
627 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/13(土) 21:30:44.76 ID:hFFChm3k0.net] デフォルトな条件なら呼び出し側がシンプルに成る 前後の処理を共通化できるってのが基本的なメリット 同じ処理を複数の箇所に記述すると変更する必要が生じた時に 対応が漏れる恐れがある 少し上にあった条件を配列に入れてループで回すコードみたいに 回りくどくても変更に対応しやすいコードの方が便利かもねって話
628 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/13(土) 21:39:33.04 ID:2icoSvut0.net] >>587 ごめん、その定数作れの意味がわからない >>588 関連の話として、例外を指定できる方法を教えてくれたということかな? どうもありがとう
629 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/13(土) 21:43:21.10 ID:AtiKTq4d0.net] >>580 なんで関数内にif文書いてるの? function chkimgA(〜) result = chkimg(〜 fend これだけでいいじゃん
630 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/13(土) 23:11:25.36 ID:eCDlWNP70.net] 初心者の質問です。 fukidasi(
631 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/13(土) 23:15:10.41 ID:eCDlWNP70.net] あれ、切れちゃった 初心者の質問です。 fukidasi("ゲームウィンドウ上でSキー") //Sキー入力待ちの告知 While !(GETKEYSTATE(VK_S)) //Sキー入力まで無限ループ sleep(0.1) Wend fukidasi() //入力待ち告知の吹き出しを消す winid = getid(GET_ACTIVE_WIN) この某hpのサンプルコード使ってbluestacksのID取得をして MOUSORG(winid,0,0)では動くのですがそれ以外の数値だと動きません (id,2,2)でバックで動かしたいのですがどうすれば直りますか?
632 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/14(日) 00:41:28.44 ID:V4/m1Afh0.net] 仮想環境を操作するのはUWSCでは無理
633 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/14(日) 08:59:07.59 ID:4bRrPD2X0.net] >>593 なるほど バックで動かすのはあきらめます ありがとうございました
634 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/14(日) 09:05:22.19 ID:c3uHBcDI0.net] 自分が裏だと描画を控えるアプリに対して 描画させる事は基本的に前面にするしかない
635 名前:名無しさん@お腹いっぱい。 [2016/02/14(日) 09:28:54.14 ID:Oo27r2AD0.net] 以前書いた奴 ID = GETID("BlueStacks App Player","WindowsForms10.Window.") // MOUSEORG( ID, MORG_CLIENT or MORG_DIRECT, MORG_BACK ) // MORG_DIRECT だとAndroidが反応してしまう。 // MOUSEORG( ID, MORG_CLIENT ) // MORG_CLIENT だと ChkImgX と標準関数とで原点位置が食い違う。 MOUSEORG( ID ) >>593-594 の流れはおかしい。 仮想環境でも画像で操縦は可能だし >>592 は「MOUSORG(winid,0,0)」では動くと書いてるのに。 >>595 BlueStacks は裏でも描画する XP時代は隠れた部分は描画されなかったけど
636 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/14(日) 11:08:44.73 ID:4bRrPD2X0.net] >>596 よく考えたらそうですね・・・ その後の処理はifb CHKIMG→BTNでクリックさせる→スリープ1秒 を何パターンも作ってるだけの簡単な ゲーム操作をさせるマクロなんですが色々ぐぐっても原因わからずでした
637 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/15(月) 01:57:12.49 ID:0dWxJSmB0.net] 画像検索の特殊変数G_IMG_X,G_IMG_Yってのは ローカル変数扱いなんでしょうか? 画像検索でヒットしたG_IMG_X,G_IMG_Yの値を 別の関数で使いたい場合は、引数で渡すか グローバル変数を使うかしかないんでしょうか?
638 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/15(月) 07:11:02.66 ID:X50nyRyC0.net] >>598 グローバルだったとしても、そういうのは引数で渡す癖をつけたほうがいいよ。 グローバル変数に入れなおすのもNG。
639 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/15(月) 12:48:14.51 ID:fuyjfYD1
] [ここ壊れてます]
640 名前:0.net mailto: 引数が増え過ぎてきた場合、普通はどうしたらいいの?構造体もないし [] [ここ壊れてます]