Luigi Posted July 29, 2014 Share Posted July 29, 2014 (edited) Hi Forum! I have found a bug or write something wrong... The scripts idea is simple: 1. work with 'Scripting.Dictionary' 2. add many 'TYPE', with any name and any round number 3. you add a existent type in pilones For my surprise, does not work! The button [change], choose the pilone. The button [fire], discharge the pilone's round. I expect when choose pilone 0, descrease pilone's round 0 and choose pilone 1, decrease round's pilone 1. The funciton dump show button fire decrease rounds from pilone 0 and 1! Must be decrease 0 OR 1, not both. The first type is decrease too! What is wrong? This is the script... Best Regards, Detefon. expandcollapse popup#include-once #include <String.au3> #include <Array.au3> #include <Misc.au3> #include <GUIConstantsEx.au3> Opt('GUIOnEventMode', 1) Opt('GUIEventOptions', 1) Opt('ExpandVarStrings', 1) Opt('MustDeclareVars', 1) Opt('WinWaitDelay', 25) Global $oo = ObjCreate('Scripting.Dictionary') $oo.CompareMode = 0 $oo.Add('pilones', ObjCreate('Scripting.Dictionary')) $oo.Add('type', ObjCreate('Scripting.Dictionary')) $oo.Add('default', 0) AddType('blue', 21) AddType('red', 22) AddType('yellow', 23) AddType('white', 24) Func AddType($sName, $iRound) Local $oTemp = ObjCreate('Scripting.Dictionary') $oTemp.Add('name', $sName) $oTemp.Add('round', $iRound) $oo.Item('type').Add($oo.Item('type').Count, $oTemp) EndFunc ;==>AddType Add(0, 0) Add(1, 0) Func Add($iPilone, $iType) $oo.Item('pilones').Add($iPilone, $oo.Item('type').Item($iType)) EndFunc ;==>Add dump($oo) Func dump($oo, $key = '', $ident = 0) If IsDictionary($oo) Then Local $sKeys = $oo.Keys For $each In $sKeys If IsDictionary($oo.Item($each)) Or IsArray($oo.Item($each)) Then dump($oo.Item($each), ($key == '' ? '' : $key & '.') & $each, 0) Else ConsoleWrite(($ident == 0 ? '' : (_StringRepeat(' ', $ident))) & ($key == '' ? '' : $key & '.') & $each & ' = ' & $oo.Item($each) & @LF) EndIf Next Else If IsArray($oo) Then Switch UBound($oo, 0) Case 1 For $ii = 0 To UBound($oo, 1) - 1 If IsDictionary($oo[$ii]) Or IsArray($oo[$ii]) Then dump($oo[$ii], $key & '[' & $ii & ']', 0) Else ConsoleWrite(($ident == 0 ? '' : (_StringRepeat(' ', $ident))) & ($key == '' ? '' : $key & '[') & $ii & '] = ' & $oo[$ii] & @LF) EndIf Next Case 2 For $ii = 0 To UBound($oo, 1) - 1 For $jj = 0 To UBound($oo, 2) - 1 If IsDictionary($oo[$ii][$jj]) Or IsArray($oo[$ii][$jj]) Then dump($oo[$ii][$jj], $key & '[' & $ii & '][' & $jj & ']', 0) Else ConsoleWrite(($ident == 0 ? '' : (_StringRepeat(' ', $ident))) & ($key == '' ? '' : $key & '[') & $ii & '][' & $jj & '] = ' & $oo[$ii][$jj] & @LF) EndIf Next Next EndSwitch Else EndIf EndIf EndFunc ;==>dump Func IsDictionary($oo = Null) If Not (ObjName($oo, 2) == 'Scripting.Dictionary') Then Return 0 Return 1 EndFunc ;==>IsDictionary Global $hGui[1], $aGuiSize[2] = [800, 600], $sGuiTitle = 'Título' Global $hButtonChange, $hButtonFire $hGui[0] = GUICreate($sGuiTitle, $aGuiSize[0], $aGuiSize[1], -1, -1, Default, Default) GUISetOnEvent($GUI_EVENT_CLOSE, '_quit') $hButtonChange = GUICtrlCreateButton('change ' & $oo.Item('default'), 10, 10, 80, 20) GUICtrlSetOnEvent($hButtonChange, '_button') $hButtonFire = GUICtrlCreateButton('FIRE', 10, 40, 80, 20) GUICtrlSetOnEvent($hButtonFire, '_buttonFire') GUISetState(@SW_SHOWNORMAL) While Sleep(10) WEnd Func _button() $oo.Item('default') += 1 If $oo.Item('default') > ($oo.Item('pilones').Count - 1) Then $oo.Item('default') = 0 GUICtrlSetData($hButtonChange, 'change ' & $oo.Item('default')) EndFunc ;==>_button Func _buttonFire() ConsoleWrite( $oo.Item('default') & @LF) $oo.Item('pilones').Item( $oo.Item('default') ).Item('round') -= 1 dump($oo) EndFunc ;==>_buttonFire Func _quit() _exit() EndFunc ;==>_quit Func _exit($input = 0) If $input Then ConsoleWrite('exit[' & $input & ']' & @LF) GUIDelete($hGui[0]) Exit EndFunc ;==>_exit In time... I can make the result I want with Arrays, this is example: Obs: for me, work with scripting.dicionary is more easy than arrays... But, is not the main question, I want know why I can't produce the same result with scripting.dictionary, I am very curious. expandcollapse popup#include-once #include <String.au3> #include <Array.au3> #include <Misc.au3> #include <GUIConstantsEx.au3> Opt('GUIOnEventMode', 1) Opt('GUIEventOptions', 1) Opt('MustDeclareVars', 1) Global $aTemp[1] Global $aArm[4] = [0, $aTemp, $aTemp, $aTemp] AddType('red', 21) AddType('blue', 22) AddType('yellow', 23) AddType('white', 24) Func AddType($sName, $iRound) _ArrayAdd($aArm[2], $iRound) _ArrayAdd($aArm[3], $sName) EndFunc ;==>AddType Add(0) Add(0) Func Add($iType) _ArrayAdd($aArm[1], ($aArm[2])[$iType + 1]) EndFunc ;==>Add Global $hGui[1], $aGuiSize[2] = [300, 200], $sGuiTitle = 'Título' Global $hButtonChange, $hButtonFire $hGui[0] = GUICreate($sGuiTitle, $aGuiSize[0], $aGuiSize[1], -1, -1, Default, Default) GUISetOnEvent($GUI_EVENT_CLOSE, '_quit') $hButtonChange = GUICtrlCreateButton('change ' & $aArm[0], 10, 10, 80, 20) GUICtrlSetOnEvent($hButtonChange, '_button') $hButtonFire = GUICtrlCreateButton('FIRE', 10, 40, 80, 20) GUICtrlSetOnEvent($hButtonFire, '_buttonFire') GUISetState(@SW_SHOWNORMAL) While Sleep(10) WEnd Func _button() $aArm[0] += 1 If $aArm[0] > (UBound($aArm[1], 1) - 2) Then $aArm[0] = 0 GUICtrlSetData($hButtonChange, 'change ' & $aArm[0]) EndFunc ;==>_button Func _buttonFire() Local $aa = $aArm[1] $aa[$aArm[0] + 1] -= 1 If $aa[$aArm[0] + 1] < 0 Then $aa[$aArm[0] + 1] = 0 ConsoleWrite('weapon #' & $aArm[0] & ' name[ ' & ($aArm[3])[$aArm[0] + 1] & ' ] round[ ' & $aa[$aArm[0] + 1] & ' ]' & @LF) $aArm[1] = $aa EndFunc ;==>_buttonFire Func _quit() _exit() EndFunc ;==>_quit Func _exit($input = 0) If $input Then ConsoleWrite('exit[' & $input & ']' & @LF) GUIDelete($hGui[0]) Exit EndFunc ;==>_exit Edited July 30, 2014 by Detefon Visit my repository Link to comment Share on other sites More sharing options...
Moderators Melba23 Posted July 30, 2014 Moderators Share Posted July 30, 2014 Detefon,That script looks a lot like game automation - would you care to explain why I am mistaken in so thinking? M23 Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind Open spoiler to see my UDFs: Spoiler ArrayMultiColSort ---- Sort arrays on multiple columnsChooseFileFolder ---- Single and multiple selections from specified path treeview listingDate_Time_Convert -- Easily convert date/time formats, including the language usedExtMsgBox --------- A highly customisable replacement for MsgBoxGUIExtender -------- Extend and retract multiple sections within a GUIGUIFrame ---------- Subdivide GUIs into many adjustable framesGUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView itemsGUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeViewMarquee ----------- Scrolling tickertape GUIsNoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxesNotify ------------- Small notifications on the edge of the displayScrollbars ----------Automatically sized scrollbars with a single commandStringSize ---------- Automatically size controls to fit textToast -------------- Small GUIs which pop out of the notification area Link to comment Share on other sites More sharing options...
Luigi Posted July 30, 2014 Author Share Posted July 30, 2014 (edited) Melba, is not a game automation... Believe me...I am very serious about this...I do not have (age and patience) for playing games (I am 41).Lately I am very glad, I am work in full time with AutoIt in my work.I am develop a application client-server to transfer client's information to server in PHP, using JSON.Information like hardware, software.In my free time, I write little codes to study GDIPlus.I make many works with AutoIt in my work...I build this panel for a local raffle. Another work, using AutoIt and GDIPLus, is fotocamI build a script to take a shot with webcam, resize and repositioning a new picture, put a children's name and print! In a month, was printed/make 10.000 children driver card's.Each shot-print-write children name during 30 seconds! The interface is very simple, but functional.In my free work, I always search something with use GDPlus, Json and Scripting.Dictionary.The result with Json and Scripting.Dictionary is FRED. I use this in my work.And... Finaly, in my free time I study with GDI + Scripting.Dicionary, and write a script to load a json map build with TileMapeEditor, this is result:I know... work with graphics sometimes can be like or confunded with game automation by other peoples... but is not.Its work. Its recreation for me.I am very glad to read many woderful thinks in this forum, about many many things.I am not automate nothing about game, I build my works, my algorithms to work. Melba, you are very valued for me, I am very clear and sincery with you and glad to write about my doubts and work.I so sorry to write everything in bad english.Please, If you want know more, I very happy to write.BR, Detefon. Edited September 19, 2015 by Luigi Visit my repository Link to comment Share on other sites More sharing options...
Moderators Melba23 Posted July 30, 2014 Moderators Share Posted July 30, 2014 Detefon, I am not automate nothing about game, I build my works, my algorithms to workI am convinced - please carry on! M23 Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind Open spoiler to see my UDFs: Spoiler ArrayMultiColSort ---- Sort arrays on multiple columnsChooseFileFolder ---- Single and multiple selections from specified path treeview listingDate_Time_Convert -- Easily convert date/time formats, including the language usedExtMsgBox --------- A highly customisable replacement for MsgBoxGUIExtender -------- Extend and retract multiple sections within a GUIGUIFrame ---------- Subdivide GUIs into many adjustable framesGUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView itemsGUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeViewMarquee ----------- Scrolling tickertape GUIsNoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxesNotify ------------- Small notifications on the edge of the displayScrollbars ----------Automatically sized scrollbars with a single commandStringSize ---------- Automatically size controls to fit textToast -------------- Small GUIs which pop out of the notification area Link to comment Share on other sites More sharing options...
Luigi Posted July 30, 2014 Author Share Posted July 30, 2014 Realy thank you Melba. BR, Detefon Visit my repository 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