Du bist nicht angemeldet.
Seiten: 1
Hallo ani,
klar doch.
Das sind dann verschiedene Sendungen, bei denen das passiert. Während die Übernahme der Einstellungen zwischen den Sendungen von "Helene Bloombergs Schlaf dich reich" noch funktionierte, hat der Wechsel zur "Kaffeefahrt" zu dem Programmabsturz geführt.
Grüße,
Martin
Hallo zusammen,
ich habe nun nach vielen Jahren TVTower wiederentdeckt und stelle mit Begeisterung meinen programplan zusammen.
Ich habe einen nachstellbaren Programmabsturz im Supermarkt.
Wenn man mehrere Sendungen für die Produktion zusammenstellt, dabei die Option "Einstellungen übernehmen" aktiviert, aber manch eine Rolle nicht so ganz zum vorherigen Eintrag passt, dann stürzt das Programm ab.
Das passiert, wenn man die Produktionen von oben nach unten durchgeht, aber auch wenn man von unten nach oben zu einer bereits bestückten, aber nicht gekauften Produktion springt.
In der Datei game.screen.supermarket.production.bmx habe ich zwei Stellen ausgemacht, bei denen quasi eine IndexOutOfRangeException bei dem Befüllen von Arrays ausgelöst wird. (Ich komme von anderen Programmiersprachen)
Im folgenden findet ihr meine korrigierte Codestellen.
Bei dem Kommentar '--- MS, 07.08.2025: Bedingung eingefügt habe ich If-Abfragen eingefügt. Das ist mein erster Tag, an dem ich BlitzMax-Code lese. Ich habe also den Code in Gänze noch nicht durchblickt, vielleicht findet ihr ja eine an die Programmlogik besser angepasste Lösung als diese.
'store old cast by their job
Local oldCastByJob:TPersonBase[][] = New TPersonBase[TVTPersonJob.GetCastJobs().Length][]
For Local jobID:Int = EachIn TVTPersonJob.GetCastJobs()
Local oldCastGroup:TPersonBase[] = takeOverConcept.GetCastGroup(jobID)
Local jobIndex:Int = TVTPersonJob.GetIndex(jobID)
'--- MS, 07.08.2025: Bedingung eingefügt
If jobIndex > 0 And jobIndex < oldCastByJob.Length
For Local oldCast:TPersonBase = EachIn oldCastGroup
oldCastByJob[jobIndex]:+ [oldCast]
Next
EndIf
Next
'find the best matching old cast (same job, correct gender)
For Local castIndex:Int = 0 Until currentProductionConcept.cast.Length
Local job:TPersonProductionJob = currentProductionConcept.script.jobs[castIndex]
If Not job.preselectCast
Local jobIndex:Int = TVTPersonJob.GetIndex(job.job)
Local gender:Int = job.gender
'--- MS, 07.08.2025: Bedingung eingefügt
If jobIndex > 0 And jobIndex < oldCastByJob.Length
Local oldCastList:TPersonBase[] = oldCastByJob[jobIndex]
For Local oldCastIndex:Int = 0 Until oldCastList.Length
Local oldCastPerson:TPersonBase = oldCastList[oldCastIndex]
If Not oldCastPerson Then Continue
If gender > 0 And gender <> oldCastPerson.gender Then Continue
currentProductionConcept.SetCast(castIndex, oldCastPerson)
'make a cast member once used unavailable
oldCastList[oldCastIndex] = Null
Exit
Next
EndIf
EndIf
Next
Beste Grüße,
Muesli
Seiten: 1