WOW UI Mod Guide-2. fejezet perjel parancsok

vásárlás Wow arany olcsó

  • vásárlás Wow Klasszikus Arany biztonságos PVPBank segítségével kupon SEAN. Kifizetések: Paypal, Hitel.
  • vásároljon WoW Gold Paypal-t a Mulefactory-nál. WoW Klasszikus Kupon: wowcgold &WoW Arany Kupon: wowrgold. Félelmetes árak, azonnali szállítás. Kifizetések: Paypal, Skrill, Bitcoin.
  • UI Mod Guide-1. fejezet
  • UI Mod Guide-2. fejezet
  • UI Mod Guide – 3. fejezet
  • UI Mod Guide-4. fejezet
  • UI Mod Guide – 5. fejezet
  • UI Mod Guide – 6. fejezet
  • UI Mod Guide-fejezet 7

2. rész Index

  • mik azok a perjel parancsok, és miért érdekel
  • hogyan működnek a perjel parancsok
  • LUA fájlok
  • az egészet összerakva
  • mit csinál
  • utolsó szavak

Üdvözöljük a rész két útmutató a Wow létrehozásához Addonok! Ebben a részletben Mi 6 ll építeni az egyszerű AddOn hoztunk létre az első részben. Még akkor is, ha már ismeri a kiegészítők létrehozását, érdemes gyorsan lefölözni az első részt.

a második részben azt feltételezem, hogy Ön ismeri a Lua, XML és toc fájlok alapjait. Azonban, nyertem kb t feltételezzük, hogy kiterjedt programozási tapasztalattal rendelkezik. A fő feladatunk az lesz, hogy kezeljük a főparancsokat. Az út mentén, mi is egy kicsit közelebbről megvizsgáljuk a Lua kódolást. Amikor újra elvégeztük a xhamstereket, kibővítettük a meglehetősen béna adapterek csatakiáltását az első részből, hogy a végfelhasználók testreszabhassák anélkül, hogy megkövetelnék tőlük a Lua kód módosítását. Ha még nem rendelkezik az addonnal az első részből, akkor a <fájlokat itt>kaphatja meg.

mik azok a perjel parancsok, és miért érdekel?

ha ti, akik öt percnél tovább játszottátok a WoW-t, akkor ti, akik már ismeritek a perjel parancsokat. Ők¡újra a dolgokat, mint ˇ°/mondj¡± valamint ˇ°/, aki ¡±, hogy a típus közben WoW. A perjel parancsok nagyon kényelmes módja egy műveletnek az egér használata nélkül. Az AddOn írók számára a perjel parancsok sokkal egyszerűbbek, mint egy grafikus felhasználói felület windows és gombok segítségével. Ha az Ön igényei egyértelműek, akkor a slash parancsok lehetnek az összes, amit a kiegészítő igényel.

mint tudod, a WoW több tucat-gazillion ilyen parancsot nyújt. Amit nem tudhat, az az, hogy az addonok hozzáadhatják saját perjel parancsaikat. Tehát nézzük meg, hogy mi kell ahhoz, hogy a perjel parancsok száma tizenhárom gazillion-and-one legyen.

hogyan működnek a perjel parancsok

minden perjel parancs, amelyet egy AddOn hoz létre, Lua függvényt társít hozzá. Amikor a felhasználó beírja a perjel parancsot, a WoW meghívja a Lua függvényt. Belsőleg a WoW fenntart egy 6-os perjellistát, amely egy táblázat, amely az összes különböző perjelparancsot leképezi az általuk hívandó funkciókhoz. Gondolhatsz rá úgy, mint egy telefonkönyvre. (Emlékezz vissza a csevegőszobák és a csevegőszobák előtt, amikor az emberek használták a telefont J) a perjel parancsok olyanok, mint a nevek, a funkciók pedig olyanok, mint a telefonszámok. Amikor a felhasználó beír egy perjel parancsot, a WoW végigfut a perjel parancsokon (neveken), amíg meg nem találja a helyeset. Ezután felhívja a funkciót (telefonszám) az adott bejegyzéshez. Itt a Lua egy perjel parancsot hoz létre:

SlashCmdList = TthAog2SetMyBattleCry;

ez a sor állítja be a függvényt a tthaog2_set_my_battle_cry ++ perjel parancshoz, hogy a tthaog2setmybattlecry ++ legyen. Ha a ˇ°TTH_AOG2_SET_MY_BATTLE_CRY¡± slash command nem¡t már létezik a ˇ°SlashCmdList¡± táblázat, az automatikusan létrejön. (Kényelmes, hát nem! t it) ahhoz, hogy ez valóban működjön, nekünk, a D-nek meg kell határoznunk a (z) tthaog2setmybattlecry (Ca) (Ca) (Ca) függvényt valahol a Lua-Kódunkban. A függvény így nézhet ki:

function TthAog2SetMyBattleCry(msg)
— állítsa be a csatakiáltást, későbbi használatra
TthAog2MyBattleCry = msg;
end

(egy szó a konvencióról: figyeljük meg, hogy a perjel parancs nevéhez teljes nagybetűket használtunk. Ez azt jelenti, hogy a tth_aog2_set_my_battle_cry helyett a tthaog2setmybattlecry helyett a tthaog2setmybattlecry-t írtuk. Ebben az útmutatóban, mi 6LL használni all-caps állandók C értékek soha nem változik, még akkor is, ha a világ összeomlik a csillagközi por vagy hóvihar nerfs papok, vagy valami hasonlóan szörnyű. Minden alkalommal, amikor látsz engem használni egy all-caps név, Ön 6LL tudom, hogy én m mutatja meg egy állandó.)

Pop kvíz: mit jelent a felhasználó típus futtatni az új perjel parancsot Oké, bevallom. Ez egy beugratós kérdés. Bár a Lua fenti sora létrehoz egy perjel parancsot, és hozzá társít egy Lua-függvényt, még mindig nincs módunk arra, hogy végrehajtsuk. WoW használ remek álnévrendszer társítani, amit a felhasználó típusok a tényleges perjel parancsokat. Itt van a lua kód ehhez:

SLASH_TTH_AOG2_SET_MY_BATTLE_CRY1 = “/setmybattlecry2”;

most, ha a felhasználó nem az ágyékba írja be a xhamsteret/setmybattlecry2-t!ą ą a slash command ˇ°TTH_AOG2_SET_MY_BATTLE_CRY¡± fog végezni, ami a funkció ˇ°TthAog2SetMyBattleCry¡± hogy hívják a paraméter ˇ°Nem az ágyék!¡±. (Mi tesz egy ˇ°2 ą ą végén ˇ°/setmybattlecry2¡± mert mi¡ll felülvizsgálatára az AddOn a későbbi részein ez a kézikönyv nem¡t akarom a nevét, hogy a konfliktus.)

miért az extra lépés miért nem teszi lehetővé a perjel parancs létrehozását a (z) ~ ~ tth_aog2_set_my_battle_cry ~ számára, hogy a felhasználó beírhassa a (Z) ~ ~ /tth_aog2_setmybattlecry ~ parancsot a futtatásához, ennek két oka van. Már láthatja az elsőt: bár a belső neveinknek sok értelme lehet A kódunkban, ők gyakran szörnyen csúnyaak, hogy megmutassák a felhasználóknak. A második ok fontosabb: ez az extra lépés lehetővé teszi, hogy több kulcsszó végrehajtsa ugyanazt a perjel parancsot. A (z) ++ /setmybattlecry2 ++ gépelése egyfajta fájdalom. Addon-ok rövidebb utat adnak az embereknek:

SLASH_TTH_AOG2_SET_MY_BATTLE_CRY2 = “/smbc2”;

most Addonunk felhasználói beírhatják a (z) 6/setmybattlecry2 vagy a (z) 6/smbc2 ~ betűt a csatakiáltás beállításához. Figyeljük meg, hogy a konstans rész (SLASH_TTH_AOG2_SET_MY_BATTLE_CRY2) mi csatolt egy 6-os helyett egy 1-es számú ezúttal. Hozzáadhatunk egy harmadik kulcsszót is, helyette egy 3. számú főcím hozzáfűzésével, és így tovább.

bár a perjelparancsok nem épp olyan tetszetősek vagy tetszetősek, mint az ablakok vagy a gombok, mégis gyakran kényelmesek a felhasználók számára. És sokkal könnyebb létrehozni őket. (Ha továbbra is grafikus felületet szeretne az Addonhoz, és valószínűleg igen, legyen türelmes. Mi 6LL fedezi, hogy a hetedik része ezt az útmutatót.)

LUA változók

lehet, hogy észrevett valami újat a fenti függvényben. Itt van újra, ha elmulasztotta:

funkció TthAog2SetMyBattleCry (msg)
– állítsa be a csatakiáltást, későbbi használatra
TthAog2MyBattleCry = msg;
vége

A (Z) Tthaog2mybattlecry = MSG; a (Z) A (Z) új rész. A tthaog2mybattlecry egy Lua változó. A változók csak rések tartani bármilyen értéket választott. Mint sok szkriptnyelv, A Lua is nagyon rugalmas a változók kezelésében. Ha¡ve használt ˇ°erősen típusos¡± programozási nyelv, mint a C++, lehet, hogy csoda, hogy a változó¡s ˇ°típus¡±. Don ons t. a Lua változókra úgy gondolhat, mint nagy üres dobozokra, amelyek nagyjából bármit el tudnak tárolni, amit ott szeretne tárolni. Ebben AddOn, tároljuk a felhasználó által preferált csatakiáltás a változó.

a változók egyik fontos szempontja a hatókör, a hatókör. A hatókör lényegében azt jelenti, hogy mi a kód láthatja ezt a változót, a változó alapértelmezés szerint, a változók rendelkeznek a globális hatókörrel, sok függvénnyel láthatja a változót. A hatókör másik típusa a helyi hatókör, a helyi hatókör. Ez azt jelenti számunkra, hogy csak ugyanazon a blokkon belüli kód láthatja a változót. A blokklánc lényegében azt jelenti, hogy a blokklánc a következő végpontig, azaz a következő végpontig. (A Lua alkalmazási körének technikai meghatározása bonyolultabb,de itt nem kell aggódnunk a részletek miatt.)

a fenti példánkban a (z) tthaog2mybattlecry (TthAog2MyBattleCry) egy (Z) globális változó, a (z) globális hatókörű változó. A vonal ˇ°TthAog2MyBattleCry = msg; ą ą belül ˇ°TthAog2SetMyBattleCry¡± funkció hozta létre. Azok számára, akik olyan nyelvekből származnak, mint a C++, ez ellentmondásosnak tűnhet. De a Lua-ban, ha egy változót nem azonosítanak kifejezetten helyi hatókörrel, akkor az automatikusan globális. Még akkor is, ha egy függvényen belül deklarált. Tehát a következők működnének:

funkció TthAog2SetMyBattleCry(msg)
— állítsa be a csatakiáltás, későbbi használatra
TthAgo2MyBattleCry = msg;
vége

funkció TTHAog2Event()
— üzenet küldése chat
SendChatMessage(tthaog2mybattlecry, “say”);
End

figyeljük meg, hogy tthaog2mybattlecry használják mindkét funkciót. Mindkét helyen ugyanarra a változóra utal. A doboz analógiájával, ha a TthAog2SetMyBattleCry értéket helyez a dobozba, a TthAog2Event megnézheti a dobozt, és láthatja ezt az értéket.

a globális változók ilyen módon történő deklarálása azonban rossz gyakorlat. Sokkal jobb, ha a Lua fájl tetején deklarálja őket. Ennek két előnye van:

1) A globális változók teljes listája ott van, ahol könnyedén megtekintheti őket egy pillanat alatt

2) biztos lehet benne, hogy a változó megfelelően van inicializálva.

tehát sokkal előnyösebb ezt megtenni:

— ez a változó tartja a csatakiáltásunkat
TthAog2MyBattleCry = “nem az arcon!”;

funkció TthAog2SetMyBattleCry (msg)
– állítsa be a csatakiáltást, későbbi használatra
TthAog2MyBattleCry = msg;
end

funkció TthAog2Event ()
— üzenet küldése chat
SendChatMessage(TthAog2MyBattleCry, “SAY”);
end

most már sokkal könnyebb látni, hogy mi folyik itt.

a helyi változók gyakran hasznosak, ha csak rövid időre van szükségünk egy értékre. A helyi használatával nagyon világos, hogy milyen kód módosítja a változót. Mivel a helyi nem létezik nagyon hosszú ideig, általában láthatja az összes kódot, amely egy pillanat alatt módosíthatja. Jó ötlet lenne visszhangozni az új csatakiáltást a felhasználónak, amikor beállítják. Hagyja, hogy a (z) s módosítsa a tthaog2setmybattlecry – t, hogy ezt megtehesse:

funkció TthAog2SetMyBattleCry(msg)
— állítsa be a csatakiáltás, későbbi használatra.
TthAog2MyBattleCry = msg;

— visszhangozza az új csatakiáltást megerősítésért.
helyi visszhang = TTH_AOG2_BATTLE_CRY_SET_TO .. msg;
TthAog2OutputToChat(echo);
end

a helyi változón kívül számos új dolgot vezettünk be, ezért röviden nézzük meg őket egyenként:

local echo = TTH_AOG2_BATTLE_CRY_SET_TO .. msg;

ez a sor egy helyi változót hoz létre, melynek neve kb echo, hogy tárolja azt az értéket, amit mi a felhasználó számára visszhang. Az egyenlőségjel utáni rész egy szövegsorozatot hoz létre, amely a tth_aog2_battle_cry_set_to változó tartalmával kezdődik, és az msg tartalmával végződik, majd ezt a szövegsorozatot hozzárendeli a helyi változóhoz.

Uh-oh, még nem határoztuk meg a tth_aog2_battle_cry_set_to változót. Ezzel a sorral határozzuk meg, a fájlunk tetejére helyezve:

helyi TTH_AOG2_BATTLE_CRY_SET_TO = “csatakiáltás beállítása “;

mint láthatja, a TTH_AOG2_BATTLE_CRY_SET_TO változó egyszerűen tartalmaz egy karakterláncot. Mivel ez a karakterlánc soha nem változik, ez az ún. A konstans elhelyezése a fájl tetején mindig jó ötlet. Így, ha meg kell változtatnia a megfogalmazást, a karakterlánc nagyon könnyen megtalálható. (Amint azt a hatodik részben látjuk, a lokalizációt vagy a több nyelv támogatását is sokkal könnyebbé teszi.) Mi is, mi magunk is deklaráltuk a tth_aog2_battle_cry_set_to változót lokálisnak, annak ellenére, hogy nincs függvényben. Ez azt jelenti, hogy a változó csak ebben a fájlban létezik, másokban nem. Ha csak egy változót használsz egy fájlban, akkor mindig jó, ha helyi. Ily módon, akkor győződjön meg róla, hogy nincs kód kívül a fájl lehet, hogy módosította azt. (Lehet, hogy kíváncsi, hogy miért nem t, hogy tthaog2mybattlecry helyi. Ez azért van, mert meg akartam mutatni, hogy néz ki egy globális változó. De van egy másik ok is, amelyet a három részben látni fogsz.)

most térjünk át a következő sorban a mi funkció:

TthAog2OutputToChat(echo);

ez a sor hívja a funkciót, hogy meg kell írni, hogy küldjön egy üzenetet a chat területen. Az echo változó átkerül a függvényhez. Itt kb s hogy néz ki ez a funkció:

funkció TthAog2OutputToChat(msg)
ha (DEFAULT_CHAT_FRAME), akkor
DEFAULT_CHAT_FRAME:AddMessage(msg);
end
end

ez a funkció meghatározza, hogy meg tudjuk-e jeleníteni a szöveget az alapértelmezett csevegőkeretben, és ha igen, akkor megjeleníti a szöveget az msg-ben a csevegési területen. Ezt a szöveget más játékosok nem látják C ez szigorúan tájékoztató szöveg az addont futtató játékos számára. Ha Ön nem ismeri a változók függvényekhez való átadásának módját, itt van a kb, hogy megy ez: amikor a TthAog2SetMyBattleCry felhívja a TthAog2OutputToChat-ot az echo változó átadásával, Lua néhány dolog a színfalak mögött. Ez létrehoz egy helyi változó nevű msg a TthAog2OutputToChat, majd másolja az értéket echo msg. Ez ad nekünk egy msg nevű helyi változót a TthAog2OutputToChat függvényen belül, amelyet tetszés szerint használhatunk.

mi nem kellett létrehozni egy függvényt, hogy ezt. A kódot közvetlenül a tthaog2setmybattlecry funkcióba tehettük volna a csevegési területre. De egy funkció használata nagyon egyszerűvé teszi a szöveg kimenetét a csevegési területre. Ha valahol máshol kell ezt megtennünk, akkor a D-nek csak meg kell hívnia a függvényt, nem pedig egy egész kódblokkot kell másolnia. (Mi 6 ll kihasználni ezt a harmadik részben.) Továbbá, ha úgy döntöttünk, hogy a szöveget más módon jelenítjük meg a felhasználónak, akkor a függvényen belül módosítanunk kell a kódot. Más kódot nem érint, csökkentve a hiba esélyét. Végül egyszerűsítette a TthAog2SetMyBattleCry funkciót. A könnyen olvasható kód könnyen hibakereshető kód.

mi még nem teljesen feltárt Lua string kezelése vagy a WoW frame hierarchia, de erre ezen a ponton lenne a figyelemelterelés a fő hangsúly a perjel parancsokat. Remélhetőleg a fentiek elegendőek ahhoz, hogy megértsük, mi történik a kiegészítők ezen verziójában.

mindent összevetve

most már készen állunk arra, hogy átírjuk a battle cry kiegészítőt, hogy lehetővé tegyük a felhasználó számára, hogy a kívánt csatakiáltást a perjel parancsok segítségével adja meg. Csakúgy, mint az első részben, három fájlról van szó:
– toc fájl
– XML-fájl
– Lua kódot, fájlt

A toc fájl szinte változatlan Rész:

## Interface: 11000
## Title: TenTonHammer Guide Part 2
## Author: TenTonHammer.com
## Notes: Makes your character scream a customizable battle cry when combat begins
TthAog2.xml

Mi¡ve megváltozott ˇ°1 ą ą hogy ą°2 ą ą, valamint változott a megjegyzések, hogy hívja a battle cry ˇ°testreszabható¡± helyett ˇ°buta¡±. Mentse el ezt a toc fájlt TthAog2 néven.toc nevű mappába TthAog2 a mappa kiegészítők Alatt.

az XML fájl megegyezik az első részével, kivéve, ha az 1-et az ¡°2¡±:

<Ui xmlns=”http://www.blizzard.com/wow/ui/” xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance” xsi: schemaLocation=”http://www.blizzard.com/wow/ui/”>
<Script file= ” TthAog2.lua”/>
<keret neve=” TthAog2Core”>
<Scripts>
<OnLoad>TthAog2Load();</OnLoad>
<OnEvent>TthAog2Event();</OnEvent>
</Scripts>
</Frame>
</Ui>

mentse el ezt az XML fájlt TthAog2 néven.xml nevű mappába TthAog2 a mappa AddOns.

végül megvan a Lua fájl, amely magát a kódot tartalmazza. Ön már látta ezeket a darabokat:

— állandó húrok.
helyi TTH_AOG2_BATTLE_CRY_SET_TO = ” csatakiáltás beállítva “;
— ez a változó tartja a csatakiáltásunkat.
TthAog2MyBattleCry = “nem az arc!”;

— segédprogram funkció a csevegési területre történő nyomtatáshoz
funkció TthAog2OutputToChat (msg)
ha(DEFAULT_CHAT_FRAME), akkor
DEFAULT_CHAT_FRAME:AddMessage (msg);
end
end

— az AddOn betöltésekor hívják meg.
függvény TthAog2Load ()
— esemény regisztrálása.
this: RegisterEvent (“PLAYER_REGEN_DISABLED”);

— hozza létre a perjel parancsot.
SlashCmdList = TthAog2SetMyBattleCry;
SLASH_TTH_AOG2_SET_MY_BATTLE_CRY1 = “/setmybattlecry2”;
SLASH_TTH_AOG2_SET_MY_BATTLE_CRY2 = “/smbc2”;
end

— a perjel parancs végrehajtásakor hívják.
funkció TthAog2SetMyBattleCry (msg)
– állítsa be a csatakiáltást, későbbi használatra.
TthAog2MyBattleCry = msg;

— visszhangozza az új csatakiáltást megerősítésért.
helyi visszhang = TTH_AOG2_BATTLE_CRY_SET_TO .. msg;
TthAog2OutputToChat(echo);
end

— annak az eseménynek a kezelésére hívták, amelyre mi regisztráltunk.
funkció TthAog2Event ()
— üzenet küldése a csevegéshez.
SendChatMessage(TthAog2MyBattleCry,”SAY”);
end

az első részhez képest hozzáadtuk a tthaog2mybattlecry globális változót, hozzáadtuk a kódot a perjel parancs létrehozásához, hozzáadtuk a TthAog2SetMyBattleCry függvényt, és a tthaog2mybattlecry globális változót használtuk a Tthaog2eventben. Mi 6 ve is hozzá további megjegyzéseket.

mentse el ezt a lua fájlt TthAog2 néven.lua nevű mappába TthAog2 a mappa kiegészítők Alatt.

mit csinál

most kezdj el WoW-t és harcolj. Te látod a buta csatakiáltást, nem az arcát!¡±. Ez a TthAog2MyBattleCry változó alapértelmezett értékét tükrözi. Most írja be a következőket:

/ smbc2 csatába!

látni fogja az új csatakiáltás visszhangzott a chat területen. Most pedig Szállj be egy újabb harcba, és te is látni fogod, hogy csatázol!nem az arcába, hanem az arcába!¡±. Ha inkább kikapcsolja a csatakiáltást, akkor írja be a következőt:

/smbc2

a echo isn nem nagyon jól van megfogalmazva ehhez az esethez (csak azt fogja mondani, hogy a csatakiáltás KB-ra van állítva). Ha ez egy valódi AddOn lenne a nagyközönség számára, akkor az MSG értékét teszteljük, és egy speciális visszhangot jelenítünk meg, ha a felhasználó törli a csatakiáltást. Mivel ez csak egy példa, nyertünk ons t bonyolítja a kódot.

FINAL WORDS

ha kipróbálod az AddOn új verzióját, és a karaktered két csatakiáltást sikít, valószínűleg azért van, mert még mindig van telepítve és aktív az útmutató első részéből származó AddOn. Mivel óvatosak voltunk az elnevezéssel, ez megnyerte a xhamstereket, amelyek hibákat okoznak. De valószínűleg nem az, amit akarsz, bármelyik. Csak tiltsa le vagy törölje az első C verziót, az új egyébként jobb.

van egy probléma, bár: a csatakiáltás elvész ülések között. Minden alkalommal, amikor bezárod és újraindítod a WoW-t, akkor nem az arcodba kerülsz!¡±. Ha készen állsz, lépj tovább a harmadik részre, mi pedig meglátjuk, hogyan lehet a kívánt csatakiáltást a (Z) A (Z) A (Z) A (Z) A (Z) A (Z) A (Z) A (Z) A (Z).