In questa sessione puoi assegnare dei livelli a determinati utenti.
Puoi assegnare determinati livelli agli amici e altri livelli ai "nemici".
In pratica, quando qualcuno entrerà su un canale nel quale sei op, se sarà riconosciuto come amico, sarà, per esempio, oppato automaticamente dallo script o, se sarà riconosciuto come nemico, sarà bannato al volo.

I livelli vengono classificati con numeri.
Ecco un esempio di User List valida:

50:*!*corral@*.nasa.gov
60:*!*peppoz@*.helios.nd.edu
80:*!*^mccoy@*.smc.it
90:*!*RoSe@*.wlfdle1.on.wave.home.com
100:*!*peppoz@darwin.helios.nd.edu

Utilizzare 3 al posto di 50 non comporta nessun cambiamento sul funzionamento dello script.
mIRC assegna valore 1 a tutti gli utenti che non hanno assegnato un valore nella User List.

Se assegni un livello ad un tipo di utenti, ci saranno comandi associati a quel particolare livello, non credete?
Così funzionano le liste di utenti.
Una serie di comandi differenziati per i vari livelli.
Possiamo, per esempio, dire allo script che se joinerà un utente di livello 90, lo script dovrà opparlo al volo (quindi il livello 90 sarà la Auto Op List), se joinerà un utente di livello 50 sarà bannato senza bisogno che si debba intervenire (quindi il livello 50 sarà la Shitlist, ossia la lista delle merde che ci stanno sulle palline :o))))

Nell'esempio precedente, ho assegnato livello 100 a me stesso.
A che serve assegnarsi un livello?
Immaginiamo che quel cattivone di Turk187 voglia bannarmi da #kaos.
Il mio script rileva il ban, lo confronta con la ures list e vede che l'host del ban corrisponde al mio.
Che fa in questo caso?
Posso impostare un comando che deoppi Turk187, tolga il ban, insulti pubblicamente il Turko e lo kicki con una frase tipo "Sei un buco senza fondo".
Sarebbe carino, no? eheheheheh

I comandi relativi alle liste utenti sono di questo tipo:

on 80:JOIN:#:{ if ($me isop #) { mode # +o $nick | halt }

Immaginiamo che nella user List ci sia

80:Gaietta!*@*

Siamo sul canale #kaos e ci arriva il messaggio

[18:10] *** Gaietta (~Gaietta@renoir.ciens.ucv.ve) has joined #kaos

Il nostro script controlla se Gaietta!Gaietta@renoir.ciens.ucv.ve è presente nella User List.
Trova un Gaietta!*@*
L'utente che ha joinato è classificato come un utente di livello 80.
Che succede a questo punto?
Lo script si passa al setaccio i comandi nei remote e trova la benedetta riga

on 80:JOIN:#:{
 if ($me isop #) {
  mode # +o $nick
  halt
 }
 else {
  echo -a Se fossi stato Op su #, avresti oppato $nick
  halt
 }
}

a queto punto esegue il comando assegnato.
Eccovi la traduzione di tale comando.
Quando un utente di livello 80 (on 80) joina (:JOIN) un canale qualsiasi (:#) allora fai questo (:{) :
se sono op nel canale # (if ($me isop #)) oppa il nuovo entraro (mode # +o $nick) e interrompi l'operazione (| halt), se non sono op (else) manda un echo nella finestra attiva (echo -a) con la scritta "Se fossi stato Op su #kaos, avresti oppato Gaietta" e interrompe l'operazione (halt).

Tutto chiaro? Speriamo di si :o))


Comandi per la User List

Per aggiungere o rimuovere utenti dalla User List non si deve necessariamente intervenire sui remotes in modo diretto, ossia editando la lista a mano, ci sono comandi appositi.
Signori e signore, sono lieto di presentarvi la lista dei comandi disponibili :o**

/auser [-a] {livello|nick|address}
Questo comando permette di aggiungere un utente alla User List.
Alcuni esempi:

/auser 1,2,3 furbetta

Questo comando aggiunge furbetta alla user list con livello 1, 2 e 3 (se un utente è già presente con quel nick, verrà rimpiazzato dal nuovo nick. Lo stesso vale per gli address).

/auser -a 1,2,3 RaSt[a]

Questo comando aggiunge i livelli 1, 2 e 3 all'utente RaSt[a]. Se questo utente non è presente nella User List, verrà creato un nuovo "add".

/auser -a =1,2,3 Nick

Questo comando funziona esattamente come il primo con la divverenza che se un utente è già presente con quel nick, non verrà rimpiazzato dal nuovo nick. Lo stesso vale per gli address).


/guser
{level} {nick} [type]
Questo comando funziona esattamente come il precedente, con la differenza che effettua l'aggiunta eseguendo una scansione del nick e aggiungendo l'hostmask specificata
Facciamo un esempio.

/guser 80 }}OvErKiL 1

Questo comando cercherà l'utente }}OvErKiL e lo aggiungerà alla User List con la hostmask 1.
Attenzione: l'utente dovrà essere online.


/ruser {nick o nick! o address o nick [tipo]}
Questo comando elimina dalla User List un nick o un address.
Esempi esplicativi (cazzo quanto sto diventando prfessionale!!!!)

/ruser MOgan

Questo comando elimina MOgan dalla User List.

/ruser 1,2,3 Scroto

Questo comando elimina Scroto dai livelli 1, 2 e 3 della User List.

/ruser 1,2,3 Yanko 1

Questo comando elimina l'hostmask 1 di Yanko dai livelli 1, 2 e 3.

/ruser Vm!

Questo comano elimina tutti gli utenti che hanno il nick che comincia per Vm dalla User List.
L'opzione ! può venire usata per tutti i tipi di comandi /ruser sopra elencati.


Lista delle Hostmask

tipo 0: *!ident@primo.secondo.terzo.com
tipo 1: *!*ident@primo.secondo.terzo.com
tipo 2: *!*@primo.secondo.terzo.com
tipo 3: *!*ident@*.secondo.terzo.com
tipo 4: *!*@*.secondo.terzo.com
tipo 5: nick!ident@primo.secondo.terzo.com
tipo 6: nick!*ident@primo.secondo.terzo.com
tipo 7: nick!*@primo.secondo.terzo.com
tipo 8: nick!*ident@*.secondo.terzo.com
tipo 9: nick!*@*.secondo.terzo.com