Idee [Tool-Idee]Automatisches Beheben von Reference attached to Wrong Cell for....

Unbekannter

Ehrbarer Bürger
Einige von euch kennen vllt den "Reference attached to wrong cell for its
Location" Fehler im CS.
Den bei großeren Worldspaces zu beheben ist ein haufen Arbeit. Daher fände ich es gut, wenn es ein Tool gäbe, das da automatisch macht. Technisch sollte das möglich sein, ich selber kann nicht programmieren, kann allerdings unterstützung liefern, wenn es darum geht, wie man diese Fehler behebt.
 
Dann beschreibe doch mal ausführlich, wie man von Hand vorgehen würde.
Eventuell findet sich ja jemand, der das dann umsetzen kann. Toll wäre natürlich eine bebilderte Anleitung oder gar ein Video.
 
Ok. Dann werde ich das ganze erst einmal genauer beschreiben:

Der "Reference attached to wrong cell for its location"-Fehler tritt beim Modden recht häufig auf und kann quasi nicht vermieden und nur sehr zeitaufwendig behoben werden. Der diese Fehlermeldung spuckt das CS dann aus, wenn eine Reference, also ein platzieres Object (Placed Object) eine Zelle zugeordnet wird, aber seinen Koordinaten nach eigentlich in einer anderen Zelle liegen müsste.

Die Zellaufteilung von Worldspaces
Damit man das versteht, werde ich hier ersteinmal genauer auf das Cell-System von Oblivion eingehen. Wie die meisten wahrscheinlich wissen, sind Worldspaces in Oblivion in Cells unterteilt. Diese Cells liegen in Exterior-Cell-Subblocks, die jeweils 8x8 Zellen umfassen. Diese Subblocks liegen in Exterior Cell Blocks. Diese umfassen jeweils 4x4 Subblocks, also 32x32 Cells.
Dabei enthält der Blocks 0,0 alle Zellen mit nur positiven Vorzeichen von 0 - 31, die Eckpfeiler sind damit quasi die Zellen 0,0, 31,0, 0,31 und 31,31. Hier ist es wichtig zu wissen, dass die Zelle 0,0 bereits im Positiven Teil des Koordinatensystem liegt (Quasi der erste Quadrant). Deshalb wird der Block -1, -1 auch von den Zellen -1,-1, -1,-32, -32,-1, -32,-32 begrenzt

Außerdem liegt über den Zellen ein Zellübergreifendes Koordinatensystem. Dort wo die vier Exteriorcellblocks 0,0, -1,0, 0,-1 und -1,-1 aufeinander stoßen liegt das Koordinatenkreuz.
Jede Zelle umfasst 4096 Units, die Maßeinheit des Koordinatensystems. Auf diese Weise lässt sich später durch die Koordinaten einer referenz auf die Zelle, in der dieses sich befindet, schließen.

Behebung der Fehler per Hand
Zur Behebung der Fehler per Hand empfielt sich TES4Edit. Dazu braucht man zunächst eine Liste aller Fehler. Die generiert das CS beim Laden einer .esp/.esm.
Das Normale CS gibt jeden Fehler einzeln aus Warnmeldung aus und schreibt die Fehler dann in die CSError.log. Wer CSE benutzt, kann die Fehler wie hier in der Konsole aufgelistet sehen. Das Bild zeigt nur einen Ausschnitt des Fensters. Je nach Größe des Worldspaces können diese Fehler in sehr großen Mengen auftreten.


Uploaded with ImageShack.us

Eine der Betroffenen Referenzen hat hier die FormID 0200F2F1.
Um diesen Fehler zu beseitigen, öffnet man nun die Betroffene Datei in TES4Edit. Mithilfe der Suchfunktion ist die Referenz schnell gefunden



Uploaded with ImageShack.us

Das Fenster rechts verrät uns, dass die Referenz der Zelle 1,2 zugeordnet wurde.
Außerdem sehen wir unten, dass die Referenz die Koordinaten 6899.233887|6928.081443 hat. Diese Koordinaten lassen sich nun allerdings auf die Zelle 1,1 zurückführen. Hier ist es wichtig zu wissen, das Zelle 0,0 bereits positive Koordinaten hat.
Eine Zelle mit der x-Koordinate 0 enthält somit alle x-Koordinaten von 0 bis 4096. Eine Zelle mit der x-Koordinate 1 enthält also bereits alle x-Koordinaten zwischen 4096 und 8192.
Da gleiches für die y-Achse gilt, liegt das Objekt eindeutig in Zelle 1,1, obwohl es in Zelle 1,2 zugeordnet wird.

Um das zu beheben muss man nun zunächst die ID der benötigten Zelle herausfinden. In TES4Edit gibt es dafür leider keine Suchfunktion, allerdings sollte das nicht so schwer sein, da es ja nicht so viele zellen gibt:



Uploaded with ImageShack.us

Wenn man dann die Zelle gefunden hat, kann man die FormID ablesen. Die lautet in dem Fall "02000EF8". Mit dem Wissen geht man wieder zurück zu der Fehlerhaften Referenz



Uploaded with ImageShack.us
Hier wird nun die Cell des Objektes bearbeitet und die richtige FormID eingetragen. (Auswählen und F2)
Durch bestätigen mit Return passt TES4Edit die Erläuterungen in Klammern automatisch an:


Uploaded with ImageShack.us
Diese Erläuterungen sind vermutlich kein Teil der Datei sondern werden von TES4Edit nur zur Erläuterung dahintergeschrieben.

Wenn man das Plugin nun speichert (Bei TES4Edit wird erst beim Beenden richtig gespeichert), ist die Referenz das nächste mal automatisch bei Zelle 1,1 untergeordnet.



Ich hoffe, das hilft weiter.