Yscript Demo Explanations

Befehle mitten im Gespräch ausführen

Bei Dialogen verarbeitet Yscript immer den gesamten Text ohne Pause. Will man also an einer bestimmten Stelle im Gespräch Code ausführen, muss man dazu das Skript anhalten, was mit Hilfe der Antwortbox gelöst wird:


<Tom> Was ist das?
<Leon> Ein Amulett
<Tom> Und was tut es?
#
<Leon> Leuchten, siehst du?
# flashLight();
<Tom> Oh, wow!


Die eingerückte Raute auf der vierten Zeile weist das Skript an, an dieser Stelle zu pausieren, bis der Spieler die Box wegklickt. Im Gegensatz zu normalen Antwortboxen gibt es hier aber keine Auswahlmöglichkeiten. Diese Lösung ist nicht optimal, da bei jeder Pause eine Callback-Funktion entsteht, für die Demo aber ausreichend.


Sprites und Items generieren



// Sprite spriteCreate( Texture, srcX, srcY, W, H, offsetX, offsetY );
// Item itemCreate( Sprite );


$sprite = spriteCreate( "Demo Fishing.png", 24, 8, 24, 24, 4, 17 );
$rod = itemCreate( $sprite );


Sprites sind Container für Grafiken, während Items im Spiel registriert und von der Engine automatisch gezeichnet werden. Auf diese Weise erstellte Items entsprechen den Items im Spiel (Flaschen, Fässer, Bäume).


Charaktere im Spiel platzieren



// Char charCreate( Item, Class, Name, x, y );


$item = itemCreate( spriteCreate( "Demo Children.png", 72, 0, 24, 32, 12, 28 ) );
$irene = charCreate( $item, "Irene2", "irene", 180, 240 );




Charaktere aus dem Spiel entfernen



// charRemove( Char );


$irene = charByName( "irene" );
charRemove( $irene );




Variablen verändern

Mit diesen Funktionen wird ein Wert in der Timeline registriert und zu gegebener Zeit verändert. Es kann entweder eine Variable oder ein Objekt (z.B. Sprite) übergeben werden. Im Falle eines Objektes muss der Name der gewünschten Variable separat angegeben werden.



AddTimeFunction( Wait, Object, Name );
AddTimeValue( Wait, Duration, Value, From, To, Factor = 1 );
AddTimeObject( Wait, Duration, Object, Name, From, To, Factor = 1 );




Schlüssel und Türen



// addKey( Name );
// removeKey( Name );
// bool hasKey( Name );


Es gibt in der Demo bereits vorgefertigte Tür-Klassen (KeyDoor und KeyLevelDoor), die sich abschliessen lassen. Welcher Schlüssel benötigt wird, ist in $key festgelegt und der Schloss-Status in $locked. Beim Spielerobjekt werden die gesammelten Schlüssel in $keys[] festgehalten und mit hasKey( $name ) wird abgefragt, ob ein Schlüssel vorhanden ist.

Neue Schlüssel können mit addKey( $name ) hinzugefügt und vorhandene mit removeKey( $name ) wieder entfernt werden:


$player.addKey( "storage" ); // Schlüssel zum Lagerhaus hinzufügen
$player.removeKey( "storage" ); // Schlüssel wieder entfernen




Automatische Variablen

Einige Objektvariablen werden von der Demo-Engine automatisch definiert und aktualisiert. Die Zuweisung erfolgt nach Initialisierung der Objektvariablen.


Items und Chars

Name Beschreibung
_nameObjektname
_classKlassenname
_xX-Position des Sprites
_yY-Position des Sprites
_zZ-Position des Sprites
_rRotation des Sprites

Level und Areas

Name Beschreibung
_nameObjektname
_classKlassenname
Kategorien: DemoEntwicklerhilfe