Currently Online

Latest Posts

Topic: Mauern Skript

hessenfarmer
Avatar
Joined: 2014-12-11, 23:16
Posts: 2726
Ranking
One Elder of Players
Location: Bavaria
Posted at: 2024-09-18, 21: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
Avatar
Topic Opener
Joined: 2015-03-09, 22:11
Posts: 207
OS: Windows 11 Home 64-bit
Version: 1.2 from Juni (06) 2023
Ranking
Widelands-Forum-Junkie
Location: Deutschland
Posted at: 2024-09-20, 13: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 ?


Das Imperium schlägt zurück ! TY

Top Quote
hessenfarmer
Avatar
Joined: 2014-12-11, 23:16
Posts: 2726
Ranking
One Elder of Players
Location: Bavaria
Posted at: 2024-09-20, 13:58

skripte werden auch überprüft aber anders.
Das Schleifenproblem ist aber kein Überprüfungsproblem sondern ein Einleseproblem von Abhängigkeiten


Top Quote
Teayo
Avatar
Topic Opener
Joined: 2015-03-09, 22:11
Posts: 207
OS: Windows 11 Home 64-bit
Version: 1.2 from Juni (06) 2023
Ranking
Widelands-Forum-Junkie
Location: Deutschland
Posted at: 2024-09-25, 16: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, 16:24

Attachment:
ablauf_plan.png

Das Imperium schlägt zurück ! TY

Top Quote
Teayo
Avatar
Topic Opener
Joined: 2015-03-09, 22:11
Posts: 207
OS: Windows 11 Home 64-bit
Version: 1.2 from Juni (06) 2023
Ranking
Widelands-Forum-Junkie
Location: Deutschland
Posted at: 2024-09-30, 00: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 .


Das Imperium schlägt zurück ! TY

Top Quote
hessenfarmer
Avatar
Joined: 2014-12-11, 23:16
Posts: 2726
Ranking
One Elder of Players
Location: Bavaria
Posted at: 2024-09-30, 17: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