[[http://www.siedler-games.de|{{:sg-link.jpg|}}]]
===== 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
\\
* [[s5lua_g:SetupExpedition]]
* [[s5lua_g:SetupEstablish]]
\\
\\
[[tutorials:questhandling_vereinfachen_selbstgebaut|Questhandling selbstgebaut]]\\
[[:tutorials:index|Zur Tutorial-Übersicht]]