 |
|

02.08.2020, 19:13
|
|
Постоянный
Регистрация: 24.07.2017
Сообщений: 867
С нами:
4633764
Репутация:
148
|
|
Сообщение от Musaigen
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*
а почему инменно reinterept_cast а не static_cast и не простое разименование указателя?
|
|
|

02.08.2020, 19:17
|
|
Флудер
Регистрация: 06.11.2017
Сообщений: 2,759
С нами:
4483143
Репутация:
183
|
|
Сообщение от loganhackerdff
а почему инменно reinterept_cast а не static_cast и не простое разименование указателя?
Потому что reinterpret_cast буквально говорит: Видишь тут хранится float? Вот, считай что теперь это int
А static_cast пытается сохранить значение. Т.е. float 4.0f превратится в int 4, а не в миллион
И получается тебе надо взять тот же указатель, но чтобы процессор расценивал его как void*, Поэтому реинтерпрет каст
Тут более подробно распишу для тех кому интересно:
4 типа int хранится в памяти как 0x00000004, а 4 типа float хранится как 0x00008040
Если сделать reinterpret_cast 4 типа float к int, то получим 1082130432, а не как мы ожидали 4.
Static cast же сделает из 0x00008040 0x00000004
Да, я знаю что нельзя кастовать float к int, просто мне было удобно это для примера  (Ограничение можно обойти через memcpy)
|
|
|

02.08.2020, 19:36
|
|
Новичок
Регистрация: 28.10.2018
Сообщений: 28
С нами:
3970020
Репутация:
18
|
|
Сообщение от Musaigen
reinterpret_cast(0xB6F5F0)
Нет. *reinterpret_cast(0xB6F5F0). В данном случае ты сделал абсолютно бессмысленное кастование, одно и то же, что reinterpret_cast(0xB6F5F0)
|
|
|

02.08.2020, 21:36
|
|
Познавший АНТИЧАТ
Регистрация: 01.04.2018
Сообщений: 1,710
С нами:
4272230
Репутация:
183
|
|
Сообщение от Const
Нет. *reinterpret_cast(0xB6F5F0). В данном случае ты сделал абсолютно бессмысленное кастование, одно и то же, что reinterpret_cast(0xB6F5F0)
Я знаю что нужно именно так кастовать, только у @T4yz1e может не быть класса CPed, я и показал как нужно кастовать в этом случае.
Конечно можно ещё сделать класс пустышку, но зачем?
|
|
|

02.08.2020, 21:49
|
|
Новичок
Регистрация: 28.10.2018
Сообщений: 28
С нами:
3970020
Репутация:
18
|
|
Сообщение от Musaigen
Я знаю что нужно именно так кастовать, только у @T4yz1e может не быть класса CPed, я и показал как нужно кастовать в этом случае.
Конечно можно ещё сделать класс пустышку, но зачем?
Ты даже в том случае написал неправильно, если использовать с void, правильно будет *reinterpret_cast(), а если написать class CPed не нужно объявлять класс-пустышку.
|
|
|

02.08.2020, 23:25
|
|
Познающий
Регистрация: 06.11.2015
Сообщений: 95
С нами:
5535607
Репутация:
58
|
|
3 вопроса:
1] Есть ли функция на то, имеет ли игрок у себя оружие под определённым id? lua:
hasCharGotWeapon(Ped ped, int weapon)
2] Можно ли как то делать изменение активации считывая нажатия с клавиатуры? Тип не так что id клавишы вводиться или её имя, а ты начал кнопку X, программа зарегала её id
3] Есть альтернатива на взятие ствола в руку? lua:
setCurrentCharWeapon(playerPed, id)
|
|
|

02.08.2020, 23:40
|
|
Флудер
Регистрация: 26.10.2013
Сообщений: 4,924
С нами:
6603505
Репутация:
183
|
|
Сообщение от #Babon
3 вопроса:
1] Есть ли функция на то, имеет ли игрок у себя оружие под определённым id? lua:
hasCharGotWeapon(Ped ped, int weapon)
2] Можно ли как то делать изменение активации считывая нажатия с клавиатуры? Тип не так что id клавишы вводиться или её имя, а ты начал кнопку X, программа зарегала её id
3] Есть альтернатива на взятие ствола в руку? lua:
setCurrentCharWeapon(playerPed, id)
1. есть
2. можно
3. есть
|
|
|

02.08.2020, 23:46
|
|
Новичок
Регистрация: 28.10.2018
Сообщений: 28
С нами:
3970020
Репутация:
18
|
|
Сообщение от #Babon
3 вопроса:
1] Есть ли функция на то, имеет ли игрок у себя оружие под определённым id? lua:
hasCharGotWeapon(Ped ped, int weapon)
2] Можно ли как то делать изменение активации считывая нажатия с клавиатуры? Тип не так что id клавишы вводиться или её имя, а ты начал кнопку X, программа зарегала её id
3] Есть альтернатива на взятие ствола в руку? lua:
setCurrentCharWeapon(playerPed, id)
1.
C++:
Код:
__int32
getCurrentWeapon
(
)
{
return
*
reinterpret_cast
(
0x00BAA410
)
;
}
2. самый простой вариант, на скорую руку:
C++:
Код:
#include
#include
uint32_t
cheat_key
=
0
;
void
new_key
(
uint32_t
&
cheat_key
)
{
std
::
vector
virtual_keys
=
{
VK_INSERT
,
VK_DELETE
,
VK_HOME
,
// добавляешь сюда все айдишники клавиш, из которых будет осуществляться выбор
}
;
while
(
true
)
{
for
(
auto
key
:
virtual_keys
)
{
if
(
GetAsyncKeyState
(
key
)
)
{
cheat_key
=
key
;
return
;
}
}
}
}
std
::
thread
thr
(
[
&
]
(
)
{
new_key
(
cheat_key
)
;
}
)
;
thr
.
detach
(
)
;
|
|
|

02.08.2020, 23:50
|
|
Постоянный
Регистрация: 24.07.2017
Сообщений: 867
С нами:
4633764
Репутация:
148
|
|
Сообщение от Const
1.
C++:
Код:
__int32
getCurrentWeapon
(
)
{
return
*
reinterpret_cast
(
0x00BAA410
)
;
}
2. самый простой вариант, на скорую руку:
C++:
Код:
#include
#include
uint32_t
cheat_key
=
0
;
void
new_key
(
uint32_t
&
cheat_key
)
{
std
::
vector
virtual_keys
=
{
VK_INSERT
,
VK_DELETE
,
VK_HOME
,
// добавляешь сюда все айдишники клавиш, из которых будет осуществляться выбор
}
;
while
(
true
)
{
for
(
auto
key
:
virtual_keys
)
{
if
(
GetAsyncKeyState
(
key
)
)
{
cheat_key
=
key
;
return
;
}
}
}
}
std
::
thread
thr
(
[
&
]
(
)
{
new_key
(
cheat_key
)
;
}
)
;
thr
.
detach
(
)
;
C++:
[CODE]
bool
KeyButton
(
uint16_t
&
key
,
char
cSpliter
)
{
char
szKey
[
32
]
;
if
(
key
!=
0
)
{
GetKeyNameTextA
(
(
MapVirtualKeyA
(
key
,
MAPVK_VK_TO_VSC
)
|
|
|

02.08.2020, 23:59
|
|
Познавший АНТИЧАТ
Регистрация: 09.03.2013
Сообщений: 1,262
С нами:
6935116
Репутация:
183
|
|
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|