Warning: ob_start(): function 'compress_handler' not found or invalid function name in /www/htdocs/xfmantis/core.php on line 18
0002101: Autospie-Zeit 0 -> keine Autopsie (Übergangslösung) - Mantis
Mantis - X-Force
Viewing Issue Advanced Details
2101 Forschung crash have not tried 18.05.09 13:37 24.06.09 03:00
LennStar  
Natter  
normal  
closed V0.915a05  
fixed  
none    
none V0.915b01  
0002101: Autospie-Zeit 0 -> keine Autopsie (Übergangslösung)
Hab den wilden Bären im Galwar erforschen wollen (Autopsie). Absturz.
Ich denke mal wegen den 0 Forschungsstunden.
Fehlermeldung: Index des laufenden Projektes konnte nicht ermittelt werden 24377300 (C:\XFQuellcode\v0915\game\source\components\ForschList.pas, Zeile 1516)

procedure TForschList.NextRound(Minuten: Integer);
var
  Dummy : Integer;
  DummyFortschrittStatus1 : Single;
  DummyFortschrittStatus2 : Single;
  DummyFortschrittIndex1 : Integer;
  DummyFortschrittIndex2 : Integer;
  DummyProjektIndex : Integer;

  function ForschrittIndex(Rest: Single): Integer;
  begin
    if Trunc(Rest)>20 then //Wenn noch nicht über 80%, dann 0% Chance
      Result := -1
    else if Rest<=0 then //Wenn über 100% -> Maximale Chance
      Result := 10
    else
    begin
      Result := ((20-Trunc(Rest)) div 2);
    end;
  end;
  
begin
  // Forschungsprojekte
  for Dummy:=0 to ForscherCount-1 do
  begin
    DummyProjektIndex := GetIndexOfRunningProjectId(fForscher[Dummy].ID);
    // Forschung
    if DummyProjektIndex >= 0 then
    begin
      //Dies stimmt nicht ganz, da die Runde länger dauern kann, als Projektrestzeit
      Inc(fForscher[Dummy].ForschTime, Minuten);

      //Wie viel Prozent blieb übrig? // division durch Null möglich
      DummyFortschrittStatus1 := Projekte[DummyProjektIndex].Hour/Projekte[DummyProjektIndex].Gesamt*100;

      // Ein Forscher schafft mit Faehigkeit 80 eine Forscher Stunde
      Projekte[DummyProjektIndex].Hour:=Projekte[DummyProjektIndex].Hour-((fForscher[Dummy].Sience/80)*(Minuten/60));

      //Wie viel Prozent bleiben jetzt übrig?
      DummyFortschrittStatus2 := Projekte[DummyProjektIndex].Hour/Projekte[DummyProjektIndex].Gesamt*100;

      //80 Prozent schon erreicht?
      if DummyFortschrittStatus2<=20 then
      begin
        DummyFortschrittIndex1 := ForschrittIndex(DummyFortschrittStatus1);
        DummyFortschrittIndex2 := ForschrittIndex(DummyFortschrittStatus2);
        //Bei überschritten von 80%, bei allen 2% mal würfeln und gucken, ob Durchbruch kommt
        while ((DummyFortschrittIndex1<10) and (DummyFortschrittIndex1<>DummyFortschrittIndex2)) or (DummyFortschrittIndex1=10) do
        begin
          Inc(DummyFortschrittIndex1);
          if (Random(100)+1)<=5+(DummyFortschrittIndex1*8.5) then //1..100 < als 5 + (8,5 * Index) (also 5..90)
          begin
            ProjektEnd(DummyProjektIndex);
// if ProjektCount=0 then exit; //Jim: Ist dies noch richtig? z.B. wegen Patente da unten
            if ProjektCount=0 then
              break; // break ist besser
            DummyFortschrittIndex1 := DummyFortschrittIndex2;
          end;
        end;
      end;
    end
related to 0002163closed Natter Alle Forschungen werden nacheinander sofort fertiggestellt 
 error-18-05-2009-13-30.txt [^] (7,544 bytes) 18.05.09 13:37

Notes
(0003767)
DirkF   
20.05.09 13:37   
0=automatisch erforscht funktioniert anscheinent nicht bei autopsien.

ich werde das erstmal im spielsatz abfangen, indem ich dem Baer eine Forschungszeit=1 gebe.

eine Korrektur zur 915beta halte ich (noch) nicht fuer sinnvoll, da sich dies eventuell mit einer anderen planung in einer zukuenftigen version automatisch erledigt.
(0003768)
Natter   
20.05.09 13:58   
Ich glaube nicht, dass es daran liegt. Der Fehler ist nämlich nicht reproduzierbar.
(0003769)
Natter   
20.05.09 14:13   
Hast du den Spielsatz geändert? Die ID gibt es im GalWar glaube garnicht. Und die ID des Spielsatzes ist bei deiner error.txt auch anders als bei mir (letzteres könnte aber auch daran liegen, dass ich den bei mir geändert habe, da bin ich mir nicht mehr ganz sicher).
(0003771)
LennStar   
20.05.09 17:20   
Ich bin mir ziemlich sicher, dass ich nichts geändert habe. Und wenn man vom Zeitstempel ausgeht, ist das auch sehr unwahrscheinlich. (Allerdings auch nicht logisch?)
GalWar: 13.5. 8:40Uhr
Da stand DirkFs Post schon, ich habe da aber definitiv noch nichts runtergeladen, habs ja erst am Abend gesehen.
Hast du zufällig das hochgeladen und in DirkFs Post den Link hingesetzt und dann deine Ergänung gepostet? Dann würde der Zeitstempel hinhauen. Und damit ist die Version von dir. Du warst doch der Kompilierer, stimmts?
(0003772)
Natter   
20.05.09 17:47   
Wenn du nichts geändert hast, dann war ich das vermutlich (hab die Spielsatz-IDs aus der error.txt verglichen). Das Datum des Posts im Forum stimmt nicht. DirkF hatte den Text Teamintern gepostet, und ich habe ihn später einfach ins Spielsatzerstellerforum verschoben.

Trtzdem ist die ID des Forschungsprojektes merkwürdig, da sie ja im GalWar eigentlich nicht vorkommt.
(0003774)
LennStar   
20.05.09 18:08   
Also falls das die ID ist: 24377300 ist sie bei mir beim Bären auch nicht. 2658443849 ist meine Bär-ID


Vielleicht war ja was korrupt und weil ich neu installiert (und auch runtergeladen habe) stimmts jetzt auch bei mir.
Werd beim GalWar noch mal nachsehen, obs wieder auftritt. Hörst dann aber wahrscheinlich erst Montag von mir.
(0003781)
Natter   
22.05.09 18:19   
Also eventuell hängt es doch mit der 0 zusammen. Die Autopsien werden ja nicht automatisch erforscht, wenn die Zeit 0 ist, sondern erst, wenn sie in der Forschungsseite dran sind.

Das ist aber ein Problem - denn dort wird nicht mit einer Forschungszeit 0 gerechnet (würde normalerweise schon vorher abgefangen, da solche Forschungen nicht im Labor landen sollten). Es gibt eine Division durch 0. Bei mir hat das gerade dazu geführt, dass alle ausstehenden Forschungsprojekte in der gleichen Runde erforscht wurden.

DummyFortschrittStatus1 := Projekte[DummyProjektIndex].Hour/Projekte[DummyProjektIndex].Gesamt*100;
DummyFortschrittStatus2 := Projekte[DummyProjektIndex].Hour/Projekte[DummyProjektIndex].Gesamt*100;
(0003798)
DirkF   
23.05.09 18:44   
Ich habe die Zeit für den Bären jetzt angehoben.

Ansonsten würde ich vorschlagen das im Editor abzufangen (Ticket-Titel entsprechend geändert), da sich das Thema mit einigen Planungen für die nächsten Versionen irgendwann automatisch erledigt, und Änderungen an der Forschungsliste bis dahin problematisch werden könnten...
(0003799)
Natter   
23.05.09 19:00   
Ich hab jetzt noch eine andere Variante gewählt. Bei ForschTime=0 wird garkeine Autopsie verfügbar (damit auch kein Eintrag in die UFOPädie). Das ist erstmal eine Übergangslösung, und kann sich nach Überarbeitung der ForschList nochmal ändern.