
19.11.2018, 00:53
|
|
Флудер
Регистрация: 26.10.2013
Сообщений: 4,924
С нами:
6603505
Репутация:
183
|
|
Сообщение от checkdasound
Почему меня телепортирует на "спавн сампа" (центр карты вроде как), вместо тп на метку?
Код нахождения координат метки и функцию нахождения координаты z брал из собейта.
Честно говоря, я не разбираюсь в ассемблере, поэтому даже не знаю с чем это связано.
Сообщение от Спойлер
C++:
[CODE]
#define FUNC_CMessages__AddMessageJumpQ 0x69F1E0
#define FUNC_FindGroundZForCoord 0x569660
void
AddMessageJumpQ
(
PCHAR text
,
UINT time
,
USHORT flag
,
bool
bPreviousBrief
)
// Функция показа сообщения на экране.
{
(
(
void
(
__cdecl
*
)
(
PCHAR
,
UINT
,
USHORT
,
bool
)
)
FUNC_CMessages__AddMessageJumpQ
)
(
text
,
time
,
flag
,
bPreviousBrief
)
;
}
float
FindGroundZForPosition
(
float
fX
,
float
fY
)
{
//DEBUG_TRACE("FLOAT CWorldSA::FindGroundZForPosition(FLOAT fX, FLOAT fY)");
DWORD dwFunc
=
FUNC_FindGroundZForCoord
;
FLOAT fReturn
=
0
;
_asm
{
push fY
push fX
call dwFunc
fstp fReturn
add esp
,
8
}
return
fReturn
;
}
void
teleport
(
float
posX
,
float
posY
,
float
posZ
)
{
float
*
position
=
(
*
(
DWORD
*
)
0xB6F5F0
)
?
(
float
*
)
(
*
(
DWORD
*
)
(
*
(
DWORD
*
)
0xB6F5F0
+
0x14
)
+
0x30
)
:
nullptr
;
position
[
0
]
=
posX
;
position
[
1
]
=
posY
;
position
[
2
]
=
posZ
;
}
void
teleport_target_blip
(
)
{
if
(
(
*
(
int
*
)
0xBA6774
!=
0
)
)
{
float
mapPos
[
3
]
;
for
(
int
i
=
0
;
i
Да там и не нужен ассемблер, просто разраб соба выебывался. Всю функцию можно заменить вот таким вот вызовом в одну строку:
C++:
Код:
float
fZ
=
(
(
float
(
__cdecl
*
)
(
float
,
float
)
)
FUNC_FindGroundZForCoord
)
(
fX
,
fY
)
;
|
|
|
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|