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

  #1  
Старый 21.10.2018, 19:22
-raymond-
Участник форума
Регистрация: 17.12.2017
Сообщений: 110
С нами: 4423953

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

Цитата:
Сообщение от Rzeźnik  

Перед этим тебе необходимо отправить аим синхру

C++:





Код:
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
=
ASF
->
getSAMP
(
)
->
getPlayers
(
)
->
pLocalPlayer
->
aimData
;
actor_info
*
actorInfo
=
ASF
->
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
)
;
}

Поставил, все равно нет попадания свозь стену
 
Ответить с цитированием

  #2  
Старый 21.10.2018, 20:21
ЯedЯuM
Участник форума
Регистрация: 13.03.2016
Сообщений: 242
С нами: 5351007

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

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

Поставил, все равно нет попадания свозь стену
Полный код в студию, надеюсь ты рпц урона после пули не забыл?
 
Ответить с цитированием

  #3  
Старый 21.10.2018, 20:31
-raymond-
Участник форума
Регистрация: 17.12.2017
Сообщений: 110
С нами: 4423953

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

можешь скинуть код который будет возвращать aim sync в прошлое положение?
 
Ответить с цитированием

  #4  
Старый 23.10.2018, 01:49
ЯedЯuM
Участник форума
Регистрация: 13.03.2016
Сообщений: 242
С нами: 5351007

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

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

можешь скинуть код который будет возвращать aim sync в прошлое положение?
Что мешает записывать в массив старый вектор перед отправкой?
 
Ответить с цитированием

  #5  
Старый 22.10.2018, 15:38
Musaigen
Познавший АНТИЧАТ
Регистрация: 01.04.2018
Сообщений: 1,710
С нами: 4272230

Репутация: 183


По умолчанию

Как проверить то что игрок стреляет?
 
Ответить с цитированием

  #6  
Старый 22.10.2018, 15:49
CleanLegend
Постоянный
Регистрация: 28.03.2013
Сообщений: 495
С нами: 6908018

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

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

Как проверить то что игрок стреляет?
можно в этой структуре

C++:





Код:
SF
->
getSAMP
(
)
->
getPlayers
(
)
->
pRemotePlayer
[
id
]
->
pPlayerData
->
onFootData
.
stSampKeys
.
keys_primaryFire


либо через эту структуру, но её нет в SF

C++:





Код:
g_Players
->
pRemotePlayer
[
id
]
->
pPlayerData
->
pSAMP_Actor
->
pGTA_Ped
->
pedFlags
.
bFiringWeapon


еще можно через анимку
 
Ответить с цитированием

  #7  
Старый 24.10.2018, 16:36
Musaigen
Познавший АНТИЧАТ
Регистрация: 01.04.2018
Сообщений: 1,710
С нами: 4272230

Репутация: 183


По умолчанию

Как можно получить id транспорта имея его vehicle_info?

И ещё, как проверить, то что игрок водит любую машину?
 
Ответить с цитированием

  #8  
Старый 24.10.2018, 17:16
ЯedЯuM
Участник форума
Регистрация: 13.03.2016
Сообщений: 242
С нами: 5351007

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

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

Как можно получить id транспорта имея его vehicle_info?

И ещё, как проверить, то что игрок водит любую машину?
Получение samp vehicle ида по vehicle_info

C++:





Код:
WORD
GetVehicleIdFromStruct
(
vehicle_info
*
vif
)
{
if
(
vif
==
nullptr
)
return
65535
;
for
(
WORD v
=
0
;
v

getSAMP
(
)
->
getVehicles
(
)
->
pGTA_Vehicle
[
v
]
)
return
v
;
}
return
65535
;
}


Проверка игрока на вождение

C++:





Код:
bool
IsPlayerDriving
(
WORD playerId
)
{
if
(
!
SF
->
getSAMP
(
)
->
getPlayers
(
)
->
iIsListed
[
playerId
]
)
return
false
;
if
(
SF
->
getSAMP
(
)
->
getPlayers
(
)
->
sLocalPlayerID
==
playerId
)
{
if
(
SF
->
getGame
(
)
->
getCurrentState
(
)
==
CHEAT_STATE_VEHICLE
&&
(
SF
->
getSAMP
(
)
->
getVehicles
(
)
->
iIsListed
[
SF
->
getSAMP
(
)
->
getPlayers
(
)
->
pLocalPlayer
->
inCarData
.
sVehicleID
]
&&
SF
->
getSAMP
(
)
->
getVehicles
(
)
->
iIsListed2
[
SF
->
getSAMP
(
)
->
getPlayers
(
)
->
pLocalPlayer
->
inCarData
.
sVehicleID
]
)
)
return
true
;
}
else
{
if
(
SF
->
getSAMP
(
)
->
getPlayers
(
)
->
pRemotePlayer
[
playerId
]
->
pPlayerData
->
bytePlayerState
==
PLAYER_STATE_DRIVER
)
return
true
;
}
return
false
;
}
 
Ответить с цитированием

  #9  
Старый 26.10.2018, 16:20
-raymond-
Участник форума
Регистрация: 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
)
;
}
 
Ответить с цитированием

  #10  
Старый 26.10.2018, 17:05
ЯedЯuM
Участник форума
Регистрация: 13.03.2016
Сообщений: 242
С нами: 5351007

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

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

пуля не отправляется через стену

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
)
;
}

Ясен трясен, во-первых тебе нужно sync.fOrigin[2] = aimHit[2]; рандомить немного чтобы античит на сало не выебал

Во-вторых у тебя разброс не может быть таким - его спалит любой античит старый, зайди в тему SF полезные функции в этом же разделе, я там вылаживал свою функу расчёта валидного разброса до нужной части тела.

И к слову, ты получаешь пешую позицию жертвы но не проверяешь пешком ли она, если будет в тачке будут траблы, нужно и для тачки позицию брать если чел в каре
 
Ответить с цитированием
Ответ





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


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




ANTICHAT ™ © 2001- Antichat Kft.