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>