I’m making good progress on my MacOS/Swift netrek client.  It’s playable!  I’ve even gotten a couple kills.  I’m hoping to release an alpha version Friday March 15th.  “Beware the ides of March”.  I’ve attached a screenshot at the bottom.

I’m having trouble understanding the CP_MESSAGE format.  At first it looks simple:

struct mesg_cpacket { /* CP_MESSAGE py-struct "!bBBx80s" #1 */
    char type;
    char group;
    char indiv;	/* does this break anything? -da */
    char pad1;
    char mesg[MSG_LEN];
};

I captured a packet trace of a distress call to the Rom team with 4 in the group (MTEAM?) and 2 in the indiv (TEAM=ROM?) fields.  But I’m having trouble sending messages with the MacTrek client so I don’t have a full set of packet traces to work with.

Other client headers below but let me ask a couple specific questions:

1) If I want to send a message to ALL, what do I put in group/indiv?

2) If I want to send a message to TEAM ROM, what do I put in group/indiv (I think group=4 (MTEAM) and indiv=2 (ROM)).

3) If I want to send a message to individual player #3 what do I put in the group/indiv fields?

4) At startup, client is supposed to send the following message:
	CP_MESSAGE (MINDIV|MCONFIG, self, "@clientname clientversion")
MINDIV is 0x02
MCONFIG is 0x04
So I guess 0x06 goes in the group field.  What is the “self” that (presumably) goes in the indiv field?  Is that my PlayerID (0 through 31)?

Darrell
-----------

Looking at the existing source code I’m finding a bunch of different things to put in the group and indiv fields (although I may be getting CP_MESSAGE and SP_MESSAGE mixed up).

The team flags are as follows:

IND=0x0
FED=0x1
ROM=0x2
KLI=0x4
ORI=0x8

Below is the message header source I’ve dug up.

#define MVALID 0x01
#define MGOD   0x10
#define MMOO   0x12

#ifdef TOOLS
#define MTOOLS 0x14
#endif

/* order flags by importance (0x100 - 0x400) */
/* restructuring of message flags to squeeze them all into 1 byte - jmn */
/* hopefully quasi-back-compatible: MVALID, MINDIV, MTEAM, MALL, MGOD use up
 * 5 bits. this leaves us 3 bits. since the server only checks for those
 * flags when deciding message related things and since each of the above
 * cases only has 1 flag on at a time we can overlap the meanings of the
 * flags */

#define MINDIV 0x02
/* these go with MINDIV flag */

#ifdef STDBG
#define MDBG   0x20
#endif

#define MCONFIG 0x40                             /* config messages from * *
                                                  * server */
#define MDIST 0x60                               /* flag distress type * *
                                                  * messages properly */
#ifdef MULTILINE_MACROS
#define MMACRO 0x80
#endif

#define MTEAM  0x04
/* these go with MTEAM flag */
#define MTAKE  0x20
#define MDEST  0x40
#define MBOMB  0x60
#define MCOUP1 0x80
#define MCOUP2 0xA0
#define MDISTR 0xC0                              /* flag distress type
                                                  * messages */
#define MALL   0x08
/* these go with MALL flag */
#define MGENO  0x20                              /* MGENO is not used in INL
                                                  * here  */
#define MCONQ  0x20                              /* not enought bits to
                                                  * distinguish MCONQ/MGENO :-( */
#define MKILLA 0x40
#define MKILLP 0x60
#define MKILL  0x80
#define MLEAVE 0xA0
#define MJOIN  0xC0
#define MGHOST 0xE0
/* MMASK not used in INL server */

#define MWHOMSK  0x1f                            /* mask with this to find
                                                  * who msg to */
#define MWHATMSK 0xe0                            /* mask with this to find
                                                  * what message about */
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.us.netrek.org/pipermail/netrek-dev/attachments/20190310/e7748152/attachment-0001.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: Swift-netrek-screenshot-1.png
Type: image/png
Size: 599100 bytes
Desc: not available
URL: <http://mailman.us.netrek.org/pipermail/netrek-dev/attachments/20190310/e7748152/attachment-0001.png>