Probleme mit MouseClick

  • Hi kennt ihr diese Onlinespiele Wie "Last Chaos" und ähnliche? man klickt wohin und der Charakter rennt dann ebenfalls dort hin. Ich mag diese Steuerung nicht und habe versucht das auf Tastatur umzuschreiben, in dem ich einen Mausklick neben bzw vor oder hinter den Charakter simuliere, das dumme ist nur, egal ob ich hoch oder runter drücke er rennt nach unten und bei links und rechts rennt er immer nach links, außerdem verschwindet die Maus immer am Bildschirmrand, statt direkt am Charakter zu sein. Das letzte Problem ist, dass er c.a. 3 sec braucht um zu reagieren, wenn ich ne taste drücke, bis der nen Mausklick macht. Hier mein Code:

    [autoit]

    #Include <Misc.au3>

    [/autoit][autoit][/autoit][autoit][/autoit][autoit]

    HotKeySet("w", "Vorwaerts");
    HotKeySet("a", "links");
    HotKeySet("s", "runter");
    HotKeySet("d", "rechts");

    [/autoit][autoit][/autoit][autoit]

    while 1
    WEnd

    [/autoit][autoit][/autoit][autoit]

    Func links ()
    while _IsPressed("41");
    MouseClick("left", @DesktopWidth, (@DesktopHeight/2) - 1)
    WEnd
    EndFunc

    [/autoit][autoit][/autoit][autoit]

    Func Vorwaerts ()
    while _IsPressed("57");
    MouseClick("left", (@DesktopWidth/2) - 1, @DesktopHeight)
    WEnd
    EndFunc

    [/autoit][autoit][/autoit][autoit]

    Func runter ()
    while _IsPressed("53");
    MouseClick("left", (@DesktopWidth/2) + 1, @DesktopHeight);
    Wend
    EndFunc

    [/autoit][autoit][/autoit][autoit]

    Func rechts ()
    while _IsPressed("44");
    MouseClick("left", @DesktopWidth, (@DesktopHeight/2) + 1);
    WEnd
    EndFunc

    [/autoit]
  • Also ich glaube bei spielen geht das nicht ohne weiteres denn wenn du z.B. auf die koordinaten

    x = 0
    y = 0

    clickst und dann den Bildschirm rotieren lasssen willst kommt er auf keinen anderen Punkt denn sobald er routiert wird die maus fixiert. Damit könnte es vielleicht was zu tun haben.

    Schau mal nach einer Funk namens MouseMovePlus oder Probier deine Werte bei den Bewegungen mit dem Aktuellen Script zu verändern.

  • Mach mal diese Zeilen

    [autoit]

    Func links ()

    [/autoit]

    zu

    [autoit]

    Func links()

    [/autoit]

    also, immer die leerzeichen weg. Das ist irgendwie etwas buggy, ich hatte da auch mal nen script und in der funktion war an erster stelle eine msgbox. Die hat 2-3 Sekunden gebraucht zum anzeigen. Vielleicht hilfts ja.


    EDIT: Setz in deine Schleife noch nen sleep von 100, sonst sprengt es deine CPU :)

  • Du haste erstmal einen kleinen Gedankenfehler drin, wenn du in der mitte des Bildschirm klicken möchtest musst du @desktophight und @desktopwidth

    Versuchs mal so...

    [autoit]

    #Include <Misc.au3>

    [/autoit][autoit][/autoit][autoit][/autoit][autoit]

    HotKeySet("w", "Vorwaerts");
    HotKeySet("a", "links");
    HotKeySet("s", "runter");
    HotKeySet("d", "rechts");

    [/autoit][autoit][/autoit][autoit]

    while 1
    WEnd

    [/autoit][autoit][/autoit][autoit]

    Func links ()
    while _IsPressed("41");
    MouseClick("left", @DesktopWidth/2-10, @DesktopHeight/2,1, 0)
    WEnd
    EndFunc

    [/autoit][autoit][/autoit][autoit]

    Func Vorwaerts ()
    while _IsPressed("57");
    MouseClick("left", @DesktopWidth/2, @DesktopHeight/2 -10,1, 0)
    WEnd
    EndFunc

    [/autoit][autoit][/autoit][autoit]

    Func runter ()
    while _IsPressed("53");
    MouseClick("left", @DesktopWidth/2, @DesktopHeight/2+10,1, 0);
    Wend
    EndFunc

    [/autoit][autoit][/autoit][autoit]

    Func rechts ()
    while _IsPressed("44");
    MouseClick("left", @DesktopWidth/2 +10, @DesktopHeight/2 ,1, 0);
    WEnd
    EndFunc

    [/autoit]

    Mfg
    monkey

    Monkey - die finale Potenz von göttlich!
    Sloganizer

  • Danke, unter Umsetzung all eurer Tipps hat es Funktioniert, vorwärts und rückwärts klappt super, nur links und rechts ist etwas unglücklich, ich würde lieber die Kamera drehen, das geht normal in dem man Rechtsklick gedrückt hält und dann die Maus bewegt, geht das irgendwie gleichzeitig mit dem MouseClick?
    Oder kann man eigentlich nen Mausklick machen, ohne das die Maus bewegt wird?

  • hmm... also einen befehl der MouseMovePlus heißt, finde ich in der AutoIT hilfe nicht

  • Ist kein Standartbefehl, sondern eine Benutzerdefinierte Funktion (?)

    http://www.autoitscript.com/forum/index.php?showtopic=21440&hl=

    [autoit]


    Func _MouseMovePlus($X, $Y,$absolute = 0)
    Local $MOUSEEVENTF_MOVE = 1
    Local $MOUSEEVENTF_ABSOLUTE = 32768
    DllCall("user32.dll", "none", "mouse_event", _
    "long", $MOUSEEVENTF_MOVE + ($absolute*$MOUSEEVENTF_ABSOLUTE), _
    "long", $X, _
    "long", $Y, _
    "long", 0, _
    "long", 0)
    EndFunc

    [/autoit][autoit][/autoit][autoit][/autoit]

    von Oxin8

  • geht das nicht mit

    [autoit]

    MouseClickDrag("right",xstart,ystart,xziel,yziel,SPEED)

    [/autoit]