mIRC Script Programozás - 1. rész
Üdvözlök mindenkit! A következő fejezetekben az IRC script
programozással, az IRC botokkal és ezen témán belül az Eggdrop
robotokkal fogunk megismerkedni. Fontos, hogy az IRC programozás
elsajátításának szükséges előfeltétele maga az IRC használatának ismerete. Ez
utóbbival kapcsolatban jól használható információkat tartalmaz a http://www.irc.hu oldal. Minden témakör végén az
új parancsokat megtalálhatod a kisszótárban, ami segít a parancsok
megismerésében.
Mielőtt még rögtön a programozás közepébe vágnánk, néhány dolgot érdemes
azért tisztáznunk. Az IRC (Internet Relay Chat) egy
olyan program, amin két vagy akár több személy társaloghat egymással az
Interneten keresztül. Az IRC működéséhez egyrészt szükséges egy központi
szerver, melyen az adatokat küldik egymásnak az illetők. Ilyen szerver érhető
el például az "irc.extra.hu", vagy az “irc.direct.hu” alatt. A
szerverek általában a 6667-es porton keresztül
fogadják a kéréseket a kliensektől, bár ez változó lehet.
Az IRC használatához a szerveren kívül kliensekre is szükség van. Ezek
feladata az IRC hálózat szolgáltatásainak elérhetővé tétele a felhasználók
számára valami barátságos módon. Az IRC-hez rengeteg
kliens készült már, de köztük a leghíresebb és legelterjedtebb az egyébként
ingyenesen letölthető mIRC aminek már a 6.03-as
verziója is napvilágot látott. A mIRC rendelkezik egy
igen komplikált beépített programnyelvvel is, ami lehetővé teszi a script programozást. A scriptek
elsődleges feladata megkönnyíteni a chat-en a
beszélgetést, a tájékozódást és a leggyakrabban használt funkciók elérését.
Ezen túl azonban a scriptek lehetővé teszik önműködő
IRC kliensek, ún. botok életre keltését is (a bot a “robot” szócska
rövidítése).
Akinek volt már mIRC a számítógépén,
valószínűleg elgondolkozott azon, hogy vajon mire szolgálnak a mirc.exe mellett
lévő *.ini kiterjesztésű fájlok? Név szerint egy alap
mIRC-nél a következők szerepelhetnek: aliases.ini,
mirc.ini, popups.ini, urls.ini, servers.ini, addrbk.ini, contor.ini. Ezek a
fájlok mind a scriptek írásával kapcsolatos
információkat tartalmaznak. Scriptek azonban nem csak
ebben a hét ini-ben helyezkedhetnek el, hanem
tetszőleges más állományokban is, amelyeknek nevét szabadon határozhatjuk meg.
A script fájlok értelmezését és futtatását maga a mIRC végzi.
E cikkben a scriptek készítésével ismerkedünk
meg. A következőkben fokozatosan vesszük át az "aliases.ini"-től
a bonyolult scriptekig a parancsokat és a változókat.
Kezdjünk tehát megismerkedni az "aliases ini" feladatával a scriptekben.
Az ún. alias-ok elsődleges feladata, hogy megkönnyítsék a bonyolult
parancsok kiadását, azok egyszerű rövidítéseken keresztül történő elérhetővé
tételével. A hosszú parancsokat úgynevezett álnevekkel (makrókkal) láthatjuk
el, amelyek beírásakor a mIRC automatikusan a
hozzárendelt összetett parancsot fogja végrehajtani. Az alias-ok
szerkesztéséhez a mIRC "Tools"
menüjében nyissuk meg az aliases.ini-t!
Az átlagos
aliases.ini megnyitása után a következőkhöz hasonló sorokat láthatunk:
[aliases]
/op /mode # +ooo
$$1 $2 $3
/dop /mode # -ooo
$$1 $2 $3
/j /join #$$1 $2-
/p /part #
/n /names #$$1
/w /whois $$1
/k /kick # $$1 $2-
/q /query $$1
/send /dcc send
$1 $2
/chat /dcc chat
$1
/ping /ctcp $$1 ping
/s /server $$1-
Amint a fentiekből látható, mindegyik parancs egy álnévvel kezdődik –
ennek beírásával aktivizálhatjuk az álnevet követő parancssort. A parancssor a
parancsszóból és paraméterekből áll. A paraméterek konstans kifejezések is
lehetnek, de változókra vagy az eredeti parancs paramétereire is hivatkozhatunk
velük. Ez utóbbiak listáját az alábbi felsorolás tartalmazza:
Kifejezés |
Jelentés |
$n |
az eredeti parancsban megadott n-edik
paraméter (n>0, egész) |
$$n |
ugyanaz, mint az előbb, de kötelezőként definiálja a
paramétert |
$n-m |
az n-ediktől az m-edik paraméterig terjedő szöveg összefűzve (n<=m) |
$n- |
az n-edik paramétertől a
parancssor végéig tartó szöveg |
$?, $! |
külön ablakban bekért paraméter |
$<név> |
a “név” nevű változó értéke (a változók listáját később
nézzük meg) |
Például az “/s /server $1” alias definiálása után a “/s
proba” parancs beírásakor a “/server proba” parancs kerül
elküldésre a szervernek.
Gondolom veletek is előfordult már, hogy untátok az átlagos kérdéseket,
mint pl. Hány éves vagy? Hogy vagy? és elegetek volt belőle, hogy folyton
ugyanazt kellett beírni mindenkinek. Az előző példa után már nem szabad, hogy
problémát jelentsen az ilyen válaszok adását leegyszerűsítő parancsok
elkészítése. Vegyünk mindjárt egy példát, amelyben a "Hogy vagy a mai
napon?" kérdésre kétféle választ írunk meg. Felveszünk két aliast, ami a "jól" és a "rosszul"
válasznak felel majd meg:
/jol /say Köszönöm $nick elég jól érzem magamat !
/rosszul /msg $nick Hát nem érzem valami
jól magam $nick !
A konkrét példában
a $nick változó annak a felhasználónak a nevét
jelenti, aki a kérdést feltette. A mIRC-ben definiált
változókat és jelentésüket az alábbi lista tartalmazza:
Idő és
Dátum azonosítók
$ctime |
1970. január 1.
óta eltelt idő, másodpercekben |
$ctime(szöveg) |
a megadott időpont óta eltelt idő, másodpercekben,
pl.: $ctime(January 1 1970 00:00:00), $ctime(3rd August 1987 3:46pm) |
$date |
az aktuális dátum nap/hó/év formában |
$day |
az aktuális nap neve (Sunday, Monday, stb.) |
$duration(N) |
a másodpercekben megadott időtartam “nap óra perc másodperc” formába konvertált változatát szolgáltatja |
$fulldate |
a teljes dátumot szolgáltatja |
$time |
az aktuális idő óó:pp:mm formában |
$timer(0) |
az aktív timerek számát adja meg |
$timer(N / név) |
a sorszámmal vagy névvel azonosított timer |
Szöveg és
Szám azonosítók
$abs(N) |
N abszolút értéke |
$asc(C) |
a C ASCII kódú karakter |
$calc(művelet) |
a megadott algebrai
művelet végeredményét szolgáltatja |
$cos(N),$acos(N), $sin(N) ,$asin(N),
tan(N) ,atan(N |
szögfüggvények |
$count(szöveg,s) |
az “s”
karakterfüzér “szöveg”-ben történő előfordulásainak száma, l: $count(hello, el) = 1, $count(hello,l) = 2 |
$int(N) |
N szám egész részét adja |
$left(szöveg,N) |
a “szöveg”
balról számított maximum N karakterét szolgáltatja |
$right(szöveg,N |
a “szöveg” jobbról számított maximum N karakterét szolgáltatja |
$len(szöveg) |
a “szöveg” hosszát adja meg (karakterekben) |
$lower(szöveg) |
a “szöveg”
kisbetűs változatával tér vissza |
$mid(szöveg,S,N) |
a “szöveg” S
pozíciótól számított N darab karakterét adja, pl:
$mid(othello,3,4) = hell |
$pos(szöveg,s,P) |
az “s” sztring első P pozíciót követő előfordulását adja meg a
“szöveg”-ben |
$rand(v1,v2) |
a v1 és v2
érték között generál egy számot vagy karaktert, pl.: $rand(a,z) visszatér
egy betűvel a,b,c,...,z értékek
között, $rand(A,Z) visszatér
egy betűvel A,B,C,...,Z értékek között, $rand(A,Z) visszatér
egy betűvel A,B,C,...,Z értékek között |
$remove(szöveg,s1,s2...) |
a “szöveg”-ből
törli s1, s2, stb. összes előfordulását |
$replace(szöveg,mit,mire) |
a “szöveg”-ben
“mit” összes előfordulását “mire”-re cseréli |
$round(N,D) |
az N
lebegőpontos számot D tizedesjegyre kerekíti |
$str(szöveg,N) |
a “szöveg”
N-szer egymás mögé illesztésével kapott szöveget szolgáltatja |
$upper(szöveg) |
a szöveg
nagybetűs verziójával tér vissza |
Nick és Cím azonosítók
N=0 esetén megadja az összes nyitott párbeszédablak
számát, míg N>0 esetén N-edik nevét adja vissza |
A fenti felsorolás csak egy töredékét
tartalmazza a mIRC-ben használható összes
azonosítónak.
/vicc1 /say Két ember megy
a......
/vicc2 /say Jancsi és
Juliska.....
/vicc /say $read C:/Viccek/viccek.txt
Ez a változó megmutatja, hogy hányszor indult el
eddig a mIRC, ebben az esetben 29-szer.
A változók beállítására a következő módon nyílik
lehetőség:
Vagy a set parancsot
elhagyva:
Természetesen az utasításokban használhatóak a már korábban megismert azonosítók és változók is.
/msg $chan Kicsit Álmos vagyok
[Kiszótár] [mode parancsok, alap IRC
parancsok]
[cpopup] Jobb kattintásra az aktuális szobában hívhatjuk elő és írhatunk bele.
[bpopup] A középső legördülő menüt mutatja, talán a legtöbb figyelmet ennek
szenteljük majd.
[mpopup] Status menüablakban használható menü, ugyanúgy a jobb kattintásra bújik
elő.
[lpopup] Valaki nick nevére kattintva parancsokat végezhetünk
el.
Ezzel meg is volnánk, ám érdemes továbbhaladni. A második
sorban valami ilyesmit fedezhetünk fel:
Join channel:/join #$$?="Enter channel name:"
Igen, ez már egy kicsit bonyolultabbnak tűnik az
előbbinél, de érdemes elemezgetni.
Join channel = Parancs neve, ez tetszés szerinti lehet.
.Be:/away $$?="Írd be a
távozás okát:"
Mindig a pontok jelzik az almenüket.
Ezután láthatjuk az
/away $$? = "Ird be a távozás okát:"
.Ki:/away $$?="Visszatérés
szövegbe:"
Mikor beírjuk a szöveget, ezt megkapja az összes csatorna
ahol vagy, hogy újra megjöttél.
Néhány kisebb példa, hogy miket készíthetünk a popups-ban:
Notepad megnyitása:
/run notepad.exe notes.txt
Slap!:/me slaps $$1 around a bit with a large trout
/me Kiírja a saját nevedet [
Azonosítóként : $me jelzi a későbbiekben ]
Eredmény : Harkon slaps Sanyi around a bit with a large trout
Készítsünk egy kijelentkező szöveget is:
Kilépés:/quit Nah $me megy, sziasztok !
*** Harkon has quit IRC ( Harkon megy, sziasztok
! )
DarkSide BoT: /msg $chan - DarkSide BoT %ver –
http://darksideteam.aom.hu/ by $me
Eredmény : <Vendég23> - DarkSide BoT v2.3 – http://darksideteam.aom.hu/ by
Vendég23
[Kiszótár] [Topic,verzió,lag,away]
/király /say Király vagyok ; Ide nem tehetsz megjegyzést
Ezután csomó szerver címét, protokolját
és nevét láthatod, itt egy példa:
Hát igen, eddig tartott a servers.ini kiböngészése,
másra nem igazán alkalmas.
[Kiszótár] [SERVER,irc.extra.hu,protocoll]
1:DarkSide BoTURL:http://www.tar.hu/darksidebot
2:DarkSide ScriptURL:http://www.tar.hu/darksidescript
Ez is ilyen egyszerű volt, de ki
tudja hátha valaki többre hasznosítja ;)
website=http://darksideteam.aom.hu/
note1=Szeretek Programozni és BoT-ot írni;)
[ignore] - Ez alá kerülnek az elnémított emberek listája
[voice] - Ugyanaz, mint az [op] csak itt voice jogot kapnak.
[protect] -
Későbbi bot programozásban használatos.
Itt egy kitöltött control.ini fájl:
Ezzel el is érkeztünk a végéhez, de
több figyelmet szentelünk neki majd a bot programozásnál.
Hiba! A kapcsoló argumentuma
érvénytelen.
Robot - Interneten működő robot,
amelyet legtöbbször szobák védelmére fejlesztettek ki.
*.ini - Script és BoT programozási fájlok
kiterjesztése.
Mode - Valamilyen
módot határoz meg a csatornában [ Lásd aliases.ini]
TOPIC - Szobák fejlécében
elhelyezkedő üzenet.
Away - Távollét
[Lásd - popups.ini]
Remote - A script programozás fő része a Remote-ban
folyik. Script.ini-k írása. [ Lásd : remote ]
Lag - Lassú
akadozó chat-elés, modemtől függő.
Notel - A
megjegyzések a nick névhez ide kerülnek.
http://www.irc.hu - Magyar IRC-s oldal
http://irc.lap.hu - IRC linkek
http://www.mirc.com - mIRC kliens weblapja
http://darksideteam.aom.hu - Delphi programozói oldal
A mIRC változóiról szóló táblázat a http://www.vilcabamba.hu oldalt illeti.
Ha valami kérdésetek vagy problémátok van, írjatok
nyugodtan!