Scripting:KolonieEnergie optimieren

Aus STNE-Wiki

Version vom 30. April 2007, 17:31 Uhr von Faldrian (Diskussion | Beiträge)
(Unterschied) ? Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version ? (Unterschied)
Wechseln zu: Navigation, Suche
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);

Bemerkungen

Persönliche Werkzeuge