Benutzer-Werkzeuge

Webseiten-Werkzeuge


utilfunctions:upgradebuilding

UpgradeBuilding

Um ein Gebäude auszubauen, kann man es einfach über ReplaceEntity() mit der nächsten Ausbaustufe ersetzen. In einigen Situationen kann es aber schöner sein, es tatsächlich mit der entsprechenden Upgrade Animation/Wartezeit auszubauen. Dafür kann man diese Funktion benutzen. Der Upgrade-Vorgang funktioniert dabei immer, unabhängig von den vorhandenen Ressourcen.

Beispiel

Angenommen es gibt einen Aussichtsturm von Spieler 3 mit dem Scriptnamen „TurmVonSpieler3“. Um ihn auszubauen schreibt man Folgendes:

UpgradeBuilding("TurmVonSpieler3")

Anmerkungen

  • Diese Funktion kann nicht direkt in einer Callback-Funktion eines Tributes stehen (es wird einfach kein Gebäude ausgebaut). Der Grund dafür ist unbekannt und liegt irgendwo in den Interna des Spieles. Lösung des Problems: Einfach im Callback eine DelayFunc oder einen Countdown starten und dort dann die Gebäude ausbauen, dann klappt es wieder.

Code

function UpgradeBuilding(_EntityName)
 
    -- Get entity's ID
    local EntityID = GetEntityId(_EntityName)
 
    -- Still existing?
    if IsValid(EntityID) then
        -- Get entity type and player
        local EntityType = Logic.GetEntityType(EntityID)
        local PlayerID = GetPlayer(EntityID)
 
        -- Get upgrade costs
        local Costs = {}
        Logic.FillBuildingUpgradeCostsTable(EntityType, Costs)
        -- Add needed resources
        for Resource, Amount in Costs do
            Logic.AddToPlayersGlobalResource(PlayerID, Resource, Amount)
        end
 
        -- Start upgrade
        GUI.UpgradeSingleBuilding(EntityID)
    end
 
end



zurück zu: Nützliche Funktionen

utilfunctions/upgradebuilding.txt · Zuletzt geändert: 2021/09/18 19:16 (Externe Bearbeitung)