 |
|

09.07.2023, 06:46
|
|
Познающий
Регистрация: 26.10.2022
Сообщений: 57
С нами:
1870038
Репутация:
8
|
|
Сообщение от kin4stat
В некоторые адреса нужно указатель на float давать, а не само значение, доброе утро.
Что ты имеешь ввиду?
|
|
|

09.07.2023, 09:58
|
|
Флудер
Регистрация: 02.02.2019
Сообщений: 5,070
С нами:
3831395
Репутация:
183
|
|
Сообщение от ya_noob
Что ты имеешь ввиду?
Получаешь сперва указатель на этот адрес, а потом цже в него записываешь значение.
|
|
|

09.07.2023, 11:23
|
|
Познающий
Регистрация: 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?
|
|
|

09.07.2023, 14:04
|
|
Флудер
Регистрация: 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
;
|
|
|

09.07.2023, 14:13
|
|
Познающий
Регистрация: 26.10.2022
Сообщений: 57
С нами:
1870038
Репутация:
8
|
|
Сообщение от ARMOR
Как вариант юзать такое говно ( Не ебу насколько это правильно ):
C++:
Код:
float
&
pHealth
=
*
*
(
float
*
*
)
(
0x58EE87
)
;
pHealth
=
120.f
;
Получилось, но не умею понятия как именно это работает. Почему через "float& pHealth = *(float*)(0x58EE87)" крашит, а через "float& pHealth = **(float**)(0x58EE87)" - нет, ведь в обоих случая изменяя значение по указателю, оно все равно изменится в переменной на который этот указатель указывает
|
|
|

09.07.2023, 15:41
|
|
Флудер
Регистрация: 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
|
|
|

09.07.2023, 16:09
|
|
Познающий
Регистрация: 26.10.2022
Сообщений: 57
С нами:
1870038
Репутация:
8
|
|
Сообщение от kin4stat
Некоторые константы могут использоваться в других местах кода. Поэтому изменять саму константы стоит только в случаях, когда есть полная уверенность что константа используется только в одном месте.
Например, если изменить саму константу дистанции прорисовки текста от /dl, то сломаются хпбары над игроками. Поэтому в этом случае нужно менять именно указатель на значение, а не само значение.
Потому что (float*)0x1337
Это получение указателя с адресом 0x1337.
(float**)0x1337 это получение указателя, которое лежит по адресу 0x1337
[float** a = float* b (константа) + какое-то значение] - то есть вот так примерно схематично высчитывается позиция ХПбара? Или нет? В любом случае спасибо
|
|
|

08.08.2023, 02:11
|
|
Познавший АНТИЧАТ
Регистрация: 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)
|
|
|
|