Scripte:Zufallsgespräch
Aus Clonk Wiki
| Zufallsgespräch | |
|---|---|
| Kategorie: | Script |
| Autor: | Nachtschatten |
| Behandelt: | {{{Behandelt}}} |
| Empfohlenes Vorwissen: | {{{Vorwissen}}} |
| Benötigt Objektpacks: | {{{Packs}}} |
| Stufe: | |
Inhaltsverzeichnis |
Allgemein
Dieses Script erstellt drei Clonks nebeneinander. Jeder dieser Clonks sagt einen Satz, der per Zufall bestimmt wird.
Anhand dieses Beispiels wird der Gebrauch von Arrays erläutert.
Eine Vorstellungshilfe für Arrays
Was ist ein Array eigentlich? Für den Anfang kannst du es dir wie einen Schrank mit vielen Schubladen vorstellen. Du kannst in jede Schublade des Schranks etwas hineinlegen oder herausnehmen. Damit du dem Schrank genau sagen kannst, welche Schublade dich interessiert, sind sie durchnummeriert.
Script
public
func
RandomTalk()
{
// Sprecher erstellen
var
talkers
=
CreateArray(
3);
talkers[
0]
=
CreateObject(
CLNK,
100,
100,
NO_OWNER);
talkers[
1]
=
CreateObject(
CLNK,
200,
100,
NO_OWNER);
talkers[
2]
=
CreateObject(
CLNK,
300,
100,
NO_OWNER);
// Verschiedene Sätze in einem Array speichern
var
sentences
=
[
"Hi",
"Hallo",
"Wie geht's?",
"Schönes Wetter heute!"];
// Jeden Sprecher einen Satz sagen lassen
for(
var
talker
in
talkers)
{
var
sentencesCount
=
GetLength(
sentences);
var
sentenceNr
=
Random(
sentencesCount);
var
sentence
=
sentences[
sentenceNr];
Message(
sentence,
talker);
}
}
Erklärung
Ab hier wird Schritt für Schritt auf das obige Script eingegangen.
Die Sprecher
Zunächst kümmern wir uns um die drei Sprecher. Sie sollen erstellt, und für später in einem Array gespeichert werden.
var
talkers
=
CreateArray(
3);Mit CreateArray() wird ein Array erstellt. Die gewünschte Länge muss angegeben werden. Alle Schubladen sind automatisch durchnummeriert. Wir wollen hier drei Clonks speichern, also erstellen wir einen Schrank namens talkers (zu Deutsch: Sprecher) mit drei Schubladen.
talkers[
0]
=
...Hier wird ein Clonk erschaffen und in die erste Schublade gelegt. Du greifst auf eine Schublade zu, indem du ihre Nummer in eckigen Klammern schreibst, hinter den Namen des Schranks. Die Nummerierung der Schubladen beginnt aber nicht mit 1, sondern mit 0. Entsprechend hat die letzte Schublade die Nummer 2, und nicht 3. Darauf muss man aufpassen.
Entsprechend legen wir einen Clonk in die zweite Schublade (die die Nummer 1 trägt), und einen in die dritte Schublade.
Die gesprochenen Sätze
Als nächstes legen wir fest, welche Sätze gesprochen werden können. Aus diesen Sätzen werden später drei zufällig ausgesucht, einer für jeden Clonk. Wir speichern diese Sätze ebenso in einem Array.
var
sentences
=
[
"Hi",
"Hallo",
"Wie geht's?",
"Schönes Wetter heute!"];Dies ist eine zweite Methode, um ein Array zu erstellen. Anstatt nacheinander auf die einzelnen Schubladen zuzugreifen, kannst du in einer Zeile sagen, wie der Schrank aussehen soll. Für kurze Arrays wie dieses ist das sehr praktisch, bei längeren wird die Schreibweise aber etwas unübersichtlich.
Zum Schluss: Sprechen lassen
Nun müssen wir jedem der drei Clonks mitteilen, welchen Satz er zu sagen hat.
for(
var
talker
in
talkers)Diese for-Schleife bedeutet in etwa: "Mit jedem Sprecher aus der Sprecher-Liste, mache folgendes". Oder, anders gesagt: Wir nehmen unseren Schrank talkers (der, in dem die Clonks gespeichert sind), öffnen nacheinander jede Schublade einzeln, und machen irgendetwas mit dem Inhalt. Nacheinander, keine wird ausgelassen.
Jedes Mal, wenn wir eine der Schubladen öffnen, wird ihr Inhalt dabei in talker gespeichert. So lange, bis wir zur nächsten Schublade gehen.
Was genau mit talker passiert, wird mit den folgenden Befehlen festgelegt.
var
sentencesCount
=
GetLength(
sentences);Zuerst schauen wir, wie viele Sätze uns überhaupt zur Verfügung stehen. GetLength() fragt hierbei die Länge des Arrays ab, d.h. wie viele Schubladen unser Schrank sentences eigentlich hat. Das ist besonders dann praktisch, wenn wir nicht wissen, wie lang unser Array ist - oder falls wir uns später entscheiden, noch ein paar Sätze hinzu zu fügen.
var
sentenceNr
=
Random(
sentencesCount);Danach suchen wir uns zufällig eine Nummer aus. Random() gibt uns eine Zufallszahl. Passenderweise ist dies eine Zahl zwischen 0 und sentencesCount-1. Denn, wir erinnern uns: Die Nummerierung der Schubladen beginnt ebenfalls mit 0.
var
sentence
=
sentences[
sentenceNr];Wir öffnen nun die zufällig ausgewählte Schublade. In ihr steht einer der Sätze, die wir weiter oben festgelegt haben. Diesen Satz merken wir uns nun in der Variable sentence.
Message(
sentence,
talker);Zum Schluss zeigen wir den Satz über dem Kopf des Clonks an.
Fazit
Die wichtigsten Punkte noch einmal zusammengefasst:
- Arrays erstellen mit CreateArray( Schubladenzahl) oder var schrank = [ ...];
- Die Schubladen sind durchnummeriert: Die Nummern fangen mit 0 an, und hören mit Schubladenzahl-1 auf.
- Zugriff per Nummer der Schublade in eckigen Klammern: schrank[10];
- Alle Schubladen nacheinander öffnen mit for( var schublade in schrank)
| Scripte des Scripte-Projekts | |
| Bonbon · Context-Eintrag · EliminateTeam · Flint:Partikelschleuder · Hüpfbonbon · TeamMessage | |
| Flint:HitCounter · Flint:Partikelkreis · Flint:Partikelschleuder2 · Is-Funktionen · Menü:Beim Start der Runde · Normaler Flint · Partikel-Linie in den Himmel · Rakete · Random · Relaunch · Return · Sichtweite · Spawn · Startposition | |
| Clantag · Gift-Effekt · Unverwundbarkeit · Scoreboard · Zufallsgespräch | |
| Lebensbalken · Nachrichten bei Sichtkontakt · Object2Overlay · SHA1 | |
| Dieser Artikel wurde gemäß der Scriptrichtlinien veröffentlicht. |
