[[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]]