![]() |
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: Jun 2010
Ort: Yxlan, Norrtälje
Inlägg: 1 345
|
![]()
Coal xxx % sköts av Aurans bas programvara. Liksom hastighet,vatten och ångtryck.
Ångtrycket och hastigheten kan du läsa av, vilket jag gör. Jag gjorde snabbtest igår kväll och lade in ett villkor: Om "Max-coal-mass" av nån konstig anledning blir 0, vilket bara läses in på ETT ställe, så ersätt detta värde fr.o.m. nu med ett DEFAULT värde. Fungerar. MEN: Då dumpade istället "max-Fire-Temperature". Se några rader längre ned i koden. MÄRK: Dessa 2 variabler är satta i mina engine konfig filer med värde större än 0! Nåväl, nu fungerar det, men roten till det onda är inte löst! Tycker faktiskt att Auran borde ha lagt in spärren med 0 check. Aurans kod kan studeras i skript biblioteket under defaultsteamcabin.gs för eventuell hugad. Ovan ändringar kommer att läggas in i de 3 olika ånglokshytterna, liksom att förarens manometer kommer att visa trycket i ÅNGLÅDAN och inte pannans tryck, som eldaren har till uppgift att läsa av på sin sida. Dessutom kommer lite fler nya funktioner för S1-ans hytt......generator och luftpump funktioner..... |
![]() |
![]() |
![]() |
#2 |
Medlem
Reg.datum: Jan 2008
Ort: Uppland, Sverige
Inlägg: 2 728
|
![]()
Men får du samma fel alla gånger du använder loket, eller bara vissa och gäller felet på samtliga lok som använder denna kod?
Om det händer varje gång så bör du kontrollera att "max-coal-mass" är korrekt stavat där du hämtar ut värdet med getEngineParam(). Kollade i Content Creators Guide för TC3 och där i listan över attribut i engine-configen så finns bara en "max-fire-coal-mass", men på nästa sida i listan över beskrivningar av attributen så finns både "max-fire-coal-mass" och "max-coal-mass", med och beskrivningarna för dem låter ganska likadana. Frågan är om max-coal-mass är obsolete och ersatt av max-fire-coal-mass? Kolla vad det heter i din engine-config. Sedan var det det andra felet, null reference på rad 263, hur ser koden däromkring ut?
__________________
-k- |
![]() |
![]() |
![]() |
#3 |
Medlem
Reg.datum: Jun 2010
Ort: Yxlan, Norrtälje
Inlägg: 1 345
|
![]()
Andra felet och utdrag från koden:
public float whistle_leverH_val; CabinControl whistle_leverH; whistle_leverH = GetNamedControl("whistle_leverH"); //if (whistle_leverH) // whistle_leverH.SetValue(pbcd.whistle_leverH_val); // if (whistle_leverH) // cd.whistle_leverH_val = whistle_leverH.GetValue(); FEL!!!!! Det är alltså farligt att kopiera rakt upp och ned annans kod utan att kolla. MÄRK: 1. Jag har alltså ingen funktion för whistle_leverH i hytten(Config filen), så whistle_leverH värdet borde blitt NULL. 2. Alternativet är ju att låta lokföraren och eldaren få olika signal ljud! Nu har jag emellertid kommenterat bort ovan checker och det fungerar. Summa summarum: 1. Vad jag alltså gjort är att konstatera att om man korrigerar koden så funkar "allt". 2. Detta är inte slutliga lösningen utan bara "en komma runt" eller "ful" lösning. 3. Hytterna ligger på min to-do lista långt ner och då tänkte jag gå till botten med det hela! 4. Dumpen uppstod inte jämnt i den ursprungliga lösningen => Innebär en genomgång av SAMTLIGA engine config filer (Första felet) |
![]() |
![]() |
![]() |
#4 |
Medlem
Reg.datum: Jan 2008
Ort: Uppland, Sverige
Inlägg: 2 728
|
![]()
Ja? Om du inte har någon whistle_leverH så returnerar ju GetNamedControl() null och när du försöker avreferera null så får du null reference exception, precis det som händer! Varför ligger den koden i sådana fall kvar om du inte har någon whistle lever till loken överhuvudtaget?
Varför skulle lokförare och eldare få olika signalljud (vissla)? Man kan väl bara definiera ett ljud i configen? Whistle_levern är ju bara en spak i hytten som man aktiverar samma vissla med, eller? Men detta fel måste ju uppstå alla gånger du kör loket? Lika så det förra!
__________________
-k- |
![]() |
![]() |
![]() |
#5 | |
Medlem
Reg.datum: Jun 2010
Ort: Yxlan, Norrtälje
Inlägg: 1 345
|
![]() Citat:
Se svar ovan............. |
|
![]() |
![]() |
![]() |
#6 |
Medlem
Reg.datum: Jan 2008
Ort: Uppland, Sverige
Inlägg: 2 728
|
![]()
Förresten, är detta ett generiskt script (alltså ett som används av flera olika loktyper?) Vad jag menar är att om du har ett lok som inte har en whisle_leverH så kan man ju lika gärna plocka bort allt som har med den att göra och spara lite CPU på det, men om det är ett generisk script så kan det ju komma att användas i framtiden, så då kanske du vill ha den koden kvar.
Sedan så har jag tänkt lite till och har kommit fram till detta: * Du har ingen whistle_leverH i configen, rätt? * Alltså borde whisle_leverH vara null efter GetNamedControl(). * if(whisle_leverH) verkar vara någon ful C-liknande null-check. (i C är NULL definierad som 0 och 0 är ekvivalent med false, därav att man kan göra så) Det borde innebära att kodraden som null-referensen inträffar på bara körs om whisle_leverH inte är null. Alltså kan whistle_leverH inte vara null! * Om whistle_leverH hade varit null, så hade dessutom du fått samma null-reference exception på referensen i satsen ovan, whistle_leverH.SetValue(pbcd.whistle_leverH_val), vilket inte är fallet. Alltså måste detta innebära att whisle_leverH inte är null. Detta i sin tur innebär att det måste vara pekaren cd som är null. Vad är cd av för typ? För att man har två spakar som kan användas för att aktivera visslan, kanske? De måste ha två unika namn. Vad H står för vet jag dock inte.
__________________
-k- |
![]() |
![]() |
![]() |
#7 | |
Medlem
Reg.datum: Jun 2010
Ort: Yxlan, Norrtälje
Inlägg: 1 345
|
![]() Citat:
Se svaren ovan......... |
|
![]() |
![]() |