SF | Не отправляется дамаг через BitStream

ANZR

Известный
Автор темы
168
105
Ку, пытаюсь нанести урон игроку, но в итоге урона никакого и нет.
Вроде бы все правильно

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((UINT16)pid);
А еще вместо такого говна лучше
givePizda.Write<unt8_t>(pid);
А еще вместо C Style каста (UINT32) стоит использовать C++ style касты
static_cast<UINT32>() Или reinterpret_cast<UINT32>()

UPD: а вообще стоит переписать весь код
C++:
int pid = std::stoi(id);
BitStream givePizda;

givePizda.WriteBit(false);
givePizda.Write<uint16_t>(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

kin4stat

mq-team · kin4@naebalovo.team
Всефорумный модератор
2,742
4,803
В этой рпц bool должен быть записан 1 битом, а не байтом, поэтому givePizda.WriteBit(false);
UPD: Packet list от bruno16 говно с дезинфой. Смотрите на вики бластхака(не все рпц там есть) либо в sampevents
 
Последнее редактирование:

kin4stat

mq-team · kin4@naebalovo.team
Всефорумный модератор
2,742
4,803
givePizda.Write((UINT16)pid);
А еще вместо такого говна лучше
givePizda.Write<unt8_t>(pid);
А еще вместо C Style каста (UINT32) стоит использовать C++ style касты
static_cast<UINT32>() Или reinterpret_cast<UINT32>()

UPD: а вообще стоит переписать весь код
C++:
int pid = std::stoi(id);
BitStream givePizda;

givePizda.WriteBit(false);
givePizda.Write<uint16_t>(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

ANZR

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

А еще вместо такого говна лучше
givePizda.Write<unt8_t>(pid);
А еще вместо C Style каста (UINT32) стоит использовать C++ style касты
static_cast<UINT32>() Или reinterpret_cast<UINT32>()

UPD: а вообще стоит переписать весь код
C++:
int pid = std::stoi(id);
BitStream givePizda;

givePizda.WriteBit(false);
givePizda.Write<uint16_t>(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 касты. Я до этого не ебал что это и как называется