<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="https://wiki.stne.net/skins/common/feed.css?270"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
		<id>https://wiki.stne.net/index.php?feed=atom&amp;target=Stryke&amp;title=Spezial%3ABeitr%C3%A4ge%2FStryke</id>
		<title>STNE-Wiki - Benutzerbeiträge [de]</title>
		<link rel="self" type="application/atom+xml" href="https://wiki.stne.net/index.php?feed=atom&amp;target=Stryke&amp;title=Spezial%3ABeitr%C3%A4ge%2FStryke"/>
		<link rel="alternate" type="text/html" href="https://wiki.stne.net/index.php?title=Spezial:Beitr%C3%A4ge/Stryke"/>
		<updated>2026-04-07T14:01:08Z</updated>
		<subtitle>Aus STNE-Wiki</subtitle>
		<generator>MediaWiki 1.16.0</generator>

	<entry>
		<id>https://wiki.stne.net/index.php?title=Scripting:Flotten</id>
		<title>Scripting:Flotten</title>
		<link rel="alternate" type="text/html" href="https://wiki.stne.net/index.php?title=Scripting:Flotten"/>
				<updated>2006-07-30T19:12:40Z</updated>
		
		<summary type="html">&lt;p&gt;Stryke: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Scriptingmenue}}&lt;br /&gt;
Da im IRC vermehrt gefragt wurde wie ganze Flotten bearbeitet (WK füllen, bemannen, etc...) werden können, habe ich mir mal die Mühe gemacht und ein kleines Tutorial geschrieben. Ich setze die Kenntnis des [[Scripting:Anfängerkurs|Anfängerkurs]]es voraus.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Der Code ist in kleine Schnipsel zerteilt, damit ich in besser erklären kann. Am Ende ist er nocheinmal in kompletter Fassung, sodass Fehler beim zusammenkopieren vermieden werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Zu beginn benötigen wir eine Schleife, mit welcher wir die einzelnen Schiffe der Flotte anwählen können.&lt;br /&gt;
An dieser Stelle biete sich eine FOR (EACH var IN Array) an.&lt;br /&gt;
*var ist das aktuelle Schiff&lt;br /&gt;
*Array die Liste der Schiffe&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
VAR fleetID AS Integer = &amp;lt;id der Flotte&amp;gt;;&lt;br /&gt;
VAR fleet AS NEW CMyFlotte(fleetID);&lt;br /&gt;
VAR actualShip AS CMyShip;&lt;br /&gt;
VAR actualShipID AS integer;&lt;br /&gt;
FOR (EACH actualShip IN fleet.Ships){&lt;br /&gt;
  actualShipID = actualShip.ShipID;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das einzige was angegeben werden muss, ist die ID der Flotte. (Die &amp;lt;&amp;gt; sind wegzulassen)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Damit haben wir unseren Rahmen, mit dem wir die gesamte Flotte durchgehen können. Über die ermittelte ID ist es nun möglich Aktionen z.B. beamen durchzuführen.&lt;br /&gt;
&lt;br /&gt;
Als Beispiel wollen wir die [[Schiffs-Warpkern|Warpkerne]] der Schiffe füllen. Ich gehe davon aus, dass eine Station zur Verfügung steht, auf der die Waren lagern.&lt;br /&gt;
&lt;br /&gt;
Hierzu legen wir zuerst fest, von welcher Basis die Rohstoffe geholt werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;VAR BaseID AS Integer = &amp;lt;id der Basis&amp;gt;;&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Anschließend prüfen wir, ob der WK überhaupt leer ist. Hierzu nutzen wir eine einfache Mathematische Lösung.&lt;br /&gt;
&lt;br /&gt;
2 [[Antimaterie]] + 2 [[Deuterium]] + 1 [[Dilithium]] ergeben 50 WK-Füllung&lt;br /&gt;
&lt;br /&gt;
Wenn wir also die vorhanden Füllung von 1000 abziehen (wir wollen schließlich wissen, wieviel reinmuss), durch 50 teilen und abrunden, so erhalten wir die Zahl der benötigten Einzelfüllungen.&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;menge = CInt((1000-actualShip.Warpkern)/50);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
das CInt(); sorgt dafür, das wir nur ganze Zahlen bekommen.&lt;br /&gt;
Nun wissen wir wieviele WK-Füllungen wir also benötigen, damit das Schiff möglichst voll betankt ist.&lt;br /&gt;
Nun prüfen wir zunächst, ob die Anzahl der Füllungen gleich 0 ist, um Fehler zu vermeiden.&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;IF (menge &amp;gt; 0) {&lt;br /&gt;
&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Wenn diese Hürde genommen ist, können wir mit dem eigentlichen Vorgang des Betankens fortfahren.&lt;br /&gt;
Damit wir beamen und An-/Abdocken können, müssen wir dem ShipManager sagen mit welchem Schiff er arbeiten soll.&lt;br /&gt;
&lt;br /&gt;
Dies geschieht über&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;ShipManager.BenutzeSchiff(actualShipID);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
nun können wir an die bereits definierte Basis andocken.&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;ShipManager.AndockenAn(BaseID);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
die Waren in den entsprechenden Mengen rübertransportieren&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;ShipManager.TransferiereVonSchiff(BaseID, menge * 2, EBeamRessource.Deuterium);&lt;br /&gt;
ShipManager.TransferiereVonSchiff(BaseID, menge * 2, EBeamRessource.Antimaterie);&lt;br /&gt;
ShipManager.TransferiereVonSchiff(BaseID, menge, EBeamRessource.Dilithium);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
und den Warpkern nachfüllen&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;ShipManager.WarpkernNachfüllen(menge);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Wieder abdocken&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;ShipManager.Abdocken();&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Und schon ist das Schiff fertig betankt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nun können wir noch eine Schöne Ausgabe machen, für den Fall, dass das Schiff bereits einen vollen WK hat. Hierfür müssen wir nur einen else-Zweig in die Abfrage einbauen&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;else {&lt;br /&gt;
  writeline('Schiff ' &amp;amp; actualShip.Name &amp;amp; '(' &amp;amp; CStr(actualShipID) &amp;amp; ') hat bereits einen vollen Warpkern. Füllung beträgt: ' &amp;amp; CStr(actualShip.Warpkern));&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Wie angekündigt hier einmal der komplette Quellcode, inkl, einiger kurzen Kommentaren.&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
//Variablen festlegen&lt;br /&gt;
VAR fleetID AS Integer = &amp;lt;id der Flotte&amp;gt;; //Flotte die abgearbeitet werden soll&lt;br /&gt;
VAR BaseID AS Integer = &amp;lt;id der Basis&amp;gt;;  //Basis, auf der die Ressourcen Lagern&lt;br /&gt;
VAR fleet AS NEW CMyFlotte(fleetID);&lt;br /&gt;
VAR actualShip AS CMyShip;&lt;br /&gt;
VAR actualShipID AS integer;&lt;br /&gt;
VAR menge AS Integer;&lt;br /&gt;
FOR (EACH actualShip IN fleet.Ships){ //Schleife zum durchlaufen aller Schiffe der Flotte&lt;br /&gt;
  actualShipID = actualShip.ShipID;  //ID des Schiffes Auslesen&lt;br /&gt;
  menge = CInt((1000-actualShip.Warpkern)/50); //Warpkernfüllung ermitteln&lt;br /&gt;
  IF (menge &amp;gt; 0) {  //Prüfen, ob der Warpkern noch zu füllen ist&lt;br /&gt;
    ShipManager.BenutzeSchiff(actualShipID);&lt;br /&gt;
    ShipManager.AndockenAn(BaseID);&lt;br /&gt;
    ShipManager.TransferiereVonSchiff(BaseID, menge * 2, EBeamRessource.Deuterium);&lt;br /&gt;
    ShipManager.TransferiereVonSchiff(BaseID, menge * 2, EBeamRessource.Antimaterie);&lt;br /&gt;
    ShipManager.TransferiereVonSchiff(BaseID, menge, EBeamRessource.Dilithium);&lt;br /&gt;
    ShipManager.WarpkernNachfüllen(menge);&lt;br /&gt;
    ShipManager.Abdocken();&lt;br /&gt;
  }&lt;br /&gt;
  else { //Fehlermeldung, falls das Schiff vollen WK hat&lt;br /&gt;
    writeline('Schiff ' &amp;amp; actualShip.Name &amp;amp; '(' &amp;amp; CStr(actualShipID) &amp;amp; ') hat bereits einen vollen Warpkern. Füllung beträgt: ' &lt;br /&gt;
    &amp;amp; CStr(actualShip.Warpkern));&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Damit ihr das Script nutzen könnt müsst ihr nur &amp;lt;ID der Flotte&amp;gt; und &amp;lt;ID der Basis&amp;gt; durch die jeweiligen Zahlen ersetzen. (Wie gehabt, die &amp;lt;&amp;gt; dienen nur dem hervorheben, und müssen im Quellcode nicht vorhanden sein.)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ich hoffe, dass ganze hat ein wenig geholfen, zu zeigen, wie ganze Flotten zu bearbeiten sind.&lt;br /&gt;
Was man verbessern könnte wäre zum Beispiel: &lt;br /&gt;
*Prüfen, ob die Station genug Waren hat, ansonsten das Script abrechen&lt;br /&gt;
*Eine schönere Ausgabe&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Wer fragen hat, der komme doch bitte in den IRC-Channel #scripting und stelle sie dort, ich bin meist anwesend.&lt;br /&gt;
&lt;br /&gt;
MFG Stryke&lt;/div&gt;</summary>
		<author><name>Stryke</name></author>	</entry>

	<entry>
		<id>https://wiki.stne.net/index.php?title=Scripting_Diskussion:Flotten</id>
		<title>Scripting Diskussion:Flotten</title>
		<link rel="alternate" type="text/html" href="https://wiki.stne.net/index.php?title=Scripting_Diskussion:Flotten"/>
				<updated>2006-07-30T18:58:04Z</updated>
		
		<summary type="html">&lt;p&gt;Stryke: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Ich möchte wetten dass du den Soruce nicht einmal selber getestet hast, es gibt schwere Syntaxfehler im Code.&lt;br /&gt;
[[Spieler:Arakis|Arakis]] 11:52, 29. Jul 2006 (W. Europe Daylight Time)&lt;br /&gt;
----&lt;br /&gt;
Ein weiterer Warpkernaufladescript von einem Kollegen von mir :)&lt;br /&gt;
Grüße [[Spieler:Xenon|Xenon]] 20:55, 30. Jul 2006 (W. Europe Daylight Time)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// 12.06.2006 by Death (24012)&lt;br /&gt;
//&lt;br /&gt;
// Script zum aufladen der Warpkerne einer Flotte.&lt;br /&gt;
//&lt;br /&gt;
//&lt;br /&gt;
// Start Konfiguration:&lt;br /&gt;
//&lt;br /&gt;
// Die ID der Kolonie in deren Orbit die Flotte ist&lt;br /&gt;
&lt;br /&gt;
VAR PlanetID AS integer = 1111&lt;br /&gt;
&lt;br /&gt;
//Die ID der Basis im Orbit der Kolonie (0 für keine)&lt;br /&gt;
&lt;br /&gt;
VAR BasisID AS integer = 1111&lt;br /&gt;
&lt;br /&gt;
// Die ID der Flotte deren Warpkerne aufgetankt werden sollen.&lt;br /&gt;
&lt;br /&gt;
VAR FlotteID AS integer = 1111&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
// Ende Konfiguration:&lt;br /&gt;
//&lt;br /&gt;
//&lt;br /&gt;
// Ab hier bitte keine Änderungen vornehmen.&lt;br /&gt;
//&lt;br /&gt;
VAR Flotte AS NEW CMyFlotte(FlotteID)&lt;br /&gt;
VAR Schiffe AS CShipList = Flotte.Ships&lt;br /&gt;
VAR ShipEnum AS IEnumerator = Schiffe.GetEnumerator()&lt;br /&gt;
VAR i AS integer&lt;br /&gt;
VAR Ship AS CMyShip&lt;br /&gt;
VAR sl AS CLager&lt;br /&gt;
WHILE( ShipEnum.MoveNext() ) &lt;br /&gt;
{&lt;br /&gt;
Ship = ShipEnum.Current&lt;br /&gt;
ShipManager.BenutzeSchiff(Ship.ShipID)&lt;br /&gt;
IF( BasisID &amp;gt; 0 )&lt;br /&gt;
{&lt;br /&gt;
ShipManager.AndockenAn(BasisID)&lt;br /&gt;
}&lt;br /&gt;
IF( (Ship.Warpkern &amp;lt; 951) AND (Ship.AngedocktAnID = BasisID) )&lt;br /&gt;
{&lt;br /&gt;
i = 0&lt;br /&gt;
WHILE( (Ship.Warpkern &amp;lt; 951) AND (i &amp;lt; 20) )&lt;br /&gt;
{&lt;br /&gt;
ShipManager.TransferiereVonKolonie(PlanetID, 20,&lt;br /&gt;
EBeamRessource.Deuterium)&lt;br /&gt;
ShipManager.TransferiereVonKolonie(PlanetID, 10,&lt;br /&gt;
EBeamRessource.Dilithium)&lt;br /&gt;
ShipManager.TransferiereVonKolonie(PlanetID, 20,&lt;br /&gt;
EBeamRessource.Antimaterie)&lt;br /&gt;
ShipManager.WarpkernNachfüllen(500)&lt;br /&gt;
i = i + 1&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
IF( (Ship.Lager.Menge( EWarenTyp.Deuterium ) &amp;lt;= 20) AND&lt;br /&gt;
    (Ship.Lager.Menge( EWarenTyp.Dilithium ) &amp;lt;= 10) AND&lt;br /&gt;
    (Ship.Lager.Menge( EWarenTyp.Antimaterie ) &amp;lt;= 20) )&lt;br /&gt;
{&lt;br /&gt;
ShipManager.TransferiereZuKolonie(PlanetID, 20,&lt;br /&gt;
EBeamRessource.Deuterium)&lt;br /&gt;
ShipManager.TransferiereZuKolonie(PlanetID, 10,&lt;br /&gt;
EBeamRessource.Dilithium)&lt;br /&gt;
ShipManager.TransferiereZuKolonie(PlanetID, 20,&lt;br /&gt;
EBeamRessource.Antimaterie)&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
IF( BasisID &amp;gt; 0 )&lt;br /&gt;
{&lt;br /&gt;
ShipManager.Abdocken()&lt;br /&gt;
}&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Sry Arakis, du hattest Recht, ich hatte wirklich eine Fehler drinne *schäm*. Wird nicht wieder vorkommen. --[[Spieler:Stryke|Stryke]] 20:58, 30. Jul 2006 (W. Europe Daylight Time)&lt;/div&gt;</summary>
		<author><name>Stryke</name></author>	</entry>

	<entry>
		<id>https://wiki.stne.net/index.php?title=Scripting_Diskussion:Flotten</id>
		<title>Scripting Diskussion:Flotten</title>
		<link rel="alternate" type="text/html" href="https://wiki.stne.net/index.php?title=Scripting_Diskussion:Flotten"/>
				<updated>2006-07-30T18:55:19Z</updated>
		
		<summary type="html">&lt;p&gt;Stryke: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Ich möchte wetten dass du den Soruce nicht einmal selber getestet hast, es gibt schwere Syntaxfehler im Code.&lt;br /&gt;
[[Spieler:Arakis|Arakis]] 11:52, 29. Jul 2006 (W. Europe Daylight Time)&lt;/div&gt;</summary>
		<author><name>Stryke</name></author>	</entry>

	<entry>
		<id>https://wiki.stne.net/index.php?title=Scripting_Diskussion:Flotten</id>
		<title>Scripting Diskussion:Flotten</title>
		<link rel="alternate" type="text/html" href="https://wiki.stne.net/index.php?title=Scripting_Diskussion:Flotten"/>
				<updated>2006-07-30T18:54:55Z</updated>
		
		<summary type="html">&lt;p&gt;Stryke: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Ich möchte wetten dass du den Soruce nicht einmal selber getestet hast, es gibt schwere Syntaxfehler im Code.&lt;br /&gt;
[[Spieler:Arakis|Arakis]] 11:52, 29. Jul 2006 (W. Europe Daylight Time)&lt;br /&gt;
&lt;br /&gt;
Sry, das stimmt, ich hatte eine Fehler drinne *schäm*, der sollte jetzt allerdings behoben sein.&lt;/div&gt;</summary>
		<author><name>Stryke</name></author>	</entry>

	<entry>
		<id>https://wiki.stne.net/index.php?title=Scripting:Flotten</id>
		<title>Scripting:Flotten</title>
		<link rel="alternate" type="text/html" href="https://wiki.stne.net/index.php?title=Scripting:Flotten"/>
				<updated>2006-07-30T18:34:41Z</updated>
		
		<summary type="html">&lt;p&gt;Stryke: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Scriptingmenue}}&lt;br /&gt;
Da im IRC vermehrt gefragt wurde wie ganze Flotten bearbeitet (WK füllen, bemannen, etc...) werden können, habe ich mir mal die Mühe gemacht und ein kleines Tutorial geschrieben. Ich setze die Kenntnis des [[Scripting:Anfängerkurs|Anfängerkurs]]es voraus.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Der Code ist in kleine Schnipsel zerteilt, damit ich in besser erklären kann. Am Ende ist er nocheinmal in kompletter Fassung, sodass Fehler beim zusammenkopieren vermieden werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Zu beginn benötigen wir eine Schleife, mit welcher wir die einzelnen Schiffe der Flotte anwählen können.&lt;br /&gt;
An dieser Stelle biete sich eine FOR (EACH var IN Array) an.&lt;br /&gt;
*var ist das aktuelle Schiff&lt;br /&gt;
*Array die Liste der Schiffe&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
VAR fleetID AS Integer = &amp;lt;id der Flotte&amp;gt;;&lt;br /&gt;
VAR fleet AS NEW CMyFlotte(fleetID);&lt;br /&gt;
VAR actualShip AS CMyShip;&lt;br /&gt;
VAR actualShipID AS integer;&lt;br /&gt;
FOR (EACH actualShip IN fleet.Ships){&lt;br /&gt;
  actualShipID = actualShip.ID;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das einzige was angegeben werden muss, ist die ID der Flotte. (Die &amp;lt;&amp;gt; sind wegzulassen)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Damit haben wir unseren Rahmen, mit dem wir die gesamte Flotte durchgehen können. Über die ermittelte ID ist es nun möglich Aktionen z.B. beamen durchzuführen.&lt;br /&gt;
&lt;br /&gt;
Als Beispiel wollen wir die [[Schiffs-Warpkern|Warpkerne]] der Schiffe füllen. Ich gehe davon aus, dass eine Station zur Verfügung steht, auf der die Waren lagern.&lt;br /&gt;
&lt;br /&gt;
Hierzu legen wir zuerst fest, von welcher Basis die Rohstoffe geholt werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;VAR BaseID AS Integer = &amp;lt;id der Basis&amp;gt;;&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Anschließend prüfen wir, ob der WK überhaupt leer ist. Hierzu nutzen wir eine einfache Mathematische Lösung.&lt;br /&gt;
&lt;br /&gt;
2 [[Antimaterie]] + 2 [[Deuterium]] + 1 [[Dilithium]] ergeben 50 WK-Füllung&lt;br /&gt;
&lt;br /&gt;
Wenn wir also die vorhanden Füllung von 1000 abziehen (wir wollen schließlich wissen, wieviel reinmuss), durch 50 teilen und abrunden, so erhalten wir die Zahl der benötigten Einzelfüllungen.&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;menge = CInt((1000-actualShip.Warpkern)/50);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
das CInt(); sorgt dafür, das wir nur ganze Zahlen bekommen.&lt;br /&gt;
Nun wissen wir wieviele WK-Füllungen wir also benötigen, damit das Schiff möglichst voll betankt ist.&lt;br /&gt;
Nun prüfen wir zunächst, ob die Anzahl der Füllungen gleich 0 ist, um Fehler zu vermeiden.&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;IF (menge &amp;gt; 0) {&lt;br /&gt;
&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Wenn diese Hürde genommen ist, können wir mit dem eigentlichen Vorgang des Betankens fortfahren.&lt;br /&gt;
Damit wir beamen und An-/Abdocken können, müssen wir dem ShipManager sagen mit welchem Schiff er arbeiten soll.&lt;br /&gt;
&lt;br /&gt;
Dies geschieht über&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;ShipManager.BenutzeSchiff(actualShipID);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
nun können wir an die bereits definierte Basis andocken.&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;ShipManager.AndockenAn(BaseID);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
die Waren in den entsprechenden Mengen rübertransportieren&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;ShipManager.TransferiereVonSchiff(BaseID, menge * 2, EBeamRessource.Deuterium);&lt;br /&gt;
ShipManager.TransferiereVonSchiff(BaseID, menge * 2, EBeamRessource.Antimaterie);&lt;br /&gt;
ShipManager.TransferiereVonSchiff(BaseID, menge, EBeamRessource.Dilithium);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
und den Warpkern nachfüllen&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;ShipManager.WarpkernNachfüllen(menge);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Wieder abdocken&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;ShipManager.Abdocken();&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Und schon ist das Schiff fertig betankt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nun können wir noch eine Schöne Ausgabe machen, für den Fall, dass das Schiff bereits einen vollen WK hat. Hierfür müssen wir nur einen else-Zweig in die Abfrage einbauen&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;else {&lt;br /&gt;
  writeline('Schiff ' &amp;amp; actualShip.Name &amp;amp; '(' &amp;amp; CStr(actualShipID) &amp;amp; ') hat bereits einen vollen Warpkern. Füllung beträgt: ' &amp;amp; CStr(actualShip.Warpkern));&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Wie angekündigt hier einmal der komplette Quellcode, inkl, einiger kurzen Kommentaren.&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
//Variablen festlegen&lt;br /&gt;
VAR fleetID AS Integer = &amp;lt;id der Flotte&amp;gt;; //Flotte die abgearbeitet werden soll&lt;br /&gt;
VAR BaseID AS Integer = &amp;lt;id der Basis&amp;gt;;  //Basis, auf der die Ressourcen Lagern&lt;br /&gt;
VAR fleet AS NEW CMyFlotte(fleetID);&lt;br /&gt;
VAR actualShip AS CMyShip;&lt;br /&gt;
VAR actualShipID AS integer;&lt;br /&gt;
VAR menge AS Integer;&lt;br /&gt;
FOR (EACH actualShip IN fleet.Ships){ //Schleife zum durchlaufen aller Schiffe der Flotte&lt;br /&gt;
  actualShipID = actualShip.ID;  //ID des Schiffes Auslesen&lt;br /&gt;
  menge = CInt((1000-actualShip.Warpkern)/50); //Warpkernfüllung ermitteln&lt;br /&gt;
  IF (menge &amp;gt; 0) {  //Prüfen, ob der Warpkern noch zu füllen ist&lt;br /&gt;
    ShipManager.BenutzeSchiff(actualShipID);&lt;br /&gt;
    ShipManager.AndockenAn(BaseID);&lt;br /&gt;
    ShipManager.TransferiereVonSchiff(BaseID, menge * 2, EBeamRessource.Deuterium);&lt;br /&gt;
    ShipManager.TransferiereVonSchiff(BaseID, menge * 2, EBeamRessource.Antimaterie);&lt;br /&gt;
    ShipManager.TransferiereVonSchiff(BaseID, menge, EBeamRessource.Dilithium);&lt;br /&gt;
    ShipManager.WarpkernNachfüllen(menge);&lt;br /&gt;
    ShipManager.Abdocken();&lt;br /&gt;
  }&lt;br /&gt;
  else { //Fehlermeldung, falls das Schiff vollen WK hat&lt;br /&gt;
    writeline('Schiff ' &amp;amp; actualShip.Name &amp;amp; '(' &amp;amp; CStr(actualShipID) &amp;amp; ') hat bereits einen vollen Warpkern. Füllung beträgt: ' &lt;br /&gt;
    &amp;amp; CStr(actualShip.Warpkern));&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Damit ihr das Script nutzen könnt müsst ihr nur &amp;lt;ID der Flotte&amp;gt; und &amp;lt;ID der Basis&amp;gt; durch die jeweiligen Zahlen ersetzen. (Wie gehabt, die &amp;lt;&amp;gt; dienen nur dem hervorheben, und müssen im Quellcode nicht vorhanden sein.)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ich hoffe, dass ganze hat ein wenig geholfen, zu zeigen, wie ganze Flotten zu bearbeiten sind.&lt;br /&gt;
Was man verbessern könnte wäre zum Beispiel: &lt;br /&gt;
*Prüfen, ob die Station genug Waren hat, ansonsten das Script abrechen&lt;br /&gt;
*Eine schönere Ausgabe&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Wer fragen hat, der komme doch bitte in den IRC-Channel #scripting und stelle sie dort, ich bin meist anwesend.&lt;br /&gt;
&lt;br /&gt;
MFG Stryke&lt;/div&gt;</summary>
		<author><name>Stryke</name></author>	</entry>

	<entry>
		<id>https://wiki.stne.net/index.php?title=Scripting:Flotten</id>
		<title>Scripting:Flotten</title>
		<link rel="alternate" type="text/html" href="https://wiki.stne.net/index.php?title=Scripting:Flotten"/>
				<updated>2006-07-30T18:26:26Z</updated>
		
		<summary type="html">&lt;p&gt;Stryke: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Scriptingmenue}}&lt;br /&gt;
Da im IRC vermehrt gefragt wurde wie ganze Flotten bearbeitet (WK füllen, bemannen, etc...) werden können, habe ich mir mal die Mühe gemacht und ein kleines Tutorial geschrieben. Ich setze die Kenntnis des [[Scripting:Anfängerkurs|Anfängerkurs]]es voraus.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Der Code ist in kleine Schnipsel zerteilt, damit ich in besser erklären kann. Am Ende ist er nocheinmal in kompletter Fassung, sodass Fehler beim zusammenkopieren vermieden werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Zu beginn benötigen wir eine Schleife, mit welcher wir die einzelnen Schiffe der Flotte anwählen können.&lt;br /&gt;
An dieser Stelle biete sich eine FOR (EACH var IN Array) an.&lt;br /&gt;
*var ist das aktuelle Schiff&lt;br /&gt;
*Array die Liste der Schiffe&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
VAR fleetID AS Integer = &amp;lt;id der Flotte&amp;gt;;&lt;br /&gt;
VAR fleet AS NEW CMyFlotte(fleetID);&lt;br /&gt;
VAR actualShip AS CMyShip;&lt;br /&gt;
VAR actualShipID AS integer;&lt;br /&gt;
FOR (EACH actualShip IN fleet.Ships){&lt;br /&gt;
  actualShipID = actualShip.ID;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das einzige was angegeben werden muss, ist die ID der Flotte. (Die &amp;lt;&amp;gt; sind wegzulassen)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Damit haben wir unseren Rahmen, mit dem wir die gesamte Flotte durchgehen können. Über die ermittelte ID ist es nun möglich Aktionen z.B. beamen durchzuführen.&lt;br /&gt;
&lt;br /&gt;
Als Beispiel wollen wir die [[Schiffs-Warpkern|Warpkerne]] der Schiffe füllen. Ich gehe davon aus, dass eine Station zur Verfügung steht, auf der die Waren lagern.&lt;br /&gt;
&lt;br /&gt;
Hierzu legen wir zuerst fest, von welcher Basis die Rohstoffe geholt werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;VAR BaseID AS Integer = &amp;lt;id der Basis&amp;gt;;&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Anschließend prüfen wir, ob der WK überhaupt leer ist. Hierzu nutzen wir eine einfache Mathematische Lösung.&lt;br /&gt;
&lt;br /&gt;
2 [[Antimaterie]] + 2 [[Deuterium]] + 1 [[Dilithium]] ergeben 50 WK-Füllung&lt;br /&gt;
&lt;br /&gt;
Wenn wir also die vorhanden Füllung von 1000 abziehen (wir wollen schließlich wissen, wieviel reinmuss), durch 50 teilen und abrunden, so erhalten wir die Zahl der benötigten Einzelfüllungen.&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;menge = CInt((1000-actualShip.Warpkern)/50);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
das CInt(); sorgt dafür, das wir nur ganze Zahlen bekommen.&lt;br /&gt;
Nun wissen wir wieviele WK-Füllungen wir also benötigen, damit das Schiff möglichst voll betankt ist.&lt;br /&gt;
Nun prüfen wir zunächst, ob die Anzahl der Füllungen gleich 0 ist, um Fehler zu vermeiden.&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;IF (menge &amp;gt; 0) {&lt;br /&gt;
&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Wenn diese Hürde genommen ist, können wir mit dem eigentlichen Vorgang des Betankens fortfahren.&lt;br /&gt;
Damit wir beamen und An-/Abdocken können, müssen wir dem ShipManager sagen mit welchem Schiff er arbeiten soll.&lt;br /&gt;
&lt;br /&gt;
Dies geschieht über&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;ShipManager.BenutzeSchiff(actualShipID);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
nun können wir an die bereits definierte Basis andocken.&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;ShipManager.AndockenAn(BaseID);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
die Waren in den entsprechenden Mengen rübertransportieren&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;ShipManager.TransferiereVonSchiff(BaseID, menge * 2, EBeamRessource.Deuterium);&lt;br /&gt;
ShipManager.TransferiereVonSchiff(BaseID, menge * 2, EBeamRessource.Antimaterie);&lt;br /&gt;
ShipManager.TransferiereVonSchiff(BaseID, menge, EBeamRessource.Dilithium);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
und den Warpkern nachfüllen&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;ShipManager.WarpkernNachfüllen(menge);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Wieder abdocken&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;ShipManager.Abdocken();&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Und schon ist das Schiff fertig betankt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nun können wir noch eine Schöne Ausgabe machen, für den Fall, dass das Schiff bereits einen vollen WK hat. Hierfür müssen wir nur einen else-Zweig in die Abfrage einbauen&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;else {&lt;br /&gt;
  writeline('Schiff ' &amp;amp; actualShip.Name &amp;amp; '(' &amp;amp; CStr(actualShipID) &amp;amp; ') hat bereits einen vollen Warpkern. Füllung beträgt: ' &amp;amp; CStr(actualShip.Warpkern));&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Wie angekündigt hier einmal der komplette Quellcode, inkl, einiger kurzen Kommentaren.&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
//Variablen festlegen&lt;br /&gt;
VAR fleetID AS Integer = &amp;lt;id der Flotte&amp;gt;; //Flotte die abgearbeitet werden soll&lt;br /&gt;
VAR BaseID AS Integer = &amp;lt;id der Basis&amp;gt;;  //Basis, auf der die Ressourcen Lagern&lt;br /&gt;
VAR fleet AS NEW CMyFlotte(fleetID);&lt;br /&gt;
VAR actualShip AS CMyShip;&lt;br /&gt;
VAR actualShipID AS integer;&lt;br /&gt;
VAR menge AS Integer;&lt;br /&gt;
FOR (EACH actualShip IN fleet.Ships){ //Schleife zum durchlaufen aller Schiffe der Flotte&lt;br /&gt;
  actualShipID = actualShip.ID;  //ID des Schiffes Auslesen&lt;br /&gt;
  menge = CInt((1000-actualShip.Warpkern)/50); //Warpkernfüllung ermitteln&lt;br /&gt;
  IF (menge &amp;gt; 0) {  //Prüfen, ob der Warpkern noch zu füllen ist&lt;br /&gt;
    ShipManager.AndockenAn(BaseID);&lt;br /&gt;
    ShipManager.TransferiereVonSchiff(BaseID, menge * 2, EBeamRessource.Deuterium);&lt;br /&gt;
    ShipManager.TransferiereVonSchiff(BaseID, menge * 2, EBeamRessource.Antimaterie);&lt;br /&gt;
    ShipManager.TransferiereVonSchiff(BaseID, menge, EBeamRessource.Dilithium);&lt;br /&gt;
    ShipManager.WarpkernNachfüllen(menge);&lt;br /&gt;
    ShipManager.Abdocken();&lt;br /&gt;
  }&lt;br /&gt;
  else { //Fehlermeldung, falls das Schiff vollen WK hat&lt;br /&gt;
    writeline('Schiff ' &amp;amp; actualShip.Name &amp;amp; '(' &amp;amp; CStr(actualShipID) &amp;amp; ') hat bereits einen vollen Warpkern. Füllung beträgt: ' &lt;br /&gt;
    &amp;amp; CStr(actualShip.Warpkern));&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Damit ihr das Script nutzen könnt müsst ihr nur &amp;lt;ID der Flotte&amp;gt; und &amp;lt;ID der Basis&amp;gt; durch die jeweiligen Zahlen ersetzen. (Wie gehabt, die &amp;lt;&amp;gt; dienen nur dem hervorheben, und müssen im Quellcode nicht vorhanden sein.)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ich hoffe, dass ganze hat ein wenig geholfen, zu zeigen, wie ganze Flotten zu bearbeiten sind.&lt;br /&gt;
Was man verbessern könnte wäre zum Beispiel: &lt;br /&gt;
*Prüfen, ob die Station genug Waren hat, ansonsten das Script abrechen&lt;br /&gt;
*Eine schönere Ausgabe&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Wer fragen hat, der komme doch bitte in den IRC-Channel #scripting und stelle sie dort, ich bin meist anwesend.&lt;br /&gt;
&lt;br /&gt;
MFG Stryke&lt;/div&gt;</summary>
		<author><name>Stryke</name></author>	</entry>

	<entry>
		<id>https://wiki.stne.net/index.php?title=Scripting:Flotten</id>
		<title>Scripting:Flotten</title>
		<link rel="alternate" type="text/html" href="https://wiki.stne.net/index.php?title=Scripting:Flotten"/>
				<updated>2006-07-30T18:16:00Z</updated>
		
		<summary type="html">&lt;p&gt;Stryke: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Scriptingmenue}}&lt;br /&gt;
Da im IRC vermehrt gefragt wurde wie ganze Flotten bearbeitet (WK füllen, bemannen, etc...) werden können, habe ich mir mal die Mühe gemacht und ein kleines Tutorial geschrieben. Ich setze die Kenntnis des [[Scripting:Anfängerkurs|Anfängerkurs]]es voraus.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Der Code ist in kleine Schnipsel zerteilt, damit ich in besser erklären kann. Am Ende ist er nocheinmal in kompletter Fassung, sodass Fehler beim zusammenkopieren vermieden werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Zu beginn benötigen wir eine Schleife, mit welcher wir die einzelnen Schiffe der Flotte anwählen können.&lt;br /&gt;
An dieser Stelle biete sich eine FOR (EACH var IN Array) an.&lt;br /&gt;
*var ist das aktuelle Schiff&lt;br /&gt;
*Array die Liste der Schiffe&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
VAR fleetID AS Integer = &amp;lt;id der Flotte&amp;gt;;&lt;br /&gt;
VAR fleet AS CMyFlotte(fleetID);&lt;br /&gt;
VAR actualShip AS CMyShip;&lt;br /&gt;
VAR actualShipID AS integer;&lt;br /&gt;
FOR (EACH actualShip IN fleet.Ships){&lt;br /&gt;
  actualShipID = actualShip.ID;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das einzige was angegeben werden muss, ist die ID der Flotte. (Die &amp;lt;&amp;gt; sind wegzulassen)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Damit haben wir unseren Rahmen, mit dem wir die gesamte Flotte durchgehen können. Über die ermittelte ID ist es nun möglich Aktionen z.B. beamen durchzuführen.&lt;br /&gt;
&lt;br /&gt;
Als Beispiel wollen wir die [[Schiffs-Warpkern|Warpkerne]] der Schiffe füllen. Ich gehe davon aus, dass eine Station zur Verfügung steht, auf der die Waren lagern.&lt;br /&gt;
&lt;br /&gt;
Hierzu legen wir zuerst fest, von welcher Basis die Rohstoffe geholt werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;VAR BaseID AS Integer = &amp;lt;id der Basis&amp;gt;;&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Anschließend prüfen wir, ob der WK überhaupt leer ist. Hierzu nutzen wir eine einfache Mathematische Lösung.&lt;br /&gt;
&lt;br /&gt;
2 [[Antimaterie]] + 2 [[Deuterium]] + 1 [[Dilithium]] ergeben 50 WK-Füllung&lt;br /&gt;
&lt;br /&gt;
Wenn wir also die vorhanden Füllung von 1000 abziehen (wir wollen schließlich wissen, wieviel reinmuss), durch 50 teilen und abrunden, so erhalten wir die Zahl der benötigten Einzelfüllungen.&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;menge = CInt((1000-actualShip.Warpkern)/50);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
das CInt(); sorgt dafür, das wir nur ganze Zahlen bekommen.&lt;br /&gt;
Nun wissen wir wieviele WK-Füllungen wir also benötigen, damit das Schiff möglichst voll betankt ist.&lt;br /&gt;
Nun prüfen wir zunächst, ob die Anzahl der Füllungen gleich 0 ist, um Fehler zu vermeiden.&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;IF (menge &amp;gt; 0) {&lt;br /&gt;
&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Wenn diese Hürde genommen ist, können wir mit dem eigentlichen Vorgang des Betankens fortfahren.&lt;br /&gt;
Damit wir beamen und An-/Abdocken können, müssen wir dem ShipManager sagen mit welchem Schiff er arbeiten soll.&lt;br /&gt;
&lt;br /&gt;
Dies geschieht über&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;ShipManager.BenutzeSchiff(actualShipID);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
nun können wir an die bereits definierte Basis andocken.&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;ShipManager.AndockenAn(BaseID);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
die Waren in den entsprechenden Mengen rübertransportieren&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;ShipManager.TransferiereVonSchiff(BaseID, menge * 2, EBeamRessource.Deuterium);&lt;br /&gt;
ShipManager.TransferiereVonSchiff(BaseID, menge * 2, EBeamRessource.Antimaterie);&lt;br /&gt;
ShipManager.TransferiereVonSchiff(BaseID, menge, EBeamRessource.Dilithium);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
und den Warpkern nachfüllen&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;ShipManager.WarpkernNachfüllen(menge);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Wieder abdocken&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;ShipManager.Abdocken();&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Und schon ist das Schiff fertig betankt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nun können wir noch eine Schöne Ausgabe machen, für den Fall, dass das Schiff bereits einen vollen WK hat. Hierfür müssen wir nur einen else-Zweig in die Abfrage einbauen&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;else {&lt;br /&gt;
  writeline('Schiff ' &amp;amp; actualShip.Name &amp;amp; '(' &amp;amp; CStr(actualShipID) &amp;amp; ') hat bereits einen vollen Warpkern. Füllung beträgt: ' &amp;amp; CStr(actualShip.Warpkern));&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Wie angekündigt hier einmal der komplette Quellcode, inkl, einiger kurzen Kommentaren.&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
//Variablen festlegen&lt;br /&gt;
VAR fleetID AS Integer = &amp;lt;id der Flotte&amp;gt;; //Flotte die abgearbeitet werden soll&lt;br /&gt;
VAR BaseID AS Integer = &amp;lt;id der Basis&amp;gt;;  //Basis, auf der die Ressourcen Lagern&lt;br /&gt;
VAR fleet AS CMyFlotte(fleetID);&lt;br /&gt;
VAR actualShip AS CMyShip;&lt;br /&gt;
VAR actualShipID AS integer;&lt;br /&gt;
VAR menge AS Integer;&lt;br /&gt;
FOR (EACH actualShip IN fleet.Ships){ //Schleife zum durchlaufen aller Schiffe der Flotte&lt;br /&gt;
  actualShipID = actualShip.ID;  //ID des Schiffes Auslesen&lt;br /&gt;
  menge = CInt((1000-actualShip.Warpkern)/50); //Warpkernfüllung ermitteln&lt;br /&gt;
  IF (menge &amp;gt; 0) {  //Prüfen, ob der Warpkern noch zu füllen ist&lt;br /&gt;
    ShipManager.AndockenAn(BaseID);&lt;br /&gt;
    ShipManager.TransferiereVonSchiff(BaseID, menge * 2, EBeamRessource.Deuterium);&lt;br /&gt;
    ShipManager.TransferiereVonSchiff(BaseID, menge * 2, EBeamRessource.Antimaterie);&lt;br /&gt;
    ShipManager.TransferiereVonSchiff(BaseID, menge, EBeamRessource.Dilithium);&lt;br /&gt;
    ShipManager.WarpkernNachfüllen(menge);&lt;br /&gt;
    ShipManager.Abdocken();&lt;br /&gt;
  }&lt;br /&gt;
  else { //Fehlermeldung, falls das Schiff vollen WK hat&lt;br /&gt;
    writeline('Schiff ' &amp;amp; actualShip.Name &amp;amp; '(' &amp;amp; CStr(actualShipID) &amp;amp; ') hat bereits einen vollen Warpkern. Füllung beträgt: ' &lt;br /&gt;
    &amp;amp; CStr(actualShip.Warpkern));&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Damit ihr das Script nutzen könnt müsst ihr nur &amp;lt;ID der Flotte&amp;gt; und &amp;lt;ID der Basis&amp;gt; durch die jeweiligen Zahlen ersetzen. (Wie gehabt, die &amp;lt;&amp;gt; dienen nur dem hervorheben, und müssen im Quellcode nicht vorhanden sein.)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ich hoffe, dass ganze hat ein wenig geholfen, zu zeigen, wie ganze Flotten zu bearbeiten sind.&lt;br /&gt;
Was man verbessern könnte wäre zum Beispiel: &lt;br /&gt;
*Prüfen, ob die Station genug Waren hat, ansonsten das Script abrechen&lt;br /&gt;
*Eine schönere Ausgabe&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Wer fragen hat, der komme doch bitte in den IRC-Channel #scripting und stelle sie dort, ich bin meist anwesend.&lt;br /&gt;
&lt;br /&gt;
MFG Stryke&lt;/div&gt;</summary>
		<author><name>Stryke</name></author>	</entry>

	<entry>
		<id>https://wiki.stne.net/index.php?title=Scripting:Flotten</id>
		<title>Scripting:Flotten</title>
		<link rel="alternate" type="text/html" href="https://wiki.stne.net/index.php?title=Scripting:Flotten"/>
				<updated>2006-07-30T18:15:23Z</updated>
		
		<summary type="html">&lt;p&gt;Stryke: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Scriptingmenue}}&lt;br /&gt;
Da im IRC vermehrt gefragt wurde wie ganze Flotten bearbeitet (WK füllen, bemannen, etc...) werden können, habe ich mir mal die Mühe gemacht und ein kleines Tutorial geschrieben. Ich setze die Kenntnis des [[Scripting:Anfängerkurs|Anfängerkurs]]es voraus.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Der Code ist in kleine Schnipsel zerteilt, damit ich in besser erklären kann. Am Ende ist er nocheinmal in kompletter Fassung, sodass Fehler beim zusammenkopieren vermieden werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Zu beginn benötigen wir eine Schleife, mit welcher wir die einzelnen Schiffe der Flotte anwählen können.&lt;br /&gt;
An dieser Stelle biete sich eine FOR (EACH var IN Array) an.&lt;br /&gt;
*var ist das aktuelle Schiff&lt;br /&gt;
*Array die Liste der Schiffe&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
VAR fleetID AS Integer = &amp;lt;id der Flotte&amp;gt;;&lt;br /&gt;
VAR fleet AS CMyFlotte(fleetID);&lt;br /&gt;
VAR actualShip AS CMyShip;&lt;br /&gt;
VAR actualShipID AS integer;&lt;br /&gt;
FOR (EACH actualShip IN fleet.Ships){&lt;br /&gt;
  actualShipID = actualShip.ID;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das einzige was angegeben werden muss, ist die ID der Flotte. (Die &amp;lt;&amp;gt; sind wegzulassen)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Damit haben wir unseren Rahmen, mit dem wir die gesamte Flotte durchgehen können. Über die ermittelte ID ist es nun möglich Aktionen z.B. beamen durchzuführen.&lt;br /&gt;
&lt;br /&gt;
Als Beispiel wollen wir die [[Schiffs-Warpkern|Warpkerne]] der Schiffe füllen. Ich gehe davon aus, dass eine Station zur Verfügung steht, auf der die Waren lagern.&lt;br /&gt;
&lt;br /&gt;
Hierzu legen wir zuerst fest, von welcher Basis die Rohstoffe geholt werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;VAR BaseID AS Integer = &amp;lt;id der Basis&amp;gt;;&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Anschließend prüfen wir, ob der WK überhaupt leer ist. Hierzu nutzen wir eine einfache Mathematische Lösung.&lt;br /&gt;
&lt;br /&gt;
2 [[Antimaterie]] + 2 [[Deuterium]] + 1 [[Dilithium]] ergeben 50 WK-Füllung&lt;br /&gt;
&lt;br /&gt;
Wenn wir also die vorhanden Füllung von 1000 abziehen (wir wollen schließlich wissen, wieviel reinmuss), durch 50 teilen und abrunden, so erhalten wir die Zahl der benötigten Einzelfüllungen.&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;menge = CInt((1000-actualShip.Warpkern)/50);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
das CInt(); sorgt dafür, das wir nur ganze Zahlen bekommen.&lt;br /&gt;
Nun wissen wir wieviele WK-Füllungen wir also benötigen, damit das Schiff möglichst voll betankt ist.&lt;br /&gt;
Nun prüfen wir zunächst, ob die Anzahl der Füllungen gleich 0 ist, um Fehler zu vermeiden.&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;IF (menge &amp;gt; 0) {&lt;br /&gt;
&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Wenn diese Hürde genommen ist, können wir mit dem eigentlichen Vorgang des Betankens fortfahren.&lt;br /&gt;
Damit wir beamen und An-/Abdocken können, müssen wir dem ShipManager sagen mit welchem Schiff er arbeiten soll.&lt;br /&gt;
&lt;br /&gt;
Dies geschieht über&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;ShipManager.BenutzeSchiff(actualShipID);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
nun können wir an die bereits definierte Basis andocken.&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;ShipManager.AndockenAn(BaseID);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
die Waren in den entsprechenden Mengen rübertransportieren&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;ShipManager.TransferiereVonSchiff(BaseID, menge * 2, EBeamRessource.Deuterium);&lt;br /&gt;
ShipManager.TransferiereVonSchiff(BaseID, menge * 2, EBeamRessource.Antimaterie);&lt;br /&gt;
ShipManager.TransferiereVonSchiff(BaseID, menge, EBeamRessource.Dilithium);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
und den Warpkern nachfüllen&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;ShipManager.WarpkernNachfüllen(menge);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Wieder abdocken&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;ShipManager.Abdocken();&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Und schon ist das Schiff fertig betankt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nun können wir noch eine Schöne Ausgabe machen, für den Fall, dass das Schiff bereits einen vollen WK hat. Hierfür müssen wir nur einen else-Zweig in die Abfrage einbauen&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;else {&lt;br /&gt;
  wirteline('Schiff ' &amp;amp; actualShip.Name &amp;amp; '(' &amp;amp; CStr(actualShipID) &amp;amp; ') hat bereits einen vollen Warpkern. Füllung beträgt: ' &amp;amp; CStr(actualShip.Warpkern));&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Wie angekündigt hier einmal der komplette Quellcode, inkl, einiger kurzen Kommentaren.&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
//Variablen festlegen&lt;br /&gt;
VAR fleetID AS Integer = &amp;lt;id der Flotte&amp;gt;; //Flotte die abgearbeitet werden soll&lt;br /&gt;
VAR BaseID AS Integer = &amp;lt;id der Basis&amp;gt;;  //Basis, auf der die Ressourcen Lagern&lt;br /&gt;
VAR fleet AS CMyFlotte(fleetID);&lt;br /&gt;
VAR actualShip AS CMyShip;&lt;br /&gt;
VAR actualShipID AS integer;&lt;br /&gt;
VAR menge AS Integer;&lt;br /&gt;
FOR (EACH actualShip IN fleet.Ships){ //Schleife zum durchlaufen aller Schiffe der Flotte&lt;br /&gt;
  actualShipID = actualShip.ID;  //ID des Schiffes Auslesen&lt;br /&gt;
  menge = CInt((1000-actualShip.Warpkern)/50); //Warpkernfüllung ermitteln&lt;br /&gt;
  IF (menge &amp;gt; 0) {  //Prüfen, ob der Warpkern noch zu füllen ist&lt;br /&gt;
    ShipManager.AndockenAn(BaseID);&lt;br /&gt;
    ShipManager.TransferiereVonSchiff(BaseID, menge * 2, EBeamRessource.Deuterium);&lt;br /&gt;
    ShipManager.TransferiereVonSchiff(BaseID, menge * 2, EBeamRessource.Antimaterie);&lt;br /&gt;
    ShipManager.TransferiereVonSchiff(BaseID, menge, EBeamRessource.Dilithium);&lt;br /&gt;
    ShipManager.WarpkernNachfüllen(menge);&lt;br /&gt;
    ShipManager.Abdocken();&lt;br /&gt;
  }&lt;br /&gt;
  else { //Fehlermeldung, falls das Schiff vollen WK hat&lt;br /&gt;
    wirteline('Schiff ' &amp;amp; actualShip.Name &amp;amp; '(' &amp;amp; CStr(actualShipID) &amp;amp; ') hat bereits einen vollen Warpkern. Füllung beträgt: ' &lt;br /&gt;
    &amp;amp; CStr(actualShip.Warpkern));&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Damit ihr das Script nutzen könnt müsst ihr nur &amp;lt;ID der Flotte&amp;gt; und &amp;lt;ID der Basis&amp;gt; durch die jeweiligen Zahlen ersetzen. (Wie gehabt, die &amp;lt;&amp;gt; dienen nur dem hervorheben, und müssen im Quellcode nicht vorhanden sein.)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ich hoffe, dass ganze hat ein wenig geholfen, zu zeigen, wie ganze Flotten zu bearbeiten sind.&lt;br /&gt;
Was man verbessern könnte wäre zum Beispiel: &lt;br /&gt;
*Prüfen, ob die Station genug Waren hat, ansonsten das Script abrechen&lt;br /&gt;
*Eine schönere Ausgabe&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Wer fragen hat, der komme doch bitte in den IRC-Channel #scripting und stelle sie dort, ich bin meist anwesend.&lt;br /&gt;
&lt;br /&gt;
MFG Stryke&lt;/div&gt;</summary>
		<author><name>Stryke</name></author>	</entry>

	<entry>
		<id>https://wiki.stne.net/index.php?title=Scripting:Flotten</id>
		<title>Scripting:Flotten</title>
		<link rel="alternate" type="text/html" href="https://wiki.stne.net/index.php?title=Scripting:Flotten"/>
				<updated>2006-07-27T22:03:44Z</updated>
		
		<summary type="html">&lt;p&gt;Stryke: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Scriptingmenue}}&lt;br /&gt;
Da im IRC vermehrt gefragt wurde wie ganze Flotten bearbeitet (WK füllen, bemannen, etc...) werden können, habe ich mir mal die Mühe gemacht und ein kleines Tutorial geschrieben. Ich setze die Kenntnis des [[Scripting:Anfängerkurs|Anfängerkurs]]es voraus.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Der Code ist in kleine Schnipsel zerteilt, damit ich in besser erklären kann. Am Ende ist er nocheinmal in kompletter Fassung, sodass Fehler beim zusammenkopieren vermieden werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Zu beginn benötigen wir eine Schleife, mit welcher wir die einzelnen Schiffe der Flotte anwählen können.&lt;br /&gt;
An dieser Stelle biete sich eine FOR (EACH var IN Array) an.&lt;br /&gt;
*var ist das aktuelle Schiff&lt;br /&gt;
*Array die Liste der Schiffe&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
VAR fleetID AS Integer = &amp;lt;id der Flotte&amp;gt;;&lt;br /&gt;
VAR fleet AS CMyFlotte(fleetID);&lt;br /&gt;
VAR actualShip AS CMyShip;&lt;br /&gt;
VAR actualShipID AS integer;&lt;br /&gt;
FOR (EACH actualShip IN fleet.Ships){&lt;br /&gt;
  actualShipID = actualShip.ID;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das einzige was angegeben werden muss, ist die ID der Flotte. (Die &amp;lt;&amp;gt; sind wegzulassen)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Damit haben wir unseren Rahmen, mit dem wir die gesamte Flotte durchgehen können. Über die ermittelte ID ist es nun möglich Aktionen z.B. beamen durchzuführen.&lt;br /&gt;
&lt;br /&gt;
Als Beispiel wollen wir die [[Schiffs-Warpkern|Warpkerne]] der Schiffe füllen. Ich gehe davon aus, dass eine Station zur Verfügung steht, auf der die Waren lagern.&lt;br /&gt;
&lt;br /&gt;
Hierzu legen wir zuerst fest, von welcher Basis die Rohstoffe geholt werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;VAR BaseID AS Integer = &amp;lt;id der Basis&amp;gt;;&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Anschließend prüfen wir, ob der WK überhaupt leer ist. Hierzu nutzen wir eine einfache Mathematische Lösung.&lt;br /&gt;
&lt;br /&gt;
2 [[Antimaterie]] + 2 [[Deuterium]] + 1 [[Dilithium]] ergeben 50 WK-Füllung&lt;br /&gt;
&lt;br /&gt;
Wenn wir also die vorhanden Füllung von 1000 abziehen (wir wollen schließlich wissen, wieviel reinmuss), durch 50 teilen und abrunden, so erhalten wir die Zahl der benötigten Einzelfüllungen.&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;menge = CInt((1000-actualShip.Warpkern)/50);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
das CInt(); sorgt dafür, das wir nur ganze Zahlen bekommen.&lt;br /&gt;
Nun wissen wir wieviele WK-Füllungen wir also benötigen, damit das Schiff möglichst voll betankt ist.&lt;br /&gt;
Nun prüfen wir zunächst, ob die Anzahl der Füllungen gleich 0 ist, um Fehler zu vermeiden.&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;IF (menge &amp;gt; 0) {&lt;br /&gt;
&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Wenn diese Hürde genommen ist, können wir mit dem eigentlichen Vorgang des Betankens fortfahren.&lt;br /&gt;
Damit wir beamen und An-/Abdocken können, müssen wir dem ShipManager sagen mit welchem Schiff er arbeiten soll.&lt;br /&gt;
&lt;br /&gt;
Dies geschieht über&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;ShipManager.BenutzeSchiff(actualShipID);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
nun können wir an die bereits definierte Basis andocken.&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;ShipManager.AndockenAn(BaseID);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
die Waren in den entsprechenden Mengen rübertransportieren&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;ShipManager.TransferiereVonSchiff(BaseID, menge * 2, EBeamRessource.Deuterium);&lt;br /&gt;
ShipManager.TransferiereVonSchiff(BaseID, menge * 2, EBeamRessource.Antimaterie);&lt;br /&gt;
ShipManager.TransferiereVonSchiff(BaseID, menge, EBeamRessource.Dilithium);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
und den Warpkern nachfüllen&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;ShipManager.WarpkernNachfüllen(menge);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Wieder abdocken&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;ShipManager.Abdocken();&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Und schon ist das Schiff fertig betankt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nun können wir noch eine Schöne Ausgabe machen, für den Fall, dass das Schiff bereits einen vollen WK hat. Hierfür müssen wir nur einen else-Zweig in die Abfrage einbauen&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;else {&lt;br /&gt;
  wirtline('Schiff ' &amp;amp; actualShip.Name &amp;amp; '(' &amp;amp; CStr(actualShipID) &amp;amp; ') hat bereits einen vollen Warpkern. Füllung beträgt: ' &amp;amp; CStr(actualShip.Warpkern));&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Wie angekündigt hier einmal der komplette Quellcode, inkl, einiger kurzen Kommentaren.&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
//Variablen festlegen&lt;br /&gt;
VAR fleetID AS Integer = &amp;lt;id der Flotte&amp;gt;; //Flotte die abgearbeitet werden soll&lt;br /&gt;
VAR BaseID AS Integer = &amp;lt;id der Basis&amp;gt;;  //Basis, auf der die Ressourcen Lagern&lt;br /&gt;
VAR fleet AS CMyFlotte(fleetID);&lt;br /&gt;
VAR actualShip AS CMyShip;&lt;br /&gt;
VAR actualShipID AS integer;&lt;br /&gt;
VAR menge AS Integer;&lt;br /&gt;
FOR (EACH actualShip IN fleet.Ships){ //Schleife zum durchlaufen aller Schiffe der Flotte&lt;br /&gt;
  actualShipID = actualShip.ID;  //ID des Schiffes Auslesen&lt;br /&gt;
  menge = CInt((1000-actualShip.Warpkern)/50); //Warpkernfüllung ermitteln&lt;br /&gt;
  IF (menge &amp;gt; 0) {  //Prüfen, ob der Warpkern noch zu füllen ist&lt;br /&gt;
    ShipManager.AndockenAn(BaseID);&lt;br /&gt;
    ShipManager.TransferiereVonSchiff(BaseID, menge * 2, EBeamRessource.Deuterium);&lt;br /&gt;
    ShipManager.TransferiereVonSchiff(BaseID, menge * 2, EBeamRessource.Antimaterie);&lt;br /&gt;
    ShipManager.TransferiereVonSchiff(BaseID, menge, EBeamRessource.Dilithium);&lt;br /&gt;
    ShipManager.WarpkernNachfüllen(menge);&lt;br /&gt;
    ShipManager.Abdocken();&lt;br /&gt;
  }&lt;br /&gt;
  else { //Fehlermeldung, falls das Schiff vollen WK hat&lt;br /&gt;
    wirtline('Schiff ' &amp;amp; actualShip.Name &amp;amp; '(' &amp;amp; CStr(actualShipID) &amp;amp; ') hat bereits einen vollen Warpkern. Füllung beträgt: ' &lt;br /&gt;
    &amp;amp; CStr(actualShip.Warpkern));&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Damit ihr das Script nutzen könnt müsst ihr nur &amp;lt;ID der Flotte&amp;gt; und &amp;lt;ID der Basis&amp;gt; durch die jeweiligen Zahlen ersetzen. (Wie gehabt, die &amp;lt;&amp;gt; dienen nur dem hervorheben, und müssen im Quellcode nicht vorhanden sein.)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ich hoffe, dass ganze hat ein wenig geholfen, zu zeigen, wie ganze Flotten zu bearbeiten sind.&lt;br /&gt;
Was man verbessern könnte wäre zum Beispiel: &lt;br /&gt;
*Prüfen, ob die Station genug Waren hat, ansonsten das Script abrechen&lt;br /&gt;
*Eine schönere Ausgabe&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Wer fragen hat, der komme doch bitte in den IRC-Channel #scripting und stelle sie dort, ich bin meist anwesend.&lt;br /&gt;
&lt;br /&gt;
MFG Stryke&lt;/div&gt;</summary>
		<author><name>Stryke</name></author>	</entry>

	<entry>
		<id>https://wiki.stne.net/index.php?title=Scripting:Flotten</id>
		<title>Scripting:Flotten</title>
		<link rel="alternate" type="text/html" href="https://wiki.stne.net/index.php?title=Scripting:Flotten"/>
				<updated>2006-07-27T21:58:27Z</updated>
		
		<summary type="html">&lt;p&gt;Stryke: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Scriptingmenue}}&lt;br /&gt;
Da im IRC vermehrt gefragt wurde wie ganze Flotten bearbeitet (WK füllen, bemannen, etc...) werden können, habe ich mir mal die Mühe gemacht und ein kleines Tutorial geschrieben. Ich setze die Kenntnis des [[Scripting:Anfängerkurs|Anfängerkurs]]es voraus.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Der Code ist in kleine Schnipsel zerteilt, damit ich in besser erklären kann. Am Ende ist er nocheinmal in kompletter Fassung, sodass Fehler beim zusammenkopieren vermieden werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Zu beginn benötigen wir eine Schleife, mit welcher wir die einzelnen Schiffe der Flotte anwählen können.&lt;br /&gt;
An dieser Stelle biete sich eine FOR (EACH var IN Array) an.&lt;br /&gt;
*var ist das aktuelle Schiff&lt;br /&gt;
*Array die Liste der Schiffe&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
VAR fleetID AS Integer = id der Flotte;&lt;br /&gt;
VAR fleet AS CMyFlotte(fleetID);&lt;br /&gt;
VAR actualShip AS CMyShip;&lt;br /&gt;
VAR actualShipID AS integer;&lt;br /&gt;
FOR (EACH actualShip IN fleet.Ships){&lt;br /&gt;
  actualShipID = actualShip.ID;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das einzige was angegeben werden muss, ist die ID der Flotte.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Damit haben wir unseren Rahmen, mit dem wir die gesamte Flotte durchgehen können. Über die ermittelte ID ist es nun möglich Aktionen z.B. beamen durchzuführen.&lt;br /&gt;
&lt;br /&gt;
Als Beispiel wollen wir die [[Schiffs-Warpkern|Warpkerne]] der Schiffe füllen. Ich gehe davon aus, dass eine Station zur Verfügung steht, auf der die Waren lagern.&lt;br /&gt;
&lt;br /&gt;
Hierzu legen wir zuerst fest, von welcher Basis die Rohstoffe geholt werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;VAR BaseID AS Integer = id der Basis;&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Anschließend prüfen wir, ob der WK überhaupt leer ist. Hierzu nutzen wir eine einfache Mathematische Lösung.&lt;br /&gt;
&lt;br /&gt;
2 [[Antimaterie]] + 2 [[Deuterium]] + 1 [[Dilithium]] ergeben 50 WK-Füllung&lt;br /&gt;
&lt;br /&gt;
Wenn wir also die vorhanden Füllung von 1000 abziehen (wir wollen schließlich wissen, wieviel reinmuss), durch 50 teilen und abrunden, so erhalten wir die Zahl der benötigten Einzelfüllungen.&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;menge = CInt((1000-actualShip.Warpkern)/50);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
das CInt(); sorgt dafür, das wir nur ganze Zahlen bekommen.&lt;br /&gt;
Nun wissen wir wieviele WK-Füllungen wir also benötigen, damit das Schiff möglichst voll betankt ist.&lt;br /&gt;
Nun prüfen wir zunächst, ob die Anzahl der Füllungen gleich 0 ist, um Fehler zu vermeiden.&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;IF (menge &amp;gt; 0) {&lt;br /&gt;
&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Wenn diese Hürde genommen ist, können wir mit dem eigentlichen Vorgang des Betankens fortfahren.&lt;br /&gt;
Damit wir beamen und An-/Abdocken können, müssen wir dem ShipManager sagen mit welchem Schiff er arbeiten soll.&lt;br /&gt;
&lt;br /&gt;
Dies geschieht über&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;ShipManager.BenutzeSchiff(actualShipID);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
nun können wir an die bereits definierte Basis andocken.&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;ShipManager.AndockenAn(BaseID);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
die Waren in den entsprechenden Mengen rübertransportieren&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;ShipManager.TransferiereVonSchiff(BaseID, menge * 2, EBeamRessource.Deuterium);&lt;br /&gt;
ShipManager.TransferiereVonSchiff(BaseID, menge * 2, EBeamRessource.Antimaterie);&lt;br /&gt;
ShipManager.TransferiereVonSchiff(BaseID, menge, EBeamRessource.Dilithium);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
und den Warpkern nachfüllen&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;ShipManager.WarpkernNachfüllen(menge);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Wieder abdocken&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;ShipManager.Abdocken();&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Und schon ist das Schiff fertig betankt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nun können wir noch eine Schöne Ausgabe machen, für den Fall, dass das Schiff bereits einen vollen WK hat. Hierfür müssen wir nur einen else-Zweig in die Abfrage einbauen&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;else {&lt;br /&gt;
  wirtline('Schiff ' &amp;amp; actualShip.Name &amp;amp; '(' &amp;amp; CStr(actualShipID) &amp;amp; ') hat bereits einen vollen Warpkern. Füllung beträgt: ' &amp;amp; CStr(actualShip.Warpkern));&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Wie angekündigt hier einmal der komplette Quellcode, inkl, einiger kurzen Kommentaren.&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
//Variablen festlegen&lt;br /&gt;
VAR fleetID AS Integer = &amp;lt;id der Flotte&amp;gt;; //Flotte die abgearbeitet werden soll&lt;br /&gt;
VAR BaseID AS Integer = &amp;lt;id der Basis&amp;gt;;  //Basis, auf der die Ressourcen Lagern&lt;br /&gt;
VAR fleet AS CMyFlotte(fleetID);&lt;br /&gt;
VAR actualShip AS CMyShip;&lt;br /&gt;
VAR actualShipID AS integer;&lt;br /&gt;
VAR menge AS Integer;&lt;br /&gt;
FOR (EACH actualShip IN fleet.Ships){ //Schleife zum durchlaufen aller Schiffe der Flotte&lt;br /&gt;
  actualShipID = actualShip.ID;  //ID des Schiffes Auslesen&lt;br /&gt;
  menge = CInt((1000-actualShip.Warpkern)/50); //Warpkernfüllung ermitteln&lt;br /&gt;
  IF (menge &amp;gt; 0) {  //Prüfen, ob der Warpkern noch zu füllen ist&lt;br /&gt;
    ShipManager.AndockenAn(BaseID);&lt;br /&gt;
    ShipManager.TransferiereVonSchiff(BaseID, menge * 2, EBeamRessource.Deuterium);&lt;br /&gt;
    ShipManager.TransferiereVonSchiff(BaseID, menge * 2, EBeamRessource.Antimaterie);&lt;br /&gt;
    ShipManager.TransferiereVonSchiff(BaseID, menge, EBeamRessource.Dilithium);&lt;br /&gt;
    ShipManager.WarpkernNachfüllen(menge);&lt;br /&gt;
    ShipManager.Abdocken();&lt;br /&gt;
  }&lt;br /&gt;
  else { //Fehlermeldung, falls das Schiff vollen WK hat&lt;br /&gt;
    wirtline('Schiff ' &amp;amp; actualShip.Name &amp;amp; '(' &amp;amp; CStr(actualShipID) &amp;amp; ') hat bereits einen vollen Warpkern. Füllung beträgt: ' &lt;br /&gt;
    &amp;amp; CStr(actualShip.Warpkern));&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ich hoffe, dass ganze hat ein wenig geholfen, zu zeigen, wie ganze Flotten zu bearbeiten sind.&lt;br /&gt;
Was man verbessern könnte wäre zum Beispiel: &lt;br /&gt;
*Prüfen, ob die Station genug Waren hat, ansonsten das Script abrechen&lt;br /&gt;
*Eine schönere Ausgabe&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Wer fragen hat, der komme doch bitte in den IRC-Channel #scripting und stelle sie dort, ich bin meist anwesend.&lt;br /&gt;
&lt;br /&gt;
MFG Stryke&lt;/div&gt;</summary>
		<author><name>Stryke</name></author>	</entry>

	<entry>
		<id>https://wiki.stne.net/index.php?title=Scripting:Flotten</id>
		<title>Scripting:Flotten</title>
		<link rel="alternate" type="text/html" href="https://wiki.stne.net/index.php?title=Scripting:Flotten"/>
				<updated>2006-07-27T21:58:02Z</updated>
		
		<summary type="html">&lt;p&gt;Stryke: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Scriptingmenue}}&lt;br /&gt;
Da im IRC vermehrt gefragt wurde wie ganze Flotten bearbeitet (WK füllen, bemannen, etc...) werden können, habe ich mir mal die Mühe gemacht und ein kleines Tutorial geschrieben. Ich setze die Kenntnis des [[Scripting:Anfängerkurs|Anfängerkurs]]es voraus.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Der Code ist in kleine Schnipsel zerteilt, damit ich in besser erklären kann. Am Ende ist er nocheinmal in kompletter Fassung, sodass Fehler beim zusammenkopieren vermieden werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Zu beginn benötigen wir eine Schleife, mit welcher wir die einzelnen Schiffe der Flotte anwählen können.&lt;br /&gt;
An dieser Stelle biete sich eine FOR (EACH var IN Array) an.&lt;br /&gt;
*var ist das aktuelle Schiff&lt;br /&gt;
*Array die Liste der Schiffe&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
VAR fleetID AS Integer = id der Flotte;&lt;br /&gt;
VAR fleet AS CMyFlotte(fleetID);&lt;br /&gt;
VAR actualShip AS CMyShip;&lt;br /&gt;
VAR actualShipID AS integer;&lt;br /&gt;
FOR (EACH actualShip IN fleet.Ships){&lt;br /&gt;
  actualShipID = actualShip.ID;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das einzige was angegeben werden muss, ist die ID der Flotte.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Damit haben wir unseren Rahmen, mit dem wir die gesamte Flotte durchgehen können. Über die ermittelte ID ist es nun möglich Aktionen z.B. beamen durchzuführen.&lt;br /&gt;
&lt;br /&gt;
Als Beispiel wollen wir die [[Schiffs-Warpkern|Warpkerne]] der Schiffe füllen. Ich gehe davon aus, dass eine Station zur Verfügung steht, auf der die Waren lagern.&lt;br /&gt;
&lt;br /&gt;
Hierzu legen wir zuerst fest, von welcher Basis die Rohstoffe geholt werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;VAR BaseID AS Integer = id der Basis;&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Anschließend prüfen wir, ob der WK überhaupt leer ist. Hierzu nutzen wir eine einfache Mathematische Lösung.&lt;br /&gt;
&lt;br /&gt;
2 [[Antimaterie]] + 2 [[Deuterium]] + 1 [[Dilithium]] ergeben 50 WK-Füllung&lt;br /&gt;
&lt;br /&gt;
Wenn wir also die vorhanden Füllung von 1000 abziehen (wir wollen schließlich wissen, wieviel reinmuss), durch 50 teilen und abrunden, so erhalten wir die Zahl der benötigten Einzelfüllungen.&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;menge = CInt((1000-actualShip.Warpkern)/50);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
das CInt(); sorgt dafür, das wir nur ganze Zahlen bekommen.&lt;br /&gt;
Nun wissen wir wieviele WK-Füllungen wir also benötigen, damit das Schiff möglichst voll betankt ist.&lt;br /&gt;
Nun prüfen wir zunächst, ob die Anzahl der Füllungen gleich 0 ist, um Fehler zu vermeiden.&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;IF (menge &amp;gt; 0) {&lt;br /&gt;
&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Wenn diese Hürde genommen ist, können wir mit dem eigentlichen Vorgang des Betankens fortfahren.&lt;br /&gt;
Damit wir beamen und An-/Abdocken können, müssen wir dem ShipManager sagen mit welchem Schiff er arbeiten soll.&lt;br /&gt;
&lt;br /&gt;
Dies geschieht über&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;ShipManager.BenutzeSchiff(actualShipID);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
nun können wir an die bereits definierte Basis andocken.&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;ShipManager.AndockenAn(BaseID);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
die Waren in den entsprechenden Mengen rübertransportieren&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;ShipManager.TransferiereVonSchiff(BaseID, menge * 2, EBeamRessource.Deuterium);&lt;br /&gt;
ShipManager.TransferiereVonSchiff(BaseID, menge * 2, EBeamRessource.Antimaterie);&lt;br /&gt;
ShipManager.TransferiereVonSchiff(BaseID, menge, EBeamRessource.Dilithium);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
und den Warpkern nachfüllen&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;ShipManager.WarpkernNachfüllen(menge);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Wieder abdocken&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;ShipManager.Abdocken();&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Und schon ist das Schiff fertig betankt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nun können wir noch eine Schöne Ausgabe machen, für den Fall, dass das Schiff bereits einen vollen WK hat. Hierfür müssen wir nur einen else-Zweig in die Abfrage einbauen&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;else {&lt;br /&gt;
  wirtline('Schiff ' &amp;amp; actualShip.Name &amp;amp; '(' &amp;amp; CStr(actualShipID) &amp;amp; ') hat bereits einen vollen Warpkern. Füllung beträgt: ' &amp;amp; CStr(actualShip.Warpkern));&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Wie angekündigt hier einmal der komplette Quellcode, inkl, einiger kurzen Kommentaren.&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
//Variablen festlegen&lt;br /&gt;
VAR fleetID AS Integer = &amp;lt;id der Flotte&amp;gt;; //Flotte die abgearbeitet werden soll&lt;br /&gt;
VAR BaseID AS Integer = &amp;lt;id der Basis&amp;gt;;  //Basis, auf der die Ressourcen Lagern&lt;br /&gt;
VAR fleet AS CMyFlotte(fleetID);&lt;br /&gt;
VAR actualShip AS CMyShip;&lt;br /&gt;
VAR actualShipID AS integer;&lt;br /&gt;
VAR menge AS Integer;&lt;br /&gt;
FOR (EACH actualShip IN fleet.Ships){ //Schleife zum durchlaufen aller Schiffe der Flotte&lt;br /&gt;
  actualShipID = actualShip.ID;  //ID des Schiffes Auslesen&lt;br /&gt;
  menge = CInt((1000-actualShip.Warpkern)/50); //Warpkernfüllung ermitteln&lt;br /&gt;
  IF (menge &amp;gt; 0) {  //Prüfen, ob der Warpkern noch zu füllen ist&lt;br /&gt;
    ShipManager.AndockenAn(BaseID);&lt;br /&gt;
    ShipManager.TransferiereVonSchiff(BaseID, menge * 2, EBeamRessource.Deuterium);&lt;br /&gt;
    ShipManager.TransferiereVonSchiff(BaseID, menge * 2, EBeamRessource.Antimaterie);&lt;br /&gt;
    ShipManager.TransferiereVonSchiff(BaseID, menge, EBeamRessource.Dilithium);&lt;br /&gt;
    ShipManager.WarpkernNachfüllen(menge);&lt;br /&gt;
    ShipManager.Abdocken();&lt;br /&gt;
  }&lt;br /&gt;
  else { //Fehlermeldung, falls das Schiff vollen WK hat&lt;br /&gt;
    wirtline('Schiff ' &amp;amp; actualShip.Name &amp;amp; '(' &amp;amp; CStr(actualShipID) &amp;amp; ') hat bereits einen vollen Warpkern. Füllung beträgt: ' &lt;br /&gt;
    &amp;amp; CStr(actualShip.Warpkern));&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ich hoffe, dass ganze hat ein wenig geholfen, zu zeigen, wie ganze Flotten zu bearbeiten sind.&lt;br /&gt;
Was man verbessern könnte wäre zum Beispiel: &lt;br /&gt;
*Prüfen, ob die Station genug Waren hat, ansonsten das Script abrechen&lt;br /&gt;
*Eine schönere Ausgabe&lt;br /&gt;
&lt;br /&gt;
Wer fragen hat, der komme doch bitte in den IRC-Channel #scripting und stelle sie dort, ich bin meist anwesend.&lt;br /&gt;
&lt;br /&gt;
MFG Stryke&lt;/div&gt;</summary>
		<author><name>Stryke</name></author>	</entry>

	<entry>
		<id>https://wiki.stne.net/index.php?title=Scripting:Flotten</id>
		<title>Scripting:Flotten</title>
		<link rel="alternate" type="text/html" href="https://wiki.stne.net/index.php?title=Scripting:Flotten"/>
				<updated>2006-07-27T21:45:58Z</updated>
		
		<summary type="html">&lt;p&gt;Stryke: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Scriptingmenue}}&lt;br /&gt;
Da im IRC vermehrt gefragt wurde wie ganze Flotten bearbeitet (WK füllen, bemannen, etc...) werden können, habe ich mir mal die Mühe gemacht und ein kleines Tutorial geschrieben. Ich setze die Kenntnis des [[Scripting:Anfängerkurs]]es voraus.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Der Code ist in kleine Schnipsel zerteilt, damit ich in besser erklären kann. Am Ende ist er nocheinmal in kompletter Fassung, sodass Fehler beim zusammenkopieren vermieden werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Zu beginn benötigen wir eine Schleife, mit welcher wir die einzelnen Schiffe der Flotte anwählen können.&lt;br /&gt;
An dieser Stelle biete sich eine FOR (EACH var IN Array) an.&lt;br /&gt;
*var ist das aktuelle Schiff&lt;br /&gt;
*Array die Liste der Schiffe&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
VAR fleetID AS Integer = id der Flotte;&lt;br /&gt;
VAR fleet AS CMyFlotte(fleetID);&lt;br /&gt;
VAR actualShip AS CMyShip;&lt;br /&gt;
VAR actualShipID AS integer;&lt;br /&gt;
FOR (EACH actualShip IN fleet.Ships){&lt;br /&gt;
  actualShipID = actualShip.ID;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das einzige was angegeben werden muss, ist die ID der Flotte.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Damit haben wir unseren Rahmen, mit dem wir die gesamte Flotte durchgehen können. Über die ermittelte ID ist es nun möglich Aktionen z.B. beamen durchzuführen.&lt;br /&gt;
&lt;br /&gt;
Als Beispiel wollen wir die Warpkerne der Schiffe füllen. Ich gehe davon aus, dass eine Station zur Verfügung steht, auf der die Waren lagern.&lt;br /&gt;
&lt;br /&gt;
Hierzu legen wir zuerst fest, von welcher Basis die Rohstoffe geholt werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;VAR BaseID AS Integer = id der Basis;&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Anschließend prüfen wir, ob der WK überhaupt leer ist. Hierzu nutzen wir eine einfache Mathematische Lösung.&lt;br /&gt;
2 Antimaterie + 2 Deuterium + 1 Dilithium ergeben 50 WK-Füllung&lt;br /&gt;
Wenn wir also die vorhanden Füllung von 1000 abziehen (wir wollen schließlich wissen, wieviel reinmuss), durch 50 teilen und abrunden, so erhalten wir die Zahl der benötigten Einzelfüllungen.&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;menge = CInt((1000-actualShip.Warpkern)/50);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
das CInt(); sorgt dafür, das wir nur ganze Zahlen bekommen.&lt;br /&gt;
Nun wissen wir wieviele WK-Füllungen wir also benötigen, damit das Schiff möglichst voll betankt ist.&lt;br /&gt;
Nun prüfen wir zunächst, ob die Anzahl der Füllungen gleich 0 ist, um Fehler zu vermeiden.&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;IF (menge &amp;gt; 0) {&lt;br /&gt;
&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Wenn diese Hürde genommen ist, können wir mit dem eigentlichen Vorgang des Betankens fortfahren.&lt;br /&gt;
Damit wir beamen und An-/Abdocken können, müssen wir dem ShipManager sagen mit welchem Schiff er arbeiten soll.&lt;br /&gt;
&lt;br /&gt;
Dies geschieht über&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;ShipManager.BenutzeSchiff(actualShipID);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
nun können wir an die bereits definierte Basis andocken.&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;ShipManager.AndockenAn(BaseID);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
die Waren in den entsprechenden Mengen rübertransportieren&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;ShipManager.TransferiereVonSchiff(BaseID, menge * 2, EBeamRessource.Deuterium);&lt;br /&gt;
ShipManager.TransferiereVonSchiff(BaseID, menge * 2, EBeamRessource.Antimaterie);&lt;br /&gt;
ShipManager.TransferiereVonSchiff(BaseID, menge, EBeamRessource.Dilithium);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
und den Warpkern nachfüllen&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;ShipManager.WarpkernNachfüllen(menge);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Wieder abdocken&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;ShipManager.Abdocken();&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Und schon ist das Schiff fertig betankt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nun können wir noch eine Schöne Ausgabe machen, für den Fall, dass das Schiff bereits einen vollen WK hat. Hierfür müssen wir nur einen else-Zweig in die Abfrage einbauen&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;else {&lt;br /&gt;
  wirtline('Schiff ' &amp;amp; actualShip.Name &amp;amp; '(' &amp;amp; CStr(actualShipID) &amp;amp; ') hat bereits einen vollen Warpkern. Füllung beträgt: ' &amp;amp; CStr(actualShip.Warpkern));&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Wie angekündigt hier einmal der komplette Quellcode, inkl, einiger kurzen Kommentaren.&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
//Variablen festlegen&lt;br /&gt;
VAR fleetID AS Integer = &amp;lt;id der Flotte&amp;gt;; //Flotte die abgearbeitet werden soll&lt;br /&gt;
VAR BaseID AS Integer = &amp;lt;id der Basis&amp;gt;;  //Basis, auf der die Ressourcen Lagern&lt;br /&gt;
VAR fleet AS CMyFlotte(fleetID);&lt;br /&gt;
VAR actualShip AS CMyShip;&lt;br /&gt;
VAR actualShipID AS integer;&lt;br /&gt;
VAR menge AS Integer;&lt;br /&gt;
FOR (EACH actualShip IN fleet.Ships){ //Schleife zum durchlaufen aller Schiffe der Flotte&lt;br /&gt;
  actualShipID = actualShip.ID;  //ID des Schiffes Auslesen&lt;br /&gt;
  menge = CInt((1000-actualShip.Warpkern)/50); //Warpkernfüllung ermitteln&lt;br /&gt;
  IF (menge &amp;gt; 0) {  //Prüfen, ob der Warpkern noch zu füllen ist&lt;br /&gt;
    ShipManager.AndockenAn(BaseID);&lt;br /&gt;
    ShipManager.TransferiereVonSchiff(BaseID, menge * 2, EBeamRessource.Deuterium);&lt;br /&gt;
    ShipManager.TransferiereVonSchiff(BaseID, menge * 2, EBeamRessource.Antimaterie);&lt;br /&gt;
    ShipManager.TransferiereVonSchiff(BaseID, menge, EBeamRessource.Dilithium);&lt;br /&gt;
    ShipManager.WarpkernNachfüllen(menge);&lt;br /&gt;
    ShipManager.Abdocken();&lt;br /&gt;
  }&lt;br /&gt;
  else { //Fehlermeldung, falls das Schiff vollen WK hat&lt;br /&gt;
    wirtline('Schiff ' &amp;amp; actualShip.Name &amp;amp; '(' &amp;amp; CStr(actualShipID) &amp;amp; ') hat bereits einen vollen Warpkern. Füllung beträgt: ' &lt;br /&gt;
    &amp;amp; CStr(actualShip.Warpkern));&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ich hoffe, dass ganze hat ein wenig geholfen, zu zeigen, wie ganze Flotten zu bearbeiten sind.&lt;br /&gt;
Was man verbessern könnte wäre zum Beispiel: &lt;br /&gt;
*Prüfen, ob die Station genug Waren hat, ansonsten das Script abrechen&lt;br /&gt;
*Eine schönere Ausgabe&lt;br /&gt;
&lt;br /&gt;
MFG Stryke&lt;/div&gt;</summary>
		<author><name>Stryke</name></author>	</entry>

	<entry>
		<id>https://wiki.stne.net/index.php?title=Scripting:Flotten</id>
		<title>Scripting:Flotten</title>
		<link rel="alternate" type="text/html" href="https://wiki.stne.net/index.php?title=Scripting:Flotten"/>
				<updated>2006-07-27T21:44:46Z</updated>
		
		<summary type="html">&lt;p&gt;Stryke: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Da im IRC vermehrt gefragt wurde wie ganze Flotten bearbeitet (WK füllen, bemannen, etc...) werden können, habe ich mir mal die Mühe gemacht und ein kleines Tutorial geschrieben. Ich setze die Kenntnis des [[Scripting:Anfängerkurs]]es voraus.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Der Code ist in kleine Schnipsel zerteilt, damit ich in besser erklären kann. Am Ende ist er nocheinmal in kompletter Fassung, sodass Fehler beim zusammenkopieren vermieden werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Zu beginn benötigen wir eine Schleife, mit welcher wir die einzelnen Schiffe der Flotte anwählen können.&lt;br /&gt;
An dieser Stelle biete sich eine FOR (EACH var IN Array) an.&lt;br /&gt;
*var ist das aktuelle Schiff&lt;br /&gt;
*Array die Liste der Schiffe&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
VAR fleetID AS Integer = id der Flotte;&lt;br /&gt;
VAR fleet AS CMyFlotte(fleetID);&lt;br /&gt;
VAR actualShip AS CMyShip;&lt;br /&gt;
VAR actualShipID AS integer;&lt;br /&gt;
FOR (EACH actualShip IN fleet.Ships){&lt;br /&gt;
  actualShipID = actualShip.ID;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das einzige was angegeben werden muss, ist die ID der Flotte.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Damit haben wir unseren Rahmen, mit dem wir die gesamte Flotte durchgehen können. Über die ermittelte ID ist es nun möglich Aktionen z.B. beamen durchzuführen.&lt;br /&gt;
&lt;br /&gt;
Als Beispiel wollen wir die Warpkerne der Schiffe füllen. Ich gehe davon aus, dass eine Station zur Verfügung steht, auf der die Waren lagern.&lt;br /&gt;
&lt;br /&gt;
Hierzu legen wir zuerst fest, von welcher Basis die Rohstoffe geholt werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;VAR BaseID AS Integer = id der Basis;&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Anschließend prüfen wir, ob der WK überhaupt leer ist. Hierzu nutzen wir eine einfache Mathematische Lösung.&lt;br /&gt;
2 Antimaterie + 2 Deuterium + 1 Dilithium ergeben 50 WK-Füllung&lt;br /&gt;
Wenn wir also die vorhanden Füllung von 1000 abziehen (wir wollen schließlich wissen, wieviel reinmuss), durch 50 teilen und abrunden, so erhalten wir die Zahl der benötigten Einzelfüllungen.&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;menge = CInt((1000-actualShip.Warpkern)/50);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
das CInt(); sorgt dafür, das wir nur ganze Zahlen bekommen.&lt;br /&gt;
Nun wissen wir wieviele WK-Füllungen wir also benötigen, damit das Schiff möglichst voll betankt ist.&lt;br /&gt;
Nun prüfen wir zunächst, ob die Anzahl der Füllungen gleich 0 ist, um Fehler zu vermeiden.&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;IF (menge &amp;gt; 0) {&lt;br /&gt;
&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Wenn diese Hürde genommen ist, können wir mit dem eigentlichen Vorgang des Betankens fortfahren.&lt;br /&gt;
Damit wir beamen und An-/Abdocken können, müssen wir dem ShipManager sagen mit welchem Schiff er arbeiten soll.&lt;br /&gt;
&lt;br /&gt;
Dies geschieht über&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;ShipManager.BenutzeSchiff(actualShipID);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
nun können wir an die bereits definierte Basis andocken.&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;ShipManager.AndockenAn(BaseID);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
die Waren in den entsprechenden Mengen rübertransportieren&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;ShipManager.TransferiereVonSchiff(BaseID, menge * 2, EBeamRessource.Deuterium);&lt;br /&gt;
ShipManager.TransferiereVonSchiff(BaseID, menge * 2, EBeamRessource.Antimaterie);&lt;br /&gt;
ShipManager.TransferiereVonSchiff(BaseID, menge, EBeamRessource.Dilithium);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
und den Warpkern nachfüllen&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;ShipManager.WarpkernNachfüllen(menge);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Wieder abdocken&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;ShipManager.Abdocken();&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Und schon ist das Schiff fertig betankt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nun können wir noch eine Schöne Ausgabe machen, für den Fall, dass das Schiff bereits einen vollen WK hat. Hierfür müssen wir nur einen else-Zweig in die Abfrage einbauen&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;else {&lt;br /&gt;
  wirtline('Schiff ' &amp;amp; actualShip.Name &amp;amp; '(' &amp;amp; CStr(actualShipID) &amp;amp; ') hat bereits einen vollen Warpkern. Füllung beträgt: ' &amp;amp; CStr(actualShip.Warpkern));&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Wie angekündigt hier einmal der komplette Quellcode, inkl, einiger kurzen Kommentaren.&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
//Variablen festlegen&lt;br /&gt;
VAR fleetID AS Integer = &amp;lt;id der Flotte&amp;gt;; //Flotte die abgearbeitet werden soll&lt;br /&gt;
VAR BaseID AS Integer = &amp;lt;id der Basis&amp;gt;;  //Basis, auf der die Ressourcen Lagern&lt;br /&gt;
VAR fleet AS CMyFlotte(fleetID);&lt;br /&gt;
VAR actualShip AS CMyShip;&lt;br /&gt;
VAR actualShipID AS integer;&lt;br /&gt;
VAR menge AS Integer;&lt;br /&gt;
FOR (EACH actualShip IN fleet.Ships){ //Schleife zum durchlaufen aller Schiffe der Flotte&lt;br /&gt;
  actualShipID = actualShip.ID;  //ID des Schiffes Auslesen&lt;br /&gt;
  menge = CInt((1000-actualShip.Warpkern)/50); //Warpkernfüllung ermitteln&lt;br /&gt;
  IF (menge &amp;gt; 0) {  //Prüfen, ob der Warpkern noch zu füllen ist&lt;br /&gt;
    ShipManager.AndockenAn(BaseID);&lt;br /&gt;
    ShipManager.TransferiereVonSchiff(BaseID, menge * 2, EBeamRessource.Deuterium);&lt;br /&gt;
    ShipManager.TransferiereVonSchiff(BaseID, menge * 2, EBeamRessource.Antimaterie);&lt;br /&gt;
    ShipManager.TransferiereVonSchiff(BaseID, menge, EBeamRessource.Dilithium);&lt;br /&gt;
    ShipManager.WarpkernNachfüllen(menge);&lt;br /&gt;
    ShipManager.Abdocken();&lt;br /&gt;
  }&lt;br /&gt;
  else { //Fehlermeldung, falls das Schiff vollen WK hat&lt;br /&gt;
    wirtline('Schiff ' &amp;amp; actualShip.Name &amp;amp; '(' &amp;amp; CStr(actualShipID) &amp;amp; ') hat bereits einen vollen Warpkern. Füllung beträgt: ' &lt;br /&gt;
    &amp;amp; CStr(actualShip.Warpkern));&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ich hoffe, dass ganze hat ein wenig geholfen, zu zeigen, wie ganze Flotten zu bearbeiten sind.&lt;br /&gt;
Was man verbessern könnte wäre zum Beispiel: &lt;br /&gt;
*Prüfen, ob die Station genug Waren hat, ansonsten das Script abrechen&lt;br /&gt;
*Eine schönere Ausgabe&lt;br /&gt;
&lt;br /&gt;
MFG Stryke&lt;/div&gt;</summary>
		<author><name>Stryke</name></author>	</entry>

	<entry>
		<id>https://wiki.stne.net/index.php?title=Scripting:Flotten</id>
		<title>Scripting:Flotten</title>
		<link rel="alternate" type="text/html" href="https://wiki.stne.net/index.php?title=Scripting:Flotten"/>
				<updated>2006-07-27T21:41:30Z</updated>
		
		<summary type="html">&lt;p&gt;Stryke: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Da im IRC vermehrt gefragt wurde wie ganze Flotten bearbeitet (WK füllen, bemannen, etc...) werden können, habe ich mir mal die Mühe gemacht und ein kleines Tutorial geschrieben. Ich setze die Kenntnis des [[Scripting:Anfängerkurs]]es voraus.&lt;br /&gt;
&lt;br /&gt;
Der Code ist in kleine Schnipsel zerteilt, damit ich in besser erklären kann. Am Ende ist er nocheinmal in kompletter Fassung, sodass Fehler beim zusammenkopieren vermieden werden.&lt;br /&gt;
&lt;br /&gt;
Zu beginn benötigen wir eine Schleife, mit welcher wir die einzelnen Schiffe der Flotte anwählen können.&lt;br /&gt;
An dieser Stelle biete sich eine FOR (EACH var IN Array) an.&lt;br /&gt;
var ist das aktuelle Schiff&lt;br /&gt;
Array die Liste der Schiffe&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
VAR fleetID AS Integer = id der Flotte;&lt;br /&gt;
VAR fleet AS CMyFlotte(fleetID);&lt;br /&gt;
VAR actualShip AS CMyShip;&lt;br /&gt;
VAR actualShipID AS integer;&lt;br /&gt;
FOR (EACH actualShip IN fleet.Ships){&lt;br /&gt;
  actualShipID = actualShip.ID;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Das einzige was angegeben werden muss, ist die ID der Flotte.&lt;br /&gt;
&lt;br /&gt;
Damit haben wir unseren Rahmen, mit dem wir die gesamte Flotte durchgehen können. Über die ermittelte ID ist es nun möglich Aktionen z.B. beamen durchzuführen.&lt;br /&gt;
&lt;br /&gt;
Als Beispiel wollen wir die Warpkerne der Schiffe füllen. Ich gehe davon aus, dass eine Station zur Verfügung steht, auf der die Waren lagern.&lt;br /&gt;
&lt;br /&gt;
Hierzu legen wir zuerst fest, von welcher Basis die Rohstoffe geholt werden:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;VAR BaseID AS Integer = id der Basis;&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Anschließend prüfen wir, ob der WK überhaupt leer ist. Hierzu nutzen wir eine einfache Mathematische Lösung.&lt;br /&gt;
2 Antimaterie + 2 Deuterium + 1 Dilithium ergeben 50 WK-Füllung&lt;br /&gt;
Wenn wir also die vorhanden Füllung von 1000 abziehen (wir wollen schließlich wissen, wieviel reinmuss), durch 50 teilen und abrunden, so erhalten wir die Zahl der benötigten Einzelfüllungen.&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;menge = CInt((1000-actualShip.Warpkern)/50);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
das CInt(); sorgt dafür, das wir nur ganze Zahlen bekommen.&lt;br /&gt;
Nun wissen wir wieviele WK-Füllungen wir also benötigen, damit das Schiff möglichst voll betankt ist.&lt;br /&gt;
Nun prüfen wir zunächst, ob die Anzahl der Füllungen gleich 0 ist, um Fehler zu vermeiden.&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;IF (menge &amp;gt; 0) {&lt;br /&gt;
&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wenn diese Hürde genommen ist, können wir mit dem eigentlichen Vorgang des Betankens fortfahren.&lt;br /&gt;
Damit wir beamen und An-/Abdocken können, müssen wir dem ShipManager sagen mit welchem Schiff er arbeiten soll.&lt;br /&gt;
Dies geschieht über&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;ShipManager.BenutzeSchiff(actualShipID);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
nun können wir an die bereits definierte Basis andocken.&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;ShipManager.AndockenAn(BaseID);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
die Waren in den entsprechenden Mengen rübertransportieren&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;ShipManager.TransferiereVonSchiff(BaseID, menge * 2, EBeamRessource.Deuterium);&lt;br /&gt;
ShipManager.TransferiereVonSchiff(BaseID, menge * 2, EBeamRessource.Antimaterie);&lt;br /&gt;
ShipManager.TransferiereVonSchiff(BaseID, menge, EBeamRessource.Dilithium);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
und den Warpkern nachfüllen&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;ShipManager.WarpkernNachfüllen(menge);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Wieder abdocken&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;ShipManager.Abdocken();&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Und schon ist das Schiff fertig betankt.&lt;br /&gt;
&lt;br /&gt;
Nun können wir noch eine Schöne Ausgabe machen, für den Fall, dass das Schiff bereits einen vollen WK hat. Hierfür müssen wir nur einen else-Zweig in die Abfrage einbauen&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;else {&lt;br /&gt;
  wirtline('Schiff ' &amp;amp; actualShip.Name &amp;amp; '(' &amp;amp; CStr(actualShipID) &amp;amp; ') hat bereits einen vollen Warpkern. Füllung beträgt: ' &amp;amp; CStr(actualShip.Warpkern));&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wie angekündigt hier einmal der komplette Quellcode, inkl, einiger kurzen Kommentaren.&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
//Variablen festlegen&lt;br /&gt;
VAR fleetID AS Integer = &amp;lt;id der Flotte&amp;gt;; //Flotte die abgearbeitet werden soll&lt;br /&gt;
VAR BaseID AS Integer = &amp;lt;id der Basis&amp;gt;;  //Basis, auf der die Ressourcen Lagern&lt;br /&gt;
VAR fleet AS CMyFlotte(fleetID);&lt;br /&gt;
VAR actualShip AS CMyShip;&lt;br /&gt;
VAR actualShipID AS integer;&lt;br /&gt;
VAR menge AS Integer;&lt;br /&gt;
FOR (EACH actualShip IN fleet.Ships){ //Schleife zum durchlaufen aller Schiffe der Flotte&lt;br /&gt;
  actualShipID = actualShip.ID;  //ID des Schiffes Auslesen&lt;br /&gt;
  menge = CInt((1000-actualShip.Warpkern)/50); //Warpkernfüllung ermitteln&lt;br /&gt;
  IF (menge &amp;gt; 0) {  //Prüfen, ob der Warpkern noch zu füllen ist&lt;br /&gt;
    ShipManager.AndockenAn(BaseID);&lt;br /&gt;
    ShipManager.TransferiereVonSchiff(BaseID, menge * 2, EBeamRessource.Deuterium);&lt;br /&gt;
    ShipManager.TransferiereVonSchiff(BaseID, menge * 2, EBeamRessource.Antimaterie);&lt;br /&gt;
    ShipManager.TransferiereVonSchiff(BaseID, menge, EBeamRessource.Dilithium);&lt;br /&gt;
    ShipManager.WarpkernNachfüllen(menge);&lt;br /&gt;
    ShipManager.Abdocken();&lt;br /&gt;
  }&lt;br /&gt;
  else { //Fehlermeldung, falls das Schiff vollen WK hat&lt;br /&gt;
    wirtline('Schiff ' &amp;amp; actualShip.Name &amp;amp; '(' &amp;amp; CStr(actualShipID) &amp;amp; ') hat bereits einen vollen Warpkern. Füllung beträgt: ' &lt;br /&gt;
    &amp;amp; CStr(actualShip.Warpkern));&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ich hoffe, dass ganze hat ein wenig geholfen, zu zeigen, wie ganze Flotten zu bearbeiten sind.&lt;br /&gt;
Was man verbessern könnte wäre zum Beispiel: &lt;br /&gt;
*Prüfen, ob die Station genug Waren hat, ansonsten das Script abrechen&lt;br /&gt;
*Eine schönere Ausgabe&lt;br /&gt;
&lt;br /&gt;
MFG Stryke&lt;/div&gt;</summary>
		<author><name>Stryke</name></author>	</entry>

	<entry>
		<id>https://wiki.stne.net/index.php?title=Scripting:Anf%C3%A4ngerkurs</id>
		<title>Scripting:Anfängerkurs</title>
		<link rel="alternate" type="text/html" href="https://wiki.stne.net/index.php?title=Scripting:Anf%C3%A4ngerkurs"/>
				<updated>2006-06-16T15:43:34Z</updated>
		
		<summary type="html">&lt;p&gt;Stryke: /* Autoren */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Scriptingmenue}}&lt;br /&gt;
'''Hier wird in nächster Zeit ein Anfängerkurs für die STNE-Scriptengine entstehen. Wer mithelfen will oder bereits jetzt fragen hat kann sich vertrauensvoll an uns wenden, einfach im irc den channel #scripting joinen!'''&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
==Vorwort==&lt;br /&gt;
Dieser Kurs richtet sich vor allem an diejenigen, die zuvor noch nie mit Programmierung zu tun hatten und trotzdem gerne Scripts für STNE schreiben würden. Die sollen hier auf möglichst einfache Weise einen Einstieg finden. &lt;br /&gt;
Aber bitte erwartet keine Wunder, niemand der keine Ahnung vom Programieren hat, kann dies über Nacht lernen. Daher ist insbesondere eine Sache von enormer Wichtigkeit: Geduld – denn nur wer mit Geduld die Sachen angeht wird letzten Endes mit einem funktionieren Script belohnt. Wer die schnellen Erfolge sucht, der sollte es gleich lassen.&lt;br /&gt;
Wir wünschen allen viel Spaß und gutes Gelingen.&lt;br /&gt;
==Kapitel 1 - Strings==&lt;br /&gt;
===String? - Kann man das essen?===&lt;br /&gt;
'''Nein''', ein String (englisch) oder eine Zeichenkette, ist eine Folge von Zeichen (z.B. Buchstaben, Ziffern, Sonderzeichen, und Steuerzeichen) aus einem definierten Zeichensatz.&lt;br /&gt;
&lt;br /&gt;
Nun wissen wir also, was dieser ominöse String überhaupt ist. Wenden wir uns nun zur Ausgabe von Strings!&lt;br /&gt;
&lt;br /&gt;
=== Ausgabe von Strings ===&lt;br /&gt;
In diesem Kapitel werden wir uns der einfachen Ausgabe von Strings zuwenden. Um einen String auszugeben, müssen wir uns natürlich erst einmal überlegen was wir überhaupt ausgeben wollen. Nehmen wir als Beispiel einfach ''&amp;quot;Hallo!&amp;quot;''. Als Nächstes müssen wir wissen wie wir der Engine sagen, dass sie etwas ausgeben soll! Dies geschieht mit dem Befehl ''writeline();''.&lt;br /&gt;
&lt;br /&gt;
Hier ein kleines Beispiel:&lt;br /&gt;
&amp;lt;pre&amp;gt;writeline('Hallo!');&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In den Klammern steht immer der String, der ausgegeben werden soll. Die einfachen Anführungszeichen sagen dem Befehl, dass das Nachfolgende ein String und keine Variable ist (Was eine Variable ist erfahren wir im nächsten Kapitel). Das Semikolon signalisiert der Engine, dass der Befehl hier endet, dies wird nicht bei jedem Befehl benötigt.&lt;br /&gt;
&lt;br /&gt;
Wenn man sich mehrere Strings nach einander ausgeben möchte, ist es natürlich unsinnig, für jedes Wort einen neuen ''writeline();'' Befehl auszuführen. Also kann man Strings an einander reihen. Hierzu setzt man einfach ein ''&amp;amp;''-Zeichen zwischen die Strings. Natürlich kann man auch die jeweiligen Strings einfach, wie wir noch später lernen durch Variablen ersetzen.&lt;br /&gt;
&amp;lt;pre&amp;gt;writeline('Hallo!' &amp;amp; ' Wie geht es?');&amp;lt;/pre&amp;gt;&lt;br /&gt;
Wichtig hierbei ist, dass das ''&amp;amp;''-Zeichen kein Leerzeichen einfügt. Dies muss manuell innerhalb des Strings passieren.&lt;br /&gt;
&lt;br /&gt;
===Zusammenfassung: Strings===&lt;br /&gt;
&lt;br /&gt;
* Ein String ist eine Folge von verschiedenen Zeichen.&lt;br /&gt;
* Zum Ausgeben von Strings wird ''writeline();'' verwendet.&lt;br /&gt;
* Es ist möglich mehrere Strings bzw. Variablen mit Hilfe des ''&amp;amp;''-Zeichens innerhalb des Befehls ''writeline();'' regelrecht anzuhängen.&lt;br /&gt;
&lt;br /&gt;
==Kapitel 2 - Variablen==&lt;br /&gt;
===Variablen? - Schon wieder was zum futtern?===&lt;br /&gt;
'''Nein''', lediglich ein weiterer Fachbegriff der Programmierer. Variablen sind eine Art von Platzhalter, in denen man Informationen, wie zum Beispiel Strings, für eine spätere Verwendung abspeichern kann. Natürlich gibt es für verschiedene Informationen ganz spezielle und verschiedene Variablentypen, die man auch [[Scripting:Datentypen|Datentypen]] nennt.&lt;br /&gt;
&lt;br /&gt;
Die wichtigsten [[Scripting:Datentypen|Datentypen]] sind:&lt;br /&gt;
* String  - &lt;br /&gt;
* Integer -&lt;br /&gt;
* Boolean -&lt;br /&gt;
&lt;br /&gt;
===Variablen setzen===&lt;br /&gt;
Da das Arbeiten mit statischen Daten auf Dauer, vor allem bei längeren Scripten, ziemlich zeitaufwendig und unflexibel ist, verwendet man Variablen. Diese speichern Daten, geben sie auf Wunsch aus und lassen sich auch belibig oft verändern.&lt;br /&gt;
&lt;br /&gt;
Um eine Variable zu erschaffen verwendet man den Befehl ''var''. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
ach ''var'' kommt dann der Variablen Name, dieser darf Zahlen und Buchstaben enthalten. Zahlen allerdings nur mit einer Ausnahme, sie dürfen nicht an erster Stelle stehen. optional danach kann ein as stehen (as, engl., als) dieses gibt an was für einen Inhalt die Variable hat, zb. str für string also eine Zeichenkette. Hier ein Beispiel:&lt;br /&gt;
&amp;lt;pre&amp;gt;var i1 as str&amp;lt;/pre&amp;gt;&lt;br /&gt;
Um einer Variable einen Inhalt zuzuordnen setzt man die Variable vor ein Gleichheitszeichen, dahinter kommt dann der Inhalt in unserem nächsten Beispiel ein String.&lt;br /&gt;
&amp;lt;pre&amp;gt;var test as str&lt;br /&gt;
test = 'Hallo!'&amp;lt;/pre&amp;gt;&lt;br /&gt;
man kann das ganze auch in eine Zeile packen, das sieht dann wie folgt aus:&lt;br /&gt;
&amp;lt;pre&amp;gt;var test as str = 'Hallo!'&amp;lt;/pre&amp;gt;&lt;br /&gt;
Auch hier sehen wir wieder die einfachen Anführungszeichen als Kennzeichen für einen String. Wir können Variablen aber auch andere Werte wie Integer oder Bolean zuweisen. Dazu einfach str durch den jewaligen Typ ersetzten.(Liste der Typen: [[Scripting:Typen|klick mich]])&lt;br /&gt;
&lt;br /&gt;
Auch kann man die Variable &amp;quot;leeren&amp;quot; hirzu gibt man ihr einfach nichts mit, hier auch dazu ein Beispiel:&lt;br /&gt;
&amp;lt;pre&amp;gt;var test as str = 'Hallo!'&lt;br /&gt;
test = ''&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Anwendungsbeispiele mit Variablen===&lt;br /&gt;
 var test as str = 'Hallo!'&lt;br /&gt;
 writeline( test &amp;amp; ' Wie gehts?');&lt;br /&gt;
Auch hier ist weider zu beachten das kein Leerzeiche eingefügt wird! Die Variable kann an jeder Stelle innerhalb der Klammern stehen, zu beachten ist nur das sie nicht innerhalb von Anführungszeichen steht sonst wird die Variable als String gewertet.&lt;br /&gt;
 var test as str = 'Hallo!'&lt;br /&gt;
 writeline(test);&lt;br /&gt;
Hier wird nun zum Beispiel nur eine Variable ausgegeben.&lt;br /&gt;
&lt;br /&gt;
===Umwandlung von Variablen in andere Datentypen===&lt;br /&gt;
Wollen wir eine Integer-Variable ausgeben, so bekommen wir ein Problem. Der Computer verarbeitet Integer intern anders als String. String kann er ausgeben Integer nicht. Daher müssen alle Integervariablen (wie allen anderen auch) in Stringvariablen umgewandelt werden, bevor man diese ausgeben kann.&lt;br /&gt;
Die geschieht über den Befehl &lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;CStr();&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Beispiel:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
VAR zahl AS Integer;&lt;br /&gt;
zahl = 5;&lt;br /&gt;
writeline(CStr(Zahl));&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Umgekehrt müssen Stringvariablen in Integer umgewandelt werden, wenn mit diesen zum Beispiel gerechnet werden soll.&lt;br /&gt;
Dies geschießt über:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;CInt();&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Beispiel:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
VAR einstring AS String;&lt;br /&gt;
VAR einezahl AS Integer;&lt;br /&gt;
einstring = '42';&lt;br /&gt;
einezahl = CInt(einstring);&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Regeln bei der Bennenung von Variablen===&lt;br /&gt;
&lt;br /&gt;
*&lt;br /&gt;
*&lt;br /&gt;
*&lt;br /&gt;
*&lt;br /&gt;
&lt;br /&gt;
===Zusammenfassung: Variablen===&lt;br /&gt;
&lt;br /&gt;
==Kapitel 3 - Kontrollstrukturen==&lt;br /&gt;
Da wir uns in Kapitel 2 mit Variablen beschäftigt haben, können wir uns nun dem eigentlichen Aufwand beim Programmieren zuwenden: den Kontrollstrukturen. Diese Wort klingt ersteinmal sehr hochtrabend, an und für sich ist es jedoch sehr einfach.&lt;br /&gt;
&lt;br /&gt;
===If - then - Else===&lt;br /&gt;
Es werden einfach 2 Variablen miteinander verglichen und dann wird darauf reagiert.&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
VAR var1 AS Integer = 42;&lt;br /&gt;
if (varl1 = 42)&lt;br /&gt;
{&lt;br /&gt;
  writeline('var1 ist 42');&lt;br /&gt;
}&lt;br /&gt;
else&lt;br /&gt;
{&lt;br /&gt;
  writeline('var1 ist nicht 42');&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Dies ist ersteinmal sehr einfach und wirkt auf den ersten Blick sinnlos, was es auch ist. Aber es zeigt auf einfache Art, wie man 2 Werte miteinander vergleicht, dies kann man zum Beispiel dafür nutzen, um zu prüfen wieviel Lageraum ein Schiff noch hat. Dazu aber irgendwann später mehr.&lt;br /&gt;
Bleiben wir bei dem Code und schauen ihn uns einmal genauer an:&lt;br /&gt;
In der ersten Zeile wird die Variable '''var1''' definiert, dies sollte aus Kapitel 2 bekannt sein.&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;If (var1 = 1)&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Hier wird der vergleich durgeführt, in diesem Fall wir geschaut ob der Wert von Zahl1 42 ist. &lt;br /&gt;
Man könnte an dieser Stelle genausogut prüfen ob der Wert größer oder kleiner ist, als ein anderer.&lt;br /&gt;
Hierfür nutzt man dann nicht &amp;quot;=&amp;quot; sondern &amp;quot;&amp;lt;&amp;quot;,&amp;quot;&amp;gt;&amp;quot;,&amp;quot;&amp;lt;=&amp;quot;,&amp;quot;&amp;gt;=&amp;quot;&lt;br /&gt;
Innerhalb der { } folgt dann der Code, welcher ausgehührt werden soll, wenn die Bedigung stimmt, also in diesem Fall, wenn '''var1 ''' gleich 42 ist. &lt;br /&gt;
&lt;br /&gt;
Das folgende ''Else'' mit den Klammern gibt, welche Aktionen ausgeführt werden sollen, wenn die Bedingung nicht stimmt.&lt;br /&gt;
&lt;br /&gt;
Zu guter letzt gibt es noch ''Elseif'' dies ist dafür gedacht wenn man mehr als eine Alternative hat.&lt;br /&gt;
Beispiel&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
VAR var1 AS Integer = 42;&lt;br /&gt;
if (var1 &amp;lt; 42)&lt;br /&gt;
{&lt;br /&gt;
  writeline('var1 ist kleiner als 42');&lt;br /&gt;
}&lt;br /&gt;
elseif (var1 &amp;gt; 42)&lt;br /&gt;
{&lt;br /&gt;
  writeline('var1 ist größer als 42');&lt;br /&gt;
}&lt;br /&gt;
else&lt;br /&gt;
{&lt;br /&gt;
  writeline('var1 ist weder größer noch kleiner als 42');&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Dies ist nicht auf ein ''elseif'' beschränkt, es können beliebig viele sein.&lt;br /&gt;
&lt;br /&gt;
===Schleifen===&lt;br /&gt;
Die soeben kennen gelernten Strukturen helfen uns Fallunterscheidungen zu machen. Aber was machen wir wenn wir eine ganze Liste (zum Beispiel Schiffe) haben und die abarbeiten wollen? Dafür gibt es ''Schleifen'', hier unterscheid man in drei Arten: Kopf-, Fuss- und Zählergesteuert.&lt;br /&gt;
====while====&lt;br /&gt;
While Schleifen sind Kopfgesteuert, dass heißt, solange die Bedingung zutrifft, wird der Inhalt der Schleife ausgeführt.&lt;br /&gt;
Es gelten die selben Operatoren wie bei Abfragen mit if: =,&amp;lt;,&amp;gt;,&amp;gt;=,&amp;lt;=,&amp;lt;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
VAR i AS Integer;&lt;br /&gt;
i = 0;&lt;br /&gt;
writeline('Ich zähle jetzt bis Zehn');&lt;br /&gt;
while ( i &amp;lt;= 10)&lt;br /&gt;
{&lt;br /&gt;
  writeline(CStr(i));&lt;br /&gt;
  i = i + 1;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Solange '''i''' kleiner oder gleich 10 ist, wird '''i''' ausgegeben und dann einen hochgezählt. &lt;br /&gt;
Bei Whileschleifen ist zu beachten, dass wenn die Bedingung zu Anfang bereits '''nicht''' erfüllt ist, dass sie dann nicht durchläuft. Soll sie mindestens einmal durchlaufen muss man Fussgesteuerte Schleifen wählen.&lt;br /&gt;
====Do====&lt;br /&gt;
Do-Schleifen sind Fussgesteuert. Sie funktionieren wie While-Schleifen nur das sie mindestens einmal durchlaufen.&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
VAR i AS Integer;&lt;br /&gt;
i = 10;&lt;br /&gt;
writeline('Ich zähle jetzt bis Null');&lt;br /&gt;
{&lt;br /&gt;
  writeline(CStr(i));&lt;br /&gt;
  i = i -1;&lt;br /&gt;
}&lt;br /&gt;
Do (i &amp;gt;= 0);&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Gebe '''i''' solange aus und zähle einen runter, solange '''i''' größer gleich null ist.&lt;br /&gt;
Aus der Beschreibung wird deutlich wo der unterschied zwischen While- und Do-Schleifen liegt.&lt;br /&gt;
&lt;br /&gt;
In beiden Schleifen wird deutlich das ich jedes mal die Variable '''i''' runter bzw. hochzählen muss, um dies zu umgehen gibt es die möglichkeit Zählergesteuerte Schleifen zu verwenden.&lt;br /&gt;
====For====&lt;br /&gt;
For-Schleifen sind genau dies. &lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
VAR i AS Integer;&lt;br /&gt;
For ( i = 0 To 10)&lt;br /&gt;
{&lt;br /&gt;
  writeline(CStr(i));&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
auf diese Weise kann man sich ein wenig Arbeit abnehmen, da die Schleife einem das Zählen abnimmt. So kann man auch Endlosschleifen vermeiden, die auftreten wenn man vergisst, die Schleifenvariable (in diesen Fällen immer '''i''') runter- bzw. hochzuzählen.&lt;br /&gt;
&lt;br /&gt;
For-Schleifen bieten noch eine weitere Möglichkeit: Es kann angegeben werden in welchen Schritten die Schleife zählt.&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
VAR i AS Integer;&lt;br /&gt;
For ( i = 0 To 100 Step 10)&lt;br /&gt;
{&lt;br /&gt;
  writeline(CStr(i));&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Der Code ist der bis auf das ''Step'' identisch. Die Zahl die hinter Step steht kann sowohl positiv als auch negativ sein.&lt;br /&gt;
&lt;br /&gt;
==Kapitel 4 - Der Shipmanager - Einführung==&lt;br /&gt;
Nachdem wir nun über ein paar Grundlagen verfügen, wollen wir uns den wirklich interessanten Dingen zuwenden, der Steuerung von Spielinhalten durch Scripte.&lt;br /&gt;
&lt;br /&gt;
Um mit Schiffen zu interagieren gibt es eine Sammlung von Methoden, welche im Shipmanager zu finden sind.&lt;br /&gt;
Hierzu müssen wir dem Shipmanager als erstes Mitteilen, welches bzw. welche Flotte er verwenden soll.&lt;br /&gt;
&lt;br /&gt;
Hierführ gibt es die Befehle:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;Shipmanager.BenutzeSchiff(NCC-Nummer des Schiffes);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
bzw.&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;Shipmanager.BenutzeFlotte(ID der Flotte);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Damit weiß der Shipmanager schonmal welches Schiff, bzw. welche Flotte die Aktionen ausführen soll.&lt;br /&gt;
&lt;br /&gt;
Mit dem Shipmanager können folgende Aktionen ausgeführt werden:&lt;br /&gt;
*An- und Abdocken&lt;br /&gt;
*Alarm Stufe ändern&lt;br /&gt;
*Aus Flotten austreten&lt;br /&gt;
*Aus Orbit einfliegen austreten &lt;br /&gt;
*Benennen(Name As String)&lt;br /&gt;
*Deuterium sammeln (Nur mit FP)&lt;br /&gt;
*Erz sammeln (Nur mit FP)&lt;br /&gt;
*Fliegen&lt;br /&gt;
*Sensoren aktivieren / deaktivieren&lt;br /&gt;
*Reparieren&lt;br /&gt;
*Batterien entladen&lt;br /&gt;
*Schilde aktivieren/deaktiviere/aufladen&lt;br /&gt;
*Reservebatterie aufladen&lt;br /&gt;
*Traktorstrahl ein- / ausschalten&lt;br /&gt;
*Beamen&lt;br /&gt;
*Verstecken&lt;br /&gt;
*Replikator aktivieren/deaktivieren&lt;br /&gt;
*Waren über Bord werfen&lt;br /&gt;
*Warpkern aktiveren/deaktivieren&lt;br /&gt;
*Wrackextraktoren&lt;br /&gt;
&lt;br /&gt;
Eine vollständige Auflistung aller Funktionen findet sich im [http://game.stne.net/ObjectExplorer.aspx?p=CShipManager Objekt-Explorer].&lt;br /&gt;
&lt;br /&gt;
Im folgenden wollen wir uns einige Funktionen genauer anschauen:&lt;br /&gt;
===Beamen===&lt;br /&gt;
kommt noch&lt;br /&gt;
===Fliege===&lt;br /&gt;
kommt noch&lt;br /&gt;
===Schiffsystem nutzen===&lt;br /&gt;
kommt noch&lt;br /&gt;
&lt;br /&gt;
==Autoren==&lt;br /&gt;
(hier dürfen sich diejenigen verewigen die hier min. ein Kapitel geschrieben haben [sonst kommt noch einer daher nur weil er nen Rechtschreibfehler verbessert hat ;)])&lt;br /&gt;
{|&lt;br /&gt;
!Nickname&lt;br /&gt;
!IG-id&lt;br /&gt;
!Kapitel&lt;br /&gt;
|-&lt;br /&gt;
|WiZz4Rd&lt;br /&gt;
|16475&lt;br /&gt;
|Kapitel 1, Kapitel 2&lt;br /&gt;
|-&lt;br /&gt;
|Stryke&lt;br /&gt;
|28885&lt;br /&gt;
|Vorwort, Kapitel 3, Kapitel 4&lt;br /&gt;
|-&lt;br /&gt;
|[[Spieler:Xenon|Xenon]]&lt;br /&gt;
|10127&lt;br /&gt;
|Korrektur &amp;amp; Überarbeitung&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Scripting-Hilfe|Anfängerkurs]]&lt;/div&gt;</summary>
		<author><name>Stryke</name></author>	</entry>

	<entry>
		<id>https://wiki.stne.net/index.php?title=Scripting:Anf%C3%A4ngerkurs</id>
		<title>Scripting:Anfängerkurs</title>
		<link rel="alternate" type="text/html" href="https://wiki.stne.net/index.php?title=Scripting:Anf%C3%A4ngerkurs"/>
				<updated>2006-06-14T20:21:33Z</updated>
		
		<summary type="html">&lt;p&gt;Stryke: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Scriptingmenue}}&lt;br /&gt;
'''Hier wird in nächster Zeit ein Anfängerkurs für die STNE-Scriptengine entstehen. Wer mithelfen will oder bereits jetzt fragen hat kann sich vertrauensvoll an uns wenden, einfach im irc den channel #scripting joinen!'''&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
==Vorwort==&lt;br /&gt;
Dieser Kurs richtet sich vor allem an diejenigen, die zuvor noch nie mit Programmierung zu tun hatten und trotzdem gerne Scripts für STNE schreiben würden. Die sollen hier auf möglichst einfache Weise einen Einstieg finden. &lt;br /&gt;
Aber bitte erwartet keine Wunder, niemand der keine Ahnung vom Programieren hat, kann dies über Nacht lernen. Daher ist insbesondere eine Sache von enormer Wichtigkeit: Geduld – denn nur wer mit Geduld die Sachen angeht wird letzten Endes mit einem funktionieren Script belohnt. Wer die schnellen Erfolge sucht, der sollte es gleich lassen.&lt;br /&gt;
Wir wünschen allen viel Spaß und gutes Gelingen.&lt;br /&gt;
==Kapitel 1 - Strings==&lt;br /&gt;
===String? - Kann man das essen?===&lt;br /&gt;
'''Nein''', ein String (englisch) oder eine Zeichenkette, ist eine Folge von Zeichen (z.B. Buchstaben, Ziffern, Sonderzeichen, und Steuerzeichen) aus einem definierten Zeichensatz.&lt;br /&gt;
&lt;br /&gt;
Nun wissen wir also, was dieser ominöse String überhaupt ist. Wenden wir uns nun zur Ausgabe von Strings!&lt;br /&gt;
&lt;br /&gt;
=== Ausgabe von Strings ===&lt;br /&gt;
In diesem Kapitel werden wir uns der einfachen Ausgabe von Strings zuwenden. Um einen String auszugeben, müssen wir uns natürlich erst einmal überlegen was wir überhaupt ausgeben wollen. Nehmen wir als Beispiel einfach ''&amp;quot;Hallo!&amp;quot;''. Als Nächstes müssen wir wissen wie wir der Engine sagen, dass sie etwas ausgeben soll! Dies geschieht mit dem Befehl ''writeline();''.&lt;br /&gt;
&lt;br /&gt;
Hier ein kleines Beispiel:&lt;br /&gt;
&amp;lt;pre&amp;gt;writeline('Hallo!');&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In den Klammern steht immer der String, der ausgegeben werden soll. Die einfachen Anführungszeichen sagen dem Befehl, dass das Nachfolgende ein String und keine Variable ist (Was eine Variable ist erfahren wir im nächsten Kapitel). Das Semikolon signalisiert der Engine, dass der Befehl hier endet, dies wird nicht bei jedem Befehl benötigt.&lt;br /&gt;
&lt;br /&gt;
Wenn man sich mehrere Strings nach einander ausgeben möchte, ist es natürlich unsinnig, für jedes Wort einen neuen ''writeline();'' Befehl auszuführen. Also kann man Strings an einander reihen. Hierzu setzt man einfach ein ''&amp;amp;''-Zeichen zwischen die Strings. Natürlich kann man auch die jeweiligen Strings einfach, wie wir noch später lernen durch Variablen ersetzen.&lt;br /&gt;
&amp;lt;pre&amp;gt;writeline('Hallo!' &amp;amp; ' Wie geht es?');&amp;lt;/pre&amp;gt;&lt;br /&gt;
Wichtig hierbei ist, dass das ''&amp;amp;''-Zeichen kein Leerzeichen einfügt. Dies muss manuell innerhalb des Strings passieren.&lt;br /&gt;
&lt;br /&gt;
===Zusammenfassung: Strings===&lt;br /&gt;
&lt;br /&gt;
* Ein String ist eine Folge von verschiedenen Zeichen.&lt;br /&gt;
* Zum Ausgeben von Strings wird ''writeline();'' verwendet.&lt;br /&gt;
* Es ist möglich mehrere Strings bzw. Variablen mit Hilfe des ''&amp;amp;''-Zeichens innerhalb des Befehls ''writeline();'' regelrecht anzuhängen.&lt;br /&gt;
&lt;br /&gt;
==Kapitel 2 - Variablen==&lt;br /&gt;
===Variablen? - Schon wieder was zum futtern?===&lt;br /&gt;
'''Nein''', lediglich ein weiterer Fachbegriff der Programmierer. Variablen sind eine Art von Platzhalter, in denen man Informationen, wie zum Beispiel Strings, für eine spätere Verwendung abspeichern kann. Natürlich gibt es für verschiedene Informationen ganz spezielle und verschiedene Variablentypen, die man auch [[Scripting:Datentypen|Datentypen]] nennt.&lt;br /&gt;
&lt;br /&gt;
Die wichtigsten [[Scripting:Datentypen|Datentypen]] sind:&lt;br /&gt;
* String  - &lt;br /&gt;
* Integer -&lt;br /&gt;
* Boolean -&lt;br /&gt;
&lt;br /&gt;
===Variablen setzen===&lt;br /&gt;
Da das Arbeiten mit statischen Daten auf Dauer, vor allem bei längeren Scripten, ziemlich zeitaufwendig und unflexibel ist, verwendet man Variablen. Diese speichern Daten, geben sie auf Wunsch aus und lassen sich auch belibig oft verändern.&lt;br /&gt;
&lt;br /&gt;
Um eine Variable zu erschaffen verwendet man den Befehl ''var''. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
ach ''var'' kommt dann der Variablen Name, dieser darf Zahlen und Buchstaben enthalten. Zahlen allerdings nur mit einer Ausnahme, sie dürfen nicht an erster Stelle stehen. optional danach kann ein as stehen (as, engl., als) dieses gibt an was für einen Inhalt die Variable hat, zb. str für string also eine Zeichenkette. Hier ein Beispiel:&lt;br /&gt;
&amp;lt;pre&amp;gt;var i1 as str&amp;lt;/pre&amp;gt;&lt;br /&gt;
Um einer Variable einen Inhalt zuzuordnen setzt man die Variable vor ein Gleichheitszeichen, dahinter kommt dann der Inhalt in unserem nächsten Beispiel ein String.&lt;br /&gt;
&amp;lt;pre&amp;gt;var test as str&lt;br /&gt;
test = 'Hallo!'&amp;lt;/pre&amp;gt;&lt;br /&gt;
man kann das ganze auch in eine Zeile packen, das sieht dann wie folgt aus:&lt;br /&gt;
&amp;lt;pre&amp;gt;var test as str = 'Hallo!'&amp;lt;/pre&amp;gt;&lt;br /&gt;
Auch hier sehen wir wieder die einfachen Anführungszeichen als Kennzeichen für einen String. Wir können Variablen aber auch andere Werte wie Integer oder Bolean zuweisen. Dazu einfach str durch den jewaligen Typ ersetzten.(Liste der Typen: [[Scripting:Typen|klick mich]])&lt;br /&gt;
&lt;br /&gt;
Auch kann man die Variable &amp;quot;leeren&amp;quot; hirzu gibt man ihr einfach nichts mit, hier auch dazu ein Beispiel:&lt;br /&gt;
&amp;lt;pre&amp;gt;var test as str = 'Hallo!'&lt;br /&gt;
test = ''&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Anwendungsbeispiele mit Variablen===&lt;br /&gt;
 var test as str = 'Hallo!'&lt;br /&gt;
 writeline( test &amp;amp; ' Wie gehts?');&lt;br /&gt;
Auch hier ist weider zu beachten das kein Leerzeiche eingefügt wird! Die Variable kann an jeder Stelle innerhalb der Klammern stehen, zu beachten ist nur das sie nicht innerhalb von Anführungszeichen steht sonst wird die Variable als String gewertet.&lt;br /&gt;
 var test as str = 'Hallo!'&lt;br /&gt;
 writeline(test);&lt;br /&gt;
Hier wird nun zum Beispiel nur eine Variable ausgegeben.&lt;br /&gt;
&lt;br /&gt;
===Umwandlung von Variablen in andere Datentypen===&lt;br /&gt;
Wollen wir eine Integer-Variable ausgeben, so bekommen wir ein Problem. Der Computer verarbeitet Integer intern anders als String. String kann er ausgeben Integer nicht. Daher müssen alle Integervariablen (wie allen anderen auch) in Stringvariablen umgewandelt werden, bevor man diese ausgeben kann.&lt;br /&gt;
Die geschieht über den Befehl &lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;CStr();&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Beispiel:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
VAR zahl AS Integer;&lt;br /&gt;
zahl = 5;&lt;br /&gt;
writeline(CStr(Zahl));&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Umgekehrt müssen Stringvariablen in Integer umgewandelt werden, wenn mit diesen zum Beispiel gerechnet werden soll.&lt;br /&gt;
Dies geschießt über:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;CInt();&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Beispiel:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
VAR einstring AS String;&lt;br /&gt;
VAR einezahl AS Integer;&lt;br /&gt;
einstring = '42';&lt;br /&gt;
einezahl = CInt(einstring);&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Regeln bei der Bennenung von Variablen===&lt;br /&gt;
&lt;br /&gt;
*&lt;br /&gt;
*&lt;br /&gt;
*&lt;br /&gt;
*&lt;br /&gt;
&lt;br /&gt;
===Zusammenfassung: Variablen===&lt;br /&gt;
&lt;br /&gt;
==Kapitel 3 - Kontrollstrukturen==&lt;br /&gt;
Da wir uns in Kapitel 2 mit Variablen beschäftigt haben, können wir uns nun dem eigentlichen Aufwand beim Programmieren zuwenden: den Kontrollstrukturen. Diese Wort klingt ersteinmal sehr hochtrabend, an und für sich ist es jedoch sehr einfach.&lt;br /&gt;
&lt;br /&gt;
===If - then - Else===&lt;br /&gt;
Es werden einfach 2 Variablen miteinander verglichen und dann wird darauf reagiert.&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
VAR var1 AS Integer = 42;&lt;br /&gt;
if (varl1 = 42)&lt;br /&gt;
{&lt;br /&gt;
  writeline('var1 ist 42');&lt;br /&gt;
}&lt;br /&gt;
else&lt;br /&gt;
{&lt;br /&gt;
  writeline('var1 ist nicht 42');&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Dies ist ersteinmal sehr einfach und wirkt auf den ersten Blick sinnlos, was es auch ist. Aber es zeigt auf einfache Art, wie man 2 Werte miteinander vergleicht, dies kann man zum Beispiel dafür nutzen, um zu prüfen wieviel Lageraum ein Schiff noch hat. Dazu aber irgendwann später mehr.&lt;br /&gt;
Bleiben wir bei dem Code und schauen ihn uns einmal genauer an:&lt;br /&gt;
In der ersten Zeile wird die Variable '''var1''' definiert, dies sollte aus Kapitel 2 bekannt sein.&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;If (var1 = 1)&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Hier wird der vergleich durgeführt, in diesem Fall wir geschaut ob der Wert von Zahl1 42 ist. &lt;br /&gt;
Man könnte an dieser Stelle genausogut prüfen ob der Wert größer oder kleiner ist, als ein anderer.&lt;br /&gt;
Hierfür nutzt man dann nicht &amp;quot;=&amp;quot; sondern &amp;quot;&amp;lt;&amp;quot;,&amp;quot;&amp;gt;&amp;quot;,&amp;quot;&amp;lt;=&amp;quot;,&amp;quot;&amp;gt;=&amp;quot;&lt;br /&gt;
Innerhalb der { } folgt dann der Code, welcher ausgehührt werden soll, wenn die Bedigung stimmt, also in diesem Fall, wenn '''var1 ''' gleich 42 ist. &lt;br /&gt;
&lt;br /&gt;
Das folgende ''Else'' mit den Klammern gibt, welche Aktionen ausgeführt werden sollen, wenn die Bedingung nicht stimmt.&lt;br /&gt;
&lt;br /&gt;
Zu guter letzt gibt es noch ''Elseif'' dies ist dafür gedacht wenn man mehr als eine Alternative hat.&lt;br /&gt;
Beispiel&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
VAR var1 AS Integer = 42;&lt;br /&gt;
if (var1 &amp;lt; 42)&lt;br /&gt;
{&lt;br /&gt;
  writeline('var1 ist kleiner als 42');&lt;br /&gt;
}&lt;br /&gt;
elseif (var1 &amp;gt; 42)&lt;br /&gt;
{&lt;br /&gt;
  writeline('var1 ist größer als 42');&lt;br /&gt;
}&lt;br /&gt;
else&lt;br /&gt;
{&lt;br /&gt;
  writeline('var1 ist weder größer noch kleiner als 42');&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Dies ist nicht auf ein ''elseif'' beschränkt, es können beliebig viele sein.&lt;br /&gt;
&lt;br /&gt;
===Schleifen===&lt;br /&gt;
Die soeben kennen gelernten Strukturen helfen uns Fallunterscheidungen zu machen. Aber was machen wir wenn wir eine ganze Liste (zum Beispiel Schiffe) haben und die abarbeiten wollen? Dafür gibt es ''Schleifen'', hier unterscheid man in drei Arten: Kopf-, Fuss- und Zählergesteuert.&lt;br /&gt;
====while====&lt;br /&gt;
While Schleifen sind Kopfgesteuert, dass heißt, solange die Bedingung zutrifft, wird der Inhalt der Schleife ausgeführt.&lt;br /&gt;
Es gelten die selben Operatoren wie bei Abfragen mit if: =,&amp;lt;,&amp;gt;,&amp;gt;=,&amp;lt;=,&amp;lt;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
VAR i AS Integer;&lt;br /&gt;
i = 0;&lt;br /&gt;
writeline('Ich zähle jetzt bis Zehn');&lt;br /&gt;
while ( i &amp;lt;= 10)&lt;br /&gt;
{&lt;br /&gt;
  writeline(CStr(i));&lt;br /&gt;
  i = i + 1;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Solange '''i''' kleiner oder gleich 10 ist, wird '''i''' ausgegeben und dann einen hochgezählt. &lt;br /&gt;
Bei Whileschleifen ist zu beachten, dass wenn die Bedingung zu Anfang bereits '''nicht''' erfüllt ist, dass sie dann nicht durchläuft. Soll sie mindestens einmal durchlaufen muss man Fussgesteuerte Schleifen wählen.&lt;br /&gt;
====Do====&lt;br /&gt;
Do-Schleifen sind Fussgesteuert. Sie funktionieren wie While-Schleifen nur das sie mindestens einmal durchlaufen.&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
VAR i AS Integer;&lt;br /&gt;
i = 10;&lt;br /&gt;
writeline('Ich zähle jetzt bis Null');&lt;br /&gt;
{&lt;br /&gt;
  writeline(CStr(i));&lt;br /&gt;
  i = i -1;&lt;br /&gt;
}&lt;br /&gt;
Do (i &amp;gt;= 0);&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Gebe '''i''' solange aus und zähle einen runter, solange '''i''' größer gleich null ist.&lt;br /&gt;
Aus der Beschreibung wird deutlich wo der unterschied zwischen While- und Do-Schleifen liegt.&lt;br /&gt;
&lt;br /&gt;
In beiden Schleifen wird deutlich das ich jedes mal die Variable '''i''' runter bzw. hochzählen muss, um dies zu umgehen gibt es die möglichkeit Zählergesteuerte Schleifen zu verwenden.&lt;br /&gt;
====For====&lt;br /&gt;
For-Schleifen sind genau dies. &lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
VAR i AS Integer;&lt;br /&gt;
For ( i = 0 To 10)&lt;br /&gt;
{&lt;br /&gt;
  writeline(CStr(i));&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
auf diese Weise kann man sich ein wenig Arbeit abnehmen, da die Schleife einem das Zählen abnimmt. So kann man auch Endlosschleifen vermeiden, die auftreten wenn man vergisst, die Schleifenvariable (in diesen Fällen immer '''i''') runter- bzw. hochzuzählen.&lt;br /&gt;
&lt;br /&gt;
For-Schleifen bieten noch eine weitere Möglichkeit: Es kann angegeben werden in welchen Schritten die Schleife zählt.&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
VAR i AS Integer;&lt;br /&gt;
For ( i = 0 To 100 Step 10)&lt;br /&gt;
{&lt;br /&gt;
  writeline(CStr(i));&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Der Code ist der bis auf das ''Step'' identisch. Die Zahl die hinter Step steht kann sowohl positiv als auch negativ sein.&lt;br /&gt;
&lt;br /&gt;
==Kapitel 4 - Der Shipmanager - Einführung==&lt;br /&gt;
Nachdem wir nun über ein paar Grundlagen verfügen, wollen wir uns den wirklich interessanten Dingen zuwenden, der Steuerung von Spielinhalten durch Scripte.&lt;br /&gt;
&lt;br /&gt;
Um mit Schiffen zu interagieren gibt es eine Sammlung von Methoden, welche im Shipmanager zu finden sind.&lt;br /&gt;
Hierzu müssen wir dem Shipmanager als erstes Mitteilen, welches bzw. welche Flotte er verwenden soll.&lt;br /&gt;
&lt;br /&gt;
Hierführ gibt es die Befehle:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;Shipmanager.BenutzeSchiff(NCC-Nummer des Schiffes);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
bzw.&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;Shipmanager.BenutzeFlotte(ID der Flotte);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Damit weiß der Shipmanager schonmal welches Schiff, bzw. welche Flotte die Aktionen ausführen soll.&lt;br /&gt;
&lt;br /&gt;
Mit dem Shipmanager können folgende Aktionen ausgeführt werden:&lt;br /&gt;
*An- und Abdocken&lt;br /&gt;
*Alarm Stufe ändern&lt;br /&gt;
*Aus Flotten austreten&lt;br /&gt;
*Aus Orbit einfliegen austreten &lt;br /&gt;
*Benennen(Name As String)&lt;br /&gt;
*Deuterium sammeln (Nur mit FP)&lt;br /&gt;
*Erz sammeln (Nur mit FP)&lt;br /&gt;
*Fliegen&lt;br /&gt;
*Sensoren aktivieren / deaktivieren&lt;br /&gt;
*Reparieren&lt;br /&gt;
*Batterien entladen&lt;br /&gt;
*Schilde aktivieren/deaktiviere/aufladen&lt;br /&gt;
*Reservebatterie aufladen&lt;br /&gt;
*Traktorstrahl ein- / ausschalten&lt;br /&gt;
*Beamen&lt;br /&gt;
*Verstecken&lt;br /&gt;
*Replikator aktivieren/deaktivieren&lt;br /&gt;
*Waren über Bord werfen&lt;br /&gt;
*Warpkern aktiveren/deaktivieren&lt;br /&gt;
*Wrackextraktoren&lt;br /&gt;
&lt;br /&gt;
Eine vollständige Auflistung aller Funktionen findet sich im [http://game.stne.net/ObjectExplorer.aspx?p=CShipManager Objekt-Explorer].&lt;br /&gt;
&lt;br /&gt;
Im folgenden wollen wir uns einige Funktionen genauer anschauen:&lt;br /&gt;
===Beamen===&lt;br /&gt;
kommt noch&lt;br /&gt;
===Fliege===&lt;br /&gt;
kommt noch&lt;br /&gt;
===Schiffsystem nutzen===&lt;br /&gt;
kommt noch&lt;br /&gt;
&lt;br /&gt;
==Autoren==&lt;br /&gt;
(hier dürfen sich diejenigen Verewigen die Hier min. ein Kapitel geschrieben haben[sonst kommt noch einer daher nur weil er nen rechtschreibfehler verbessert hat ;)])&lt;br /&gt;
{|&lt;br /&gt;
!Nickname&lt;br /&gt;
!IG-id&lt;br /&gt;
!Kapitel&lt;br /&gt;
|-&lt;br /&gt;
|WiZz4Rd&lt;br /&gt;
|16475&lt;br /&gt;
|Kapitel 1, Kapitel 2&lt;br /&gt;
|-&lt;br /&gt;
|Stryke&lt;br /&gt;
|28885&lt;br /&gt;
|Vorwort, Kapitel 3&lt;br /&gt;
|-&lt;br /&gt;
|[[Spieler:Xenon|Xenon]]&lt;br /&gt;
|10127&lt;br /&gt;
|Korrektur &amp;amp; Überarbeitung&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Scripting-Hilfe|Anfängerkurs]]&lt;/div&gt;</summary>
		<author><name>Stryke</name></author>	</entry>

	<entry>
		<id>https://wiki.stne.net/index.php?title=Scripting:Anf%C3%A4ngerkurs</id>
		<title>Scripting:Anfängerkurs</title>
		<link rel="alternate" type="text/html" href="https://wiki.stne.net/index.php?title=Scripting:Anf%C3%A4ngerkurs"/>
				<updated>2006-06-14T20:21:18Z</updated>
		
		<summary type="html">&lt;p&gt;Stryke: /* Kapitel 4 - Der Shipmanager */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Scriptingmenue}}&lt;br /&gt;
{{inuse}}&lt;br /&gt;
'''Hier wird in nächster Zeit ein Anfängerkurs für die STNE-Scriptengine entstehen. Wer mithelfen will oder bereits jetzt fragen hat kann sich vertrauensvoll an uns wenden, einfach im irc den channel #scripting joinen!'''&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
==Vorwort==&lt;br /&gt;
Dieser Kurs richtet sich vor allem an diejenigen, die zuvor noch nie mit Programmierung zu tun hatten und trotzdem gerne Scripts für STNE schreiben würden. Die sollen hier auf möglichst einfache Weise einen Einstieg finden. &lt;br /&gt;
Aber bitte erwartet keine Wunder, niemand der keine Ahnung vom Programieren hat, kann dies über Nacht lernen. Daher ist insbesondere eine Sache von enormer Wichtigkeit: Geduld – denn nur wer mit Geduld die Sachen angeht wird letzten Endes mit einem funktionieren Script belohnt. Wer die schnellen Erfolge sucht, der sollte es gleich lassen.&lt;br /&gt;
Wir wünschen allen viel Spaß und gutes Gelingen.&lt;br /&gt;
==Kapitel 1 - Strings==&lt;br /&gt;
===String? - Kann man das essen?===&lt;br /&gt;
'''Nein''', ein String (englisch) oder eine Zeichenkette, ist eine Folge von Zeichen (z.B. Buchstaben, Ziffern, Sonderzeichen, und Steuerzeichen) aus einem definierten Zeichensatz.&lt;br /&gt;
&lt;br /&gt;
Nun wissen wir also, was dieser ominöse String überhaupt ist. Wenden wir uns nun zur Ausgabe von Strings!&lt;br /&gt;
&lt;br /&gt;
=== Ausgabe von Strings ===&lt;br /&gt;
In diesem Kapitel werden wir uns der einfachen Ausgabe von Strings zuwenden. Um einen String auszugeben, müssen wir uns natürlich erst einmal überlegen was wir überhaupt ausgeben wollen. Nehmen wir als Beispiel einfach ''&amp;quot;Hallo!&amp;quot;''. Als Nächstes müssen wir wissen wie wir der Engine sagen, dass sie etwas ausgeben soll! Dies geschieht mit dem Befehl ''writeline();''.&lt;br /&gt;
&lt;br /&gt;
Hier ein kleines Beispiel:&lt;br /&gt;
&amp;lt;pre&amp;gt;writeline('Hallo!');&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In den Klammern steht immer der String, der ausgegeben werden soll. Die einfachen Anführungszeichen sagen dem Befehl, dass das Nachfolgende ein String und keine Variable ist (Was eine Variable ist erfahren wir im nächsten Kapitel). Das Semikolon signalisiert der Engine, dass der Befehl hier endet, dies wird nicht bei jedem Befehl benötigt.&lt;br /&gt;
&lt;br /&gt;
Wenn man sich mehrere Strings nach einander ausgeben möchte, ist es natürlich unsinnig, für jedes Wort einen neuen ''writeline();'' Befehl auszuführen. Also kann man Strings an einander reihen. Hierzu setzt man einfach ein ''&amp;amp;''-Zeichen zwischen die Strings. Natürlich kann man auch die jeweiligen Strings einfach, wie wir noch später lernen durch Variablen ersetzen.&lt;br /&gt;
&amp;lt;pre&amp;gt;writeline('Hallo!' &amp;amp; ' Wie geht es?');&amp;lt;/pre&amp;gt;&lt;br /&gt;
Wichtig hierbei ist, dass das ''&amp;amp;''-Zeichen kein Leerzeichen einfügt. Dies muss manuell innerhalb des Strings passieren.&lt;br /&gt;
&lt;br /&gt;
===Zusammenfassung: Strings===&lt;br /&gt;
&lt;br /&gt;
* Ein String ist eine Folge von verschiedenen Zeichen.&lt;br /&gt;
* Zum Ausgeben von Strings wird ''writeline();'' verwendet.&lt;br /&gt;
* Es ist möglich mehrere Strings bzw. Variablen mit Hilfe des ''&amp;amp;''-Zeichens innerhalb des Befehls ''writeline();'' regelrecht anzuhängen.&lt;br /&gt;
&lt;br /&gt;
==Kapitel 2 - Variablen==&lt;br /&gt;
===Variablen? - Schon wieder was zum futtern?===&lt;br /&gt;
'''Nein''', lediglich ein weiterer Fachbegriff der Programmierer. Variablen sind eine Art von Platzhalter, in denen man Informationen, wie zum Beispiel Strings, für eine spätere Verwendung abspeichern kann. Natürlich gibt es für verschiedene Informationen ganz spezielle und verschiedene Variablentypen, die man auch [[Scripting:Datentypen|Datentypen]] nennt.&lt;br /&gt;
&lt;br /&gt;
Die wichtigsten [[Scripting:Datentypen|Datentypen]] sind:&lt;br /&gt;
* String  - &lt;br /&gt;
* Integer -&lt;br /&gt;
* Boolean -&lt;br /&gt;
&lt;br /&gt;
===Variablen setzen===&lt;br /&gt;
Da das Arbeiten mit statischen Daten auf Dauer, vor allem bei längeren Scripten, ziemlich zeitaufwendig und unflexibel ist, verwendet man Variablen. Diese speichern Daten, geben sie auf Wunsch aus und lassen sich auch belibig oft verändern.&lt;br /&gt;
&lt;br /&gt;
Um eine Variable zu erschaffen verwendet man den Befehl ''var''. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
ach ''var'' kommt dann der Variablen Name, dieser darf Zahlen und Buchstaben enthalten. Zahlen allerdings nur mit einer Ausnahme, sie dürfen nicht an erster Stelle stehen. optional danach kann ein as stehen (as, engl., als) dieses gibt an was für einen Inhalt die Variable hat, zb. str für string also eine Zeichenkette. Hier ein Beispiel:&lt;br /&gt;
&amp;lt;pre&amp;gt;var i1 as str&amp;lt;/pre&amp;gt;&lt;br /&gt;
Um einer Variable einen Inhalt zuzuordnen setzt man die Variable vor ein Gleichheitszeichen, dahinter kommt dann der Inhalt in unserem nächsten Beispiel ein String.&lt;br /&gt;
&amp;lt;pre&amp;gt;var test as str&lt;br /&gt;
test = 'Hallo!'&amp;lt;/pre&amp;gt;&lt;br /&gt;
man kann das ganze auch in eine Zeile packen, das sieht dann wie folgt aus:&lt;br /&gt;
&amp;lt;pre&amp;gt;var test as str = 'Hallo!'&amp;lt;/pre&amp;gt;&lt;br /&gt;
Auch hier sehen wir wieder die einfachen Anführungszeichen als Kennzeichen für einen String. Wir können Variablen aber auch andere Werte wie Integer oder Bolean zuweisen. Dazu einfach str durch den jewaligen Typ ersetzten.(Liste der Typen: [[Scripting:Typen|klick mich]])&lt;br /&gt;
&lt;br /&gt;
Auch kann man die Variable &amp;quot;leeren&amp;quot; hirzu gibt man ihr einfach nichts mit, hier auch dazu ein Beispiel:&lt;br /&gt;
&amp;lt;pre&amp;gt;var test as str = 'Hallo!'&lt;br /&gt;
test = ''&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Anwendungsbeispiele mit Variablen===&lt;br /&gt;
 var test as str = 'Hallo!'&lt;br /&gt;
 writeline( test &amp;amp; ' Wie gehts?');&lt;br /&gt;
Auch hier ist weider zu beachten das kein Leerzeiche eingefügt wird! Die Variable kann an jeder Stelle innerhalb der Klammern stehen, zu beachten ist nur das sie nicht innerhalb von Anführungszeichen steht sonst wird die Variable als String gewertet.&lt;br /&gt;
 var test as str = 'Hallo!'&lt;br /&gt;
 writeline(test);&lt;br /&gt;
Hier wird nun zum Beispiel nur eine Variable ausgegeben.&lt;br /&gt;
&lt;br /&gt;
===Umwandlung von Variablen in andere Datentypen===&lt;br /&gt;
Wollen wir eine Integer-Variable ausgeben, so bekommen wir ein Problem. Der Computer verarbeitet Integer intern anders als String. String kann er ausgeben Integer nicht. Daher müssen alle Integervariablen (wie allen anderen auch) in Stringvariablen umgewandelt werden, bevor man diese ausgeben kann.&lt;br /&gt;
Die geschieht über den Befehl &lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;CStr();&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Beispiel:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
VAR zahl AS Integer;&lt;br /&gt;
zahl = 5;&lt;br /&gt;
writeline(CStr(Zahl));&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Umgekehrt müssen Stringvariablen in Integer umgewandelt werden, wenn mit diesen zum Beispiel gerechnet werden soll.&lt;br /&gt;
Dies geschießt über:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;CInt();&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Beispiel:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
VAR einstring AS String;&lt;br /&gt;
VAR einezahl AS Integer;&lt;br /&gt;
einstring = '42';&lt;br /&gt;
einezahl = CInt(einstring);&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Regeln bei der Bennenung von Variablen===&lt;br /&gt;
&lt;br /&gt;
*&lt;br /&gt;
*&lt;br /&gt;
*&lt;br /&gt;
*&lt;br /&gt;
&lt;br /&gt;
===Zusammenfassung: Variablen===&lt;br /&gt;
&lt;br /&gt;
==Kapitel 3 - Kontrollstrukturen==&lt;br /&gt;
Da wir uns in Kapitel 2 mit Variablen beschäftigt haben, können wir uns nun dem eigentlichen Aufwand beim Programmieren zuwenden: den Kontrollstrukturen. Diese Wort klingt ersteinmal sehr hochtrabend, an und für sich ist es jedoch sehr einfach.&lt;br /&gt;
&lt;br /&gt;
===If - then - Else===&lt;br /&gt;
Es werden einfach 2 Variablen miteinander verglichen und dann wird darauf reagiert.&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
VAR var1 AS Integer = 42;&lt;br /&gt;
if (varl1 = 42)&lt;br /&gt;
{&lt;br /&gt;
  writeline('var1 ist 42');&lt;br /&gt;
}&lt;br /&gt;
else&lt;br /&gt;
{&lt;br /&gt;
  writeline('var1 ist nicht 42');&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Dies ist ersteinmal sehr einfach und wirkt auf den ersten Blick sinnlos, was es auch ist. Aber es zeigt auf einfache Art, wie man 2 Werte miteinander vergleicht, dies kann man zum Beispiel dafür nutzen, um zu prüfen wieviel Lageraum ein Schiff noch hat. Dazu aber irgendwann später mehr.&lt;br /&gt;
Bleiben wir bei dem Code und schauen ihn uns einmal genauer an:&lt;br /&gt;
In der ersten Zeile wird die Variable '''var1''' definiert, dies sollte aus Kapitel 2 bekannt sein.&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;If (var1 = 1)&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Hier wird der vergleich durgeführt, in diesem Fall wir geschaut ob der Wert von Zahl1 42 ist. &lt;br /&gt;
Man könnte an dieser Stelle genausogut prüfen ob der Wert größer oder kleiner ist, als ein anderer.&lt;br /&gt;
Hierfür nutzt man dann nicht &amp;quot;=&amp;quot; sondern &amp;quot;&amp;lt;&amp;quot;,&amp;quot;&amp;gt;&amp;quot;,&amp;quot;&amp;lt;=&amp;quot;,&amp;quot;&amp;gt;=&amp;quot;&lt;br /&gt;
Innerhalb der { } folgt dann der Code, welcher ausgehührt werden soll, wenn die Bedigung stimmt, also in diesem Fall, wenn '''var1 ''' gleich 42 ist. &lt;br /&gt;
&lt;br /&gt;
Das folgende ''Else'' mit den Klammern gibt, welche Aktionen ausgeführt werden sollen, wenn die Bedingung nicht stimmt.&lt;br /&gt;
&lt;br /&gt;
Zu guter letzt gibt es noch ''Elseif'' dies ist dafür gedacht wenn man mehr als eine Alternative hat.&lt;br /&gt;
Beispiel&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
VAR var1 AS Integer = 42;&lt;br /&gt;
if (var1 &amp;lt; 42)&lt;br /&gt;
{&lt;br /&gt;
  writeline('var1 ist kleiner als 42');&lt;br /&gt;
}&lt;br /&gt;
elseif (var1 &amp;gt; 42)&lt;br /&gt;
{&lt;br /&gt;
  writeline('var1 ist größer als 42');&lt;br /&gt;
}&lt;br /&gt;
else&lt;br /&gt;
{&lt;br /&gt;
  writeline('var1 ist weder größer noch kleiner als 42');&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Dies ist nicht auf ein ''elseif'' beschränkt, es können beliebig viele sein.&lt;br /&gt;
&lt;br /&gt;
===Schleifen===&lt;br /&gt;
Die soeben kennen gelernten Strukturen helfen uns Fallunterscheidungen zu machen. Aber was machen wir wenn wir eine ganze Liste (zum Beispiel Schiffe) haben und die abarbeiten wollen? Dafür gibt es ''Schleifen'', hier unterscheid man in drei Arten: Kopf-, Fuss- und Zählergesteuert.&lt;br /&gt;
====while====&lt;br /&gt;
While Schleifen sind Kopfgesteuert, dass heißt, solange die Bedingung zutrifft, wird der Inhalt der Schleife ausgeführt.&lt;br /&gt;
Es gelten die selben Operatoren wie bei Abfragen mit if: =,&amp;lt;,&amp;gt;,&amp;gt;=,&amp;lt;=,&amp;lt;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
VAR i AS Integer;&lt;br /&gt;
i = 0;&lt;br /&gt;
writeline('Ich zähle jetzt bis Zehn');&lt;br /&gt;
while ( i &amp;lt;= 10)&lt;br /&gt;
{&lt;br /&gt;
  writeline(CStr(i));&lt;br /&gt;
  i = i + 1;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Solange '''i''' kleiner oder gleich 10 ist, wird '''i''' ausgegeben und dann einen hochgezählt. &lt;br /&gt;
Bei Whileschleifen ist zu beachten, dass wenn die Bedingung zu Anfang bereits '''nicht''' erfüllt ist, dass sie dann nicht durchläuft. Soll sie mindestens einmal durchlaufen muss man Fussgesteuerte Schleifen wählen.&lt;br /&gt;
====Do====&lt;br /&gt;
Do-Schleifen sind Fussgesteuert. Sie funktionieren wie While-Schleifen nur das sie mindestens einmal durchlaufen.&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
VAR i AS Integer;&lt;br /&gt;
i = 10;&lt;br /&gt;
writeline('Ich zähle jetzt bis Null');&lt;br /&gt;
{&lt;br /&gt;
  writeline(CStr(i));&lt;br /&gt;
  i = i -1;&lt;br /&gt;
}&lt;br /&gt;
Do (i &amp;gt;= 0);&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Gebe '''i''' solange aus und zähle einen runter, solange '''i''' größer gleich null ist.&lt;br /&gt;
Aus der Beschreibung wird deutlich wo der unterschied zwischen While- und Do-Schleifen liegt.&lt;br /&gt;
&lt;br /&gt;
In beiden Schleifen wird deutlich das ich jedes mal die Variable '''i''' runter bzw. hochzählen muss, um dies zu umgehen gibt es die möglichkeit Zählergesteuerte Schleifen zu verwenden.&lt;br /&gt;
====For====&lt;br /&gt;
For-Schleifen sind genau dies. &lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
VAR i AS Integer;&lt;br /&gt;
For ( i = 0 To 10)&lt;br /&gt;
{&lt;br /&gt;
  writeline(CStr(i));&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
auf diese Weise kann man sich ein wenig Arbeit abnehmen, da die Schleife einem das Zählen abnimmt. So kann man auch Endlosschleifen vermeiden, die auftreten wenn man vergisst, die Schleifenvariable (in diesen Fällen immer '''i''') runter- bzw. hochzuzählen.&lt;br /&gt;
&lt;br /&gt;
For-Schleifen bieten noch eine weitere Möglichkeit: Es kann angegeben werden in welchen Schritten die Schleife zählt.&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
VAR i AS Integer;&lt;br /&gt;
For ( i = 0 To 100 Step 10)&lt;br /&gt;
{&lt;br /&gt;
  writeline(CStr(i));&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Der Code ist der bis auf das ''Step'' identisch. Die Zahl die hinter Step steht kann sowohl positiv als auch negativ sein.&lt;br /&gt;
&lt;br /&gt;
==Kapitel 4 - Der Shipmanager - Einführung==&lt;br /&gt;
Nachdem wir nun über ein paar Grundlagen verfügen, wollen wir uns den wirklich interessanten Dingen zuwenden, der Steuerung von Spielinhalten durch Scripte.&lt;br /&gt;
&lt;br /&gt;
Um mit Schiffen zu interagieren gibt es eine Sammlung von Methoden, welche im Shipmanager zu finden sind.&lt;br /&gt;
Hierzu müssen wir dem Shipmanager als erstes Mitteilen, welches bzw. welche Flotte er verwenden soll.&lt;br /&gt;
&lt;br /&gt;
Hierführ gibt es die Befehle:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;Shipmanager.BenutzeSchiff(NCC-Nummer des Schiffes);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
bzw.&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;Shipmanager.BenutzeFlotte(ID der Flotte);&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Damit weiß der Shipmanager schonmal welches Schiff, bzw. welche Flotte die Aktionen ausführen soll.&lt;br /&gt;
&lt;br /&gt;
Mit dem Shipmanager können folgende Aktionen ausgeführt werden:&lt;br /&gt;
*An- und Abdocken&lt;br /&gt;
*Alarm Stufe ändern&lt;br /&gt;
*Aus Flotten austreten&lt;br /&gt;
*Aus Orbit einfliegen austreten &lt;br /&gt;
*Benennen(Name As String)&lt;br /&gt;
*Deuterium sammeln (Nur mit FP)&lt;br /&gt;
*Erz sammeln (Nur mit FP)&lt;br /&gt;
*Fliegen&lt;br /&gt;
*Sensoren aktivieren / deaktivieren&lt;br /&gt;
*Reparieren&lt;br /&gt;
*Batterien entladen&lt;br /&gt;
*Schilde aktivieren/deaktiviere/aufladen&lt;br /&gt;
*Reservebatterie aufladen&lt;br /&gt;
*Traktorstrahl ein- / ausschalten&lt;br /&gt;
*Beamen&lt;br /&gt;
*Verstecken&lt;br /&gt;
*Replikator aktivieren/deaktivieren&lt;br /&gt;
*Waren über Bord werfen&lt;br /&gt;
*Warpkern aktiveren/deaktivieren&lt;br /&gt;
*Wrackextraktoren&lt;br /&gt;
&lt;br /&gt;
Eine vollständige Auflistung aller Funktionen findet sich im [http://game.stne.net/ObjectExplorer.aspx?p=CShipManager Objekt-Explorer].&lt;br /&gt;
&lt;br /&gt;
Im folgenden wollen wir uns einige Funktionen genauer anschauen:&lt;br /&gt;
===Beamen===&lt;br /&gt;
kommt noch&lt;br /&gt;
===Fliege===&lt;br /&gt;
kommt noch&lt;br /&gt;
===Schiffsystem nutzen===&lt;br /&gt;
kommt noch&lt;br /&gt;
&lt;br /&gt;
==Autoren==&lt;br /&gt;
(hier dürfen sich diejenigen Verewigen die Hier min. ein Kapitel geschrieben haben[sonst kommt noch einer daher nur weil er nen rechtschreibfehler verbessert hat ;)])&lt;br /&gt;
{|&lt;br /&gt;
!Nickname&lt;br /&gt;
!IG-id&lt;br /&gt;
!Kapitel&lt;br /&gt;
|-&lt;br /&gt;
|WiZz4Rd&lt;br /&gt;
|16475&lt;br /&gt;
|Kapitel 1, Kapitel 2&lt;br /&gt;
|-&lt;br /&gt;
|Stryke&lt;br /&gt;
|28885&lt;br /&gt;
|Vorwort, Kapitel 3&lt;br /&gt;
|-&lt;br /&gt;
|[[Spieler:Xenon|Xenon]]&lt;br /&gt;
|10127&lt;br /&gt;
|Korrektur &amp;amp; Überarbeitung&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Scripting-Hilfe|Anfängerkurs]]&lt;/div&gt;</summary>
		<author><name>Stryke</name></author>	</entry>

	<entry>
		<id>https://wiki.stne.net/index.php?title=Scripting:Anf%C3%A4ngerkurs</id>
		<title>Scripting:Anfängerkurs</title>
		<link rel="alternate" type="text/html" href="https://wiki.stne.net/index.php?title=Scripting:Anf%C3%A4ngerkurs"/>
				<updated>2006-06-14T20:02:12Z</updated>
		
		<summary type="html">&lt;p&gt;Stryke: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Scriptingmenue}}&lt;br /&gt;
{{inuse}}&lt;br /&gt;
'''Hier wird in nächster Zeit ein Anfängerkurs für die STNE-Scriptengine entstehen. Wer mithelfen will oder bereits jetzt fragen hat kann sich vertrauensvoll an uns wenden, einfach im irc den channel #scripting joinen!'''&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
==Vorwort==&lt;br /&gt;
Dieser Kurs richtet sich vor allem an diejenigen, die zuvor noch nie mit Programmierung zu tun hatten und trotzdem gerne Scripts für STNE schreiben würden. Die sollen hier auf möglichst einfache Weise einen Einstieg finden. &lt;br /&gt;
Aber bitte erwartet keine Wunder, niemand der keine Ahnung vom Programieren hat, kann dies über Nacht lernen. Daher ist insbesondere eine Sache von enormer Wichtigkeit: Geduld – denn nur wer mit Geduld die Sachen angeht wird letzten Endes mit einem funktionieren Script belohnt. Wer die schnellen Erfolge sucht, der sollte es gleich lassen.&lt;br /&gt;
Wir wünschen allen viel Spaß und gutes Gelingen.&lt;br /&gt;
==Kapitel 1 - Strings==&lt;br /&gt;
===String? - Kann man das essen?===&lt;br /&gt;
'''Nein''', ein String (englisch) oder eine Zeichenkette, ist eine Folge von Zeichen (z.B. Buchstaben, Ziffern, Sonderzeichen, und Steuerzeichen) aus einem definierten Zeichensatz.&lt;br /&gt;
&lt;br /&gt;
Nun wissen wir also, was dieser ominöse String überhaupt ist. Wenden wir uns nun zur Ausgabe von Strings!&lt;br /&gt;
&lt;br /&gt;
=== Ausgabe von Strings ===&lt;br /&gt;
In diesem Kapitel werden wir uns der einfachen Ausgabe von Strings zuwenden. Um einen String auszugeben, müssen wir uns natürlich erst einmal überlegen was wir überhaupt ausgeben wollen. Nehmen wir als Beispiel einfach ''&amp;quot;Hallo!&amp;quot;''. Als Nächstes müssen wir wissen wie wir der Engine sagen, dass sie etwas ausgeben soll! Dies geschieht mit dem Befehl ''writeline();''.&lt;br /&gt;
&lt;br /&gt;
Hier ein kleines Beispiel:&lt;br /&gt;
&amp;lt;pre&amp;gt;writeline('Hallo!');&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In den Klammern steht immer der String, der ausgegeben werden soll. Die einfachen Anführungszeichen sagen dem Befehl, dass das Nachfolgende ein String und keine Variable ist (Was eine Variable ist erfahren wir im nächsten Kapitel). Das Semikolon signalisiert der Engine, dass der Befehl hier endet, dies wird nicht bei jedem Befehl benötigt.&lt;br /&gt;
&lt;br /&gt;
Wenn man sich mehrere Strings nach einander ausgeben möchte, ist es natürlich unsinnig, für jedes Wort einen neuen ''writeline();'' Befehl auszuführen. Also kann man Strings an einander reihen. Hierzu setzt man einfach ein ''&amp;amp;''-Zeichen zwischen die Strings. Natürlich kann man auch die jeweiligen Strings einfach, wie wir noch später lernen durch Variablen ersetzen.&lt;br /&gt;
&amp;lt;pre&amp;gt;writeline('Hallo!' &amp;amp; ' Wie geht es?');&amp;lt;/pre&amp;gt;&lt;br /&gt;
Wichtig hierbei ist, dass das ''&amp;amp;''-Zeichen kein Leerzeichen einfügt. Dies muss manuell innerhalb des Strings passieren.&lt;br /&gt;
&lt;br /&gt;
===Zusammenfassung: Strings===&lt;br /&gt;
&lt;br /&gt;
* Ein String ist eine Folge von verschiedenen Zeichen.&lt;br /&gt;
* Zum Ausgeben von Strings wird ''writeline();'' verwendet.&lt;br /&gt;
* Es ist möglich mehrere Strings bzw. Variablen mit Hilfe des ''&amp;amp;''-Zeichens innerhalb des Befehls ''writeline();'' regelrecht anzuhängen.&lt;br /&gt;
&lt;br /&gt;
==Kapitel 2 - Variablen==&lt;br /&gt;
===Variablen? - Schon wieder was zum futtern?===&lt;br /&gt;
'''Nein''', lediglich ein weiterer Fachbegriff der Programmierer. Variablen sind eine Art von Platzhalter, in denen man Informationen, wie zum Beispiel Strings, für eine spätere Verwendung abspeichern kann. Natürlich gibt es für verschiedene Informationen ganz spezielle und verschiedene Variablentypen, die man auch [[Scripting:Datentypen|Datentypen]] nennt.&lt;br /&gt;
&lt;br /&gt;
Die wichtigsten [[Scripting:Datentypen|Datentypen]] sind:&lt;br /&gt;
* String  - &lt;br /&gt;
* Integer -&lt;br /&gt;
* Boolean -&lt;br /&gt;
&lt;br /&gt;
===Variablen setzen===&lt;br /&gt;
Da das Arbeiten mit statischen Daten auf Dauer, vor allem bei längeren Scripten, ziemlich zeitaufwendig und unflexibel ist, verwendet man Variablen. Diese speichern Daten, geben sie auf Wunsch aus und lassen sich auch belibig oft verändern.&lt;br /&gt;
&lt;br /&gt;
Um eine Variable zu erschaffen verwendet man den Befehl ''var''. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
ach ''var'' kommt dann der Variablen Name, dieser darf Zahlen und Buchstaben enthalten. Zahlen allerdings nur mit einer Ausnahme, sie dürfen nicht an erster Stelle stehen. optional danach kann ein as stehen (as, engl., als) dieses gibt an was für einen Inhalt die Variable hat, zb. str für string also eine Zeichenkette. Hier ein Beispiel:&lt;br /&gt;
&amp;lt;pre&amp;gt;var i1 as str&amp;lt;/pre&amp;gt;&lt;br /&gt;
Um einer Variable einen Inhalt zuzuordnen setzt man die Variable vor ein Gleichheitszeichen, dahinter kommt dann der Inhalt in unserem nächsten Beispiel ein String.&lt;br /&gt;
&amp;lt;pre&amp;gt;var test as str&lt;br /&gt;
test = 'Hallo!'&amp;lt;/pre&amp;gt;&lt;br /&gt;
man kann das ganze auch in eine Zeile packen, das sieht dann wie folgt aus:&lt;br /&gt;
&amp;lt;pre&amp;gt;var test as str = 'Hallo!'&amp;lt;/pre&amp;gt;&lt;br /&gt;
Auch hier sehen wir wieder die einfachen Anführungszeichen als Kennzeichen für einen String. Wir können Variablen aber auch andere Werte wie Integer oder Bolean zuweisen. Dazu einfach str durch den jewaligen Typ ersetzten.(Liste der Typen: [[Scripting:Typen|klick mich]])&lt;br /&gt;
&lt;br /&gt;
Auch kann man die Variable &amp;quot;leeren&amp;quot; hirzu gibt man ihr einfach nichts mit, hier auch dazu ein Beispiel:&lt;br /&gt;
&amp;lt;pre&amp;gt;var test as str = 'Hallo!'&lt;br /&gt;
test = ''&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Anwendungsbeispiele mit Variablen===&lt;br /&gt;
 var test as str = 'Hallo!'&lt;br /&gt;
 writeline( test &amp;amp; ' Wie gehts?');&lt;br /&gt;
Auch hier ist weider zu beachten das kein Leerzeiche eingefügt wird! Die Variable kann an jeder Stelle innerhalb der Klammern stehen, zu beachten ist nur das sie nicht innerhalb von Anführungszeichen steht sonst wird die Variable als String gewertet.&lt;br /&gt;
 var test as str = 'Hallo!'&lt;br /&gt;
 writeline(test);&lt;br /&gt;
Hier wird nun zum Beispiel nur eine Variable ausgegeben.&lt;br /&gt;
&lt;br /&gt;
===Umwandlung von Variablen in andere Datentypen===&lt;br /&gt;
Wollen wir eine Integer-Variable ausgeben, so bekommen wir ein Problem. Der Computer verarbeitet Integer intern anders als String. String kann er ausgeben Integer nicht. Daher müssen alle Integervariablen (wie allen anderen auch) in Stringvariablen umgewandelt werden, bevor man diese ausgeben kann.&lt;br /&gt;
Die geschieht über den Befehl &lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;CStr();&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Beispiel:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
VAR zahl AS Integer;&lt;br /&gt;
zahl = 5;&lt;br /&gt;
writeline(CStr(Zahl));&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Umgekehrt müssen Stringvariablen in Integer umgewandelt werden, wenn mit diesen zum Beispiel gerechnet werden soll.&lt;br /&gt;
Dies geschießt über:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;CInt();&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Beispiel:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
VAR einstring AS String;&lt;br /&gt;
VAR einezahl AS Integer;&lt;br /&gt;
einstring = '42';&lt;br /&gt;
einezahl = CInt(einstring);&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Regeln bei der Bennenung von Variablen===&lt;br /&gt;
&lt;br /&gt;
*&lt;br /&gt;
*&lt;br /&gt;
*&lt;br /&gt;
*&lt;br /&gt;
&lt;br /&gt;
===Zusammenfassung: Variablen===&lt;br /&gt;
&lt;br /&gt;
==Kapitel 3 - Kontrollstrukturen==&lt;br /&gt;
Da wir uns in Kapitel 2 mit Variablen beschäftigt haben, können wir uns nun dem eigentlichen Aufwand beim Programmieren zuwenden: den Kontrollstrukturen. Diese Wort klingt ersteinmal sehr hochtrabend, an und für sich ist es jedoch sehr einfach.&lt;br /&gt;
&lt;br /&gt;
===If - then - Else===&lt;br /&gt;
Es werden einfach 2 Variablen miteinander verglichen und dann wird darauf reagiert.&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
VAR var1 AS Integer = 42;&lt;br /&gt;
if (varl1 = 42)&lt;br /&gt;
{&lt;br /&gt;
  writeline('var1 ist 42');&lt;br /&gt;
}&lt;br /&gt;
else&lt;br /&gt;
{&lt;br /&gt;
  writeline('var1 ist nicht 42');&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Dies ist ersteinmal sehr einfach und wirkt auf den ersten Blick sinnlos, was es auch ist. Aber es zeigt auf einfache Art, wie man 2 Werte miteinander vergleicht, dies kann man zum Beispiel dafür nutzen, um zu prüfen wieviel Lageraum ein Schiff noch hat. Dazu aber irgendwann später mehr.&lt;br /&gt;
Bleiben wir bei dem Code und schauen ihn uns einmal genauer an:&lt;br /&gt;
In der ersten Zeile wird die Variable '''var1''' definiert, dies sollte aus Kapitel 2 bekannt sein.&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;If (var1 = 1)&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Hier wird der vergleich durgeführt, in diesem Fall wir geschaut ob der Wert von Zahl1 42 ist. &lt;br /&gt;
Man könnte an dieser Stelle genausogut prüfen ob der Wert größer oder kleiner ist, als ein anderer.&lt;br /&gt;
Hierfür nutzt man dann nicht &amp;quot;=&amp;quot; sondern &amp;quot;&amp;lt;&amp;quot;,&amp;quot;&amp;gt;&amp;quot;,&amp;quot;&amp;lt;=&amp;quot;,&amp;quot;&amp;gt;=&amp;quot;&lt;br /&gt;
Innerhalb der { } folgt dann der Code, welcher ausgehührt werden soll, wenn die Bedigung stimmt, also in diesem Fall, wenn '''var1 ''' gleich 42 ist. &lt;br /&gt;
&lt;br /&gt;
Das folgende ''Else'' mit den Klammern gibt, welche Aktionen ausgeführt werden sollen, wenn die Bedingung nicht stimmt.&lt;br /&gt;
&lt;br /&gt;
Zu guter letzt gibt es noch ''Elseif'' dies ist dafür gedacht wenn man mehr als eine Alternative hat.&lt;br /&gt;
Beispiel&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
VAR var1 AS Integer = 42;&lt;br /&gt;
if (var1 &amp;lt; 42)&lt;br /&gt;
{&lt;br /&gt;
  writeline('var1 ist kleiner als 42');&lt;br /&gt;
}&lt;br /&gt;
elseif (var1 &amp;gt; 42)&lt;br /&gt;
{&lt;br /&gt;
  writeline('var1 ist größer als 42');&lt;br /&gt;
}&lt;br /&gt;
else&lt;br /&gt;
{&lt;br /&gt;
  writeline('var1 ist weder größer noch kleiner als 42');&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Dies ist nicht auf ein ''elseif'' beschränkt, es können beliebig viele sein.&lt;br /&gt;
&lt;br /&gt;
===Schleifen===&lt;br /&gt;
Die soeben kennen gelernten Strukturen helfen uns Fallunterscheidungen zu machen. Aber was machen wir wenn wir eine ganze Liste (zum Beispiel Schiffe) haben und die abarbeiten wollen? Dafür gibt es ''Schleifen'', hier unterscheid man in drei Arten: Kopf-, Fuss- und Zählergesteuert.&lt;br /&gt;
====while====&lt;br /&gt;
While Schleifen sind Kopfgesteuert, dass heißt, solange die Bedingung zutrifft, wird der Inhalt der Schleife ausgeführt.&lt;br /&gt;
Es gelten die selben Operatoren wie bei Abfragen mit if: =,&amp;lt;,&amp;gt;,&amp;gt;=,&amp;lt;=,&amp;lt;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
VAR i AS Integer;&lt;br /&gt;
i = 0;&lt;br /&gt;
writeline('Ich zähle jetzt bis Zehn');&lt;br /&gt;
while ( i &amp;lt;= 10)&lt;br /&gt;
{&lt;br /&gt;
  writeline(CStr(i));&lt;br /&gt;
  i = i + 1;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Solange '''i''' kleiner oder gleich 10 ist, wird '''i''' ausgegeben und dann einen hochgezählt. &lt;br /&gt;
Bei Whileschleifen ist zu beachten, dass wenn die Bedingung zu Anfang bereits '''nicht''' erfüllt ist, dass sie dann nicht durchläuft. Soll sie mindestens einmal durchlaufen muss man Fussgesteuerte Schleifen wählen.&lt;br /&gt;
====Do====&lt;br /&gt;
Do-Schleifen sind Fussgesteuert. Sie funktionieren wie While-Schleifen nur das sie mindestens einmal durchlaufen.&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
VAR i AS Integer;&lt;br /&gt;
i = 10;&lt;br /&gt;
writeline('Ich zähle jetzt bis Null');&lt;br /&gt;
{&lt;br /&gt;
  writeline(CStr(i));&lt;br /&gt;
  i = i -1;&lt;br /&gt;
}&lt;br /&gt;
Do (i &amp;gt;= 0);&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Gebe '''i''' solange aus und zähle einen runter, solange '''i''' größer gleich null ist.&lt;br /&gt;
Aus der Beschreibung wird deutlich wo der unterschied zwischen While- und Do-Schleifen liegt.&lt;br /&gt;
&lt;br /&gt;
In beiden Schleifen wird deutlich das ich jedes mal die Variable '''i''' runter bzw. hochzählen muss, um dies zu umgehen gibt es die möglichkeit Zählergesteuerte Schleifen zu verwenden.&lt;br /&gt;
====For====&lt;br /&gt;
For-Schleifen sind genau dies. &lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
VAR i AS Integer;&lt;br /&gt;
For ( i = 0 To 10)&lt;br /&gt;
{&lt;br /&gt;
  writeline(CStr(i));&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
auf diese Weise kann man sich ein wenig Arbeit abnehmen, da die Schleife einem das Zählen abnimmt. So kann man auch Endlosschleifen vermeiden, die auftreten wenn man vergisst, die Schleifenvariable (in diesen Fällen immer '''i''') runter- bzw. hochzuzählen.&lt;br /&gt;
&lt;br /&gt;
For-Schleifen bieten noch eine weitere Möglichkeit: Es kann angegeben werden in welchen Schritten die Schleife zählt.&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
VAR i AS Integer;&lt;br /&gt;
For ( i = 0 To 100 Step 10)&lt;br /&gt;
{&lt;br /&gt;
  writeline(CStr(i));&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Der Code ist der bis auf das ''Step'' identisch. Die Zahl die hinter Step steht kann sowohl positiv als auch negativ sein.&lt;br /&gt;
&lt;br /&gt;
==Kapitel 4 - Der Shipmanager==&lt;br /&gt;
&lt;br /&gt;
==Autoren==&lt;br /&gt;
(hier dürfen sich diejenigen Verewigen die Hier min. ein Kapitel geschrieben haben[sonst kommt noch einer daher nur weil er nen rechtschreibfehler verbessert hat ;)])&lt;br /&gt;
{|&lt;br /&gt;
!Nickname&lt;br /&gt;
!IG-id&lt;br /&gt;
!Kapitel&lt;br /&gt;
|-&lt;br /&gt;
|WiZz4Rd&lt;br /&gt;
|16475&lt;br /&gt;
|Kapitel 1, Kapitel 2&lt;br /&gt;
|-&lt;br /&gt;
|Stryke&lt;br /&gt;
|28885&lt;br /&gt;
|Vorwort, Kapitel 3&lt;br /&gt;
|-&lt;br /&gt;
|[[Spieler:Xenon|Xenon]]&lt;br /&gt;
|10127&lt;br /&gt;
|Korrektur &amp;amp; Überarbeitung&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Scripting-Hilfe|Anfängerkurs]]&lt;/div&gt;</summary>
		<author><name>Stryke</name></author>	</entry>

	<entry>
		<id>https://wiki.stne.net/index.php?title=Scripting:Anf%C3%A4ngerkurs</id>
		<title>Scripting:Anfängerkurs</title>
		<link rel="alternate" type="text/html" href="https://wiki.stne.net/index.php?title=Scripting:Anf%C3%A4ngerkurs"/>
				<updated>2006-06-14T20:01:10Z</updated>
		
		<summary type="html">&lt;p&gt;Stryke: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Scriptingmenue}}&lt;br /&gt;
{{in_use}}&lt;br /&gt;
'''Hier wird in nächster Zeit ein Anfängerkurs für die STNE-Scriptengine entstehen. Wer mithelfen will oder bereits jetzt fragen hat kann sich vertrauensvoll an uns wenden, einfach im irc den channel #scripting joinen!'''&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
==Vorwort==&lt;br /&gt;
Dieser Kurs richtet sich vor allem an diejenigen, die zuvor noch nie mit Programmierung zu tun hatten und trotzdem gerne Scripts für STNE schreiben würden. Die sollen hier auf möglichst einfache Weise einen Einstieg finden. &lt;br /&gt;
Aber bitte erwartet keine Wunder, niemand der keine Ahnung vom Programieren hat, kann dies über Nacht lernen. Daher ist insbesondere eine Sache von enormer Wichtigkeit: Geduld – denn nur wer mit Geduld die Sachen angeht wird letzten Endes mit einem funktionieren Script belohnt. Wer die schnellen Erfolge sucht, der sollte es gleich lassen.&lt;br /&gt;
Wir wünschen allen viel Spaß und gutes Gelingen.&lt;br /&gt;
==Kapitel 1 - Strings==&lt;br /&gt;
===String? - Kann man das essen?===&lt;br /&gt;
'''Nein''', ein String (englisch) oder eine Zeichenkette, ist eine Folge von Zeichen (z.B. Buchstaben, Ziffern, Sonderzeichen, und Steuerzeichen) aus einem definierten Zeichensatz.&lt;br /&gt;
&lt;br /&gt;
Nun wissen wir also, was dieser ominöse String überhaupt ist. Wenden wir uns nun zur Ausgabe von Strings!&lt;br /&gt;
&lt;br /&gt;
=== Ausgabe von Strings ===&lt;br /&gt;
In diesem Kapitel werden wir uns der einfachen Ausgabe von Strings zuwenden. Um einen String auszugeben, müssen wir uns natürlich erst einmal überlegen was wir überhaupt ausgeben wollen. Nehmen wir als Beispiel einfach ''&amp;quot;Hallo!&amp;quot;''. Als Nächstes müssen wir wissen wie wir der Engine sagen, dass sie etwas ausgeben soll! Dies geschieht mit dem Befehl ''writeline();''.&lt;br /&gt;
&lt;br /&gt;
Hier ein kleines Beispiel:&lt;br /&gt;
&amp;lt;pre&amp;gt;writeline('Hallo!');&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In den Klammern steht immer der String, der ausgegeben werden soll. Die einfachen Anführungszeichen sagen dem Befehl, dass das Nachfolgende ein String und keine Variable ist (Was eine Variable ist erfahren wir im nächsten Kapitel). Das Semikolon signalisiert der Engine, dass der Befehl hier endet, dies wird nicht bei jedem Befehl benötigt.&lt;br /&gt;
&lt;br /&gt;
Wenn man sich mehrere Strings nach einander ausgeben möchte, ist es natürlich unsinnig, für jedes Wort einen neuen ''writeline();'' Befehl auszuführen. Also kann man Strings an einander reihen. Hierzu setzt man einfach ein ''&amp;amp;''-Zeichen zwischen die Strings. Natürlich kann man auch die jeweiligen Strings einfach, wie wir noch später lernen durch Variablen ersetzen.&lt;br /&gt;
&amp;lt;pre&amp;gt;writeline('Hallo!' &amp;amp; ' Wie geht es?');&amp;lt;/pre&amp;gt;&lt;br /&gt;
Wichtig hierbei ist, dass das ''&amp;amp;''-Zeichen kein Leerzeichen einfügt. Dies muss manuell innerhalb des Strings passieren.&lt;br /&gt;
&lt;br /&gt;
===Zusammenfassung: Strings===&lt;br /&gt;
&lt;br /&gt;
* Ein String ist eine Folge von verschiedenen Zeichen.&lt;br /&gt;
* Zum Ausgeben von Strings wird ''writeline();'' verwendet.&lt;br /&gt;
* Es ist möglich mehrere Strings bzw. Variablen mit Hilfe des ''&amp;amp;''-Zeichens innerhalb des Befehls ''writeline();'' regelrecht anzuhängen.&lt;br /&gt;
&lt;br /&gt;
==Kapitel 2 - Variablen==&lt;br /&gt;
===Variablen? - Schon wieder was zum futtern?===&lt;br /&gt;
'''Nein''', lediglich ein weiterer Fachbegriff der Programmierer. Variablen sind eine Art von Platzhalter, in denen man Informationen, wie zum Beispiel Strings, für eine spätere Verwendung abspeichern kann. Natürlich gibt es für verschiedene Informationen ganz spezielle und verschiedene Variablentypen, die man auch [[Scripting:Datentypen|Datentypen]] nennt.&lt;br /&gt;
&lt;br /&gt;
Die wichtigsten [[Scripting:Datentypen|Datentypen]] sind:&lt;br /&gt;
* String  - &lt;br /&gt;
* Integer -&lt;br /&gt;
* Boolean -&lt;br /&gt;
&lt;br /&gt;
===Variablen setzen===&lt;br /&gt;
Da das Arbeiten mit statischen Daten auf Dauer, vor allem bei längeren Scripten, ziemlich zeitaufwendig und unflexibel ist, verwendet man Variablen. Diese speichern Daten, geben sie auf Wunsch aus und lassen sich auch belibig oft verändern.&lt;br /&gt;
&lt;br /&gt;
Um eine Variable zu erschaffen verwendet man den Befehl ''var''. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
ach ''var'' kommt dann der Variablen Name, dieser darf Zahlen und Buchstaben enthalten. Zahlen allerdings nur mit einer Ausnahme, sie dürfen nicht an erster Stelle stehen. optional danach kann ein as stehen (as, engl., als) dieses gibt an was für einen Inhalt die Variable hat, zb. str für string also eine Zeichenkette. Hier ein Beispiel:&lt;br /&gt;
&amp;lt;pre&amp;gt;var i1 as str&amp;lt;/pre&amp;gt;&lt;br /&gt;
Um einer Variable einen Inhalt zuzuordnen setzt man die Variable vor ein Gleichheitszeichen, dahinter kommt dann der Inhalt in unserem nächsten Beispiel ein String.&lt;br /&gt;
&amp;lt;pre&amp;gt;var test as str&lt;br /&gt;
test = 'Hallo!'&amp;lt;/pre&amp;gt;&lt;br /&gt;
man kann das ganze auch in eine Zeile packen, das sieht dann wie folgt aus:&lt;br /&gt;
&amp;lt;pre&amp;gt;var test as str = 'Hallo!'&amp;lt;/pre&amp;gt;&lt;br /&gt;
Auch hier sehen wir wieder die einfachen Anführungszeichen als Kennzeichen für einen String. Wir können Variablen aber auch andere Werte wie Integer oder Bolean zuweisen. Dazu einfach str durch den jewaligen Typ ersetzten.(Liste der Typen: [[Scripting:Typen|klick mich]])&lt;br /&gt;
&lt;br /&gt;
Auch kann man die Variable &amp;quot;leeren&amp;quot; hirzu gibt man ihr einfach nichts mit, hier auch dazu ein Beispiel:&lt;br /&gt;
&amp;lt;pre&amp;gt;var test as str = 'Hallo!'&lt;br /&gt;
test = ''&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Anwendungsbeispiele mit Variablen===&lt;br /&gt;
 var test as str = 'Hallo!'&lt;br /&gt;
 writeline( test &amp;amp; ' Wie gehts?');&lt;br /&gt;
Auch hier ist weider zu beachten das kein Leerzeiche eingefügt wird! Die Variable kann an jeder Stelle innerhalb der Klammern stehen, zu beachten ist nur das sie nicht innerhalb von Anführungszeichen steht sonst wird die Variable als String gewertet.&lt;br /&gt;
 var test as str = 'Hallo!'&lt;br /&gt;
 writeline(test);&lt;br /&gt;
Hier wird nun zum Beispiel nur eine Variable ausgegeben.&lt;br /&gt;
&lt;br /&gt;
===Umwandlung von Variablen in andere Datentypen===&lt;br /&gt;
Wollen wir eine Integer-Variable ausgeben, so bekommen wir ein Problem. Der Computer verarbeitet Integer intern anders als String. String kann er ausgeben Integer nicht. Daher müssen alle Integervariablen (wie allen anderen auch) in Stringvariablen umgewandelt werden, bevor man diese ausgeben kann.&lt;br /&gt;
Die geschieht über den Befehl &lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;CStr();&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Beispiel:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
VAR zahl AS Integer;&lt;br /&gt;
zahl = 5;&lt;br /&gt;
writeline(CStr(Zahl));&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Umgekehrt müssen Stringvariablen in Integer umgewandelt werden, wenn mit diesen zum Beispiel gerechnet werden soll.&lt;br /&gt;
Dies geschießt über:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;CInt();&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Beispiel:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
VAR einstring AS String;&lt;br /&gt;
VAR einezahl AS Integer;&lt;br /&gt;
einstring = '42';&lt;br /&gt;
einezahl = CInt(einstring);&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Regeln bei der Bennenung von Variablen===&lt;br /&gt;
&lt;br /&gt;
*&lt;br /&gt;
*&lt;br /&gt;
*&lt;br /&gt;
*&lt;br /&gt;
&lt;br /&gt;
===Zusammenfassung: Variablen===&lt;br /&gt;
&lt;br /&gt;
==Kapitel 3 - Kontrollstrukturen==&lt;br /&gt;
Da wir uns in Kapitel 2 mit Variablen beschäftigt haben, können wir uns nun dem eigentlichen Aufwand beim Programmieren zuwenden: den Kontrollstrukturen. Diese Wort klingt ersteinmal sehr hochtrabend, an und für sich ist es jedoch sehr einfach.&lt;br /&gt;
&lt;br /&gt;
===If - then - Else===&lt;br /&gt;
Es werden einfach 2 Variablen miteinander verglichen und dann wird darauf reagiert.&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
VAR var1 AS Integer = 42;&lt;br /&gt;
if (varl1 = 42)&lt;br /&gt;
{&lt;br /&gt;
  writeline('var1 ist 42');&lt;br /&gt;
}&lt;br /&gt;
else&lt;br /&gt;
{&lt;br /&gt;
  writeline('var1 ist nicht 42');&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Dies ist ersteinmal sehr einfach und wirkt auf den ersten Blick sinnlos, was es auch ist. Aber es zeigt auf einfache Art, wie man 2 Werte miteinander vergleicht, dies kann man zum Beispiel dafür nutzen, um zu prüfen wieviel Lageraum ein Schiff noch hat. Dazu aber irgendwann später mehr.&lt;br /&gt;
Bleiben wir bei dem Code und schauen ihn uns einmal genauer an:&lt;br /&gt;
In der ersten Zeile wird die Variable '''var1''' definiert, dies sollte aus Kapitel 2 bekannt sein.&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;If (var1 = 1)&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Hier wird der vergleich durgeführt, in diesem Fall wir geschaut ob der Wert von Zahl1 42 ist. &lt;br /&gt;
Man könnte an dieser Stelle genausogut prüfen ob der Wert größer oder kleiner ist, als ein anderer.&lt;br /&gt;
Hierfür nutzt man dann nicht &amp;quot;=&amp;quot; sondern &amp;quot;&amp;lt;&amp;quot;,&amp;quot;&amp;gt;&amp;quot;,&amp;quot;&amp;lt;=&amp;quot;,&amp;quot;&amp;gt;=&amp;quot;&lt;br /&gt;
Innerhalb der { } folgt dann der Code, welcher ausgehührt werden soll, wenn die Bedigung stimmt, also in diesem Fall, wenn '''var1 ''' gleich 42 ist. &lt;br /&gt;
&lt;br /&gt;
Das folgende ''Else'' mit den Klammern gibt, welche Aktionen ausgeführt werden sollen, wenn die Bedingung nicht stimmt.&lt;br /&gt;
&lt;br /&gt;
Zu guter letzt gibt es noch ''Elseif'' dies ist dafür gedacht wenn man mehr als eine Alternative hat.&lt;br /&gt;
Beispiel&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
VAR var1 AS Integer = 42;&lt;br /&gt;
if (var1 &amp;lt; 42)&lt;br /&gt;
{&lt;br /&gt;
  writeline('var1 ist kleiner als 42');&lt;br /&gt;
}&lt;br /&gt;
elseif (var1 &amp;gt; 42)&lt;br /&gt;
{&lt;br /&gt;
  writeline('var1 ist größer als 42');&lt;br /&gt;
}&lt;br /&gt;
else&lt;br /&gt;
{&lt;br /&gt;
  writeline('var1 ist weder größer noch kleiner als 42');&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Dies ist nicht auf ein ''elseif'' beschränkt, es können beliebig viele sein.&lt;br /&gt;
&lt;br /&gt;
===Schleifen===&lt;br /&gt;
Die soeben kennen gelernten Strukturen helfen uns Fallunterscheidungen zu machen. Aber was machen wir wenn wir eine ganze Liste (zum Beispiel Schiffe) haben und die abarbeiten wollen? Dafür gibt es ''Schleifen'', hier unterscheid man in drei Arten: Kopf-, Fuss- und Zählergesteuert.&lt;br /&gt;
====while====&lt;br /&gt;
While Schleifen sind Kopfgesteuert, dass heißt, solange die Bedingung zutrifft, wird der Inhalt der Schleife ausgeführt.&lt;br /&gt;
Es gelten die selben Operatoren wie bei Abfragen mit if: =,&amp;lt;,&amp;gt;,&amp;gt;=,&amp;lt;=,&amp;lt;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
VAR i AS Integer;&lt;br /&gt;
i = 0;&lt;br /&gt;
writeline('Ich zähle jetzt bis Zehn');&lt;br /&gt;
while ( i &amp;lt;= 10)&lt;br /&gt;
{&lt;br /&gt;
  writeline(CStr(i));&lt;br /&gt;
  i = i + 1;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Solange '''i''' kleiner oder gleich 10 ist, wird '''i''' ausgegeben und dann einen hochgezählt. &lt;br /&gt;
Bei Whileschleifen ist zu beachten, dass wenn die Bedingung zu Anfang bereits '''nicht''' erfüllt ist, dass sie dann nicht durchläuft. Soll sie mindestens einmal durchlaufen muss man Fussgesteuerte Schleifen wählen.&lt;br /&gt;
====Do====&lt;br /&gt;
Do-Schleifen sind Fussgesteuert. Sie funktionieren wie While-Schleifen nur das sie mindestens einmal durchlaufen.&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
VAR i AS Integer;&lt;br /&gt;
i = 10;&lt;br /&gt;
writeline('Ich zähle jetzt bis Null');&lt;br /&gt;
{&lt;br /&gt;
  writeline(CStr(i));&lt;br /&gt;
  i = i -1;&lt;br /&gt;
}&lt;br /&gt;
Do (i &amp;gt;= 0);&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Gebe '''i''' solange aus und zähle einen runter, solange '''i''' größer gleich null ist.&lt;br /&gt;
Aus der Beschreibung wird deutlich wo der unterschied zwischen While- und Do-Schleifen liegt.&lt;br /&gt;
&lt;br /&gt;
In beiden Schleifen wird deutlich das ich jedes mal die Variable '''i''' runter bzw. hochzählen muss, um dies zu umgehen gibt es die möglichkeit Zählergesteuerte Schleifen zu verwenden.&lt;br /&gt;
====For====&lt;br /&gt;
For-Schleifen sind genau dies. &lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
VAR i AS Integer;&lt;br /&gt;
For ( i = 0 To 10)&lt;br /&gt;
{&lt;br /&gt;
  writeline(CStr(i));&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
auf diese Weise kann man sich ein wenig Arbeit abnehmen, da die Schleife einem das Zählen abnimmt. So kann man auch Endlosschleifen vermeiden, die auftreten wenn man vergisst, die Schleifenvariable (in diesen Fällen immer '''i''') runter- bzw. hochzuzählen.&lt;br /&gt;
&lt;br /&gt;
For-Schleifen bieten noch eine weitere Möglichkeit: Es kann angegeben werden in welchen Schritten die Schleife zählt.&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
VAR i AS Integer;&lt;br /&gt;
For ( i = 0 To 100 Step 10)&lt;br /&gt;
{&lt;br /&gt;
  writeline(CStr(i));&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Der Code ist der bis auf das ''Step'' identisch. Die Zahl die hinter Step steht kann sowohl positiv als auch negativ sein.&lt;br /&gt;
&lt;br /&gt;
==Kapitel 4 - Der Shipmanager==&lt;br /&gt;
&lt;br /&gt;
==Autoren==&lt;br /&gt;
(hier dürfen sich diejenigen Verewigen die Hier min. ein Kapitel geschrieben haben[sonst kommt noch einer daher nur weil er nen rechtschreibfehler verbessert hat ;)])&lt;br /&gt;
{|&lt;br /&gt;
!Nickname&lt;br /&gt;
!IG-id&lt;br /&gt;
!Kapitel&lt;br /&gt;
|-&lt;br /&gt;
|WiZz4Rd&lt;br /&gt;
|16475&lt;br /&gt;
|Kapitel 1, Kapitel 2&lt;br /&gt;
|-&lt;br /&gt;
|Stryke&lt;br /&gt;
|28885&lt;br /&gt;
|Vorwort, Kapitel 3&lt;br /&gt;
|-&lt;br /&gt;
|[[Spieler:Xenon|Xenon]]&lt;br /&gt;
|10127&lt;br /&gt;
|Korrektur &amp;amp; Überarbeitung&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Scripting-Hilfe|Anfängerkurs]]&lt;/div&gt;</summary>
		<author><name>Stryke</name></author>	</entry>

	<entry>
		<id>https://wiki.stne.net/index.php?title=Scripting:Anf%C3%A4ngerkurs</id>
		<title>Scripting:Anfängerkurs</title>
		<link rel="alternate" type="text/html" href="https://wiki.stne.net/index.php?title=Scripting:Anf%C3%A4ngerkurs"/>
				<updated>2006-06-14T20:00:54Z</updated>
		
		<summary type="html">&lt;p&gt;Stryke: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Scriptingmenue}}&lt;br /&gt;
'''Hier wird in nächster Zeit ein Anfängerkurs für die STNE-Scriptengine entstehen. Wer mithelfen will oder bereits jetzt fragen hat kann sich vertrauensvoll an uns wenden, einfach im irc den channel #scripting joinen!'''&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
==Vorwort==&lt;br /&gt;
Dieser Kurs richtet sich vor allem an diejenigen, die zuvor noch nie mit Programmierung zu tun hatten und trotzdem gerne Scripts für STNE schreiben würden. Die sollen hier auf möglichst einfache Weise einen Einstieg finden. &lt;br /&gt;
Aber bitte erwartet keine Wunder, niemand der keine Ahnung vom Programieren hat, kann dies über Nacht lernen. Daher ist insbesondere eine Sache von enormer Wichtigkeit: Geduld – denn nur wer mit Geduld die Sachen angeht wird letzten Endes mit einem funktionieren Script belohnt. Wer die schnellen Erfolge sucht, der sollte es gleich lassen.&lt;br /&gt;
Wir wünschen allen viel Spaß und gutes Gelingen.&lt;br /&gt;
==Kapitel 1 - Strings==&lt;br /&gt;
===String? - Kann man das essen?===&lt;br /&gt;
'''Nein''', ein String (englisch) oder eine Zeichenkette, ist eine Folge von Zeichen (z.B. Buchstaben, Ziffern, Sonderzeichen, und Steuerzeichen) aus einem definierten Zeichensatz.&lt;br /&gt;
&lt;br /&gt;
Nun wissen wir also, was dieser ominöse String überhaupt ist. Wenden wir uns nun zur Ausgabe von Strings!&lt;br /&gt;
&lt;br /&gt;
=== Ausgabe von Strings ===&lt;br /&gt;
In diesem Kapitel werden wir uns der einfachen Ausgabe von Strings zuwenden. Um einen String auszugeben, müssen wir uns natürlich erst einmal überlegen was wir überhaupt ausgeben wollen. Nehmen wir als Beispiel einfach ''&amp;quot;Hallo!&amp;quot;''. Als Nächstes müssen wir wissen wie wir der Engine sagen, dass sie etwas ausgeben soll! Dies geschieht mit dem Befehl ''writeline();''.&lt;br /&gt;
&lt;br /&gt;
Hier ein kleines Beispiel:&lt;br /&gt;
&amp;lt;pre&amp;gt;writeline('Hallo!');&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In den Klammern steht immer der String, der ausgegeben werden soll. Die einfachen Anführungszeichen sagen dem Befehl, dass das Nachfolgende ein String und keine Variable ist (Was eine Variable ist erfahren wir im nächsten Kapitel). Das Semikolon signalisiert der Engine, dass der Befehl hier endet, dies wird nicht bei jedem Befehl benötigt.&lt;br /&gt;
&lt;br /&gt;
Wenn man sich mehrere Strings nach einander ausgeben möchte, ist es natürlich unsinnig, für jedes Wort einen neuen ''writeline();'' Befehl auszuführen. Also kann man Strings an einander reihen. Hierzu setzt man einfach ein ''&amp;amp;''-Zeichen zwischen die Strings. Natürlich kann man auch die jeweiligen Strings einfach, wie wir noch später lernen durch Variablen ersetzen.&lt;br /&gt;
&amp;lt;pre&amp;gt;writeline('Hallo!' &amp;amp; ' Wie geht es?');&amp;lt;/pre&amp;gt;&lt;br /&gt;
Wichtig hierbei ist, dass das ''&amp;amp;''-Zeichen kein Leerzeichen einfügt. Dies muss manuell innerhalb des Strings passieren.&lt;br /&gt;
&lt;br /&gt;
===Zusammenfassung: Strings===&lt;br /&gt;
&lt;br /&gt;
* Ein String ist eine Folge von verschiedenen Zeichen.&lt;br /&gt;
* Zum Ausgeben von Strings wird ''writeline();'' verwendet.&lt;br /&gt;
* Es ist möglich mehrere Strings bzw. Variablen mit Hilfe des ''&amp;amp;''-Zeichens innerhalb des Befehls ''writeline();'' regelrecht anzuhängen.&lt;br /&gt;
&lt;br /&gt;
==Kapitel 2 - Variablen==&lt;br /&gt;
===Variablen? - Schon wieder was zum futtern?===&lt;br /&gt;
'''Nein''', lediglich ein weiterer Fachbegriff der Programmierer. Variablen sind eine Art von Platzhalter, in denen man Informationen, wie zum Beispiel Strings, für eine spätere Verwendung abspeichern kann. Natürlich gibt es für verschiedene Informationen ganz spezielle und verschiedene Variablentypen, die man auch [[Scripting:Datentypen|Datentypen]] nennt.&lt;br /&gt;
&lt;br /&gt;
Die wichtigsten [[Scripting:Datentypen|Datentypen]] sind:&lt;br /&gt;
* String  - &lt;br /&gt;
* Integer -&lt;br /&gt;
* Boolean -&lt;br /&gt;
&lt;br /&gt;
===Variablen setzen===&lt;br /&gt;
Da das Arbeiten mit statischen Daten auf Dauer, vor allem bei längeren Scripten, ziemlich zeitaufwendig und unflexibel ist, verwendet man Variablen. Diese speichern Daten, geben sie auf Wunsch aus und lassen sich auch belibig oft verändern.&lt;br /&gt;
&lt;br /&gt;
Um eine Variable zu erschaffen verwendet man den Befehl ''var''. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
ach ''var'' kommt dann der Variablen Name, dieser darf Zahlen und Buchstaben enthalten. Zahlen allerdings nur mit einer Ausnahme, sie dürfen nicht an erster Stelle stehen. optional danach kann ein as stehen (as, engl., als) dieses gibt an was für einen Inhalt die Variable hat, zb. str für string also eine Zeichenkette. Hier ein Beispiel:&lt;br /&gt;
&amp;lt;pre&amp;gt;var i1 as str&amp;lt;/pre&amp;gt;&lt;br /&gt;
Um einer Variable einen Inhalt zuzuordnen setzt man die Variable vor ein Gleichheitszeichen, dahinter kommt dann der Inhalt in unserem nächsten Beispiel ein String.&lt;br /&gt;
&amp;lt;pre&amp;gt;var test as str&lt;br /&gt;
test = 'Hallo!'&amp;lt;/pre&amp;gt;&lt;br /&gt;
man kann das ganze auch in eine Zeile packen, das sieht dann wie folgt aus:&lt;br /&gt;
&amp;lt;pre&amp;gt;var test as str = 'Hallo!'&amp;lt;/pre&amp;gt;&lt;br /&gt;
Auch hier sehen wir wieder die einfachen Anführungszeichen als Kennzeichen für einen String. Wir können Variablen aber auch andere Werte wie Integer oder Bolean zuweisen. Dazu einfach str durch den jewaligen Typ ersetzten.(Liste der Typen: [[Scripting:Typen|klick mich]])&lt;br /&gt;
&lt;br /&gt;
Auch kann man die Variable &amp;quot;leeren&amp;quot; hirzu gibt man ihr einfach nichts mit, hier auch dazu ein Beispiel:&lt;br /&gt;
&amp;lt;pre&amp;gt;var test as str = 'Hallo!'&lt;br /&gt;
test = ''&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Anwendungsbeispiele mit Variablen===&lt;br /&gt;
 var test as str = 'Hallo!'&lt;br /&gt;
 writeline( test &amp;amp; ' Wie gehts?');&lt;br /&gt;
Auch hier ist weider zu beachten das kein Leerzeiche eingefügt wird! Die Variable kann an jeder Stelle innerhalb der Klammern stehen, zu beachten ist nur das sie nicht innerhalb von Anführungszeichen steht sonst wird die Variable als String gewertet.&lt;br /&gt;
 var test as str = 'Hallo!'&lt;br /&gt;
 writeline(test);&lt;br /&gt;
Hier wird nun zum Beispiel nur eine Variable ausgegeben.&lt;br /&gt;
&lt;br /&gt;
===Umwandlung von Variablen in andere Datentypen===&lt;br /&gt;
Wollen wir eine Integer-Variable ausgeben, so bekommen wir ein Problem. Der Computer verarbeitet Integer intern anders als String. String kann er ausgeben Integer nicht. Daher müssen alle Integervariablen (wie allen anderen auch) in Stringvariablen umgewandelt werden, bevor man diese ausgeben kann.&lt;br /&gt;
Die geschieht über den Befehl &lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;CStr();&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Beispiel:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
VAR zahl AS Integer;&lt;br /&gt;
zahl = 5;&lt;br /&gt;
writeline(CStr(Zahl));&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Umgekehrt müssen Stringvariablen in Integer umgewandelt werden, wenn mit diesen zum Beispiel gerechnet werden soll.&lt;br /&gt;
Dies geschießt über:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;CInt();&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Beispiel:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
VAR einstring AS String;&lt;br /&gt;
VAR einezahl AS Integer;&lt;br /&gt;
einstring = '42';&lt;br /&gt;
einezahl = CInt(einstring);&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Regeln bei der Bennenung von Variablen===&lt;br /&gt;
&lt;br /&gt;
*&lt;br /&gt;
*&lt;br /&gt;
*&lt;br /&gt;
*&lt;br /&gt;
&lt;br /&gt;
===Zusammenfassung: Variablen===&lt;br /&gt;
&lt;br /&gt;
==Kapitel 3 - Kontrollstrukturen==&lt;br /&gt;
Da wir uns in Kapitel 2 mit Variablen beschäftigt haben, können wir uns nun dem eigentlichen Aufwand beim Programmieren zuwenden: den Kontrollstrukturen. Diese Wort klingt ersteinmal sehr hochtrabend, an und für sich ist es jedoch sehr einfach.&lt;br /&gt;
&lt;br /&gt;
===If - then - Else===&lt;br /&gt;
Es werden einfach 2 Variablen miteinander verglichen und dann wird darauf reagiert.&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
VAR var1 AS Integer = 42;&lt;br /&gt;
if (varl1 = 42)&lt;br /&gt;
{&lt;br /&gt;
  writeline('var1 ist 42');&lt;br /&gt;
}&lt;br /&gt;
else&lt;br /&gt;
{&lt;br /&gt;
  writeline('var1 ist nicht 42');&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Dies ist ersteinmal sehr einfach und wirkt auf den ersten Blick sinnlos, was es auch ist. Aber es zeigt auf einfache Art, wie man 2 Werte miteinander vergleicht, dies kann man zum Beispiel dafür nutzen, um zu prüfen wieviel Lageraum ein Schiff noch hat. Dazu aber irgendwann später mehr.&lt;br /&gt;
Bleiben wir bei dem Code und schauen ihn uns einmal genauer an:&lt;br /&gt;
In der ersten Zeile wird die Variable '''var1''' definiert, dies sollte aus Kapitel 2 bekannt sein.&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;If (var1 = 1)&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Hier wird der vergleich durgeführt, in diesem Fall wir geschaut ob der Wert von Zahl1 42 ist. &lt;br /&gt;
Man könnte an dieser Stelle genausogut prüfen ob der Wert größer oder kleiner ist, als ein anderer.&lt;br /&gt;
Hierfür nutzt man dann nicht &amp;quot;=&amp;quot; sondern &amp;quot;&amp;lt;&amp;quot;,&amp;quot;&amp;gt;&amp;quot;,&amp;quot;&amp;lt;=&amp;quot;,&amp;quot;&amp;gt;=&amp;quot;&lt;br /&gt;
Innerhalb der { } folgt dann der Code, welcher ausgehührt werden soll, wenn die Bedigung stimmt, also in diesem Fall, wenn '''var1 ''' gleich 42 ist. &lt;br /&gt;
&lt;br /&gt;
Das folgende ''Else'' mit den Klammern gibt, welche Aktionen ausgeführt werden sollen, wenn die Bedingung nicht stimmt.&lt;br /&gt;
&lt;br /&gt;
Zu guter letzt gibt es noch ''Elseif'' dies ist dafür gedacht wenn man mehr als eine Alternative hat.&lt;br /&gt;
Beispiel&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
VAR var1 AS Integer = 42;&lt;br /&gt;
if (var1 &amp;lt; 42)&lt;br /&gt;
{&lt;br /&gt;
  writeline('var1 ist kleiner als 42');&lt;br /&gt;
}&lt;br /&gt;
elseif (var1 &amp;gt; 42)&lt;br /&gt;
{&lt;br /&gt;
  writeline('var1 ist größer als 42');&lt;br /&gt;
}&lt;br /&gt;
else&lt;br /&gt;
{&lt;br /&gt;
  writeline('var1 ist weder größer noch kleiner als 42');&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Dies ist nicht auf ein ''elseif'' beschränkt, es können beliebig viele sein.&lt;br /&gt;
&lt;br /&gt;
===Schleifen===&lt;br /&gt;
Die soeben kennen gelernten Strukturen helfen uns Fallunterscheidungen zu machen. Aber was machen wir wenn wir eine ganze Liste (zum Beispiel Schiffe) haben und die abarbeiten wollen? Dafür gibt es ''Schleifen'', hier unterscheid man in drei Arten: Kopf-, Fuss- und Zählergesteuert.&lt;br /&gt;
====while====&lt;br /&gt;
While Schleifen sind Kopfgesteuert, dass heißt, solange die Bedingung zutrifft, wird der Inhalt der Schleife ausgeführt.&lt;br /&gt;
Es gelten die selben Operatoren wie bei Abfragen mit if: =,&amp;lt;,&amp;gt;,&amp;gt;=,&amp;lt;=,&amp;lt;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
VAR i AS Integer;&lt;br /&gt;
i = 0;&lt;br /&gt;
writeline('Ich zähle jetzt bis Zehn');&lt;br /&gt;
while ( i &amp;lt;= 10)&lt;br /&gt;
{&lt;br /&gt;
  writeline(CStr(i));&lt;br /&gt;
  i = i + 1;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Solange '''i''' kleiner oder gleich 10 ist, wird '''i''' ausgegeben und dann einen hochgezählt. &lt;br /&gt;
Bei Whileschleifen ist zu beachten, dass wenn die Bedingung zu Anfang bereits '''nicht''' erfüllt ist, dass sie dann nicht durchläuft. Soll sie mindestens einmal durchlaufen muss man Fussgesteuerte Schleifen wählen.&lt;br /&gt;
====Do====&lt;br /&gt;
Do-Schleifen sind Fussgesteuert. Sie funktionieren wie While-Schleifen nur das sie mindestens einmal durchlaufen.&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
VAR i AS Integer;&lt;br /&gt;
i = 10;&lt;br /&gt;
writeline('Ich zähle jetzt bis Null');&lt;br /&gt;
{&lt;br /&gt;
  writeline(CStr(i));&lt;br /&gt;
  i = i -1;&lt;br /&gt;
}&lt;br /&gt;
Do (i &amp;gt;= 0);&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Gebe '''i''' solange aus und zähle einen runter, solange '''i''' größer gleich null ist.&lt;br /&gt;
Aus der Beschreibung wird deutlich wo der unterschied zwischen While- und Do-Schleifen liegt.&lt;br /&gt;
&lt;br /&gt;
In beiden Schleifen wird deutlich das ich jedes mal die Variable '''i''' runter bzw. hochzählen muss, um dies zu umgehen gibt es die möglichkeit Zählergesteuerte Schleifen zu verwenden.&lt;br /&gt;
====For====&lt;br /&gt;
For-Schleifen sind genau dies. &lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
VAR i AS Integer;&lt;br /&gt;
For ( i = 0 To 10)&lt;br /&gt;
{&lt;br /&gt;
  writeline(CStr(i));&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
auf diese Weise kann man sich ein wenig Arbeit abnehmen, da die Schleife einem das Zählen abnimmt. So kann man auch Endlosschleifen vermeiden, die auftreten wenn man vergisst, die Schleifenvariable (in diesen Fällen immer '''i''') runter- bzw. hochzuzählen.&lt;br /&gt;
&lt;br /&gt;
For-Schleifen bieten noch eine weitere Möglichkeit: Es kann angegeben werden in welchen Schritten die Schleife zählt.&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
VAR i AS Integer;&lt;br /&gt;
For ( i = 0 To 100 Step 10)&lt;br /&gt;
{&lt;br /&gt;
  writeline(CStr(i));&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Der Code ist der bis auf das ''Step'' identisch. Die Zahl die hinter Step steht kann sowohl positiv als auch negativ sein.&lt;br /&gt;
&lt;br /&gt;
==Kapitel 4 - Der Shipmanager==&lt;br /&gt;
&lt;br /&gt;
==Autoren==&lt;br /&gt;
(hier dürfen sich diejenigen Verewigen die Hier min. ein Kapitel geschrieben haben[sonst kommt noch einer daher nur weil er nen rechtschreibfehler verbessert hat ;)])&lt;br /&gt;
{|&lt;br /&gt;
!Nickname&lt;br /&gt;
!IG-id&lt;br /&gt;
!Kapitel&lt;br /&gt;
|-&lt;br /&gt;
|WiZz4Rd&lt;br /&gt;
|16475&lt;br /&gt;
|Kapitel 1, Kapitel 2&lt;br /&gt;
|-&lt;br /&gt;
|Stryke&lt;br /&gt;
|28885&lt;br /&gt;
|Vorwort, Kapitel 3&lt;br /&gt;
|-&lt;br /&gt;
|[[Spieler:Xenon|Xenon]]&lt;br /&gt;
|10127&lt;br /&gt;
|Korrektur &amp;amp; Überarbeitung&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Scripting-Hilfe|Anfängerkurs]]&lt;/div&gt;</summary>
		<author><name>Stryke</name></author>	</entry>

	<entry>
		<id>https://wiki.stne.net/index.php?title=Scripting:Anf%C3%A4ngerkurs</id>
		<title>Scripting:Anfängerkurs</title>
		<link rel="alternate" type="text/html" href="https://wiki.stne.net/index.php?title=Scripting:Anf%C3%A4ngerkurs"/>
				<updated>2006-06-10T12:21:23Z</updated>
		
		<summary type="html">&lt;p&gt;Stryke: /* Kapitel 2 - Variablen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Scriptingmenue}}&lt;br /&gt;
'''Hier wird in nächster Zeit ein Anfängerkurs für die STNE-Scriptengine entstehen. Wer mithelfen will oder bereits jetzt fragen hat kann sich vertrauensvoll an uns wenden, einfach im irc den channel #scripting joinen!'''&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
==Vorwort==&lt;br /&gt;
Dieser Kurs richtet sich vor allem an diejenigen, die zuvor noch nie mit Programmierung zu tun hatten und trotzdem gerne Scripts für STNE schreiben würden. Die sollen hier auf möglichst einfache Weise einen Einstieg finden. &lt;br /&gt;
Aber bitte erwartet keine Wunder, niemand der keine Ahnung vom Programieren hat, kann dies über Nacht lernen. Daher ist insbesondere eine Sache von enormer Wichtigkeit: Geduld – denn nur wer mit Geduld die Sachen angeht wird letzten Endes mit einem funktionieren Script belohnt. Wer die schnellen Erfolge sucht, der sollte es gleich lassen.&lt;br /&gt;
Wir wünschen allen viel Spaß und gutes Gelingen.&lt;br /&gt;
==Kapitel 1 - Strings==&lt;br /&gt;
===String? - Kann man das essen?===&lt;br /&gt;
'''Nein''', ein String (englisch) oder eine Zeichenkette, ist eine Folge von Zeichen (z.B. Buchstaben, Ziffern, Sonderzeichen, und Steuerzeichen) aus einem definierten Zeichensatz.&lt;br /&gt;
&lt;br /&gt;
Nun wissen wir also, was dieser ominöse String überhaupt ist. Wenden wir uns nun zur Ausgabe von Strings!&lt;br /&gt;
&lt;br /&gt;
=== Ausgabe von Strings ===&lt;br /&gt;
In diesem Kapitel werden wir uns der einfachen Ausgabe von Strings zuwenden. Um einen String auszugeben, müssen wir uns natürlich erst einmal überlegen was wir überhaupt ausgeben wollen. Nehmen wir als Beispiel einfach ''&amp;quot;Hallo!&amp;quot;''. Als Nächstes müssen wir wissen wie wir der Engine sagen, dass sie etwas ausgeben soll! Dies geschieht mit dem Befehl ''writeline();''.&lt;br /&gt;
&lt;br /&gt;
Hier ein kleines Beispiel:&lt;br /&gt;
&amp;lt;pre&amp;gt;writeline('Hallo!');&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In den Klammern steht immer der String, der ausgegeben werden soll. Die einfachen Anführungszeichen sagen dem Befehl, dass das Nachfolgende ein String und keine Variable ist (Was eine Variable ist erfahren wir im nächsten Kapitel). Das Semikolon signalisiert der Engine, dass der Befehl hier endet, dies wird nicht bei jedem Befehl benötigt.&lt;br /&gt;
&lt;br /&gt;
Wenn man sich mehrere Strings nach einander ausgeben möchte, ist es natürlich unsinnig, für jedes Wort einen neuen ''writeline();'' Befehl auszuführen. Also kann man Strings an einander reihen. Hierzu setzt man einfach ein ''&amp;amp;''-Zeichen zwischen die Strings. Natürlich kann man auch die jeweiligen Strings einfach, wie wir noch später lernen durch Variablen ersetzen.&lt;br /&gt;
&amp;lt;pre&amp;gt;writeline('Hallo!' &amp;amp; ' Wie geht es?');&amp;lt;/pre&amp;gt;&lt;br /&gt;
Wichtig hierbei ist, dass das ''&amp;amp;''-Zeichen kein Leerzeichen einfügt. Dies muss manuell innerhalb des Strings passieren.&lt;br /&gt;
&lt;br /&gt;
===Zusammenfassung: Strings===&lt;br /&gt;
&lt;br /&gt;
* Ein String ist eine Folge von verschiedenen Zeichen.&lt;br /&gt;
* Zum Ausgeben von Strings wird ''writeline();'' verwendet.&lt;br /&gt;
* Es ist möglich mehrere Strings bzw. Variablen mit Hilfe des ''&amp;amp;''-Zeichens innerhalb des Befehls ''writeline();'' regelrecht anzuhängen.&lt;br /&gt;
&lt;br /&gt;
==Kapitel 2 - Variablen==&lt;br /&gt;
===Variablen? - Schon wieder was zum futtern?===&lt;br /&gt;
'''Nein''', lediglich ein weiterer Fachbegriff der Programmierer. Variablen sind eine Art von Platzhalter, in denen man Informationen, wie zum Beispiel Strings, für eine spätere Verwendung abspeichern kann. Natürlich gibt es für verschiedene Informationen ganz spezielle und verschiedene Variablentypen, die man auch [[Scripting:Datentypen|Datentypen]] nennt.&lt;br /&gt;
&lt;br /&gt;
Die wichtigsten [[Scripting:Datentypen|Datentypen]] sind:&lt;br /&gt;
* String  - &lt;br /&gt;
* Integer -&lt;br /&gt;
* Boolean -&lt;br /&gt;
&lt;br /&gt;
===Variablen setzen===&lt;br /&gt;
Da das Arbeiten mit statischen Daten auf Dauer, vor allem bei längeren Scripten, ziemlich zeitaufwendig und unflexibel ist, verwendet man Variablen. Diese speichern Daten, geben sie auf Wunsch aus und lassen sich auch belibig oft verändern.&lt;br /&gt;
&lt;br /&gt;
Um eine Variable zu erschaffen verwendet man den Befehl ''var''. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
ach ''var'' kommt dann der Variablen Name, dieser darf Zahlen und Buchstaben enthalten. Zahlen allerdings nur mit einer Ausnahme, sie dürfen nicht an erster Stelle stehen. optional danach kann ein as stehen (as, engl., als) dieses gibt an was für einen Inhalt die Variable hat, zb. str für string also eine Zeichenkette. Hier ein Beispiel:&lt;br /&gt;
 var i1 as str&lt;br /&gt;
falsche wäre&lt;br /&gt;
 var 1i as str&lt;br /&gt;
da die 1 vorne steht geht das nicht, warum wird sich später klären wenn wir zu if-schleifen kommen.&lt;br /&gt;
Um einer Variable einen Inhalt zuzuordnen setzt man die Variable vor ein Gleichheitszeichen, dahinter kommt dann der Inhalt in unserem nächsten Beispiel ein String.&lt;br /&gt;
 var test as str&lt;br /&gt;
 test = 'Hallo!'&lt;br /&gt;
man kann das ganze auch in eine Zeile packen, das sieht dann wie folgt aus:&lt;br /&gt;
 var test as str = 'Hallo!'&lt;br /&gt;
Auch hier sehen wir wieder die einfachen Anführungszeichen als Kennzeichen für einen String. Wir können Variablen aber auch andere Werte wie Integer oder Bolean zuweisen. Dazu einfach str durch den jewaligen Typ ersetzten.(Liste der Typen: [[Scripting:Typen|klick mich]])&lt;br /&gt;
&lt;br /&gt;
Auch kann man die Variable &amp;quot;leeren&amp;quot; hirzu gibt man ihr einfach nichts mit, hier auch dazu ein Beispiel:&lt;br /&gt;
 var test as str = 'Hallo!'&lt;br /&gt;
 test = ''&lt;br /&gt;
&lt;br /&gt;
===Anwendungsbeispiele mit Variablen===&lt;br /&gt;
 var test as str = 'Hallo!'&lt;br /&gt;
 writeline( test &amp;amp; ' Wie gehts?');&lt;br /&gt;
Auch hier ist weider zu beachten das kein Leerzeiche eingefügt wird! Die Variable kann an jeder Stelle innerhalb der Klammern stehen, zu beachten ist nur das sie nicht innerhalb von Anführungszeichen steht sonst wird die Variable als String gewertet.&lt;br /&gt;
 var test as str = 'Hallo!'&lt;br /&gt;
 writeline(test);&lt;br /&gt;
Hier wird nun zum Beispiel nur eine Variable ausgegeben.&lt;br /&gt;
&lt;br /&gt;
===Umwandlung von Variablen in andere Datentypen===&lt;br /&gt;
Wollen wir eine Integer-Variable ausgeben, so bekommen wir ein Problem. Der Computer verarbeitet Integer intern anders als String. String kann er ausgeben Integer nicht. Daher müssen alle Integervariablen (wie allen anderen auch) in Stringvariablen umgewandelt werden, bevor man diese ausgeben kann.&lt;br /&gt;
Die geschieht über den Befehl &lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;CStr();&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Beispiel:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
VAR zahl AS Integer;&lt;br /&gt;
zahl = 5;&lt;br /&gt;
writeline(CStr(Zahl));&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Umgekehrt müssen Stringvariablen in Integer umgewandelt werden, wenn mit diesen zum Beispiel gerechnet werden soll.&lt;br /&gt;
Dies geschießt über:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;CInt();&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Beispiel:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
VAR einstring AS String;&lt;br /&gt;
VAR einezahl AS Integer;&lt;br /&gt;
einstring = '42';&lt;br /&gt;
einezahl = CInt(einstring);&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Regeln bei der Bennenung von Variablen===&lt;br /&gt;
&lt;br /&gt;
*&lt;br /&gt;
*&lt;br /&gt;
*&lt;br /&gt;
*&lt;br /&gt;
&lt;br /&gt;
===Zusammenfassung: Variablen===&lt;br /&gt;
&lt;br /&gt;
==Kapitel 3 - Kontrollstrukturen==&lt;br /&gt;
Da wir uns in Kapitel 2 mit Variablen beschäftigt haben, können wir uns nun dem eigentlichen Aufwand beim Programmieren zuwenden: den Kontrollstrukturen. Diese Wort klingt ersteinmal sehr hochtrabend, an und für sich ist es jedoch sehr einfach.&lt;br /&gt;
&lt;br /&gt;
===If - then - Else===&lt;br /&gt;
Es werden einfach 2 Variablen miteinander verglichen und dann wird darauf reagiert.&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
VAR var1 AS Integer = 42;&lt;br /&gt;
if (varl1 = 42)&lt;br /&gt;
{&lt;br /&gt;
  writeline('var1 ist 42');&lt;br /&gt;
}&lt;br /&gt;
else&lt;br /&gt;
{&lt;br /&gt;
  writeline('var1 ist nicht 42');&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Dies ist ersteinmal sehr einfach und wirkt auf den ersten Blick sinnlos, was es auch ist. Aber es zeigt auf einfache Art, wie man 2 Werte miteinander vergleicht, dies kann man zum Beispiel dafür nutzen, um zu prüfen wieviel Lageraum ein Schiff noch hat. Dazu aber irgendwann später mehr.&lt;br /&gt;
Bleiben wir bei dem Code und schauen ihn uns einmal genauer an:&lt;br /&gt;
In der ersten Zeile wird die Variable '''var1''' definiert, dies sollte aus Kapitel 2 bekannt sein.&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;If (var1 = 1)&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Hier wird der vergleich durgeführt, in diesem Fall wir geschaut ob der Wert von Zahl1 42 ist. &lt;br /&gt;
Man könnte an dieser Stelle genausogut prüfen ob der Wert größer oder kleiner ist, als ein anderer.&lt;br /&gt;
Hierfür nutzt man dann nicht &amp;quot;=&amp;quot; sondern &amp;quot;&amp;lt;&amp;quot;,&amp;quot;&amp;gt;&amp;quot;,&amp;quot;&amp;lt;=&amp;quot;,&amp;quot;&amp;gt;=&amp;quot;&lt;br /&gt;
Innerhalb der { } folgt dann der Code, welcher ausgehührt werden soll, wenn die Bedigung stimmt, also in diesem Fall, wenn '''var1 ''' gleich 42 ist. &lt;br /&gt;
&lt;br /&gt;
Das folgende ''Else'' mit den Klammern gibt, welche Aktionen ausgeführt werden sollen, wenn die Bedingung nicht stimmt.&lt;br /&gt;
&lt;br /&gt;
Zu guter letzt gibt es noch ''Elseif'' dies ist dafür gedacht wenn man mehr als eine Alternative hat.&lt;br /&gt;
Beispiel&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
VAR var1 AS Integer = 42;&lt;br /&gt;
if (var1 &amp;lt; 42)&lt;br /&gt;
{&lt;br /&gt;
  writeline('var1 ist kleiner als 42');&lt;br /&gt;
}&lt;br /&gt;
elseif (var1 &amp;gt; 42)&lt;br /&gt;
{&lt;br /&gt;
  writeline('var1 ist größer als 42');&lt;br /&gt;
}&lt;br /&gt;
else&lt;br /&gt;
{&lt;br /&gt;
  writeline('var1 ist weder größer noch kleiner als 42');&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Dies ist nicht auf ein ''elseif'' beschränkt, es können beliebig viele sein.&lt;br /&gt;
&lt;br /&gt;
===Schleifen===&lt;br /&gt;
Die soeben kennen gelernten Strukturen helfen uns Fallunterscheidungen zu machen. Aber was machen wir wenn wir eine ganze Liste (zum Beispiel Schiffe) haben und die abarbeiten wollen? Dafür gibt es ''Schleifen'', hier unterscheid man in drei Arten: Kopf-, Fuss- und Zählergesteuert.&lt;br /&gt;
====while====&lt;br /&gt;
While Schleifen sind Kopfgesteuert, dass heißt, solange die Bedingung zutrifft, wird der Inhalt der Schleife ausgeführt.&lt;br /&gt;
Es gelten die selben Operatoren wie bei Abfragen mit if: =,&amp;lt;,&amp;gt;,&amp;gt;=,&amp;lt;=,&amp;lt;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
VAR i AS Integer;&lt;br /&gt;
i = 0;&lt;br /&gt;
writeline('Ich zähle jetzt bis Zehn');&lt;br /&gt;
while ( i &amp;lt;= 10)&lt;br /&gt;
{&lt;br /&gt;
  writeline(CStr(i));&lt;br /&gt;
  i = i + 1;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Solange '''i''' kleiner oder gleich 10 ist, wird '''i''' ausgegeben und dann einen hochgezählt. &lt;br /&gt;
Bei Whileschleifen ist zu beachten, dass wenn die Bedingung zu Anfang bereits '''nicht''' erfüllt ist, dass sie dann nicht durchläuft. Soll sie mindestens einmal durchlaufen muss man Fussgesteuerte Schleifen wählen.&lt;br /&gt;
====Do====&lt;br /&gt;
Do-Schleifen sind Fussgesteuert. Sie funktionieren wie While-Schleifen nur das sie mindestens einmal durchlaufen.&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
VAR i AS Integer;&lt;br /&gt;
i = 10;&lt;br /&gt;
writeline('Ich zähle jetzt bis Null');&lt;br /&gt;
{&lt;br /&gt;
  writeline(CStr(i));&lt;br /&gt;
  i = i -1;&lt;br /&gt;
}&lt;br /&gt;
Do (i &amp;gt;= 0);&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Gebe '''i''' solange aus und zähle einen runter, solange '''i''' größer gleich null ist.&lt;br /&gt;
Aus der Beschreibung wird deutlich wo der unterschied zwischen While- und Do-Schleifen liegt.&lt;br /&gt;
&lt;br /&gt;
In beiden Schleifen wird deutlich das ich jedes mal die Variable '''i''' runter bzw. hochzählen muss, um dies zu umgehen gibt es die möglichkeit Zählergesteuerte Schleifen zu verwenden.&lt;br /&gt;
====For====&lt;br /&gt;
For-Schleifen sind genau dies. &lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
VAR i AS Integer;&lt;br /&gt;
For ( i = 0 To 10)&lt;br /&gt;
{&lt;br /&gt;
  writeline(CStr(i));&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
auf diese Weise kann man sich ein wenig Arbeit abnehmen, da die Schleife einem das Zählen abnimmt. So kann man auch Endlosschleifen vermeiden, die auftreten wenn man vergisst, die Schleifenvariable (in diesen Fällen immer '''i''') runter- bzw. hochzuzählen.&lt;br /&gt;
&lt;br /&gt;
For-Schleifen bieten noch eine weitere Möglichkeit: Es kann angegeben werden in welchen Schritten die Schleife zählt.&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
VAR i AS Integer;&lt;br /&gt;
For ( i = 0 To 100 Step 10)&lt;br /&gt;
{&lt;br /&gt;
  writeline(CStr(i));&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Der Code ist der bis auf das ''Step'' identisch. Die Zahl die hinter Step steht kann sowohl positiv als auch negativ sein.&lt;br /&gt;
&lt;br /&gt;
==Autoren==&lt;br /&gt;
(hier dürfen sich diejenigen Verewigen die Hier min. ein Kapitel geschrieben haben[sonst kommt noch einer daher nur weil er nen rechtschreibfehler verbessert hat ;)])&lt;br /&gt;
{|&lt;br /&gt;
!Nickname&lt;br /&gt;
!IG-id&lt;br /&gt;
!Kapitel&lt;br /&gt;
|-&lt;br /&gt;
|WiZz4Rd&lt;br /&gt;
|16475&lt;br /&gt;
|Kapitel 1, Kapitel 2&lt;br /&gt;
|-&lt;br /&gt;
|Stryke&lt;br /&gt;
|28885&lt;br /&gt;
|Vorwort, Kapitel 3&lt;br /&gt;
|-&lt;br /&gt;
|[[Spieler:Xenon|Xenon]]&lt;br /&gt;
|10127&lt;br /&gt;
|Korrektur &amp;amp; Überarbeitung&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Scripting-Hilfe|Anfängerkurs]]&lt;/div&gt;</summary>
		<author><name>Stryke</name></author>	</entry>

	<entry>
		<id>https://wiki.stne.net/index.php?title=Scripting:Anf%C3%A4ngerkurs</id>
		<title>Scripting:Anfängerkurs</title>
		<link rel="alternate" type="text/html" href="https://wiki.stne.net/index.php?title=Scripting:Anf%C3%A4ngerkurs"/>
				<updated>2006-06-10T12:14:49Z</updated>
		
		<summary type="html">&lt;p&gt;Stryke: /* Schleifen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Scriptingmenue}}&lt;br /&gt;
'''Hier wird in nächster Zeit ein Anfängerkurs für die STNE-Scriptengine entstehen. Wer mithelfen will oder bereits jetzt fragen hat kann sich vertrauensvoll an uns wenden, einfach im irc den channel #scripting joinen!'''&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
==Vorwort==&lt;br /&gt;
Dieser Kurs richtet sich vor allem an diejenigen, die zuvor noch nie mit Programmierung zu tun hatten und trotzdem gerne Scripts für STNE schreiben würden. Die sollen hier auf möglichst einfache Weise einen Einstieg finden. &lt;br /&gt;
Aber bitte erwartet keine Wunder, niemand der keine Ahnung vom Programieren hat, kann dies über Nacht lernen. Daher ist insbesondere eine Sache von enormer Wichtigkeit: Geduld – denn nur wer mit Geduld die Sachen angeht wird letzten Endes mit einem funktionieren Script belohnt. Wer die schnellen Erfolge sucht, der sollte es gleich lassen.&lt;br /&gt;
Wir wünschen allen viel Spaß und gutes Gelingen.&lt;br /&gt;
==Kapitel 1 - Strings==&lt;br /&gt;
===String? - Kann man das essen?===&lt;br /&gt;
'''Nein''', ein String (englisch) oder eine Zeichenkette, ist eine Folge von Zeichen (z.B. Buchstaben, Ziffern, Sonderzeichen, und Steuerzeichen) aus einem definierten Zeichensatz.&lt;br /&gt;
&lt;br /&gt;
Nun wissen wir also, was dieser ominöse String überhaupt ist. Wenden wir uns nun zur Ausgabe von Strings!&lt;br /&gt;
&lt;br /&gt;
=== Ausgabe von Strings ===&lt;br /&gt;
In diesem Kapitel werden wir uns der einfachen Ausgabe von Strings zuwenden. Um einen String auszugeben, müssen wir uns natürlich erst einmal überlegen was wir überhaupt ausgeben wollen. Nehmen wir als Beispiel einfach ''&amp;quot;Hallo!&amp;quot;''. Als Nächstes müssen wir wissen wie wir der Engine sagen, dass sie etwas ausgeben soll! Dies geschieht mit dem Befehl ''writeline();''.&lt;br /&gt;
&lt;br /&gt;
Hier ein kleines Beispiel:&lt;br /&gt;
&amp;lt;pre&amp;gt;writeline('Hallo!');&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In den Klammern steht immer der String, der ausgegeben werden soll. Die einfachen Anführungszeichen sagen dem Befehl, dass das Nachfolgende ein String und keine Variable ist (Was eine Variable ist erfahren wir im nächsten Kapitel). Das Semikolon signalisiert der Engine, dass der Befehl hier endet, dies wird nicht bei jedem Befehl benötigt.&lt;br /&gt;
&lt;br /&gt;
Wenn man sich mehrere Strings nach einander ausgeben möchte, ist es natürlich unsinnig, für jedes Wort einen neuen ''writeline();'' Befehl auszuführen. Also kann man Strings an einander reihen. Hierzu setzt man einfach ein ''&amp;amp;''-Zeichen zwischen die Strings. Natürlich kann man auch die jeweiligen Strings einfach, wie wir noch später lernen durch Variablen ersetzen.&lt;br /&gt;
&amp;lt;pre&amp;gt;writeline('Hallo!' &amp;amp; ' Wie geht es?');&amp;lt;/pre&amp;gt;&lt;br /&gt;
Wichtig hierbei ist, dass das ''&amp;amp;''-Zeichen kein Leerzeichen einfügt. Dies muss manuell innerhalb des Strings passieren.&lt;br /&gt;
&lt;br /&gt;
===Zusammenfassung: Strings===&lt;br /&gt;
&lt;br /&gt;
* Ein String ist eine Folge von verschiedenen Zeichen.&lt;br /&gt;
* Zum Ausgeben von Strings wird ''writeline();'' verwendet.&lt;br /&gt;
* Es ist möglich mehrere Strings bzw. Variablen mit Hilfe des ''&amp;amp;''-Zeichens innerhalb des Befehls ''writeline();'' regelrecht anzuhängen.&lt;br /&gt;
&lt;br /&gt;
==Kapitel 2 - Variablen==&lt;br /&gt;
===Variablen? - Schon wieder was zum futtern?===&lt;br /&gt;
'''Nein''', lediglich ein weiterer Fachbegriff der Programmierer. Variablen sind eine Art von Platzhalter, in denen man Informationen, wie zum Beispiel Strings, für eine spätere Verwendung abspeichern kann. Natürlich gibt es für verschiedene Informationen ganz spezielle und verschiedene Variablentypen, die man auch [[Scripting:Datentypen|Datentypen]] nennt.&lt;br /&gt;
&lt;br /&gt;
Die wichtigsten [[Scripting:Datentypen|Datentypen]] sind:&lt;br /&gt;
* String  - &lt;br /&gt;
* Integer -&lt;br /&gt;
* Boolean -&lt;br /&gt;
&lt;br /&gt;
===Variablen setzen===&lt;br /&gt;
Da das Arbeiten mit statischen Daten auf Dauer, vor allem bei längeren Scripten, ziemlich zeitaufwendig und unflexibel ist, verwendet man Variablen. Diese speichern Daten, geben sie auf Wunsch aus und lassen sich auch belibig oft verändern.&lt;br /&gt;
&lt;br /&gt;
Um eine Variable zu erschaffen verwendet man den Befehl ''var''. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
ach ''var'' kommt dann der Variablen Name, dieser darf Zahlen und Buchstaben enthalten. Zahlen allerdings nur mit einer Ausnahme, sie dürfen nicht an erster Stelle stehen. optional danach kann ein as stehen (as, engl., als) dieses gibt an was für einen Inhalt die Variable hat, zb. str für string also eine Zeichenkette. Hier ein Beispiel:&lt;br /&gt;
 var i1 as str&lt;br /&gt;
falsche wäre&lt;br /&gt;
 var 1i as str&lt;br /&gt;
da die 1 vorne steht geht das nicht, warum wird sich später klären wenn wir zu if-schleifen kommen.&lt;br /&gt;
Um einer Variable einen Inhalt zuzuordnen setzt man die Variable vor ein Gleichheitszeichen, dahinter kommt dann der Inhalt in unserem nächsten Beispiel ein String.&lt;br /&gt;
 var test as str&lt;br /&gt;
 test = 'Hallo!'&lt;br /&gt;
man kann das ganze auch in eine Zeile packen, das sieht dann wie folgt aus:&lt;br /&gt;
 var test as str = 'Hallo!'&lt;br /&gt;
Auch hier sehen wir wieder die einfachen Anführungszeichen als Kennzeichen für einen String. Wir können Variablen aber auch andere Werte wie Integer oder Bolean zuweisen. Dazu einfach str durch den jewaligen Typ ersetzten.(Liste der Typen: [[Scripting:Typen|klick mich]])&lt;br /&gt;
&lt;br /&gt;
Auch kann man die Variable &amp;quot;leeren&amp;quot; hirzu gibt man ihr einfach nichts mit, hier auch dazu ein Beispiel:&lt;br /&gt;
 var test as str = 'Hallo!'&lt;br /&gt;
 test = ''&lt;br /&gt;
&lt;br /&gt;
===Anwendungsbeispiele mit Variablen===&lt;br /&gt;
 var test as str = 'Hallo!'&lt;br /&gt;
 writeline( test &amp;amp; ' Wie gehts?');&lt;br /&gt;
Auch hier ist weider zu beachten das kein Leerzeiche eingefügt wird! Die Variable kann an jeder Stelle innerhalb der Klammern stehen, zu beachten ist nur das sie nicht innerhalb von Anführungszeichen steht sonst wird die Variable als String gewertet.&lt;br /&gt;
 var test as str = 'Hallo!'&lt;br /&gt;
 writeline(test);&lt;br /&gt;
Hier wird nun zum Beispiel nur eine Variable ausgegeben.&lt;br /&gt;
&lt;br /&gt;
===Regeln bei der Bennenung von Variablen===&lt;br /&gt;
&lt;br /&gt;
*&lt;br /&gt;
*&lt;br /&gt;
*&lt;br /&gt;
*&lt;br /&gt;
&lt;br /&gt;
===Zusammenfassung: Variablen===&lt;br /&gt;
&lt;br /&gt;
==Kapitel 3 - Kontrollstrukturen==&lt;br /&gt;
Da wir uns in Kapitel 2 mit Variablen beschäftigt haben, können wir uns nun dem eigentlichen Aufwand beim Programmieren zuwenden: den Kontrollstrukturen. Diese Wort klingt ersteinmal sehr hochtrabend, an und für sich ist es jedoch sehr einfach.&lt;br /&gt;
&lt;br /&gt;
===If - then - Else===&lt;br /&gt;
Es werden einfach 2 Variablen miteinander verglichen und dann wird darauf reagiert.&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
VAR var1 AS Integer = 42;&lt;br /&gt;
if (varl1 = 42)&lt;br /&gt;
{&lt;br /&gt;
  writeline('var1 ist 42');&lt;br /&gt;
}&lt;br /&gt;
else&lt;br /&gt;
{&lt;br /&gt;
  writeline('var1 ist nicht 42');&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Dies ist ersteinmal sehr einfach und wirkt auf den ersten Blick sinnlos, was es auch ist. Aber es zeigt auf einfache Art, wie man 2 Werte miteinander vergleicht, dies kann man zum Beispiel dafür nutzen, um zu prüfen wieviel Lageraum ein Schiff noch hat. Dazu aber irgendwann später mehr.&lt;br /&gt;
Bleiben wir bei dem Code und schauen ihn uns einmal genauer an:&lt;br /&gt;
In der ersten Zeile wird die Variable '''var1''' definiert, dies sollte aus Kapitel 2 bekannt sein.&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;If (var1 = 1)&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Hier wird der vergleich durgeführt, in diesem Fall wir geschaut ob der Wert von Zahl1 42 ist. &lt;br /&gt;
Man könnte an dieser Stelle genausogut prüfen ob der Wert größer oder kleiner ist, als ein anderer.&lt;br /&gt;
Hierfür nutzt man dann nicht &amp;quot;=&amp;quot; sondern &amp;quot;&amp;lt;&amp;quot;,&amp;quot;&amp;gt;&amp;quot;,&amp;quot;&amp;lt;=&amp;quot;,&amp;quot;&amp;gt;=&amp;quot;&lt;br /&gt;
Innerhalb der { } folgt dann der Code, welcher ausgehührt werden soll, wenn die Bedigung stimmt, also in diesem Fall, wenn '''var1 ''' gleich 42 ist. &lt;br /&gt;
&lt;br /&gt;
Das folgende ''Else'' mit den Klammern gibt, welche Aktionen ausgeführt werden sollen, wenn die Bedingung nicht stimmt.&lt;br /&gt;
&lt;br /&gt;
Zu guter letzt gibt es noch ''Elseif'' dies ist dafür gedacht wenn man mehr als eine Alternative hat.&lt;br /&gt;
Beispiel&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
VAR var1 AS Integer = 42;&lt;br /&gt;
if (var1 &amp;lt; 42)&lt;br /&gt;
{&lt;br /&gt;
  writeline('var1 ist kleiner als 42');&lt;br /&gt;
}&lt;br /&gt;
elseif (var1 &amp;gt; 42)&lt;br /&gt;
{&lt;br /&gt;
  writeline('var1 ist größer als 42');&lt;br /&gt;
}&lt;br /&gt;
else&lt;br /&gt;
{&lt;br /&gt;
  writeline('var1 ist weder größer noch kleiner als 42');&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Dies ist nicht auf ein ''elseif'' beschränkt, es können beliebig viele sein.&lt;br /&gt;
&lt;br /&gt;
===Schleifen===&lt;br /&gt;
Die soeben kennen gelernten Strukturen helfen uns Fallunterscheidungen zu machen. Aber was machen wir wenn wir eine ganze Liste (zum Beispiel Schiffe) haben und die abarbeiten wollen? Dafür gibt es ''Schleifen'', hier unterscheid man in drei Arten: Kopf-, Fuss- und Zählergesteuert.&lt;br /&gt;
====while====&lt;br /&gt;
While Schleifen sind Kopfgesteuert, dass heißt, solange die Bedingung zutrifft, wird der Inhalt der Schleife ausgeführt.&lt;br /&gt;
Es gelten die selben Operatoren wie bei Abfragen mit if: =,&amp;lt;,&amp;gt;,&amp;gt;=,&amp;lt;=,&amp;lt;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
VAR i AS Integer;&lt;br /&gt;
i = 0;&lt;br /&gt;
writeline('Ich zähle jetzt bis Zehn');&lt;br /&gt;
while ( i &amp;lt;= 10)&lt;br /&gt;
{&lt;br /&gt;
  writeline(CStr(i));&lt;br /&gt;
  i = i + 1;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Solange '''i''' kleiner oder gleich 10 ist, wird '''i''' ausgegeben und dann einen hochgezählt. &lt;br /&gt;
Bei Whileschleifen ist zu beachten, dass wenn die Bedingung zu Anfang bereits '''nicht''' erfüllt ist, dass sie dann nicht durchläuft. Soll sie mindestens einmal durchlaufen muss man Fussgesteuerte Schleifen wählen.&lt;br /&gt;
====Do====&lt;br /&gt;
Do-Schleifen sind Fussgesteuert. Sie funktionieren wie While-Schleifen nur das sie mindestens einmal durchlaufen.&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
VAR i AS Integer;&lt;br /&gt;
i = 10;&lt;br /&gt;
writeline('Ich zähle jetzt bis Null');&lt;br /&gt;
{&lt;br /&gt;
  writeline(CStr(i));&lt;br /&gt;
  i = i -1;&lt;br /&gt;
}&lt;br /&gt;
Do (i &amp;gt;= 0);&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Gebe '''i''' solange aus und zähle einen runter, solange '''i''' größer gleich null ist.&lt;br /&gt;
Aus der Beschreibung wird deutlich wo der unterschied zwischen While- und Do-Schleifen liegt.&lt;br /&gt;
&lt;br /&gt;
In beiden Schleifen wird deutlich das ich jedes mal die Variable '''i''' runter bzw. hochzählen muss, um dies zu umgehen gibt es die möglichkeit Zählergesteuerte Schleifen zu verwenden.&lt;br /&gt;
====For====&lt;br /&gt;
For-Schleifen sind genau dies. &lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
VAR i AS Integer;&lt;br /&gt;
For ( i = 0 To 10)&lt;br /&gt;
{&lt;br /&gt;
  writeline(CStr(i));&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
auf diese Weise kann man sich ein wenig Arbeit abnehmen, da die Schleife einem das Zählen abnimmt. So kann man auch Endlosschleifen vermeiden, die auftreten wenn man vergisst, die Schleifenvariable (in diesen Fällen immer '''i''') runter- bzw. hochzuzählen.&lt;br /&gt;
&lt;br /&gt;
For-Schleifen bieten noch eine weitere Möglichkeit: Es kann angegeben werden in welchen Schritten die Schleife zählt.&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
VAR i AS Integer;&lt;br /&gt;
For ( i = 0 To 100 Step 10)&lt;br /&gt;
{&lt;br /&gt;
  writeline(CStr(i));&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Der Code ist der bis auf das ''Step'' identisch. Die Zahl die hinter Step steht kann sowohl positiv als auch negativ sein.&lt;br /&gt;
&lt;br /&gt;
==Autoren==&lt;br /&gt;
(hier dürfen sich diejenigen Verewigen die Hier min. ein Kapitel geschrieben haben[sonst kommt noch einer daher nur weil er nen rechtschreibfehler verbessert hat ;)])&lt;br /&gt;
{|&lt;br /&gt;
!Nickname&lt;br /&gt;
!IG-id&lt;br /&gt;
!Kapitel&lt;br /&gt;
|-&lt;br /&gt;
|WiZz4Rd&lt;br /&gt;
|16475&lt;br /&gt;
|Kapitel 1, Kapitel 2&lt;br /&gt;
|-&lt;br /&gt;
|Stryke&lt;br /&gt;
|28885&lt;br /&gt;
|Vorwort, Kapitel 3&lt;br /&gt;
|-&lt;br /&gt;
|[[Spieler:Xenon|Xenon]]&lt;br /&gt;
|10127&lt;br /&gt;
|Korrektur &amp;amp; Überarbeitung&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Scripting-Hilfe|Anfängerkurs]]&lt;/div&gt;</summary>
		<author><name>Stryke</name></author>	</entry>

	<entry>
		<id>https://wiki.stne.net/index.php?title=Scripting:Anf%C3%A4ngerkurs</id>
		<title>Scripting:Anfängerkurs</title>
		<link rel="alternate" type="text/html" href="https://wiki.stne.net/index.php?title=Scripting:Anf%C3%A4ngerkurs"/>
				<updated>2006-06-09T22:12:14Z</updated>
		
		<summary type="html">&lt;p&gt;Stryke: /* If - then - Else */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Scriptingmenue}}&lt;br /&gt;
'''Hier wird in nächster Zeit ein Anfängerkurs für die STNE-Scriptengine entstehen. Wer mithelfen will oder bereits jetzt fragen hat kann sich vertrauensvoll an uns wenden, einfach im irc den channel #scripting joinen!'''&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
==Vorwort==&lt;br /&gt;
Dieser Kurs richtet sich vor allem an diejenigen, die zuvor noch nie mit Programmierung zu tun hatten und trotzdem gerne Scripts für STNE schreiben würden. Die sollen hier auf möglichst einfache Weise einen Einstieg finden. &lt;br /&gt;
Aber bitte erwartet keine Wunder, niemand der keine Ahnung vom Programieren hat, kann dies über Nacht lernen. Daher ist insbesondere eine Sache von enormer Wichtigkeit: Geduld – denn nur wer mit Geduld die Sachen angeht wird letzten Endes mit einem funktionieren Script belohnt. Wer die schnellen Erfolge sucht, der sollte es gleich lassen.&lt;br /&gt;
Wir wünschen allen viel Spaß und gutes Gelingen.&lt;br /&gt;
==Kapitel 1 - Strings==&lt;br /&gt;
===String? - Kann man das essen?===&lt;br /&gt;
'''Nein''', ein String (englisch) oder eine Zeichenkette, ist eine Folge von Zeichen (z.B. Buchstaben, Ziffern, Sonderzeichen, und Steuerzeichen) aus einem definierten Zeichensatz.&lt;br /&gt;
&lt;br /&gt;
Nun wissen wir also, was dieser ominöse String überhaupt ist. Wenden wir uns nun zur Ausgabe von Strings!&lt;br /&gt;
&lt;br /&gt;
=== Ausgabe von Strings ===&lt;br /&gt;
In diesem Kapitel werden wir uns der einfachen Ausgabe von Strings zuwenden. Um einen String auszugeben, müssen wir uns natürlich erst einmal überlegen was wir überhaupt ausgeben wollen. Nehmen wir als Beispiel einfach ''&amp;quot;Hallo!&amp;quot;''. Als Nächstes müssen wir wissen wie wir der Engine sagen, dass sie etwas ausgeben soll! Dies geschieht mit dem Befehl ''writeline();''.&lt;br /&gt;
&lt;br /&gt;
Hier ein kleines Beispiel:&lt;br /&gt;
&amp;lt;pre&amp;gt;writeline('Hallo!');&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In den Klammern steht immer der String, der ausgegeben werden soll. Die einfachen Anführungszeichen sagen dem Befehl, dass das Nachfolgende ein String und keine Variable ist (Was eine Variable ist erfahren wir im nächsten Kapitel). Das Semikolon signalisiert der Engine, dass der Befehl hier endet, dies wird nicht bei jedem Befehl benötigt.&lt;br /&gt;
&lt;br /&gt;
Wenn man sich mehrere Strings nach einander ausgeben möchte, ist es natürlich unsinnig, für jedes Wort einen neuen ''writeline();'' Befehl auszuführen. Also kann man Strings an einander reihen. Hierzu setzt man einfach ein ''&amp;amp;''-Zeichen zwischen die Strings. Natürlich kann man auch die jeweiligen Strings einfach, wie wir noch später lernen durch Variablen ersetzen.&lt;br /&gt;
&amp;lt;pre&amp;gt;writeline('Hallo!' &amp;amp; ' Wie geht es?');&amp;lt;/pre&amp;gt;&lt;br /&gt;
Wichtig hierbei ist, dass das ''&amp;amp;''-Zeichen kein Leerzeichen einfügt. Dies muss manuell innerhalb des Strings passieren.&lt;br /&gt;
&lt;br /&gt;
===Zusammenfassung: Strings===&lt;br /&gt;
&lt;br /&gt;
* Ein String ist eine Folge von verschiedenen Zeichen.&lt;br /&gt;
* Zum Ausgeben von Strings wird ''writeline();'' verwendet.&lt;br /&gt;
* Es ist möglich mehrere Strings bzw. Variablen mit Hilfe des ''&amp;amp;''-Zeichens innerhalb des Befehls ''writeline();'' regelrecht anzuhängen.&lt;br /&gt;
&lt;br /&gt;
==Kapitel 2 - Variablen==&lt;br /&gt;
===Variablen? - Schon wieder was zum futtern?===&lt;br /&gt;
'''Nein''', lediglich ein weiterer Fachbegriff der Programmierer. Variablen sind eine Art von Platzhalter, in denen man Informationen, wie zum Beispiel Strings, für eine spätere Verwendung abspeichern kann. Natürlich gibt es für verschiedene Informationen ganz spezielle und verschiedene Variablentypen, die man auch [[Scripting:Datentypen|Datentypen]] nennt.&lt;br /&gt;
&lt;br /&gt;
Die wichtigsten [[Scripting:Datentypen|Datentypen]] sind:&lt;br /&gt;
* String  - &lt;br /&gt;
* Integer -&lt;br /&gt;
* Boolean -&lt;br /&gt;
&lt;br /&gt;
===Variablen setzen===&lt;br /&gt;
Da das Arbeiten mit statischen Daten auf Dauer, vor allem bei längeren Scripten, ziemlich zeitaufwendig und unflexibel ist, verwendet man Variablen. Diese speichern Daten, geben sie auf Wunsch aus und lassen sich auch belibig oft verändern.&lt;br /&gt;
&lt;br /&gt;
Um eine Variable zu erschaffen verwendet man den Befehl ''var''. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
ach ''var'' kommt dann der Variablen Name, dieser darf Zahlen und Buchstaben enthalten. Zahlen allerdings nur mit einer Ausnahme, sie dürfen nicht an erster Stelle stehen. optional danach kann ein as stehen (as, engl., als) dieses gibt an was für einen Inhalt die Variable hat, zb. str für string also eine Zeichenkette. Hier ein Beispiel:&lt;br /&gt;
 var i1 as str&lt;br /&gt;
falsche wäre&lt;br /&gt;
 var 1i as str&lt;br /&gt;
da die 1 vorne steht geht das nicht, warum wird sich später klären wenn wir zu if-schleifen kommen.&lt;br /&gt;
Um einer Variable einen Inhalt zuzuordnen setzt man die Variable vor ein Gleichheitszeichen, dahinter kommt dann der Inhalt in unserem nächsten Beispiel ein String.&lt;br /&gt;
 var test as str&lt;br /&gt;
 test = 'Hallo!'&lt;br /&gt;
man kann das ganze auch in eine Zeile packen, das sieht dann wie folgt aus:&lt;br /&gt;
 var test as str = 'Hallo!'&lt;br /&gt;
Auch hier sehen wir wieder die einfachen Anführungszeichen als Kennzeichen für einen String. Wir können Variablen aber auch andere Werte wie Integer oder Bolean zuweisen. Dazu einfach str durch den jewaligen Typ ersetzten.(Liste der Typen: [[Scripting:Typen|klick mich]])&lt;br /&gt;
&lt;br /&gt;
Auch kann man die Variable &amp;quot;leeren&amp;quot; hirzu gibt man ihr einfach nichts mit, hier auch dazu ein Beispiel:&lt;br /&gt;
 var test as str = 'Hallo!'&lt;br /&gt;
 test = ''&lt;br /&gt;
&lt;br /&gt;
===Anwendungsbeispiele mit Variablen===&lt;br /&gt;
 var test as str = 'Hallo!'&lt;br /&gt;
 writeline( test &amp;amp; ' Wie gehts?');&lt;br /&gt;
Auch hier ist weider zu beachten das kein Leerzeiche eingefügt wird! Die Variable kann an jeder Stelle innerhalb der Klammern stehen, zu beachten ist nur das sie nicht innerhalb von Anführungszeichen steht sonst wird die Variable als String gewertet.&lt;br /&gt;
 var test as str = 'Hallo!'&lt;br /&gt;
 writeline(test);&lt;br /&gt;
Hier wird nun zum Beispiel nur eine Variable ausgegeben.&lt;br /&gt;
&lt;br /&gt;
===Regeln bei der Bennenung von Variablen===&lt;br /&gt;
&lt;br /&gt;
*&lt;br /&gt;
*&lt;br /&gt;
*&lt;br /&gt;
*&lt;br /&gt;
&lt;br /&gt;
===Zusammenfassung: Variablen===&lt;br /&gt;
&lt;br /&gt;
==Kapitel 3 - Kontrollstrukturen==&lt;br /&gt;
Da wir uns in Kapitel 2 mit Variablen beschäftigt haben, können wir uns nun dem eigentlichen Aufwand beim Programmieren zuwenden: den Kontrollstrukturen. Diese Wort klingt ersteinmal sehr hochtrabend, an und für sich ist es jedoch sehr einfach.&lt;br /&gt;
&lt;br /&gt;
===If - then - Else===&lt;br /&gt;
Es werden einfach 2 Variablen miteinander verglichen und dann wird darauf reagiert.&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
VAR var1 AS Integer = 42;&lt;br /&gt;
if (varl1 = 42)&lt;br /&gt;
{&lt;br /&gt;
  writeline('var1 ist 42');&lt;br /&gt;
}&lt;br /&gt;
else&lt;br /&gt;
{&lt;br /&gt;
  writeline('var1 ist nicht 42');&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Dies ist ersteinmal sehr einfach und wirkt auf den ersten Blick sinnlos, was es auch ist. Aber es zeigt auf einfache Art, wie man 2 Werte miteinander vergleicht, dies kann man zum Beispiel dafür nutzen, um zu prüfen wieviel Lageraum ein Schiff noch hat. Dazu aber irgendwann später mehr.&lt;br /&gt;
Bleiben wir bei dem Code und schauen ihn uns einmal genauer an:&lt;br /&gt;
In der ersten Zeile wird die Variable '''var1''' definiert, dies sollte aus Kapitel 2 bekannt sein.&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;If (var1 = 1)&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Hier wird der vergleich durgeführt, in diesem Fall wir geschaut ob der Wert von Zahl1 42 ist. &lt;br /&gt;
Man könnte an dieser Stelle genausogut prüfen ob der Wert größer oder kleiner ist, als ein anderer.&lt;br /&gt;
Hierfür nutzt man dann nicht &amp;quot;=&amp;quot; sondern &amp;quot;&amp;lt;&amp;quot;,&amp;quot;&amp;gt;&amp;quot;,&amp;quot;&amp;lt;=&amp;quot;,&amp;quot;&amp;gt;=&amp;quot;&lt;br /&gt;
Innerhalb der { } folgt dann der Code, welcher ausgehührt werden soll, wenn die Bedigung stimmt, also in diesem Fall, wenn '''var1 ''' gleich 42 ist. &lt;br /&gt;
&lt;br /&gt;
Das folgende ''Else'' mit den Klammern gibt, welche Aktionen ausgeführt werden sollen, wenn die Bedingung nicht stimmt.&lt;br /&gt;
&lt;br /&gt;
Zu guter letzt gibt es noch ''Elseif'' dies ist dafür gedacht wenn man mehr als eine Alternative hat.&lt;br /&gt;
Beispiel&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
VAR var1 AS Integer = 42;&lt;br /&gt;
if (var1 &amp;lt; 42)&lt;br /&gt;
{&lt;br /&gt;
  writeline('var1 ist kleiner als 42');&lt;br /&gt;
}&lt;br /&gt;
elseif (var1 &amp;gt; 42)&lt;br /&gt;
{&lt;br /&gt;
  writeline('var1 ist größer als 42');&lt;br /&gt;
}&lt;br /&gt;
else&lt;br /&gt;
{&lt;br /&gt;
  writeline('var1 ist weder größer noch kleiner als 42');&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Dies ist nicht auf ein ''elseif'' beschränkt, es können beliebig viele sein.&lt;br /&gt;
&lt;br /&gt;
===Schleifen===&lt;br /&gt;
====For====&lt;br /&gt;
====while====&lt;br /&gt;
==Autoren==&lt;br /&gt;
(hier dürfen sich diejenigen Verewigen die Hier min. ein Kapitel geschrieben haben[sonst kommt noch einer daher nur weil er nen rechtschreibfehler verbessert hat ;)])&lt;br /&gt;
{|&lt;br /&gt;
!Nickname&lt;br /&gt;
!IG-id&lt;br /&gt;
!Kapitel&lt;br /&gt;
|-&lt;br /&gt;
|WiZz4Rd&lt;br /&gt;
|16475&lt;br /&gt;
|Kapitel 1, Kapitel 2&lt;br /&gt;
|-&lt;br /&gt;
|Stryke&lt;br /&gt;
|28885&lt;br /&gt;
|Vorwort, Kapitel 3&lt;br /&gt;
|-&lt;br /&gt;
|[[Spieler:Xenon|Xenon]]&lt;br /&gt;
|10127&lt;br /&gt;
|Korrektur &amp;amp; Überarbeitung&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Scripting-Hilfe|Anfängerkurs]]&lt;/div&gt;</summary>
		<author><name>Stryke</name></author>	</entry>

	<entry>
		<id>https://wiki.stne.net/index.php?title=Scripting:Anf%C3%A4ngerkurs</id>
		<title>Scripting:Anfängerkurs</title>
		<link rel="alternate" type="text/html" href="https://wiki.stne.net/index.php?title=Scripting:Anf%C3%A4ngerkurs"/>
				<updated>2006-06-09T21:35:53Z</updated>
		
		<summary type="html">&lt;p&gt;Stryke: /* Kapitel 3 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Scriptingmenue}}&lt;br /&gt;
'''Hier wird in nächster Zeit ein Anfängerkurs für die STNE-Scriptengine entstehen. Wer mithelfen will oder bereits jetzt fragen hat kann sich vertrauensvoll an uns wenden, einfach im irc den channel #scripting joinen!'''&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
==Vorwort==&lt;br /&gt;
Dieser Kurs richtet sich vor allem an diejenigen, die zuvor noch nie mit Programmierung zu tun hatten und trotzdem gerne Scripts für STNE schreiben würden. Die sollen hier auf möglichst einfache Weise einen Einstieg finden. &lt;br /&gt;
Aber bitte erwartet keine Wunder, niemand der keine Ahnung vom Programieren hat, kann dies über Nacht lernen. Daher ist insbesondere eine Sache von enormer Wichtigkeit: Geduld – denn nur wer mit Geduld die Sachen angeht wird letzten Endes mit einem funktionieren Script belohnt. Wer die schnellen Erfolge sucht, der sollte es gleich lassen.&lt;br /&gt;
Wir wünschen allen viel Spaß und gutes Gelingen.&lt;br /&gt;
==Kapitel 1 - Strings==&lt;br /&gt;
===String? - Kann man das essen?===&lt;br /&gt;
'''Nein''', ein String (englisch) oder eine Zeichenkette ist eine Folge von Zeichen (z.B. Buchstaben, Ziffern, Sonderzeichen, und Steuerzeichen) aus einem definierten Zeichensatz.&lt;br /&gt;
&lt;br /&gt;
Nun wissen wir also, was dieser ominöse String überhaupt ist. Wenden wir uns nun zur Ausgabe von Strings!&lt;br /&gt;
&lt;br /&gt;
=== Ausgabe von Strings ===&lt;br /&gt;
In diesem Kapitel werden wir uns der einfachen Ausgabe von Strings zuwenden. Um einen String auszugeben, müssen wir uns natürlich erst einmal überlegen was wir überhaupt ausgeben wollen. Nehmen wir als Beispiel einfach ''&amp;quot;Hallo!&amp;quot;''. Als Nächstes müssen wir wissen wie wir der Engine sagen, dass sie etwas ausgeben soll! Dies geschieht mit dem Befehl ''writeline();''.&lt;br /&gt;
&lt;br /&gt;
Hier ein kleines Beispiel:&lt;br /&gt;
&amp;lt;pre&amp;gt;writeline('Hallo!');&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In den Klammern steht immer der String, der ausgegeben werden soll. Die einfachen Anführungszeichen sagen dem Befehl, dass das Nachfolgende ein String und keine Variable ist (Was eine Variable ist erfahren wir im nächsten Kapitel). Das Semikolon signalisiert der Engine, dass der Befehl hier endet, dies wird nicht bei jedem Befehl benötigt.&lt;br /&gt;
&lt;br /&gt;
Wenn man sich mehrere Strings nach einander ausgeben möchte, ist es natürlich unsinnig, für jedes Wort einen neuen ''writeline();'' Befehl auszuführen. Also kann man Strings an einander reihen. Hierzu setzt man einfach ein ''&amp;amp;''-Zeichen zwischen die Strings. Natürlich kann man auch die jeweiligen Strings einfach, wie wir noch später lernen durch Variablen ersetzen.&lt;br /&gt;
&amp;lt;pre&amp;gt;writeline('Hallo!' &amp;amp; ' Wie geht es?');&amp;lt;/pre&amp;gt;&lt;br /&gt;
Wichtig hierbei ist, dass das ''&amp;amp;''-Zeichen kein Leerzeichen einfügt. Dies muss manuell innerhalb des Strings passieren.&lt;br /&gt;
&lt;br /&gt;
===Zusammenfassung: Strings===&lt;br /&gt;
&lt;br /&gt;
==Kapitel 2 - Variablen==&lt;br /&gt;
Da man nicht immer mit statischen Daten arbeiten kann benötigt man Variablen. Diese speichern Daten und geben sie auf Wunsch aus. Sie lassen sich auch belibig oft verändern. Um eine Variable zu erschaffen setzt man den Befehl ''var'' ein. nach ''var'' kommt dann der Variablen Name, dieser darf Zahlen und Buchstaben enthalten. Zahlen allerdings nur mit einer Ausnahme, sie dürfen nicht an erster Stelle stehen. optional danach kann ein as stehen (as, engl., als) dieses gibt an was für einen Inhalt die Variable hat, zb. str für string also eine Zeichenkette. Hier ein Beispiel:&lt;br /&gt;
 var i1 as str&lt;br /&gt;
falsche wäre&lt;br /&gt;
 var 1i as str&lt;br /&gt;
da die 1 vorne steht geht das nicht, warum wird sich später klären wenn wir zu if-schleifen kommen.&lt;br /&gt;
Um einer Variable einen Inhalt zuzuordnen setzt man die Variable vor ein Gleichheitszeichen, dahinter kommt dann der Inhalt in unserem nächsten Beispiel ein String.&lt;br /&gt;
 var test as str&lt;br /&gt;
 test = 'Hallo!'&lt;br /&gt;
man kann das ganze auch in eine Zeile packen, das sieht dann wie folgt aus:&lt;br /&gt;
 var test as str = 'Hallo!'&lt;br /&gt;
Auch hier sehen wir wieder die einfachen Anführungszeichen als Kennzeichen für einen String. Wir können Variablen aber auch andere Werte wie Integer oder Bolean zuweisen. Dazu einfach str durch den jewaligen Typ ersetzten.(Liste der Typen: [[Scripting:Typen|klick mich]])&lt;br /&gt;
&lt;br /&gt;
Auch kann man die Variable &amp;quot;leeren&amp;quot; hirzu gibt man ihr einfach nichts mit, hier auch dazu ein Beispiel:&lt;br /&gt;
 var test as str = 'Hallo!'&lt;br /&gt;
 test = ''&lt;br /&gt;
===Anwendung von Variablen bei ''writeline''===&lt;br /&gt;
 var test as str = 'Hallo!'&lt;br /&gt;
 writeline( test &amp;amp; ' Wie gehts?');&lt;br /&gt;
Auch hier ist weider zu beachten das kein Leerzeiche eingefügt wird! Die Variable kann an jeder Stelle innerhalb der Klammern stehen, zu beachten ist nur das sie nicht innerhalb von Anführungszeichen steht sonst wird die Variable als String gewertet.&lt;br /&gt;
 var test as str = 'Hallo!'&lt;br /&gt;
 writeline(test);&lt;br /&gt;
Hier wird nun zum Beispiel nur eine Variable ausgegeben.&lt;br /&gt;
==Kapitel 3 - Kontrollstrukturen==&lt;br /&gt;
Da wir uns in Kapitel 2 mit Variablen beschäftigt haben, können wir uns nun dem eigentlichen Aufwand beim Programmieren zuwenden: den Kontrollstrukturen. Diese Wort klingt ersteinmal sehr hochtrabend, an und für sich ist es jedoch sehr einfach.&lt;br /&gt;
&lt;br /&gt;
===If - then - Else===&lt;br /&gt;
Es werden einfach 2 Variablen miteinander verglichen und dann wird darauf reagiert.&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
VAR zahl1 AS Integer = 42;&lt;br /&gt;
if (zahl1 = 42)&lt;br /&gt;
{&lt;br /&gt;
  writeline('Zahl1 ist 42');&lt;br /&gt;
}&lt;br /&gt;
else&lt;br /&gt;
{&lt;br /&gt;
  writeline('Zahl1 ist nicht 42');&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Dies ist ersteinmal sehr einfach und wirkt auf den ersten Blick sinnlos, was es auch ist. Aber es zeigt auf einfache Art, wie man 2 Werte miteinander vergleicht, dies kann man zum Beispiel dafür nutzen, um zu prüfen wieviel Lageraum ein Schiff noch hat. Dazu aber irgendwann später mehr.&lt;br /&gt;
Bleiben wir bei dem Code und schauen ihn uns einmal genauer an:&lt;br /&gt;
In der ersten Zeile wird die Variable zahl1 definiert, dies sollte aus Kapitel 2 bekannt sein.&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;If (zahl1 = 1)&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Hier wird der vergleich durgeführt, in diesem Fall wir geschaut ob der Wert von Zahl1 42 ist. &lt;br /&gt;
Man könnte an dieser Stelle genausogut prüfen ob der Wert größer oder kleiner ist, als ein anderer.&lt;br /&gt;
Hierfür nutzt man dann nicht &amp;quot;=&amp;quot; sondern &amp;quot;&amp;lt;&amp;quot;,&amp;quot;&amp;gt;&amp;quot;,&amp;quot;&amp;lt;=&amp;quot;,&amp;quot;&amp;gt;=&amp;quot;&lt;br /&gt;
Innerhalb der { } folgt dann der Code, welcher ausgehührt werden soll, wenn die Bedigung stimmt, also in diesem Fall, wenn zahl1 gleich 42 ist. &lt;br /&gt;
&lt;br /&gt;
Das folgende &amp;quot;Else&amp;quot; mit den Klammern gibt, welche Aktionen ausgeführt werden sollen, wenn die Bedingung nicht stimmt.&lt;br /&gt;
&lt;br /&gt;
===Schleifen===&lt;br /&gt;
====For====&lt;br /&gt;
====while====&lt;br /&gt;
==Autoren==&lt;br /&gt;
(hier dürfen sich diejenigen Verewigen die Hier min. ein Kapitel geschrieben haben[sonst kommt noch einer daher nur weil er nen rechtschreibfehler verbessert hat ;)])&lt;br /&gt;
{|&lt;br /&gt;
!Nickname&lt;br /&gt;
!IG-id&lt;br /&gt;
!Kapitel&lt;br /&gt;
|-&lt;br /&gt;
|WiZz4Rd&lt;br /&gt;
|16475&lt;br /&gt;
|Kapitel 1, Kapitel 2&lt;br /&gt;
|-&lt;br /&gt;
|Stryke&lt;br /&gt;
|28885&lt;br /&gt;
|Vorwort, Kapitel 3&lt;br /&gt;
|-&lt;br /&gt;
|[[Spieler:Xenon|Xenon]]&lt;br /&gt;
|10127&lt;br /&gt;
|Korrektur &amp;amp; Überarbeitung&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Scripting-Hilfe|Anfängerkurs]]&lt;/div&gt;</summary>
		<author><name>Stryke</name></author>	</entry>

	<entry>
		<id>https://wiki.stne.net/index.php?title=Scripting:Datentypen</id>
		<title>Scripting:Datentypen</title>
		<link rel="alternate" type="text/html" href="https://wiki.stne.net/index.php?title=Scripting:Datentypen"/>
				<updated>2006-06-09T20:58:24Z</updated>
		
		<summary type="html">&lt;p&gt;Stryke: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Scriptingmenue}}&lt;br /&gt;
Dieser Artikel beinhaltet eine Auflistung sämtlicher Typen die eine Variable haben kann. (in Arbeit)&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
!Name&lt;br /&gt;
!Beschreibung&lt;br /&gt;
!Umwandlung durch&lt;br /&gt;
|-&lt;br /&gt;
| Char&lt;br /&gt;
| Zeichen&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| String &lt;br /&gt;
| Zeichenkette&lt;br /&gt;
| CStr()&lt;br /&gt;
|-&lt;br /&gt;
| Integer&lt;br /&gt;
| Ganze Zahl &lt;br /&gt;
| CInt()&lt;br /&gt;
|-&lt;br /&gt;
| Long&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Double&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Short&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Date&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Boolean&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Byte&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| (Array)&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Stryke</name></author>	</entry>

	<entry>
		<id>https://wiki.stne.net/index.php?title=Scripting:Datentypen</id>
		<title>Scripting:Datentypen</title>
		<link rel="alternate" type="text/html" href="https://wiki.stne.net/index.php?title=Scripting:Datentypen"/>
				<updated>2006-06-09T20:56:32Z</updated>
		
		<summary type="html">&lt;p&gt;Stryke: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Scriptingmenue}}&lt;br /&gt;
Dieser Artikel beinhaltet eine Auflistung sämtlicher Typen die eine Variable haben kann. (in Arbeit)&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
!Name&lt;br /&gt;
!Beschreibung&lt;br /&gt;
!Umwandlung durch&lt;br /&gt;
|-&lt;br /&gt;
| Char&lt;br /&gt;
| Zeichen&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| String &lt;br /&gt;
| Zeichenkette&lt;br /&gt;
| CStr()&lt;br /&gt;
|-&lt;br /&gt;
| Integer&lt;br /&gt;
| Ganze Zahl &lt;br /&gt;
| CInt()&lt;br /&gt;
|-&lt;br /&gt;
| Long&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Double&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Short&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Date&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Stryke</name></author>	</entry>

	<entry>
		<id>https://wiki.stne.net/index.php?title=Scripting:Anf%C3%A4ngerkurs</id>
		<title>Scripting:Anfängerkurs</title>
		<link rel="alternate" type="text/html" href="https://wiki.stne.net/index.php?title=Scripting:Anf%C3%A4ngerkurs"/>
				<updated>2006-06-09T19:30:10Z</updated>
		
		<summary type="html">&lt;p&gt;Stryke: /* Autoren */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Scriptingmenue}}&lt;br /&gt;
'''Hier wird in nächster Zeit ein Anfängerkurs für die STNE-Scriptengine entstehen. Wer mithelfen will oder bereits jetzt fragen hat kann sich vertrauensvoll an uns wenden, einfach im irc den channel #scripting joinen!'''&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
==Vorwort==&lt;br /&gt;
Dieser Kurs richtet sich vor allem an diejenigen, die zuvor noch nie mit Programmierung zu tun hatten und trotzdem gerne Scripts für STNE schreiben würden. Die sollen hier auf möglichst einfache Weise einen Einstieg finden. &lt;br /&gt;
Aber bitte erwartet keine Wunder, niemand der keine Ahnung vom Programieren hat, kann dies über Nacht lernen. Daher ist insbesondere eine Sache von enormer Wichtigkeit: Geduld – denn nur wer mit Geduld die Sachen angeht wird letzten Endes mit einem funktionieren Script belohnt. Wer die schnellen Erfolge sucht, der sollte es gleich lassen.&lt;br /&gt;
Wir wünschen allen viel Spaß und gutes Gelingen.&lt;br /&gt;
==Kapitel 1 - Ausgabe von Strings==&lt;br /&gt;
In diesem ersten Kapitel werden wir uns der einfach ausgabe von Strings zuwenden. Um irgend etwas auszugeben, müssen wir uns natürlich erst einmal überlegen was. Wir nehmen einmal &amp;quot;Hallo!&amp;quot;. Als nächstes müssen wir wissen wie wir der Engine sagen sie soll etwas ausgeben, das machen wir mit dem Befehl ''writeline();''. Hier ein kleines Beispiel:&lt;br /&gt;
 writeline('Hallo!');&lt;br /&gt;
In den Klammern steht immer das was ausgegeben werden soll. Die Einfachen Anführungszeichen sagen dem Befehl das das nachfolgende ein String und keine Variable ist(Was eine Variable ist erfahren wir im nächsten Kapitel. Das Semikolon signalisiert der Engine das der Befehl her endet, dies wird nicht bei jedem Befehl benötigt.&lt;br /&gt;
&lt;br /&gt;
Man kann auch mehrere Strings ausgeben lassen, ist nicht wirklich sinnvoll wenn man nur Strings weiter gibt, dafür aber wenn man eine Variable einfügen möchte, dies ist hier nur der Vollständigkeit halber. Hierzu setzt man einfach ein &amp;amp; zwischen die Strings oder später Variablen die man wieder geben möchte.&lt;br /&gt;
 writeline('Hallo!' &amp;amp; ' Wie geht es?');&lt;br /&gt;
Wichtig hier bei ist, das das &amp;amp; kein Leerzeichen einfügt, dies muss manuell innerhalb des Strings passieren.&lt;br /&gt;
==Kapitel 2==&lt;br /&gt;
kommt noch&lt;br /&gt;
==Kapitel 3==&lt;br /&gt;
kommt noch&lt;br /&gt;
.&lt;br /&gt;
.&lt;br /&gt;
.&lt;br /&gt;
==Autoren==&lt;br /&gt;
(hier dürfen sich diejenigen Verewigen die Hier min. ein Kapitel geschrieben haben[sonst kommt noch einer daher nur weil er nen rechtschreibfehler verbessert hat ;)])&lt;br /&gt;
&lt;br /&gt;
WiZz4Rd igid: 16475&lt;br /&gt;
Stryke igid: 28885&lt;/div&gt;</summary>
		<author><name>Stryke</name></author>	</entry>

	<entry>
		<id>https://wiki.stne.net/index.php?title=Scripting:Anf%C3%A4ngerkurs</id>
		<title>Scripting:Anfängerkurs</title>
		<link rel="alternate" type="text/html" href="https://wiki.stne.net/index.php?title=Scripting:Anf%C3%A4ngerkurs"/>
				<updated>2006-06-09T19:06:23Z</updated>
		
		<summary type="html">&lt;p&gt;Stryke: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Scriptingmenue}}&lt;br /&gt;
'''Hier wird in nächster Zeit ein Anfängerkurs für die STNE-Scriptengine entstehen. Wer mithelfen will oder bereits jetzt fragen hat kann sich vertrauensvoll an uns wenden, einfach im irc den channel #scripting joinen!'''&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
==Vorwort==&lt;br /&gt;
Dieser Kurs richtet sich vor allem an diejenigen, die zuvor noch nie mit Programmierung zu tun hatten und trotzdem gerne Scripts für STNE schreiben würden. Die sollen hier auf möglichst einfache Weise einen Einstieg finden. &lt;br /&gt;
Aber bitte erwartet keine Wunder, niemand der keine Ahnung vom Programieren hat, kann dies über Nacht lernen. Daher ist insbesondere eine Sache von enormer Wichtigkeit: Geduld – denn nur wer mit Geduld die Sachen angeht wird letzten Endes mit einem funktionieren Script belohnt. Wer die schnellen Erfolge sucht, der sollte es gleich lassen.&lt;br /&gt;
Wir wünschen allen viel Spaß und gutes Gelingen.&lt;br /&gt;
==Kapitel 1 - Ausgabe von Strings==&lt;br /&gt;
In diesem ersten Kapitel werden wir uns der einfach ausgabe von Strings zuwenden. Um irgend etwas auszugeben, müssen wir uns natürlich erst einmal überlegen was. Wir nehmen einmal &amp;quot;Hallo!&amp;quot;. Als nächstes müssen wir wissen wie wir der Engine sagen sie soll etwas ausgeben, das machen wir mit dem Befehl ''writeline();''. Hier ein kleines Beispiel:&lt;br /&gt;
 writeline('Hallo!');&lt;br /&gt;
In den Klammern steht immer das was ausgegeben werden soll. Die Einfachen Anführungszeichen sagen dem Befehl das das nachfolgende ein String und keine Variable ist(Was eine Variable ist erfahren wir im nächsten Kapitel. Das Semikolon signalisiert der Engine das der Befehl her endet, dies wird nicht bei jedem Befehl benötigt.&lt;br /&gt;
&lt;br /&gt;
Man kann auch mehrere Strings ausgeben lassen, ist nicht wirklich sinnvoll wenn man nur Strings weiter gibt, dafür aber wenn man eine Variable einfügen möchte, dies ist hier nur der Vollständigkeit halber. Hierzu setzt man einfach ein &amp;amp; zwischen die Strings oder später Variablen die man wieder geben möchte.&lt;br /&gt;
==Kapitel 2==&lt;br /&gt;
kommt noch&lt;br /&gt;
==Kapitel 3==&lt;br /&gt;
kommt noch&lt;br /&gt;
.&lt;br /&gt;
.&lt;br /&gt;
.&lt;/div&gt;</summary>
		<author><name>Stryke</name></author>	</entry>

	</feed>