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

  #31  
Старый 09.07.2023, 06:46
ya_noob
Познающий
Регистрация: 26.10.2022
Сообщений: 57
С нами: 1870038

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

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

В некоторые адреса нужно указатель на float давать, а не само значение, доброе утро.
Что ты имеешь ввиду?
 
Ответить с цитированием

  #32  
Старый 09.07.2023, 09:58
ARMOR
Флудер
Регистрация: 02.02.2019
Сообщений: 5,070
С нами: 3831395

Репутация: 183


По умолчанию

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

Что ты имеешь ввиду?
Получаешь сперва указатель на этот адрес, а потом цже в него записываешь значение.
 
Ответить с цитированием

  #33  
Старый 09.07.2023, 11:23
ya_noob
Познающий
Регистрация: 26.10.2022
Сообщений: 57
С нами: 1870038

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

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

Получаешь сперва указатель на этот адрес, а потом цже в него записываешь значение.
конкретнее? Ну вот указатель на float: "float*". а если полностью: "float* a = (float*)0x1231231321321". но таким образом крашит.

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

Получаешь сперва указатель на этот адрес, а потом цже в него записываешь значение.
Как ты сделал? Можешь написать на примере HealthX?

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

Получаешь сперва указатель на этот адрес, а потом цже в него записываешь значение.
C++:





Код:
struct
Hud
{
Hud
(
)
{
VirtualProtect
(
&
HealthX
,
sizeof
(
float
)
,
PAGE_EXECUTE_READWRITE
,
&
oldProtect
)
;
VirtualProtect
(
&
HealthY
,
sizeof
(
float
)
,
PAGE_EXECUTE_READWRITE
,
&
oldProtect
)
;
HealthX
=
120
;
HealthY
=
70
;
}
DWORD oldProtect
;
float
&
HealthX
=
*
(
float
*
)
0x58EE87
;
//141
float
&
HealthY
=
*
(
float
*
)
0x58EE68
;
//77
}
hud
;


ЧТО НЕ ТАК?

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

Получаешь сперва указатель на этот адрес, а потом цже в него записываешь значение.
C++:





Код:
struct
Hud
{
Hud
(
)
{
VirtualProtect
(
&
HealthX
,
sizeof
(
float
)
,
PAGE_EXECUTE_READWRITE
,
&
oldProtect
)
;
VirtualProtect
(
&
HealthY
,
sizeof
(
float
)
,
PAGE_EXECUTE_READWRITE
,
&
oldProtect
)
;
VirtualProtect
(
&
pHealthX
,
sizeof
(
float
)
,
PAGE_EXECUTE_READWRITE
,
&
oldProtect
)
;
VirtualProtect
(
&
pHealthY
,
sizeof
(
float
)
,
PAGE_EXECUTE_READWRITE
,
&
oldProtect
)
;
pHealthX
=
120
;
pHealthY
=
60
;
*
(
float
*
)
0x58EE87
=
*
(
float
*
)
0x86535C
;
*
(
float
*
)
0x58EE68
=
*
(
float
*
)
0x866CA8
;
}
DWORD oldProtect
;
float
&
HealthX
=
*
(
float
*
)
0x58EE87
;
float
&
HealthY
=
*
(
float
*
)
0x58EE68
;
float
&
pHealthX
=
*
(
float
*
)
0x86535C
;
//141
float
&
pHealthY
=
*
(
float
*
)
0x866CA8
;
//77
}
hud
;


Так тоже крашит. Так что значит в адрес нужно вписывать указатель на float?
 
Ответить с цитированием

  #34  
Старый 09.07.2023, 14:04
ARMOR
Флудер
Регистрация: 02.02.2019
Сообщений: 5,070
С нами: 3831395

Репутация: 183


По умолчанию

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

конкретнее? Ну вот указатель на float: "float*". а если полностью: "float* a = (float*)0x1231231321321". но таким образом крашит.

Как ты сделал? Можешь написать на примере HealthX?

C++:





Код:
struct
Hud
{
Hud
(
)
{
VirtualProtect
(
&
HealthX
,
sizeof
(
float
)
,
PAGE_EXECUTE_READWRITE
,
&
oldProtect
)
;
VirtualProtect
(
&
HealthY
,
sizeof
(
float
)
,
PAGE_EXECUTE_READWRITE
,
&
oldProtect
)
;
HealthX
=
120
;
HealthY
=
70
;
}
DWORD oldProtect
;
float
&
HealthX
=
*
(
float
*
)
0x58EE87
;
//141
float
&
HealthY
=
*
(
float
*
)
0x58EE68
;
//77
}
hud
;


ЧТО НЕ ТАК?

C++:





Код:
struct
Hud
{
Hud
(
)
{
VirtualProtect
(
&
HealthX
,
sizeof
(
float
)
,
PAGE_EXECUTE_READWRITE
,
&
oldProtect
)
;
VirtualProtect
(
&
HealthY
,
sizeof
(
float
)
,
PAGE_EXECUTE_READWRITE
,
&
oldProtect
)
;
VirtualProtect
(
&
pHealthX
,
sizeof
(
float
)
,
PAGE_EXECUTE_READWRITE
,
&
oldProtect
)
;
VirtualProtect
(
&
pHealthY
,
sizeof
(
float
)
,
PAGE_EXECUTE_READWRITE
,
&
oldProtect
)
;
pHealthX
=
120
;
pHealthY
=
60
;
*
(
float
*
)
0x58EE87
=
*
(
float
*
)
0x86535C
;
*
(
float
*
)
0x58EE68
=
*
(
float
*
)
0x866CA8
;
}
DWORD oldProtect
;
float
&
HealthX
=
*
(
float
*
)
0x58EE87
;
float
&
HealthY
=
*
(
float
*
)
0x58EE68
;
float
&
pHealthX
=
*
(
float
*
)
0x86535C
;
//141
float
&
pHealthY
=
*
(
float
*
)
0x866CA8
;
//77
}
hud
;


Так тоже крашит. Так что значит в адрес нужно вписывать указатель на float?
Как вариант юзать такое говно ( Не ебу насколько это правильно ):

C++:





Код:
float
&
pHealth
=
*
*
(
float
*
*
)
(
0x58EE87
)
;
pHealth
=
120.f
;
 
Ответить с цитированием

  #35  
Старый 09.07.2023, 14:13
ya_noob
Познающий
Регистрация: 26.10.2022
Сообщений: 57
С нами: 1870038

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

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

Как вариант юзать такое говно ( Не ебу насколько это правильно ):

C++:





Код:
float
&
pHealth
=
*
*
(
float
*
*
)
(
0x58EE87
)
;
pHealth
=
120.f
;

Получилось, но не умею понятия как именно это работает. Почему через "float& pHealth = *(float*)(0x58EE87)" крашит, а через "float& pHealth = **(float**)(0x58EE87)" - нет, ведь в обоих случая изменяя значение по указателю, оно все равно изменится в переменной на который этот указатель указывает
 
Ответить с цитированием

  #36  
Старый 09.07.2023, 15:41
kin4stat
Флудер
Регистрация: 06.11.2017
Сообщений: 2,759
С нами: 4483143

Репутация: 183


По умолчанию

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

Как вариант юзать такое говно ( Не ебу насколько это правильно ):

C++:





Код:
float
&
pHealth
=
*
*
(
float
*
*
)
(
0x58EE87
)
;
pHealth
=
120.f
;

Некоторые константы могут использоваться в других местах кода. Поэтому изменять саму константы стоит только в случаях, когда есть полная уверенность что константа используется только в одном месте.

Например, если изменить саму константу дистанции прорисовки текста от /dl, то сломаются хпбары над игроками. Поэтому в этом случае нужно менять именно указатель на значение, а не само значение.

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

Получилось, но не умею понятия как именно это работает. Почему через "float& pHealth = *(float*)(0x58EE87)" крашит, а через "float& pHealth = **(float**)(0x58EE87)" - нет, ведь в обоих случая изменяя значение по указателю, оно все равно изменится в переменной на который этот указатель указывает
Потому что (float*)0x1337

Это получение указателя с адресом 0x1337.

(float**)0x1337 это получение указателя, которое лежит по адресу 0x1337
 
Ответить с цитированием

  #37  
Старый 09.07.2023, 16:09
ya_noob
Познающий
Регистрация: 26.10.2022
Сообщений: 57
С нами: 1870038

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

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

Некоторые константы могут использоваться в других местах кода. Поэтому изменять саму константы стоит только в случаях, когда есть полная уверенность что константа используется только в одном месте.

Например, если изменить саму константу дистанции прорисовки текста от /dl, то сломаются хпбары над игроками. Поэтому в этом случае нужно менять именно указатель на значение, а не само значение.

Потому что (float*)0x1337
Это получение указателя с адресом 0x1337.
(float**)0x1337 это получение указателя, которое лежит по адресу 0x1337
[float** a = float* b (константа) + какое-то значение] - то есть вот так примерно схематично высчитывается позиция ХПбара? Или нет? В любом случае спасибо
 
Ответить с цитированием

  #38  
Старый 08.08.2023, 02:11
Vintik
Познавший АНТИЧАТ
Регистрация: 18.08.2017
Сообщений: 1,568
С нами: 4598023

Репутация: 183


По умолчанию

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

Health PosX - 0x58EE87
Health PosY - 0x58EE68
Health Width - 0x5892D8
Health Height - 0x589358
game координаты или window?

в любом случае (и так, и так проверил) хп бар выводится слева сверху, а он справа...

C++:





Код:
static
const
float
radarX1
=
*
*
(
float
*
*
)
0x58EE87
;
static
const
float
radarY1
=
*
*
(
float
*
*
)
0x58EE68
;
static
const
float
radarWidth
=
*
*
(
float
*
*
)
0x5892D8
;
static
const
float
radarHeight
=
*
*
(
float
*
*
)
0x589358
;
SF
->
getRender
(
)
->
DrawBox
(
radarX1
,
radarY1
,
radarWidth
,
radarHeight
,
D3DCOLOR_ARGB
(
120
,
0
,
255
,
0
)
)
;
SF
->
getRender
(
)
->
EndRender
(
)
;


где ошибка?







upd: вопрос решил, может кому-то будет полезно решение. координаты там игровые (game), их надо переводить в экранные. и еще почему-это конкретно с радаром вертикальные координаты (ось Y) считаются снизу вверх. низ экрана - 0 координата, верх - 448. размер игрового экрана 640 x 448 (Ш x В). вот код:

C++:





Код:
float
radarX1
=
*
*
(
float
*
*
)
0x58A79B
;
float
radarY1
=
448
-
*
*
(
float
*
*
)
0x58A7C7
;
float
radarWidth
=
*
*
(
float
*
*
)
0x5834C2
;
float
radarHeight
=
*
*
(
float
*
*
)
0x58A47D
;
SF
->
getGame
(
)
->
convertGameCoordsToWindow
(
radarX1
,
radarY1
,
&
radarX1
,
&
radarY1
)
;
SF
->
getGame
(
)
->
convertGameCoordsToWindow
(
radarWidth
,
radarHeight
,
&
radarWidth
,
&
radarHeight
)
;
SF
->
getRender
(
)
->
DrawBox
(
radarX1
,
radarY1
,
radarWidth
,
radarHeight
,
D3DCOLOR_ARGB
(
120
,
0
,
255
,
0
)
)
;


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





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


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




ANTICHAT ™ © 2001- Antichat Kft.

×

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

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

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

×

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

Сумма USDT:

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

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