scripting:tutorials:level2:npcs
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.
Beide Seiten, vorherige ÜberarbeitungVorherige ÜberarbeitungNächste Überarbeitung | Vorherige Überarbeitung | ||
scripting:tutorials:level2:npcs [2023/09/10 13:20] – fritz_98 | scripting:tutorials:level2:npcs [2023/11/11 11:53] (aktuell) – [Zusätzliche Parameter der Callback-Funktion] fritz_98 | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
- | =====NPCs===== | + | ======NPCs====== |
Grundsätzlich sind alle Nichtspielercharaktere (Non-Player-Characters) NPCs. Im Kontext von Siedler 5 sind allerdings speziell jene Charaktere gemeint, die dem Spieler über Helden Interaktionen anbieten, gekennzeichnet durch ein großes Ausrufezeichen über dem Kopf. | Grundsätzlich sind alle Nichtspielercharaktere (Non-Player-Characters) NPCs. Im Kontext von Siedler 5 sind allerdings speziell jene Charaktere gemeint, die dem Spieler über Helden Interaktionen anbieten, gekennzeichnet durch ein großes Ausrufezeichen über dem Kopf. | ||
Zeile 52: | Zeile 52: | ||
\\ | \\ | ||
- | ===Interaktion mit einem bestimmten Helden=== | + | ====Interaktion mit einem bestimmten Helden==== |
Möglicherweise wollen wir den Kundschafter nur mit Dario sprechen lassen. Dafür muss die Dario-Entity den Skriptnamen ''" | Möglicherweise wollen wir den Kundschafter nur mit Dario sprechen lassen. Dafür muss die Dario-Entity den Skriptnamen ''" | ||
Zeile 60: | Zeile 60: | ||
-- Fall den Start des Briefings | -- Fall den Start des Briefings | ||
function CreateNpcScout() | function CreateNpcScout() | ||
- | | + | |
+ | CreateNPC{ | ||
name = " | name = " | ||
callback = CreateBriefingScout, | callback = CreateBriefingScout, | ||
Zeile 66: | Zeile 67: | ||
wrongHeroMessage = "Meine Informationen übergebe ich nur Dario persönlich!" | wrongHeroMessage = "Meine Informationen übergebe ich nur Dario persönlich!" | ||
} | } | ||
- | |||
- | CreateNPC(Npc) | ||
end | end | ||
Zeile 85: | Zeile 84: | ||
\\ | \\ | ||
- | ===Zusätzliche Parameter der Callback-Funktion=== | + | ====Zusätzliche Parameter der Callback-Funktion==== |
Im vorigen Beispiel haben wir gesehen, dass es ganz schön sein kann, wenn der NPC den Helden, mit dem er angesprochen wird, direkt beim Namen nennen kann bzw. generell der Heldenname im Callback verfügbar ist. | Im vorigen Beispiel haben wir gesehen, dass es ganz schön sein kann, wenn der NPC den Helden, mit dem er angesprochen wird, direkt beim Namen nennen kann bzw. generell der Heldenname im Callback verfügbar ist. | ||
- | Tatsächlich werden sowohl die '' | + | Tatsächlich werden sowohl die '' |
In diesem Beispiel haben wir zuvor auf der Karte Dario mit dem Skriptnamen ''" | In diesem Beispiel haben wir zuvor auf der Karte Dario mit dem Skriptnamen ''" | ||
Zeile 96: | Zeile 95: | ||
-- An der Erstellung des NPCs ändert sich nichts | -- An der Erstellung des NPCs ändert sich nichts | ||
function CreateNpcScout() | function CreateNpcScout() | ||
- | | + | |
name = " | name = " | ||
callback = CreateBriefingScout | callback = CreateBriefingScout | ||
} | } | ||
- | |||
- | CreateNPC(Npc) | ||
end | end | ||
Zeile 113: | Zeile 110: | ||
| | ||
-- Mit dieser Information können wir nun festlegen, wie der Kundschafter den Helden anspricht | -- Mit dieser Information können wir nun festlegen, wie der Kundschafter den Helden anspricht | ||
- | local Address = "" | + | local Address = "Herr" |
if HeroName == " | if HeroName == " | ||
Address = " | Address = " | ||
- | else | ||
- | Address = " | ||
end | end | ||
| | ||
Zeile 142: | Zeile 137: | ||
\\ | \\ | ||
- | ===Weitere Parameter=== | + | ====Weitere Parameter==== |
Im nächsten Beispiel wollen wir weitere Parameter für NPCs demonstrieren und zeigen, dass auf eine NPC-Interaktion nicht notwendigerweise ein Briefing folgen muss. Außerdem zeigen wir, dass einem NPC noch weitere, frei wählbare Werte gegeben werden können, auf die in der NPC-Interaktion zugegriffen werden kann. | Im nächsten Beispiel wollen wir weitere Parameter für NPCs demonstrieren und zeigen, dass auf eine NPC-Interaktion nicht notwendigerweise ein Briefing folgen muss. Außerdem zeigen wir, dass einem NPC noch weitere, frei wählbare Werte gegeben werden können, auf die in der NPC-Interaktion zugegriffen werden kann. | ||
Zeile 184: | Zeile 179: | ||
---- | ---- | ||
- | ====Funktionen für NPCs==== | + | =====Funktionen für NPCs===== |
- | DestroyNPC | + | Es gibt einige Funktionen, die für NPCs benutzt werden können, die im Folgenden kurz erklärt sind. |
- | SetNPCWaypoints | + | ====Einen NPC deaktivieren==== |
+ | |||
+ | Mit der Funktion '' | ||
+ | |||
+ | Technisch gesehen arbeitet '' | ||
+ | <code lua> | ||
+ | for i = 1, 4 do | ||
+ | DestroyNPC{name = " | ||
+ | end | ||
+ | </ | ||
+ | |||
+ | \\ | ||
+ | |||
+ | ====Wegpunkte für NPCs==== | ||
+ | |||
+ | Wir können NPCs wie den Kundschafter oben zwischen verschiedenen Wegpunkten umherwandern lassen. Dazu müssen auf der Karte Entities platziert werden, deren Skriptnamen einem durchnummerierten Schema folgen. | ||
+ | |||
+ | Zum Beispiel können wir dem Kundschafter oben Wegpunkte geben, indem wir einige '' | ||
+ | |||
+ | Zuerst muss der NPC mit '' | ||
+ | <code lua> | ||
+ | SetNPCWaypoints(" | ||
+ | </ | ||
+ | alle Wegpunkte, deren Namen mit ''" | ||
+ | |||
+ | Die Wegpunkte werden nicht der Reihe nach angesteuert. Es wird (in diesem Fall alle 30 Sekunden) ein Wegpunkt ausgewählt, | ||
+ | |||
+ | Wird ein Zielpunkt während des Spiels zerstört, so wird er nicht automatisch aus der Liste entfernt. Die so entstandene " | ||
+ | |||
+ | Dem NPC kann zu jedem Zeitpunkt neue Wegpunkte zuweisen. Außerdem verweilt der NPC automatisch an einem Wegpunkt, wenn ein Held in der Nähe ist, was das Ansprechen erleichtert. Er bleibt allerdings nicht automatisch stehen, wenn er einen Held auf seinem Weg trifft. | ||
+ | |||
+ | \\ | ||
+ | |||
+ | ====NPC-Status abfragen==== | ||
+ | |||
+ | Um zu prüfen, ob mit einem NPC bereits gesprochen wurde, wird die Funktion '' | ||
+ | <code lua> | ||
+ | TalkedToScout = TalkedToNPC{name = " | ||
+ | </ | ||
+ | |||
+ | ---- | ||
- | SetNPCFollow | + | NPCs können nun mit Helden sprechen und ihnen Aufträge erteilen. Wie die Erfüllung dieser Aufträge ermittelt wird, wird im nächsten Kapitel gezeigt. |
- | TalkedToNPC | + | [[ scripting: |
+ | [[ scripting: |
scripting/tutorials/level2/npcs.1694352043.txt.gz · Zuletzt geändert: 2023/09/10 13:20 von fritz_98