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

SiteEngine v1.5.0 by nevermind, ©2005-2007
Design by SpiderFive (www.siedler-games.de) - English translation by juja

Impressum