Ich würde soooo gerne mal anständige Szenarien bauen und zeichnen, aber alle Links auf der Entwicklerseite von Clonkspot funktionieren nicht.
Und es gibt auch kein Forum welches sich wirklich um dieses Thema kümmert und auch für so nen Noob wie mich geeignet ist.
Bitte Leute wäre so geil wenn ihr mir da weiterhelfen könntet oder mal die Links wieder auffrischen würdet.
Szenarien zeichnen geht am Einfachsten über den Konsolemodus (/console), Editor.exe startet die Clonk-Engine per Default automatisch in diesem Modus. Dort hast du verschiedene Zeichentools zur Verfügung.
Ich hab ein TeamMellee gebaut aber ich hab leider noch nicht heraus gefunden wie ich die Startposition genau bestimmen kann. Aber so das auch alle clonks eines Spieler da landen und das da auch nen flagge für dieses Team da landet. Für 4 Teams
Es landet nur ein Clonk dort, wo du ihn haben willst, weil du nur einem Clonk sagt, dass du ihn dort haben willst. Du brauchst dafür eine Schleife:
if (GetPlayerTeam(iPlr) == 1)
{
for (var i = 0; i < GetCrewCount(); ++i)
{
GetCrew(iPlr, i)->SetPosition(1373, 1170);
}
}
Außerdem musst du die Position der Flagge setzen.
Wenn du aber alle Spieler eines Team an einer Position starten lassen und Scenario.txt verwenden willst, kannst du dem Team eine [Player*]-Sektion zuweisen, in der du die Position festlegst. Willst du sie exakt an der Position haben, egal, ob frei oder nicht, kannst du in der Sektion EnforcePosition = 1 setzen.
und wie kann ich Gegenstände in Gebäuden platzieren. Beispielsweise ne flagge in ein Konter (Burg) oder Ausrüstungsteile für Ritter (Schwerter, Schilde, usw.)
FindObject2 bekommt als Argumente Such- und Sortierkriterien übergeben, die von links nach rechts abgearbeitet werden - zuerst werden intern alle Flaggen zusammengesucht, dann alle, die dem Spieler iPlr gehören; das erste Objekt wird dabei zurückgegeben. Wenn keine Flagge übergeben wird, wird 0 (mit #strict 3 im kommenden 334-Release nil), was dazu führt, dass SetPosition mit dem Fehler Object call: target is zero! fehlschlägt - du kannst eine Funktion nicht in nichts aufrufen.
Da kommen Variablen und Kontrollstrukturen ins Spiel.
var flag = FindObject2(Find_ID(FLAG), Find_Owner(iPlr));
if (flag)
{
flag->SetPosition(1373, 1170);
}
Was macht dieser Code?
Er speichert das Ergebnis vom FindObject2 - Aufruf in der Variable flag.
Wenn flag dem Wahrheitswert true entspricht - also in dem Fall ein Objekt und nicht 0 oder nil ist, wird die Position der Flagge gesetzt.
Das hängt von der Reihenfolge ab. Hast du ein Burgobjekt gefunden (siehe obiger Code), kannst du mit CreateContents(id, 0, anzahl) ein Inhaltsobjekt erstellen. Um Objekte in die Burg zu verschieben, kannst du objekt->Enter(burg) verwenden, wobei objekt und burg für die jeweiligen Objekte stehen.
einfach nur im szenario.txt die Position angeben ? nein, was muss ich noch dazumachen?
und das mit der Schleife um die Clonks da hin zu bringen wo ich sie haben will funktioniert bei mir nur mit dem 1. Spieler, der 2. wird wie gewohnt einfach irgendwo hin platziert…