Questhandling SetupExpedition
function SetupExpedition( _Quest )
Mit dieser Funktion kann man sehr leicht überprüfen, ob eine bestimmte Entity eine andere bestimmte Entity/einen bestimmten Ort erreicht hat. Ihr braucht keinen zusätzlichen Code in euer Script zu kopieren, diese Funktion stellt das Spiel von sich aus bereit.
_Quest ist ein Table, das folgende Werte enthalten kann:
Entweder:
EntityName: Eine bestimmte Entity (Name oder ID) muss das Ziel erreichen
oder:
Heroes: Wenn true, muss irgendein Held das Ziel erreichen
Leaders: Wenn true, muss irgendein Hauptmann das Ziel erreichen
Serfs: wenn true, muss irgendein Leibeigener das Ziel erreichen
TargetName: Name oder ID des Ziels
Distance: Distanz zum Ziel in Siedlerzentimetern (maximal 6400 bei Helden oder Militäreinheiten)
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:
function SetupQuest_Explore() -- Zunächst wird das quest Table mit allen Informationen gefüllt local quest = { -- Name der Entity die diesen Quest erfüllen muss EntityName = "Dario", -- Name des Zielortes, zu dem die angebene Einheit hinlaufen muss TargetName = "Ari", -- Mit einer Toleranz von 300 Siedlerzentimetern um den Zielpunkt Distance = 300, -- Wenn das erledigt wurde, wird Callback_QuestExplore aufgerufen. Diese Funktion kann man natürlich, -- wie schon im Briefingtutorial demonstriert, auch gleich hier erstellen Callback = Callback_QuestExplore, -- 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 = "Super, Dario hat Ari gefunden" }; -- Nun wird der ErkundungsCheck gestartet SetupExpedition( quest ) end function Callback_QuestExplore( _Quest ) -- Hier wird die zuvor gespeicherte Nachricht ausgegeben. -- Mit einer festen Nachricht macht das natürlich wenig Sinn, aber möglicherweise fällt jemandem eine bessere Verwendungsmöglichkeit ein Message( _Quest.MessageText ) end
Beispiel 2:
function SetupQuest_Explore() -- Zunächst wird das quest Table mit allen Informationen gefüllt local quest = { -- Ein Held oder ein Hauptmann soll das Ziel erreichen Heroes = true, Leaders = true, -- Name des Zielortes, zu dem die angebene(n) Einheit(en) hinlaufen muss TargetName = "IrgendwoImNirgendwo", -- Mit einer Toleranz von 200 Siedlerzentimetern um den Zielpunkt Distance = 200, -- Wenn das erledigt wurde, wird diese Funktion aufgerufen. Callback = function( _Quest ) Message( "Quest erfüllt!" ) end }; -- Nun wird der ErkundungsCheck gestartet SetupExpedition( quest ) end