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.