0

私は AutoHotKey プログラムを使用しており、特定のピクセルとその色を監視するスクリプトがあり、それが変更された場合、色を元に戻すために何かを行います。ピクセル 100、100 を見ていて、色が 0xFFFFFF であるとしましょう。色が 0xFFFFFF 以外に変わった場合、スクリプトは数字の 5 キーを押して 0xFFFFFF に戻ります。これは完全に機能します。今私がここにいるのは、1 つのスクリプトを取得して 2 つの x、y 位置と 2 つの個別の色を監視し、2 つの異なるキーを使用してその色を監視されている色に戻すためです。このスクリプトは、主に Ragnarok Online や WoW などのオンライン コンピューター ゲームをプレイするために使用されます。

これは、1つのx、y、および1つの色を監視するためのコードです

#Persistent 
CoordMode, Pixel, Relative 

X := 100
Y := 100
SetColor := 0xC48559

SetTimer, WatchLife, 100
Return

WatchLife: 
Pixelgetcolor, Color, %X%, %Y%
if (Color = SetColor)
    Return 
    Else 
  Send, 5
  Sleep 20
Return

このスクリプトは HP バーを監視し、特定の領域より下になると、数字の 5 キーを自動的に押して HP ポーションを使用して HP バーを元に戻します。これにより、ゲーマーは自分の HP にあまり注意を払う必要がなくなり、プレイヤーやモンスターを攻撃することに集中する必要がなくなります。

これを 2 回実行する 1 つのスクリプトを作成する方法が必要です。AutoHotKey プログラムでは一部の行を繰り返すことができないため、これを 1 つのスクリプトに 2 回コピーして貼り付けることはできません。変更することで、このスクリプトを 2 回使用できます。 x、y およびカラー コードですが、一度に複数のスクリプトを実行すると他のスクリプトが混乱する可能性があります。

このコードを試しました。

#Persistent 
CoordMode, Pixel, Relative 

X := 100
Y := 100
SetColor := 0xC48559

X := 100
Y := 80
SetColor := 0xF0DED7

SetTimer, WatchLife, 100
Return

WatchLife: 
Pixelgetcolor, 0xC48559, 100, 100
if (Color = SetColor)
   Return 
Else 
   Send, 5
   Sleep 20
Pixelgetcolor, 0xF0DED7, 100, 80
if (Color = SetColor)
   Return 
Else 
   Send, 6
   Sleep 20
Return

これはうまくいくと思いますが、ピクセルの色がそこにある場合、HP と MP の両方の回復アイテムのキーをスパムするだけです。メインの Web サイトと AutoHotKey のフォーラムを検索しましたが、このスクリプトがあることについては何も見ていません。

助けてください。このスクリプトは、WoW や Ragnarok Online に似たオンライン コンピュータ ゲームをプレイするすべての人に役立ちます。

4

2 に答える 2

1

これはどう。最初のスクリプトを変更して、自分の環境でテストできるようにしました。

PixelGetColor を格納する変数を定義しなかったため、多数の送信命令が生成されたため、If ステートメントは常に false でした。また、最初の If の後にリターンがあったため、最初の If が false の場合にのみ 2 番目の If が実行されました (これはスクリプトの場合でしたが、想定されていませんでした)。

Persistent 
CoordMode, Pixel, Relative 

X1 := 200
Y1 := 200
SetColor1 := 0x999999

X2 := 200
Y2 := 1000
SetColor2 := 0xFFFFFF

SetTimer, WatchLife, 500
Return

WatchLife:
    Pixelgetcolor, Color, %X1%, %Y1%
    if (Color <> SetColor1)
        SoundBeep, 500, 200
    Pixelgetcolor, Color, %X2%, %Y2%
    if (Color <> SetColor2)
        SoundBeep, 1000, 200
Return

キーストロークが送信された後に待機する場合は、次のように If ステートメント内に待機を含める必要があります。

Persistent 
CoordMode, Pixel, Relative 

X1 := 100
Y1 := 100
SetColor1 := 0xC48559

X2 := 100
Y2 := 80
SetColor2 := 0xF0DED7

SetTimer, WatchLife, 500
Return

WatchLife:
    Pixelgetcolor, Color, %X1%, %Y1%
    if (Color <> SetColor1)
    {
        Send, 5
        Sleep, 20
    }
    Pixelgetcolor, Color, %X2%, %Y2%
    if (Color <> SetColor2)
    {
        Send, 6
        Sleep, 20
    }
Return
于 2013-03-15T11:58:36.897 に答える
1

最初にこれを試していただけますか。メモ帳 (白い背景) を開き、他のすべてのアプリケーション (デスクトップのみ) を最小化します。メモ帳ウィンドウを移動して、空白が 2 つのマウス位置のいずれかの上、または両方の上、または 2 つのうちの 1 つの上になるようにします。マウスを使用して AHK を終了することは実際にはできないため、 Ctrl+で終了できます。q

状況に応じて、ビープ音がまったく聞こえないか、ビープ音が 1 回だけ (高音または低音)、または 2 回 (高音と低音) 聞こえます。マウスは、ピクセルが配置されている場所をポイントします。

#Persistent 
CoordMode, Pixel, Screen
CoordMode, Mouse, Screen 

X1 := 100
Y1 := 100
SetColor1 := 0xFFFFFF

X2 := 600
Y2 := 100
SetColor2 := 0xFFFFFF

SetTimer, WatchLife, 6000
Return

WatchLife:
    MouseMove, %X1%, %Y1%
    Pixelgetcolor, Color, %X1%, %Y1%
    TrayTip,, %Color%
    if (Color <> SetColor1)
    {
        SoundBeep, 500, 200
    }
    Sleep, 1000
    MouseMove, %X2%, %Y2%
    Pixelgetcolor, Color, %X2%, %Y2%
    TrayTip,, %Color%
    if (Color <> SetColor2)
    {
        SoundBeep, 1000, 200
    }
Return


^q::
ExitApp
于 2013-03-15T14:14:24.850 に答える