Frage zu User32

01/31/2009 18:54 Sputimhoch#1
hi zusammen

ich habe einen bot geschrieben, de rim Hintergrund läuft, alles geht bis auf das Idenden der Dinge. Das idend kit anklicken kann er, aber die Fähigkeit zu Idenden bleibt dann am richtigen Mauszeiger haften, und der bewegt sich ja nicht.

Jetzt habe ich gehört, dies müsse man mit user32.dll machen.
Könnte mir jemand erkären wie das geht?(bitte in kleinen Schritten)
Oder falls es eine Alternative gibt diese zu erklären

Danke im vorraus
:handsdown::handsdown:
01/31/2009 19:08 plachta1234#2
Es gibt die Möglichkeit das Guild Wars Fenster für diese Zeit in den Vordergrund zu nehmen also mit
PHP Code:
WinSetState("Guild Wars","",@SW_SHOW)
WinActivate("Guild Wars")
_ident()
WinSetState("Guild Wars","",@SW_HIDE
Sicher bin ich mir aber nicht.
01/31/2009 19:11 Sputimhoch#3
mir wäre es lieber, es bliebe die ganze Zeit versteckt, sonst behindert es mich/ich es.
aber trotzdem danke
01/31/2009 19:37 Dunham#4
nimm einfach die ident funktion aus der tt6..
01/31/2009 21:37 Specter cason#5
jop nimm die funktion der tt6 des läuft perfekt kann darüber nicht klagen
01/31/2009 21:53 kknb#6
Code:
Func _MAKELONG($LOWORD, $HIWORD)
	Return BitOR($HIWORD * 65536, BitAND($LOWORD, 65535))
EndFunc


Func _MOUSECLICK($HWND, $BUTTON, $X, $Y, $TIMES = 1, $DELAY = 15)
	If $HWND = 0 Then
		SetError(-1)
		Return
	EndIf
	Local $IX
	Local $LPARAM = _MAKELONG($X, $Y)
	Local $USER32 = DllOpen("user32.dll")
	$BUTTON = StringLower($BUTTON)
	If $BUTTON = "left" Then
		For $IX = 1 To $TIMES
			DllCall($USER32, "int", "PostMessage", "hwnd", $HWND, "int", 512, "int", 0, "long", $LPARAM)
			DllCall($USER32, "int", "PostMessage", "hwnd", $HWND, "int", 513, "int", 1, "long", $LPARAM)
			DllCall($USER32, "int", "PostMessage", "hwnd", $HWND, "int", 514, "int", 0, "long", $LPARAM)
			If $IX < $TIMES Then Sleep($DELAY)
		Next
	ElseIf $BUTTON = "right" Then
		For $IX = 1 To $TIMES
			DllCall($USER32, "int", "PostMessage", "hwnd", $HWND, "int", 512, "int", 0, "long", $LPARAM)
			DllCall($USER32, "int", "PostMessage", "hwnd", $HWND, "int", 516, "int", 2, "long", $LPARAM)
			DllCall($USER32, "int", "PostMessage", "hwnd", $HWND, "int", 517, "int", 0, "long", $LPARAM)
			If $IX < $TIMES Then Sleep($DELAY)
		Next
	Else
		SetError(-2)
		If $USER32 <> -1 Then DllClose($USER32)
		Return
	EndIf
	If $USER32 <> -1 Then DllClose($USER32)
EndFunc
02/01/2009 10:37 Sputimhoch#7
thx an alle die bereits geantwortet haben,

zu der tt6 idend funktion:
IdentItems($StartRow, $EndRow, $IdentCol, $IdentRow)
da muss ich doch $Startrow, etc definieren oder?
also irgendwie so:
Code:
$startrow = For 30 to 240 Step 80
und dies mit allen durchführen oder?
Bin noch nicht lange dabei mit autoit zu arbeiten sry. Deshalb bitte ich euch meine Unkenntnisse zu entschuldigen
:handsdown::handsdown:

und zu kknb:
da verstehe ich eh nur Bahnhof :D
02/01/2009 11:39 Specter cason#8
du musst einfach bei der tt6 ini erstma die koordinaten deines invenarts festlegen.

dann im skript einfach schreiben : IdentItems(0(erste Rheie), 3 (vierte Reihe), 0 (Erste Spalte Idend kit), 4 (vierte Reihe ident Kit)

also nochmal genau:
die erste 0 Steht für die erste Reihe also er fängt in der esten reihe an alle items zu idendifizieren und geht bis 3 (3 steht für reihe 4 da 0 eins is) also idendifizier er alle items aus dem rucksack. mit den letzten 2 ziffern musste angeben wo dein idendifizierungs kit liegt also steht hier 0 für Spalte eins und die 4 für die 5. reihe also die gürteltasche ganz vorne.
darfst aber nicht vergessen die koordinaten in der ini der tt6 anzugeben