ローカルにRedでも「Neut」でも電気が流れる椅子

以前の記事「ローカルにRedで電気が流れる椅子」で紹介した方法では、Neutを検出できませんでした。この結果、Golemを沈めるというミスをしてしまいました(参照「Golemちんぼちゅ」)。

そこで、Neutも検知できるよう大幅な修正を加えました
UWSC用ソースコード: EVE_RedAlert.uws
(2009/09/26: 規約違反と判明したため、リンクを解除しました。参照記事)
(2009/08/13: 吹き出しの表示タイミングを見直しました)
(2009/08/12: 吹き出しの位置がずれる不具合を修正しました)
(2009/08/11: 初公開)

以前の記事では、意味不明すぎるとのツッコミも多く、今回はもう少し丁寧に紹介したいと思います。

まずUWSCをダウンロードします。

UWSCは、キーボードやマウスの動作を繰り返してくれるソフトです。また、プログラムすることで様々な作業をパソコンに繰り返しさせることができます。

UWSCのサイトから「ダウンロード」→「UWSC Free版 Ver4.5b  フリーソフト ダウンロード」で、uwsc45b.zip(2009/08/11時点) を入手します。適当な場所に解凍し、その中に、「EVE_RedAlert.uws」を保存します。

UWSC.exe を起動し、「読み込み」から「EVE_RedAlert.uws」を指定します。

UWSC_OpenFile

これで、UWSCの準備は完了です。

次にEVEの設定をします。

なお、「Window Mode」のみ対応です。「Fullscreen」は動作未確認です。

NeutにColorTagが表示されるように設定します。
Overview Settings を開き、「Appearance」タブ→「ColorTag」タブにて、「Pilot has neutral standing」にチェックを入れます。

EVE_Overview_Settings

EVE_ColorTag_Setting

次にLocal窓の設定です。
Member List を表示した状態にします。

最後に「EVE_RedAlert.uws」の先頭部分の値を修正します。

// 環境に合わせて修正が必要です。
const COLORTAG_X = 295; // ColorTagの左端座標(正確な数値が必須)
const LOCAL_Y_START = 220; // ローカル窓の上端Y座標(小さめでもok)
const LOCAL_Y_END = 720; // ローカル窓の下端Y座標(大きめでもok)

COLORTAG_X は、Local窓の ColorTag左辺の正確なX座標を入れます。なお、座標はEVEクライアントの左上を0とします。

LOCAL_Y_START と LOCAL_Y_END はLocal窓の Member List の上端と下端のY座標です。こちらは多少の誤差は影響しません。

座標のはかり方は、画像をキャプチャーして、ペイントで確認するのが楽です。

  1. EVEクライアントをアクティブにして、Alt + PrintScreenキーで、キャプチャー
  2. ペイントを起動して、貼り付け(Ctrl + V)
  3. ペイントの鉛筆を選んで、Local窓の赤アイコンの左端の座標を確認(画像参照)

RedAlertXPosition

準備が全て終わりました。

プログラムを実行してみます。
EVEクライアントをマウスで選択し(アクティブにし)、ALT + F1 キーを押します。

黄色い吹き出しが表示され、RedやBlue の数を正しく表示でれば確認完了です。

EVE_RedAlert

お気づきの点はぜひアドバイスください 🙂

次回、椅子に電流を流す方法です(ぇ

p.s. 大事な注意書き
・Local窓に入りきらない(スクロールが必要)場合、検知できません。
・Layout設定のカラー設定は黒または暗い色が推奨です。誤判定の原因となります。
・Layout設定のTRANSP.(透過率)は、無効(255)が推奨です。透過するほど誤判定の可能性が発生します。

3 Responses to “ローカルにRedでも「Neut」でも電気が流れる椅子”

  1. killerkhan より:

    初めまして。
    ちょっと思ったんですけど
    Localの数字を取得して10秒以内に人数が二人増えたら黄色でPopupして
    5人増えたら赤でPopupするとか・・・できますかね?
    Local spikeしたら電気が流れる椅子・・・出来るんならUWSC勉強したいです!

    不躾な質問後容赦ください

  2. Good speed より:

    > killerkhanさん

    「Localから数字を取得する」ですが、可能です。

    やり方は2通り考えられます。

    1.chkimg関数を使う
    全ての数字を画像にして、chkimg関数で、現在の値を取得する方法です。
    この場合、事前に用意する数字の画像が重要になります。きちんと輪郭を整えた画像を用意する必要があり、以外と難しいかもしれません。

    2.peekcolor関数を使う
    5カ所ほどのポイントを決めて、そのポイントが白色か黒色かを判定します。この組み合わせから、数字を予測します。0~9までの数字を全部見抜ける効率の良いポイントを見つけるのが重要です。

    楽さでは、(2)かなと思います。
    (1)の手法に慣れると、特定のキャラクタ名なども検知できるかもしれません。

    分かりにくい点などありましたら、なんでも聞いてください 🙂

  3. Good speed より:

    と言うわけで、作ってみました。
    参考になれば幸いです。

    [Local spikeしたら電気が流れる椅子]
    http://meslon.jp/eve/archives/430

Leave a Reply