Lezione Aliases - Parte 1 - Lunedì 28 Ottobre 2002 - I log sono stati tagliati in vari punti dove c'erano delle cose superflue, dato che il corso si è svolto in chat c'era casino :P [21:31:10] <@Guerrjero> Premessa [21:31:15] <@Guerrjero> Salve a tutti ragazzi. Questa è la prima lezione on-line sul mIRC Scripting che [21:31:20] <@Guerrjero> TuttoIRC.it propone. Ringraziamo prima di tutto Zenga per averci fornito lo [21:31:25] <@Guerrjero> spunto per la prima e seconda lezione: questa sugli aliases e l'altra sui [21:31:30] <@Guerrjero> tokens. Se dovete fare delle domande aspettate che la lezione sia [21:31:35] <@Guerrjero> finita, in quanto [21:31:40] <@Guerrjero> i vostri quesiti potrebbero trovare risposte lungo il discorso... [21:31:45] <@Guerrjero> Cmq faremo delle pause a vostra disposizione, così se qualcuno ha dei problemi o [21:31:50] <@Guerrjero> non gli è chiaro qualcosa sulle nozioni appena spiegate, potrà liberamente porre [21:31:55] <@Guerrjero> le sue domande. [21:32:34] <@Guerrjero> Introduzione [21:32:40] <@Guerrjero> Iniziamo col capire cosa sono e a cosa servono questi aliases: [21:32:43] <@Guerrjero> Gli Aliases sono delle righe di comando che servono generalmente a rendere più facili [21:32:48] <@Guerrjero> operazioni di uso frequente, ma vengono molto usati anche all'interno dei popups e dei remote, [21:32:53] <@Guerrjero> che sono altri due aspetti fondamentali del mirc scripting. Si accede alla sezione aliases o dalla [21:32:58] <@Guerrjero> quinta icona presente nella toolbar del mirc (in alto), o cliccando su tools e poi su aliases, o [21:33:03] <@Guerrjero> premendo contemporaneamente Alt + A. [21:33:36] <@Guerrjero> Parte2 [21:33:40] <@Guerrjero> Vediamo di analizzarne alcuni per vedere come si creano e per capire il funzionamento di questi: [21:33:45] <@Guerrjero> Prima di tutto si scrive il nome che vogliamo attribuire al nostro alias (il carattere / è opzionale, [21:33:49] <@Guerrjero> quindi potete metterlo o non metterlo); dopo il nome va aggiunto il comando da far eseguire, [21:33:54] <@Guerrjero> (è quindi utile conoscere bene i comandi ;) ). Per eseguire poi l'alias dovremo scrivere: /nomealias [21:33:59] <@Guerrjero> Prendiamo come esempio l'alias /ping, che esercita un ctcp ping su un utente stabilito. [21:34:04] <@Guerrjero> Per chi non sapesse la sintassi del comando ctcp apro una piccola parentesi: [21:34:10] <@Guerrjero> CTCP è l'acronimo di Client-To-Client-Protocol, un protocollo di comunicazione tra client IRC. [21:34:15] <@Guerrjero> La sintassi per eseguirlo è: [21:34:20] <@Guerrjero> /ctcp [21:34:24] <@Guerrjero> naturalmente i vari <> non devono essere inseriti, servono solo per separare i vari parametri ;). [21:34:30] <@Guerrjero> Quindi scrivendo dalla riga di comando (ossia dove scrivete per chattare) la stringa /ping nick verrà [21:34:35] <@Guerrjero> effettuato in ctcp ping sul nick scelto, semplice no? [21:34:40] <@Guerrjero> Nei vari aliases sopra riportati notiamo due fattori molto importati, ossia $N e $$N dove N rappresenta [21:34:45] <@Guerrjero> un numero ($1 e $$1 per fare un esempio). [21:34:51] <@Guerrjero> Con $1 si dice al codice di prendere in considerazione la prima parola (parametro) inserita, con $2 la seconda e via [21:34:55] <@Guerrjero> dicendo, inserendo $N- si dice al codice di considerare tutta la frase a partite dal parametro N. Quindi nella frase: [21:35:00] <@Guerrjero> "Ciao ragazzi è tutto chiaro fino ad ora?" [21:35:05] <@Guerrjero> Ed inserendo in un codice $4- verrà preso in considerazione solo la porzione di frase corrispondente [21:35:10] <@Guerrjero> a "chiaro fino ad ora?". Usando invece $$N si costringe il codice a proseguire solo se quel determinato parametro esiste. [21:35:15] <@Guerrjero> In poche parole: [21:35:20] <@Guerrjero> /ping /ctcp $$1 ping [21:35:25] <@Guerrjero> Se voi scrivete /ping nick il codice funziona, se voi omettete il nick, ossia scrivete solamente /ping, non funziona niente. [21:35:30] <@Guerrjero> Ci sono domande? [21:35:38] io [21:35:42] <@Guerrjero> pronti [21:35:43] ke cosa è il ping? [21:35:49] :D [21:35:52] <@An4rCkY-> zio... [21:35:53] <@An4rCkY-> :D [21:36:01] perchè è utile? [21:36:01] ihhhihiihhi [21:36:15] nn ho capito sto fatto $ [21:36:25] <@SiM`Zz> in pratica [21:36:30] <@SiM`Zz> quando fai un alias [21:36:44] <@SiM`Zz> /ping ctcp nick $1 [21:36:49] <@SiM`Zz> quell' $1 indica [21:36:50] si [21:36:59] <@SiM`Zz> la prima parola ke scrivi dopo il comando /ping [21:37:03] <@SiM`Zz> quindi se tu scrivi [21:37:07] <@Guerrjero> ossia il nick [21:37:08] <@SiM`Zz> /ping pippo [21:37:12] <@SiM`Zz> e come se scrivesse [21:37:16] <@SiM`Zz> /ctcp ping pippo [21:37:17] <@SiM`Zz> ok ? [21:37:21] ok [21:37:24] <@SiM`Zz> $1 la prima [21:37:26] <@SiM`Zz> $2 la seconda [21:37:28] <@SiM`Zz> ecc... [21:37:28] <|my|> :D [21:37:32] a cosa serve sto comando? [21:37:36] <@SiM`Zz> poi $1- dalla prima all'ultima [21:37:41] <@SiM`Zz> $2- dalla 2° [21:37:42] <@SiM`Zz> ec.. [21:37:46] <@SiM`Zz> molosso83 quale comando ? [21:37:51] <@An4rCkY-> il ping [21:37:54] ping [21:37:55] sto ctcp--- [21:38:03] e anche ping [21:38:10] <@SiM`Zz> ctcp è il protocollo [21:38:18] <@SiM`Zz> Client-To-Client-Protocol [21:38:41] e in poche parole....? [21:38:42] <@An4rCkY-> l'intervallo di tempo tra l'invio di un dato, e il suo ricevimento + o - :P [21:43:15] <@Guerrjero> il primo è avere un controllo maggiore sull'ordine di lettura degli identificatori, variabili, ecc. [21:43:18] schhhhhhh [21:43:20] <@Guerrjero> il secondo è per forzare la lettura di un identificatore, variabile, ecc. [21:43:21] zittiiiii [21:43:22] eheh Shinji81, ti è andata bene ke nn ho il mio script [21:43:25] <@Guerrjero> Le parentesi { } vengono usate invece per creare comandi scritti su più linee. [21:43:30] <@Guerrjero> Vediamo un esempio in cui vengono usate entrambe le parentesi: [21:43:40] <@Guerrjero> parentesi { [21:43:45] <@Guerrjero> var %parola = $1, %numero = 0, %incremento = 1 [21:43:51] <@Guerrjero> echo -a $chr(160) [21:43:56] <@Guerrjero> echo -a La parola %parola è formata dalle lettere: [21:44:01] <@Guerrjero> while ($len(%parola) > %numero) { [21:44:06] <@Guerrjero> inc %numero [21:44:11] <@Guerrjero> set % $+ lettera. $+ %numero $mid(%parola,%numero,1) [21:44:16] <@Guerrjero> } [21:44:21] <@Guerrjero> while (%incremento <= %numero) { [21:44:26] <@Guerrjero> echo -a [ % $+ [ lettera. $+ [ %incremento ] ] ] [21:44:31] <@Guerrjero> inc %incremento [21:44:36] <@Guerrjero> } [21:44:41] <@Guerrjero> echo -a $chr(160) [21:44:46] <@Guerrjero> echo -a Numero di variabili usate $var(%lettera.*) [21:44:51] <@Guerrjero> unset %lettera.* [21:44:56] <@Guerrjero> } [21:45:06] <@Guerrjero> Questo codice deve essere inserito negli alias, e per eseguirlo basterà scrivere: [21:45:11] <@Guerrjero> /parentesi Parola [21:45:16] <@Guerrjero> Come potete vedere sono state usate le parentesi { } in quanto l'alias è stato scritto su più linee. [21:45:21] <@Guerrjero> Analizziamo ora la linea con le parentesi quadre: [21:45:26] <@Guerrjero> echo -a [ % $+ [ lettera. $+ [ %incremento ] ] ] [21:45:31] <@Guerrjero> In questo caso le ho usate per forzare la lettura delle variabili che ho settato in precedenza, per capirne meglio la funzione, [21:45:36] <@Guerrjero> provate ad eliminarle dal codice, lasciandolo così: [21:45:42] <@Guerrjero> echo -a % $+ lettera. $+ %incremento [21:45:47] <@Guerrjero> e poi attraverso "/parentesi parola" eseguite l'alias... Notate qualcosa di diverso??? :). Non abbiamo più il valore delle variabili, [21:45:52] <@Guerrjero> ma solo il loro nome, [21:45:57] <@Guerrjero> credo che questo renda abbastanza bene la funzione delle parentesi. [21:46:02] <@Guerrjero> Provate il codice in entrambi i modi; e se avete domande fatele ;). [21:46:16] -a [ % $+ [ lettera. $+ [ %incremento ] ] ] [21:46:19] <@Guerrjero> magari togliete dal codice tutti i vari commenti [21:48:30] <@Guerrjero> questo è un esempio [21:48:39] <@Guerrjero> per far capire le [] [21:48:42] <@Guerrjero> e le {} [21:48:52] <@Guerrjero> se voi ve lo incollate [21:48:57] <@Guerrjero> e poi lo eseguite [21:49:01] <@Guerrjero> in tutti e 2 i modi [21:49:09] <@Guerrjero> tutto sarà più chiaro [21:51:36] %ciao [ $+ [ %come-stai ] ] = %ciaocomestai [21:51:43] ho capitooooooooo :) [21:54:03] <@Guerrjero> While [21:54:08] <@Guerrjero> Ma le parentesi non sono la sola cosa importante in questo codice; inutile dire [21:54:13] <@Guerrjero> Che vi sarete di certo accorti del comando while. [21:54:18] <@Guerrjero> Ma cos'è? E a cosa serve? [21:54:23] <@Guerrjero> While è un comando usato per ripetere operazioni fin quando una particolare condizione risulta vera. La sua sintassi è: [21:54:29] <@Guerrjero> while (condizione) { comando/i } [21:54:40] <@Guerrjero> Facciamo un esempio banale per capirlo bene, negli aliases scriviamo: [21:54:48] <@Guerrjero> provawhile { [21:54:53] <@Guerrjero> var %numero = 1 [21:54:58] <@Guerrjero> while (%numero <= 10) { [21:55:03] <@Guerrjero> echo -a %numero [21:55:09] <@Guerrjero> inc %numero [21:55:14] <@Guerrjero> } [21:55:19] <@Guerrjero> } [21:55:29] <@Guerrjero> E poi dalla riga di comando digitiamo /provawhile [21:55:35] <@Guerrjero> Cosa accade? Vengono scritti i numeri da 1 a 10 in ordine decrescente, ma perché? Semplice,[21:55:39] <@Guerrjero> perché nel codice abbiamo detto: [21:55:44] <@Guerrjero> comando: while [21:55:49] <@Guerrjero> condizione: (%numero <= 10) <-- ossia: fino a quando la variabile %numero (settata in precedenza con il comando var) [21:55:54] <@Guerrjero> è minore o uguale a 10... [21:55:59] <@Guerrjero> comandi: echo -a %numero ed inc %numero <-- scrivi nella finestra attiva il valore della variabile %numero e poi [21:56:04] <@Guerrjero> incrementala di 1. [21:56:14] <@Guerrjero> Vediamo un altro esempio, questo alias ci elenca i canali in cui ci troviamo: [21:56:24] <@Guerrjero> canali { [21:56:29] <@Guerrjero> var %chans = $chan(0), %i = 1 [21:56:34] <@Guerrjero> ;settiamo in %chans il numero dei canali in cui ci troviamo ed %i uguale ad 1 [21:56:39] <@Guerrjero> echo -a Ti trovi nei canali: [21:56:44] <@Guerrjero> ;Scrivo nella finestra attiva "Ti trovi nei canali" [21:56:49] <@Guerrjero> while (%i <= %chans) { echo -a $chan(%i) | inc %i } [21:56:55] <@Guerrjero> ;Eseguo un ciclo attraverso il comando while e scrivo il nome dei canali in cui mi trovo. [21:56:59] <@Guerrjero> } [21:57:10] <@Guerrjero> Provate questi codici [22:06:10] <@Guerrjero> la lezione continua domani