はじめに
最近遊んでいる某MMORPGでは、フィールドマップでキャラクターを放置していると自動的にモンスターと戦闘をしてくれるため、夜寝る前にフィールドにキャラクターを置いて朝までフルオート狩りをさせておくという事が流行っている。PCを付けたまま寝ることになるので電気代は気になるが、それは気にならないものとする。
夜間に5時間以上狩り続けるので当然モンスターからのドロップアイテムは大量に手に入るが、バッグ(インベントリ)の最大容量を超えると取得できずに消滅してしまうという問題がある。朝起きたら赤色に染まったバッグを見て大慌てでアイテムを分解するというのが日課になっており、それを解決する方法はないか考えてスクリプトを作成してみたというのが今回の経緯である。
マクロを実行するソフトウェア
使用したのはWindows使いのマクロ屋さんなら誰もがご存知のUWSCというフリーソフトで、1時間に1回のペースでバッグの不要なドロップ装備を分解するという単純なマクロ処理を実現してみた。UWSCについての説明は省略するので、知らない場合は各自で調べて学習して頂きたい。ダウンロードについては以下のリンクを参照のこと。
スクリプトソースと動作環境
UWSCを使って実際に動作させるスクリプトは以下の通り。左に棒線が付いたスクリプト部分をコピーしてメモ帳等に貼り付け、名前を付けて保存で「◯◯◯.uws」という形式の拡張子を付けて保存するだけで良い。出来たスクリプトファイルをPC内の適当なフォルダに配置してもらえれば、自動分解スクリプトの準備は完了である。
// ----------------------------------
// 自動分解ちゃん ver1.05
// 2024.02.22
// ----------------------------------
// 何時間実行したいか?(例:10時間なら10)
DIM EXEC_HOURS = 10
DIM MSG_01 = "【自動分解ちゃん】<#CR><#CR>"
DIM MSG_02 = "メニューや会話は全て閉じてAUTO戦闘をONにして下さい。"
DIM MSG_03 = "<#CR>自動分解を開始しても良いですか?"
SELECT MSGBOX(MSG_01 + MSG_02 + MSG_03, BTN_YES OR BTN_NO)CASE BTN_YES
FOR I = 1 TO EXEC_HOURS STEP 1
ACW(GETID("TOSM","UnityWndClass"),1,1,1341,840,500)
// 鍵ゲット・クエスト達成表示対策
FOR J = 1 TO 3 STEP 1
BTN(LEFT,CLICK,650,380,1000)
BTN(LEFT,CLICK,650,550,1000)
NEXT
// アイテム欄から分解を実行
BTN(LEFT,CLICK,940,85,1000)
BTN(LEFT,CLICK,1087,747,1000)
BTN(LEFT,CLICK,1165,742,1000)
BTN(LEFT,CLICK,667,712,1000)
BTN(LEFT,CLICK,535,734,1000)
BTN(LEFT,CLICK,777,617,1000)
BTN(LEFT,CLICK,715,782,5000)
BTN(LEFT,CLICK,1294,65,1000)
// 1時間待機する
SLEEP(3600)
NEXT
CASE BTN_NO
SELEND
※動作確認環境
- Windows11PC
- 解像度 1920×1080
- ゲームの画面比率 16:10
- UWSC ver5.3.0.2
開始する前にゲーム内でしておくこと
使用する前に行っておくゲームクライアント上での設定として、事前に分解メニューを開いて一括選択画面を下記のように設定し、一度分解を実行して状態を保存しておくという操作が必要になる。レア度の低い装備を一括適用できるよう指定しておかないと、分解できずにアイテムが貯まっていく一方なので要注意である。
また、ゲームクライアントの画面比率を16:10で実行する事を想定しているため、オプションメニューの画面比率が16:10以外になっている場合は、必ず16:10に変更する必要がある。この設定を忘れると、分解操作を行うボタンの表示座標がずれるために自動操作が正常に行われない可能性がある。
マクロの実行
以上の設定を行った上で、UWSCを起動して先程作成したスクリプトファイルの読み込みを行う。正常にスクリプトファイルが読み込まれて再生ボタンが活性化したことを確認したら、再生ボタンを押すことで以下の内容のマウス操作が自動実行される。
- ゲームウィンドウを認識して表示位置とウィンドウサイズを整える
- 鍵やチケット入手のダイアログが出ていた場合に備え、数回クリックする
- アイテム欄を開き、不要な装備を一括選択して分解する
- 1時間待機する
一連の操作が最後まで終わったら、スクリプトの冒頭で指定された回数だけ再度同じ操作をやり直すという極めて単純な作りである。戦闘中にメニュー画面等を操作することになるが、裏ではキャラクターのAUTO戦闘は途切れずに続くというゲーム仕様のため問題はない。
なお、スクリプトが動いている状態でもゲームを手動操作をすることも可能だが、ちょうど1時間おきの自動操作のタイミングとかぶると想定外の場所をクリックしてしまう等の事故が起こる可能性がある。そのため、もしゲームを手動操作したい場合はスクリプトを停止させるてから行うことをお勧めする。
基本的にはキャラクターをフィールドの湧きポイントに放置して、AUTO戦闘を開始させた状態で実行を開始するという使い方を想定している。その際、何らかのウィンドウを開いたままにしていると失敗する事があるので、何のメニューも開いた状態にしてはならない。もし途中で自動処理をやめたくなったら、停止ボタンを押せば良い。
さいごに
長々と説明してきたが、このエントリーで言っていることの意味が分からなかったり不安を感じたりするのであれば、このサイトはさっさと閉じて回れ右をすることをお勧めする。当然このエントリーで紹介したスクリプトを実施して何らかの被害が生じても、作者は損害賠償責任を一切負わないので自己責任でどうぞ。
それでは皆様よい救済者ライフを。