[[http://www.siedler-games.de|{{:sg-link.jpg|}}]] ====== 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: [[utilfunctions:index|Nützliche Funktionen]]