Currently Online

Latest Posts

Topic: Fehlermeldungen beim laden von Erweiterungen

Teayo
Avatar
Topic Opener
Joined: 2015-03-09, 22:11
Posts: 220
OS: Windows 11 Home 64-bit
Version: 1.2.1~rc1
Ranking
Widelands-Forum-Junkie
Location: Deutschland
Posted at: 2024-01-21, 22:52

Widelands gibt die folgende Fehlermeldung aus , sobald ich die Erweiterung lade :

FATAL EXCEPTION: [D:/a/widelands/widelands/src/scripting/lua_errors.cc:21] modify_unit: error: No actions found
[00:11:42.013 real] ERROR: stack traceback:
[00:11:42.013 real] ERROR: [string "addons\test.wad\postload.lua"]:162: in main chunk

Die Erweiterung funktioniert aber sobald ich in der postload.lua Datei folgenden Abschnitt einfüge ,
kommt die oben beschriebene Fehlermeldung . Ich weiß echt nicht mehr weiter , was das Problem ist .
Weiß jemand oder hat jemand eine Vermutung was das genau diese Fehlermeldung verursacht ?

161 -- Babaren Arbeiter Steinmetz modifizieren : Bäume abbauen
162 wl.Descriptions():modify_unit
163 (
164 "worker","barbarians_stonemason","programs","set","dismantle_trees",
165 {
166 descname=_("test text"),
167 actions=
168 {
169 --"findobject=attrib:trees radius:6",
170 --"findobject=attrib:trees_and_rocks radius:6",
171 --"walk=object",
172 --"playsound=sound/stonecutting/stonecutter priority:100% allow_multiple",
173 --"animate=hack duration:45s",
174 --"callobject=tree_dismantled",
175 --"createware=granite",
176 "return"
177 }
178 }
179 )

Ich habe schon vieles ausprobiert , um eine mögliche Ursache für die Fehlermeldung zu finden , aber bis jetzt erfolglos .


Top Quote
hessenfarmer
Avatar
Joined: 2014-12-11, 23:16
Posts: 2738
Ranking
One Elder of Players
Location: Bavaria
Posted at: 2024-01-22, 09:14

Die Fehlermeldung besagt, dass keine Actions definiert sind. Das ist auch der Fall, da alle actions im Codeschnipsel auskommentiert sind (führende -- bezeichnen einen Kommentar).


Top Quote
Nordfriese
Avatar
Joined: 2017-01-17, 18:07
Posts: 2054
OS: Debian Testing
Version: Latest master
Ranking
One Elder of Players
Location: 0x55555d3a34c0
Posted at: 2024-01-22, 09:43

Eine Worker-Action hat keinen Descname, verwende

 161 -- Barbaren Arbeiter Steinmetz modifizieren : Bäume abbauen
162 wl.Descriptions():modify_unit
163 (
164     "worker","barbarians_stonemason","programs","set","dismantle_trees",
165     {
169         --"findobject=attrib:trees radius:6",
170         --"findobject=attrib:trees_and_rocks radius:6",
171         --"walk=object",
172         --"playsound=sound/stonecutting/stonecutter priority:100% allow_multiple",
173         --"animate=hack duration:45s",
174         --"callobject=tree_dismantled",
175         --"createware=granite",
176         "return"
177     }
179 )

Top Quote
Teayo
Avatar
Topic Opener
Joined: 2015-03-09, 22:11
Posts: 220
OS: Windows 11 Home 64-bit
Version: 1.2.1~rc1
Ranking
Widelands-Forum-Junkie
Location: Deutschland
Posted at: 2024-01-22, 14:35

@hessenfarmer ,
die Fehlermeldung kommt auch dann , wenn alle Aktionen im Container nicht auskommentiert sind und aktiviert sind .
Das keine Aktion definiert ist stimmt nicht , da die Aktion "return" nicht auskommentiert ist .

Aber die Fehlerursache wird wohl das sein , was @Nordfriese beschrieben hat .
Sollte es trotzdem nicht funktionieren oder eine andere Fehlermeldung kommen , die ich nicht selber lösen kann ,
werde ich diesen Thread entsprechend weiter dafür nutzen .


Top Quote
Teayo
Avatar
Topic Opener
Joined: 2015-03-09, 22:11
Posts: 220
OS: Windows 11 Home 64-bit
Version: 1.2.1~rc1
Ranking
Widelands-Forum-Junkie
Location: Deutschland
Posted at: 2024-01-22, 18:57

[03:55:30.221 real] ERROR: Unable to delete temporary file 'temp\2024-01-22T18.32.20.wgf':
RealFSImpl::unlink_file: file error (Windows error code 32): C:\Users\teayo.widelands\temp\2024-01-22T18.32.20.wgf

[03:55:30.222 real] ERROR: FATAL EXCEPTION: vector::M_range_check: __n (which is 2) >= this->size() (which is 2)

Sobald ich in der postload.lua Datei von meiner Erweiterung folgendes Element einfüge , kommt dieser mir unerklärliche Fehler .

wl.Descriptions():modify_unit
(
"tribe","empire","add_worker","empire_worker_tree_change_e", 1, 1, 1,
{
helptexts=
{
purpose=
("text beschreibung")
}
}
)

Windows Fehlercode 32 : "Ein Treiber(dienst) wurde für dieses Gerät deaktiviert. Möglicherweise kann ein anderer Treiber diese Funktionalität übernehmen. (Code 32)"
Ich denke aber das der angegebene Link falsch ist , da das ja nichts mit dem Geräte Manager zu tun hat . Ist halt aber das Google Suchergebnis .
Das besondere an dieser Fehlermeldung ist , das sobald ich die Fehlermeldung bestätige , stürzt Widelands komplett ab .

Dann frage ich mich noch wofür genau die drei Zahlen "1, 1, 1" stehen ?
Bei der ersten Zahl weiß ich das diese angibt , in welcher Spalte vom Waren Inventar , beginnend mit 0 links , die Ware sich befindet .
Dann muss ich noch das Problem'chen lösen , das die Ware bei Spielstart standardmäßig auf 0 ist .
Ein Blick in the-x angepasste Startbedingung Erweiterung hilft mir da vermutlich dann weiter .

Edited: 2024-01-22, 19:02

Top Quote
Nordfriese
Avatar
Joined: 2017-01-17, 18:07
Posts: 2054
OS: Debian Testing
Version: Latest master
Ranking
One Elder of Players
Location: 0x55555d3a34c0
Posted at: 2024-01-22, 19:29

Zu Windows kann ich nichts sagen außer dass Windows' sehr seltsames Filesystem-Handling gelegentlich zu merkwürdigen Problemen führt.

Windows-Fehlercodes sind mehrdeutig, Fehler 32 bedeutet unter Anderem "The process cannot access the file because it is being used by another process."

Fehlermeldungen mit vector::M_range_check und co weisen immer auf einen Bug in C++ hin. Sowas seh ich hin und wieder mal, es lässt sich aber nie reproduzieren. Falls du diesen (unabhängig von Windows face-wink.png ) reproduzieren kannst, wären genaue Schritte extrem hilfreich, damit wir das beheben können.

Dann frage ich mich noch wofür genau die drei Zahlen "1, 1, 1" stehen ?

Steht in der Dokumentation…
https://www.widelands.org/documentation/autogen_wl/#wl.Descriptions.modify_unit
Die Werte sind menu_column (int), target_quantity (int or nil), preciousness (int or nil)
Der zweite Wert ist also der Standardwert für die Wirtschaftszielseinstellung (z.B. für Lastentiere und Soldaten) oder nil für Arbeiter ohne Wirtschaftsziel (das sind die meisten). Der dritte Wert ist eine Hilfe für die KI, wie "wertvoll" dieser Arbeiter ist, was meines Wissens ebenfalls nur für solche Arbeiter relevant ist, die von Produktionsgebäuden rekrutiert werden.

Dann muss ich noch das Problem'chen lösen , das die Ware bei Spielstart standardmäßig auf 0 ist .

Was ziemlich schwierig wird, dafür brauchst du wohl eine eigene Startbedingung die diese Ware vorsieht. Es gibt aktuell keine saubere Möglichkeit neue Waren oder Arbeiter ohne Weiteres in vorhandene Startbedingungen zu integrieren.

Edited: 2024-01-22, 19:34

Top Quote
hessenfarmer
Avatar
Joined: 2014-12-11, 23:16
Posts: 2738
Ranking
One Elder of Players
Location: Bavaria
Posted at: 2024-01-22, 22:08

Das Problem mit Windows und dem fehlenden Zugriff auf Files ist bekannt.


Top Quote
Teayo
Avatar
Topic Opener
Joined: 2015-03-09, 22:11
Posts: 220
OS: Windows 11 Home 64-bit
Version: 1.2.1~rc1
Ranking
Widelands-Forum-Junkie
Location: Deutschland
Posted at: 2024-01-27, 20:29

@Nordfriese ,
Fehlermeldung :
FATAL EXCEPTION: game class: [D:/a/widelands/widelands/src/scripting/lua_errors.cc:21] modify_unit: error:
[D:/a/widelands/widelands/src/scripting/lua_errors.cc:21] empire_immovables_wall_01i64_v0_t1_r1_e0_ne0_nw0_se0_sw0_w0: Error in immovable program add_ne:
Error reading line 'transform=empire_immovables_wall_06i64_v1_t1_r5_e0_ne1_nw0_se0_sw0_w0': transform:
[D:/a/widelands/widelands/src/scripting/lua_errors.cc:21] empire_immovables_wall_06i64_v1_t1_r5_e0_ne1_nw0_se0_sw0_w0: Error in immovable program add_nw:
Error read
( Fehlermeldung ist ab dieser Stelle wegen 512 Zeichenlimit abgeschnitten )

Referenz : https://www.widelands.org/messages/view/11779/ und https://www.widelands.org/messages/view/11780/

Fehler Ursache gefunden :
in Objekt "empire_immovables_wall_34i64_v3_t2_r6_e0_ne1_nw1_se1_sw0_w0"
das Programm "add_w={"transform=empire_immovables_wall_49i64_v4_t2_r1_e0_ne1_nw1_se1_sw0_w1"
Fehler war Zeichenkette und Container waren nicht geschlossen , es fehlte " "} " am Ende .

@Alle ,
Anderes Problem :
Inzwischen konnte ich meine Erweiterung erfolgreich testen mit der Konfiguration :
* Alle "add" transform Programme bei jeden Objekt AKTIVIERT,
* Alle "remove" transform Programme bei jeden Objekt deaktiviert ,
* Alle "change" transform Programme bei jeden Objekt deaktiviert ,
* Alle transform Programme bei jeden Objekt zum Fehler Objekt AKTIVIERT ,

Sobald ich jedoch alle remove" transform Programme bei jeden Objekt AKTIVIERE ,
bleibt Widelands im Ladebildschirm beim Punkt : "Speichere Minikarte 22/22" hängen
Ich muss dann Widelands mit dem Task-Manager abwürgen .

Gegenprobe :
Wenn ich jedoch alle "add" transform Programme bei jeden Objekt deaktiviere und die
"remove" transform Programme bei jeden Objekt AKTIVIERT lasse , gibt es keine Probleme beim laden .
Damit ist für mich der Beweis erbracht das es sich hier um eine Schleife handelt , die zu diesen Ladeproblem führt .

Damit kann ich meine Erweiterung begraben den offenbar ist das ja so in Widelands nicht möglich .

Edited: 2024-01-27, 20:30

Top Quote
hessenfarmer
Avatar
Joined: 2014-12-11, 23:16
Posts: 2738
Ranking
One Elder of Players
Location: Bavaria
Posted at: 2024-01-27, 20:55

nur aufgrund der Fehlermeldungen ist es sehr schwer sich einen Reim auf die Probleme zu machen.
Wenn du aber den gegenwärtigen Stand huier hochladen würdest, dann könnte man gemeinsam überlegen warum es nicht geht und wie es vielleicht doch geht.


Top Quote
Teayo
Avatar
Topic Opener
Joined: 2015-03-09, 22:11
Posts: 220
OS: Windows 11 Home 64-bit
Version: 1.2.1~rc1
Ranking
Widelands-Forum-Junkie
Location: Deutschland
Posted at: 2024-02-04, 16:51

Ich habe das Problem beim laden jetzt umgangen und bei meiner Erweiterung von ursprünglich 64 Objekten auf 2 Objekte reduziert .
Jetzt ist keine transform Aktion Schleife mehr vorhanden , sondern nur noch Einweg .


Top Quote