Benutzer-Werkzeuge

Webseiten-Werkzeuge


tutorials:npc_briefings

Inhaltsverzeichnis

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
tutorials/npc_briefings.txt · Zuletzt geändert: 2021/09/18 19:16 (Externe Bearbeitung)