2013-03-15 166 views
0

我使用的是AutoHotKey程序,我有一個監視某個像素和它的顏色的腳本,如果它改變了,它會做一些事情來使顏色迴歸。假設它正在查看像素100,100並且顏色爲0xFFFFFF,如果顏色改變爲0xFFFFFF以外的任何其他值,腳本將會觸擊數字5鍵並返回到0xFFFFFF。這完美的工作,現在我在這裏是幫助獲得一個腳本來監視兩個x,y位置和兩個單獨的顏色,並使用兩個不同的鍵來將所述顏色改回到所監視的顏色。該腳本主要用於玩Ragnarok Online或WoW等在線電腦遊戲。AHK像素監視器,有兩個xy的位置

這裏是監控ONE X,Y和一個彩色

#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注重太多的注意力,而更多地專注於攻擊玩家或怪物。

現在我需要一種方法來執行此操作兩次,AutoHotKey程序不允許重複某些行,因此您不能只在一個腳本中複製粘貼兩次,而且您可以使用此通過更改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的治療項目分配密鑰。我在主要網站和AutoHotKey的論壇上進行了搜索,但我還沒有看到有關此腳本的任何內容。

請幫忙,這個腳本可以幫助任何玩過類似於魔獸世界或仙境傳說Online的在線電腦遊戲的人。

回答

1

這個怎麼樣。我修改了第一個腳本,以便在我的環境中測試它。

您生成了很多發送指令,因爲您沒有定義PixelGetColor應存儲的變量,因此If語句始終爲false。在第一個If後,你也有回報,所以第二個If只在第一個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 
+0

我對這些腳本有問題,它似乎只監視第一個x,y,然後只使用第二個動作(發送,6)。我只改變了x,y和顏色代碼。滿足顏色時不使用6或5。 – user2173530 2013-03-15 12:44:45

1

您可以先試試。打開一個記事本(白色背景),並最小化所有其他應用程序(只是桌面)。移動記事本窗口,以便兩個或兩個之一的空白空間不在兩個鼠標位置之上。您可以用退出Ctrl + q,因爲您無法真正使用鼠標退出AHK。

根據情況,您將聽不到聲音嗶嗶聲,只有一個soundbeep(高或低)或兩個soundbeeps(高和低)。鼠標將指向像素所在的位置。

#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 
+0

是的,它工作正常,我聽不到任何聲音,一旦我改變了背景,它會發出聲音。 – user2173530 2013-03-15 15:39:03

+0

將顏色和XY座標更改爲「您的」設置時,鼠標是否指向正確的位置,並且當顏色與目標顏色不匹配時是否會聽到嗶嗶聲? – 2013-03-15 17:16:06

+0

是的,我想出了什麼是錯的,這是一個簡單的問題〜_〜,我把發送鍵放在錯誤的XY中。感謝您的幫助,我非常感謝,現在就在AutoHotKey論壇上分享。^_^ – user2173530 2013-03-15 19:34:47