UCGO-PS UWSCマクロ勉強~めざせ完全自動化(・∀・)ノシ その参 | おっチャン寝る

おっチャン寝る

おっチャン寝る(オッチャンネル)とは、オッチャンが「おっ」と思った面白動画を貼り付けたり、面白かったゲームの話題でもゆるーく綴ります。他のBlogで真面目な事を書いている分、ここでは大いに弾けますw

レーダー監視→敵影補足→PPPと叫ぶ→MS工場へ移動→格納→ミディアでハンガー→10分待機→マシンに乗ってレーダー確認→敵影あり→格納→10分待機→マシンに乗って…(敵影なしまでループ)→敵影なし→生産初期設定→生産開始 が出来た(・∀・)つ

とはいえ・・・だんだん、行き詰まってきた(;・∀・)
メインの行動はなんともないのだが…
イレギュラー対応を作り込んでいくにつれ
複雑怪奇に…

とてもじゃないけど、分けわからなくなってきたので
Call を多用してメンテナンス性を良くしました。

まず、前々回紹介したプログラムを更新したので
貼っときます。

for を使って指定した回数を繰り返していた部分を
while true でループさせ
条件でループを止めるようにしました。

だって、MS生産は
材料不足になるまで
武器生産は
コンテナが一杯になるか
材料不足になるまで
続けたほうが効率が( ・∀・)イイ!!

そして、生産者の死因の9割以上が生産中の襲撃による戦死((((;゚Д゚))))ガクガクブルブル
なので、生産中はレーダー監視を3秒毎に行います。(・∀・)

当然、乗機はレーダーレンジ2kmを誇るホバーです。

敵影をキャッチしたら、大きな声で「PPP!」と叫ぶ仕様となっておりますw


追記
そして、実際の襲撃…
レーダー反応に対応して動いてくれない
というかレーダーの敵影を認識していないようだ…
よく考えりゃ、レーダーって点滅してる…(´・ω・`)



UWSC解説本


まず、これが大元のプログラム

MS生産破壊武器生産ALL条件分岐.UWS

ACW(GETID("UCClient","Rx Application"),7,3,816,638,0)
// 初期設定
Call 初期設定.uws // 基準点へ移動
// 生産サイクル(MSサイクル1と武器サイクル4)
while true
//MS生産破壊フロー
Call MS生産破壊マクロ.uws // MS生産破壊
Call 鯖メンテ確認.UWS //メンテ確認
Call 被撃墜判定.uws // 被撃墜判定
Call MS-武器移動.uws // MS工場から武器工場への移動
//武器生産売却フロー
Call 武器生産マクロ.uws // 武器生産1セット目
Call 鯖メンテ確認.UWS //メンテ確認
Call 被撃墜判定.uws // 被撃墜判定
Call 武器-売場移動.uws // 武器工場から武器売場への移動
Call 鯖メンテ確認.UWS //メンテ確認
Call 武器売却マクロ.uws // 武器売却
Call 武器売場-素材売場移動.uws // 売却後素材売場への移動
Call 鯖メンテ確認.UWS //メンテ確認
Call 素材購入マクロ.uws // 素材購入(要ラグ対策)
 for 回数 = 1 to 3 //繰り返す回数
Call 素材売場-武器工場移動.uws // 素材購入後武器工場への移動
Call 鯖メンテ確認.UWS //メンテ確認
Call 武器生産マクロ.uws // 武器生産2セット目以降
Call 鯖メンテ確認.UWS //メンテ確認
Call 被撃墜判定.uws // 被撃墜判定
Call 武器-売場移動.uws // 武器工場から武器売場への移動
Call 鯖メンテ確認.UWS //メンテ確認
Call 武器売却マクロ.uws // 武器売却
Call 武器売場-素材売場移動.uws // 売却後素材売場への移動
Call 鯖メンテ確認.UWS //メンテ確認
Call 素材購入マクロ.uws // 素材購入(要ラグ対策)
 next
//MS生産破壊準備
Call 素材-エンジン売場移動.uws // 素材購入後エンジン売場への移動
Call エンジン購入マクロ.uws // エンジン購入(要ラグ対策)
Call エンジン売場-MS工場移動.uws // MS工場への移動
Call 鯖メンテ確認.UWS //メンテ確認
WEND



さて、上記の中でも花形の
MS生産破壊マクロ.uws
武器生産マクロ.uws
です。

なんと、生産中にレーダーを3秒に1回チェックして
敵機が来たら、前回作った逃げ込みマクロでトンズラ~




MS生産破壊マクロ.uws

ACW(GETID("UCClient","Rx Application"),7,3,816,638,0) //ウィンドウ状態
//レーダー監視
ifb CHKIMG("enemy.bmp") //レーダー敵影の認識
Call MS工場格納マクロ.UWS
endif
//生産
while True //生産作業ループ開始
BTN(LEFT,CLICK,682,185,300) //生産ウィンド呼び出し(ダブルクリック)
BTN(LEFT,CLICK,682,185,125)
sleep(0.8) //それぞれのPCに丁度良い値に調整
BTN(LEFT,CLICK,452,117,300) //Takeoutボタン
sleep(0.8)
BTN(LEFT,CLICK,443,267,300) //Develop
sleep(0.8)
BTN(LEFT,CLICK,458,301,281) //Next
sleep(0.8)
//素材不足の場合
ifb CHKIMG("attention.bmp") //素材不足判定
BTN(LEFT,CLICK,518,363,300) //OK
sleep(0.8)
BTN(LEFT,CLICK,102,298,300) //Back
sleep(0.8)
BTN(LEFT,CLICK,495,42,300) //生産ウィンド閉じ
break //素材不足により生産ループ終了

sleep(0.8)
endif
//生産可能の場合
BTN(LEFT,CLICK,398,416,300) //Start

//レーダー監視
while True //生産完了まで以下をループ
ifb CHKIMG("check.bmp") //生産が終わったら表示される画面の認識
break //ループ終了させる
else //生産完了画面がなかったら
//レーダー監視(3秒毎)
ifb CHKIMG("enemy.bmp") //レーダー敵影の認識
Call MS工場格納マクロ.UWS
else //敵影なし
sleep(3.0)
endif
endif
WEND //レーダー監視ループ範囲終了

ifb CHKIMG("Confirm.bmp") //生産成功判定
BTN(LEFT,CLICK,518,363,300) //OK
sleep(0.8)
BTN(LEFT,CLICK,682,185,300) //生産ウィンド呼び出し(ダブルクリック)
BTN(LEFT,CLICK,682,185,125)
sleep(0.8)
BTN(LEFT,CLICK,432,204,300) //Dismantie
sleep(0.8)
BTN(LEFT,CLICK,389,281,300) //Start
sleep(0.8)

//レーダー監視
while True //破壊完了まで以下をループ
ifb CHKIMG("check.bmp") //生産が終わったら表示される画面の認識
break //ループ終了させる
else //生産完了画面がなかったら
//レーダー監視(3秒毎)
ifb CHKIMG("enemy.bmp") //レーダー敵影の認識
Call MS工場格納マクロ.UWS
else //敵影なし
sleep(3.0)
endif
endif
WEND //レーダー監視ループ範囲終了


BTN(LEFT,CLICK,518,363,300) //OK
sleep(0.8)
BTN(LEFT,CLICK,452,117,300) //Takeoutボタン
endif
ifb CHKIMG("attention.bmp") //生産失敗判定
BTN(LEFT,CLICK,518,363,300) //OK
endif
WEND //生産作業ループ終了

BTN(LEFT,CLICK,682,185,300) //生産ウィンド呼び出し
BTN(LEFT,CLICK,682,185,125)
sleep(0.8)
BTN(LEFT,CLICK,452,117,300) //Takeoutボタン
sleep(0.8)
BTN(LEFT,CLICK,497,43,300) //生産ウィンド閉じ




武器生産マクロ.uws

ACW(GETID("UCClient","Rx Application"),7,3,816,638,0)
//レーダー監視
ifb CHKIMG("enemy.bmp") //レーダー敵影の認識
Call 武器工場格納マクロ.UWS
endif

//生産
BTN(LEFT,CLICK,684,180,300) //生産ウィンド呼び出し
BTN(LEFT,CLICK,684,180,94)
sleep(0.8)
while True //生産作業ループ開始
BTN(LEFT,CLICK,444,120,300) //TAKEOUT
sleep(0.8)
BTN(LEFT,CLICK,445,211,300) //Develop
sleep(0.8)
BTN(LEFT,CLICK,467,255,300) //Next
sleep(0.8)

//素材不足の場合
ifb CHKIMG("attention.bmp") //素材不足判定
sleep(0.8)
BTN(LEFT,CLICK,518,363,300) //OK
sleep(0.8)
BTN(LEFT,CLICK,83,250,300) //Back
sleep(0.8)
break //素材不足により生産ループ終了
else //生産可能だったたら
//生産可能の場合
BTN(LEFT,CLICK,393,412,300) //Start
sleep(0.8)
endif

//武器生産作業完了までレーダー監視をループ
while True //生産完了までレーダー監視をループ
ifb CHKIMG("check.bmp") //生産が終わったら表示される画面の認識
break //ループ終了させる
else //生産完了画面がなかったら
//レーダー監視(3秒毎)
ifb CHKIMG("enemy.bmp") //レーダー敵影の認識
Call 武器工場格納マクロ.UWS
else //敵影なし
sleep(3.0)
endif
endif
WEND //レーダー監視ループ範囲終了

sleep(0.8)
BTN(LEFT,CLICK,519,364,300) //OK
sleep(0.8)
BTN(LEFT,CLICK,684,180,300) //生産ウィンド呼び出し
BTN(LEFT,CLICK,684,180,94)
sleep(0.8)
BTN(LEFT,CLICK,444,120,300) //TAKEOUT
sleep(0.8)
ifb CHKIMG("reds.bmp") //コンテナが一杯になったら
break //ループ終了させる
endif
WEND //生産作業ループ終了
BTN(LEFT,CLICK,491,43,300) //生産ウィンド閉じ
//レーダー監視
ifb CHKIMG("enemy.bmp") //レーダー敵影の認識
Call 武器工場格納マクロ.UWS
endif
sleep(1.0)



武器工場格納マクロ.uws

ACW(GETID("UCClient","Rx Application"),7,3,816,638,0)

BTN(LEFT,CLICK,491,43,300) //生産ウィンド閉じ
sleep(0.8)
//MS工場へ緊急移動
//右旋回
BTN(RIGHT,CLICK,791,342,300)
BTN(RIGHT,CLICK,791,342,94)
sleep(1.0)
BTN(LEFT,CLICK,773,817,265) //AUTOコマンド
KBD(VK_OEM_2,CLICK,40)
KBD(VK_A,CLICK,40)
KBD(VK_U,CLICK,40)
KBD(VK_T,CLICK,40)
KBD(VK_O,CLICK,31)
KBD(VK_RETURN,CLICK,40)
sleep(0.8)
BTN(LEFT,CLICK,320,507,300)
BTN(LEFT,CLICK,401,650,140)
sleep(0.8)
BTN(LEFT,CLICK,608,521,300) //Progressウィンドアクティブ
sleep(5.0)
// ここからはMS工場格納マクロと同じ
Call MS工場格納マクロ.UWS



MS工場格納マクロ.UWS

ACW(GETID("UCClient","Rx Application"),7,3,816,638,0)
//敵影発見報告
ifb !CHKIMG("ef.bmp") //軍チャ確認
BTN(LEFT,CLICK,71,626,300)
endif
ifb !CHKIMG("wide.bmp") //ワイドチャット確認
BTN(LEFT,CLICK,46,620,300)
endif
ifb !CHKIMG("wide.bmp") //ワイドチャット確認
BTN(LEFT,CLICK,46,620,300)
endif
KBD(VK_OEM_2,CLICK,40) //大きな声でPPP!と叫ぶ
KBD(VK_P,CLICK,40)
KBD(VK_P,CLICK,40)
KBD(VK_P,CLICK,40)
KBD(VK_SHIFT,DOWN,40)
KBD(VK_1,CLICK,40)
KBD(VK_SHIFT,UP,31)
KBD(VK_RETURN,CLICK,40)
//敵影発見報告完了

//生産作業中の確認
//まだ生産中なら待機
ifb CHKIMG("Progress.bmp") //生産中を判別、以下生産中の場合
while True //生産完了まで以下をループ
ifb CHKIMG("check.bmp") //生産が終わったら表示される画面の認識
BTN(LEFT,CLICK,519,364,300) //OKボタンクリック
break //ループ終了させる
else //生産完了画面がなかったら
sleep(0.8) //確認間隔
endif
WEND //ループ範囲終了
endif
//生産作業中ではない場合
//状態の確認
ifb CHKIMG("Confirm.bmp") //生産完了直後なら
BTN(LEFT,CLICK,519,364,300) //OK // 左クリック
sleep(0.8)
BTN(LEFT,CLICK,686,182,300) //工場ウィンド開ける
BTN(LEFT,CLICK,686,182,156)
sleep(0.8)
BTN(LEFT,CLICK,454,120,300) //TAKEOUT
sleep(0.8)
BTN(LEFT,CLICK,496,40,300) //工場ウィンド閉じる
sleep(0.8)
endif
ifb CHKIMG("attention.bmp") //生産失敗直後なら
BTN(LEFT,CLICK,519,364,300) //OK // 左クリック
sleep(0.8)
BTN(LEFT,CLICK,686,182,300) //工場ウィンド開ける
BTN(LEFT,CLICK,686,182,156)
sleep(0.8)
BTN(LEFT,CLICK,454,120,300) //TAKEOUT
sleep(0.8)
BTN(LEFT,CLICK,496,40,300) //工場ウィンド閉じる
sleep(0.8)
endif
//完全な待機状態の場合
//工場環境の確認
BTN(LEFT,CLICK,686,182,300) //工場ウィンド開ける
BTN(LEFT,CLICK,686,182,156)
sleep(0.8)
ifb CHKIMG("1_1.bmp") //工場に何か生産物があるか工場ウィンドの1/1表示で判定
BTN(LEFT,CLICK,439,116,300) //在庫がある場合TAKEOUT
sleep(0.8)
BTN(LEFT,CLICK,496,40,300) //工場ウィンド閉じる
sleep(0.8)
endif
BTN(LEFT,CLICK,496,40,300) //工場ウィンド閉じる
sleep(0.8)
//工場格納実行
BTN(LEFT,CLICK,499,619,300) //getoffコマンド入力実行
KBD(VK_OEM_2,CLICK,40)
KBD(VK_G,CLICK,31)
KBD(VK_E,CLICK,40)
KBD(VK_T,CLICK,40)
KBD(VK_O,CLICK,40)
KBD(VK_F,CLICK,40)
KBD(VK_F,CLICK,40)
KBD(VK_RETURN,CLICK,40)
sleep(0.8)
BTN(LEFT,CLICK,610,108,234) //工場ウィンド開ける
BTN(LEFT,CLICK,610,108,156)
sleep(0.8)
BTN(LEFT,DOWN,614,391,172) //マシン選択(ドラッグ)
BTN(LEFT,UP,333,181,300) //格納(ドロップ)
sleep(0.8)
BTN(LEFT,CLICK,395,116,300) //TAKEOUT
sleep(0.8)
BTN(LEFT,CLICK,496,44,300) //工場ウィンド閉じる
sleep(0.8)
Call ミディア搭乗ハンガー復帰.uws // ミディア呼ぶ