Du bist nicht angemeldet.

  1. Übersicht
  2. » Suche
  3. » Von Muesli

#1 Re: Fehler / Bugs » Bugs im Komplettpaket v0.8.3 vom 23.12.2024 » Heute 07:04

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

#2 Re: Fehler / Bugs » Bugs im Komplettpaket v0.8.3 vom 23.12.2024 » Gestern 20:30

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

  1. Übersicht
  2. » Suche
  3. » Von Muesli