Beiträge von stayawayknight
-
-
Und stayawayknight ich habe mir zig Tutorials im Internet und auf AutoIT.com durchgelesen und mir alles angeschaut was ich zu Variablen und der Gui Oberfläche brauche
Ich will dich ja nicht persönlich angreifen, aber wenn dies der Fall wäre, dann hättest du oben vermutlich (besseren) Quellcode posten können...
Sofern du die Grundprinzipien nicht wirklich begriffen/umgesetzt hast, brauchst du an deinem Game gar nicht mehr weitermachen - aus dem obigen Grund hat dein jetziger Quellcode keine Zukunft, da du langfristig immer das max. Rekursionlevel übersteigen wirst.Außerdem lässt es sich gar nicht ausführen, ohne sämtliche Warnungen und Fehler ignorieren zu lassen.
Wenn du schon soweit bist, dann würde ich mich jetzt dringend in den Quellcode von Protex einlesen, mit diesem lässt sich gut arbeiten.Klicke mal bei deinem Skript unüberlegt einfach ein paar Buttons - fast immer stürzt das Programm nach ein paar Klicks ab.
Solange du diese grundlegenden Fehler im Code nicht ausgemerzt hast, brauchst du mit einem Inventar etc. eigentlich gar nicht anfangen.Dieses könntest du übrigens so umsetzen:
-Jede Itemsorte bekommt eine bestimmte Zahl/String, an dem die Sorte eindeutig identifiziert werden kann
-Deklariere am Anfang ein Array mit einer bestmmten Größe (je nach dem, wie groß das Inventar werden soll)
-Fülle die einzelnen Elemente mit den jeweiligen entsprechenden Integern/Strings (s. oben) (je nach dem, was im Inventar vorhanden ist)
-Rest des Arrays mit 0 füllen.
-Bei dem Fund enes Items suchst du nach dem nächsten freien (=0) Element und füllst dieses.
-Beim Einsetzen suchst du im Array nach dem Index, der das entsprechende Item (bzw. Element) enthält und setzst den Inhalt wieder auf 0.Hier ein kleines Beispiel, ist zwar nicht perfekt und ich hätte vermutlich auch auf irgendwelche bereits vorhandenen Arrayfunktionen zurückgreifen können, deren Namen mir entfallen sind...
Beispiel
[autoit]
[/autoit] [autoit][/autoit] [autoit]
;Jede Zahl im Array steht für eine Itemsorte
Dim $iInventar[10]For $i = 0 To UBound($iInventar) - 1
[/autoit] [autoit][/autoit] [autoit]
$iInventar[$i] = 0
Next;Oben: Inventar erstellen
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]_DisplayInventar() ;Ausgabe des Inventars
[/autoit] [autoit][/autoit] [autoit];Jetzt beispielsweise Fund eines Items, das dann die für den Entwickler verständlichen Zahl "5" trägt.
[/autoit] [autoit][/autoit] [autoit]$iInventar[_GetNextFreeIndex()] = 5
[/autoit] [autoit][/autoit] [autoit]
_DisplayInventar();Ausgabe des Inventars;Fund weitere Items, hier mit den Zahlen 2, 8, 3 und 6 versehen
[/autoit] [autoit][/autoit] [autoit]
$iInventar[_GetNextFreeIndex()] = 2
$iInventar[_GetNextFreeIndex()] = 8
$iInventar[_GetNextFreeIndex()] = 3
$iInventar[_GetNextFreeIndex()] = 6
_DisplayInventar();Ausgabe des Inventars;Ein Item mit der Zahl 3 wird verbraucht und muss aus dem Inventar gelöscht werden
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
$iInventar[_GetFirstItemIndex(3)] = 0 ;Wird wieder auf Null gesetzt
_DisplayInventar();Ausgabe des InventarsFunc _GetFirstItemIndex($iItemNumber);Gibt den ersten Index des Arrays aus, dessen Element das Item enthält
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
For $i = 0 To UBound($iInventar) - 1
If $iInventar[$i] = $iItemNumber Then
Return $i
EndIf
Next
EndFunc ;==>_GetFirstItemIndexFunc _GetNextFreeIndex() ;Ermittelt die nächste freie Stelle im Inventar
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
For $i = 0 To UBound($iInventar) - 1
If $iInventar[$i] = 0 Then
Return $i
EndIf
Next
EndFunc ;==>_GetNextFreeIndexFunc _DisplayInventar()
[/autoit] [autoit][/autoit] [autoit][/autoit]
ConsoleWrite(@CRLF)
For $i = 0 To UBound($iInventar) - 1
ConsoleWrite("Inventaritem Nr. " & $i & ": " & $iInventar[$i] & @CRLF)
Next
EndFunc ;==>_DisplayInventar -
Hier, von misterspeed:
Klick mich :-) -
Hallo Zusammen,
Ich habe einen fertiges Programm (*.exe) mit AutoIt erstellt und möchte dem User des Programms eine Möglichkeit bieten, ein eigenes Skript in meinem Programm zu integrieren.
Wäre dies so eigentlich möglich?Vielen Dank für eure Hilfe!
Gruß
Homer J. S.Indirekt schon. Entweder lässt du das zu integrierende Skript zur Laufzeit des anderen Skripts durch den AutoIt-Compiler laufen, oder du erstellst aus dem zu integrierenden Code eine Exe-Datei und lässt diese dann ausführen.
Edit: Oder eben Marthogs Variante

-
Hallo,
ich würde dir erstmal raten dich vielleicht doch noch mal mit dem einen oder anderen AutoIt-Tutorial auseinanderzusetzen, oder mit Peethebees Buch (siehe im Portal unter "Wichtige Links").
Dein Skript ist leider, wenn da was größeres draus werden soll, soweit ziemlich unbrauchbar (und in dieser Form auch nicht lauffähig!).
[autoit]
Du hangelst dich immer mit dem selben Funktionsaufbau, nämlich eine Endlosschleife, die nie unterbrochen wird, von Funktion zu Funktion, in denen du wiederum in eine Endlosschleife einsteigst. So erreichst du langfristig genau das, was auch hier (nur zeitlich etwas schneller) geschieht:
[/autoit][autoit][/autoit][autoit]
fkt()Func fkt()
[/autoit]
While 1
fkt()
Sleep(10)
WEnd
EndFunc ;==>fkt--> Eine Übersteigung des maximalen Rekurionslevels (das bedeutet grob gesagt, du steckst zu viele Dinge ineinander).
Lies dir lieber noch ein paar Erklärungen zu AutoIt, dem Gui-Management etc. durch. EIne Gui mit Koda machen ist die eine Sache, aber die erzeugten Elemente richtig anzusteueren, die andere, wesentlich schwierigere Sache. Wenn du noch etwas in Erklärungen stöberst und dich dann auch mit Variablen und Arrays auskennst wirst du dir deine obige Frage wohl selbst beantworten können.
Gruß stay
PS: Das ist echt nicht böse gemeint!
-
Hi,
falls es dir nur im die Funktionalität einer Dll geht, kannst du dir ja eine Dateiendung ausdenken,
zum Beispiel (*.dae -- Dynamic AutoIt Extension) und damit Code aus der Datei
in die Haupt-Exe "einzuspielen".Also sowas wie ein Plugin-System.
mfg
DominikWobei dieser dann ja eigentlich erst wieder compilt werden müsste; du müsstest also zusätzlich zu der Exe-Datei deines Programmes also auch noch den Compiler mit dir rumschleppen...
-
Hallo,
das hier hat zwar nicht direkt etwas mit deiner Frage zu tun, aber ich würde auch aufpassen, das der Anbieter des FTP-Servers das Hosting und Verwahren der Bilder erlaubt. Viele Anbieter haben ein Problem damit, wenn du ihn zur direkten Dateispeicherung benutzt (da gab es auch einen Fachbegriff, der mir gerade nicht einfallen will).
Gruß stay
-
Vielleicht hilft dir auch die UDF von eukalyptus weiter: Exchange Variables UDF Beta
-
Nochmals danke für eure Bemühungen, aber mein Problem hat sich gerade gelöst

Habe nach etlichem Stöbern dank dem Eclipseforum-Link gemerkt, dass vergangenen Juni wohl Eclipse Indigo releast wurde - mit integriertem Window Builder (der etwas Ähnlichkeit mit Koda hat)
Funktioniert alles soweit wunderbar
Danke für eure Bemühungen! -
Hi,
ich glaube in diesem Teil des Forums bist du falsch, versuche es doch mal im Skripte-Forum

-
Hallo,
Ich würde dann aber eher
[autoit]InetGetSize
[/autoit]bevorzugen.
-
Naja, mir geht es halt hauptsächlich darum, das alles in einem ist. Ich brauche das C++ dann eigentlich auch nur, um Dlls zu erstellen o.ä.
Ich hätte das eigentlich alles schon ganz gern in einem Programm - der Übersichtleichkeit halber. -
Hallo,
ich war hier leider längere Zeit nicht mehr wirklich aktiv, habe nun aber eine allgemeine Frage und hoffe, dass ihr sie mir trotzdem beantwortet

Mein Ziel ist es, auf meinem Laptop hier (32 Bit, Win7), eine Eclipseversion zu installieren, die folgende Dinge enthalten/können soll:
- Java Entwicklungsumgebung
- Java Gui-Builder (der nennt sich für Eclipse meines Wissens nach "Visual Editor")
- PHP+HTML+CSS+JS Entwicklungsumgebung (so allgemeines Webzeug)
- C++/C EntwicklungsumgebungDas alles wenn möglich in einer Eclipseversion (also nur ein Programm, dass ich starten muss) und einer Workbench.
Das alles mit Syntax-Highlighting und was so dazugehört.
Nun lade ich mir seit geraumer Zeit schon alle möglichen Plug-ins und Eclipseversionen herunter, lasse Google auf Hochtouren laufen - aber schaffe es nicht, dass hinzubekommen.Ich wäre euch sehr dankbar, wenn mir jemand sagen könnte, welche Eclipseversion und welche entsprechenden Plugins ich wie dafür installieren muss.
Bei allem was ich tue, spuckt Eclipse irgendwelche Fehlermeldungen aus oder das installierte Zeug funktioniert nicht wirklich so, wie ich es gerne hätte (beispielsweise konnte ich C++ Projekte erstellen, aber entsprechenden Sourcecode nicht ausführen, von syntaktischem Highlighting ganz zu schweigen).Ich hoffe ihr könnt mir irgendwie helfen!
Viele Grüße und Dank im Vorraus,
stay -
-
Hi,
erkenne folgendes Problem:
[autoit]
Das Array $array wird nie neu überschrieben, bzw. sein Inhalt gelöscht.
Mit_ArrayAdd($array,$aResult[0])
[/autoit]
_ArrayAdd($array,"")
For $i = 0 To UBound ($strasse)-1
_ArrayAdd($array,$strasse[$i])
Next
[autoit]
fügst du an dasselbe Array, dass du bereits für die anderen Dateien benutzt, weitere Werte an, die nun einen anderen Index tragen als sie eigentlich tragen sollten.
Da du mitConsoleWrite($array[11] & @CRLF)
[/autoit]
ConsoleWrite($array[14] & @CRLF)
aber nur diesselben Index abfrägst, werden die neuen Inhalte nicht ausgegeben.Also, ein vereinachtes Beispiel:
Bei Datei eins:
[0] Wert A aus Datei 1
[1] Wert B aus Datei 1
[2] Wert C aus Datei 1Nun fügst du für Datei zwei einfach nur weitere Elemente an, als die alten Positionen zu überschreiben (verursacht durch _ArrayAdd)
Die Liste sieht also nun so aus:[0] Wert A aus Datei 1
[1] Wert B aus Datei 1
[2] Wert C aus Datei 1
[3] Wert A aus Datei 2
[4] Wert B aus Datei 2
[5] Wert C aus Datei 2So setzt sich das mit der 3. Datei dann fort:
[0] Wert A aus Datei 1
[1] Wert B aus Datei 1
[2] Wert C aus Datei 1
[3] Wert A aus Datei 2
[4] Wert B aus Datei 2
[5] Wert C aus Datei 2
[6] Wert A aus Datei 3
[7] Wert B aus Datei 3
[8] Wert C aus Datei 3Mit dem hier:
[autoit]ConsoleWrite($array[11] & @CRLF)
[/autoit]
ConsoleWrite($array[14] & @CRLF)
ConsoleWrite($aResult[2] & @CRLF)
ConsoleWrite($_ort[0] & " ")
ConsoleWrite($_ort[1]& @CRLF)
frägst du aber immer nur die ersten Elemente ab - die neuen aus den anderen Dateien werden gar nicht ausgegeben.Lösungsansatz:
[autoit]
Arbeite nicht mit_ArrayAdd
[/autoit]sondern bestimmte die Indices lieber von Hand, sofern du immer die Daten der aktuellen Datei alleine ausgeben möchtest.
[autoit]
Wenn du alle Elemente ausgeben möchtest, solltest du dir ein Konstrukt folgender Art basteln:
[/autoit]
For $i = 0 To Ubound($array) - 1
ConsoleWrite($array[$i] & @CRLF)
Next
(Leider nicht getestet, enthält möglicherweise Fehler aufgrund einer längerer AutoIt-Pause)Ich hoffe, ich habe das Problem richtig erfasst und konnte helfen,
Gruß stay -
Auch von mir alles Gute zum Geburtstag! Mach weiter so und bleib wie du bist

@Chieter Dieter: Ist das Absicht, dass prog@andy's "Artikel" direkt neben "Schlagzeilen" mit Amokläufen, Kinderschändern, Drogen etc. steht?

-
Das ist ja extrem umfangreich (ein neuer Zeilenrekord?)...
Sogar mit Onlinemodus etc. - wie lange hast du dafür gebraucht?
-
-
Bitte mal die Quickdraw.au3 anhängen!
-
Alles Gute zum Geburtstag!