7.9 KiB
Gebietskatalog, POI-Zuordnung und sichere Builds
Befund und Korrektur
Pibwin (GUID88, Stufe18) kündigte ein Abenteuer bei „Dalaran Krasus' Landing“ an.
Der importierte Ort poi_guard_140 lag tatsächlich auf Karte1 bei5831/508/Z3,55,
Gebiet2078, Zone148 (Dunkelküste). Der Gebietskatalog prüfte deshalb einen
niedrigstufigen Ort, nicht Dalaran. Ursache war die Auswahl des nächsten
game_tele-Ankers nach X/Y über verschiedene Kontinente hinweg.
POIs erhalten ihre Karte jetzt über die nativen Gesprächsmenüs der tatsächlich
platzierten NPCs (creature_template_gossip, gossip_menu_option, creature).
Untermenüs werden verfolgt, Zyklen abgefangen. Mehrdeutige oder fehlende native
Zuordnungen werden nicht durch eine Koordinatenvermutung ersetzt. Erst innerhalb
der eindeutigen Karte werden die Bodenhöhe und die Gebietszuordnung bestimmt.
clientless adventure repairimport erkennt unveränderte generierte Orte anhand
von Quelle, Name, Position und Geografiemetadaten. Es korrigiert ihre Karte/Höhe/
Gebietsdaten und deaktiviert solche ohne sichere native Zuordnung. Manuell
veränderte Orte sowie Original-POIs und aufgezeichnete Reiserouten bleiben erhalten.
Die Katalogmigration 2026_10_30_00_adventure_city_parents.sql ordnet native
Stadtwurzeln ihren geografischen Umgebungen zu, insbesondere Dalaran4395 dem
Kristallsangwald2817 und Shattrath3703 Terokkar3519. Auch die acht Volksstädte
bekommen ihre Heimatregion als semantischen Katalog-Elternbereich. Vorhandene
manuelle Elternzuordnungen bleiben bestehen; Karten müssen übereinstimmen.
Neue DBC-Exporte erzeugen dieselben editierbaren Vorgaben. Die native DBC- und
Spielergebietshierarchie wird nicht geändert. Levelminimum, Fraktionssperren und
fehlende Flugvorgaben werden über die vorhandene Katalogvererbung berücksichtigt.
Gruppenpläne prüfen auch das tatsächlich angekündigte nächste Ziel gegen die Berechtigungen des Bots. Ungültige gespeicherte/manuelle Ziele werden nicht mehr beworben. Bei Einladungen werden sowohl Anführer als auch Teilnehmer geprüft. Gespeicherte Tagespläne werden durch die vorhandene Reparatur beim Laden bzw. Katalogwechsel auf zulässige Ziele umgestellt.
Verbindlicher Ablauf vor künftigen Builds
- Den bisherigen Wert von
Clientless.Adventure.Loader.Enabledsichern, auf0 setzen,reload configundclientless population reloadausführen. Bei einer noch laufenden Loader-Operation deren Abschluss abwarten und erneut laden. clientless logout safe allausführen. Der Welt-Thread fordert einmalig einen sicheren Verhaltensstopp an und lässt die bestehenden Controller weiterlaufen. Er wartet auf lebende, geladene Bots ohne Kampf, Transportbindung, Taxi, Flug, Fall, Teleport, Zauber oder aktive Bewegung. Es gibt keinen erzwungenen Logout nach einer Wartefrist. Menschen und normale Netzwerksitzungen sind ausgenommen.- Mit
clientless logout statuswarten, bispending=0 sessions=0gemeldet wird. Erst danncmake --build /home/wow_admin/wow_cata_server/build/debug -j10starten. Bei blockierten Bots zuerst die Ursache untersuchen; nicht nebenher bauen. - Den Loader durch Installation und Neustart hindurch pausiert lassen. Laufende Binärdateien nicht überschreiben; nach sauberem Serverstopp installieren. Frischen Ready-Eintrag, Prozess und Listener prüfen.
clientless logout resumebeendet die Sammel-Anforderung, falls derselbe Weltprozess weiterläuft. Nach Neustart ist sie ohnehin zurückgesetzt. Bisherige Loader-Konfiguration wiederherstellen,reload configundclientless population reloadausführen. Der Loader lädt die Bots wieder schrittweise. Die Regel ist zusätzlich dauerhaft inAGENTS.mdfestgehalten.
Einzelne Bots können mit clientless logout safe <guid> ebenso sicher abgemeldet
werden. Der bisherige unmittelbare Einzel-Logout bleibt als Administrationswerkzeug
bestehen und ist nicht der empfohlene Build-Ablauf.
Beim ersten Übergang auf diesen Ablauf war der sichere Sammel-Befehl noch nicht
installiert. Die vorhandenen sicheren Intent-Stopps dienten zur Abmeldung.
Für zwei im alten Schiffscode festhängende Bots wurde zunächst der bereits fertig
gebaute vorherige Transportfix installiert. Tholgar92 und Lillina118 erreichten
anschließend regulär den Anleger (Arrived, passenger=0,11:54:06).
Bei den zuletzt stationären Bots Edwin36 und Drakogzug77 wurden vermutete
verwaiste native Kampfzustände separat mit combatstop bereinigt; dies ist kein
Bestandteil des neuen automatischen Logout-Verfahrens. Anschließend wurden ihre
sicheren Stopps und Offline-Zustände bestätigt. Vor dem neuen Build waren sämtliche
110 Bots offline, der Loader aus und nur eine normale Spielersitzung aktiv.
Weltkarte
Der vorhandene GM-Befehl lautet .cheat explore 1. Ohne Zielauswahl wird die
eigene Karte aufgedeckt; bei Auswahl eines Spielers dessen Karte. .cheat explore 0
löscht die Erkundungsbits wieder. Behoben wurden die bisher falsche Zielperson
und das wirkungslose Löschen per SetFlag(...,0). Der Befehl schreibt jetzt alle
Erkundungsfelder des ausgewählten Spielers korrekt.
Prüfstand
113 isolierte Clientless-Testprogramme erfolgreich. Neue Prüfungen führen die produktive POI-Zuordnung, den nativen Logout-Sicherheitscheck und den bestehenden Kartenbefehl aus. Weitere Prüfungen bestätigen die Katalogmigration einschließlich Idempotenz und Erhalt manueller Eltern sowie neue DBC-Exporte und Gruppenpläne mit unzulässigem Folgeziel. Die Integrationsergebnisse nach Installation werden im Session-Checkpoint und im Abschlussbericht festgehalten.
Build mit bestehender Debug/Ninja-Konfiguration und -j10 erfolgreich, ohne
parallel eingeloggte Bots. Logs unter /tmp/vcore-city-safe-logout-*, Testausgaben
unter /tmp/vcore-travel-fixes-tests/. Geografiesnapshots unter
/tmp/vcore-city-fix-state/ enthalten keine Konfigurationszugangsdaten.
Bestätigte Integration
- Finaler Testserverstart: PID 446178, frische Ready-Meldung nach 10 Sekunden,
Listener 8085/8087. Beide Builds mit
-j10bei 0 Bots erfolgreich, ohne OOM-Abbruch. - Reparatur: 437 native Wächter-POIs, 166 nicht nutzbare Koordinaten übersprungen, 2916 aktive Locations einschließlich Instanzvarianten. Die Höhenprüfung nutzt zunächst NPC-Höhe +3; bei weit entferntem Bodentreffer folgt eine Probe von +35. Der nähere Treffer gewinnt. Nahe Innenböden werden beibehalten.
poi_guard_140: Karte 571, X 5831, Y 508,617, Z 657,7, Gebiet 4564, Zone 4395 Dalaran. Pibwin auf Stufe 18:own=0 invitation=0. Sein Tagesblock 12 behält Adventure, bekommtpoi_tele_651(Blutmythosinsel, niedriger Levelbereich).- Katalogeltern 4395→2817 und 3703→3519 bestätigt. Policytests bestätigen geerbte Levelminima 77 bzw. 62 und Flugvorgaben.
- Nodes, Kanten und Transportstopps vor/nach Reparatur bytegleich. Alle 17
vorherigen manuellen Ortsdatensätze unverändert. 236 generierte Datensätze
repariert/deaktiviert, 12 semantische Datensätze ergänzt. Snapshots unter
/tmp/vcore-city-fix-state/. - Sammel-Logout mit Arthoran 26 und Pibwin 88 live ausgeführt: erste Rückmeldung
pending=2/sessions=2/flight=1. Arthorans native Taxiverbindung 2221 endete vor
seinem
CLIENTLESS_SAFE_LOGOUT, danach Pibwins Bewegungsabschluss und Logout. Abschluss:pending=0 sessions=0. Kein zeitgesteuerter Zwangslogout. - Sammel-Anforderung mit
logout resumebeendet, ursprünglichen Loaderwert 1 wiederhergestellt, Config und Population neu geladen. Bots kehren schrittweise zurück; keine neuen Sammel-Logouts nach der Wiederaufnahme. Zielkonfiguration unverändert: 50 persistente + 5 temporäre Bots pro Fraktion. Abschließend alle 110 Bots online, keine ausstehenden Logins, Loader ohne Fehler.
Die Liveprüfung bestätigt Zielberechtigung und Logoutablauf. Sie ersetzt keine vollständige Abnahme sämtlicher Reisewege oder aller reparierten POIs. Der Kartenbefehl wurde am produktiven Handler isoliert geprüft; keinem Spieler wurde ungefragt seine Karte verändert.