Просмотр полной версии : SF | Не отправляется дамаг через BitStream
Ку, пытаюсь нанести урон игроку, но в итоге урона никакого и нет.
Вроде бы все правильно
c++:
int
pid
=
std
::
stoi
(
id
)
;
BitStream givePizda
;
givePizda
.
ResetWritePointer
(
)
;
givePizda
.
Write
(
false
)
;
givePizda
.
Write
(
(
UINT16
)
pid
)
;
givePizda
.
Write
(
(
float
)
1.32
)
;
givePizda
.
Write
(
(
UINT32
)
0
)
;
givePizda
.
Write
(
(
UINT32
)
3
)
;
SF
->
getRakNet
(
)
->
SendRPC
(
RPC_GiveTakeDamage
,
&
givePizda
)
;
givePizda.Write(true);
false
false
Изменил сразу же, как залил. Ничего не изменилось
Изменил сразу же, как залил. Ничего не изменилось
больше ошибок не наблюдаю, отправка должна работать.
больше ошибок не наблюдаю, отправка должна работать.
Ну вот и я о том же
Ошибок нет, а отправка не идет
kin4stat
01.08.2021, 19:24
В этой рпц bool должен быть записан 1 битом, а не байтом, поэтому givePizda.WriteBit(false);
UPD: Packet list от bruno16 говно с дезинфой. Смотрите на вики бластхака(не все рпц там есть) либо в sampevents
kin4stat
01.08.2021, 19:27
givePizda.Write((UINT16)pid);
А еще вместо такого говна лучше
givePizda.Write(pid);
А еще вместо C Style каста (UINT32) стоит использовать C++ style касты
static_cast() Или reinterpret_cast()
UPD: а вообще стоит переписать весь код
C++:
int
pid
=
std
::
stoi
(
id
)
;
BitStream givePizda
;
givePizda
.
WriteBit
(
false
)
;
givePizda
.
Write
(
pid
)
;
// или unsigned short
givePizda
.
Write
(
1.32f
)
;
givePizda
.
Write
(
0ul
)
;
givePizda
.
Write
(
3ul
)
;
SF
->
getRakNet
(
)
->
SendRPC
(
RPC_GiveTakeDamage
,
&
givePizda
)
;
P.S. Я в курсе что 0ul может занимать больше 32 бит, но мы находимся в реалиях x86 и msvc где 0ul это unsigned long == 32bits
В этой рпц bool должен быть записан 1 битом, а не байтом, поэтому givePizda.WriteBit(false);
UPD: Packet list от bruno16 говно с дезинфой. Смотрите на вики бластхака(не все рпц там есть) либо в sampevents
Все бы ничего, но функции WriteBit нету в классе BitStream
А еще вместо такого говна лучше
givePizda.Write(pid);
А еще вместо C Style каста (UINT32) стоит использовать C++ style касты
static_cast() Или reinterpret_cast()
UPD: а вообще стоит переписать весь код
C++:
int
pid
=
std
::
stoi
(
id
)
;
BitStream givePizda
;
givePizda
.
WriteBit
(
false
)
;
givePizda
.
Write
(
pid
)
;
// или unsigned short
givePizda
.
Write
(
1.32f
)
;
givePizda
.
Write
(
0ul
)
;
givePizda
.
Write
(
3ul
)
;
SF
->
getRakNet
(
)
->
SendRPC
(
RPC_GiveTakeDamage
,
&
givePizda
)
;
P.S. Я в курсе что 0ul может занимать больше 32 бит, но мы находимся в реалиях x86 и msvc где 0ul это unsigned long == 32bits
По этой инфе - сниму шляпу, т.к ты открыл для меня style касты. Я до этого не ебал что это и как называется
kin4stat
01.08.2021, 21:20
Все бы ничего, но функции WriteBit нету в классе BitStream
По идее Write0 или Write1 выполнит эту функцию(0 - false, 1 - true)
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot