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
|