Hint

After clicking "OK" a connection to Facebook will be established so that you can share the post there with your Facebook account.

 

altes Kartenkopierprogramm

Priester
Avatar
Gender: n/a
Posts: 1748
Registered: 01 / 2007

VPN-Key:
Betreff:

altes Kartenkopierprogramm

 · 
Gepostet: 03.01.2009 - 12:18  · #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.

You can have this text translated into the following languages:

Similar topics:

Minenarbeiter
Avatar
Gender: n/a
Location: Breda
Homepage: ccdej.nl
Posts: 393
Registered: 09 / 2005

VPN-Key:
Betreff:

Re: altes Kartenkopierprogramm

 · 
Gepostet: 03.01.2009 - 14:41  · #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

You can have this text translated into the following languages:

Priester
Avatar
Gender: n/a
Posts: 1748
Registered: 01 / 2007

VPN-Key:
Betreff:

Re: altes Kartenkopierprogramm

 · 
Gepostet: 03.01.2009 - 16:14  · #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

You can have this text translated into the following languages:

Minenarbeiter
Avatar
Gender: n/a
Location: Breda
Homepage: ccdej.nl
Posts: 393
Registered: 09 / 2005

VPN-Key:
Betreff:

Re: altes Kartenkopierprogramm

 · 
Gepostet: 03.01.2009 - 23:09  · #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:-)

You can have this text translated into the following languages:

Gewählte Zitate für Mehrfachzitierung:   0

Registered users in this topic

Currently no registered users in this section

The statistic shows who was online during the last 5 minutes. Updated every 90 seconds.

Cookie Consent

This site uses cookies and tracking and (re-)targeting technologies to provide you with the best possible functionality and to constantly improve our website and advertisements.

By selecting "Accept cookies" you allow this website to use these cookies and technologies. This website may share this information with third parties - such as social media advertising partners like Google, Facebook and Instagram - for marketing purposes. Please visit our Privacy Policy (see section on cookies) for more information. There you will also find out how we use the data for necessary purposes (e.g. security).

Manage cookie settings

Please select and accept your cookie settings:

Further information on the data used can be found in the data protection declaration.