Handel mit Dörfern

Auf dieser Seite wird dir gezeigt, wie du Handelsbeziehungen zwischen dem Spieler und KI-Parteien realisieren kannst.

Um die Arbeit effizienter zu gestalten siehe zuerst den Abschnitt Skripte Auslagern.

Das leere Standartskript

Nun öffnest du deine Skriptdatei (globales Skript). Eine frisch erstellte globale Lua sieht in etwa so aus:

----------------------------------------------------------------------------
function Mission_InitPlayers()  
end
----------------------------------------------------------------------------
function Mission_SetStartingMonth()
    Logic.SetMonthOffset(3)
end
----------------------------------------------------------------------------
function Mission_InitMerchants()
end
----------------------------------------------------------------------------
function Mission_FirstMapAction()
    -- init players in singleplayer games only
    if Framework.IsNetworkGame() ~= true then

        Startup_Player()
        Startup_StartGoods()
        Startup_Diplomacy()

    end        

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

        CreateQuests()
    end

end

Wir kümmern uns im Speziellen um folgende Funktion:
function Mission_InitMerchants()
end

Händler erzeugen

Alle Handelsangebote von Lagerhäuser und Handelsposten die von Anfang an auf der Karte vorhanden seien sollen werden in der Mission_InitMerchants erstellt. Du kannst auch später im Skript noch weitere Händler und einzelne Angebote bei existierenden Händlern hinzufügen.

Ein Beispiel:

function Mission_InitMerchants()
    local store = Logic.GetStoreHouse(2)      -- Lagerhaus von Spieler 2 wird in der Variable 'store' erfasst
    AddOffer(store, 4, Goods.G_RawFish)       -- 4 x 9 Fisch für diesen Händler
    AddOffer(store, 4, Goods.G_Honeycomb)     -- 4 x 9 Honigwaben für diesen Händler
    AddOffer(store, 1, Goods.G_Cow)        -- 1 x 5 Kühe für diesen Händler
    AddOffer(store, 4, Goods.G_Salt)       -- 4 x 9 Salz für diesen Händler
end

In diesem Fall sind alle 4 Plätze für den Händler belegt. Du kannst keine weiteren Angebote hinzufügen, bevor du nicht mindestens 1 Angebot entfernt hast. Die Angebote des KI erscheinen im Diplomatiemenü, sobald der Spieler ihn entdeckt hat.

Noch ein Beispiel:

function Mission_InitMerchants()
    local store = Logic.GetStoreHouse(3)                                        -- Lagerhaus von Spieler 3 wird in der Variable 'store' erfasst
    gvMercOffer = AddMercenaryOffer(store,5,Entities.U_MilitaryBandit_Meele_SE) -- hier werden 5 Einheiten Söldner angeboten
    AddEntertainerOffer(store,Entities.U_Entertainer_NE_StrongestMan_Stone )    -- hier wird ein Entertainer angeboten
end

In diesem Fall sind nur 2 Plätze belegt. Die ID des Söldnerangebotes wird in einer globalen Variable gespeichert. Das musst du nur tun, wenn du dieses Angebot später mit Logic.RemoveOffer entfernen willst.

Angebote entfernen

Manchmal möchte man Angebote einfach schnell wieder los werden. Das kann der Fall sein, wenn man sich einen Fahrenden Händler zusammen baut. Angebote kann man entweder einzeln oder alle auf einmal löschen.

Einzeln löschen:

Logic.RemoveOffer(gvMercOffer) -- entfernt das Angebot mit der angegebenen ID

Alle löschen:

Logic.RemoveAllOffers(Logic.GetStoreHouse(2)) -- entfernt alle Angebote des Spielers 2
Zurück zu Beispiele | Drucken | Tags
Sofern nicht anders angegeben, steht der Inhalt dieser Seite unter Lizenz Creative Commons Attribution-ShareAlike 3.0 License