It's been a minute since I worked on tractor/pressor stuff, but you can look for "tractor" in my packets.js [1] (which delegates incoming SP packets to the appropriate module, in this case tractor.js [2]). Notably I see `if(tractor & 0x40)` guarding the tractor logic (where `tractor` is from SP_YOU and SP_FLAGS), and in tractor.js I see this.target = world.ships[targetNum & ~0x40]; which says to me that everything but bits in 0x40 is the target. I also see a mask on PFPRESS to decide if it's a pressor or not, where PFPRESS is defined in constants.js as 0x800000. As I recall, I may also have needed to set a flag in a client options packet to receive tractor data at all (you can opt out of tractor info to slim down game data, I guess??). I'm less sure about that part. Andrew [1][https://github.com/apsillers/html5-netrek/blob/master/js/packets.js <https://github.com/apsillers/html5-netrek/blob/master/js/packets.js>] [2][https://github.com/apsillers/html5-netrek/blob/master/js/tractor.js] On Wed, Jun 3, 2020, 3:44 PM Darrell Root <darrellroot at mac.com> wrote: > Netrek-dev, > > I’ve seen some clients which visually display that a tractor beam or > pressor beam is active. I’m trying to add this feature to my MacOS client. > > Which SP packet from the server tells me that a pressor or tractor is > active? > > I’ve included the packets.h summary and some “suspects” below. > > I also suspect that you are only “aware” of tractor/pressor beams if they > act on your ship, or you act on another ship. > > I’m familiar with the CP_TRACTOR and CP_PRESSOR packets to request a > tractor/pressor. I’m looking for the SP packets from the server which tell > you that a pressor/tractor is active. > > The “tractor” field in the flags_spacket looked possible, but I didn’t see > anything other than a 0 in that field while trying out some tractor/pressor > beams. > > I did capture a SP_YOU packet with non-zero numbers in the tractor field, > but don’t know how to interpret the number 69: > > "Received SP_YOU 12 1 hostile 14 war 0 armies 0 tractor 69 flags 46145536 > damage 81 shieldStrength 130 fuel 12996 engineTemp 64 weaponsTemp 0 whyDead > 2 whodead 3" > > Darrell > > struct flags_spacket > { > char type; /* SP_FLAGS */ > char pnum; /* whose flags are they? > */ > char tractor; > char pad2; > unsigned flags; > }; > > struct you_spacket > { > char type; /* SP_YOU */ > char pnum; /* Guy needs to know > this... > * > */ > char hostile; > char swar; > char armies; > char tractor; > char pad2; > char pad3; > unsigned flags; > LONG damage; > LONG shield; > LONG fuel; > unsigned short etemp; > unsigned short wtemp; > unsigned short whydead; > unsigned short whodead; > }; > > > /* packets sent from xtrek server to remote client */ > #define SP_MESSAGE 1 > #define SP_PLAYER_INFO 2 /* general player info not elsewhere */ > #define SP_KILLS 3 /* # kills a player has */ > #define SP_PLAYER 4 /* x,y for player */ > #define SP_TORP_INFO 5 /* torp status */ > #define SP_TORP 6 /* torp location */ > #define SP_PHASER 7 /* phaser status and direction */ > #define SP_PLASMA_INFO 8 /* player login information */ > #define SP_PLASMA 9 /* like SP_TORP */ > #define SP_WARNING 10 /* like SP_MESG */ > #define SP_MOTD 11 /* line from .motd screen */ > #define SP_YOU 12 /* info on you? */ > #define SP_QUEUE 13 /* estimated loc in queue? */ > #define SP_STATUS 14 /* galaxy status numbers */ > #define SP_PLANET 15 /* planet armies & facilities */ > #define SP_PICKOK 16 /* your team & ship was accepted */ > #define SP_LOGIN 17 /* login response */ > #define SP_FLAGS 18 /* give flags for a player */ > #define SP_MASK 19 /* tournament mode mask */ > #define SP_PSTATUS 20 /* give status for a player */ > #define SP_BADVERSION 21 /* invalid version number */ > #define SP_HOSTILE 22 /* hostility settings for a player */ > #define SP_STATS 23 /* a player's statistics */ > #define SP_PL_LOGIN 24 /* new player logs in */ > #define SP_RESERVED 25 /* for future use */ > #define SP_PLANET_LOC 26 /* planet name, x, y */ > > /* NOTE: not implemented */ > #define SP_SCAN 27 /* ATM: results of player scan */ > > #define SP_UDP_REPLY 28 /* notify client of UDP status */ > #define SP_SEQUENCE 29 /* sequence # packet */ > #define SP_SC_SEQUENCE 30 /* this trans is semi-critical info */ > > #define SP_RSA_KEY 31 /* handles binary verification */ > #define SP_MOTD_PIC 32 /* motd bitmap pictures (paradise) */ > > #define SP_SHIP_CAP 39 /* Handles server ship mods */ > > #define SP_S_REPLY 40 /* reply to send-short request */ > #define SP_S_MESSAGE 41 /* var. Message Packet */ > #define SP_S_WARNING 42 /* Warnings with 4 Bytes */ > #define SP_S_YOU 43 /* hostile,armies,whydead,etc .. */ > #define SP_S_YOU_SS 44 /* your ship status */ > #define SP_S_PLAYER 45 /* variable length player packet */ > > #define SP_PING 46 /* ping packet */ > > #define SP_S_TORP 47 /* variable length torp packet */ > #define SP_S_TORP_INFO 48 /* SP_S_TORP with TorpInfo */ > #define SP_S_8_TORP 49 /* optimized SP_S_TORP */ > #define SP_S_PLANET 50 /* see SP_PLANET */ > > /* S_P2 */ > #define SP_S_SEQUENCE 56 /* SP_SEQUENCE for compressed packets */ > #define SP_S_PHASER 57 /* see struct */ > #define SP_S_KILLS 58 /* # of kills player have */ > #define SP_S_STATS 59 /* see SP_STATS */ > > /* variable length packets */ > #define VPLAYER_SIZE 4 > #define SHORTVERSION 11 /* other number blocks, like UDP Version */ > #define OLDSHORTVERSION 10 /* S_P2 */ > > /* #ifdef FEATURE */ > #define SP_FEATURE 60 > /* #endif */ > > #define SP_BITMAP 61 > > _______________________________________________ > netrek-dev mailing list > netrek-dev at us.netrek.org > 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/20200603/d5c7ab35/attachment.htm>