Ident Kit verschieben

02/27/2009 21:57 Kaneoxi#1
Ich möchte mit der tt6-Routine _MouseClick das Ident Kit in der vorletzten Zeile von der Position 1 der Reihe auf die 2. Position verschieben. Dardurch soll die mögliche Zalh der Idents von 100 auf 200 erhöht werden.

Wie sollte eine solche Funktion lauten? Gibt es da einen Vorschlag?
02/27/2009 22:03 Dunham#2
es is auch kein problem von 100 idents auf 500 idents zukommen indem man einfach einmal zb das erste ident nimm und danach das 21. ident kit... fertig :-) und das alles ohne zuverschieben ^^
02/27/2009 23:17 Valvepro#3
kannst ja meine funktion nehmen
[Only registered and activated users can see links. Click Here To Register...]

Nimmst meine .dll und benutzt folgende funktion:
PHP Code:
func LeftClickDrop($Hwnd,$x0,$y0,$x1,$y1)
    
$dll DllOpen("GuildWarsAddon.dll")
    if 
$dll = -1 then return $dll
    $result 
DllCall($dll"none""_LeftClickDrop@20","str",$Hwnd,"long",$x0,"long",$y0,"long",$x1,"long",$y1)
    
DllClose($dll)
EndFunc 
02/28/2009 00:48 Specter cason#4
du kannst es auch einfach so machn dass der bot nach jedem verkaufen en einfaches identkit kauft. des kit liegt dann immer im inventar oben links und somit geht dir die idents nie aus
02/28/2009 02:19 | Moep |#5
Vielleicht kannst du ja mit meiner Ident Func was anfangen:

- Auflösung: 1280 x 1024
- Inventartaschen ganz oben links und offen
- Identtools in die Gürteltasche 1-3 packen

Identet werden die ersten 20 items im Rucksack dabei wird nacheinander ein anders idettool genutzt.

Is zwar kein Background, aber dafür läuft es schon seit Ewigkeiten perfekt bei meinem Chestbot. :p

Code:
Func _IDENT()

	$IDENT_START_X = 21
	$IDENT_STOP_X = 257
	$IDENT_START_Y = 64
	$IDENT_STOP_Y = 294

	$TOOL_START_X = 21
	$TOOL_STOP_X = 162
	$TOOL_START_Y = 332
	$TOOL_STOP_y = 387

	$BREIT = 44
	$HOCH = 54
	$ABSTAND = 2
	$CORECT_Y = 0

	$TOOL_STRING_X = "21|69|117"
	$TOOL_STRING_SPLIT_X = StringSplit($TOOL_STRING_X, "|")
	$i = 1

	$IDENT_CELL_Y = 0
	For $COORD_Y = $IDENT_START_Y To $IDENT_STOP_Y Step ($HOCH + (2 * $ABSTAND))
		
		$IDENT_CELL_X = 0
		For $COORD_X = $IDENT_START_X To $IDENT_STOP_X Step ($BREIT + (2 * $ABSTAND))
			
			If $i = 4 Then
				$i = 1
			EndIf
			
			Opt("MouseClickDelay", Random(100, 200, 1))
			Opt("MouseClickDownDelay", Random(50, 100, 1))
			MouseClick("left", $TOOL_STRING_SPLIT_X[$i] + Random(0, 44, 1), $TOOL_START_Y + Random(0, 54, 1), 2, Random(10, 30, 1))
			
			
			If $IDENT_CELL_Y > 2 Then
				$CORECT_Y = 1
			Else
				$CORECT_Y = 0
			EndIf
			
			Opt("MouseClickDownDelay", Random(50, 100))
			MouseClick("left", $COORD_X + Random(0, 44, 1), $COORD_Y + Random(0, 54, 1) + $CORECT_Y, 1, Random(10, 30, 1))
			Sleep(Random(200, 300))
			
			$i = $i + 1
			
			$IDENT_CELL_X = $IDENT_CELL_X + 1
		Next
		
		$IDENT_CELL_Y = $IDENT_CELL_Y + 1
	Next

EndFunc   ;==>_IDENT
02/28/2009 09:23 Dunham#6
macht doch nicht alles soo umständlich ^^

PHP Code:
Func ident()
    
KeySend(".")
    
RS(5001000)
    
IdentItems(0104) ;IdentKit in Reihe 4 Spalte "0" --> Identifiziert Reihe 0 bis 1
    Sleep
(100)
    
IdentItems(2314) ;IdentKit in Reihe 4 Spalte "1" --> Identifiziert Reihe 2 bis 3
    Sleep
(100)
    
IdentItems(5624) ;IdentKit in Reihe 4 Spalte "2" --> Identifiziert Reihe 5 bis 6
    RS
(5001000)
    
KeySend(".")
EndFunc   ;==>ident 
das wär alles ohne viel rumschieben etc... kannst das halt auch einfach mit random oder if jedes mal nen anderes nehmen...
02/28/2009 12:22 | Moep |#7
Es gab auch Zeiten in denen es soetwas wie eine tt6 noch nicht gab, in dieser Zeit ist auch meine oben gezeigte identfunc entstanden...
02/28/2009 12:49 Dunham#8
joa nur da er ja eh die tt6 nutzt kann er das ja gleich mit der machen^^
02/28/2009 20:07 Kaneoxi#9
thx für die anregungen.

nun mal meine lösung bei 800x600 im fenster modus.

PHP Code:
Func _MakeLong($LoWord$HiWord)
Return 
BitOR($HiWord 0x10000BitAND($LoWord0xFFFF))
EndFunc ;==>_MakeLong

Func _MouseClick
($hwnd$button$x$y$times 1$delay 15) ; Use the relative coords to the client area of the active window
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"0x200"int"0"long"$lParam) ; Move
DllCall
($user32"int""PostMessage""hwnd"$hwnd"int"0x201"int"1"long"$lParam) ; Down
DllCall
($user32"int""PostMessage""hwnd"$hwnd"int"0x202"int"0"long"$lParam) ; Up

If $ix $times Then Sleep($delay)
Next
ElseIf $button "right" Then
For $ix 1 To $times
DllCall
($user32"int""PostMessage""hwnd"$hwnd"int"0x200"int"0"long"$lParam) ; Move
DllCall
($user32"int""PostMessage""hwnd"$hwnd"int"0x204"int"2"long"$lParam) ; Down
DllCall
($user32"int""PostMessage""hwnd"$hwnd"int"0x205"int"0"long"$lParam) ; Up

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 ;==>_MouseClick 

Func _ident
()
ControlSend($Hwnd1"""""{.}")
Sleep(500)
$ident_x 35
$ident_y 
250
$x 
30
$y 
60
For $iy $y To $y 40 Step 40
For $ix $x To $x 175 Step 35
ControlClick
($Hwnd1"""""left"2$ident_x$ident_y)
Sleep(400)
_MouseClick($Hwnd1"left"$ix$iy180)
Next
Next
;
$ident_x 35
$ident_y 
250
$x 
30
$y 
140
For $iy $y To $y 40 Step 40
For $ix $x To $x 175 Step 35
ControlClick
($Hwnd1"""""left"2$ident_x$ident_y)
Sleep(400)
_MouseClick($Hwnd1"left"$ix$iy180)
Next
Next
;
$ident_x 100
$ident_y 
250
$x 
30
$y 
320
For $iy $y To $y 40 Step 40
For $ix $x To $x 175 Step 35
ControlClick
($Hwnd1"""""left"2$ident_x$ident_y)
Sleep(400)
_MouseClick($Hwnd1"left"$ix$iy180)
Next
Next
;
ControlSend($Hwnd1"""""{.}")
EndFunc ;==>ident 
in der reihe fünf (gürteltasche) liegen nun 3 Ident Kits.

leider alles nur übernommen, außer die coords nichts eigenes:(