PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Script If Anweisung



Eagle_Four
09.07.2010, 16:20
Hallo,

da ich immer wieder große Probleme mit CTDs habe und es definitiv an einem
nicht sauberen Cell Buffer liegt habe ich mir von Nexus das .esp Purge Cell Buffers(PCB) installiert. Die Grundversion hatte allerdings Fehler, so habe ich es modifiziert und meinen Bedürfnissen angepaßt.

Merkwürdigerweise stürzte FO3 immer ab, wenn ich in meinen Vault(underground Hideout) ging. Bei Abschalten von PCB gabs diesen Absturz nicht, also baute ich mein Script so um, das sobald ich in meinem Vault bin, der PCB Script Teil umgangen wurde. Jetzt mein Problem:

Hier ist der Code:

scn PCBScript

Begin GameMode

1 If Player.IsInInterior == 0 && PCBIntExSwitch == 1
2 PCB
3 ShowMessage PCBSuccessMsg
4 set PCBIntExSwitch to 0

5 Else

6 If Player.IsInInterior == 1 && PCBIntExSwitch == 0
7 PCB
8 ShowMessage PCBSuccessMsg
9 Set PCBIntExSwitch to 1
10 Endif

11 Endif

12 If Player.GetInCell EveLandHouse1 == 0
13 If PCBTrackerRef.GetInSameCell Player == 0
14 PCBTrackerRef.MoveTo Player
15 ShowMessage PCBZellennachricht
16 Set PCBCounter to PCBCounter + 1

17 Endif

18 If PCBCounter >= PCBFreq
19 Set PCBCounter to 0
20 ShowMessage PCBSuccessMsg
21 PCB

22 Endif

23 Else

24 ShowMessage PCBWillkommen

25 Endif

26End

Die Nummern habe ich nachträglich eingefügt, zum bessseren Verständnis.

Diese Zeile 12 If Player.GetInCell EveLandHouse1 == 0
wird nicht ausgeführt,die Bedingung ist immer erfüllt.Ändere ich die Zelle in z.b. Megaton funktioniert es perfekt.Ebenso, wenn ich in der Konsole Player.GetInCell EveLandHouse1 eingebe.Ich bekomme dann 1 zurück, wenn ich mich dort befinde,so wie es sein soll.Also ist der Code nicht fehlerhaft.

Das merkwürdige ist, als ich das Script erstellte hat es schon mal nicht funktioniert. Dann habe ich den Zell Namen in groß und Kleinschrift geändert, und dann ging es. Nach ausführlichen Tests, in allen möglichen Exteriors und Interiors ohne Abstürze, befand ich es für tauglich und habe dann die ShowMessages Zeilen auskommentiert.Sie dienten nur zum Testen. Danach ging ich in mein Vault, und Voila, CTD. Ich fügte die Hilfstexte wieder ein, aber die Zeile 12 wird einfach nicht korrekt ausgeführt. Scheint ein Fehler im Compiler zu sein.
Brauche jetzt echt mal nen Tip, ich sitze da schon länger dran Fo3 stabil zum laufen zu bekommen, als ich es gespielt habe.

Achja, die Zeilen 1-11 müßte ich einfügen, weil ich vom Wechsel ext nach int oder umgekehrt nach kurzer Zeit wieder einen Klappmann bekam.Dort wird sichergestellt, daß sofort ein PCB durchgeführt wird.Beruht alles auf langwierigen Tests.

EMOD
09.07.2010, 17:41
Versuche mal die Zelle 12 If Player.GetInCell EveLandHouse1 == 0

umzubennen, das hinter der 1 noch ein Buchstabe kommt oder die 1 weg ist.

12 If Player.GetInCell EveLandHouse == 0
oder
12 If Player.GetInCell EveLandHouse1a == 0

Eagle_Four
09.07.2010, 19:10
HI,

das hatte ich auch schon versucht, dann bekomme ich ne Fehlermeldung vom Compiler beim saven. Ich hatte die 1 weggelassen, ich versuche aber das a dahinter zu setzen.Kann das denn gehen, wenn der Name der Celle nicht paßt? Der exakte Name des Vaults lautet ja so: EveLandHouse1


Edit:Geht leider nicht, bekomme die Fehlermeldung, daß die Zelle nicht gefunden wurde.

EMOD
09.07.2010, 19:22
Zelle musst du natürlich entsprechend umbennen, ist aber nur ein Versuch :)


EDIT:
Lese ich das richtig, laut Geek Seite gehen nur valid interrior cell name "Exterior cells will not work"

Liegt es bei deiner EveLandHouse vielleicht daran?

Woran liegt eigentlich das Problem, geht der PCB nicht überall?
Liegt es an einem Zellenwechsel + PCB, gibt es da Einschränkungen, hast du damit Erfahrung?
Schon probiert den PCB unabhängig von einem Zellenwechsel zu machen, gibt es dann weniger Probleme, liegt dein CTD nur am Zellenwechsel + PCB in deiner Vault?

Eagle_Four
09.07.2010, 19:59
Hi,

also, ich bekomme CTDs, wenn ich länger als ein paar Minuten herumlaufe, übersteigt die Fallout.exe ca. 1,4 bis 1,7 Gb gibt es nen Freeze bzw. CTD. Dampf und Speicher habe ich genug, 4 GB, Quad Core 6600 @3,4Ghz Windows XP.GForce 285.Benutze allerdings die hohen Texturen von NMC,auf die ich auf keinen Fall verzichten will.Habe auch schon Stunden damit verbracht,alles mögliche zu testen. Viele .ini Werte geändert,testweise, hat alles nichts gebracht.

Freezes hab ich häufig im Wasteland, aber auch, sobald Interiors geladen werden. Führe ich jede zweite oder dritte Zelle nen PCB durch, ist alles ok. Das kleine .esp von Nexus hat schon sehr gut funktioniert, bis auf, das im Original schwere Script Fehler vorhanden sind (eine Endif Anweisung ohne If) und ich es ein bisschen modifizieren mußte. Allerdings habe ich dann das Problem, sobald ich in MEINE Vault gehe und in der Vault das Script einen PCB durchführt, es zu einem CTD kommt beim Zellenwechsel,aber nicht in anderen Interiors.Auch nicht, wenn ich PCB über die Konsole eingebe,nur das Script macht außschließlich Freeze und zwar dann, wenn ich in meiner Vault einen Zellenwechsel durchführe. Sobald das PCB KOmmando im Script ausgeführt wird ,passiert es,beim Zellenwechsel in der Underground Hidout Vault.Sorge ich jetzt dafür, daß in meiner Vault das eigentlich PCB Script umgangen wird, läuft es. Die Probleme treten außschließlich beim Zellenwechsel auf.

Was ich allerdings überhaupt nicht verstehe, warum diese Anweisung nicht mehr funktioniert,die korrekt ist. Gebe ich in der Konsole die Anweisung,bekomme ich mein Wahr zurück.

Edit: Ach ja,die Vault ist eine Interior Zelle,da sollte die Anweisung funktionieren, tat sie ja auch schon, aber jetzt nicht mehr :-(