 |
|

18.01.2016, 23:39
|
|
Новичок
Регистрация: 06.10.2015
Сообщений: 13
С нами:
5580077
Репутация:
0
|
|
Сообщение от kemperrr
Спрошу еще раз, нашел как отправить на сервер пакет о нажатии клавиши, но беда, нажимается только один раз (код находится в mainloop), пытаясь отправить пакет о том что клавиша не нажата так же нажимается 1 раз + теряется соединение с сервером, дак вот более опытные подскажите как сделать что бы не отправлялось столько пакетов(во избежания дисконнектов) и сделать цикличное нажатие одной и той же клавиши дапустим Y ( Y - 64(0x40) , когда не нажата - 0(0x0) )
Код:
Код:
stOnFootData sync;
memset(&sync, 0, sizeof(stOnFootData));
sync = SF->getSAMP()->getPlayers()->pLocalPlayer->onFootData;
sync.byteCurrentWeapon = 64; // Y
BitStream bsActorSync;
bsActorSync.Write((BYTE)ID_PLAYER_SYNC);
bsActorSync.Write((PCHAR)&sync, sizeof(stOnFootData));
SF->getRakNet()->SendPacket(&bsActorSync);
byteCurrentWeapon - оружие в руке, а не нажатая клавиша
|
|
|

19.01.2016, 13:22
|
|
Участник форума
Регистрация: 04.02.2014
Сообщений: 104
С нами:
6456767
Репутация:
68
|
|
Сообщение от nikita_cheater
byteCurrentWeapon - оружие в руке, а не нажатая клавиша
RakLogger пиздеть не будет + я же говорю что он 1 раз нажимается
|
|
|

19.01.2016, 20:48
|
|
Новичок
Регистрация: 06.10.2015
Сообщений: 13
С нами:
5580077
Репутация:
0
|
|
Сообщение от kemperrr
RakLogger пиздеть не будет + я же говорю что он 1 раз нажимается
Значит в твоем случае пиздит
|
|
|

19.01.2016, 21:48
|
|
Участник форума
Регистрация: 04.02.2014
Сообщений: 104
С нами:
6456767
Репутация:
68
|
|
Сообщение от nikita_cheater
Значит в твоем случае пиздит
Говорю еще раз - он 1 раз нажимает клавишу второй раз не хочет, а если после этой клавиши будет другая дапустим N потом Y и так поочередно то работает спокойно, но если же N надо нажать два раза то нажимается 1 раз вместо 2, 3 и так далее
|
|
|

19.01.2016, 22:18
|
|
Постоянный
Регистрация: 14.06.2015
Сообщений: 402
С нами:
5744580
Репутация:
28
|
|
Где ты взял что Y это 64?
|
|
|

19.01.2016, 22:56
|
|
Постоянный
Регистрация: 14.06.2015
Сообщений: 402
С нами:
5744580
Репутация:
28
|
|
Сообщение от kemperrr
Говорю еще раз - он 1 раз нажимает клавишу второй раз не хочет, а если после этой клавиши будет другая дапустим N потом Y и так поочередно то работает спокойно, но если же N надо нажать два раза то нажимается 1 раз вместо 2, 3 и так далее
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
)
;
}
И в мэин
C++:
[CODE]
for
(
int
i
=
0
;
i
|
|
|

20.01.2016, 10:29
|
|
Участник форума
Регистрация: 04.02.2014
Сообщений: 104
С нами:
6456767
Репутация:
68
|
|
[QUOTE="Woofing Giraffe"]
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
)
;
}
И в мэин
C++:
[CODE]
for
(
int
i
=
0
;
i
|
|
|

20.01.2016, 12:18
|
|
Флудер
Регистрация: 18.03.2013
Сообщений: 4,080
С нами:
6921957
Репутация:
183
|
|
Зачем это ты используешь?
Код:
Код:
memset(&bsActorSync, 0, sizeof(BitStream));
sync.byteCurrentWeapon = 0;
bsActorSync.Write((BYTE)ID_PLAYER_SYNC);
bsActorSync.Write((PCHAR)&sync, sizeof(stOnFootData));
SF->getRakNet()->SendPacket(&bsActorSync);
|
|
|

20.01.2016, 12:22
|
|
Постоянный
Регистрация: 14.06.2015
Сообщений: 402
С нами:
5744580
Репутация:
28
|
|
Обнулить клавишу, оно без этого почему то 2 и более раз 1 и ту же клавишу не отправит
|
|
|

21.01.2016, 22:10
|
|
Участник форума
Регистрация: 09.03.2015
Сообщений: 218
С нами:
5884065
Репутация:
0
|
|
есть ли функция конвектора из 3D в 2D
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|