La configurazione di base
è:
if (v1 operatore v2) { comandi }
elseif (v1 operatore v2) { comandi }
else { comandi }
Le parentesi () includono
quindi i paragoni, mentre quelle {} i comandi che saranno
eseguiti quando quella condizione risulterà vera.
Si ricorda che per ogni parentesi aperta, qualunque essa
sia, ne deve seguire una chiusa.
Operatori
== uguale a
=== uguale a (case sensitive, quindi con maiuscole e minuscole)
!= non uguale a
< minore di
> maggiore di
>= maggiore o uguale a
<= minore o uguale a
// è un multiplo di
\\ non è un multiplo di
Condizione
|
Spiegazione
|
isin
|
la stringa v1 è
contenuta nella stringa v2
|
isincs
|
Come sopra ma case
sensitive
|
iswm
|
la stringa jolly
v1 corrisponde a stringa v2
|
isnum
|
il numero v1 è
un numero nell'intervallo v2 che è nella forma
n1-n2 (v2 è opzionale)
|
isletter
|
la lettera v1 è
presente nelle lettere di v2
|
isalnum
|
il nick è
composto da lettere e numeri
|
isalpha
|
il nick è
composto da sole lettere
|
ison
|
il nick è
presente nel canale specificato
|
isop
|
il nick è
op nel canale specificato
|
ishop
|
il nick è
halfop nel canale specificato
|
isvoice
|
il nick ha il voice
nel canale specificato
|
isreg
|
il nick è
un normale nick nel canale specificato
|
ischan
|
il canale è
un canale in cui siamo
|
isaop
|
il nick è
auto-op nel canale specificato
|
isavoice
|
il nick è
auto-voice nel canale specificato
|
isignore
|
il nick è
nella lista di ignore
|
isprotect
|
il nick è
nella protect list
|
isnotify
|
il nick è
nella notify list
|
Per negare le voci precedenti
basta aggiungere il prefisso !.
if ($nick !ison #tuttoirc) { /echo $nick non
è nel canale #tuttoirc }
L'identificatore $ifmatch restituisce il primo
parametro espresso nella condizione; quindi se fosse: if
(ero isin Guerrjero) {
} $ifmatch restituirà
ero.
Per combinare più condizioni si usa && che
sta per "e", e ||, che sta per "o":
numero {
if (($1 > 0) && ($1 < 10)) {
if ($1 < 5) echo il numero è più piccolo
di 5
else echo il numero è più grande di 5
}
else echo Sono ignorante e non conosco questo numero :(
}
Da notare la prima parte: if (($1 > 0)
&& ($1 < 10)). Letteralmente sarebbe se il numero
espresso ($1) è maggiore di 0 e (&&) minore
di 10, ecc ecc.
Il prefisso ! posto davanti a variabili e
identificatori riguardanti contesti if-then-else indica
che questi non hanno valore; quindi scrivere
if (%x == $null) echo la variabile x non ha
valore
oppure
if (!%x) echo la variabile x non ha valore
è la stessa cosa.
Vediamo qualche esempio:
il seguente è uno script che crea una lista degli
utenti op presenti nel canale. Si poteva alleggerire di
molto semplicemente usando $opnick al posto di $nick, ma
in questo modo ci possiamo rendere conto dell'uso di isop
ed $null.
listaops {
echo 4 * Lista Ops del canale #
set %i 1
:next
set %nick $nick(#,%i)
if %nick == $null goto done
if %nick isop # echo 3 %nick è un Op!
inc %i
goto next
:done
echo 4 * Lista Ops terminata
}
Quest'altro invece darà lo stato di
operatore a tutti gli utenti selezionati nella listbox del
canale attivo:
DareOps {
%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
}
E come ultimo esempio riportiamo un massinvite:
/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 ricorda che il massinvite è
considerata una azione molto maleducata!).
|