GTA Builder Форум
Vice Lua => Разработка плагинов. => Тема начата: Prographer от Апрель 11, 2016, 12:02:11 pm
Название:
Запись одного байта
Отправлено:
Prographer
от
Апрель 11, 2016, 12:02:11 pm
Всем привет. Решил написать функцию
Код: C
unsigned
char
&
hydraulics
=
*
(
unsigned
char
*
)
0x594611
;
// 1 byte size
int
SetHydraulics
(
lua_State
*
l
)
{
unsigned
char
val
=
lua_tonumber
(
l
,
1
)
;
hydraulics
=
val
;
return
0
;
}
При попытке вызвать созданную функцию, игра вылетает. Подскажите, что не так?
Название:
Re: Запись одного байта
Отправлено:
Sektor
от
Май 06, 2016, 02:32:38 am
Вы пытались записать в ту область, которая была защищена от записи и чтения. Пробуйте этот код:
Код: Lua
int l_SetHydraulics
(
lua_State
*
l
)
{
DWORD _old
;
VirtualProtect
(
(
LPVOID
)
0x0594611
,
4
,
PAGE_READWRITE
,
&_old
)
;
*
(
int
*
)
(
0x0594611
)
=
lua_tonumber
(
l
,
1
)
;
VirtualProtect
(
(
LPVOID
)
0x0594611
,
4
,
_old
,
&_old
)
;
return
0
;
}