HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
Баннер 1   Баннер 2
НОВЫЕ ТОРГОВАЯ НОВОСТИ ЧАТ
loading...
Скрыть
Вернуться   ANTICHAT > ПРОГРАММИРОВАНИЕ > С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #4661  
Старый 31.07.2020, 18:01
manukhov
Участник форума
Регистрация: 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. Уровень статистики, необходимый для получения текущего навыка владения оружи
 
Ответить с цитированием

  #4662  
Старый 31.07.2020, 18:13
kin4stat
Флудер
Регистрация: 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
 
Ответить с цитированием

  #4663  
Старый 31.07.2020, 20:29
manukhov
Участник форума
Регистрация: 14.04.2018
Сообщений: 122
С нами: 4254200

Репутация: 98
По умолчанию

Цитата:
Сообщение от KiN4StAt  

В спойлере скилл локального игрока в процентах. Может быть можно обратным способом записать туда значение. https://www.blast.hk/threads/10970/post-98968
Ну так там считывают, а изменять то как? Что записать? ID оружия + 0x36?
 
Ответить с цитированием

  #4664  
Старый 31.07.2020, 20:53
kin4stat
Флудер
Регистрация: 06.11.2017
Сообщений: 2,759
С нами: 4483143

Репутация: 183


По умолчанию

Цитата:
Сообщение от T4yz1e  

Ну так там считывают, а изменять то как? Что записать? ID оружия + 0x36?
Таким же образом, только тебе ReadProcessMemory надо на WriteProcessMemory сменить
 
Ответить с цитированием

  #4665  
Старый 31.07.2020, 21:13
loganhackerdff
Постоянный
Регистрация: 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
)
;
}
 
Ответить с цитированием

  #4666  
Старый 31.07.2020, 21:50
kin4stat
Флудер
Регистрация: 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
)
;
}

Он экстреналы делает
 
Ответить с цитированием

  #4667  
Старый 31.07.2020, 22:24
manukhov
Участник форума
Регистрация: 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 для примера вполне хватит
 
Ответить с цитированием

  #4668  
Старый 02.08.2020, 18:28
manukhov
Участник форума
Регистрация: 14.04.2018
Сообщений: 122
С нами: 4254200

Репутация: 98
По умолчанию

Цитата:
Сообщение от KiN4StAt  

Он экстреналы делает
Да без разницы в принципе, главное чтобы без SF)
 
Ответить с цитированием

  #4669  
Старый 02.08.2020, 18:29
kin4stat
Флудер
Регистрация: 06.11.2017
Сообщений: 2,759
С нами: 4483143

Репутация: 183


По умолчанию

Цитата:
Сообщение от T4yz1e  

Да без разницы в принципе, главное чтобы без SF)
Меня тоже бесит когда везде все через SF делается
 
Ответить с цитированием

  #4670  
Старый 02.08.2020, 19:00
Musaigen
Познавший АНТИЧАТ
Регистрация: 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)
 


Быстрый переход




ANTICHAT ™ © 2001- Antichat Kft.

×

Внести депозит

Введите сумму USDT:

Принимается только USDT TRC20. Fake/Flash USDT не засчитывается.

×

Вывести депозит

Сумма USDT:

Ваш USDT TRC20 кошелек:

Заявка будет отправлена администратору.