IRC-script (remote-Teil)

Dieses Thema im Forum "Web-Know-how für die Homepage" wurde erstellt von dragon_MF, 13. Mai 2003.

Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. dragon_MF

    dragon_MF Megabyte

    Registriert seit:
    17. August 2001
    Beiträge:
    1.109
    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

    Registriert seit:
    17. August 2001
    Beiträge:
    1.109
    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

    Registriert seit:
    11. Dezember 2000
    Beiträge:
    11
    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

    Registriert seit:
    17. August 2001
    Beiträge:
    1.109
    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

    Registriert seit:
    11. Dezember 2000
    Beiträge:
    11
    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. praeclarus

    praeclarus ROM

    Registriert seit:
    1. September 2007
    Beiträge:
    1
    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

    Registriert seit:
    17. August 2001
    Beiträge:
    1.109
    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.
     
Status des Themas:
Es sind keine weiteren Antworten möglich.

Diese Seite empfehlen