Thank you! Good catch on the need to implement cloaker logic. Bitmaps are not set so I’ll pay attention to the colors used by existing clients when I get to that point. Darrell > On Mar 10, 2019, at 3:22 PM, James Cameron <quozl at laptop.org> wrote: > > On Sun, Mar 10, 2019 at 02:15:29PM -0700, Darrell Root wrote: >> 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. > > Looks good. Ships inbound to Draconis ought to be cloaked; please add > the code to hide them somehow. > > Team colours are unconventional; we would normally use a red or orange > colour for Romulan team, and a yellow colour for Federation. This > would make is easier for people to move to another client and fit > existing documentation. Most clients allow the colours to be > customised. > >> 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. > > Run another client. MacTrek did not mature. > >> 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? > > Deriving from source code; > > MALL in group. > zero in indiv. > > https://github.com/quozl/gytha/blob/master/gytha/__init__.py#L2266 <https://github.com/quozl/gytha/blob/master/gytha/__init__.py#L2266> > https://github.com/quozl/netrek-client-cow/blob/master/smessage.c#L221 <https://github.com/quozl/netrek-client-cow/blob/master/smessage.c#L221> > >> 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)). > > Deriving from source code; > > MTEAM in group. > ROM in indiv. > > https://github.com/quozl/gytha/blob/master/gytha/__init__.py#L2270 <https://github.com/quozl/gytha/blob/master/gytha/__init__.py#L2270> > https://github.com/quozl/netrek-client-cow/blob/master/smessage.c#L227 <https://github.com/quozl/netrek-client-cow/blob/master/smessage.c#L227> > >> 3) If I want to send a message to individual player #3 what do I put >> in the group/indiv fields? > > Deriving from source code; > > MINDIV in group. > ship number in indiv. > > https://github.com/quozl/gytha/blob/master/gytha/__init__.py#L2290 <https://github.com/quozl/gytha/blob/master/gytha/__init__.py#L2290> > https://github.com/quozl/netrek-client-cow/blob/master/smessage.c#L248 <https://github.com/quozl/netrek-client-cow/blob/master/smessage.c#L248> > >> 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)? > > p_no > > https://github.com/quozl/netrek-client-cow/blob/master/dmessage.c#L278 <https://github.com/quozl/netrek-client-cow/blob/master/dmessage.c#L278> > > But it probably does not matter, as the server does not check it; > > https://github.com/quozl/netrek-server/blob/master/ntserv/socket.c#L1704 <https://github.com/quozl/netrek-server/blob/master/ntserv/socket.c#L1704> > https://github.com/quozl/netrek-server/blob/master/ntserv/socket.c#L1953 <https://github.com/quozl/netrek-server/blob/master/ntserv/socket.c#L1953> > >> 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 */ > >> _______________________________________________ >> netrek-dev mailing list >> netrek-dev at us.netrek.org <mailto:netrek-dev at us.netrek.org> >> http://mailman.us.netrek.org/mailman/listinfo/netrek-dev <http://mailman.us.netrek.org/mailman/listinfo/netrek-dev> > > > -- > James Cameron > http://quozl.netrek.org/ <http://quozl.netrek.org/> > _______________________________________________ > netrek-dev mailing list > netrek-dev at us.netrek.org <mailto:netrek-dev at us.netrek.org> > http://mailman.us.netrek.org/mailman/listinfo/netrek-dev <http://mailman.us.netrek.org/mailman/listinfo/netrek-dev> -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://mailman.us.netrek.org/pipermail/netrek-dev/attachments/20190310/e1dc4362/attachment-0001.html>