[[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