Dedication - Allianz - Malygos
Würden Sie gerne auf diese Nachricht reagieren? Erstellen Sie einen Account in wenigen Klicks oder loggen Sie sich ein, um fortzufahren.

Das erste eigene Addon: Hello World

5 verfasser

Seite 1 von 2 1, 2  Weiter

Nach unten

Das erste eigene Addon: Hello World Empty Das erste eigene Addon: Hello World

Beitrag von Meldoria Di Mai 26, 2009 8:19 pm

Da ich mich heute abend mal kurz damit beschäftigt habe und das evtl einige auch interessiert:
Wie schreibt man sein eigenes kleines erstes Addon für WoW - natürlich ein "Hello World" Addon.

Grundsätzlich brauch man drei Dateien, die man in einen Unterordner steckt:
x.lua für die Funktionen
x.xml für die Optik
x.toc als Headerdatei, der alle .luas und .xmls auflistet, die für das Addon geladen werden sollen.

Nennt man jetzt seinen Ordner stimmungsvoll HelloWorld, kommt folgendes in die drei Dateien rein:
------------------------------
helloworld.lua:
function HelloWorld()
message("Hello World!");
end

helloworld.xml:
<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/
..\..\FrameXML\UI.xsd">
<Frame name="HelloWorldFrame">
<Scripts>
<OnLoad>
HelloWorld();
</OnLoad>
</Scripts>
</Frame>
</Ui>

helloworld.toc:
## Interface: 20400
## Title: Hello World!
## Notes: My first AddOn
## Dependencies:
helloworld.lua
helloworld.xml
--------------------------------------
Das Addon wird beim Einloggen in einen Char geladen und stellt ein Frame mit den Text "Hello World" da.

Eine genauere Erklärung gibts zB auf
http://www.wowwiki.com/HOWTOs

wobei die lua - Referenz hier liegt: http://www.wowwiki.com/Lua_functions
und die Widget - API gibt hier: http://www.wowwiki.com/Widget_API

Die gaaaanz auführliche Einleitung für das HelloWorldAddon gibts dementsprechend hier: http://www.wowwiki.com/AddOn_programming_tutorial/Introduction

Bzgl meines Addonwunsches: Raidmitglied als Ziel, Addon anklicken und die ganze Gruppe des Ziels wird geschildet braucht es wohl noch einige Zeit.
Aber mal schauen ^^.
Meldoria
Meldoria

Anzahl der Beiträge : 375
Anmeldedatum : 20.11.08

Ingame Charakter
Name: Meldoria
Klasse: Priester

Nach oben Nach unten

Das erste eigene Addon: Hello World Empty Re: Das erste eigene Addon: Hello World

Beitrag von Savior Mi Mai 27, 2009 8:48 am

immer diese C/C++/C# Studenten^^

Hello World...so fängt das Grauen immer an
Savior
Savior

Anzahl der Beiträge : 337
Alter : 41
Ort : nähe Nürnberg
Anmeldedatum : 11.02.08

Ingame Charakter
Name:
Klasse:

Nach oben Nach unten

Das erste eigene Addon: Hello World Empty Re: Das erste eigene Addon: Hello World

Beitrag von Katlefiya Mi Mai 27, 2009 9:12 am

Du hast Objective-C vergessen, Sav Wink
Katlefiya
Katlefiya
Gildenrat

Anzahl der Beiträge : 642
Alter : 54
Ort : NRW, nähe Bielefeld
Anmeldedatum : 07.04.08

Ingame Charakter
Name: Katlefiya
Klasse: Druide

Nach oben Nach unten

Das erste eigene Addon: Hello World Empty Re: Das erste eigene Addon: Hello World

Beitrag von Sharife Do Mai 28, 2009 8:29 pm

dein ziel bedingt ein paar if-anweisungen und so.
gehen die mit makros nicht?

ich denke, man müsste außerdem wissen, wie wow die spieler im raid nummeriert. ich stelle mir nen algorithmus so vor:

hole Nummer von (angewähltes Ziel)
wenn (Nummer) < 5 dann
wähle (spieler 1)
zaubere Schild
wähle (spieler 2)
zaubere Schild
usw

wenn (Nummer) > 5 und <10 dann
wähle (spieler 6)
zaubere Schild
etc.

könnte evtl zu lang und wegen der if's zu kompliziert für ein makro sein.
wie siehst du das?
Sharife
Sharife

Anzahl der Beiträge : 233
Alter : 42
Ort : Leipzig
Anmeldedatum : 10.05.08

Ingame Charakter
Name: Sharife
Klasse: Jäger

Nach oben Nach unten

Das erste eigene Addon: Hello World Empty Re: Das erste eigene Addon: Hello World

Beitrag von Meldoria Do Mai 28, 2009 11:05 pm

Weißt du was...

Ich hab mir die Funktionen schon genau durchgelesen und ich weiß ziemlich genau was ich brauche.
DIe Makrosprache ist aber auf / - Kommandos beschränkt und diese /.. haben sehr geringe Funktionalität. Nur die Lua - Begriffe können auf die SupgroupID eines Raidteilnehmers zugreifen.

DIe Lösung ist: sich ein eigenes /schildedieganzegruppe über ein Addon zu definieren und das dann als makro in nen Button zu basteln.

Da brauch ich vermutlich nich mal auch nur ein "if".

Aber find ich echt putzig.. programmierst du mir das in QBasic? Very Happy
Meldoria
Meldoria

Anzahl der Beiträge : 375
Anmeldedatum : 20.11.08

Ingame Charakter
Name: Meldoria
Klasse: Priester

Nach oben Nach unten

Das erste eigene Addon: Hello World Empty Re: Das erste eigene Addon: Hello World

Beitrag von Meldoria Fr Mai 29, 2009 5:42 pm

Und weil es so schön war, gehts weiter...

Bindung von Slash - Kommandos ans eigene Addon
(Voraussetzung, um es in ein Makro zu packen / den Quellcode überhaupt zu testen)

-------------------------------
helloworld.lua:
SLASH_HELLOWORLD1, SLASH_HELLOWORLD2 = '/hiw', '/hellow'; -- 3.
function SlashCmdList.HELLOWORLD(msg, editbox) -- 4.
print("Hello World!");
end

helloworld.toc:
## Interface: 20400
## Title: Hello World!
## Notes: My first AddOn
## Dependencies:
helloworld.lua

hellworld.xml:
wird nicht benötigt, da das Addon keine grafische Anzeige braucht.
---------------------------------

Damit bekommt man als Antwort auf ein /hiw oder ein /hallow ein "Hallo Welt" im Chatfenster.

Das Beispiel mit ein paar Zusatzkommentaren gibts hier:
http://www.wowwiki.com/Creating_a_slash_command

Damit fehlt nur noch der echte Code für mein Addon - auslösen kann ich es schon. Da kann das Testen losgehen.
Meldoria
Meldoria

Anzahl der Beiträge : 375
Anmeldedatum : 20.11.08

Ingame Charakter
Name: Meldoria
Klasse: Priester

Nach oben Nach unten

Das erste eigene Addon: Hello World Empty Re: Das erste eigene Addon: Hello World

Beitrag von Meldoria Fr Mai 29, 2009 8:29 pm

Oha es gibt nen Addon - Unteforum. Das habe ich noch gar nie gesehen.

Merke: Um Bots zu verhindern hat Blizzard ein paar Funktionen seit 2.0 protected definiert - die dürfen nur noch von einem "secure button" / WoW selbst ausgelöst worden.

Zu diesen Funktionen gehört auch: CastSpellByName() bzw alles, was mit Zaubern zu tun hat.

Stellen wir uns vor, wir können schon über alle Raidmitlgieder iterieren (über "raidx"), zaubern dürfen wir aber nur, wenn wir einen sicheren Knopf nach einem Blizzard Template dem voran schalten.
Evtl kann man auch eine eigene Schummelfunktion schreiben.

Siehe
http://forums.worldofwarcraft.com/thread.html?topicId=54894142&postId=548989235&sid=1#0
http://www.wowwiki.com/API_hooksecurefunc
Meldoria
Meldoria

Anzahl der Beiträge : 375
Anmeldedatum : 20.11.08

Ingame Charakter
Name: Meldoria
Klasse: Priester

Nach oben Nach unten

Das erste eigene Addon: Hello World Empty Re: Das erste eigene Addon: Hello World

Beitrag von Meldoria So Mai 31, 2009 1:53 am

Ok keine Schummelfunktion möglich, geht nur über die SecureButtons.

Tolle Kommentare im englischen Forum:
--------------
<Technickgequatsche>
Antwort: *watches with dismay as the answer quickly escalates beyond his vocabulary*
----------------
My apologies. I'll go sit in the corner and contemplate the error of my ways. Bad troll! Bad!
----------------
Meldoria
Meldoria

Anzahl der Beiträge : 375
Anmeldedatum : 20.11.08

Ingame Charakter
Name: Meldoria
Klasse: Priester

Nach oben Nach unten

Das erste eigene Addon: Hello World Empty Re: Das erste eigene Addon: Hello World

Beitrag von Meldoria Mi Jul 22, 2009 11:53 pm

Update: XML - Handbuch aus der Unibib auf dem Schreibtisch (dem zweiten, noch nich auf dem ersten, dauert also noch).
DIe Sache ist noch nicht vorbei! Ich werde das SecureButtonTemplate bezwingen!
Meldoria
Meldoria

Anzahl der Beiträge : 375
Anmeldedatum : 20.11.08

Ingame Charakter
Name: Meldoria
Klasse: Priester

Nach oben Nach unten

Das erste eigene Addon: Hello World Empty Re: Das erste eigene Addon: Hello World

Beitrag von Katlefiya Do Jul 23, 2009 12:15 am

Mit einem XML-Handbuch????
Katlefiya
Katlefiya
Gildenrat

Anzahl der Beiträge : 642
Alter : 54
Ort : NRW, nähe Bielefeld
Anmeldedatum : 07.04.08

Ingame Charakter
Name: Katlefiya
Klasse: Druide

Nach oben Nach unten

Das erste eigene Addon: Hello World Empty Re: Das erste eigene Addon: Hello World

Beitrag von Meldoria Do Jul 23, 2009 11:29 am

Klar, ich hab da irgendein "es taucht nicht auf " - Problem, was ich einfach nich nachvollziehen kann.
Ich muss verstehen, was ich in der OnLoad() machen muss ^^ und auch nach 5 Addonquelltexten bin ich irgendwie noch nich so ganz auf den Trichter gekommen (wenn man die geringe Zeitinvestition mit betrachtet hehe).
Und mein Zeitaufwand in der Problemfindung reduziert sich, wenn ich das Zeugs ausgedruckt weil schneller lesbar vor mir liegen habe.
Man kann annehmen, dass solche Bücher besser als Onlinetutorials konzeptioniert sind, wenns ums Infos schnell finden geht.
Wenn man dazu nimmt, dass Unibibbücher eine Ausleihefrist von 4 Monaten haben ^^ .. .
Meldoria
Meldoria

Anzahl der Beiträge : 375
Anmeldedatum : 20.11.08

Ingame Charakter
Name: Meldoria
Klasse: Priester

Nach oben Nach unten

Das erste eigene Addon: Hello World Empty Re: Das erste eigene Addon: Hello World

Beitrag von Katlefiya Do Jul 23, 2009 7:29 pm

Du vermutest also einen Fehler in einer von dir erstellten XML-Datei?
Katlefiya
Katlefiya
Gildenrat

Anzahl der Beiträge : 642
Alter : 54
Ort : NRW, nähe Bielefeld
Anmeldedatum : 07.04.08

Ingame Charakter
Name: Katlefiya
Klasse: Druide

Nach oben Nach unten

Das erste eigene Addon: Hello World Empty Re: Das erste eigene Addon: Hello World

Beitrag von Meldoria Do Jul 23, 2009 7:34 pm

Jein.
Die xml - Datei startet die Funktion in der .lua, die das xml - Teil aufpoppen lässt.
Und so ein Büchlein zu lesen dauert nich so lange ^^ weil XML ja nicht wirklich ein Problem ist. .. Es sei denn ich hab da was großes bei Tag-auf, Tag-zu übersehen Very Happy.
Letztendlich bin ich nur demnächst dabei, das Problem von vorne nach hinten komplett aufzurollen, anstatt irgendwo dramm rum zu drehen und keine Ahnung von dem, was ich da mache zu haben ^^.
Meldoria
Meldoria

Anzahl der Beiträge : 375
Anmeldedatum : 20.11.08

Ingame Charakter
Name: Meldoria
Klasse: Priester

Nach oben Nach unten

Das erste eigene Addon: Hello World Empty Re: Das erste eigene Addon: Hello World

Beitrag von Katlefiya Do Jul 23, 2009 7:47 pm

Naja, wohlgeformtes XML zu schreiben ist in der Tat kein Problem - die Validität ist das Problem, d.h. genügt das Dokument auch noch einer inhaltlichen Struktur, welche in einer Strukturbeschreibung (DTD oder Schema-Definition) vorgegeben wurde. Will man das "von Hand" überprüfen, dann artet das schnell in Sisyphos-Arbeit aus. Ist - ja nach Komplexität der benutzten Schema-Definition - eher was für Masochisten. Ich empfehle die Verwendung eines validierenden XML-Editors Wink
Katlefiya
Katlefiya
Gildenrat

Anzahl der Beiträge : 642
Alter : 54
Ort : NRW, nähe Bielefeld
Anmeldedatum : 07.04.08

Ingame Charakter
Name: Katlefiya
Klasse: Druide

Nach oben Nach unten

Das erste eigene Addon: Hello World Empty Re: Das erste eigene Addon: Hello World

Beitrag von Meldoria Do Jul 23, 2009 11:45 pm

Jo und ich schätze, ich sollte mal wissen, was diese Templates für Auswirkungen haben, die man im XML - Kopf definieren muss. Denn sonst sollte es ja eigentlich funktionieren .. .
Meldoria
Meldoria

Anzahl der Beiträge : 375
Anmeldedatum : 20.11.08

Ingame Charakter
Name: Meldoria
Klasse: Priester

Nach oben Nach unten

Das erste eigene Addon: Hello World Empty Re: Das erste eigene Addon: Hello World

Beitrag von Meldoria Fr Jul 31, 2009 10:25 pm

Noch ein paar LInks: es gibt wohl ein Buch zur Addonprogrammierung für WoW und die Herren waren so nett und haben ihre komplette Referenz online gestellt:
http://wowprogramming.com/docs

und das hier...
http://www.wowwiki.com/SecureTemplates

und das hier (secureheader - Beispiel)
http://forums.worldofwarcraft.com/thread.html?topicId=2968230859&sid=1&pageNo=1

und ja - mein XML - Problem ist sozusagen gelöst.
Meldoria
Meldoria

Anzahl der Beiträge : 375
Anmeldedatum : 20.11.08

Ingame Charakter
Name: Meldoria
Klasse: Priester

Nach oben Nach unten

Das erste eigene Addon: Hello World Empty Re: Das erste eigene Addon: Hello World

Beitrag von Meldoria Fr Sep 25, 2009 7:17 pm

*Müll ablad*
/script mth1="a" mth2="b"
/script if (mth2=="b") then mth2=mth1 SendChatMessage(mth1,"WHISPER",nil,UnitName("Roswita")); end;
Meldoria
Meldoria

Anzahl der Beiträge : 375
Anmeldedatum : 20.11.08

Ingame Charakter
Name: Meldoria
Klasse: Priester

Nach oben Nach unten

Das erste eigene Addon: Hello World Empty Re: Das erste eigene Addon: Hello World

Beitrag von Meldoria Fr Sep 25, 2009 7:31 pm

/script mth1="a" mth2="b"
/script SendChatMessage((mt1 ..".." ..mth2),"WHISPER",nil,UnitName("Roswita"))

.... ergibt die Ausgabe "mel ..b" weil in einem früheren script mt1= mel gesetzt wurde.
damit sind scriptvariablen global ^^ und nicht nur für das makroschnipsel gültig.
Meldoria
Meldoria

Anzahl der Beiträge : 375
Anmeldedatum : 20.11.08

Ingame Charakter
Name: Meldoria
Klasse: Priester

Nach oben Nach unten

Das erste eigene Addon: Hello World Empty Re: Das erste eigene Addon: Hello World

Beitrag von Meldoria Fr Sep 25, 2009 7:45 pm

*weiter zumüll*
Makro nr 1:
/script mth1="Eera" mth2="Gold" mtgh1="Mel" gh1="Desi" gh2="Suy" gh3="Zaine" gh4="Caoi" SendChatMessage(("MTH:" ..mth1 ..", " ..mth2 .." MTGHealer: " ..mtgh1 ..", GrH: " ..gh1 ..", " .. gh2 ..", " ..gh3 ..", " ..gh4),"WHISPER",nil,UnitName("Roswita"));

setzt die globalen Heilervariabeln

Makro nr 2:
/r =====(Klingenschuppe)=====
/script SendChatMessage(("Left(): " ..mth1 ..", " ..gh1 ..", " ..gh4),"WHISPER",nil,UnitName("Roswita"))
/script SendChatMessage(("Right(): " ..mth2 ..", " ..mtgh1 ..", " ..gh3),"WHISPER",nil,UnitName("Roswita"))
/r =========

ist eine beispielhafte Heilereinteilung bei KLingenschuppe

.... und das gibt eben genau:
Left(): Eera, Desi, Caoi
Right(): Gold, Mel, Zaine
Meldoria
Meldoria

Anzahl der Beiträge : 375
Anmeldedatum : 20.11.08

Ingame Charakter
Name: Meldoria
Klasse: Priester

Nach oben Nach unten

Das erste eigene Addon: Hello World Empty Re: Das erste eigene Addon: Hello World

Beitrag von Meldoria Fr Sep 25, 2009 7:58 pm

*letzter mülleintrag*

Channels schreibt man wie folgt an:
/script SendChatMessage("makrotest","channel", nil,"8");
8 ist bei mir der Heilerchannel

\n funktioniert als Zeilenumbruchzeichen irgendwie nicht - ich habs in diversen Kombinationen getestet. WoW schneidet nach dem \n im String einfach ab bzw akzeptiert \n ohne "" sowieso nicht.
Meldoria
Meldoria

Anzahl der Beiträge : 375
Anmeldedatum : 20.11.08

Ingame Charakter
Name: Meldoria
Klasse: Priester

Nach oben Nach unten

Das erste eigene Addon: Hello World Empty Re: Das erste eigene Addon: Hello World

Beitrag von Badeye Sa Sep 26, 2009 12:09 am

LUA ftw ole ole xD
Badeye
Badeye

Anzahl der Beiträge : 327
Alter : 33
Ort : VS-Schwenningen
Anmeldedatum : 12.02.08

Ingame Charakter
Name: Kealthazzad
Klasse: Todesritter

Nach oben Nach unten

Das erste eigene Addon: Hello World Empty Re: Das erste eigene Addon: Hello World

Beitrag von Meldoria Sa Sep 26, 2009 12:12 pm

*müll ablad*

helloworld.lua:
SLASH_HELLOWORLD1 = '/hiw';
function SlashCmdList.HELLOWORLD(msg, editbox)
if (msg == "uldu1") then
SendChatMessage("uldu1","channel", nil,x);
else
SendChatMessage("rest","channel", nil,"8");
end
end

und im Spiel vor Benutzen von /hiw uldu1 ein:
/script x="8" macht, gilt das x auch für das Addon.

Damit sind
- unterschiedliche Channels zum Posten möglich
- man kann mit nem Schlüsselwort die jeweilige Einteilung haben
- die Heilervariablen ingame setzen, aber das Schema der Heileinteilung in einem Addon wegpacken und nicht in den begrenzten makros liegen lassen
Meldoria
Meldoria

Anzahl der Beiträge : 375
Anmeldedatum : 20.11.08

Ingame Charakter
Name: Meldoria
Klasse: Priester

Nach oben Nach unten

Das erste eigene Addon: Hello World Empty Re: Das erste eigene Addon: Hello World

Beitrag von Katlefiya Sa Sep 26, 2009 1:50 pm

Hi Mel,

wie ich sehe befassen sich diese Macros hier mit der Heiler-Zuteilung per Macros, richtig? Aber da gibt es doch fertige Addons für Wink

http://wow.curse.com/downloads/wow-addons/details/surgeon-general.aspx

SurgeonGeneral is an addon designed to simplify healing assignments in a raid situation. It's easy to use interface allows you to give all your healers assignments and then report those assignments to /raid and/or the custom channel of your choosing. It supports multiple phases for complex fights.

Grüße,
Katle
Katlefiya
Katlefiya
Gildenrat

Anzahl der Beiträge : 642
Alter : 54
Ort : NRW, nähe Bielefeld
Anmeldedatum : 07.04.08

Ingame Charakter
Name: Katlefiya
Klasse: Druide

Nach oben Nach unten

Das erste eigene Addon: Hello World Empty Re: Das erste eigene Addon: Hello World

Beitrag von Meldoria Sa Sep 26, 2009 4:51 pm

Oooh das ruiniert aber grad meine Arbeitsmoral.
Ich habe aber auch nicht danach gesucht ^^.
Wobei ich nicht glaube, dass es das ist, was wir haben wollen Smile. ... das sieht nach ner Menge Herumgetippe aus.

Wir wollen eigentlich etwas, indem man am Anfang die Heilernamen passend setzt und sich damit die Einteilungsmakros automatisch ausfüllen.
Die Einteilung soll sich passend verändern, je nach den vorhandenen Klassen&Heilskillungen und Anzahl der Heiler.
Goodie: Ort/Bosserkennung postet das zugehörige Makro (=>zusatzparameter nicht mehr erforderlich)
Goodie: Automatische Heilererkennung im Raid

.. die Idee ist eigentlich von Caoi, nur hatte ich mal wieder Lust zum Wiki grübeln^^.
Meldoria
Meldoria

Anzahl der Beiträge : 375
Anmeldedatum : 20.11.08

Ingame Charakter
Name: Meldoria
Klasse: Priester

Nach oben Nach unten

Das erste eigene Addon: Hello World Empty Re: Das erste eigene Addon: Hello World

Beitrag von Katlefiya So Sep 27, 2009 10:02 am

Meldoria schrieb:Oooh das ruiniert aber grad meine Arbeitsmoral.

Hehe... eines meiner verborgenen Talente^^
Katlefiya
Katlefiya
Gildenrat

Anzahl der Beiträge : 642
Alter : 54
Ort : NRW, nähe Bielefeld
Anmeldedatum : 07.04.08

Ingame Charakter
Name: Katlefiya
Klasse: Druide

Nach oben Nach unten

Das erste eigene Addon: Hello World Empty Re: Das erste eigene Addon: Hello World

Beitrag von Gesponserte Inhalte


Gesponserte Inhalte


Nach oben Nach unten

Seite 1 von 2 1, 2  Weiter

Nach oben

- Ähnliche Themen

 
Befugnisse in diesem Forum
Sie können in diesem Forum nicht antworten