Browse Source

multi_send_zero_packet bin exact (#1201)

pull/124/head
qndel 7 years ago committed by Anders Jenbo
parent
commit
91c77db865
  1. 38
      Source/multi.cpp
  2. 2
      Source/multi.h

38
Source/multi.cpp

@ -547,23 +547,14 @@ void multi_process_tmsgs()
}
}
void multi_send_zero_packet(int pnum, char a2, void *pbSrc, int dwLen)
{
unsigned int v4; // edi
short v5; // si
unsigned short dwBody; // ax
TPkt pkt; // [esp+Ch] [ebp-208h]
int pnuma; // [esp+20Ch] [ebp-8h]
int v10; // [esp+210h] [ebp-4h]
v4 = dwLen;
_LOBYTE(v10) = a2;
pnuma = pnum;
void multi_send_zero_packet(DWORD pnum, char a2, void *pbSrc, DWORD dwLen)
{
DWORD v5, dwBody;
TPkt pkt;
int t;
v5 = 0;
while (v4) {
while (dwLen) {
pkt.hdr.wCheck = 'ip';
pkt.body[0] = v10;
dwBody = gdwLargestMsgSize - 24;
pkt.hdr.px = 0;
pkt.hdr.py = 0;
pkt.hdr.targx = 0;
@ -573,18 +564,21 @@ void multi_send_zero_packet(int pnum, char a2, void *pbSrc, int dwLen)
pkt.hdr.bstr = 0;
pkt.hdr.bmag = 0;
pkt.hdr.bdex = 0;
pkt.body[0] = a2;
*(_WORD *)&pkt.body[1] = v5;
if (v4 < gdwLargestMsgSize - 24)
dwBody = v4;
dwBody = gdwLargestMsgSize - 24;
if (dwLen < dwBody)
dwBody = dwLen;
*(_WORD *)&pkt.body[3] = dwBody;
memcpy(&pkt.body[5], pbSrc, dwBody);
pkt.hdr.wLen = *(_WORD *)&pkt.body[3] + 24;
if (!SNetSendMessage(pnuma, &pkt.hdr, *(unsigned short *)&pkt.body[3] + 24)) {
memcpy(&pkt.body[5], pbSrc, *(_WORD *)&pkt.body[3]);
t = *(WORD *)&pkt.body[3] + 24;
pkt.hdr.wLen = t;
if (!SNetSendMessage(pnum, &pkt.hdr, t)) {
nthread_terminate_game("SNetSendMessage2");
return;
}
pbSrc = (char *)pbSrc + *(unsigned short *)&pkt.body[3];
v4 -= *(unsigned short *)&pkt.body[3];
pbSrc = (char *)pbSrc + *(WORD *)&pkt.body[3];
dwLen -= *(WORD *)&pkt.body[3];
v5 += *(_WORD *)&pkt.body[3];
}
}

2
Source/multi.h

@ -41,7 +41,7 @@ void multi_check_drop_player();
void multi_process_network_packets();
void multi_handle_all_packets(int players, TPkt *packet, int a3);
void multi_process_tmsgs();
void multi_send_zero_packet(int pnum, char a2, void *pbSrc, int dwLen);
void multi_send_zero_packet(DWORD pnum, char a2, void *pbSrc, DWORD dwLen);
void NetClose();
void multi_event_handler(BOOL add);
void __stdcall multi_handle_events(_SNETEVENT *pEvt);

Loading…
Cancel
Save