1 名前:名無しさん@お腹いっぱい。 [2009/12/09(水) 05:27:33 ID:J1DL1P1U0] Windowsを自動化させるツールUWSC。 www.uwsc.info/ uwsc使いのみなさま、マターリ己のスクリプトを晒しましょ。
486 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/06/05(土) 01:32:53 ID:sSGL2jFW0] 初歩的な質問ですみません。 for i= 1 to 100 で回している間、実行したくない i に対して if i=5 or i=10 or i=32 or i=56 then ・・・ の様に書いているのですが、 i= が多くなると書くのが面倒くさいのでもう少しまとめて 書く方法はあるのでしょうか?例えば i=(5,10,32,56) みたいに・・。これではダメだとは思うのですが、他の書き方で。 どなたかお願いします。
487 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/06/05(土) 03:01:33 ID:7xrzyNYi0] 実行したくない数に法則性があるならそれを式にする。 単なるリストならそれを置換して作ってしまえば。 置換したくない番号の配列作っておいて、iをそれを比較するとか。 for i=0 to 10 if isNG(i) then print "NG:"+i next function isNG(num) dim ng[]=5,10,32,56 for i=0 to resize(ng)-1 ifb num=ng[i] result = 1 exit endif next result = 0 fend
488 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/06/05(土) 05:19:02 ID:XHbnzUaJ0] >>486 基本的にない。 C言語ならこう書けるけど switch{ case 5: case 10: case 32: case 56: コード; break; default: } でも、ORoperation()っていう関数を作ればそういう書き方は可能。 if ORoperation( i, 5, 10, 32, 56 ) then って感じで。 まあ、数値の奴は配列に入れて渡した方がいいんだけど。 if ORoperation( i, Array ) then function ORoperation( a, x1=0, x2=0, x3=0, x4=0, x5=0, x6=0 ) dim Array[] = x1, x2, x3, x4, x5, x6, 0 // 0はループ脱出条件 result = true i = 0 while Array[i] if i = Array[i] then exit i = i + 1 wend result = false fend 動くかどうかは知らない。
489 名前:名無しさん@お腹いっぱい。 [2010/06/05(土) 05:37:27 ID:XHbnzUaJ0] >>486 全ての場合にそういう共通処理が考えられるのなら、配列パラメタを使うべきかも dim Pattern[101] // ="a","x","b","x","c"・・って感じで並べてもいい Pattern[5] = "a" // 数値の方が扱いやすいが、とりあえず文字の方が分かりやすいかと。 Pattern[10] = Pattern[5] // 都度代入は変更がめんどいので Pattern[32] = Pattern[5] Pattern[56] = Pattern[5] if "a" = Pattern[i] then もしくは select Pattern[i] case "a" コード case "b" case "c" default print "パターンなし" selend
490 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/06/05(土) 08:54:06 ID:BLq+NU9U0] 初歩的かもしれませんが自分ではちょっとできないので質問させていただきます。 Aという画像が始めない場合はそのままで、もし見つかったら次に画像Aが消えたときに各処理をしていくというものとして下のようなものを書きました。 while true ifb chkimg(A) ・・・1 while true ifb chkimg(A) ・・・2 else 処理 endif wend else sleep(1) endif wend 実際に動かしてみたことろ処理が終わった状態でもずっと2のifbを続けます そこでこのスクリプトに「特定のキーを押した場合1のループに戻る」といった機能をつけようと思ったのですが、 どこにどのような命令を挿し込めばいいでしょうか。 一応2のifbのあとにif GETKEYSTATE(VK_ESC) then exitを入れてみたのですがどうにも反応していないようです。 稚拙な文にてわからづらいところ多々あるかと思いますがよろしくお願いします。
491 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/06/05(土) 13:14:44 ID:hXFmkiOc0] >>490 処理が終わったらループから抜けるのを忘れてるんじゃない? 2 の IFB ブロックの『処理』で最後に BREAK すれば一つ上のループに戻るよ
492 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/06/05(土) 15:14:33 ID:XHbnzUaJ0] >>490 elseの処理に数秒以上かかるようなら、キー入力を拾えてないかも。 キーをクリックしてから1秒以上経過してからGETKEYSTATEを動かしても、 キー情報は消えてるっぽいから、押されてないことになってるんだよ。 ESCを連打していればそのうち抜けると思うけど。
493 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/06/05(土) 18:08:16 ID:7xrzyNYi0] >>490 while true ifb chkimg(A) ・・・2 else 処理 endif wend 2の結果にかかわらずずっとwhileループの中。 画像Aが無くなった後ずっと「処理」を続ける。 その間2はずっとfalseなんでifの直後つまりifがtrueの時実行される場所に getkeystateを置いても実行されない。 入れるなら「処理」の直前。 while true ifb chkimg(A) while chkimg(A) wend 処理 endif wend ていうかこんなんでいいんじゃないの? sleep無いけど。
494 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/06/08(火) 20:48:06 ID:/dGW5DYk0] 斧戦争ツール作れよカスども
495 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/06/10(木) 23:23:04 ID:t9RcVFEr0] スクリプトを指定した時間だけ動かすという方法はあるのでしょうか? 例えばスクリプトを走らせてから30分間とかです。
496 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/06/11(金) 00:39:39 ID:aLuYGiLxP] これはひどい
497 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/06/11(金) 04:58:24 ID:l1wBl/570] >>495 UWSCはメインが終了したら、他のスレッドが動いていても終了します。 だから、こんな感じでやれば30分きっかりで終了できますが、当然処理は無条件に中断します。 -- sample.uws ここから-- thread func() sleep(30*60) exitexit // 不要だが、ここで終了と明示する意味で。 proceduer func() // 基本的にこちらですべて処理する while true sleep(1) wend fend -- sample.uws ここまで-- 中途半端に終了したくない場合、sleep(30*60)の代わりにGettimeのループで 今はダメっていうフラグを監視すればいい f = false // 処理中フラグ。処理中はtrueがセットされる t = GetTime() while GetTime < t + 30*60 repeat sleep(1) until ! f wend ちなみに、この場合はrepeatじゃないといけない。 そうしないとsleep()してる間にフラグがセットされる可能性が高いから。 もっと確実にやるなら終了するぞっていうフラグも立てるべきかな。
498 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/06/12(土) 13:07:37 ID:1g6XM8MfP] あるウィンドウの子ウィンドウにドラッグドロップしたいんですが、子ウィンドウのIDはどうやって取得すればいいんでしょうか?
499 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/06/12(土) 13:34:30 ID:e7naQunBP] // 指定ウィンドウの ID を返す 戻値 = GETID( タイトル, [クラス名, 待ち時間秒, MDI子タイトル] ) 引数 タイトル: 識別したいウィンドウのタイトル (タイトルの一部分だけでもOK) クラス名: 区別に必要でなければ省略して構いません (前方一致でのみ部分指定可) 待ち時間秒: 確認できるまで指定された秒数待ちます (0.01〜) 0: 0.1〜10秒まで状況や負荷により自動判断 (デフォルト) -1: 無期限待ち MDI子タイトル: MDIウィンドウ中の子ウィンドウタイトル
500 名前:498 mailto:sage [2010/06/12(土) 16:28:35 ID:1g6XM8MfP] そうではなくて、子ウィンドウのタイトルが分からない場合はどうすれば・・・
501 名前:横レス mailto:sage [2010/06/12(土) 17:52:51 ID:o26Fnx3o0] >>500 >タイトルの一部分だけでもOK これでだめならGETALLWINで存在する全ウインドウのIDとってから消去法 またはなんらかのWIN32API(知らないけど探せばあるんじゃね?)でハンドル取得してHNDTOID
502 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/06/12(土) 18:45:49 ID:5Y2bRnnp0] 参考になるか分からんが、ぴたすちおを使えば子ウィンドウ情報がみえる
503 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/06/12(土) 20:19:26 ID:e7naQunBP] //こういう事? def_dll GetWindow(hWnd,long):long:user32.dll GW_HWNDNEXT = 2 GW_CHILD = 5 uCmd = GW_CHILD p_id = getid("親") while true c_h = GetWindow(idtohnd(p_id), uCmd) if c_h = 0 then break p_id = hndtoid(c_h) uCmd = GW_HWNDNEXT msgbox( status(p_id, ST_TITLE) ) wend
504 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/06/13(日) 08:48:23 ID:c9kd9eBN0] >>486 うんこ発見装置を授けよう うんこ ="1 5 10 18 25 37 56 58 68 74 81 97 99" for i = 1 to 100 if pos(i,うんこ) > 0 then print i+"に うんこ発見" next
505 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/06/13(日) 09:55:53 ID:fmHGMG6r0] >>504 それ、致命的に駄目だろw
506 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/06/13(日) 11:23:05 ID:c9kd9eBN0] >>505 =0 に変更すれば処理したくないiの条件になるが何がダメなんだ? 理由を書いてくれ
507 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/06/13(日) 11:47:08 ID:o9NSeFNt0] >>506 自分で書いたのにためしに動作させてないのか? 一回動作させて、プリントログよく見てみろよ。1〜9まで全部条件に引っかかってるだろ。
508 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/06/13(日) 12:05:28 ID:86pvNGkL0] 簡単な方法として、正規表現使えるようにすればいけるな
509 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/06/13(日) 12:07:17 ID:86pvNGkL0] ほかには、文字の前後にゴミつけて区切りをはっきりさせればいける
510 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/06/13(日) 15:49:17 ID:c9kd9eBN0] そうだったすっかりわすれてた悪いな これでいけるだろ うんこ =" 1 5 10 18 25 37 56 58 68 74 81 97 99 " for i = 1 to 100 if pos(" "+i+" ",うんこ) > 0 then print i+"に うんこ発見" next
511 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/06/13(日) 16:31:53 ID:lV2bpcq40] TOKEN() と連想配列でやってみた DIM うんこ = "1 5 10 18 25 37 56 58 68 74 81 97 99" HASHTBL hash DIM str = うんこ WHILE LENGTH(str) hash[TOKEN(" ", str, TRUE)] = TRUE WEND DIM i FOR i=1 TO 100 IF hash[i] THEN PRINT i+"に うんこ発見" NEXT
512 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/06/13(日) 18:09:26 ID:Q8xDlz5x0] なるほど。 ハッシュテーブルならパターンが2次元配列で大量にあったとしてもすぐに発見できるね。
513 名前:名無しさん@お腹いっぱい。 [2010/06/13(日) 18:28:57 ID:M6ZVIcE70] UWSCを使っていて、パスが通っていないのが使いにくい。 CALL文や、ライブラリファイルを別フォルダにした場合、等。 ディレクトリ検索と、よく使うファイルのパスを登録したファイルとそれを使うスクリプトを作って、 CALLやいくつかの変数(プログラムファイル名等)はそれを経由するようにするとか 出来ないことはないけど(CALLとか作る)、 シンプルとはいえ、結構素人が作っていいのか本格的な感じになる。 みなさんはどうしているの? ひょっとしてどなたかが作ったのがありますか?
514 名前:513 [2010/06/13(日) 18:31:58 ID:M6ZVIcE70] >>513 すいません。誤記。 × (CALLとか作る) ○ (CALL2とか作る) CALL2みたいな新しいprocedureを作ってそこからCALLを呼ぶ、という意味にしたかった。。。
515 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/06/13(日) 21:06:35 ID:E/dbXkmj0] >>511 変数strの参照部全部変数うんこだろw
516 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/06/13(日) 21:48:07 ID:lV2bpcq40] >>515 参照部とは? TOKEN() は第二引数を破壊するので うんこに配慮して、うんこの値をコピーした str を渡しました
517 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/06/13(日) 21:53:05 ID:E/dbXkmj0] >>516 ああごめん。ちっと勘違いしてたわ。
518 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/06/14(月) 16:34:31 ID:A4WmwryV0] ifb iegetdata(ie, true, "yes", "はい") > 0 iesetdata(ie, true, "yes", "はい") sleep(0.5) else break endif iesetdata(ie, true, "yes", "確認") これ、もう少し纏まりませんか。主に1.2行目・・・ アンケサイトで「はい/いいえ」で確認ボタン出るまで押すって奴なんですが
519 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/06/14(月) 17:02:01 ID:A4WmwryV0] While iegetdata(ie, true, "yes", "はい") > 0 iesetdata(ie, true, "yes", "はい") sleep(0.5) wend iesetdata(ie, true, "yes", "確認") あれ、こうか・・・?
520 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/06/14(月) 17:32:38 ID:jt+/tNC/0] そんなアンケートに価値はない
521 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/06/14(月) 20:43:35 ID:aNbH09Ww0] ifb CHKIMG(IMG , -1 ) BTN(LEFT,DOWN,102,715,579) BTN(LEFT,UP,180,411,641) else (ifbの所に戻りたい) endif この処理を作りたいのですがelseをどう書けば良いんでしょうか。 イメージ画像が発現するまで待機する様な文が書きたいです。 if以外でも良いのです。
522 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/06/14(月) 20:51:53 ID:aNbH09Ww0] コンティニュー見つけました。 初心者ですみません。
523 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/06/15(火) 22:23:39 ID:Y3W88cOuP] 短髪の女の子?がセックスをしながら世界一周を目指すという成人誌を見たことがあるのですが、分かる人いますか? たしか3年ぐらい前の漫画だったと思います
524 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/06/16(水) 01:11:20 ID:jeyh3hPj0] どんな誤爆だよw
525 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/06/16(水) 13:04:10 ID:yLa0pynz0] これは大胆な確信犯だな。 面白そうだから探してくるわw
526 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/06/16(水) 21:29:45 ID:Z1Itnvke0] peekcolorを使ってB値だけを判定する方法を教えてください
527 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/06/16(水) 22:16:46 ID:nX9kgu9QP] 結果をmsgboxで表示すれば目視で判定できます それとも「どのように」判定したいのか指定があるんですかね
528 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/06/16(水) 23:16:32 ID:6Hb0U1Mg0] 「記録」を使って、 作業に使うアプリをまとめて立ち上げたり、 新しいフォルダを生成したりする程度のヘタレた使用をしています ヘルプを読んで起動オプションがあるのはわかりましたが スクリプト実行、実行後はUWSC本体を起動したままにする場合 UWSC.exe /K スクリプト名 ↑ この構文をどのように使えばいいのかがわかりません 例えば、こんな感じだと動きません GETTIME() HIDUKE = G_TIME_YY4 + G_TIME_MM2 + G_TIME_DD2 EXEC("NOTEPAD") SENDSTR(GETID("無題"), HIDUKE + "<#CR>") UWSC.exe /K 日時出力.UWS おそらく単純すぎて目の前に答えがあるのに、答えが近すぎて逆に自分の視界に入ってない状態だと思います ヒントだけでも教えていただければ・・・・orz
529 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/06/17(木) 03:11:51 ID:sncjYoBq0] >>526 BってBGRのB? (peekcolor(x,y) and $FF0000)/$10000 とか?
530 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/06/17(木) 06:51:29 ID:k9E1g4kJ0] >>528 exec
531 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/06/17(木) 08:09:29 ID:RfIdECVBP] >>528 ヘルプにある「その他項目」は文法の話じゃないよ スクランブルのほうには書いてあるけど コマンドプロンプトで起動する場合とかにパラメータを付ける話
532 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/06/17(木) 18:34:42 ID:Ff+fGhbK0] ご教授願います。 以下のスクリプトを作ったのですが、再生すると 行目のIFBに対しENDIFが閉じられていないと出ます。 どこがダメなのか教えてください WHILE TRUE ifb GETID(GET_ACTIVE_WIN) = GETID("paper man") then Ifb PeekColor(512,384) = $FFFF00 then BTN(LEFT,CLICK) Endif Endif sleep(0.02) WEND
533 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/06/17(木) 18:47:12 ID:+CCij1w00] >>532 見た感じで適当なカキコすると 2行目のGETID条件の相方が変数or定数じゃないのが気に食わないんじゃね?
534 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/06/17(木) 18:48:19 ID:k9E1g4kJ0] >>532 それで動いたのでどこが悪いか判りません。 …正直、ゲームチートっぽいのは歓迎したくないなぁ。
535 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/06/17(木) 18:50:44 ID:x399c/MH0] チートじゃないだろ カスが!発言に気をつけろ 次はないと思え
536 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/06/17(木) 18:56:59 ID:pUIHTkvJ0] まぁ、チートでは無いわな。 ちなみにuwscは、ゲームで使ってこそ価値のある物だと思うw
537 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/06/17(木) 19:19:52 ID:qd5QGDw6i] 単純にゲームに対する不正だなw
538 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/06/17(木) 19:29:39 ID:sncjYoBq0] ゲームに対する不正のどこがチートじゃないのかkwsk
539 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/06/17(木) 19:40:04 ID:ydiblUFW0] チートの定義はクライアント内部からでしょ。 UWSCってローカルな情報で動くし。 よくわからん、やってる事は同じだなw
540 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/06/17(木) 20:44:42 ID:sncjYoBq0] 定義も何もチートはcheatでそのまんま「不正行為」って意味だろうに。 内部も外部も関係ないだろ。
541 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/06/17(木) 20:47:52 ID:pUIHTkvJ0] 直訳とゲーム用語だと少し違うんだよね。
542 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/06/17(木) 20:50:44 ID:k9E1g4kJ0] >>541 チートを「不正」以外の言葉で使っている場面を見たことが無い。 どんな独自の用語なんだよw
543 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/06/17(木) 20:54:53 ID:pUIHTkvJ0] めんどくさいなー。 同じ不正でも、"チート"と"操作の自動化"は違うのだ。 後は自分で調べてね。
544 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/06/17(木) 20:57:16 ID:l8wchoUV0] 操作の本来実装されている以外の方法での自動化が認められたゲームなんかあるのか? 俺ルールでこんくらいはおkって思ってるだけだろ
545 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/06/17(木) 20:57:56 ID:k9E1g4kJ0] >>543 ま、結局不正なのは変わりないからなぁ…
546 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/06/17(木) 21:40:09 ID:RfIdECVBP] 不正行為の総称・・・チート 自分を正当化するための魔法の言葉・・・操作の自動化 確かに違うね
547 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/06/17(木) 21:58:48 ID:lFzqbv68O] ん? 自動化も不正だぜw 確かに、データ改ざんの事をチートと呼ぶのが一般的かな。
548 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/06/17(木) 22:04:40 ID:SzGCTaJq0] そもそも「ズル」のことをチートっていうのであってつまりマクロだろうがパケットいじろうがチートだと思うんだが
549 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/06/17(木) 22:28:29 ID:lFzqbv68O] ネットで調べたけど、一応はコンピューター用語として載ってるな。 でも人によって認識のズレがあるみたい。 単純に区別しやすいようにチートとマクロを分けてるとも言えるし。 俺的結論。みんな正しいw
550 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/06/17(木) 22:34:10 ID:ydiblUFW0] ゲームで語るか大きな意味で語るかの違いだな
551 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/06/17(木) 23:06:27 ID:x399c/MH0] マクロのほうが的確 ゲーム見たらなんでもファミコンっていう親くらい違う
552 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/06/17(木) 23:41:31 ID:dSI3F+Sd0] チートって聞いたらドラクエのHP999を思い出した。
553 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/06/17(木) 23:52:50 ID:jN7punls0] そんなにネトゲの話題がしたければネトゲの板にマクロやスクリプトのスレ立てろよ ここでネトゲの話題に反発してる連中もそこまで行って邪魔はしないだろうよ
554 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/06/18(金) 10:30:47 ID:RlvK9F450] while true ifb CHKIMG(IMG , -1 ) or CHKIMG(IMG7 , -1 ) ←ここ break endif btn(right,click,800,250) sleep(0.5) mmv(900,333) sleep(0.5) mmv(1050,333) sleep(1.0) ifb CHKIMG(IMG6,-1) mmv(G_IMG_X,G_IMG_Y) btn(left,click,G_IMG_X,G_IMG_Y) sleep(10.0) endif wend 最初のIMGが無いのにこの処理が終わってしまうのですが どこか間違ってますか?
555 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/06/18(金) 13:17:56 ID:RlvK9F450] 別の文で解決しました 色を無視してるから何か引っかかってたのかも
556 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/06/20(日) 16:51:16 ID:iYsBGIJR0] MapleStoryというゲームでピラミッドというサバイバルゲームがあり、それは敵がたくさん出てきてそれを倒し、14分で全てが終わる ゲームなんですが、1分50秒ほど早く終わってしまいます。ピラミッドの低レベル版の9分で全てが終わるサバイバルゲームでは、 ほとんどずれずに繰り返しできたのですが、ピラミッドで時間をずれずにUWSCでするにはどうしたらいいでしょうか?
557 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/06/20(日) 18:29:19 ID:PoKuH6O30] >>556 正確に行動するとか 時間やタイミングを合わせて行動するとかならここでもいいけど、 きっちり14分で敵を倒すやり方はゲームやキャラの詳細が分からないと答えようがないよ。 まずはきっちり14分で倒すやり方をメイポスレで聞いて来い。
558 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/06/20(日) 19:35:11 ID:l35pdc4w0] ずれるって事は記録機能を使ってるんだろうけど 自分で作れば可能、色々なサイトを見て少し勉強したらすぐできる
559 名前:横レス mailto:sage [2010/06/20(日) 19:42:03 ID:1vSDRlXF0] それも今のスクリプトの適当な場所にSLEEP(150)を挿入するだけっぽい
560 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/06/20(日) 20:40:13 ID:iYsBGIJR0] >>557 レスありがとうございます! ピラミッド自体は普通にやっても14分で終わるんですね。ステージが5つに分かれていて、 敵が沸いてきたのを倒して、ゲージが0にならなければ次のステージに進めて、14分ちょうどに終わるんです。 詳細は↓ここに書いてあります。 maplesonar.com/wiki/index.php?%E3%83%8D%E3%83%88%E3%81%AE%E3%83%94%E3%83%A9%E3%83%9F%E3%83%83%E3%83%89 マクロで実行すると1分50秒早く実行を完了して停止してしまうんです。残った1分50秒の間にゲージが0になってゲームオーバーに なってしまいます。 >>558 いろいろなサイトを見て勉強してみたいと思います。 >>559 動作を止めているとゲージが0になってしまいます。 みなさんありがとうございます。もっと考えてみようと思います。
561 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/06/20(日) 21:23:06 ID:PoKuH6O30] >>560 ACTゲージのMAX近くのドットをキャプチャ(PeekColor)して 赤っぽかったら数秒休む(Sleep(5))っていう処理を追加すればいい。 赤っぽいというのはRGB分解してRが128超えてたら赤っぽいということで。 そういう処理を一箇所に入れるだけで済むようにするには、全体の行動を一つのループに集約する方法がある。 もう一つの方法は、たとえばマウス、キーボードクリックをある関数経由にし、 その関数内で、実行しても良いか悪いか判断する。 その判断するフラグを別スレッドでループする監視処理。 そうすれば延々とキークリックを羅列していても1箇所書き換えるだけで済む。 関数名の変更はエディタの痴漢・・・もとい、チカン・・・・あれ?弛緩・・・ 置換だ置換 それでやる。
562 名前:名無しさん@お腹いっぱい。 [2010/06/21(月) 20:42:32 ID:2HQccvy70] >>473 やっぱりUWSCでもできるような単純な処理っぽい。 ttp://librahack.jp/okazaki-library-case/comparativetable.html >朝日新聞「1回ボタンを押すだけで、1秒に1回程度の速度でアクセスを繰り返せるプログラムを作っていたという。」 >ローカル環境(Thinkpad+XAMPP【Webサーバー】)では、Eclipseの実行ボタンを押して、PHPスクリプトを実行していました。 ttp://librahack.jp/okazaki-library-case/comparativetable.html >警察・マスコミ「HTTP500が発生した時刻を「停止日時」と表現。」 HTTP500 = 内部サーバーエラー >朝日新聞:「ホームページの閲覧は21回停止されていた。」 >中日新聞:「計8回機能を停止させ、」 >読売新聞:「閲覧しにくい状態にさせ、」 >日経新聞:「21回にわたりHP閲覧をできないようにした。」 >毎日新聞:「サーバーを21回シャットダウンさせた疑いがある。」 >毎日新聞:「県警が25日に自宅を家宅捜索した際も自動アクセス中だったという。」 >ThinkpadのEclipse環境から、合計64,008回をリクエスト送信。 >家宅捜索のとき Thinkpad電源オフ。リクエストなし。
563 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/06/22(火) 16:15:11 ID:cUoPGlwu0] >>556 ですがピラミッドマクロできましたw 攻撃する動作を追加していくっていうアナログな方法で作れましたw
564 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/06/22(火) 20:18:25 ID:FiBTNy8s0] ゲームマクロを作っていると気付く事になる。 あれ?めんどくさい処理を自動化してるんだよな? なんでこんなめんどくさいゲームやってんだオレ
565 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/06/22(火) 20:23:28 ID:vfPNGvwL0] 自動化って仕事(PC操作)を減らしてくれるはずが、自動化がなければとてもやる気がしないようなことに手をつけてしまい しかもそれがあとから考えて意味あっただろうかと思うような行為だったりもする スクリプトを組み動作を検証し改良する、という行為そのものが娯楽なのだ、と思わなければまさに愚行だたな
566 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/06/22(火) 20:57:53 ID:C+CRCydp0] uwscを覚えると、やるゲーム全てに対して 「これって自動化できるな」という目線で見てしまう。
567 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/06/22(火) 21:52:31 ID:q8DnHohU0] 仕事になると、そういう目線は結構重要。 そんな俺は業務的にUWSCを使いまくり。無ければ仕事量的に処理出来ない…
568 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/06/22(火) 22:49:31 ID:jmCKgS7q0] 業務でスクリプト書くとバグがあってそれに気づかなかった時が怖いんだよな… 発覚した時には遥か昔のデータまで遡って修正とか 楽してた分がカウンターとなって襲ってくる
569 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/06/22(火) 23:19:31 ID:q8DnHohU0] >>568 正直、気を使うことは確かだね。 過去数回、過去に遡る経験をしたが、新しく発見・修正スクリプトを書いて過去データを直したw テキストエディタとヘルプ程度…+その問題が軽度である事前の注意力と幸運…が有れば、 その場でサクサクとスクリプト自体を直せるのは強み。 …臨機応変とはこの事か、と。 一般的なスクリプト言語と比べて、実行にスクリプト本体とuwsc.exeで可搬性が高いのはいいと思うよ。 WSHとは比べ辛いが、業務としてEXE化できるのはありがたかった。 …EXE化の利点って隠蔽化の外には、単体でスクリプトに対してD&Dが可能になる、って点が大きい。
570 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/06/25(金) 23:50:53 ID:NEYBETTk0] peekcolorでピクセル単位で場所を指定して監視するのではなく、 画面全体を監視する方法ありませんか? 色で判定を出したいです。
571 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/06/26(土) 01:07:04 ID:lUJoxFiZ0] >>570 チェックイメージを使うかピークカラーを画面全体行えば良いと思います
572 名前:名無しさん@お腹いっぱい。 [2010/06/26(土) 03:24:32 ID:iR+AoK580] てて
573 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/06/26(土) 06:44:01 ID:YCZ3L8nQ0] 絶対やっちゃいけないとまではいわないけど、Peekcolorを画面全体でまわすなんて駄目ですよ。 ためしにやったら1回のスキャンで58秒かかりました。 ほかのコンパイラ型言語でDLL関数でも書けばいいと思うけど、 それが無理ならhsp3っていうスクリプトを呼び出して処理するのがいいんじゃないかな。 ttp://fs-cgi-basic01.freespace.jp/~hsp/ver3/hsp3.cgi?print+200604/06060040.txt ここでhsp3の性能について語られています。 同じようにUWSCでテストしてみました。 数値の足し算が100万回で11秒 (HSP3の50倍) 文字列の連結が100万回で11秒 (HSP3の10倍未満) peekcolor1280*1024に至っては58秒かかりました。(HSPの140倍) もちろん僕のCPUは時代遅れなPenMですが、記事が書かれたのが僕がパソコンを購入してから1年後なので、 性能があちらが上だとしてもせいぜい2倍どまりでしょう。 画面をキャプチャするpeekcolorと、メモリをスキャンするpeekで比較したのは公平ではないかもしれませんが、 ドットをスキャンする方法がそれぞれ違うのでこれで比較するのが妥当だと思います。 文字列操作を多用するなら一桁しか違わないといえるので、hspを覚えなおすところまでは必要ないと思います。 しかし、計算速度が重要な画像処理をUWSCでやるのはさすがにナンセンスです。 UWSCでゲーム操作をやれるのは組み込みの検索関数があるからですよ。 HSP3を使うとして、言語は覚えなおさないといけませんが、せっかく覚えたUWSCの知識やスクリプトを無駄にすることはありません。 DLLランタイム経由で呼び出すことが可能です。 PC等 [ソフトウェア] “自動化ツールuwsc使いよ集まれ4” ttp://pc12.2ch.net/test/read.cgi/software/1235990960/621 Googleのキャッシュにあります。 ttp://www.google.co.jp/search?hl=ja&source=hp&q=uwsc+_hspexec
574 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/06/26(土) 08:40:26 ID:XkryZ5iqi] 質問です。 AquesTalkのdllをロードしてwavファイルを出力したいのですが ///構文 unsigned char * AquesTalk_Synthe(const char *koe, int iSpeed, int *size) ///引数 ///koe 音声記号列 ///iSpeed 発話速度[%] 50-300 の間で指定 デフォルト:100 値を大きく設定するほど、速くなる ///size 生成した音声データのサイズが返る[byte](エラーの場合はエラーコードが返る) ///戻り値 WAVフォーマットのデータ(内部で領域確保、解放は呼び出し側でAquesTalk_FreeWave()で ///行う)の先頭アドレスを返す。エラー時は、NULL を返す。このときsize にエラーコードが設定さ ///れる。 DEF_DLL AquesTalk_Synthe(string, int): string: AquesTalk.dll DEF_DLL AquesTalk_FreeWave(string): : AquesTalk.dll sp=50 str="こんにちわ。" fp = fopen("AquesTalk.wav", F_WRITE); wav=AquesTalk_Synthe(str, sp) FPUT(fp, wav) fclose(fp) AquesTalk_FreeWave(wav) 戻り値がデータへの先頭アドレスで帰されるので出力したwavファイルの中身は "RIFF4`" とwavファイルの ヘッダの先頭部分のみになってしまいます。こういうアドレスの先頭・ポインタで戻り値が返された場合、 実体ののデータを取得するにはUWSCではどう記述するのか教えてください。 dllのロード自体がの記述が間違っているかもしれませんが、wavファイルを出力しない↓のコードでは問題なくできました。 DEF_DLL AquesTalkDa_PlaySync(string,int): int: AquesTalkDa.dll sp=50 str="こんにちわ。" AquesTalkDa_PlaySync(str,sp)
575 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/06/26(土) 09:57:52 ID:YCZ3L8nQ0] >>574 ポインタで受け取ったら、実体をコピーすればいいです。 > VB.net > Declare Function lstrcpy Lib "kernel32.dll" (ByVal lpString1 As String, ByVal lpString2 As Integer) As Integer UWSC DEF_DLL lstrcpyA(string, Long): Long: kernel32.dll DEF_DLL lstrlenA(string): Long: kernel32.dll ここで文字列を格納する場所の確保が必要です。 できればstrlenAで文字列の長さを調べ、その長さのバッファを確保したほうがいいんですけど・・・ とりあえず空白文字列を代入で確保しかないです。 好きな長さにするには文字列連結回数で調整ですね。 wav = AquesTalk_Synthe(str1, sp) str2 = " " //この長さを超えるとメモリが壊れる。 lstrcpyA(str2, wav) FPUT(fp, str2) ところで、.wav ファイルを開いているようですが、UWSCはテキストファイルしか扱えません。 仮に音声データでないとしたら、間違って再生してしまうような拡張子はやめるべきです。 メモリ破壊を防ぐには、lstrcpynA() 関数を使い、コピーする長さを限定します。 n = (str2とwavの短いほうを選択して代入) lstrcpynA(str2, wav, n)
576 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/06/26(土) 23:49:22 ID:IdkQBLMFi] >>575 返事を忘れてました。申し訳ない。 書かれているように記述して実行してみたのですが、str2の内容が変わらずに出力されてしまいます。 色々試していたのですがどうも思うようにいきません。 >UWSCはテキストファイルしか扱えません これは知りませんでした。 fputで出力するデータがテキスト形式ではなく、バイナリデータなので上手くいかないのかもしれませんが もうちょっと自分の方で試してみます。レスサンクスでした。
577 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/06/27(日) 07:46:07 ID:iMo1l0nA0] >>576 すいません。 参照渡しが必要でした。 × DEF_DLL lstrcpyA(string, Long): Long: kernel32.dll ○ DEF_DLL lstrcpyA(var string, Long): Long: kernel32.dll コピー元の方はvar なしでもいいんですけど・・・var がないとconst扱いなのかも。 DEF_DLL lstrcpyA(var string, string): Long: kernel32.dll やっぱりバイナリデータですか。 UWSCでもポインタとして受け取ることはできているので、WindowsAPIを使ってファイルに保存することは可能でしょう。 しかし、CreateFileA、WriteFile、CloseHandle などの関数のほか、それぞれの引数も結構あるので大変です。 HSP関連には解説があるようですが・・・ ttp://yokohama.cool.ne.jp/chokuto/urawaza/fileaccess.html やっぱりSaveFileFromURL()みたいに一発で保存できる関数が欲しいところですね。 LightWave3Dとかいうやつだとバッファをファイルに保存するプラグインというのがあるようで・・・ メモ: FileSystemObject はテキストデータのみ。
578 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/06/27(日) 07:48:07 ID:iMo1l0nA0] >>576 AquesTalk2ならAqTk2Appっていうツールがありますね。 UWSC的にはこのツールを自動操縦するのが趣旨にあってると思います。
579 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/06/27(日) 08:49:30 ID:ozy0IIj4i] >>577 あーやっぱ結構API関数たくさん使わないと無理ですか。ボチボチやってみます。dd。 >>578 以前にUWSCでSAPI関数使ってsapi5の音声エンジンを使って割と簡単にできたし、他のエンジンもCOMオブジェクトから 簡単にできたから、AquesTalkもできるかなと思ってやってみたんですけど失敗。 現在、半ば意地になってるのと、ついでにちょっとした勉強のつもりでやってるだけで、特にスクリプトを書いてどうこうしよう と考えてるわけじゃないんです。でも情報d。
580 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/06/29(火) 06:26:49 ID:wrNX1tM50] ファイルに名前をつけて保存の時に、ファイルの種類がHTMLとかになってて、 flvとして保存しようとしても"〜.flv.htm"みたいに二重に拡張子がついてしまう。 ファイルの種類をいじるのもいいけどそれはめんどくさい。 保存するファイル名をダブルクォーテーションで括ってしまえば余分な拡張子はつかなくなる。 それはいいとして、今まで保存したファイルの拡張子を除去するのはめんどくさい。 ファイル名の一部に".flv"を含んだものを探すのもいいけど、 DOSでワイルドカード指定しようとしても.flvはファイル名に含まれてしまう。 UWSCで引数のファイル名を処理するのも考えたけど、実行形式にしないと受け取れないようなことがかかれてたような。 で、バッチファイルで何とかやりました。 割と簡単に記述できるんですね。 :loop rename %1 "%~n1" shift if %1=="" goto end goto loop :end
581 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/06/29(火) 20:22:17 ID:m65QeqbN0] よかったね^^
582 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/06/29(火) 21:33:15 ID:fJb2X/gCP] たまにこういう超一方的なレスあるけど何なの? 他人にどういう反応を求めているの? 単純に不快にさせたいんだろうか
583 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/06/29(火) 21:52:26 ID:Qc35Lc290] 過疎板や専門板だとよくあることだ 相手にするな
584 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/06/29(火) 22:06:48 ID:usZ+cNtA0] オナニーですから
585 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/06/29(火) 23:12:57 ID:wrNX1tM50] なんで不快になるのか分からないな。 「名前をつけて保存」に関する質問なんてしょっちゅうされてる。 とりあえずダウンロードしてからまとめてリネームすることもあるんだけど 名前が統一ルールならワイルドカード使ってコマンド1行で済むものを 拡張子を削ることができないためにいちいちバッチファイルでリネームするしかなかったので そういうツールなどないかなあと思ったら拡張子削るだけで金を取るようなソフトしかなくて いろいろ考えた末にいいものができた。 同じ悩みを持つ人はいるだろうし、自分のメモ代わりにもなるし、短くて邪魔にならないし応用も利くし、 何より話題がなくて過疎ってるから書いてるんだけど。 応用といえば有償版を買うメリットにドラッグ&ドロップをあげてる人いたよね。 DOSのバッチファイルで受け取ってスクリプトに渡せば有償版使わなくても済むことになるわけで、 ユーザーにしてみればお得だし・・・ 別件をついでに書いておくけど、他のソフトとの連携がらみでイベントドリブンにできないかなあと考えてる。 >>573 に書いたようにUWSCはなかなか遅いので、イベントドリブンにできればより快適に使えるんじゃないかと。 普通にDLL関数のように呼び出して実行が終わるまでとまっているって言うのもひとつの手だけど、 ・・・いや、それが一番いい手かもしれない。 さっきまではOCX作ってOLEEVENT()で動かすのを考えていたけど、とにかくめんどくさい。 ただでさえIEをOLEEVENT()で動かそうとしてエラーでまくりでどう使えばいいんか分からなかったりするけど、 DLL関数として呼び出すならそういう問題は起きないはずだ。 DLL関数がコールバック関数を作ってメッセージループする・・実行ファイルを同期オプションつけてEXEC()するみたいな動作をすればいい。 取りあえず画面つきDLLを実行してイベント待ち関数を呼び出せばいいかな? 問題はどんなイベントをどんな渡し方するかだが・・ なんかめんどくさ どんなソフトからも連携できるようにしようと思ったらやっぱり実行ファイルの呼び出しだけど、 ・・・ああ、めんどくさい。 やっぱりファイルの存在チェックをループして具体的な処理はファイルの中に書くのが手軽だ。 テキストファイルはコマンドラインでも作れるし連携しやすいし。
586 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/06/29(火) 23:53:55 ID:mAsbzwiX0] 自己完結している文を省けばすっきりするし読み易い