Gibt es eine Möglichkeit in lua über die WoW API einen bekannten Questnamen als Parameter zu übermittleln und die entsprechende(n) Quest IDs zurück zu bekommen?
Bisher habe ich leider nur Funktionen gefunden, die die QuestID als Parameter verwenden und wenn diese nun nicht bekannt ist, erhält man kein Ergebnis.
Update:
Mittlerweile habe ich mir einige Addons angesehen, die sich mit Quests beschäftigen. Die meisten davon haben eine eigene Questdatenbank angelegt.
Es muss doch eigentlich eine Lösung über die Blizzard API geben, denn ständig Wowhead-Daten crawlen zu müssen, finde ich etwas umständlich.
Das stinkt klingt mir sehr nach einem XY-Problem. (xyproblem.info)
Was soll der Lua-Code eigentlich bewerkstelligen?
Nicht nur umständlich, sondern auch nicht erlaubt, sofern du das automatisiert machst.
Questnamen und -texte sind auf den WoW-Servern gespeichert und werden nur bei Bedarf übermittelt. Für so eine Inverssuche müsstest du also sehr viele Anfragen an den Server schicken, was dieser mit einem Disconnect beantworten wird.
Ich vermute aber eher, dass du nicht vorhast eine Questsuchmaschine in WoW zu bauen sondern etwas anderes.
Nein, das ist so nicht korrekt. Die Namen und Texte der Quests sind komplett im Client enthalten, diese werden nicht jedes mal neu vom Server abgefragt - ansonsten könnten die ganzen Datenbankseiten wie Wowhead und Co. diese Daten bspw. überhaupt nicht haben, bevor die Server nach einem Update oder die PTR-Server überhaupt online sind.
Ok, das ist möglich. Trotzdem sollte man so einen „crawl“ nicht in Lua bauen, jedenfalls nicht ohne einen eigenen Index.
Daher die Frage, was der TE am Ende erreichen möchte, denn das geht vermutlich auch ohne Index.
Sowohl als auch.
Es gibt eine Quest-DB und den QuestCache für Daten vom Server.
siehe _retail_\Cache\WDB\deDE\questcache.wdb
Indirekt ist das zwar möglich, entweder erstellst du dir eine Tabelle von WoWHead oder fragst peu a peu den Server ab.
Wirklich sinnvoll ist das ganze aber nicht, da mehrere Quests identische Namen haben können und ein Globally Unique Identifier (GUID) wie eine QuestID weitaus sinnvoller ist.
Außerdem funktioniert diese auch sprachübergreifend.
Du solltest dir vielmehr die Frage stellen, ob das von dir gewünschte Verhalten überhaupt sinnvoll ist.
Da du keinerlei Angaben zu deinem Plan/Ziel machst, lässt sich dir auch schlecht helfen,
siehe
Ich hatte bewusst auf einen Hinweis zur Game Data API verzichtet, weil das ziemlich speziell und meines Erachtens für den TE und sein Anliegen viel zu aufwendig ist.
Eine Liste der Questnamen lässt sich auch über die Ingame-API erstellen, ob das zielführend ist sei zumindest mal in Frage gestellt
z.B. via QuestUtils_GetQuestName(questId)
Wo schon „wowhead crawlen“ erwähnt wurde, dachte ich, es ist trotzdem wert zu erwähnen, dass man auch Blizzard crawlen kann.
Wenn es ein Addon werden soll, dürfte es aber in der Tat simpler sein, auf Daten zurückzugreifen, die vom Spielclient bereitgestellt werden.
Wobei sich mir dann allerdings die Frage stellt, wann man den Namen einer Quest hat, nicht aber die ID. Überall, wo der Name einer Quest angezeigt wird, sollte zumindest das Spiel auch die ID vorrätig haben. Man müsste nur einen Weg finden, diese anzuzeigen.
Danke für die vielen Antworten. Ich denke ich muss eine Tabelle verwenden, die die QuestID für den Titel bereit hält und mit der ID dann Abfragen machen.