Archivi tag: mirc

Script di mIRC per controllare e inviare al canale l’uptime del pc

Non sarebbe simpatico poter scrivere il comando /uptime e inviare allla finestra corrente un messaggio come questo?

Questo è apparso appena ho scritto /uptime in mIRC. Il mio nick è stato rimosso per ragioni di privacy

 

E’ molto più completo di un semplice script per l’uptime, visto che è in grado di ricordare il record che si è raggiunto!

Ovviamente richiede dello scripting. Come al solito, vediamo il codice funziona, e commentiamolo.

Aprite il pannello Aliases, premendo il pulsante , e aggiungete questo codice alla fine:

/checkuptime //if ($calc($ticks / 1000) > %UptimeRecord) //set %IlGiorno $asctime(d mmmm) | //if ($calc($ticks / 1000) > %UptimeRecord) //set %UptimeRecord $calc($ticks / 1000)

/uptime {
  //if ($calc($ticks / 1000) > %UptimeRecord) //set %UptimeRecord $calc($ticks / 1000)  
  //say 9,1 It is $day $+ , $time $+ , here in the Italian slumps, and 4Windows $os 9runned *cough*smoothly*cough* for8 $replace($duration($calc($ticks / 1000),2),wk,$chr(32) $+ Week,hr,$chr(32) $+ Hour,min,$chr(32) $+ Minute,day,$chr(32) $+ Day) $+ 9 $+ . Record:7 $replace($duration(%UptimeRecord,2),wk,$chr(32) $+ Week,hr,$chr(32) $+ Hour,min,$chr(32) $+ Minute,day,$chr(32) $+ Day) 9( $+ %IlGiorno $+ )
}

Ora dovete accedere al pannello Remote, premendo il pulsante , e aggiungete questa riga:

on 1:START:/timeruptime 0 40 /checkuptime   

o, se già avete un on START seguito da { e altre righe, inserite "/timeruptime 0 40 /checkuptime" senza virgolette subito prima di } alla fine.

Dovete aggiungere una riga anche al pannello Variable, accessibile dal pannello Remote e Aliases, cliccando sulla cartelletta "Variables"; qui aggiungete questa riga:

%UptimeRecord 0

premete OK e riavviate mIRC.

Questo script controllerà gni 40 secondi se l’uptime è maggiore di quello registrato, e, se sì, aggiorna il record, assieme alla data odierna. Potete cambiare la frequenza di controllo aumentato il valore dopo "timeruptime", da 40 a 60 ad esempio, per controllare ogni minuto, o a 3600 per ogni ora.

Inutile a dirsi, potete ovviamente cambiare anche il messaggio, semplicemente modificando le scritte ed i codici di controllo dei colori.

E’ tutto, scrivete /uptime alla fine per vedere il risultato.

script mIRC per messaggi di quit personalizzati

Forse non sapete che usando un semplice /quit in mIRC, o premendo il pulsante per chiudere il programma, a meno che non abbiate installato degli script come Polaris, o simili, gli altri vedono un semplice:

*** Quits: Yournick (your@mask..in.here) (Quit: )

Noioso! Se avete Polaris, gli altri vedranno invece:

*** Quits: Yournick (your@mask.in.here) (Quit: (I was using Polaris IRC 2001) Version:(4.0 Platinum) Webpage:(http://www.polaris-central.com) Wasted:(1 Hour 38 Minutes and 36 Seconds Online))

o qualcosa di simile.

Per niente originale.

Ora, supponete che il vostro messaggio sia qualcosa come:

*** Quits: Yournick (your@mask.in.here) (Quit: As soon as I get through with you, you'll have a clear case for divorce and so will my wife. - Groucho Marx)

Molto migliore, almeno come la vedo io. Se volete dei messaggi di quit simpatici come questo, seguite le istruzioni.

Per prima cosa avete bisogno di un file di testo con le frasi che volete usare. Qui potete trovarne uno. Accertatevi di salvare il file nella cartella di mIRC, o semplicemente fate Click destro > Salva sul link.

Potete fare un file voi stessi, purché premiate invio tra una riga e l’altra, e non ci siano vuoti tra le righe, salvate quindi il file nella cartella di mIRC.

Aprite il pannello degli alias, premendo il pulsante , oppure andando in [Tools > Aliases]

I discovered the GIF Uniform palette is the best for windows, thanks to this screenshot ;-)
Questo è come l’alias /quot appare nel pannello degli Alias

 

Questo è ciò che dovete scrivere nel pannello (all’ultima riga):

/quot {
  //if (%Conta == $null) //set %Conta 0
  /inc %Conta 
  if (%Conta > $lines(Quotations.txt)) set %Conta 1
  //quit $read -l [ $+ [ %conta ] ] Quotations.txt
}

supponendo che abbiate chiamato il file Quotations.txt come ho fatto io, e l’abbiate messo nella stessa cartella di mIRC, come vi ho detto di fare.

Ora, ciò che dovete fare è usare /quot invece di "/quit messaggio" per uscire, e ogni volta verrà inviato un messaggio differente.

Script di mIRC completo per la gestione dei suoni di sistema

Questo script fa tutto il lavoraccio di gestire gli eventi che in mIRC sono programmati per generare dei suoni. Li intercetta, e, se avete attivato i suoni, suonerà il WAV che avete scelto (nello ZIP ci sono anche i WAV che uso io).

Se volete scaricare lo ZIP, eccolo qui. Tutte le istruzioni per avviarlo sono include nel file TXT, mentre qui potete vedere come personalizzarlo, e sapere come funziona. I WAV sono stati fatti perlopiù con MS Talkit, che potete trovare nella sezione Downloads/AudioVideo, nel caso vogliate farne degli altri voi stessi; ho incluso le istruzioni per creare file WAV con Talkit nel menù inglese (attivate il menu inglese e cercate nella sezione HowTo’s.

Segue il listato dello script:

alias sounds {
  //if ($1 == on) { /set %Soundon 1 | echo -a  $+ $color(info text).dd $+ *** Sounds have been activated }
  //if ($1 == off) { /set %soundon 0 | echo -a  $+ $color(info text).dd $+ *** Sounds have been disabled }
}

alias checkquery //if (($query($1).addr != $null) && (%Soundon == 1)) /splay query.wav

CTCP *:DCC:*:{
  if (($2 == send) && (%soundon == 1)) /splay dcc send.wav
}

on *:GETFAIL:*.*:{
  //if (%Soundon == 1) /splay dcc failed.wav
}

on *:FILERCVD:*.*:{
  //if (%Soundon == 1) /splay dcc finished.wav
}


on 1:OPEN:?:*:{
  //if (($pos($strip($1-),Matches for,1) == 1) && (%Soundon == 1)) /splay locator.wav
  else /timer 1 1 checkquery $nick
}

on *:NOTICE:*:*:{
  //if ((($pos($strip($1-),Requested File's on its way! Low CPS Limit:,1) != $null) || ($pos($strip($1-),is on its way.,1) != $null)  || ($pos($strip($1-),Now Sending!,1) != $null)) && (%Soundon == 1)) { /splay File Arriving.wav | goto bother }

  //if ((($pos($strip($1-),is on its way.,1) != $null) || ($pos($strip($1-),Now Sending!,1) != $null)) && (%Soundon == 1)) { /splay File Arriving.wav | goto bother }

  //if ((($pos($strip($1-),You are in que now with number,1) != $null) || (($pos($strip($1-),I have added,1) != $null) && ($pos($strip($1-),in my que,1) != $null)) && (%Soundon == 1))) { /splay Queued.wav | goto bother }

  //if ((($pos($strip($1-),You are already in my que list with,1) != $null) || ($pos($strip($1-),Sorry I am totally maxed out even in que list,1) != $null)) && (%Soundon == 1)) { /splay Queue Finished.wav | goto bother }

  //if ((($pos($strip($1-),Password accepted for,1) != $null) && ($nick == NickServ)) && (%Soundon == 1)) { /splay Identified.wav | goto bother }

  //if ($pos($1-,server flood protection activated,1) != $null) goto bother
  //if ($pos($1-,has opped,1) != $null) goto bother
  //if ($pos($1-,has deopped,1) != $null) goto bother
  //if ($poscs($1-,DCC Send,1) != $null) goto bother

  //if (%Soundon == 1) /splay notice.wav

  :bother
}

on *:TEXT:*:#:{
  //if ($pos($1-,$me,1) != $null) {//if (%Soundon == 1) /splay chimes.wav//if ($window(@calls,1) == $null) /window -n @calls//aline -hp @calls 11 $chan 9 [ $time ] 7 < $nick > 8 $1-
  }
}

on *:CONNECT://if (%Soundon == 1) /splay Connected.wav

on *:DISCONNECT://if (%Soundon == 1) splay Disconnected.wav

E segue anche la spiegazione.

I primi tre eventi (CTCP, on FILERCVD, on GETFAIL) si attivano rispettivamente quando un file arriva per DCC, quando il trasferimento viene completato, e quando si interrompe.

Il trigger on OPEN si avvia quando si apre una finestra di query. Prima controlla che non si tratti del risultato di ricerca di uno script per condivisione MP3, e se no, fa partire il suono dopo 1 secondo; questo succede per dare tempo al mio script antispam (controllate nella sezione IRC per scaricare anche quello) di chiudere la finestra se si tratta di spam.

L’evento on NOTICE controlla molte cose. Se NickServ ha ricevuto la vostra password, se la vostra richiesta di un MP3 è stata accodata o se sta per essere inviata (compatibile solo con SpR e SDFind), ignora molti messaggi inutili come op, deop, flood protection, e se nessun dei casi precedenti è verificato, avvia un suono generico di "notice".

L’ultimo, on TEXT, fa quello che mi piace di più: controlla se qualcuno scrive il vostro nick nel canale, e avvia il suono chimes.wav, mettendo in una finestra a parte la riga incriminata per permettervi di leggerla più tardi. Due cose: primo, potreste volerlo disabilitare per ragioni specifiche (esempio, siete un op, date il voice a qualcuno, ed il suo stupidissimo script vi ringrazia in automatico – questo sì che è inutile!!) e allora o staccate il suono del tutto (cancellando la linea che contiene "chimes.wav") o aggiungete qualche filtro per quelle evenienze (ma dovete essere un pò pratici di scripting); secondo, il log nella finestra separata per me è molto utile, ma se a voi non piace, potete rimuoverlo cancellando le due righe che contengono "@calls". Considerazione finale, questa parte può essere "inefficiente", nel senso che controlla tutto quello che viene scritto in tutti i canali, e occupa la CPU (poco, comunque). Io ho un singolo, grande on TEXT che controlla molte cose, ma se voi avete già altri script installati, aggiungere questo vi farebbe usare ancora più CPU.

 

Ora, come usarlo? Semplice, dopo averlo caricato cone le istruzioni presenti nel TXT, scrivete il comando /sounds on per inizializzarlo, e sarà pronto a suonare i WAV. Volete vedere un film o giocare? Scrivete il comando /sounds off e mIRC non vi disturberà.

How to cutomize it? Basically, you can change the name ot location of the WAVs, delete some parts you’re not interested in, but mostly, add other handlers, if you can, and care. Only thing: mIRC will continue to beep if someone writes other lines in a query after the first one, even if sounds are off. I could change that, but I was too lazy in that moment; I don’t even plan to do it in the future… taje it as a good excercise on scripting .
Come personalizzarlo? Fondamentalmente, potete cambiare il nome o la posizione dei WAV, concellare qulce parte in cui non siete interessati, ma principalmente, aggiungendo altri controlli, se ne siete capaci. L’unica pecca è che mIRC continuerà a fare BIP se ci sono messaggi in una query dopo la prima riga, anche se i suoni sono stati disattivati. Potrei correggerlo, ma non ne ho voglia.

Script di mIRC per la formattazione in testo colorato delle abbreviazioni come LOL

Suppongo che tutti sappiate cosa significhino lol rofl lmao afk ecc ecc, per cui andrò direttamente al punto: non vi piacerebbe che ogni volta, quando in IRC scrivete un anonimo, pallido, brevemente insignificante "lol", mIRC invece di "lol" scrivesse qualcosa come Laughing Out Loud?

Sarebbe molto più simpatico no? Sìsì va bene, ora non rompete con qualcosa come "Perché dovrei inviare una trentina di bytes quando di solito 3 sono sufficienti? Moltiplico per 10? Teribbile!" Chi se ne frega, se non siete interessati leggete qualche altra pagina del sito.

Potete usare questo addon, invece di scrivere il codice voi stessi. Le istruzioni sono incluse nel file TXT zippato. Vi consiglio di continuare a leggere comunque, per imparare come modificare lo script.

Questo è quello che finirà nel pannello Remote, accessibile col pulsante in mIRC:

on *:INPUT:*:{
  var %C1 = 8
  var %C2 = 3
  //if ($left($1-,1) != /) {
    //if ($1- == lol) { 
      //say  $+ %C1 $+ L $+ %C2 $+ aughing  $+ %C1 $+ O $+ %C2 $+ ut  $+ %C1 $+ L $+ %C2 $+ oud 
      halt
    }

    //if ($1- == brb) { 
      /say  $+ %C1 $+ B $+ %C2 $+ e  $+ %C1 $+ R $+ %C2 $+ ight  $+ %C1 $+ B $+ %C2 $+ ack 
      halt
    }

    //if ($1- == afk) { 
      /say  $+ %C1 $+ A $+ %C2 $+ way  $+ %C1 $+ F $+ %C2 $+ rom  $+ %C1 $+ K $+ %C2 $+ eyboard 
      halt
    }

    //if (($1- == rofl) || ($1- == rotfl)) { 
      /say  $+ %C1 $+ R $+ %C2 $+ olling  $+ %C1 $+ O $+ %C2 $+ n  $+ %C1 $+ T $+ %C2 $+ he  $+ %C1 $+ F $+ %C2 $+ loor  $+ %C1 $+ L $+ %C2 $+ aughing
      halt
    }

    //if ($1- == lmao) { 
      /say  $+ %C1 $+ L $+ %C2 $+ aughing  $+ %C1 $+ M $+ %C2 $+ y  $+ %C1 $+ A $+ %C2 $+ $$  $+ %C1 $+ O $+ %C2 $+ ff
      halt
    }
  }
}

Questo non è uno script esaustivo, non supporta tutti gli acronimi esistenti al mondo, ma "lol", "lmao", "rofl", "rotlf", "brb", "afk", sostuiti con Laughing Out Loud, Rolling On The Floor Laughing, Away From Keyboard, eccetera, mentre quelli che mancano potrete aggiungerli da voi facilmente, basta continuare a leggere

Ed ora spieghiamo come funziona lo script.

I trigger "on INPUT" funzionano quando premete il tasto Invio dopo aver scritto qualcosa, in qualunque finestra, sia canali che query che DCC Chat e Fileserver. Per prima cosa, viene controllato che il primo carattere sia diverso da "/", in modo da non interferire con i comandi (anche se non è strettamente necessariocome controllo, infatti è stato aggiunti per usi futuri). Poi controlla se la stringa che avete scritto è uguale ad una di quelle riconosciute, per cui se scrivete "lol" funzionerà, non andrà bene se scrivete "lol come è divertente". E’ un limite, ma si sopravvive. Le variabili %C1 e %C2 sono usate per cambiare i colori preferiti da un unico punto invece di modificare tutte le righe. Il comando halt serve ad evitare che mIRC, dopo che lo script ha scritto la riga modificata, invii anche la riga che avete scritto all’inizio.

Per aggiungere acronimi a piacimento, basta copiare l’insieme di righe che si rpete, da "//if ($1- ==" fino ad halt seguito da }. Dopo di ciò, modificate la stringa "($1- == XX)" con il vostro acronimo desiderato, ad esempio "($1- == wysiwyg)", e cambiate anche il testo che segue dopo /say, in base all’acronimo: prima della lettera iniziale di ogni parola inserite " $+ %C1 $+ " senza virgolette, ma conservando gli spazi, quindi dopo la lettera iniziale scrivete " $+ %C2 $+ ", senza virgolette ma con gli spazi, seguito dal resto della parola; alla fine avrete:

//if ($1- == wysiwyg) {
  /say  $+ %C1 $+ W $+ %C2 $+ hat  $+ %C1 $+ Y $+ %C2 $+ ou  $+ %C1 $+ S $+ %C2 $+ ee  $+ %C1 $+ I $+ %C2 $+ s  $+ %C1 $+ W $+ %C2 $+ hat  $+ %C1 $+ Y $+ %C2 $+ ou  $+ %C1 $+ G $+ %C2 $+ et
  halt
}

La guida è completa (potreste aver bisogno di un QI di almeno 80 per capirla).

Script di mIRC per cercare un IP nei propri canali

Forse qualche volta vi siete chiesti di chi era l’IP di quella persona che era appena entrata nel vostro server FTP, o che stava tempestandovi di port scan. Forse, quell’IP apparteneva a qualcuno che si trovava in uno dei vostri canali, e vedendovi ha deciso di prendervi come bersaglio. Come accorgersene? Usando il mio script per fare lo scan dei canali in cui attualmente ci si trova, e vedere se effettivamente c’è qualcuno che corrisponde a quell’indirizzo.

La routine appare così:

/findip {
  //set %SearchedIP $1
  set %IPCheck 1
  var %NCanali
  //set %NCanali $chan(0)
  var %CrChan
  set %CrChan 1
  var %TempMask
  :ChanLoop
  //set %TempMask *!*@ $+ $1
  //if ($ialchan(%TempMask,$chan(%CrChan),1).nick != $null) //echo 9 $ialchan(%TempMask,$chan(%CrChan),1).nick in $chan(%CrChan)
  /inc %CrChan
  //if (%CrChan > %NCanali) goto end
  goto ChanLoop
  :end
  set %IPCheck 0
}
       

e avete bisogno di inserirla nel pannello degli Aliases in mIRC (accessibile premendo il pulsante .

Quando volete cercare un IP, scrivete, dovunque, sia un canale o la finestra di status: /findip <IP o alias>… per esempio:

/findip 142.214.43.4

oppure

/findip ppp-31xq.nocs.springnets.pk

E’ meglio cercare entrambi, per cui se avete solo l’IP, eseguite un comando /dns, per esempio:

/dns 142.214.43.4

e nella finestra di status troverete il risultato della ricerca (oppure se state usando il mio script per il /dns lo vedrete nella stessa finestra in cui avete digitato). Può esser possibile associare un nome all’IP, che nel caso illustrato è "ppp-31xq.nocs.springnets.pk", oppure è possibile che l’IP non sia risolvibile a nessun nome, ed otterrete il messaggio "Unable to resolve"; in questo caso comunque il comando /findip rimarrà completamente funzionale usando solo l’IP.

Se invece avete solo il nome, usate sempre il comando /dns:

/dns ppp-31xq.nocs.springnets.pk

e questa volta sicuramente riceverete l’IP in risposta alla richiesta.

Quindi, quando avete l’IP e l’alias (quest’ultimo non sempre disponibile), usate il comando /findip per entrambi. Se il computer corrispondente a quell’IP o alias è in uno dei vostri canali, lo script visualizzerà il nick e i canali in cui si trova, altrimenti non visualizzerà nulla. Non dovete aspettare molto, se ci sono risultati lo script li restituisce in pochi secondi.

Script di mIRC per trovare l’IP di altre persone in un canale

In mIRC potete vedere quale IP appartiene ad un utente. Questo si ottiene col comando /dns, così ad esempio se volete sapere qual è l’IP di Jogi potete usare:

/dns Jogi

e vedrete, dopo pochi secondi, l’IP e l’alias (se ne esiste uno) di Jogi nella finestra Status. Allora qual è il punto vi chiederete, una pagina HTML per parlare di un singolo comando? Non esattamente. é un pò una scocciatura dover controllare sempre nella finestra di status per vedere se l’IP è stato risolto, così faremo uno script che invia le informazioni nella finestra attualmente aperta, qualunque essa sia.

Potete usare questo addon per caricare lo script in mIRC, scompattate lo ZIP e leggete le istruzioni nel TXT (inglese)

Qui di seguito è spiegato come funziona.

Nel pannello remote si aggiunge:

on *:DNS://echo -a Resolved $nick to: Name - $naddress , IP - $iaddress

e il risultato, dopo che avrete fatto un /dns sull’utente Joey42 apparirà nella finestra attuale nel formato:

Resolved Joey42 to: Name - co3061808-a.eburwd1.vic.optushome.com.au , IP - 203.164.127.151

Nel caso in cui l’IP non abbia un corrispondente indirizzo testuale, il campo dopo Name sarà vuoto.

Potete anche controllare a quale IP corrispondono indirizzi web, ad esempio www.microsoft.com:

/dns www.microsoft.com

il risultato sarà:

Resolved to: Name - www.microsoft.com , IP - 207.46.230.219

e anche vedere qual è l’indirizzo testuale corrispondente ad un IP:

/dns 65.92.216.192

con output:

Resolved to: Name - HSE-Montreal-ppp3473182.sympatico.ca , IP - 65.92.216.192

[Aggiornato il 15 Sett 2010]
Diversi visitatori nei commenti mi hanno chiesto perché, quando lanciano il comando /dns nomeutente, ricevono uno strano codice al posto dell’indirizzo IP (come ad esempio 5B26E798.A7F81C6C.2CF41D6B.IP); questo ovviamente non è né un IP né un alias nominativo, ma si tratta semplicemente del vostro server che è impostato su un alto livello di sicurezza, ed impedisce agli utenti di conoscere gli IP delle altre persone connesse, e quindi restituisce quel codice, che è univoco per il singolo utente, ma da cui non è possibile risalire all’indirizzo IP reale. Questa è una limitazione di per sé non aggirabile, anche se potete provare a richiedere una “query DCC” all’utente in questione, cioè una sessione di chat privata in cui i vostri PC sono collegati direttamente l’uno all’altro; se l’altro utente accetta la vostra richiesta, ognuno di voi due potrà vedere l’IP dell’altro, siccome i vostri computer sono collegati direttamente tra loro senza intermediazione del server.

  This article has been Digiproved

Script di autoaway per mIRC

Questo è uno script piccolissimo ma funzionale, che va d’accordissimo con la funzionalità di "segreteria" del mio script antispam. Succede spesso che si lasci il PC acceso a scaricare, e potendo controllare in mIRC quanto tempo è passato dall’ultima volta che avete inviato una riga di testo si ricava il tempo durante il quale si è stati "away". Se questo supera una certa soglia, si può impostare l’away ocn il comando /away.

Potete usare questo addon per caricare lo script in mIRC, scomprimete lo ZIP e leggete le istruzioni (in inglese) presenti nel TXT. Per avere maggiori dettagli sullo script potete continuare a leggere.

Questo è quello che va aggiunto agli alias:

/CheckAway {
  //if (($idle > 300) && ($away == $false)) //away 8,2 I am away after 5 idle minutes
  //if (($idle < 300) && ($away == $true)) /away
}
       

Potete cambiare il tempo prestabilito come volete, io l’ho impostato a 5 minuti (300 secondi), e per cambiare il messaggio di away sbizzarritevi come volete."8,2" serve a cambiare il colore del messaggio, se non vi piace modificatelo o toglietelo.

Questo è quello che dovete aggiungere al pannello Remote:

on *:CONNECT:/timerChkAway 0 10 /CheckAway
       

Script di mIRC per Auto Identify e Auto Op su DALnet

Se siete in DALnet da diverso tempo avrete imparato ad usare il comando /nickserv identify password oppure /msg nickserv@services.dal.net identify password per poter usare il vostro nick registrato. Però primo, è una cosa noiosa da fare ogni volta, e secondo, anche se avete un piccolo script che lo fa appena vi connettete non sempre vi andrà bene, perché sia NickServ che ChanServ a volte si disconnettono, si resettano, si drogano, e chi più ne ha più ne metta. Insomma, poteste ritrovarvi come Guest quando meno ve lo aspettate.

Vi spiegherò qui come risolvere queste vicissitudini con uno script che non sarà perfetto, ma che tuttora mi va a genio.

Potete usare questo addon per caricare lo script in mIRC invece di scrivere il codice a mano nella finestra Remote. Scaricato lo ZIP, leggete il TXT per le istruzioni (in inglese, quelle non mi andava di tradurle). Se volete essere in grado anche di modificarlo voi stessi, oppure siete curiosi di sapere come funziona, continuate a leggere.

(Nota) Lo script è stato recentemente aggiornato per correggere una debolezza che in alcuni casi comportava il flood dei servizi, richiedendo continuamente l’identificazione e l’op fino a generare un avviso di NickServ e ChanServ. Una volta sono persino stato buttato fuori da un IRCop. Non ci sono commenti alle suddette modifiche nei successivi paragrafi, ma quello che fanno è sostituire la richesta diretta di identify e op con una procedura intermedia. Questa controlla dei flag (una variabile per ogni nick e ogni canale), e se non sono impostati richiede l’op o l’identify, impostandole per 60 secondi, nei quali non saranno possibili ulteriori richieste.

I messaggi che vi manda NickServ quando vi connettete, "This nick is owned by someone else…" "If this is your nick…" "Password accepted for…" si chiamano notices. Lo script aspetta che ne arrivi una, e se viene da NickServ allora controllerà se vuole la password, se la password è stata accettata, o ancora se ha cambiato il vostro nick perché non gli è arrivata la password nel tempo prestabilito (e succede).

on *:CONNECT:{
  /dcc packetsize = 4096
  /pdcc 2147483647
  /fsend on
  /joinall
}


on 1:START:/timerIdent 0 40 /ident

on *:NOTICE:*:*:{
  if (($pos($strip($1-),Password accepted for,1) != $null) && ($nick == NickServ)) {
    //if $pos($strip($1-),YourMainNick,1) != $null) {
      /timer 1 20 /autoop 
      /nick YourMainNick
    }
    goto bother
  }
  if (($pos($strip($1-),This nick is owned by someone else. Please choose another.,1) != $null) && ($nick == NickServ)) /id
  if (($pos($strip($1-),Your nick has been changed to Guest,1) != $null) && ($nick == NickServ)) {
    /id
    /nick YourNick^_^
  }
  if ((($pos($strip($1-),You do not have access to op people on #YourChannel.,1) != $null) || ($pos($strip($1-),#YourChannel is operated by ChanServ,1) != $null)) && ($nick == ChanServ) && ($me !isop #YourChannel)) /id
  :bother
}

dove/joinall /autoop /ident e /id sono alias definiti come:

/joinall {
  /join #channelone
  /join #channeltwo
  /join #channelthree
  ...
}


/autoop {
  /timer 1 0 //chanserv op #ChannelOne $me
  /timer 1 5 //chanserv op #ChannelTwo $me
  /timer 1 10 //chanserv op #ChannelThree $me
  ...
}


/ident {
  //if (($me == YourNick^_^) || ($me == YourAltNick) || (Guest isin $me)) /nick YourNick

}


/id {
  //if ($me != YourNick) /timer 1 0 /nickserv ghost YourNick yourpassword
  /timer 1 5 /nickserv identify YourNick password
  /timer 1 10 /nickserv identify NickTwo password
  ...
}

Ovviamente dovrete cambiare YourNick, YourChannel, yourpassword con i dati reali. "YourMainNick", se ne avete registrati più di uno, è quello che usate di preferenza e con il quale siete operatori nei canali di vostra appartenenza. Se avetesolo un nick, metteteci quello. "YourNick^_^" è il vostro nick con aggiunto "^_^" (e che si suppone non sia registrato), e funzione come backup se il vostro nick viene cambiato in Guest; "YourAltNick" è il nick che avete scritto nel campo "Alternative" di mIRC [File > Options > Connect].

Dove leggete "You do not have access to op people on #YourChannel" e "#YourChannel is operated by ChanServ" dovrete inserire il nome del canale nel quale entrate per ultimo e contemporaneamente nel quale siete operatori.

I comandi aggiuntivi dopo on CONNECT accelerano un pò i DCC, vi consiglio di lasciarceli.

Ed ora spieghiamo come funziona. Aspetta che nickserv gli chieda di identificarsi, e quindi invia la password; quando siete identificati nickerv manda la conferma così lo script sa che può cominciare a chiedere a chanserv di farvi operatori nei canali neiquali siete entrati. Ogni volta che nickserv o chanserv si resettano e vi richiedono la password, lo script la reinvia e provvede a cambiarvi nick se il vostro solito viene modificato a Guest.

Un efficiente script antispam e risponditore su away per mIRC

Tutti gli script che uso in mIRC sono fatti da me, quindi ne aggiungo di nuovi o modifico i vecchi quando ne ho necessità. Va da sé che uno script antispam è stata la primissima cosa che ho fatto, non ne potevo più di ricevere inviti in query per entrare in altri canali o visitare siti web.

Questo script, come ogni altro dello stesso tipo, non fa altro che riconoscere delle parole chiavi o espressioni particolari in un messaggio e ignorarlo senza farlo apparire se corrisponde al filtro.

Per iniziare potete scaricare questo addon per caricare lo script in mIRC senza dover aggiungere manualmente le righe nel pannello remote. La versione che scaricherete qui è quella più aggiornata, ma la spiegazione che segue, se siete curiosi e volete leggerla, copre il 90% del funzionamento dello script. Dopo aver decompresso lo ZIP, leggete il file TXT per tutte le istruzioni (in inglese, ma o mangiate questa minestra o vi buttate dalla finestra).

L’evento che in mIRC viene lanciato quando si apre una query è il seguente:

on 1:OPEN:?:*:{....

Il punto interrogativo specifica che l’evento dovrà attivarsi solo se si tratta di una query, e l’asterisco specifica che qualunque messaggio in query verrà controllato.

Il mio script fa 4 cose: controlla se il nick che manda un messaggio è un operatore in uno dei canali in cui sono, e in questo caso non filtra il messaggio; se il nick che manda il messaggio non è in nessuno dei miei canali il messaggio viene ignorato a prescindere. Se il messaggio passa anche questo controllo, viene verificato che non vi sia presente nessuna parola chiave che lo identifica come spam, altrimenti la query viene subito chiusa e il messaggio viene aggiunto in una finestra apposita dove verranno raccolte tutte le query non accettate, per verificare che non ne sia stata rifiutata nessuna per sbaglio. Qualora il messaggio non sia spam, lo script controlla se si è correntemente away, nel qual caso ci sarà una risposta automatica che dice da quanto tempo si è attivato l’away e che avverte che probabilmente si sta dormendo se è notte fonda.

Questa è una versione completa dello script (che funziona in mIRC 5.9, non so per le versioni precedenti):

on 1:OPEN:?:*:{
  var %Ghost
  set %Ghost 1
  var %Cnt
  set %Cnt 1
   :Loop
  //if ($nick isop $chan(%Cnt)) goto allok
  //if ($ialchan($nick,$chan(%Cnt),1) != $null) set %Ghost 0
  inc %Cnt
  //if (%Cnt < = $chan(0)) goto Loop
  //if (%Ghost == 1) goto absent
  if ($strip($1-) == hello,) goto lamer
  if ($strip($1-) == hello) goto lamer
  if ($strip($1-) === hi) goto lamer
  if ($strip($1-) == hallo) goto lamer
  if ($strip($1-) == holla) goto lamer
  if ($pos($strip($1-),#,1) != $null) goto lamer
  if ($pos($strip($1-),j o i n,1) != $null) goto lamer
  if ($pos($strip($1-),how are you,1) != $null) goto lamer
  if ($pos($strip($1-),how are u,1) != $null) goto lamer
  if ($pos($strip($1-),www.,1) != $null) goto lamer
  if ($pos($strip($1-),slm,1) != $null) goto lamer
  if ($pos($strip($1-),asl,1) != $null) goto lamer
  if ($pos($strip($1-),gamez,1) != $null) goto lamer
  if ($pos($strip($1-),leech,1) != $null) goto lamer
  if ($pos($strip($1-),join,1) != $null) goto lamer
  if ($pos($strip($1-),plz come,1) != $null) goto lamer
  if ($pos($strip($1-),pls come,1) != $null) goto lamer
  if ($pos($strip($1-),/server,1) != $null) goto lamer
  if ($pos($strip($1-),www.cheatos.com,1) != $null) goto lamer
  if ($pos($strip($1-),serv,1) != $null) goto lamer
  if ($pos($strip($1-),click here,1) != $null) goto lamer
  if ($pos($strip($1-),xguest,1) != $null) goto lamer
  if ($pos($strip($1-),/server,1) != $null) goto lamer
  if ($pos($strip($1-),check out my pics,1) != $null) goto lamer
  if ($pos($strip($1-),check my pics,1) != $null) goto lamer
  if ($pos($strip($1-),http://,1) != $null) goto lamer
  if ($pos($strip($1-),sex,1) != $null) goto lamer
  if ($pos($strip($1-),porn,1) != $null) goto lamer
  if ($pos($strip($1-),we need,1) != $null) goto lamer
  if ($pos($strip($1-),chat,1) != $null) goto lamer
  if ($pos($strip($1-),Matches for,1) == 1) goto Results
  goto allok
  :absent
  /query $nick Not in any of my channels. Message ignored.
  /close -m $nick
  goto end
  :lamer
  /query $nick This message's been detected as an invite/whatever else, so this window is being closed. My script can't be 100% accurate, so sorry if it's not your case.
  /close -m $nick
  //if ($window(@lamerz,1) == $null) /window -n @lamerz
  //aline -hp @lamerz 9 [ $time ] 7 < $nick > 8 $1-
  goto end
  :allok
  //if ($away == $true) {
    //if ($asctime(H) < 9) //query $nick [Automated Response] It is $asctime(H:nn) $+ $asctime(tt) here, and I am away ( $+ $duration($idle,2) idle), so I may be sleeping.
    else //query $nick [Automated Response] I am away ( $+ $duration($idle,2) idle). I could answer you if I'm here and the speakers are on ;-)
  }
  :end
}

Come personalizzare lo script:

  • Aggiungere nuove parole chiave: semplicemente mettete in fondo alla lista una riga come questa "if ($pos($1-,parole chiave,1) != $null) goto lamer".
  • Specificare frasi precise: potete anche pretendere che lo script blocchi alcune parole chiave controllando la correttezza di maiuscole/minuscole, in questo caso usate una riga come quella di prima, ma con "$poscs" così diventerà"if ($poscs($1-,ParOle ChiAvE,1) != $null) goto lamer". Potete anche controllare che il messaggio venga bloccato solo se comincia per quelle parole e non se le contiene al suo interno, quindi sostituite "!= $null" con"= 1" , esempio "if ($poscs($1-,ParOle ChiAvE,1) = 1) goto lamer".
  • Specificare messaggi interi: potete anche bloccare il messaggio se e solo se è precisamente uguale alla frase che specificate e non ha altre parole, aggiungendo la linea "if ($1- == Frase specifica) goto lamer"; questo controllo non verifica le maiuscole, per fare ciò sostituite"==" con"===", come"if ($1- === FraSe sPecIfiCa) goto lamer".
  • Modificare l'orario di sonno: lo script suppone che io sia quasi sicuramente a dormire tra mezzanotte e le 9, quindi se una query mi arriva in quell'intervallo di tempo la risposta dirà l'orario locale e avvertirà che si sta dormendo. Potete modificare i limiti orari correggendo ad esempio la sveglia dalle 9 alle 10; modificare l'orario di mezzanotte è semplice se lo si vuole posticipare ad esempio all'1 o alle 2, ma se lo si vuole anticipare bisogna modificare del tutto la stringa, per cui vi consiglio di lasciar perdere a meno che non conosciate voi stessi un pò di scripting.