Files
Viano-Core/doc/clientless/SESSION-RESUME.md
T
Nico 440c53acd7
clang PCH / build (push) Canceled after 0s
GCC PCH / build (push) Canceled after 0s
Validate profession scenes and fix native workstation and area targeting
2026-10-27 18:01:03 +01:00

19 KiB
Raw Blame History

Fortsetzung am 27.10.2026 – aktueller Stand hat Vorrang

Der unten erhaltene Sitzungswechsel-Checkpoint ist historisch. Der Berufs-Ausbau ist jetzt vollständig gebaut (-j10), auf dem Testserver installiert und die Migration _05 ist auf der Test-World-DB angewendet. 37 Testskripte bestanden. Keine Änderungen wurden gepusht. Branch bleibt feature/clientless-player-core.

Seit dem Checkpoint behoben:

  • Berufsarbeit an GOs nähert sich nach Verdrängung erneut, bevor weitere Gesten laufen.
  • Native unsichtbare Arbeitsplatzmarker verwenden VMAP-Sichtprüfung zur Arbeitsfläche (mindestens 1,5 Yards über dem Marker); Bodenmarker im Amboss blockierten zuvor die Szene.
  • Location-Abfrage liest numerische native Spalten ohne COALESCE-Widening. Debug verlor zuvor is_area/faction; Elwynn wird live jetzt korrekt als area=1 geladen.

Zusätzliche Tests: echter Lua-5.4-Professionsparser mit Arthoran/generic und ungültigen Profilen; native Lock-/Station-/Kadaver-/Trainerklassifikation; Szene erst nach Ankunft, Profilentzug, Wiederannäherung; SQL-Fixtures mit erhaltenen Gewichten/Freigaben; erreichbare Gebietsknoten; progressive Suche und Uferbedingungen; echte Debug-Fieldgetter und VMAP-Sichtlinienadapter. Siehe tests/clientless/test_adventure_profession_*.py, test_adventure_area_node.py und erweiterte bestehende Harnesses.

Live bestätigt:

  • Frische Ready-Meldung, laufender Prozess und Port 8085 nach Installation.
  • Arthoran lädt zwei Hauptberufe; Profil ist bytegleich wiederhergestellt: social / goldshire_tavern, mining + blacksmithing. Kein temporäres Profil liegenlassen.
  • Reguläre Anreise zu poi_guard_541 über Graph, Taxi und Bodenwege.
  • smithing_show wählt echtes Anvil-GO 201415, Low 556; Work-Emote 233; PROFESSION_WORK_COMPLETE und PROFESSION_VISIT_COMPLETE nach Abschluss.
  • profession_herbalism live als nicht verfügbar zurückgewiesen. Die isolierte Profilprüfung auch bei vorhandener Pflanze ist durch den produktiven Zieltest belegt.
  • Nach saveall unveränderte Geld-/Inventar-Prüfsumme: 8d40931782d05219466ba9fd077ce7acd3e02bd53eb63f6e96115042c620d26a.
  • Elwynn-Auftrag profession poi_tele_338 lädt area=1, startet travel_to_node, erreicht mit bestehendem Free-flight-Fallback den Gebietsknoten und meldet INTENT_ARRIVED. Lokale profession_search absolvierte danach alle sechs progressiven MMAP-Wegpunkte (ca. 104 Yards, LEISURE_COMPLETE, legs=6).
  • Letzter geprüfter Testserverprozess: PID 28577, frische Ready-Meldung und Port 8085. Beim Wiederaufnehmen immer den tatsächlichen Zustand neu prüfen.

Offener Befund: Der erste Intentwechsel während aktiver Goldshire-Anreise geriet in Graph-Handover-/Recovery-Schleifen zum nächstgelegenen portal_at_109_target. Für die gezielten Tests wurde deshalb nur beim Login die Startvorgabe temporär geändert und danach bytegleich restauriert. Dieses Travel-Handover ist NICHT als behoben zu betrachten. Navigationslog enthält die Vorgänge ab 17:43.

Dokumentation: profession-intent.md. Visuelle Abnahme bleibt beim Nutzer; Freizeit-Ausritt/Rundflug und Schlafdarstellung bleiben zurückgestellt. Alle ursprünglichen Regeln und fachlichen Festlegungen unten gelten weiterhin.


Gesicherter Arbeitsstand – hier fortsetzen

Stand: 27.10.2026. Der Nutzer hat die Implementierung ausdrücklich für einen Codex-Sitzungswechsel unterbrechen lassen. Diese Notiz ist die maßgebliche Übergabe. Nicht bei null beginnen und keine vorhandenen Änderungen verwerfen.

Sofort beim Wiederaufnehmen

  1. AGENTS.md und diese Datei lesen; Branch und Working Tree prüfen.
  2. Ausschließlich feature/clientless-player-core, niemals master, kein Push.
  3. Der unten beschriebene Berufs-Ausbau ist unfertig und NICHT installiert.
  4. Der laufende Build wurde zur Sicherung geordnet mit SIGINT unterbrochen. Vor erneutem Bauen trotzdem nach verbleibendem CMake/Ninja-Prozess sehen. Keine zwei Builds gleichzeitig. Immer -j10, niemals -j4.
  5. Neueste Compiler-/Teststände prüfen und die untenstehenden offenen Arbeiten fortsetzen. Kein Installieren eines nur teilweise gebauten Standes.

Aktueller Auftrag und verbindliche Nutzerentscheidungen

Wir arbeiten am Intent Beruf (profession), nach Geselligkeit, Ruhe, Freizeit, Wirtschaften und dem Abenteuer-Erkundungsausbau. Danach folgen Instanzbesuche. Kampf kommt GANZ AM ENDE, gemeinsam mit reaktiver Selbstwehr (z. B. bei Angriff während einer Reise).

  • Alle Berufsaktionen bleiben dauerhaft rein performativ. Es wird NICHT tatsächlich abgebaut, gesammelt, gekürschnert, produziert, gefangen oder geheilt. Keine Beute, Quellenerschöpfung, Inventar-/Materialänderung, Fertigkeitserhöhung oder tatsächliches Erlernen. Nicht „zunächst“ schreiben.
  • Hauptberufe dürfen NUR ausgeführt werden, wenn sie im Lua-Charakterprofil ausdrücklich eingetragen sind. Nebenberufe brauchen diese Freigabe nicht; Vorlieben werden später weiter über gewichteten Zufall ausgestaltet.
  • Der Nutzer hat die Rückfrage ausdrücklich beantwortet: Arthoran hat Bergbau und Schmiedekunst. In seinem Profil stehen deshalb dauerhaft professions = { primary = { "mining", "blacksmithing" } }. KEIN Kräutersammeln bei ihm erlauben, auch nicht vor vorhandenen Pflanzen. Das generische Profil enthält eine leere Hauptberufsliste.
  • Ort und Gebiet sind gleichberechtigte Ziele. Ein Bot soll z. B. das Gebiet Elwynn anreisen und dort lokal selbst nach passenden Ressourcen suchen.
  • Hierarchie: Tagesplan wählt Intent, dann passender importierter Ort, dann lokal mögliche Mikroaktion. Der Ortsbestand darf die Intentauswahl nicht vetoieren. Die Location-/Intent-Katalogzuordnung legt die Eignung fest.
  • Eine für profession geeignete Location (auch ein ganzes Gebiet) schaltet NICHT alle Berufsaktionen frei. Schmieden braucht einen echten nahen Amboss, Schmelzen eine Esse, Kräutersammeln eine tatsächliche Pflanze UND Profilrecht.
  • Gebietsanreise ist bereits vorhanden: AdventureBehaviorMgr::AreaNode sucht einen ERREICHBAREN Graphknoten im Zielgebiet, Begin reist über travel_to_node; die Ankunft wird gegen das Gebiet geprüft.
  • Abenteuer soll regulär draußen in passenden Weltgebieten stattfinden. Sturmwind ist nur Testgebiet; keine zusätzlichen Stadt-Sonderregeln bauen, sondern passende gespeicherte Locations/Intent-Gewichte verwenden.
  • Ausritte, Freizeit-Rundflüge und Schlafdarstellung sind auf Nutzerwunsch weiterhin für spätere visuelle Tests zurückgestellt. Jetzt nicht testen.

Umgebung und Betriebszustand beim Sichern

  • Source: /home/wow_admin/wow_cata_server/source/TrinityCore.
  • Build: /home/wow_admin/wow_cata_server/build/debug, Ninja, Debug.
  • Install: /home/wow_admin/wow_cata_server/server/debug.
  • Testserver: tmux vcore-worldserver, cwd server/debug/bin, ./worldserver.
  • Vor dem Sichern lief PID 19058, letzter installierter Abenteuer-Ausbau. Diesen nicht blind wiederverwenden: Prozesszustand beim Fortsetzen prüfen.
  • Arthoran: Charakter GUID 26, Account 6, aktuell Abenteuer am importierten Sturmwind-Ort poi_tele_954. Allitester GUID 21 kann als Zuschauer online sein.
  • Der BERUFS-Ausbau wurde noch nicht installiert; SQL-Migration _05 wurde noch NICHT eingespielt. Der laufende Server ist daher der vorherige Stand.
  • Arthorans normale Startvorgabe im gespeicherten Lua-Profil ist wieder social / goldshire_tavern. Es gibt aktuell KEIN temporäres Login-Profil.
  • Der letzte Build wurde mit j10 unterbrochen, bei 749/751 Schritten (libgame.a gelinkt; letzte Linkschritte noch offen). Die nächste inkrementelle Ausführung kann normal weiterbauen; Objektdateien erhalten.
  • Erster Build hatte nur den Fehler Creature::GetDeathState statt getDeathState. Das wurde bereits korrigiert. Der daraufhin neu gestartete Build hatte bis zur Unterbrechung keine weiteren gemeldeten Compilerfehler.
  • CMake wurde mit den bestehenden Einstellungen neu ausgeführt, um die neue AdventureProfessionTargets.cpp einzusammeln (CollectSourceFiles ohne CONFIGURE_DEPENDS). Das löste einen größeren Build aus. Nicht grundlos erneut konfigurieren, nur mit j10 weiterbauen.

Bereits geschriebene, noch unfertige Berufs-Implementierung

Profil und Regeln

  • AdventureProfessionPolicy.h: reine Regeln/Task-Spezifikationen, elf Hauptberufe, kanonische englische Bezeichner, Nebenberufe ohne Primärfreigabe. Hauptberufsrecht stammt aus dem Profil, NICHT aus Player::HasSkill.
  • ClientlessAdventureProfile::PrimaryProfessions und Lua-Parser für professions.primary als Array. Unbekannte Namen warnen und gewähren nichts.
  • arthoran.lua: mining + blacksmithing. generic.lua: leeres Array.
  • Trainer.h: nur neuer generischer, read-only Zugriff GetSpells() const. Kein Lernen/Trainer-Handler wird aufgerufen.

Echte Ressourcen und Arbeitsplätze

  • Neu: AdventureProfessionTargets.{h,cpp}.
  • Erz/Pflanzen: echte aktive CHΕST-GOs, native Lock-/Skill-Anforderungen aus sLockStore / SkillByLockType, nicht bloß Namen oder Locationkategorie. Nur sichtbare, phasenrichtige, bereite und erreichbare Ziele.
  • Kürschnerei: vorhandener toter BEAST-Kadaver im Zustand CORPSE mit nativem SKINNABLE-Flag. Kein Erzeugen/Töten eines Tiers. Kampf/Jagd später.
  • Arbeitsplätze: neuer editierbarer Katalog vcore_adventure_workstation mit GO-Templateentry, semantischer Rolle und enabled. Keine Bot-/Ort-ID-Liste. Native Fokuskennungen geprüft: 1 Amboss, 3 Esse, 4 Kochfeuer, 663 Alchemielabor, 1589 Lexikon. 623/543 sind besondere Amboss-/Essenfokusse.
  • Native unsichtbare SPELL_FOCUS-Marker repräsentieren reale Kartenarbeitsplätze und dürfen dafür genutzt werden. Keine Aktivierung/Objektbenutzung.
  • Rollen ohne reale erkennbare Arbeitsplätze bleiben nicht verfügbar; keine beliebige Werkstatt-Location als Amboss behandeln.
  • Trainer: native Tradeskill-Trainer, deren native Spell-/SkillLine-Daten zu einem erlaubten Haupt- oder einem Nebenberuf passen. Reines Gespräch.

Szenen und bestehende Legacy-Aktionen

  • Wiederverwendete AdventureSocialActions mit Cue::Work, professionellen Zielprüfungen, nativen Emote-Zuständen, Abschlussbetrachtung und kurzem Wegtreten. Keine Harvest-/Craft-/Loot-/Teach-/Heal-Aufrufe.
  • Profil und Ziel werden auch während der Szene erneut geprüft.
  • Alte mining_show / smithing_show (Kind work, Requirement ore/forge) werden in ResolvedAction auf dieselben neuen gesperrten Szenen umgelegt. Es darf KEIN Legacy-Bypass der Profil- oder Arbeitsplatzprüfung verbleiben.
  • Nach vollständiger Sammeldarstellung wird work:<GUID> in der bestehenden Zielhistorie gespeichert. Kürzlich bearbeitete Ressourcen werden gemieden, damit die unverändert stehen bleibende Quelle nicht endlos wiederholt wird. Nur Erzbetrachtung (ore_inspect) setzt diese Bearbeitungssperre nicht.

Gebietssuche / gemeinsame Erkundungssteuerung

  • Neue Suche profession_search, Requirement work_search, Kind outing.
  • Wiederverwendete MMAP-Routensteuerung: progressive Hinwege, an erreichten Kontrollpunkten erneut mögliche Berufsarbeit prüfen und Suche dann beenden.
  • Bei Gebietsaufträgen wird der lokale Anker nach bestätigtem Suchfortschritt verschoben. Weiteres Durchsuchen bleibt über jeden MMAP-Punkt im Zielgebiet.
  • Gebiets-Abenteuerwege sind jetzt ebenfalls progressiv; normale Freizeitwege bleiben bestätigte Hin-/Rückwege. Keine Stadt-Sonderregel.
  • Zusätzliche native Uferprüfung für performatives Berufsangeln im Gebiet, ohne zwingenden speziellen Fishing-Location-Key. Ausgerüstete Angel bleibt nötig. Kein wirklicher Angelzauber/Fang. Noch nicht live getestet.

Neue Migration

sql/custom/world/2026_10_27_05_adventure_profession.sql (noch NICHT angewendet): Arbeitsplatzrollen, neue Arbeits-/Such-/Nebenberufs-/Gesprächsaktionen, Berufsgewichtung für Gebiet/Wildnis/Siedlung, neue Texte. Native Fokusdaten haben Vorrang; Namen ergänzen nur erkennbare geeignete Props. Geänderte Gewichte/disabled-Rollen sollen bei Wiederholung erhalten bleiben.

Offene Arbeiten – konkret hier weiter

  1. Aktuellen C++-Diff kritisch prüfen; dies ist ein WIP, keine fertige Abnahme. Insbesondere Berufsszenen, Legacy-Auflösung, progressive Ankeraktualisierung, Ressourcen-Wiederholungsdämpfung und Uferprüfung gegen Nutzerregeln prüfen.
  2. cmake --build /home/wow_admin/wow_cata_server/build/debug -j10 fortsetzen. Vorher prüfen, dass kein alter Build mehr läuft. Weitere Fehler beheben.
  3. Vollständige Tests erneut laufen lassen. Vor dem Berufs-Ausbau waren 32 Tests grün. Seitdem gab es 7 Mock-/Harness-Anpassungsfehler, deren Fixes bereits TEILWEISE geschrieben sind. Alte Fehlerdateien sind historisch!
    • Economy/Exploration/Social-fire: neues Policy-Include und Profilfelder, Targets-Stub für zusätzlich mitkompilierte Zweige.
    • Social: Map-/Position-/Origin-Stubs und native Work-Emotes ergänzt; zuletzt nach INVALID_HEIGHT-Fix wieder grün.
    • Exploration und Leisure: nach Anpassungen zuletzt wieder grün.
    • Intent-state: neue Scene-Felder Progressive/Route/Step ergänzt; letzter Fehler fehlende Player::GetExactDist(Position const&). Der Überladungs-Fix ist bereits geschrieben, aber noch nicht erneut geprüft.
    • Rest-fire: PrimaryProfessions in Mock-Profil/-Kontext ergänzt; aktuellen Zustand durch erneuten Lauf prüfen.
  4. Neue aussagekräftige Berufs-Tests fehlen noch! Geplant:
    • tatsächlichen neuen Lua-Parser mit realem Lua 5.4 ausführen, inklusive Arthoran mining/blacksmithing, leeres/ungültiges Profil sperrt Hauptberufe;
    • Mining+Smithing darf vorhandene Kräuter NICHT bearbeiten, umgekehrt darf Herbalism+Alchemy keine Erz-/Schmiedearbeit; sekundäre Aktionen ohne Liste;
    • produktive native Zielklassifikation: Lock-Skills statt Namen, Amboss versus Esse versus bloße Workshop-/Gebietszuordnung, falsche Phase, despawnte/gelootete Quelle, Kadaverprüfung und passende Trainer;
    • native Arbeitsgeste erst NACH tatsächlicher Ankunft, Profilentzug während laufender Szene, keine Objektbenutzung/Casts/Inventaränderung, Abschluss;
    • Migration auf Schemafixtures ausführen, Idempotenz und bearbeitete Gewichte/Arbeitsplatzfreigaben erhalten;
    • Gebiets-Anreise über erreichbaren Graphnode und lokale progressive Suche innerhalb des Gebiets, Stopp bei gefundenem zulässigem Arbeitsplatz.
  5. Erst dann neue Migration auf TEST-DB anwenden. Noch kein profession_apply- Modus im gesicherten DB-Helfer! Ergänzen oder engen eigenen Helfer schreiben.
  6. Erfolgreichen Build nach sauberem Serverstopp installieren, neu starten und frische Ready-Meldung + Prozess + Port 8085 prüfen. AGENTS-Recovery beachten.
  7. Live prüfen: tatsächlicher Amboss in Sturmwind (z. B. importierter poi_guard_541, Schmiedebereich), dann Gebietsziel poi_tele_338 = Elwynn, Gebiet 12, echtes travel_to_node und lokale Ressourcen-/Arbeitsplatzsuche. Kräuter muss Arthoran verweigern. Inventar/Geld und Ressourcen unverändert nachweisen. Keine gefälschten Ressourcen, Spawns oder Teleports.
  8. Berufs-Dokumentation schreiben, Katalog-/Standdokumente aktualisieren und offen gebliebene Live-/visuelle Prüfungen ehrlich benennen.

Wichtige vorherige Ergebnisse – nicht neu implementieren

  • Reisegraph: optionale virtuelle Exits regelmäßig (6 s) während Weiterbewegung prüfen, kein Abbruch nach fünf Versuchen, Kante nicht mitten darin umkehren. Free-flight-Fallback getrennt von künstlichen Normalreise-Auswahlregeln.
  • Ruhe/Feuer: gemeinsames natives Kochfeuer 818, neue Feuer nie in Gebäuden/ Städten. Schlafdarstellung weiterhin vertagt.
  • Freizeit: Katze (Spell 10673, Creature 7385), Leine (Item 37460, Spell 48722), echte native Begleiter-/Itemverwendung. Kanal beim Gehen erhalten. Owned-only Cleanup, keine Veränderung fremder Begleiter. Nutzer hat sichtbare Katze, Leine, zusammenhängende Routen und flüssige Bewegung ausdrücklich abgenommen.
  • Native Follow-Fix: aktive Player-Splinegeschwindigkeit statt Run-Flag wählen; SetWalk setzt die Gait-Auswahl, nicht MOVEMENTFLAG_WALKING. Das beseitigte die ständigen Zwei-Meter-Pausen. Nicht wieder entfernen.
  • Native Spline-Kurzsegment-Fix: 0,11 Yards Mindestabstand beim Splitten.
  • Wirtschaften rein performativ; Händler/Bank/AH und Vergleich mit zwei GUIDs technisch live geprüft, Geld/Inventar danach bytegleich.
  • Importfehler behoben: SMALLINT maps über GetUInt16 statt GetUInt32, das in Debug Null ergab. Gezielte, idempotente clientless adventure repairimport reparierte 2.159 unveränderte abgeleitete Orte, ergänzte 217. Jetzt 2.864 aktive semantische Locations / 3.857 Worldpoints. 16 manuelle Orte unverändert. Vier Horde-Hauptstädte korrekt auf Karte/Fraktion zugeordnet. Nicht die originalen world-DB-Quellen ändern. Snapshots liegen bei dieser Übergabe.
  • Location-Zuordnung: kein versteckter Wirtschaften-Fallback mehr im Code; _04 materialisiert ausdrückliche Kategorie-/Intent-Gewichte, inklusive begrenzter Freizeitgewichtung für Tavernen. Tagesplan-Intent unabhängig davon.
  • Abenteuer _04: native Objektuntersuchung ohne Use, Scout/Equipment, zusammenhängende Bodenwege. Zehn neue Aktionen, 32 Tests bestanden, technisch live in Sturmwind: Pestle's Apothecary 197117, Weller's Arsenal 197121, 80-Yards-Erkundungsweg mit zehn bestätigten Hin-/Rückwegpunkten. Visuelle Abnahme und gefährliche offene Welt weiterhin separat.

Werkzeuge, Logs und reproduzierbarer Betrieb

Dauerhafte Kopien für diese Übergabe: doc/clientless/checkpoints/2026-10-27-profession/. Darin Build-/Configurelogs, historische fehlgeschlagene Testausgaben, Ortskatalog-Snapshots und die bisherigen schmalen DB-Helfer. Diese Helfer lesen Verbindungsdaten aus der lokalen Testserverkonfiguration; keine Passwörter im Chat/Logs ausgeben. Sie enthalten keine fest codierten Zugangsdaten. Die Helfer bei Bedarf wieder nach /tmp kopieren; Pfade gelten für diesen Host.

Wichtige Live-Logs (normal und ohne vorsorgliche Elevation lesen): /home/wow_admin/wow_cata_server/server/debug/bin/Server.log, adventurebot-navigation.log, DBErrors.log. Server.log wird beim Start neu begonnen, Navigations-/DBErrorslogs können ältere Fehler enthalten. Bekannte alte Script-/Spell-Warnungen nicht mit neuem Startup-Versagen verwechseln.

Buildbefehle: cmake --build .../build/debug -j10, bestehende Installation mit cmake --install .../build/debug. Tool-Sandbox für Build/Install/tmux/DB beachten, aber normale Logs nicht vorsorglich eskalieren. Keine laufende Executable überschreiben. Kein Push.

Für gezielte Tests nach Restart wurde bisher nur beim Login die Startvorgabe in arthoran.lua temporär geändert, vorher byteweise gesichert, nach [AdventureBot][Profile] loaded guid=26 exakt zurückgesetzt. Die jetzt dauerhaft vereinbarten Hauptberufe dabei unbedingt erhalten. Keine temporären Profile liegenlassen. Alternativ normalen Login abwarten und per Console Intent setzen; auf unerwünschte automatische Goldshire-Anreise achten.

Console-Beispiele ohne führenden Punkt: clientless login 26, clientless adventure status 26, clientless adventure intent 26 profession poi_guard_541 3600, clientless adventure intent 26 profession poi_tele_338 3600, clientless adventure micro 26 <action_key>, saveall.

Der Nutzer möchte vor allem konkrete, überprüfte Ergebnisse und wenig Bestätigungsfragen. Die Hauptberufs-Rückfrage ist bereits BEANTWORTET; nicht noch einmal stellen. Testservermanagement und lokale Commits sind autorisiert.