Benutzer-Werkzeuge

Webseiten-Werkzeuge


s5lua_g:g_funktionen:setupdestroy

Questhandling SetupDestroy


function SetupDestroy( _Quest )

Mit der Funktion SetupDestroy( _Quest ) kann man sehr leicht überprüfen, ob der Spieler irgendwas irgendwo kaputt gemacht hat (Armeen, Gebäude oder sonstige Entities). Ihr braucht keinen zusätzlichen Code in euer Script zu kopieren. Die Funktionalität zur Überwachung stellt das Spiel von sich aus bereit.

_Quest ist ein Table, das folgende Werte enthalten kann:

Hier gehts um Gebäude (Angaben optional, aber: entweder alle drei oder keins):
AreaPos: Mittelpunkt der Zielumgebung
AreaSize: Radius um AreaPos in Siedlerzentimetern. Alle Gebäude in diesem Umkreis müssen zerstört werden…
AreaPlayerID: …aber nur die Gebäude dieses Spielers

Hier gehts um ganz bestimmte Entities (auch optional):
Target: Name oder ID einer Entity die zerstört werden muss
Targets: Dies kann zweierlei sein: Entweder ein Table mit allen Entitynamen oder IDs oder ein Name für eine Gruppe von Entities. Dazu ein Beispiel: Man gibt hier als Namen „Target“ an. Auf der Map befinden sich dann Entities mit den Namen „Target1“, „Target2“, „Target3“, … „TargetN“.

Und hier geht es um eine bewachende Armee (ebenfalls optional):
Army: Armee Table. Diese Armee muss ausgeschaltet werden.
ArmyPos: Wenn angegeben, läuft die Armee zu dieser Stelle, nachdem der Quest gestartet wurde
ArmyRange: Die Handlungsreichweite der Armee

Callback: Die Funktion die aufgerufen wird, wenn der Quest erfüllt ist. Der Callback Funktion wird der selbsterstellte Quest-Table als Parameter übergeben. Das ist ganz praktisch, da man den Table hier mit eigenen zusätzlichen Infos füllen und das in der Callback Funktion verwenden kann.

Beispiel 1:

function SetupQuest_Destroy()
    -- Zunächst wird das quest Table mit allen Informationen gefüllt
    local quest = {
        -- Das Hauptquartier des Gegners soll zerstört werden
        Target = "Player_2_HQ",
 
        -- Wenn das erledigt wurde, wird Callback_QuestBuild aufgerufen. Diese Funktion kann man natürlich,
        -- wie schon im Briefingtutorial demonstriert, auch gleich hier erstellen
        Callback = function( _Quest )
                Message( _Quest.MessageText )
            end,
 
        -- Jetzt noch ein paar zusätliche Infos für später merken
        -- Man könnte auch "egal" anstatt "MessageText" schreiben, hauptsache man holt den Wert mit diesem Namen später wieder heraus
        MessageText = "Ihr habt Player 2 besiegt!"
    }
 
    -- Nun wird der BauCheck gestartet
    SetupDestroy( quest )
end

Beispiel 2:

function SetupQuest_Destroy()
    -- Zunächst wird das quest Table mit allen Informationen gefüllt
    local quest = {
        -- In der Nähe von der (Script-)Entity "Tal" müssen Gebäude zerstört werden
        AreaPos = "Tal",
 
        -- Im Umkreis von 3000 Siedlerzentimetern um "Tal" muss alles kaputt gemacht werden
        AreaSize = 3000,
 
        -- Und zwar müssen die Gebäude von Spieler 7 zerstört werden
        AreaPlayerID = 7,
 
        -- Wenn das erledigt wurde, wird Callback_QuestBuild aufgerufen. Diese Funktion kann man natürlich,
        -- wie schon im Briefingtutorial demonstriert, auch gleich hier erstellen
        Callback = NaechsterAuftrag
    }
 
    -- Nun wird der BauCheck gestartet
    SetupDestroy( quest )
end

Beispiel 3:

function SetupCheck_Destroy()
    SetupDestroy{
        Target = "dampf",  -- Eine Entity mit ScriptName "dampf" ist in der Map vorhanden
        Callback = function()
                     Message("Späher: Die verhexte Dampfwalze wurde zerstört!")
                   end
    }
end

Beispiel 4:

function SetupCheck_Destroy()
    SetupDestroy{
        Targets = "turm",  -- Mehrere Entities mit den ScriptNamen "turm1", "turm2" usw. sind in der Map vorhanden (wie oben beschrieben)
        Callback = function()
                    Message("Mentor: Die Türme wurden zerstört!")
                   end
    }
end




Questhandling selbstgebaut
Zur Tutorial-Übersicht

s5lua_g/g_funktionen/setupdestroy.txt · Zuletzt geändert: 2021/09/18 19:16 von 127.0.0.1