|
|
mIRC FAQ (ver. 39)
Domande Poste Frequentemente (FAQ) su mIRC.
Torna alla sezione precedente
Torna all'indice
7 Un tutorial sulla Programmazione di mIRC.mIRC dispone di tre sezioni che possono venire "programmate" in qualche modo: Le sezioni Aliases, Popups e Remote. Nella sezione Remote è possibile definire Users, Variables e Scripts. In Scripts è possibile definire come mIRC debba reagire alle cose che avvengono su IRC, nei CTCP ed agli Events.Il metodo migliore per imparare e capire come funzionino le sezioni programmabili di mIRC è quello di studiare questi capitoli nel loro ordine. Davvero! Per favore non provate a prendere una scorciatoia direttamente alla sezione Remote Scripts prima di aver realmente capito gli Alias ed i Popup. Le lezioni che si apprendono da ciascuno di essi sono cumulative. (Una nota per chi è familiare con ircii: la sintassi di alias di mIRC è simile a quella di ircii ma non è esattamente uguale. Le sezioni di mIRC Remote comando ed Event consentono di implementare molte delle cose che si realizzano in ircii tramite script, ma la struttura e la sintassi sono leggermente differenti). Torna all'indice 7-1 La sezione Alias.Selezionare la voce di menu Tools/Aliases/.Verrà avviato l'Editor di mIRC e verrà aperta la sezione Aliases. Si ignorino per ora le sezioni Popups, Remote, Users e Variables! L'Editor di mIRC viene utilizzato come una interfaccia uniforme e compatta per tutte le sezioni programmabili di mIRC. Con la sezione Aliases selezionata il menu 'File' vi aiuterà a caricare, scaricare e salvare i file di alias. Il menu 'Edit' offre le funzioni di copia/incolla e di ricerca. Il menu 'View' consente di selezionare qualche file di alias modificare ed il menu 'Alias' visualizza un indice dei file di alias correntemente aperti. Nella sezione Aliases è possibile definire delle scorciatoie per i comandi più utilizzati quali ad esempio join, part, quit, op, deop e qualsiasi altra cosa vogliate. Anche le cose che dite di frequente possono essere inserite in un alias... In generale, TUTTI i comandi che possono essere usati dalla linea di comando (la linea o le linee nelle quali normalmente scrivete i vostri messaggi) possono essere utilizzati come alias. Gli alias possono essere anche utilizzati per eseguire una serie di comandi in una sola volta. È possibile anche definire alias attivabili tramite i tasti funzione F1 - F12.... (Finalmente un utilizzo per questi tasti che solitamente non sono mai utilizzati..) In mIRC è anche possibile richiamare degli alias da latri alias o da menu popup e linee di remote. Nel nuovo mIRC è possibile avere file di alias multipli. mIRC viene fornito con un file prefabbricato denominato alias.ini al quale è possibile comunque aggiungere altri elementi oppure potete scegliere di aggiungere un intero nuovo file di alias. Molto semplice! Torna all'indice 7-1-1 Creazione di alias.OK, iniziamo subito con un esempio. Per entrare su un canale solitamente di deve digitare:
/join #nome ...dove ovviamente #nome è il nome del canale. Poiché questo comando è utilizzato molto frequentemente, sarebbe comodo poterlo utilizzare dovendo digitare il meno possibile no? Creiamo quindi un alias per "/join #nome". Invece che digitare "/join #{nome}", facciamo si che basti digitare "/j #{nome}" ottenendo il medesimo risultato. In questo caso l'alias sarà:
/j /join $1 (Non occorre che capiate esattamente cosa ciò significhi per mIRC, basterà capire ciò che fa. La sintassi verrà spiegata fra poco.) Fate una prova inserendo la linea "/j /join $1" nella lista Aliases sotto Tools/Aliases (se non è già disponibile). Quindi la si provi dalla linea di comando (quella dove scrivete normalmente) con il semplice comando:
"/j #test".
Vedrete che "/j #test" svolge la medesima funzione di "/join #test" -- vi farà entrare sul canale denominato #test. Questa scorciatoia è detta un alias. Sintassi degli alias. Gli Alias utilizzano il seguente formato: "/{nomealias} /{comando}" In altre parole per prima cosa il nome della "scorciatoia" (tipo "/j" come nell'esempio precedente), quindi uno spazio e quindi il comando a cui punta la scorciatoia (come "/join" nell'esempio precedente). Nella definizione degli alias non si deve specificare il carattere / per i comandi in quanto è necessario solo per i comandi digitati direttamente sulla linea di comando. Solo per chiarezza si è deciso di utilizzare la / in questo tutorial. Si ricordi che anche l'alias alias "j join $1" funzionerà perfettamente. Gli alias utilizzano un certo numero di stringhe speciali e di identificatori. Vi sono svariate stringhe del tipo $1, $1-3, $$1, $?, $!, #$1, #$$1 ed anche #$?. Le stringhe vengono riempite con qualsiasi cosa si sia specificato nella chiamata dell'alias. Sono particolarmente dinamiche nel loro utilizzo. Gli identificatori sono simili alle stringhe ma vengono riempiti con valori standard. Alcuni identificatori particolarmente importanti sono #, $me e $url ma la lista di tali identificatori è lunga ed in continua crescita. Per darvi un'idea migliore; $read $date $adate $fulldate $time e $day sono alcuni altri identificatori. Non preoccupatevi, li spiegheremo tutti al momento opportuno. Per ora concentriamoci su $1. Dopo tutto questa è la stringa che abbiamo utilizzato nell'esempio precedente:
/j /join $1
$1 sta per "la prima parola digitata dopo l'alias, qualsiasi essa sia. Quindi se digitate "/j #test", mIRC saprà che è la scorciatoia per "/join #test". Se digitate "j #hello", saprà che è la scorciatoia per "/join #hello". Comandi multipli. Supponiamo ora che vogliate collegarvi a più canali contemporaneamente. È possibile creare un alias per questo. Semplicemente si separino i vari comandi con il carattere | (sulla maggior parte delle tastiere si ottiene con MAIUSC ed il tasto \ (backslash))... Il carattere | è detto 'pipe'. Supponiamo si voglia poter digitare "/j3" e quindi i nomi dei tre canali, su cui si entrerà contemporaneamente. L'alias sarà:
/j3 /join $1 | /join $2 | /join $3
Quindi se si inserisce tale linea in Tools/Aliases e si digita:
/j3 #test1 #test2 #test3
...mIRC eseguirà "/join #test1", quindi "/join #test2" e quindi "/join #test3". In questo caso vedete che $1 corrisponde alla prima parola digitata dopo l'alias. $2 ovviamente corrisponde alla seconda parola e $3 alla terza. Ora mIRC, ovviamente, si aspetta tre parole - i nomi dei canali. Quindi cosa accade se si digita semplicemente "/j3 #test1"? mIRC si lamenterà per i parametri mancanti poiché si aspettava più nomi di canale. C'è una soluzione a questo problema, la stringa $$1, che verrà spiegata più avanti). Esempio: /say Supponiamo che si scopra che vi sono delle frasi che digitate sul canale molto spesso, come ad esempio l'indirizzo della vostra home page, un saluto, ecc. Osservate questi esempi di alias che utilizzano il comando "/say": "/say" scrive semplicemente il testo indicato sul canale corrente u sulla finestra messaggi.
/hello /say Ciao a tutti... /www /say La pagina di mIRC è http://metro.turnpike.net/mookies/mirc.html /lines /say Questa è la prima linea | /say Questa è la seconda linea | /say questa è l'ultima linea L'ultimo esempio mostra come inviare linee di /say multiple in un solo alias. Basta semplicemente separarle con il carattere |. Si noti anche che non tutti gli alias hanno delle stringhe. Esempio: /me Action all'interno di un alias...
/fun /me pensa che tutto ciò sia molto divertente! /hug /me abbraccia $1 forte forte! Il secondo esempio utilizza una stringa , $1. Se si digita "/hug tutti", ciò e' equivalente a "/me abbraccia tutti forte forte!" Esempio: Stringhe condivise. I comandi multipli possono condividere le stesse stringhe.
/jtest /join $1 | /topic $1 solo una prova
Nella definizione degli alias il parametro $1 viene utilizzato due volte. Se si digita "/jtest #test", per prima cosa si entrerà sul canale #test e quindi si cambierà il topic del canale in "solo una prova". Un altro esempio sulla stessa linea:
/love /say Amo $1 ! | /say Amo veramente $1 !!
Se si digita "/love tutti", mIRC saprà di dover eseguire "/say Amo tutti !" e quindi , "/say Amo davvero tutti!!" Esempio: Cambi di Mode (Op, ecc.). Per inserire i cambi di mode più frequentemente utilizzati all'interno della sezione alias, per prima cosa occorre conoscere la struttura di questi comandi di mode. Rendere op qualcuno su IRC solitamente richiede il comando:
/mode {nomecanale} +ooo {nick1} {nick2} {nick3}
...nel quale possono essere indicate sino a 3 persone. Il tutto può essere fatto con un alias del tipo:
/op /mode # +ooo $1 $2 $3
Per rendere op John, Jake e Joan, si dovrà ora digitare solamente : "/op John Jake Joan" Il # presente in questo alias mostra l'utilizzo di uno degli identificatori. Il # indica sempre il #nomecanale del canale sul quale viene utilizzato l'alias.... Allo stesso modo è possibile creare alias del tipo...
/deop /mode # -ooo $1 $2 $3 /ban /mode # +b $1 /kick /kick # $1 /dbk /mode # -o $1 | /kick # $1 | /mode # +b $1 IMPORTANTE: La spaziatura! È un argomento veramente importante! si DEVE sempre inserire degli spazi fra le stringhe ed il resto del vostro testo! Ad esempio:
/like /say I really like $1!!!
...NON funzionerà! Occorre uno spazio tra la stringa "$1" e "!!!". (Ciò potrebbe rendere il vostro testo leggermente strano quando si utilizza un comando tipo /say, quindi state attenti al modo con cui costruite le frasi).
/like /say I really like $1 !!!
...FUNZIONERA' perfettamente. Ciò vale per TUTTE le stringhe. Per rendere semplice un caso particolare, l'indicazione di canali, sono state create alcune stringhe speciali che inseriscono automaticamente il carattere #. Si tratta di #$1, #$$1 e #$?. Si veda oltre per maggiori dettagli. In ALCUNI casi è possibile scrivere:
/like /say I really like $1's topic
ma ricordate: NON SEMPRE!! Occorre provare ogni casistica che vogliate usare... Dove si possono usare gli alias? Gli alias possono essere utilizzati sulla linea di comando (la linea o le linee nella quale solitamente scrivete i comandi) e potete utilizzare gli alias anche nelle sezioni Popups e Remote come verrà spiegato nelle sezioni seguenti. I tasti funzione con alias possono essere utilizzati con i nick selezionati sulla lista dei nomi del canale e nelle finestre di query ecc....in funzione di come avete definito gli alias. È anche possibile richiamare alias all'interno di altri alias ma non in maniera ricorsiva da se stessi. Il richiamo di alias all'interno di altri alias richiede della memoria aggiuntiva ed in alcuni casi può creare problemi come quando si ha poca memoria ecc. Nel caso un alias o un remote entri in un ciclo infinito si utilizzi la combinazione di tasti CTRL+Break per interrompere il processo. Definizioni speciali di alias; I tasti funzione. È possibile avere una speciale definizione di alias che esegue un comando utilizzando i tasti funzione. Si definiscano alcuni alias come:
/f1 /say Ciao a tutti /f2 /topic # Questo è il nuovo topic È possibile digitare "/f1" per salutare un canale ... ma funziona anche premendo il tasto funzione "F1"!! Altri esempi:
/f5 /me sarà felice di inviarvi il nuovo mIRC. /f6 /join #mIRC /f9 /dcc send $1 c:\serve\mircfq31.zip /f10 /dcc send $1 c:\serve\mirc50s.exe /f11 /dcc send $1 Il tasto F9 invierà la FAQ di mIRC FAQ alla persona selezionata dalla lista dei nomi del canale. Non dimenticatevi di selezionare prima il nick! Se non lo fate, vedrete un cosa strana (ma logica)... È possibile utilizzare il tasto F9 con questa definizione di alias anche in finestre di Private, Query o DCC Chat! Il tasto F11 vi richiederà il nick a cui inviare il file... Ok.... ora potete inventare il vostro utilizzo per i tasti funzione..... buon divertimento! È anche possibile utilizzare i tasti -shift- e -ctrl- in combinazione con tasti F. Basterà definire gli alias come:
/f1 /say Ho usato F1 per dire questo /sf1 /say Ho usato Shift+F1 per dire questo /cf1 /say Ho usato CTRL+F1 per dire questo Nota: Quasi tutti gli alias a cui ho potuto pensare sono forniti nella Section 8 ! Controllatela. Utilizzo delle parentesi. Negli alias è possibile utilizzare le parentesi [ e ] per controllare l'ordine di valutazione degli identificatori. Le parentesi possono essere utilizzate anche nei popup e nei remote. Gli identificatori all'interno delle parentesi verranno valutati per primi da sinistra a destra. È inoltre possibile nidificare le parentesi. Ciò consente di valutare le cose nell'ordine desiderato... Le parentesi non appariranno nei risultati di testi o comandi. Esempi:
/note /notice $1 " $+ [ $read [ -s + [ $2 ] ] c:\testo\note.txt ] $+ " /sayvar /say % [ $+ [ $1 ] ] Le definizioni senza parentesi di valutazione sono calcolati come sempre. Alias negli script. È possibile caricare facilmente in mIRC dei file di alias addizionali sopra quello/i che già avete. Si apre l'editor degli alias (Tools/Aliases/) e si selezioni File/Load/. È facile a questo punto selezionare il file contenete gli alias. Selezionare 'View' per visualizzare tutti i file di alias caricati. Questo è un metodo semplice per provare gli alias creati dai vostri amici e distribuire i vostri file di alias ai vostri amici. Gli alias possono anche essere inseriti all'interno di un file di script completo e distribuito assieme ai comandi Remote ed agli Events. Spiegheremo in seguito in dettaglio come ciò sia possibile. Torna all'indice 7-1-2 Definizione di stringhe.Sino ad ora, dovreste avere una certa conoscenza della sezione Alias. Ora dovrebbe essere interessante un elenco completo delle stringhe e degli identificatori che si possono utilizzare negli alias ed in seguito nelle definizioni dei popup e dei remote. Le prossime due sezioni introdurranno quelli principali. La lista è tutt'altro che completa! A questo punto, assicuratevi di provare tutti gli esempi sino a quando non avrete compreso come realizzarli da soli! Si esplori il file di help per ulteriori esempi e le nuove definizioni di stringhe, ok?$N La stringa più semplice. Contiene una sola parola.$1 conterrà la prima parola dopo il comando dell'alias. Allo stesso modo, $2 conterrà la seconda parola, $3 la terza, ecc. Esempio:
/op /mode $1 +o $2 $3
Si digiti "/op #mIRC Janet John" per rendere Janet e John operatori di #mIRC.
/slap /me schiaffeggia $1 con un largo $2
Si digiti "/slap residue pesce" per dare a residue un profumo di pesce ;o) $N-M Questa stringa contiene solo una selezione di parole. Si provi l'alias:
/three /say Le prime tre parole erano $1-3
Si digiti "/three un buon avvio bimbo" per vedere il risultato "Le prime tre parole erano un buon avvio" dove "bimbo" viene ignorato. Nota: $N-M sostituisce la vecchia definizione *N-M. $N- Questa stringa può contenere MOLTE parole... $1- conterrà la prima parola *e* tutto quello che segua la prima parola. Si provi:
/tell /say mi piacerebbe dirti una cosa: $1-
Il comando "/tell mIRC è veramente bello" con quest'alias darà come risultato il testo: "mi piacerebbe dirti una cosa: mIRC è veramente bello". $2- conterrà la seconda parola e tutto quello che segue. $3- conterrà la terza parola e tutto quello che segue. ecc. Si provi inoltre...
/note /notice $1 $2-
...e si digiti "/note {nick} {un testo qualsiasi}" e...
/mess /msg $1 $2-
...e si digiti "/mess {nick} {un testo qualsiasi}" Assicuratevi di aver compreso che questi comandi diano lo stesso risultato se si definiscono gli alias rispettivamente come '/note /notice $1-' e '/mess /msg $1-'. $N- sostituisce la vecchia definizione *N. $$1 Un alias contenente questo tipo di stringa verrà eseguito SOLO se viene fornito il parametro; in caso contrario la chiamata all'alias verrà ignorata. Ad esempio, se si prova questo alias:
/j /join $$1
e si digita "/j" (anziché "/j #nomecanale")... mIRC lo ignorerà perché non è stato incluso il nome del canale. Per il resto opera come $1 -- contenendo la prima parola. $$2 conterrà la seconda parola, $$3 la terza, ecc. $? Questo è bello! Un alias con questa stringa può essere avviato senza specificare il parametro. mIRC visualizzerà una finestra di dialogo di Parameter Entry, nella quale è possibile indicare un testo, un nick o qualsiasi altra cosa. Si provino questi esempi:
/j /join $?" /hug /me abbraccia $? forte forte $?="testo" Una versione "extra speciale" della stringa $?. mIRC visualizzerà nuovamente la finestra di dialogo di Parameter Entry ma questa volta richiederà il tipo di informazione richiesta. Si provino questi esempi:
/j /join $?="Su quale canale entrare?" /hug /me abbraccia $?="Chi vuoi abbracciare?" forte forte $! Questo identificatore viene utilizzato solo in congiunzione con $?. Se in precedenza si è utilizzato $? negli alias è possibile utilizzare successivamente $! per richiamare il parametro digitato. Ad esempio:
/j /join $?="Su quale canale entrare?" | /say Mi piace il canale $!
Si digiti "/j" è verrà visualizzato la finestra di dialogo di Parameter Entry che richiede di digitare il nome del canale a cui collegarsi. Se si digita "#test" si entrerà su #test e quindi si dirà sul canale: "Mi piace il canale #test". Si provi inoltre:
/friend /say $? è un mio amico | /say Voglio bene a $!
#$1 -e- #$$1 -e- #$? Queste versioni speciali delle stringhe $1, $$1 e $? sono utilizzate solo in collegamento ai canali. Tutte queste stringhe aggiungono il prefisso # all'inizio del parametro. Si provi...
/j /join #$1"
Si potrà digitare "/j test" anziché "/join #test". Si provi inoltre:
/j /join #$?="Indicare il nome del canale su cui entrare (senza #)"
Torna all'indice 7-1-3 Identificatori.Un tipo speciale di stringa è l'identificatore. Mentre il contenuto di una stringa viene sempre definito da come viene richiamato un alias, un popup o un remote (si veda oltre), gli identificatori restituiscono sempre delle informazioni predefinite.# Questo è l'identificatore più importante, contiene sempre il nome del canale sul quale viene eseguito l'alias. Ciò è importante perché molti comandi, tipo i comandi di /mode, richiedono che si specifichi un nome di canale. Esempio:
/op /mode # +o $1
Si digiti "/op Cindy", e si renderà op la persona di nick Cindy in qualsiasi canale si digiti. $me Questo identificatore contiene sempre il vostro nick corrente! È possibile utilizzarlo in tutte le situazioni. Ad esempio:
/nice /me pensa che $me sia un nick simpatico!
oppure
/offer /me offre la versione 3.8 di mIRC. Si digiti "/ctcp $me xdcc send #1" per riceverla.
oppure
/away /me è via ( $1- ) | /away $1- | /say I messaggi diretti a $me verranno salvati.
Oppure si provi l'alias:
/nick /say Mi piace $1 molto più che $me | /nick $1
e quindi si cambi il proprio nick con "/nick <nuovonick>" $read [-nl#] <nomefile.txt> Questo identificatore è divertente. Estrae una riga a caso dal file indicato e la inserisce all'interno dell'alias.... La riga può contenere del normale testo ed anche dei comandi !! (per rendere il tutto più semplice ;o) Inoltre $!read che è identico a $read con la differenza che non viene valutato solamente la prima volta che si utilizza la routine di alias. Ciò consente di utilizzarlo in un comando /timer se si vuole che $read sia rivalutato ogni volta. Il parametro -n impedisce la valutazione della riga letta. Ciò fa si che tutte l linee siano trattate come testo semplice! Ad esempio:
/fun /say $read c:\mirc\funlines.txt /kick /kick # $1 $read c:\mirc\funkicks.txt /silly /say $read -l5 silly.txt $readini [-n] <fileini> <sezione> <elemento> Simile a $read questo identificatore legge degli elementi da un file .ini. È stato creato assieme al comando /writeini. Entrambi utilizzano le funzioni di Windows per leggere e scrivere i file .ini standard di Windows. Pensiamo che $readini e /writeini apriranno nuove e migliori possibilità per la scrittura di funzioni automatiche per IRC. l parametro -n impedisce che la linea letta venga valutata. $url Questo identificatore contiene sempre la pagina correntemente visualizzata da Netscape... Ad esempio:
/show /say Ehi ragazzi, ho trovato una bellissima pagina www! Andate su $url /mu /me ha trovato questa bella URL : $url $ip Il vostro indirizzo IP. $server Il server che si sta utilizzando. $active Il nome della finestra attiva in mIRC. $time Data e ora del PC. $away Indica se si è in away o meno. $ticks Restituisce il numero di ticks (colpi di orologio interno) dall'avvio del S/O. $idle Restituisce il tempo di idle come quello restituito da ctcp userinfo e finger. $online Restituisce il numero di secondi trascorsi sul timer di online $version Restituisce la versione di mIRC $ctime Il numero di secondi trascorsi dalle 00:00:00 GMT, 1 gennaio 1970. $asctime(N) Restituisce il valore di ctime in formato testo data e ora. $day Il giorno corrente. (Monday, Tuesday,...) $date La data (in formato europeo) (SI!! mIRC -non- è made in USA ;o) in alternativa si utilizzi $adate (americana), $fulldate o $day. $duration(secondi) Converte un numero del tipo 123456 in 1 giorno 10ore 17minuti 36sec. $logdir $getdir $wavedir $mircdir $mircini Restituisce il percorso ed il nome del file di ini che si sta utilizzando $nopath(nomefile) Restituisce solo il nome del file senza percorso. $nofile(nomefile) Estrae il nome del file e restituisce il percorso. $exists(nomefile) Verifica che il file indicato esista. (Restituisce $true o $false) $findfile(dir,nomefile,N) Ricerca nel percorso indicato l'Nesimo file specificato $ddename Il nome del servizio DDE che mIRC utilizza. $abs(N) Restituisce il valore assoluto del numero N. $chr(N) Restituisce il carattere con il numero ASCII N. $asc(C) Restituisce il valore ASCII del carattere C. $len(testo) Restituisce la lunghezza di "testo". $upper(testo) Restituisce "testo" in lettere maiuscole. $lower(testo) Restituisce "testo" in lettere minuscole. $left(testo,N) Restituisce i primi N da sinistri di 'testo'. $right(testo,N) Restituisce i primi N da destra di 'testo'. $mid(testo,S,N) Restituisce N caratteri di 'testo' a partire da S. $pos(stringa,sottostringa)Restituisce la posizione della sottostringa all'interno di stringa. $replace(stringa,sottostringa,sostituzione) Sostituisce una sottostringa all'interno di una stringa. $remove(stringa,sottostringa) Rimuove la sottostringa da stringa. $strip(testo) Rimuove dal testo tutti i codici di controllo per grassetto, sottolineato, invertito ed i codici colore. $count(stringa1,stringa2) Restituisce il numero di volte in cui stringa2 appare in stringa1. $str(testo,N) Restituisce "testo" ripetuto N volte. $rand(X,Y) Restituisce un carattere a caso compreso fra X ed Y. $lines(file) Restituisce il numero di linee del file specificato. $usermode Restituisce i vostri mode personali correnti. $topic(#) Restituisce il topic dei canali su cui vi trovate. $nick(#,N) Restituisce l'Nesimo nick sul canale #. $snick(#,N) Restituisce l'Nesimo nick selezionato sul canale #. $opnick(#,N) Restituisce l'Nesimo nick Op sul canale #. $nopnick(#,N) Restituisce l'Nesimo nick non-Op sul canale #. $vnick(#,N) Restituisce l'Nesimo nick voiced sul canale #. $nvnick(#,N) Restituisce l'Nesimo nick non-Op/non-voice sul canale #. $comchan(Nick,N) Restituisce i canali su cui voi e Nick siete. $query(N|Nick) Restituisce l'Nesima finestra di query aperta. $chat(N) Restituisce il nick dell'Nesima finestra di dcc chat aperta. $fserv(N) Restituisce il nick dell'Nesima finestra di file server aperta. $send(N) e $get(N) Restituisce il nick dell'Nesima finestra di send/get aperta. $notify(N) Restituisce l'Nesimo nick in notify attualmente presente su IRC. $token(N,C,testo) Restituisce l'Nesimo token in 'testo' separato dal carattere C (C è il valore numerico ASCII del carattere) $addtok(testo,token,C) Aggiunge un token alla fine del testo ma solo se non è già presente. $findtok(testo,token,C) Restituisce l'Nesima posizione di token all'interno di testo. $gettok(testo,N,C) Restituisce l'Nesimo token in testo. (anche N-M, N-) $instok(testo,token,N,C) Inserisce il token all'Nesima posizione all'interno di testo anche se già presente in testo. $remtok(testo,token,C) Rimuove 1 corrispondenza di token da testo. $reptok(testo,token,new,C) Sostituisce 1 corrispondenza di token in testo con il nuovo token. Per gli identificatori sopraelencati è possibile specificare N come 0 (zero) per ottenere il numero totale di nick/canali/token ecc. per tale identificatore. $snotify Restituisce il nick correntemente selezionato nella finestra di notify. $address Restituisce l'indirizzo completo di un utente che ha attivato una linea di remote. $address(nick,tipo) Scandisce la lista interna degli indirizzi restituisce un indirizzo utente se presente. $maddress Restituisce l'indirizzo dell'utente corrispondente per un evento della sezione Remotes. $level(indirizzo) Trova una corrispondenza con un indirizzo della remote users list e restituisce il suo livello. $ulevel Restituisce il livello utente remoto che corrisponde ad un evento. $clevel Restituisce i livelli di comando remote che corrispondono ad un evento. $dlevel Restituisce il valore di livello standard per gli utenti. $mask(indirizzo,tipo) Restituisce l'indirizzo con la maschera specificata. Gli identificatori e le variabili possono essere inseriti all'interno di parentesi. Esempio:
/echo $right(3,$left($len(goats),ToMooOrNotToMoo))
restituisce 'Moo' Identificatori con parametri di proprietà. Diversi identificatori possono essere utilizzati aggiungendo dei parametri speciali. Ciò rende più semplice ricordarne la sintassi ed aiuta nella stesura di script. La sintassi è $identifier(N|#|nick).proprietà Questa lista è tutt'altro che completa! $server(N|nick) Da accesso alla lista dei server sotto File/Setup/IRC_Servers. $server(N) per l'indirizzo, .desc per la descrizione, .port per la porta, .group per il gruppo. $ial(mask,N|nick) Da accesso alla lista interna degli indirizzi(Internal Address List). $ial(mask,N) per l'indirizzo completo, .nick per il nick, .user per lo user, .host per l'host, .addr per l'indirizzo. $url(N) Da accesso all'elenco delle url. $url(N) per l'indirizzo, .desc per la descrizione, .group per il prefisso $chan(N|#) Restituisce diverse impostazioni di 'canale' per i canali sui quali ci si trova. $chan(N|#) restituisce il nome del canale, .topic, .mode, .key, .limit, $chat(N|nick) nick, .ip, .status (attivo, in attesa, inattivo) $fserv(N|nick) nickname, .ip, .status, .cd (directory corrente) $get(N|nick) nickname, .ip, .status, .file, .size, .rcvd, .cps, .pc $send(N|nick) nickname, .ip, .status, .file, .size, .sent, .lra, .cps, .pc $timer(N) restituisce i timer correntemente attivi $timer(N) per l'id, .com, .time, .reps, .delay, .type Identificatori definibili dall'utente. (Questa sezione è stata scritta in origine da Li0nheart) Come abbiamo appena visto mIRC dispone di un gran numero di identificatori predefiniti che possono essere utilizzati delle definizioni di alias e di remote. È inoltre possibile creare i propri identificatori e questi possono essere configurati per eseguire praticamente qualsiasi cosa si desideri! Gli identificatori vengono programmati nella sezione alias ed appaiono esattamente come un alias con l'unica eccezione che terminano con un /return X. È possibile far si che l'identificatore restituisca qualsiasi cosa si desidera. Ad esempio, la somma di due numeri:
/sum { %temp = $1 + $2 return %temp } A questo punto è possibile utilizzare l'identificatore $sum in qualsiasi alias, popup o remote. Ad esempio nell'elemento di popup:
Add:/say La somma di 45 e 78 è $sum(45,78)
Oppure l'alias:
/add /say La somma di $1 e $2 è $sum($1,$2)
(Non ha senso dare il comando /sum .. che non funzionerà) Tutti i parametri forniti all'identificatore sono separati da virgole. È possibile utilizzare tutte le normali strutture if/then/else nella definizione di un identificatore. È inoltre possibile verificare se tutti i parametri necessari sono presenti e restituire eventualmente un comando di errore. Un esempio è questa routine che calcola quale percentuale di X sia Y.
/perc { if ($1 == $null) || ($2 == $null) { return Errore parametri insufficienti } if ($2 != 1) { %half = $2 / 2 } | else { %half = 1 } %dummy = $1 * 100 %perc = %dummy / $2 %remainder = %dummy % $2 if (%perc == 0) { goto return } elseif (%remainder >= %half) { inc %perc } :return return %perc } La prima linea verifica che siano presenti tutti i parametri. Le linee rimanenti sono il calcolo della percentuale, in cui una parte verifica che il totale sia 100%. L'identificatore potrà essere richiamato ad esempio con $perc(56,100), che visualizzerà 56% I numeri non sono l'unica cosa che può essere restituita da un identificatore. È anche possibile restituire un testo, o una combinazione di testo e numeri, come ad esempio il formato dell'ora americano (7:52 pm):
/atime { set %hr $token(1,58,$time) set %min $token(2,58,$time) if (%hr == 0) { set %hr 12 | set %sub am } elseif (%hr < 12) { set %sub am } elseif (%hr == 12) { set %sub pm } else { %hr = %hr - 12 | set %sub pm } return %hr $+ : $+ %min $+ %sub } Con un po' di creatività è possibile realizzare identificatori per qualsiasi scopo. Ad esempio: risposte automatiche oppure evidenziare ogni singola lettera. Buon divertimento! Torna all'indice 7-2 La sezione Popups.I popup sono menu che appaiono quando si esegue un click destro con il mouse. Se non avete ancora scoperto questa utile funzione di mIRC, fate una prova ADESSO! Alcuni menu popup sono predefiniti in popups.ini presente nella distribuzione di mIRC ma, sono completamente personalizzabili sotto la voce Tools/Popups/.Verrà avviato Editor di mIRC con aperta la sezione Popups. Per ora, si ignorino le sezioni Remote, Users e Variables! L'Editor di mIRC viene utilizzato come una interfaccia uniforme e compatta per tutte le sezioni programmabili di mIRC. Con al sezione Popups selezionata, il menu 'File' vi aiuterà a caricare, scaricare e salvare i file di popup. Il menu 'Edit' fornisce le funzioni di copia/incolla e di ricerca. 'Popup' elenca un indice dei file di menu popup attualmente aperti. Il menu 'View' permette di selezionare quale popup si desidera modificare. Vi sono differenti menu popup per differenti tipi di finestre di mIRC; Su una finestra di canale si avrà un menu popup diverso dal menu popup delle Query (conversazioni private). Utilizzare il menu View per modificare un menu popup differente. Vi sono sezioni programmabili di popup per la finestra di Status, finestre di canale, finestre di Query/Chat ed elenco Nick ed uno speciale elemento chiamato Menubar per un elemento di Menubar programmabile. (Tutti verranno spiegati successivamente) Se la vostra copia di mIRC non sembra disporre del menu popup predefinito (con quindi la sezione Tools/Popups/ vuota), è sicuramente dovuto al fatto che non si è verificato che il file predefiniti siano stati copiati correttamente dal file di distribuzione di mIRC alla directory di mIRC, oppure che la posizione nella quale recuperare il file popups.ini non è stato correttamente specificato. È facile correggere ciò tramite la voce di menu File/Load/ nell'editor dei Popups. I comandi popup funzionano esattamente come gli alias. Tutte le stringhe indicate nella Sezione 7-1 possono essere utilizzate nei popup (e vitali per il corretto utilizzo dei popup). Se non si è letta la sezione degli Alias (Sezione 7-1), fatelo ora! Vi serviranno le informazioni contenuta in essa prima di procedere. Inoltre: Si legga il file di Help relativo ai popup, cosi come dare una occhiata ai molti esempi di popup inclusi in mIRC sotto Tools/Popups. Più esempi si proveranno, esamineranno e si proveranno a modificare, migliore sarà la vostra conoscenza di mIRC. Esempio: /join Supponiamo che ci si voglia collegare frequentemente ad particolare canale, #test. Anziché dover digitare "/join #test", non sarebbe più semplice fare un click destro e selezionare una voce di menu che vi faccia collegare automaticamente al canale? IL seguente popup svolge questa funzione. Semplicemente si inserisca questo popup sotto Tools/Popups, assicurandovi che "Status Window" sia selezionata. (Non Query/Chat window, Channels Names list o Menu Bar!) Entrare sul canale Test:
/join #test
Ora si faccia un click destro sulla finestra di Status e si selezioni "Entrare sul canale Test". mIRC eseguirà esattamente questo. Esempio: /away Ecco un esempio di popup di "away" e di "back"... si digiterà il motivo dell'away, che verrà inviato ai canali sui quali si è presente (Che è ciò che il comando /ame fa, inviare un /me ad ogni canale sul quale si è presenti)
Set Away...:/ame e VIA ( $?="indicare il motivo" ) | /away Provare più tardi ( $! ) !! Set Back:/ame è TORNATO| /away (Si noti ancora una volta che su alcuni sistemi potrebbe essere necessario scorrere verso destra per vedere il testo completo di alcuni esempi) Si noti anche che l'esempio "Set Away" utilizza linee di comandi multiple. Menu Gerarchici Se si aggiungono alcuni popup simili a quelli visti in precedenza, lo schermo si riempirà ogni volta che si esegue un click destro. È quindi possibile organizzare i vari popup in menu gerarchici. Si provi ad inserire i seguenti popup:
Frasi .Hello:/say Ciao gente! .Goodbye:/say Addio gente! .Hug:/me da a $? un grande grande abbraccio Si specifica che gli ultimi tre comandi debbano apparire sotto "Frasi" tramite: 1) inserendoli dopo la voce "Frasi", nell'ordine nel quale si desidera che appaiono e 2) facendoli precedere tutti da "." <-- un punto. Quando si esegue un click destro si vedrà la voce di menu "Frasi". Selezionandola si vedranno le voci di menu "Hello", "Goodbye" ed "Hug". Selezionando una di queste voci si eseguiranno i comandi o le azioni precedentemente specificate. Se si desidera una cosa più complicata è possibile avere più livelli di menu popup. Ad esempio si provi:
Commenti sulle Persone .Complimenti ..Simpatico:/say Wow, $? -- sei veramente simpatico oggi! ..Utili:/say Grazie per l'aiuto $? ..Amico:/say Sono felice di avere $? per amico. .Insulti ..Jerk:/say Lasciami in pace, jerk! ..Idiot:/me si domanda come faccia $? ad essere così idiota a volte. ..Enemy:/say Sono orgoglioso di avere $? come nemico! E così via! Basta solo ordinarli correttamente, utilizzando i punti. (se il metodo con cui sono organizzati le voci precedenti non vi è chiaro, provateli! Inserite i "commenti" precedenti sotto Tools/Popups. È più semplice capirli quando li si vede in funzione) Tutte le voci di menu popup possono anche essere assegnati ad un tasto Funzione! Questo è un metodo utile per accedere ai popup utilizzati più di frequente.... (Assicuratevi di utilizzare la sintassi corretta e di porli [i sostituti per i tasti funzione] nella sezione alias. Torna all'indice 7-3 La Sezione Remote.La sezione Remote è accessibile tramite Tools/Remote/... . Sicuramente la parte più avanzata di mIRC, è possibile eseguire cose, con la sezione Remote di mIRC, che solitamente richiedono tecniche di programmazione avanzata o speciali software di bot...Cose del tipo: offerta di file (una lista XDCC); risposta a specifici messaggi sul canale o in privato; risposte CTCP personalizzate; impostazione di vari livelli utente per i vostri amici; ...praticamente ogni cosa accade su IRC può ricevere una risposta automatica e questa risposta può utilizzare praticamente tutti i comandi di mIRC. La sintassi della Remote può essere a volte un po' complicata ma, si tratta di una semplice estensione dei formati spiegati precedentemente per le sezioni Aliases e Popups. Se si sono ben apprese quelle sezioni, comprese le Stringhe, allora è possibile procedere. In caso contrario, tornare indietro e si leggano (o rileggano) le Sezioni 7-1 e 7-2. Le informazioni presentate in quelle sezioni sono ASSOLUTAMENTE DA IMPARARE prima di provare la sezione Remote. È anche importante ricordare perché la Remote è chiamata Remote. La sezione Remote è disegnata per rispondere a ciò che viene eseguito da utenti DIVERSI da voi stessi -- in effetti, reagisce agli avvenimenti che accadono su IRC e consente agli altri di "controllare in remoto" la vostra sessione mIRC. Tutto secondo le funzioni che si implementeranno nella Remote. Molti esempi non possono venire provati inviando semplicemente i comandi o digitando i testi da voi stessi. Devono venire inviati da altri clienti o essere cose che accadono su IRC. La sezione Remote opera in maniera strettamente collegata con la sezione Users. Nella sezione Remote si definiranno gli Scripts per le persone della sezione Users. Ogni User della vostra lista Users può ricevere uno o più livelli. Questi livelli determinano a quali eventi un utente può accedere o che cosa accade quando un utente esegue determinata cosa. Nella sezione (Remote) Scripts è possibile definire come mIRC debba reagire agli avvenimenti che accadono su IRC, nei CTCP e nelle linee di (Raw) Event. Di base la lista utenti remoti, le variabile e gli script vengono salvati nel file remote.ini. Torna all'indice 7-3-1 Utenti Remoti (Remote Users.)In mIRC si selezioni Tools/Remote/ per aprire l'Editor di mIRC. Quindi ci si assicuri di selezionare la sezione Users. In questa sezione è possibile assegnare i vari livelli utente. È possibile assegnare determinati livelli ai vostri amici, altri livelli ai vostri "nemici" (è possibile creare quella che viene chiamata una "shit list") ed una serie di livelli ospiti nel mezzo.Perché è così importante? Supponiamo che si desideri scrivere un Evento Remoto allo scopo di fare un kick su chiunque dica la parola "nonsense" sul vostro canale (sostituite questa parola con qualsiasi cosa vi venga in mente).Vedremo come far ciò in seguito(nella Sezione 7-3-3) ma, per ora, è solo l'idea che è importante. Suona ragionevole no? OK, ma forse desiderate che SOLO gli utenti normali vengano "kikcati" per aver pronunciato "nonsense." Vorreste che i vostri amici venissero semplicemente avvertiti. E magari vorreste semplicemente ignorare la cosa per i vostri più cari amici. Ed inoltre se non vi interessa troppo di qualcuno magari vorreste fare un kick ED UN ban per aver detto "nonsense"! Per fare tutte queste cose (fornire una differente risposta a persone differenti) occorre impostare una lista utenti. Per ciascun utente si dovrà specificare il nick o l'indirizzo e il livello utente che si decide di assegnare ad essi. Ecco un esempio di una lista utenti valida:
1:nick1 1:nick2 2:nick3!account3@machine.subnet.net 2:*!account4@machine.subnet.com 3:*!*@machine.subnet.edu 4:*!*@*subnet.edu 5:*!account@*.subnet.edu 10:vostronick!vostroaccount@vostramachine.net I numeri scelti per i livelli utente sono completamente liberi. È possibile decidere cosa ciascun numero di livello utente possa o non possa fare come si vedrà nelle prossime due sezioni. Di base mIRC assegna a ciascuno non elencato nella lista utenti il livello 1. (In funzione dell'impostazione in Tools/Remote/Options/'Default user level'. Se si specificano livelli differenti per utenti diversi occorreranno comandi ed eventi che abbiano reazioni diverse per gli utenti di questi livelli... Tutto ciò verrà spiegato successivamente... Come si vede, sono permessi sia un nick che un indirizzo. Sono permesse anche le wildcard (caratteri jolly). Vi sono alcuni casi nei quali si potrà specificare un utente due volte, sia per nick che per indirizzo. Questi casi (con eventi di OP, DEOP, SERVEROP,.... e NOTIFY) sono spiegati nella Sezione 7-3-3. Non è necessario modificare tutto manualmente... è possibile utilizzare sia la finestra di Edit di mIRC io la linea di comando con i comandi /auser, /guser e /ruser. /auser /auser {livello} {nick o indirizzo} 'Auser' (Aggiungi user) aggiunge qualsiasi nick o indirizzo alla user list al livello specificato. Questo comando non verifica la validità dell'indirizzo. Il nick o l'indirizzo verranno aggiunti esattamente come sono stati scritti. /guser /guser {livello} {nick} [tipo] 'Guser' (Acquisisci user) aggiunge un nick alla user list specificandone l'indirizzo. Per poter far ciò mIRC esegue un /whois sul nick indicato ed aggiunge alla user list l'indirizzo restituito dal comando. Ciò significa che il nick indicato deve essere presente su IRC affinché si possa utilizzare il comando /guser per aggiungerlo alla lista. Specificando il 'tipo' mIRC ha la possibilità di aggiungere l'utente con diversi tipi di indirizzi con caratteri jolly. Si tratta dello stesso parametro 'tipo' utilizzato dal comando /ban. Si digiti un valore compreso fra 0 e 9 (si veda oltre). /ruser /ruser {nick o nick! o address o nick [tipo]} 'Ruser' (Rimuovi user) rimuove un nick o un indirizzo dalla User list. Affinché il comando funzioni occorre conoscere esattamente il nick o l'indirizzo indicato nella User list. Se qualcuno è indicato come nick!blabla@whatever.net è possibile anche utilizzare "/ruser nick!". Si ricordi di inserire "!" per rimuovere l'intera linea. In mIRC è stato realizzato una versione avanzata del comando /ruser che può funzionare come i comandi /ban e /guser. /ruser {nick} [tipo] se NON si specifica un tipo il comando opera come sempre rimuovendo il nick specificato dalla user list. Se si SPECIFICA un tipo allora il comando verifica l'indirizzo utente e lo rimuove dalla user list. Nota: Utilizzando differenti tipi di indirizzo consente di specificare una persona o un intero gruppo di persone utilizzando un diverso numero di caratteri jolly. Ecco i diversi risultati... Se non si indica un tipo allora, viene utilizzato il tipo 6:
Kreet!*vonck@Wit399402.student.utwente.nl tipo 0; *!vonck@Wit399402.student.utwente.nl tipo 1; *!*vonck@Wit399402.student.utwente.nl tipo 2; *!*@Wit399402.student.utwente.nl tipo 3; *!*vonck@*.student.utwente.nl tipo 4; *!*@*.student.utwente.nl tipo 5; Kreet!vonck@Wit399402.student.utwente.nl tipo 6; Kreet!*vonck@Wit399402.student.utwente.nl tipo 7; Kreet!*@Wit399402.student.utwente.nl tipo 8; Kreet!*vonck@*.student.utwente.nl tipo 9; Kreet!*@*.student.utwente.nl Un ultima nota; È ora possibile usare una parola come livello utente, ad esempio:
mircop:*!*@mardam.demon.co.uk
La quale può essere utilizzata con gli eventi come:
on mircop:JOIN:#mirc:/mode $chan +o $nick
mIRC mantiene un archivio interno delle persone presenti sui canali su cui vi trovate. Questo archivio viene utilizzato per velocizzare notevolmente le prestazioni di comandi tipo /ban, /guser e /ruser. Questi comandi solitamente fanno eseguire a mIRC un /whois sulla persona indicata nel comando. La lista interna memorizza informazioni del tipo nick!user@address per tutti gli utenti che si trovano sugli stessi *canali* su cui vi trovate. Quando viene eseguito un comando /guser, /ruser, /ban, /finger, /ignore o /dns, viene eseguita per prima cosa una ricerca nella lista interna per trovare l'indirizzo del nick specificato. Se non viene trovata alcuna corrispondenza allora, viene eseguito un normale /whois. Ciò velocizza moltissimo i ban... specialmente se siete "laggati"... La 'Internal Address list' viene attivata sotto 'Tools/Remote/Options'. Ponetela a ON! Torna all'indice 7-3-2 Remote Scripts - Comandi CTCP.In mIRC si selezioni Tools/Remote/ per aprire l'Editor di mIRC. Qui è possibile impostare come mIRC debba reagire alle cose che avvengono attorno a voi su IRC. Sono possibili due distinti gruppi di reazioni; reazioni ai comandi CTCP e reazioni agli Events (Eventi). IN questo paragrafo sono trattati i comandi CTCP.Introduzione - I comandi Remoti fanno riferimento ad un particolare tipo di comandi: i comandi CTCP.CTCP sta per Client To Client Protocol (Protocollo Cliente-Cliente). Le linee di comando Remote CTCP permettono di fa eseguire a mIRC una sola singola cosa -- permettono di far si che mIRC risponda ai comandi CTCP inviati da altri utenti nel modo da voi desiderato. Vi sono molti comandi ctcp definiti secondo la RFC di IRC (comandi standard). I più utilizzati sono version, ping, time, userinfo, clientinfo e finger. Ogni cliente IRC risponderà in maniera standard quando riceve uno di questi comandi. Questi comandi ctcp vengono inviati da o verso di voi nel formato:
/ctcp {vostronick} {comando con eventuali parametri}
Consideriamo il semplice esempio di un ping. L'altro utente scriverebbe:
/ctcp {vostronick} ping
Volendo potete inviare a voi stessi comando di ping! Provate! Si digiti "/ctcp {vostronick} ping". In circostanze normali, mIRC invierà la risposta standard al ping [ctcp nick pong]. Ma, tramite le linee di Remote è possibile ridefinire il tipo di risposta al ping. È possibile fare praticamente qualsiasi cosa quando si riceve un ping. e sopra ogni cosa è possibile inviare la normale risposta al ping. Oppure non inviarla. Dipende da voi. Vi è UNA eccezione a ciò... non è possibile nascondere la risposta di mIRC alle version.... Sapete, ci piace il messaggio pubblicitario.... È possibile creare anche dei nuovi comandi CTCP e le risposte per essi. Ecco come vengono gestite le funzioni del tipo di offerta di file (XDCC LIST e SEND). Per ora, torniamo al nostro esempio sul ping. Esempio: Risposta al Ping Personalizzata Si vada in Tools/Remote e si controlli sotto il menu 'View' se è già presente un file di nome comandi.ini o ctcps.ini. Se presente, si selezioni il file e si aggiungano e/o si correggano le linee di questo file. In caso contrario, si apra il menu File e si selezioni 'New' per creare un nuovo script. Ci si assicuri che sotto "Listening" sia selezionato l'elemento CTCP. (Quando gli elementi sotto "Listening" non sono attivati i comandi Remote ed i CTCP vengono ignorati.). Ora si inserisca questo esempio all'interno dello script già esistente o in quello nuovo.
ctcp 1:ping:/notice $nick ping? Hmmm! ...pang pang pang!!
Ora se qualcuno fa un ping su di voi, la vostra risposta sarà "ping? Hmmm ! ... pang pang pang !!" tramite un notice inviato alla persone che ha eseguito il ping, il tutto assieme alla normale risposta: 'pong'. Lo si provi dando il comando "/ctcp {vostronick} ping" Se non dovesse funzionare assicurarsi che mIRC sia in ascolto dei comandi Remote CTCP. Si attivi ciò dando il comando "/remote on" e/o "/ctcps on". Se si desidera che mIRC -non- restituisca la risposta al ping standard dopo la vostra risposta personalizzata è possibile bloccare il processo standard tramite il comando /halt. Lo si usi come
ctcp 1:ping:/notice $nick ping? Hmmm! ...pang pang pang!! | /halt
Ciò esegue la stessa cosa di prima con la differenza che non viene inviata la risposta al ping standard. Ancora una volta, provatela per vedere la differenza! Supponiamo che abbiate provato le due risposte spiegate precedentemente e che siate riuscite a farle funzionare, analizziamo un po' la sintassi utilizzata e quindi torneremo all'esempio precedente per capire _perché_ fa ciò che fa. Sintassi dei comandi Remote CTCP. I comandi Remote, ad eccezione di alcuni casi particolari, sono formati da 3 parti. Ciascuna di queste parti è separata da un due punti (:). La sintassi generale è:
ctcp {livello_comando}:{comando_ctcp}:{comando/i_attivato/i con eventuali parametri}
Analizziamo le singole parti una ad una: ctcp Indica a mIRC che ciò che segue è la definizione di un comando ctcp (comando Remote comando). {livello_comando} Questo comando risponderà a un utente con un livello uguale al livello del comando ed agli utenti con livelli più alti, a meno che siano stati creati per loro degli altri comandi. {comando_ctcp} Il comando CTCP può avere qualsiasi nome si desideri. Può essere un nome standard, un comando CTCP già esistente, come Ping o Version oppure, può essere un comando di vostra creazione. (tipo OPME, DIE, LEAVE, XDCC LIST,......) {comando/i_attivato/i con eventuali parametri} In questa parte si definisce il comando/i da attivare. Il loro formato e l'utilizzo di comandi multipli è esattamente identico a quello utilizzato negli alias e nei popup. Le stringhe di questa sezione vengono riempite automaticamente da mIRC... Occorre solo assicurarsi che le stringhe utilizzate siano definite... quindi se hanno senso se utilizzati in comandi remote... (Ad esempio $chan NON viene definita nei comandi remote!!) Diamo uno sguardo al nostro esempio di ping e proviamo ad analizzarlo.
ctcp 1:ping:/notice $nick ping? Hmmm! ...pang pang pang!!
Il prefisso ctcp indica a mIRC che ciò che segue è un comando remote. Nello stesso script possono essere utilizzati anche definizioni di alias, di eventi e di raw. Tutto ciò verrà meglio spiegato in seguito. 1 è il livello del comando. Tutti gli utenti con un livello utente uguale o superiore a 1 possono seguire questo comando. Ping è il comando CTCP a cui questo comando Remote reagirà. Il comando attivato è un /notice. In questo caso viene inviato un notice a $nick contenente l'intera linea "ping? Hmmm! ... pang pang pang!!" $nick è un identificatore che contiene il nick della persona che ha eseguito il comando CTCP... in questo caso chi ha fatto un ping su di voi. (Altre informazioni sugli identificatori nel seguito di questa sezione.) Ricapitolando, l'effetto del comando "/ctcp <vostronick> ping" è un "/notice {nick} ping? Hmmm! ...Pang pang pang!!" Il tutto viene eseguito appena viene ricevuto il CTCP Ping. È possibile utilizzare comandi multipli utilizzando il carattere |, come negli Alias e nei Popups. In questo modo un singolo comando Remote può attivare linee di comando multiple. L'utilizzo di | è veramente semplice e lo tratteremo successivamente. Per ora utilizzate | come collante per due comandi remote. Reazioni differenti per persone con differenti livelli utente. È possibile calibrare le vostre reazioni ai comandi remote assegnando loro differenti livelli. mIRC risponderà sempre ad un utente con la risposta di livello più alto che corrisponde al comando dato.. Analizziamo il tutto con queste linee di esempio...
ctcp 1:ping:/notice $nick ping? Hmmmm il tuo livello è troppo basso... | /halt ctcp 2:ping:/notice $nick ping? Hmmm! ...pang pang .... Quasi morto!! ctcp 3:ping:/notice $nick ping? ...pang !! Hmmm... mancato... ctcp 6:ping:/notice $nick ping? Hmmm! ...Beh... mi piaci... ti permetto di farmi un ping.. Un utente di livello 1 non riceverà alcuna risposta al ping eccetto un "ping? Hmmmm il tuo livello è troppo basso..." Un utente di livello 2 (2:nick3!account3@machine.subnet.net) non sopravviverà quando eseguirà un /ctcp <vostronick> ping ;o) Egli vedrà "ping? Hmmm! ...pang pang .... Quasi morto!!" Un utente di livello 3 (3:*!*@machine.subnet.edu) riceverà: " ping? ...pang !! Hmmm... mancato..." Gli utenti di livello 4 e 5 non hanno definita alcuna azione specifica... Il comando di livello più alto a loro disposizione è quello di livello 3... quindi queste persone (5:*!account@*.subnet.edu) vedranno anch'esse la reazione di livello 3!! gli utenti di livello 6 e superiori otterranno la risposta al ping di livello 6... Questa differenziazione a livelli è possibile per TUTTI i comandi remote (e eventi)... Assicuratevi di aver ben compreso tutto questo!!! Magari si rilegga la sezione precedente!! Identificatori speciali per le linee di comandi Remote. $nick, $address, $site, $level ecc. sono tutti identificatori speciali creati per essere utilizzati con le linee di remote. Possono venire utilizzate anche tutte le Definizioni di Stringhe (7-1-2). È possibile utilizzarle come e quando si vuole all'interno delle linee attivate dai comandi remote... $nick Il nick della persona che ha inviato il comando o ha attivato l'evento. $address L'indirizzo completo della persona che ha inviato il comando. $site Il sito della persona che ha inviato il comando. $wildsite Restituisce l'indirizzo dell'utente che ha attivato l'evento nel formato *!*@host.domain $level Rappresenta il livello dell'utente remoto. Nota: $chan NON È SEMPRE DEFINITA nei comandi Remote... $chan solitamente contiene il canale sul quale è stato dato il comando... I comandi CTCP non devo essere dati su un canale... oppure la persona che invia il comando può trovarsi su più canali... Capito?? Forse $active farà ciò che desiderate? Oppure $target? Esempio: Ecco un esempio che utilizza il parametro predefinito $address...
ctcp 1:address:/notice $nick Il tuo indirizzo è $address
Se un utente vi invia un comando '/ctcp {vostronick} address' , la risposta sarà un notice nel quale si leggerà: "Il tuo indirizzo è {qualsiasi indirizzo egli/ella abbia}". Esempio: Op di amici su richiesta (usando $2). Se non vi è ancora chiaro di come tutto questo funzioni non preoccupatevi. Provate a seguire i seguenti esempi e vedete se fanno "click" nella vostra testa. Se necessario, leggete e rileggete gli esempi precedenti. Ma non provate a scrivere i vostri comandi di Remote o di passare alla prossima sezione se non avete ben compreso il tutto.
ctcp 1:opme:/notice $nick Spiacente, non verrai reso Op su $2 ... il tuo livello di accesso è troppo basso ctcp 5:opme:/mode $2 +o $nick Se un amico con livello 5 invia '/ctcp {vostronick} opme {#nomecanale}', questo comando lo renderà Op sul canale indicato. Le persone di livello 1 NON verranno rese Op per quanti tentativi esse facciano.... In questo comando il parametro $2 viene utilizzato per fare riferimento alla seconda parola digitata nel comando CTCP opme. In questo caso, si tratta del nome del canale. ($1 sarà la parola 'opme') La $2- può essere utilizzata per processare una linea molto lunga inviata in un comando CTCP...
ctcp 5:return:/notice $nick $2-
Questo comando restituirà qualsiasi frase inviata dall'utente remoto. L'intera linea inviata dal remote user dopo il comando CTCP Return verrà posta nel parametro $2-. Che verrà restituito in un notice. A "/ctcp {vostronick} return Bladiebla die bladie bla bla bla" farà si che mIRC risponda eseguendo il comando "/notice friend Bladiebla die bladie bla bla bla". Comandi multipli. Un comando Remote CTCP può anche attivare comandi multipli....
ctcp 5:opme:/mode $2 +o $nick | /notice $nick Sei Op su $2
Se il vostro amico di livello 5 invia il comando:
'/ctcp {vostronick} opme #nomecanale'
Che cosa succede?? In pratica vengono attivati due comandi dal comando Remote CTCP opme... uno "/mode #name +o friend" due "/notice friend Sei Op su #name" Un altro comando CTCP che attiva comandi multipli:
ctcp 10:part:/part $2 | /notice $nick Sono uscito dal canale $2
E se un utente di livello 10 vi invia:
'/ctcp {vostronick} part #nomecanale'
questo comando fa si voi usciate da un canale su richiesta e segnalerà al richiedente l'avvenuta uscita... $2 contiene il nome del canale dal quale dovete uscire. $nick è il nick della persona che ha fatto la richiesta. Altri esempi.
ctcp 1:ping:/notice $nick Per favore non fare ping su di me.
...risponderebbe con: "/notice {nick} Per favore non fare ping su di me."
ctcp 5:time:/notice $nick È ora di comprarsi un orologio.
...risponderebbe con: "/notice {nick} È ora di comprarsi un orologio.
ctcp 10:whoareyou:/notice $nick Io sono chi dico di essere | /notice $nick E ti dico che io sono TE!
...risponderebbe con: "/notice {nick} Io sono chi dico di essere" seguita da "/notice {nick} E ti dico che io sono TE!" Torna all'indice 7-3-3 Remote Script - Eventi.In mIRC si selezioni Tools/Remote/ per aprire l'Editor di mIRC, quindi si selezioni il menu 'View' e si selezioni lo script di nome "events.ini". Nel caso non fosse disponibile uno script di events se ne carichi uno predefinito o se ne crei uno nuovo tramite File/New/. Un nuovo script ha come nome di base script1.ini.Come si è visto, le linee di Remote CTCP Script agiscono solo sui comandi CTCP. I Remote Events operano con tutto il resto che può accadere su IRC. Se ciò può suonare complicato non preoccupatevi. Come spiegato in precedenza, queste lezioni sono cumulative. Se avete capito i comandi Remote, I Remote Events saranno una bazzecola. Avete già imparato le cose veramente difficili. Attenzione: Generalmente mIRC può essere molto sensibile a sintassi di Remote Event scritte malamente. Utilizzare una sintassi scorretta può dare origine a GPF (General Protection Fault - Errori Irreversibili), quindi nel caso si abbiano degli improvvisi problemi di stabilità con mIRC, questa è la prima cosa da controllare! Sintassi dei Remote Event. I Remote Events sono: TEXT, JOIN, PART, KICK, OP, DEOP, NICK, QUIT, TOPIC, SERVEROP, NOTIFY, MODE, SERVERMODE e SMODE. Oltre all'evento TEXT sono disponibili eventi simili: ACTION, NOTICE, SNOTICE, CHAT, SERV e WALLOPS per origini di testi più specifiche. Nuovi sono gli eventi FILESENT, FILERCVD così come gli eventi CHATOPEN, CHATCLOSE, SERVOPEN e SERVCLOSE e molti altri Ciò che essi fanno e come utilizzarli verrà spiegato fra breve. Per prima cosa, alcuni rapidi esempi ed una spiegazione della sintassi utilizzata. La sintassi è essenzialmente simile a quella dei comandi Remote. Ecco un esempio di un Remote Event che reagisce a TEXT:
on 1:TEXT:ciao:#:/msg $nick Ciao anche a te!
Si vada in Tools/Remote e si osservi il file di script denominato events.ini, se già presente. Se non lo fosse tramite il menu File si selezioni 'New' per creare un nuovo script. Assicuratevi che sotto "Listening" sia selezionata la voce events. (Quando le voci sotto "Listening" non sono attive, gli eventi da voi creati saranno ignorati da mIRC). Ora si inserisca l'esempio precedente all'interno di un file di script già esistente o di uno nuovo. Questo Remote Event viene attivato quando viene trovata la parola "ciao" all'interno di qualsiasi canale. La risposta di mIRC consiste nell'invio di un messaggio privato alla persona che ha scritto ciao, nel quale si dice: "Ciao anche a te!" Ecco un altro esempio, questa volta che utilizza JOIN:
on 1:JOIN:#:/notice $nick Benvenuto su $chan
Questo evento viene attivato ogni volta che un nuovo utente entra su un canale sul quale siete presenti anche voi. Viene inviato un notice che dice "Benvenuto su {nomecanale}". Se siete arriva sino a questo punto ed avete capito i comandi Remote, ciò dovrebbe essere abbastanza semplice per voi. I Remote Events hanno 3, 4 o 5 parti separate da due punti. Tutti gli eventi hanno 4 parti ad eccezione di TEXT che ne ha 6 e di QUIT e NICK che ne hanno solo 3. Tutti gli eventi esclusi TEXT, NOTICE, SNOTICE, ACTION, QUIT e NICK hanno il seguente formato: {livello_evento}:{evento}:{dove}:{comando/i_attivato/i con eventuali parametri} {livello_evento} Questo evento avrà effetto su tutti gli utenti con questo livello utente e tutti i livelli superiori, a meno che altri eventi siano stati creati per essi. Esattamente come per il livello_comando nei comandi Remote. {evento} Il nome dell'evento che si sta ascoltando. JOIN, OP, ecc. {dove} #, #name. Dove si è in ascolto per questo evento? O # (qualsiasi canale) oppure il nome di uno specifico canale (come #test). ECCEZIONE: Non viene utilizzato con NICK o QUIT. Quindi semplicemente si salti questa parte. {comando/i_attivato/i con eventuali parametri} Il comando attivato. Esattamente come i comandi Remote con la differenza che vi sono alcuni parametri predefiniti differenti. ...e naturalmente, le grosse eccezioni sono gli eventi TEXT, ACTION, NOTICE, SNOTICE, CHAT e SERV che funzionano come: {livello_evento}:{evento}:{quale_testo}:{dove}:{comando/i_attivato/i con eventuali parametri} {livello_evento} Come sopra. {evento} Ovviamente sarà un TEXT o qualche cosa di simile.. {quale_testo} Specifica la parola o la frase per la quale si è in ascolto. Ad esempio "Ciao" come nel primo esempio. {dove} #, #name, ?, *. Come sopra, potete a TEXT e ACTION di ascoltare tutti i canali (#) o solo uno o più canali (come #test). Ma è anche possibile indicare di restare in ascolto su tutti i messaggi privati che ricevete o sia sui testi di un canale che dei messaggi privati (*).Un evento TEXT o ACTION non può "sentire" i messaggi in DCC Chat o Server. NOTICE ascolta i notice così come CHAT ascolta i testi nelle connessioni DCC Chat e SERV per il testo nelle finestre di DCC File Server. {comando/i_attivato/i con eventuali parametri} Come sopra. Gli Events Ecco l'elenco dei vari Remote a cui mIRC può rispondere... evento TEXT Avviene quando vengono trovate su un canale o in messaggi privati le parole/frasi specificate. ACTION e NOTICE funzionano nello stesso modo... Esempio:
on 1:TEXT:nonsense:#:/kick $chan $nick No nonsense!
Questa linea cerca la parola "nonsense" su qualsiasi canale ed esegue un kick sull'utente che l'ha pronunciata. Esempio:
on 1:TEXT:nonsense:#test:/kick $chan $nick | /notice $nick Ciao $nick , ha detto 'nonsense' e ciò non è permesso su #test...
Se viene detta la parola "nonsense" sul canale #test, che l'ha pronunciata viene escluso dal canale con un kick (se siete Op su #test) e gli viene inviato un notice: "Ciao {nick} , hai detto 'nonsense' e ciò non è permesso su #test..." Esempio:
on 5:TEXT:aiuto:?:/notice $nick Vorrei poterti aiutare, ma non posso.
Se in un qualsiasi messaggio privato trova la parola "aiuto" replica all'utente con il notice: "Vorrei poterti aiutare, ma non posso". È possibile specificare dei caratteri jolly all'interno del testo a cui mIRC deve reagire: * = reagisce a qualsiasi testo =word = NON più supportato!! (non più necessario) word* = se un utente inizia una riga con questa parola si attiva l'evento. *word = se un utente finisce una riga con questa parola si attiva l'evento. *word* = se un utente dice questa parola o frase in qualsiasi posizione si attiva l'evento. word = richiede una esatta corrispondenza per attivare l'evento... Esempio:
on 5:TEXT:aiuto:?:/notice $nick Vorrei poterti aiutare, ma non posso.
Questo evento reagisce solamente ad una richiesta di aiuto che contenga solo la parola aiuto... non se la linea contiene anche la parola 'aiuto'... Esempio:
on 5:TEXT:ciao*:?:/notice $nick Ciao a te!
Questo evento reagirà solamente a linee di messaggi privati che inizino con la parola 'ciao'. Altri esempi:
on 1:TEXT:whoami:*:/notice $nick Il tuo livello è $level on 1:TEXT:*ok:/msg $nick La tua frase termina con 'ok' evento ACTION Si veda l'evento TEXT.... funziona esattamente nello stesso modo... evento NOTICE Si veda l'evento TEXT.... funziona esattamente nello stesso modo... evento CHAT Funziona esattamente come l'evento TEXT ma resta in ascolto sui testi delle DCC Chat. Esempio:
on 1:CHAT:blabla:/msg $me $nick ha detto $1- nella vostra DCC Chat.
evento SERV Funziona come l'evento CHAT ma resta in ascolto sui testi delle DCC Fileserver Esempio:
on 1:SERV:get mirc:/echo server 6 To $nick invio del file zip di mIRC.
evento JOIN Si verifica quando un utente entra su un canale. Esempio:
on 1:JOIN:#test:/notice $nick Benvenuto sul canale #test!
Invia un notice che dice "Benvenuto sul canale #test!" a chiunque entri sul canale #test. Esempio:
on 25:JOIN:#cool:/kick $chan $nick Non sei il benvenuto qui!
Fa un kick a qualsiasi utente di livello 25 che entri su #cool con il messaggio: "Non sei il benvenuto qui!" evento PART Si verifica quando un utente lascia un canale. Esempio:
on 10:PART:#:/notice $nick Hey, grazie per aver visitato $chan !
Invia un notice che dice: "Hey, grazie per aver visitato {canale} !" a chiunque col livello 10 lascia il canale sul quale vi trovate. Esempio:
on 90:PART:#:/msg $chan Yahoo! $nick se ne è andato!
Invia un messaggio al canale dicendo:"Yahoo, {nick} se ne è andato!" se chiunque col livello 90 lascia il canale sul quale vi trovate. evento CONNECT Questo evento si attiva appena ricevuto il MOTD dopo la connessione ad un server (identico alla sezione perform). Esempio:
on 1:CONNECT:/echo Connesso al server $server !
evento DISCONNECT Si attiva quando si perde il collegamento ad un server.
on 1:DISCONNECT:/echo Ooops... hai perso il collegamento.
evento KICK Si verifica ogni volta che un utente riceve un kick da un canale. Esempio:
on 100:KICK:#:/kick $chan $nick | /invite $knick $chan | /notice $nick Questa persona è un mio amico!
Se una qualsiasi persona di livello 100 riceve un kick da qualsiasi canale, voi farete un kick su chi ha fatto il kick precedente, inviterete la persona a tornare ed invierete un "Questa persona è un mio amico!" a chi lo ha cacciato. Nota: $knick in questo evento è il parametro per il nick di chi riceve il kick. Inoltre si noti come questo esempio presenti comandi multipli. Funziona esattamente come i comandi Remote. evento OP Si verifica quando un utente riceve l'op. Nota: Questo evento richiede che le persone siano indicate nella Remote/Users list tramite il loro NICK! Esempio:
on 1:OP:#test:/notice $opnick Sei stato reso Op da $nick . Benvenuto!
Se qualcuno riceve un Op su #test, riceve un notice: "Sei stato reso OP da {opper}. Benvenuto!" Nota: $opnick in questo evento è il parametro per il nick della persona che riceve l'op. evento DEOP Si verifica quando un utente perde l'op. Nota: Questo evento richiede che le persone siano indicate nella Remote/Users list tramite il loro NICK! Esempio:
on 1:DEOP:#:/msg $opnick Che sfortuna. $nick ti ha tolto l'Op
Se qualcuno perde l'op, riceve un messaggio: "Che sfortuna. {deopper} ti ha tolto l'Op. Nota: $opnick in questo evento è il parametro per il nick della persona che perde l'op. Nota: Nella spiegazione degli eventi OP, DEOP, SERVEROP così come per NOTIFY è importante sottolineare una cosa. Per il fatto che i server indicano solamente i nick delle persone che ricevo o perdono l'op o che appaiono nel notify su IRC, gli eventi OP, DEOP, SERVEROP e NOTIFY funzionano correttamente solo se le persone che ricevono l'op, che perdono l'op o di cui viene notificata la presenza sono indicate nella Users list tramite il loro nick. Anche specificare l'indirizzo completo (nick!account@machine.address.net) NON è sufficiente... mIRC non estrarrà il nick da questa linea. L'unica eccezione è se si desidera che l'evento abbai effetto su tutti, dando un livello di accesso di 1 o qualsiasi altro valore si sia impostato come valore standard. Questo è l'unico caso nel quale non occorre avere un utente nella User list con il suo nick. Se si desidera assegnare alle persone un livello corretto per gli eventi OP, DEOP, SERVEROP o NOTIFY si dovrà inserirli nella Users list con il loro nick, tipo:
3:friendasnick 5:friendbsnick 5:friendcsnick 10:friendbsnick!accountb@bsmachine.net Questo metodo vi fornisce un buon motivo per indicare le persone nella Users list sia tramite il loro indirizzo completo (sono permessi i caratteri jolly) ed il loro nick. In tal modo si può garantire la reazione opportuna a OP, DEOP o SERVEROP senza dover fornire per sbaglio a TUTTE le persone con lo stesso nick gli stessi diritti dei vostri amici (o nemici). evento BAN evento UNBAN Con l'evento BAN è possibile togliere facilmente il ban ai vostri amici. Esempio:
on 5:BAN:#tree:/mode $chan -b $banmask
$banmask conterrà l'indirizzo completo che ha ricevuto il ban. Facile no? L'identificatore $bnickfa riferimento al nick dell'utente che riceve il ban. Tale identificatore non sempre viene assegnato in quanto alcune volte nella banmask non viene specificato alcun nick! UNBAN funziona esattamente come BAN. evento INVITE Si verifica quando si viene invitati su un canale. Esempio:
on 5:INVITE:#test:/join $chan | /describe $chan ti ringrazia per averlo invitato!
Se si viene invitati su #test, si entrerà sul canale e si utilizzerà una action che dice: "{me} ti ringrazia per averlo invitato!" evento NICK Si verifica quando un utente cambia il proprio nick. Esempio:
on 1:NICK:/notice $newnick Penso che $nick fosse un nickname più simpatico!
Invia un notice a chiunque cambia il proprio nick, "Penso che {il vecchio nick} fosse un nickname più simpatico!" Nota: $nick è il parametro contenente il vecchio nick e $newnick per (indovinate cosa?) il nuovo nick. Nota: La parte {dove} non viene utilizzata in NICK. evento QUIT Si verifica quando un utente esce da IRC. Esempio:
on 2:QUIT:/notice $me È ora di divertirsi! $nick ha appena lasciato IRC!
Quando qualcuno esce, inviate un notice a voi stessi : "È ora di divertirsi! {Nick} ha appena lasciato IRC!" Nota: La parte {dove} non viene utilizzata in QUIT. evento TOPIC Si verifica quando il topic di un canale cambia. Esempio:
on 1:TOPIC:#:/msg $chan Wow, mi piace questo nuovo topic!
Se il topic di un canale cambia, invia un messaggio al canale che dice: "Wow, mi piace questo nuovo topic!" evento SERVEROP Si verifica quando un server assegna (restituisce) lo stato di Op ad un utente del canale. Nota: Questo evento richiede che le persone siano indicate tramite NICK all'interno della Remote/Users list ! Esempio:
on 1:SERVEROP:#mirc:/mode $chan -o $nick | /notice $opnick Spiacente, gli op da server non sono permessi su $chan
Se una persona riceve l'op da server su #mIRC allora, alla persona che ha ricevuto l'op viene tolto e riceverà un notice: "Spiacente, gli op da server non sono permessi su #mIRC". Gli op da server solitamente si verificano dopo un netjoin quando due server precedentemente scollegati scambiano e aggiornano tutti i mode di canale. evento NOTIFY evento UNOTIFY Questi eventi si attivano appena una persona presente nella vostra lista di notify si collega ad IRC o ne esce. Nota: Questo evento richiede che le persone siano indicate tramite NICK all'interno della Remote/Users list ! È possibile utilizzare questo evento per eseguire azioni tipo un /whois sul nick segnalato per assicurarsi che si tratti effettivamente della persona che conoscete.... Ricordate che questo evento funziona SOLO sui nick indicati nella remote/user tramite NICK.... (come per OP, DEOP e SERVEROP) Ciò è dovuto al protocollo IRC che non fornisce l'indirizzo della persona segnalata... Si deve inserire il nick in File/Options/Notify_List e da questo momento appena mIRC si accorge che la persona è su IRC viene attivato questo evento. L'evento UNOTIFY si attiverà appena mIRC si accorge che nick ha lasciato IRC o ha cambiato il suo nick. Esempi:
on 1:NOTIFY:/notice $nick Se sei veramente $nick alla entra su #mine per favore! on 1:UNOTIFY:/echo $active $nick ha lasciato IRC. on 3:NOTIFY:/whois $nick on 5:NOTIFY:/beep 10 50 | /whois $nick evento MODE evento SERVERMODE Questi eventi reagiscono ai cambiamenti nei mode di canale. L'evento MODE ha cambiato la sua sintassi. Non forza più i mode di canale. $1- viene ora riempito con i cambiamenti di mode eseguiti. Si utilizzi questi eventi per reagire ai cambiamenti di mode del canale. Esempi:
on 1!:MODE:#name:/echo 6 Cambiamenti di Mode da parte di $nick su $chan ! on 1!:SERVERMODE:#name:/echo 6 Cambio di mode da parte del server in $1- Si ricordi che se si concede ad una persona con un livello utente alto di poter cambiare i mode di canale senza che voi reagiate, utenti con un livello più basso potranno fare confusione! Appena cambiano un mode (o lo cambia il server) viene attivata la forzatura dei mode; mIRC non ricorda che parte di questi mode e' stata impostata da una persona con un alto livello utente... Si faccia attenzione anche ai cicli infiniti nei quali piu' persone su un canale forzano i cambi di mode!! evento USERMODE Questo evento si attiva quando cambiati i vostri mode utente. Quando i vostri mode cambiano (ad esempio a +i) questo evento se ne accorge e fornisce la possibilità di reagire. evento VOICE evento DEVOICE Questi eventi reagiscono quando le persone ricevono o perdono il voice sui canali. Esempi:
on 1:VOICE:/notice $nick Benvenuto nel mondo dei parlatori! on 1:DEVOICE:/notice $vnick Hey, $nick ha il permesso di parlare! evento SNOTICE Questo evento resta in ascolto per i notice da server. I notice da server segnalano tutto quello che succede nel server IRC utilizzato. Per riceverli occorre impostare il proprio user mode a +s (/mode #nickname +s).La maggior parte delle persone non hanno bisogno di questa impostazione... È una funzione pensata essenzialmente per gli IRCop ed i gestori dei server. Con questo evento è possibile filtrare i notice da server che ricevete ed impedire che essi vengano visualizzati e/o reagire a questi eventi. La sintassi dell'evento è molto simile a quella dell'evento TEXT...
1:SNOTICE:servers_testo:/echo 6 status Il server segnala: $1-
evento FILESENT Questo evento reagisce a tutti i trasferimenti di file tramite DCC Send completati con successo. Può essere utilizzato per inviare a voi stessi o al ricevente un breve messaggio...
on 1:FILESENT:*.txt,*.ini:/echo Inviato $nomefile a $nick ( $+ $address $+ ) on 1:FILESENT:mirc50s.exe:/notice $nick Buon divertimento con mIRC a 16 bit on 1:FILESENT:mirc50t.exe:/notice $nick Buon divertimento con mIRC a 32 bit evento FILERCVD Questo evento reagisce a tutti i trasferimenti di file tramite DCC Get completati con successo. Viene attivato appena un file viene ricevuto completamente. Può essere utilizzato per inviare a voi stessi o al trasmittente un breve messaggio oppure per avviare una applicazione per visualizzare l'immagine, il suono o il testo ricevuto.
on 1:FILERCVD:*.txt,*.ini:/run notepad.exe $nomefile on 1:FILERCVD:*.wav:/wavplay $nomefile on 1:FILERCVD:*.gif:/run c:\windows\wingif\wingif.exe $nomefile on 1:FILERCVD:*.jpg:/run c:\windows\lview\lviewp19.exe $nomefile on 1:FILERCVD:*.mid,*.voc:/run wplany.exe $nomefile on 1:FILERCVD:*.*:/notice $nick Grazie per il file! evento SENDFAIL evento GETFAIL Questi eventi si attivano quando un DCC transfer fallisce a causa di una perdita di connessione o per time-out. Esempi:
on 1:SENDFAIL:*.txt:/echo fallito l'invio di $nomefile a $nick on 1:GETFAIL:*.txt:/echo fallita la ricezione di $nomefile da $nick evento CTCPREPLY Resta in ascolto per le risposte ai ctcp:
on 1:CTCPREPLY:PING*:/echo $active Ricevuta risposta al ping da $nick on 1:CTCPREPLY:*mirc*:/echo $active Wow $nick utilizza anche lui mIRC! evento MIDIEND Questo evento si attiva quando un file midi finisce di essere eseguito (ma non se lo si interrompe per eseguire un altro midi o utilizzando /splay stop). Esempio:
on 1:MIDIEND:/echo mIRC ha terminato l'esecuzione del file midi!
evento INPUT Questo evento si attiva quando si immette un qualsiasi messaggio di testo nell'editbox e si preme Invio. È possibile manipolare la linea tramite uno script o in qualsiasi altro modo si desideri! /halt impedisce la normale gestione del testo. Esempio:
on 1:INPUT:/echo ha inserito $1-
evento LOAD Si attiva quando mIRC viene avviato e gli script vengono caricati. evento START Si attiva appena uno (nuovo) script è pronto all'esecuzione.
on 1:LOAD:/echo script caricato con successo on 1:START:/echo script avviato Con l'evento LOAD è possibile dare comandi mentre mIRC carica gli script. Per fornire comandi di inizializzazione da eseguire quando mIRC viene eseguito per la prima volta (e caricare automaticamente degli script) utilizzare l'evento START. La sezione START viene eseguita successivamente alla sezione LOAD quando uno script viene caricato per la prima volta. Se uno script viene caricato tramite la finestra di dialogo remote, i comandi di auto-run non verranno eseguiti sino a quando la finestra di dialogo non verrà chiusa. Identificatori speciali per le linee di Remote Event. $nick, $address, $site ecc. sono tutti identificatori speciali creati per essere utilizzati nelle linee di remote. È possibile utilizzarli come si desidera nelle linee attivate dagli eventi remoti... $nick Il nick della persona che ha inviato il comando o ha attivato l'evento. $address L'indirizzo completo della persona che ha inviato il comando. $site Il sito della persona che ha inviato il comando. $wildsite Restituisce l'indirizzo dell'utente che ha attivato l'evento nel formato *!*@host.domain $level Rappresenta il livello dell'utente remoto. $chan Il canale sul quale alcuni eventi attivano una linea di Remote/Events. $target Il destinatario dell'evento (nei notice da server) Torna all'indice 7-3-4 I vari marcatori che è possibile utilizzare davanti alle linee di CTCP i di Remote/Events.Per finire alcune note sull'utilizzo dei vari marcatori che possono essere utilizzati nella sezione Remote. (Con comandi e/o eventi) I vari marcatori che è possibile utilizzare richiedono di essere provati un po'.... verificare cosa fanno e quando. Verificare se svolgono ciò che si desidera e provarli moltissimo!Il marcatore !. (solo per gli Events) Questo marcatore fa chi che gli eventi non vengano attivati a seguito di vostre azioni.... mIRC non reagirà a cose dette o fatte da clienti con il vostro indirizzo.(Un marcatore simile è il marcatore flag 'me' ... che assicura che non venga attivato nulla dal cliente IRC da voi utilizzato. Reagisce a qualsiasi altro cliente IRC che potreste stare utilizzando simultaneamente.) Esempio:
on 1!:JOIN:#mine:/notice $nick Benvenuto.
Non reagisce se voi entrate su #mine ....tutti gli altri riceveranno il messaggio di Benvenuto. Il marcatore = (solo per gli Events) Questo marcatore viene utilizzato per impedire che accada qualsiasi cosa .... è possibile utilizzarlo per non infastidire le persone con un livello utente elevato con eventi pensati per persone con livelli più bassi. Esempio:
on 1:JOIN:#mine:/ctcp $nick VERSION on 3:JOIN:#mine:= Gli utenti di Livello 1 e 2 riceveranno una richiesta di Version mentre gli utenti di livello 3 o superiore non vedranno nulla di tutto ciò,... nemmeno voi. (Nella versione 3.2 si doveva impostare un evento vuoto per fare ciò). Esempio:
on 1:JOIN:#test1:/notice $nick Benvenuto su #test1 on 1:JOIN:#test2:/notice $nick Benvenuto su #test2 on 3:JOIN:= Gli utenti di livello 3 e superiore non riceveranno il notice di Benvenuto.... gli utenti di livello più basso lo riceveranno solo su #test1 e #test2. Il marcatore + Questo marcatore rende disponibile un dato comando SOLO agli utenti con l'ESATTO livello per quel comando... Gli utenti di livello superiore (e naturalmente quelli di livello inferiore) non potranno utilizzarlo accedervi! Esempio:
on 1:JOIN:#mine:/ctcp $nick VERSION on +3:JOIN:#mine:/notice $nick Benvenuto. Tutti gli utenti ad ESCLUSO quelli di livello 3 riceveranno una richiesta di versione sul canale 'mine' ... Gli utenti di livello 3 riceveranno un messaggio di benvenuto... Esempio:
on +5:JOIN:#mirc:/msg $nick Benvenuto utente di livello 5!
I marcatori ; e REM Questi marcatori possono essere utilizzati per disabilitare temporaneamente dei comandi o degli eventi 'commentandoli'. Esempio:
on 1:JOIN:#mine:/notice $nick Benvenuto. REM on 1:JOIN:#mine:/notice $nick Benvenuto. I marcatori * e @ Questi due marcatori equivalenti fra loro fanno si che mIRC esegua un evento o un comando SOLO se si è Op sul canale nel quale i comandi o gli eventi vengono utilizzati.
on *1:JOIN:#mine:/notice $nick Benvenuto. on @10:JOIN:#mine:/mode $chan +o $nick Il marcatore me Questo marcatore ha lo scopo di assicurare che gli eventi operino solo se qualcuno ha esattamente lo stesso vostro indirizzo. Quest'altra persona normalmente dovrebbe essere una seconda istanza di mIRC eseguita sullo stesso PC. Ricordate che tramite un utilizzo appropriato dei livelli utenti nella sezione Remote/users non dovreste mai (?) aver bisogno di questo marcatore. Marcatori condizionali. Nella versione 3.7 di mIRC sono stati introdotti alcuni marcatori addizionali per gli EVENTS. Con questi marcatori è possibile far si che mIRC tenga conto del livello della persona che ha attivato un EVENTO. Questi marcatori possono essere utilizzati con gli eventi OP, DEOP e KICK poiché questi eventi sono gli unici che operano su qualcuno che fa qualche cosa a qualcun'altro. I tre marcatori che è possibile utilizzare sono >, < e =. Ma è anche possibile fare delle combinazioni matematiche di questi marcatori che portano il numero di marcatori a 6: <, >, <=, >=, <> e =. Questi marcatori faranno si che l'evento venga attivato solo se PRIMO il livello dell'evento corrisponde alla persona che riceve l'op, che lo perde o che riceve un kick. SECONDO che il livello dell'attivatore corrisponda all'espressione matematica{livello-attivatore} [marcatore (espressione matematica)] {livello_evento} Credo che ora servano alcuni esempi.... !! Si supponga che siate la GUARDIA con un Amico di livello due ed un Attivatore che può avere livelli differenti... Si immagini ora questi semplici EVENTI:
on <2:DEOP:#test123:/msg $chan attivato il < on >=2:DEOP:#test123:/msg $chan attivato il >= Con l'attivatore a livello 1.
*** L'attivatore imposta il mode: -o Friend <GUARD> attivato il < Il vostro Amico ha il livello 2, l'Attivatore ha il livello 1, 1<2 è valido (uno è minore di 2), viene attivato il primo livello dell'evento 2 DEOP... Con l'attivatore a livello 2.
*** L'attivatore imposta il mode: -o Friend <GUARD> attivato il >= Il vostro Amico ha il livello 2, l'Attivatore ha il livello 2, 2<2 non è valido, 2>=2 è valido (2 è maggiore o uguale a 2), viene attivato il secondo livello dell'evento 2 DEOP... Con l'attivatore a livello 3.
*** L'attivatore imposta il mode: -o Friend <GUARD> attivato >= Il vostro Amico ha il livello 2, l'Attivatore ha il livello 3, 3<2 non è valido, 3>=2 è valido (3 è maggiore o uguale a 2), viene attivato il secondo livello dell'evento 2 DEOP... Come si vede risulta abbastanza semplice una volta capito il meccanismo... rileggetelo sino a quando lo avrete ben capito... Altri esempi:
on <2:DEOP:#test123:/msg $chan attivato il < on >2:DEOP:#test123:/msg $chan attivato il > Con l'attivatore a livello 1.
*** L'attivatore imposta il mode: -o Friend <GUARD> attivato il < Con l'attivatore a livello 2.
*** L'attivatore imposta il mode: -o Friend
Con l'attivatore a livello 3.
*** L'attivatore imposta il mode: -o Friend <GUARD> attivato il > on =2:DEOP:#test123:/msg $chan attivato = Con l'attivatore a livello 1.
*** L'attivatore imposta il mode: -o Friend
Con l'attivatore a livello 2.
*** L'attivatore imposta il mode: -o Friend <GUARD> attivato = Con l'attivatore a livello 3.
*** L'attivatore imposta il mode: -o Friend
Torna all'indice 7-3-5 Variabili.Selezionare il menu Tools/Remote/ e si vada alla sezione "Variables"... In questa parte della Remote è possibile impostare le proprie variabili. Le variabili possono contenere numeri, parole o anche linee di testo. Sulle variabili contenenti numeri è possibile operare delle manipolazioni matematiche per aumentare, diminuire, addizionare o sottrarre variabili con valori specifici o fra di loro. Le variabili iniziano sempre con un % e possono avere un nome di qualsiasi lunghezza. Le variabili vengono memorizzate fra una sessione e l'altra in un file di variabili all'interno della directory di mIRC.Sono disponibili diversi comandi per creare e gestire le variabili: (q=quiet; non viene riportato il risultato dell'operazione) /set [-q] <%var> [valore] per creare una variabile /unset [-q] <%var> [%var2] ... [%varN] per cancellare una variabile /unsetall Per cancellare tutte le variabili /inc [-q] <%var> [valore] Per incrementare una variabile con un dato valore (numero o variabile) /dec [-q] <%var> [valore] Per decrementare una variabile con un dato valore (numero o variabile) Con l'aiuto di questi comandi è possibile realizzare qualsiasi tipo di linee di alias o di remote! Ecco una serie di esempi: comandi Remote (si veda oltre):
ctcp 2:xdcc send #1:/dcc send $nick c:\temp\serve\mirc50s.exe | /inc %mirc16 1 ctcp 2:xdcc send #2:/dcc send $nick c:\temp\serve\mirc50t.exe | /inc %mirc32 1 ctcp 2:xdcc send #3:/dcc send $nick c:\temp\serve\mircfq31.zip | /inc %faq 1 ctcp 1:stats:/notice $nick Statistiche invio: mIRC= %mIRC e FAQ= %faq eventi Remote (si veda oltre):
on 2:TEXT:xdcc send #1*:?:/dcc send $nick c:\temp\serve\mirc50s.exe | /inc %mirc16 1 on 2:TEXT:xdcc send #1*:?:/dcc send $nick c:\temp\serve\mirc50t.exe | /inc %mirc32 1 on 2:TEXT:xdcc send #2*:?:/dcc send $nick c:\temp\serve\mircfq31.zip | /inc %faq 1 Alias:
/stats /echo 6 mIRC16: %mirc16 mIRC32: %mirc32 and FAQ: %faq
Con queste linee ho realizzato un piccolo contatore per i download... non perfetto ma funziona! È possibile anche aggiungere alcuni alias come questo che segue per mantenere statistiche parziali:
/reset /set %date $day $date | /inc %mirc16tot %mirc16 | /inc %mirc32tot %mirc32 | /inc %faqtot %faq | /set %mirc16 0 |set %mirc32 0 | /set %faq 0 /stats /echo 6 Stats mIRC16: %mirc16 ( %mirc16tot ) mIRC32: %mirc32 ( %mirc32tot ) e FAQ: %faq ( %faqtot ) (Set on %date ) Quando si incrementa o decrementa una variabile che non esiste questa verrà creata automaticamente ed impostata al valore che ci si aspetta. Esempio:
/inc %test1 6 imposterà %test1 a 6 se la variabile non esisteva precedentemente /dec %test2 7 imposterà %test2 a -7 se la variabile non esisteva precedentemente Nota : Bisogna assicurarsi di inserire sempre il % !Ciò permette di evitare un mucchio di piccoli ma possibili problemi nell'analisi del comando da parte di mIRC. Ciò non limita i modi con cui le variabili possono essere utilizzate poiché è possibile utilizzare costruzioni del tipo:
ctcp 1:upme:/inc % $+ $site 1 ctcp 2:xdcc send #1:/dcc send $nick c:\temp\serve\mirc50s.exe | /inc % $+ $nick 1 ctcp 2:xdcc send #2:/dcc send $nick c:\temp\serve\mirc50t.exe | /inc % $+ $nick 1 ctcp 2:xdcc send #3:/dcc send $nick c:\temp\serve\mircfq31.exe | /inc % $+ $nick 1 ctcp 2:xdcc stats:/notice $nick Hai già scaricato i file %nick il %date Torna all'indice 7-3-6 Remote Scripts - gestione dei Raw.In Tools/Remote/ Scripts mIRC permette di gestire direttamente tutti i processi server <> cliente (mIRC) nel modo desiderato. Funziona esattamente come i Remote Events con la differenza che mIRC resterà in ascolto di eventi NUMERICI. Questi numeri del server sono descritti nella IRC RFC1459 (http://ds.internic.net/rfc/rfc1459.txt). Altre informazioni specifiche per mIRC sono disponibili presso http://www.teleport.com/~jeepster/numeric.html È opportuno utilizzare le linee di Raw Script -solo- se si sa esattamente quello che si sta facendo e solo se strettamente necessario. Un cattivo utilizzo di linee di Raw Script possono rendere mIRC ingovernabile. È possibile sostituire le routine interne di mIRC.Esempio:
raw 322:*mirc*:/echo 2 $1-
Questa linea stampa tutte le linee contenenti la parola "mIRC" durante l'esecuzione di una /list di canali (si tratta di una prova molto intensa come carico di lavoro). Per ricopiare, sulla finestra attiva, un sommario di 2 linee di quanto restituito dal comando /whois, si inseriscano le seguenti linee nella sezione Raw (listening deve essere attivo):
raw 311:*:echo 5 $active *** $2- raw 319:*:echo 5 $active *** $2- Queste due righe visualizzeranno le linee user e canali. I valori numerici per le altre risposte del /whois sono: 312, server; 313, ircop; 301, away; 317, idle; e 318, end. Per una copia completa del /whois, si duplichi semplicemente le linee precedenti utilizzando questi numeri. Per scoprire quali sono i valori numerici utilizzati dai server è possibile utilizzare l'identificatore $numeric che fa riferimento ai numeri dell'evento raw che è stato attivato. Nella IRC RFC1459, Sezione 6; risposte numeriche, è possibile trovare tutti i valori numerici con il loro valore, nome e stringa di risposta. Torna all'indice 7-4 Utilizzo avanzato dei comandi; Comandi multilinea.In mIRC è possibile utilizzare comandi e creare alias, popups e script di remote script con linee condizionali, cicli ed altri cose utili. Per spiegarli tutti credo sarebbe necessaria un'altra FAQ ma, proverò a avviarvi sulla strada corretta tramite una breve sezione ed alcuni esempi. Credo sia meglio iniziare subito.....Per prima cosa ora mIRC permette definizioni multilinea di alias, popup, e script. Ciò permette di scrivere i vari comandi in un modo semplice e strutturato come:
<prefisso di definizione> { /comando1 ... /comando2 ... /comando3 ... } Esempio:
/away /ame è AWAY ( $+ $?="Motivo" $+ ) | /away Impostato l'away alle $time { $+ $! $+ } /back /ame è tornato,.. cosa ho perso ?? | /away Questi alias possono essere anche definiti come
/away { /ame e AWAY ( $+ $?="motivo" $+ ) /away Impostato l'away alle $time { $+ $! $+ } } /back { /ame è tornato,.. cosa ho perso ?? /away } Sono d'accordo che tutto ciò non è di grande aiuto in questo esempio ma, quando si scriveranno e si proverranno i nuovi comandi condizionali di mIRC questa struttura risulterà utile! si noti che le parentesi { } sono necessarie all'esterno di tutti i comandi che usano la nuova possibilità dei cicli condizionali ecc. Ecco ci siamo arrivati, se lo si desidera è possibile tralasciare tutti i prefissi di comando / ... Non sono più necessari. È stato aggiunto un comando /goto che può essere utilizzato nelle definizioni {}. Esempio:
/greet { /set %x 0 :retry /inc %x /goto %x :2 /echo line2 /halt :1 /echo line1 /goto retry } L'alias farà l'eco delle linee "line1" e "line2" sul vostro schermo. La prova e di eseguire questo comando perfettamente equivalente in qualche casella di testo:
/set %x 0 | :retry | inc %x | goto %x | :2 | echo line2 | halt | :1 | echo line1 | goto retry
Vi mostrerà esattamente quello che succede. ;-) E? possibile utilizzare una variabile come nome per il goto, es.
:%jumppoint
Se si imposta "/set %jumppoint 5" è possibile eseguire "/goto 5" e mIRC calcolerà %jumppoint a 5 e salterà ad esso. Nell'esempio precedente il punto di salto era fissato a '1' e '2'. Si provino questi 3 comandi e si verifichi cosa succede adesso.
/set %jump1 1 /set %jump2 2 /set %x 0 | :retry | inc %x | goto %x | :%jump2 | echo line2 | halt | :%jump1 | echo line1 | goto retry È possibile utilizzare il comando /return per terminare l'esecuzione di un comando e per permettere a qualsiasi processo standard di continuare. es.
on 1:JOIN:#mIRC { /echo 3 #mIRC [Entra $nick] /return /echo 3 #mIRC Io non vengo mai stampata! } Il risultato sarà un messaggio del tipo:
[Entra henk] *** henk (monster@ppp.dial.tip.nl) has joined #mIRC Assicurarsi di...! Assicurarsi di non perdersi in definizioni con parentesi incomplete. Quando si aprono parentesi '{' e non le si chiudono con '}' mIRC potrebbe iniziare a comportarsi in modo strano!! Lavorate con prudenza! È stato aggiunto un pulsante speciale alla finestra di dialogo dell'editor degli Alias, Popups e dei Remote che verifica che il conteggio delle parentesi nello script corrente sia corretto. È il pulsante con il disegno delle "{}". /if /elseif /else Ora credo siate pronti per le cose veramente difficili!! In mIRC è disponibile un semplice comando di /if.
/if v1 operatore v2 { ... } | /elseif v1 operatore v2 { ... } | /else { ... }
Esempio: Inserire questo alias ed avviarlo con "/test 4";
/test { set %i 0 | :start | inc %i | if %i > $1 halt | echo $active %i | goto start }
If/elseif/else possono essere nidificati fra di loro. È possibile utilizzare parentesi () e {} per assicurarsi che vengano valutati correttamente (nell'ordine corretto), tuttavia non è indispensabile utilizzarle. L'utilizzo delle parentesi velocizza leggermente l'elaborazione poiché mIRC conosce esattamente cosa ha da valutare. Gli operatori ed i comparatori disponibili sono: == uguale a != diverso da < minore di > maggiore di >= maggiore o uguale a <= minore o uguale a // è un multiplo di \\ non è un multiplo di isin stringa v1 contenuta in stringa v2 iswm stringa jolly v1 corrisponde a stringa v2 ison nick v1 è sul canale v2 isop nick v1 è un op del canale v2 isvo verifica se l'utente v1 ha voce sul canale v2 isnum il numero v1 è un numero nell'intervallo v2 che è nella forma n1-n2 (v2 è opzionale) ischan se v1 è un canale sul quale vi trovate. isauto se v1 è un utente della vostra lista di auto-op per il canale v2 (v2 e opzionale) isignore se v1 è un utente nella vostra ignore list con marcatore di ignore v2 (v2 e opzionale) isprotect se v1 è un utente della vostra protect list per il canale v2 (v2 e opzionale) isnotify se v1 è un utente della vostra lista di notify. Per negare le voci precedenti basta aggiungere il prefisso !. Esempio:
/massinvite { echo 4 * Mass-inviting # | set %i $nick(#,0) | :next | if $nick(#,%i) != $me invite $nick(#,%i) $1 | dec %i | if %i > 1 goto next | echo 4 * Mass-invite # eseguito }
Utilizzare questo alias con "/massinvite #vostrocanale".(si noti che il massinvite è considerata una azione molto maleducata!) Esempio:
/randnopkick { :begin | set %kicknick $nick(#,$r(1,$nick(#,0))) | if %kicknick isop # goto begin | /echo 6 %kicknick }
Se si è un op su un canale è possibile eseguire un non-op-kick-casuale. Esegue il kick su una persona a caso presente sul canale no non su un op. Ricordate.... se sono disponibili solo op avete un problema ;-) Esempio:
/line { %line = "" | if $asc($1) < $asc($2) { set %i $asc($1) | :add | %line = %line $chr(%i) | inc %i | if %i <= $asc($2) { goto add } | if (%line == "") { halt } | else { echo # %line | halt } } else echo # spiacente non valido }
Avviate l'alias digitando "/line d k" per verificare cosa faccia. Stamperà una linea del tipo 'd e f g h i j k'. Niente di particolarmente utile ma mostra molto bene la potenza degli if/elseif/else. Esempio:
/printnum1 { if $len($1) = 1 { if $1 !isin 1234567890 { echo 6 $1 non è un numero | goto end } } | elseif $len($1) = 2 { if $mid(1,1,$1) !isin 1234567890 { echo 6 $mid(1,1,$1) non è un numero | goto end } | elseif $mid(2,1,$1) !isin 1234567890 { echo 6 $mid(2,1,$1) non è un numero | goto end } } | elseif $len($1) > 2 { echo 6 $1 ha troppi caratteri | goto end } | { set %x 1 | :begin | echo 6 %x | if %x >= $1 { goto end } | else { inc %x | goto begin } | :end } } /printnum2 { if $1 !isnum { echo 6 $1 non è un numero | goto end } | elseif $1 !isnum 0-99 { echo 6 $1 è un numero troppo grande | goto end } | { set %x 1 | :begin | echo 6 %x | if %x >= $1 { goto end } | else { inc %x | goto begin } | :end } } Questi due alias fra loro equivalenti stampano entrambi una lista di numeri compresa fra due valori dati. Si provi con "/printnum1 14" o qualche cosa di simile... Il secondo alias mostra un miglio utilizzo degli identificatori che riducono la lunghezza dell'alias. Identificatori vuoti o non validi Le variabili e gli identificatori che non possono essere valutati in un valore restituiscono il valore $null quindi possono essere utilizzati in definizioni di if per controlli ed altro. Esempio:
/listops { echo 4 * Lista degli Op su # | set %i 1 | :next | set %nick $nick(%i,#) | if %nick == $null { goto done } | if %nick isop # { echo 3 %nick è un Op su # } | inc %i | goto next | :done | echo 4 * Fine della lista degli Op }
Questo alias elenca tutti gli op del canale su cui i trovate. Oppure in un remote eventi:
on 1:CTCPREPLY:PING* { if ($2 == $null) echo [ $+ $nick risposta al PING ] else { %pt = $ctime - $2 if (%pt < 0) set %pt 0 echo [ $+ $nick risposta al PING ] %pt secondi } halt } Altri esempi di popup.
DaiOp { %i = 0 | %nicks = "" | :nextnick | inc %i | if ($snick(#,%i) == $null) { if ($len(%nicks) > 0) mode # +oooo %nicks | halt } | %nicks = %nicks $snick(#,%i) | if (4 // %i) { mode # +oooo %nicks | %nicks = "" } | goto nextnick }
Questo menu popup esegue l'op su tutte le persone selezionate sul canale su cui siete operatore.
Selkick:/kick # $token($r(1,$snick(#,0)),44,$snicks)
Questo popup esegue il kick su una persona a caso fra le persone selezionate su un canale.
RandNopkick:/kick # $nopnick(#,$r(1,$nopnick(#,0)))
Questo popup esegue un kick su un non-operatore a caso nel canale su cui vi trovate.
RandNopkick { :begin | /set %kicknick $nick(#,$r(1,$nick(#,0))) | if %kicknick isop # goto begin | /kick # %kicknick }
Anche questo popup esegue un kick su un non-operatore a caso nel canale su cui vi trovate.
Randkick:/kick # $nick(#,$r(1,$nick(#,0)))
Non sono divertenti i kick???? Eccone un altro... un kick casuale su chiunque.... potreste essere voi stessi!
RandOpkick:/kick # $opnick(#,$r(1,$opnick(#,0)))
Kick casuale di un op .... almeno loro possono difendersi! Cicli infiniti. Con tutte questi comandi condizionali attenzione a non finire in cicli infiniti. Un semplice esempio è creare qualche cosa simile a:
/loop { :start | echo 6 # ciclo di test | goto start }
Nel caso i vostri alias or remote dovessero entrare in un ciclo simile utilizzare la combinazione di tasti CTRL+Interr per terminare il processo. Vi riporterà a casa sano e salvo. Finestre personalizzate. In mIRC 5.0 è stato aggiunto un nuovo strumento che consente di creare delle finestre personalizzate. Questo strumento di creazione/manipolazione finestre può essere utilizzato per creare una finestra nella quale tenere traccia di ciò che uno script fa. Una finestra personalizzata viene creata col comando /window. Questo comando può gestire un mucchio di parametri per definire il tipo di finestra che mIRC deve creare, lo stato della finestra ed il controllo dei contenuti. /window [-abcdelnorsx] @nome [x y [w h]] [/comando] [popup.txt] [font [size]] Opzioni: a = attiva finestra b = aggiorna barra di scorrimento orizzontale per la listbox c = chiude finestra d = apre la finestra sulla scrivania e = editbox l = listbox n = minimizza finestra o = se aperta sulla scrivania la pone in primo piano r = ripristina finestra s = usa un elenco ordinato x = massimizza finestra @nome = nome finestra (deve essere preceduto da una @) x,y,w,h = spigolo superiore sinistro, larghezza e altezza popup.txt = nomefile popup, caricato quando serve /comando = comando standard font/size = nome carattere e dimensione (di base il carattere della finestra di status) È inoltre possibile utilizzare /window per manipolare alcuni dei parametri precedenti per finestre personalizzate già esistenti. È possibile utilizzare i seguenti comandi per manipolare le linee: /aline [-cN] @nome testo aggiunge una linea alla lista /dline @nome N cancella l'Nesima linea /iline [-cN] @nome N testo inserisce la linea all'Nesima linea /rline [-cN] @nome N testo sostituisce l'Nesima linea /sline @nome N seleziona l'Nesima linea Dove -cN consente di specificare il colore della linea. È possibile utilizzare l'identificatore $window(N/@nome) per accedere alle seguenti informazioni sulla finestra personalizzata: $window(N).x sinistra $window(N).y alto $window(N).w larghezza $window(N).h altezza $window(N).state minimizzata/massimizzata/normale Per accedere alle linee di una finestra personalizzata è possibile utilizzare: $line(@nome,N) restituisce l'Nesima linea $sline(@nome,N) restituisce l'Nesima linea selezionata (solo i listbox) $sline(@nome,N).ln restituisce il numero di linea dell'elemento selezionato. Questo nuovo strumento offre un mucchio di utilizzi creativi ed utili ma richiede qualche esperimento per far si che si comporti esattamente come si desidera. Buon divertimento! Copyright - Siete liberi di fornire e distribuire le FAQ di mIRC - così come sono - tramite qualsiasi media purché la loro disponibilità sia sempre gratuita. Non è permesso modificare qualsiasi parte del file o richiedere un qualsiasi compenso per il vostro servizio. Se volete copiare solo alcune parti per un qualsiasi uso, assicuratevi sempre di menzionare il mio nome e le FAQ come sorgente di informazione in ogni singola citazione della vostra pubblicazione. (c) 1995 - 1999 Tjerk Vonck mirc@dds.nl Torna all'indice
Copyright © 1997, StallonIt - Ultimo aggiornamento - Gennaio 1999
|