Тема: Лупа для игр.
Добрый день, нуждаюсь в помощи со следующей реализацией кода..
ИДЕЯ: Хочу сделать лупу участка (к примеру центра) участком и выводить этот участок больше например сбоку.
ПРОБЛЕМЫ: Вывод хорошо (код ниже), но в игре когда кручусь по сторонам мышка которую не видно тоже ездит из угла в угол.. и когда попадает на экран который показывает результат увеличения и я хочу стрельнуть оно переключается на этот экранчик. А когда делаю через код в инете пропуск клика.. то для этого нужно +lastfound а из-за него неработает лупа.. как сделать чтобы оно увеличивало и в тоже время пропускало клик ?
#NoEnv
#NoTrayIcon
SetBatchLines -1
OnExit,GuiClose
SetFormat,float,6.0
SysGet,w,MonitorWorkArea
wbottom+=30
zoom=4
Rx=128
Ry=128
Zx:=Rx/zoom
Zy:=Ry/zoom
paused=0
start=1
WinSet_Click_Through(I, T="254") {
IfWinExist, % "ahk_id " I
{
If (T == "Off")
{
WinSet, AlwaysOnTop, Off, % "ahk_id " I
WinSet, Transparent, Off, % "ahk_id " I
WinSet, ExStyle, -0x20, % "ahk_id " I
}
Else
{
WinSet, AlwaysOnTop, On, % "ahk_id " I
If(T < 0 || T > 254 || T == "On")
T := 254
WinSet, Transparent, % T, % "ahk_id " I
WinSet, ExStyle, +0x20, % "ahk_id " I
}
}
Else
Return 0
}
Gui,3:-Caption +Border +ToolWindow +AlwaysOnTop
Gui,3:Color,EEEEEE
Gui,3:Margin,0,0
Gui,+AlwaysOnTop +Resize +ToolWindow -Caption +LastFound
ID:= WinExist()
Gui,Show, % "w" 2*Rx " h" 2*Ry " x0 y0",ZoomW
WinSet_Click_Through(ID)
GuiControl,, ZoomW, Un-Clickable
WinGet,ID,id,ZoomW
WinGet,PrintSourceID,ID
hdd_frame:=DllCall("GetDC",UInt,PrintSourceID)
hdc_frame:=DllCall("GetDC",UInt,ID)
GuiSize:
loop
{
sleep,10
GetKeyState,rctrl,rctrl,P
if (rctrl="D")
{
if paused=0
{
Gui,Hide
Gui,3:Hide
paused=1
sleep,500
tooltip,
}
else
{
pausedchek=0
Gui,Show
paused=0
sleep,500
}
}
if paused=0
{
WinGetPos,winx,winy,Wn,Hn,ZoomW
wn-=8
Hn-=26
Rx:=Wn/2
Ry:=Hn/2
Zx:=Rx/zoom
Zy:=Ry/zoom
xz:=(1920/2)-(Rx/4)
yz:=(1080/2)-(Ry/4)
DllCall("gdi32.dll\StretchBlt",UInt,hdc_frame,Int,0,Int,0,Int,2*Rx,Int,2*Ry,UInt,hdd_frame,UInt,xz,UInt,yz,Int,2*Zx,Int,2*Zy,UInt,0xCC0020)
ww=%Zx%
hh=%Zy%
ww*=2
hh*=2
xx=%xz%
yy=%yz%
xx-=1
yy-=1
Gui,3:Show,x%xx% y%yy% w%ww% h%hh% NoActivate,frame
;Tooltip, %xx% and %yy% or %Rx% and %Ry%
WinGet,guiid,ID,frame
WinSet,TransColor,EEEEEE,ahk_id %guiid%
ifwinactive,frame
{
zoom-=1
winactivate,ahk_class Shell_TrayWnd
}
In(x,a,b)
{
IfLess x,%a%,Return a
IfLess b,%x%,Return b
Return x
}
}
else
sleep,100
}
Return
^WheelUp::
^WheelDoWn::
If (A_ThisHotKey="^WheelUp")
zoom+=1
If (A_ThisHotKey="^WheelDoWn")
zoom-=1
if zoom<1
zoom=1
if zoom>35
zoom=35
Zx:=Rx/zoom
Zy:=Ry/zoom
Return
GuiClose:
DllCall("gdi32.dll\DeleteDC",UInt,hdc_frame)
DllCall("gdi32.dll\DeleteDC",UInt,hdd_frame)
ExitApp
f4::exitapp
^space::reload