Error problem/Keybindererklärung

  • ich hab da ein problem in meinem script, wenn ich die datei öffne schreibt er mir eine error message.



    die ; sind gewollt

    Einmal editiert, zuletzt von Markus_Antaros (5. März 2010 um 22:06)

  • danke, aber wie mach ich dass, dass ich den befehl immer wiedersenden kann (natürlich nur wenn ich auf die taste klicke?)

  • Hier dein Skript angepasst hatte ein paar fehler zum beispiel mußt du den Funktionen "()" zuweisen ansonsten weis autoit nicht das es sich um eine funktion handelt....


    [autoit]


    #include <Misc.au3>

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

    _notepad()

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

    Func _notepad()
    Run("notepad.exe")
    WinWaitActive("Unbenannt - Editor")
    While 1
    If _IsPressed ("31") then text()
    If _IsPressed ("1B") then terminate()
    Sleep(100)
    WEnd
    EndFunc

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

    Func text()
    Send("hallo du ei{f5}.", "1")
    EndFunc ;==>text

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

    Func Terminate()
    ProcessClose ("notepad.exe")
    Exit
    EndFunc ;==>Terminate

    [/autoit]


    Gruß Stinger :thumbup:

    Spoiler anzeigen
    Zitat

    Ich weiß wo dein Haus wohnt... 8o

    Einmal editiert, zuletzt von stinger2k (5. März 2010 um 20:26)

  • ich hab da noch eine bitte/problem;


    ich möchte das der text: Hallo du ei in weniger als einer sekunde eingegeben wird und er automatisch in die nächste zeile switcht(enter), wie mach ich dass?7


    **edit, danke**


    mein "script" das ich mir zusammengebaut hab:


    [autoit]


    winwaitactive("GTA:SA:MP")
    HotKeySet("{1}", "text")
    HotKeySet("{ESC}", "Terminate")
    While 1
    Sleep(1)
    WEnd
    Func text()
    send("t hallo du ei {enter}.", "0")
    EndFunc
    Func Terminate()
    Exit 0
    EndFunc

    [/autoit]


    ***edit***


    wie du villeicht erkannt hast möchte ich mir einen keybinder für die multiplayerversion zusammenbauen, und nein ich floode damit nicht den textchannel von samp, hab da meinen eigenen home server wo ic hihn teste und optimiere

    Einmal editiert, zuletzt von Markus_Antaros (5. März 2010 um 20:39)

  • jetzt beginnt es ein Bot für GrandTheftAuto zu werden...

    MfG Schnuffel

    "Sarkasmus ist die niedrigste Form des Witzes, aber die höchste Form der Intelligenz."
    Val McDermid

    ein paar Infos ...

    Wer mehr als "nur" Hilfe benötigt, kann sich gern im Forum "Programmieranfragen" an uns wenden. Wir helfen in allen Fällen, die die Forenregeln zulassen.

    Für schnelle Hilfe benötigen wir ein ! lauffähiges ! Script, dass wir als Demonstration des Problems testen können. Wer von uns erwartet ein Teilscript erstmal lauffähig zu bekommen, der hat
    1. keine wirkliche Not
    2. keinen Respekt vor Menschen die ihm in ihrer Freizeit Ihre Hilfe anbieten
    3. oder ist einfach nur faul und meint wir coden das für ihn

    In solchen Fällen erlaube ich mir, die Anfrage einfach zu ignorieren. ;)

  • nein kein bot, einen keybinder wie:


    edit die 2te
    nur dass der fix sein soll, also ohne diesen eingabefenstern und direkt aktiv


    edit die 3te

    nur gibts da das problem, dass ich die programmierung nicht versteh, und auch nicht weiss wie ich einen erstelle ohne den unten genannten als vorlage zu nehmen...

  • um automatisch in die nächste Zeile zu hüpfen füge deiner text() func folgenden befehl hinzu

    [autoit]


    Send (@CR)

    [/autoit]


    Hier ist die versprochene Be-Kommentierung des Skripts


    Hoffe du verstehst es jetzt

    Spoiler anzeigen
    [autoit]


    #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_outfile=SA-MP XTreme KeyBinder by PrideRage.exe
    #AutoIt3Wrapper_Res_Description=XTreme KeyBinder
    #AutoIt3Wrapper_Res_Fileversion=1.0.0.0
    #AutoIt3Wrapper_Res_LegalCopyright=PrideRage
    #AutoIt3Wrapper_Res_Language=1031
    #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
    #include <ButtonConstants.au3>
    #include <ComboConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <GuiComboBox.au3>
    #include <Misc.au3>
    #Region ### START Koda GUI section ### Form=c:\dokumente und einstellungen\pride\desktop\keybinder.kxf
    $Form1 = GUICreate("KeyBinder by PrideRage", 400, 194, 205, 130) ;erstellt eine Grafische Benutzeroberfläche (die Zahlen dahinter sind Pixel auf deinem Bildschirm - linke seite,obere seite, breite, höhe...)
    $kb1 = GUICtrlCreateInput("", 8, 48, 169, 21) ;erstellt ein Input Controll ( ein Feld worin du etwas eingibst)
    $key1 = GUICtrlCreateCombo("", 200, 48, 65, 25) ; erstellt eine Auswahlbox in der nichts drinsteht
    GUICtrlSetData($key1, "1|2|3") ;setzt die auswählbaren Daten für die Auswahlbox
    $Label1 = GUICtrlCreateLabel("KeyBind Text", 8, 8, 108, 24) ;schreibt Text in die GUI
    GUICtrlSetFont(-1, 12, 800, 0, "MS Sans Serif") ;setzt die Schriftart für vorigen Text
    $Label2 = GUICtrlCreateLabel("Taste", 200, 8, 49, 24) ;text
    GUICtrlSetFont(-1, 12, 800, 0, "MS Sans Serif");schriftart
    $Label3 = GUICtrlCreateLabel("Aktiviert", 280, 8, 69, 24);text
    GUICtrlSetFont(-1, 12, 800, 0, "MS Sans Serif");schriftart
    $cb1 = GUICtrlCreateCheckbox("", 304, 48, 17, 17) ;erstellt eine Checkbox (Kästchen zum an- und abwählen
    $kb2 = GUICtrlCreateInput("", 8, 88, 169, 21); erstellt wie oben ein Input Control
    $key2 = GUICtrlCreateCombo("", 200, 88, 65, 25) ; eine Auswahlbox
    GUICtrlSetData(-1, "1|2|3") ;Daten für die Auswahlbox
    $cb2 = GUICtrlCreateCheckbox("cb2", 304, 88, 17, 17) ;Checkbox
    $kb3 = GUICtrlCreateInput("", 8, 128, 169, 21) ; erstellt wie oben ein Input Control
    $key3 = GUICtrlCreateCombo("", 200, 128, 65, 25); Auswahlbox
    GUICtrlSetData(-1, "1|2|3");wieder Daten für die vorige Auswahlbox
    $cb3 = GUICtrlCreateCheckbox("cb3", 304, 128, 17, 17); Checkbox
    $start = GUICtrlCreateButton("Start", 48, 168, 97, 17, $WS_GROUP) ;erstellt einen Button mit der Beschriftung "Start"
    $quit = GUICtrlCreateButton("Beenden", 192, 168, 113, 17, $WS_GROUP); ---"----
    GUISetState(@SW_SHOW) ;erst mit diesem Befehl wird deine GUI angezeigt
    #EndRegion ### END Koda GUI section ###
    While 1 ;Schleife dir während die GUI existiert ausgeführt wird
    $nMsg = GUIGetMsg() ;Fragt ab welche Controls o.ä. angeklickt, bearbeitet, oder sonstwie den Status verändert haben
    Switch $nMsg ; schaltet auf obige abfrage um
    Case $GUI_EVENT_CLOSE ;legt fest was bei click auf das "x" im Fenster passieren soll
    Exit ;erklärt sich glaube ich von selbst ( Beendet das Script)
    Case $start ;legt fest was bei klick auf den Button "Start" passiert
    _KeyBinder_Start() ;eigene Funktion
    Case $quit ; legt fest was bvei klick auf "Beenden" passiert
    Exit
    EndSwitch ;Beendet die Schaltung auf die Nachrichtenabfrage deiner GUI
    WEnd ;verlässt die schleife
    Func _KeyBinder_Start() ;die selbst geschriebene Funktion (Start der Funktion)
    ;KeyBinder Texte ;dass ist nur ein Kommentar
    $text1 = GUICtrlRead($kb1); Liest das input aus welches unter der variable $kb1 verfügbar ist
    $text2 = GUICtrlRead($kb2);wie voriges
    $text3 = GUICtrlRead($kb3);wie voriges

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

    ;Tastenbelegung
    Global $key1_Button = _GUICtrlComboBox_GetCurSel($key1) + 1 ; liest das momentan aktivierte aus deine Auswahlbox aus...
    Global $key2_Button = _GUICtrlComboBox_GetCurSel($key2) + 1
    Global $key3_Button = _GUICtrlComboBox_GetCurSel($key3) + 1
    Global $hexkey1
    Global $hexkey2
    Global $hexkey3 ; dies alles sind globale variablen die existieren solange dein Skript läuft
    If $key1_Button = 1 Then ;Wenn die Abfrage des auslesens dieser Combobox 1 ist dann
    $hexkey1 = "31" ;hexadezimaler wert für Taste "{1}"
    EndIf ; Beendet die wenn abfrage
    If $key1_Button = 2 Then
    $hexkey1= 32 ; selbiges wie voriges nur Taste "{2}"
    EndIf
    If $key1_Button = 3 Then
    $hexkey1 = 33; selbiges wie voriges nur Taste "{3}"
    EndIf
    If $key2_Button = 1 Then ;usw...
    $hexkey2 = 31
    EndIf
    If $key2_Button = 2 Then ;usw...
    $hexkey2 = 32
    EndIf
    If $key2_Button = 3 Then ;usw...
    $hexkey2 = 33
    EndIf
    If $key3_Button = 1 Then ;usw...
    $hexkey3 = 31
    EndIf
    If $key3_Button = 2 Then ;usw...
    $hexkey3 = 32
    EndIf
    If $key3_Button = 3 Then ;usw...
    $hexkey3 = 33
    EndIf
    ;Aktiviert oder nicht...
    Global $check_cb1 = GUICtrlRead($cb1)
    Global $check_cb2 = GUICtrlRead($cb2)
    Global $check_cb3 = GUICtrlRead($cb3)
    Global $checked_cb1 = False
    Global $checked_cb2 = False
    Global $checked_cb3 = False
    If $check_cb1 = $GUI_CHECKED Then ;Überprüft ob das 1. Auswahlkästchen aktiviert wurde
    $checked_cb1 = True
    EndIf
    If $check_cb2 = $GUI_CHECKED Then ;usw...
    $checked_cb2 = True
    EndIf
    If $check_cb3 = $GUI_CHECKED Then ;usw...
    $checked_cb3 = True
    EndIf

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

    ;KeyBind funktion
    While 1 ;wieder eine Schleife
    $nMsg = GUIGetMsg() ;Nachrichtenabfrage
    Switch $nMsg;schaltet auf die Nachrichtenabfrage
    Case $GUI_EVENT_CLOSE; wieder - was geschehen soll auf klick "x" im Fenster
    Exit
    Case $quit
    Exit
    EndSwitch
    If _IsPressed($hexkey1) And $checked_cb1 = True Then ;Abfrage ob 1 gedrückt wurde und das auswahlkästchen angekreuzt ist, wenn ja - dann...
    Send($text1) ;... wird text1 gesendet
    EndIf;Beendet diese Abfrage
    If _IsPressed($hexkey2) And $checked_cb2 = True Then ; wie voriges nur bei 2 wird text2 gesendet
    Send($text2)
    EndIf
    If _IsPressed($hexkey3) And $checked_cb3 = True Then ; wie voriges nur bei 3 wird text 3 gesendet
    Send($text3)
    EndIf
    WEnd ;verlässt die schleife
    EndFunc ;Ende der Funktion

    [/autoit]


    Bitte um kurzes Statement ob du es jetzt verstanden hast....! ;)


    Gruß Stinger

    Spoiler anzeigen
    Zitat

    Ich weiß wo dein Haus wohnt... 8o

    Einmal editiert, zuletzt von stinger2k (5. März 2010 um 21:26)

  • viel input, das putput geht noch ab, aber dass kommt noch, und irgendwann kann ich mit dem output behilflich sein :p

    so nach dem thema: [Blockierte Grafik: http://www.wiwi.uni-jena.de/Entscheidung/images/books/putput1.gif]


    schertz, muss es erstmal verstehen lernen dann meld ich mich wieder, danke für die erklärung :thumbup:


    eine sache noch:

    wenn ich möchte dass zwischen 2 sätzen je ein paar sekunden abstand sind, dann muss ich da Sleep einfügen, also so:


    [autoit]

    If _IsPressed($hexkey3) And $checked_cb3 = True Then ; wie voriges nur bei 3 wird text 3 gesendet
    Send($text3)
    sleep(1000)
    EndIf

    [/autoit]

    Einmal editiert, zuletzt von Markus_Antaros (5. März 2010 um 22:05)