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

  #4671  
Старый 02.08.2020, 19:13
loganhackerdff
Постоянный
Регистрация: 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 и не простое разименование указателя?
 
Ответить с цитированием

  #4672  
Старый 02.08.2020, 19:17
kin4stat
Флудер
Регистрация: 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)
 
Ответить с цитированием

  #4673  
Старый 02.08.2020, 19:36
Const
Новичок
Регистрация: 28.10.2018
Сообщений: 28
С нами: 3970020

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

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

reinterpret_cast(0xB6F5F0)
Нет. *reinterpret_cast(0xB6F5F0). В данном случае ты сделал абсолютно бессмысленное кастование, одно и то же, что reinterpret_cast(0xB6F5F0)
 
Ответить с цитированием

  #4674  
Старый 02.08.2020, 21:36
Musaigen
Познавший АНТИЧАТ
Регистрация: 01.04.2018
Сообщений: 1,710
С нами: 4272230

Репутация: 183


По умолчанию

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

Нет. *reinterpret_cast(0xB6F5F0). В данном случае ты сделал абсолютно бессмысленное кастование, одно и то же, что reinterpret_cast(0xB6F5F0)
Я знаю что нужно именно так кастовать, только у @T4yz1e может не быть класса CPed, я и показал как нужно кастовать в этом случае.

Конечно можно ещё сделать класс пустышку, но зачем?
 
Ответить с цитированием

  #4675  
Старый 02.08.2020, 21:49
Const
Новичок
Регистрация: 28.10.2018
Сообщений: 28
С нами: 3970020

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

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

Я знаю что нужно именно так кастовать, только у @T4yz1e может не быть класса CPed, я и показал как нужно кастовать в этом случае.
Конечно можно ещё сделать класс пустышку, но зачем?
Ты даже в том случае написал неправильно, если использовать с void, правильно будет *reinterpret_cast(), а если написать class CPed не нужно объявлять класс-пустышку.
 
Ответить с цитированием

  #4676  
Старый 02.08.2020, 23:25
bab0n
Познающий
Регистрация: 06.11.2015
Сообщений: 95
С нами: 5535607

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

3 вопроса:

1] Есть ли функция на то, имеет ли игрок у себя оружие под определённым id? lua:

hasCharGotWeapon(Ped ped, int weapon)

2] Можно ли как то делать изменение активации считывая нажатия с клавиатуры? Тип не так что id клавишы вводиться или её имя, а ты начал кнопку X, программа зарегала её id

3] Есть альтернатива на взятие ствола в руку? lua:

setCurrentCharWeapon(playerPed, id)
 
Ответить с цитированием

  #4677  
Старый 02.08.2020, 23:40
SR_team
Флудер
Регистрация: 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. есть
 
Ответить с цитированием

  #4678  
Старый 02.08.2020, 23:46
Const
Новичок
Регистрация: 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
(
)
;
 
Ответить с цитированием

  #4679  
Старый 02.08.2020, 23:50
loganhackerdff
Постоянный
Регистрация: 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
)

 
Ответить с цитированием

  #4680  
Старый 02.08.2020, 23:59
MISTER_GONWIK
Познавший АНТИЧАТ
Регистрация: 09.03.2013
Сообщений: 1,262
С нами: 6935116

Репутация: 183


По умолчанию

@Const , @loganhackerdff wndproc для кого существует
 
Ответить с цитированием
Ответ





Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


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




ANTICHAT ™ © 2001- Antichat Kft.