[[http://www.siedler-games.de|{{:sg-link.jpg|}}]] ======NPC-Briefings====== FIXME Zunächst muss betont werden, dass nur ein geringer Unterschied zwischen normalen Briefings und NPC-Briefings besteht. Da wir allerdings bei lokal definierten Variablen bleiben wollen (Savegame-Problematik) und keine Umwege bei den Entity-Positionen gehen wollen, ist es angebracht, **keine** richtigen Briefings in das Briefing-Table einzufügen. =====Variante 1===== Man kann leere Briefings als Briefings einfügen, die dann in ihrer finished-Funktion das richtige Briefing erstellen. Beispiel: function CreateNPCNeighbour() local briefing = { { --[[ eine leere Seite muss sein ]] } }; briefing.finished = function() --hier wird das richtige Briefing erstellt local briefing = {}; local AP = function(_page) table.insert(briefing, _page); return _page; end local page1 = AP{ title = "Nachbar", text = "Neu hier?", npc = { id = GetEntityId( "Neighbour" ), isObserved = true }, dialogCamera = true }; briefing.finished = function() ResolveBriefing(page1); end StartBriefing(briefing); end local npc = { name = "Neighbour", briefing = briefing }; CreateNPC(npc); end =====Variante 2===== NPCs ermöglichen das Erstellen einer Callback-Funktion. Diese hat den Vorteil, dass kein leeres Briefing erstellt werden muss. Das richtige Briefing wird dann in der Callback-Funktion erstellt. function CreateNPCNeighbour() local callback = function() local briefing = {}; local AP = function(_page) table.insert(briefing, _page); return _page; end; local page1 = AP{ title = "Nachbar", text = "Neu hier?", npc = { id = GetEntityId( "Neighbour" ), isObserved = true }, dialogCamera = true }; briefing.finished = function() ResolveBriefing(page1); end StartBriefing(briefing); end; local npc = { name = "Neighbour", callback = callback }; CreateNPC(npc); end