Beiträge von Yjuq
-
-
Gandalf:
Naja, ...
Ich habe auch mit solchen "klick" Programmen angefangen.
Es vermittelt anfangs die Syntax der Funktionen und man lernt schon mal Funktionen die man kennt sinnvoll zu verwenden.
Zudem programmiert er laut seinen Angaben erst seit 2 Tage.So schnell hat man also die Grundlagen nicht drauf (Je nachdem ob schon vor Erfahrung von anderen Programmiersprachen vorhanden ist oder nicht).
Dementsprechend ist das ganze nachvollziehbar.Sirius:
Es ist immer praktisch den Sourcecode mit zu liefern. Nur so können wir dir eine effektive Antwort geben. Es kann nämlich sein, dass du uns was erklärst, aber was komplett anderes meinst. Da hilf der Sourcecode einfach bei dem verstehen deines Problems. Beispielsweise wäre die Verwendung von Variablen / Arrays sinnvoll. Ich habe dir mal ein Beispiel getippt. Falls es noch Fragen geben sollte, kannst du hier einfach nachfragen.Spoiler anzeigen
[autoit];// Mauskoordinaten per linken Maustaste ermitteln und speichern (so ungefähr 5 Koordinaten)
[/autoit] [autoit][/autoit] [autoit]
;// --> Wenn ich das ganze jetzt richtig verstanden habe, willst du die Koordinaten abspeichern,
;// wo du einen linken Mausklick ausführst?;// diese ermittelten Mauskoordinaten dann an einer anderen Stelle im Script verwenden
[/autoit] [autoit][/autoit] [autoit]
;// --> Dafür speicherst du die Koordinaten in Variablen / Arrays. So kannst du diese dann nach
;// bedarf einfach wieder verwenden.;// Für die verwendung von _Ispressed() (Zum ermitteln ob linke Maustatse gedrückt wurde).
[/autoit] [autoit][/autoit] [autoit]
#include <Misc.au3>;// $iCounter -> In dieser Variable wird gezählt, wie oft die linke Maustatse betätigt wurde.
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
;// $aiCoord -> Hier werden später die Koordinaten abgespeichert.
Global $iCounter, $aiCoord[5][2];// Die Schleife wird solange ausgeführt, bis die linke Maustaste 5x betätigt wurde.
[/autoit] [autoit][/autoit] [autoit]
While $iCounter < 5
Sleep(10)
;// Wenn die linke Maustaste gedrückt wurde, dann die Funktion _SaveCoord() ausführen.
If _IsPressed('01') Then _SaveCoord()
WEnd;// Wenn $iCounter die 5 Mausklicks erreicht hat, dann werden die Koordinaten ausgegeben:
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
MsgBox(262144, 'Koordinaten:', 'Klick 1:' & @TAB & 'X -> ' & $aiCoord[0][0] & @TAB & 'Y -> ' & $aiCoord[0][1] & @CRLF & _
'Klick 2:' & @TAB & 'X -> ' & $aiCoord[1][0] & @TAB & 'Y -> ' & $aiCoord[1][1] & @CRLF & _
'Klick 3:' & @TAB & 'X -> ' & $aiCoord[2][0] & @TAB & 'Y -> ' & $aiCoord[2][1] & @CRLF & _
'Klick 4:' & @TAB & 'X -> ' & $aiCoord[3][0] & @TAB & 'Y -> ' & $aiCoord[3][1] & @CRLF & _
'Klick 5:' & @TAB & 'X -> ' & $aiCoord[4][0] & @TAB & 'Y -> ' & $aiCoord[4][1] & @CRLF)Func _SaveCoord()
[/autoit] [autoit][/autoit] [autoit]
;// Schleife solange ausführen, bis die linke Maustatse wieder losgelassen wird.
While _IsPressed('01')
Sleep(10)
WEnd;// Speichern der X Koordinate.
[/autoit] [autoit][/autoit] [autoit]
$aiCoord[$iCounter][0] = MouseGetPos(0)
;// Speichern der Y Koordinate.
$aiCoord[$iCounter][1] = MouseGetPos(1);// $iCounter um eins erhöhen.
[/autoit]
$iCounter += 1
EndFunc -
Zitat
[...] Aber ich halte mich da mal designtechnisch raus, schliesslich bin ich ja noch nicht definitiv dabei [...]
Das sehe ich aber anders! Ich weiß nicht ob da was abgesprochen wurde, aber nach der Liste zur urteilen bist du für die Sounds verantwortlich!?
Siehe hier (Ganz unten):To Do Liste
-
Wenn ich das jetzt richtig verstanden habe, dann liegen diese Texturen einfach übereinander mit verschiedenen Transparenten?
Dann kann man diese ja zuvor laden und dann eine neue Textur aus dem Resultat erstellen. (Beispielsweise mit GDI+)
Diese neue Textur kann man doch dann in Irrlicht verwenden?Damit wäre doch dieses Problem gelöst?
Oder sehe ich das falsch :D? -
Anstatt hier zu jammern kannst ja mal Google beanspruchen

"Grafiker Forum" oder so ähnlich.Habe schon sehr viele gesehen wo auch sehr gute Texturen zusammen gekommen sind.
Eventuell kann man in einer diesen Foren nachfragen ob interesse besteht. -
Hö? Eigentlich müsste dieser Code hier funktionieren:
Spoiler anzeigen
[autoit]#include <GUIConstants.au3>
[/autoit] [autoit][/autoit] [autoit]Opt('GUICloseOnESC', 0)
[/autoit] [autoit][/autoit] [autoit]
Opt('GUIOnEventMode', 1)
Opt('MustDeclareVars', 1)Global Enum $iW, $iH, $iX, $iY
[/autoit] [autoit][/autoit] [autoit]
Global $aiRandom[4], $oIE, $hGUI, $idObj, $aiPos$aiRandom[$iW] = Random(1, 800, 1)
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
$aiRandom[$iH] = Random(1, 600, 1)
$aiRandom[$iX] = Random(0, 800 - $aiRandom[$iW], 1)
$aiRandom[$iY] = Random(0, 600 - $aiRandom[$iH], 1)$oIE = ObjCreate("Shell.Explorer.2")
[/autoit] [autoit][/autoit] [autoit]$hGUI = GUICreate('Example', 800, 600)
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
$idObj = GUICtrlCreateObj($oIE, $aiRandom[$iX], $aiRandom[$iY], $aiRandom[$iW], $aiRandom[$iH])
GUISetOnEvent($GUI_EVENT_CLOSE, '_GUI_EVENT_CLOSE')
GUISetState()$aiPos = ControlGetPos($hGUI, '', $idObj)
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
; # Beachte diesen Codeblock <-- <-- <-- <-- <--
If @error Then
ConsoleWrite(@CRLF & '!> ERROR' & @CRLF & @CRLF)
Exit
EndIf
; # Beachte diesen Codeblock <-- <-- <-- <-- <--
MsgBox(262144, 'Output:', 'X position' & @TAB & $aiRandom[$iX] & ' | ' & $aiPos[$iX] & @CRLF & _
'Y position' & @TAB & $aiRandom[$iY] & ' | ' & $aiPos[$iY] & @CRLF & _
'Width' & @TAB & $aiRandom[$iW] & ' | ' & $aiPos[$iW] & @CRLF & _
'Height' & @TAB & $aiRandom[$iH] & ' | ' & $aiPos[$iH], 10, $hGUI)While Sleep(1000)
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
WEndFunc _GUI_EVENT_CLOSE()
[/autoit]
Exit
EndFuncHmpf, ... Dabei wollte ich dir so ein schönes Beispiel schreiben

Ist das zufällig das Problem was du hast? -
Die Irrlicht Engine ist doch eine 3D Engine.
Zumindest wurde diese speziell dafür angefertigt!
Wieso sollte man diese dann nicht verwenden?
-
Z.B. ControlGetPos() wäre für deine Zwecke anwendbar ...
-
Geeinigt wurde bisher auf:
Zeitreise von der Zukunft bis in die Vergangenheit (Mittelalter)
Aber ob das so fest steht
-
Okay, also kann ich das mit dem ansprechen der Irrlicht.dll direkt lassen.
Dann muss ich doch auf die au3 + der entsprechenden DLL zurück greifen.Dann bedanke ich mich herzlichst! Falls doch jemanden was einfällt, lasst es mich bitte wissen

-
Sorry, leider muss ich euch nochmal in anspruch nehmen ...
Ich hänge immernoch am ersten Tutorial: Tutorial 1: HelloWorldMein derzeitiges Script sieht so aus:
Spoiler anzeigen
[autoit]Opt('MustDeclareVars', 1)
[/autoit] [autoit][/autoit] [autoit]HotKeySet('{ESC}', '_Exit')
[/autoit] [autoit][/autoit] [autoit]Global $hIrrlicht = DllOpen('Irrlicht.dll'), _
[/autoit] [autoit][/autoit] [autoit]
$tdimension2d = DllStructCreate('UINT; UINT'), _
$ptrdeviceGlobal Enum $EDT_NULL, $EDT_SOFTWARE, $EDT_BURNINGSVIDEO, $EDT_DIRECT3D8, $EDT_DIRECT3D9, $EDT_OPENGL, $EDT_COUNT
[/autoit] [autoit][/autoit] [autoit]DllStructSetData($tdimension2d, 1, 640)
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
DllStructSetData($tdimension2d, 2, 480)$ptrdevice = DllCall($hIrrlicht, 'ptr:cdecl', 'createDevice', _
[/autoit] [autoit][/autoit] [autoit]
'UINT', $EDT_DIRECT3D9, _
'ptr', DllStructGetPtr($tdimension2d), _
'UINT', 16, _
'BOOL', False, _
'BOOL', False, _
'BOOL', False, _
'ptr', 0)If @error Then _Exit()
[/autoit] [autoit][/autoit] [autoit]; WinSetTitle('', '', 'Tutorial 1: HelloWorld')
[/autoit] [autoit][/autoit] [autoit]While Sleep(100)
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
WEndFunc _Exit()
[/autoit]
$tdimension2d = 0
DllClose($hIrrlicht)
Exit
EndFuncUnd zwar hänge ich an der Stelle, wo es darum geht den Titel für das Fenster zu setzen. Wie man sieht geht es auch mit WinSetTitle (Zeile 27) aber ich würde es viel lieber über die DLL machen!

Das Problem ist, das dies eine Art Pointer benötigt. Z.B. Des Fensters oder so ähnlich. Sicher bin ich mir aber nicht!
Hier der Link zu setWindowCaption: setWindowCaption
Das ganze ist ein wenig schwer zu erklären, daher habe ich mal einen kurzen C++ ausschnitt abgetippt (Ob der richtig ist, ist jetzt nebensächlich) um euch das zu verdeutlichen wieso es bei mir gerade hängt:
Spoiler anzeigen
Hier können glaube ich nur die C++ experten was dazu sagen. Aber über jede Hilfe wäre ich dankbar!

Diese "device->setWindowCaption()" ist ein Zeiger. Sprich: setWindowCaotion() bezieht sich auf das Objekt device.
Soviel ich darüber weiß!
Leider habe ich keine Idee wie ich das umsetzen kann. Wäre schön wenn ihr mir da weiterhelfen könntet, weil sich das Restliche Tutorial so auf dieses Verfahren bezieht.
-
Okey, vielen Dank

Dann kann ich mich ja jetzt wieder ans Tutorial wagen
-
-
Cool danke

Ne, die Anwendung crasht bei mir net ;PLäuft wie geschmiert

Aber eines solltest du mir noch erklären: DllCall der 2te Parameter. Wioeso ptr:cdecl?
-
Okay, ich versuch mal mit dem Wissen das ganze zu verschlimmbessern

Dank dir
-
Leute, ihr wisst was das heißt:
Haut in die Tasten
-
Hallo, ich will mich mit Irrlicht beschäftigen. Ich weiß das es eine UDF dafür gibt, allerdings liegt dort eine weitere DLL bei, worauf diese UDF zugreift.
Ich selber möchte direkt die Irrlicht.dll verwenden ohne Umwege über den Wrapper.Nun stocke ich aber bei einem Dll Call. Und zwar arbeite ich gerade dieses Tutorial durch: Tutorial 1: HelloWorld
[autoit]
Mein derzeitiger Code sieht so aus:Global $hIrrlicht, $IrrlichtDevice
[/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit]$hIrrlicht = DllOpen('Irrlicht.dll')
[/autoit][autoit][/autoit][autoit]$irrlichtDevice = DllCall($hIrrlicht, 'ptr', 'createDevice', _
[/autoit][autoit][/autoit][autoit]
'E_DRIVER_TYPE', 'EDT_SOFTWARE', _
'dimension2d<u32>', 'dimension2d<u32>(640, 480)', _
'u32', 16, _
'bool', false, _
'bool', false, _
'bool', false, _
'IEventReceiver *', 0)If @error Then MsgBox(0, '', 'Error: ' & @error, 5)
[/autoit][autoit][/autoit][autoit]While 1
[/autoit][autoit][/autoit][autoit]
WEndDllClose($hIrrlicht)
[/autoit]Ich weiß das ich DllCall total falsch verwende, aber bevor ich jetzt darauf näher eingehe solltet ihr euch kurz die Referenz dazu ansehen: createDevice()
Nun sollte ein Fenster erscheinen. Tut's aber nicht. Und zwar sieht man in der Referenz das ein "eigener Datentyp" verwendet wird. Kurz: (ich glaube so heißen die) eine Klasse. Wie kann ich dies nun als "Type" eintragen?
Ich hoffe ihr könnt mir weiterhelfen diesen DllCall so richtig zu stellen, dass dieser die gewünschte Funktion ausführt. Ich rätsel da jetzt schon seit gestern!

€dit:
Weil nicht jeder die Irrlicht.dll hat, habe ich das oben genannte Script sowie die DLL in diese *.zip ausgelegt: Irrlicht.zip -
Hey

Ich würde leibend gerne mit dir an ein RPG arbeiten
Ich wollte schon selber zich mal eins anfangen, aber leider viel dann die Motivation immer direkt wieder in den Keller weil ich keine Mitarbeiter hatte die Motiviert waren.
Mit Irrlicht habe ich noch nicht gearbeitet, würde ich aber wenn du dies nutzen willst.Naja, schreib mich bei interesse bitter per PN an!
-
Und wo ist das Problem?
Du speicherst einfach alle Möglichkeiten ab und dann vergleichst du und suchst dir die kürzeste Strecke heraus.
Ist doch ganz easy ...Musst nur aufpassen das du wirklich alle Kombinationen vergleichst

-
1) Ne, Animationen kannst du so direkt nicht einfügen. Musst du wohl oder übel im Script animieren. Kannst aber den aufbau einer *.gif lernen und dann die einzelnen Bilder selber auslesen. Könnte man sicherlich immer wieder gebrauchen.