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/
509 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/06(土) 21:35:39.00 ID:4Jvgc2PX0.net] かなり初歩的な質問なのですが調べてもあまり分からなかったので質問させて頂きます。 UWSCでログファイルが更新され続ける拡張子がtxtなどのファイルを監視し、目的のログが現れた場合 キーを送信 ってできますでしょうか? やり方を教えて頂きたいです。
510 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/06(土) 22:15:37.28 ID:k3CjFpd40.net] ・日本語をきちんと使えるようにする ・UWSCを勉強する たったこれだけで実現できるようになるよ あとは君の努力次第だから頑張ってね
511 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/06(土) 22:35:58.37 ID:0QAMOn/70.net] シェアウェア版って結構高いねそれでも業務に使える?一台に一ライセンス必要みたいだけど
512 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/06(土) 22:47:44.53 ID:sPS5RQrH0.net] >>480 何度もバカなの?
513 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/06(土) 22:57:49.59 ID:2YduAXx90.net] >>478 質問がごちゃごちゃし過ぎで、丸投げしたいようにしか見えない どのように監視できないのか どのようにログの検索ができないのか どのようにキー送信ができないのか
514 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/07(日) 00:40:38.55 ID:puxzTe8g0.net] >>456 これに便乗なんだけど MORG_DIRECTで動作するAndroidのエミュレータってありますか?
515 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/07(日) 06:08:59.16 ID:I92VPPhw0.net] uwscって自由すぎて逆に戸惑うことが多くね? TOTAL = MYCALC(300,400) //計算結果を出力 PRINT TOTAL FUNCTION MYCALC(VAL1, VAL2) ADD = VAL1 + VAL2 RESULT = ADD FEND ------------------------------------------------- PRINT MYCALC(300,400) FUNCTION MYCALC(VAL1, VAL2) ADD = VAL1 + VAL2 RESULT = ADD FEND PRINT文にFUNCUTION関数直接書いても出力されるんだな
516 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/07(日) 06:13:42.80 ID:mZHgAHcI0.net] 関数の引数に関数を入れるのは普通 出来ない言語の方が珍しい
517 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/07(日) 06:14:43.21 ID:oQyphb55
] [ここ壊れてます]
518 名前:0.net mailto: >>481 そう、パかなの。一台に六千円てことは百台で六十万てことでしょ? exe化したらライセンスフリーってことはexe化したもなのなら配布自由ってことか、配布したPC全部にライセンスいるのかの思ったよ。やっぱり馬鹿だったんだな俺 [] [ここ壊れてます]
519 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/07(日) 07:45:41.55 ID:JTReqb1J0.net] 気づけてよかったね
520 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/07(日) 07:48:35.49 ID:TPGZWfB40.net] 今までで割引キャンペーンとかってやったことある? やってくれれば買うんだけどな
521 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/07(日) 12:25:34.39 ID:DbLS0yGv0.net] 関数の引数に関数を入れる、が関数ポインタとかラムダ式、リスナクラスの話に聞こえてちょっとビックリしたw
522 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/07(日) 12:30:27.93 ID:UmG8NUOx0.net] あっしには何を言ってるのかさっぱり
523 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/07(日) 15:28:50.99 ID:cJXx45gX0.net] >>487 気付かせてくれてありがとう
524 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/07(日) 19:18:51.61 ID:I92VPPhw0.net] >>485 そうなんだ、知らなかった 教本みたいなサイトって丁寧に関数書くから 他人のコード見た時に「なんだこれ!」ってなってびっくりしたわ ついでに聞きたいんだけどさ --------------------------------------------------------------- クリック("ボタン")// FUNCTION クリック(name) IFB CHKIMG(name + ".bmp",0) BTN(LEFT,CLICK,G_IMG_X,G_IMG_Y) KBD(VK_a,CLICK) ENDIF RESULT FEND ------------------------------------------------------------- こうやってCHKIMGの画像ファイル名を関数の引数?を使って好きに変えれるようにしたんだけど 同じようにKBD(VK_a,CLICK) のVK_aの部分も変えられるように出来ないかね?
525 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/07(日) 19:28:24.73 ID:mZHgAHcI0.net] VK_Aとかは定数だから変数に入れたり計算させても大丈夫だよ 例えば VK_A + 1 と VK_B は同じだったりとかね
526 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/07(日) 19:34:53.46 ID:I92VPPhw0.net] へー、面白いな 今やってみたら出来たよ ありがとう
527 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/07(日) 19:48:58.52 ID:C1KScm550.net] コードが難読化するからコーディング規約で禁止してるところも多いけどまぁ便利だよね
528 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/07(日) 20:25:57.04 ID:Op3LiiL10.net] そもそも関数という形はそういう書き方をするためのものだろう。 受け取るだけの変数を毎回経由するなら戻り値なんて機能は不要だし。
529 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/08(月) 17:06:48.25 ID:T9ZC/Zyz0.net] 質問したい A処理 └B処理 └C処理 という感じの処理があって、これをFUNCTION ABC()にまとめた ABC(Aへの引数) と書くとCまで行くようになっている だけどA処理を飛ばしてB処理の部分を利用したいこともある AB飛ばしてC処理をしたい時もある そういう場合にABC(0,Bへの引数,0)やABC(0,0,Cへの引数)と書けば処理ができるように作ってみたんだけど これ以外に簡便なやり方って無いかな? i.imgur.com/TdIP4wY.jpg ------------------------------ FUNCTION ABC(Aへの引数,Bへの引数,Cへの引数,戻り値) RESULT = False |IFB !Aへの引数=0 | (A) 処理 |ELSE | |IFB !Aへの引数=0 | | (B) Aの値を継承して処理 | |ELSE | | (B') Bへの引数を使って処理 | | |IFB !Aへの引数=0 | | | (C) Bの値を継承して処理 | | |RESULT = True | | |ELSEIF Aへの引数=0 and !Bへの引数=0 | | | (C') B'の値を継承して処理 | | |RESULT = True | | |ELSEIF Aへの引数=0 and Bへの引数=0 | | | (C'') Cへの引数を使って処理 | | |RESULT = True | | |ELSE | | |RESULT = False | | |ENDIF | |ENDIF |ENDIF FEND ------------------------------
530 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/08(月) 17:56:33.03 ID:uvOD7Pon0.net] 引数以外の継承したい変数をPUBLICにするとか参照渡しにして ABC各処理を別関数に 関数A 関数B 関数C ABC全部処理する関数ABC BとCだけ呼ぶ関数BC みたいに呼べばいいんでないの
531 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/08(月) 17:58:10.02 ID:657cwzrg0.net] ・継承という用語はプログラミングにおいて特別な意味を持つので別の表現を使うべし。 ・サンプルプログラムの条件分岐に既に無意味な部分がありどうしたいのかが読み取れない。 今の状態だと
532 名前:7,11-12行目は絶対に実行されない。 ・引数第4項が戻り値であるにもかかわらずvar宣言がない、関数内でも使われていない。 実行され得ない部分を削って最適化するとこんな感じ。やっぱり意図がわからない。 FUNCTION doABC(Aへの引数, Bへの引数, Cへの引数) RESULT = False IFB !Aへの引数=0 doA(Aへの引数) ELSE doB(Bへの引数) IFB !Bへの引数=0 doC(Bへの引数) ELSE doC(Cへの引数) ENDIF RESULT = True ENDIF FEND [] [ここ壊れてます]
533 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/08(月) 17:58:53.91 ID:657cwzrg0.net] 要件ベースでまとめると、 (1) Aへの引数のみ指定すると、doA(Aへの引数), doB(Aへの引数), doC(Aへの引数) の順で実行 (2) Bへの引数のみ指定すると、doB(Bへの引数) のみ実行 (3) Cへの引数のみ指定すると、doC(Cへの引数) のみ実行 解1 関数 doA(paramA), doB(paramB), doC(paramC) を定義し、 関数 doABC(paramABC) 内で上記関数を使用する。 (1)はdoABC(Aへの引数) , (2)はdoB(Bへの引数) , (3)はdoC(Cへの引数) を実行する。 解2 各ケースをあくまで一つの関数にまとめ、引数の指定の仕方のみで制御したい場合。 PROCEDURE doABC(Aへの引数, Bへの引数, Cへの引数) RESULT = False IFB !Aへの引数=0 doA(Aへの引数); doB(Aへの引数); doC(Aへの引数) ELSE IFB !Bへの引数=0 doB(Bへの引数) ELSEIF !Cへの引数=0 doC(Cへの引数) ENDIF ENDIF FEND メリットは特に無い。
534 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/08(月) 18:43:19.51 ID:T9ZC/Zyz0.net] >>498-500 ありがとう >>500 ごめんなさい、勘違いしてた 関数の中に関数入れて呼び出すとエラーになる気がしてたけど違ったみたい 素直に解1の方法でやります
535 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/08(月) 19:45:49.25 ID:y9zJENvU0.net] hashtbl lists lists["あ"] = "a10 a20 a30" lists["い"] = "b100 b200" lists["う"] = "c1 c2 c3 c4" //上記の場合3*2*4=24通りの全組み合わせを出力するprintCombination //あ=a10, い=b100, う=c1 //・・・ //あ=a30, い=b200, う=c4 printCombination(lists) procedure printCombination(lists[]) product = 1 for key in lists product = product * length(split(lists[key])) next for i = 0 to product - 1 q = i hashtbl outHash for key in lists values = split(lists[key]) r = q mod length(values) q = int(q / length(values)) outHash[key] = key + "=" + values[r] next print join(outHash, ", ") next fend
536 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/08(月) 19:54:28.61 ID:y9zJENvU0.net] 質問です printCombinationという関数を書いてみたんですが、 もっとスマートな方法ないでしょうか? やりたいことはコメントに書いてあるとおりです すべての組み合わせを出力したい(もちろん別の組み合わせでも動くような感じで)
537 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/08(月) 20:28:28.46 ID:KECwy5hV0.net] これじゃいかんのか? DIM ary1[2] = "a10","a20","a30" DIM ary2[1] = "b100","b200" DIM ary3[3] = "c1","c2","c3","c4" for a1 in ary1 for a2 in ary2 for a3 in ary3 print a1 + a2 + a3 next next next どうしてもハッシュ使いたいなら上の三行で配列宣言したあとにハッシュリストからsplit使って配列にぶっこめばええんちゃうん
538 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/08(月) 22:06:55.05 ID:7q7uQHpo0.net] 帰宅中に松屋で飯食いながら考えた。 hashtbl lists lists[
539 名前:名無しさん@お腹いっぱい。 mailto:sage [2016/02/08(月) 22:09:05.76 ID:7q7uQHpo0.net] 帰宅中に松屋で飯食いながら考えた。 hashtbl lists lists["あ"] = "a10 a20 a30"; lists["い"] = "b100 b200"; lists["う"] = "c1 c2 c3 c4" const SPLT_V = " "; const SPLT_R = "<#CR>"; const SPLT_C = ", " print structCombinationCSV(lists, 1) function structCombinationCSV(lists[], cu
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はどちらがいいの?同じ? それなら、ページが多いエクセルの方が良くね。