Tartalomjegyzék

Bevezetés

A TinyFugue a mud kliensek között a legjobb, feltéve, ha valaki tudja használni. Sokkal kiterjedtebb hozzáférést biztosít mélyebb vezérléshez és beprogramozáshoz a többi klienshez képest. Továbbá kiemeli még a többi a közül a szembetűnő sebessége, amiben az összes többi klienst lehagyja, így mindenképp megéri telepíteni és tanulmányozni, amiben a cikk többi része nyújt segítséget. Ha további kérdés felmerülne benned, írj nekem mudon levelet: level truth.

Letöltés

Telepítés

A TF működése

A TinyFugue nagyon sokban eltér a többi klienstől. Míg a megszokott jel a parancsok elválasztására a ;, itt ezzel a két karakterrel lehet a parancs végét jelezni az interpreternek: %;. Továbbá az is elterjedt a kliensekben, hogy a kettős kereszt után megadott számmal lehet jelölni az azt követő parancs ismétléseinek számát. Az szintén nem így működik itt, hanem eléggé csúnya módon: /repeat -0 -S SZAM PARANCS. Az előzőleg kiadott parancs ismétlésére sincs lehetőség csupán az ENTER megnyomásával. Ezek a kényelmes játékot ellehetetlenítik, azonban a TF sokrétűsége végett be lehet programozni ezeket is, készítettem egy script-et, amivel ezeket be és ki lehet kapcsolni. Innen töltheted le. A script fájlokat a /load fájlnév képes betölteni, a program indulásakor pedig automatikusan betölti a munkakönyvtárban található .tfrc-t. Tehát: /load pvesszo.tf, a /pon parancs bekapcsolja, a /poff pedig ki a speciális értelmezési műveleteket.

Csatlakozás a MUD-hoz

A program sikeres futtatását követően kíséreljük meg a csatlakozást az EV-hez. A kapcsolatok kezeléséhez ismertetek is pár utasítást:

Tehát EV-hez így lehet kapcsolódni például:

/addworld ev elveszettvilag.hu 6666
/connect ev

Változók

Kétféle módszer van a változók deklarálására, az egyik a /set parancs, a másik a /test parancson keresztül valósítható meg. A változókra később úgy lehet hivatkozni, hogy a nevük elé egy % jelet írunk. Egy függvény esetében pedig, ha nem a visszatérési értékkel szeretnénk dolgozni, hanem annak kimenetével, akkor a függvényt közre kell zárni két szögletes zárójellel, ami elé egy $ jelet kell tenni. A változókkal való műveletekre pedig a /test parancsot használjuk, ott lehet matematikai műveleteket, függvényeket értelmezni. Léptetni a változót is ezzel a paranccsal kell. Példa:

/set i 1
; vagy
/test i := 1
; szám értékének növelése eggyel
/test ++i
; szám értékének csökkentése eggyel
/test --i
; összeadás
/test i := 5+7
; string deklarálása
/test s := 'abc def'
; függvény visszatérési értékének mentése. s értéke 'val' lesz
/test s := substr('valami',0,3)
; függvény kimenetének váltózóba mentése a visszatérési érték helyett. a jelenlegi év lesz s értéke.
/test s := $[ftime("%Y",time())]

A TF által ismert függvények listája a /help functions paranccsal kérhetőek le, ahol további súgó elérhető mindegyik függvényhez.

Triggerek

A triggerek két részből állnak: pattern és command(s). Az előbbi az a szövegminta, ami egyezéskor lefuttatja az utóbbit, vagyis a parancsokat. Pattern-ből négyfélét támogat a TF: simple, glob, regexp, substr. Ezek közül a regexp az igazán releváns, érdemes azzal egyeztetni a szövegeket, mivel az rendelkezik a legtöbb formázási lehetőséggel. A /def paranccsal lehet definiálni aliasokat, triggereket, hookokat, makrókat. Triggerhez a -t kapcsoló szükséges, azon belül pedig szükség van még egy kapcsolóra, az -m-re, ami a pattern stílusát határozza meg. Én a továbbiakban mindig a regexp-et fogom használni a példákban, azt érdemes elsajátítani. Egy egyszerű példa:

/def -mregexp -t' holtan esett ossze !' = kivesz penz hullabol

Még egy fontos kapcsoló a triggereknél az -ag, ami gag-eli a szövegmintával egyező sort. Példa:

/def -mregexp -ag -t'Felkelsz a pihenesbol.'

Reguláris kifejezések

A szövegmintákban használhatsz ilyeneket, amik helyettesítenek különböző karaktersorozatokat. Tegyük fel, hogy valaki ad Neked pénzt, és az összeget szeretnéd kinyerni a szövegből, ami ez: 'Valaki 100 arany ermet ad neked.' Több lehetőséged van, a legegyszerűbb a mindenhova használható kifejezés, ez: (.*). Ez bármire egyezni fog. Használata:

/def -mregexp -t'Valaki (.*) arany ermet ad neked.' = mond %P1 aranyat kaptam.

Azonban ennél sokkal szűkebb értelmezési tartományt is meg lehet adni, példák:

; a következő csak akkor fog kattanni, ha a Valaki után egy szám lesz megadva,
; a 'd' jelöli a számot, a '+' pedig azt, hogy legalább egy karakter hosszúságú, ha '*' állna a helyén, akár nulla is lehet a hossza.
/def -mregexp -t'Valaki (\d+) arany ermet ad neked.' = mond %P1 aranyat kaptam.
; a 'w' egy betűsorozatot jelöl:
/def -mregexp -t'(\w+) (\d+) arany ermet ad neked.' = mond %P2 aranyat kaptam.
; az 's' pedig szóközöket:
/def -mregexp -t'(\w+)\s+(\d+) arany ermet ad neked.' = mond %P2 aranyat kaptam, %P1 adta.

A kódban láthatóak a következő kifejezések: %P1 és %P2. Korábban említve volt, hogy a változókat jelöljük százalékjellel, ezek is azok. Ha a reguláris kifejezésben zárójelek közé írjuk a mintát, elmenti az odaillő szöveget a trigger lefutásakor abba a változóba, amit fel lehet használni a trigger törzsében. A számozásuk logikusan attól függ, hogy hányadik zárójelek közötti kifejezésre szeretnénk mutatni. Továbbá van még két hasznos ilyen változó, a PL és PR. Az előbbi a pattern eleje előtti szöveget tartalmazza, az utóbbi pedig a pattern utáni szövegeket, példa:

/def -mregexp -t' (\d+) arany ermet ad neked.' = mond %P1 aranyat kaptam, %PL adta.

Ezen kívül még sokféle mintát lehet a regexp-ben használni, amikről interneten lehet leírásokat találni, például itt: http://www.mutatismutandis.org/help/tf/topics/pcre.html

Eseménykezelés

A /help hooks parancs kilistáz minden elérhető eseményt, azonban a legfontosabb ez a kettő: CONNECT és DISCONNECT. Erre a két eseményre van a szükség a mud-hoz való automatikus újracsatlakozás végett. Példa a használatára:

/def -hCONNECT acl1 = /load auto_con.tf%;FELH.NEV%;JELSZO
/def -hDISCONNECT acl2 = /repeat -10 1 /connect ev

Szemléletesen mutatja, hogy a CONNECT a csalatkozás után lefuttatja a törzsében lévő utasításokat, még a DISCONNECT a szétkapcsolás után fut le azonnal. Ezen kívül egy új elem is felfedezhető a kódban, be lett szúrva, hogy acl1 és acl2. Definiáláskor lehet külön nevet is adni triggereknek, aliasoknak, hookoknak, stb., aminek jelentősége az, hogy módosításkor és a memóriából való eltávolításkor így lehet specifikusan arra a tárolt kifejezésre mutatni.

Feltételes elágazás

Az /if elágazás segítségével lehetőség nyílik utasításblokkok feltételtől függő végrehajtására.

/if (condition) true_exp%;/else false_exp%;/endif

Több feltétel kiértékelése esetén használható az /elseif. Példa:

/def -mregexp -t'Eletero: (\d+)\s+' = /if ({P1} < 700) /heal%;/elseif ({P1} < 400) menekules most%;/endif

Ciklusos utasítások

Ciklusszervezéssel egy utasításblokk ismételhető feltétel szerinti alkalommal. A TF-ben két klasszikus, más nyelvekből is ismert utasítás van erre a célra: /for és /while, továbbá rendelkezésre áll még a /repeat, amely gazdagítja az eszköztárat időintervallumok megadásának lehetőségével.

Iteráló ciklus

A for utasítás segítségével n darabszor megismételhető a ciklusmag.

/for loop_var init_val end_val command

Példa:

/for i 1 10 /echo %i

Elöltesztelős ciklus

A while egy olyan ismétlési szerkezet, amely egészen addig ismétli a ciklusmagot, amíg az elején meghatározott feltétel teljesül.

/while (condition) commands%;/done

Példa:

/set i 10
/while (i > 0) /test echo(--i)%;/done

/repeat utasítás

A repeat késleltetett/azonnali kiértékelést eredményez egy/több alkalommal.

/repeat -NUM [-S] NUM command

Példa:

; megismétli 10x egymás után azonnal az 'eszak' parancsot.
/repeat -0 -S 10 eszak
; 5 másodperc múlva 'felkel' a karakter.
/repeat -5 1 felkel