 |
|

19.08.2017, 12:16
|
|
Участник форума
Регистрация: 12.07.2013
Сообщений: 161
С нами:
6755146
Репутация:
78
|
|
Сообщение от Снежок
C++:
Код:
stOnFootData sync
;
memset
(
&
sync
,
0
,
sizeof
(
stOnFootData
)
)
;
sync
=
SF
->
getSAMP
(
)
->
getPlayers
(
)
->
pLocalPlayer
->
onFootData
;
sync
.
sKeys
=
131072
;
BitStream bsActorSync
;
bsActorSync
.
Write
(
(
BYTE
)
ID_PLAYER_SYNC
)
;
bsActorSync
.
Write
(
(
PCHAR
)
&
sync
,
sizeof
(
stOnFootData
)
)
;
SF
->
getRakNet
(
)
->
SendPacket
(
&
bsActorSync
)
;
Пытаюсь отправить нажатие клавиши N через синхру, но почему-то именно эта клавиша (а ещё Y) не отсылается (при нажатии sKeys остаётся 0), но при этом если заноппить "ноги", сервер перестанет реагировать на нажатие, что говорит о том что оно отсылается-таки через них.
Ну и вопрос: что не так? коды клавиш взял отсюда, способ заполнения и отправки взял отсюда, даже на всякий проверил на соответствие правильному варианту структуры samp.lua
На сколько я помню нажатие Y передаётся в currentWeapon, скорее всего нажатие N передаётся аналогичным образом.
|
|
|

19.08.2017, 12:24
|
|
Постоянный
Регистрация: 10.01.2016
Сообщений: 922
С нами:
5441999
Репутация:
133
|
|
Сообщение от CarLCas
На сколько я помню нажатие Y передаётся в currentWeapon, скорее всего нажатие N передаётся аналогичным образом.
Да, так и есть
Сообщение от Снежок
C++:
Код:
stOnFootData sync
;
memset
(
&
sync
,
0
,
sizeof
(
stOnFootData
)
)
;
sync
=
SF
->
getSAMP
(
)
->
getPlayers
(
)
->
pLocalPlayer
->
onFootData
;
sync
.
sKeys
=
131072
;
BitStream bsActorSync
;
bsActorSync
.
Write
(
(
BYTE
)
ID_PLAYER_SYNC
)
;
bsActorSync
.
Write
(
(
PCHAR
)
&
sync
,
sizeof
(
stOnFootData
)
)
;
SF
->
getRakNet
(
)
->
SendPacket
(
&
bsActorSync
)
;
Пытаюсь отправить нажатие клавиши N через синхру, но почему-то именно эта клавиша (а ещё Y) не отсылается (при нажатии sKeys остаётся 0), но при этом если заноппить "ноги", сервер перестанет реагировать на нажатие, что говорит о том что оно отсылается-таки через них.
Ну и вопрос: что не так? коды клавиш взял отсюда, способ заполнения и отправки взял отсюда, даже на всякий проверил на соответствие правильному варианту структуры samp.lua
Вот тебе функция:
C++:
Код:
void
EmulKey
(
int
KeyId
)
{
stOnFootData sync
;
memset
(
&
sync
,
0
,
sizeof
(
stOnFootData
)
)
;
sync
=
SF
->
getSAMP
(
)
->
getPlayers
(
)
->
pLocalPlayer
->
onFootData
;
sync
.
byteCurrentWeapon
=
KeyId
;
BitStream bsActorSync
;
bsActorSync
.
Write
(
(
BYTE
)
ID_PLAYER_SYNC
)
;
bsActorSync
.
Write
(
(
PCHAR
)
&
sync
,
sizeof
(
stOnFootData
)
)
;
SF
->
getRakNet
(
)
->
SendPacket
(
&
bsActorSync
)
;
memset
(
&
bsActorSync
,
0
,
sizeof
(
BitStream
)
)
;
sync
.
byteCurrentWeapon
=
0
;
bsActorSync
.
Write
(
(
BYTE
)
ID_PLAYER_SYNC
)
;
bsActorSync
.
Write
(
(
PCHAR
)
&
sync
,
sizeof
(
stOnFootData
)
)
;
SF
->
getRakNet
(
)
->
SendPacket
(
&
bsActorSync
)
;
}
|
|
|

19.08.2017, 21:41
|
|
Постоянный
Регистрация: 17.01.2014
Сообщений: 493
С нами:
6483143
Репутация:
93
|
|
Сообщение от BlackKnigga
Да, так и есть
Вот тебе функция:
C++:
Код:
void
EmulKey
(
int
KeyId
)
{
stOnFootData sync
;
memset
(
&
sync
,
0
,
sizeof
(
stOnFootData
)
)
;
sync
=
SF
->
getSAMP
(
)
->
getPlayers
(
)
->
pLocalPlayer
->
onFootData
;
sync
.
byteCurrentWeapon
=
KeyId
;
BitStream bsActorSync
;
bsActorSync
.
Write
(
(
BYTE
)
ID_PLAYER_SYNC
)
;
bsActorSync
.
Write
(
(
PCHAR
)
&
sync
,
sizeof
(
stOnFootData
)
)
;
SF
->
getRakNet
(
)
->
SendPacket
(
&
bsActorSync
)
;
memset
(
&
bsActorSync
,
0
,
sizeof
(
BitStream
)
)
;
sync
.
byteCurrentWeapon
=
0
;
bsActorSync
.
Write
(
(
BYTE
)
ID_PLAYER_SYNC
)
;
bsActorSync
.
Write
(
(
PCHAR
)
&
sync
,
sizeof
(
stOnFootData
)
)
;
SF
->
getRakNet
(
)
->
SendPacket
(
&
bsActorSync
)
;
}
так у тебя же там повторяется код, или это я слепой?
|
|
|

19.08.2017, 22:01
|
|
Постоянный
Регистрация: 10.01.2016
Сообщений: 922
С нами:
5441999
Репутация:
133
|
|
Сообщение от Снежок
так у тебя же там повторяется код, или это я слепой?
Все правильно, сначала отправляем зажатую клавишу, потом отжатую. Это надежнее чем простой спам пакетами
|
|
|

19.08.2017, 22:07
|
|
Флудер
Регистрация: 26.10.2013
Сообщений: 4,924
С нами:
6603505
Репутация:
183
|
|
Сообщение от BlackKnigga
Все правильно, сначала отправляем зажатую клавишу, потом отжатую. Это надежнее чем простой спам пакетами
он сам отправит отжатую же. Ты ведь не держишь клавишу. И почему KeyId - int, если CurrentWeapon всего байт?
|
|
|

19.08.2017, 22:09
|
|
Постоянный
Регистрация: 10.01.2016
Сообщений: 922
С нами:
5441999
Репутация:
133
|
|
Сообщение от SR_team
он сам отправит отжатую же. Ты ведь не держишь клавишу. И почему KeyId - int, если CurrentWeapon всего байт?
Заодно и убережет от зажатой клавишы тогда.
А по второму - функция не моя, нашел тут и скинул
|
|
|

20.08.2017, 15:47
|
|
Флудер
Регистрация: 22.11.2015
Сообщений: 2,128
С нами:
5512984
Репутация:
183
|
|
как прочитать 99 строчку из чата?
|
|
|

20.08.2017, 15:50
|
|
Флудер
Регистрация: 23.03.2013
Сообщений: 2,696
С нами:
6915558
Репутация:
183
|
|
Сообщение от sanek a.k.a Maks_Fender
как прочитать 99 строчку из чата?
Если строки чата хранятся в массиве, то наверно нужно прочитать массив по индексу 99.
|
|
|

20.08.2017, 15:51
|
|
Флудер
Регистрация: 22.11.2015
Сообщений: 2,128
С нами:
5512984
Репутация:
183
|
|
Сообщение от legend2360
Если строки чата хранятся в массиве, то наверно нужно прочитать массив по индексу 99.
есть где функи посмотреть?
|
|
|

20.08.2017, 15:56
|
|
Флудер
Регистрация: 23.03.2013
Сообщений: 2,696
С нами:
6915558
Репутация:
183
|
|
Сообщение от sanek a.k.a Maks_Fender
есть где функи посмотреть?
Какие функи? Получаешь указатель на массив, читаешь его.
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|