Programování mIRC IX. – CTCP příkazy

V mIRC vyberte Nástroje/Dálkové/ k otevření mIRC Editoru. Zde můžete nastavit jak má vaše mIRC reagovat na věci
dějící se okolo vás na IRC. Jsou dvě odlišné skupiny; reakce na CTCP příkazy a reakce na Akce.
V tomto odstavci vysvětlíme CTCP příkazy.

Úvod – Dálkové příkazy poukazují na velmi specifický typ příkazů: CTCP příkazy. CTCP znamená
Client To Client Protocol(klient-klient protokol). Dálkovými CTCP příkazovými řádky můžete definovat v mIRC
provádění jen a pouze jedné věci — umožní vám nastavit, jak má mIRC odpovídat na CTCP příkazy poslané jinými
uživateli -vám-.

Mnoho ctcp příkazů definováno podle IRC RFC (standart). Nejobvyklejší jsou
version, ping, time, userinfo, clientinfo a finger. Každý IRC klient odpovídá standartním způsobem, když
je mu poslaný některý z těchto příkazů. Tyto ctcp příkazy se posílají od vás nebo k vám ve formátu:

/ctcp {vaše_přezdívka} {příkaz s parametrem(y) když je nějaký}

Prohlédněme si jednoduchý příklad ping. Nějaký uživatel by napsal:

/ctcp {vaše_přezdívka} ping

(Můžete také poslat příkaz ping sami sobě! Zkuste to! Napište "/ctcp {vaše_přezdívka} ping".

V normálních podmínkách by mIRC poslalo standartní ping odezvu [ctcp jeho_přezdívka pong].
Ale s Dálkovými CTCP řádky můžete definovat programovou odezvu na ping. Může nyní provést
téměř cokoliv chcete po obdržení ping. V podstatě můžete také poslat normální
ping odezvu. Nebo ne. Je to na vás.

Je tu JEDNA vyjímka … nemůžete schovat vaši mIRC version odezvu…. Máme rádi propagaci, víte….

Můžete také vytvořit nové CTCP příkazy a odezvy na ně. To je použito u vlastností jako třeba
nabízení souborů (XDCC LIST a SEND).

Ale nyní se vraťme k našemu příkladu ping.

Příklad: Vlastní Ping odezva

Jděte do Nástroje/Dálkové a podívejte se na menu ‚Náhled‘, jestli tam již je soubor commands.ini nebo ctcps.ini.
Pokud ano, vyberte tento soubor a přidejte řádky anebo jej upravte. Pokud ne, jděte do menu Soubor
a vyberte ‚Nový‘ k vytvoření nového skriptu. Přešvědčte se, zda ve "Sledování" je vybrána položka CTCP.
(Když položky ve "Sledování" nejsou zaškrtnuty, například Dálkové příkazy a CTCP, jsou ignorovány.).

Nyní umístíme následující příklad do existujícího nebo nového souboru skriptů.

ctcp 1:ping:/notice $nick ping? Hmmm! …pang pang pang!!

Nyní, když vás někdo pingne, vaše odezva bude "ping? Hmmm ! … pang pang pang !!" a v poslaném oznámení
osobě, která vás pingovala bude navrchu normální odezva ‚pong‘.
Otestujte to zadáním příkazu "/ctcp {vaše_přezdívka} ping" Pokud to nebude fungovat, podívehte se zda mIRC sleduje
Dálkové CTCP příkazy. Zapnete to napsáním příkazu "/remote on" anebo "/ctcps on".

Pokud chcete aby mIRC -nepoužívalo- výchozí ping odezvu navrchu vaší vlastní, můžete blokovat výchozí
zpracování příkazem /halt. Použijte jej takto:

1:ping:/notice $nick ping? Hmmm! …pang pang pang!! | /halt

To udělá stejnou věc jako předtím, ale nepošle vaši normální ping odezvu.
Znovu to otestujte a podívejte se na odlišnosti!

Předpokládáme, že jste zkusili obě ukázky ping odezev a zajímá vás, jak to funguje; takže se pojďme
podívat na použitou syntaxi a pak se vraťme zpět k příkladu a proč dělá to co dělá.

Syntaxe Dálkových příkazů.

Dálkové příkazy, kromě některých speciálních případů, se skládájí ze 3 částí. Každá část je oddělena
dvojtečkou. Obecná syntaxe vypadá takto:

ctcp {úroveň_příkazu}:{ctcp_příkaz}:{spuštěný_příkaz(y) s parametrem(y)}

Prohlédněme si postupně tyto části:

ctcp Toto říká mIRC, že následuje definice ctcp (Dálkového příkazu).

{úroveň_příkazu} Tento příkaz provede odezvu uživatelů se stejnou uživatelskou úrovní jako v příkaze a uživatelům
s vyššími úrovněmi, leda by byly pro ně vytvořeny další příkazy.

{ctcp_příkaz} CTCP příkaz může být pojmenován jak chcete. Může být standartní,
již existující CTCP příkaz, jako třeba Ping nebo Version, nebo můžete nějaký vytvořit vy.
(jako třeba OPME, DIE, LEAVE, XDCC LIST,……)

{spuštěný_příkaz(y) s parametrem(y)} V této části definujete příkaz(y), které jsou (mají být) spuštěny.
Jejich formát a použití více příkazů jaednou je téměř shodné jako definování v aliasech a menu.
Stringy v této sekci mIRC vyplní automaticky… Musíte se pouze přesvědčit, zda tyto použité stringy
jsou definoványl… např. zjistit, zda se používají v dálkových příkazech … (Pro ukázku $chan NENÍ
definován v dálkových příkazech !!)

Podívejme se na náš příklad ping a zkusme jej rozpitvat.

ctcp 1:ping:/notice $nick ping? Hmmm! …pang pang pang!!

Označení ctcp řekne mIRC, že následuje dálkový příkaz. Stejně jako skripty, také aliasy, akce a raw
definice mohou být použity. To bude vysvětleno později.

1 je úroveň příkazu. Všichni s uživatelskou úrovní stejnou nebo vyšší než 1 mohou spustit nebo použít tento příkaz.

Tento CTCP příkaz je reakcí na Dálkový příkaz ping.

Spuštěný příkaz je /notice. V tomto případě je notice(oznámení) posláno $nick obsahující ještě řádku

"ping? Hmmm! … pang pang pang!!" $nick je předdefinovaný parametr, který obsahuje přezdívku člověka,
kdo vám posílá CTCP příkaz … v tomto případě vás pinguje. (Více o předdefinovaných parametrech zakrátko.)

Shrnuto, efektem příkazu "/ctcp ping" je "/notice {přezdívka} ping?
Hmmm! …Pang pang pang!!"
To je spuštěno hned jak je obdržen CTCP Ping.

Můžete také použít více příkazů najednou, s využitím znaku | jako s aliasy a menu.
Tento způsob jednoho Dálkového příkazu může aktivovat více příkazových řádek najednou. Použití znaku | je velmi snadné,
a pěkně přehledné později. Prostě slepte dálkové příkazy použitím znaku |.

Odlišné reakce na lidi s odlišnou uživatelskou úrovní

Můžete dobře vyladit vaše reakce na dálkové příkazy přiřazením odlišných úrovní k nim.

mIRC bude vždy odpovídat uživatelům s vyššími úrovněmi odovědí určenou pro příkazy které obdrží..
Podívejme se podrobně na tyto příklady…

ctcp 1:ping:/notice $nick ping? Hmmmm vaše úrovně jsou příliš nízké… | /halt

ctcp 2:ping:/notice $nick ping? Hmmm! …pang pang …. Úplná smrt !!

ctcp 3:ping:/notice $nick ping? …pang !! Hmmm… vedle..

ctcp 6:ping:/notice $nick ping? Hmmm! …Vás znám .. můžete mě pingovat..

Uživatel s úrovní 1 obdrží ping odezvu, ale jen "ping? Hmmmm vaše úrovně jsou příliš nízké…"

Uživatel s úrovní 2 (2:nick3!account3@machine.subnet.net) nepřežije, když udělá
/ctcp ping ;o) Uvidí pak "ping? Hmmm! …pang pang …. Úplná smrt !!"

Uživatel s úrovní 3 (3:*!*@machine.subnet.edu) obdrží " ping? …pang !! Hmmm… vedle…"

Uživatelé s úrovní 4 a 5 nemaají definovanou žádnou reakci … Nejvyšší dostupný příkaz je pro úroveň
3 … Proto tito lidé (5:*!account@*.subnet.edu) uvidí stejnou reakci jako by měli úroveň 3 !!

Uživatelé s úrovní 6 a vyšší všichni obdrží ping odezvu pro úroveň 6…

Toto členění lze provádět pro VŠECHNY dálkové příkazy (a akce) ….

Přesvědčte se, zda vám to je jasné !!! Možná by bylo dobré znovu si přečíst předchozí sekce ??

Speciální identifikátory pro řádky v sekci Dálkové/Příkazy/.

$nick, $address, $site, $level atd. jsou všechno identifikátory speciálně vytvořené k používání v dálkových řádcích.
Můžete je použít když chcete spouštět řádky dálkovými příkazy…

$nick Přezdívka osoby, která poslala příkaz nebo provedla akci.
$address Plná adresa osoby, která poslala příkaz.
$site Doména osoby, která poslala příkaz.
$wildsite Vrací adresu uživatele, který spustil akci ve formě *!*@host.doména
$level Reprezentuje úroveň dálkového uživatele.

Poznámka: Identifikátor $chan NENÍ VŽDY DEFINOVÁN v dálkových příkazech … $chan normálně obsahuje kanál,
ze kterého byl dán příkaz … CTCP příkazy nemusíte zadávat z kanálu …
nebo osoba posílající příkaz může být ve více kanálech … Chápete to ?? Možná $active je to co chcete ?
nebo $target ?

Příklad: Příklad použití předdefinovanéhu parametru $address…
ctcp 1:address:/notice $nick Vaše adresa je $address
Pokud uživatel který pošle ‚/ctcp {vaše_přezdívka} address‘ příkaz na vás, můžete mu odpovědět oznámením,
"Vaše adresa je {cokoliv je vaše adresa}".

Příklad: Opnutí přátel pokud chtějí. (Použití $2)

Pokud nerozumíte základům jak to funguje, nemějte obavy. Zkuste postupovat podle příkladů a sledujte
co "dělají". Přečtěte si znovu předchozí příklady pokud možno.
Ale nezkoušejte psát svůj vlastní Dálkový příkazy nebo se přesunout do další sekce bez pochopení této.

ctcp 1:opme:/notice $nick Promiňte, nemůžete být opnut v $2 .. vaše úroveň je příliš nízká

ctcp 5:opme:/mode $2 +o $nick

Pokud přítel s úrovní 5 pošle ‚/ctcp {vaše_přezdívka} opme {#jméno_kanálu}‘, tento příkaz jej opne v určeném
kanále. Lidé s úrovní 1 NEMOHOU být opnuti když to zkusí….

$N- může být použito ke zpracování dlouhých řádků zadaných v CTCP příkazu…

ctcp 5:return:/notice $nick $2-

Tento příkaz například vrací každoý text poslaný dálkovým uživatelem. Obsah řádku zadaný dálkovým
uživatelem za příkazem CTCP Return je v parametru $2-. To se pošle zpátky jako oznámení.

"/ctcp {vaše_přezdívka} return Bladiebla die bladie bla bla bla" způsobí, že vaše mIRC odpoví
spuštěním příkazu "/notice friend Bladiebla die bladie bla bla bla".

Více příkazů najednou.

Dálkový CTCP příkaz může také spustit více příkazů najednou…

ctcp 5:opme:/mode $2 +o $nick | /notice $nick Jste opnut v $2

Potom váš přítel s úrovní 5 pošle příkaz:

‚/ctcp {vaše_přezdívka} opme #jméno_kanálu‘

Co se stalo??

Jsou vlastně spuštěny dva příkazy při Dálkovém CTCP opme příkazu…

jedna "/mode #jmeno +o friend"

dvě "/notice friend Jste opnut v #jmeno"

Jiný CTCP příkaz spouštějící více příkazů najednou:

ctcp 10:part:/part $2 | /notice $nick Opustil jsem kanál $2

A pokud uživatel s úrovní 10 vám pošle:

‚/ctcp {vaše_přezdívka} part #jméno_kanálu‘

Tento příkaz zařídí, že odejdete z požadovaného kanálu a řekne tomu kdo to po vás chtěl, že jste již odešli..

$2 obsahuje jméno kanálu ze kterého máte odejít.

$nick je přezdívka osoby, která se ptá.

*** Ostatní Příklady.

ctcp 1:ping:/notice $nick Prosím nepingujte mě.

…odpoví: "/notice {přezdívka} Prosím nepingujte mě."

ctcp 5:cas:/notice $nick Je čas kouknout se na hodinky.

…would respond with: "/notice {přezdívka} Je čas kouknout se na hodinky.

ctcp 10:kdojsi:/notice $nick já jsem kdo řekl Já jsem | /notice $nick A já říkám, že jsem TY!

…odpoví: "/notice {přezdívka} Ja jsem kdo řekl Já jsem" následované

"/notice {přezdívka} A já říkám, že jsem TY!"