|
Prima un paio di premesse:
1 - Per sapere se il server autorizza la connessione di cloni guardate il messaggio di benvenuto, se volete fare le cose correttamente collegatavi a un server col mirc es: irc.tin.it e ad un altro con i socket es: irc.funet.fi
2 - Io non vi insegnero' a caricare war clones, perche' sarebbe tempo sprercato, se volete farlo a vostro rischio e pericolo fatelo, sempre meglio di un nuke ....... , considerate pero' che, gli admin dei server un giorno si scasseranno le palle del vostri warclones e vi guarderanno la 1080 on connect, mi pare qualcuno lo faccia gia' ma non ne sono sicuro.
3 - In questo caso siamo noi, a dare le istruzioni al server, e gli diremo cosa fare con la connessione che creeremo, perche' il client non lo fara' per noi, ma piu' semplicemente lo faremo per mezzo del clinet stesso.
4 - Copiate questo script in remote e scrivete /connettiamo.
5 - Poi saltate il codice e andate a vedere che c'e' scritto dopo.
alias Connetiamo {
set %server $?="In quale server lo metto?:"
set %botnick $?="Come lo chiamiamo il simpaticone?:"
sockopen bot %server 6667
}
on 1:sockopen:bot:{
if ($sockerr > 0) return
echo -a 4 Connessione in corso ... attendere
sockwrite -n bot NICK %botnick
echo -a 4 Sto inviando il nick al server perche' il client da solo non lo fa
sockwrite -n bot USER Tralla la la la Para Pa
echo -a 4 Sto inviando al server le informazioni USER, idem sopra.
}
on 1:sockread:bot*: {
;per questo alias (se non lo capisci) consulta l'intro ai socket
if ($sockerr > 0) return
window -x @CLONAIO 10 10 330 330 Verdana 11
:antani
sockread %ritorno
if ($sockbr == 0) return
if (%
ritorno == $null) %ritorno = -
aline @CLONAIO 4 $+ %
ritorno
goto antani
}
menu menubar {
Clonaio
.cambiagli nick:/sockwrite -n bot NICK $?="Come lo chiamiamo il simpaticone?:"
.Fallo entrare in un canale:/sockwrite -n bot JOIN $?="#?:"
.Fallo USCIRE:/sockwrite -n bot PART $?="#?:" : Antani v.200
.Fallo parlare:/sockwrite -n bot PRIVMSG $?="Canale?:" : $+ $?="Messaggio?:"
.Fallo Quittare:/sockwrite -n bot QUIT :Ping Timeout
}
Bene ora scriviamo /Connetiamo in status e ci appariranno gli echo.
Puo' succedere subito qualcosa che ci blocca ...... il nick e' gia in uso, in questo caso dovremo rimandare al server le infomazioni, perche' vi ripeto, il client non lo fara' per noi, ora vediamo questo caso nei dettagli.
Il server ci ritorna:
:irc.antani.edu 433 * Antani :Nickname is already in use.
Noi ora vediamo che la sintassi e' quella descritta nell'articolo sui raw, il raw e' il 433, nickname is already in use, e lo schermo rimmara' immobile, che fare? rimandiamo le informazioni al server scriviamo:
//sockwrite -n bot NICK $?="Come lo chiamiamo il simpaticone?:"
Perfetto ora dovremmo essere su IRC, che facciamo con questa connessione? ci sono dei comandi mirc?
La risposta e' si e no ...... .
Allora spieghiamo con calma: quando tramite i socket inviamo il comando al server, chiaramente lo faremo dal mirc, e quindi e' possibile usare, in certi casi, gli identificatori o le variabili, tutto e' consentito, ma per far si che il server esegua le nostre istruzioni dovremo inviargli i comandi come sono descritti nell'rcf, ma questo punto lo tocchiamo fra un po. Se vogliamo entrare in una canale ad esempio: //sockwrite -n bot JOIN #supercazzola
p.s. un sito famoso ha profanato la supercazzola prematurata a scopi commerciali, vedi counter xoom in questi giorni, ugo tognazzi si rivoltera' nella tomba ....
p.s. due: Ocio ai vostri cellulari, ci sono degli spagnoli che vi protebbero mandare degli insulti calienti ...
il canalone #supercazzola puo' essere sostituito da una variabile che avremo precedentemente settato.
Se eseguiremo la sintassi sopra citata il notro clonetto entrera' in #supercazzola, ma, se per assurdo, volessimo inserire un identificatore o una variabile al posto di JOIN, il server non fara' nulla perche il mirc gli inviera' dei comandi che non riconosce. (so che qualcuno si sbrindellera' il cervello con set %var JOIN, io volevo solo farmi capire .. ok? miiiii come siamo pignoli) Questo ci porta a capire che il server risponde a dei comandi, o meglio ancora istruzioni, standard (consultate L' RCF se volete approfondire), e se non eseguiamo i comandi come devono essere eseguiti il server ritornra' un messaggio di errore
E' come se voi andaste in pizzeria, e per ordinare una pizza margherita, gli mostraste la tessera di socio del vostro circolo di boccie, bhe il cameriere vi restituirebbe messaggio di errore no? bene cosi fa il server, e se la rcf del cameriere e' il menu', la rcf di irc la trovate nell'index della guida scripting. Ho finito di delirare ok::::::ok
I comandi che a noi interessano sono:
USER NICK JOIN PART QUIT PRIVMSG . e' intuitivo il significato, io mi soffermerei su PRIMMSG per capire alcune cose:
I PRIVMSG, sono il testo che inviate, passano dal server tramite il vostro client per arrivare agli altri user e viceversa se inviate nel canale, e partono dal vostro client per arrivare ad un user in query se inviate a lui (passano dal server e quindi possono essere intercettati da quanto ho letto .... ma questo a non noi importa, perche' vi ricordo che sono solo le vostre frustrazioni che vi portano a sperare di leggere conversazioni altrui, la cosa e' illegale, avrete la coscienza sporca e vi verranno le emorroidi v.400 NiGno edition)
La sitassi del privmsg coi socket abbiamo visto che e'
/sockwrite -n bot PRIVMSG %canale : $+ %messaggio
Oppure per inviare una query ad un user
/sockwrite -n bot PRIVMSG %user : $+ %messaggio
Se siete curiosi di sapere a cosa sevono i : (due punti) provate a scrivere
//sockwrite -n bot PRIVMSG #qui.scriverai.il.canale e qui lascia questo messaggino (da e a messaggino azz)
Una nota sul Ping pero' la devo fare. Il server ad intervallo di tempo regolare vi manda un PING, questo per determinare se una connessione e' attiva o meno, se voi entro un certo intervallo di tempo non risponderete a questo messaggio la vostra connessione sara' rilevata come inattiva e quindi verra' chiusa (ping timeout), da qui possiamo capire perche in status appare PING? PONG?, molti forse pensavano che il server avesse un mode segreto per giocare a ping pong on line ma non e' cos'i' .... il messaggio PONG sara' la risposta al PING, se in ogni caso volete approfondire ho messo il download all'RCF, dateci una bella spulciata perche' e' interessante.
Io spero di avervi messo sulla strada buona per imparare a creare una connessione con i socket, il resto pero' lo dovete fare voi sbrindellando qua e la, magari offline ...., scrivero' qualcosa di piu approfondito a breve.
Non lamerate, e se volete fare qualcosa di serio provate a creare un bel protect Bot con i socket. O a farvi un bel multiserver.
Autore: Antani
|