Mod Guide – Kapitel 2 skråstreg kommandoer
Køb Guld billigt
- køb Klassisk Guld sikkert hos PVPBank ved hjælp af kupon
SEAN
. Betalinger: Paypal, Kredit. - køb Paypal hos Mulefactory. Klassisk Kupon:
wowcgold
&Guldkupon:wowrgold
. Fantastiske priser, øjeblikkelig levering. Betalinger: Paypal, Skrill, Bitcoin.
- UI Mod Guide-Kapitel 1
- UI Mod Guide-Kapitel 2
- UI Mod Guide – Kapitel 3
- UI Mod Guide – Kapitel 4
- UI Mod Guide – Kapitel 5
- UI Mod Guide-Kapitel 6
- UI Mod Guide-Kapitel 7
Del 2 indeks
- Hvad er skråstregskommandoer, og hvorfor er jeg ligeglad
- Hvordan fungerer skråstregskommandoer
- LUA-filer
- sætte det hele sammen
- hvad gør det
- endelige ord
velkommen til Del to af vores guide til at skabe AddOns! I denne rate bygger vi på den enkle tilføjelse, vi oprettede i første del. Selvom du allerede er bekendt med at oprette AddOns, vil du måske hurtigt skumme første del.
i Del to antager jeg, at du er bekendt med det grundlæggende i Lua -, HML-og toc-filer. Jeg vandt dog, at jeg antager, at du har omfattende programmeringserfaring. Vores fokus vil være på håndtering af kursister. Undervejs ser vi også lidt tættere på Lua-kodning. Når vi er færdige, vi har udvidet det temmelig halt, vi har udvidet det temmelig lamme, vi har udvidet det temmelig lamme, vi har udvidet det temmelig lamme, vi har tilføjet, så det kan tilpasses af slutbrugere uden at kræve, at de ændrer Lua-koden. Hvis du ikke allerede har tilføjelsen fra første del, kan du hente filerne <her>.
hvad er SKRÅSTREGSKOMMANDOER, og hvorfor er jeg ligeglad
hvis du har spillet i mere end fem minutter, er du bekendt med skråstregskommandoer. De er de ting som de er, som de er, som de er, som de er, som de er, som de skriver, mens de spiller. Slash kommandoer er en meget bekvem måde at udføre en handling uden at bruge musen. For AddOn-forfattere er skråstregskommandoer meget mere ligetil at implementere end en grafisk brugergrænseflade med vinduer og knapper. Hvis dine behov er ligetil, kan skråstregskommandoer være alt, hvad din AddOn kræver.
som du ved, giver du om umpteen-gasillion sådanne kommandoer. Hvad du måske ikke ved, er, at AddOns kan tilføje deres egne skråstregskommandoer. Så lad os tage et kig på, hvad der kræves for at støde skråstregskommandoen til umpteen-gasillion-and-one.
hvordan fungerer SKRÅSTREGSKOMMANDOER
hver skråstregskommando, som et AddOn opretter, har en Lua-funktion tilknyttet den. Når brugeren skriver skråstregskommandoen, kalder vi Lua-funktionen. Det er en tabel, der kortlægger alle de forskellige skråstregskommandoer til de funktioner, de skal kalde. Du kan tænke på dette som en telefonbog. (Husk tilbage før chatrum og IM, når folk brugte telefonen J) skråstregskommandoerne er som navnene, og funktionerne er som telefonnumrene. Når brugeren skriver en skråstregskommando, løber den gennem skråstregskommandoerne (navne), indtil den finder den rigtige. Derefter kalder den Funktionen (telefonnummer) for denne post. Her er den Lua for at oprette en skråstreg kommando:
SlashCmdList = TthAog2SetMyBattleCry;
denne linje indstiller funktionen for den røde tth_aog2_set_my_battle_cry den røde skråstreg kommando til den røde tthaog2setmybattlecry den. Hvis kommandoen kristit tth_aog2_set_my_battle_cry ikke allerede findes i den kristiske slashcmdlist, oprettes den automatisk. (Praktisk, er det ikke det) for at dette rent faktisk skal fungere, skal vi definere den kristne TthAog2SetMyBattleCry-funktion et eller andet sted i vores Lua-kode. Funktionen kan se sådan ud:
funktion TthAog2SetMyBattleCry(msg)
— Indstil battle cry, til brug senere
TthAog2MyBattleCry = msg;
end
(et ord om konvention: bemærk, at vi brugte all-caps til skråstregskommandonavnet. Det vil sige, vi skrev TTH_AOG2_SET_MY_BATTLE_CRY Kristian i stedet for Kristian tthaog2setmybattlecry Kristian. I denne vejledning, vi bruger alle hætter til konstanter C-værdier, der aldrig bør ændre sig, selvom verden smuldrer i interstellært støv eller snestorm Nerfs præster eller noget lige så forfærdeligt. Hver gang du ser mig bruge et navn med alle hætter, du ved, at jeg viser dig en konstant.)
Pop-spørgsmål: Hvad gør en brugertype for at køre den nye skråstregskommando Okay, jeg indrømmer. Det er et trick spørgsmål. Selvom ovenstående linje af Lua skaber en skråstreg kommando og knytter en Lua funktion med det, vi stadig ikke har nogen måde at udføre det. Brug et smart aliasing-system til at knytte, hvad brugeren skriver med de faktiske skråstregskommandoer. Her er Kris Lua-koden for at gøre det:
SLASH_TTH_AOG2_SET_MY_BATTLE_CRY1 = “/setmybattlecry2”;
nu hvis brugeren skriver Kris / setmybattlecry2 ikke i lysken!¡±, skråstreg kommando ¡°TTH_AOG2_SET_MY_BATTLE_CRY¡± vil blive gennemført, hvilket den funktion ¡°TthAog2SetMyBattleCry¡± for at blive kaldt med parameteren ¡°i lysken!¡±. (Vi har sat en ¡°2¡± ved udgangen af ¡°/setmybattlecry2 ¡±, fordi vi¡ll revidere vores AddOn i senere dele af denne guide, og vi don¡t ønsker, at navnene skal til konflikt.)
hvorfor det ekstra trin hvorfor opretter Kristian t slash-kommandoen Kristian tth_aog2_set_my_battle_cry automatisk det, så brugeren kan skrive Kristian/Tth_aog2_setmybattlecry Kristian for at køre det der er to grunde. Du kan allerede se den første: selvom vores interne navne kan give masser af mening i vores kode, de er ofte frygtelig grimme at vise til brugerne. Den anden grund er vigtigere: dette ekstra trin giver flere søgeord kan udføre den samme skråstreg kommando. At skrive Kurt / setmybattlecry2 er lidt af en smerte. Lad Kristian s give folk en kortere måde:
SLASH_TTH_AOG2_SET_MY_BATTLE_CRY2 = “/smbc2”;
nu kan brugere af vores AddOn skrive enten Kristian/setmybattlecry2 Kristian eller Kristian / smbc2 Kristian for at indstille kampråb. Bemærk, at vi i den konstante del (SLASH_TTH_AOG2_SET_MY_BATTLE_CRY2) tilføjede en liter 2 liter i stedet for en liter 1 liter denne gang. Vi kunne tilføje et tredje søgeord, ved at tilføje en kr3 kr i stedet, og så videre.
selvom skråstregskommandoer ikke er så smarte eller så visuelt tiltalende som vinduer og knapper, de er ofte bekvemme for brugerne. Og de er meget lettere for dig at skabe. (Hvis du stadig vil have en grafisk grænseflade til din AddOn, og du sandsynligvis gør det, vær tålmodig. Vi vil dække det i Del syv af denne vejledning.)
LUA-variabler
du har måske bemærket noget nyt i funktionen ovenfor. Her er det igen, hvis du gik glip af det:
funktion TthAog2SetMyBattleCry (msg)
– Indstil kampkry, til brug senere
TthAog2MyBattleCry = msg;
end
den Kristian Tthaog2mybattlecry = msg; Kristian er den nye del. Kristian tthaog2mybattlecry er en Lua variabel. Variabler er bare slots til at holde enhver værdi efter eget valg. Ligesom mange scripting sprog, Lua er meget fleksibel i forbindelse med variabler. Hvis du¡ve brugt en ¡°stærkt skrevet¡± programmeringssprog, såsom C++, kan du spekulerer på, om de variable¡s ¡°type¡±. Du kan tænke på Lua-variabler som store tomme kasser, der kan rumme stort set alt, hvad du vil gemme der. I denne AddOn, Vi gemmer brugeren karrus foretrukne kampskrig i variablen.
et vigtigt aspekt af variabler er Chr. Omfang betyder i det væsentlige, hvilken kode der kan se denne variabel, som standard har variabler, som har et globalt omfang, mange af dine funktioner kan se variablen. Den anden type anvendelsesområde er den lokale rækkevidde. Hvad dette betyder for os er, at kun kode inden for den samme prisblok kan se variablen. En lusblok lussing betyder i bund og grund lussing lussing lussing lussing. (Den tekniske definition af omfang i Lua er mere kompliceret, men vi behøver ikke at bekymre os om disse detaljer her.)
i vores ovenstående eksempel er Kristian tthaog2mybattlecry Kristian en Kristian global variabel Kristian, en variabel med global rækkevidde. Linjen krist tthaog2mybattlecry = msg; krist inden for den Kristian tthaog2setmybattlecry Kristian funktion skabte det. For dem af jer, der kommer fra sprog som C++, kan dette virke kontraintuititivt. Men i Lua, hvis en variabel ikke eksplicit identificeres som lokal rækkevidde, er den automatisk global. Selvom det erklæres inden for en funktion. Så følgende ville fungere:
funktion TthAog2SetMyBattleCry(msg)
— Indstil kampkry, til brug senere
TthAgo2MyBattleCry = msg;
end
funktion TTHAog2Event()
— send en besked til chat
SendChatMessage(tthaog2mybattlecry, “say”);
end
bemærk, at tthaog2mybattlecry bruges i begge funktioner. Begge steder henviser det til den samme variabel. Ved hjælp af boksanalogien, hvis TthAog2SetMyBattleCry sætter en værdi i boksen, kan TthAog2Event se ind i boksen og se den værdi.
men at erklære globale variabler på denne måde er dårlig praksis. Det er meget bedre at erklære dem øverst i din Lua-fil. Dette har to fordele:
1) den fulde liste over globale variabler er lige der, hvor du nemt kan se dem alle i et overblik
2) Du kan være sikker på, at variablen er korrekt initialiseret.
så det er meget at foretrække at gøre dette:
— denne variabel holder vores kampskrig
TthAog2MyBattleCry = “ikke i ansigtet!”;
funktion TthAog2SetMyBattleCry (msg)
– Indstil kampkry, til brug senere
TthAog2MyBattleCry = msg;
end
funktion TthAog2Event ()
— send en besked til chat
SendChatMessage(TthAog2MyBattleCry, “SAY”);
end
nu er det meget lettere at se, hvad der foregår.
lokale variabler er ofte nyttige, når vi kun har brug for en værdi kort. Ved at bruge en lokal er det meget klart, hvilken kode der ændrer variablen. Fordi den lokale ikke eksisterer meget lang, kan du normalt se al den kode, der kan ændre den med et øjeblik. Det ville være en god ide at gentage det nye kampskrig tilbage til brugeren, når de indstiller det. Lad Kris s ændre TthAog2SetMyBattleCry at gøre dette:
funktion TthAog2SetMyBattleCry(msg)
— Indstil battle cry, til brug senere.
TthAog2MyBattleCry = msg;
— ekko det nye kampråb for bekræftelse.
lokal echo = TTH_AOG2_BATTLE_CRY_SET_TO .. msg;
TthAog2OutputToChat(echo);
end
vi har introduceret flere nye ting ud over den lokale variabel, så lad os kort se på dem en efter en:
local echo = TTH_AOG2_BATTLE_CRY_SET_TO .. msg;
denne linje opretter en lokal variabel ved navn purpur Echo Purpur for at gemme den værdi, som vi Purpur Echo til brugeren. Delen efter lighedstegnet laver en tekststreng, der begynder med indholdet af variablen TTH_AOG2_BATTLE_CRY_SET_TO og slutter med indholdet af msg og tildeler derefter den tekststreng til den lokale variabel.
Uh-oh, vi har tilflugtssted for at definere tth_aog2_battle_cry_set_to variablen. Vi definerer det med denne linje, placeret øverst i Vores fil:
local TTH_AOG2_BATTLE_CRY_SET_TO = “Battle cry set to “;
som du kan se, indeholder tth_aog2_battle_cry_set_to-variablen simpelthen en streng. Fordi denne streng aldrig ændres, kaldes den en konstant konstant. At placere din konstant øverst i din fil er altid en god ide. På den måde, hvis du har brug for at ændre ordlyden, er strengen meget let at finde. (Som vi ser i Del seks, gør det også lokalisering eller understøttelse af flere sprog meget lettere.) Vi har også erklæret tth_aog2_battle_cry_set_to-variablen som lokal, selvom den ikke er i en funktion. Dette betyder, at variablen kun findes i denne fil og ikke i andre. Hvis du kun bruger en variabel i en fil, det er altid godt at gøre det lokalt. På den måde, du er sikker på, at ingen kode uden for din fil muligvis har ændret den. (Du undrer dig måske over, hvorfor vi ikke gjorde det til TthAog2MyBattleCry lokalt. Det er mest fordi jeg ville vise dig, hvordan en global variabel så ud. Men der er også en anden grund, som du ser i tredje del.)
lad nu Christ s flytte til næste linje i Vores funktion:
TthAog2OutputToChat(echo);
denne linje kalder en funktion, som vi skal skrive, for at sende en besked til chatområdet. Det variable ekko overføres til funktionen. Her er hvad denne funktion ser ud:
funktion TthAog2OutputToChat (msg)
if(DEFAULT_CHAT_FRAME) derefter
DEFAULT_CHAT_FRAME:AddMessage (msg);
end
end
denne funktion bestemmer, om vi kan vise tekst til standard chatrammen og i så fald viser teksten i msg til chatområdet. Denne tekst ses ikke af andre spillere C det er strengt oplysende tekst til spilleren kører AddOn. Hvis du ikke er bekendt med, hvordan passerende variabler til funktioner fungerer, her er det, hvordan det går: når TthAog2SetMyBattleCry kalder TthAog2OutputToChat ved at passere echo variabel, Lua nogle ting bag kulisserne. Det skaber en lokal variabel ved navn msg i TthAog2OutputToChat, kopierer derefter værdien i echo til msg. Dette giver os en lokal variabel ved navn msg inden for tthaog2outputtochat-funktionen, som vi kan bruge som vi vil.
vi behøvede ikke at oprette en funktion for at gøre dette. Vi kunne have sat koden til output til chatområdet direkte i tthaog2setmybattlecry-funktionen. Men ved hjælp af en funktion gør det virkelig nemt at sende tekst til chatområdet. Hvis vi skulle gøre dette et andet sted, skal vi bare kalde funktionen, ikke kopiere en hel blok kode. (Vi vil drage fordel af dette i tredje del.) Også, hvis vi besluttede at vise tekst til brugeren på en anden måde, skal vi bare ændre koden inden for funktionen. Ingen anden kode ville blive påvirket, hvilket reducerer risikoen for en fejl. Endelig forenklede det tthaog2setmybattlecry-funktionen. Let at læse kode er let at debug kode.
vi har sørget for, at vi har udforsket Lua-strenghåndtering fuldt ud, men at gøre det på dette tidspunkt ville være en distraktion fra vores hovedfokus for skråstregskommandoer. Forhåbentlig er ovenstående tilstrækkeligt for dig at forstå, hvad der sker i denne version af tilføjelsen.
sætter det hele sammen
vi er nu klar til at omskrive battle cry AddOn for at give brugeren mulighed for at specificere et foretrukket battle cry via skråstregskommandoer. Ligesom i første del er der tre filer involveret:
– toc-fil
– XML-fil
– Lua-kode-fil
indholdsfortegnelsen file er næsten uændret fra første Del:
## Interface: 11000
## Title: TenTonHammer Guide Part 2
## Author: TenTonHammer.com
## Notes: Makes your character scream a customizable battle cry when combat begins
TthAog2.xml
Vi¡ve bare ændret ¡°1¡± til ¡°2¡±, og ændrede bemærker, at ringe til battle cry ¡°tilpasses¡± i stedet for ¡°dumme¡±. Gem denne toc-fil som TthAog2.toc til en mappe med navnet TthAog2 under mappen AddOns.
filen er identisk med første del, bortset fra at ændre lus1 til ¡°2¡±:
<“http://www.blizzard.com/wow/ui/”>”http://www.w3.org/2001/XMLSchema-instance”>”=”http://www.blizzard.com/wow/ui/”>
< Script file= ” TthAog2.lua”/>
<Frame name=” TthAog2Core”>
<Scripts>
<OnLoad>TthAog2Load();</OnLoad>
<OnEvent>TthAog2Event();</OnEvent>
</Scripts>
</Frame>
</Ui>
Gem denne fil som TthAog2.til en mappe med navnet TthAog2 under mappen AddOns.
endelig har vi Lua-filen, der indeholder selve koden. Du har allerede set alle disse stykker:
– konstante strenge.
lokal TTH_AOG2_BATTLE_CRY_SET_TO = ” kampskrig indstillet til “;
— denne variabel holder vores kampråb.
TthAog2MyBattleCry = ” ikke i ansigtet!”;
— Utility funktion til udskrivning til chat område
funktion TthAog2OutputToChat (msg)
if(DEFAULT_CHAT_FRAME) derefter
DEFAULT_CHAT_FRAME:AddMessage (msg);
end
end
— kaldes når AddOn belastninger.
funktion TthAog2Load ()
— Tilmeld dig en begivenhed.
dette:RegisterEvent (“PLAYER_REGEN_DISABLED”);
— Opret kommandoen skråstreg.
SlashCmdList = TthAog2SetMyBattleCry;
SLASH_TTH_AOG2_SET_MY_BATTLE_CRY1 = “/ setmybattlecry2”;
SLASH_TTH_AOG2_SET_MY_BATTLE_CRY2 = “/smbc2”;
end
— kaldes, når skråstregskommandoen udføres.
funktion TthAog2SetMyBattleCry (msg)
— Indstil battle cry, til brug senere.
TthAog2MyBattleCry = msg;
— ekko det nye kampråb for bekræftelse.
lokal echo = TTH_AOG2_BATTLE_CRY_SET_TO .. msg;
TthAog2OutputToChat(echo);
end
— kaldet til at håndtere den begivenhed, som vi har registreret.
funktion TthAog2Event ()
— Send en besked til chat.
SendChatMessage(TthAog2MyBattleCry, “sig”);
end
sammenlignet med første del har vi tilføjet tthaog2mybattlecry global-variablen, tilføjet koden for at oprette slash-kommandoen, tilføjet tthaog2setmybattlecry-funktionen og brugt tthaog2mybattlecry global-variablen i TthAog2Event. Vi har også tilføjet flere kommentarer.
Gem denne lua-fil som TthAog2.lua til en mappe med navnet TthAog2 under mappen AddOns.
hvad gør det
start nu, og kom i kamp. Du vil se det fjollede kampskrig, ikke i ansigtet!¡±. Dette afspejler standardværdien af tthaog2mybattlecry-variablen. Skriv nu følgende:
/ smbc2 til kamp!
du ser det nye kampråb gentaget til chatområdet. Kom nu i en anden kamp, og du vil se dig til at kæmpe!ikke i ansigtet!¡±. Hvis du foretrækker at slukke for kampkrybet, kan du bare skrive:
/smbc2
vores ekko er ikke meget godt formuleret til denne sag (det vil bare sige, at den er indstillet til den). Hvis dette var en reel AddOn til brug for den brede offentlighed, vi Kurt d teste værdien af msg og vise en særlig ekko, hvis brugeren er at rydde kampskrig. Fordi dette er blot et eksempel, Vi vandt Christ t komplicere koden.
afsluttende ord
hvis du prøver den nye version af tilføjelsen, og din karakter skriger to kampskrig, er det sandsynligvis fordi du stadig har tilføjelsen fra første del af denne vejledning installeret og aktiv. Fordi vi var forsigtige med navngivning, dette vandt Christian t forårsage fejl. Men det er sandsynligvis ikke det, du vil have, enten. Bare få deaktivere eller slette den første version C den nye er bedre alligevel.
der er dog et problem: dit kampskrig går tabt mellem sessioner. Hver gang du lukker og genstarter, vil du være tilbage til ikke i ansigtet!¡±. Når du er klar, gå videre til Del tre, og vi vil se, hvordan du får dit foretrukne kampskrig til at holde dig til hinanden mellem sessionerne.