Basisskripte

Auf Grund zahlreicher Speicherprobleme von lokalen Variablen in DIE SIEDLER - DEdK (Feuereffekte führten bspw. nach dem Laden zum Absturz), führten die Entwickler ein zweites Skript ein. Somit ist die Programmierumgebung von DIE SIEDLER - AeK aufgeteilt in zwei Skripte: Das lokale und das globale Skript.

Diese Skripte bestehen aus bestimmten Standardfunktionen. Diese sind unterschiedlich. Beeinflussungen der Spielwelt, des Geschehens oder Lagerbestände werden im globalen Skript ausgelöst. Änderungen am Interface oder der Darstellung (Display Sets) haben in der lokalen Skriptumgebung ihren Platz. Jedes Umgebung besitzt einen "Sender" um eine Kommunikation mit der anderen Umgebung zu ermöglichen. Dies ist besonders Hilfreich, wenn man Befehle aus der einen Umgebung in die andere Senden möchte.

Das globale Skript

Dies ist ein standardisiertes Basisskript:

----------------------------------------------------------------------------------------------------------------------
-- Hier kannst du KI-Spieler starten

function Mission_InitPlayers()
end
----------------------------------------------------------------------------------------------------------------------
-- Hier stellst du den Monat zu Spielbeginn ein
function Mission_SetStartingMonth()
    Logic.SetMonthOffset(3)
end
----------------------------------------------------------------------------------------------------------------------
-- Hier werden generell Händler erstellt
function Mission_InitMerchants()
end
----------------------------------------------------------------------------------------------------------------------
-- In der FMA kannst du weitere Funktionen starten. Diese Funktion wird aufgerufen, sobald das Spiel
-- nach dem Laden gestartet wird
function Mission_FirstMapAction()
    if Framework.IsNetworkGame() ~= true then
      Startup_Player()
      Startup_StartGoods()
      Startup_Diplomacy()    
    end        

    do
      local MapName = Framework.GetCurrentMapName()
      local ScriptName = "Maps\\ExternalMap\\"..MapName.."\\QuestSystemBehavior.lua"
      Script.Load(ScriptName)
    end

--  Startet die Aufträge
    CreateQuests()    
end

Mission_InitPlayers

Diese Funktion brauchst du eigentlich nicht, da du Spielernamen und eine Standard-KI mit dem Kartenassistenten erstellen kannst.

Ein Beispiel für einen in dieser Funktion gesetzten Spielernamen:

function Mission_InitPlayers()
--    Erstellt einen Spieler
--    Die Variablen müssen durch richtige Werte ersetzt werden
--    SetupPlayer(SpielerID, Kopf, Name, Farbindex)

--    z.B.: für Spieler 2
      SetupPlayer(2, "H_Knight_RedPrince", "Roter Prinz", "RedPrinceColor")
end

Diese Funktion kannst du auch benutzen um einen Spieler für jegliche KI-Steuerung zu sperren.

function Mission_InitPlayers()
  DoNotStartAIForPlayer(2)    
end

Spieler 2 wird keine KI bekommen. Es wird kein Ritter zum MP zurück laufen und das Lagerhaus der KI wird auch nicht automatisch befüllt. Die SpielerID kann so zum Beispiel für NPCs genutzt werden oder als komplett neutraler Spieler.

Mission_InitMerchants

In dieser Funktion kannst du Händler erstellen. Wenn du die Erweiterung Reich des Ostens verwendest, können hier auch Handelsposten definiert werden.

function Mission_InitMerchants()
-- Normaler Lagerhaushändler für Spieler 3
    AddMercenaryOffer(Logic.GetStoreHouse(3),6,Entities.U_MilitaryBandit_Meele_AS)
    AddEntertainerOffer(Logic.GetStoreHouse(3),Entities.U_Entertainer_NE_StiltWalker )
    AddOffer(Logic.GetStoreHouse(3), 1, Goods.G_Sheep)
    AddOffer(Logic.GetStoreHouse(3), 1, Goods.G_Cow)

-- Handelsposten für Spieler 3
    local tID = GetEntityId("tradepost3")
    Logic.TradePost_SetTradePartnerGenerateGoodsFlag(tID, true)
    Logic.TradePost_SetTradePartnerPlayerID(tID, 3)
    Logic.TradePost_SetTradeDefinition(tID, 1, Goods.G_RawFish, 22, Goods.G_Milk, 18)
    Logic.TradePost_SetTradeDefinition(tID, 2, Goods.G_RawFish, 15, Goods.G_Wool, 12)
    Logic.TradePost_SetTradeDefinition(tID, 3, Goods.G_RawFish, 15, Goods.G_MusicalInstrument, 9)
end

Mission_FirstMapAction

Die Mission_FirstMapAction ruft standardmäßig Mission_InitPlayers, Mission_SetStartingMonth und Mission_InitMerchants auf. Außerdem startet sie die Aufträge, sofern der betreffende Funktionsaufruf nicht auskommentiert oder entfernt wurde.

Hier kannst du zusätzliche Funktionen und Jobs aufrufen.

Das lokale Skript

Das unmodifizierte lokale Skript ist relativ übersichtlich.

----------------------------------------------------------------------------------------------------------------------
-- Dies ist die FMA der lokalen Umgebung
function Mission_LocalOnMapStart()
end

----------------------------------------------------------------------------------------------------------------------
-- Diese Funktion wird nach dem Sieg ausgeführt
function Mission_LocalVictory()
end

Die meisten gewöhnlichen Funktionen werden im globalen Skript ausgeführt. Das lokale Skript ist ein Konstrukt um die Spiecherprobleme aus dem Vorgänger von AeK zu beheben.

Zurück zu Grundlagen und Werkzeuge | Drucken | Tags
Sofern nicht anders angegeben, steht der Inhalt dieser Seite unter Lizenz Creative Commons Attribution-ShareAlike 3.0 License