【ドラクエ10】快適4垢操作方法を開発するコーナー【みちくさBOT】

WiiとかWiiUとか使ってる方、ごめんなさい対象外です。PCで4垢の人が対象です。

 

PCでの4垢のみなさんこんにちは。4垢の私です。
4垢操作、みなさんどうしてますか。
4垢操作には以下の4パターンが考えられると思います。

  • パッドを4つ繋ぐ
  • マウスでカチカチ切り替えながら1つのパッドでプレイ。
  • 1つのパッドの操作を同期させてプレイ(まともに動けません)。
  • ヤフオクのBOT使ってまーす(-д☆)キラッ

四番目の人は死んでくださいね。

さて私は基本マウスでカチカチ派です。

 

20150724203609

WQHDモニタに1280 720設定の画面を4つ並べて、マウスでカチカチしてます。

パッド持ち替えはわりと本気でダルいのが最大の理由なのと、あと別モニタでブラウザ開いてネットサーフィン(死語)してたりすることが多いので、マウス握ってる方が楽なんですね。
でも3.0になってからこのゲームってアクティブウインドウ切り替えと操作を同時に行うとフリーズすることがあるという質の高いゲームと化したので、あまりマウスでカチカチしたくないのも正直なところ。特にピラミッドやる時とかはゲーム画面しか見ない、操作忙しい、そこでバグフリーズされたらたまったもんじゃない。

マウスを使わず、1つのコントローラで全部操作したい

というわけで、それを可能なツールを開発します。5分クッキングでいきます。5分で作れるレベルです。
小学生の自由研究にもオススメですね。小学生レベルなら、パソコンの大先生として人気者になれると思います。

 

 

まずパッドで空いてるボタンないかなって確認します。

 

20150726071254

左スティックの押し込みが空いてますね。
ここに、押すたびに操作ウインドウを順次切り替える機能をねじ込もうと思います。
ただこのゲーム、複垢起動時、画面の割り当てがよくわからないことになってて無駄に扱いにくいです。

サクサクっとやる方法としては、「各ウインドウをクリックする」という、人と同じ操作を、座標を設定して順繰りに切り替えさせるのが確実ですね。1号→2号→3号→4号→1号…と。

とりあえずパッド操作に色々割り当てられるJoyToKeyを用意します。

JoyToKey 公式ホームページ – 最新版をダウンロード
http://joytokey.net/ja/

 

20150726084426

JoyToKeyには順繰り切り替え機能がありますが、可能なのはマウスクリックとかキーボードのキーとかまで。
「指定した座標のクリック」ってのは設定できないみたいです。というわけでこの機能はNG。

 

20150726084509

こっちの設定を使いましょう。
左スティック押し込みを左Alt、右Altの同時押しに割り当てました。
左Altと右Altの同時押しなんて日常では発生しないので、誤爆することはまずないはずです。
このキー入力を拾って、マウスクリックへ置き換えてみましょう。

 

UWSC
http://www.uwsc.info/

有名なマクロツール。UWSC。

とりあえず起動。

20150726071035

ぶっちゃけ私これ使ったことないんで、命令形調べないと書けません。
記録ボタンクリックして、テキトーにドラクエ内の画面を位置を順番にクリック。あと左Altと右Altもポチポチっと。

以上の操作記録を保存し、ファイル内を覗いてみます。

BTN(LEFT,CLICK,1690,1002,10)
BTN(LEFT,CLICK,842,1080,31)
BTN(LEFT,CLICK,720,151,31)
BTN(LEFT,CLICK,2151,338,16)

マウスクリックはこれみたいですね。
10とか31とかはクリックする時間ってところでしょうか。

 

KBD(VK_RALT,CLICK,40)
KBD(VK_ALT,CLICK,40)

左Altと右Altはこれみたいです。
偶然、同じ時間キー入力してたみたいですね。

 

命令がわかったので、今度は設計を考えましょう。
動作的にはこれがシンプルでしょう。1秒で考えました。

なんかテキトーに内部変数(モード)を用意してモード1で初期化

左Alt+右Altが入手された際
モード1の場合 座標1をクリック、モードを2へ変更
モード2の場合 座標2をクリック、モードを3へ変更
モード3の場合 座標3をクリック、モードを4へ変更
モード4の場合 座標4をクリック、モードを1へ変更

何の工夫もない感じですね。
ではこれをソースコードに起こしましょう。

 

Procedure changeWindow()
    Select Mode
    Case 1
        BTN(LEFT,CLICK,1690,1002,10)
        Mode = 2
    Case 2
        BTN(LEFT,CLICK,842,1080,31)
        Mode = 3
    Case 3
        BTN(LEFT,CLICK,720,151,31)
        Mode = 4
    Case 4
        BTN(LEFT,CLICK,2151,338,16)
        Mode = 1
    Default
        mode = 1
    SelEnd
FEnd

ウインドウ切り替え関数完成。うっわ、すっげー酷い内容。マジでそのままモード1とかだぜ。
マウスクリックの部分は先ほど記録して確認したものをそのままコピペです。手作り感溢れるコードですね。
あとはこの関数を、左Altと右Altが同時に押された場合のみ呼び出せばOKです。

 

WHILE 1
    If GETKEYSTATE(VK_ALT) AND GETKEYSTATE(VK_RALT) Then
        changeWindow()
    Endif
WEnd

メイン処理完成。
もしかしたらクリックを検知する関数とか用意されてるかもなんですけど、UWSCのことを私は知らず、ググらないとわかりません。5分クッキングだし、ググる時間がダルいなってことでストレートに書き起こしました。

ひたすら無限ループし続けてキーボード入力状態を取得し続け。
左Altと右Altを同時に検知したら順繰り関数を呼び出します。

これらを合体させて一つにします。

Option Explicit

Public Mode = 1

WHILE 1
    If GETKEYSTATE(VK_ALT) AND GETKEYSTATE(VK_RALT) Then
        changeWindow()
    Endif
WEnd

Procedure changeWindow()
    Select Mode
    Case 1
        BTN(LEFT,CLICK,1690,1002,10)
        Mode = 2
    Case 2
        BTN(LEFT,CLICK,842,1080,31)
        Mode = 3
    Case 3
        BTN(LEFT,CLICK,720,151,31)
        Mode = 4
    Case 4
        BTN(LEFT,CLICK,2151,338,16)
        Mode = 1
    Default
        mode = 1
    SelEnd
FEnd

ベータ版です。

 

20150726100612

テキトーに名付けて保存。
aaaaa.UWS。本当にテキトーですね。
これをUWSCに読み込ませて実行してみましょう。

 

20150726100725

STOPを押して停止させるか、何かが起こってぶっ壊れない限り、永久に回り続けます。
安全モードとかは一切ありません。

よし、さっそく左スティックを押し込もう!!

・・・。

ええ、まあ予想通りなんですけど、ウインドウが音速で切り替わり続けて、一回押したつもりでも何周かして元のウインドウのままだったりで使い物になりませんね。スロットか何かですかねこれ。
人間が左スティックを一回押したところで、0.01秒単位で見れば、押しっぱなしの時間ってものが存在します。その僅かな時間、何回もウインドウ切り替え処理が発生しているわけですね。これでは使い物になりません。ロックしなければ。

「1回ごとに0.1秒スリープさせる」って解決策が思い浮かびました。
でも「連打して切り替えるのも0.1秒経たないとダメ」で、使い勝手悪そうですね。
それなら「ボタンを離すまでスリープさせる」って感じにしましょう。これなら問題点、特になさそう!

というわけで新しくスリープ関数を作ります。

 

Procedure iroiroSleep()
    WHILE 1
    Sleep(0.01)
    If !GETKEYSTATE(VK_ALT) AND !GETKEYSTATE(VK_RALT) Then
        Break
    Endif
    WEnd
FEnd

名前が思い浮かばなかったので色々スリープ。
UWSCのスリープの最小単位0.01秒スリープ実行を無限に繰り返します。左Altと右Altが押されていないのを検知したらループを離脱。仕組みは本当に単純ですね。IF文の条件も、先ほど作った奴の逆(!をつける)という、自分で自分のソースをコピペする短縮化で5分クッキングに貢献です。

こういう無限ループを何も考えずに使いまくると、ヤヴァイことが起こった時、ヤヴァイことが無限に繰り返されるので、何も考えずとりあえず無限ループさせてブレイクとかって本気でNGです。でもまあ5分クッキングのスクリプトなら問題ないでしょう。

 

でまあ、これで完成です。
左スティックを押しこむたびに、ウインドウが1号→2号→3号→4号→1号…と切り替わります。
アクティブウインドウ情報とかの取得はしていないため、1号操作中に手作業でマウス操作して3号操作し、そこで左スティックをクリックした場合、4号ではなく2号の画面が選択されます。完全に順繰りです。

 

改めて、完成物のソースコードをまるごと以下へ掲載。
コピーしてメモ帳で保存して.UWSって拡張子つけてやればすぐ動きます。
クリックする座標は私の環境のものなので、人によって調整が必要です。あとクリック時間とかもそのままなので、ウインドウによって10ミリ秒クリックだとか31ミリ秒クリックだとかバラバラです。

この程度のスクリプトに何らかの権利を主張するつもりはありませんけど、野ざらしにするのもIT系技術者の一人として意識レベルに問題あるだろって思っちゃうので、とりあえずGPLライセンスと言っておきます。
改良も改造も再配布も自由だけど、これを改良したり改造したり組み込んだりしたものはGPLライセンスでなければいけないっていうアレです。

Option Explicit

Public Mode = 1

WHILE 1
    If GETKEYSTATE(VK_ALT) AND GETKEYSTATE(VK_RALT) Then
        changeWindow()
        iroiroSleep()
    Endif
WEnd

Procedure changeWindow()
    Select Mode
    Case 1
        BTN(LEFT,CLICK,1690,1002,10)
        Mode = 2
    Case 2
        BTN(LEFT,CLICK,842,1080,31)
        Mode = 3
    Case 3
        BTN(LEFT,CLICK,720,151,31)
        Mode = 4
    Case 4
        BTN(LEFT,CLICK,2151,338,16)
        Mode = 1
    Default
        mode = 1
    SelEnd
FEnd

Procedure iroiroSleep()
    WHILE 1
    Sleep(0.01)
    If !GETKEYSTATE(VK_ALT) AND !GETKEYSTATE(VK_RALT) Then
        Break
    Endif
    WEnd
FEnd

 

 

ちなみにこれ、マウスでカチカチクリックするのを自動化しているだけとは言え、厳密にいえばBOTとかマクロとかと同じです。っていうか普通にマクロです。120%マクロです。
ただのマウス操作簡略化でしかないため、これを「ダメーっ!」って人はそういないと思いますけど、マクロです。プレイヤーが画面の前にいないといけなく、連射コントローラー使ってるのと同レベルなので、これが処罰されることはまずないと思いますけど、厳密に言えばマクロです。ご利用は自己責任で。

 

あ、私は使わないと思います。
なんだかんだで4垢操作って順繰りに操作することないんですもん。1号と2号、3号と1号、4号と1号で取引を順番にするとか、1→2→3→4のループじゃ面倒ですもん。マウスでいいわこれ。自分で作っといてなんだけど、この程度のマクロって逆に不便だわ。
キネクトとかで顔の向き取得して、操作したいウインドウを見ながらスティック押し込むとそれが選択されるとかでないと、使いにくいわこれ。いつか気が向いたら作ります。

コメント コメントは承認制です。

  1. 匿名 より:

    私もなるせさんの真似をして、1垢でみちくさカジノしてコイン稼ぎ、レアボスコインを量産して4垢でみちくさ迷宮を延々と回しています。
    朝一と会社帰宅後だけ成果をチェックしていますが毎日500万Gってとこですね。

    これ以上の金策は今の所ないですね。
     
    【管理人からの返事】
    ええ、BOTをしてたらそれくらいの稼ぎになるんだと思います。
    私はBOTしてないので、それだけの稼ぎは出せませんが。

  2. ちび より:

    PC4垢のあたし、とりあえず読んでみた。
    うん。よくわからない(。・ω・。)
    コントローラー4つで頑張りまーす♪

タイトルとURLをコピーしました