Visa ett inlägg
Gammal 2015-02-18, 18:42   #4
korvtiger
Medlem
 
Reg.datum: Jan 2008
Ort: Uppland, Sverige
Inlägg: 2 728
Thumbs up

Jo, men då måste det vara null-checks, vilket är helt korrekt att använda där då det är en generisk scriptfil som ska kunna användas även på lok som inte har de olika delarna (fire_plates, left_window ... etc.. ).

Kod:
DefaultSteamCabinData cd = cast<DefaultSteamCabinData>(loco.GetCabinData());
if (cd)
    UpdateCabinFromSavedData(cd);
else
{
   cd = CreateCabinSavedData();
   loco.SetCabinData(cd);
}
Men då är någonting väldigt skumt. Om denna koden är den som ditt script använder, så kan inte cd vara null! För först försöker man hämta sparad CabinData och om den visar sig vara null (= det finns ingen sparad data) så skapas en ny sådan och kopplas till loket.
Det enda misstaget som jag kan tänka på såhär, utan att få se hela koden är om din kod ärver denna kod från klassen DefaultCabin(ev. via DefaultStreamCabin) och override:ar den metoden som koden oven ligger i. Är så fallet? Kolla då att du anropar superklassens metod överst i den overridade metoden, annars så körs inte den koden, vilket skulle förklara att cd är null, då den aldrig initialiseras. Vill minnas att anrop till superklasses metod heter inherited(); i Trainz scriptspråk, eventuellt inherited.methodName().

Får du samma scriptfel på Aurans ånglok? För själv har jag aldrig upplevt liknande fel på Aurans lok. (kör TS2010 44088)
__________________
-k-
korvtiger besöker inte forumet just nu   Svara med citat