Send mit zufälliger Wortgruppe aus einer Liste

  • Hey :)

    Ich habe ein Liste mit einigen Wortgruppen und würde gerne via Send() eine Wortgruppe davon senden.
    Und es soll bei jeder Wiederholung auch eine andere Wortgruppe sein.

    Wie kann ich das umsetzen?

    mfg #lemon

    Lösung

    [autoit]

    $file=FileOpen("a.txt",0) ; a.txt ist die Liste der Wortgruppen
    $filedata=FileRead($file)
    $textarray=StringSplit($filedata,@CRLF,1)

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

    Send($textarray[Random(1,UBound($textarray)-1,1)]) ; gibt eine zufällige Wortgruppe aus :)

    [/autoit]

    Danke dafür an Kanashius

    Einmal editiert, zuletzt von #lemon (10. April 2014 um 19:41)

  • 1. Was hast du damit vor? Wo willst du das sinnvoll einsetzen?
    2. Wo hast du Probleme? Ohne Quellcode sieht man nicht woran du scheiterst. Das hier ist Hilfe und Unterstützung und nicht "Mach mir mal"

  • Wenn du die Wortgruppen in einer txt-datei mit @crlf getrennt hast:
    (aber Achtung! Falls alle Wortgruppen schon gesendet wurden bist du in einer endlosschleife!)
    Musst dir das Script dann eben anpassen. (Habs nicht getestet.)

    [autoit]


    HotKeySet("{PAUSE}","spruchClip")
    HotKeySet("{ESC}","ende")

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

    $file=FileOpen("sprueche.txt",0)
    $filedata=FileRead($file)
    $spruechearray=StringSplit($filedata,@CRLF,1)

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

    global $wortgruppenarray[ubound($spruechearray)-1][2]
    for $i=1 to ubound($spruechearray)-1 step 1
    $wortgruppenarray[$i-1][0]= $spruechearray[$i]
    $wortgruppenarray[$i-1][1]= 0
    next

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

    while 1
    sleep(100)
    WEnd

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

    Func randSpruch()
    $x= Random(1,UBound($wortgruppenarray)-1,1)
    while $wortgruppenarray[$x][1]=1
    $x= Random(1,UBound($wortgruppenarray)-1,1)
    WEnd $wortgruppenarray[$x][1]=1
    return $wortgruppenarray[$x][0]
    EndFunc

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

    Func spruchClip()
    Send(randSpruch())
    EndFunc

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

    Func ende()
    exit
    EndFunc

    [/autoit]

    Viel Glück noch.

  • Zitat

    Wie kann ich das umsetzen?

    Und nicht "Mach mir mal"

    1. Es soll dazu dienen automatisch auf Nachrichten zu reagieren, dazu habe ich eine lange Liste mit Wortgruppen/Sätzen
    2. Mein Problem ist das ich nicht weiss wie man jetzt via Send oder einen anderen Funktion zur Ausgabe von Zeichen eine dieser Wortgruppe/Sätze herraussucht und schreibt.

    Ich hoffe das ist weiterführend genug.

  • Einfach die einzelnen Nachrichten in ein Array und dann mithilfe von den Control*-Funktionen dort "hinversenden", wohin du es auch immer willst.

    (Auf was fuer 'ne Art von Nachrichten musst du den automatisch antworten? :huh: Bei E-Mails z.B. gaebe es noch alternative Loesungswege.)

    There's a joke that C has the speed and efficieny of assembly language combined with readability of....assembly language. In other words, it's just a glorified assembly language. - Teh Interwebz

    C makes it easy to shoot yourself in the foot; C++ makes it harder, but when you do, you blow off your whole leg. - Bjarne Stroustrup
    Genie zu sein, bedeutet für mich, alles zu tun, was ich will. - Klaus Kinski

  • Wenn du es zufällig haben willst, würde ich das so machen:

    Spoiler anzeigen
    [autoit]


    #cs ----------------------------------------------------------------------------

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

    Copyright (C) 2014 chesstiger

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

    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

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

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
    GNU General Public License for more details.

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

    You should have received a copy of the GNU General Public License
    along with this program. If not, see <http://www.gnu.org/licenses/>.

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

    AutoIt Version: 3.3.10.2

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

    #ce ----------------------------------------------------------------------------

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

    #include <Array.au3>

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

    $aMyArray = _Array_PopulateNew()
    _ArrayDisplay($aMyArray, "Zur Überprüfung")

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

    MsgBox(0, "", "Erster Datensatz: " & _Array_PickOne($aMyArray))
    MsgBox(0, "", "Zweiter Datensatz: " & _Array_PickOne($aMyArray))

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

    Func _Array_PopulateNew()
    ;Hier wird dein Array befüllt.
    ;Das hier ist nur ein Beispiel!
    $iBound = 20
    Local $aReturn[$iBound]
    For $i = 0 To $iBound - 1
    $aReturn[$i] = Random(0, 100, True)
    Next
    Return $aReturn
    EndFunc

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

    Func _Array_PickOne(ByRef $avArray)
    Local $iBound, $iPick, $vReturn
    $iBound = UBound($avArray)
    $iPick = Random(0, $iBound - 1, True)
    $vReturn = $avArray[$iPick]
    _ArrayDelete($avArray, $iPick)
    Return $vReturn
    EndFunc

    [/autoit]
  • Ich bezweifle, dass das mit den Forenregeln vereinbar ist. PN Bots und Konsorten, wie auch einer im verlinkten Video demonstriert wird, haben hier nichts verloren. Wenn du vor hast so etwas Ähnliches zu machen, dann verstößt du gegen unsere Forenregeln und ggf. gegen die AGB des Dienstes den du automatisieren willst.

  • Es soll kein PN Bot werden, das Video soltle nur demonstrieren wie der Bot arbeiten soll :)

    Wenn es nicht mit den Forenregeln vereinbar ist warum wird mein Thema dann von einem Mod aktiviert? :/

    Und danke an chesstiger werde es mal ausprobieren :)
    Edit: leider werde ich nicht schlau daraus :(
    Was ist das für ein Fenster was sich aus dem Skript ergibt? Und wie kann ich das jetzt auf mein Problem anwenden?

    Anscheinend lässt sich die zufällige Ausgabe ja via Send(_Array_PickOne($aMyArray)) ausgeben, aber wie füge ich jetzt meinen Datensatz hinzu?

    4 Mal editiert, zuletzt von #lemon (10. April 2014 um 15:37)

    • Offizieller Beitrag

    Ich schließe diesen Thread (vorerst)!
    Solange Du nicht konkret sagst was Du vorhast, werden wir hier keine weitere Hilfe anbieten.

    Edit: Thread ist wieder offen! Die AGB der Seite verbieten das Vorhaben nicht. Aber bitte hier keine Links zu der Seite posten!

  • Ich schließe diesen Thread (vorerst)!
    Solange Du nicht konkret sagst was Du vorhast, werden wir hier keine weitere Hilfe anbieten.

    Edit: Thread ist wieder offen! Die AGB der Seite verbieten das Vorhaben nicht. Aber bitte hier keine Links zu der Seite posten!


    Kein Sorge, mach ich nicht ;)

    Und ein Lösung des Problems ist auch schon gefunden, es ist eigentlich ganz simpel.

    [autoit]

    $file=FileOpen("a.txt",0) ; a.txt ist die Liste der Wortgruppen
    $filedata=FileRead($file)
    $textarray=StringSplit($filedata,@CRLF,1)

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

    Send($textarray[Random(1,UBound($textarray)-1,1)]) ; gibt eine zufällige Wortgruppe aus :)

    [/autoit]

    Danke dafür an Kanashius