 |
|

31.07.2020, 18:01
|
|
Участник форума
Регистрация: 14.04.2018
Сообщений: 122
С нами:
4254200
Репутация:
98
|
|
Добрый вечер, вот что из этого всего реально отвечает за смену навыков владения оружием?
1. CPed +0x72C = [byte] Навык владения оружием (0-4)
2. 0xC8AAB8 - Начало блока, куда считывается информация об оружии с меткой J (оружие ближнего боя) и $ (остальное оружие). В этом блоке 0x50 элементов по 0x70 байт в каждом. Индекс элемента высчитывается по формуле: + . Смещение определяется навыком оружия skilllevel: STD - 0, POOR - 25, PRO - 36, особое (характеристики пистолета копов) - 47. Все имена взяты из заголовка оригинального weapon.dat.
3.
- +0x30 = [dword] Владение оружием
- 0 - POOR //Наихудшее
- 1 - STD //Среднее
- 2 - PRO //Наилучшее
- 3 - особое
- +0x34 = [dword] statrequired. Уровень статистики, необходимый для получения текущего навыка владения оружи
|
|
|

31.07.2020, 18:13
|
|
Флудер
Регистрация: 06.11.2017
Сообщений: 2,759
С нами:
4483143
Репутация:
183
|
|
Сообщение от T4yz1e
Добрый вечер, вот что из этого всего реально отвечает за смену навыков владения оружием?
1. CPed +0x72C = [byte] Навык владения оружием (0-4)
2. 0xC8AAB8 - Начало блока, куда считывается информация об оружии с меткой J (оружие ближнего боя) и $ (остальное оружие). В этом блоке 0x50 элементов по 0x70 байт в каждом. Индекс элемента высчитывается по формуле: + . Смещение определяется навыком оружия skilllevel: STD - 0, POOR - 25, PRO - 36, особое (характеристики пистолета копов) - 47. Все имена взяты из заголовка оригинального weapon.dat.
3. - +0x30 = [dword] Владение оружием
- 0 - POOR //Наихудшее
- 1 - STD //Среднее
- 2 - PRO //Наилучшее
- 3 - особое
- +0x34 = [dword] statrequired. Уровень статистики, необходимый для получения текущего навыка владения оружи
В спойлере скилл локального игрока в процентах. Может быть можно обратным способом записать туда значение. https://www.blast.hk/threads/10970/post-98968
|
|
|

31.07.2020, 20:29
|
|
Участник форума
Регистрация: 14.04.2018
Сообщений: 122
С нами:
4254200
Репутация:
98
|
|
Ну так там считывают, а изменять то как? Что записать? ID оружия + 0x36?
|
|
|

31.07.2020, 20:53
|
|
Флудер
Регистрация: 06.11.2017
Сообщений: 2,759
С нами:
4483143
Репутация:
183
|
|
Сообщение от T4yz1e
Ну так там считывают, а изменять то как? Что записать? ID оружия + 0x36?
Таким же образом, только тебе ReadProcessMemory надо на WriteProcessMemory сменить
|
|
|

31.07.2020, 21:13
|
|
Постоянный
Регистрация: 24.07.2017
Сообщений: 867
С нами:
4633764
Репутация:
148
|
|
Сообщение от T4yz1e
Ну так там считывают, а изменять то как? Что записать? ID оружия + 0x36?
в dwAddr просто перед адресом добавь (DWORD*)
C++:
Код:
template
void
WriteMem
(
DWORD
*
dwAddr
,
size_t size
,
T value
)
{
DWORD NewProtection
;
VirtualProtect
(
dwAddr
,
size
,
PAGE_EXECUTE_READWRITE
,
&
NewProtection
)
;
*
reinterpret_cast
(
dwAddr
)
=
value
;
VirtualProtect
(
dwAddr
,
size
,
NewProtection
,
&
NewProtection
)
;
}
|
|
|

31.07.2020, 21:50
|
|
Флудер
Регистрация: 06.11.2017
Сообщений: 2,759
С нами:
4483143
Репутация:
183
|
|
Сообщение от loganhackerdff
в dwAddr просто перед адресом добавь (DWORD*)
C++:
Код:
template
void
WriteMem
(
DWORD
*
dwAddr
,
size_t size
,
T value
)
{
DWORD NewProtection
;
VirtualProtect
(
dwAddr
,
size
,
PAGE_EXECUTE_READWRITE
,
&
NewProtection
)
;
*
reinterpret_cast
(
dwAddr
)
=
value
;
VirtualProtect
(
dwAddr
,
size
,
NewProtection
,
&
NewProtection
)
;
}
Он экстреналы делает
|
|
|

31.07.2020, 22:24
|
|
Участник форума
Регистрация: 14.04.2018
Сообщений: 122
С нами:
4254200
Репутация:
98
|
|
Сообщение от loganhackerdff
в dwAddr просто перед адресом добавь (DWORD*)
C++:
Код:
template
void
WriteMem
(
DWORD
*
dwAddr
,
size_t size
,
T value
)
{
DWORD NewProtection
;
VirtualProtect
(
dwAddr
,
size
,
PAGE_EXECUTE_READWRITE
,
&
NewProtection
)
;
*
reinterpret_cast
(
dwAddr
)
=
value
;
VirtualProtect
(
dwAddr
,
size
,
NewProtection
,
&
NewProtection
)
;
}
ты точно этот код прикрепить хотел? Wpm для примера вполне хватит
|
|
|

02.08.2020, 18:28
|
|
Участник форума
Регистрация: 14.04.2018
Сообщений: 122
С нами:
4254200
Репутация:
98
|
|
Сообщение от KiN4StAt
Он экстреналы делает
Да без разницы в принципе, главное чтобы без SF)
|
|
|

02.08.2020, 18:29
|
|
Флудер
Регистрация: 06.11.2017
Сообщений: 2,759
С нами:
4483143
Репутация:
183
|
|
Сообщение от T4yz1e
Да без разницы в принципе, главное чтобы без SF)
Меня тоже бесит когда везде все через SF делается
|
|
|

02.08.2020, 19:00
|
|
Познавший АНТИЧАТ
Регистрация: 01.04.2018
Сообщений: 1,710
С нами:
4272230
Репутация:
183
|
|
Сообщение от T4yz1e
Добрый вечер, вот что из этого всего реально отвечает за смену навыков владения оружием?
1. CPed +0x72C = [byte] Навык владения оружием (0-4)
2. 0xC8AAB8 - Начало блока, куда считывается информация об оружии с меткой J (оружие ближнего боя) и $ (остальное оружие). В этом блоке 0x50 элементов по 0x70 байт в каждом. Индекс элемента высчитывается по формуле: + . Смещение определяется навыком оружия skilllevel: STD - 0, POOR - 25, PRO - 36, особое (характеристики пистолета копов) - 47. Все имена взяты из заголовка оригинального weapon.dat.
3. - +0x30 = [dword] Владение оружием
- 0 - POOR //Наихудшее
- 1 - STD //Среднее
- 2 - PRO //Наилучшее
- 3 - особое
- +0x34 = [dword] statrequired. Уровень статистики, необходимый для получения текущего навыка владения оружи
C++:
Код:
// Для internal'a
// weaponType - ID оружия.
// cSkill - сам скилл.
void
CPed
::
SetWeaponSkill
(
eWeaponType weaponType
,
char
cSkill
)
{
// Вместо eWeaponType можно и int
reinterpret_cast
(
0x5E3C10
)
(
this
,
weaponType
,
cSkill
)
;
}
this можно заменить
Код:
*reinterpret_cast(0xB6F5F0)
Ну и понятное дело вместо CPed* поставить void*
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|