 |

11.05.2021, 00:37
|
|
Новичок
Регистрация: 10.11.2020
Сообщений: 29
С нами:
2899504
Репутация:
3
|
|
В плагине считываю нажатые клавиши для ввода текста в хуке WndProc, как сделать, чтобы игра их игнорировала?
К примеру, при написании "test message" открывается чат и в него уходят остатки сообщения
|
|
|

11.05.2021, 00:57
|
|
Постоянный
Регистрация: 03.05.2020
Сообщений: 385
С нами:
3174020
Репутация:
213
|
|
Сообщение от smvrty
как сделать, чтобы игра их игнорировала?
не вызывать оригинальный wnd proc (return false, убрать оригинальный вызов)
|
|
|

11.05.2021, 01:45
|
|
Новичок
Регистрация: 10.11.2020
Сообщений: 29
С нами:
2899504
Репутация:
3
|
|
Сообщение от SC6UT
не вызывать оригинальный wnd proc (return false, убрать оригинальный вызов)
мб я дурачок, но не работает
прописал все три клавиши для открытия: T, F6, ~
код:
Код:
LRESULT WINAPI
HookWndProc
(
HWND hWnd
,
UINT msg
,
WPARAM wParam
,
UINT lParam
)
{
MenuInjector
(
hWnd
,
msg
,
wParam
,
lParam
)
;
switch
(
msg
)
{
case
WM_KEYDOWN
:
if
(
currentMenu
!=
-
1
)
{
if
(
(
wParam
==
VK_OEM_3
)
||
(
wParam
==
0x54
)
||
(
wParam
==
VK_F6
)
)
{
return
false
;
}
}
break
;
case
WM_KEYUP
:
if
(
currentMenu
!=
-
1
)
{
if
(
(
wParam
==
VK_OEM_3
)
||
(
wParam
==
0x54
)
||
(
wParam
==
VK_F6
)
)
{
return
false
;
}
}
break
;
}
return
CallWindowProc
(
(
WNDPROC
)
(
OrigWndProc
)
,
hWnd
,
msg
,
wParam
,
lParam
)
;
}
|
|
|

11.05.2021, 02:02
|
|
Новичок
Регистрация: 10.11.2020
Сообщений: 29
С нами:
2899504
Репутация:
3
|
|
Перепроверил: F6 игнорируется, а T и тильда по-прежнему открывают чат
|
|
|

11.05.2021, 21:07
|
|
Новичок
Регистрация: 10.11.2020
Сообщений: 29
С нами:
2899504
Репутация:
3
|
|
Подниму
|
|
|

13.05.2021, 22:27
|
|
Постоянный
Регистрация: 29.05.2017
Сообщений: 394
С нами:
4714653
Репутация:
98
|
|
Отпишите если найдёте решение. Писал похожий код для мыши, так он работает максимально непредсказуемо.
|
|
|

14.05.2021, 19:57
|
|
Познавший АНТИЧАТ
Регистрация: 01.04.2018
Сообщений: 1,710
С нами:
4272230
Репутация:
183
|
|
Сообщение от smvrty
мб я дурачок, но не работает
прописал все три клавиши для открытия: T, F6, ~
код:
Код:
LRESULT WINAPI
HookWndProc
(
HWND hWnd
,
UINT msg
,
WPARAM wParam
,
UINT lParam
)
{
MenuInjector
(
hWnd
,
msg
,
wParam
,
lParam
)
;
switch
(
msg
)
{
case
WM_KEYDOWN
:
if
(
currentMenu
!=
-
1
)
{
if
(
(
wParam
==
VK_OEM_3
)
||
(
wParam
==
0x54
)
||
(
wParam
==
VK_F6
)
)
{
return
false
;
}
}
break
;
case
WM_KEYUP
:
if
(
currentMenu
!=
-
1
)
{
if
(
(
wParam
==
VK_OEM_3
)
||
(
wParam
==
0x54
)
||
(
wParam
==
VK_F6
)
)
{
return
false
;
}
}
break
;
}
return
CallWindowProc
(
(
WNDPROC
)
(
OrigWndProc
)
,
hWnd
,
msg
,
wParam
,
lParam
)
;
}
~ и T надо патчить.
|
|
|

14.05.2021, 21:17
|
|
Новичок
Регистрация: 10.11.2020
Сообщений: 29
С нами:
2899504
Репутация:
3
|
|
Сообщение от Musaigen
~ и T надо патчить.
Можно, пожалуйста, с примером?😅
|
|
|

14.05.2021, 21:54
|
|
Постоянный
Регистрация: 03.05.2020
Сообщений: 385
С нами:
3174020
Репутация:
213
|
|
Сообщение от smvrty
Можно, пожалуйста, с примером?😅
C++:
Код:
void
toggleEnableChat
(
bool
enable
)
{
DWORD oldVP
;
DWORD base
=
reinterpret_cast
(
GetModuleHandleA
(
"samp"
)
)
;
if
(
enable
)
{
// off - set retn
VirtualProtect
(
reinterpret_cast
(
base
+
0x657E0
)
,
sizeof
(
uint8_t
)
,
PAGE_EXECUTE_READWRITE
,
&
oldVP
)
;
*
reinterpret_cast
(
base
+
0x657E0
)
=
0xC3
;
VirtualProtect
(
reinterpret_cast
(
base
+
0x657E0
)
,
sizeof
(
uint8_t
)
,
oldVP
,
&
oldVP
)
;
}
else
{
// on - set sub
VirtualProtect
(
reinterpret_cast
(
base
+
0x657E0
)
,
sizeof
(
uint8_t
)
,
PAGE_EXECUTE_READWRITE
,
&
oldVP
)
;
*
reinterpret_cast
(
base
+
0x657E0
)
=
0x83
;
VirtualProtect
(
reinterpret_cast
(
base
+
0x657E0
)
,
sizeof
(
uint8_t
)
,
oldVP
,
&
oldVP
)
;
}
}
включает/выключает включение чата
|
|
|

14.05.2021, 22:32
|
|
Познавший АНТИЧАТ
Регистрация: 01.04.2018
Сообщений: 1,710
С нами:
4272230
Репутация:
183
|
|
Сообщение от smvrty
Можно, пожалуйста, с примером?😅
Клавиша T: samp.dll + 0x5DAF4, байты: 0xC3 0x90 0x90 0x90, оригинальные байты: 0x8B 0x54 0x24 0x04 (для SA:MP 0.3.7 R1)
Насчёт тильды хз.
|
|
|
|
 |
Предыдущая тема
Следующая тема
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|