scripting:tutorials:level2:chests
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.
| Nächste Überarbeitung | Vorherige Überarbeitung | ||
| scripting:tutorials:level2:chests [2023/11/16 14:52] – angelegt fritz_98 | scripting:tutorials:level2:chests [2025/07/08 12:52] (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
