 |
|

29.10.2018, 19:37
|
|
Участник форума
Регистрация: 17.12.2017
Сообщений: 110
С нами:
4423953
Репутация:
68
|
|
как получить координату определенной кости игрока?
|
|
|

29.10.2018, 19:55
|
|
Участник форума
Регистрация: 13.03.2016
Сообщений: 242
С нами:
5351007
Репутация:
0
|
|
Сообщение от beento
как получить координату определенной кости игрока?
C++:
Код:
actor_info
*
actorInfo
=
SF
->
getSAMP
(
)
->
getPlayers
(
)
->
pRemotePlayer
[
идИгрока
]
->
pPlayerData
->
pSAMP_Actor
->
pGTA_Ped
;
if
(
actorInfo
==
nullptr
)
return
;
CPed
*
Ped
=
GAME
->
GetPools
(
)
->
GetPed
(
(
DWORD
*
)
actorInfo
)
;
if
(
Ped
==
nullptr
)
return
;
CVector bonePos
;
Ped
->
GetTransformedBonePosition
(
BONE_RIGHTWRIST
,
&
bonePos
)
;
|
|
|

30.10.2018, 13:25
|
|
Участник форума
Регистрация: 17.12.2017
Сообщений: 110
С нами:
4423953
Репутация:
68
|
|
в общем, узнал что на сервере такое условие
если камера смотрит больше чем на два метра от точки попадания пули, то кик
так вот, как мне направить камеру именно в те координаты куда должна попасть пуля
C++:
Код:
void
AimVectorToPlayer
(
WORD player
)
{
stAimData aim
=
SF
->
getSAMP
(
)
->
getPlayers
(
)
->
pLocalPlayer
->
aimData
;
actor_info
*
actorInfo
=
SF
->
getSAMP
(
)
->
getPlayers
(
)
->
pRemotePlayer
[
player
]
->
pPlayerData
->
pSAMP_Actor
->
pGTA_Ped
;
float
matched_pos
[
3
]
,
AimVector
[
3
]
;
vect3_copy
(
actorInfo
->
base
.
matrix
+
12
,
matched_pos
)
;
float
*
fPos
=
actorInfo
->
base
.
matrix
+
12
;
for
(
int
i
=
0
;
i
getRakNet
(
)
->
SendPacket
(
&
bs
)
;
}
void
SendFakeDamage
(
int
id
)
{
float
TargetPos
[
3
]
,
Spread
[
3
]
;
switch
(
SF
->
getSAMP
(
)
->
getPlayers
(
)
->
pRemotePlayer
[
id
]
->
pPlayerData
->
bytePlayerState
)
{
case
PLAYER_STATE_ONFOOT
:
for
(
short
x
=
0
;
x
getSAMP
(
)
->
getPlayers
(
)
->
pRemotePlayer
[
id
]
->
pPlayerData
->
fOnFootPos
[
x
]
;
break
;
case
PLAYER_STATE_DRIVER
:
for
(
short
x
=
0
;
x
getSAMP
(
)
->
getPlayers
(
)
->
pRemotePlayer
[
id
]
->
pPlayerData
->
inCarData
.
fPosition
[
x
]
;
break
;
case
PLAYER_STATE_PASSENGER
:
for
(
short
x
=
0
;
x
getSAMP
(
)
->
getPlayers
(
)
->
pRemotePlayer
[
id
]
->
pPlayerData
->
passengerData
.
fPosition
[
x
]
;
break
;
}
byte BodyPart
=
CalculateSpreadOffset
(
id
,
TargetPos
,
Spread
)
;
AimVectorToPlayer
(
id
)
;
BulletData
(
TargetPos
,
Spread
,
1
,
id
)
;
SendTakeDamageRPC
(
id
,
SF
->
getSAMP
(
)
->
getPlayers
(
)
->
pLocalPlayer
->
byteCurrentWeapon
,
16.0
,
BodyPart
)
;
}
|
|
|

30.10.2018, 13:50
|
|
Постоянный
Регистрация: 28.03.2013
Сообщений: 495
С нами:
6908018
Репутация:
213
|
|
Сообщение от beento
в общем, узнал что на сервере такое условие
если камера смотрит больше чем на два метра от точки попадания пули, то кик
так вот, как мне направить камеру именно в те координаты куда должна попасть пуля
C++:
Код:
void
AimVectorToPlayer
(
WORD player
)
{
stAimData aim
=
SF
->
getSAMP
(
)
->
getPlayers
(
)
->
pLocalPlayer
->
aimData
;
actor_info
*
actorInfo
=
SF
->
getSAMP
(
)
->
getPlayers
(
)
->
pRemotePlayer
[
player
]
->
pPlayerData
->
pSAMP_Actor
->
pGTA_Ped
;
float
matched_pos
[
3
]
,
AimVector
[
3
]
;
vect3_copy
(
actorInfo
->
base
.
matrix
+
12
,
matched_pos
)
;
float
*
fPos
=
actorInfo
->
base
.
matrix
+
12
;
for
(
int
i
=
0
;
i
getRakNet
(
)
->
SendPacket
(
&
bs
)
;
}
Функция AimVectorToPlayer направляет синхру прицеливания в сторону игрока, по другому сервер не может проверять, так что этого достаточно
|
|
|

30.10.2018, 14:38
|
|
Участник форума
Регистрация: 17.12.2017
Сообщений: 110
С нами:
4423953
Репутация:
68
|
|
я отправляю синхру на координаты игрока, а не на те координаты куда попадет пуля, поэтому меня кикает, потому что условие в античите такое
просто мне нужно узнать в какие координаты попадет пуля
|
|
|

30.10.2018, 19:13
|
|
Участник форума
Регистрация: 13.03.2016
Сообщений: 242
С нами:
5351007
Репутация:
0
|
|
Сообщение от beento
я отправляю синхру на координаты игрока, а не на те координаты куда попадет пуля, поэтому меня кикает, потому что условие в античите такое
просто мне нужно узнать в какие координаты попадет пуля
Ну так возьми координаты кости к которой у тебя высчитывает разброс
|
|
|

30.10.2018, 20:48
|
|
Участник форума
Регистрация: 17.12.2017
Сообщений: 110
С нами:
4423953
Репутация:
68
|
|
так я получу кординаты кости относительно игрока, и как мне их реализовать в аим синхре?
|
|
|

30.10.2018, 20:52
|
|
Участник форума
Регистрация: 13.03.2016
Сообщений: 242
С нами:
5351007
Репутация:
0
|
|
Сообщение от beento
так я получу кординаты кости относительно игрока, и как мне их реализовать в аим синхре?
У тебя есть функа для отправки вектора, просто вместо координат педа поставь туда от кости
|
|
|

31.10.2018, 17:21
|
|
Участник форума
Регистрация: 17.12.2017
Сообщений: 110
С нами:
4423953
Репутация:
68
|
|
как установить метку на карте по координатам
|
|
|

31.10.2018, 17:49
|
|
Участник форума
Регистрация: 13.03.2016
Сообщений: 242
С нами:
5351007
Репутация:
0
|
|
Сообщение от beento
как установить метку на карте по координатам
C++:
[CODE]
if
(
(
*
(
int
*
)
0xBA6774
!=
0
)
)
{
for
(
int
i
=
0
;
i
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|