Manuell verändern kann ich die Größe dieser Reiter also nicht, nehme ich an. Nunja ist natürlich auch nicht unbedingt wichtig. Sieht nur gerad etwas doof aus, die zwei kleinen Reiterchen in einem übergroßen Fenster. Aber gut, ist wohl das letzte, was mich stören sollte. :D
killerzwerk, dich hab ich dann wohl etwas missverstanden. Sollte die neueste Dll und Constants sein. Vorgestern kam da ja ein kleines Update, hab die Dateien direkt gesaugt und eingebunden. Gestern übrigens habe ich es tatsächlich hinbekommen, ein ID-Kit von nem Außenposten-Kaufmann zu ergattern. Wieso, versteh ich aber immernochnicht. Neue Dll und Constants, überflüssige Sleepzeiten, CA_BuyIdKit durch CA_BuyItem getauscht, Kauffunktion vom Rest entbunden und seperat laufen lassen, Inventar leergeräumt und übermäßig viel Gold auf den Char geschaufelt, ... . Was man nicht aus Verzweiflung alles versucht ... Aber irgendwas davon muss es wohl gewesen sein. An nem summoned Kaufmann allerdings hab ich das jetzt noch nicht probiert. Ich bin jetzt erstmal stolz, dass es einmal geklappt hat. Ich glaub, sollte das bei nem erneuten Test nicht mehr funktionieren, fliegt der Rechner aus dem Fenster und ich rühr das Script nie mehr an. :D
Übrigens hat mein Charakter seit den neuesten Files aufgehört, ständig zurück in den Außenposten zu reisen, ohne Gegnerkontakt gehabt zu haben. Ob das jetzt wirklich an der Dll oder den Constants liegt, kann ich natürlich nicht sagen. Vielleicht hat auch irgendwas in meinem Programm die Sache instabil gemacht. Jedenfalls reist er nun nurnoch dann zurück, wenn er auch gestorben ist. Also so, wie er es soll. :awesome:
Das Script steht jetzt auch soweit. Läuft grad im Hintergrund. :D Ein paar kleine Dinge müssen noch verbessert werden, aber darum kümmer ich mich dann später. Mich interessiert grad viel mehr mein GUI. Daran nämlich knaps ich grad ein wenig rum ...
Es geht um folgendes: Wenn ich mir Scripte anderer Menschen ansehe, haben die unter ihrem GUI immer etwas wie folgendes stehen:
Code:
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $Start
x()
y()
z()
EndSwitch
WEnd
Mein Problem ist, dass ich mein Script einfach nicht in diese Form pressen kann. Es gibt zuviele Funktionen, die aufgerufen werden müssen. Stirbt der Charakter beispielsweise, reist er zurück und fährt an einer anderen Stelle fort, als der, an der er weitermachen würde, wäre er nicht gestorben. Ich habe versucht, das mit jeder Menge If ... Then und Do ... Until oder While beziehungen zu machen. Aber das ist schlicht unmöglich ... Ich handhabe das momentan so, dass ich beispielsweise im Falle des sterbens die Funktion aufrufen lasse, die das weitere vorgehen beinhaltet und aus dieser Funktion heraus die nächste aufrufen lasse. Ganz abgesehn davon, dass das übersichtlicher ist, die Fehlersuche und nachvollziehbarkeit vereinfacht, habe ich jetzt beinah einen Tag mit dem Versucht zugebracht, das Programm umzuschreiben, um es wie oben dargestellt, abzubilden. Wie ich schon sagte, ohne Erfolg.
Jetzt kann man sich fragen, wieso ichs denn umschreiben will, wenn es doch soweit funktioniert. Die Sache ist, dass ich in meinem GUI unter anderem einen Close-Button und die Funktion Disable Graphic Rendering verwenden. Nun ist es aber so, dass der GUI nichtmehr reagiert, sobald er sich in Unterprogrammen befindet, die nich tin dem GUI eingebunden sind. Wenn mein GUI also so aussieht:
Code:
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $Start
Start()
EndSwitch
WEnd
und ich aus der Funktion (Start) die nächste und nächste und nächste Funktion abrufen lasse. Wenn ich dann im GUI folgendes einpflanze:
dann kann ich den Close Button noch so misshandeln, und der GUI wird sich trotzdem nicht schließen. Höchstens, indem ich das Script in der Systemtrayleiste beende ... Das ist aber so nicht gewünscht. Ich würde das Program gern zu jeder Zeit, oder doch zumindest in Etappen schließen können. Auch soll das Graphic Rendering frei aktivier und deaktivierbar bleiben. Und nicht nur solang, bis ich den Start-Button gedrückt habe ...
Ist es also irgendwie möglich, eine andere Verbindung zu beispielsweise meinem Close Button herzustellen, sodass das Programm beendet wird, während es läuft? Zum Beispiel könnte ich den Button als Variable auffassen und in von mir definierten Abständen abfragen, ob diese Variable grad True oder False ist und dementsprechend weiter agieren. Aber wie mein Programm dazu bringen, dass es auch registriert, dass ich den Close Button gedrückt habe?
Eine andere Möglichkeit wäre es ja, am Ende einer Funktion zu einer anderen zurückspringen zu können. Und zwar an eine bestimmte Stelle im GUI. Denn wenn ich zum Beispiel im Todesfall sage, starte die Funktion, herauszurennen, so läuft das Script zwar weiter, aber der GUI bleibt "blind" für meine Eingaben. Ist es also möglich, flags zu setzen an bestimmte, definierte Stellen im Programmcode?
Schwer zu erklären das Ganze, ich hoffe, man kann mir einigermaßen folgen ... Im Grunde steckt hinter allem nur die Frage, wie ich meinen GUI offen halte, sodass er aktivitäten des Close-Buttons und aderer registriert ...