Hinweis

Nach Klick auf "OK" wird eine Verbindung zu Facebook oder twitter hergestellt. Dadurch werden ggfs. Daten an diese Plattformen übermittelt.

 

altes Kartenkopierprogramm

maximilius
Priester
Avatar
Geschlecht: keine Angabe
Beiträge: 1748
Dabei seit: 01 / 2007

VPN-Key:
Betreff:

altes Kartenkopierprogramm

 · 
Gepostet: 03.01.2009 - 12:18 Uhr  ·  #1
Ich hatte vor 2 Jahren ein kleines Turbopascal Programm geschrieben, welches mir ermöglichte, bei den Spezialsumpf und HalberFisch Karten die Startpositionen exakt zu kopieren.

Dieses Programm kann nur 768er Karten zu je 4 mal 5 Kacheln kopieren.
Aufgrund dieser Einschränkung nahm ich mir vor 2 Jahren vor, ein besseres Programm zu schreiben, jedoch kam die Entwicklung der aLobby dazwischen.

Heute erhielt ich erneut eine Anfrage nach meinem Programm, weshalb ich es jetzt so wie es ist hier veröffentliche.

Bedienungsanleiung:
Ladet euch die s3map.exe herunter und schiebt sie in einen Ordner eurer Wahl. (Ein eigens für das Kartenkopieren angelegter Ordner wäre sinnvoll, da die s3map.exe nen Haufen temporärer Datein darin erzeugen wird.)
Dann ladet ihr euch die 20tpl.edm Karte herunter.
Sie besteht komplett aus Wasser Level 8, hat aber in der linken oberen Ecke einen Rahmen aus 1 Pixel Breite Wasser Level 7.

1) Ihr öffnet im Karteneditor die 20tpl.edm Karte und speichert sie unter einem neuen Namen (maximal 8 Zeichen lang!)

2) Im Wasser Level 7 Rahmen erstellt ihr nun eure Insel.
Wichtig: außerhalb des Wasser Level 7 Rahmens muss Wasser Level 8 sein, da es sonst passieren kann, dass die beim Kopieren erstellte Karte nicht mehr vom Karteneditor lesbar ist.

3) Wenn eure Insel fertig gestellt ist, könnt ihr aus Schönheitsgründen eventuell den übrigen Rahmen Wasser Level 7 durch Wasser Level 8 ersetzen.

4) Ihr speichert eure Karte und verschiebt sie in den Ordner, wo sich die s3map.exe befindet.

5) Ihr öffnet ein Dos Fenster (Start -> Ausführen -> "cmd")
Ihr hangelt euch in das Verzeichnis, wo ihr die s3map.exe abgelegt habt.
(Mit "cd .." gelangt ihr einen Ordner höher, mit "cd ORDNERNAME" gelangt ihr in den Ordner)

6) Ihr startet durch Tippen von "s3map" das Kartenkopierprogramm.

7) Nun gebt ihr den Kartendateinamen eurer Karte ein (mit ".edm" am Ende)

8) Nun gebt ihr den Kartendatateinamen der zu erstellenden Karte ein (maximal 8 Zeichen zusätzlich ".edm" am Ende)

9) Jetzt müssten 8 Schritte angezeigt werden, diese dauern eine Weile. Wartet ab, bis "Done." auf dem Bildschirm erscheint.

10) Nun könnt ihr die neu erstelle Karte im Karteneditor öffnen, Verbindungen zwischen den 20 im Moment noch isolierten Inseln schaffen und die Startpositionen der 20 Spieler setzen.

Möchtet ihr beispielsweise nur eine 16er Karte erstellen, macht ihr alles wie bei der 20er beschrieben und radiert am Ende 4 Inseln aus.

Ich werde in den nächsten 3 Jahren nicht dazu kommen, ein besseres Kartenkopierprogramm zu schreiben, aber falls sich jemand anderes damit beschäftigen möchte, ist hier der Quellcode meines bisherigen Programmes (Turbo Pascal)
Code
PROGRAM S3Map2;

VAR
 input, output : FILE OF BYTE;
 temp : BYTE;
 inStr, outStr, zahl : STRING;
 i, ii, iii : LONGINT;

PROCEDURE WriteWater;
VAR
 w : BYTE;
BEGIN
 w := $1B; WRITE(output, w);
 w := $3F; WRITE(output, w);
 w := $81; WRITE(output, w);
 w := $02; WRITE(output, w);
 w := $07; WRITE(output, w);
 w := $0E; WRITE(output, w);
END;

PROCEDURE RW;
BEGIN
 READ(input, temp);
 WRITE(output, temp);
END;

PROCEDURE UntilWater;
VAR
 ok : BOOLEAN;
BEGIN
 ok := FALSE;
 REPEAT
  RW;
  IF temp = $1B THEN
  BEGIN
   RW;
   IF temp = $3F THEN
   BEGIN
    RW;
    IF temp = $81 THEN
    BEGIN
     RW;
     IF temp = $02 THEN
     BEGIN
      RW;
      IF temp = $07 THEN
      BEGIN
       RW;
       IF temp = $0E
        THEN ok := TRUE;
      END;
     END;
    END;
   END;
  END;
 UNTIL ok;
END;

PROCEDURE UntilStart;
VAR
 i : LONGINT;
BEGIN
 FOR i := 1 TO 9210
  DO RW;
END;

PROCEDURE SaveLine(i : LONGINT);
VAR
 zahl : STRING;
 n : LONGINT;
BEGIN
 STR(i, zahl);
 ASSIGN(output, 'TEMP' + zahl + '.DAT');
 REWRITE(output);
 FOR n := 1 TO 918 { 153 }
  DO RW;
 FOR n := 1 TO 3690 { 615 }
  DO READ(input, temp);
 CLOSE(output);
END;

BEGIN
 WRITE('Eingangsdatei: ');
 READLN(inStr);
 WRITE('Ausgangsdatei: ');
 READLN(outStr);
 ASSIGN(input, inStr);
 ASSIGN(output, 'HEAD.DAT');
 RESET(input);
 REWRITE(output);
 UntilWater;
 WRITELN('(1/8) Bis Wasser ...');
 UntilStart;
 WRITELN('(2/8) Bis Start ...');
 CLOSE(output);
 FOR i := 1 TO 191
  DO SaveLine(i);
 WRITELN('(3/8) Zeilen gespeichert ...');
 FOR i := 1 TO 2640384 { 191*768*3*6 }
  DO READ(input, temp);
 WRITELN('(4/8) Bis Boden angelangt ...');
 ASSIGN(output, 'BOTTOM.DAT');
 REWRITE(output);
 WHILE NOT EOF(input)
  DO RW;
 CLOSE(output);
 CLOSE(input);
 WRITELN('(5/8) Boden gespeichert ...');
 ASSIGN(output, outStr);
 REWRITE(output);
 ASSIGN(input, 'HEAD.DAT');
 RESET(input);
 WHILE NOT EOF(input)
  DO RW;
 CLOSE(input);
 WRITELN('(6/8) Kopf bertragen ...');
 FOR i := 1 TO 4 DO
 BEGIN
  FOR ii := 1 TO 191 DO
  BEGIN
   STR(ii, zahl);
   ASSIGN(input, 'TEMP' + zahl + '.DAT');
   FOR iii := 1 TO 5 DO
   BEGIN
    RESET(input);
    WHILE NOT EOF(input)
     DO RW;
    CLOSE(input);
   END;
   WriteWater;
   WriteWater;
   WriteWater;
  END;
 END;
 WRITELN('(7/8) Zeilen bertragen ...');
 ASSIGN(input, 'BOTTOM.DAT');
 RESET(input);
 WHILE NOT EOF(input)
  DO RW;
 WRITELN('(8/8) Boden bertragen...');
 CLOSE(output);
 WRITELN('Done.');
 READLN;
END.
(Oben neben "Code:" sind Pfeile, die die Box vergrößern)

Funktionsweise des Kartenkopierprogrammes:
1) Es wird nach dem ersten Vorkommen von Wasser gesucht (Bitweise) und alles bis dahin in eine temporäre Datei geschrieben.
2) Die Zeilen der oberen linken Ecke werden in temporäre Datein geschrieben
3) Das Ende der Karte (nach dem letzten Wasser) wird in eine temporäre Datei geschrieben.
4) Der Kopf wird in die neue Kartendatei geschrieben
5) Die gespeicherten Zeilen werden 20fach an die neue Kartendatei angehangen.
6) Der Rest der alten Karte wird an die neue ran geschrieben.

lg Stephan
PS: Falls der Anhang nicht angezeigt wird, hier der Direktlink
Der an diesem Beitrag angefügte Anhang ist entweder nur im eingeloggten Zustand sichtbar oder die Berechtigung Deiner Benutzergruppe ist nicht ausreichend.

Ähnliche Themen

CC DeJ
Minenarbeiter
Avatar
Geschlecht: keine Angabe
Herkunft: Breda
Homepage: ccdej.nl
Beiträge: 393
Dabei seit: 09 / 2005

VPN-Key:
Betreff:

Re: altes Kartenkopierprogramm

 · 
Gepostet: 03.01.2009 - 14:41 Uhr  ·  #2
Tolle Sache Maxi:-) nur ein paar fragen noch..

- Du machst in wasser lvl 7 gebiet nur Land? kein karteneinstellung (multi single) oder startposition?
- Und dann wenn 20 Insel hast startposis und mehrspielerkarte?

So hab ichs jedenfalls verstanden..

Ich moechte es mal versuchen dan:-)

lg CC DeJ
maximilius
Priester
Avatar
Geschlecht: keine Angabe
Beiträge: 1748
Dabei seit: 01 / 2007

VPN-Key:
Betreff:

Re: altes Kartenkopierprogramm

 · 
Gepostet: 03.01.2009 - 16:14 Uhr  ·  #3
Ja genau CC DeJ, so muss man es machen.

Beim Land kannst du alles machen:
- Landtyp
- Erhebungen/ Unebenheiten
- Rohstoffe setzen (auch Fische)

Wichtig ist, dass außerhalb des Wasser Level 7 Rahmens Wasser Level 8 ohne Fisch bleibt.

lg Stephan
CC DeJ
Minenarbeiter
Avatar
Geschlecht: keine Angabe
Herkunft: Breda
Homepage: ccdej.nl
Beiträge: 393
Dabei seit: 09 / 2005

VPN-Key:
Betreff:

Re: altes Kartenkopierprogramm

 · 
Gepostet: 03.01.2009 - 23:09 Uhr  ·  #4
Geht wunderbar maxi:-) Es gibt jetzt ne neue 20er die MaxiCanCun.map..lol.
Die Insel muß man zwar klein halten weil sonst der Gegner zu leicht reintoweren kann. Bin sicher ich werde die kartenkopier ofter benuetzen:-)
Gewählte Zitate für Mehrfachzitierung:   0

Registrierte in diesem Topic

Aktuell kein registrierter in diesem Bereich

Die Statistik zeigt, wer in den letzten 5 Minuten online war. Erneuerung alle 90 Sekunden.

Cookie-Einwilligung

Diese Seite verwendet Cookies sowie Tracking-Technologien, um Dir die bestmögliche Funktionalität bieten zu können und um unsere Website stets zu verbessern.

Mit der Auswahl "Zustimmen" erlaubst Du dieser Webseite die Verwendung dieser Cookies und Technologien. Diese Webseite kann diese Daten an Dritte – etwa Social Media-Werbepartner wie Facebook und twitter – zu Marketingzwecken weitergeben. Weitere Informationen findest Du in der Datenschutzerklärung.

Cookie-Einstellungen verwalten

Bitte wähle und akzeptiere Deine Cookie-Einstellungen:

Weitere Informationen zu den verwendeten Daten kannst Du der Datenschutzerklärung entnehmen.