WoWInterface

WoWInterface (https://www.wowinterface.com/forums/index.php)
-   Lua/XML Help (https://www.wowinterface.com/forums/forumdisplay.php?f=16)
-   -   Need help to integrate Addon-Options (https://www.wowinterface.com/forums/showthread.php?t=51508)

flow0284 03-05-15 05:37 PM

"Sichergehn" klingt doch schonmal gut :)

Aaaber XML...Skripten...:eek:

humfras 03-06-15 02:51 AM

Für die Lokalisierung bietet sich ein Grundgerüst mit ItemIDs/SpellIDs an, dass du dann lokalisiert in der SVar abspeicherst.

Für deine Optionen machst du es dir am einfachsten, wenn du das ganze über Ace3 (AceConfig etc.) aufbaust.
Dann sparst du dir die Gestaltung und kannst dich auf die Daten konzentrieren.

Duugu 03-06-15 05:44 AM

Quote:

Originally Posted by flow0284 (Post 307312)
"Sichergehn" klingt doch schonmal gut :)

Aaaber XML...Skripten...:eek:

Ich meinte, wowhead stellt alle Datenbankinfos auch als XML bereit. Beispiel:
http://en.wowhead.com/item=109125&xml
http://de.wowhead.com/item=109125&xml
http://fr.wowhead.com/item=109125&xml
http://ru.wowhead.com/item=109125&xml
usw

Du musst Dir also nur ein kleines Skript mit irgendeiner Lösung Deiner Wahl bauen, dass alle Item-IDs und Domains durchgeht und Dir den Namen aus dem XML holt. Das kannst Du in fast jeder Sprache/Umgebung machen die Dir genehm ist. Einfach mal nach "get XML script" oder so suchen. Da gibt's 1000 Möglichkeiten. Zum Beispiel per javascript:
Code:

<html>
<body>
<span id="demo">test</span>
<script>
var xmlhttp=false;
if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
  }
 else
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
 xmlhttp.open("GET", "http://de.wowhead.com/item=109125&xml",true);
 xmlhttp.onreadystatechange=function() {
  if (xmlhttp.readyState==4) {
  document.getElementById("demo").innerHTML = xmlhttp.responseXML.documentElement.getElementsByTagName("name").item(0).firstChild.nodeValue ;
  }
 }
 xmlhttp.send(null);
</script>
</body>
</html>

Mehr dazu hier: http://www.w3schools.com/ajax/ajax_xmlfile.asp
Wenn Du auch nur halbwegs mit Javascript klarkommst solltest Du damit mit den ItemIDs eine Liste aller Namen bauen können. Du musst nur die ItemIDs und Domains in zwei arrays packen und durchgehen.

Dorwido 03-06-15 06:00 AM

Quote:

Originally Posted by Duugu (Post 307311)
Müsste btw eigentlich auch über Web-API von WoW gehen.

total vergessen das es ja die api gibt, darüber geht das auch.

Quote:

Originally Posted by humfras (Post 307317)
Für deine Optionen machst du es dir am einfachsten, wenn du das ganze über Ace3 (AceConfig etc.) aufbaust.
Dann sparst du dir die Gestaltung und kannst dich auf die Daten konzentrieren.

frage mich wie das heut zu tage ist wollte vor zig jahren mal ace3 nutzen und die doku war einfach bescheiden, stand quasi überall nur man soll in andere addons schauen wie das genutzt wird, da war es defintiv schneller was eigenes zu schreiben als mit ace3 klar zu kommen.

Duugu 03-06-15 06:44 AM

Hab Dir das Javascript-Beispiel unten mal etwas erweitert:

Code:

<html>
<body>
<span id="demo">test</span>
<script>
var xmlhttp=false;
if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
  }
 else
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
 
 
  var domains = ["fr", "de", "pt"];
  var items = [109125, 109126, 109127];
  var domCount = 0;
  var itemCount = 0;

 xmlhttp.open("GET", "http://" + domains[domCount] +".wowhead.com/item=" + items[itemCount] + "&xml",true);
xmlhttp.onreadystatechange=function() {
        if (xmlhttp.readyState==4) {
                document.getElementById("demo").innerHTML =  document.getElementById("demo").innerHTML + "<br/>"  + items[itemCount] + " " + domains[domCount] + " " + xmlhttp.responseXML.documentElement.getElementsByTagName("name").item(0).firstChild.nodeValue  ;
                itemCount = itemCount + 1;
                if(itemCount >= items.length){
                        domCount++;
                        itemCount = 0;
                }
                if(domCount < domains.length)
                        {
                        xmlhttp.open("GET", "http://" + domains[domCount] +".wowhead.com/item=" + items[itemCount] + "&xml",true);
                        xmlhttp.send(null);
                        }
}
}
 xmlhttp.send(null);
 
</script>
</body>
</html>

[e]
Mit RU kommt mein Beispiel irgendwie nicht klar. Schätzungsweise ein Unicode-Problem. Musst Du rausfrickeln. ;)

Duugu 03-06-15 06:47 AM

Quote:

Originally Posted by Dorwido (Post 307321)
frage mich wie das heut zu tage ist wollte vor zig jahren mal ace3 nutzen und die doku war einfach bescheiden, stand quasi überall nur man soll in andere addons schauen wie das genutzt wird, da war es defintiv schneller was eigenes zu schreiben als mit ace3 klar zu kommen.

Sie ist immer noch bescheiden. ;)

So geht's mir auch immer. Eigentlich kurz gedacht, weil man beim nächsten Projekt ja Zeit spart wenn man sich einmal in Ace einarbeitet. Aber ich bin nun mal ein Faultier und denke JEDES mal "ach, das dauert länger als selbst eben was zu schreiben". :D

flow0284 03-06-15 09:33 AM

Quote:

Originally Posted by Duugu (Post 307323)
Hab Dir das Javascript-Beispiel unten mal etwas erweitert:
.
.
.
[e]
Mit RU kommt mein Beispiel irgendwie nicht klar. Schätzungsweise ein Unicode-Problem. Musst Du rausfrickeln. ;)

Danke dafür :)

Ich habe mir auch schon die Daten zusammengebaut.

Bsp:
Lua Code:
  1. L["109124"] = "Frostwurz"
  2. L["109125"] = "Feuerwurz"
  3. L["109126"] = "Gorgrondfliegenfalle"
  4. L["109127"] = "Sternenblume"
  5. L["109128"] = "Nagrandpfeilkelch"
  6. L["109129"] = "Taladororchidee"

Ich würde gerne die jeweilige itemID zum übersetzen nehmen. Und jetzt kommts (mal wieder), momentan stehe ich vor dem Problem das es noch nicht hinbekomme. Zu letzte habe ich es so versucht:
Lua Code:
  1. --alle kräuter der jeweiligen untertabelle durchgehen und jeweils eine checkbox erstellen
  2. for itemID, optionValue in pairs(MillButton_Herblist[expansion]) do
  3.     --name des krauts für das label der checkbox holen
  4.     itemName = L[itemID]
  5.     --checkbox erstellen (siehe helper function unten) und für späteren zugriff referenz auf checkbox-objekt mit itemid vom kraut als index in herbCheckboxes speichern
  6.     self.herbCheckboxes[itemID] = Addon:CreateOptionsCheckButton(self, itemName)
  7.     self.herbCheckboxes[itemID].itemID = itemID
  8.     --passend anordnen
  9.     self.herbCheckboxes[itemID]:SetPoint("TOPLEFT", self, "TOPLEFT", tAnchorPointX, tAnchorPointY)

Ich "google" dann man noch etwas weiter. Vllt. habe ich ja auch nur einen Denkfehler.

Dorwido 03-06-15 09:36 AM

da fehlt was
Addon:CreateOptionsCheckButton tut

Duugu 03-06-15 09:42 AM

Quote:

Originally Posted by flow0284 (Post 307330)
Ich "google" dann man noch etwas weiter. Vllt. habe ich ja auch nur einen Denkfehler.

Man müsste den gesamten Code inkl. aller Tabellen kennen um das beurteilen zu können. ;)

So geraten würde ich sagen Du musst die Anführungszeichen um die ItemIDs wegnehmen:

L[109124] = "Frostwurz"

flow0284 03-06-15 09:50 AM

1 Attachment(s)
Ich hänge ma das komplette Projekt hier an.

Die Idee mit dem weglassen der Anführungszeichen habe ich eben auch schon gehabt. Leider hat das nichts gebracht.

Dorwido 03-06-15 10:40 AM

Quote:

Originally Posted by flow0284 (Post 307333)
Ich hänge ma das komplette Projekt hier an.

Die Idee mit dem weglassen der Anführungszeichen habe ich eben auch schon gehabt. Leider hat das nichts gebracht.

Also in der angehängten version fehlt das definieren von L in der options.lua ansonsten so geht es:

local itemName = L[tostring(itemID)]

du definierst die übersetzung halt als string und fragt mit ne integer ab.

humfras 03-06-15 05:40 PM

Quote:

Originally Posted by Duugu (Post 307324)
Sie ist immer noch bescheiden. ;)

So geht's mir auch immer. Eigentlich kurz gedacht, weil man beim nächsten Projekt ja Zeit spart wenn man sich einmal in Ace einarbeitet. Aber ich bin nun mal ein Faultier und denke JEDES mal "ach, das dauert länger als selbst eben was zu schreiben". :D

Woot?

Ich komm gleich mit dem Lineal und brat dir eins über! :mad: :cool:

Duugu 03-06-15 06:58 PM

Quote:

Originally Posted by humfras (Post 307345)
Woot?

Ich komm gleich mit dem Lineal und brat dir eins über! :mad: :cool:

Nicht das Lineal! NICHT DAS LINEAL!!! Lieber den Gürtel.

:D

flow0284 03-06-15 07:08 PM

:eek:

Ich danke Euch für Eure bisherige Hilfe. Ein paar Sachen sind mir zwar noch unklar, aber da muss und werde ich noch ein wenig lesen.

Eine letzte Sache habe ich noch, kann es sein das unter (un)gewissen Umständen nicht richtig gelootet werden kann? Manchmal, wenn ich den Button für das Addon mehr oder weniger spamme dann kann es vorkommen, dass das Lootfenster sich nicht öffnet aber die Kräuter gemahlen wurden. Bis jetzt ist mir das nur mit dem automatischen Plündern passiert.

Duugu 03-07-15 07:45 AM

Da bin ich überfragt. Um ehrliche zu sein ich weiß nicht mal genau was Dein Addon eigentlich macht. ;)

flow0284 03-08-15 07:24 AM

Quote:

Originally Posted by Duugu (Post 307362)
Da bin ich überfragt. Um ehrliche zu sein ich weiß nicht mal genau was Dein Addon eigentlich macht. ;)

:D

Das Addon soll beim mahlen von Kräutern helfen. Man kann, dank Eurer Hilfe, auswählen welche Kräuter man mahlen lassen will ohne jedes mal ein ggf. vorhandenes "mahlen Makro" ändern zu müssen. Mehr macht das Addon nicht.

Dorwido 03-10-15 05:15 AM

Hab es mal benutzt und konnte das problem mit dem spam clicken nicht nachvollziehen und war erstmal am überlegen wie man es benutzt, hätte eigentlich erwartet man gibt ne command ein kriegt dann ne bar mit allen herbs die man in der tasche hat und kann dann klicken welche man mahlen will.


All times are GMT -6. The time now is 06:52 PM.

vBulletin © 2024, Jelsoft Enterprises Ltd
© 2004 - 2022 MMOUI