| Autore: Kaesar83 | Data: 2005-04-29 |
| Modificato:
2005-05-10 |
Letture: 2494 |
|
Beh ragazzi ora voglio cercare di spiegare come fare un piccolo script che diversi di voi potrebbero considerare utile e che ho anche fatto su richiesta di un utente nel nostro forum http://forum.irc-zone.org. In parole povere vi spiegherò come sviluppare un codice che riesca a "punire" con kick e/o kick/ban quegli utenti poco civili ed educati che conducono le loro chattate in maniera VOLGARE!^__^ Per essere chiari...usano parolacce in canali in cui noi vorremmo che queste venissero bandite! Parto dal presupposto che i modi di fare scripting sono molteplici a seconda dell'ispirazione e della richiesta, quindi vi dico in anticipo che di sicuro ci saranno altri modi, che anche io conosco, ma questo che sviluppai tempo fa è abbastanza semplice e funge che è una bellezza!:) Iniziamo; Come primo passo vi suggerirei di creare nella root di mIRC o in una cartella (come preferite) un file di testo col nome badwords.txt (Nome che potrà essere cambiato in qualsiasi altro si voglia, l'importante è andare a cambiarlo anche nel codice che vi presenterò a breve) e di inserire rigo per rigo tutte quelle parole che voi ritenete volgari o che comunque non vorreste venissero dette in un vostro canale. Mi raccomando, ogni rigo una parola, in questa maniera: scemo stupido cretino ecc... come seconda cosa creamo l'alias che io chiamerò bad alias bad { var %o 1 while (%o <= $lines(badwords.txt)) { if ($read(badwords.txt,%o) isin $1) && (%bad [ $+ [ $nick ] ] == $nick) { mode $chan +b $address($nick,2) kick $chan $nick Ti avevo avvertito, no parolacce qui dentro! unset %bad [ $+ [ $nick ] ] } elseif ($read(badwords.txt,%o) isin $1) { kick $chan $nick No parolacce please! set %bad [ $+ [ $nick ] ] $nick .timer 1 300 unset %bad [ $+ [ $nick ] ] } inc %o } } Beh vi chiederete, "sembra carino", ma cosa significa!?:) Avete ragione...vi spiegherò un pochetto come va la storia! var %o 1 setta una variabile, nel nostro caso %o, al valore 1 poi con il while creo un ciclo, cioè, finchè il valore della variabile è inferiore o uguale al numero di righe (quindi di parolacce) contenute nel file badwords.txt allora passa all'if che a sua volta fa un controllo; se $read(badwords.txt,%o) che identifica la parola relativa alla %o riga, è presente nel testo che voglio esaminare ($1) ed esiste già una variabile del tipo %badKaesar83 (facendo finta che sia io l'utonto che dice parolacce in canale :P) allora mi banna e kikka unsettando poi la variabile. Se invece elseif ($read(badwords.txt,%o) isin $1) solo la parola detta è presente nel testo da esaminare allora kikka, setta la variabile del tipo %badKaesar83 e fa partire un timer che dopo 5 minuti unsetterà la variabile %badKaesar83 Questo timer serve sostanzialmente per evitare che un nick abusi con il dire parolacce, però se per esempio durante la chattata è scappato un "cazzo" come spesso capita allora ci si beccherà solo un kick e non un kick/ban che verrà dato nel caso del primo if, cioè nel caso la variabile sia già settata quindi si siano dette due parolacce nel giro di 5 minuti (ovviamente quel 300 secondi, cioè 5 minuti, è simbolico poi ognuno potrà metterci i secondi che ritiene più opportuni ^__^) Dopo questi controlli viene incrementata la variabile a 2 e si ripete il ciclo sino a quando il valore di %o non supera quello delle righe del file badwords.txt Spero abbiate capito, la cosa sembra un pò contorta ma di fatto è una caxxata enorme :P se avete un pò di praticità con if e while vi renderete conto che è davvero semplice! Fatto ciò uno potrebbe chiedersi..."si ok ho capito è semplice ma come faccio a farlo fungere?" Bella domanda, adesso arriva la terza e semplicissima parte del nostro tutorial :) Basta un evento on text che farà partire quell'alias come?...ecco qui: on *:text:*:#:{ if ($nick !isop #) && ($nick !isvoice #) && ($nick !ishop #) { $bad($1-) } } semplicissimo non trovate? Per qualsiasi parola detta in canale farà prima un controllo sull'utente, cioè se è un operatore, un halfop o voice del canale e poi farà partire l'alias creato tramite $bad($1-) con $1- che identifica il testo scritto in canale e di fatto è quel $1 che troverete in quell'if che ho spiegato prima cioè if ($read(badwords.txt,%o) isin $1) ricordate?^__^ Beh con questo è tutto, ora vi scrivo l'intero codice da inserire direttamente nei propri remote: on *:text:*:#:{ if ($nick !isop #) && ($nick !isvoice #) && ($nick !ishop #) { $bad($1-) } } alias bad { var %o 1 while (%o <= $lines(badwords.txt)) { if ($read(badwords.txt,%o) isin $1) && (%bad [ $+ [ $nick ] ] == $nick) { mode $chan +b $address($nick,2) kick $chan $nick Ti avevo avvertito, no parolacce qui dentro! unset %bad [ $+ [ $nick ] ] } elseif ($read(badwords.txt,%o) isin $1) { kick $chan $nick No parolacce please! set %bad [ $+ [ $nick ] ] $nick .timer 1 300 unset %bad [ $+ [ $nick ] ] } inc %o } } Ciao ragazzi e alla prossima!
|