Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Pixel information tool
#1
Hello,

Quick question for the developers: Do you have a tool you use to retrieve pixel information from the game screen? Mainly X/Y (taking into account the offset) and color information? If so, would you be willing to share it?

Thank you for your time and I hope to hear back from you soon.
Reply
#2
Autoit has an Information Window, you can use that to detect the location of the pixel. Use Finder Tool and get the pixel. In the 'Control' tab you can get the coordinates, 'Mouse' tab you can get the color.
Reply
#3
(02-08-2015, 11:18 AM)GkevinOD Wrote:  Autoit has an Information Window, you can use that to detect the location of the pixel. Use Finder Tool and get the pixel. In the 'Control' tab you can get the coordinates, 'Mouse' tab you can get the color.

I have seen that, but I don't think it takes into account the offset. I have tried to make a tool, but mine is very sad Sad I get the coords (assuming they are correct) and, sometimes, I get the color, but most of the time the color comes back as, 'FFFFFF'.

Try to hold back your laughter, but this is what I have so far:

Code:
#include <Misc.au3>
#include <WinAPI.au3>

Global $BSpos[2] ; Inside BlueStacks positions relative to the screen

$Title = "BlueStacks App Player for Windows (beta-1)" ; Window name
$Full = WinGetTitle ($Title) ; Get The Full Title..
$HWnD = WinGetHandle ($Full) ; Get The Handle
WinActivate ($HWnD)

Func getBSPos()
    $aPos = ControlGetPos($Title, "", "[CLASS:BlueStacksApp; INSTANCE:1]")
    $tPoint = DllStructCreate("int X;int Y")
    DllStructSetData($tPoint, "X", $aPos[0])
    DllStructSetData($tPoint, "Y", $aPos[1])
    _WinAPI_ClientToScreen(WinGetHandle(WinGetTitle($Title)), $tPoint)

    $BSpos[0] = DllStructGetData($tPoint, "X")
    $BSpos[1] = DllStructGetData($tPoint, "Y")
EndFunc   ;==>getBSPos

HotKeySet ("{F7}", "FindPos")
HotKeySet ("{F8}", "Terminate")

While 1
   Sleep (100)
WEnd

Func FindPos()
    getBSPos()
    Local $Pos[2]
    Local $iColour = 0
    While 1
        If _IsPressed("01") Then
            $Pos[0] = MouseGetPos()[0] - $BSpos[0]
            $Pos[1] = MouseGetPos()[1] - $BSpos[1]
            $iColour = Hex (PixelGetColor($Pos[0],$Pos[1]),6)
            ClipPut($Pos[0] & "," & $Pos[1] & "," & $iColour)
            Return $Pos
        EndIf
    WEnd
EndFunc   ;==>FindPos

Func Terminate()
   Exit
EndFunc   ;==>Terminate
Reply
#4
Try to use Control Viewer
http://www.autoitscript.com/forum/topic/...info-tool/
Reply
#5
I use ColorPic to get colors: http://www.iconico.com/colorpic/

AND

I use Greenshot to get coordinates: http://getgreenshot.org/
Reply
#6
(02-08-2015, 04:43 PM)Mephobia Wrote:  I use ColorPic to get colors: http://www.iconico.com/colorpic/

AND

I use Greenshot to get coordinates: http://getgreenshot.org/

for coordinates i use this autoit script...iim not sure these are correct coordinates in game..

Code:
#AutoIt3Wrapper_UseX64=n

; Set the Escape hotkey to terminate the script.
HotKeySet("{ESC}", "_Terminate")

Example()

Func Example()
    ; Initialize a Local variable.
    Local $aMgp = 0

    ; Create an endless loop, 1 will always be 1 therefore True.
    While 1
        ; Assign a Local variable the coords of the cursor (array).
        $aMgp = MouseGetPos()

        ; Display a tooltip near the cursor with its coords.
        ToolTip("x: " & $aMgp[0] & ", y: " & $aMgp[1], $aMgp[0] + 10, $aMgp[1] + 10)

        ; Avoid high CPU usage.
        Sleep(50)
    WEnd
EndFunc   ;==>Example

Func _Terminate()
    Exit
EndFunc   ;==>_Terminate
Reply
#7
(02-08-2015, 01:11 PM)safar46 Wrote:  Try to use Control Viewer
http://www.autoitscript.com/forum/topic/...info-tool/
This seems to work quite well. Thank you for the link.
(02-08-2015, 10:19 PM)Henk500 Wrote:  for coordinates i use this autoit script...iim not sure these are correct coordinates in game..
Code:
#AutoIt3Wrapper_UseX64=n
; Set the Escape hotkey to terminate the script.
HotKeySet("{ESC}", "_Terminate")
Example()
Func Example()
   ; Initialize a Local variable.
   Local $aMgp = 0
   ; Create an endless loop, 1 will always be 1 therefore True.
   While 1
       ; Assign a Local variable the coords of the cursor (array).
       $aMgp = MouseGetPos()
       ; Display a tooltip near the cursor with its coords.
       ToolTip("x: " & $aMgp[0] & ", y: " & $aMgp[1], $aMgp[0] + 10, $aMgp[1] + 10)
       ; Avoid high CPU usage.
       Sleep(50)
   WEnd
EndFunc   ;==>Example
Func _Terminate()
   Exit
EndFunc   ;==>_Terminate
@Henk500 - I think your coordinates will be off a bit if you don't take into account the window borders. That is what getBSPos() and FindPos() are doing.
Reply
#8
did you check the
">>>> Control <<<<" section in the summary-tab of the autoit windows info tool?
Reply
#9
(02-09-2015, 01:47 AM)kojometa Wrote:  did you check the
">>>> Control <<<<" section in the summary-tab of the autoit windows info tool?

No, I probably (incorrectly) assumed I knew what I was doing and, no doubt, missed that Smile
Reply
#10
(02-09-2015, 12:12 AM)Snarg Wrote:  
(02-08-2015, 01:11 PM)safar46 Wrote:  Try to use Control Viewer
http://www.autoitscript.com/forum/topic/...info-tool/
This seems to work quite well. Thank you for the link.

(02-08-2015, 10:19 PM)Henk500 Wrote:  for coordinates i use this autoit script...iim not sure these are correct coordinates in game..

Code:
#AutoIt3Wrapper_UseX64=n
; Set the Escape hotkey to terminate the script.
HotKeySet("{ESC}", "_Terminate")
Example()
Func Example()
   ; Initialize a Local variable.
   Local $aMgp = 0
   ; Create an endless loop, 1 will always be 1 therefore True.
   While 1
       ; Assign a Local variable the coords of the cursor (array).
       $aMgp = MouseGetPos()
       ; Display a tooltip near the cursor with its coords.
       ToolTip("x: " & $aMgp[0] & ", y: " & $aMgp[1], $aMgp[0] + 10, $aMgp[1] + 10)
       ; Avoid high CPU usage.
       Sleep(50)
   WEnd
EndFunc   ;==>Example
Func _Terminate()
   Exit
EndFunc   ;==>_Terminate
@Henk500 - I think your coordinates will be off a bit if you don't take into account the window borders. That is what getBSPos() and FindPos() are doing.

Yes i think it is off a bit..havent figured out the offset as i didnt needed it yet...
When i look at the getresource() function, i figured the mousecoords aren precise
Reply
 


Forum Jump:


Users browsing this thread: 7 Guest(s)

About The Bytecode Club

We're a community forum focused on Reverse Engineering, we try to target Java/Android but we also include other langauges/platforms. We pride ourselves in supporting and free and open sourced applications.

Website