Scripting:KolonieEnergie optimieren
Aus STNE-Wiki
Zeile 2: | Zeile 2: | ||
= KolonieEnergie optimieren = | = KolonieEnergie optimieren = | ||
- | |||
== Skriptcode == | == Skriptcode == | ||
Version vom 30. April 2007, 17:33 Uhr
fertige Scripte | Anleitungen und FAQ | Überblick über die Scripting-Sektion | Hilfen zum Arbeiten im Wiki |
KolonieEnergie optimieren
Skriptcode
// Arbeitsweise: // Schaut, in welchem Modus er operiert: // mehrenergie = True --> zu wenig Energie vorhanden, schalte so viele Satelliten an, bis >0 EnergieBilanz ist // mehrenergie = False --> Deut wird verschwendet, schalte alle überflüssigen Satelliten ab, solange >0 EnergieBilanz bleibt // Dann geht er alle Gebäude der Kolonie durch und arbeitet die ab.
function OptEnergie(BYREF coloid AS Integer) { VAR colo AS NEW CMyKolonie(coloid); VAR coloman AS NEW CColonieManager(); VAR hausenumerator AS IEnumerator; VAR haus AS CGebäude; VAR mehrenergie AS Boolean;
coloman.BenutzeKolonie(coloid); hausenumerator = colo.Gebäude.GetEnumerator(); // Hole die Häuser;
// Vorher WriteLine('Bearbeite: ' & colo.Name); WriteLine('EnergieBilanz: ' & CStr(colo.EnergieBilanz));
// Mehr oder weniger Energie benötigt? mehrenergie = (colo.EnergieBilanz < 0);
while(hausenumerator.MoveNext()) { haus = hausenumerator.Current; If((haus.TypName = 'Solarsatellit') AND (haus.Aktiv = NOT mehrenergie)) { // Juhu, einen Satelliten gefunden VAR koords AS String = '@' & CStr(haus.Feld.Coords.X) & '|' & CStr(haus.Feld.Coords.Y); coloman.GebäudeAktivieren(koords, mehrenergie); If(mehrenergie) { WriteLine('Solarsatellit ' & koords & ' eingeschaltet.'); If((colo.EnergieBilanz >= 0)) { // Ziel erreicht, aus dem Negativen raus exit while; // Damit ist es auch genug und wir können terminieren } } else { If((colo.EnergieBilanz < 0)) { // zu wenig Energie, Satelliten doch wieder anmachen coloman.GebäudeAktivieren(koords, True); exit while; // Damit ist es auch genug und wir können terminieren } else { WriteLine('Solarsatellit ' & koords & ' ausgeschaltet.'); } } } }
// Nachher WriteLine('EnergieBilanz: ' & CStr(colo.EnergieBilanz)); }
OptEnergie(DEINE KOLONIEID);