ANTICHAT

ANTICHAT (https://forum.antichat.xyz/index.php)
-   Общие вопросы программирования (https://forum.antichat.xyz/forumdisplay.php?f=206)
-   -   SF | Не отправляется дамаг через BitStream (https://forum.antichat.xyz/showthread.php?t=1396657)

ANZR 01.08.2021 18:28

Ку, пытаюсь нанести урон игроку, но в итоге урона никакого и нет.

Вроде бы все правильно

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


Sargon 01.08.2021 18:40

Цитата:

Сообщение от ANZR

givePizda.Write(true);

false

ANZR 01.08.2021 18:47

Цитата:

Сообщение от Sargon

false

Изменил сразу же, как залил. Ничего не изменилось

Sargon 01.08.2021 18:56

Цитата:

Сообщение от ANZR

Изменил сразу же, как залил. Ничего не изменилось

больше ошибок не наблюдаю, отправка должна работать.

ANZR 01.08.2021 19:09

Цитата:

Сообщение от Sargon

больше ошибок не наблюдаю, отправка должна работать.

Ну вот и я о том же

Ошибок нет, а отправка не идет

kin4stat 01.08.2021 19:24

В этой рпц bool должен быть записан 1 битом, а не байтом, поэтому givePizda.WriteBit(false);

UPD: Packet list от bruno16 говно с дезинфой. Смотрите на вики бластхака(не все рпц там есть) либо в sampevents

kin4stat 01.08.2021 19:27

Цитата:

Сообщение от ANZR

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

ANZR 01.08.2021 20:09

Цитата:

Сообщение от kin4stat

В этой рпц bool должен быть записан 1 битом, а не байтом, поэтому givePizda.WriteBit(false);
UPD: Packet list от bruno16 говно с дезинфой. Смотрите на вики бластхака(не все рпц там есть) либо в sampevents

Все бы ничего, но функции WriteBit нету в классе BitStream

Цитата:

Сообщение от kin4stat

А еще вместо такого говна лучше
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)


Время: 01:00