Posts by chazz

    Aus Sicherheitsgründen muss man den Button mit Shift+Linksklick anklicken.

    Die Sortierung kann theoretisch nach ID, Name und Anzahl, jeweils auf- oder absteigend erfolgen, ist aus Faulheitsgründen aber als ID und aufsteigend festgelegt (kann in Zeile 18 angepasst werden).


    Bei Fehlern bitte mit einer genauen Beschreibung melden ;(

    Von einem Wechsel in die zweite Gruppe für verdrehte Ladung wurde im Eingangspost nicht gesprochen. Ich denke für alle die hier mitlesen, wäre es interessant zu sehen wie das sinnvoll zu gestalten ist.

    Ich habe es direkt in die Rota eingebaut, aber natürlich kann man es je nach eigener Vorliebe genau so gut von Hand oder per Extramakro machen.


    Quote

    Dunkle Aura ist Müll. Was willst du mit 1 Psi? Den 75er gab es erst auf normal in hdü? Also haben einige den liegen.

    Spuren der Leere nice to have, aber kein must have. Zum anfangen egal, da mir es hauptsächlich um unerfahrene Spieler ging.

    Das will ich nicht bestreiten, dass die Dunkle Aura schlechter als die Geistkraft der Ameisenkönigin ist; aber genau deshalb schrieb ich ja auch, dass man den nur dann übergangsweise nehmen sollte, wenn man die Geistkraft nicht hat und ihn farmen gehen sollte.

    Spuren der Leere finde ich bei manchen Events, z. B. MA B2 und B5, sehr nützlich, oder wenn man nach einem Krit wieder neu in die Ini laufen muss.


    Dass der Hexer/Magier Schaden machen muss, halte ich für einen sehr seltenen Fall, und würde es daher maximal als Randnotiz in einen Guide für unerfahrene Spieler aufnehmen.


    Auch in der Tankgruppe sind hin und wieder DDs, aber auch für die Heiler ist es sinnvoll, da man so im Zweifel etwas schneller reagieren kann.

    (Mit 2x Fluch X, Pet und Klarem Gedanken geht die Schnellheilung von 0.64s auf 0.58s, was ca. 9% sind).

    Da man auf jeden Fall die Zeit dafür hat und es einen positiven Effekt hat, sehe ich nicht ein, den Buff nicht auch in der zweiten Gruppe zu verteilen.

    In der Rota, speziell ganz am Anfang des Kampfes, würde ich die Verdrehte Ladung vor den Knackzauber setzen, da eh beides noch während des Laufens zum Boss gemacht wird und man somit etwas früher in die zweite Gruppe für die Verdrehte Ladung wechseln kann.


    Den arkanen Trank kann man natürlich benutzen, aber ehrlicherweise empfinde ich ihn als nicht besonders wichtig, da zum einen die Castgeschwindigkeit am Anfang eh sehr hoch ist (Pet, Klarer Gedanke, BK-Titel, Gedankenüberlastung, Fluchrune etc) und im Grunde nur 2 Casts davon profitieren (2x Seelenpein, wenn der Debuff hochgestackt wird).


    Aus dem gleichen Grund halte ich einen 2h-Stab auch für absolut ausreichend.


    Da zu den Setskills noch fast nichts geschrieben wurde, liste ich hier mal meine Favoriten auf, wobei aber kar gesagt werden muss, dass die meisten davon nur selten gebraucht werden.

    • Geistkraft der Ameisenkönigin (wenn nicht vorhanden dann Dunkle Aura für Mementos holen und den Setskill farmen gehen)
    • Raumspaltung
    • Schutz vor den Totengeistern (10% Schild und anschließend 4s Fear)
    • Schutzschirm der Anderswelt
    • Spuren der Leere


    Wer die Klasse mit MDD-Equip spielt und ein bisschen mehr Schaden machen möchte, kann auch den Lauf der Seelenqual und Chaoslenker nutzen. Ich halte es nicht für sinnvoll, aber wer es möchte, hat hier die freie Wahl.


    Fürs Kuriositätenkabinett zuletzt auch noch, dass man gerade im MA mit der Klasse die Option hat die Heiler zu entlasten, indem man alle Bosse nur mit ausgerüsteter Waffe spielt, da sämtlicher Schaden prozentual ist :rolleyes:

    hm this seems like a weird lua bug (100/11*11 = 100 but math.ceil(100/11*11) = 101)


    to fix it: AAH_Browse.lua Line 1055 and Line 1058 -> replace "math.ceil" with "math.floor"


    new

    The infinite joy of floating point arithmetic <X



    For rounding purposes, math.floor(value + 0.5) is also a good alternative, although the difference is negligible here.

    Hmm, can you maybe create a function that returns true if in zone, false if not?

    This is pretty much exactly what the functions suggested above are doing :)
    You call them with a list of "allowed" zone IDs and they return true if you are currently standing in one of those zones.

    They are written in a flexible manner, so maybe it's not immediately obvious what they are doing and how it works.


    Of course, if you don't need this sort of flexibility, you can write your function in a way where it doesn't need any inputs.



    Messing around with such functions is a great way to learn about them.

    Also, don't hesitate to ask if something is unclear :)

    What exactly is this "zones" data that you're calling the function with?


    This is very similar to the code Ainz wrote, but note that the keys in the table (those things between [ ]) have to be numbers and not strings.

    Heavy Bash causes not a buff but a debuff on the target, so try UnitDebuff(...) instead of UnitBuff(...)


    For testing purposes, you can always add the following line into interesting places and print out some pieces of information that you might find interesting.

    Code
    1. ChatFrame1:AddMessage("some info")

    For example in the "ID == id" section you could add

    Code
    1. ChatFrame1:AddMessage(("Found '%s' with %d stacks on position %d"):format(TEXT("Sys" .. id .. "_name"), count, i))

    If you never see this message appear in your chat, this part of the code is never reached, so either your target doesn't have this debuff or something else is going wrong.

    Happy testing :)

    The easiest fix is to add a "return 0" right before the final "end".

    That means even if the loop reaches 50 without finding the desired buff, the functions returns this value, which can then be used for further comparisons. :)

    To print text multiple times:


    Code
    1. -- Prepend '/run' or '/script' to use it in a macro and remove line breaks.
    2. -- '/run' has the advantage of saving 3 characters.
    3. for _ = 1, 900 do
    4. ChatFrame1:AddMessage("Hello")
    5. end

    If you want to write it in a chat that other players can see, use e. g. SendChatMessage("Hello", "say"). Note that the game blocks your messages if you send a lot of them in a short period of time, so don't expect to see more than 5 "Hello"s appear. This does not apply to your own UI, so writing to ChatFrame1 (or literally any text widget) will work as expected.


    Anything that the game considers an action, e. g. casting a spell, using an item etc., can not be done more than once in a loop.

    To use multiple actions within a single macro, you have to use a construction like this:


    Code
    1. /cast Flame
    2. /wait 5
    3. /cast Flame
    4. /wait 5
    5. ...


    The waiting duration can of course be optimized for each action. Using "/cast xyz" is a shortcut for "/run CastSpellByName("xyz")" and saves precious characters. since macros have a size limit.

    There are further optimizations to put more repetitions into a single macro (define a function or a slash command and call those in the macro, saving more space), but the limitation of needing to wait between executions remains.


    And for the sake of completeness, here's more information regarding the for statement in Lua: >Link<

    In der XML-Datei muss so ein (Minimap-)Button analog zu diesem Code definiert werden, wobei die Texturen noch entsprechend hinterlegt werden müssen:



    Wenn du schon eine XML hast, dann nur den Teil mit <Button...> übernehmen :)


    Einen "Standardbutton" erhält man, wenn man bei 'inherits="MinimapButtonTemplate"' stattdessen "UIPanelButtonTemplate" verwendet. Dann kann man sich auch die Texturen sparen - sieht aber dann auch nicht so gut aus.


    Wenn der Code so in einer Datei steht, dann muss diese Datei auch einmal geladen werden (entweder über eine .toc-Datei oder anderweitig).

    Wenn das gemacht wird, dann kannst du im Spiel ein Makro mit dem Inhalt anlegen:


    Code
    1. /run Petrufen()


    Das sollte dann das machen, was du möchtest.


    Falls etwas anderes nicht klappt:

    • Gibt es Fehlermeldungen?
    • Wo ist der Code hinterlegt?
    • Wie rufst du ihn auf? (Da du schreibst, dass "[es] soweit geht", musst du ihn ja schonmal getestet haben)

    Wenn Ainz' Interpretation richtig ist, dann würde ich sowas hier wesentlich übersichtlicher finden:

    Je nach genauem Petwunsch kann man auch nur die Hauptklasse abfragen; darüber zu spekulieren lohnt sich ohne weitere Infos aber kaum.

    Eine mögliche Lösung wäre dann die Kombination aus beidem. Falls möglich, wird die Qualität über die Item-ID abgefragt, und wenn da 0 herauskommt, wird zusätzlich die Farbe geprüft.


    Natürlich muss die Farbtabelle nur einmal erstellt werden, aber um die Idee zu zeigen, habe ich es kurz in eine einzige Funktion gepackt.

    Variante 2 habe ich doch noch ausprobiert und LI.QualityCount = 10 gesetzt.

    Jetzt werden mir die Münzen wieder ordentlich angezeigt :)

    Ich habe wenig Lust, es selbst zu testen, aber welche Gründe sprechen dagegen, dass man aus dem Link die ID extrahiert und dann

    Code
    1. local _, id = ParseHyperlink(link)
    2. id = tonumber(id:match("(%S+)"), 16)
    3. local quality = GetItemQuality(id)
    4. -- do something with the value
    5. return quality

    zurückgibt?


    Für die ID der Münze, 200486, gibt diese Funktion z. B. 9 zurück.

    Wäre damit auch unabhängig von der Sprache.


    Ich vermute, dass es gute Gründe für den Farbabgleich gibt, den LootIt verwendet, aber einen Versuch könnte es Wert sein.



    Alternativ, wenn man den Code möglichst wenig ändern möchte, könnte das hier auch klappen:


    Code: LootIt/lua/Kernel.lua
    1. LI.QualityCount = 9
    2. -- Alles Folgende mit Bezug zu LI.GetQualityCount() entfernen.

    Mal wieder ein Update, diesmal auf v1.2.8.

    Diesmal gibt es neben einer abermals neuen Spieler-vs-KI-Datenbank viele kleine Änderungen, die zu einem runderen Gesamteindrück beitragen.


    Wenn Fehler auftreten oder etwas nicht funktioniert, bitte melden :)