Scripting:KolonieEnergie optimieren
Aus STNE-Wiki
Version vom 30. April 2007, 17:37 Uhr von Faldrian (Diskussion | Beiträge)
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(DEINEKOLONIEID);