Scripting:KolonieEnergie optimieren
Aus STNE-Wiki
(Unterschied zwischen Versionen)
(→KolonieEnergie optimieren) |
(→KolonieEnergie optimieren) |
||
(Der Versionsvergleich bezieht 1 dazwischenliegende Version mit ein.) | |||
Zeile 5: | Zeile 5: | ||
Der Script funktioniert unabhängig vom Kolonietyp und eigentlich sollte er es gut tun. | Der Script funktioniert unabhängig vom Kolonietyp und eigentlich sollte er es gut tun. | ||
Bei Fragen, Fehlern oder Verbesserungen gerne eine IGM an [FWD]Faldrian (36705). Viel Spaß mit dem Script! | Bei Fragen, Fehlern oder Verbesserungen gerne eine IGM an [FWD]Faldrian (36705). Viel Spaß mit dem Script! | ||
+ | |||
+ | Achja, da es eine Funktion ist, kann man die auch sehr bequem für mehrere Kolonien ausführen lassen. | ||
Aktuelle Version vom 30. April 2007, 17:49 Uhr
fertige Scripte | Anleitungen und FAQ | Überblick über die Scripting-Sektion | Hilfen zum Arbeiten im Wiki |
KolonieEnergie optimieren
Dieser Script eigent sich gut um den Deut-Verbrauch auf Kolonien zu optimieren, indem nur genau soviel Energie produziert wird, wie mindestens benötigt wird. Überflüssige Satelliten werden abgestellt bzw. benötigte angestellt, falls zu wenig Energie vorherrschen sollte. Der Script funktioniert unabhängig vom Kolonietyp und eigentlich sollte er es gut tun. Bei Fragen, Fehlern oder Verbesserungen gerne eine IGM an [FWD]Faldrian (36705). Viel Spaß mit dem Script!
Achja, da es eine Funktion ist, kann man die auch sehr bequem für mehrere Kolonien ausführen lassen.
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);