/docs/sdk/scenario/script.xml
XML | 53 lines | 42 code | 11 blank | 0 comment | 0 complexity | b7803aea0d11fff762fda47c2179cf65 MD5 | raw file
Possible License(s): WTFPL, 0BSD, LGPL-2.1, CC-BY-3.0
1<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>
2<!DOCTYPE doc SYSTEM "../../clonk.dtd">
3<?xml-stylesheet type="text/xsl" href="../../clonk.xsl"?>
4<doc>
5<title>Szenarioscripte</title>
6
7<h id="SzenarioScripte">Szenarioscripte</h>
8<part>
9 <text>In Szenarioscripten kann ein globaler Handlungsablauf und szenarienspezifische Besonderheiten wie Rejoins oder spezielle Spielerplatzierungen festgelegt werden. F�r eine Beschreibung der Scriptsprache C4Script siehe <emlink href="script/index.html">C4Script</emlink>-Dokumentation.</text>
10
11 <h id="Callbacks">Callbacks in Szenarioscripten</h>
12 <text>Beim Start der Runde (Und VOR dem Beitritt der Spieler!) ruft die Engine, wenn vorhanden, die Funktion "Initialize" im Script des Szenarios auf. Innerhalb dieser Funktion k�nnen z.B. Objekte erzeugt werden, die beim Start der Runde vorhanden sein sollen. Au�erdem kann die fortlaufende Scriptausf�hrung gestartet werden.</text>
13
14 <code>func Initialize()
15{
16 <funclink>Message</funclink>("Hallo");
17 <funclink>CreateObject</funclink>(HUT1,250,200,0);
18 <funclink>ScriptGo</funclink>(1);
19}</code>
20
21 <text>Fortlaufende Scriptausf�hrung: zu Beginn der Runde steht der interne Sciptz�hler auf 0. Wurde mit ScriptGo die Scriptausf�hrung aktiviert, so erh�ht die Engine im Lauf der Runde in jedem zehnten Frame (Bild) den Scriptz�hler um 1 und ruft, wenn vorhanden, die dazugeh�rige Script-Funktion im Szenario-Script auf.</text>
22
23 <code>func Script26()
24{
25 <funclink>Message</funclink>("Diese Funktion wird nach 260 Frames ausgef�hrt.");
26}</code>
27
28 <text>Der Scriptz�hler kann mit dem Befehl <funclink>goto</funclink>() auch manuell auf einen bestimmten Wert gesetzt werden.</text>
29 <text>Nach der Platzierung eines beitretenden Spielers ruft die Engine, wenn vorhanden, die Funktion InitializePlayer im Scenario-Script f�r diesen Spieler auf. Die Funktion wird aufgerufen, nachdem die in Scenario.txt beschriebenen Startkonditionen (Positionierung und Platzierung von Mannschaft, Geb�ude, Fahrzeuge, Material) verarbeitet wurden. Mit dieser Funktion k�nnen weitere spielerabh�ngige Startkonditionen geschaffen werden.</text>
30
31 <code>func InitializePlayer(iPlr)
32{
33 // Eine Meldung f�r diesen Spieler
34 <funclink>Message</funclink>( "Spieler Nr. %d ist beigetreten", 0, iPlr );
35 <funclink>Sound</funclink>("Ding");
36 // Ersten Clonk des Spielers doch an einer anderen Stelle starten lassen
37 <funclink>SetPosition</funclink>( <funclink>Random</funclink>(<funclink>LandscapeWidth</funclink>()), <funclink>Random</funclink>(<funclink>LandscapeHeight</funclink>()), <funclink>GetCrew</funclink>(iPlr));
38}</code>
39
40 <text>Analog dazu ruft die Engine die Funktion RemovePlayer auf, wenn ein Spieler die Runde verl�sst.</text>
41 <text>Wird eine Runde durch szenariobedingte Spielziele wie Spielereliminierung, Materialabbau, usw. (siehe Scenario.txt <emlink href="scenario/scenario.html#SektionGame">Sektion [Game]</emlink>) oder durch den Scriptbefehl GameOver beendet (also nicht bei abgebrochenen Runden), ruft die Engine im Szenario-Script die Funktion OnGameOver auf.</text>
42
43 <code>func OnGameOver()
44{
45 <funclink>Sound</funclink>("Trumpet");
46 // Hier bietet sich die M�glichkeit f�r spezielle Rundenauswertung in der Log-Datei Clonk4.log
47 <funclink>Log</funclink>("Verm�gen von Spieler 1: %d", <funclink>GetWealth</funclink>(0));
48}</code>
49</part>
50
51<author>Sven2</author><date>April 2002</date>
52
53</doc>