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

  #1  
Старый 18.10.2018, 18:41
CleanLegend
Постоянный
Регистрация: 28.03.2013
Сообщений: 495
С нами: 6908018

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

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

как отловить то что один игрок выстрелил в другого игрока и попал?
Через входящую синхронизацию пуль
 
Ответить с цитированием

  #2  
Старый 20.10.2018, 01:39
jenekbueno
Участник форума
Регистрация: 12.10.2014
Сообщений: 156
С нами: 6096955

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

в собейте, во входящих рпц, в частности RPC_ClientMessage при попытке перезаписать битстрим - краш, как я понял если длина новой строки больше чем старой, то поэтому крашит, в сф траблов не было с этим, кто понимает в чем проблема, помогите
 
Ответить с цитированием

  #3  
Старый 20.10.2018, 07:32
Roger571
Познающий
Регистрация: 22.07.2015
Сообщений: 58
С нами: 5689694

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

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

в собейте, во входящих рпц, в частности RPC_ClientMessage при попытке перезаписать битстрим - краш, как я понял если длина новой строки больше чем старой, то поэтому крашит, в сф траблов не было с этим, кто понимает в чем проблема, помогите
ClientMessage

Нужно записывать не только самому строку, но и ее новую длину dwStrLen (strlen)
 
Ответить с цитированием

  #4  
Старый 20.10.2018, 09:05
jenekbueno
Участник форума
Регистрация: 12.10.2014
Сообщений: 156
С нами: 6096955

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

да неужели?) я как будто бы незнал)

 
Ответить с цитированием

  #5  
Старый 20.10.2018, 11:20
Roger571
Познающий
Регистрация: 22.07.2015
Сообщений: 58
С нами: 5689694

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

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

да неужели?) я как будто бы незнал)
bits->Reset();
 
Ответить с цитированием

  #6  
Старый 21.10.2018, 12:07
jenekbueno
Участник форума
Регистрация: 12.10.2014
Сообщений: 156
С нами: 6096955

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

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

bits->Reset();
не помогло)

upd:

логично что крашит, ведь изначально numberOfBitsOfData до перезаписи меньше из за длины строки, а если длина строки больше, то и размер больше будет, поэтому и крашит.

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

  #7  
Старый 21.10.2018, 00:29
LaRossa
Постоянный
Регистрация: 04.02.2017
Сообщений: 429
С нами: 4878878

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

Как проверить, что определённый игрок афк?
 
Ответить с цитированием

  #8  
Старый 21.10.2018, 07:48
ALF
Постоянный
Регистрация: 14.11.2017
Сообщений: 319
С нами: 4472205

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

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

Как проверить, что определённый игрок афк?
C++:





Код:
// sf
if
(
SF
->
getSAMP
(
)
->
getPlayers
(
)
->
pRemotePlayer
[
ид игрока
]
->
pPlayerData
->
iAFKState
)
{
}
// собейт
if
(
g_Players
->
pRemotePlayer
[
ид игрока
]
->
pPlayerData
->
iAFKState
)
{
}
 
Ответить с цитированием

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

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

как отправить пулю через стену?

допустим имея такой код

C++:





Код:
void
BulletData
(
float
aimHit
[
3
]
,
float
bodyPos
[
3
]
,
float
hitPos
[
3
]
,
BYTE hitType
,
uint16_t
id
)
{
stBulletData sync
;
ZeroMemory
(
&
sync
,
sizeof
(
stBulletData
)
)
;
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
.
byteType
=
hitType
;
sync
.
sTargetID
=
id
;
sync
.
byteWeaponID
=
SF
->
getSAMP
(
)
->
getPlayers
(
)
->
pLocalPlayer
->
byteCurrentWeapon
;
BitStream BulletSync
;
BulletSync
.
Write
(
(
BYTE
)
PacketEnumeration
::
ID_BULLET_SYNC
)
;
BulletSync
.
Write
(
(
PCHAR
)
&
sync
,
sizeof
(
stBulletData
)
)
;
SF
->
getRakNet
(
)
->
SendPacket
(
&
BulletSync
)
;
UpdateAmmo
(
)
;
}
 
Ответить с цитированием

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

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

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

как отправить пулю через стену?
допустим имея такой код

C++:





Код:
void
BulletData
(
float
aimHit
[
3
]
,
float
bodyPos
[
3
]
,
float
hitPos
[
3
]
,
BYTE hitType
,
uint16_t
id
)
{
stBulletData sync
;
ZeroMemory
(
&
sync
,
sizeof
(
stBulletData
)
)
;
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
.
byteType
=
hitType
;
sync
.
sTargetID
=
id
;
sync
.
byteWeaponID
=
SF
->
getSAMP
(
)
->
getPlayers
(
)
->
pLocalPlayer
->
byteCurrentWeapon
;
BitStream BulletSync
;
BulletSync
.
Write
(
(
BYTE
)
PacketEnumeration
::
ID_BULLET_SYNC
)
;
BulletSync
.
Write
(
(
PCHAR
)
&
sync
,
sizeof
(
stBulletData
)
)
;
SF
->
getRakNet
(
)
->
SendPacket
(
&
BulletSync
)
;
UpdateAmmo
(
)
;
}

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

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
)
;
}
 
Ответить с цитированием
Ответ





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


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




ANTICHAT ™ © 2001- Antichat Kft.