| Autore: Kaesar83 | Data: 2005-09-14 |
| Modificato:
2005-09-20 |
Letture: 2452 |
|
Una procedura è una parte di codice che può essere richiamata da qualcosa all'interno del programma. Quando avviene un'azione (join o scrittura di testo in un canale) il bind verrà innescato e verrà richiamata una procedura per agire. Se per esempio vuoi creare uno script per il kick/ban per spam, quando un utente scriverà il nome di un canale diverso da quello in cui è presente allora richiameremo una procedura, dopo la procedura invierà i comandi per il kick/ban dell'utente che ha spammato in canale. La sinstassi per la procedura è: proc [nome della procedura] { [variabili] [corpo della procedura] } Quando viene azionato un bind, questo fornisce determinate informazioni alla procedura che è richiesta per fare qualsiasi cosa, informazioni circa i nicks, gli hosts e tutti gli argomenti necessari. Un esempio di bind e di procedura è questo: bind pubm - hello pubm:hello proc pubm:hello {nick host handle chan text} { putserv "PRIVMSG $chan :Hello $nick" } Il bind è del tipo public match (pubm) quindi viene innescato quando qualche utente scrive in canale Non sono definite alcune flags per l'innesco del bind (come detto nella scorsa guida "-" significa niente) il bind viene fatto partire quando qualcuno scrive "hello" La procedura chiamata è pubm:hello La procedura contiene putserv che è il comando che invia testo al server PRIVMSG è il comando del server per inviare un messaggio privato $chan è la variabile che conterrà il canale nel quale si è presenti $nick è la variabile che conterrà il nick dell'utente che ha fatto partire il bind scrivendo "hello" Da notare è che quando si usano i comandi RAW c'è bisogno di inserire ":" vicino al testo che ha più di una parola. bind pubm - hello pubcommand_hello proc pubcommand_hello {n uh h chan t} { puthelp "PRIVMSG $n :Hello $n!" } Il bind è sostanzialmente lo stesso, ciò che cambia è solo il nome della procedura. Nella procedura sono stati cambiati i nomi delle variabili, abbiamo usato "n" invece che nick e così per gli altri. Tuttavia ho usato un ordine differente. Puthelp è un comando dell'Eggdrop che serve per non floodare il bot, suggerisco di usarlo spesso per questo tipo di script per evitare lamerate. - Usa putserv quando hai bisogno di qualcosa che deve avvenire istantaneamente, come un kick o un ban - Usa pushmode quando vuoi inviare dei modi in gruppi al server (es.: '+ooo Kaesar83 Rand0m IRon') e non hai bisogno di farlo istantaneamente - Usa puthelp per messaggiare con altri utenti e in canale La sintassi di puthelp è: puthelp "[Comandi RAW] [Argomenti]" Esempio: puthelp "NOTICE $nick :Ciao $nick" Vengono utilizzati i quote ("") perchè se non inseriti avremo un messaggio di errore del tipo TCL error: called "puthelp" with too many arguments. Le procedure possono essere chiamate da se stesse, anche senza l'ausilio diretto del bind.
Per esempio: bind pubm - kick pubm:kick proc pubm:kick {nick host hand chan text} { noaccess $nick } proc noaccess {who} { puthelp "PRIVMSG $who :Scusami $who, tu non hai accesso a questi comandi" } noaccess è accessibile da qualsiasi procedura nel Bot, così in qualsiasi momento si vorrà richiamare questa procedura lo potrete fare.
# Credits #
Author: The |mmortaL [asn@cdc.net] - 'send key' in topic for PGP public key People who helped (Major Thanxs): Ec|ipse - tomas@primenet.com janni - janni@itt.org Cold Fusion - fusion@pbcs.com Ernesto Baschny baschneo@trick.informatik.uni-stuttgart.de And to the rest of the Eggdrop Doc Project team! Tradotto e rielaborato da Kaesar83
|