# CAOS-Programmierung: komplett

HINWEIS : Diese ÜBERSICHT bitte nicht drucken !!Es werden noch laufend Änderungen vorgenommen
Dieser Text ist sowohl unter der „Creative Commons Attribution/Share-Alike“-Lizenz 3.0 als auch GFDL lizenziert.
Eine deutschsprachige Beschreibung für Autoren und Weiternutzer findet man in den Nutzungsbedingungen der Wikimedia Foundation.
Dieses Buch steht im Regal Programmierung.
Hinweis: Auf dieser Seite erhalten Sie eine komplette Übersicht

## Zusammenfassung des Projekts

* Zielgruppe: Alle die Creatures / Dockingstation spielen
* Lernziele: Das Wissen um die Programmiersprache Caos bewahren
* Buchpatenschaft / Ansprechperson: Zur Zeit niemand, das Buch darf gerne übernommen werden.
* Sind Co-Autoren gegenwärtig erwünscht?jeder ist willkommen
* Aufbau des Buches:

## Vorwort

In diesem Buch versuche ich, alle wichtigen Aspekte rund um CAOS zusammen zu fassen. Im Internet sind schon sehr viele Ansätze und Tutorials vorhanden, aber der Vorteil des WWW ist auch der Nachteil. Oft wird die Website gelöscht und meist ist der Inhalt verloren; neue Interessenten stehen vor dem Problem, daß die gewünschte Information erst gesucht oder in Foren erfragt werden muß. Es wird um rege Beteiligung gebeten, denn alleine so ein großes Projekt zu bewältigen ist sehr zeitaufwändig.

## Tools

Für Win , Linux und Mac

## CAOS

* Syntax
* Variablen
* Befehlsgruppen
* Unterschiede in den Codes von C1 bis DS
* Beispiele

## Ausblick

Es sind einige Jahre vergangen seit dem Creatures 1 erschienen ist. Ist es also sinnvoll, sich mit einer Programmiersprache zu beschäftigen, die erstens sehr speziell und nicht objektorientiert strukturiert usw." ist?
Dies muss natürlich jeder für sich entscheiden. Programme für DC/C3 benötigen CAOS. Als Spiel, das nichts mit DS zu tun hat, aber als Agent eingefügt werden kann, ist mir nur Asteroids bekannt. Vom Sprachumfang ist es natürlich möglich, vieles andere auch zu programmieren... Ein neuer Ansatz ist ein Compiler, welcher zur Zeit entwickelt wird (pre alpha), welcher einen an C angelehnten Sprachsyntax hat.
Zu dem gibt es mit Openc2e eine hoffnungsvollen OpenSource Projekt, welches dann für das Lifandi Projekt, als neue Engine, Verwendung finden soll. Die Projekte leben natürlich nur vom Mitmachen. Also werden auch CAOS-Programmierer noch ein Betätigungsfeld finden. Und ich hoffe, dass CAOS auch für andere Projekte (Spiele) genutzt wird. Ebenso wird auch ein Nachschlagewerk benötigt, für alle die neu hinzu kommen.

## Links

Ich möchte so wenige Links wie möglich verwenden. Dies soll vor allem für neue Nutzer sein, die einen ersten Anlaufpunkt benötigen.
* http://creatures.wiki/ : englische wiki seite soll aber bald verschoben werden (wird beobachtet)
* http://www.gamewaredevelopment.com/cdn/ : Starteite vom Copyright-Inhaber "Distributor" , download möglichkeit von DS<

## Hinweise zum Markenrecht

Gameware Development, Creature Labs, CyberLife, Creatures, Creatures Adventures and Creatures Playground are registered trademarks of Gameware Development Ltd.. The Gameware Development, Creatures, Creatures 2, Creatures 3, Creatures Adventures, Creatures Playground, and Docking Station logos are trademarks of Gameware Development Ltd. in the United Kingdom and other countries
<< Inhaltsverzeichnis >>
Die Abkürzung bedeutet Creatures Agent/Object Scripting. Dies ist die Scriptsprache, auf welcher die Spieleserie Creatures, Creatures 2, Creatures 3 und Dockingstation basieren. Zeitlich aufeinanderfolgend wurden viele Ergänzungen hinzugefügt und einiges wurde geändert. So ist Caos aus C3 nicht abwärtskompatibel zu C2.
CAOS wird verwendet, um die Umgebung, den Hintergrund und die Spielsteuerung zu programmieren. Das komplette Spiel DS (Dockingstation) ist in CAOS geschrieben.
Die verwendete Engine ist für Windows XP, Linux und Mac vorhanden, eine Open-Source-Variante ist openc2e. Basierend auf der DS-Engine wurde Edynn als Open-Source-Spiel in CAOS programmiert. Leider wurde die Entwicklung von Edynn eingestellt.
Rund um C3 und DS gibt es viele Möglichkeiten, sich kreativ zu betätigen. Sehr beliebt sind Agenten, Zusatz-Scripts mit eigenen Bilder-, Sound- und Helpdateien, gepackt als Agentfiles. Als Voraussetzung bzw. Ergänzung muß ich momentan noch auf die Links verweisen.
Ich werde versuchen, CAOS unabhängig vom Spiel C3/DS zu erklären; oft ist es aber sinnvoll, dies im Spielkontext zu sehen.
Abkürzungen:
    C1, C2 C3 damit sind die Spielversionen Creatures 1 bis 3 gemeint
    DS ist Dockingstation, die kostenlose und netzfähige Version von Creatures
    Engine ist das Herzstück, der Scriptinterpreter in den verschiedenen Varianten (zB.engine.exe oder lc2e : Linux Creatures Evolution Engine)
Als Voraussetzung ist es notwendig, dass Dockingstation auf dem PC installiert ist. Des weiteren wird ein Texteditor benötigt.
* Warnung : Jeder ist für sein tun verantwortlich, darum bitte BACKUP.
* Legen Sie bitte einen neuen Ordner zum Testen an; siehe unten
* Hinweis: Dieses Buch ist gerade in einem ersten Aufbau. Bei Interesse schreibe dein Wissen gern ohne große Formatierungen hier hinein...

## Vorbereitung
### Linux

Download von entsprechender Website. Installation z.B. nach folgendem Muster:
* im Ordner /usr/local/ : chmod -R a+wr games ausführen
* neuen Ordner "ds" erstellen im Desktop-Verzeichnis des Users
* entpacken des Archivs nach ds
* wechseln nach ds
* einfügen mit Texteditor Zeile 3 : "REALLY_RUN_AS_ROOT=true"
* im Terminal eingeben "sudo ./dstation-install "
* Sprache auswählen;Fertig
* nach erfolgter Installation
* im Ordner /usr/local/games : chmod -R a+wr dockingstation ausführen
* erstellen einer Kopie vom Ordner /usr/local/games/dockingstation als Ordner "test"
* öffnen von dstation-install (im Ordner /usr/local/games/test) mit texteditor und ändern folgender Zeilen
* nochmaliges "./dstation-install " (nocheck ist schon gesetzt)
* Starter auf dem Desktop anlegen, Ausführung im terminal und mit /usr/local/games/test/dstation-install als Befehl!
* nun haben Sie eine Kopie der Dockingstation im Ordner /usr/local/games/test und im /home/USER/test stehen
Es wäre von Vorteil wenn jemand eine einfacheres Script schreibt (ohne Update-Check, da die Website nicht mehr existiert)
Für Puristen (kein Spiel sondern nur CAOS)
Nun kann man die "überflüssigen" Dateien im Bootstrap-Verzeichnis löschen. Doch Vorsicht! Auf alle Fälle sollten der Ordner 000 Switcher unverändertbleiben. Im Ordner 010 Dockingstation sollten folgende Dateien noch vorhanden sein (MINIMAL):
* !map.cos
* !DS_game variables.cos
* !kill duplicate Creatures 3 agents.cos
* !meso enviroment.cos
* !world_tints.cos
* DS CAOS comandline.cos
* dev tool.cos
* ds gui-options.cos
* DS keyboard handler.cos
Legen Sie einen neuen Ordner test an. Hier kommen die neuen cos Files. Nun klick auf den Desktop-starter, Dockingstation startet und falls der World-switcher-dialog nicht erscheint bitte auf "schließen" klicken; dann sollte er da sein.
Nachdem eine neue "Welt" erzeugt ist kann man "normal" auf Beenden klicken und Speichern dann ist man wieder im World-switcher-dialog.

### WIN

Dieser Absatz ist stark an Creatures Wiki angelehnt.
* Installiere von DS normal
* Kopiere den Ordner dockingstation an eine beliebige Stelle
* Umbenennen vom Ordner in z.B "test"
* In dem neuen Ordner muß die Datei "machine.cfg" mit einem simplen Texteditor geöffnet werden
* an der Stelle "Game Name" "Docking Station", soll Docking Station in z.B. "test" umbenannt werden
* nun kann mit Doppelklick auf engine.exe das Spiel gestartet werden
* Im Bootstrap Verzeichnis der Kopie gilt das gleich wie unter Linux

### MAC

Dies sollte jemand schreiben der sich mit MAC auskennt

## Begriffe
### Was ist Was

Die Engine verarbeitet Scripte die im Bootstrap Ordner gespeichert sind.Ich möchte ein paar Begriffe erklären die DS spezifisch sind.
    MAP
       gemeint ist eine art Weltkarte , genauer gesagt ein Koordinatensystem X,Y mit einer größe von ca 10000 x 10000 Pixeln
       (In manchen Addons wird die erweitert bis 100000 x 100000 Pixeln )
       Anfandspunkt 0,0 ist Oben , Links wenn der Betrachter auf den Bildschirm schaut
       Auf diese Ebene beziehen sich alle darauf folgenden Ebenen
       dies muß am Anfang definiert werden siehe Befehl mapk löschen der MAP und brmi sezt Neuen Metaroom Index
    Metaroom
       eine Untermenge der Weltkarte , bekommt eine Metaroomnr. zugewiesen .Ist der eigentliche momentan sichtbare Bereich der
       MAP die Koordinaten der einzelnen Bildelemente (zb.Agenten) sind relativ zum MAPursprung.
       Benötigt ein Bild im 'blk' Format im Ordner Backgrounds
    Room
       ein Metaroom (siehe oben) ist in mehrere Räume unterteilt, die alle
       verschiedene Eigenschaften erhalten können (z.B. Atembarkeit der Luft)
    script
       Agenten beinhalten mehrere scripts. Jedes script ist für ein bestimmtes Ereignis zuständig (z.B. "wurde fallen gelassen") und sorgt für die Ausführung von CAOS-Anweisungen, wenn das Ereignis eintritt. (Zulässige Ereignisse werden später aufgelistet)
    Agent
       ein Objekt in der Welt von Creatures 3 bzw. Docking Station. Alles, was eine Interaktion ermöglicht, ist als Agent zu verstehen. Dazu gehören auch die Hand (der Mauszeiger) und die Wesen selbst. Ein Agent wird klassifiziert durch 3 Zahlen (Family, Genus, Species). Die Hand wird mit 2 1 1 bezeichnet.
    Door
       Eine Tür kann einerseits eine Absperrung zwischen Rooms darstellen, die Bewegungen innerhalb von Metarooms einschränken oder zulassen kann. Andererseits kann man sie auch als Verbindungen zwischen Metarooms nutzen, die eine Reise in der ganzen Map ermöglichen.
    NORN
       Ein kleines putziges Wesen, ist A-Life. Künstliches Lebewesen welches mit der Umgebung interagiert, kommuniziert und manchmal auch beleidigt ist. Hat eine variable Lebensspanne und kann sich Fortpflanzen. Zum Anzeigen werden Sprites im *.c16 Format benötigt, welche die Anzeigeposition in der *.att-Datei gespeichert hat.In der *.gen und *.gno Datei sind die einzigartigen Gene gespeichert. Ein Norn besitzt ca. 800 Gene.

### Speicherorte

In der Datei machine.cfg werden die relativen Verzeichnisse definiert , aus welchen die Engine alle benötigten Daten holt "Backgrounds Directory" "Backgrounds" Hintergrundbilder der Metarooms im blk format "Body Data Directory" "Body Data" Koordinaten für das "zusammensetzen" der Norn im att Format "Bootstrap Directory" "Bootstrap" Alle benötigten cos Dateien mit CAOS Scripten "Catalogue Directory" "Catalogue" Hilfs-Text Dateien catalouge-Datei ;einfach Text Datei
"Creature Database Directory" "Creature Galleries"
"Exported Creatures Directory" "My Creatures" Import /Export von Creatures
"Game Name" "Docking Station" Name des Spiels "Genetics Directory" "Genetics" Genetik infos für Creatures (ein großes Kapitel für sich) "Images Directory" "Images" Bilder Dateien verwendet von CAOS-Scripten und Norn "Journal Directory" "Journal" Temporärer Speicher Ort der interne Infos "Main Directory" "."
"Overlay Data Directory" "Overlay Data"
"Resource Files Directory" "My Agents" Agenten "Sounds Directory" "Sounds" Musik "Users Directory" "Users"
"Worlds Directory" "My Worlds" Welten
"Win32 Auxiliary Game Name 1" "Creatures 3" Hilfsdatei

### Dateiformate

    *.wav
       Sounddateien werden im üblichen unkomprimierten wav-Format abgelegt.
    *.mng
       Dieses Format bezeichnet die Hintergrundmusik der verschiedenen Metarooms.
    *.gen
       In solchen Dateien werden die Gene der Wesen abgelegt. Im Gegensatz zu C2 wird nicht mehr für jedes Wesen eine eigene Genom-Datei erzeugt, sondern es existiert eine Datei für alle Wesen die von diesem Genom abstammen.
    *.gno
    *.catalogue
       Diese Dateien beinhalten die Agenten-Hilfe (mit F1 aufrufen)
    *.cos
       Dateien mit diesem Format bilden sozusagen das Herzstück von C3/DS. Darin stehen die Agenten mit allen zugehörigen scripts.
       Cos-Dateien im Ordner "Bootstrap" werden beim Erzeugen einer Welt einmalig aufgerufen. Wenn man sie mehrmals nutzen möchte, benötigt man den "ject"-Befehl oder muss einen Agenten daraus erstellen.
    *.agent
       Dies ist eine zum Agenten kompilierte cos-Datei. Sie kann - vorausgesetzt sie befindet sich im richtigen Ordner - per Erzeuger in die Welt eingefügt werden. Sprites und Sounds müssen gesondert in Ordner eingefügt werden.
    *.agents
       Eine Agents-Datei beinhaltet nicht nur den Code des Agenten, sondern auch noch Informationen zu Bildern und Sound etc. Sie stellt also eine Art Gesamtpaket des Agenten dar. Es sind keine zusätzlichen Dateien nötig.
    *.creature
    *.blk
       Die Hintergrund-Dateien sind im Ordner Backgrounds als *.blk gespeichert.Ein ähnliches Format wie c16.*.blk und *.c16 können mit Spriteeditor oder Gimpplug-in editiert werden
    *.att
       Text-Datei , in der festgehalten ist an welcher Stelle die einzelnen Sprites des Norns angezeigt werden.

## c16 Datei

    *.c16
       Bilddateien in C3/DS werden im Format c16 abgelegt. Dateien in diesem Format können mehrere Bilder beinhalten, auf die einzeln zugegriffen werden kann.
c16 Datei welche ich für einige Beispiele verwende

### Minimum

Diese Dateien sind das absolute Minimum, welches für den Einsatz der Engine erforderlich ist .KEIN CREATURES SPIEL nur reines CAOS
<< Inhaltsverzeichnis >>
<< Einleitung || Inhaltsverzeichnis >>
Für meine Beispiele verwende ich rech.c16,hier der Inhalt der Datei rech.c16. Es ist nichts besonderes, nur ein paar Quadrate mit 50x50 Pixel und als Hintergrund ein Rahmen mit 350x350 Pixel und Anzeigehintergrund 250x60 Pixel alles natürlich abgespeichert in dem Ordner Images.
Innerhalb der Datei werden die Bilder fortlaufend Nummeriert, beginnend mit links oben Sprite 0(wichtig), Sprite 1 ... Endet mit Sprite 36 rechts unten) Z.B. Befehl:
Sprite 2 ist etwas heller als Sprite 3 ,wird bei Agent mit Buttons, benötigt wenn Maus über dem Sprite ist.
Screenshot der Inhalte
weitere Spritedateien : medm.c16 ( Bild 0 bis 22) und hpot.c16 (Bild 23 und 24) sind nur abgebildet und nicht bei mir als download erhältlich anzeige2.c16(Bild 25 bis 30)
anzeige3.c16, (Bild 31 bis 36)
PS.Diese Anzeige ist nicht maßstabsgetreu .Z.B sind die ersten Beiden Sprites viel Kleiner.
<< Einleitung || Inhaltsverzeichnis >>

## Für Win

Eine kurze Beschreibung hilfreicher Tools, die ein schnelleres Programmieren ermöglichen.
* Auf der Website von gamewaredevelopment:
** CAOS Editor -Texteditor mit Hervorhebung der CAOS-Befehle, einfügen in das Spiel
** Spritebuilder -Grafikeditor für das c16- und blk-Format
** MAP Editor -Editor für Kartengestaltung, direktes Einfügen in laufendes Spiel möglich
** Praybuilder -Packer für fertige Agenten, fasst alle Sprites, Musik und CAOS-Befehle in ein installierbares Format zusammen
** c3/DS Genetic Kit -Editor für das Bearbeiten der Gene von NORNs
** Biochemistry Set for Creatures 3 and Docking Station
** Catalogue checker tool -Hilfstool zum Überprüfen der *.catlouge-Dateien
** CAOS Debugger -Hilfreich bei Fehlersuche
** Brain in a Vat Tool
* von Anderen Quellen
** Zeus - kann sehr vieles z.B. Editor, decompress für prayfiles oder c16-Dateien anzeigen
** Easypray -Grafischer praybuilder
** REVELATION - PRAY file decompressor and extractor
** GIMP plugin sprite editor and Sprite file conversion libs
** Nornposer -Darstellung verschiedener Posen der Norns
** Genetik?
** Jagent in Java programmiert.Zum erstellen, compilieren und anzeigen diverser Dateien
** LiveGMS -Online Genetik

## Für Linux

* praybuilder - bei gamewaredevelopment
* linuxconsole tools - bei gamewaredevelopment
* easyPRAY - s.o.
* easyATT - wie Nornposer noch nicht fertig
* maxiCAOS
* libC16
* libCreatures
* gtkScriptorium - Agenten debugging
* C16 Converting Tools -Umwandlung der verschiedenen Formate (Konsoletool)
* GIMP Plugin for C16 files
* Jagent in Java programmiert. Zum erstellen, compilieren und anzeigen diverser Dateien
* LiveGMS -Online Genetik

## Für MAC

* Jagent in Java programmiert. Zum erstellen, compilieren und anzeigen diverser Dateien
* LiveGMS -Online Genetik
Ich verzichte absichtlich auf Links, da die Möglichkeit zum Download nicht immer dauerhaft besteht, wenn z.B. Websites nicht mehr verfügbar sind.
Liste unvollständig ? dann bitte ergänzen
<< | Inhaltsverzeichnis | Variablen >>
Syntax
Kommentare werden mit einem " * " eingeleitet und gelten bis zum nächsten Enter
CAOS ist eine registerbasierte Sprache, mit einem festgelegten Befehlssatz, welcher nicht erweitert werden kann. Lokalesierung von Variablen wird nicht unterstützt.(d.h. in einem Script-Unterprogramm können auch nur die gültigen Variablen VA00 bis VA99 angesprochen werden )
Jede Script-Datei kann Subroutinen enthalten.Doch diese sind nur in dieser Datei und für die angegebene Scriptnummer gültig, können also nicht von "Außen" aufgerufen werden.
Der CAOS-Code kann als einzelner Befehl, in ein laufendes Programm (Spiel) eingegeben werden. Dies geschieht entweder durch die CAOS-Befehlszeile in DS (muß als Script schon laufen) oder von einem Terminal. Jedoch wird CAOS meistens als Script verwendet. Ein typisches Beispiel
Dies ist nur die Darstellung lesbar für den Programmierer, intern verarbeitet DS dies so:
Die Befehle des Codes, immer vier Buchstaben, sind Abkürzungen des Englischen.
Es gibt nur zwei Ausnahmen der "Vier-Buchstaben-Regel":
Die Zahlen vor oder nach dem Befehl haben immer spezielle Bedeutungen, z.B Reibung(wert) 0. Die Bedeutung und welche Angaben benötigt werden ist in den einzelnen Befehlsgruppen erläutert.
Hauptaufgabe von CAOS ist das Beschreiben von Objekten(Agents), deren Eigenschaften und die Interaktion untereinander, mit Norns und mit dem User(per Mouse(Hand) oder Tastatur) Kursiv weil es nicht objektorientiert verstanden werden soll, nur in etwas so ähnlich. Vieles ist zugeschnitten auf das Spiel, einige Sachen fehlen (für OOP) und einiges wird anders ausgeführt.
Die Code der Agenten setzen sich aus verschiedenen Dingen zusammen.
Es gibt eine Reihe von vordefinierten Ereignissen : Script Numbers
Zur Steuerung de Programmablaufs gibt es unter Flow die entsprechenden Befehle.
Speziell für das Entwickeln von CAOS-Programmen gibt es die Debug Befehle, mit der Ausgabe über einen Terminal.
Weiterhin sind Befehle für das Zugreifen auf "Files" , den "Sound" und das "Net".Einige Befehlsgruppen sind nur für Norn- Brain oder -History zuständig.
<< | Inhaltsverzeichnis | Variablen >>
Noch im Aufbau
CAOS Scripts haben 100 Register der Form VAxx , um temporäre Variablen zu speichern.z.B
VAxx ermöglicht es Integer- , Dezimal- oder Stringinhalte zu speichern.Dies wird durch setv Zahl oder sets string erreicht z.B.
Zusätzlich kann ein Objekt in ein spezielle Register TARG vorgewählt werden.Dann können 100 Attribute des Gegenstandes mit Registern der Form OVxx erreicht werden. In den meisten Fällen muss ein Objekt mit TARG angesprochen werden, bevor die richtigen OVxx ausgewählt sind.z.B. new: simp 2 32 23 "bacteria" 2 0 6999 Hinweis ist automatisch aktueller targ
Hinweis In DS/C3 sind OVxx mit vorgegebenen Bedeutungen belegt !! Siehe http://www.gamewaredevelopment.co.uk/cdn/cdn_more.php?CDN_article_id=7
Mit AVAR kann man einfache Felder erzeugen.folgt noch
Globale Variablen sind von jedem Script ansprechbar.In DS sind folgende Game Variables verwendet . z.B.
<< Syntax | Inhaltsverzeichnis | Befehlsgruppen >>
<< Variablen | Inhaltsverzeichnis | Unterschiede in den Codes von C1 bis DS >>
* Achtung  : Zur Zeit ist nur ein Teil übersetzt und mit Beispielen ausgestattet. Erzeugt mit Befehlfolge : file oope 1 "CAOS categorical.html" 0 dbg: html 1 file oclo Ergibt: "CAOS Documentation - Creatures Engine 2.296"
* Hinweis
* Bei einigen Befehlen ist das Verhalten verschieden, abhängig von der Anzahl der Parameter z.B
* ATTR (Befehl) attributes (integer) attr 199 übergibt einen Wert
* ATTR (integer) nur attr liefert einen Wert des targ
Beispiel:
Diese Befehle können auch ohne Bezug auf Norns in unabhängig von DS geschriebenen Programmen verwendet werden
* Agents Eigenschaften und Verhalten
* Camera Ansichten steuern
* CD Player
* Compounds für komplexe Agenten
* Debug hilfreich bei Fehlersuche und Entwicklung
* Files Datei manipulation
* Flow Vergleichen,Schleifen und Unterprogramme
* Input Ereigniss abfrage
* Map alles um ROOM´
* Motion
* Net fürs Internet
* Ports
* Resources
* Scripts Parameter für´s ausführen von Scripten
* Sounds Musik und Geräusche
* Time Rund um die Zeit
* Variables 'große Mathematik'
* Vehicles Spezialbefehle um Norn´s zu transpotieren
* World Hauptprogramm Anweisungen
Diese Befehle betreffen NORN´s
* Brain damit Funktioniert das Gehirn (aber nur von Norn´s)
* Creatures das Norn selber und was es macht
* History Geschichte des Wesens darstellen
* Genetics Erbmasse
Folgende ergänzende Vereinbarungen sind für das Programmieren kompatibler Dockingstation-Programme unerlässlich.
Sollen die Caos Programme unabhängig laufen, dann kann man eigene Definitionen treffen ,oder Variablen ganz weglassen
* Eame Variables
* Emitter Locus Numbers
* Game Variables
* Receptor Locus Numbers
Diese Vereinbarungen gelten immer
* Attribute Flags
* Script Numbers
* Creature Permissions aber nur wichtig wenn Norn´s mit im Spiel sind.
* Debug Keys
* Message Numbers
* Stimulus Numbers aber nur wichtig wenn Norn´s mit im Spiel sind.
* Vordefinierte Kategorien
sollte etwas falsch sein bitte ändern
<< Variablen | Inhaltsverzeichnis | Unterschiede in den Codes von C1 bis DS >>
<< Befehlsgruppen | Inhaltsverzeichnis >>
Dies Befehle sind den Agents zuzuordnen:
Agents
ABBA (integer)
ALPH (command) alpha_value (integer) yesOrNo (integer)
ANIM (command) pose_list (byte-string)
ANMS (command) anim_string (string)
ATTR (command) attributes (integer)
ATTR (integer)
BASE (command) index (integer)
BASE (integer)
BHVR (command) permissions (integer)
BHVR (integer)
CALL (command) event_no (integer) param_1 (anything) param_2 (anything)
CARR (agent)
CATA (integer)
CATI (integer) family (integer) genus (integer) species (integer)
CATO (command) category (integer)
CATX (string) category_id (integer)
CLAC (integer)
CLIK (integer) which_value (integer)
CORE (command) topY (float) bottomY (float) leftX (float) rightX (float)
DCOR (command) core_on (integer)
DISQ (float) other (agent)
DROP (command)
DSEE (command) can_see_on (integer)
ENUM (command) family (integer) genus (integer) species (integer)
ESEE (command) family (integer) genus (integer) species (integer)
ETCH (command) family (integer) genus (integer) species (integer)
FLTX (float)
FLTY (float)
FMLY (integer)
FRAT (command) FrameRate (integer)
FROM (variable)
GAIT (command) gait_number (integer)
GALL (command) sprite_file (string) first_image (integer)
GALL (string)
GNUS (integer)
HAND (command) name_for_the_hand (string)
HAND (string)
HELD (agent)
HGHT (integer)
IITT (agent)
IMSK (integer)
KILL (command) agent (agent)
MESG WRIT (command) agent (agent) message_id (integer)
MESG WRT+ (command) agent (agent) message_id (integer) param_1 (anything) param_2 (anything) delay (integer)
MIRA (command) on_off (integer)
MIRA (integer)
MOWS (integer)
MTHX (float)
MTHY (float)
NCLS (agent) previous (agent) family (integer) genus (integer) species (integer)
NEW: SIMP (command) family (integer) genus (integer) species (integer) sprite_file (string) image_count (integer) first_image (integer) plane (integer)
NEXT (command)
NOHH (command)
NULL (agent)
OVER (command)
OWNR (agent)
PAUS (command) paused (integer)
PAUS (integer)
PCLS (agent) next (agent) family (integer) genus (integer) species (integer)
PLNE (command) plane (integer)
PLNE (integer)
PNTR (agent)
POSB (float)
POSE (command) pose (integer)
POSE (integer)
POSL (float)
POSR (float)
POST (float)
POSX (float)
POSY (float)
PUHL (command) pose (integer) x (integer) y (integer)
PUHL (integer) pose (integer) x_or_y (integer)
PUPT (command) pose (integer) x (integer) y (integer)
PUPT (integer) pose (integer) x_or_y (integer)
RNGE (command) distance (float)
RNGE (float)
RTAR (command) family (integer) genus (integer) species (integer)
SEEE (integer) first (agent) second (agent)
SHOW (command) visibility (integer)
SPCS (integer)
STAR (command) family (integer) genus (integer) species (integer)
TARG (agent)
TCOR (integer) topY (float) bottomY (float) leftX (float) rightX (float)
TICK (command) tick_rate (integer)
TICK (integer)
TINO (command) red_tint (integer) green_tint (integer) blue_tint (integer) rotation (integer) swap (integer)
TINT (command) red_tint (integer) green_tint (integer) blue_tint (integer) rotation (integer) swap (integer)
TINT (integer) attribute (integer)
TOTL (integer) family (integer) genus (integer) species (integer)
TOUC (integer) first (agent) second (agent)
TRAN (integer) xpos (integer) ypos (integer)
TTAR (command) family (integer) genus (integer) species (integer)
TWIN (agent) original (agent) agent_null (integer)
UCLN (command)
VISI (integer) checkAllCameras (integer)
WDTH (integer)
WILD (string) family (integer) genus (integer) species (integer) tag_stub (string) offset (integer)
_IT_ (agent)
<< Befehlsgruppen | Inhaltsverzeichnis >>
<< Befehlsgruppen | Inhaltsverzeichnis >>
Camera
BKGD (command) metaroom_id (integer) background (string) transition (integer)
BKGD (string) metaroom_id (integer)
BRMI (command) metaroom_base, (integer) room_base (integer)
CMRA (command) x (integer) y (integer) pan (integer)
CMRP (command) x (integer) y (integer) pan (integer)
CMRT (command) pan (integer)
CMRX (integer)
CMRY (integer)
FRSH (command)
LINE (command) x1 (integer) y1 (integer) x2 (integer) y2 (integer) r (integer) g (integer) b (integer) stipple_on (integer) stipple_off (integer)
LOFT (integer) filename (string)
META (command) metaroom_id (integer) camera_x (integer) camera_y (integer) transition (integer)
META (integer)
SCAM (command) compoundagent (agent) partNumber (integer)
SNAP (command) filename (string) x_centre (integer) y_centre (integer) width (integer) height (integer) zoom_factor (integer)
SNAX (integer) filename (string)
TRCK (command) agent (agent) x% (integer) y% (integer) style (integer) transition (integer)
TRCK (agent)
WDOW (command)
WDOW (integer)
WNDB (integer)
WNDH (integer)
WNDL (integer)
WNDR (integer)
WNDT (integer)
WNDW (integer)
ZOOM (command) pixels (integer) x (integer) y (integer)
<< Befehlsgruppen | Inhaltsverzeichnis >>
<< Befehlsgruppen | Inhaltsverzeichnis >>
CD Player
_CD_ EJCT (Befehl)
_CD_ FRQH (integer)
_CD_ FRQL (integer)
_CD_ FRQM (integer)
_CD_ INIT (Befehl)
_CD_ PAWS (Befehl) on_off (integer)
_CD_ PLAY (Befehl) first_track (integer) last_track (integer)
_CD_ SHUT (Befehl)
_CD_ STOP (Befehl)
Beispiel
<< Befehlsgruppen | Inhaltsverzeichnis >>
<< Befehlsgruppen | Inhaltsverzeichnis >>
Compounds
FCUS (command)
FRMT (command) left_margin (integer) top_margin (integer) right_margin (integer) bottom_margin (integer) line_spacing (integer) character_spacing (integer) justification (integer)
GRPL (command) red (integer) green (integer) blue (integer) min_y (float) max_y (float)
GRPV (command) line_index (integer) value (float)
NEW: COMP (command) family (integer) genus (integer) species (integer) sprite_file (string) image_count (integer) first_image (integer) plane (integer)
NPGS (integer)
PAGE (command) page (integer)
PAGE (integer)
PART (command) part_id (integer)
PART (integer) part_id (integer)
PAT: BUTT (command) part_id (integer) sprite_file (string) first_image (integer) image_count (integer) rel_x (decimal) rel_y (decimal) rel_plane (integer) anim_hover (byte-string) message_id (integer) option (integer)
PAT: CMRA (command) part_id (integer) overlay_sprite (string) baseimage (integer) relx (decimal) rely (decimal) relplane (integer) viewWidth (integer) viewHeight (integer) cameraWidth (integer) cameraHeight (integer)
PAT: DULL (command) part_id (integer) sprite_file (string) first_image (integer) rel_x (decimal) rel_y (decimal) rel_plane (integer)
PAT: FIXD (command) part_id (integer) sprite_file (string) first_image (integer) rel_x (decimal) rel_y (decimal) rel_plane (integer) font_sprite (string)
PAT: GRPH (command) part_id (integer) overlay_sprite (string) baseimage (integer) relx (decimal) rely (decimal) relplane (integer) numValues (integer)
PAT: KILL (command) part_id (integer)
PAT: MOVE (command) part_id (integer) rel_x (decimal) rely (decimal)
PAT: TEXT (command) part_id (integer) sprite_file (string) first_image (integer) rel_x (decimal) rel_y (decimal) rel_plane (integer) message_id (integer) font_sprite (string)
PNXT (integer) previous_part (integer)
PTXT (command) text (string)
PTXT (string)
<< Befehlsgruppen | Inhaltsverzeichnis >>
<< Befehlsgruppen | Inhaltsverzeichnis >>
Debug
AGNT (agent) unique_id (integer)
APRO (command) search_text (string)
BANG (command)
CODE (integer)
CODF (integer)
CODG (integer)
CODP (integer)
CODS (integer)
DBG# (string) variable (integer)
DBG: ASRT (command) condition (condition)
DBG: CPRO (command)
DBG: FLSH (command)
DBG: HTML (command) sort_order (integer)
DBG: OUTS (command) value (string)
DBG: OUTV (command) value (decimal)
DBG: PAWS (command)
DBG: PLAY (command)
DBG: POLL (command)
DBG: PROF (command)
DBG: TACK (command) follow (agent)
DBG: TOCK (command)
DBG: WTIK (command) new_world_tick (integer)
DBGA (string) variable (integer)
HEAP (integer) index (integer)
HELP (command)
MANN (command) command (string)
MEMX (command)
PAWS (integer)
TACK (agent)
UNID (integer)
<< Befehlsgruppen | Inhaltsverzeichnis >>
Files
FILE GLOB (command) directory (integer) filespec (string)
FILE ICLO (command)
FILE IOPE (command) directory (integer) filename (string)
FILE JDEL (command) directory (integer) filename (string)
FILE OCLO (command)
FILE OFLU (command)
FILE OOPE (command) directory (integer) filename (string) append (integer)
FVWM (string) name (string)
INNF (float)
INNI (integer)
INNL (string)
INOK (integer)
OUTS (command) text (string)
OUTV (command) value (decimal)
OUTX (command) text (string)
WEBB (command) http_url (string)

## Beispiele aus creatures wiki von Alexwatson

Ist die Welt an C3 angedockt? Verwendet INNL.
Testet ob z.B. eine bestimmte Version von der Engine installiert ist.
Alle Dateien im Verzeichnis ausgeben:
<< Befehlsgruppen | Inhaltsverzeichnis >>

## Vergleiche

DOIF (Befehl) Bedingung (Bedingung)
ELIF (Befehl) Bedingung (Bedingung) mehrfaches else
ELSE (Befehl)
ENDI (Befehl)

## Schleifen

LOOP (Befehl)}
EVER (Befehl)
UNTL (Befehl) Bedingung (Bedingung)
REPE (Befehl)
REPS (Befehl) Anzahl (integer)

## Unterprogramme

GOTO (Befehl) Bestimmungsort (Marke)
GSUB (Befehl) Bestimmungsort (Marke)
RETN (Befehl)
SUBR (Befehl)
<< Befehlsgruppen | Inhaltsverzeichnis >>
<< Befehlsgruppen | Inhaltsverzeichnis >>
Input
CLAC (command) message (integer)
CLIK (command) message_1 (integer) message_2 (integer) message_3 (integer)
HOTP (integer)
HOTS (agent)
IMSK (command) mask (integer)
MOPX (integer)
MOPY (integer)
MOUS (command) behaviour (integer)
MOVX (float)
MOVY (float)
PURE (command) value (integer)
PURE (integer)
TRAN (command) transparency (integer) part_no (integer)
<< Befehlsgruppen | Inhaltsverzeichnis >>
<< Befehlsgruppen | Inhaltsverzeichnis >>
Map
ADDB (command) metaroom_id (integer) background_file (string)
ADDM (integer) x (integer) y (integer) width (integer) height (integer) background (string)
ADDR (integer) metaroom_id (integer) x_left (integer) x_right (integer) y_left_ceiling (integer) y_right_ceiling (integer) y_left_floor (integer) y_right_floor (integer)
ALTR (command) room_id (integer) ca_index (integer) ca_delta (float)
BKDS (string) metaroom_id (integer)
CACL (command) family (integer) genus (integer) species (integer) ca_index (integer)
CALC (command)
DELM (command) metaroom_id (integer)
DELR (command) room_id (integer)
DMAP (command) debug_map (integer)
DOCA (command) no_of_updates (integer)
DOOR (command) room_id1 (integer) room_id2 (integer) permiability (integer)
DOOR (integer) room_id1 (integer) room_id2 (integer)
DOWN (integer)
EMID (string)
EMIT (command) ca_index (integer) amount (float)
ERID (string) metaroom_id (integer)
GMAP (integer) x (float) y (float)
GRAP (integer) x (float) y (float)
GRID (integer) agent (agent) direction (integer)
HIRP (integer) room_id (integer) ca_index (integer) directions (integer)
LEFT (integer)
LINK (command) room1 (integer) room2 (integer) permiability (integer)
LINK (integer) room1 (integer) room2 (integer)
LORP (integer) room_id (integer) ca_index (integer) directions (integer)
MAPD (command) width (integer) height (integer)
MAPH (integer)
MAPK (command)
MAPW (integer)
MLOC (string) metaroom_id (integer)
PERM (command) permiability (integer)
PERM (integer)
PROP (command) room_id (integer) ca_index (integer) ca_value (float)
PROP (float) room_id (integer) ca_index (integer)
RATE (command) room_type (integer) ca_index (integer) gain (float) loss (float) diffusion (float)
RATE (string) room_type (integer) ca_index (integer)
RGHT (integer)
RLOC (string) room_id (integer)
ROOM (integer) agent (agent)
RTYP (command) room_id (integer) room_type (integer)
RTYP (integer) room_id (integer)
TORX (float) room_id (integer)
TORY (float) room_id (integer)
_UP_ (integer)
<< Befehlsgruppen | Inhaltsverzeichnis >>
<< Befehlsgruppen | Inhaltsverzeichnis >>
Motion
ACCG (command) acceleration (float)
ACCG (float)
ADMP (command) damping_factor (float)
ADMP (float)
AERO (command) aerodynamics (integer)
AERO (integer)
ANGL (float) x (float) y (float)
AVEL (command) amount_in_fraction_of_whole_circle (float)
AVEL (float)
ELAS (command) elasticity (integer)
ELAS (integer)
FALL (integer)
FDMP (command) damping_factor (float)
FDMP (float)
FLTO (command) screen_x (float) screen_y (float)
FREL (command) relative (agent)
FRIC (command) friction (integer)
FRIC (integer)
FVEL (command) amount_in_pixels (float)
FVEL (float)
MOVS (integer)
MVBY (command) delta_x (float) delta_y (float)
MVSF (command) x (float) y (float)
MVTO (command) x (float) y (float)
OBST (float) direction (integer)
RELX (float) first (agent) second (agent)
RELY (float) first (agent) second (agent)
ROTN (command) no_of_sprites_for_each_rotation (float) no_of_rotations (float)
SDMP (command) damping_factor (float)
SDMP (float)
SPIN (command) amount_in_fraction_of_whole_circle (float)
SPIN (float)
SVEL (command) amount_in_pixels (float)
SVEL (float)
TMVB (integer) delta_x (float) delta_y (float)
TMVF (integer) x (float) y (float)
TMVT (integer) x (float) y (float)
VARC (command) view_arc_size (float)
VARC (float)
VECX (float) angle (float)
VECY (float) angle (float)
VELO (command) x_velocity (float) y_velocity (float)
VELX (variable)
VELY (variable)
WALL (integer)
<< Befehlsgruppen | Inhaltsverzeichnis >>
<< Befehlsgruppen | Inhaltsverzeichnis >>
Net
NET: ERRA (integer)
NET: EXPO (integer) chunk_type (string) dest_user_id (string)
NET: FROM (string) resource_name (string)
NET: HEAD (command)
NET: HEAR (command) channel (string)
NET: HOST (string)
NET: LINE (command) state (integer)
NET: LINE (integer)
NET: PASS (string)
NET: PASS (command) nick_name (string) password (string)
NET: RAWE (integer)
NET: RUSO (command) store_result (variable)
NET: STAT (command) time_online (variable) users_online (variable) bytes_received (variable) bytes_sent (variable)
NET: ULIN (integer) user_id (string)
NET: UNIK (command) user_id (string) store_result (variable)
NET: USER (string)
NET: WHAT (string)
NET: WHOD (command)
NET: WHOF (command) user (string)
NET: WHON (command) user (string)
NET: WHOZ (command)
NET: WRIT (command) user_id (string) channel (string) message_id (integer) param_1 (anything) param_2 (anything)
<< Befehlsgruppen | Inhaltsverzeichnis >>
<< Befehlsgruppen | Inhaltsverzeichnis >>
Ports
ECON (command) agent (agent)
PRT: BANG (command) bang_strength (integer)
PRT: FRMA (agent) inputport (integer)
PRT: FROM (integer) inputport (integer)
PRT: INEW (command) id (integer) name (string) description (string) x (integer) y (integer) message_num (integer)
PRT: ITOT (integer)
PRT: IZAP (command) id (integer)
PRT: JOIN (command) source_agent (agent) output_id (integer) dest_agent (agent) input_id (integer)
PRT: KRAK (command) agent (agent) in_or_out (integer) port_index (integer)
PRT: NAME (string) agent (agent) in_or_out (integer) port_index (integer)
PRT: ONEW (command) id (integer) name (string) description (string) x (integer) y (integer)
PRT: OTOT (integer)
PRT: OZAP (command) id (integer)
PRT: SEND (command) id (integer) data (anything)
Beispiele
<< Befehlsgruppen | Inhaltsverzeichnis >>
<< Befehlsgruppen | Inhaltsverzeichnis >>
Resources
NET: MAKE (integer) which_journal_spot (integer) journal_name (string) user (string) report_destination (variable)
PRAY AGTI (integer) resource_name (string) integer_tag (string) default_value (integer)
PRAY AGTS (string) resource_name (string) string_tag (string) default_value (string)
PRAY BACK (string) resource_type (string) last_known (string)
PRAY COUN (integer) resource_type (string)
PRAY DEPS (integer) resource_name (string) do_install (integer)
PRAY EXPO (integer) chunk_type (string)
PRAY FILE (integer) resource_name (string) resource_type (integer) do_install (integer)
PRAY FORE (string) resource_type (string) last_known (string)
PRAY GARB (command) force (integer)
PRAY IMPO (integer) moniker_chunk (string) actually_do_it (integer) keep_file (integer)
PRAY INJT (integer) resource_name (string) do_install (integer) report_var (variable)
PRAY KILL (integer) resource_name (string)
PRAY MAKE (integer) which_journal_spot (integer) journal_name (string) which_pray_spot (integer) pray_name (string) report_destination (variable)
PRAY NEXT (string) resource_type (string) last_known (string)
PRAY PREV (string) resource_type (string) last_known (string)
PRAY REFR (command)
PRAY TEST (integer) resource_name (string)
Thus the return value could be thought of as the cost of loading, where 1 is no cost, and 3 is high cost.
<< Befehlsgruppen | Inhaltsverzeichnis >>
<< Befehlsgruppen | Inhaltsverzeichnis >>
Scripts
CAOS (string) inline (integer) state_trans (integer) p1 (anything) p2 (anything) commands (string) throws (integer) catches (integer) report (variable)
GIDS FMLY (command) family (integer)
GIDS GNUS (command) family (integer) genus (integer)
GIDS ROOT (command)
GIDS SPCS (command) family (integer) genus (integer) species (integer)
INST (command)
JECT (command) cos_file (string) flags (integer)
LOCK (command)
SCRX (command) family (integer) genus (integer) species (integer) event (integer)
SLOW (command)
SORC (string) family (integer) genus (integer) species (integer) event (integer)
SORQ (integer) family (integer) genus (integer) species (integer) event (integer)
STOP (command)
STPT (command)
UNLK (command)
WAIT (command) ticks (integer)
<< Befehlsgruppen | Inhaltsverzeichnis >>
<< Befehlsgruppen | Inhaltsverzeichnis >>
Sounds
FADE (command)
MCLR (command) x (integer) y (integer)
MIDI (command) midi_file (string)
MMSC (command) x (integer) y (integer) track_name (string)
MMSC (string) x (integer) y (integer)
MUTE (integer) andMask (integer) eorMask (integer)
RCLR (command) x (integer) y (integer)
RMSC (command) x (integer) y (integer) track_name (string)
RMSC (string) x (integer) y (integer)
SEZZ (command) text (string)
SNDC (command) sound_file (string)
SNDE (command) sound_file (string)
SNDL (command) sound_file (string)
SNDQ (command) sound_file (string) delay (integer)
STPC (command)
STRK (command) latency (integer) track (string)
VOIC (command) genus (integer) gender (integer) age (integer)
VOIS (command) voice_name (string)
VOIS (string)
VOLM (command) channel (integer) volume (integer)
VOLM (integer) channel (integer)
<< Befehlsgruppen | Inhaltsverzeichnis >>
<< Befehlsgruppen | Inhaltsverzeichnis >>
Time
BUZZ (command) interval (integer)
BUZZ (integer)
DATE (integer)
DAYT (integer)
ETIK (integer)
HIST DATE (integer) world_tick (integer)
HIST SEAN (integer) world_tick (integer)
HIST TIME (integer) world_tick (integer)
HIST YEAR (integer) world_tick (integer)
MONT (integer)
MSEC (integer)
PACE (float)
RACE (integer)
RTIF (string) real_time (integer) format (string)
RTIM (integer)
SCOL (integer) and_mask (integer) eor_mask (integer) up_speeds (byte-string) down_speeds (byte-string)
SEAN (integer)
TIME (integer)
WOLF (integer) kanga_mask (integer) eeyore_mask (integer)
WPAU (command) paused (integer)
WPAU (integer)
WTIK (integer)
YEAR (integer)
<< Befehlsgruppen | Inhaltsverzeichnis >>
<< Befehlsgruppen | Inhaltsverzeichnis>>
Variables
ABSV (command) var (variable)
ACOS (float) x (float)
ADDS (command) var (variable) append (string)
ADDV (command) var (variable) sum (decimal)
ANDV (command) var (variable) value (integer)
ASIN (float) x (float)
ATAN (float) x (float)
AVAR (variable) agent (agent) index (integer)
CHAR (command) string (variable) index (integer) character (integer)
CHAR (integer) string (string) index (integer)
COS_ (float) theta (float)
DELE (command) variable_name (string)
DELG (command) variable_name (string)
DELN (command) variable_name (anything)
DIVV (command) var (variable) div (decimal)
EAME (variable) variable_name (string)
EAMN (string) previous (string)
FTOI (integer) number_to_convert (float)
GAME (variable) variable_name (string)
GAMN (string) previous (string)
GNAM (string)
ITOF (float) number_to_convert (integer)
LOWA (string) any_old (string)
MAME (variable) variable_name (anything)
MODU (string)
MODV (command) var (variable) mod (integer)
MULV (command) var (variable) mul (decimal)
MVxx (variable)
NAME (variable) variable_name (anything)
NAMN (command) previous (variable)
NEGV (command) var (variable)
NOTV (command) var (variable)
ORRV (command) var (variable) value (integer)
OVxx (variable)
RAND (integer) value1 (integer) value2 (integer)
READ (string) catalogue_tag (string) offset (integer)
REAF (command)
REAN (integer) catalogue_tag (string)
REAQ (integer) catalogue_tag (string)
SETA (command) var (variable) value (agent)
SETS (command) var (variable) value (string)
SETV (command) var (variable) value (decimal)
SINS (integer) main (string) index_to_search_from (integer) search (string)
SIN_ (float) theta (float)
SQRT (float) value (float)
STOF (float) value (string)
STOI (integer) value (string)
STRL (integer) string (string)
SUBS (string) value (string) start (integer) count (integer)
SUBV (command) var (variable) sub (decimal)
TAN_ (float) theta (float)
TARG (command) agent (agent)
TYPE (integer) something (anything)
UFOS (string)
UPPA (string) any_old (string)
VAxx (variable)
VMJR (integer)
VMNR (integer)
VTOS (string) value (decimal)
_P1_ (variable)
_P2_ (variable)
<< Befehlsgruppen | Inhaltsverzeichnis >>
<< Befehlsgruppen | Inhaltsverzeichnis >>
Vehicles
CABB (integer)
CABL (integer)
CABN (command) left (integer) top (integer) right (integer) bottom (integer)
CABP (command) plane (integer)
CABP (integer)
CABR (integer)
CABT (integer)
CABV (command) cabin_room_id (integer)
CABV (integer)
CABW (command) cabin_capacity (integer)
DPAS (command) family (integer) genus (integer) species (integer)
EPAS (command) family (integer) genus (integer) species (integer)
GPAS (command) family (integer) genus (integer) species (integer) rect_to_use (integer)
NEW: VHCL (command) family (integer) genus (integer) species (integer) sprite_file (string) image_count (integer) first_image (integer) plane (integer)
RPAS (command) vehicle (agent) passenger (agent)
SPAS (command) vehicle (agent) new_passenger (agent)
<< Befehlsgruppen | Inhaltsverzeichnis >>
<< Befehlsgruppen | Inhaltsverzeichnis >>
World
DELW (command) world_name (string)
LOAD (command) world_name (string)
NWLD (integer)
PSWD (command) password (string)
PSWD (string) worldIndex (integer)
QUIT (command)
RGAM (command)
SAVE (command)
TNTW (command) index (integer)
WNAM (string)
WNTI (integer) world (string)
WRLD (command) world_name (string)
WRLD (string) world_index (integer)
WTNT (command) index (integer) red_tint (integer) green_tint (integer) blue_tint (integer) rotation (integer) swap (integer)
WUID (string)
Beispiele
<< Befehlsgruppen | Inhaltsverzeichnis >>
<< Befehlsgruppen | Inhaltsverzeichnis >>
Brain
ADIN (command) verb (integer) noun (integer) qualifier (float) drive (integer)
BRN: DMPB (command)
BRN: DMPD (command) tract_number (integer) dendrite_number (integer)
BRN: DMPL (command) lobe_number (integer)
BRN: DMPN (command) lobe_number (integer) neuron_number (integer)
BRN: DMPT (command) tract_number (integer)
BRN: SETD (command) tract_number (integer) dendrite_number (integer) weight_number (integer) new_value (float)
BRN: SETL (command) lobe_number (integer) line_number (integer) new_value (float)
BRN: SETN (command) lobe_number (integer) neuron_number (integer) state_number (integer) new_value (float)
BRN: SETT (command) tract_number (integer) line_number (integer) new_value (float)
DOIN (command) no_of_instincts_to_process (integer)
Beispiel
<< Befehlsgruppen | Inhaltsverzeichnis >>
<< Befehlsgruppen | Inhaltsverzeichnis >>
Creatures
AGES (command) times (integer)
APPR (command)
ASLP (command) asleep (integer)
ASLP (integer)
ATTN (integer)
BODY (command) set_number (integer) layer (integer)
BODY (integer) bodyPart (integer)
BOOT (command) subboot_number (integer) folder_number_sum (integer) clear_world (integer)
BORN (command)
BVAR (integer)
BYIT (integer)
CAGE (integer)
CALG (command) category_id (integer) category_representative_algorithm_id (integer)
CALG (integer) category_id (integer)
CHEM (command) chemical (integer) adjustment (float)
CHEM (float) chemical (integer)
CREA (integer) agent (agent)
DEAD (command)
DEAD (integer)
DECN (integer)
DFTX (float)
DFTY (float)
DIRN (command) direction (integer)
DIRN (integer)
DONE (command)
DREA (command) dream (integer)
DREA (integer)
DRIV (command) drive (integer) adjustment (float)
DRIV (float) drive (integer)
DRV! (integer)
EXPR (integer)
FACE (command) set_number (integer)
FACE (integer)
FACE (string)
FORF (command) creature_to_learn_about (agent)
HAIR (command) stage (integer)
HHLD (agent)
INJR (command) organ (integer) amount (integer)
INS# (integer)
LIKE (command) creature_state_opinion_about (agent)
LIMB (string) body_part (integer) genus (integer) gender (integer) age (integer) variant (integer)
LOCI (command) type (integer) organ (integer) tissue (integer) id (integer) new_value (float)
LOCI (float) type (integer) organ (integer) tissue (integer) id (integer)
LTCY (command) action (integer) min (integer) max (integer)
MATE (command)
MIND (command) state (integer)
MIND (integer)
MOTR (command) state (integer)
MOTR (integer)
MVFT (command) x (float) y (float)
NEW: CRAG (command) family (integer) gene_agent (agent) gene_slot (integer) sex (integer) variant (integer) sprite_file (string) image_count (integer) first_image (integer) plane (integer)
NEW: CREA (command) family (integer) gene_agent (agent) gene_slot (integer) sex (integer) variant (integer)
NEWC (command) family (integer) gene_agent (agent) gene_slot (integer) sex (integer) variant (integer)
NORN (command) creature (agent)
NORN (agent)
NUDE (command)
ORDR SHOU (command) speech (string)
ORDR SIGN (command) speech (string)
ORDR TACT (command) speech (string)
ORDR WRIT (command) creature (agent) speech (string)
ORGF (float) organ_number (integer) data (integer)
ORGI (integer) organ_number (integer) data (integer)
ORGN (integer)
PLMD (command) tract_index, (integer) filename (string)
PLMU (command) tract_index, (integer) filename (string)
SAYN (command)
SEEN (agent) category (integer)
SOUL (command) facultyId (integer) on (integer)
SOUL (integer) facultyId (integer)
SPNL (command) lobe_moniker (string) neuron_id (integer) value (float)
STEP (command) facultyId (integer)
STIM SHOU (command) stimulus (integer) strength (float)
STIM SIGN (command) stimulus (integer) strength (float)
STIM TACT (command) stimulus (integer) strength (float)
STIM WRIT (command) creature (agent) stimulus (integer) strength (float)
SWAY SHOU (command) drive (integer) adjust (float) drive (integer) adjust (float) drive (integer) adjust (float) drive (integer) adjust (float)
SWAY SIGN (command) drive (integer) adjust (float) drive (integer) adjust (float) drive (integer) adjust (float) drive (integer) adjust (float)
SWAY TACT (command) drive (integer) adjust (float) drive (integer) adjust (float) drive (integer) adjust (float) drive (integer) adjust (float)
SWAY WRIT (command) creature (agent) drive (integer) adjust (float) drive (integer) adjust (float) drive (integer) adjust (float) drive (integer) adjust (float)
TAGE (integer)
TOUC (command)
UFTX (float)
UFTY (float)
UNCS (command) unconscious (integer)
UNCS (integer)
URGE SHOU (command) noun_stim (float) verb_id (integer) verb_stim (float)
URGE SIGN (command) noun_stim (float) verb_id (integer) verb_stim (float)
URGE TACT (command) noun_stim (float) verb_id (integer) verb_stim (float)
URGE WRIT (command) creature (agent) noun_id (integer) noun_stim (float) verb_id (integer) verb_stim (float)
VOCB (command)
WALK (command)
WEAR (command) body_id (integer) set_number (integer) layer (integer)
ZOMB (command) zombie (integer)
ZOMB (integer)
<< Befehlsgruppen | Inhaltsverzeichnis >>
<< Befehlsgruppen | Inhaltsverzeichnis >>
History
HIST CAGE (integer) moniker (string) event_no (integer)
HIST COUN (integer) moniker (string)
HIST CROS (integer) moniker (string)
HIST EVNT (command) moniker (string) event_type (integer) related_moniker_1 (string) related_moniker_2 (string)
HIST FIND (integer) moniker (string) event_type (integer) from_index (integer)
HIST FINR (integer) moniker (string) event_type (integer) from_index (integer)
HIST FOTO (string) moniker (string) event_no (integer)
HIST FOTO (command) moniker (string) event_no (integer) new_value (string)
HIST GEND (integer) moniker (string)
HIST GNUS (integer) moniker (string)
HIST MON1 (string) moniker (string) event_no (integer)
HIST MON2 (string) moniker (string) event_no (integer)
HIST MUTE (integer) moniker (string)
HIST NAME (string) moniker (string) Returns the name of the creature with the given moniker.
HIST NAME (command) moniker (string) new_name (string)
HIST NETU (string) moniker (string) event_no (integer)
HIST NEXT (string) moniker (string)
HIST PREV (string) moniker (string)
HIST RTIM (integer) moniker (string) event_no (integer)
HIST TAGE (integer) moniker (string) event_no (integer)
HIST TYPE (integer) moniker (string) event_no (integer)
HIST UTXT (command) moniker (string) event_no (integer) new_value (string)
HIST UTXT (string) moniker (string) event_no (integer)
HIST VARI (integer) moniker (string)
HIST WIPE (command) moniker (string)
HIST WNAM (string) moniker (string) event_no (integer)
HIST WTIK (integer) moniker (string) event_no (integer)
HIST WUID (string) moniker (string) event_no (integer)
HIST WVET (integer) moniker (string)
OOWW (integer) moniker (string)
<< Befehlsgruppen | Inhaltsverzeichnis >>
<< Befehlsgruppen | Inhaltsverzeichnis >>
Muß noch bearbeitet werden Genetics
GENE CLON (command) dest_agent (agent) dest_slot (integer) source_agent (agent) source_slot (integer)
GENE CROS (command) child_agent (agent) child_slot (integer) mum_agent (agent) mum_slot (integer) dad_agent (agent) dad_slot (integer) mum_chance_of_mutation (integer) mum_degree_of_mutation (integer) dad_chance_of_mutation (integer) dad_degree_of_mutation. (integer)
GENE KILL (command) agent (agent) slot (integer)
GENE LOAD (command) agent (agent) slot (integer) gene_file (string)
GENE MOVE (command) dest_agent (agent) dest_slot (integer) source_agent (agent) source_slot (integer)
GTOS (string) slot (integer)
MTOA (agent) moniker (string)
MTOC (agent) moniker (string)
<< Befehlsgruppen | Inhaltsverzeichnis >>
<< Befehlsgruppen | Inhaltsverzeichnis] >>
Eame Variables
<< Befehlsgruppen | Inhaltsverzeichnis >>
<< Befehlsgruppen | Inhaltsverzeichnis >>
Emitter Locus Numbers
<< Befehlsgruppen | Inhaltsverzeichnis >>
<< Befehlsgruppen | Inhaltsverzeichnis >>
<< Befehlsgruppen | Inhaltsverzeichnis >>
<< Befehlsgruppen | Inhaltsverzeichnis>>
Receptor Locus Numbers
<< Befehlsgruppen | Inhaltsverzeichnis >>
<< Befehlsgruppen | Inhaltsverzeichnis>>
Attribute Flags
Beispiele
<< Befehlsgruppen | Inhaltsverzeichnis >>
<< Befehlsgruppen | Inhaltsverzeichnis >>
Script Numbers
<< Befehlsgruppen | Inhaltsverzeichnis >>
<< Befehlsgruppen | Inhaltsverzeichnis >>
Creature Permissions
<< Befehlsgruppen | Inhaltsverzeichnis] >>
<< Befehlsgruppen | Inhaltsverzeichnis | >>
Debug Keys
<< Befehlsgruppen | Inhaltsverzeichnis >>
<< Befehlsgruppen | Inhaltsverzeichnis >>
Message Numbers
Beispiel:
<< Befehlsgruppen | Inhaltsverzeichnis >>
<< Befehlsgruppen | Inhaltsverzeichnis >>
Stimulus Numbers
<< Befehlsgruppen | Inhaltsverzeichnis >>
<< Befehlsgruppen | Inhaltsverzeichnis >>
Im DS-Spiel wird eine spezielle Klassifikationen eingesetzts, anhand welcher die Engine den Agenten indentifizieren kann. Dies ist eine aufsteigende Hirarchie von Familie, Klasse und Sorte .
Der Werte kann dabei im Bereich von 1 bis 255 liegen . Dabei ist 0 in jedem Bereich ein Platzhalter siehe ENUM.

## Creatures 3/Docking Station Genus Nummern

* 1
** Unsichtbar für Norns
** GUI und System
** Favourite_place Weiterleitung
** Favourite_place icons
* 2
** Hand
** Tür
** Samen
** Gute Pflanze
** Schlechte Pflanze
** Blatt
** Blume
** Gute Frucht
** Schlechte Frucht
** Detritus
** Nahrung
** Knopf
** Gute Wanze
** Schlechte Wanze
** Gutes Lebewesen
** Gutes Lebewesen
** Nest
** Agent Ei
** Wetter
** schlecht
** Spielzeug
** Brutmaschine
** Automat
** Werkzeug
** Gift
* 3
** Lift
** Teleporter
** Maschine
** Creature Ei
** Norn Zuhause
** Grendel Zuhause
** Ettin Zuhause
** Gerät
* 4
** Norn
** Grendel
** Ettin
** Geat (?)
Andere Klassen können verwendet werden , aber dann haben die Klassen keinen Namen und die Norn´s können die Agenten nicht identifizieren. Wenn das CAOS-Programm in DS/C3 eingefügt werden soll ist es ratsam die definierten Klassen zu verwenden.
<< Befehlsgruppen | Inhaltsverzeichnis >>
Zu erledigen
<< Befehlsgruppen | Inhaltsverzeichnis | Beispiele >>

### Unterschiede C2 C3

Codes die nur in C1 verfügbar sind
Codes die nur in C2 verfügbar sind
Codes die nur in C3 verfügbar sind
Codes die nur in DS verfügbar sind
Syntax-Unterschiede
<< Befehlsgruppen | Inhaltsverzeichnis | Beispiele >>
Vorschläge

### Sprite Dateien für Beispiele

Für einige meiner Beispiele sind sprites nötig damit die Agenten funktionieren. Diese können hier heruntergeladen werden.
Dann bitte die Dateien wie folgt entpacken:

## Hallo World

was sonst? Hallo World

## Einfache Schleifen

Einfache Schleife

## Startbildschirm

Aller Anfang

## Einfache MAP

MAP: Beispiel eines einfachen Testbildschirms und eines 'signpost's Wie erstelle ich komplexe Welten ?

## Einfacher Agent

Einfacher Agent: Agenten die aus einem Sprite bestehen , Hilfagenten z.B. um einen Geruch auszusenden ohne Sprite sind: Beispiel Honigtopf Tutorial

## Compound Agent

komplexer Agent und animation

## Agent mit Knöpfen

Agent mit Buttons

## Text

Einfache Textausgabe
<< Befehlsgruppen | Inhaltsverzeichnis >>
<< Beispiele | Inhaltsverzeichnis | >>
Beispiel für Linux Es wird benötigt "linux console tools " von der offiziellen Homepage Starten Sie DS und erzeugen Sie eine neue Welt z.B. "Test" und belassen die Welt ohne Norn´s Legen Sie im Ordner Bootstrap einen Ordner Beispiele an. Nun geben Sie folgende "Script" in einen Texteditor ein und speichern es im neuen Ordner Beispiel als "hallo.cos"
Nun starten Sie DS und schalten mit der Tastenkombination Strg-Shift-c die CAOS -Console im Spiel ein.
Starten Sie im Terminal "./monitor" aus linux console tools. Nun geben sie ject "test.cos" 7" ein. Im Terminal erscheint nun ein freundliches Hello World.
Anmerkung: Sobald jetzt versucht wird eine neue Welt zu erschaffen, lädt die Engine auch die *.cos Dateien aus dem Beispiel-Ordner,und in der neuen Welt sind alle Agenten vorhanden.Deshalb diesen Ordner verschieben bevor eine neue Welt erschaffen wird.
Win folgt noch
Ist dies alles? Ja und Nein. Die Ausgebe des Textes in einer Konsole ist einfach, aber im Spiel erscheint noch nichts!! Dazu benötigt es etwas mehr. Eine Möglichkeit ist es einen Text "Hallo World" als *.c16 Datei zu speichern und dann als einfachen Agent in Spiel zu bringen. Oder als Formatierten Text ein einen zusammengesetzten Agenten ein zu blenden.
<< Beispiele | Inhaltsverzeichnis | >>
<< Beispiele | Inhaltsverzeichnis | >>
Beispiel einer einfachen Schleife und doif abfrage
<< Beispiele | Inhaltsverzeichnis | >>
Am Anfang der Verarbeitung der CAOS-Skripte sollte etwas ähnliches wie in !DS splash map.cos stehen:
Anstatt der DS_splash.blk kann jede beliebige *.blk-Datei angegeben werden und sie wird als erste Welt angezeigt. Es ist auch später möglich, nach meta 0 -1 -1 0 zu springen. In dieser Welt ist theoretisch alles möglich, wie in den anderen auch, jedoch ist es nicht von Vorteil, wenn Agenten vorhanden sind, wenn die Welt als Startbildschirm dient.
<< Beispiele | Inhaltsverzeichnis | >>

## Einfache Welt zum Testen von Agenten

Die eingefügte Map liegt zwischen HUB und WRAP-Kammer. Die Koordinaten sind 3199/8590 .Größe beträgt 1024x768 Pixel. Es wird die Datei backr.blk benutzt die im Background Ordner gespeichert ist. Dies alles wird der Variable ov00 zugewiesen !!!(Mächtig )
Dann wird der Sichtbare bereich auf diese Welt gelegt (=>cmra 3500 8800 8001) Die zweite Variable ov01 bekommt die Raumabgrenzungen zugewiesen.In diesem bereich sind Agenten zugelassen, und vieles mehr.( addr ist add room) rtyp definiert Eigenschaften des Raumes.Siehe Cellular Automata
rscr leitet das Removescript ein . Zuerst wird mit delr (delete room) ov01 gelöscht.In unserem Fall nur Einer sonst einige mehr,siehe !map.cos im Bootstrap Ordner Dann mit delm (delete metaroom) ov00 die komplette Welt.
Wie gesagt ,dies ist eine sehr einfache Welt.(Eigentlich nur ein Testscreen für Agenten) Es ist möglich als Hintergrundblid fast alles zu verwenden;Und entsprechende Räume zu platzieren. Ferner ist es möglich die Räumen mit Eigenschaften z.B. fester Boden ,Wasser, Geruch auszustatten.
Da die Welt keine Verbindung zu Welten hat , ist es nur mit dem Befehl meta oder cmra möglich zu Anderen springen. Mit cmra 3500 8800 8001 ist man wieder hier.

### Der eingebaute signpost

Diese Funktion gehört nicht zu CAOS sondern ist in CAOS für Dockingstation programmiert. DS hat einen einfachen Mechanismus zu schnellen wechseln von Welten : 'signpost' (Wegweiser?)oder Favorite Places(Lieblingsplatz)
In DS ist die Handhabung im Gegensatz zu C3 vereinfacht worden. Favvorite Places wird für ein einzelner Metaraum definiert,dh die signpost Agenten müssen immer verschiedene Nummern haben.Es sollten auch Sprites für die Identifikation im Image Ordner bereitliegen.Die Datei muss fav_placee.c16 muß 3 Sprites enthalten.Die Klassifikation des Agenten ist family=1 , genus=3 .Dann wird fav_place erkannt, Außerdem sollte ein tick 10 enthalten sein . Z.B. kann für die obige Map folgendes eingefügt werden:
Somit erscheint der Icon, der immer sichtbar ist , und es ist möglich schnell von Map zu Map zu springen.
<< Beispiele | Inhaltsverzeichnis | >>
<< Beispiele | Inhaltsverzeichnis | >>

### Mit Dockingstation

Der nachfolgende Quelltext und die Erklärung sind von der Seite übernommen Die Autorin Jasmin Handwerker ist mit der Veröffentlichung ausdrücklich einverstanden Ich habe einige Stellen angepasst.
Der Quelltext
Diese Version ist ursprünglich für C3.Für Dockingstation die Zeile 'setv va00 5687 setv va01 3670' mit 'setv va00 6150 setv va01 9150' ersetzen.>br /> Nun zu den Erklärungen:
inst
new: simp 2 11 20400 "hpot" 2 0 3500
attr 195
bhvr 48
perm 60
accg 4
fric 100
elas 40
setv va00 game "CreatorX" / setv va01 game "CreatorY"
doif va00 eq 0 and va01 eq 0
setv va00 5687 / setv va01 3670
endi
mvsf va00 va01
emit 8 .5
endm
scrp 2 11 20400 6
snde "dr10"
scrp 2 11 20400 12
lock
stim writ from 79 1
wait 5
pose 1
kill ownr
Nochmal in der Zusammenfassung: Mit dem Essenscript bewirken wir, dass beim Essen die Wav-Datei drnk abgespielt wird, das Creature einen Essensstimulus erhält, einige Ticks gewartet wird, das Objekt sein Aussehen verändert und schließlich verschwindet, da es ja gegessen wurde.
rscr
enum 2 11 20400
kill targ
next
scrx 2 11 20400 12 / scrx 2 11 20400 6
Siehe c16 Datei für das Beispiel

### Dockingstation ist nicht notwendig

Für diese Beispiel ist meine c16 Datei nötig.
folgt noch
<< Beispiele | Inhaltsverzeichnis | >>
<< Beispiele | Inhaltsverzeichnis | >>

### Mit Dockingstation

Der nachfolgende Quelltext und die Erklärung sind von der Seite übernommen Die Autorin Jasmin Handwerker ist mit der Veröffentlichung ausdrücklich einverstanden Ich habe einige Stellen angepasst.
Mit den Compound Parts werden z.B. Automaten(Agenten) gemacht. Der Zweck der Compound Parts ist es, dass man ihnen verschiedene zusätzliche Teile hinzufügen kann. Zur Auswahl stehen unter anderem Buttons, die einen Event auslösen, wenn sie gedrückt werden, Texte, Animationen. Alle Compound Objekte werden initiiert, indem man den Befehl NEW: COMP benutzt und mit dem Befehl PAT: die entsprechenden extra Teile hinzufügt. Bei dem Erstellen des Objekts wird NEW: COMP als part 0 benannt, so dass man bei den zusätzlichen Teilen mit 1 beginnen sollte. Die Teile eines Compound Objektes müssen nicht die selbe Sprite-Datei benutzten. Sie sind simple Objekte, also haben Attribute, Verhalten, etc. Teile werden mit dem Befehl PAT: KILL entfernt. DULL Teile
Als erstes erkläre ich hier die Verwendung von DULL Teilen. DULL Teile werden verwendet um bestimmte Flächen auf einem Objekt zu erzeugen, die andauernd animiert sein können.
Die Sprite-Datei ist komplett von der Medizin-Maschine übernommen. Ich hatte es erst mit eigenen Bildern versucht, aber nachdem ich mich 2 Tage damit abgequält hatte und der Agent immer noch nicht ging, gab ich es auf. Komischerweise hat es mit der Medizin-Maschine Sprite-Datei sofort geklappt. Weiß immer noch nicht wieso.
Unten folgt die cos-Datei mit den Erklärungen. Ich habe nur neue Befehle erläutert. Die anderen findet ihr schon bei dem Honigtopf Tutorial Wenn man sich das Tutorial durchliest ist es am besten, die Sprite-Datei offen zu haben, damit man immer gucken kann, welches Bild jetzt gemeint ist und welche Animationen stattfinden. Es ist dann viel leichter alles zu verstehen (geht mir zumindest so).
Der Quelltext
new: comp 2 21 20403 "medm" 23 0 5000
pat: dull 1 "medm" 1 57 71 0
pat: dull 2 "medm" 4 0 35 0
pat: dull 3 "medm" 10 9 38 0
clac 0
scrp 2 21 20403 1
part 1
anim [0 1 255]
clac 1
Zusammenfassung Activate 1 Event: Der rote Knopf wird ausgewählt und in einer Endlosschleife animiert. Man bewirkt durch den Befehl clac 1, dass bei erneutem Klick ein anderes Event aufgerufen wird. Würde man clac 1 weglassen, würde immer nur der rote Knopf animiert werden und die anderen Teile würden unbenutzt bleiben.
scrp 2 21 20403 2
part 2
clac 2
Zusammenfassung Activate 2 Event: Die Energieanzeige wird ausgewählt und in einer Endlosschleife animiert. Durch den Befehl clac 2 wird bewirkt, dass bei erneutem Klicken ein anderes
Event aufgerufen wird.
scrp 2 21 20403 0
part 3
clac 3
Zusammenfassung Deactivate Event: Das Feld, in dem die Medizinflaschen erscheinen wird ausgewählt und in einer Endlosschleife animiert.
scrp 2 21 20403 3
pose 0
Zusammenfassung Hit Event: Nacheinander werden alle Teile ausgewählt und auf Bilddatei 0 zurückgesetzt. Dies hat den Effekt, dass alle Animationen stoppen und der Agent wieder aussieht wie am Anfang. Am Ende steht der Befehl clac 0, den wir auch schon in dem Installationsskript gesehen haben. Damit wird beim nächsten Klick auf den Agenten wieder der Activate 1 event ausgeführt und alles beginnt von vorne.
rscr
Mit den Koordinaten von den DULL Teilen hatte ich anfangs etwas Probleme. Am besten ihr benutzt ein Grafikprogramm (ich habe Paint Sho Pro 5 benutzt) und fahrt mit der Maus über das Bild. Bei Paint Shop Pro waren dann unten rechts die Koordinaten angezeigt. Müsste eigentlich auch in jedem anderen Grafikprogramm der Fall sein. Die Koordianten für das DULL Teil beginnen in der linken oberen Ecke, also dort wird es am Agenten angezeigt. In der Sprite-Datei sind auch schwarze Bilder in der Größe der Teile. Diese sind bei jedem DULL Teil Bild Nr. 0, denn schwarz wird im Spiel als transparent dargestellt.
Auf der Website steht die Datei zum Download zur Verfügung.

### Dockingstation ist nicht notwendig

Für diese Beispiel ist meine c16 Datei nötig.
Dies Beispiel ist Analog zum Obigem. Aber die Position ist in dem Test Metaroom, beim ersten Klick, vertikaler Balken , dann horizontaler Balken, dann blinkender Balken und dann Ausgangsposition. Ferner sollten so wenig wie möglich andere Agenten geladen sein. Falls script 30000 schon belegt ist, bitte andere Nummer verwenden
<< Beispiele | Inhaltsverzeichnis | >>
<< Beispiele | Inhaltsverzeichnis | >>
Ein etwas umfangreicheres Projekt : Es wird ein Rechner angezeigt, bei klick auf die Antwort Taste erscheint die Antwort als neuer Agent.
<< Beispiele | Inhaltsverzeichnis | >>

## Einfache Textausgabe

Die Textausgabe bei DS funktioniert auch mittels Sprites. Die dafür vorhandenen Spritefiles sind:
* blackontransparentchars.s16
* whiteontransparentchars.s16
* greyontranschars.s16
* (noch die alte s16 Version)
Diese enthalten einen kompletten Zeichensatz , auf transparentem Hintergrund. Mit einem Zeichenprogramm (GIMP) ist es möglich einen eigenen Zeichensatz zu erstellen.
Das darstellen der Zeichen übernimmt die engine , dafür gibt es in CAOS einige Befehle.( Immer als komplexer Agent)
Um einen Text in einem Agenten anzuzeigen sind folgende Schritte nötig:
Eine komfortable Möglichkeit vordefinierte Texte auszugeben ist die *.catalogue Datei. Dies ist eine spezielle Textdatei im Catalogue Ordner und mit dem gleichen Namen wie der Zielagent. Der Zugriff erfolgt mit
Hinweis: mit tint kann die Farbe des Textes geändert werden.

## Ausgabe von integer Variablen als Text

Da die Ausgabe mit ptxt nur Text erlaubt , ist es nötig integer oder float Variablen mit vtos (variable to string) umzuwandeln z.B
Die Umkehrung ist stof ( string to float)

## Beispiel Rechner

Nun als kleines Beispiel, der Rechner aus dem letzten Kapitel. Zuerst ein freundliches "Hallo (WELTNAME) World". Beim Klicken auf die Zahlen Knöpfe erscheint im Display die Partnr. Bei der Übergabe der Parameter (pat: butt ....) steht in Variable _P1_ die Partnr.
<< Inhaltsverzeichnis >>
Hier sollten einige Bemerkungen speziell zu DS stehen
<< Inhaltsverzeichnis >>
Mögliche Ausgabe der Fehlermeldung , siehe Bilder
oder in der CAOS Befehlszeile :
... Invalid command at token .. [@ pine tick 0]
Auflistung der CAOS.catalogue Datei enthaltenen Fehlermeldungen
"Invalid command"
"Invalid RValue"
"Invalid LValue"
"Invalid subcommand"
"Invalid string RValue"
"Invalid string LValue"
"Blocking command executed on a non-blockable script"
"Invalid TARG"
"Invalid OWNR"
"Invalid agent"
"Not a CompoundAgent"
"Not a SimpleAgent"
"Division by Zero"
"SCRX failed - script (%d/%d/%d/%d) is in use"
"Script (%d %d %d %d) not in scriptorium"
"Invalid port ID"
"Value is not an integer"
"Value is not a float"
"Incompatible type: string expected"
"Incompatible type: agent expected"
"Part identifier %d is invalid"
"Path number out of range"
"Not a Vehicle"
"ATTR/PERM change caused invalid map position (%f)"
"Invalid map position (%f, %f)"
"Position (%f, %f) is not valid inside carrying vehicle's cabin"
"Invalid agent ID"
"Invalid compare operator for agents"
"Incompatible type: decimal expected"
"Internal: Unexpected type when fetching value"
"Chemical numbers range from (0-255)"
"Not a Creature"
"Index number outside string"
"Value is not a character (integer 0-255)"
"Slice attempted outside string"
"Failed to delete room"
"Failed to delete meta room"
"Failed to add background"
"Failed to get meta room location"
"Failed to set background"
"Failed to set door permiability"
"Failed to set room type"
"Failed to set room property"
"Failed to set Cellular Automata rates"
"Failed to get room ID"
"Failed to increase CA property or CA is navigable - ALTR does not work on navigable CAs"
"Failed to get door permiability"
"Failed to add meta room"
"Failed to add room"
"Attempt to clear a photograph in the creature history which is currently in use by an agent."
"Failed to get room property"
"Failed to get current background"
"Failed to find room with highest CA"
"Failed to find room with lowest CA"
"Could not set neuron value"
"Could not set dendrite value"
"Could not set lobe value"
"Could not set tract value"
"Could not dump lobe"
"Could not dump tract"
"Could not dump neuron"
"Could not dump dendrite"
"Invalid Creature TARG"
"Invalid parameter to DBG#/DBGA "
"RECYCLE ME"
"Invalid pose for PUPT/PUHL"
"Invalid string for ANMS - not a number\n\"%s\""
"Number out of range in ANMS. Values must be from 0 to 255"
"Error parsing CAOS script-command string"
"Error orderising macro for CAOS script-command string"
"Error processing script for scriptorium in CAOS script-command string"
"Error installing script into scriptorium for CAOS script-command string"
"Failed to set link permiability"
"Failed to get link permiability"
"Mutation parameters must be in the range of 0 to 255"
"Failed to get room CA Rates"
"Failed to get room IDs"
"Failed to get room location"
"Failed to get metaroom backgrounds"
"Not a fixed or text entry part"
"Not a text entry part"
"Repeat count is less than one"
"Invalid locus"
"No such drive number"
"No such gait number"
"No such direction number"
"No such involuntary action id"
"Operation not allowed on Creature"
"Not a graph part"
"Request out of range in IntegerRV CLIK, Range is 0 to 3"
"Agent profiler not compiled in this engine"
"Invalid gene variable"
"Maximum creatures exceeded"
"Gene file not found or attempt to load into invalid slot"
"Attempt to use uninitialised output stream"
"Creature can't be born again"
"Life event doesn't exist for this moniker"
"Attempt to use uninitialised input stream"
"You can only clear history for totally dead or exported creatures, and unused genomes.\nThat means OOWW return values 0, 6, 4.or 7."
"That part slot is already taken. You may only create a part if it has a unique number. Please change the number or else kill the old part first."
"Failed to find one or more sprite files while creating a creature."
"User aborted possibly frozen script"
"Assertion failed"
"Invalid range"
"Pray Builder error: %s"
"Base change failed - new base %d on part %d"
"Pose change failed - new pose %d on part %d which has base %d"
"Anim change failed - on part %d which has base %d"
"Frame rate %d out of range 1 to 255"
"Anim by string failed - string \"%s\" on part %d which has base %d"
"Invalid emit - invalid smell index"
"Invalid cacl - wildcard classifier used or the classifier already has a smell allocated to it"
"Negative square root"
"MVSF only works on autonomous agents"
"Failed to find safe location (%f, %f)"
"Tried to set BHVR %d when the agent doesn't have one of the appropriate scripts"
"Sound file missing\n%s"
"The BLCK command will not work because this engine is not using the Direct Display Library"
"That part slot %d is already taken. You may only create a part if it has a unique number. Please change the number or else kill the old part first."
"The command is not yet implemented on this platform / version of the engine."
TAG "caos_user_abort_frozen_script"
"An agent script is possibly in an infinite loop.\nChoose Abort to throw an error, so you can see which agent it is and stop it\nChoose Retry to let it run for another 1,000,000 instructions\nChoose Ignore to let it carry on forever"
TAG "orderiser"
"Syntax error"
"Invalid command"
"Failed to close block"
"Expected a string"
"Expected a subcommand"
"Expected a variable"
"Expected numeric rvalue"
"Expected agent"
"Expected a comparison operator"
"Label expected"
"%s at token '%s'"
"Unresolved label \"%"
"Already at top level"
"Mismatched block type"
"NEXT without matching ENUM/ESEE/ETCH/EPAS"
"UNTL or EVER without matching LOOP"
"REPE without matching REPS"
"Label already defined"
"Expected byte string '['"
"Value out of valid range (0..255)"
"Expected any rvalue"
"Expected byte or ']'"