diff --git a/src/multibot.c b/src/multibot.c index 97d7dff2e..31cb26f5f 100644 --- a/src/multibot.c +++ b/src/multibot.c @@ -1100,46 +1100,48 @@ BOOL receiveWholeDroid(NETMSG *m) // find out about it. BOOL sendRequestDroid(uint32_t droidId) { - NETMSG msg; - if (ingame.localJoiningInProgress) // Don't worry if still joining. { return FALSE; } - NetAdd(msg,0,droidId); - NetAdd(msg,4,player2dpid[selectedPlayer] ); + debug(LOG_NEVER, "multibot: unknown droid %u, requesting info", droidId); - debug( LOG_NEVER, "multibot: unknown droid %d, requesting info\n", droidId ); + NETbeginEncode(NET_REQUESTDROID, NET_ALL_PLAYERS); + { + int32_t dpid = player2dpid[selectedPlayer]; - msg.type = NET_REQUESTDROID; - msg.size = sizeof(UDWORD)+sizeof(UDWORD); // DPID + UDWORD - - NETbcast(&msg,FALSE); - return TRUE; + NETuint32_t(&droidId); + NETint32_t(&dpid); + } + return NETend(); } // //////////////////////////////////////////////////////////////////////////// -BOOL recvRequestDroid(NETMSG *pMsg) +BOOL recvRequestDroid() { - DROID *pDroid; - UDWORD droidid,dpid; - - NetGet(pMsg,0,droidid); // get the droid's id - NetGet(pMsg,4,dpid); // get the player who needs it. + DROID* psDroid; + uint32_t droidId; + int32_t dpid; + NETbeginDecode(); + { + NETuint32_t(&droidId); + NETint32_t(&dpid); + } + NETend(); // Get the droid - if (!(IdToDroid(droidid, ANYPLAYER, &pDroid))) + if (!(IdToDroid(droidId, ANYPLAYER, &psDroid))) { // Can't find it, so ignore return TRUE; } // If we are responsible, send it - if (myResponsibility(pDroid->player)) + if (myResponsibility(psDroid->player)) { - sendWholeDroid(pDroid,dpid); + sendWholeDroid(psDroid, dpid); } return TRUE; diff --git a/src/multiplay.c b/src/multiplay.c index d02fb20fb..cb50eb14f 100644 --- a/src/multiplay.c +++ b/src/multiplay.c @@ -691,7 +691,7 @@ BOOL recvMessage(void) recvDroidDisEmbark(); //droid has disembarked from a Transporter break; case NET_REQUESTDROID: // player requires a droid that they dont have. - recvRequestDroid(&msg); + recvRequestDroid(); break; // case NET_REQUESTPLAYER: // a new player requires information // multiPlayerRequest(&msg); diff --git a/src/multirecv.h b/src/multirecv.h index 57c1d3bdc..5605c37cd 100644 --- a/src/multirecv.h +++ b/src/multirecv.h @@ -41,7 +41,7 @@ extern BOOL recvTemplate (NETMSG *pMsg); extern BOOL recvDestroyFeature (NETMSG *pMsg); extern BOOL recvDemolishFinished (); extern BOOL recvPing (); -extern BOOL recvRequestDroid (NETMSG *pMsg); +extern BOOL recvRequestDroid (void); extern BOOL recvTextMessage (NETMSG *pMsg); extern BOOL recvDroidSecondary (void); extern BOOL recvDroidSecondaryAll (void);