![]() |
Om det här är ditt första besök, se till att gå till vår FAQ (finns även länk till FAQ i navigeringsmenyn ovan). Du kan behöva att registrera dig innan du kan posta (finns även en länk till registrering i navigeringsmenyn ovan). För att titta på inlägg, välj det forum som du vill besöka från de som är listade nedan. |
|
![]() |
|
Ämnesverktyg | Visningsalternativ |
|
![]() |
#1 |
Medlem
Reg.datum: Jan 2008
Ort: Uppland, Sverige
Inlägg: 2 728
|
![]()
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); } 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- |
![]() |
![]() |
![]() |
#2 |
Medlem
Reg.datum: Jun 2010
Ort: Yxlan, Norrtälje
Inlägg: 1 345
|
![]()
Korvtiger:
Då du verkar så insatt i kodningen så LOVAR jag att gå till botten vad som är felet! Jodå, även andra ånglok har fått RÖD felindikation med andra hytter, men jag noterade bara detta. Kom ej ihåg vad för ånglok........ |
![]() |
![]() |
![]() |
#3 |
Medlem
Reg.datum: Jun 2010
Ort: Yxlan, Norrtälje
Inlägg: 1 345
|
![]()
Jo, jag tog och laddade hem den nuvarande officiella tender hytten bara för att konstatera att den röda indikatorn tänds.
Så var det och dax att krypa in i koden: Gjort nedan ändringar avseende 1:a felet: Tar nu hänsyn till 2 input parameterar för att kunna beräkna maxCoalMass: Kod:
if((maxCoalMass = loco.GetEngineParam("max-coal-mass")) == 0) maxCoalMass = loco.GetEngineParam("max-fire-coal-mass"); Kod:
if(maxCoalMass > 0) firebox.SetNamedValue("amount-burning-coal", loco.GetEngineParam("coal-mass") / maxCoalMass); else firebox.SetNamedValue("amount-burning-coal", loco.GetEngineParam("coal-mass") / 520); // default värde 2:a felet. Hämtade hem den nuvarande aktiva ånglokshytten från "nätet" och fann till min förvåning. att jag under nån editerings process tagit bort H:t i whistle_leverH!!!!!!!!!!!!!!!!!!! Alltså: Kod:
if (whistle_lever) whistle_leverH.SetValue(pbcd.whistle_leverH_val); Vidare så har jag tydligen utgått från enligt min config fil: Code copied mainly from PB15 steam cabin script file (Kommer själv inte ihåg detta!) |
![]() |
![]() |
![]() |
#4 |
Medlem
Reg.datum: Jan 2008
Ort: Uppland, Sverige
Inlägg: 2 728
|
![]()
På det första felet så tror jag nästan att du kan byta ut den koden till bara:
maxCoalMass = loco.GetEngineParam("max-fire-coal-mass"); Har kollat runt på nätet och har knappt hittat något om max-coal-mass annat än i CCG där både den och max-fire-coal-mass finns, som jag nämnt tidigare. Så jag tror att max-coal-mass helt enkelt är en felskrivning och smugit sig in och hängt kvar. Nästan samtliga lok som jag har installerade använde max-fire-coal-mass och om man försöker att skapa en engine-config i Content Creator Plus så finns inte ens max-coal-mass som attribut att lägga till. Jag misstänker därför att det är en felskrivning och om du bara ser till att använda max-fire-coal-mass på alla dina steam-engine-configs så skall det inte vara några problem. Och din upptäckt förklarar ju det andra felet.
__________________
-k- |
![]() |
![]() |