game_student
Topic Opener
Joined: 2018-01-12, 21:17
Posts: 12
Pry about Widelands
|
Posted at: 2018-01-14, 15:25
kaputtnik wrote:
Man kann ja auch andere Werte als type_name abfragen... Such Dir in https://wl.widelands.org/docs/wl/autogen_wl_map/#wl.map.MapObjectDescription das Attribut aus, mit welchem du z.B. den Namen des immovables abfragen kannst. Man muss allerdings wissen wie das Gebäude intern benannt wird. Das steht in der entsprechenden init.lua des Gebäudes.
danke, habe es nochmal mit .name probiert und es funktioniert. Hat vorher komischerweise nicht funktioniert. Danke für die Hilfe.
local imm = f.immovable
if imm then
if imm.descr.name == "barbarians_gamekeepers_hut" then
_plrpoints[owner] = _plrpoints[owner] + 1
end
end
Top
Quote
|
|
|
game_student
Topic Opener
Joined: 2018-01-12, 21:17
Posts: 12
Pry about Widelands
|
Posted at: 2018-01-14, 15:27
Nordfriese wrote:
kaputtnik wrote:
game_student wrote:
-- check if field has an critters
local imm = f.critter
Welche Art von immovable ein 'field' hat weiß ein field nicht. Ein 'field' kann nur die Eigenschaft 'immovable' haben wenn ein immovable drauf steht., oder nicht die Eigenschaft immovable haben wenn nichts drauf steht. Das 'if' im folgenden kann also nicht greifen, weil 'imm' immer 'nil' sein wird.
-- also tried with „critterS“
if imm then
Ein Tier ist auch eine Art Immovable ... obwohl es mobil ist
Hier liegt ein Missverständnis vor. Tiere und andere mobile Wesen (z.B. Arbeiter) sind keine Immovables, sondern Bobs. Jedes Feld hat ein Array von Bobs, die sich gerade auf diesem Feld befinden. Um die Tiere auf einem Feld f zu zählen, muss f.bobs abgefragt werden:
~~~~
for idx,bob in ipairs (f.bobs) do
if bob:has_attribute ("eatable") then
plrpoints[owner] = plrpoints[owner] + 1
end
end
~~~~
jetzt muss ich nur mehr die tierhüter zählen aber wie?
Es gibt einen viel einfacheren Weg, um die Tierhüter-Hütten von Spieler x zu zählen:
~~~~
plrpoints [x] = plrpoints [x] + #wl.Game ().players [x]:get_buildings ("barbarians_gamekeepers_hut")
~~~~
danke! hilft mir sehr
Top
Quote
|
|
|
WorldSavior
Joined: 2016-10-15, 03:10
Posts: 2094
OS: Linux
Version: Recent tournament version
One Elder of Players
Location: Germany
|
Posted at: 2018-01-14, 15:38
Was mich interessieren würde: Könnte man die Tiere so schnell zählen, dass ihre Bewegung keine Rolle spielt?
Und wird das Zählen erschwert, wenn mehrere Tiere auf dem gleichen Feld sind?
Noch ein Gedanke zu dem Argument, dass die Tiere ja auch zum Gegner laufen: Bei Waldschrat ist es sehr wichtig, viel Land zu besitzen. Je mehr Land man hat, desto mehr Tiere sind dann dort, also ist es wahrscheinlich gar nicht schlimm, dass einige Tiere das Gebiet verlassen und zum Gegner überlaufen. Von daher ist es wohl keine so schlechte Idee, die Tiere im Gebiet in den Punktestand einfließen zu lassen.
Wanted to save the world, then I got widetracked
Top
Quote
|
|
|
game_student
Topic Opener
Joined: 2018-01-12, 21:17
Posts: 12
Pry about Widelands
|
Posted at: 2018-01-14, 16:11
WorldSavior wrote:
Noch ein Gedanke zu dem Argument, dass die Tiere ja auch zum Gegner laufen: Bei Waldschrat ist es sehr wichtig, viel Land zu besitzen. Je mehr Land man hat, desto mehr Tiere sind dann dort, also ist es wahrscheinlich gar nicht schlimm, dass einige Tiere das Gebiet verlassen und zum Gegner überlaufen. Von daher ist es wohl keine so schlechte Idee, die Tiere im Gebiet in den Punktestand einfließen zu lassen.
das wäre mein ursprünglicher Gedanke, dass man zum Beispiel für seltene Tiere mehr Punkte bekommt wenn man diese entdeckt und nicht jagt. z.B im Gletschergebiet entdeckt man Eisbären und Schneehasen, an Teiche entdeckt man Bieber und in großen Wälder entdeckt man Luchs, Wildschwein und Wölfe. Und wenn man diese Tiere entdeckt (die natürlich schwer zu finden sein sollen) dann soll man sie mit dem gamekeeper auch züchten können. Leider reichen meine Programmierkenntnisse nicht aus um es so im Detail umzusetzen.
edit:
beim init file für gamekeeper kann ich zwar die tiere ergänzen die der gamekeeper erzeugen soll aber ich würde gerne ein abfrage einbauen die vorher prüft ob sich ein seltenes Tier auf seinem eigenen Gebiet befindet.
programs = {
release = {
"setbobdescription wildboar bunny wolf wisent lynx brownbear",
"findspace size:any radius:3",
"walk coords",
"animation releasein 2000",
"create_bob",
"animation releaseout 2000",
"return"
}
},
Edited: 2018-01-14, 16:17
Top
Quote
|
|
|
Nordfriese
Joined: 2017-01-17, 17:07
Posts: 1950
OS: Debian Testing
Version: Latest master
One Elder of Players
Location: 0x55555d3a34c0
|
Posted at: 2018-01-14, 21:52
Was mich interessieren würde: Könnte man die Tiere so schnell zählen, dass ihre Bewegung keine Rolle spielt?
Solange das Skript arbeitet, ist das Spiel angehalten. Das merkt man normalerweise nicht, weil Skripte sehr schnell sind…
Und wird das Zählen erschwert, wenn mehrere Tiere auf dem gleichen Feld sind?
Nein, es dauert nur minimal länger.
dass man zum Beispiel für seltene Tiere mehr Punkte bekommt wenn man diese entdeckt und nicht jagt. z.B im Gletschergebiet entdeckt man Eisbären und Schneehasen, an Teiche entdeckt man Bieber und in großen Wälder entdeckt man Luchs, Wildschwein und Wölfe
Beim Iterieren über f.bobs kannst du den Typ jedes einzelnen bobs abfragen und die Punktzahl davon abhängig machen. Diese Aufgabe sollte recht einfach zu lösen sein…
edit: beim init file für gamekeeper kann ich zwar die tiere ergänzen die der gamekeeper erzeugen soll aber ich würde gerne ein abfrage einbauen die vorher prüft ob sich ein seltenes Tier auf seinem eigenen Gebiet befindet.
Geht leider nicht. Die Möglichkeiten, Programme für Gebäude und Arbeiter zu schreiben, sind äußerst begrenzt…
Top
Quote
|
|
|
game_student
Topic Opener
Joined: 2018-01-12, 21:17
Posts: 12
Pry about Widelands
|
Posted at: 2018-01-15, 09:37
Nordfriese wrote:
Was mich interessieren würde: Könnte man die Tiere so schnell zählen, dass ihre Bewegung keine Rolle spielt?
Solange das Skript arbeitet, ist das Spiel angehalten. Das merkt man normalerweise nicht, weil Skripte sehr schnell sind…
ja genau, das Skript von dir funktioniert einwandfrei (Achtung: nicht einfach kopieren sondern abtippen und underscore vor plrpoints nicht vergessen)
dass man zum Beispiel für seltene Tiere mehr Punkte bekommt wenn man diese entdeckt und nicht jagt. z.B im Gletschergebiet entdeckt man Eisbären und Schneehasen, an Teiche entdeckt man Bieber und in großen Wälder entdeckt man Luchs, Wildschwein und Wölfe
Beim Iterieren über f.bobs kannst du den Typ jedes einzelnen bobs abfragen und die Punktzahl davon abhängig machen. Diese Aufgabe sollte recht einfach zu lösen sein…
danke für den Hinweis. Das werde ich definitiv einbauen
edit: beim init file für gamekeeper kann ich zwar die tiere ergänzen die der gamekeeper erzeugen soll aber ich würde gerne ein abfrage einbauen die vorher prüft ob sich ein seltenes Tier auf seinem eigenen Gebiet befindet.
Geht leider nicht. Die Möglichkeiten, Programme für Gebäude und Arbeiter zu schreiben, sind äußerst begrenzt…
Schade aber die Typabfrage reicht mir vorerst.
BTW habe den Fischer zum Biberzüchter und den Jäger zum Imker umfunktioniert
Top
Quote
|
|
|
WorldSavior
Joined: 2016-10-15, 03:10
Posts: 2094
OS: Linux
Version: Recent tournament version
One Elder of Players
Location: Germany
|
Posted at: 2018-01-15, 18:57
Nordfriese wrote:
Was mich interessieren würde: Könnte man die Tiere so schnell zählen, dass ihre Bewegung keine Rolle spielt?
Solange das Skript arbeitet, ist das Spiel angehalten. Das merkt man normalerweise nicht, weil Skripte sehr schnell sind…
Danke für die Infos. Das überrascht mich jetzt nicht besonders...
Und wird das Zählen erschwert, wenn mehrere Tiere auf dem gleichen Feld sind?
Nein, es dauert nur minimal länger.
Ok. Da man im Editor - so weit ich weiß - nicht mehrere Tiere auf ein Feld setzen kann, kam ich zu diesem Gedanken.
Wanted to save the world, then I got widetracked
Top
Quote
|
|
|
game_student
Topic Opener
Joined: 2018-01-12, 21:17
Posts: 12
Pry about Widelands
|
Posted at: 2018-01-22, 21:28
Hi Leute,
kann ich eigentlich der AI irgendwie sagen, dass sie nicht nur Bäume sondern nun auch Tiere züchten soll?
Weiß überhaupt die AI, dass beim wood gnome Modus Bäume zu pflanzen sind?
Top
Quote
|
|
|
WorldSavior
Joined: 2016-10-15, 03:10
Posts: 2094
OS: Linux
Version: Recent tournament version
One Elder of Players
Location: Germany
|
Posted at: 2018-01-22, 23:24
game_student wrote:
Weiß überhaupt die AI, dass beim wood gnome Modus Bäume zu pflanzen sind?
Nein : (
Edited: 2018-01-23, 00:06
Wanted to save the world, then I got widetracked
Top
Quote
|
|
|
game_student
Topic Opener
Joined: 2018-01-12, 21:17
Posts: 12
Pry about Widelands
|
Posted at: 2018-02-08, 00:07
Hi Leute,
mein Treehugger Mod ist fertig. Nicht perfekt aber es war ja auch hauptsächlich zu Studienzwecken :)
Dowload: http://dermultimediaagent.at/widelands_treehugger_mod/
freue mich auf Feedback
Top
Quote
|