Felhasználói eszközök

Eszközök a webhelyen


tinyfugue

Különbségek

A kiválasztott változat és az aktuális verzió közötti különbségek a következők.

Összehasonlító nézet linkje

Előző változat mindkét oldalonElőző változat
Következő változat
Előző változat
tinyfugue [2015/01/03 14:59] truthtinyfugue [2016/01/10 12:55] (aktuális) truth
Sor 8: Sor 8:
 ===== Telepítés ===== ===== Telepítés =====
   * Windows - Az archívumban található telepítő egyszerűen végigkalauzol a folyamaton.   * Windows - Az archívumban található telepítő egyszerűen végigkalauzol a folyamaton.
-  * Linux - Azért az általam feltöltött .tar-t linkeltem be, mert az új verziójú pcre miatt patch-elni kell, a ''readme'' fájl részletezi a telepítés parancsaitSzükség van a gcc, makepatch, pcre és zlib csomagokra.+  * Linux - Azért az általam feltöltött .tar-t linkeltem be, mert az új verziójú pcre miatt patch-elni kell. Nem minden esetben kell innen letöltenimert pár disztribúció repo-jában megtalálható a tf csomag, és telepítéshez csupán ennyi kellhet: ''zypper/yum/apt-get install tf''Ha nincs a tárolóban, akkor marad a forráskód, aminek a függőségei között szerepel a zlib és pcre csomagok, amiket viszont megtalálsz a csomagkezelőben, továbbá a gcc, make és patch csomagokat is telepítsd. Utána az archívumot bontsd kimajd nyiss oda terminált és a ''readme'' fájlban található parancsokon menj végig, és ha hiba nélkül lefut, telepítve lesz a program és futtatható a ''tf'' paranccsal.
  
 ===== A TF működése ===== ===== A TF működése =====
Sor 27: Sor 27:
 /addworld ev elveszettvilag.hu 6666 /addworld ev elveszettvilag.hu 6666
 /connect ev /connect ev
 +</code>
 +
 +===== 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:
 +<code>
 +/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())]
 +</code>
 +
 +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:
 +<code>
 +/def -mregexp -t' holtan esett ossze !' = kivesz penz hullabol
 +</code>
 +
 +Még egy fontos kapcsoló a triggereknél az ''-ag'', ami gag-eli a szövegmintával egyező sort. Példa:
 +<code>
 +/def -mregexp -ag -t'Felkelsz a pihenesbol.'
 +</code>
 +
 +==== 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:
 +<code>
 +/def -mregexp -t'Valaki (.*) arany ermet ad neked.' = mond %P1 aranyat kaptam.
 +</code>
 +Azonban ennél sokkal szűkebb értelmezési tartományt is meg lehet adni, példák:
 +<code>
 +; 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.
 +</code>
 +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:
 +<code>
 +/def -mregexp -t' (\d+) arany ermet ad neked.' = mond %P1 aranyat kaptam, %PL adta.
 +</code>
 +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|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:
 +<code>
 +/def -hCONNECT acl1 = /load auto_con.tf%;FELH.NEV%;JELSZO
 +/def -hDISCONNECT acl2 = /repeat -10 1 /connect ev
 +</code>
 +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.
 +<code>
 +/if (condition) true_exp%;/else false_exp%;/endif
 +</code>
 +  * **condition**: kifejezés, aminek ha nullától eltérő értéke van, igaznak bizonyul.
 +  * **true_exp**: teljesült feltétel esetén lefutó blokk.
 +  * **false_exp**: hamis kifejezéskor végrehajtott ág.
 +
 +Több feltétel kiértékelése esetén használható az ''/elseif''.
 +Példa:
 +<code>
 +/def -mregexp -t'Eletero: (\d+)\s+' = /if ({P1} < 700) /heal%;/elseif ({P1} < 400) menekules most%;/endif
 +</code>
 +
 +=====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.
 +<code>
 +/for loop_var init_val end_val command
 +</code>
 +  * **loop_var**: léptethető ciklusváltozó neve.
 +  * **init_val**: a változó kezdeti értéke.
 +  * **end_val**: a változó eddig a szélsőértékig lesz inkrementálva, utána befejeződik a végrehajtása.
 +  * **command**: a ciklusmag utasítása.
 +
 +Példa:
 +<code>
 +/for i 1 10 /echo %i
 +</code>
 +
 +====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.
 +<code>
 +/while (condition) commands%;/done
 +</code>
 +  * **condition**: kiértékelt feltétel, ami ami igaz logikai érték esetén végrehajtja a ciklusmagot.
 +  * **commands**: a ciklusmag utasításai.
 +
 +Példa:
 +<code>
 +/set i 10
 +/while (i > 0) /test echo(--i)%;/done
 +</code>
 +
 +====/repeat utasítás====
 +A repeat késleltetett/azonnali kiértékelést eredményez egy/több alkalommal.
 +<code>
 +/repeat -NUM [-S] NUM command
 +</code>
 +  * **-NUM**: a késleltetés mértéke másodpercben kifejezve, akár lebegőpontos formátumban.
 +  * **-S**: szinkronban fut le a folyamattal, tehát azonnal.
 +  * **NUM**: ismétlések száma.
 +  * **command**: a kiértékelt parancs.
 +
 +Példa:
 +<code>
 +; 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
 </code> </code>
tinyfugue.1420293565.txt.gz · Utolsó módosítás: 2015/01/03 14:59 szerkesztette: truth

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki