AlmarM Posted April 3, 2012 Share Posted April 3, 2012 Hello,I'm just testing around with the GEngin made by Matwachich but before I could do antything cool, I ran into a DllStructSetData error.You can get GEngin here.This is my code.#include "gengin\GEngin.au3" Global Const $ciWidth = 600, $ciHeight = 500 Global $ahFadingBackgroundObjects[1] = [0] _GEng_Start("test", $ciWidth, $ciHeight) Global $hFont = _GEng_Font_Create("Lucida Console", 40, 1) $ahFadingBackgroundObjects[0] = _GEng_Text_Create($hFont, "?", 0xFF004080, -10, Random(0, $ciHeight, 1), 50, 50) While (GUIGetMsg() -3) _GEng_ScrFlush(0xFFFFFFFF) ; code below UpdateFadingBackgroundObjects() _GEng_ScrUpdate() WEnd _GEng_Text_Delete($ahFadingBackgroundObjects[0]) _GEng_Font_Delete($hFont) _GEng_Shutdown() Func UpdateFadingBackgroundObjects() Local $iX, $iY, $iWidth, $iHeight _GEng_Text_PosGet($ahFadingBackgroundObjects[0], $iX, $iY, $iWidth, $iHeight) _GEng_Text_PosSet($ahFadingBackgroundObjects[0], $iX + 2, $iY, $iWidth, $iHeight) _GEng_Text_Draw($ahFadingBackgroundObjects[0]) EndFuncAnd this is the error I'm getting.C:\Users\Lyker\Desktop\gengin\GEngin\GEng_Text.au3 (421) : ==> Subscript used with non-Array variable.: $iPosX = DllStructSetData($Struct[0], "X", $iPosX) $iPosX = DllStructSetData($Struct^ ERRORAnd just for the sake of it, here is the _GEng_Text_PosGet function from his UDF.Func _GEng_Text_PosGet(ByRef $hTxtRect, ByRef $iPosX, ByRef $iPosY, ByRef $iWidth, ByRef $iHeight) If Not __GEng_Text_IsTextRect($hTxtRect) Then Return SetError(1, 0, 0) ; --- Local $Struct = $hTxtRect[2] $iPosX = DllStructSetData($Struct[0], "X", $iPosX) $iPosY = DllStructSetData($Struct[0], "Y", $iPosY) $iWidth = DllStructSetData($Struct[0], "Width", $iWidth) $iHeight = DllStructSetData($Struct[0], "Height", $iHeight) ; --- Return 1 EndFuncAny help would be great! Minesweeper A minesweeper game created in autoit, source available. _Mouse_UDF An UDF for registering functions to mouse events, made in pure autoit. 2D Hitbox Editor A 2D hitbox editor for quick creation of 2D sphere and rectangle hitboxes. Link to comment Share on other sites More sharing options...
stormbreaker Posted April 3, 2012 Share Posted April 3, 2012 If I got it right, then your expected output is a GUI with '?' sign on top-left corner, with white-bg. So, I modified func. in GENG_TEXT.au3 as:Func _GEng_Text_PosGet(ByRef $hTxtRect, ByRef $iPosX, ByRef $iPosY, ByRef $iWidth, ByRef $iHeight) If Not __GEng_Text_IsTextRect($hTxtRect) then Return SetError(1, 0, 0) EndIf ; --- Local $Struct = $hTxtRect[2] $iPosX = DllStructSetData($Struct, "X", $iPosX) $iPosY = DllStructSetData($Struct, "Y", $iPosY) $iWidth = DllStructSetData($Struct, "Width", $iWidth) $iHeight = DllStructSetData($Struct, "Height", $iHeight) ; --- Return 1 EndFuncBingo! Now its working. Hope this solves the problem. ---------------------------------------- :bye: Hey there, was I helpful? ---------------------------------------- My Current OS: Win8 PRO (64-bit); Current AutoIt Version: v3.3.8.1 Link to comment Share on other sites More sharing options...
AlmarM Posted April 3, 2012 Author Share Posted April 3, 2012 Awesome work! It's working indeed. The only problem is now, that the PosGet won't return the XY. Instead it just returns X:0 Y:0. Any idea? Minesweeper A minesweeper game created in autoit, source available. _Mouse_UDF An UDF for registering functions to mouse events, made in pure autoit. 2D Hitbox Editor A 2D hitbox editor for quick creation of 2D sphere and rectangle hitboxes. Link to comment Share on other sites More sharing options...
stormbreaker Posted April 3, 2012 Share Posted April 3, 2012 Well, I am really sorry, but honestly I have used GEngin for the first time just minutes after you posted this. I really can't help in this matter. ---------------------------------------- :bye: Hey there, was I helpful? ---------------------------------------- My Current OS: Win8 PRO (64-bit); Current AutoIt Version: v3.3.8.1 Link to comment Share on other sites More sharing options...
AlmarM Posted April 3, 2012 Author Share Posted April 3, 2012 It's my first time too. Thanks for the help though! Appriciated. Minesweeper A minesweeper game created in autoit, source available. _Mouse_UDF An UDF for registering functions to mouse events, made in pure autoit. 2D Hitbox Editor A 2D hitbox editor for quick creation of 2D sphere and rectangle hitboxes. Link to comment Share on other sites More sharing options...
matwachich Posted April 4, 2012 Share Posted April 4, 2012 Sorry guys for the time wast, but this is a bug! And thanks for testing, and i'm happy that it's usefull for someone! The bug is in the _GEng_Text_PosGet function, it should be like this Func _GEng_Text_PosGet(ByRef $hTxtRect, ByRef $iPosX, ByRef $iPosY, ByRef $iWidth, ByRef $iHeight) If Not __GEng_Text_IsTextRect($hTxtRect) Then Return SetError(1, 0, 0) ; --- Local $Struct = $hTxtRect[2] $iPosX = DllStructGetData($Struct, "X") $iPosY = DllStructGetData($Struct, "Y") $iWidth = DllStructGetData($Struct, "Width") $iHeight = DllStructGetData($Struct, "Height") ; --- Return 1 EndFunc You can modify it directly in the source code. Hope it's the only remaining bug. Gonna wait somedays befor uploading a corrected version, if you find some other bugs, please tell me. I don't have time to test them myself these days. The modules that have not been very well tested are: Text, Sound and dynamic collisions (this last one isn't very reliable, so don't use it!) Link to comment Share on other sites More sharing options...
AlmarM Posted April 4, 2012 Author Share Posted April 4, 2012 Awesome, thanks for your reply! I'm currently testing, but it looks fine now. What a stupid little error though >_ Minesweeper A minesweeper game created in autoit, source available. _Mouse_UDF An UDF for registering functions to mouse events, made in pure autoit. 2D Hitbox Editor A 2D hitbox editor for quick creation of 2D sphere and rectangle hitboxes. Link to comment Share on other sites More sharing options...
matwachich Posted April 4, 2012 Share Posted April 4, 2012 Yep! an Ctrl-C Ctrl-V error! Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now