1. Liebe Forumsgemeinde,

    aufgrund der Bestimmungen, die sich aus der DSGVO ergeben, müssten umfangreiche Anpassungen am Forum vorgenommen werden, die sich für uns nicht wirtschaftlich abbilden lassen. Daher haben wir uns entschlossen, das Forum in seiner aktuellen Form zu archivieren und online bereit zu stellen, jedoch keine Neuanmeldungen oder neuen Kommentare mehr zuzulassen. So ist sichergestellt, dass das gesammelte Wissen nicht verloren geht, und wir die Seite dennoch DSGVO-konform zur Verfügung stellen können.
    Dies wird in den nächsten Tagen umgesetzt.

    Ich danke allen, die sich in den letzten Jahren für Hilfesuchende und auch für das Forum selbst engagiert haben. Ich bin weiterhin für euch erreichbar unter tti(bei)pcwelt.de.
    Dismiss Notice

IRC-script (remote-Teil)

Discussion in 'Web-Know-how für die Homepage' started by dragon_MF, May 13, 2003.

Thread Status:
Not open for further replies.
  1. dragon_MF

    dragon_MF Megabyte

    Hallo!

    Ich versuche vergeblich ein script auf die Beine zu stellen, dass einen user nach eingabe eines wortes erst verwarnt und beim zweiten mal kickt:

    on *:text:*fuck*:#:{
    if (%fuck[$nick] == 1) {
    /kick $chan $nick kicked
    /set %fuck[ $+ $nick ] 0
    }
    else {
    /notice $nick Warning!!! No bad language! Next time you\'ll get kicked!
    /set %fuck[ $+ $nick ] 1
    }
    }

    Nach dem ersten durchlauf hat er folgende Variable gesetzt (wenn ein user "fuck" gesagt hat):
    %fuck[c_keen^server ] 1
    (der nick war in der Tat c_keen^server)
    Nur beim nächsten mal scheitert der vergleich, ob die variable 1 ist, wie nenne ich die an der Stelle vor dem == ?
    Gruß

    Martin
     
  2. dragon_MF

    dragon_MF Megabyte

    Leider bringt auch das keine Veränderung... ;(
    Die Idee einer Liste ist ja gut, nur das System des Warnens und Kickens muss ja auch so erstmal funktionieren...
     
  3. tiax

    tiax Byte

    Hm, also entweder wir wurschteln jetzt ne Weile an deinem Script herum, was leider etwas unbeholfen ist

    Oder wir schreiben gleich ein neues, was zwar bisserl längern und anfangs schwer zu verstehen sein wird, aber ich werde es dokumentieren.

    Das wird so funktionieren: Du hast eine normale Variable, in die du sämtliche Badwords reinpackst... immer, wenn jemand was sagt, macht mirc ne Schleife durch diese Worte und checkt jedes einzeln.

    Das Problem mit der Warnung liegt wohl am If-Statement.
    Mit if (%fuck. $+ [ $nick ] == 1) sollte das jedoch gehen

    hoff ich ;)
     
  4. dragon_MF

    dragon_MF Megabyte

    Ich muss Abstände lassen, damit mIRC merkt, dass es dazugehört? Klingt irgendwie paradox...aber meinetwegen...
    Ich nehme mal an, vor dem einen nick hast du ein $ vergessen...daher hab ich das mit reingenommen, falls das Absicht war, sag Bescheid.
    Danke für den Tipp mit der Zeit. Ich wusste nicht, dass mIRC sich das nach einem neustart merkt.

    Hm, mein script sieht jetzt wie folgt aus:
    on *:text:*fuck*:#:{
    if (%fuck. $+ $nick == 1) {
    /kick $chan $nick kicked
    /set %fuck. $+ $nick 0
    }
    else {
    /notice $nick Warning!!! No bad language! Next time you\'ll get kicked!
    /set %fuck. $+ $nick 1
    }
    }

    Aber funktionieren tut es immernoch nicht. Die Variable heißt nun %fuck.c_keen^server und steht nach einem ersten "fuck" auf 1 und die warnung funzt demensprechend auch. Aber beim zweiten "fuck" kommt wieder die warnung zum "bösen user", d.h. die Bedingung wird dementsprechend nicht erfüllt, damit er "abbiegt" um zu kicken...

    Gibt es eigentlich eine möglichkeit neben fuck auch andere Wörter darin aufzunehmen, ohne das komplette teil nochmal zu kopieren?
    Gruß

    Martin
     
  5. tiax

    tiax Byte

    Hi

    Damit mIRC kapiert, was zu der Variable gehört und was nicht (die Evaluation Brackets: ] gehören zB nicht dazu), musst du Abstände lassen, das ist leider ein wenig sperriger als bei andren Programmiersprachen. Die Abstände kannst du ja dann einfach mit $+ wieder ausgleichen.

    In deinem Fall brauchst du aber gar keine Evaluation Brackets, einfach /set %fuck. $+ nick 1 und das geht. Das selbe auch beim If-Statement: if (%fuck. $+ $nick == 1) { etc }

    Den Punkt hab ich nur aus übersichtlichkeitsgründen rein getan, damit der nick net direkt am fuck hängt ;)

    Ausserdem solltest du evtl über /set -u120 oder so nachdenken, ein Zeitlimit halt. Sonst kanns ja sein, dass der Kerl einmal im Jahr Fuck sagt und paar Monate später nochmal und fliegt raus.
    Näheres dazu findest du unter /help /set
     
  6. tiax, Du scheinst Dich damit auszukennen.
    Wie müsste ein Autojoin bei invtite script aussehen?
    Ich habe versucht mit nem script, welchen bestimmt Sätze erkennt und darauf (mit "/join #raum") antwortet, aber wenn Q oder L mich einladen, dann rührt sich da trotzdem nix, weils wohl keine Texte im Scriptsinne sind.
    Kannst Du mir helfen?
     
  7. dragon_MF

    dragon_MF Megabyte

    Ich weiß nicht, welche events nettalk so kennt, aber mIRC z.B. kennt den event ON INVITE selbst, du musst nur den entsprechenden handler dazu benutzen
    Code:
    on *:INVITE:#:/join $chan
    Wenn du nur auf bestimmte channel-einladungen reagieren willst, kannst du das auch einschränken:
    Code:
    on *:INVITE:#windows:/join $chan
    (mehrere channels sind dabei mittels Kommata aufzählbar.
     
Thread Status:
Not open for further replies.

Share This Page