Programování mIRC XIV. – Pokročilé použití příkazů

V mIRC můžete používat příkazy a vytvářet aliasy, menu a dálkové skripty s různými větveními, smyčkami a ostatními různými věcmi. K vysvětlení toho všeho bychom potřebovali další kompletní Často kladené otázky. Zkusíme vám proto ukázat alespoň způsoby v několika stručných příkladech.

mIRC umožňuje víceřádkové aliasy, menu a dálkové definice. To vám umožňuje psát příkazy strukturovaným způsobem:

{oddělená definice} {
/příkaz1 …
/příkaz2 …
/příkaz3 …
}

Příklad:
/away /ame je PRYČ ( $+ $?=“Důvod“ $+ ) | /away Nastaveno pryč v $time { $+ $! $+ }
/back /ame je zpět,.. ušlo mi něco ? | /away

Tyto aliasy mohou být také definovány takto:

/away {
/ame je PRYČ ( $+ $?=“Důvod“ $+ )
/away Nastaveno pryč v $time { $+ $! $+ }
}

/back {
/ame je zpět,.. ušlo mi něco ?
/away
}

Myslíme, že vám opravdu můžeme pomoci -zde-, takže pokud píšete a testujete nové možnosti v mIRC příkazech, měli byste si osvojit tuto strukturu!? Závorky { } jsou potřeba ke všem příkazům, které využívají nových možností větvení, smyček atd. Nyní, když jsme u toho, nemusíte dávat včechny / označení příkazů před příkazy… Již nejsou potřeba.

Příkaz /goto byl přidán aby se dal použít v { } definicích.
Příklad:
/greet {
/set %x 0
:znovu
/inc %x
/goto %x
:2
/echo line2
/halt
:1
/echo line1
/goto znovu
}

Tento alias provede echo řádků „line1“ a „line2“ na vaši obrazovku.
Otestujte to zadáním těchto naprosto stejných příkazů v příkazovém řádku:
/set %x 0 | :znovu | inc %x | goto %x | :2 | echo line2 | halt | :1 | echo line1 | goto znovu

Ukáže vám co se přesně stalo. 😉 Můžete také použít proměnné jako goto název, atd. :%odskok

Když napíšete „/set %odskok 5“ takt pak můžete použít „/goto 5“ a mIRC přepočítá %odskok na 5 a skočí tam. V dlaším příkaldu jsou odskoky upraveny na ‚1‘ a ‚2‘. Zkuste tyto 3 příkazy a podívejte se, co se nyní stane.
/set %skok1 1
/set %skok2 2
/set %x 0 | :opakuj | inc %x | goto %x | :%skok2 | echo line2 | halt | :%skok1 | echo line1 | goto opakuj

Můžete použít příkaz /return k ukončení zpracování příkazu a k umožnění nějakému výchozímu procesu pokračovat. atd.
on 1:JOIN:#mIRC {
/echo 3 #mirc [Přišel $nick]
/return
/echo 3 #mirc Nejsem v tisku!
}

To zobrazí zprávy jako:
[Přišel henk]
*** henk (monster@ppp.dial.koko.cz) přišel do #mIRC

Dávejte pozor…!

Dávejte pozor abyste se neztratili v neúplných definicích závorek. Když počáteční závorka ‚{‚ není uzavřena ‚}‘ mIRC se může divně chovat!! Buďte obezřetní! Speciální kontrolní tlačitko bylo řidáno v Alias, Menu a Dálkovém dialogu editoru ke kontrole, jestli závorky obsažené v daném skriptu jsou správné. Je to tlačítko se symbolem „{}“.

/if /elseif /else

Nyní myslíme, že jste připraven pro opravdové věci ?? V mIRC je možné používat jednoduché podmínky /if.
/if v1 operator v2 { … } | /elseif v1 operator v2 { … } | /else { … }

Příklad:
Vytvořte tento alias a spusťe jej třeba takhle: „/test 4“;
/test { set %i 0 | :start | inc %i | if %i > $1 halt | echo $active %i | goto start }

If/elseif/else může být vnořeno do ostatních. Můžete použít () a {} závorky ke zjištění, zda jsou vaše větvení vypočteny správně (ve správném pořadí), i když je poté *nemusíte* používat. Použití závorek také urychlí zpracování, protože mIRC pak ví přesně způsob výpočtu.

Dostupné porovnávací znaky a operátory:
== se rovná
!= se nerovná
< menší než > větší než
>= větší nebo rovno než
<= menší nebo rovno než // je násobkem není násobkem isin string v1 je ve stringu v2 iswm zástupný string v1 obsahuje string v2 ison přezdívka v1 je v kanále v2 isop přezdívka v1 je opnutá v kanále v2 isvo přezdívka v1 má voice v kanále v2 isnum číslo v1 je číslo v rozsahu v2, který je ve formě n1-n2 (v2 volitelné) ischan kde v1 je kanál, ve kterém jste. isauto kde v1 je uživatel ve vašem auto-op seznamu pro kanál v2 (v2 volitelné) isignore kde v1 je uživatel ve vašem seznamu ignorování s přepínačem v2 (v2 volitelné) isprotect kde v1 je uživatel ve vašem seznamu ochrany pro kanál v2 (v2 volitelné) isnotify kde v1 je uživatel ve vašem seznamu oznamování. K negaci předchozích, můžete použít označení se znakem "!" . Příklad: /massinvite { echo 4 * Hromadně-pozývám # | set %i $nick(0,#) | :dalsi | if $nick(%i,#) != $me invite $nick(%i,#) $1 | dec %i | if %i > 1 goto dalsi | echo 4 * Hromadné-pozvání # done }

Použijte tento příklad aliasu takto: „/massinvite #váš_kanál“. (jinak hromadné pozývání je velmi nezdvořilé!)

Příklad:
/randnopkick { :zacatek | set %kicknick $nick($r(1,$nick(0,#)),#) | if %kicknick isop # goto zacatek | /echo 6 %kicknick }

Když jste operátor v nějakém kanálu, můžete použít tento alias k náhodnému vykopnutí neopnutých uživatelů. Vykopne náhodnou osobu za vašeho kanálu, ale nikdy Opa. Takže…. když jsou tam je opnutí, máte problém 😉

Příklad:
/line { %line = „“ | if $asc($1) < $asc($2) { set %i $asc($1) | :pridat | %line = %line $chr(%i) | inc %i | if %i <= $asc($2) { goto pridat } | if (%line == "") { halt } | else { echo # %line | halt } } else echo # promiňte špatně } Spusťe tento příkald aliasu napsáním "/line d k" a sledujte co to udělá. Vytiskne to řádek jako 'd e f g h i j k'. Nic moc a zbytečné, ale ukazuje to možnosti větvení pomocí příkazů if/elseif/else. Příklad: /printnum1 { if $len($1) = 1 { if $1 !isin 1234567890 { echo 6 $1 není číslo | goto konec } } | elseif $len($1) = 2 { if $mid(1,1,$1) !isin 1234567890 { echo 6 $mid(1,1,$1) není číslo | goto konec } | elseif $mid(2,1,$1) !isin 1234567890 { echo 6 $mid(2,1,$1) není číslo | goto konec } } | elseif $len($1) > 2 { echo 6 $1 má příliš znaků | goto konec } | { set %x 1 | :zacatek | echo 6 %x | if %x >= $1 { goto konec } | else { inc %x | goto zacatek } | :konec } }

/printnum2 { if $1 !isnum { echo 6 $1 není číslo | goto konec } | elseif $1 !isnum 0-99 { echo 6 $1 je moc velké číslo | goto konec } | { set %x 1 | :zacatek | echo 6 %x | if %x >= $1 { goto konec } | else { inc %x | goto zacatek } | :konec } }

Tyto stejné aliasy oba vytisknou seznam čísel podle hodnoty, kterou zadáte. Zkuste „/printnum1 14“ nebo něco podobného …. Druhý alias ukazuje, jak správné využití identifikátorů může zkrátit délku aliasu.

Prázdné nebo neplatné identifikátory

Proměnné nebo identifikátory, které nejdou přepočítat na hodnotu nyní vracejí hodnotu $null, aby mohla být použita pro kontrolu atd.

Příklad:
/listops { echo 4 * Seznam Opů v # | set %i 1 | :dalsi | set %nick $nick(%i,#) | if %nick == $null { goto konec } | if %nick isop # { echo 3 %nick je Op v # } | inc %i | goto dalsi | :konec | echo 4 * Konec seznamu Opů }

Tento alias vypíše seznam všech Opů v kanálu, kde jste vy.
Nebo v dálkové akci:
on 1:CTCPREPLY:PING* {
if ($2 == $null) echo [ $+ $nick PING odezva]
else {
%pt = $ctime – $2
if (%pt < 0) set %pt 0 echo [ $+ $nick PING odezva] %pt sekund } halt } Další příklady menu: Dát Oper { %i = 0 | %nicks = "" | :dalsiprezdivka | 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 dalsiprezdivka }

Tato položka menu opne vybrané lidi v kanále, kde jste operátor.

Výběr vykopnutí:/kick # $token($r(1,$snick(0,#)),44,$snicks)

Toto menu vykopne náhodnou osobu z vybraných lidí v kanále.

Náhodné vykopnutí NeOper:/kick # $nopnick($r(1,$nopnick(0,#)),#)

Toto menu vykopne náhodného ne-operátora za kanálu, kde jste vy.

Náhodné vykopnutí NeOper { :zacatek | /set %kicknick $nick($r(1,$nick(0,#)),#) | if %kicknick isop # goto zacatek | /kick # %kicknick }

Toto menu také vykopne náhodného ne-operátora za kanálu, kde jste vy.

Náhodné vykopnutí:/kick # $nick($r(1,$nick(0,#)),#)

Je vykopávání zábavné ???? Další … náhodně vykopne kohokoliv …. také i -vás- !

Náhodné vykopnutí Opa:/kick # $opnick($r(1,$opnick(0,#)),#)

Náhodně vykopne Opa …. může se bránit !

Nekonečné smyčky.

S všemi těmito věcmi můžete ukončit i nekonečné smyčky. Jednoduchý příklad vytvoříte takto:

/loop { :start | echo 6 # test loop | goto start }

Pokud se nějaký váš alias nebo dálkový skript zacyklí, použijte kombinaci kláves CTRL+Break k zastavení procesu. Bezpečně se vrátíte zpět.

Vlastní okna.

V mIRC 5.0 byl přidán nový nástroj, který vám umožňuje vytvářet svá vlastní okna. Tento nástroj k vytváření/manipulaci může například být využit k vytvoření okna, ve kterém můžete sledovat, co váš skript provádí. Vlastní okno se vytváří příkazem /window. Může operovat s mnoha parametry k definování druhu okna, které mIRC vytvoří, vlastností okna a ovládání jeho obsahu.
/window [-abcdelnorsx] @název [x y [w h]] [/příkaz] [popup.txt] [font [velikost]]

Přepínače (možnosti):
a = aktivovat okno
b = aktualizovat horizontální šířku rolovací lišty pro seznam
c = zavřít okno
d = otevřít okno na ploše Windows
e = příkazový řádek
l = seznam
n = minimalizovat okno
o = když je otevřeno na ploše, umístit navrch
r = obnovit okno
s = použít setříděný seznam
x = maximalizovat okno
@název = název okna (musí být označen znakem @)
x,y,w,h = vlevo nahoře šířka výška
popup.txt = soubor menu, načtený když je třeba
/příkaz = výchozí příkaz
font/velikost = název fontu a velikost (výchozí pro font stavového okna)

Můžete také použít /window k manipulaci s některými výše uvedenými nastaveními pro existující vlastní okno. Můžete použít následující příkazy k manipulaci s řádky:
/aline [-cN] @název text přidání řádku do seznamu
/dline @název N smazání N-tého řádku
/iline [-cN] @název N text vložení řádku na N-tém řádku
/rline [-cN] @název N text nahrazení N-tého řádku
/sline @název N výběr N-tého řádku
Kde -cN vám umožňuje určit barvu řádky.

Můžete použít identifikátor $window(N/@název) pro přístup k následujícím informacím vlastních oken:
$window(N).x vlevo
$window(N).y nahoře
$window(N).w šířka
$window(N).h výška
$window(N).state minimized/maximized/normal (minimalizované/maximalizované/normální)

Pro přístup k řádkům ve vlastních oknech můžete použít:
$line(@název,N) vrací N-tý řádek
$sline(@název,N) vrací N-tý vybraný řádek (pouze seznam)
$sline(@název,N).ln vrací číslo řádku vybrané položky.

Tyto nové nástroje nabízí mnoho užitečných a výborných způsobů využití, ale je potřeba trochu experimentovat, aby se chovaly tak jak potřebujete. Příjemnou zábavu!