 |
|

27.06.2017, 23:58
|
|
Новичок
Регистрация: 29.08.2013
Сообщений: 12
С нами:
6685693
Репутация:
53
|
|
Сообщение от Dark_Knight
SF->getGame()-isActiveMenu()
Но это открытое меню! Мне требуется, не допускать его открытия.
|
|
|

28.06.2017, 00:28
|
|
Познавший АНТИЧАТ
Регистрация: 09.03.2013
Сообщений: 1,262
С нами:
6935116
Репутация:
183
|
|
Сообщение от Sonik Mells
Показываю своё меню на рендере (SF), мышь показываю путем SF->getSAMP()->getMisc()->ToggleCursor(true);, вопрос! Как отловить нажатие ESC, дабы скрыть курсор с меню моим, блокируя показ игрового меню?
wndproc хукани и там обрывай
|
|
|

28.06.2017, 13:16
|
|
Постоянный
Регистрация: 17.01.2014
Сообщений: 493
С нами:
6483143
Репутация:
93
|
|
Как получить адрес символьного массива? (через & не хочет, ошибка)
|
|
|

28.06.2017, 14:06
|
|
Познающий
Регистрация: 22.07.2015
Сообщений: 58
С нами:
5689694
Репутация:
68
|
|
help me
Пытаюсь подменить дополнительные цвета SAMPа на свои, но все хорошо до какого-то момента.
Начинаю подменять с адреса 0xB4E67C 128 цветов, примерно так:
C++:
[CODE]
int
iPoint
=
0xB4E67C
;
for
(
int
i
=
0
;
i
Если попробовать инициализировать это во время загрузки - краш по адресу 0x004C74B8
Если попробовать во время игры, варнинги в чат и затем краш. Тоже самое, если заставить игру загружать кастомный carcols.dat
С установленным антикрашем, варнинги в чат летят, но при этом цвета работают правильно
Так же путем экспериментов выяснил, что если в blue подставить число большее 235, все заработает. При этом цвета подменяются правильно и без краша, если не подменять больше 53.
UPD
Остальные цвета нормально прописываются после коннекта/полного подключения samp.dll
UPD2
Работает без крашей только для уже созданных авто, при создании новых авто появяются варнинги по адресу 4C74E1
|
|
|

29.06.2017, 02:45
|
|
Новичок
Регистрация: 29.08.2013
Сообщений: 12
С нами:
6685693
Репутация:
53
|
|
Сообщение от MISTER_GONWIK
wndproc хукани и там обрывай
Все работает, но мне глобальные нажатия на... не нужны. А локальные(для нашего процесса) не получается осуществить.
C++:
Код:
HHOOK keyboardHook
;
LRESULT CALLBACK
KeyboardProc
(
int
nCode
,
WPARAM wParam
,
LPARAM lParam
)
{
if
(
wParam
==
WM_KEYDOWN
&&
nCode
==
HC_ACTION
)
{
PKBDLLHOOKSTRUCT key
=
(
PKBDLLHOOKSTRUCT
)
lParam
;
printf
(
"key: %i\n"
,
key
->
vkCode
)
;
}
return
CallNextHookEx
(
keyboardHook
,
nCode
,
wParam
,
lParam
)
;
}
int
main
(
)
{
keyboardHook
=
SetWindowsHookEx
(
WH_KEYBOARD_LL
,
KeyboardProc
,
NULL
,
NULL
)
;
return
0
;
}
Можно с проверкой if(GAME->IsInForeground()), но что то меня такой вариант не привлекает.
|
|
|

29.06.2017, 07:44
|
|
Познавший АНТИЧАТ
Регистрация: 09.03.2013
Сообщений: 1,262
С нами:
6935116
Репутация:
183
|
|
Сообщение от Sonik Mells
Все работает, но мне глобальные нажатия на... не нужны. А локальные(для нашего процесса) не получается осуществить.
C++:
Код:
HHOOK keyboardHook
;
LRESULT CALLBACK
KeyboardProc
(
int
nCode
,
WPARAM wParam
,
LPARAM lParam
)
{
if
(
wParam
==
WM_KEYDOWN
&&
nCode
==
HC_ACTION
)
{
PKBDLLHOOKSTRUCT key
=
(
PKBDLLHOOKSTRUCT
)
lParam
;
printf
(
"key: %i\n"
,
key
->
vkCode
)
;
}
return
CallNextHookEx
(
keyboardHook
,
nCode
,
wParam
,
lParam
)
;
}
int
main
(
)
{
keyboardHook
=
SetWindowsHookEx
(
WH_KEYBOARD_LL
,
KeyboardProc
,
NULL
,
NULL
)
;
return
0
;
}
Можно с проверкой if(GAME->IsInForeground()), но что то меня такой вариант не привлекает.
У сфа есть свой хук, его и используй
|
|
|

29.06.2017, 10:47
|
|
Новичок
Регистрация: 29.08.2013
Сообщений: 12
С нами:
6685693
Репутация:
53
|
|
Сообщение от MISTER_GONWIK
У сфа есть свой хук, его и используй
Видел SF->getGame()->createHook(), но не разобрался с ней! Не сложно помочь?
|
|
|

29.06.2017, 11:15
|
|
Познавший АНТИЧАТ
Регистрация: 09.03.2013
Сообщений: 1,771
С нами:
6935121
Репутация:
233
|
|
Сообщение от Sonik Mells
Видел SF->getGame()->createHook(), но не разобрался с ней! Не сложно помочь?
SF->registerWndProc(...) вроде
|
|
|

29.06.2017, 11:19
|
|
Флудер
Регистрация: 18.03.2013
Сообщений: 4,080
С нами:
6921957
Репутация:
183
|
|
Сообщение от FYP
SF->registerWndProc(...) вроде
SF->getGame()
|
|
|

29.06.2017, 11:30
|
|
Новичок
Регистрация: 29.08.2013
Сообщений: 12
С нами:
6685693
Репутация:
53
|
|
Сообщение от Dark_Knight
SF->getGame()
Я уже нашел и сделал все) почти все)
C++:
Код:
if
(
uMsg
==
WM_KEYDOWN
)
{
SF
->
getSAMP
(
)
->
getChat
(
)
->
AddChatMessage
(
D3DCOLOR_XRGB
(
80
,
0xEA
,
100
)
,
"out: %i"
,
wParam
)
;
}
SF
->
getGame
(
)
->
registerWndProcCallback
(
SFGame
::
WndProcCallbackPriority
::
HIGH_CB_PRIORITY
,
WndProc
)
;
Теперь вопрос, а как LMENU(LAlt) отловить? не выводит его.
И какой HIGH_CB_...правильней использовать?
Пока, только так придумал
C++:
Код:
bool
CALLBACK
SendPacket
(
stRakNetHookParams
*
params
)
{
if
(
params
->
packetId
==
ID_PLAYER_SYNC
)
{
stOnFootData data
;
params
->
bitStream
->
ResetReadPointer
(
)
;
params
->
bitStream
->
IgnoreBits
(
8
)
;
params
->
bitStream
->
Read
(
(
PCHAR
)
&
data
,
sizeof
(
data
)
)
;
if
(
data
.
sKeys
==
1024
)
{
return
true
;
}
}
return
true
;
}
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|