scripting:tutorials:level2:chests
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.
scripting:tutorials:level2:chests [2023/11/16 14:52] – angelegt fritz_98 | scripting:tutorials:level2:chests [2023/11/23 12:11] (aktuell) – fritz_98 | ||
---|---|---|---|
Zeile 3: | Zeile 3: | ||
Die Suche nach Schatztruhen ist eine gute Möglichkeit, | Die Suche nach Schatztruhen ist eine gute Möglichkeit, | ||
- | Im Folgenden stellen wir also einige Funktionen vor, mit denen funktionierende Schatztruhen auf der Karte platziert werden können. | + | Im Folgenden stellen wir also einige Funktionen vor, mit denen funktionierende Schatztruhen auf der Karte platziert werden können. Im Anschluss folgt ein Abschnitt zur [[ scripting: |
---- | ---- | ||
====CreateChest==== | ====CreateChest==== | ||
+ | |||
+ | '' | ||
+ | |||
+ | An der Position der '' | ||
+ | <code lua> | ||
+ | -- Irgendwo, beispielsweise in der Funktion FirstMapAction, | ||
+ | CreateChest(GetPosition(" | ||
+ | -- Die Schatztruhe muss hierunter noch aktiviert werden, siehe den Abschnitt weiter unten | ||
+ | | ||
+ | -- Die Funktion, die als Callback angegeben wurde, muss definiert werden: | ||
+ | function CallbackChestWood() | ||
+ | AddWood(1400) | ||
+ | end | ||
+ | </ | ||
+ | |||
+ | In einem anderen Beispiel soll der Schlüssel zu einem Tor namens ''" | ||
+ | <code lua> | ||
+ | function FirstMapAction() | ||
+ | -- Zu Beginn hat der Spieler den Schlüssel zum Tor noch nicht gefunden | ||
+ | PlayerHasGateKey = false | ||
+ | -- Ein SimpleJob soll prüfen, ob der Spieler das Tor öffnen kann | ||
+ | StartSimpleJob(" | ||
+ | -- Die Truhe mit dem Schlüssel wird platziert | ||
+ | CreateChest(GetPosition(" | ||
+ | -- Hierunter muss die Schatztruhe noch aktiviert werden, siehe den Abschnitt weiter unten | ||
+ | end | ||
+ | |||
+ | function CallbackChestKey() | ||
+ | -- Im Callback der Schatztruhe setzen wir den Schlüssel als gefunden fest | ||
+ | PlayerHasGateKey = true | ||
+ | end | ||
+ | |||
+ | function OpenGate() | ||
+ | -- Wir suchen nach Einheiten von Spieler 1 in der Nähe des Tores | ||
+ | local PositionGate = GetPosition(" | ||
+ | local NumberOfEntities, | ||
+ | | ||
+ | -- Wenn mindestens eine Einheit von Spieler 1 in der Nähe des Tores ist... | ||
+ | if NumberOfEntities > 0 then | ||
+ | -- ...prüfe, ob er den Schlüssel besitzt | ||
+ | if PlayerHasGateKey then | ||
+ | -- wenn ja, öffne das Tor | ||
+ | ReplaceEntity(" | ||
+ | -- und beende den Job | ||
+ | return true | ||
+ | else | ||
+ | -- wenn nicht, zeige eine Nachricht an, dass der Schlüssel fehlt | ||
+ | Message(" | ||
+ | end | ||
+ | end | ||
+ | end | ||
+ | </ | ||
+ | |||
+ | Oft will man aber gar nicht spezielle Schatztruhen bauen, sondern einfach eine Position angeben und dem Spiel zufällig den Inhalt überlassen. Wird keine Funktion als '' | ||
+ | |||
+ | ---- | ||
====CreateRandomGoldChest==== | ====CreateRandomGoldChest==== | ||
+ | |||
+ | Mit '' | ||
====CreateRandomChests==== | ====CreateRandomChests==== | ||
+ | |||
+ | Mit '' | ||
+ | |||
+ | Wenn du etwa 6 '' | ||
====CreateRandomGoldChests==== | ====CreateRandomGoldChests==== | ||
+ | |||
+ | Mit '' | ||
+ | |||
+ | Wenn du etwa 6 '' | ||
+ | |||
+ | ---- | ||
+ | |||
+ | ====Schatztruhen aktivieren==== | ||
+ | |||
+ | Alle Arten von Schatztruhen haben gemeinsam, dass sie ohne Weiteres nicht interaktiv sind. Damit Schatztruhen funktionieren, | ||
+ | |||
+ | Wenn auf deiner Karte ein Dario mit dem Skriptnamen ''" | ||
+ | <code lua> | ||
+ | CreateChestOpener(" | ||
+ | </ | ||
+ | |||
+ | Es ist allerdings nicht zwingend notwendig, dass der Truhenöffner ein Held ist. Auch ein Kundschafter mit dem Skriptnamen ''" | ||
+ | <code lua> | ||
+ | CreateChestOpener(" | ||
+ | </ | ||
+ | |||
+ | Zusammen mit einer zufälligen Schatztruhe sowie Dario und dem Kundschafter als Truhenöffner ließe sich so eine zufällig gefüllte Truhe an die Position des '' | ||
+ | <code lua> | ||
+ | function FirstMapAction() | ||
+ | CreateChest(GetPosition(" | ||
+ | CreateChestOpener(" | ||
+ | CreateChestOpener(" | ||
+ | StartChestQuest() | ||
+ | end | ||
+ | </ | ||
+ | |||
+ | ---- | ||
+ | |||
+ | Das nächste Kapitel befasst sich kurz damit, wie funktionierende Söldnerquartiere definiert werden können. | ||
+ | |||
+ | [[ scripting: | ||
+ | [[ scripting: | ||
+ | [[ scripting: |
scripting/tutorials/level2/chests.1700146378.txt.gz · Zuletzt geändert: 2023/11/16 14:52 von fritz_98