hessenfarmer
Joined: 2014-12-11, 22:16
Posts: 2791
One Elder of Players
Location: Bavaria
|
Posted at: 2024-09-18, 20:43
mann kann schon verschiedene Anteile des Strings auslesen.
Im Prinzip kann man alles auslesen, was mit regulären Suchausdrücken auffindbar ist.
Der Ausdruck '%S+$' bedeutet zum Beispiel: "%S" finde nicht Leerzeichen "+" finde mindestens eins bis unendlich der vorher definierten Zeichen "$" vom Stringende (daher ist das wohl niht ganz richtig und müsste %d+$ heissen (%d steht für Zahlen),
soll ich hier mal jeden einzelne Zeile des Skriptes für besseres Verständnis erläutern?
Top
Quote
|
|
|
Teayo
Topic Opener
Joined: 2015-03-09, 21:11
Posts: 260
OS: Windows 11 Home 64-bit
Version: 1.2.1~rc1
Tribe Member
Location: Deutschland
|
Posted at: 2024-09-20, 12:05
Ok.
Also wenn das Auslesen kein Problem ist, dann ist ja alles gut und es steht dem fast nichts mehr im Wege.
Danke für das Angebot das Skript detailiert zu erklären, aber das ist nicht notwendig. Das hat GPT4 bereits gemacht.
Und wenn ich das richtig verstehe, da dein Skript keine "transform=" Aktion nutzt , wird so auch das transform Schleifen Problem 3 umgangen, korrekt ?
Wird nur eine Überprüfung der vordefinierten Aktionen beim laden vorgenommen oder werden auch Skripte beim laden überprüft ?
Top
Quote
|
|
|
hessenfarmer
Joined: 2014-12-11, 22:16
Posts: 2791
One Elder of Players
Location: Bavaria
|
Posted at: 2024-09-20, 12:58
skripte werden auch überprüft aber anders.
Das Schleifenproblem ist aber kein Überprüfungsproblem sondern ein Einleseproblem von Abhängigkeiten
Top
Quote
|
|
|
Teayo
Topic Opener
Joined: 2015-03-09, 21:11
Posts: 260
OS: Windows 11 Home 64-bit
Version: 1.2.1~rc1
Tribe Member
Location: Deutschland
|
Posted at: 2024-09-25, 15:23
@hessenfarmer
1. Kann man mit so einen Skript was aufgerufen wird auch Zustände speichern ?
Zum Beispiel zu welcher Gruppe die vom Arbeiter ausgewählte Gruppe gehört ( ...wall , ...wall_damaged , ...wall_ruin )
Momentan werden ja die _on_change Gruppen benötigt wegen dem verbrauchen des Granitsteins den der Arbeiter in der Hand hält
und um den Zustand zu speichern , welche Gruppe das Ursprungs Objekt angehörte .
2. Kann man mit dem Skript was im Arbeiter Programm aufgerufen wird , auch dem Arbeiter die Ware die er in der Hand hält , entfernen ?
Wenn das geht , dann werden die Gruppen der "... _ wall_ <mauertyp>_on_change" nicht mehr benötigt .
Im allgemeinen benötige ich dann die construct= Aktion gar nicht mehr .
Gruppen Nummer |
Gruppen Name |
Gruppen Mitglieder |
bauen Erfolg wird zu |
bauen Fehlschlag wird zu |
abbauen Erfolg wird zu |
abbauen Fehlschlag wird zu |
1 |
...wall_place_marker |
1 |
...wall_place_marker_construction |
|
|
|
2 |
...wall_place_marker_construction |
64 |
...wall |
...wall_place_marker |
|
|
3 |
...wall |
64 |
|
|
...wall_damaged |
...wall |
4 |
...wall_damaged |
64 |
...wall |
...wall_damaged |
...wall_ruin |
...wall_damaged |
5 |
...wall_ruin |
64 |
...wall |
...wall_ruin |
|
|
|
Einheiten Insgesamt |
257 |
|
|
|
|
Wenn ich richtig zähle werden dann 4 verschiedene Skripte benötigt , je zwei für bauen und abbauen und von den 2 Skripten davon , eins für Start Arbeit und eins für Ende Arbeit .
Edited: 2024-09-25, 15:24
Attachment: image/png
Top
Quote
|
|
|
Teayo
Topic Opener
Joined: 2015-03-09, 21:11
Posts: 260
OS: Windows 11 Home 64-bit
Version: 1.2.1~rc1
Tribe Member
Location: Deutschland
|
Posted at: 2024-09-29, 23:35
Ok ich nehme mal an das du momentan keine Zeit hast .
Ich habe angenommen das es möglich ist mit einen Skript beim einen Arbeiter die Ware die er in der Hand hält zu entfernen .
Von der Struktur habe ich obrige Tabelle , siehe meinen vorherigen Post umgesetzt .
Jedoch ist nur die 1. und 3. Gruppe (.lua) aktiviert und die restlichen Gruppen (.txt) deaktiviert .
Andere Frage , weil ich gerade beim editieren der .wad\tribes\initialization\units.lua bin , ganz am Ende der Datei ,
also ziemlich weit unten kommt der Abschnitt fastplace (Widelands Dokumentation "Bootstrapping a Tribe") EN ,
Aus der Dokumentation entnehme ich das dieser Abschnitt für die KI Computerspieler gedacht ist . Meine Frage :
In der Dokumentation wird einer Gruppe , zum Beispiel :
military_medium_primary = "empire_outpost",
military_medium_secondary = "empire_barrier",
military_tower = "empire_tower",
Immer nur ein Gebäude zugeordnet .
Was ist aber wenn der Stamm zwei verschiedene Türme hat ?
Die Gruppen ( "military_medium_primary" , "military_medium_secondary" , "military_tower" , ... ) sind ja konstant und fix , das nehme ich zumindest mal an .
Sind aber Listen für einzelne Gruppen erlaubt ?
military_medium_primary = "empire_outpost",
military_medium_secondary = "empire_barrier",
military_tower = [ "empire_tower_a", "empire_tower_b" ]
Dann noch eine Frage , beim editieren der Imperium Minen hatte ich in deren Definitionsdateien ( init.lua ) mal das Schlüsselwort "encyclopedia" oder so ähnlich gesehen .
In der Widelands Dokumentation konnte ich dazu nichts passendes finden .
Kann man die Beschreibungen zu den Einheiten für das Stammeslexikon aus der .wad\tribes\initialization\units.lua
in die .wad\tribes\<unit_type>\<subfolder>\<unit_name>\init.lua verlagern ? Das würde diese übersichtlicher gestalten .
\Widelands\data\tribes\buildings\productionsites\empire\marblemine\init.lua
[programs] :
encyclopedia_granite={
-- just a dummy program to fix encyclopedia
descname = "encyclopedia",
actions={
"consume=ration wine",
"produce=granite:3 marble",
}}
Obwohl ich sehe gerade das ist etwas ganz anderes . Das hat gar nichts mit dem Stammeslexikon zu tun .
Top
Quote
|
|
|
hessenfarmer
Joined: 2014-12-11, 22:16
Posts: 2791
One Elder of Players
Location: Bavaria
|
Posted at: 2024-09-30, 16:10
Teayo wrote:
Ok ich nehme mal an das du momentan keine Zeit hast .
ja ist tatsächlich knapp gerade.
Ich habe angenommen das es möglich ist mit einen Skript beim einen Arbeiter die Ware die er in der Hand hält zu entfernen .
Hatte ich gesehen, vor eoiner Antwort wollte ich noch etwas testen, aber siehe oben. Wahrscheinlich geht das momentan noch nicht so ohne weiteres.
Andere Frage , weil ich gerade beim editieren der .wad\tribes\initialization\units.lua bin , ganz am Ende der Datei ,
also ziemlich weit unten kommt der Abschnitt fastplace (Widelands Dokumentation "Bootstrapping a Tribe") EN ,
Aus der Dokumentation entnehme ich das dieser Abschnitt für die KI Computerspieler gedacht ist .
Diese Annahme ist falsch. Dieser Abschnitt definiert, welche Gebäude mit welchem Tastaturkürzel ohne Nutzung des Baumenüs direkt bzw. schnell platziert werden können. Daher ist auch nur eine 1 zu 1 Zuordnung erlaubt.
Dann noch eine Frage , beim editieren der Imperium Minen hatte ich in deren Definitionsdateien ( init.lua ) mal das Schlüsselwort "encyclopedia" oder so ähnlich gesehen .
In der Widelands Dokumentation konnte ich dazu nichts passendes finden .
Kann man die Beschreibungen zu den Einheiten für das Stammeslexikon aus der .wad\tribes\initialization\units.lua
in die .wad\tribes\<unit_type>\<subfolder>\<unit_name>\init.lua verlagern ? Das würde diese übersichtlicher gestalten .
\Widelands\data\tribes\buildings\productionsites\empire\marblemine\init.lua
~~~~
[programs] :
encyclopedia_granite={
-- just a dummy program to fix encyclopedia
descname = "encyclopedia",
actions={
"consume=ration wine",
"produce=granite:3 marble",
}}
~~~~
Obwohl ich sehe gerade das ist etwas ganz anderes . Das hat gar nichts mit dem Stammeslexikon zu tun .
das programm hat tatsächlich etwas mit dem Stammeslexikon zu tun. Es gibt im Lexikon Abschnitte wo tesxt direkt aus den Units.lua Dateien übernommen wird. Andere Abschnitte werden direkt aus den init.lua Dateien gelesen.
hier wird der Anteil der Produktionskosten abgedeckt. Das ist bei allen Programmen notwendig wo Verbrauch und Ertrag in unterschiedlichen Programmen entstehen. Für das Lexikon werden nur Programme berücksichtigt, die sowohl eine consume als auch eine produce Zeile haben
die zu schreibenden Hilfetexte sind soweit ich weiß u.a. deshalb in der units.lua konzentriert, damit man alle Hilfetexte an einem Platz hat. Das wurde nvor ein paar Jahren so geändert.
Top
Quote
|
|
|
Teayo
Topic Opener
Joined: 2015-03-09, 21:11
Posts: 260
OS: Windows 11 Home 64-bit
Version: 1.2.1~rc1
Tribe Member
Location: Deutschland
|
Posted at: 2025-03-26, 22:10
Ich nehme mal an das Abhängigkeiten-Schleifen-Unendlich-Lange-Lade Problem mit den Mauern lässt nur lösen, indem man diese transform Aktions-Schleifen gar nicht erst implementiert .
Wenn ja ist das sehr bedauerlich . Kann man auf Texte in .lua Dateien zugreifen, so das man in einen separaten Skript, was hessenfarmer vorgeschlagen hat, sich dort die transform Aktionen holt und im Skript dann ausführt ?
Oder muss wirklich alles in diesen Skript definiert werden ? Ohne im Thread-Verlauf nachgeschaut zu haben, meine ich mich zu erinnern, das diese separaten Skripte nicht beim laden auf Fehler überprüft werden , als im Gegensatz zu den init.lua Definitionsdateien der Einheiten .
Diese Mauer Idee ist einfach nur schrecklich. Hätte ich das mal bloß sein gelassen.
Top
Quote
|
|
|
hessenfarmer
Joined: 2014-12-11, 22:16
Posts: 2791
One Elder of Players
Location: Bavaria
|
Posted at: 2025-03-27, 06:59
Teayo wrote:
Ich nehme mal an das Abhängigkeiten-Schleifen-Unendlich-Lange-Lade Problem mit den Mauern lässt nur lösen, indem man diese transform Aktions-Schleifen gar nicht erst implementiert .
das gilt in jedem Fall für die Nutzung der Mapobject Programme. Diese lassen keine Zirkelbezüge zu.
Kann man auf Texte in .lua Dateien zugreifen, so das man in einen separaten Skript, was hessenfarmer vorgeschlagen hat, sich dort die transform Aktionen holt und im Skript dann ausführt ?
Lua ist eine Programmiersprache. Lua Programme werden aber nicht kompiliert, sondern durch einen Interpreter zur Laufzeit Zeile für Zeile abgearbeitet. Daher werden die Programme oftmals auch als Skripte bezeichnet.
Wie in jeder anderen Programmiersprache kann man so viele unterschiedliche Funktionen definieren, wie man will. Die einmal definierten Funktionen kann man dann jederzeit auch wieder aufrufen. Die Definition der Funktionen ist dabei auch in mehreren Quelldateien möglich. Das kann aus Übersichtsgründen oder aus Gründen der Wiederverwendbarkeit für andere Zwecke sinnvoll sein. Die jeweiligen Dateien müssen in dem Fall per "include" Befehl in die Hauptdatei eingebunden werden.
Fazit: Um die Möglichkeit der Lua Skripte zu nutzen muss man Lernen in Lua zu programmieren
Ohne im Thread-Verlauf nachgeschaut zu haben, meine ich mich zu erinnern, das diese separaten Skripte nicht beim laden auf Fehler überprüft werden , als im Gegensatz zu den init.lua Definitionsdateien der Einheiten .
da hättest du besser mal nachgeschaut. Lua als Interpreter prüft die Lua Programme (Skripte) zur Laufzeit auf Syntax.
Edited: 2025-03-27, 07:00
Top
Quote
|
|
|
Teayo
Topic Opener
Joined: 2015-03-09, 21:11
Posts: 260
OS: Windows 11 Home 64-bit
Version: 1.2.1~rc1
Tribe Member
Location: Deutschland
|
Posted at: 2025-03-27, 21:23
Ja dann komme ich nun so ganz langsam an den Punkt an, wo ich dieses Skript entwickeln muss.
Ohne jegliche Programmierkenntnisse kann das dauern.
Aber ich gebe nicht auf, zu viel Zeit und Energie ist von mir schon in die Mauer Idee gesteckt worden.
Also bevor ich das Skript erstellen kann, muss ich wohl erstmal die Programmiersprache Lua lernen.
Top
Quote
|