PBeM-Spiele
Aktuelle Zeit: 21.03.2019 04:25

Alle Zeiten sind UTC + 1 Stunde




Ein neues Thema erstellen Auf das Thema antworten  [ 4 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Kartentool
BeitragVerfasst: 28.12.2018 19:06 
Offline
PBEM-Gott
PBEM-Gott
Benutzeravatar

Registriert: 23.02.2002 19:29
Beiträge: 2136
Wohnort: Vestfold, Norwegen
Titel: Eressea Spielleiter
Bei der Entwicklung meines Vorlage-Klons ist ein Tool abgefallen, mit dem man Karten auf Basis der Regions-Ids mergen kann. Ich weiß, das Magellan das auch kann, aber ich brauchte das für die Kommandozeile.

Leider ist es immer so, dass ich damit Windows-Nutzer kaum erreiche, deshalb habe ich mir extra Mühe gegeben, und das als EXE kompiliert, mit einer .BAT Datei und Beispiel-CRs einer alten Partei von mir. Alles Zusammen als ZIP im Anhang zu diesem Posting:
Dateianhang:
Dateikommentar: Karten-Mergetool
merge.zip [107.07 KiB]
14-mal heruntergeladen


Falls jemand Windows benutzt, würde ich mich freuen, wenn ihr das mal probiert. Die merge.bat Datei enthält ein Beispiel für den Aufruf:
Code:
VORLUA.EXE enno.cr 3cpj 1


Das bedeutet, dass die Datei enno.cr erstellt werden soll (wenn sie bereits existiert, wird sie als erstes geladen), und anschließend die Dateien 1-3cpj.cr, 2-3cpj.cr usw, bis keine weitere Datei gefunden wird. Meine Partei hat in Runde 2 die Nummer gewechselt, deshalb folgt ein weiterer Aufruf:
Code:
VORLUA.EXE enno.cr enno 2


Damit wird die soeben erstellte Datei enno.cr eingelesen, und 2-enno.cr etc. werden zugefügt, und sobald 7-enno.cr nicht gefunden wird, wird eine neue enno.cr Datei geschrieben. Alle Details, die nicht wichtig sind für eine Karte, werden unterwegs entfernt, man kann das Resultat also getrost mit anderen Spielern austauschen.

Das ist wohlgemerkt kein fertiges Produkt. Man muss die .BAT Datei selber anpassen, es gibt kaum Fehlermeldungen, und mit Karten ohne Regions-Id kommt es nicht klar. Dafür erkennt es automatisch, wenn der Ursprung von zwei Karten nicht der selbe ist, und passt spätere Reporte an den Ursprung des ersten an. Man kann damit z.B. eine Karte von Eigensichtungen verwalten, wenn man alle alten Reporte behalten hat. Informationen aus späteren Reporten ersetzt immer die aus neueren, wobei ich derzeit nicht auf die Runde im Report gucke, sondern auf den Dateinamen.

Wer den "Datei nicht gefunden" Fehler am Ende vermeiden will, kann als letzten (optionalen) Parameter noch eine maximale Rundenzahl angben, nach der die Verarbeitung stoppt.

Wer sich mit Lua etwas auskennt, kann in merge.lua gucken, wo der spannende Teil der Verarbeitung passiert.

Wenn das Programm nicht startet, weil es über eine fehlende DLL klagt, muss die Support-Dateien für Visual Studio 2015 installieren (für x86 CPUs), die gibt es hier bei Microsoft: https://www.microsoft.com/en-us/downloa ... x?id=48145


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Kartentool
BeitragVerfasst: 04.01.2019 11:09 
Offline
Anfänger
Anfänger
Benutzeravatar

Registriert: 20.09.2003 10:47
Beiträge: 34
Hi Enno. Hab das gerade mal ausprobiert, aber die Einheiten werden nach dem mergen alle nicht angezeigt? Jetzt hab ich dein Posting nochmal gelesen, und da steht das natürlich drin. Aber wozu soll das dann gut sein? Kann Magellan das nicht auch über die Kommandozeile? Kann mich da so schwach dran erinnern.

lg Jutta


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Kartentool
BeitragVerfasst: 04.01.2019 11:19 
Offline
PBEM-Gott
PBEM-Gott
Benutzeravatar

Registriert: 23.02.2002 19:29
Beiträge: 2136
Wohnort: Vestfold, Norwegen
Titel: Eressea Spielleiter
Hi Jutta,

das ist Absicht, dass das alles raus filtert, was keine Karte ist. Ob Magellan das kann, ist für mich als Java-Verweigerer irrelevant.

Generell ist das ein Proof-Of-Concept für die Bearbeitung von CRs mit Lua. Das soll bei meiner Partei Befehle automatisieren und eine Zugvorlage erstellen, oder einen CR, den ich in CsMap einlesen kann. Dass dabei ein allgemein nützliches Tool abgefallen ist, ist lediglich ein glücklicher Zufall.

Wenn Du willst, dass z.B. der neueste Report nicht gefiltert wird, musst Du den Code in merge.lua anpassen, oder ein neues Skript schreiben. Der Code ist zumindest für Programmierer nicht schwer zu lesen, das war der Zweck der Übung, da eine existierende Sprache wie Lua zu benutzen (die Sprache von Vorlage ist, ahem, etwas ungewöhnlich).

Wenn es gewünscht wird, schreibe ich mal Dein Vorlage-Tutorial auf dieses neue Tool um, aber die Umfrage im Vorlage-Thread sieht eher so aus, als wenn kaum jemand Vorlage für so etwas benutzt.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Kartentool
BeitragVerfasst: 19.01.2019 20:33 
Offline
PBEM-Gott
PBEM-Gott
Benutzeravatar

Registriert: 23.02.2002 19:29
Beiträge: 2136
Wohnort: Vestfold, Norwegen
Titel: Eressea Spielleiter
Das ganze war ja erst einmal ein Prototyp, ich habe das ein wenig vereinfacht (indem ich den Code verkompliziert habe) und einige Bugs gefixt. Neue Testversion kommt hier:

Dateianhang:
Dateikommentar: Version 3
vorlua.zip [93.48 KiB]
7-mal heruntergeladen


Mein neues Skript macht aus einer Serie von CRs einen Gesamt-CR, in dem die jeweils letzten Informationen einer Region stehen, es merkt sich also vor allem Ressourcen, Straßen, Luxuspreisen und Gebäuden in der Region, und CsMap zeigt die an, auch wenn ich gerade keine Einheit in der Region habe. Es gibt dafür zwei Aufrufformate.

Angenommen, ich habe ein Verzeichnis reporte, in dem alle meine CRs vom Server liegen, und ein Verzeichnis tools, in den ich die ZIP-Datei extrahiert habe, beide im selben eressea Verzeichnis.

Meine Partei ist in Runde 1094 als Partei cf2t gestartet, ich habe sie danach sofort in wiki umbenannt. Einen Gesamt-CR erstelle ich dann, indem ich an der Kommandozeile in den Reporte-Verzeichnis wechsele, und von dort z.B. folgenden Aufruf mache:

Code:
..\tools\vorlua.exe main.lua import 1094-cf2t.cr ..\wiki.cr -- wiki 1095


Wörtlich: Lies die Datei 1094-cf2t.cr ein, und importiere dann die CRs der Partei wiki, beginnend mit Woche 1095. Sobald ein Report nicht gefunden werden kann, bricht das Programm mit einer Meldung ab, und speichert das Resultat unter dem Namen wiki.cr im übergeordneten Verzeichnis.

Code:
1108-wiki.cr    No such file or directory


Den Report für Woche 1108 habe ich noch nicht. In folgenden Wochen möchte ich gerne diesen Report mit weiteren Reporten anreichern:

Code:
..\tools\vorlua.exe main.lua import 1094-cf2t.cr ..\wiki.cr -- wiki 1108


Dieser Befehl liest alle wiki-CRs ab Woche 1108, wieder bis es einen nicht findet.

Manchmal möchte ich meinen Report als Karte für meine Verbündeten exportieren, ohne meine Einheiten und Schiffe. Das geht mit diesem Befehl, aufgerufen aus dem übergeordneten Verzeichnis:

Code:
tools\vorlua tools\main.lua export wiki.cr map.cr


Wörtlich: Lade den Report wiki.cr, wirf alles weg, was nicht gezeigt werden soll, und schreibe eine Datei map.cr.

Der Code ist so geschrieben, dass man neue Kommandos einfach selber bauen kann, alle Logik passiert in den Lua Dateien, und die beiden Kommandos export und import sind eigene Dateien. Wenn man eigene Kommandos bauen will, z.B. um Karten ohne Gebäude zu exportieren, kann man die einfach unter einem neuen Namen kopieren (z.B. export.lua nach map.lua kopieren), die gewünschte Änderung vornehmen, und dann im Programmaufruf das export durch map ersetzen.


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 4 Beiträge ] 

Alle Zeiten sind UTC + 1 Stunde


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 9 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
cron
Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
Webhosting by sunrise design ohg