Autor |
Mitteilung |
|
verfasst am: 20.07.2011, 14:56 · Edited by: Natter
|
Programmierer, allgemeines
Registrierdatum: 06.06.2004, 17:19
Beiträge: 3186
|
Nachdem ich mich endlos mit den doppelten Koordinaten (Felder und Räume) für die Einsatzkarten herumgeschlagen habe, wird es ab der 917a03 keine Räume mehr geben. Nicht falsch verstehen, das betrifft nicht den Karteneditor. Vielmehr wird bei der Kartenerzeugung nicht mehr mit einer festen Anzahl an Räumen gearbeitet (z.B. 3x3), sondern es können beliebig viele Räume auf der Karte an beliebiger Position platziert werden.
Mir ist klar, dass das den Skriptaufwand erhöht. Insbesondere kann es keine automatisch erzeugten Karten mehr geben. Ohne Skript funktioniert ein Einsatz nicht mehr. Auch map_api_FillFreeRooms wird es nicht mehr geben - denn die freien Stellen können ja beliebige Form haben, je nachdem wie man vorher die Räume platziert hat. Die Kartengröße muss ab sofort zwingend per Skript definiert werden (bislang war das optional) - und zwar in Feldern und nicht wie bisher in Räumen. Ein weiterer Nebeneffekt - ich hatte gerade erst medit gefixed, damit man sich beim testen wieder die Raumanordnung anzeigen lassen kann, aber das funktioniert jetzt natürlich nicht mehr. Ich bin noch am überlegen, wie ich eine Alternative umsetzen könnte.
Es wäre schön, wenn sich mal jemand von den Maperstellern zu 'Das Tagebuch des William Walker' melden könnte - ich würde nämlich gern die 917a03 schon mit einer angepassten Version des Spielsatzes veröffentlichen wollen. |
|
verfasst am: 20.07.2011, 19:17
|
Registrierdatum: 22.08.2008, 15:51
Beiträge: 403
|
Prinzipiell bin ich der Mapersteller, ich hab mir nur immer Räume basteln lassen. FillFreeRooms hab ich, glaub ich, sowieso nicht verwendet. Ich verstehe zwar, dass Problem, aber ich sehe zurzeit nicht, wie das alles umgesetzt wird wenn es keine Änderung im Editor gibt, kannst du mal ein Beispielscript posten für folgendes, simple Kartenscript damit man eine Vorstellung bekommt?
procedure GenerateMap;
begin
CopyRoomToPos(0, 0, 'PlaceHolder');
CopyRoomToPos(1, 0, 'PlaceHolder');
CopyRoomToPos(0, 1, 'PlaceHolder');
CopyRoomToPos(1, 1, 'PlaceHolder');
end;
Zitat: Natter ich würde nämlich gern die 917a03 schon mit einer angepassten Version des Spielsatzes veröffentlichen wollen.
Würde mir auch sehr gefallen... hast du schon eine ungefähre Ahnung wann du soweit für 917a03 bist, denn ich bin fast fertig mit einer Inhaltserweiterung allerdings fahr ich am Sonntag wieder für knapp vier Wochen weg und werde bis dahin wahrscheinlich nicht fertig. |
|
verfasst am: 20.07.2011, 19:35
|
Programmierer, allgemeines
Registrierdatum: 06.06.2004, 17:19
Beiträge: 3186
|
Naja, also in deinem Beispiel würden sich nur die Koordinaten ändern. Kommt jetzt natürlich darauf an, wie groß die Räume sind (15x15?). Könnte dann ungefähr so aussehen:
procedure GenerateMap;
begin
CopyRoomToPos(0, 0, 'PlaceHolder');
CopyRoomToPos(15, 0, 'PlaceHolder');
CopyRoomToPos(0, 15, 'PlaceHolder');
CopyRoomToPos(15, 15, 'PlaceHolder');
end;
Und natürlich müsstest du noch die Kartengröße im Skript anpassen.
procedure CalculateMapSize(Units: Integer);
begin
MapWidth:=30;
MapHeight:=30;
end;
Zitat: Kreks Würde mir auch sehr gefallen... hast du schon eine ungefähre Ahnung wann du soweit für 917a03 bist, denn ich bin fast fertig mit einer Inhaltserweiterung allerdings fahr ich am Sonntag wieder für knapp vier Wochen weg und werde bis dahin wahrscheinlich nicht fertig.
Prinzipiell könnte ich sicher eine neue Alpha bis zum Wochenende erstellen (genaugenommen könnte ich dir schon jetzt ein Testsetup hochladen - wobei ich die Standardkarten dann noch nicht umgestellt hätte). Allerdings ist die Kartenskriptumstellung bisher die einzige größere Änderung. Von daher macht es wohl auch nichts, wenn wir damit noch eine Weile warten. Wieviele Maps benutzt du denn inzwischen? |
|
verfasst am: 20.07.2011, 19:41 · Edited by: DirkF
|
Admin, Spielsatz GalWar
Registrierdatum: 31.08.2005, 21:51
Beiträge: 5596
|
Anstelle der Raumkoordinaten würde man mit Feldkoordinaten arbeiten. Aus einer 2x2-Räume-Karte mit den Koordinaten 0-1 wie in dem Beispielskript von Kreks würde dann eine 30x30-Felder-Karte (wenn man jeden Raum mit 15x15 Feldern ansetzt).
Der Befehl zur Platzierung würde dann z.b. nicht mehr auf die Raumposition 1,1 sondern auf die Feldposition 15,15 gehen, um dasselbe zu erreichen.
Danach könnten die existierenden Räume aber auch in Zwischenpositionen gesetzt werden, z.B. 10,13 statt 15,15 und dann vorher platzierte Räume teilweise überlagern.
Das hat sowohl Vor- alsauch Nachteile, denn auch wenn die Karten dann wesentlich variabler aufgebaut werden können und nicht mehr die Gitterstruktur haben, muss dann der Kartenskripter wesentlich sorgfältiger vorgehen um keine ungültigen Karten zu erzeugen...
edit: Natter war schneller |
|
verfasst am: 20.07.2011, 20:07
|
Registrierdatum: 06.06.2011, 12:20
Beiträge: 50
|
Wow, das ist doch mal eine tolle Änderung. :)
Müssen weiterhin die Räume im MapEdit die gleiche Größe haben? Sonst könnte man z.B. ein großen Straßen-Raster machen und in den Lücken die Häuser setzen.
Bzw. einen großen Gänge-Raster und dazwischen einzelne Basis-Einrichtung einfügen. |
|
verfasst am: 20.07.2011, 20:28
|
Programmierer, allgemeines
Registrierdatum: 06.06.2004, 17:19
Beiträge: 3186
|
Zitat: Aropretim Müssen weiterhin die Räume im MapEdit die gleiche Größe haben?
Nein natürlich nicht - obwohl in Mapedit noch der Warnhinweis kommt. Im Spiel klappt es aber schon problemlos. Langfristig sollten die Karten genau in die Richtung gehen, die du andeutest. Bestehende Karten wird man natürlich einfach durch Koordinatentransformation im Skript anpassen, ohne die neuen Möglichkeiten auszuschöpfen, aber für neue Karten ergeben sich jede Menge neue Möglichkeiten. |
|
verfasst am: 22.07.2011, 09:04
|
Registrierdatum: 22.08.2008, 15:51
Beiträge: 403
|
Zitat: Natter Von daher macht es wohl auch nichts, wenn wir damit noch eine Weile warten. Wieviele Maps benutzt du denn inzwischen?
Also ich verwende nur noch selbsterstellte Karten, und das neue Mapscript ist eh total einfach. Wenn ihr wirklich solange warten mit der 917a3 warten wollte (also etwa 1 Monat, drei Wochen bin ich weg, dann kann ich den Spielsatz innerhalb einer Woche fertigstellen), dann kannst mir einen Vorabdownloadlink in meinen Unterbereich stellen. |
|
verfasst am: 22.07.2011, 21:45 · Edited by: Aropretim
|
Registrierdatum: 06.06.2011, 12:20
Beiträge: 50
|
Also den einen Monat würde ich auch noch gern warten. Dafür können vielleicht noch ein paar andere Features mit in die neue Alpha eingebaut werden. Nützlich wären imo z.B folgende Funktionen/Prozeduren für MapScripts:
- procedure DeleteTilesOnPos(PosX:Integer, PosY:Integer, Height:Integer, Width:Integer);
Beschreibung: Löscht alle Tiles auf einer Position oder einem Gebiet.
Beispiel: DeleteTilesOnPos(15,5,3,2); // Löscht alle (Ground-, Wall-, Object- und Render-) Tiles auf den Positionen:
15/5, 15/6, 16/5, 16/6, 17/5 und 17/6. Rendertiles natürlich nur diejenigen, die auf den Positionen ihr Offset haben.
- procedure OverwriteRoomOnPos(PosX:Integer, PosY:Integer, Room:String);
Beschreibung: Löscht zunächst alle Tiles auf den betreffenden Positionen und kopiert anschließend den gewählten Raum. Im Prinzip wie CopyRoomToPos, nur wird hier der Bereich vorher gesäubert.
CopyRoomToPos sollte aber so bleiben (it's not a bug, it's a feature ;-) ), damit man z.B. nachträglich Autos auf die Straßen setzen kann, ohne gleich die ganze Straße ersetzen zu müssen.
- function GetRoomSize(Room:String): Array [0..1] of Integer;
Beschreibung: Bestimmt die Größe eines Raumes und speichert sie in einem Array. Nützlich z.B. bei unterschiedlich großen Häusern.
Beispiel: SetLength(DummyArray,2);
RoomName := 'DummyRoom'+IntToStr(random(5)+1)
DummyArray := GetRoomSize(RoomName)
Mehr fällt mir im Moment nicht ein. |
|
verfasst am: 12.08.2021, 10:53
|
Registrierdatum: 29.07.2021, 17:26
Beiträge: 8
|
The command for placing would then, for example, no longer go to room position 1,1 but to field position 15,15 in order to achieve the same thing. Thank you for sharing.
__________________
Front Door Fabrication |
|
verfasst am: 27.11.2021, 14:52
|
Registrierdatum: 29.10.2021, 14:57
Beiträge: 763
|
|
|
verfasst am: 23.11.2023, 01:36
|
Registrierdatum: 22.11.2023, 07:10
Beiträge: 170245
|
|
Registrierdatum: 22.11.2023, 07:10
Beiträge: 170245
|
|
Registrierdatum: 22.11.2023, 07:10
Beiträge: 170245
|
|
Registrierdatum: 22.11.2023, 07:10
Beiträge: 170245
|
|
|
verfasst am: 02.08.2024, 02:03
|
Registrierdatum: 22.11.2023, 07:10
Beiträge: 170245
|
|
|
verfasst am: 01.09.2024, 23:52
|
Registrierdatum: 22.11.2023, 07:10
Beiträge: 170245
|
|
|
verfasst am: 02.11.2024, 07:11
|
Registrierdatum: 22.11.2023, 07:10
Beiträge: 170245
|
|