Die bsp Datein, die du mit deinem Hammer editor erstellt sind speziel für counter-strike, die kann die irrlicht engine nicht öffnen, wenn überhaupt nur ganz alte versionen. Der Fehler mit dem Mesh resultiert daraus, da er die map nicht laden kann, kann er auch kein mesh daraus erstellen.
Beiträge von moritz1243
-
-
Wie meinst du das? Was passiert denn wenn du die Größe änderst?
-
Also ich habe dieses SDK, aber wenn du es nicht hast, versuch am besten einfach die dll so herrunter zu laden, das geht am schnellsten
-
Hey Leute,
es ist so weit, ich habe die erste Nachfolgeversion von Quickdraw fertig, AutoItDrawObject. Hierbei habe ich auf die Fähigkeit von AutoIt gesetzt, mit Objekten zu arbeiten und ich denke es ist mir ganz gut gelungen. Weiterhin habe ich AutoItDrawObject komplett neu mit Directx11 geschrieben, da Opengl mit den ganzen Erweiterungen zu umständlich ist und Fehler nur sehr schwer zu finden sind. Weitere Erweiterungen sind, dass AutoItDrawObject die Sichtbarkeit der Objekte prüft (Stichwort Frustum), ebenso kann man Objekte aneinander "heften"(Parent) und auf Kollision testen. Ich hoffe es war der richtige Schritt, dass ganze mit Objekten zu machen und hoffe euch gefällt die neue Version!
Eventuell ist es bei dem ein oder anderen noch notwendig das directx sdk zu installieren: http://www.microsoft.com/download/en/details.aspx?id=6812
Alle Features:
Spoiler anzeigen
-Directx11
-Objekte
-Sichtbarkeitsprüfung
-Parentmodell
-Transparenz
-KollisionserkennungDas Klassenmodel:
Spoiler anzeigen
PHP
Alles anzeigen© moritz1243 #### AutoItDrawObject Hierarchy #### + Hierarchy - AutoItDrawObject - Device -+- Texture | +- Rect | +- Circle | +- Font | +- String + Methods & Variables: r = readable variable w = writeable variable - Device -+- Methodes -+- CreateDevice( LPCWSTR title, INT width, INT height, INT x, INT y, INT windowed, unsigned INT samples, INT vsync, HWND parent ) | | | +- Frustum( FLOAT x, FLOAT x, FLOAT width, FLOAT height ) | | | +- Draw( VOID ) | +- Variables -+- ClearColor r,w | +- Width r,w | +- Height r,w | +- X r,w | +- Y r,w | +- Fullscreen r,w | +- Title r,w | +- MouseX r | +- MouseY r | +- MouseWheel r | +- Fps r | +- Fms r | +- Keyboard( INT key ) r | +- Running r - Rect -+- Methodes -+- getCollision( Rect rect ) | | | +- getCollision( Circle circle ) | +- Variables -+- X r,w | +- Y r,w | +- Width r,w | +- Height r,w | +- Rotation r,w | +- Color r,w | +- Parent r,w | +- RenderMode r,w | +- Texture r,w | +- Type r - Circle -+- Methodes -+- getCollision( Rect rect ) | +- Variables -+- X r,w | +- Y r,w | +- Radius r,w | +- Rotation r,w | +- Color r,w | +- Parent r,w | +- RenderMode r,w | +- Texture r,w | +- Type r - Texture -+- Methodes -+- load( LPCWSTR filename ) | | | +- save( LPCWSTR filename ) | +- Variables -+- Width r | +- Height r | +- Alpha r | +- Height r | +- Scroll_X r,w | +- Scroll_Y r,w | +- Tex_X r,w | +- Tex_Y r,w - Font -+- Variables -+- Name r | +- Quality r | +- Bold r | +- Italic r - String -+- Variables -+- X r,w | +- Y r,w | +- Rotation r,w | +- Color r,w | +- Parent r,w | +- RenderMode r,w | +- Texture r,w | +- Text r,w | +- Font r,w | +- Size r,w | +- Type r - Collision -+- Variables -+- getCount r | +- getX( INT id ) r | +- getY( INT id ) r | +- getCenterX r | +- getCenterY r
AutoItDrawObject UDF:
Spoiler anzeigen
[autoit]
[/autoit] [autoit][/autoit] [autoit]
#include-once; #INDEX# =======================================================================================================================
[/autoit] [autoit][/autoit] [autoit]
; Title .........: AutoItDrawObject © moritz1243
; AutoIt Version : 3.2.8++
; Language ......: English
; Description ...: -
; Author(s) .....: Moritz
; Dll(s) ........: AutoItDrawObject.dll
; ===============================================================================================================================; #CONSTANTS# ===================================================================================================================
[/autoit] [autoit][/autoit] [autoit]Global Const $ADO_RGB = 0x1907
[/autoit] [autoit][/autoit] [autoit]
Global Const $ADO_RGBA = 0x1908Global Const $ADO_TEXTURE_2D = 0x0DE1
[/autoit] [autoit][/autoit] [autoit]
Global Const $ADO_TEXTURE_RECTANGLE = 0x84F5Global Const $ADO_RECT = 0
[/autoit] [autoit][/autoit] [autoit]
Global Const $ADO_CIRCLE = 1
Global Const $ADO_STRING = 2
Global Const $ADO_TEXTURE = 3
Global Const $ADO_POLYGON = 4Global Const $ADO_ASYNCHRONOUS = False
[/autoit] [autoit][/autoit] [autoit]
Global Const $ADO_SYNCHRONOUS = TrueGlobal Const $ADO_NOVSYNC = False
[/autoit] [autoit][/autoit] [autoit]
Global Const $ADO_VSYNC = TrueGlobal Const $ADO_WINDOW = True
[/autoit] [autoit][/autoit] [autoit]
Global Const $ADO_FULLSCREEN = FalseGlobal Const $ADO_RED = 0xFF0000FF
[/autoit] [autoit][/autoit] [autoit]
Global Const $ADO_GREEN = 0x00FF00FF
Global Const $ADO_BLUE = 0x0000FFFF
Global Const $ADO_YELLOW = 0xFFFF00FF
Global Const $ADO_WHITE= 0xFFFFFFFF
Global Const $ADO_BLACK= 0x000000FFGlobal Const $ADO_RENDER_NOT= 0
[/autoit] [autoit][/autoit] [autoit]
Global Const $ADO_RENDER_BORDERS= 1
Global Const $ADO_RENDER_SURFACE= 2Global Const $ADO_FONT_QUALITY_LOW= 0
[/autoit] [autoit][/autoit] [autoit]
Global Const $ADO_FONT_QUALITY_MIDDLE= 1
Global Const $ADO_FONT_QUALITY_HIGH= 2Global Const $ADO_SAMPLES_0= 0
[/autoit] [autoit][/autoit] [autoit]
Global Const $ADO_SAMPLES_1= 1
Global Const $ADO_SAMPLES_2= 2
Global Const $ADO_SAMPLES_4= 4
Global Const $ADO_SAMPLES_8= 8
Global Const $ADO_SAMPLES_16= 16Global Const $ADO_INFINITE= 0xFFFFFFFF
[/autoit] [autoit][/autoit] [autoit]; BUTTONS
[/autoit] [autoit][/autoit] [autoit]Global Const $ADO_LBUTTON = 0x01 ; Left mouse button
[/autoit] [autoit][/autoit] [autoit]
Global Const $ADO_RBUTTON = 0x02 ; Right mouse buttonGlobal Const $ADO_LEFT = 0x25 ; LEFT ARROW key
[/autoit] [autoit][/autoit] [autoit]
Global Const $ADO_UP = 0x26 ; UP ARROW key
Global Const $ADO_RIGHT = 0x27 ; RIGHT ARROW key
Global Const $ADO_DOWN = 0x28 ; DOWN ARROW keyGlobal Const $ADO_0= 0x30 ; 0 key 48
[/autoit] [autoit][/autoit] [autoit]
Global Const $ADO_1= 0x31 ; 1 key 49
Global Const $ADO_2= 0x32 ; 2 key 50
Global Const $ADO_3= 0x33 ; 3 key 51
Global Const $ADO_4= 0x34 ; 4 key 52
Global Const $ADO_5= 0x35 ; 5 key 53
Global Const $ADO_6= 0x36 ; 6 key 54
Global Const $ADO_7= 0x37 ; 7 key 55
Global Const $ADO_8= 0x38 ; 8 key 56
Global Const $ADO_9= 0x39 ; 9 key 57Global Const $ADO_A= 0x41 ; A key 65
[/autoit] [autoit][/autoit] [autoit]
Global Const $ADO_B= 0x42 ; B key 66
Global Const $ADO_C= 0x43 ; C key 67
Global Const $ADO_D= 0x44 ; D key 68
Global Const $ADO_E= 0x45 ; E key 69
Global Const $ADO_F= 0x46 ; F key 70
Global Const $ADO_G= 0x47 ; G key 71
Global Const $ADO_H= 0x48 ; H key 72
Global Const $ADO_I= 0x49 ; I key 73
Global Const $ADO_J= 0x4A ; J key 74
Global Const $ADO_K= 0x4B ; K key 75
Global Const $ADO_L= 0x4C ; L key 76
Global Const $ADO_M= 0x4D ; M key 77
Global Const $ADO_N= 0x4E ; N key 78
Global Const $ADO_O= 0x4F ; O key 79
Global Const $ADO_P= 0x50 ; P key 80
Global Const $ADO_Q= 0x51 ; Q key 81
Global Const $ADO_R= 0x52 ; R key 82
Global Const $ADO_S= 0x53 ; S key 83
Global Const $ADO_T= 0x54 ; T key 84
Global Const $ADO_U= 0x55 ; U key 85
Global Const $ADO_V= 0x56 ; V key 86
Global Const $ADO_W= 0x57 ; W key 87
Global Const $ADO_X= 0x58 ; X key 88
Global Const $ADO_Y= 0x59 ; Y key 89
Global Const $ADO_Z= 0x5A ; Z key 90Global Const $ADO_NO_PARENT= 0
[/autoit] [autoit][/autoit] [autoit]
Global Const $ADO_NO_TEXTURE = 0Global $ADO_DLL_PATH = "AutoitDrawObject.dll"
[/autoit] [autoit][/autoit] [autoit]Func _ADO_CreateAutoItDrawObject( $Path = -1 )
[/autoit] [autoit][/autoit] [autoit]
If $Path <> -1 Then $ADO_DLL_PATH = $PathGlobal $ADO_DLL = DllOpen($ADO_DLL_PATH)
[/autoit] [autoit][/autoit] [autoit]If $ADO_DLL = -1 Then
[/autoit] [autoit][/autoit] [autoit]
MsgBox(0,"Error","Failed to open AutoitDrawObject.dll")
Return 0
EndIfLocal $iResult = DllCall($ADO_DLL, "IDispatch", "CreateAutoitDrawObject")
[/autoit]
If @error Then Return 0
Return $iResult[0]
EndFuncUnd die Demo:
Spoiler anzeigen
[autoit]#include "AutoitDrawObject.au3"
[/autoit] [autoit][/autoit] [autoit]
#include <Timers.au3>Global Const $WIDTH = 1024
[/autoit] [autoit][/autoit] [autoit]
Global Const $HEIGHT = 600
Global Const $FULLSCREEN = $ADO_WINDOWLocal $oAutoitObject = _ADO_CreateAutoItDrawObject()
[/autoit] [autoit][/autoit] [autoit]Local $oAutoitObjectDevice = $oAutoitObject.CreateDevice( "AutoItDrawObject v0.6", $WIDTH, $HEIGHT, 400, 0, $FULLSCREEN, 8, $ADO_NoVsync, 0 )
[/autoit] [autoit][/autoit] [autoit]
$oAutoitObjectDevice.ClearColor = 0xFFFF8000
Local $AspectRatio = 1024 / 600
$oAutoitObjectDevice.Frustum( -1 * $AspectRatio, -1, 2 * $AspectRatio, 2 )Local $oTextureCirlce = $oAutoitObjectDevice.CreateTexture( "AutoItDrawObject.jpg" )
[/autoit] [autoit][/autoit] [autoit]
Local $oTextureRect = $oTextureCirlce
Local $oTextureBK = $oAutoitObjectDevice.CreateTexture( "Scroll.jpg" )
;$oTexture.save( @DesktopDir & "/output.bmp" )Local $oRectBK = $oAutoitObjectDevice.CreateRect( 0.0, 0.0, 16.0*$AspectRatio, 2.0, 0.0, $ADO_RENDER_SURFACE, 0xFFFFFFFF)
[/autoit] [autoit][/autoit] [autoit]$oRectBK.texture = $oTextureBK
[/autoit] [autoit][/autoit] [autoit]Local $oCircle = $oAutoitObjectDevice.CreateCircle( 0.3, 0.3, 0.3, 0.0, $ADO_RENDER_SURFACE, 0xFFFFFFFF)
[/autoit] [autoit][/autoit] [autoit]$oCircle.texture = $oTextureCirlce
[/autoit] [autoit][/autoit] [autoit]Local $oCircle2 = $oAutoitObjectDevice.CreateCircle( 0.3, -0.3, 0.3, 0.0, $ADO_RENDER_SURFACE, 0xFFFFFFFF)
[/autoit] [autoit][/autoit] [autoit]$oCircle2.texture = $oTextureCirlce
[/autoit] [autoit][/autoit] [autoit]Local $oRect = $oAutoitObjectDevice.CreateRect( -0.3, -0.3, 1.0, 0.2, 0.0, $ADO_RENDER_SURFACE, 0xFFFFFFFF)
[/autoit] [autoit][/autoit] [autoit]$oRect.texture = $oTextureRect
[/autoit] [autoit][/autoit] [autoit]
$oRect.parent = $oCircleLocal $oRect2 = $oAutoitObjectDevice.CreateRect( -0.3, -0.3, 1.0, 0.2, 0.0, $ADO_RENDER_SURFACE, 0xFFFFFFFF)
[/autoit] [autoit][/autoit] [autoit]$oRect2.texture = $oTextureRect
[/autoit] [autoit][/autoit] [autoit]
Local $oCollisionPoint[16]For $i = 0 To 15 Step 1
[/autoit] [autoit][/autoit] [autoit]
$oCollisionPoint[$i] = $oAutoitObjectDevice.CreateCircle( 0.0, 0.0, 0.01, 0.0, $ADO_RENDER_SURFACE, $ADO_BLUE)
NextLocal $oCollisionPoint2[16]
[/autoit] [autoit][/autoit] [autoit]For $i = 0 To 15 Step 1
[/autoit] [autoit][/autoit] [autoit]
$oCollisionPoint2[$i] = $oAutoitObjectDevice.CreateCircle( 0.0, 0.0, 0.01, 0.0, $ADO_RENDER_SURFACE, $ADO_GREEN)
NextLocal $oCollisionPoint3[16]
[/autoit] [autoit][/autoit] [autoit]For $i = 0 To 15 Step 1
[/autoit] [autoit][/autoit] [autoit]
$oCollisionPoint3[$i] = $oAutoitObjectDevice.CreateCircle( 0.0, 0.0, 0.01, 0.0, $ADO_RENDER_SURFACE, $ADO_RED)
NextLocal $oFont = $oAutoitObjectDevice.CreateFont( "Arial", False, False, $ADO_FONT_QUALITY_LOW )
[/autoit] [autoit][/autoit] [autoit]Local $oString = $oAutoitObjectDevice.CreateString( "Fps: 1", $oFont, -0.9, 0.9, 0.05, 0.0, 1, 0xFF000000 )
[/autoit] [autoit][/autoit] [autoit]Local $timer = _Timer_Init()
[/autoit] [autoit][/autoit] [autoit]Local $oHit = 0
[/autoit] [autoit][/autoit] [autoit]
Local $oPick = 0while( $oAutoitObjectDevice.running )
[/autoit] [autoit][/autoit] [autoit]
$oAutoitObjectDevice.drawLocal $collision = $oRect.getCollision( $oRect2 )
[/autoit] [autoit][/autoit] [autoit]For $i = 0 To $collision.getCount-1 Step 1
[/autoit] [autoit][/autoit] [autoit]
$oCollisionPoint[$i].X = $collision.getX( $i )
$oCollisionPoint[$i].Y = $collision.getY( $i )
$oCollisionPoint[$i].RenderMode = $ADO_RENDER_SURFACE
Next
For $i = $collision.getCount To 15 Step 1
$oCollisionPoint[$i].RenderMode = $ADO_RENDER_NOT
NextLocal $collision2 = $oRect2.getCollision( $oCircle )
[/autoit] [autoit][/autoit] [autoit]For $i = 0 To $collision2.getCount-1 Step 1
[/autoit] [autoit][/autoit] [autoit]
$oCollisionPoint2[$i].X = $collision2.getX( $i )
$oCollisionPoint2[$i].Y = $collision2.getY( $i )
$oCollisionPoint2[$i].RenderMode = $ADO_RENDER_SURFACE
Next
For $i = $collision2.getCount To 15 Step 1
$oCollisionPoint2[$i].RenderMode = $ADO_RENDER_NOT
NextLocal $collision3 = $oCircle.getCollision( $oCircle2 )
[/autoit] [autoit][/autoit] [autoit]For $i = 0 To $collision3.getCount-1 Step 1
[/autoit] [autoit][/autoit] [autoit]
$oCollisionPoint3[$i].X = $collision3.getX( $i )
$oCollisionPoint3[$i].Y = $collision3.getY( $i )
$oCollisionPoint3[$i].RenderMode = $ADO_RENDER_SURFACE
Next
For $i = $collision3.getCount To 15 Step 1
$oCollisionPoint3[$i].RenderMode = $ADO_RENDER_NOT
Next$oString.text = "Fps: " & $oAutoitObjectDevice.fps & " Mouse: " & $oAutoitObjectDevice.MouseX & " " & $oAutoitObjectDevice.MouseY & " Wheel: " & $oAutoitObjectDevice.MouseWheel & " Key: " & $oAutoitObjectDevice.Key & " Collisions: " & $collision.getCount & " Collision2: " & $collision2.getCount & " Collision3: " & $collision3.getCount
[/autoit] [autoit][/autoit] [autoit]Local $diff = _Timer_Diff( $timer )
[/autoit] [autoit][/autoit] [autoit]If $oAutoitObjectDevice.Keyboard( $ADO_R ) Then
[/autoit] [autoit][/autoit] [autoit]
$oRect.Rotation = $oRect.Rotation+1
$oRect2.Rotation = $oRect2.Rotation+4
$oCircle.Rotation = $oCircle.Rotation+1
EndIf$oTextureBK.Tex_X = $diff * 0.00001
[/autoit] [autoit][/autoit] [autoit]If $oAutoitObjectDevice.Keyboard( $ADO_F ) Then $oAutoitObjectDevice.Fullscreen = Not $oAutoitObjectDevice.Fullscreen ; also possible with alt + enter
[/autoit] [autoit][/autoit] [autoit]If IsObj($oHit) Then $oHit.Color = 0xFFFFFFFF
[/autoit] [autoit][/autoit] [autoit]Local $oHit = $oAutoitObjectDevice.getObject( $oAutoitObjectDevice.MouseX / $WIDTH * 2 * $AspectRatio - 1*$AspectRatio, $oAutoitObjectDevice.MouseY / $HEIGHT * -2 + 1 )
[/autoit] [autoit][/autoit] [autoit]If IsObj( $oHit ) Then
[/autoit] [autoit][/autoit] [autoit]
$oHit.Color = 0xFF0000FF
If $oAutoitObjectDevice.Keyboard( $ADO_LBUTTON ) And $oPick = 0 Then $oPick = $oHit
EndIfIf IsObj( $oPick ) Then
[/autoit] [autoit][/autoit] [autoit]
$oPick.x = $oAutoitObjectDevice.MouseX / $WIDTH * 2 * $AspectRatio - 1*$AspectRatio
$oPick.y = $oAutoitObjectDevice.MouseY / $HEIGHT * -2 + 1
If Not $oAutoitObjectDevice.Keyboard( $ADO_LBUTTON ) Then $oPick = 0
EndIfSleep(10)
[/autoit] [autoit][/autoit] [autoit]
WEndExit( 0 )
[/autoit] -
es gibt von directx 11 ein sdk das sind partikel die pixelbasiert sind und die sehen nicht unrealistisch aus und brauchen kein resting contact
-
"Naja " wenn es nur so stark vereinfachst, wie du es vorschlägst, siehst es nicht mehr gut aus, du musst schon auf pixel basis oder 2x2 pixel bleiben.
-
Hi,
ich kann dir sagen eine wassersimulation ist recht kompliziert, wenn du willst das sich die partikel stauen bzw schichten können ohne sich zu durchdringen, musst du alle partikel gegeneinander auf kollisionen prüfen. Das wären bei 20 partikeln schon um die 200 tests, außerdem müssen die partikel noch mit der umgebung kollidieren können. Du könntest diese problem vereinfachen wenn du pixel simulationen machst, sprich du ein wasserpartikel ist ein pixel deinen bildes. Dann müsstest du dir verhaltensregeln für die partikel überlegen zB. ein partikel kann sich nur dahin bewegen wo nichts ist (kein wasser partikel und kein gegenstand).
Überleg dir nach diesem prinzip mal was, alles andere wäre mit autoit (ohne assembler) nicht realisierbar. Sonst versuch mal meine autoit physik engine.
-
Hi,
visual studio erstellt bei dem atl object automatisch funktionen zum registieren des jeweiligen objektes, ich habe aber noch nicht ganz herrausgefunden wie das geht. Weiterhin brauche ich diese funktion nicht, da ich den objecten teilweile variablen von anderen objecten übegeben muss.
grüße moritz
-
So ich habs hin bekommen. (sry für doppelpost)
-
ich habe bei visual studio ein atl dll projekt erstellt. Dann habe ich eine atl com objekt klasse hinzugefügt und eine test funktion für den vollbildmodus von quickdraw. das problem ist wenn ich der klasse eine varibale "normal" declariere, dann kann ich sie nicht in autoit nutzen
-
So ich habe es jetzt hinbekommen ein objekt zu erstellen und zwar per dllcall . Eine Frage habe ich aber noch, wie es möglich das man in Autoit object auf variablen eines objectes zugreifen und diese verändern kann? Also wie realisiert man das in c++, weil visual studio bietet keine möglichkeit bei einem com objekt variablen hinzuzufügen.(achja sry für den doppelpost, aber mein firefox zeigt immer nur die ersten 2 post an und ich kann meinen post deswegen nicht bearbeiten. )
-
ah okey danke für die info, ich denke ich mache das mit einen dllcall.
-
Hi,
schönes spiel, es läuft bei mir perfekt . Bald kommt QuickDraw Version 2, die ist noch ne ganze ecke schneller.
grüße Moritz
-
Autoit Object nutzt das selbe Prinzip, also geht es scheinbar doch! Die Frag ist nur wie???
-
ja, aber daraus geht nicht hervor, wie ich das ganze in autoit erstellen kann, in dem tutorial wird das ganz "direkt" implementiert. Aber ich schaue nochmal drüber und danke für die schnelle antwort
-
Abend zusammen,
hat jemand erfahrung damit com objecte zu erstellen? also sie zu programmieren? ich arbeite gerade an quickdraw 2, bisher nutzt es autoit object. Aber ich denke es ist schneller, wenn quickdraw selber ein com object ist. Mein problem dabei ist zur zeit, ich habe ein atl projekt in visual studio 2010 erstellt, sowie ein atl com object, das "CQuickdraw" heißt. Die Dll wir zur datei "Quickdraw 3.0.dll" erstellt, jdeoch bekomme ich es nicht hin dieses object in autoit zu erstellen. Die Dll selber kann ich mit "dllcreate("quickdraw 3.0.dll") ohne probleme öffnen, will ich aber ein com object erstellen weiß ich nicht genau wie objcreate (so gehts nicht objcreate("Quickdraw.Class")) aufrufen muss. Brauche ich dafür CLSID?
grüße Moritz
-
Hi,
schönes programm, ich habe auch mal sowas erstellt mit der irrlicht engine(muss mal nach Game Launcher hier im forum suchen)
grüße moritz
-
Hi,
gut wäre auch noch wenn du die scrips vereinst, sodass man script mit gui hat in dem mal alles auswählen kann.
grüße Moritz
-
hi,
bald kommt QuickDraw2 raus, bei dem nutze ich objekt. Außerdem läuft das Programm in einem eigenen thread. Also würde ich an deiner stelle auf quickdraw warten. da es außerdem kollisionsberechnungen machen kann
grüße Moritz
-
hi,
du könntest noch methoden machen wie zB. kollisionsabfragen zwischen den objekten.