Jump to content

Recommended Posts

Posted (edited)

hello,

I've found some script on the forum for crosshair ; some with winapi or transparent window , but the problem is that the crosshair isn't on top with the game : I don't see it.

for that would work I have to inject process or not ? that is the question !

thanks for answers.

Edited by FireFox
  • Replies 53
  • Created
  • Last Reply

Top Posters In This Topic

Top Posters In This Topic

Posted

As you might already have found out in other topics, use OnTopMost for your GUI if you don't already does.

Another verry simple way is _WinAPI_SetCursor() after you started your game.

I assume the game will change/hide or something else with the cursor, that's why you have to run _WinAPI_SetCursor() after you started the game.

Depending on the game other methods is possible but I can't tell for your game.

Posted

  Pain said:

As you might already have found out in other topics, use OnTopMost for your GUI if you don't already does.

Another verry simple way is _WinAPI_SetCursor() after you started your game.

I assume the game will change/hide or something else with the cursor, that's why you have to run _WinAPI_SetCursor() after you started the game.

Depending on the game other methods is possible but I can't tell for your game.

Thanks I will try it later!

Posted (edited)

  FireFox said:

Thanks I will try it later!

The crosshair is visible over all windows except all fps games... This is my script :

#include <WindowsConstants.au3>
 #include <EditConstants.au3>
 #include <GUIConstantsEx.au3>
 
 $GUI=GUICreate("CROSSHAIR",@DesktopWidth,@DesktopHeight,0,0)
 WinSetTrans($GUI,"",0)
 GUISetState(@SW_HIDE,$GUI)
 
 
 $win=GUICreate("",@DesktopWidth,@DesktopHeight,0,0,$WS_POPUP,$WS_EX_LAYERED+$WS_EX_TOPMOST+$WS_EX_MDICHILD,$GUI)
 $CUR=GUICtrlCreatePic("Crosshair.bmp",350,350,35,35)
 GUISetBkColor(0x0000FF,$win)
 _Transparent($win,0x0000FF)
 GUISetState()
 
 
 Func _Transparent($hwnd, $i_transcolor, $Transparency = 255, $dwFlages = 0x03, $isColorRef = False)
     If $dwFlages = Default Or $dwFlages = "" Or $dwFlages < 0 Then $dwFlages = 0x03
 
     If Not $isColorRef Then
         $i_transcolor = Hex(String($i_transcolor), 6)
         $i_transcolor = Execute('0x00' & StringMid($i_transcolor, 5, 2) & StringMid($i_transcolor, 3, 2) & StringMid($i_transcolor, 1, 2))
     EndIf
 
     Local $Ret = DllCall("user32.dll", "int", "SetLayeredWindowAttributes", "hwnd", $hwnd, "long", $i_transcolor, "byte", $Transparency, "long", $dwFlages)
 
     Select
         Case @error
             Return SetError(@error, 0, 0)
 
         Case Else
             Return 1
     EndSelect
 EndFunc;==>_Transparent
 
 
 While 1
 Sleep(50)
 WinSetOnTop($win,"",1)
 WEnd

Anyone have idea for is would be visible all the time ?

Edited by FireFox
Posted (edited)

To be honest I dont think you'll do it .... I tried it with counter strike source , and as css is topmost already you'll struggle to win the fight ...The only way I could see of doing it was to somehow use the "GameOverlayRenderer.dll" ...But thats for css...if the dll works with all fps games I dont know....

Heres the GameOverlayRenderer.dll if you wanna try it...

it has 2 functions

1, OverlayHookD3D3

2, SetNotificationPosition

the first one looks good though

GameOverlayRenderer.dll

heres what i could find on it:

http://forum.gamedeception.net/showthread.php?p=91412

Edited by bluerein
Posted

Thanks but how can i use this dll for autoit ?...

*void __fastcall HookFunc_10007AC0(int iHookChainDepth, void *pOrgFunc, int pCallback)

I don't know use dll call so anyone can translate this to autoit please ?

  • Moderators
Posted

Most of these full screen games will minimize if they lose focus or realize they are not top most in the z-order.

The only possible solution for something like this I can think of is to embed the window/crosshair as a child (like a control) on the game itself, and test various things to see what loses integrity that way.

Things you may want to look at:

SetWindowsLong

GetWindowsLong

And if you can get the source of AnyGUI.au3, you may see specifically how to do it with native code even.

Common sense plays a role in the basics of understanding AutoIt... If you're lacking in that, do us all a favor, and step away from the computer.

Posted

A friend of mine(Monoceres) was describing this to me yesterday. These fullscreen FPS games that use D3D aren't really fullscreen apps. They actually go to the video card. Thus the reason you can't 'overlay' them without a massive flicker. He can describe it a lot better than I can.

It is possible. But you need to know some C++ and be able to create a custom DLL. And if I remember right he said a normal windows app won't show/work with it. You need to use D3D to create a custom window. :mellow:

If I find the code I had I'll post it(If I have it). I did get a normal window to overlay, however the flicker was still bad enough that it was hard to read. It will be good enough for a quick short notification.

Szhlopp

Posted

  Szhlopp said:

A friend of mine(Monoceres) was describing this to me yesterday. These fullscreen FPS games that use D3D aren't really fullscreen apps. They actually go to the video card. Thus the reason you can't 'overlay' them without a massive flicker. He can describe it a lot better than I can.

It is possible. But you need to know some C++ and be able to create a custom DLL. And if I remember right he said a normal windows app won't show/work with it. You need to use D3D to create a custom window. :mellow:

If I find the code I had I'll post it(If I have it). I did get a normal window to overlay, however the flicker was still bad enough that it was hard to read. It will be good enough for a quick short notification.

Szhlopp

Thanks Szhlopp

Posted

I don't mean to sound dumb, but I'm pretty sure I've seen this done in "Delta Force : Black Hawk Down". It was actually quite simplistic using WinAPI stuff to draw a cross-hair... I know it's an old game, but it utilized DX9.0c, so I can see where this is definitely possible... Just watch out for the new PunkBuster bull, I'm pretty sure a new version takes screenies, and a programmed Cross-hair could get you kicked... :mellow:

SIGNATURE_0X800007D NOT FOUND

Posted

  BinaryBrother said:

I don't mean to sound dumb, but I'm pretty sure I've seen this done in "Delta Force : Black Hawk Down". It was actually quite simplistic using WinAPI stuff to draw a cross-hair... I know it's an old game, but it utilized DX9.0c, so I can see where this is definitely possible... Just watch out for the new PunkBuster bull, I'm pretty sure a new version takes screenies, and a programmed Cross-hair could get you kicked... :mellow:

Yeah, i see some script in autoit with winapi but doesnt work so that's not what you seen...i hope that someone know crosshair working ! :(

Posted (edited)

Hey there I've been having this little trouble myself... however I am a complete rookie at autoit lol :)

I've been scrounging around the forums and I'm really close to getting what i want. I run css in a window because i have two screens so i have no problems with "on top". However, what i found applies a gif on top of the screen which is, unfortunately, clickable... is there any way to make something have a "click-through" feature? I also have no idea how to make this a center of a window instead of center of a monitor.

Any help is much appreciated, thanks all.

Yiyas

#include <WindowsConstants.au3>

$x = @DesktopWidth/2 - 68/2
$y = @DesktopHeight/2 - 68/2

GUICreate("", 68, 68, $x, $y, $WS_POPUP, BitOR($WS_EX_LAYERED, $WS_EX_TOOLWINDOW, $WS_EX_TOPMOST))
GUICtrlCreatePic("crosshair.gif",0,0,68,68)
GUISetState()

While 1
    Sleep(25)
WEnd
Edited by Yiyas
Posted (edited)

  Yiyas said:

Hey there I've been having this little trouble myself... however I am a complete rookie at autoit lol :)

I've been scrounging around the forums and I'm really close to getting what i want. I run css in a window because i have two screens so i have no problems with "on top". However, what i found applies a gif on top of the screen which is, unfortunately, clickable... is there any way to make something have a "click-through" feature? I also have no idea how to make this a center of a window instead of center of a monitor.

Any help is much appreciated, thanks all.

Yiyas

#include <WindowsConstants.au3>

$x = @DesktopWidth/2 - 68/2
$y = @DesktopHeight/2 - 68/2

GUICreate("", 68, 68, $x, $y, $WS_POPUP, BitOR($WS_EX_LAYERED, $WS_EX_TOOLWINDOW, $WS_EX_TOPMOST))
GUICtrlCreatePic("crosshair.gif",0,0,68,68)
GUISetState()

While 1
    Sleep(25)
WEnd
Thanks but can you give us your gif ? Edited by FireFox
Posted

I've seen other threads on this and so far the only way I've seen that works is to refresh the custom cursor (in this case the crosshair) at the same refresh rate as the game.

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...