EPIC4 Manual


mode

Uaktywnia się gdy client zaobserwuje jak±¶ zmianę MODE: na kanale (chanmode oraz servermode) lub na Tobie (usermode). Servermode jest szczególnym przypadkiem, gdy server zmienia jakies MODE na kanale np. po NetJoinie lub np. za pomoc± automatu zwanego ChanServ na DALNecie.

$0nick osoby wykonuj±cej MODE (lub nazwa servera w przypadku servermode)
$1kanal gdzie jest zmiana (lub Twoj nick w przypadku usermode)
$2zmiana MODE
$3-dodatkowe argumentuy dla MODE, o ile s± wymagane


Aby rozróżnić 'usermode' od 'chanmode' i dodatkowo jeszcze 'servermode' można poczynić taki zapis:

on ^mode * {
   if (ischannel($1)) {
      echo *** ${pass(. $0)?[NetHack]:[Mode]} $1 \"$2-\" by $0
   }{
      echo *** User mode change \"$servernick() $2-\" on $S
   }
}

Trzy przypadki: 'chanmode', 'servermode' i 'usermode':

*** Mode "+o Pikachu" on #blah by Raichu
*** NetHack "+ooo clone1 clone2 clone3" on #takeover by *.jp
*** User mode change "Pikachu +i" on lublin.irc.pl

Nie rozumiesz przykładu? Zobacz: Zasady Składni, Zmienne Specialje, $pass(), $ischannel(), $servernick().

Krótki opis. Jeżeli cel zmiany MODE ($1) jest nazw± kanału (stwierdza o tym funckja $ischannel()), to mamy albo 'chanmode' albo 'servermode' (text pierwszy lub drugi). Jeżeli w nazwie autora MODE ($0) jest znak '.' (kropka) niechybnie jest to jaki¶ IRC server (w nazwie nicków nie może być kropek), a zatem mamy do czynienia z 'servermode' (drugi text). Jeżeli nie ma tam znaku '.', to jest to zwykły MODE czyli 'chanmode' (text pierwszy).
Jeżeli natomiast nazwa celu zmiany MODE ($1) nie może być nazw± kanału, to napewno chodzi o nas samych i mamy doczynienia z 'usermode' (text trzeci).
Prawda, że łatwe? :-)

Pamiętać także należy, że wprawdzie obecnie na IRCNecie możliwe jest stosowanie naraz 3xMODE (na EFNecie 4xMODE, ale nie będziemy się tym zajmować), to jednak mog± być przypadki, gdy server dopuszcze przekroczenie limitu 3xMODE:


/mode #kanal +intl 130

I na kanale '#blah' s± ustawione mode '+intl 130' -- czyli 4 a nie 3.

/mode #kanal -looo nick1 nick2 nick3

Zakładaj±c, że nadal s± takie chanmode i działa zapis 'ON ^mode' z powyższego przykładu, pojawi się:

*** Mode "-l-ooo nick1 nick2 nick3" on #kanal by Twoj_nick


Dlatego warto jest m±dze układać procedury analizowania ON mode, żeby nie pogłupiały: '+l' posiada dodatkowy argument, a '-l' nie posiada. Jaki¶ Ľle zrobiony interpreter stwierdziłby, że 'nick1' to argument od '-l', co jest oczywi¶cie bzdur± i poważnym błędem.

Zobacz także: ON mode_stripped



Lista Named ONs Home Następny Paragraf