Manche von euch fragen sich vielleicht, warum man nicht Kill(CLNK) schreiben kann. Lest das hier, und hoffentlich werdet ihr es hierdurch erfahren.
GRUNDVORAUSSETZUNGEN:
-annähernd keine
Im Clonkordner befinden sich eine Reihe von Objektdefinitionen. Jede Objektdefinition benötigt eine DefCore und damit eine eindeutige ID: Anhand dieser ID kann die Engine gezielt auf eine bestimmte Definition zugreifen, deren (Kern-)Eigenschaften von der DefCore festgelegt werden (Kategorie, Größe, Breite, ...)
Definitionen sind als Vorlagen zu bezeichnen, anhand derer Objektinstanzen erzeugt werden. Diese Objektinstanzen sind ein "real" existierendes Objekt, wie z.B. ein Steuerbarer Clonk, der Sepp heißt oder ein Stein, den man werfen kann. Jede Objektinstanz bekommt von der Engine eine Objektnummer zugewiesen, damit die Instanz eindeutig identifizierbar ist. Zusammenfassend könnte man also die Objektdefinitionen als Baupläne bezeichnen, und eine Instanz als ein nach diesem Plan gebautes, benutzbares, annähernd individuelles Objekt.
Beispiel:
Jedes Huhn kann Eier legen; der Bauplan für das Ei ist genetisch festgelegt. Im Körper des Huhns wird so also ein Ei nach einem Bauplan erzeugt, das durchaus eine bestimmte Individualität hat, kein Ei ist genau gleich (Natürlich können in Clonk zwei Steine genau gleich sein, trotzdem werden sie von der Objektnummer unterschieden).
Deshalb kann man nicht Kill(CLNK) schreiben, weil die Engine nicht annähernd weiß, was die töten soll, wenn sie nur eine ID hat: Vorlagen kann man nicht töten, man kann nur Eigenschaften von Vorlagen ablesen, wie z.B. die Höhe eines Objekts, die aber selbst für jede Objektinstanz unterschiedlich sein kann. Deshalb nimmt Kill keine IDs als Parameter, sondern nur ein Objekt, dass die Objektnummer repräsentiert.
Variablen im Script, denen ein Objekt zugewiesen wurde, verweisen auf die Objektnummer einer Instanz, sind aber nicht selbst die Objektnummer. Die ganzen Datentypen in Clonk helfen uns, nicht irgendwie mit Speicheradressen/Objektnummern o.Ä. hantieren zu müssen, und schützen uns auch davor, sinnlose Operationen z.B. mit Objektnummern zu machen: Objektnummern zu addieren ist wohl das sinnfreieste, was es in dieser Richtung gibt.