Cob-Tutorials

Tutorial Nr. 1: Ein Getränk, das niemals leer wird

In diesem Tutorial werden wir die Kaffekanne neu erschaffen, die in Albia 1 in der Küche zu finden ist, d.h. dies ist ein Tutorial für Creatures 1.

Zuerst sehen wir uns an, wie ein typisches Installationsskript für C1 aussieht.

inst

new: simp kitc 4 4 750 0

setv clas 34013440

setv attr 67

bhvr 0 1

mesg writ targ 8

edit

endm

inst
Jedes Installationsskript beginnt mit dem Befehl "inst" (=install). Einleuchtend, oder? :-)

new: simp kitc 4 4 750 0
Diese Zeile schafft ein neues phyisches Objekt. "new:" bedeutet, dass hier etwas Neues erstellt werden soll, "simp" präzisiert, dass es sich um ein einfaches Objekt (Familie 2) handelt. "kitc" ist der Name der verwendeten Spritedatei: die erste 4 bedeutet, dass dieses Objekt aus vier Einzelbildern besteht, die zweite 4 heißt, dass das erste Bild dieses Objektes das fünfte innerhalb der Spritedatei ist (die Zählung der Bilder beginnt bei 0, was im Spriteeditor angezeigt wird). Die Zahl 750 zeigt an, wo zwischen Hintergrund (0) und Vordergrund (9000) dieses Objekt in der Welt erscheint. Die letzte Null zeigt an, dass alle Objekte dieser Spezies dieselbe Bildergalerie benutzen. Normalerweise wählt man hier immer 0, ich habe jedenfalls noch kein Objekt gesehen, bei dem dieser Wert "1" wäre.

setv clas 34013440
Diese Zeile weist dem Objekt einen eindeutigen Klassifizierer zu. "setv" setzt eine Variable, nämlich in diesem Fall die Klasse 34013440, was die Hexadezimalumsetzung von 2 7 1 ist. Dieser Hexadezimalwert kann mit jedem Cobcompiler für C1 berechnet werden. 

2 = Familie 2 (einfaches Objekt)
7 = Genus (Getränk)
1 = Spezies (Kaffekanne)

setv attr 67
Hier wird eine weitere Objektvariable definiert, das Attribut. Das Attribut bestimmt die Objekteigenschaften, der Wert setzt sich aus verschiedenen Einzelwerten zusammen. In diesem Fall aus Wallbound (64), Carryable (1), Mousable (2), wobei die Werte addiert werden. Es bedeutet, dass die Kaffekanne jeweils nur bis zum Boden des aktuellen Raumes fällt, wenn man sie absetzt, dass ein Norn sie aufheben kann und dass die Hand sie aufheben kann.

bhvr 0 1
Diese Zeile legt fest, wie das Objekt auf Klicks der Hand und einer Kreatur reagiert. Die erste Zahl steht für die Hand, die zweite für eine Kreatur. "0" bedeutet, dass Klicks der Hand keine Auswirkungen haben, "1" bedeutet, dass eine Kreatur die Kaffekanne "drücken" kann, was bei C1 auch essen oder trinken bedeuten kann, je nach Stimulationskommando.

mesg writ targ 8
Diese Zeile ist mir nach wie vor nicht ganz "durchsichtig", sie taucht jedoch in den meisten Installationsskripts für C1 auf. Sie sendet eine Nachricht an das Ziel (Target), die besagt, dass das Objekt jetzt im Gesichtskreis der Norns/Grendel vorhanden ist. (Wer es mir besser erklären oder mich korrigieren kann, der möge das bitte tun.) Am besten einfach übernehmen und ignorieren.

edit
Bewirkt, dass das Objekt in der Hand erscheint, wenn es eingefügt wird. In diesem Modus sind die Eigenschaften noch nicht wirksam, man muss es erst abstellen und wieder aufheben, damit es "normal" reagiert.

endm
Jedes Skript sollte mit dem "end macro"-Befehl beendet werden.

Nun kommen wir zu den Event-Skripts, die die Ereignisse bestimmen, die mit diesem Objekt verbunden sind.

* Script 0 Deaktivieren

scrp 2 7 1 0

pose 1

endm

scrp 2 7 1 0
Jedes Event-Skript definiert in der ersten Zeile, zu welchem Objekt es gehört. 2 7 1 ist unsere Kaffekanne, Familie 2 (einfache Objekte), Genus 7 (Getränke), Spezies 1 (Kaffekanne). 0 ist die Skriptnummer für Deaktivierungsskripts. D.h. dieses Objekt kann deaktiviert werden.

pose 1
Zeigt an, dass die Kaffeekanne, die – wie wir uns erinnern – vier Bilder verwendet, bei Deaktivierung das zweite Bild von vier verwendet.

endm
Wie oben. Nicht vergessen, weil Eventskripts sonst nicht beendet werden und in einer Schleife weiter laufen!

* Script 1 Aktivieren(1)

scrp 2 7 1 1

setv actv 0

stim writ from 10 255 0 0 36 60 38 20 39 20 57 40

snde drnk

pose 0

endm

Dies ist das eigentliche Aktivierungsskript, dass das Ereignis "Aktivieren 1" aufruft. Bei C1 heißt das entweder drücken, essen oder trinken, es ist eigentlich alles dasselbe. Was dabei passiert, wird durch den Stimulus definiert.

setv actv 0
Durch diese Zeile wird definiert, dass die Kaffeekanne nach Beendigung des Skripts von neuem aktiviert werden kann. Die Variable "aktivieren" (actv) wird dabei auf 0 gesetzt. Vergisst man das, dann kann das Objekt nur ein einziges Mal gedrückt werden und behält diesen Status bei.

stim writ from 10 255 0 0 36 60 38 20 39 20 57 40
Dies ist das eigentlich Interessante an unserem Skript. Hier wird festgelegt, welchen Stimulus der Norn oder Grendel erhält, wenn er das Objekt aktiviert. In diesem Fall sind das 60 Einheiten Kälte--, 20 Einheiten Erschöpfung--, 20 Einheiten Schläfrigkeit-- und 40 Einheiten Stärke. Bitte beachtet beim Stimulus, dass der Norn etwas daraus lernen soll. D.h. man sollte in jeder Objektkategorie nur sinnvolle Chemikalien verwenden. Futter sollte z.B. Nährstoffe enthalten, Getränke können stimulierend wirken und die Müdigkeit vertreiben, Spielzeug sollte Langeweile und Genusssucht senken. Wenn man die letzten beiden Chemikalien z.B. bei Futter verwendet (was leider nur zu oft der Fall ist), dann ist das der Lernfähigkeit des Norns nicht sehr förderlich, sondern verwirrt ihn eher.

snde drnk
Mit diesem Befehl wird ein Sound abgespielt, in diesem Fall das Trinkgeräusch. Die Sounddateien müssen sich dazu im Unterordner Sounds befinden.

pose 0
Diese Zeile definiert, welche Position das Objekt einnimmt, wenn das Skript beendet wird.

* Script 4 Aufgehoben

scrp 2 7 1 4

pose 0

endm

Ein Skript mit der Ereignisnummer 4 definiert, wie ein Objekt sich verhält, wenn es aufgehoben wird (egal ob von der Hand oder von einem Norn). In diesem Fall wird das Bild 0 (von insgesamt vier Bildern) verwendet.

* Script 5 Fallengelassen

scrp 2 7 1 5

snde drop

pose 1

endm

Das Skript mit der Ereignisnummer 5 bestimmt, wie ein Objekt sich verhält, wenn es fallengelassen wird (egal ob von der Hand oder von einem Norn).

snde drop
Spielt die Sounddatei drop ab.

pose 1
Fällt das Objekt zu Boden, wird das 2. Bild von den vieren verwendet.

* Script 17 EXTRA Aktivieren(1)

scrp 2 7 1 17

drop

impt 3

aim: 0

appr

touc

wait 4

mesg writ _it_ 4

wait 10

pose 73

wait 5

snde cofe

mesg writ _it_ 0

pose 74

wait 7

pose 12

wait 4

mesg writ _it_ 5

impt 0

wait 20

done

endm

Das Skript mit der Ereignisnummer 17 ist ein sehr komplexes Skript, das man dazu verwenden kann, um für ein bestimmtes Objekt ein bestimmtes Verhalten bei einem Norn oder Grendel zu erreichen. Creatures enthält für dieses Ereignis ein Standardskript (wie für alle Standardaktionen, die von einem Norn/Grendel ausgeführt werden), aber man kann es mit einem eigenen Skript überschreiben. Manches erscheint hier allerdings auch doppelt.

drop
Weist den Norn an, das Objekt fallenzulassen, wenn Skript Nr. 1 beendet ist.

impt 3
Zeigt an, dass es sich um ein "wichtiges" Ereignis handelt, das man sich merken sollte.

aim: 0
Definiert das IT-Objekt für spätere APPR und/oder TOUC –Befehle als Ziel.

appr
Bewirkt, dass der Norn sich nähert.

touc
Zwingt den Norn, das Objekt zu berühren.

wait 4
Definiert eine Wartezeit von 4 Ticks, bevor das Skript weiter ausgeführt wird.

mesg writ _it_ 4
Teilt dem Norn (_it_, nicht dem Inhaber des Skripts, nämlich die Kaffekanne!) mit, dass er das Objekt aufheben soll (Ereignis 4).

wait 10
Zehn Ticks Wartezeit, bis das Skript weiterausgeführt wird.

pose 73
Das Target _it_ (der Norn) wird hiermit dazu gebracht, die Stellung 73 einzunehmen (halten der Kaffekanne vor sich).

wait 5
Fünf Ticks Wartezeit, bis es weitergeht.

snde cofe
Spielt den Sound cofe ab.

mesg writ _it_ 0
Ruft das Skript "Aktivieren 1" auf.

pose 74
Der Norn nimmt nun die Stellung 74 ein (Haltung des Trinkens).

wait 7
Sieben Ticks Wartezeit, bis es weitergeht.

pose 12
Die Haltung des Norns ändert sich noch einmal (leider habe ich keine Liste der Haltungen gefunden, kann also nur vermuten, was passiert, nämlich dass der Norn die Kaffekanne absetzt).

wait 4
Vier Ticks Wartezeit, bis es weitergeht.

mesg writ _it_ 5
Zwingt den Norn, das Objekt fallenzulassen (Ereignis Nr. 5).

impt 0
Nun passiert nichts Wichtiges mehr.

wait 20
20 Ticks Wartezeit, bevor das Skript weiter ausgeführt wird.

done
Aktion beendet.


zuletzt geändert: 28.03.2005

Neues auf diesen Seiten
Creatures 1
Creatures 2
Creatures 3
Häufig gestellte Fragen
Creatures Links
Kommentare
Über mich
Email
Webringe
Home (Gesehen und Gelesen)