Aufgrund einer akuten Spamwelle ist das Editieren für nicht angemeldete Benutzer zur Zeit deaktiviert. Wir bitten um Verständnis.

Scripte:Zufallsgespräch

Aus Clonk Wiki

Wechseln zu: Navigation, Suche
  Zufallsgespräch
Kategorie: Script
Autor: Nachtschatten
Behandelt: {{{Behandelt}}}
Empfohlenes Vorwissen: {{{Vorwissen}}}
Benötigt Objektpacks: {{{Packs}}}
Stufe: Profi Profi Profi

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

C4Script
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.

C4Script
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.

C4Script
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.

C4Script
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.

C4Script
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.

C4Script
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.

C4Script
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.

C4Script
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.

C4Script
Message(
 
sentence,
 
talker);

Zum Schluss zeigen wir den Satz über dem Kopf des Clonks an.

Fazit

Die wichtigsten Punkte noch einmal zusammengefasst:

  1. Arrays erstellen mit CreateArray( Schubladenzahl) oder var schrank = [ ...];
  2. Die Schubladen sind durchnummeriert: Die Nummern fangen mit 0 an, und hören mit Schubladenzahl-1 auf.
  3. Zugriff per Nummer der Schublade in eckigen Klammern: schrank[10];
  4. Alle Schubladen nacheinander öffnen mit for( var schublade in schrank)


Scripte des Scripte-Projekts
AnfängerBonbon · Context-Eintrag · EliminateTeam · Flint:Partikelschleuder · Hüpfbonbon · TeamMessage
Fortgeschrittene FortgeschritteneFlint: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
Profi Profi ProfiClantag · Gift-Effekt · Unverwundbarkeit · Scoreboard · Zufallsgespräch
Experte Experte Experte ExperteLebensbalken · Nachrichten bei Sichtkontakt · Object2Overlay · SHA1


Wipfhunt.png Dieser Artikel wurde gemäß der Scriptrichtlinien veröffentlicht.
extern