Warning: ob_start(): function 'compress_handler' not found or invalid function name in /www/htdocs/xfmantis/core.php on line 18
0002482: Absturz bei der Kartengenerierung - Mantis
Mantis - X-Force
Viewing Issue Advanced Details
2482 Bodeneinsatz crash always 18.08.11 01:40 24.08.11 17:41
Kreks  
 
normal  
confirmed V0.917a03  
open  
none    
none  
0002482: Absturz bei der Kartengenerierung
Irgendwas klappt bei der Kartengenerierung im Spiel nicht.
Hinweis: dieser Fehler trat in einer internen Testversion 917a03a auf.

Exceptionklasse: String = EAssertionFailed
Seite: String = TEinsatzIntro
Exception an Adresse: Hex = $005D2191
Exception Message: String = Assertion fehlges (C:\XFQuellcode\v0917\game\source\components\MapGenerator.pas, Zeile 507)
------------------------------------------------------------------------------------------
Stackdump, Textstart $00401240
*********************************************************************************************************************
Assertion fehlges (C:\XFQuellcode\v0917\game\source\components\MapGenerator.pas, Zeile 507)
$005D2191 MapGenerator.pas 511 Size.cx:=-1;
$005D218C MapGenerator.pas 507 Assert(Compile(fSkripts[fSkriptIndex].Skript));
$005C065A DXIsoEngine.pas 2944 fMapGenerator.Generate(Einsatz) ;
$005B8E34 BodenEinsatz.pas 215 Engine.ISOMap.CreateMap(fEinsatz);
$005B8808 EinsatzIntro.pas 410 fEinsatzPage.LoadData;
$005B8473 EinsatzIntro.pas 294 StartEinsatz;
$0063868C DXContainer.pas 2628 if Assigned(fOnClick) then fOnClick(Self);
$0051026E DXBitmapButton.pas 174 inherited;
$00639A22 DXContainer.pas 3338 fHotKeys[Dummy].Component.DoClick;
$00635868 DXContainer.pas 1173 if ActivePage<>nil then ActivePage.KeyPress(Msg.CharCode,State);
$00451E97 Controls.pas 5143 Dispatch(Message);
$00456A94 Controls.pas 7246 inherited WndProc(Message);
$00451A44 Controls.pas 5018 if Self <> nil then WindowProc(Message);
$0066FD19 frmMain.pas 202 GameContainer.Perform(WM_CHAR,Word(Key),0);
$004587C2 Controls.pas 8058 if Assigned(FOnKeyPress) then FOnKeyPress(Self, Key);
$0045882F Controls.pas 8074 KeyPress(Ch);
$0045886A Controls.pas 8083 if not DoKeyPress(Message) then inherited;
$00451E97 Controls.pas 5143 Dispatch(Message);
$00456A94 Controls.pas 7246 inherited WndProc(Message);
$00467169 Forms.pas 3284 inherited WndProc(Message);
$0050FB83 DXInput.pas 2243 DefWindowProc(Message);
$00484921 DXClass.pas 572 FWindowProc(Message, FDefWindowProc);
$0049C81F DXDraws.pas 4569 DefWindowProc(Message);
$00484921 DXClass.pas 572 FWindowProc(Message, FDefWindowProc);
$00456152 Controls.pas 7021 WindowProc(Message);
$0042CA05 classes.pas 11571 MOV EAX,[ECX].Longint[4]
--------------------------------
*********************************************************************************************************************
 error-18-08-2011-01-20.txt [^] (5,934 bytes) 18.08.11 01:40

Notes
(0004568)
Natter   
18.08.11 15:32   
Hast du mal die entsprechende Map bzw. das verwendete Skript? Anscheinend gibts da einen Fehler beim compilieren. Startet es in medit ohne Fehler?
(0004569)
Kreks   
18.08.11 18:46   
program wwJagdImWald;

const
  ROOMSIZE = 30;

//There shall be always the jeep and some part of the woods
procedure CalculateMapSize(Units: Integer);
begin
  MapWidth:=2;
  MapHeight:=1;
end;

procedure GenerateMap;
begin
  CopyRoomToPos(0,0,'Jeep');
  CopyRoomToPos(1 * ROOMSIZE,0,'Wood' + inttostr(random(3) + 1));

end;

begin
  //No more Code
end.
(0004570)
Kreks   
18.08.11 18:48   
Was meinst du mit starten in medit? Die Syntaxerkennung schreit nicht auf, allerdings wenn ich bei den Einstellungen meinen Spielsatz zum testen einstellen will, sagt er mir, dass ist kein gültiger Spielsatz.
(0004571)
Natter   
18.08.11 23:04   
Also erstmal musst du die Kartengröße in Feldern angeben, z.B.

procedure CalculateMapSize(Units: Integer);
begin
  MapWidth:=60;
  MapHeight:=30;
end;

Wenns dann immernoch nicht klappt bitte das Mapfile anhängen (oder den Spielsatz - falls du in der Map eigene Tilesets benutzt).

Wenn die falschen Kartenmaße die Ursache waren, sollte man CopyRoomToPos so anpassen, dass eine ungültige Position keinen Fehler verursacht. Denkbar wäre z.B. ein Rückgabewert, der bei Bedarf im Skript abgefragt werden könnte.
(0004572)
Kreks   
24.08.11 11:58   
Jetzt funzt alles, gebt mir noch ein paar Tage zum Testen, dann bin ichs.