GTA Builder Форум

Vice Lua => Разработка плагинов. => Тема начата: Prographer от Апрель 11, 2016, 12:02:11 pm

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

Код: Lua
  1. int l_SetHydraulics(lua_State *l) {
  2.         DWORD _old;
  3.         VirtualProtect((LPVOID)0x0594611, 4, PAGE_READWRITE, &_old);
  4.         *(int*)(0x0594611) = lua_tonumber(l, 1);
  5.         VirtualProtect((LPVOID)0x0594611, 4, _old, &_old);
  6.         return 0;
  7. }
  8.