Wird das Gebäude gerade ausgebaut?
» Siedler Map Source Forum » Siedler DEdK Script Forum » Wird das Gebäude gerade ausgebaut?
Seiten: 1
Zedeg
|
#1 16.07.2015 21:16 Beiträge: 428 |
Wird das Gebäude gerade ausgebaut?
Nach meiner etwas längeren Pause lässt mich mein Erinnerungsvermögen doch teilweise im Stich. Gibt es eine siedlereigene Funktion für die Frage im Titel oder muss ich mir da was selbst basteln? Auf die Schnelle konnte ich jetzt nichts finden.
____________________
Journalisten erkundigen sich bei Wissenschaftlern meist nicht nach Grundlagen, sondern eher nach Ergebnissen und Folgerungen. Das erklärt womöglich auch, warum sich Forschungsberichte in den Medien so häufig als feststehende Erkenntnisse lesen, nicht aber als Ideen, Entdeckungen oder Indizien, um die es sich genau genommen in den meisten Fällen handelt. -Axel Bojowski
mcb
|
#2 16.07.2015 22:21 Beiträge: 1472 |
Du kannst Logic.GetRemainingUpgradeTimeForBuilding(id) verwenden. Wird das Gebäude nicht ausgebaut, gibt sie Logic.GetTotalUpgradeTimeForBuilding(id) zurück.
Zedeg
|
#3 16.07.2015 23:42 Beiträge: 428 |
Dankööö!
____________________
Journalisten erkundigen sich bei Wissenschaftlern meist nicht nach Grundlagen, sondern eher nach Ergebnissen und Folgerungen. Das erklärt womöglich auch, warum sich Forschungsberichte in den Medien so häufig als feststehende Erkenntnisse lesen, nicht aber als Ideen, Entdeckungen oder Indizien, um die es sich genau genommen in den meisten Fällen handelt. -Axel Bojowski
Noigi
|
#4 02.08.2015 18:19 Beiträge: 772 |
Ich verwende dafür folgende Comfort-Funktion (ob sie von mir ist oder von jemand anders übernommen, weiß ich nicht mehr ):
function IsBuildingBeingUpgraded(_id) if not IsExisting(_id) then return false; end if type(_id) == "string" then _id = GetEntityId(_id); end assert(type(_id) == "number"); return not (Logic.GetRemainingUpgradeTimeForBuilding(_id) == Logic.GetTotalUpgradeTimeForBuilding(_id)); end
Darauf aufbauend kann man prüfen, ob ein Gebäude "beschäftigt" ist, also (aus-)gebaut wird oder etwas erforscht:
function IsBuildingBusy(_id) return (Logic.IsConstructionComplete(_id) == 0) or (Logic.GetTechnologyResearchedAtBuilding(_id) ~= 0) or IsBuildingBeingUpgraded(_id); end
mcb
|
#5 02.08.2015 18:32 Beiträge: 1472 |
Im Originalscript gibt es InterfaceTool_IsBuildingDoingSomething. Das testet auf Ausbau, Forschung, Kanonenbau und Handel.
Noigi
|
#6 03.08.2015 11:27 Beiträge: 772 |
Zitat von mcb:
Im Originalscript gibt es InterfaceTool_IsBuildingDoingSomething. Das testet auf Ausbau, Forschung, Kanonenbau und Handel.
Das kannte ich nicht, das ist natürlich noch besser.
Seiten: 1