WorldBuilder.info


Übersetzungen der offiziellen Tutorials zum DSUM2 World Builder:

 --» Mapdesign und Verschönerungstipps
 --» Erstellung einer Mehrspielerkarte
 --» Neue World Builder Eigenschaften
 --» Grundlegendes Skripting Tutorial
 --» Einzelspieler Missions Tutorial
 --» Beispiel map.ini-Datei

Wenn du Anfänger bist, dann schaue dir unbedingt bevor du los legst kurz die "häufig benutzten Wörter/Zusammenhänge" bei den Mapping-Infos an!

Grundlegendes-Skripting-Tutorial



Inhalte:






Einführung



Willkommen zum Tutorial der Grundlagen des Skripten für den World Builder. Diese Anleitung wird dich ein wenig mit dem Skript-Werkzeug im World Builder vertraut machen, allerdings wird hier nicht detailliert auf die Funktionsweise jeder einzelnen Skript-Aktion eingegangen.

Diese Anleitung deckt die meistgebrauchten Skripte ab, die auch die Designer für Schlacht um Mittelerde 2 hauptsächlich benutzten.

Diese Anleitung geht zudem davon aus, dass du bereits weißt, wie man eine Map erstellt - also wie man die Landschaft bearbeitet, texturiert, wie man Einheiten platziert, usw.

Außerdem wird dir diese Anleitung jedes Script erläutern, das benötigt wird, um diesen Level nachzubauen.

Unten siehst du ein Bild der Map, auf die sich diese Anleitung bezieht.




Map Layout

 

Okay, als erstes solltest du die oben stehende Karte in deinen World Builer übertragen. Hier ist eine kurze Übersicht über die verwendeten Einheiten auf der Map:

 

-          (L) – Legolas

-          (EW) – Elben-Krieger Horde

-          (EA) – Elben-Bogenschützen Horde

-          (EP) – Elben-Pikeniere Horde

-          (EB) – Elben-Barracken

-          (GW) – Goblin(Ork-)-Krieger Horde

-          (GM) – Goblin(Ork-)-Minenschacht

-          (GC) – Goblin(Ork-)Höhle

 

In dieser Mission startet der Spieler mit 2 Elbenkriegern, 2 Elben-Bogenschschützen und Legolas. Dem Spieler wird der Auftrag erteilt, das umliegende Gebiet komplett von Orks zu säubern. Bevor du jetzt aber mit dem Skripten anfängst, müssen wir sicherstellen, dass alle Einheiten mit Namen versehen und ihrem jeweiligen Team zugeordnet werden. Dazu müssen wir eine "map.ini" Datei und eine "map.str" Datei erstellen.

Lass uns als erstes all die Namen und Teams durchgehen, die du auf der  Karte benötigen wirst.

Bezogen auf die Karte von oben sind die Namen und Teams wie folgt:

 

-          (GW)1 - “Goblin Retreater”                    Team - PlyrCivilian/teamPlyrCivilian

-          (GW)2 - No Name                                   Team - PlyrWild/Ambush Team

-          (GW)3 - No Name                                   Team - PlyrWild/Ambush Team

-          (GW)4 - No Name                                   Team - PlyrWild/Ambush Team

-          (GW)5 - No Name                                   Team - PlyrWild/Goblin Patrol Team 01

-          (GW)6 - No Name                                   Team - PlyrWild/Goblin Patrol Team 02

-          (GW)7 - No Name                                   Team - PlyrWild/Goblin Patrol Team 03

-          (GW)8 - No Name                                   Team - PlyrWild/Goblin Patrol Team 04

-          (GM)’s - No Name                                   Team - PlyrWild/teamPlryWild

-          (GC)’s - No Name                                   Team - PlyrWild/teamPlryWild

-          (EP)1 - “Elf Reinforcement 01”              Team - PlyrCivilian/teamPlyrCivilian

-          (EP)2 - “Elf Reinforcement 02”              Team - PlyrCivilian/teamPlyrCivilian

-          (EB) - “Elf Barracks”                               Team - PlyrCivilian/teamPlyrCivilian



Die nächste Sache, die du erledigen musst, ist alle Wegpunkte (Waypoints), Auslösegebiete (Area Trigger) und Wegpfade (Waypoint Paths), die hier benötigt werden, einzufügen.

Hier nochmal eine kleine Übersicht der Namen und Positionierungen für alle diese Parameter:

 

-          Waypoint:

o       Position: direkt hinter Legolas   

o       Name: InitialCameraPosition

-          Waypoint:

o       Position:  unterhalb von (GW)1

o       Name: WP - auf den Goblin Retreater schauen

-          Waypoint:

o       Position: in der Mitte des kleinen Quadrats neben (GW)3

o       Name: WP – Der Goblin Retreater taucht hier auf

-          Area Trigger:

o       Position: rechte untere Ecke des Bildschirms; großes Dreieck

o       Name: AT - Team Attacke aus dem Hinterhalt

-          Area Trigger:

o       Position: in der Mitte des Dreiecks rechts unten; kleines Rechteck

o       Name: AT - Definiert Goblin Retreater als Wild Player

-          Area Trigger:

o       Position: Next to (EP)1, (EP)2, and (EB); Rectangular

o       Name: AT - Fügt die Verstärkungstrups der Elfen ein

-          Area Trigger:

o       Position: Neben (GW)6 und (GW)7; Stelle sicher, dass es den chokepoint abdeckt

o       Name: AT - Ork Verteidigung ausbilden und Teams angreifen

-          Area Trigger:

o       Position: Große Ork Basis oben rechts: Stelle sicher, dass es die Basis abdeckt!

o       Name: AT - Ork Basis

-          Waypoint Path:

o       Position: Geht von (GW)5 bis (GW)6; Ein Pfad

o       Name: WP Path - Wegpfad 01

-          Waypoint Path:

o       Position: Geht von (GW)6 bis (GW)5; Ein Pfad

o       Name: WP Path - Wegpfad 02

-          Waypoint Path:

o       Position: Geht von (GW)7 bis (GW)8; Ein Pfad

o       Name: WP Path - Wegpfad 03

-          Waypoint Path:

o       Position: Geht von (GW)8 bis (GW)7; Ein Pfad

o       Name: WP Path - Wegpfad 04


Teamerstellung


Der Letzte Schritt ist nun, all die Teams zu erstellen, die du für diese Map benötigst. Um das Teameinstellungen-Fenster zu öffnen, klicke auf diesen Button ziemlich weit oben im World Builder und dieses Fenster wird sich öffnen:




An diesem Punkt solltest du alle deine Spieler erstellt haben, die im linken Fenster der Teameinstellungen zu sehen sind. Aber lasst uns schauen, für was dieses Fenster gut ist, sowie welche Buttons es hat und für was diese gut sind:


 Linkes Fenster - Dieses Fenster enthält alle Spieler die du in deinem Level erstellt hast. Wenn du auf einen dieser Spieler klickst, siehst du alle Teams, die er enthält. Jeder Spieler (außer "neutral") hat ein "(default team)". Das ist das Team, welchem alle neuen Einheiten, die du erstellst, zugeschrieben werden.

 Rechtes Fenster - Dieses Fenster zeigt alle Teams, die derzeit für den Spieler erstellt sind, den du gerade markiert hast. Es enthält zudem andere Felder, die weitere Informationen zu diesen Teams beinhalten.

 Neues Team  - Dies wird das "Edit Team Template" Fenster öffnen.

  Team kopieren - Dies wird eine Kopie des Teams erstellen, das du gerade markiert hast.

 Team löschen - Dies wird jedes Team löschen, das du gerade markiert hast. Das “(default team)” kann nicht gelöscht werden.

 Teammitglieder auswählen... - Dies wird alle vorher platzierten Einheiten auf der Map auswählen, die dem Team zugewiesen wurden, welches du gerade markiert hast.

 OK - Dies wird alle Änderungen speichern und das Teameinstellung-Fenster schließen.

 

Für diese Mission sind die einzigen Teams, die jemals erstellt werden müssen, die Teams für "PlryWild". Markiere deinen "PlryWild" und erstelle die Teams, wie du sie unten sehen kannst:



Du wirst feststellen, dass das Feld "Verhalten" sich von Team zu Team unterscheidet. So gibt es auch Skripte und Aufstellungen von Einheiten, die mit einigen der Teams verknüpft sind. Nun lasst uns zu dem Punkt übergehen, wie man ein Team erstellt.



Das unten stehende Bild zeigt uns, wie unsere brandneue Vorlage aussieht:



Wie du siehst, sind hier massenweise Felder im ersten Reiter dieses Fensters. Also lass uns diese näher betrachten und schauen, was sie alle bewirken:



       Neues Team - Dieses kleine Fenster ist dafür da, um dein Team zu benennen. Der Standardname wird immer "New Team" sein, gefolgt von einer Nummer, falls "New Team" schon existiert.

       Maximum - Das ist die maximale Zahl an Instanzen dieses Teams, das die KI versuchen wird, die ganze zeit aktiv zu haben. Zum Beispiel: Wenn diese Zahl auf 3 gesetzt ist, wird die KI 3 Instanzen dieses Teams erstellen. Sobald eine dieser Instanzen dieses Teams stirbt, wird die KI versuchen, eine weitere Instanz zu erstellen, um sicherzustellen, dass immer 3 aktive Instanzen vorhanden sind.

       Besitzer - Dies zeigt dir den derzeitigen Spieler, zu dem dieses Team angehört. Hier kannst du auch Teams von einem Spieler zu einem anderen transferieren. Öffne dazu einfach das DropDown-Menü und wähle den entsprechenden Spieler aus, dem das Team ab nun gehören soll.

       Startposition- Aus diesem DropDown-Menü kannst du einen Wegpunkt auswählen, der für dieses Team als Sammelpunkt fungiert. Im Prinzip gehen dort alle Teams hin, wenn sie mit dem Bauen fertig sind. Sobald sie dort angelangt sind, führen sie alle Skripte aus, die damit verbunden sind.

       Ziel - Dieses Feld hat keine Funktion mehr, es wurde von früheren Versionen des World Bilders übernommen und wird nicht mehr benutzt.

       KI-Typ - Dieses Feld ist nicht länger nützlich, da unsere KI-Gefechtteams nun programmiertechnisch und nicht länger mit Skripten gesteuert werden. Dieses Feld war in DSuM1 nützlich, als noch alle Gefechtteams geskriptet wurden.

       Produktion:

       Bedingung - Dieses DropDown-Menü erlaubt dir die Auswahl verschiedener Skripte, die durch die "Subroutine" Checkbox markiert wurden. Was dieses Feld tut, ist, es dir zu ermöglichen, ein Skript zu erstellen, das nur eine Bedingung enthält. Das entsprechende Team wird diese Bedingung prüfen und sobald diese Bedingung erfüllt ist, wird die KI beginnen, dieses Team zu erstellen. Dies erlaubt es dir, einem Team eine "bau mich" Bedingung zuzuweisen.

       [ ] Verbunene Aktionen ausführen- Wenn diese Option aktiviert ist, wird auch jede Skript-Aktion, die in den eingebundenen Skripten aus dem "Bedingung"-Feld vorhanden ist, gestartet.

       Priorität - Das priorisiert Teams innerhalb eines Spielers. Je höher dieser Wert ist, desto wichtiger wird dieses Team behandelt. z.B.: 100 > 1. Dies legt außerdem fest, wie die Teams untereinander Leute rekrutieren. Wenn ein Team erstellt wird und eine höhere Priorität hat, als ein anderes Team, das bereits fertig ausgebildet ist, dann wird das Team, das gerade in Auftrag gegeben wurde, versuchen, vor dem Team mit der niedrigen Priorität zu rekrutieren.

       Baue für - Dieser Wert legt fest, wie lang die KI versuchen wird, ein Team auszubilden, bevor es diese Aktion abbricht. Wir setzen diesen Wert im Normalfall auf 300 Sekunden (5 min). Wenn du diesen Wert auf 0 lässt, wird sich dein Team womöglich nie erstellen.

       Erfolgreiche Prioritätszunahme - Dieses Feld stammt noch aus DSuM1 Zeiten und wird nicht mehr benutzt.

       Erlose Prioritätsabnahme- Dieses Feld stammt ebenfalls noch aus DSuM1 und wird nicht mehr benutzt.

       Min: Max: - Diese Felder stehen für die minimale und die maximale Anzahl an Einheiten, die vom zugewiesenen "Einheitentyp" erstellt werden. Jedoch scheint das Spiel das Min-Feld zu ignorieren und wird immer versuchen, die Zahl des Max-Feldes zu erreichen. Deshalb geben wir diesen Werten, wenn wir ein Team erstellen, immer den gleichen Wert.

       Einheitentyp: - Das ist eine DropDown-Menü-Liste mit allen Einheiten, die dein Team erstellen wird.

       [...]- Dies wird ein neues Fenster öffnen, aus dem du deine Einheiten auswählst. Es füllt für dich den "Einheitentyp" aus und ist im Grunde ein alternativer Weg, um eine Einheit auszuwählen.

       Eigenschaften - Dieses Feld gibt dir die Möglichkeit, Upgrades und Erfahrungslevels für die Einheiten zuzuweisen, die du im Feld rechts daneben selektiert hast.

       Rekrutierungsoptionen:

      [ ] Wenn möglich automatisch verstärken- Wenn diese Box angekreuzt ist, wird dieses Team immer versuchen, Einheiten zu rekrutieren, sobald es gestartet wird.

       [ ] Teammitglieder sind von KI rekrutierbar - Wenn diese Box angehakt ist, können die Einheiten dieses Teams von anderen Teams mit höherer Priorität rekrutiert werden.

       Teambeschreibung - Hier kannst du eine kurze Beschreibung angeben, was dein Team tut, wie es agiert oder alle anderen Dinge, die du für dieses Team in Erinnerung halten willst. Das ist außerdem dann hilfreich, wenn andere mit deiner Mission arbeiten.



Der nächste Tab ist der "Verhalten"-Tab. Hier fangen die Teamvorlagen an mehr mit den Skripten zu interagieren. Lasst uns die Funktionsweisen der Felder anschauen:



       Verhalten von Skriptauslösepunkten:

       Beim Erstellen: - Aus diesem DropDown-Menü kannst du alle Skripte auswählen, die durch das "Subroutine" Kästchen markiert wurden. Dann, wenn das Spiel versucht, das Team zu erstellen, wird es das Skript auslösen, das in diesem Feld steht.

             Bei Feindsichtung: - Sobald dieses Team einen Feind erblickt, wird es das Skript aus diesem Feld ausführen.

             Bei Entwarnung: - Sobald das Team den erblickten Feind besiegt hat oder dieser sich zurückzieht, wird das hier ausgewählte Skript ausgeführt. Dieser Parameter ist etwas unsicher, es wird also nicht unbedingt immer funktionieren.

            Bei Zerstörung - Die Zahl in diesem Feld legt die prozentuale Gesundheit des Teams fest, z.B. 50 = 50% Gesundheit. Sobald dieser Wert unterschritten wird, wird das Team das hier angegebene Skript ausführen.

       Verhaltensweisen

       [ ] Transports return to base after unloading. - Das stammt noch aus Generäle-Zeiten und ist nicht länger von Bedeutung.

       [ ] Team avoids threats. - Auch noch ein Rest aus Generäle, der nicht länger von Bedeutung ist.

       Anfangs-Teamverhalten:

       Friedlich - Das Team kann angegriffen werden, schlägt aber nicht zurück. Es wird jedoch immernoch Skriptbefehle annehmen.

       Schlafen - Das Team ist im Grunde inaktiv und wird keine Skriptbefehle annehmen, sein Verhalten ändern oder wird es auf irgendwelche Angriffe reagieren. Wir benutzen diese Option zum Optimieren, damit vorplatzierte Teams keine unnötige Leistung verbrauchen.

       Passiv - Diese Einstellung verringert die Sichtweite des Teams, sodass es nur noch Einheiten angreift, die direkt vor ihm stehen.

        Normal - das Standard-Teamverhalten.

       Wachsam - Die Sichtweite des Teams wird um 10% erhöht und falls das Team einem Pfad folgt, wird es diesen Verlassen um Gegner anzugreifen, die es entdeckt.

       Agressiv - Die Sichtweite des Teams wird um 50% erhöht und falls das Team einem Pfad folgt, wird es diesen Verlassen um Gegner anzugreifen, die es entdeckt.

       Angriff:

       [ ] Dieses Team zielt irgendwann einzelne Feinde an bei Schwer und Brutal - Diese Option wird dazu benutzt, wenn bestimmte Einheiten sich auf einzelne Einheiten, nicht auf die ganze Herde, konzentrieren sollen. Das ist nützlich, wenn du die Angriffskraft des gesamten Teams auf eine einzelne Einheit konzentrieren willst.

       Team-Ereignisliste - Rest von der DSuM1-KI, wird nicht mehr gebraucht.




Der letzte Tab des "Edit Team Template"-Fensters ist der "Allgemeines"-Tab. In diesem Fenster kannst du allgemeine Skripte in jedes Feld einfügen. Sobald du dem ersten Feld ein Skript zuweist, wird ein neues Feld erscheinen. Was ein allgemeines Skript ausmacht ist, dass es auf mehrere Items, Einheiten oder Spieler angewendet werden kann. Im Grunde ist es ein Script, das keine spezifischen Namen anspricht, sondern nur Dinge wie "<This Team>" oder "<All Players>" Zum Beispiel könntest du schreiben: “IF <This Team> enters area trigger “AT - Guard Here”, THEN Add 1 to counter “Counter - Guard Teams””. In diesem sucht es nach "<This Team>", womit das Team gemeint ist, das gerade das Skript ausgelöst hat.




 

Map.str & Map.ini



Nun, da du die ganze Maparbeit erledigt hast, erstellst du eine "map.ini"-Datei und eine "map.str"-Datei im selben Verzeichnis, in dem auch deine .map Dateien für deinen Level liegen. Normalerweise würden die Informationen, die du nun in die "map.str." speicherst in eine größere Datei gespeichert werden (lort.str). Sofern du diese Datei entpacken und editieren kannst, ist es vielleicht sogar ein sinnvollerer Ort, um diese Informationen zu speichern. Du kannst die .ini Datei und die .str Datei mit dem Editor / Notepad öffnen, sie sind im Prinzip nur Textdateien.


Die "map.str" enthält alle Texte, die du in deinem Level ausgeben willst. Sie enthält auch die Texte für alle Ziele, die du im "Ziele Bildschirm"darstellst. Hier siehst du den Inhalt von meiner "map.str":



SCRIPT:WBTutorialIntroText_01

"Uns wurde von Orks berichtet, die sich in diesem Gebiet aufhalten \n Wir müssen sie finden und sie auslöschen!"

END

 

SCRIPT:WBTutorialIntroText_02

"Da sind welche von diesem Pack!"

END

 

 

SCRIPT:WBTutorialIntroText_03

"Sie hauen ab, ihnen nach!"

END

 

SCRIPT:WBTutorialObjectiveText_01

"Jagt die Orks."

END

 

SCRIPT:WBTutorialObjectiveText_02

"Vernichtet den Hinterhalt."

END

 

SCRIPT:WBTutorialObjectiveText_03

"Finde die Ork-Basis und vernichte sie."

END

 

SCRIPT:WBTutorialBonusObjectiveText_01

"Finde die Verstärkung und vernichte sie."

END

 

SCRIPT:WBTutorialHintText_01

"Ein Hinterhalt! Elben, zum Angriff!"

END

 

SCRIPT:WBTutorialHintText_02

"Es sind mehr von ihnen als ich erwartet habe, \n hier muss irgendwo ein Nest sein."

END

 

SCRIPT:WBTutorialHintText_03

"Eine Patrouille, es muss hier ganz in der Nähe sein."

END

 

SCRIPT:WBTutorialBonusObjectiveComplete_01

"Du hast die Verstärkung der Elben versammelt."

END

 

Die erste Zeile in einem Skript, das Texte ausgibt, ist der Name des jeweiligen Skriptes. "SCRIPT:WBTutorialIntroText_01", das ist das, was du siehst, wenn du nach der "Lokalisierter String" Variable im WorldBuilder suchst. In der nächsten Zeile steht, was du genau ausgeben willst. Denke immer daran, jedes Skript mit einem "END" zu beenden, andernfalls wird das Spiel rummeckern und sich vielleicht sogar aufhängen. Hier sind noch mehr Regeln, die du beachten solltest:

<            Beginne den Namen des Skriptes immer mit "SCRIPT:" und hänge am Ende den Level an, zu dem es gehört und was es macht; Hinweis, Ziele, Intro, etc.

            Wenn du einen Text als Letterbox anzeigen lassen willst, setze ein "\n", damit wird mitgeteilt, das jetzt ein Zeilenumbruch kommt.



Das einfachste, was du jetzt tun musst, ist, das oben Stehende in deine "map.str" zu kopieren. Außerdem musst du, bevor du die Datei speicherst, den WorldBuilder schließen, und ihn nach dem Speichern wieder starten, damit er die neuen Variablen einlesen und dir auflisten kann.



Als nächstes erstellst du die "map.ini"-Datei. Diese Datei beinhaltet deine Ziele und erlaubt es dir, jegliche Parameter für alle Einheiten im Spiel festzulegen. Hier siehst du die "map.ini" für diese Mission:



MissionObjectiveList

MissionObjectiveTag = SCRIPT:WBTutorialObjectiveText_01           

;Jage die Orks

     MissionObjectiveTag = SCRIPT:WBTutorialObjectiveText_02           

         ;Vernichte den Hinterhalt

     MissionObjectiveTag = SCRIPT:WBTutorialObjectiveText_03           

     ;Finde die Basis der Orks und vernichte sie

     BonusMissionObjectiveTag = SCRIPT:WBTutorialBonusObjectiveText_01 

         ;Finde die Verstärkung

END

Object GoblinFighterHorde

     BuildTime = 10

End




Also zuerst haben wir unsere MissionObjectiveList. In diesem  Skriptblock stehen alle Ziele, die man im Level erreichen muss. Um ein neues Ziel festzulegen, beginne mit "MissionObjectiveTag" oder "BonusMissionObjectiveTag" für Bonus Ziele und gib anschließend die Verknüpfung zum Text dieses Ziels in der "map.str" an. Die Reihenfolge der Ziele ist außerdem wichtig, wenn sie im WorldBuilder verknüpft werden. Das erste Ziel ist 1, das nächste ist 2, dann 3, usw. Das wird noch deutlicher werden, wenn wir zu dem Teil gelangen, an dem man Ziele skriptet. Stelle außerdem wieder sicher, dass du jeden Block mit einem "END" abschließt. Und schließlich legen wir in dieser Datei noch die Bauzeit für eine Ork-Krieger-Horde fest. Zu erwähnen ist noch: Wenn du einen Kommentar einfügen möchtest, musst du einfach ein ";" vor die Zeile des Kommentars setzen, damit wird diese Zeile nicht als Teil des Skriptes gesehen und ignoriert.





Skripten


Nachdem deine Map nun gestaltet und die "map.str" und "map.ini"-Dateien erstellt wurden, wird es Zeit, mit dem Skripten anzufangen. Um das Skripten zu verstehen, solltest du zuerst wissen, wie das Skriptwerkzeug überhaupt funktioniert. Um das Skriptmenü zu öffnen, klicke auf dieses Icon in der Werkzeugleiste des WorldBuilder Fensters. Das wird das Skripte-Fenster öffnen, welches so aussehen sollte:




Es gibt wieder ein Haufen Knöpfe in diesem Fenster, hier also eine kurze Beschreibung, was diese alle tun:


       OK - Damit werden die von dir gemachten Änderungen in den Skripten gespeichert und das Fenster wird geschlossen.

       Übernehmen - Damit werden alle Änderungen gespeichert, das Fenster jedoch nicht geschlossen, sodass du an den Skripten weiterarbeiten kannst.

       Neuer Ordner - Damit wird ein neuer Ordner erstellt.

       Neues Script - Das wird ein neues Skript Fenster öffnen.

       Editieren... - Damit kannst du das jeweilige, markierte Skript editieren. Alternativ dazu kannst du auch einen Doppelklick auf jedes Skript machen um es zu editiern.

       Kopieren - Das wird das Skript, das du gerade markiert hast, kopieren und an den neuen Namen eine Zahl anhängen (damit der Name nicht 2 mal der gleiche ist)

       Löschen - Das wird das markierte Skript löschen.

       Validieren - Hiermit werden alle Skripte in allen Ordnern überprüft, um sicherzustellen, dass alle Bedingungen und Aktionen gültige Variablen haben. Wenn irgendein Skript auftaucht, das einen Fehler aufweist, wird ein "?" bei dem Script erscheinen und dir somit mitteilen, dass damit etwas nicht stimmt.

       Suchen... Das ist ein elementares Suchsystem, mit dem du Variablen suchen kannst und das Tool wird alle Skripte nach dieser Variable durchsuchen. Bedenke, dass dieses mit komplexen Variablennamen nicht mehr zwingend funktioniert. Versuche also, alle deine Variablennamen kurz und pregnant zu wählen.

       Exportiere Skript(e) - Dies wird das "Skripte Exportieren"-Fenster öffnen, das dir ermöglicht, viele verschiedene Dinge aus deiner Map zu exportieren, um sie z.B. in eine andere Mission zu kopieren.

       Importiere Skript(e) - Exportierte Scripte mit der Dateiendung .scb können hiermit importiert werden.

       Aktiviere Musikskripte - Diese Option erlaubt es der Engine, automatisch alle geskriptete Musik für deine Mission zu übernehmen. Wenn du deine eigene Musik skripten willst, deaktiviere dieses Kästchen.

       Abbrechen - Hiermit werden alle Änderungen verworfen und das Skripte-Fenster wird geschlossen.

       Oberes Fenster - Dieses Fenster enthält alle Ordner und Skripte, die in deiner Mission vorhanden sind. Alle Spieler, die in der Mission existierten, haben ihren eigenen Überordner, der nicht gelöscht werden kann. Die Skripte die dort enthalten sind können jedoch gelöscht werden.

       Unteres linkes Fenster - Dieses Fenster zeigt dir die Beschreibung, die ein Designer eventuell für sein jeweiliges Skript gespeichert hat.

       Unteres rechtes Fenster - Dieses Fenster zeigt dir alle Bedingungen und Aktionen, die im derzeit ausgewählten Skript vorhanden sind.



Nun, da du jetzt weißt, was die ganzen Aktionen imn Skripte-Fenster bewirken, lass uns ein Skript anschauen, welches du für diese Mission bearbeitest.

Klicke auf den "Neues Skript"-Button und es wird dieses Fenster erscheinen:





Jedes Skript besitzt 4 Tabs, durch die du dich klicken kannst. Wir werden jeden einzelnen detailliert durchgehen. Hier ist eine kurze Beschreibung für alle Aktionen, die du bei den "Skripteigenschaften" machen kannst:



 Skriptname: Hier kannst du dein Skript benennen. Du kannst es nennen wie du willst, versuche jedoch auch hier kurze, pregnante Namen zu vergeben.

 Skriptoptionen:

       Skript ist Subroutine - Ein Skript als Subroutine zu deklarieren bedeutet, dass dieses Skript durch irgendetwas ausgelöst wird. In anderen Worten: Selbst wenn alle Bedingungen in diesem Skript erfüllt sind, wird es nicht ausgeführt, solange nichts anderes es dazu veranlasst. Dies wird oft beim Skripten von Teams benutzt.

       Skript ist aktiv - Wenn diese Option aktiviert ist, wird das Skript seine Bedingungen prüfen, um zu schauen, ob diese erfüllt sind. Wenn dieses Kästchen nicht angehakt ist, wird das Skript generell keine Bedingungen überprüfen.

       Deaktiviere nach Durchführung - Ist diese Option aktiviert, deaktiviert sich dieses Skript, ungefähr so, wie wenn man den Haken bei "Skript ist aktiv" entfernt. Ist dieses Feld nicht aktiviert, wird sich das Script auslösen und selbst wieder neu setzen, je nachdem , wie die häufig sich die Skripte selbst prüfen und sich dann immer und wieder ausführen, bis sie von etwas anderem deaktiviert werden.

       Aktivieren bei:

       Leicht, Normal, Schwer - Dies sind die Schwierigkeitsstufen des Spiels. Zum Beispiel: Wenn alle 3 aktiviert  sind, wird das Script in allen Schwierigkeitsstufen aktiv werden. Wenn nur "Schwer" aktiviert ist, wird das Skript auch nur in Aktion treten, wenn der Spieler die Schwierigkeitsstufe "Schwer" ausgewählt hat.

       Skriptdurchführung:

        Jedem Frame - Das bedeutet, dass das Skript seine Bedingung in jedem logischen Frame erneut prüft (es gibt ungefähr 6 logische Frames pro Sekunde), ebenso wie sich selbst, wenn die Bedingungen erfüllt sind.

       Alle [ ] Sekunden. - Dies gibt dir die Möglickeit, einen Wert in Sekunden anzugeben. In diesem Intervall werden die Bedingungen des Skriptes geprüft und geschaut, ob diese erfüllt sind.

       Skriptreihenfolge:

       [ ] Sequenziell ausführen - Wenn dieses Kästchen aktiviert wird, werden die Aktionen, die im Skript aufgelistet sind, der Reihe nach ausgeführt. Das bedeutet, dass wenn du ein Skript hast, das einer Einheit sagt, dass sie einem Pfad folgen und anschließend für 5 Sekunden lang die Stellung halten soll, wird das Skript warten, bis die erste Aktion ausgeführt wird, bevor es mit dem 5-sekündigen "Stellung halten" beginnt. Sequenzielle Skripte sind sehr nützlich wenn eine Einheit oder ein Team mehrere Aktionen geordnet ausführen soll.

       [Einheit / Team] - Hier bestimmst du, bei welchem Typ dieses Skript sequenziell ausgeführt werden soll. Wenn du dieses Feld ausfüllst, wird das nächste Feld mit den Namen auch mit entsprechenden Werten ausgefüllt.

        genannt [ ] - Hier wird ausgewählt, bei welcher Einheit oder welchem Team das Skript sequenziell ausgeführt wird.

       [ ]Wiederholung [ ] Mal. - Wird dieses Kästchen aktiviert, kannst du festlegen, wie oft das Skript sich selbst erneut aufrufen soll, bevor es sich deaktiviert. Wird dieser Wert auf 0 gesetzt, dann wird das Skript permanent immer wieder erneut ausgeführt, also niemals deaktiviert. Das kann nützlich sein, wenn man Patrouillen erstellt.

       Skriptkommentar - Hier kannst du eine Beschreibung über oder zu deinem Skript verfassen, was es tut, usw. Du kannst dir hier auch andere Skripte eintragen, die auf dieses Skript zugreifen - kurz gesagt: Alle Informationen, die du für dieses Skript für wichtig hältst, kommen hier rein.



Der nächste Tab handelt von den "Skriptbedingungen" und sieht folgendermaßen aus:




Skriptbedingungen sind im Prinzip das, was passieren muss, damit das Skript den Status "True" zurückgibt. Wenn es das tut, werden alle Aktionen im Tab "Actions If True" ausgeführt. Wenn das Skript "false" zurückgibt, also wenn die Bedingungen in diesem Fenster nicht erfüllt werden, werden die Aktionen im Tab "Actions If False" ausgeführt. Nun noch eine kurze Beschreibung der ganzen Schaltflächen hier:

 

       Bedingungen für dieses Skript: - Dieses Fenster zeigt dir alle derzeit erstellten Bedingungen.

       Neu... - Dies öffnet ein neues Fenster mit einer Liste von Bedingungen, die du auswählen kannst.

       Editieren... - Dies ermöglicht es dir, die Skriptbedingung zu bearbeiten, die du markiert hast. Alternativ dazu kannst du auch einen direkten Doppelklick auf eine Skriptbedingung machen, um diese zu editieren.

       Kopieren - Erstellt eine Kopie der derzeit ausgewählten Bedingung.

       Löschen - Hiermit werden die Bedingungen gelöscht, die derzeit ausgewählt sind.

       Oder - Damit wird eine "or" Zeile in dein Skript eingefügt. Or bedeutet "oder", das heißt, dass entweder Bedingung 1 oder (OR) Bedingung 2 erfüllt sein muss, um das Skript auszuführen.

       Hoch bewegen - Schiebt die Bedingung um eine Zeile nach oben, wenn du bestimmte Bedingungen zuerst prüfen möchtest, bevor andere Bedingungen geprüft werden.

       Runter bewegen- analog zu "Hoch bewegen", mit dem Unterschied, dass die Bedingung eine Zeile nach unten verschoben wird und nicht nach oben.

 

Und schließlich, der "Actions If True" und der "Actions If False"-Tab. Die beiden sind im Prinzip identisch, sodass wir uns nur den "Actions If True"-Tab anschauen:



Die Skriptaktionen steuern deine Mission. Sie sind es, die den Einheiten und Teams die Befehle geben, sich umherzubewegen oder anzugreifen. Es ist auch nützlich, um Teams und Basen zu kreieren, ebenso wie Auslöser für Ereignisse zu kreieren, die die ganze Karte betreffen, wie zum Beispiel die Anwendung von Zaubersprüchen.

 

       Aktionen, die ausgeführt werden, wenn die Bedingungen erfüllt sind - Hier erscheinen alle Aktionen, die du für das Skript erstellt hast.

       Neu... - Klickst du darauf, erscheint ein neues Fenster, in dem du Aktionen aussuchen kannst.

       Editieren... - Hiermit kannst du die markierten Skriptaktionen verändern. Alternativ dazu kannst du auch durch einen direkten Doppelklick auf das Skript zum Editierfenster gelangen.

       Kopieren - Damit kannst du eine Kopie der derzeitigen Skriptaktion erstellen.

       Löschen - Löscht die ausgewählte Skriptaktion.

       Hoch bewegen - Bewegt die Skriptaktion eine Zeile nach oben, für den Fall, dass du irgendwelche Aktionen vor anderen Aktionen ablaufen lassen möchtest. Dies ist besonders dann hilfreich, wenn du sequentielle Skriptabläufe verwendest.

       Runter bewegen - Genau das gleiche wie "Hoch bewegen" mit dem Unterschied, dass die Aktion eine Zeile nach unten rutscht.



Nun, damit du ein grobe Übersicht darüber bekommst, welche Aktionen du beim Skript-System auswählen kannst, lass uns alle Skripte erstellen, die wir für die Mission benötigen werden. Der erste Schritt, den du tun musst, ist, alle Skriptaktionen einzustellen, die im ersten Frame ablaufen sollen. Schreibe ein Skript und nenne es "Map Setup". Der Name ist im Grunde eigentlich nicht von Bedeutung, jedoch weiß man in diesem Fall z.B., dass in diesem Skript Dinge enthalten sind, die die Map konfigurieren. Wenn du die Namen deiner Skripte simpel hältst, machst du es anderen leichter, zu verstehen, was du mit diesen Skripten überhaupt machen willst. Hier ist das "Map Setup" Skript für diese Map:




Die erste Aktion, die wir ausführen, ist das Enthüllen des Startgebietes, also dort, wo die Einheiten des Spielers stehen. Das wird uns allerdings auch die erste Ork-Höhle zeigen. Das linke Bild zeigt dir, wo du diese Aktion finden kannst. Ich musste einen Bereich mit einem Radius von 460 aufdecken, um die erste Ork-Höhle sichtbar zu machen, so dass der Spieler diese im Intro sehen kann.



Die nächste Aktion, die wir erstellen, legt die Kommandopunkte aller Spieler fest. Dieses Skript spricht nicht nur die menschlichen, sondern auch alle KI Spieler, an. Wo du diese Aktion findest, siehst du im Bild rechts. Bei der Auswahl der Spieler, deren Kommandopunkte ich festlegen will, benutze ich den allgemeinen Wert "All Players"



Danach legen wir das Geld von allen Spielern fest. Wieder nutze ich hier den allgemeinen Wert "All Players", da die KI auch Geld benötigt, um sich Einheiten zu bauen und den menschlichen Spieler später mit einer Kaserne zu erwarten.



Das nächste Skript benutzen die Designer, damit in der Map die Einheiten selbst ihre Standard-Farbe haben. In Mehrspieler Karten wird diese Farbe durch die Spieler bestimmt. Standardmäßig ist diese Option immer aktiviert, also schalten wir sie auf "False", sodass sie nicht aktiv ist. Jedoch ist das keine Regel, es ist eine individuelle Einstellung.



Die nächsten beiden Skripte sind sehr wichtig. Immer, wenn du die KI Einheiten oder Gebäude bauen lassen willst, musst du diese Skripte aktivieren. Standardmäßig darf die KI keinerlei Gebäude, Einheiten, etc. bauen. Und wieder stellt man durch den Wert "All Players" sicher, dass alle KI-Spieler von dieser Aktion betroffen sind. Achte also immer darauf, dass du die Aktionen "Player can build buildings" und "Player can build units" einstellst.



Und zum Schluss, wenn du deine Map darauf ausgerichtet hast, dass es dort Missionen gibt, musst du dafür sorgen, dass diejenigen, die erst später in der Mission erscheinen sollen, versteckt sind. Der Grund, wieso bei diesen Aktionen eine Nummer dabei ist, ist der, dass dies die Reihenfolge ist, wie sie in der map.ini-Datei aufgelistet sind. Wir werden später trotzdem nochmal darauf zurückkommen.



Aus dem oberen Skript kannst du dir sicher denken, wie das "Aktion Editieren"-Fenster benutzt wird. Im Prinzip sind Überverzeichnisse mit Unterverzeichnissen und den jeweiligen Aktionen darin. Für den Rest dieser Anleitung und des Platzes Willen, werde ich auf jede Aktion verweisen, indem ich "Action:" und anschließend den Pfad zum Skript schreibe. Wenn ich euch jetzt zum Beispiel erneut über das Setzen der Kommandopunkte für Spieler erzählen würde, würde ich schreiben: "Nun erstellt die Skriptaktion “Action: Player\Command Points\Override player command points”"

Wir werden außerdem auf diese Weise auf Bedingungen eingehen, mit dem Unterschied, dass dann "Condition:" davor steht.



Intro Cine (filmische Einführung)


Alle unsere Missionen, an denen wir arbeiten, haben eine kleine kurze Einführung, die als "Intro Cine" bezeichnet wird. Diese ist hauptsächlich dafür da, dem Spieler zu zeigen, was in der Mission passieren wird und was seine ersten Ziele sein werden. Für diese Mission erstelle ich das Intro Cine in der Gruppe der "(neutral)"-Spieler und erstelle einen eigenen Ordner, den ich "Intro Cine" nenne. Hier sind 5 Skripte, die ich erstellt habe und die für das Intro Cine verantwortentlich sind:


  • Intro Cine – Part 01
    • Condition: Scripting\True.
    • Action: Interface\Input\User input -- disable.
    • Action: Camera\Modes\Letterbox mode -- begin.
    • Action: Scripting\Timer\Seconds countdown timer -- set.
      • Timer named: ‘Timer - Intro Cine Part 02 Go’
      • Expire in 2.00 seconds
  • Intro Cine – Part 02
    • Condition: Scripting\Timer expired.
      • Timer named: ‘Timer - Intro Cine Part 02 Go’
    • Action: Interface\Display Text\Show text message to user.
      • Localized String: ‘SCRIPT:WBTutorialIntroText_01’
      • For 5.00 seconds
    • Action: Scripting\Timer\Seconds countdown timer -- set.
      • Timer named: ‘Timer - Intro Cine Part 03 Go’
      • Expire in 5.00 seconds
  • Intro Cine – Part 03
    • Condition: Scripting\Timer expired.
      • Timer named: ‘Timer - Intro Cine Part 03 Go’
    • Action: Camera\Move\Move the camera to a location.
      • Move camera to: ‘WP - Look at Goblin Retreater’
      • In: 3.00 seconds
      • Camera shutter: 0.00 seconds
      • Ease-in: 1.00 seconds
      • Ease-out: 1.00 seconds
    • Action: Scripting\Timer\Seconds countdown timer -- set.
      • Timer named: ‘Timer - Intro Cine Part 04 Go’
      • Expire in 5.00 seconds
    • Action: Interface\Display Text\Show text message to user.
      • Localized String: ‘SCRIPT:WBTutorialIntroText_02’
      • For 3.00 seconds
  • Intro Cine – Part 04
    • Condition: Scripting\Timer expired.
      • Timer named: ‘Timer - Intro Cine Part 04 Go’
    • Action: Unit (includes Structures) -- Action\Move\Unit move to a location.
      • Unit named: ‘Goblin Retreater’
      • Waypoint: ‘WP - Goblin Retreater Run Here’
    • Action: Interface\Display Text\Show text message to user.
      • Localized String: ‘SCRIPT:WBTutorialIntroText_03’
      • For 5.00 seconds
    • Action: Scripting\Timer\Seconds countdown timer -- set.
      • Timer named: ‘Timer - Intro Cine Part 05 Go’
      • Expire in 5.00 seconds
  • Intro Cine – Part 05
    • Condition: Scripting\Timer expired.
      • Timer named: ‘Timer - Intro Cine Part 05 Go’
    • Action: Camera\Move\Reset to the default view.
      • Waypoint: ‘InitialCameraPosition’
      • Taking: 0.00 seconds
      • Ease-in: 0.00 seconds
      • Ease-out: 0.00 seconds
    • Action: Camera\Modes\Letterbox mode -- end.
    • Action: Interface\Input\User input -- enable.
    • Action: Interface\Notification\Display popup notification box.
      • Type: ‘NewObjective’
      • Localized String: ‘SCRIPT:WBTutorialObjectiveText_01’
      • For: 5.00 seconds


Missionsziele

 

Im Ordner PlyrElves habe ich eingestellt, wie die ganzen Ziele behandelt werden sollen. Im Prinzip ist es das, was sie als erledigt kennzeichnet und gleichzeitig die neuen Ziele im Verlauf der Mission anzeigt. Erstelle einen Ordner in diesem Spielerordner und nene ihn "Objectives". Hier sind die folgenden Skripte mit den Zielen dieser Mission verbunden:


  • Objective 01 Complete
    • Condition: Player\Area\Player has units in an area
      • Player: <Local Player>
      • Area: ‘AT - Ambush Team Attack’
    • Action: Interface\Objectives\Mark mission objective as completed
      • Objective: 1
    • Action: Interface\Objectives\Show mission objective
      • Objective: 2
    • Action: Interface\Notification\Display popup notification box.
      • Type: ‘New Objective’
      • Localized String: ‘SCRIPT:WBTutorialObjectiveText_02’
      • For: 5 seconds
  • Objective 02 Complete
    • Condition: Unit (includes Structures)\Attacked, Destroyed or Exists\Unit is destroyed.
      • Unit: ‘Goblin Retreater’
    • *AND* Condition: Scripting\Flag compared to a value
        • NOTE: Wenn du 2 zusammenhängende Bedingungen hast, die nicht durch ein “OR” verknüpft sind, wird dort ein “*AND*” erscheinen.
      • Flag named: ‘PlyrWild/Flag - Ambush Team Destroyed’
        • NOTE: Dieses Flag wird nicht in der Liste auftauchen, bis es in einem anderen Skript, “Goblin Ambush Team Destroyed”, später erstellt wird. Der Grund für dieses Flag wird weiter unten erklärt.
      • IS: TRUE
    • Action: Interface\Objectives\Mark mission objective as completed
      • Objective: 2
    • Action: Interface\Objectives\Show mission objective
      • Objective: 3
    • Action: Interface\Notification\Display popup notification box.
      • Type: ‘New Objective’
      • Localized String: ‘SCRIPT:WBTutorialHintText_02’
      • For: 5 seconds
  • Objective 03 Complete
    • Condition: Player\Area\Player doesn’t have units in an area.
      • Player: ‘PlryWild’
      • Area: ‘AT - Goblin Base’
    • Action: Interface\Objectives\Mark mission objective as completed
      • Objective: 3
    • Action: Scripting\Flags\Set flag to value.
      • Flag named: ‘Flag - Mission won’
      • To: TRUE
  • Bonus Objective 1 Complete
    • Condition: Player\Area\Player has units in an area
      • Player: <Local Player>
      • Area: ‘AT - Transfer Reinforcement Elves’
    • Action: Interface\Objectives\Mark mission objective as completed
      • Objective: 4

 

Sieg- & Niederlagebedingungen

 

Im PlyrElves Verzeichnis habe ich zudem die "Mission Won" und "Mission Lost" Skripte.
Diese lauten wie folgt:



  • Mission Won
    • Condition: Scripting\Flag compared to a value
      • Flag named: ‘PlyrWild/Flag - Ambush Team Destroyed’
        • NOTE: Dieses Flag wurde in Objective 03 Complete gesetzt.
    • Action: Win & Loss\Announce victory.
  • Mission Lost
    • Condition: Team\Attacked, Destroyed, or Exists\Team is destroyed.
      • Team: ‘teamPlyrElves’
        • NOTE: Die Designierung von ‘teamPlyrElves’ deckt alle Einheiten ab, die vom Spieler kontrolliert werden, sowie die Einheiten, die standardmäßig in diesem Team sind.


PlyrElves Skripte

 

Das übrige Skript im PlyrElves-Verzeichnis ist dazu da, dem Spieler mitzuteilen, dass er seinem Endziel immer näher kommt. Dies wird wie folgt geskriptet:



  • Found Patrol
    • Condition: Player\Sighted\Player has sighted Team.
      • Team: ‘PlyrWild/Goblin Patrol Team 01’
      • Discovered by: ‘<Local Player>’
    • ***OR*** Condition: Player\Sighted\Player has sighted Team.
      • Team: ‘PlyrWild/Goblin Patrol Team 02’
      • Discovered by: ‘<Local Player>’
    • Action: Interface\Notification\Display popup notification box.
      • Type: ‘Hint’
      • Localized String: ‘SCRIPT:WBTutorialHintText_03’
      • For: 5 seconds

PlyrCivilian Skripte

 

Da die Elben-Verstärkungstrupps als neutrale Einheiten ins Spiel gesetzt werden, muss man ein Skript schreiben, dass sie von neutralen Einheiten zu Einheiten der Partei des Spielers macht.

Dieses Skript kommt in den PlyrCivilian und sieht so aus:


  • Elven Reinforcements
    • Condition: Player\Area\Player has units in an area
      • Player: <Local Player>
      • Area: ‘AT - Transfer Reinforcement Elves’
    • Action: Unit (includes structures) -- Other\Transfer a specific unit to the control of Player.
      • Unit: ‘Elf Barracks’
      • Command of Player: ‘<Local Player>’
    • Action: Unit (includes structures) -- Other\Transfer a specific unit to the control of Player.
      • Unit: ‘Elf Reinforcement 01’
      • Command of Player: ‘<Local Player>’
    • Action: Unit (includes structures) -- Other\Transfer a specific unit to the control of Player.
      • Unit: ‘Elf Reinforcement 02’
      • Command of Player: ‘<Local Player>’
    • Action: Interface\Notification\Display popup notification box.
      • Type: ‘BonusObjectiveCompleted’
      • Localized String: ‘SCRIPT:WBTutorialHintText_03’
      • For: 5 seconds


Ork-Basis


Im PlyrWild-Ordner befindet sich das Skript, das die Ork-Basis erstellt. Bis jetzt war es bei den verwendeten Skripten nicht notwendig, die jeweiligen Skript-Eigenschaften zu bearbeiten. Für die folgenden Skripte musst du jedoch sicherstellen, dass die Skripte als Subroutinen definiert sind. Erstelle einen Ordner und nenne ihn "Ork-Basis" und hier folgen die Skripte, die du in diesen Ordner einfügen musst, um die Erstellung der Basis zu steuern:



  • Build Defense Teams - Binde dieses Skript an die Production\Condition-Bedingungen des Goblin Base Defense Team
    • Im Skripteinstellungen-Tab (erster Tab wenn man ein neues Skript erstellt) sollten die folgenden Kästchen und Parameter wie folgt eingestellt sein:
      • Skript ist Subroutine: aktiviert.
      • Deaktiviere nach Durchführung: nicht aktiviert.
        • NOTE: Der Grund dafür, wieso dieses Skript sich nach erfolgreichem Durchlauf nicht deaktivieren muss, ist, dass das Skript nur einmal pro Instanz läuft. Wenn du es deaktivierst, könnten zukünftige Instanzen vom selben Team möglicherweise nicht erstellt werden.
    • Conditon: Scripting\Counter compared to a value.
      • Counter: ‘Counter - Goblin Patrols Dead’
      • IS: Greater Than or Equal To
      • Value: 3
    • Action: Scripting\Debug\Null operation.
      • NOTE: Der Grund für die Null Operation ist der, dass das Skript an ein Team gebunden ist, das nur prüft, ob die Bedingung erfüllt ist. Sobald diese Bedingung einmal erfüllt ist, wird das Team erstellt, was wiederrum von den Teamvorlagen gesteuert wird.
  • Build Attack Teams - Binde dieses Skript an die Production\Condition-Bedingungen der Teamvorlagen des Goblin Base Attack Team
    • Im Skripteinstellungen-Tab (erster Tab wenn man ein neues Skript erstellt) sollten die folgenden Kästchen und Parameter wie folgt eingestellt sein:
      • Skript ist Subroutine: aktiviert.
      • Deaktiviere nach Durchführung: Nicht aktiviert.
    • Conditon: Scripting\Counter compared to a value.
      • Counter: ‘Counter - Goblin Patrols Dead’
      • IS: Greater Than or Equal To
      • Value: 3
    • ***OR*** Condition: Player\Area\Player has units in an area
      • Player: <Local Player>
      • Area: ‘AT - Build Goblin Defense and Attack Teams’
    • Action: Scripting\Debug\Null operation.
  • Defense Team Built Binde dieses Skript an die Behavior Script Triggers\On Create-Bedingungen der Teamvorlagen des Goblin Base Defense Team.
    • Im Skripteinstellungen-Tab (erster Tab wenn man ein neues Skript erstellt) sollten die folgenden Kästchen und Parameter wie folgt eingestellt sein:
      • Skript ist Subroutine: Aktiviert.
    • Condition: Scripting\True.
      • NOTE: Der Grund dafür, wieso die Bedinfung einfach nur True ist, ist der, dass das Script an einen Bereich der Teamvorlagen gebunden ist, was wiederrum selbst als Bedingung agiert. Also braucht dieses Script nur Aktionen.
    • Action: Team -- Action\Guard\Guard -- area.
      • Team: ‘<This Team>’
      • Area: ‘AT - Goblin Base’
  • Attack Team Built Binde dieses Skript an die Behavior Script Triggers\On Create-Bedingungen der Teamvorlagen des Goblin Base Defense Team.
    • Im Skripteinstellungen-Tab (erster Tab wenn man ein neues Skript erstellt) sollten die folgenden Kästchen und Parameter wie folgt eingestellt sein:
      • Skript ist Subroutine: Aktiviert.
    • Condition: Scripting\True.
    • Action: Team -- Action\Attack or Hunt\Team attacks Team.
      • Team: ‘<This Team>’
      • Attack on Team: ‘PlyrElves/teamPlyrElves’



Ork-Patrouille


Dieser Ordner steuert die 4 Teams, die die Straßen entlang patrouillieren. Diese Zusammenstellung der Skripte führt uns auch zu einem neuen Parameter und zwar den sequenziellen Skripten. Benenne den Ordner "Goblin-Patrouille" und füge die folgenden Skripte ein:


  • Goblin Patrol Team Destroyed - Binde dieses Script an das Behavior Script Triggers\On Destroyed [100] Feld für jede der Goblin Patrol’s (01-04) Teamvorlagen.
    • Condition: Scripting\True
    • Action: Scripting\Counters\Increment counter.
      • Add: 1
      • Counter named: ‘Counter - Goblin Patrols Dead’

  • Goblin Patrol 01 - Patrol
    • Im Skripteinstellungen-Tab (erster Tab wenn man ein neues Skript erstellt) sollten die folgenden Kästchen und Parameter wie folgt eingestellt sein:
      • Sequentiell ausführen: Aktiviert.
      • Auf: [Team]
      • genannt: [Goblin Patrol Team 01]
      • Wiederholung: [ 0 ] Mal: Aktiviert.
        • NOTE: Wir setzen diesen Wert auf 0, damit das Team nicht aufhört, zu patroullieren. Sobald das Skript am Ende angelangt ist, springt es wieder an die Anfangsstelle und wiederholt sich so immer wieder.
    • Condition: Scripting\True
    • Action: Team -- Action\AttackMove\Follow a waypoint path.
      • Team: ‘Goblin Patrol Team 01’
      • Waypoint Path: ‘WP Path - Patrol Path 01’
      • As a team is: FALSE
      • In formation is: FALSE
    • Action: Team -- Other\SequentialScript\Guard -- number of seconds.
      • Team: ‘Goblin Patrol Team 01’
      • Guards for: 5 seconds
    • Action: Team -- Action\AttackMove\Follow a waypoint path.
      • Team: ‘Goblin Patrol Team 01’
      • Waypoint Path: ‘WP Path - Patrol Path 02’
      • As a team is: FALSE
      • In formation is: FALSE
    • Action: Team -- Other\SequentialScript\Guard -- number of seconds.
      • Team: ‘Goblin Patrol Team 01’
      • Guards for: 5 seconds

  • Goblin Patrol 02 - Patrol
    • Im Skripteinstellungen-Tab (erster Tab wenn man ein neues Skript erstellt) sollten die folgenden Kästchen und Parameter wie folgt eingestellt sein:
      • Sequentiell ausführen: Aktiviert.
      • Auf: [Team]
      • genannt: [Goblin Patrol Team 02]
      • Wiederholung: [ 0 ] Mal: Aktiviert.
    • Condition: Scripting\True
    • Action: Team -- Action\AttackMove\Follow a waypoint path.
      • Team: ‘Goblin Patrol Team 02’
      • Waypoint Path: ‘WP Path - Patrol Path 02’
      • As a team is: FALSE
      • In formation is: FALSE
    • Action: Team -- Other\SequentialScript\Guard -- number of seconds.
      • Team: ‘Goblin Patrol Team 02’
      • Guards for: 5 seconds
    • Action: Team -- Action\AttackMove\Follow a waypoint path.
      • Team: ‘Goblin Patrol Team 02’
      • Waypoint Path: ‘WP Path - Patrol Path 01’
      • As a team is: FALSE
      • In formation is: FALSE
    • Action: Team -- Other\SequentialScript\Guard -- number of seconds.
      • Team: ‘Goblin Patrol Team 02’
      • Guards for: 5 seconds

  • Goblin Patrol 03 - Patrol
    • Im Skripteinstellungen-Tab (erster Tab wenn man ein neues Skript erstellt) sollten die folgenden Kästchen und Parameter wie folgt eingestellt sein:
      • Sequentiell ausführen: Aktiviert.
      • Auf: [Team]
      • genannt: [Goblin Patrol Team 03]
      • Wiederholung: [ 0 ] Mal: Aktiviert.
    • Condition: Scripting\True
    • Action: Team -- Action\AttackMove\Follow a waypoint path.
      • Team: ‘Goblin Patrol Team 03’
      • Waypoint Path: ‘WP Path - Patrol Path 03’
      • As a team is: FALSE
      • In formation is: FALSE
    • Action: Team -- Other\SequentialScript\Guard -- number of seconds.
      • Team: ‘Goblin Patrol Team 03’
      • Guards for: 5 seconds
    • Action: Team -- Action\AttackMove\Follow a waypoint path.
      • Team: ‘Goblin Patrol Team 03’
      • Waypoint Path: ‘WP Path - Patrol Path 04’
      • As a team is: FALSE
      • In formation is: FALSE
    • Action: Team -- Other\SequentialScript\Guard -- number of seconds.
      • Team: ‘Goblin Patrol Team 03’
      • Guards for: 5 seconds

  • Goblin Patrol 04 - Patrol
    • Im Skripteinstellungen-Tab (erster Tab wenn man ein neues Skript erstellt) sollten die folgenden Kästchen und Parameter wie folgt eingestellt sein:
      • Sequentiell ausführen: Aktiviert.
      • Auf: [Team]
      • genannt: [Goblin Patrol Team 04]
      • Wiederholung: [ 0 ] Mal: Aktiviert.
    • Condition: Scripting\True
    • Action: Team -- Action\AttackMove\Follow a waypoint path.
      • Team: ‘Goblin Patrol Team 04’
      • Waypoint Path: ‘WP Path - Patrol Path 04’
      • As a team is: FALSE
      • In formation is: FALSE
    • Action: Team -- Other\SequentialScript\Guard -- number of seconds.
      • Team: ‘Goblin Patrol Team 04’
      • Guards for: 5 seconds
    • Action: Team -- Action\AttackMove\Follow a waypoint path.
      • Team: ‘Goblin Patrol Team 04’
      • Waypoint Path: ‘WP Path - Patrol Path 03’
      • As a team is: FALSE
      • In formation is: FALSE
    • Action: Team -- Other\SequentialScript\Guard -- number of seconds.
      • Team: ‘Goblin Patrol Team 04’
      • Guards for: 5 seconds


PlyrWild Skripte

Die letzten 3 Skripte steuern das Erscheinen der Ork-Verstärkungstrupps und die Ork-Hinterhälte. Sie sind wie folgt zu konfigurieren:


  • Transfer Goblin Retreater to this Player
    • Condition: Unit (includes Structures)\Area or Path\Unit inside an area.
      • Unit: ‘Goblin Retreater’
      • Area: ‘AT - Transfer Goblin Retreater to Wild Player’
    • Action: Unit (includes Structures) -- Other\Allegiance\Transfer a specific unit to the control of Player.
      • Unit: ‘Goblin Retreater’
      • Player: ‘PlyrWild’
  • Goblin Ambush Team Destroyed
    • Condition: Team\Attack, Destroyed, or Exists\Team is destroyed.
      • Team: ‘Ambush Team’
    • Action: Scripting\Flags\Set flag to value.
      • Flag named: ‘Flag - Ambush Team Destroyed’
      • To: TRUE
        • NOTE: Es gibt einen guten Grund, wieso wir ein Flag setzen, wenn ein Team zerstört wurde. Die Engine erkennt das Team nämlich nur in dem Frame als vernichtet, in dem es auch vernichtet wurde. Wenn ein Team also stirbt und du 5 Frames später kontrollierst, ob das Team besiegt wurde, wird dir das Skript als Antwort kein "true" zurückliefern. Wenn du überprüfen willst, ob ein Team vernichtet wurde, stelle sicher, dass du ein Skript wie das hier erstellst, das in jedem einzelnen Frame prüft und solche Flags setzt. Flags bleiben durchgehend im Arbeitsspeicher, du kannst also jederzeit auf sie zugreifen.
  • Ambushers Attack
    • Condition: Player\Area\Player has units in an area
      • Player: <Local Player>
      • Area: ‘AT - Ambush Team Attack’
    • Action: Team -- Other\Settings\Set the general attitude of Team.
      • Team: ‘Ambush Team’
      • Attitude to: Aggressive
    • Action: Team -- Action\Attack or Hunt\Team attacks Team.
      • Team: ‘Ambush Team’
      • Attack on Team: ‘PlyrElves/teamPlyrElves’



Und das war jetzt auch schon das Skript-Tutorial. Ich hoffe, dass du dich ein wenig mit unserem Skript-Werkzeug vertraut machen konntest und jetzt selbstständig die übrigen Skripte des WorldBuilders erforschen kannst. In diesem Sinne: viel Erfolg und ein fröhliches Skripten!


Deutscher WorldBuilder für Der Herr der Ringe: Die Schlacht um Mittelerde 2

World Builder für
C&C: Alarmstufe Rot 3:

 » Beschreibung Externer Link
 » Download WB Externer Link

Tutorials für Schlacht
um Mittelerde 2:

 » Mapping-Infos
 » Off. Tutorials

World Builder für
Schlacht um Mittelerde 2

 » Beschreibung
 » Fehlermeldungen
 » Download dt. WB

World Builder für
Schlacht um Mittelerde

 » Beschreibung
 » Fehlermeldungen
 » Screenshots
 » Download dt. WB

Sonstiges:
 » Datenschutz
 » Impressum


Copyright © 2004-2011  worldbuilder.info | Alle Marken und Markenzeichen gehören allein ihren jeweiligen Inhabern.
Der Herr der Ringe: Die Schlacht um Mittelerde 2 ist ein Echtzeitstrategiespiel von Electronic Arts.

Tipps: Infos, News und Bilder zu Browserspielen, Gaming-Apps und Videospielen auf BrowserGameSpielen.de