Ankündigung [WIP] DarkOrbit KonfigRechner uvm.

Dieses Thema im Forum 'Speakers Corner' wurde von Яyûû gestartet, 13 Januar 2016.

Liebe(r) Forum-Leser/in,

wenn Du in diesem Forum aktiv an den Gesprächen teilnehmen oder eigene Themen starten möchtest, musst Du Dich bitte zunächst im Spiel einloggen. Falls Du noch keinen Spielaccount besitzt, bitte registriere Dich neu. Wir freuen uns auf Deinen nächsten Besuch in unserem Forum! „Zum Spiel“
?

Was haltet ihr von sowas?

Diese Umfrage wurde geschlossen: 14 Februar 2016
  1. Finde ich gut

    33 Stimme(n)
    62,3%
  2. FInde ich schlecht

    4 Stimme(n)
    7,5%
  3. Weder noch

    7 Stimme(n)
    13,2%
  4. Ganz interessant, aber ich bin mich nicht sicher was mir das bringen würde

    9 Stimme(n)
    17,0%
  1. Яyûû

    Яyûû User

    Hey hey,
    Jo ich hab dir den Code an deine Mail geschickt :D
     
  2. .Golan.

    .Golan. Guest

    Welches Programmiertool nutzt du ? Zufällig auch Code Blocks oder das unhandliche Eclipse ? Ich würde mir ebenfalls gerne den Code angucken. Schreibe dazu einfach auf meiner Profilseite, dann gebe ich dir den Server an auf dem ich Spiele und zack haben wir eine Verabredung Ingame ;). Habe Informatik als Drittfach neu begonnen (L2) ohne irgendwelche Mathemodule belegen zu müssen :p.
    Ich gebe dir noch einen kleinen Tipp für den Fall das du ihn noch nicht kennst, falls ja entschuldigung aber ich habe iwe bereits erwähnt erst vor kurzem damit angefangen :D : Bool' sche Funktionen eignen sich für fast alles.

    bool missrate( int i (integer welcher übergeben wird und mittels rand() erzeugt wird. Bekanntlich liegt die Missrate bei ca. 25% ohne PS upgrades. Wenn also rand() eine integer Zahl ausgibt die echt kleiner als 75 ist, wird ein MISS erzeugt mit diesem dann der durchschnittliche Schaden weiter berechnet werden kann bei x Lasersalven))
    {

    wenn (i < 75)
    {
    return true;
    }

    sonst
    {
    return false;
    }

    }

    Etwaige Fehler bitte ich zu entschuldigen, hier war ein Neuling am Werk :D. Ich möchte dich ebenfalls trotz bescheidener Kenntnisse versuchen zu unterstützen.
    EDIT: Man bin ich blöd, ganzzahlige integer eignen sich kaum :oops::rolleyes:
     
    Zuletzt bearbeitet von Moderator: 20 Februar 2016
  3. Яyûû

    Яyûû User

    Hey hey,

    Naja Eclipse mag zwar an und für sich teils ein wenig unhandlich sein, ist aber an sich nach einiger Zeit recht gut zu handhaben. Aktuell ist der Code teilweise noch nicht optimiert und muss noch ein wenig gesäubert werden^^
    Die Trefferrate sollte in etwa bei 80-85% liegen.
    Nach eigenen Versuchen bin ich glaube ich auf 85% gekommen. Müsste ich sonst mal raussuchen.

    Deinen Code könntest du auch so schreiben:
    Code:
    boolean checkHit(int i)
    {
    wenn(i >= 80)
    {
    return true
    }
    return false
    }

    Das "sonst" kannst du dir hierbei einfach sparen. Das was nach einem return kommt, wird eh nicht ausgeführt.
    Ich bin mir zwar nicht ganz sicher, ob du durch den Code durchblickst, kannst ihn dir aber natürlich ansehen. Nachdem ich paar Probleme mit meinem Laptop bereinigt habe, wird die Projektdatei sowieso auf GitHub hochgeladen. Das heißt der Code wird für jeden interessierten sichtbar sein.

    EDIT: In dem Fall lassen sich Int Werte verwenden, schließlich spuckt randInt() ja auch nen Int aus.

    EDIT2: Dieses Mitglied hat die Ansicht für seine Profilseite eingeschränkt. Kann dir leider nicht schreiben. xD
    DE2, ƁΛƁΨШФŁŦ
     
    Zuletzt bearbeitet: 20 Februar 2016
    .Golan. gefällt dies.
  4. .Golan.

    .Golan. Guest

    Na ja einige Fachbegriffe bzw Datentypen sowie logisches Denken sollte ausreichen ;). Mich würde außerdem sehr intressieren ob du bei einigen Werten Arrays einsetzt und Zeiger nutzt. Die Idee mit GitHub quasi einen OpenSource Code zur Verfügung zu stellen finde ich übrigens großartig.

    Ich möchte noch etwas bezüglich der Missrate nachtragen: Im alten Forum hatte mal jemand einen Versuch gewagt und mit einem LF-3 sowie einem LF-4 Laser einige Tausend Schuss geschossen. Das ergebnis war folgendes: Die ungefähre Missrate eines LF-3 Laser lag bei ungefähr 25%, die eines LF-4 Laser war überraschenderweise etwas niedrieger und lag bei ca. 30%.

    Würde die Trefferwahrscheinlichkeit bei 80 bzw 85 % liegen, müsste man den Kalibibrator theoretisch nicht voll ausbauen, um zumindest bei Aliens nie wieder zu verfehlen. Allerdings habe ich erfahrungsgemäß erst dann nie wieder Missraten bei Aliens gemacht, nachdem ich den Kalibrator voll ausgebaut habe. Letzters senkt die Missrate übrigens in Prozentpunkten und nicht in Prozent wie El Burro es in einem seiner Threads richtig erwähnte.
     
    Zuletzt bearbeitet von Moderator: 20 Februar 2016
  5. Яyûû

    Яyûû User

    Ich finde Arrays sind, wenn man dynamisch arbeitet, ein wenig doof. Die einzigen Stellen wo wir tatsächlich Arrays verwendet haben sind:

    • Speichern von Konfis
    • Speichern von Drohnenslots
    • Und ein paar andere statische Dinge
    Für das meiste haben wir Listen und HashMaps verwendet. Um Daten dynamisch zu speichern (In Form von Schiffen, Designs, Drohnen, Drohnendesigns) verwenden wir Binäre Suchbäume, da die Suche um einiges schneller geht als bei einem Array. Wobei es in Arrays auch Suchalgorithmen gibt, die allerdings voraussetzen dass das Array sortiert ist.

    Die suche in sonem Binären Baum ist recht simpel, setzt aber natürlich voraus, dass das Einfügen von Objekten funktioniert.

    Code:
    public Node findNode(String str)
        {
            int wert = str.hashCode();
            if(_lastReturn != null && _lastReturn._wert == wert)
            {
                return _lastReturn;
           
            }
            else
            {
       
            Node focusNode = root;
            while(focusNode._wert != wert)
            {
                if(wert < focusNode._wert)
                {
                    focusNode = focusNode._leftChild;
                }
                else
                {
                    focusNode = focusNode._rightChild;
                }
                if(focusNode==null)
                {
                    return null;
                }
            }
            _lastReturn = focusNode;
        return focusNode;
            }
    
    
    
        }
        
    Im Grunde genommen geht man von einem Binären Baum aus (Ein Knoten hat maximal 2 Kinder) und dabei sind die Werte auf der rechten Seite größer als auf der linken. Um den Objekten zuzuordnen haben wir einfach einen Hash Wert berechnen lassen.

    Ich bin gerade am überlegen inwiefern Zeiger benutzt werden können. Natürlich, wenn man 2 Arrays miteinander vergleicht zum Beispiel.
    Jedenfalls zum durchgehen eines Arrays würde man meistens eine for-Schleife verwendet werden:

    Code:
    for(Object o : ArrayWithObjects)
    {
    o.tueEtwas();
    }
    Die ist natürlich in allen Programmiersprachen anders implementiert, aber vorhanden.


    EDIT: Deswegen gibt es ja Täuschungsmanöver :)

    EDIT2: Dateien sind nun in GitHub hochgeladen. Schreib mir einfach in DO und ich sende dir dann den Link rüber :)



    EDIT3:

    Nachdem das GitHub-Problem von meiner Seite behoben wurde, kann ich euch ein Bild in der korrekten Auflösung geben:

    [​IMG]

    Das Ladeproblem wurde nach wie vor noch nicht beseitigt.

    Zwischenupdate:

    [​IMG]

    • Hinzufügen von Items funktioniert nun
    • ja es ist mir bewusst dass die DesignBox ein wenig groß ist.
    • Ja die Icons werden verkleinert
    • Der Iris und lf4 Button sind Testbuttons um die Funktionalität zu testen
     
    Zuletzt bearbeitet: 23 Februar 2016
    LeagueofLegends gefällt dies.
  6. Яyûû

    Яyûû User

    Folgende Funktion wurden nun erweitert:

    • Konfigurationswechse
    • --> Es ist nun möglich, dass die Konfigurationen gewechselt werden und dass die Drohnen die korrekten Items enthalten
    • Aber: In dem Test ging es nur um die Funktionalität des Konfiwechsels. Leider gibt es noch den Fehler, dass die Werte nicht aktualisiert werden. Dies sollte aber bald gefixt sein.

    [​IMG]
    [​IMG]

    EDIT:
    Die Fortschrittsanzeige wurde durch den Code ersetzt. Wer den vollständigen Code haben will, kann mich gerne kontaktieren :)
     
    Zuletzt bearbeitet: 28 Februar 2016
    LeagueofLegends, .Golan. und *Special*K* gefällt dies.
  7. Яyûû

    Яyûû User

    Heute wurde der Anfang eines Itemmanagers hinzugefügt:

    Default:
    [​IMG]

    Schild ausgewählt:
    [​IMG]

    Antrieb ausgewählt:
    [​IMG]

    Dies ist nicht das finale Design, sondern dient nur der Anschauung um die Funktionalität zu testen.

    • Beim Wechseln des Itemtypen werden die auswählbaren Items geändert
    • Hinzufügen Button ist noch ohne Funktion
    • Hinzugefügt wird noch:
    1. Ein Log, welches anzeigt welches Item hinzugefügt wurde
    2. Upgradestufe des hinzugefügten Items (ausgegraut wenn es sich um einen Antrieb handelt)
    3. Hinzufügen von Drohnen
    4. Anzeige über Informationen des ausgewählten Items (Kosten, Wirkung, Beschreibung)
    5. Der Wechsel von Designs wird über den Itemmanager stattfinden
    • Der Itemmanager kann über einen extra Button geöffnet werden:
    [​IMG]
    Der Itemmanager wurde hinzugefügt, damit das Konfigrechner Fenster ein wenig weniger vollgestopft ist. Außerdem sind so beim Erstellen der Konfiguration alle nötigen Iteminformationen verfügbar.

    Vorschläge für das Design des Itemmanagers werden gerne entgegengenommen sofern diese umsetzbar sind.

    Update:
    02.03.15
    18:15

    • Hinzufügen Button funktioniert nun -> Items können nun in beide Konfis eingefügt werden und die Werte werden nun auch aktualisiert
    • Iteminformationen sind theoretisch abrufbar -> Wird verbessert
    [​IMG]

    [​IMG]

    Aus Irgendeinem Grund wird aber die Geschwindigkeit verdoppelt...(FIXED)

     
    Zuletzt bearbeitet: 2 März 2016
    LeagueofLegends und .Golan. gefällt dies.
  8. .Golan.

    .Golan. Guest

    Das wird ja immer besser . Achja, tolles PB, Higurashi no naku koro ni steht schon seit langem auf meiner Watchlist :).
     
  9. Der Rechner ist zwar toll und gut, aber da fehlt noch etwas. Die BUGS! DAS Markenzeichen BP's schlechthin! Der Quellcode ist wahrscheinlich richtig, BP wird diese Idee nicht umsetzen. Wenn du dies aber unbedingt erreichen willst, kümmere doch dich selber um die Fehler , Яyûû, schlampe ordentlich, schreibe wirre Operatoren hin, so umständlich wie es geht, und nimm dir Zeit. Nach ein paar Jahren nach der Umsetzung des Rechners, aufgrund der Mühe die du dir für die Bugs gegeben hast, kannst du ja den Support auf die Fehler hinweisen. Dieser letzte Schritt ist aber eher unbedeutend.
     
  10. Яyûû

    Яyûû User

    Der Anime ist sofort in meine persönliche Top 3 gerutscht :)

    @VP
    Hierbei handelt es sich um ein eigenständiges Projekt, dass nichts direkt mit BP zu tun hat. Demnach handelt es sich auch um keine Idee die jemand anderes als wir umsetzen :)

    Ach die Bugs, sind ja noch paar drin ! xD

    Nun:

    Ein Bug entsteht im Verlauf einer Entwicklung. Meistens sind es Fehler, die nicht sofort einem Entwickler uns Auge springen, schließlich schreit der Compiler ja nicht: "Ey dude, da isn Bug. Irgendwie wird da was nicht korrekt berechnet!!". Es ist unfassbar schwer einige Fehler zu finden, da ihre Ursache meist nicht so einfach zu finden ist. Die Bugs die bei DO auftreten sind höchstwahrscheinlich ein wenig tiefer verankert. Kann auch gut sein, dass einige der Bugs erst Monate nach einem Update gefunden werden konnte (Beispiel Seprom Bug: Wie lange wird es den wohl gegeben haben bevor er gefunden wurde?).
    Dann kommt noch dazu: Wie teuer ist es einen Bug x zu entfernen? Wie viele Personenstunden sind es tatsächlich? Wie hoch ist die Priorität dieses Fehlers? Welches Risiko geht von ihm aus? Ein Fehler, der als klein erscheint, ist oftmals viel komplexer als es den Anschein macht.

    Beispiel:

    Ich habe einmal an einem Spiel gearbeitet, welches ein Schachbrettartiges Muster als Spielfeld besaß. Die Ränder wurden mit 1x1 großen Blöcken aufgefüllt um das Spielfeld auch optisch einzugrenzen. Aber: Beim ersten Start (ich habe das Spielfeld dynamisch erstellen lassen) wurde immer eine Ecke ausgelassen. Beim zweiten Start wurde alles korrekt ausgefüllt. Bis heute habe ich 0 Ahnung wie das passieren konnte und ich verstehe es bis heute nicht wie es zu dem Fehler kommen konnte.

    Ich finde es tatsächlich Schade, dass so viele Leute wegen Bugs auf die Barrikade gehen. Ich mein wir wissen alle: Entwickler sind Menschen wie wir.

    Ich meine LoL ist ja auch nicht gerade Bugfrei. Brauchst dir ja nur ein mal Azir ansehen, der strotzt nur so von Bugs. Bugs gibt es halt überall und immer.



    Aber ich arbeite weiter am dem Projekt und versuche es natürlich auch Bugfrei zu machen. Aber ein tatsächliches Spiel ist da ja schon um einiges komplexer :)
     
    bomb232 und LeagueofLegends gefällt dies.
  11. Natürlich sind Bugs immer vorhanden. Die Entwickler sind auch keine fehlerfreien Bots. Aber es kommt mir nur so vor, dass z.B. LoL sich extrem viel Mühe gibt, die Bugs zu beheben. Ihre Truppe ist zwar bestimmt um einiges größer als bei D O (es spielen auch mehr LoL, was früher nicht so war...). Z.B. gab es bei LoL einen "großen" Bug bei dem man sich sofort zur Base sich hin teleportieren konnte. Aber daran haben sie 2 Tage lang hart gearbeitet und dieser Spiel verändernde Bug war behoben.
     
    Яyûû gefällt dies.
  12. Яyûû

    Яyûû User

    Nun da kommen wir aber zu den Risiken und wie schwer ein Fehler tatsächlich ist. LoL lebt nur vom ewigen PvP und wenn die Balance eines solchen Spiels durch so einen Bug so massiv beeinflusst wird, dann müssen sie auch zur Tat schreiten.
    Nur hat das DO-Team wahrscheinlich nicht die Kapazitäten die wir uns wünschen würden und hey, nicht die Entwickler entscheiden über das was sie machen, sondern andere Menschen. So nehme ich es zumindest an. Ich meine als Entwickler mag man das Spiel meistens doch mindestens so sehr wie die Spieler, und die wollen sicher auch natürlich die Bugs aus dem Spiel rausholen, was allerdings leider nicht zwangsweise der Fokus ist. DO hat mit anderen Problemen zu kämpfen:
    • Neuer Content muss her
    • Bot-Problem
    • Sinkende Spielerzahlen
    • uvm.
    Ich habe mir gestern den Twitch-Stream von DO angesehen, wo sie unter anderem über JPA und Serverpopulation reden. Und wenn sie sich für etwas entscheiden, müssen sie dies jedes mal gut durchdenken. Ein Fehler kostet mehr und mehr Spieler :/

    Meine persönliche Meinung zum Servermerge: ****** auf den Rang, ich will endlich wieder mehr Leute auf der Kart, im Chat, auf dem TS haben. Mich interessiert der Rang zwar schon, aber mir ist ersteres um einiges wichtiger. Was bringt einem der General, wenn es eh nur 5 Spieler gibt auf dem Server (übertrieben gesagt) da juckt es keinen mehr. xD

    Um nochmal zu LoL zurückzukehren:
    Natürlich hat LoL eine größere Community und viel mehr Spieler und ebenso viel mehr Anhänger als DO (-> Siehe die letzten beiden Championchips) und wenn die sich nur einen Fehler erlauben, dann ist es ziemlich scheiße gelaufen.. Naja ich entferne mich da ein wenig weit von dem was ich sagen wollte:

    Ich werde DO auch weiter Chancen geben sich weiterzuentwickeln. Ein OnlineSpiel, dass in der Zeit stehen bleibt, hat keine Zukunft ;) Und do schreitet nach fast 10 Jahren immer weiter nach vorne :)
     
  13. Яyûû

    Яyûû User

    Einen wunderschönen guten Tag,

    Es ist viel seit dem letzten Update passiert.. Semester-Start, Dinge, Dinge und noch mehr Dinge. Wir haben es geschafft, ein Problem zu beheben, welches uns extrem verlangsamt hat: Das Ladeproblem. Dieser Fix setzt jedoch vorraus, dass das Programm und die zugehörigen Ordner unter "Dokumente" gesichert ist. Ein bisher nicht getestetes Problem könnte sein, dass dieses Programm unter Apple-Geräten nicht laufen könnte. Da ich das nicht testen kann, kann ich dazu leider nichts genaues sagen.

    Im späteren Verlauf, wird es möglich sein das Programm per Installation an beliebigen anderen Orten zu uhm.. hinterlegen, speichern, was auch immer.

    Dieser Fix ist temporär und wird in Zukunft durch eine Installation ersetzt.

    Warum wird eine Installation notwendig sein?

    Kurz gesagt: Es ist nötig dem Programm zu sagen, wo es seine Ressourcen findet.

    In Zukunft folgt ein Update zum Skilltree und je nach dem wie sich das Hangarsystem in DarkOrbit verändert ein weiteres Update vom KonfigRechner wie auch Ankündigungen zur ersten Testphase.

    Bis dahin, viel Spaß im Orbit.

    Gruß
    Ryuu
     
  14. Schoen das du dranbleibst, hier sieht man mal wieder wie aufwendig doch so eine Programmierung eines doch so "Kleinen" Tools ist...
    Vielleicht sehen jetzt einige auch mal das es mit der Bugbehebung und der Performanceverbesserung so lange dauert weil der ganze Spass doch recht komplex ist.
    Na ja, von mir ein "Daumen hoch" ;)
     
  15. Яyûû

    Яyûû User

    Moin moin,

    Wie erwähnt, gibt es nun ein kleines Zwischenupdate zum Skilltree, der von @Eri geschrieben wurde. Er ist zwar noch nicht ganz ausgereift, kann sich aber durchaus blicken lassen. Per Linksklick lassen sich hier Punkte verteilen, und per Rechtsklick lassen sich auch die Punkte entfernen. Wir arbeiten gerade daran, die Voraussetzungen für die Skills einzuprogrammieren. Weiter gibt es eine kleine Ankündigung: @Kankrea ist dem Team beigetreten. Er ist zwar kein DarkOrbit Spieler, jedoch interessiert mitzuarbeiten, vor allem in einem späteren Bereich (Offline-Wiki per Chatbot). Hier nochma ein kleiner Screenshot zum Skilltree:

    [​IMG]


    Ich weiß nicht wie viele die neue Hangaransicht gesehen haben, bzw. die Schiffs/Designauswahl.. Wäre eine solche ähnliche Ansicht für euch in diesem Programm denkbar? Wenn ja, werden wir uns dran setzen die Ansicht soweit wie möglich ähnlich zu gestalten.



    @VP: Ich hab selbst nicht gedacht, dass der Aufwand tatsächlich so hoch sein wird. Jedoch macht das Arbeiten an einem Projekt doch schon Spaß und es wird auf jedem Fall zu ende gebracht werden. Alleine weil es Wert ist eine solche Erfahrung mal zu machen.



    Also, euch noch einen angenehmen Tag :)

    Gruß
    Ryuu
     
    Zuletzt bearbeitet: 25 April 2016
    bomb232, *Special*K*, Eri und 4 anderen gefällt dies.
  16. Oha nach über zwei Jahren wird dieser Wunsch nach einem community-Konfigurationsrechner echt realisiert...

    hab vor zwei Jahren einen geschrieben gehabt. da ich keine ahnung von java habe/hatte. eher mit dem einfachen tool autoit. aber auch da ging das mit einfacher mathematik. habe sicherlich noch irgendwo den quellcode liegen.

    mein programm konnte man einstellen welche zwei konfis man hatte und welche "standards" im kampf erlaubt waren.

    => sogar sab munition wurde eingerechnet.
    hat mich 2 wochen gekostet aber war eine sau mäßig interessante arbeit.

    bleibt dran!!!

    btw picture:
    [​IMG]

    der quellcode für dieses programm:

    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <ProgressConstants.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Konfigurationsrechner v 1.0 by Höllenflieger, int3, KF1", 741, 626, 318, 17)
    $Label1 = GUICtrlCreateLabel("Trefferwahrscheinlichkeit von LF4 in %", 520, 460, 123, 60)
    $Treffer = GUICtrlCreateInput("80", 650, 465, 41, 21)
    $CheckRaketen1 = GUICtrlCreateCheckbox("PS+20% R Dmg ", 632, 56, 93, 17)
    $CheckRaketen2 = GUICtrlCreateCheckbox("R 2023 mit Sep", 632, 80, 90, 17)
    $CheckRaketen3 = GUICtrlCreateCheckbox("rote Hst mit Sep", 632, 104, 90, 17)
    $CheckPremium = GUICtrlCreateCheckbox("Premium?", 632, 248, 90, 17)
    $iswitch = GUICtrlCreateCheckbox("intell. 5erswitch?", 646, 318, 100, 27)
    $Group1 = GUICtrlCreateGroup("Spieler 1", 16, 16, 233, 550)
    $Group4 = GUICtrlCreateGroup("Schiff", 24, 40, 217, 201)
    $Label1 = GUICtrlCreateLabel("Laser", 32, 120, 30, 17)
    $Label2 = GUICtrlCreateLabel("Schilde", 144, 120, 39, 17)
    $Label5 = GUICtrlCreateLabel("Hitpoints des Schiffs (im Shop):", 32, 64, 150, 17)
    $Label6 = GUICtrlCreateLabel("Schiffdesign:", 32, 160, 65, 17)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $Group5 = GUICtrlCreateGroup("Drohnen (alle Lvl 6)", 24, 240, 217, 121)
    $Label3 = GUICtrlCreateLabel("Laser", 32, 280, 30, 17)
    $Label4 = GUICtrlCreateLabel("Schilde", 144, 280, 39, 17)
    ;================================= Spieler 1
    $Sp1SchiffLaser = GUICtrlCreateInput("15", 72, 120, 41, 21)
    $Sp1SchiffSchilde = GUICtrlCreateInput("15", 192, 120, 41, 21)
    $Sp1DrohnenLaser = GUICtrlCreateInput("10", 72, 280, 41, 21)
    $Sp1DrohnenSchilde = GUICtrlCreateInput("10", 192, 280, 41, 21)
    $Sp1GrundHP = GUICtrlCreateInput("256000", 32, 88, 121, 21)
    $Sp1Check10Schild = GUICtrlCreateCheckbox("+10% Schild", 144, 192, 90, 17)
    $Sp1Check5Dmg = GUICtrlCreateCheckbox("+ 5% Dmg", 40, 192, 90, 17)
    $Sp1Check7Dmg = GUICtrlCreateCheckbox("+ 7% Dmg", 40, 216, 90, 17)
    $Sp1Check20HP = GUICtrlCreateCheckbox("+20% HP", 144, 216, 90, 17)
    $Sp1CheckHerc = GUICtrlCreateCheckbox("Full Hercules", 40, 312, 81, 17)
    $Sp1CheckHavoc = GUICtrlCreateCheckbox("Full Havoc", 40, 336, 73, 17)
    $Sp1CheckHerz = GUICtrlCreateCheckbox("Herzformation", 144, 312, 90, 17)
    $Sp1CheckZange = GUICtrlCreateCheckbox("Zangenformation", 144, 336, 95, 17)
    $Sp1HP = GUICtrlCreateInput("256000", 112, 392, 121, 21)
    $Sp1Schild = GUICtrlCreateInput("0", 112, 416, 121, 21)
    $Sp1Dmg = GUICtrlCreateInput("0", 112, 440, 121, 21)
    $Sp1Rest = GUICtrlCreateInput("0", 112, 574, 121, 21)
    ;konfi 2
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $Group6 = GUICtrlCreateGroup("Übersicht der Konfiguration 2", 24, 488, 217, 73)
    $Label8 = GUICtrlCreateLabel("Gesamt Sh", 40, 512, 56, 17)
    $Label9 = GUICtrlCreateLabel("Gesamt DMG", 40, 538, 68, 17)
    $Label119 = GUICtrlCreateLabel("Rest Schild", 40, 600, 68, 17)
    $Sp12Schild = GUICtrlCreateInput("0", 112, 512, 121, 21)
    $Sp12Dmg = GUICtrlCreateInput("0", 112, 538, 121, 21)
    $Sp12Rest = GUICtrlCreateInput("0", 112, 600, 121, 21)
    ;======================================
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $Group6 = GUICtrlCreateGroup("Übersicht der Konfiguration 1", 24, 368, 217, 113)
    $Label7 = GUICtrlCreateLabel("Gesamt HP", 40, 392, 55, 17)
    $Label8 = GUICtrlCreateLabel("Gesamt Sh", 40, 416, 56, 17)
    $Label9 = GUICtrlCreateLabel("Gesamt DMG", 40, 440, 68, 17)
    $Label119 = GUICtrlCreateLabel("Rest HP", 40, 574, 68, 17)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $Group3 = GUICtrlCreateGroup("Auswählen und danach die Konfis konfigurieren. ", 504, 16, 225, 473)
    ;=================================== BEIDE
    $Checkx5 = GUICtrlCreateCheckbox("x4/x5", 585, 32, 45, 17)
    $Checkx5x6 = GUICtrlCreateCheckbox("x4/x5/x6", 520, 32, 59, 17)
    $Checkx4 = GUICtrlCreateCheckbox("x4", 632, 32, 33, 17)
    $Checkx6 = GUICtrlCreateCheckbox("x4/x6", 674, 32, 50, 17)
    $CheckPSSchild = GUICtrlCreateCheckbox("PS + 25% Schild", 520, 56, 97, 17)
    $CheckPSDmg = GUICtrlCreateCheckbox("PS + 12% Sp-dmg", 520, 104, 101, 17)
    $CheckSepLaser = GUICtrlCreateCheckbox("Seprom auf Laser", 520, 128, 105, 17)
    $CheckPromLaser = GUICtrlCreateCheckbox("Prom auf Laser", 632, 128, 90, 17)
    $CheckSepSchild = GUICtrlCreateCheckbox("Seprom auf Sh", 520, 152, 90, 17)
    $CheckPromSchild = GUICtrlCreateCheckbox("Prom auf Sh", 632, 152, 90, 17)
    $CheckHPBooster = GUICtrlCreateCheckbox("HP Booster", 520, 176, 80, 17)
    $CheckHPPro = GUICtrlCreateCheckbox("HP Pro", 632, 176, 90, 17)
    $CheckShBooster = GUICtrlCreateCheckbox("SH Booster", 520, 200, 90, 17)
    $CheckShPro = GUICtrlCreateCheckbox("SH Pro", 632, 200, 90, 17)
    $CheckDmgBooster = GUICtrlCreateCheckbox("DMG Booster", 520, 224, 90, 17)
    $CheckDmgPro = GUICtrlCreateCheckbox("DMG Pro", 632, 224, 90, 17)
    $CheckPSHP = GUICtrlCreateCheckbox("PS+ 50kGrund HP", 520, 80, 103, 17)
    $CheckKappabooster = GUICtrlCreateCheckbox("Kappa Booster", 520, 248, 97, 17)
    $CheckUpgradesDrohnen = GUICtrlCreateCheckbox("Uprgrades auf Drohnen", 520, 272, 137, 17)
    $CheckUpgradesLaser = GUICtrlCreateCheckbox("Upgrades auf Laser", 520, 296, 121, 17)
    $CheckUpgradesSchilde = GUICtrlCreateCheckbox("Upgrades auf Schilde", 520, 320, 121, 17)
    $CheckGefechtsroboter = GUICtrlCreateCheckbox("+ 1x Gefechtsroboter", 520, 344, 120, 17)
    $Backup = GUICtrlCreateCheckbox("+ 1x Schildbackup in stärkerer Konfi!", 520, 368, 200, 17)
    $MultiHP = GUICtrlCreateInput("1", 576, 392, 121, 21)
    $MultiSchild = GUICtrlCreateInput("1", 576, 416, 121, 21)
    $MultiDmg = GUICtrlCreateInput("1", 576, 440, 121, 21)
    $10HPback = GUICtrlCreateCheckbox("Energietransfer", 646, 344, 97, 21)
    ;=====================================================================
    $Label20 = GUICtrlCreateLabel("HP", 520, 392, 19, 17)
    $Label21 = GUICtrlCreateLabel("SH", 520, 416, 19, 17)
    $Label22 = GUICtrlCreateLabel("DMG", 520, 440, 29, 17)
    ;====================================== Spieler 2
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $Group2 = GUICtrlCreateGroup("Spieler 2", 264, 16, 233, 550)
    $Group8 = GUICtrlCreateGroup("Schiff", 272, 40, 217, 201)
    $Label10 = GUICtrlCreateLabel("Laser", 280, 120, 30, 17)
    $Label11 = GUICtrlCreateLabel("Schilde", 392, 120, 39, 17)
    $Label12 = GUICtrlCreateLabel("Hitpoints des Schiffs (im Shop):", 280, 64, 150, 17)
    ;==============================================
    $Sp2SchiffLaser = GUICtrlCreateInput("15", 320, 120, 41, 21)
    $Sp2SchiffSchilde = GUICtrlCreateInput("15", 440, 120, 41, 21)
    $Sp2DrohnenLaser = GUICtrlCreateInput("20", 320, 280, 41, 21)
    $Sp2DrohnenSchilde = GUICtrlCreateInput("0", 440, 280, 41, 21)
    $Sp2GrundHP = GUICtrlCreateInput("256000", 280, 88, 121, 21)
    $Sp2Check10Schild = GUICtrlCreateCheckbox("+10% Schild", 392, 192, 90, 17)
    $Sp2Check5Dmg = GUICtrlCreateCheckbox("+ 5% Dmg", 288, 192, 90, 17)
    $Sp2Check7Dmg = GUICtrlCreateCheckbox("+ 7% Dmg", 288, 216, 90, 17)
    $Sp2Check20HP = GUICtrlCreateCheckbox("+20% HP", 392, 216, 90, 17)
    $Sp2CheckHerc = GUICtrlCreateCheckbox("Full Hercules", 288, 312, 81, 17)
    $Sp2CheckHavoc = GUICtrlCreateCheckbox("Full Havoc", 288, 336, 73, 17)
    $Sp2CheckHerz = GUICtrlCreateCheckbox("Herzformation", 392, 312, 90, 17)
    $Sp2CheckZange = GUICtrlCreateCheckbox("Zangenformation", 392, 336, 95, 17)
    $Sp2HP = GUICtrlCreateInput("256000", 360, 392, 121, 21)
    $Sp2Schild = GUICtrlCreateInput("0", 360, 416, 121, 21)
    $Sp2Dmg = GUICtrlCreateInput("0", 360, 440, 121, 21)
    $Sp2Rest = GUICtrlCreateInput("0", 360, 574, 121, 21)
    $Sp22Schild = GUICtrlCreateInput("0", 360, 512, 121, 21)
    $Sp22Dmg = GUICtrlCreateInput("0", 360, 538, 121, 21)
    $Sp22Rest = GUICtrlCreateInput("0", 360, 600, 121, 21)
    ;================================================
    $Label13 = GUICtrlCreateLabel("Schiffdesign:", 280, 160, 65, 17)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $Group9 = GUICtrlCreateGroup("Drohnen (alle Lvl 6)", 272, 240, 217, 121)
    $Label14 = GUICtrlCreateLabel("Laser", 280, 280, 30, 17)
    $Label15 = GUICtrlCreateLabel("Schilde", 392, 280, 39, 17)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $Group10 = GUICtrlCreateGroup("Übersicht der Konfiguration 1", 272, 368, 217, 113)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $Group6 = GUICtrlCreateGroup("Übersicht der Konfiguration 2", 272, 488, 217, 73)
    $Label17 = GUICtrlCreateLabel("Gesamt Sh", 288, 512, 56, 17)
    $Label18 = GUICtrlCreateLabel("Gesamt DMG", 288, 538, 68, 17)
    $Label119 = GUICtrlCreateLabel("Rest Schild", 288, 600, 68, 17)
    $Label16 = GUICtrlCreateLabel("Gesamt HP", 288, 392, 55, 17)
    $Label17 = GUICtrlCreateLabel("Gesamt Sh", 288, 416, 56, 17)
    $Label18 = GUICtrlCreateLabel("Gesamt DMG", 288, 440, 68, 17)
    $Label119 = GUICtrlCreateLabel("Rest HP", 288, 574, 68, 17)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    ;=============================== Buttons
    $AktualisierenSp11 = GUICtrlCreateButton(" Sp1 Konfi 1", 520, 504, 90, 33)
    $AktualisierenSp12 = GUICtrlCreateButton(" Sp1 Konfi 2", 520, 540, 90, 33)
    $AktualisierenSp21 = GUICtrlCreateButton(" Sp2 Konfi 1", 620, 504, 90, 33)
    $AktualisierenSp22 = GUICtrlCreateButton(" Sp2 Konfi 2", 620, 540, 90, 33)
    $Checkshow = GUICtrlCreateCheckbox("", 500, 584, 15, 17)
    $Startbutton = GUICtrlCreateButton("Start", 520, 584, 200, 33)
    GUICtrlSetFont(-1, 12, 800, 0, "OpenSymbol")
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###
    $dll = DllOpen("user32.dll")
    Global $Set1 = 0
    $Set2=0
    $DamageLaser = 200
    $MultiplikatorHP = 1
    $MultiplikatorSh = 1
    $MultiplikatorDmg =1
    $Lasermunition = 1
    $BoostHP = 1
    $BoostSh = 1
    $BoostDmg = 1
    $KGJ = 1
    $Schilddichte = 1
    $SUpdate = 1
    $LUpdate = 1
    $DUpgrades = 1
    $LUpgrades = 1
    $SUpgrades = 1
    $Huelleplus = 0
    $Wechsel1 = 0
    $Wechsel2 = 0
    $Raketendmg = 0
    $HP10plus = 0
    $Sp1nutztx5 = 0
    $Sp2nutztx5 = 0
    $Lasermunition = 4
    HotKeySet("{p}", "_Pause")
    HotKeySet("{ü}", "_Exit")
    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Startbutton
    _Main ()
    Case $AktualisierenSp11
    _Analyse11 ()
    Case $AktualisierenSp12
    _Analyse12 ()
    Case $AktualisierenSp21
    _Analyse21 ()
    Case $AktualisierenSp22
    _Analyse22 ()
    EndSwitch
    WEnd
    ;Falls der Startbutton geklickt wird soll folgendes getan werden:
    Func _Main()
    For $i=0 to 1
    $show = GUICtrlRead($Checkshow)
    $Wechsel1 = 0
    $Wechsel2 = 0
    $Gefechtsroboter = 0
    $Gefechtsroboter1 = 0
    $Gefechtsroboter2 = 0
    ;Auslesen von den notwendigen Werten
    GUICtrlSetData($Sp1Dmg,((Guictrlread($Sp1Dmg)-$Raketendmg)/$Lasermunition))
    GUICtrlSetData($Sp12Dmg,((Guictrlread($Sp12Dmg)-$Raketendmg)/$Lasermunition))
    GUICtrlSetData($Sp2Dmg,((Guictrlread($Sp2Dmg)-$Raketendmg)/$Lasermunition))
    GUICtrlSetData($Sp22Dmg,((Guictrlread($Sp22Dmg)-$Raketendmg)/$Lasermunition))
    If Guictrlread($Checkx5x6) = 1 Then
    $Lasermunition = 4
    EndIf
    If Guictrlread($Checkx4) = 1 Then
    $Lasermunition = 4
    EndIf
    If Guictrlread($Checkx6) = 1 Then
    $Lasermunition = (3*4+1*6)/4
    EndIf
    If Guictrlread($Checkx5) = 1 Then
    $Lasermunition = 4
    EndIf
    GUICtrlSetData($Sp1Dmg,(Guictrlread($Sp1Dmg)*$Lasermunition+$Raketendmg))
    GUICtrlSetData($Sp12Dmg,(Guictrlread($Sp12Dmg)*$Lasermunition+$Raketendmg))
    GUICtrlSetData($Sp2Dmg,(Guictrlread($Sp2Dmg)*$Lasermunition+$Raketendmg))
    GUICtrlSetData($Sp22Dmg,(Guictrlread($Sp22Dmg)*$Lasermunition+$Raketendmg))
    $HP1= GUICtrlRead($Sp1HP)
    $SH11= GUICtrlRead($Sp1Schild)
    $Dmg11= GUICtrlRead($Sp1Dmg)
    $HP2= GUICtrlRead($Sp2HP)
    $SH21= GUICtrlRead($Sp2Schild)
    $Dmg21= GUICtrlRead($Sp2Dmg)
    $SH12= GUICtrlRead($Sp12Schild)
    $Dmg12= GUICtrlRead($Sp12Dmg)
    $SH22= GUICtrlRead($Sp22Schild)
    $Dmg22= GUICtrlRead($Sp22Dmg)
    If $Dmg21 < $Dmg22 Then
    $Dmgmax2 = $Dmg22
    Else
    $Dmgmax2 = $Dmg21
    EndIf
    If $Dmg11 < $Dmg12 Then
    $Dmgmax1 = $Dmg12
    Else
    $Dmgmax1 = $Dmg11
    EndIf
    if $Dmgmax1 = 0 and $Dmgmax2 = 0 Then
    MsgBox(0,"","Unmöglich einen Sieger festzustellen.")
    ExitLoop
    EndIf
    if Guictrlread($CheckGefechtsroboter) = 1 then
    $Gefechtsroboter = 100000
    $Gefechtsroboter1 = 100000
    $Gefechtsroboter2 = 100000
    Else
    $Gefechtsroboter = 0
    $Gefechtsroboter1 = 0
    $Gefechtsroboter2 = 0
    EndIf
    if Guictrlread($Backup) = 1 then
    if $Dmg21 < $Dmg22 Then
    $SH22 = $SH22 + 75000
    Else
    $SH21 = $SH21 + 75000
    EndIf
    if $Dmg11 < $Dmg12 Then
    $SH12 = $SH12 + 75000
    Else
    $SH11 = $SH11 + 75000
    EndIf
    EndIf
    $HPzurueck1 = ($HP10plus*($SH21 + $SH22 + $HP2 + $Gefechtsroboter + (0.1* $HP1 + $SH11 + $SH12)))
    $HPzurueck2 = ($HP10plus*($SH11 + $SH12 + $HP1 + $Gefechtsroboter + (0.1* $HP2 + $SH21 + $SH22)))
    If (11.5*($HP1+$Gefechtsroboter+$HPzurueck1))<($SH11+$SH12) or (11.5*($HP2+$Gefechtsroboter+$HPzurueck2))<($SH21+$SH22) Then
    If (11.5*($HP1+$Gefechtsroboter+$HPzurueck1))<($SH11+$SH12) Then
    MsgBox(0,"","Spieler1 hat unnötig viele Schildgeneratoren in seinen Konfigurationen. Seine Hitpoints gehen schneller down als sein gesamtes Schild. Idiot!")
    EndIf
    If (11.5*($HP2+$Gefechtsroboter+$HPzurueck2))<($SH21+$SH22) Then
    MsgBox(0,"","Spieler2 hat unnötig viele Schildgeneratoren in seinen Konfigurationen. Seine Hitpoints gehen schneller down als sein gesamtes Schild. Idiot!")
    EndIf
    ExitLoop
    EndIf
    if $show = 1 then
    MsgBox(0,"","Kontrahenten haben ihre Waffen geladen.")
    EndIf
    if Guictrlread($Checkx5x6) = 1 Then
    $x5x6switch = 1
    Else
    $x5x6switch = 0
    EndIf
    $Dmg2 = $Dmg21
    $Dmg1 = $Dmg11
    $SH1 = $SH11
    $SH2 = $SH21
    for $i = 0 to 4
    ;===============================
    $Schadenvorher1 = $Dmg1
    $Schadenvorher2 = $Dmg2
    $Sp2nutztx5 = 0
    $Sp1nutztx5 = 0
    $Durchtritt2 = 0.92
    $Durchtritt1 = 0.92
    ;5er Auswahl des stärkeren und resultierende neue Verhältnisse
    if Guictrlread($Checkx5) = 1 Then
    if ($Dmg1-$Raketendmg) = ($Dmg2-$Raketendmg) Then ;x5 bring keinem von beiden etwas!
    $Sp2nutztx5 = 0
    $Sp1nutztx5 = 0
    Else
    if ($Dmg1-$Raketendmg) < ($Dmg2-$Raketendmg) Then
    $Sp2nutztx5 = 1
    $Sp1nutztx5 = 0
    $Dmg2 = 0.5 * ($Dmg2-$Raketendmg) + $Raketendmg ;Spieler 2 macht nur noch 2 fachen schaden auf den gegner und bekommt halt diesen zurück
    $Durchtritt1 = 1
    Else
    $Sp1nutztx5 = 1
    $Sp2nutztx5 = 0
    $Dmg1 = 0.5 * ($Dmg1-$Raketendmg) + $Raketendmg ;Spieler 1 macht nur noch 2 fachen schaden (0.5 * 4 = 2) auf den gegner und bekommt halt diesen zurück
    $Durchtritt2 = 1
    EndIf
    EndIf
    Else
    EndIf
    ;5ermunit mit x6 im switch
    if Guictrlread($Checkx5x6) = 1 Then
    if ($Dmg1-$Raketendmg) = ($Dmg2-$Raketendmg) Then ;x5 bring keinem von beiden etwas!
    $Sp2nutztx5 = 0
    $Sp1nutztx5 = 0
    Else
    if ($Dmg1-$Raketendmg) < ($Dmg2-$Raketendmg) Then
    $Sp2nutztx5 = 1
    $Sp1nutztx5 = 0
    $Dmg2 = 0.5 * ($Dmg2-$Raketendmg) + $Raketendmg ;Spieler 2 macht nur noch 2 fachen schaden auf den gegner und bekommt halt diesen zurück
    $Durchtritt1 = 1
    Else
    $Sp1nutztx5 = 1
    $Sp2nutztx5 = 0
    $Dmg1 = 0.5 * ($Dmg1-$Raketendmg) + $Raketendmg ;Spieler 1 macht nur noch 2 fachen schaden (0.5 * 4 = 2) auf den gegner und bekommt halt diesen zurück
    $Durchtritt2 = 1
    EndIf
    EndIf
    Else
    EndIf
    ;Berechnung von neuen HP, Schild von jedem Spieler nach x Runden draufhauen
    Do
    ;Finale vorhanden = einer gar kein schild mehr ? dann nur über HP abrechnen!
    if ($SH2 = 0) And ($SH1 = 0) Then
    MsgBox(0,"","Finales Battle")
    Do
    if $HP2 < 150000 Then
    $HP2 = $HP2 + $Gefechtsroboter2
    $Gefechtsroboter2 = 0
    EndIf
    if $HP1 < 150000 Then
    $HP1 = $HP1 + $Gefechtsroboter1
    $Gefechtsroboter1 = 0
    EndIf
    $HP1 = $HP1 - $Dmgmax2 + $HP10plus * ($Dmgmax1) - $x5x6switch * 1/4 * 1.5* ($Dmgmax2-$Raketendmg)
    $HP2 = $HP2 - $Dmgmax1 + $HP10plus * ($Dmgmax2) - $x5x6switch * 1/4 * 1.5* ($Dmgmax1-$Raketendmg)
    GUICtrlSetData($Sp22Rest,round($SH2,2))
    GUICtrlSetData($Sp12Rest,round($SH1,2))
    GUICtrlSetData($Sp2Rest,round($HP2,2))
    GUICtrlSetData($Sp1Rest,round($HP1,2))
    MsgBox(0,"","")
    until $HP1 < 0 or $HP2 < 0 or $HP1 = 0 or $HP2 = 0 ;fertig
    Else
    if $SH1 = 0 or $SH2 = 0 Then
    if $SH1 = 0 then
    Do
    $Sp2nutztx5 = 0
    $Dmg2 = $Schadenvorher2
    $Durchtritt1 = 1
    $HP1 = $HP1 - $Durchtritt1 * $Dmg2 + $HP10plus * ($Dmg1) + $Sp1nutztx5 * ($Dmg1-$Raketendmg) - $x5x6switch * 1/4 * 1.5* ($Schadenvorher2-$Raketendmg)
    $HP2 = $HP2 - 0.08 * $Raketendmg + $HP10plus * ($Dmg2) - (1-$Durchtritt2) * ($Dmg1-$Raketendmg) - $x5x6switch * 0.08* 1/4 * 1.5* ($Schadenvorher1-$Raketendmg)
    $SH2 = $SH2 - 0.92 * $Raketendmg - $Durchtritt2 * ($Dmg1-$Raketendmg) + $Sp2nutztx5 * ($Dmg2-$Raketendmg) - $x5x6switch * 0.92* 1/4 * 1.5* ($Schadenvorher1-$Raketendmg)
    if $HP2 < 150000 Then
    $HP2 = $HP2 + $Gefechtsroboter2
    $Gefechtsroboter2 = 0
    EndIf
    if $HP1 < 150000 Then
    $HP1 = $HP1 + $Gefechtsroboter1
    $Gefechtsroboter1 = 0
    EndIf
    until $HP1 = 0 or $HP1 < 0 or $SH2 = 0 or $SH2 <0 or $HP2 = 0 or $HP2 < 0
    EndIf
    if $SH2 = 0 then
    Do
    $Sp1nutztx5 = 0
    $Dmg1 = $Schadenvorher1
    $Durchtritt2 = 1
    $HP2 = $HP2 - $Durchtritt2 * $Dmg1 + $HP10plus * ($Dmg2) + $Sp2nutztx5 * ($Dmg2-$Raketendmg) - $x5x6switch * 1/4 * 1.5* ($Schadenvorher1-$Raketendmg)
    $HP1 = $HP1 - 0.08 * $Raketendmg + $HP10plus * ($Dmg1) - (1-$Durchtritt1) * ($Dmg2-$Raketendmg) - $x5x6switch * 0.08 * 1/4 * 1.5* ($Schadenvorher2-$Raketendmg)
    $SH1 = $SH1 - 0.92 * $Raketendmg - $Durchtritt1 * ($Dmg2-$Raketendmg) + $Sp2nutztx5 * ($Dmg1-$Raketendmg) - $x5x6switch * 0.92 * 1/4 * 1.5* ($Schadenvorher2-$Raketendmg)
    if $HP2 < 150000 Then
    $HP2 = $HP2 + $Gefechtsroboter2
    $Gefechtsroboter2 = 0
    EndIf
    if $HP1 < 150000 Then
    $HP1 = $HP1 + $Gefechtsroboter1
    $Gefechtsroboter1 = 0
    EndIf
    until $HP2 = 0 or $HP2 < 0 or $SH1 = 0 or $SH1 <0 or $HP1 = 0 or $HP1 < 0
    EndIf
    Else
    ;normal abrechnen
    Do
    $HP1 = $HP1 - 0.08 * $Raketendmg + $HP10plus * ($Dmg1) - (1-$Durchtritt1) * ($Dmg2-$Raketendmg) - $x5x6switch * 0.08* 1/4 * 1.5* ($Schadenvorher2-$Raketendmg)
    $HP2 = $HP2 - 0.08 * $Raketendmg + $HP10plus * ($Dmg2) - (1-$Durchtritt2) * ($Dmg1-$Raketendmg) - $x5x6switch * 0.08* 1/4 * 1.5* ($Schadenvorher1-$Raketendmg)
    $SH1 = $SH1 - 0.92 * $Raketendmg - $Durchtritt1 * ($Dmg2-$Raketendmg) + $Sp1nutztx5 * ($Dmg1-$Raketendmg) - $x5x6switch *0.92 * 1/4 * 1.5* ($Schadenvorher2-$Raketendmg)
    $SH2 = $SH2 - 0.92 * $Raketendmg - $Durchtritt2 * ($Dmg1-$Raketendmg) + $Sp2nutztx5 * ($Dmg2-$Raketendmg) - $x5x6switch * 0.92 * 1/4 * 1.5* ($Schadenvorher1-$Raketendmg)
    if $HP2 < 150000 Then
    $HP2 = $HP2 + $Gefechtsroboter2
    $Gefechtsroboter2 = 0
    EndIf
    if $HP1 < 150000 Then
    $HP1 = $HP1 + $Gefechtsroboter1
    $Gefechtsroboter1 = 0
    EndIf
    if Guictrlread($iswitch) = 1 then
    if $SH1 > (11.5*($HP1+$Gefechtsroboter1)) Then
    $Sp1nutztx5 = 0
    $Dmg1 = $Schadenvorher1
    $Durchtritt2 = 0.92
    EndIf
    if $SH2 > (11.5*($HP2+$Gefechtsroboter1)) Then
    $Sp2nutztx5 = 0
    $Dmg2 = $Schadenvorher2
    $Durchtritt1 = 0.92
    EndIf
    EndIf
    until $SH1 = 0 or $SH2 = 0 or $SH1 < 0 or $SH2 < 0 ;fertig
    EndIf
    EndIf
    if $SH1 < 0 Then
    $HP1 = $HP1 + $SH1
    $SH1 = 0
    EndIf
    if $SH2 < 0 Then
    $HP2 = $HP2 + $SH2
    $SH2 = 0
    EndIf
    if $HP1 < 0 Then
    $HP1 = 0
    EndIf
    if $HP2 < 0 Then
    $HP2 = 0
    EndIf
    ;maximalwerte nicht überschreiten
    if $HP1 > Guictrlread($Sp1HP) Then
    $HP1 = Guictrlread($Sp1HP)
    EndIf
    if $HP2 > Guictrlread($Sp2HP) Then
    $HP2 = Guictrlread($Sp2HP)
    EndIf
    until $SH1 = 0 or $SH2 = 0 or $HP1 = 0 or $HP2 = 0
    if $HP1 = 0 Then
    GUICtrlSetData($Sp12Rest,(round($SH1,2)))
    GUICtrlSetData($Sp1Rest,(round($HP1,2)))
    GUICtrlSetData($Sp2Rest,(round(($HP2+$Gefechtsroboter2),2)))
    GUICtrlSetData($Sp22Rest,(round($SH2,2)))
    $Rest=($HP2+$Gefechtsroboter2)
    if ($Rest) = 0 Then
    MsgBox(0,"Ende","Keiner hat gewonnen");Spieler
    Else
    MsgBox(0,"Ende","Spieler 2 hat gewonnen");Spieler
    EndIf
    ExitLoop
    EndIf
    if $HP2 = 0 Then
    GUICtrlSetData($Sp22Rest,(round($SH2,2)))
    GUICtrlSetData($Sp2Rest,(round($HP2,2)))
    GUICtrlSetData($Sp1Rest,(round(($HP1+$Gefechtsroboter1),2)))
    GUICtrlSetData($Sp12Rest,(round($SH1,2)))
    $Rest=($HP1+$Gefechtsroboter1)
    if ($Rest) = 0 Then
    MsgBox(0,"Ende","Keiner hat gewonnen");Spieler
    Else
    MsgBox(0,"Ende","Spieler 1 hat gewonnen");Spieler
    EndIf
    ExitLoop
    EndIf
    GUICtrlSetData($Sp22Rest,round($SH2,2))
    GUICtrlSetData($Sp12Rest,round($SH1,2))
    GUICtrlSetData($Sp2Rest,round($HP2,2))
    GUICtrlSetData($Sp1Rest,round($HP1,2))
    ;Reset von x5 (vor jedem "switch)
    if Guictrlread($Checkx5) = 1 then
    $Dmg1 = $Schadenvorher1
    $Dmg2 = $Schadenvorher2
    EndIf
    if Guictrlread($Checkx5x6) = 1 then
    $Dmg1 = $Schadenvorher1
    $Dmg2 = $Schadenvorher2
    EndIf
    If $SH1 = 0 Then
    $Wechsel1 = $Wechsel1 + 1 ; 2 konfis down von einem
    if $Wechsel1 = 1 Then
    $SH1 = $SH12
    $Dmg1 = $Dmg12
    if $show = 1 then
    MsgBox(0,"","Spieler1 musste die 1. konfi wechseln.")
    EndIf
    EndIf
    if $Wechsel1 = 2 then ; keine Schildkonfi mehr da
    $SH1 = 0
    $Dmg1 = $Dmgmax1
    if $show = 1 then
    MsgBox(0,"","Spieler1 musste die 2. konfi wechseln.")
    EndIf
    EndIf
    EndIf
    If $SH2 = 0 Then
    $Wechsel2 = $Wechsel2 + 1 ; 2 konfis down von einem
    if $Wechsel2 = 1 Then
    $SH2 = $SH22
    $Dmg2 = $Dmg22
    if $show = 1 then
    MsgBox(0,"","Spieler2 musste die 1. konfi wechseln.")
    EndIf
    EndIf
    if $Wechsel2 = 2 then ; keine Schildkonfi mehr da
    $SH2 = 0
    $Dmg2 = $Dmgmax2
    if $show = 1 then
    MsgBox(0,"","Spieler2 musste die 2. konfi wechseln.")
    EndIf
    EndIf
    EndIf
    Next
    Next
    EndFunc
    ;<===================================================================
    Func _Analyse11 ()
    ;Reset
    $DamageLaser = 200 * Guictrlread($Treffer) / 100
    GUICtrlSetData($Sp22Rest,0)
    GUICtrlSetData($Sp2Rest,0)
    GUICtrlSetData($Sp1Rest,0)
    GUICtrlSetData($Sp12Rest,0)
    $MultiplikatorHP = 1
    $MultiplikatorSh = 1
    $MultiplikatorDmg =1
    $Lasermunition = 1
    $BoostHP = 1
    $BoostSh = 1
    $BoostDmg = 1
    $KGJ = 1
    $Schilddichte = 1
    $SUpdate = 1
    $LUpdate = 1
    $LUpgrades = 1
    $SUpgrades = 1
    $Huelleplus = 0
    ;===== Spieler
    ;HP
    $Herc20 = 1
    $Herz20 = 1
    $Design20 = 1
    $Herc201 = 1
    $Herz201 = 1
    $Design201 = 1
    ;Schild
    $Herc15 = 1.2
    $Herz15 = 1
    $Design10 = 1
    $DUpgradesS = 1
    $Herc151 = 1.2
    $Herz151 = 1
    $Design101 = 1
    ;Schaden
    $Havoc10 = 1.1
    $Herz95 = 1
    $Design5 = 1
    $Design7 = 1
    $DUpgradesL = 1
    $Zange03 = 1
    $Havoc101 = 1.1
    $Herz951 = 1
    $Design51 = 1
    $Design71 = 1
    $Zange031 = 1
    ;1. Auslesen und Variablen verändern
    ;Beide
    if Guictrlread($10HPback) = 1 then
    $HP10plus = 0.1
    Else
    $HP10plus = 0
    EndIf
    If Guictrlread($Checkx5x6) = 1 Then
    $Lasermunition = 4
    EndIf
    If Guictrlread($Checkx4) = 1 Then
    $Lasermunition = 4
    EndIf
    If Guictrlread($Checkx6) = 1 Then
    $Lasermunition = (3*4+1*6)/4
    EndIf
    If Guictrlread($Checkx5) = 1 Then
    $Lasermunition = 4
    EndIf
    If Guictrlread($CheckHPBooster) = 1 Then
    $BoostHP = 1.1
    EndIf
    If Guictrlread($CheckHPPro) = 1 Then
    $BoostHP = 1.1
    EndIf
    If Guictrlread($CheckHPBooster) = 1 and Guictrlread($CheckHPPro) = 1 Then
    $BoostHP = 1.2
    EndIf
    If Guictrlread($CheckShBooster) = 1 Then
    $BoostSh = 1.25
    EndIf
    If Guictrlread($CheckShPro) = 1 Then
    $BoostSh = 1.25
    EndIf
    If Guictrlread($CheckShBooster) = 1 and Guictrlread($CheckShPro) = 1 Then
    $BoostSh = 1.5
    EndIf
    If Guictrlread($CheckDmgBooster) = 1 Then
    $BoostDmg = 1.1
    EndIf
    If Guictrlread($CheckDmgPro) = 1 Then
    $BoostDmg = 1.1
    EndIf
    If Guictrlread($CheckDmgBooster) = 1 and Guictrlread($CheckDmgPro) = 1 Then
    $BoostDmg = 1.2
    EndIf
    If Guictrlread($CheckKappaBooster) = 1 Then
    $BoostHP = $BoostHP + 0.05
    $BoostSh = $BoostSh + 0.05
    $BoostDmg = $BoostDmg + 0.05
    EndIf
    If Guictrlread($CheckPSDmg) = 1 Then
    $KGJ = 1.12
    EndIf
    If Guictrlread($CheckPSSchild) = 1 Then
    $Schilddichte = 1.25
    EndIf
    If Guictrlread($CheckUpgradesLaser) = 1 Then
    $LUpgrades = 1.06
    EndIf
    If Guictrlread($CheckupgradesSchilde) = 1 Then
    $SUpgrades = 1.15
    EndIf
    If Guictrlread($CheckSepLaser) = 1 Then
    $LUpdate = 1.6
    EndIf
    If Guictrlread($CheckPromLaser) = 1 Then
    $LUpdate = 1.3
    EndIf
    If Guictrlread($CheckSepLaser) = 1 and Guictrlread($CheckPromLaser) = 1 Then
    MsgBox(0,"","Seprom + Promerium gleichzeitig, das ist nicht möglich! Es wurde Seprom ausgewählt.")
    $LUpdate = 1.6
    EndIf
    If Guictrlread($CheckSepSchild) = 1 Then
    $SUpdate = 1.4
    EndIf
    If Guictrlread($CheckPromSchild) = 1 Then
    $SUpdate = 1.2
    EndIf
    If Guictrlread ($CheckSepSchild) = 1 and Guictrlread($CheckPromSchild) = 1 Then
    MsgBox(0,"","Seprom + Promerium gleichzeitig, das ist nicht möglich! Es wurde Seprom ausgewählt.")
    $SUpdate = 1.4
    EndIf
    $MultiplikatorHP = 1 * $BoostHP
    $MultiplikatorSh = 1 * $BoostSh * $SUpdate * $SUpgrades * $Schilddichte
    $MultiplikatorDmg =1 * $Lasermunition * $BoostDmg * $KGJ * $LUpdate * $Lupgrades
    GUICtrlSetData($MultiHP,$MultiplikatorHP)
    GUICtrlSetData($MultiSchild,$MultiplikatorSh)
    GUICtrlSetData($MultiDmg,$MultiplikatorDmg)
    If Guictrlread($CheckPSHP) = 1 Then
    $Huelleplus = 50000
    EndIf
    ;======================================================================
    ;DUpgrades nicht vergessen einzurechnen in Spielergrunddmg und drohnenberechnung!
    ;Spieler 1
    ;== HP
    If Guictrlread($Sp1CheckHerc) = 1 Then
    $Herc20 = 1.2
    EndIf
    If Guictrlread($Sp1CheckHerz) = 1 Then
    $Herz20 = 1.2
    EndIf
    If Guictrlread($Sp1Check20HP) = 1 Then
    $Design20 = 1.2
    EndIf
    GUICtrlSetData($Sp1HP,round(((Guictrlread($Sp1GrundHP)+$Huelleplus)*$MultiplikatorHP*$Herc20*$Herz20*$Design20),1))
    ;===================================
    ;== Schild
    If Guictrlread($Sp1CheckHerc) = 1 Then
    $Herc15 = 1.35
    Else
    $Herc15 = 1.2
    EndIf
    If Guictrlread($Sp1CheckHerz) = 1 Then
    $Herz15 = 1.15
    EndIf
    If Guictrlread($Sp1Check10Schild) = 1 Then
    $Design10 = 1.1
    EndIf
    If Guictrlread($CheckUpgradesDrohnen) = 1 Then
    $DUpgradesS = 1.15
    EndIf
    GUICtrlSetData($Sp1Schild,round(((GUIctrlread($Sp1SchiffSchilde)*10000+(Guictrlread($Sp1DrohnenSchilde)*10000*$Herc15*$DUpgradesS))*$MultiplikatorSh*$Herz15*$Design10),1))
    ;===================================
    ;== Schaden
    ;===================================
    If Guictrlread($Sp1CheckHavoc) = 1 Then
    $Havoc10 = 1.2
    Else
    $Havoc10 = 1.1
    EndIf
    If Guictrlread($Sp1CheckHerz) = 1 Then
    $Herz95 = 0.95
    EndIf
    If Guictrlread($Sp1Check5Dmg) = 1 Then
    $Design5 = 1.05
    EndIf
    If Guictrlread($Sp1Check7Dmg) = 1 Then
    $Design7 = 1.07
    EndIf
    If Guictrlread($CheckUpgradesDrohnen) = 1 Then
    $DUpgradesL = 1.06
    EndIf
    If Guictrlread($Sp1CheckZange) = 1 Then
    $Zange03 = 1.03
    EndIf
    ;Raketen
    $Raketendmg = 0
    If Guictrlread($CheckRaketen1) = 1 Then
    $Raketenplus = 1.2
    Else
    $Raketenplus = 1
    EndIf
    $Raketenboost = 1 * $BoostDmg * $Raketenplus * $Design7 * $Design5 * $Zange03 * $Herz95
    If Guictrlread($CheckRaketen2) = 1 Then
    $Raketendmg = 1/3 * 6000 * $Raketenboost
    EndIf
    If Guictrlread($CheckPremium) = 1 Then
    $Raketendmg = 2 * $Raketendmg
    EndIf
    If Guictrlread($CheckRaketen3) = 1 Then
    $Raketendmg = $Raketendmg + ((1/5)* 20000 * $Raketenboost)
    EndIf
    GUICtrlSetData($Sp1Dmg,round(((GUIctrlread($Sp1SchiffLaser)*$DamageLaser+(Guictrlread($Sp1DrohnenLaser)*$DamageLaser*$Havoc10*$DUpgradesL))*($MultiplikatorDmg)*$Herz95*$Zange03*$Design5*$Design7+$Raketendmg),1))
    ;2. umrechnen
    ;3. in Inputs ausgeben
    MsgBox(0,"","Konfigurationen 1 aktualisiert.")
    $Set1 = 1
    EndFunc
    Func _Analyse12 ()
    ;Reset
    GUICtrlSetData($Sp22Rest,0)
    GUICtrlSetData($Sp2Rest,0)
    GUICtrlSetData($Sp1Rest,0)
    GUICtrlSetData($Sp12Rest,0)
    $DamageLaser = 200 * Guictrlread($Treffer) / 100
    $MultiplikatorHP = 1
    $MultiplikatorSh = 1
    $MultiplikatorDmg =1
    $Lasermunition = 1
    $BoostHP = 1
    $BoostSh = 1
    $BoostDmg = 1
    $KGJ = 1
    $Schilddichte = 1
    $SUpdate = 1
    $LUpdate = 1
    $LUpgrades = 1
    $SUpgrades = 1
    $Huelleplus = 0
    $Raketendmg = 0
    ;===== Spieler
    ;HP
    $Herc20 = 1
    $Herz20 = 1
    $Design20 = 1
    $Herc201 = 1
    $Herz201 = 1
    $Design201 = 1
    ;Schild
    $Herc15 = 1.2
    $Herz15 = 1
    $Design10 = 1
    $DUpgradesS = 1
    $Herc151 = 1.2
    $Herz151 = 1
    $Design101 = 1
    ;Schaden
    $Havoc10 = 1.1
    $Herz95 = 1
    $Design5 = 1
    $Design7 = 1
    $DUpgradesL = 1
    $Zange03 = 1
    $Havoc101 = 1.1
    $Herz951 = 1
    $Design51 = 1
    $Design71 = 1
    $Zange031 = 1
    ;1. Auslesen und Variablen verändern
    ;Beide
    if Guictrlread($10HPback) = 1 then
    $HP10plus = 0.1
    Else
    $HP10plus = 0
    EndIf
    If Guictrlread($Checkx5x6) = 1 Then
    $Lasermunition = 4
    EndIf
    If Guictrlread($Checkx4) = 1 Then
    $Lasermunition = 4
    EndIf
    If Guictrlread($Checkx6) = 1 Then
    $Lasermunition = (3*4+1*6)/4
    EndIf
    If Guictrlread($Checkx5) = 1 Then
    $Lasermunition = 4
    EndIf
    If Guictrlread($CheckHPBooster) = 1 Then
    $BoostHP = 1.1
    EndIf
    If Guictrlread($CheckHPPro) = 1 Then
    $BoostHP = 1.1
    EndIf
    If Guictrlread($CheckHPBooster) = 1 and Guictrlread($CheckHPPro) = 1 Then
    $BoostHP = 1.2
    EndIf
    If Guictrlread($CheckShBooster) = 1 Then
    $BoostSh = 1.25
    EndIf
    If Guictrlread($CheckShPro) = 1 Then
    $BoostSh = 1.25
    EndIf
    If Guictrlread($CheckShBooster) = 1 and Guictrlread($CheckShPro) = 1 Then
    $BoostSh = 1.5
    EndIf
    If Guictrlread($CheckDmgBooster) = 1 Then
    $BoostDmg = 1.1
    EndIf
    If Guictrlread($CheckDmgPro) = 1 Then
    $BoostDmg = 1.1
    EndIf
    If Guictrlread($CheckDmgBooster) = 1 and Guictrlread($CheckDmgPro) = 1 Then
    $BoostDmg = 1.2
    EndIf
    If Guictrlread($CheckKappaBooster) = 1 Then
    $BoostHP = $BoostHP + 0.05
    $BoostSh = $BoostSh + 0.05
    $BoostDmg = $BoostDmg + 0.05
    EndIf
    If Guictrlread($CheckPSDmg) = 1 Then
    $KGJ = 1.12
    EndIf
    If Guictrlread($CheckPSSchild) = 1 Then
    $Schilddichte = 1.25
    EndIf
    If Guictrlread($CheckUpgradesLaser) = 1 Then
    $LUpgrades = 1.06
    EndIf
    If Guictrlread($CheckupgradesSchilde) = 1 Then
    $SUpgrades = 1.15
    EndIf
    If Guictrlread($CheckSepLaser) = 1 Then
    $LUpdate = 1.6
    EndIf
    If Guictrlread($CheckPromLaser) = 1 Then
    $LUpdate = 1.3
    EndIf
    If Guictrlread($CheckSepLaser) = 1 and Guictrlread($CheckPromLaser) = 1 Then
    MsgBox(0,"","Seprom + Promerium gleichzeitig, das ist nicht möglich! Es wurde Seprom ausgewählt.")
    $LUpdate = 1.6
    EndIf
    If Guictrlread($CheckSepSchild) = 1 Then
    $SUpdate = 1.4
    EndIf
    If Guictrlread($CheckPromSchild) = 1 Then
    $SUpdate = 1.2
    EndIf
    If Guictrlread ($CheckSepSchild) = 1 and Guictrlread($CheckPromSchild) = 1 Then
    MsgBox(0,"","Seprom + Promerium gleichzeitig, das ist nicht möglich! Es wurde Seprom ausgewählt.")
    $SUpdate = 1.4
    EndIf
    $MultiplikatorHP = 1 * $BoostHP
    $MultiplikatorSh = 1 * $BoostSh * $SUpdate * $SUpgrades * $Schilddichte
    $MultiplikatorDmg =1 * $Lasermunition * $BoostDmg * $KGJ * $LUpdate * $Lupgrades
    GUICtrlSetData($MultiHP,$MultiplikatorHP)
    GUICtrlSetData($MultiSchild,$MultiplikatorSh)
    GUICtrlSetData($MultiDmg,$MultiplikatorDmg)
    If Guictrlread($CheckPSHP) = 1 Then
    $Huelleplus = 50000
    EndIf
    ;Raketen
    $Raketendmg = 0
    If Guictrlread($CheckRaketen1) = 1 Then
    $Raketenplus = 1.2
    Else
    $Raketenplus = 1
    EndIf
    $Raketenboost = 1 * $BoostDmg * $Raketenplus
    If Guictrlread($CheckRaketen2) = 1 Then
    $Raketendmg = 1/3 * 6000 * $Raketenboost
    EndIf
    If Guictrlread($CheckPremium) = 1 Then
    $Raketendmg = 2 * $Raketendmg
    EndIf
    If Guictrlread($CheckRaketen3) = 1 Then
    $Raketendmg = $Raketendmg + ((1/5)* 20000 * $Raketenboost)
    EndIf
    ;======================================================================
    ;DUpgrades nicht vergessen einzurechnen in Spielergrunddmg und drohnenberechnung!
    ;Spieler 1
    ;===================================
    ;== Schild
    If Guictrlread($Sp1CheckHerc) = 1 Then
    $Herc15 = 1.35
    Else
    $Herc15 = 1.2
    EndIf
    If Guictrlread($Sp1CheckHerz) = 1 Then
    $Herz15 = 1.15
    EndIf
    If Guictrlread($Sp1Check10Schild) = 1 Then
    $Design10 = 1.1
    EndIf
    If Guictrlread($CheckUpgradesDrohnen) = 1 Then
    $DUpgradesS = 1.15
    EndIf
    GUICtrlSetData($Sp12Schild,round(((GUIctrlread($Sp1SchiffSchilde)*10000+(Guictrlread($Sp1DrohnenSchilde)*10000*$Herc15*$DUpgradesS))*$MultiplikatorSh*$Herz15*$Design10),1))
    ;===================================
    ;== Schaden
    ;===================================
    If Guictrlread($Sp1CheckHavoc) = 1 Then
    $Havoc10 = 1.2
    Else
    $Havoc10 = 1.1
    EndIf
    If Guictrlread($Sp1CheckHerz) = 1 Then
    $Herz95 = 0.95
    EndIf
    If Guictrlread($Sp1Check5Dmg) = 1 Then
    $Design5 = 1.05
    EndIf
    If Guictrlread($Sp1Check7Dmg) = 1 Then
    $Design7 = 1.07
    EndIf
    If Guictrlread($CheckUpgradesDrohnen) = 1 Then
    $DUpgradesL = 1.06
    EndIf
    If Guictrlread($Sp1CheckZange) = 1 Then
    $Zange03 = 1.03
    EndIf
    ;Raketen
    $Raketendmg = 0
    If Guictrlread($CheckRaketen1) = 1 Then
    $Raketenplus = 1.2
    Else
    $Raketenplus = 1
    EndIf
    $Raketenboost = 1 * $BoostDmg * $Raketenplus * $Design7 * $Design5 * $Zange03 * $Herz95
    If Guictrlread($CheckRaketen2) = 1 Then
    $Raketendmg = 1/3 * 6000 * $Raketenboost
    EndIf
    If Guictrlread($CheckPremium) = 1 Then
    $Raketendmg = 2 * $Raketendmg
    EndIf
    If Guictrlread($CheckRaketen3) = 1 Then
    $Raketendmg = $Raketendmg + ((1/5)* 20000 * $Raketenboost)
    EndIf
    GUICtrlSetData($Sp12Dmg,round(((GUIctrlread($Sp1SchiffLaser)*$DamageLaser+(Guictrlread($Sp1DrohnenLaser)*$DamageLaser*$Havoc10*$DUpgradesL))*($MultiplikatorDmg)*$Herz95*$Zange03*$Design5*$Design7+$Raketendmg),1))
    ;2. umrechnen
    ;3. in Inputs ausgeben
    MsgBox(0,"","Konfigurationen 2 aktualisiert.")
    $Set2 = 1
    EndFunc
    Func _Analyse22 ()
    ;Reset
    $DamageLaser = 200 * Guictrlread($Treffer) / 100
    GUICtrlSetData($Sp22Rest,0)
    GUICtrlSetData($Sp2Rest,0)
    GUICtrlSetData($Sp1Rest,0)
    GUICtrlSetData($Sp12Rest,0)
    $MultiplikatorHP = 1
    $MultiplikatorSh = 1
    $MultiplikatorDmg =1
    $Lasermunition = 1
    $BoostHP = 1
    $BoostSh = 1
    $BoostDmg = 1
    $KGJ = 1
    $Schilddichte = 1
    $SUpdate = 1
    $LUpdate = 1
    $LUpgrades = 1
    $SUpgrades = 1
    $Huelleplus = 0
    ;===== Spieler
    ;HP
    $Herc20 = 1
    $Herz20 = 1
    $Design20 = 1
    $Herc201 = 1
    $Herz201 = 1
    $Design201 = 1
    ;Schild
    $Herc15 = 1.2
    $Herz15 = 1
    $Design10 = 1
    $DUpgradesS = 1
    $Herc151 = 1.2
    $Herz151 = 1
    $Design101 = 1
    ;Schaden
    $Havoc10 = 1.1
    $Herz95 = 1
    $Design5 = 1
    $Design7 = 1
    $DUpgradesL = 1
    $Zange03 = 1
    $Havoc101 = 1.1
    $Herz951 = 1
    $Design51 = 1
    $Design71 = 1
    $Zange031 = 1
    ;1. Auslesen und Variablen verändern
    ;Beide
    if Guictrlread($10HPback) = 1 then
    $HP10plus = 0.1
    Else
    $HP10plus = 0
    EndIf
    If Guictrlread($Checkx5x6) = 1 Then
    $Lasermunition = 4
    EndIf
    If Guictrlread($Checkx4) = 1 Then
    $Lasermunition = 4
    EndIf
    If Guictrlread($Checkx6) = 1 Then
    $Lasermunition = (3*4+1*6)/4
    EndIf
    If Guictrlread($Checkx5) = 1 Then
    $Lasermunition = 4
    EndIf
    If Guictrlread($CheckHPBooster) = 1 Then
    $BoostHP = 1.1
    EndIf
    If Guictrlread($CheckHPPro) = 1 Then
    $BoostHP = 1.1
    EndIf
    If Guictrlread($CheckHPBooster) = 1 and Guictrlread($CheckHPPro) = 1 Then
    $BoostHP = 1.2
    EndIf
    If Guictrlread($CheckShBooster) = 1 Then
    $BoostSh = 1.25
    EndIf
    If Guictrlread($CheckShPro) = 1 Then
    $BoostSh = 1.25
    EndIf
    If Guictrlread($CheckShBooster) = 1 and Guictrlread($CheckShPro) = 1 Then
    $BoostSh = 1.5
    EndIf
    If Guictrlread($CheckDmgBooster) = 1 Then
    $BoostDmg = 1.1
    EndIf
    If Guictrlread($CheckDmgPro) = 1 Then
    $BoostDmg = 1.1
    EndIf
    If Guictrlread($CheckDmgBooster) = 1 and Guictrlread($CheckDmgPro) = 1 Then
    $BoostDmg = 1.2
    EndIf
    If Guictrlread($CheckKappaBooster) = 1 Then
    $BoostHP = $BoostHP + 0.05
    $BoostSh = $BoostSh + 0.05
    $BoostDmg = $BoostDmg + 0.05
    EndIf
    If Guictrlread($CheckPSDmg) = 1 Then
    $KGJ = 1.12
    EndIf
    If Guictrlread($CheckPSSchild) = 1 Then
    $Schilddichte = 1.25
    EndIf
    If Guictrlread($CheckUpgradesLaser) = 1 Then
    $LUpgrades = 1.06
    EndIf
    If Guictrlread($CheckupgradesSchilde) = 1 Then
    $SUpgrades = 1.15
    EndIf
    If Guictrlread($CheckSepLaser) = 1 Then
    $LUpdate = 1.6
    EndIf
    If Guictrlread($CheckPromLaser) = 1 Then
    $LUpdate = 1.3
    EndIf
    If Guictrlread($CheckSepLaser) = 1 and Guictrlread($CheckPromLaser) = 1 Then
    MsgBox(0,"","Seprom + Promerium gleichzeitig, das ist nicht möglich! Es wurde Seprom ausgewählt.")
    $LUpdate = 1.6
    EndIf
    If Guictrlread($CheckSepSchild) = 1 Then
    $SUpdate = 1.4
    EndIf
    If Guictrlread($CheckPromSchild) = 1 Then
    $SUpdate = 1.2
    EndIf
    If Guictrlread ($CheckSepSchild) = 1 and Guictrlread($CheckPromSchild) = 1 Then
    MsgBox(0,"","Seprom + Promerium gleichzeitig, das ist nicht möglich! Es wurde Seprom ausgewählt.")
    $SUpdate = 1.4
    EndIf
    $MultiplikatorHP = 1 * $BoostHP
    $MultiplikatorSh = 1 * $BoostSh * $SUpdate * $SUpgrades * $Schilddichte
    $MultiplikatorDmg =1 * $Lasermunition * $BoostDmg * $KGJ * $LUpdate * $Lupgrades
    GUICtrlSetData($MultiHP,$MultiplikatorHP)
    GUICtrlSetData($MultiSchild,$MultiplikatorSh)
    GUICtrlSetData($MultiDmg,$MultiplikatorDmg)
    If Guictrlread($CheckPSHP) = 1 Then
    $Huelleplus = 50000
    EndIf
    ;======================================================================
    ;DUpgrades nicht vergessen einzurechnen in Spielergrunddmg und drohnenberechnung!
    ;========================================================== Spieler 2
    ;===================================
    ;== Schild
    If Guictrlread($Sp2CheckHerc) = 1 Then
    $Herc151 = 1.35
    Else
    $Herc151 = 1.2
    EndIf
    If Guictrlread($Sp2CheckHerz) = 1 Then
    $Herz151 = 1.15
    EndIf
    If Guictrlread($Sp2Check10Schild) = 1 Then
    $Design101 = 1.1
    EndIf
    If Guictrlread($CheckUpgradesDrohnen) = 1 Then
    $DUpgradesS = 1.15
    EndIf
    GUICtrlSetData($Sp22Schild,round(((GUIctrlread($Sp2SchiffSchilde)*10000+(Guictrlread($Sp2DrohnenSchilde)*10000*$Herc151*$DUpgradesS))*($MultiplikatorSh)*$Herz151*$Design101),1))
    ;===================================
    ;== Schaden
    If Guictrlread($Sp2CheckHavoc) = 1 Then
    $Havoc101 = 1.2
    Else
    $Havoc101 = 1.1
    EndIf
    If Guictrlread($Sp2CheckHerz) = 1 Then
    $Herz951 = 0.95
    EndIf
    If Guictrlread($Sp2Check5Dmg) = 1 Then
    $Design51 = 1.05
    EndIf
    If Guictrlread($Sp2Check7Dmg) = 1 Then
    $Design71 = 1.07
    EndIf
    If Guictrlread($CheckUpgradesDrohnen) = 1 Then
    $DUpgradesL = 1.06
    EndIf
    If Guictrlread($Sp2CheckZange) = 1 Then
    $Zange031 = 1.03
    EndIf
    ;Raketen
    $Raketendmg = 0
    If Guictrlread($CheckRaketen1) = 1 Then
    $Raketenplus = 1.2
    Else
    $Raketenplus = 1
    EndIf
    $Raketenboost = 1 * $BoostDmg * $Raketenplus * $Design71 * $Design51 * $Zange031 * $Herz951
    If Guictrlread($CheckRaketen2) = 1 Then
    $Raketendmg = 1/3 * 6000 * $Raketenboost
    EndIf
    If Guictrlread($CheckPremium) = 1 Then
    $Raketendmg = 2 * $Raketendmg
    EndIf
    If Guictrlread($CheckRaketen3) = 1 Then
    $Raketendmg = $Raketendmg + ((1/5)* 20000 * $Raketenboost)
    EndIf
    GUICtrlSetData($Sp22Dmg,round(((GUIctrlread($Sp2SchiffLaser)*$DamageLaser+(Guictrlread($Sp2DrohnenLaser)*$DamageLaser*$Havoc101*$DUpgradesL))*($MultiplikatorDmg)*$Herz951*$Zange031*$Design51*$Design71+$Raketendmg),1))
    ;===================================
    ;2. umrechnen
    ;3. in Inputs ausgeben
    MsgBox(0,"","Konfigurationen 2 aktualisiert.")
    $Set2 = 1
    EndFunc
    Func _Analyse21 ()
    ;Reset
    $DamageLaser = 200 * Guictrlread($Treffer) / 100
    GUICtrlSetData($Sp22Rest,0)
    GUICtrlSetData($Sp2Rest,0)
    GUICtrlSetData($Sp1Rest,0)
    GUICtrlSetData($Sp12Rest,0)
    $MultiplikatorHP = 1
    $MultiplikatorSh = 1
    $MultiplikatorDmg =1
    $Lasermunition = 1
    $BoostHP = 1
    $BoostSh = 1
    $BoostDmg = 1
    $KGJ = 1
    $Schilddichte = 1
    $SUpdate = 1
    $LUpdate = 1
    $LUpgrades = 1
    $SUpgrades = 1
    $Huelleplus = 0
    ;===== Spieler
    ;HP
    $Herc20 = 1
    $Herz20 = 1
    $Design20 = 1
    $Herc201 = 1
    $Herz201 = 1
    $Design201 = 1
    ;Schild
    $Herc15 = 1.2
    $Herz15 = 1
    $Design10 = 1
    $DUpgradesS = 1
    $Herc151 = 1.2
    $Herz151 = 1
    $Design101 = 1
    ;Schaden
    $Havoc10 = 1.1
    $Herz95 = 1
    $Design5 = 1
    $Design7 = 1
    $DUpgradesL = 1
    $Zange03 = 1
    $Havoc101 = 1.1
    $Herz951 = 1
    $Design51 = 1
    $Design71 = 1
    $Zange031 = 1
    ;1. Auslesen und Variablen verändern
    ;Beide
    if Guictrlread($10HPback) = 1 then
    $HP10plus = 0.1
    Else
    $HP10plus = 0
    EndIf
    If Guictrlread($Checkx5x6) = 1 Then
    $Lasermunition = 4
    EndIf
    If Guictrlread($Checkx4) = 1 Then
    $Lasermunition = 4
    EndIf
    If Guictrlread($Checkx6) = 1 Then
    $Lasermunition = (3*4+1*6)/4
    EndIf
    If Guictrlread($Checkx5) = 1 Then
    $Lasermunition = 4
    EndIf
    If Guictrlread($CheckHPBooster) = 1 Then
    $BoostHP = 1.1
    EndIf
    If Guictrlread($CheckHPPro) = 1 Then
    $BoostHP = 1.1
    EndIf
    If Guictrlread($CheckHPBooster) = 1 and Guictrlread($CheckHPPro) = 1 Then
    $BoostHP = 1.2
    EndIf
    If Guictrlread($CheckShBooster) = 1 Then
    $BoostSh = 1.25
    EndIf
    If Guictrlread($CheckShPro) = 1 Then
    $BoostSh = 1.25
    EndIf
    If Guictrlread($CheckShBooster) = 1 and Guictrlread($CheckShPro) = 1 Then
    $BoostSh = 1.5
    EndIf
    If Guictrlread($CheckDmgBooster) = 1 Then
    $BoostDmg = 1.1
    EndIf
    If Guictrlread($CheckDmgPro) = 1 Then
    $BoostDmg = 1.1
    EndIf
    If Guictrlread($CheckDmgBooster) = 1 and Guictrlread($CheckDmgPro) = 1 Then
    $BoostDmg = 1.2
    EndIf
    If Guictrlread($CheckKappaBooster) = 1 Then
    $BoostHP = $BoostHP + 0.05
    $BoostSh = $BoostSh + 0.05
    $BoostDmg = $BoostDmg + 0.05
    EndIf
    If Guictrlread($CheckPSDmg) = 1 Then
    $KGJ = 1.12
    EndIf
    If Guictrlread($CheckPSSchild) = 1 Then
    $Schilddichte = 1.25
    EndIf
    If Guictrlread($CheckUpgradesLaser) = 1 Then
    $LUpgrades = 1.06
    EndIf
    If Guictrlread($CheckupgradesSchilde) = 1 Then
    $SUpgrades = 1.15
    EndIf
    If Guictrlread($CheckSepLaser) = 1 Then
    $LUpdate = 1.6
    EndIf
    If Guictrlread($CheckPromLaser) = 1 Then
    $LUpdate = 1.3
    EndIf
    If Guictrlread($CheckSepLaser) = 1 and Guictrlread($CheckPromLaser) = 1 Then
    MsgBox(0,"","Seprom + Promerium gleichzeitig, das ist nicht möglich! Es wurde Seprom ausgewählt.")
    $LUpdate = 1.6
    EndIf
    If Guictrlread($CheckSepSchild) = 1 Then
    $SUpdate = 1.4
    EndIf
    If Guictrlread($CheckPromSchild) = 1 Then
    $SUpdate = 1.2
    EndIf
    If Guictrlread ($CheckSepSchild) = 1 and Guictrlread($CheckPromSchild) = 1 Then
    MsgBox(0,"","Seprom + Promerium gleichzeitig, das ist nicht möglich! Es wurde Seprom ausgewählt.")
    $SUpdate = 1.4
    EndIf
    $MultiplikatorHP = 1 * $BoostHP
    $MultiplikatorSh = 1 * $BoostSh * $SUpdate * $SUpgrades * $Schilddichte
    $MultiplikatorDmg =1 * $Lasermunition * $BoostDmg * $KGJ * $LUpdate * $Lupgrades
    GUICtrlSetData($MultiHP,$MultiplikatorHP)
    GUICtrlSetData($MultiSchild,$MultiplikatorSh)
    GUICtrlSetData($MultiDmg,$MultiplikatorDmg)
    If Guictrlread($CheckPSHP) = 1 Then
    $Huelleplus = 50000
    EndIf
    ;======================================================================
    ;DUpgrades nicht vergessen einzurechnen in Spielergrunddmg und drohnenberechnung!
    ;========================================================== Spieler 2
    ;== HP
    If Guictrlread($Sp2CheckHerc) = 1 Then
    $Herc201 = 1.2
    EndIf
    If Guictrlread($Sp2CheckHerz) = 1 Then
    $Herz201 = 1.2
    EndIf
    If Guictrlread($Sp2Check20HP) = 1 Then
    $Design201 = 1.2
    EndIf
    GUICtrlSetData($Sp2HP,(Guictrlread($Sp2GrundHP)+$Huelleplus)*$MultiplikatorHP*$Herc201*$Herz201*$Design201)
    ;===================================
    ;== Schild
    If Guictrlread($Sp2CheckHerc) = 1 Then
    $Herc151 = 1.35
    Else
    $Herc151 = 1.2
    EndIf
    If Guictrlread($Sp2CheckHerz) = 1 Then
    $Herz151 = 1.15
    EndIf
    If Guictrlread($Sp2Check10Schild) = 1 Then
    $Design101 = 1.1
    EndIf
    If Guictrlread($CheckUpgradesDrohnen) = 1 Then
    $DUpgradesS = 1.15
    EndIf
    GUICtrlSetData($Sp2Schild,round(((GUIctrlread($Sp2SchiffSchilde)*10000+(Guictrlread($Sp2DrohnenSchilde)*10000*$Herc151*$DUpgradesS))*$MultiplikatorSh*$Herz151*$Design101),1))
    ;===================================
    ;== Schaden
    If Guictrlread($Sp2CheckHavoc) = 1 Then
    $Havoc101 = 1.2
    Else
    $Havoc101 = 1.1
    EndIf
    If Guictrlread($Sp2CheckHerz) = 1 Then
    $Herz951 = 0.95
    EndIf
    If Guictrlread($Sp2Check5Dmg) = 1 Then
    $Design51 = 1.05
    EndIf
    If Guictrlread($Sp2Check7Dmg) = 1 Then
    $Design71 = 1.07
    EndIf
    If Guictrlread($CheckUpgradesDrohnen) = 1 Then
    $DUpgradesL = 1.06
    EndIf
    If Guictrlread($Sp2CheckZange) = 1 Then
    $Zange031 = 1.03
    EndIf
    ;Raketen
    $Raketendmg = 0
    If Guictrlread($CheckRaketen1) = 1 Then
    $Raketenplus = 1.2
    Else
    $Raketenplus = 1
    EndIf
    $Raketenboost = 1 * $BoostDmg * $Raketenplus * $Design71 * $Design51 * $Zange031 * $Herz951
    If Guictrlread($CheckRaketen2) = 1 Then
    $Raketendmg = 1/3 * 6000 * $Raketenboost
    EndIf
    If Guictrlread($CheckPremium) = 1 Then
    $Raketendmg = 2 * $Raketendmg
    EndIf
    If Guictrlread($CheckRaketen3) = 1 Then
    $Raketendmg = $Raketendmg + ((1/5)* 20000 * $Raketenboost)
    EndIf
    GUICtrlSetData($Sp2Dmg,round(((GUIctrlread($Sp2SchiffLaser)*$DamageLaser+(Guictrlread($Sp2DrohnenLaser)*$DamageLaser*$Havoc101*$DUpgradesL))*($MultiplikatorDmg)*$Herz951*$Zange031*$Design51*$Design71+$Raketendmg),1))
    ;===================================
    ;2. umrechnen
    ;3. in Inputs ausgeben
    MsgBox(0,"","Konfigurationen 1 aktualisiert.")
    $Set1 = 1
    EndFunc
    Func _Pause ()
    MsgBox(0,"Feiges Huhn...","...der Kampf wurde gestoppt")
    EndFunc
    Func _Exit ()
    Exit
    EndFunc
     
    Zuletzt bearbeitet: 7 Mai 2016
  17. Яyûû

    Яyûû User

    Moin moin!

    Es ist wirklich schön zu sehen, dass sich auch noch andere Spieler mit Konfig Simulationen und ähnlichen beschäftigen und beschäftigt haben. Ich habe damals selbst, noch während der Schulzeit, ein wenig mit AutoIT herumgespielt und versucht einen KonfigRechner zu basteln. War allerdings extrem hard gecodet, was dementsprechend nicht soo schön aussah. Muss sagen, dass das programmieren mit Java durch und durch entspannter ist.. Wobei ich glaube, dass AutoIT eine einfache Scriptsprache ist und demnach natürlich nicht so komplex. Ich persönlich freue mich schon auf den Teil mit der Informationssuche per Chatbot.. Aber ersma müssen wir uns mit der GUI prügeln die meist nicht so bock hat wie wir xD Ich lade morgen ma nen Screenshot hoch hier in diesem Beitrag^^

    Ich werde mir später mal den Quellcode durchlesen, bin noch nicht zu gekommen

    [​IMG]

    Warum haben wir das geändert?
    Naja... Leider hat sich jedes mal beim über die Skills gehen die Größe des Textfeldes geändert. Ist nicht soo angenehm.. Wir arbeiten gerade daran das Skilltreefenster anzupassen. Leider bin ich kein wirklicher GUI Experte, sodass ich ein wenig herumprobieren muss, damit das ein wenig hübscher und angenehmer aussieht.

    Zum Quellcode, hab mir den Großteil durchgelesen, kann verstehen, dass es so lange gedauert hat xD

    Grüße
    Ryuu
     
    Zuletzt bearbeitet: 13 Mai 2016
  18. Ich weiß nicht ob du es schon umgeändert hast, aber du musst die hp des goliaths auf 256.000 stellen. Ansonsten sieht der Rechner sehr ordentlich aus.
     
    Яyûû gefällt dies.
  19. Яyûû

    Яyûû User

    Oh, da hat sich wohl ein Zahlendreher eingeschlichen. Habs eben schnell geändert :)

    Moin Moin,
    Erst vor wenigen Tagen gab es in DO ein größeres Hangarupdate, welches Designs mit Schiffen gleichsetzt. Dies hat uns einiges an Arbeit erspart, aber leider müssen wir die allg. die Raumschiffe die wir modelliert haben zum Großteil umprogrammieren. Dadurch ist ein Haufen an Arbeit angefallen, den wir in Zukunft aber bewältigt kriegen.
    Als Zusatz muss ich leider mitteilen, dass ich mit DO aufgehört habe. Gründe kann ich bei Nachfrage nennen, jedoch liegt dies nicht am Spiel an sich.

    Wie geht es mit dem Projekt weiter?
    Es wird wie vorher weitergeführt. Aktuell mach der Skilltree noch einige Schwierigkeiten mit der GUI, was jedoch nicht schwerwiegend ist. Außerdem, wie bereits erwähnt, passen wir das Programm ein wenig an den neuen Hangar an. Dies kann einige Zeit in Anspruch nehmen, da die Änderungen weitreichender sind als vielleicht gedacht.

    Warum weitrechend?
    Nun, bisher war der Rechner so programmiert, dass jedes Schiff immer ein Design hatte (Ohne Design, besaß das Schiff das Default-Design). Nun hat sich einiges geändert, nun ist jedes Design, welches Bonis gab, ein eigenes Schiff. Damit fällt der ganze Designkram weg. Was bedeutet, dass alle Designeigenschaften in das Raumschiff eingearbeitet werden müssen. In der Schadensberechnung, muss nicht mehr das Design abgefragt werden, sondern einfach einige Grundeigenschaften des Raumschiffes.

    Also dann,
    Einen schönen Tag

    Weitere Informationen folgen.

    Alle Schiffe können nun Designeigenschaften haben, wie in dem Hangarupdate. Man hat das geschmerzt so viel Code einfach zu löschen xD
     
    Zuletzt bearbeitet: 3 Juni 2016
  20. Яyûû

    Яyûû User

    Moin moin,

    Als kleine Erweiterung, welche nicht viel am Programm ändert, wurde eine Logfunktion eingebaut. Diese soll helfen um, falls diese gefunden werden, Bugs und andere Fehler leichter zu beheben. Diese kann natürlich ausgeschaltet werden, wenn man nicht unbedingt Lust hat, dass das Programm mit schreibt, was man gerade in diesem Programm so treibt. Diese Einstellung wird bei Fertigstellung aktiviert sein. Erklärungen u.ä. werden im README stehen.

    So sieht ein Logeintrag aus:

    Code:
    ###########14/06/2016 11:05:46#########
    
    Userproperties:
    OS: Windows 10 ver: 10.0
    Screenresolution: 1920.0x1280.0
    C:\Users\Patrick
    Java version: 1.8.0_65
    x86
    ###############################
    Load Skilltreemanager...
    Initiate Skilltree:
    Load C:\Users\Patrick\Documents\test_install\skills.txt
    skills.txt was loaded!
    Finished in: 4016 ms
    Useraction: Oeffne Schiffsauswahl
    Loading dolib...
    Reading in: C:\Users\Patrick\Documents\test_install\drones.txt
    Reading Data: DRONES
    Reading: Iris
    Reading: Flax
    Reading: Zeus
    Reading: Apis
    Reading in: C:\Users\Patrick\Documents\test_install\dronedesigns.txt
    Reading Data: DRONEDESIGNS
    Reading: Havoc
    Reading: Hercules
    Reading: Silver Skull
    Reading: Silver Reaper
    Reading: Silver Robo-bat
    Reading: Epic Demon
    Reading in: C:\Users\Patrick\Documents\test_install\events.txt
    Reading Data: EVENTS
    Reading: Event
    Reading in: C:\Users\Patrick\Documents\test_install\shields.txt
    Reading Data: SHIELDS
    Reading: SG3N-A01
    Reading: SG3N-A02
    Reading: SG3N-B01
    Reading: SG3N-A03
    Reading: SG3N-B02
    Reading in: C:\Users\Patrick\Documents\test_install\speedgen.txt
    Reading Data: SPEEDGEN
    Reading: G3N-1010
    Reading: G3N-2010
    Reading: G3N-3210
    Reading: G3N-3310
    Reading: G3N-6900
    Reading: G3N-7900
    Reading in: C:\Users\Patrick\Documents\test_install\weapons.txt
    Reading Data: WEAPONS
    Reading: LF-4
    Reading: LF-3
    Reading in: C:\Users\Patrick\Documents\test_install\spaceships.txt
    Reading Data: SPACESHIPS
    Reading: Goliath
    Reading: Vengeance
    Reading: Bigboy
    Reading: Phoenix
    Reading: Leonov
    Reading: Liberator
    Reading: Piranha
    Reading: Nostromo
    Reading: Aegis
    Reading: Citadel
    Reading: Spearhead
    Loaded collections in: 1340 ms
    Useraction: Oeffne Configrechner mit: Nostromo
    Loading Iris
    Loading Iris
    Loading Iris
    Loading Iris
    Loading Iris
    Loading Iris
    Loading Iris
    Loading Iris
    Loading Iris
    Loading Iris
    Loading LF-3

    So nach einiger Zeit ist nun auch die Schiffsauswahl fertig, in welcher auch die Anzahl der Drohnen eingestellt werden können. Eigentlich soll noch irgendwo ein Bild von dem ausgewählten Schiff hin, weswegen das hier die noch nicht fertige GUI ist. Der Hintergrund ist nur testweise da. Hab beim Screenshot festgestellt, dass ich die Preise noch nicht fertig angepasst habe. Genauso bin ich mir bewusst, dass unter Piranha ich ein "r" im Schiffstyp vergessen habe. Ein wenig Funktionalität fehlt noch, kommt aber die Tage noch hinzu. (zB wenn Irise+Flaxe >8 sind, dass der Nutzer per farblicher Markierung hingewiesen wird, dass da was falsch ist). Gefällt euch die GUI so? Da das nur n kleines Zwischenupdate war und ich nicht noch einen Beitrag dazutun. x)
    Gute Nacht!
    [​IMG]


    Nun wurde die Schiffsauswahl mehr oder wenig fertiggestellt, mit den Funktionen die diese tatsächlich bieten kann. Es kann aber gut sein, dass wir die Drohnen Level und Upgrades hinzufügen werden. Diese würden dann allerdings für jede Drohne gleich sein, da es sonst unübersichtlich werden würde. Preise sind noch nicht aktuell und ich wollte eben nicht nen neuen Acc erstellen nur um die Preise zu sehen. Außerdem lassen sich im Forum nur die alten Zahlen und Informationen finden.

    [​IMG]
     
    Zuletzt bearbeitet: 16 Juni 2016