BYTE* packPlayerMoving(PlayerMoving* dataStruct, int size_ = 56) {
BYTE* data = new BYTE[size_];
memset(data, 0, size_);
memcpy(data + 0, &dataStruct->packetType, 4);
memcpy(data + 4, &dataStruct->netID, 4);
memcpy(data + 12, &dataStruct->characterState, 4);
memcpy(data + 20, &dataStruct->plantingTree, 4);
memcpy(data + 24, &dataStruct->x, 4);
memcpy(data + 28, &dataStruct->y, 4);
memcpy(data + 32, &dataStruct->XSpeed, 4);
memcpy(data + 36, &dataStruct->YSpeed, 4);
memcpy(data + 44, &dataStruct->punchX, 4);
memcpy(data + 48, &dataStruct->punchY, 4);
return data;
}
void send_raw(ENetPeer* peer, int a1, void* packetData, int packetDataSize, int packetFlag) {
ENetPacket* p;
if (peer) {
if (a1 == 4 && *((BYTE*)packetData + 12) & 8) {
p = enet_packet_create(0, packetDataSize + *((DWORD*)packetData + 13) + 5, packetFlag);
int four = 4;
memcpy(p->data, &four, 4);
memcpy((char*)p->data + 4, packetData, packetDataSize);
memcpy((char*)p->data + packetDataSize + 4, 0, *((DWORD*)packetData + 13));
}
else {
p = enet_packet_create(0, packetDataSize + 5, packetFlag);
memcpy(p->data, &a1, 4);
memcpy((char*)p->data + 4, packetData, packetDataSize);
}
enet_peer_send(peer, 0, p);
}
}
PlayerMoving dats_{};
dats_.packetType = 28;
dats_.characterState = 0x0;
dats_.x = pInfo(peer)->x;
dats_.y = pInfo(peer)->y;
dats_.punchX = 0;
dats_.punchY = 0;
dats_.XSpeed = 0;
dats_.YSpeed = 0;
dats_.netID = pInfo(peer)->netID;
dats_.plantingTree = 0;
BYTE* raws = packPlayerMoving(&dats_);
send_raw(peer, 4, raws, 56, ENET_PACKET_FLAG_RELIABLE);
delete[] raw;
uint8_t pData[22] = {0x0b,0x00,0x61,0x6d,0x65,0x74,0x73,0x61,0x20,0x74,0x65,0x71,0x74,0x3c,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00};