Keybinding an Doppelklick im Inventar

01/14/2013 22:15 kenji14#1
Hallo,
Ich würde gerne wissen, ob jemand weiss wie man einen Doppelklick im Inventar zB: an den Buchstaben C binden kann ?

Das finde ich würde den einsatz von Consumables vereinfachen.

Danke, Kenji
01/14/2013 22:18 buFFy!#2
Quote:
Originally Posted by kenji14 View Post
Hallo,
Ich würde gerne wissen, ob jemand weiss wie man einen Doppelklick im Inventar zB: an den Buchstaben C binden kann ?

Das finde ich würde den einsatz von Consumables vereinfachen.

Danke, Kenji
Vom Spiel her garnicht. Mit AutoIT lässt sich das relativ schnell realisieren.
01/14/2013 22:23 kenji14#3
Das habe ich mir so ähnlich gedacht.
Wie würde man das denn machen können mit AutoIT?

Edit: Man müsste das Script dann auch jedesmal Starten ?
01/14/2013 22:35 GWplayer#4
[Only registered and activated users can see links. Click Here To Register...]

Vielleicht hilfts ja :)

Edit: Wenn du willst kann ich es dir auch so umschreiben dass der Hotkey fürs klicken auf "C" liegt.
01/14/2013 23:13 kenji14#5
Ja , das geht schon in die richtige Richtung =).
Funktioniert das denn auch bei Gw2 ?
Und wie würde das denn aussehen wenn man nur einen Doppelklick haben möchte für einen Hotkey ?
Und was würde man dann wiederum machen, ähnlich wie bei dir. Wenn man in einem Bestimmtem Zeitintervall klicken möchte z.B: alle 10 Sekunden.
01/14/2013 23:35 buFFy!#6
Quote:
Originally Posted by kenji14 View Post
Das habe ich mir so ähnlich gedacht.
Wie würde man das denn machen können mit AutoIT?

Edit: Man müsste das Script dann auch jedesmal Starten ?
mit _IsPressed für die Hotkeyabfrage und MouseClick für den Klick.
Könnte man Theoretisch dann kompilieren und in den Autostart gucken.
Mit WinExists/ProcessExists kannst du schauen ob Gw2 läuft.
01/15/2013 15:03 GWplayer#7
Quote:
Originally Posted by kenji14 View Post
Ja , das geht schon in die richtige Richtung =).
Funktioniert das denn auch bei Gw2 ?
Und wie würde das denn aussehen wenn man nur einen Doppelklick haben möchte für einen Hotkey ?
Und was würde man dann wiederum machen, ähnlich wie bei dir. Wenn man in einem Bestimmtem Zeitintervall klicken möchte z.B: alle 10 Sekunden.
Ein Doppelklick für einen Hotkey:
So wie buffy schon geschrieben hat

In einem bestimmten Zeitintervall: einfach noch ein Sleep (10000) zwischen MouseClick setzen :)
01/15/2013 17:32 kenji14#8
Jop , danke für die Hilfe schonmal!
Ich wüsst noch gerne wie ich Autoit sagen kann wo der Doppelklick stattfinden soll.
z.B bei C im Platz 1 , bei Alt im Platz 2, etc.
01/15/2013 18:15 buFFy!#9
Entweder du nutzt MouseGetPos in Kombination mit MouseClick oder verwendest einfach MouseDown / MouseUp.
01/15/2013 18:58 TheOnlyOne652089#10
Beispiel Code:

Code:
AutoItSetOption("MouseCoordMode", 2);relative to client

HotKeySet("{End}", "_exit")
Func _exit()
	Exit 1
EndFunc

Global $title = "Guild Wars 2"
Global $hwnd = WinGetHandle($title)
if (NOT $hwnd) Then
	MsgBox("", "Error", "No window found with title " & $title)
	Exit 2
EndIf

HotKeySet("{c}", "_doubleClickOnMousePos")
Global $isClicking = false
Func _doubleClickOnMousePos()

	$isClicking = NOT $isClicking

	if ($isClicking) Then
		local $mousePos = MouseGetPos()
		ToolTip("clicking", 0, 0)

		local $countClicks = 0
		while $isClicking
			$countClicks = $countClicks + 1
			ControlClick($hwnd, "", "", "left", 2, $mousePos[0], $mousePos[1])
			ToolTip("clicking : " & $countClicks, 0, 0)
			sleep(100)
		WEnd

		ToolTip("", 0, 0)
	EndIf

EndFunc

While True
	sleep(0)
WEnd

Sobald du "c" drückst wird so lange Doppelklicks gesendet an die MousePosition zu dem Zeitpunkt als du c gedrückt hast, bis du noch einmal c drückst.


das ganze läuft über Controllclicks, damit deine Mouse frei bleibt, MouseClicks bewegen tatsächlich deine Mouse und lösen darüber klicks aus, willst du womöglich aber nicht.

Mit Controllclicks kannst du die clicks auch im Hintergrund machen lassen und in der Zeit etwas anderes tun, da alle Kommandos an das Window ($hwnd) gesendet werden von Guild Wars 2.



Im großen und ganzen dürfte das sein was du willst.


Du kannst es natürlich beliebig ausbauen.
01/15/2013 19:01 buFFy!#11
Quote:
Originally Posted by TheOnlyOne652089 View Post
Beispiel Code:

Code:
AutoItSetOption("MouseCoordMode", 2);relative to client

HotKeySet("{End}", "_exit")
Func _exit()
	Exit 1
EndFunc

Global $title = "Guild Wars 2"
Global $hwnd = WinGetHandle($title)
if (NOT $hwnd) Then
	MsgBox("", "Error", "No window found with title " & $title)
	Exit 2
EndIf

HotKeySet("{c}", "_doubleClickOnMousePos")
Global $isClicking = false
Func _doubleClickOnMousePos()

	$isClicking = NOT $isClicking

	if ($isClicking) Then
		local $mousePos = MouseGetPos()
		ToolTip("clicking", 0, 0)

		local $countClicks = 0
		while $isClicking
			$countClicks = $countClicks + 1
			ControlClick($hwnd, "", "", "left", 2, $mousePos[0], $mousePos[1])
			ToolTip("clicking : " & $countClicks, 0, 0)
			sleep(100)
		WEnd

		ToolTip("", 0, 0)
	EndIf

EndFunc

While True
	sleep(0)
WEnd

Sobald du "c" drückst wird so lange Doppelklicks gesendet an die MousePosition zu dem Zeitpunkt als du c gedrückt hast, bis du noch einmal c drückst.


das ganze läuft über Controllclicks, damit deine Mouse frei bleibt, MouseClicks bewegen tatsächlich deine Mouse und lösen darüber klicks aus, willst du womöglich aber nicht.

Mit Controllclicks kannst du die clicks auch im Hintergrund machen lassen und in der Zeit etwas anderes tun, da alle Kommandos an das Window ($hwnd) gesendet werden von Guild Wars 2.



Im großen und ganzen dürfte das sein was du willst.


Du kannst es natürlich beliebig ausbauen.
Wird wahrscheinlich nicht mit ControlClick gehen, weil ControlClick kein WM_MOUSEMOVE sendet.
Muss man dann also mit PostMessage/SendMessage machen. Oder man nutzt eben die Mousefuncs.
01/15/2013 19:03 TheOnlyOne652089#12
Quote:
Originally Posted by buFFy! View Post
Wird wahrscheinlich nicht mit ControlClick gehen, weil ControlClick kein WM_MOUSEMOVE sendet.
Muss man dann also mit PostMessage/SendMessage machen. Oder man nutzt eben die Mousefuncs.
Bei meinem schnellen test ging es ^^

Dem Inventar "button" ist es im Prinzip egal ob sich die Maus tatsächlich darüber befindet.

Durchaus denkbar das es in manchen Situationen nicht funktioniert.
01/15/2013 19:29 buFFy!#13
Quote:
Originally Posted by TheOnlyOne652089 View Post
Bei meinem schnellen test ging es ^^

Dem Inventar "button" ist es im Prinzip egal ob sich die Maus tatsächlich darüber befindet.

Durchaus denkbar das es in manchen Situationen nicht funktioniert.
Ich glaub beim Wiederverwerten dürfte das nicht gehen.
Faktisch wenn du mit dem Kit über das Item gehen würdest.
01/15/2013 23:01 TheOnlyOne652089#14
Quote:
Originally Posted by buFFy! View Post
Ich glaub beim Wiederverwerten dürfte das nicht gehen.
Faktisch wenn du mit dem Kit über das Item gehen würdest.
Bei allem wo nur ein einfacher Doppelklick gebraucht wird funktioniert das.

Beim Salvagen brauchts mehr, da wird doppelklick damit sich der Cursor State ändert, dann überprüft der beim MouseOver ob er überhaupt das Item salvagen kann und "dann" darf man erst klicken zum salvagen.


Will man also salvagen muss man mit der Mouse kurz über die entsprechenden items "hovern", kostet ja effektiv auch keine Zeit da ja nahezu sofort alle stacks des Salvage Kit weggebombt sind.
01/15/2013 23:43 buFFy!#15
Quote:
Originally Posted by TheOnlyOne652089 View Post
Bei allem wo nur ein einfacher Doppelklick gebraucht wird funktioniert das.

Beim Salvagen brauchts mehr, da wird doppelklick damit sich der Cursor State ändert, dann überprüft der beim MouseOver ob er überhaupt das Item salvagen kann und "dann" darf man erst klicken zum salvagen.


Will man also salvagen muss man mit der Mouse kurz über die entsprechenden items "hovern", kostet ja effektiv auch keine Zeit da ja nahezu sofort alle stacks des Salvage Kit weggebombt sind.
Deshalb das WM_MOUSEMOVE