Mesmer Interrupt-Routine

01/06/2009 09:17 MRagnos#1
Soo,
ich hab mir gedacht, erleichterst du dir dieses stressige auf den Gegnerbalkenstarren und schreibst ne Routine dafür.
Hat an sich auch schon geklappt, nur musste ich die .au3 nach jedem rupt neustarten, was ja nich sinn der sache ist.
Nun Ruptet sie allerdings garnichtmehr ^^
Code:
#include <Misc.au3>

$vDll = DllOpen("user32.dll")

HotKeySet ("{F9}", "Start")

$var1 = 0
$var2 = 1
;--------------------------------------------------------------------------------------------------------------------------------------------------------------
If Not WinActivate ("Guild Wars") Then
		WinActivate("Guild Wars")
EndIf

While $var2 = 1
	If _Ispressed ("78") Then
		Scan()
	Else
		Do
			Sleep (Random (10, 20))
		Until _IsPressed("78")
			Scan()
	EndIf
WEnd
;--------------------------------------------------------------------------------------------------------------------------------------------------------------
Func Start()
	$var1 = 1
EndFunc

func Scan()
	Do
		$balken = PixelGetColor (954, 110)
	Until $balken = 0x2E2E2E
	$balken = PixelGetColor (954, 110)
	If $balken = 0x2E2E2E Then
		Rupt()
	EndIf
EndFunc

Func rupt()
	Send ("1")
EndFunc
Sinn der sache war, es einmal mit F9 zu starten und dann zwischendurch normal weiterzuspielen zu können, bis wieder ein "Opfer" vorbeiläuft. Dann soll
per F9/F10 die Routine neugestartet werden, dazwischen im Ruhezustand aber noch da.

Jemand eine Idee?

Edit: Scheint daran zu liegen, das der fertigkeitscastbalken halb durchsichtig ist und so immer verschiedene pixelfarben rauskommen.
Edit2: Jup lag dran...Jetzt ist er aber ein wenig langsam...für nen bot mein ich ^^ wie könnte man ihn schneller machen? weiss jemand was?
01/06/2009 11:45 Read Me#2
Code:
HotKeySet("{F9}", "Script_pausieren")
Func Script_pausieren()
    $Paused = NOT $Paused
    While $Paused
        sleep(100)
        ToolTip('Script pausiert..."',0,0)
    WEnd
    ToolTip("")
EndFunc
Call("Script_pausieren")
While 1
     $balken=pixelgetcolor(x,y)
     If $balken=0x2E2E2E then
     rupt()
     EndIf
WEnd
Das Ding startet und geht in den Pausemodus.
Wenn du das nächste mal F9 drückst, dann wird
ein dauerhafter Balkencheck aktiviert, bis man das Scirpt
per F9 wieder in den Pausemodus versetzt.
Falls die Farbe an der Stelle stimmt, callt er rupt() -musste noch hinzufügen.
01/06/2009 12:04 MRagnos#3
Danke, so kann mans wohl auch machen, ist aber nicht so in meinem sinne, weil ich Quasi eine "Falle" legen wollte für den nächsten skill des gegners.
Ist jetzt aber gelöst :)
01/06/2009 12:47 Read Me#4
Du wolltest doch, dass wenn der Balken bei 5% voll ist oder so der Rupt kommt, oder? Das kannse mit dem Script machen.
Ansonsten gehts auch, das NUR der eine nächste Spell geruptet wird:
Code:
HotKeySet("{F9}", "KillnextSkill")
Func KillnextSkill()
	While 1
		$balken=pixelgetcolor(100,200)
		If $balken=0x2E2E2E then
			Send("{1}")
			ExitLoop
		EndIf
	WEnd
EndFunc

While 1
WEnd
01/06/2009 14:23 Illuminatus#5
Quote:
Originally Posted by Weruda View Post
Code:
HotKeySet("{F9}", "KillnextSkill")
Func KillnextSkill()
	While 1
		$balken=pixelgetcolor(100,200)
		If $balken=0x2E2E2E then
			Send("{1}")
			ExitLoop
		EndIf
	WEnd
EndFunc

While 1
WEnd
PixelGetColor() returned den dezimalwert, oder?
Also:
Code:
HotKeySet("{F9}", "KillnextSkill")
Func KillnextSkill()
	While Hex(pixelgetcolor(100,200))<>0x2E2E2E
	WEnd
Send("{1}")
EndFunc
While 1
WEnd
Is noch bisschen kürzer ;-)
01/06/2009 14:56 MRagnos#6
Ja genau das ist es ^^
Dankeschön, muss mich wohl nochmal mit den ganzen While Möglichkeiten beschäftigen
01/06/2009 15:27 Read Me#7
Quote:
Originally Posted by Illuminatus View Post
PixelGetColor() returned den dezimalwert, oder?
Also:
Code:
HotKeySet("{F9}", "KillnextSkill")
Func KillnextSkill()
	While Hex(pixelgetcolor(100,200))<>0x2E2E2E
	WEnd
Send("{1}")
EndFunc
While 1
WEnd
Is noch bisschen kürzer ;-)
Ja, der gibt Dezimalwerte zurück.
Im Endeffekt ist die Funktionsweise fast die selbe^^
01/06/2009 19:47 ylfi1337#8
Na ja so sinnig finde ich das nicht zumal Du nicht weiß was der gegner castet .. und Kraftblock auf nen Siegel der Heilung rausballern ist sinnfrei .. aber sei jedem selbst überlassen ...
01/06/2009 20:31 MRagnos#9
Naja, mit dem richtigen build ist das durchaus Sinnvoll imo ;)
Komme grad nich ran, aber "1", also der Interrupt, ist Übernatürliche Ablenkung.

Es ist halt mehr für die Massenarenen wie die Jadesteinbruche gedacht als für die 4er Arenen.
01/06/2009 22:22 Illuminatus#10
Wenn du schon mit Pixelgetcolor() arbeitest kannste auch nen check auf den skill machen! Dann isses durchaus sinnvoll!
01/08/2009 00:08 Hilthorien#11
Tipp : DIe Textur von einer Fertigkeit die nicht interupptet wurde hat ne andere Textur
01/08/2009 08:44 Read Me#12
Jo, wenn man einen bestimmten SKill haben will, lässt man vorher nach dessen Chacksum scannen und gg, Code is fast der selbe.

Nächstes WdH killen:
Code:
HotKeySet("{F9}", "KillWoHl")
Func KillnextSkill()
	While Hex(pixelgetchecksum(100,200,300,400))<>0x2E2E2E ;Skillchecksum-Werte abändern!
	WEnd
EndFunc
Send("{1}")
While 1
WEnd
Nächsten Skill(mit PB oder PD)

Code:
HotKeySet("{F9}", "KillnextSkill")
Func KillnextSkill()
	While Hex(pixelgetcolor(100,200))<>0x2E2E2E ;Balken-Werte abändern!
	WEnd
EndFunc
Send("{1}")
While 1
WEnd
01/08/2009 16:38 MRagnos#13
Hmm...also da komm ich nichmehr mit ^^
wieso immer "<>" ?

Naja habs einfach mal probiert aber anscheinend stimmt die checksum nicht, denn er macht einfach nichts.

Die checksum soll doch für das kleine bildchen vom skill neben dem "castbalken" sein oder? Und wie bekomme ich die richtig raus? habs einfach mal per
Code:
HotKeySet ( "{F9}", "blub")

Func blub()
$v = Hex(pixelchecksum(711, 97, 742, 130))
MsgBox ( 0, "blub", Hex ($v))
EndFunc

While 1
WEnd
machen lassen und ein 0c vor die neue adresse gesetzt (kam übrigens 0000C890 raus, was irgendwie komisch klingt ^^)

Mehr Fragen hab ich erstmal nicht ;)
01/08/2009 18:50 Illuminatus#14
Quote:
Originally Posted by MRagnos View Post
Hmm...also da komm ich nichmehr mit ^^
wieso immer "<>" ?
Juhu, endlich kann ich mal den Smilie benutzen: :rtfm: xD [Only registered and activated users can see links. Click Here To Register...]
Quote:
Originally Posted by MRagnos View Post
Naja habs einfach mal probiert aber anscheinend stimmt die checksum nicht, denn er macht einfach nichts.

Die checksum soll doch für das kleine bildchen vom skill neben dem "castbalken" sein oder? Und wie bekomme ich die richtig raus? habs einfach mal per
Code:
HotKeySet ( "{F9}", "blub")

Func blub()
$v = Hex(pixelchecksum(711, 97, 742, 130))
MsgBox ( 0, "blub", Hex ($v))
EndFunc

While 1
WEnd
machen lassen und ein 0c vor die neue adresse gesetzt (kam übrigens 0000C890 raus, was irgendwie komisch klingt ^^)

Mehr Fragen hab ich erstmal nicht ;)
Das is keine "Adresse" sondern einfach nur eine Zahl im Hexadezimalsystem :P
Wenn du dir sicher bist das deine koordinaten stimmen, bekommste auch den richtigen wert, den du dann in deinen Bot einbauen kannst...

Mal ne andere Frage: Hab die Funktion nicht getestet, kann man damit 3/4 skills interuppten!? wäre ziemlich übel...
01/09/2009 04:56 densivilla#15
Quote:
Originally Posted by Illuminatus View Post
Mal ne andere Frage: Hab die Funktion nicht getestet, kann man damit 3/4 skills interuppten!? wäre ziemlich übel...
Kommt auf deinen Ping an. Bei über 200 wirds knapp.