Not logged inClonkspot Forum
Forum Home Help Search Register Login
Up Topic Deutsch / Hilfestellung / [Gelöst]Startposition bestimmen?
- - By Serpens66 (More than 200 posts.) Date 03.03.2015 18:33
Wenn man ein Szenario ohne Szenarienskript startet, werden die Spieler zufällig (oder vllt auch nach einen muster?) auf der Karte platziert. Das betrifft nicht nur die Clonks selbst, sondern auch alle eingestellten Gebäude/Fahrzeuge/Objekte die dem spieler gehören.

Wie kann man das, wenns sein muss auch mit Szenarienskript, beeinflussen? Ich würde die Positionen gerne selbst fetslegen können (auch unabhängig von der Kartengröße, also mit LandscapeWidth usw)
Habe schon gegooglet, aber da kommen nur infos, wie man die Clonks verschiebt... Ich möchte ja aber alles verschieben... und dafür ungerne etwas schreiben müssen, was alle Objekte die dem Spieler gehören um x und y Einheiten noch rechts bzw. unten verschiebt.

Gibt es da was "fertiges" ? Oder muss ich wirklich eine schleife schreiben, die wie beschrieben alles verschiebt?
Parent - - By Luchs (More than 1000 posts.) Date 03.03.2015 18:58
Wenn du dir andere Szenarien ansiehst, ist der typische Ansatz eher, alle Startmaterialien nicht über die Scenario.txt von der Engine platzieren zu lassen, sondern sie direkt in `InitializePlayer` zu erstellen. Damit bist du typischerweise am flexibelsten.

Eine Schleife, die alle Objekte irgendwo anders hin transferiert, ist aber auch gar nicht so kompliziert:

```
func InitializePlayer(plr) {
  for (var obj in FindObjects(Find_Owner(plr)))
    obj->SetPosition(x, y);
}
```
...wobei du natürlich auch noch eine Möglichkeit brauchst, die passenden Koordinaten zu bestimmen.
Parent - - By Serpens66 (More than 200 posts.) Date 03.03.2015 19:35 Edited 03.03.2015 19:38
okay danke :)

ja ich wollte eine möglichkeit haben , sowohl ganz bestimmte koordinaten zu haben, als auch nur grobe Koordinaten (für eine "zufallskarte" , also ohne vorerstellte Map).

Aber auch im Fall der Zufallskarte kann man das vermutlich mit der schleife machen. Die höhe lässt man einfach so und verschiebt nur die x positionen...
Also danke dafür, hatte nicht an Find_Owner gedacht und dachte ich müsse nun alles einzeln erfassen und besitzer prüfen :)
Parent - By Luchs (More than 1000 posts.) Date 03.03.2015 20:47
Für Zufallskarten kannst du auch mit PlaceAnimal oder PlaceVegetation Wipfe oder Bäume so lange platzieren, bis eine zufriedenstellende (z.B. Abstand zu Gegner oder andere Kriterien) Position rauskommt.
Parent - - By Serpens66 (More than 200 posts.) Date 03.03.2015 21:29
wie mach ich das denn am besten mit den Gebäuden? Also wie gesagt, es sollen Zufallskarten sein, also ohne genaue platzierung.

Dort sollen alle Dinge dann so verschoben werden, dass spieler1 zb rechts und spieler 2 links der Karte ist. oder auch in der mitte, das geht mit LandscapeWidth denk ich ganz gut.

Das Problem sind nur evtl die Gebäude. Je nach dem wieviele Gebäude bei der Karte zum Start eingestellt sind, weichen auch die Positionen ab. Soll heißen die Gebäude dürfen ja nicht außerhalb der Karte erstellt werden.
Mein Gedanke wäre jetzt, die x Position aller Objekte eines Spieler in einem array zu speichern. Die Einträge werden dann der Größe nach sortiert, sodass ich die Dinge ganz links bzw. ganz rechts bekomme.
Wenn der Spieler nun an den linken Rand soll, dann wird das "linkeste" Ding so verschoben, dass es gerade so nicht aus den Rand fällt. Alle anderen Dinge werden dann um denselben betrag in diese Richtung verschoben.

Denke ich wieder zu kompliziert und das geht einfacher?

edit: placeanimal und vegetation geht nur mit tieren/pflanzen und nicht mit Gebäuden/Clonks, oder?
Parent - By Luchs (More than 1000 posts.) Date 03.03.2015 21:58

>placeanimal und vegetation geht nur mit tieren/pflanzen und nicht mit Gebäuden/Clonks, oder?


Ja, aber du lässt ein Tier/Pflanze platzieren und erzeugst dann an dieser Stelle dein Gebäude etc. Danach kannst du das Tier/die Pflanze wieder entfernen.
Up Topic Deutsch / Hilfestellung / [Gelöst]Startposition bestimmen?

Powered by mwForum 2.29.7 © 1999-2015 Markus Wichitill