PageRenderTime 22ms CodeModel.GetById 14ms app.highlight 5ms RepoModel.GetById 1ms app.codeStats 0ms

/docs/sdk/scenario/script.xml

https://bitbucket.org/randrian/openclonk2
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>