
26.10.2018, 16:20
|
|
Участник форума
Регистрация: 17.12.2017
Сообщений: 110
С нами:
4423953
Репутация:
68
|
|
пуля не отправляется через стену
C++:
Код:
void
BulletData
(
uint16_t
id
)
{
stBulletData sync
;
ZeroMemory
(
&
sync
,
sizeof
(
stBulletData
)
)
;
stRemotePlayer
*
pPlayer
=
SF
->
getSAMP
(
)
->
getPlayers
(
)
->
pRemotePlayer
[
id
]
;
if
(
!
pPlayer
)
return
;
float
aimHit
[
3
]
=
{
PEDSELF
->
GetPosition
(
)
->
fX
,
PEDSELF
->
GetPosition
(
)
->
fY
,
PEDSELF
->
GetPosition
(
)
->
fZ
}
;
float
bodyPos
[
3
]
=
{
pPlayer
->
pPlayerData
->
fOnFootPos
[
0
]
,
pPlayer
->
pPlayerData
->
fOnFootPos
[
1
]
,
pPlayer
->
pPlayerData
->
fOnFootPos
[
2
]
}
;
float
hitPos
[
3
]
=
{
0.0
,
0.0
,
0.5
}
;
sync
.
fOrigin
[
0
]
=
aimHit
[
0
]
;
sync
.
fOrigin
[
1
]
=
aimHit
[
1
]
;
sync
.
fOrigin
[
2
]
=
aimHit
[
2
]
;
sync
.
fTarget
[
0
]
=
bodyPos
[
0
]
;
sync
.
fTarget
[
1
]
=
bodyPos
[
1
]
;
sync
.
fTarget
[
2
]
=
bodyPos
[
2
]
;
sync
.
fCenter
[
0
]
=
hitPos
[
0
]
;
sync
.
fCenter
[
1
]
=
hitPos
[
1
]
;
sync
.
fCenter
[
2
]
=
hitPos
[
2
]
;
sync
.
byteWeaponID
=
SF
->
getSAMP
(
)
->
getPlayers
(
)
->
pLocalPlayer
->
byteCurrentWeapon
;
sync
.
byteType
=
1
;
sync
.
sTargetID
=
id
;
BitStream BulletSync
;
BulletSync
.
Write
(
(
BYTE
)
PacketEnumeration
::
ID_BULLET_SYNC
)
;
BulletSync
.
Write
(
(
PCHAR
)
&
sync
,
sizeof
(
stBulletData
)
)
;
SF
->
getRakNet
(
)
->
SendPacket
(
&
BulletSync
)
;
UpdateAmmo
(
)
;
}
inline
void
SendTakeDamageRPC
(
uint32_t
TargetID
,
unsigned
int
weapon_id
,
int
damage
)
{
BitStream bs
;
bs
.
Write
(
true
)
;
bs
.
Write
(
TargetID
)
;
bs
.
Write
(
(
float
)
damage
)
;
bs
.
Write
(
weapon_id
)
;
bs
.
Write
(
3
)
;
SF
->
getRakNet
(
)
->
SendRPC
(
RPCEnumeration
::
RPC_GiveTakeDamage
,
&
bs
)
;
}
inline
float
vect3_length
(
const
float
in
[
3
]
)
{
return
sqrtf
(
in
[
0
]
*
in
[
0
]
+
in
[
1
]
*
in
[
1
]
+
in
[
2
]
*
in
[
2
]
)
;
}
inline
void
vect3_copy
(
const
float
in
[
3
]
,
float
out
[
3
]
)
{
memcpy
(
out
,
in
,
sizeof
(
float
)
*
3
)
;
}
void
AimVectorToPlayer
(
WORD player
)
// SAMP ID цели
{
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
SendFakeParameters
(
int
id
)
{
AimVectorToPlayer
(
id
)
;
BulletData
(
id
)
;
SendTakeDamageRPC
(
id
,
SF
->
getSAMP
(
)
->
getPlayers
(
)
->
pLocalPlayer
->
byteCurrentWeapon
,
11
)
;
}
|
|
|