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:47] 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 14: Sor 14:
  
 ===== Csatlakozás a MUD-hoz ===== ===== 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 kapcsolat kezeléséhez ismeretek is pár utasítást:+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: 
 +  * ''/listworlds'': kilistázza a definiált mudokat. 
 +  * ''/addworld MUD_NEVE HOST PORT'': hozzáad új mudot a listához. 
 +  * ''/unworld MUD_NEVE'': eltávolítja a mudot a listából. 
 +  * ''/purgeworld'': eltávolítja az összes mudot a listából. 
 +  * ''/saveworld FÁJLNÉV'': elmenti egy fájlba a mudlistát, később a ''/load FÁJLNÉV'' paranccsal lehet betölteni újra. 
 +  * ''/connect MUD_NEVE'': csatlakozik a definiált mudhoz. 
 +  * ''/dc'': szétkapcsol a mudtól és offline módba lép. 
 + 
 +Tehát EV-hez így lehet kapcsolódni például: 
 +<code> 
 +/addworld ev elveszettvilag.hu 6666 
 +/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>
tinyfugue.1420292847.txt.gz · Utolsó módosítás: 2015/01/03 14:47 szerkesztette: truth

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki