Du musst das Objekt finden. Hier kommt FindObject2
ins Spiel:
FindObject2(Find_ID(FLAG), Find_Owner(iPlr))->SetPosition(1373, 1170);
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.
Doku: if, FindObject2
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.