Ich nehme an brTestcuirass1Splitter ist ein base object id (sonst würde Drop auch nicht funktionieren).
Dadurch, dass du verwendest benötigst du aber die Referenz.
Die einzige Möglichkeit diese zu bekommen wäre GetFirst/NextRef. Du solltest allerdings (mindestens) einen Frame warten, bis du sie auch verwendest.
Das erklärt zwar nicht den CTD, allerdings warum das Script nach dem ersten Durchlauf nicht mehr funktioniert (wird gestoppt, bis Oblivion neu gestartet wird).
--
Ich kam, sah, und konnte meinen Augen nicht trauen
Die einzige Möglichkeit diese zu bekommen wäre GetFirst/NextRef. Du solltest allerdings (mindestens) einen Frame warten, bis du sie auch verwendest.
...
habe mich mal im cswiki schlau gemacht da steht ja irgendwas von While Loop Schleife, sorry wegen meiner Unwissenheit aber ich habe keine ahnung wie die funktioniert.
Zitat
Ich nehme an brTestcuirass1Splitter ist ein base object id
...
Jep ein Miscitem um´s Genauer zu sagen
Zitat
Das erklärt zwar nicht den CTD, allerdings warum das Script nach dem ersten Durchlauf nicht mehr funktioniert (wird gestoppt, bis Oblivion neu gestartet wird).
...
das der Script nach dem laden Gerne nicht funktioniert war schon bevor ich die sache mit Drop Reingenommen habe.
Bei einer While-Schleife wird einfach alles zwischen dem While und Loop (angenommen Break/Continue wird nicht verwendet) so oft wiederholt, bis die While-Bedingung nicht mehr zutrifft. In dem Wiki-Beispiel ist das so lange der Fall, wie GetNextRef einen Wert != 0 ausgibt.
Warum das Script sonst anhält kann ich nur vermuten. Mein Ansatz wäre jetzt, dass ein unequip & equip, die den gleichen Slot betreffen nicht im selben Frame stehen dürfen. Ich würde dazu einfach das unequip weglassen.
Ich würde dir allerdings empfehlen ein paar Print(C)-Befehle einzufügen. Damit kannst du kontrollieren, wie weit das Script durchläuft. Der Fehler ist dann auf jeden Fall danach.
--
Ich kam, sah, und konnte meinen Augen nicht trauen
Das war jetzt mein Erster versuch. Führt allerdings nur zum CTD
auf der CS Wiki steht ja irgendwas von ; do something with pDoor innerhalb der While Loop Schleife heißt das ich muss da jetzt noch was anderes machen als nur GetNextRef
Geändert von Orios das auge (01.10.2010 um 19:27 Uhr)
Da britem eine Referenz ist (GetFirst/NextRef gibt nur Referenzen aus) wird es nie gleich dem base object brTestCuirass1Splitter sein. Versuch mal folgenden While-Loop:
Was den CTD betrifft:
Konsole lässt sich da ja schwer überprüfen, von daher musst du auf den (undokumentierten) Befehl dbg_echo zurückgreifen. Der verwendet die gleiche Syntax wie PrintC, schreibt den Inhalt aber nicht nur in die Konsole, sondern auch in die Datei obse.log im Oblivion-Verzeichnis.
Der Befehl sollte aber nur zum De-bugging (Fehlersuche) verwendet werden und aus der Release-Version wieder gelöscht werden.
--
Ich kam, sah, und konnte meinen Augen nicht trauen
Ok jetzt gibt es kein CTD mehr (auch nicht im Exterior 8))
allerdings Passieren jetzt andere Merkwürdige dinge o_O
1. Der Bildschirm wird für ein Bruchteil einer Sekunde Schwarz
2. Der Gegner Steckt danach die waffe weg und Zieht sie wieder erneut
3. Die Musik wird zurück gesetzt
und 4. bei 3 meiner 8 Versuche wurde das Wetter nach dem Blackscreen geändert
und Moveto scheint nicht zu Funktionieren (Der Gegenstand brTestcuirass1Splitter erscheint vor der Brust von Player und nicht ein Stück über´m Kopf so wie es bei moveto 0,0,150 ja eigendlich sein soll)
Hier der Script
und die Obse.log
Zitat
if frame 2
While
Error in script 42001ca0
Attempting to call a function on a NULL reference or base object
File: Brokenarmor.esp Offset: 0x0131 Command: <unknown>
Error in script 42001ca0
An expression failed to evaluate to a valid result
File: Brokenarmor.esp Offset: 0x0131 Command: <unknown>
EquipDelay frame 3
Actor Reset frame 5
Actor to container frame 1
Actor Reset frame 5
Actor to container frame 1
Actor Reset frame 5
Actor to container frame 1
Actor Reset frame 5
Actor to container frame 1
Actor Reset frame 5
Actor to container frame 1
Actor Reset frame 5
...usw...
Error in script 42001ca0
Attempting to call a function on a NULL reference or base object
File: Brokenarmor.esp Offset: 0x0131 Command: <unknown>
Error in script 42001ca0
An expression failed to evaluate to a valid result
File: Brokenarmor.esp Offset: 0x0131 Command: <unknown>
...
Das weist auf einen Syntax-Fehler hin: Eine Funktion, die einen best. Wert benötigt wird mit einer Null-Referenz/base object aufgerufen.
Probier mal den ScriptViewer aus, da kannst du sehen, was die Offset-Werte bedeuten (stehen für eine Position im Script).
Ich vermute, dass es die While-Schleife selbst ist. Das passiert aber nur, wenn keiner der entsprechenden Werte brTestcuirass1Splitter als Base Object hat. Sicher, dass du den richtigen Filter bei GetFirstRef verwendest?
--
Ich kam, sah, und konnte meinen Augen nicht trauen
Ok hat mir nicht viel gebracht da sind bei mir keine übereinstimmenden Offset werte gibt
...
Interessant ist immer der nächst kleinere Wert, in deinem Fall also: Der Fehler weißt darauf hin, dass britem eine Null-Referenz ist (also keinen Wert hat).
Abgesehen davon hätte das eh nicht funktioniert, da die (erforderliche) Verneinung vergessen wurde.
Der korrekte Code wäre:
--
Ich kam, sah, und konnte meinen Augen nicht trauen