thanks, I've been waiting for this since that update. I'm not home right now, so I can't test it, I'll post result when I come.
Kveri Maxim Shpakov wrote / napĂsal(a): > Seems attachments are not allowed here.. > > so going plain text... > > diff -uNr qstat2.orig/a2s.c qstat2/a2s.c > --- qstat2.orig/a2s.c 2008-10-29 04:07:08.000000000 +0200 > +++ qstat2/a2s.c 2009-01-04 19:56:39.000000000 +0200 > @@ -22,6 +22,8 @@ > #include "packet_manip.h" > > #define A2S_GETCHALLENGE "\xFF\xFF\xFF\xFF\x57" > +#define A2S_PLAYER_CHALLENGE "\xFF\xFF\xFF\xFF\x55\xFF\xFF\xFF\xFF" > +#define A2S_RULES_CHALLENGE "\xFF\xFF\xFF\xFF\x56\xFF\xFF\xFF\xFF" > #define A2S_CHALLENGERESPONSE 0x41 > #define A2S_INFO "\xFF\xFF\xFF\xFF\x54Source Engine > Query" > #define A2S_INFORESPONSE_HL1 0x6D > @@ -77,7 +79,7 @@ > if(!status->have_challenge) > { > debug(3, "sending challenge"); > - if( SOCKET_ERROR == qserver_send_initial(server, > A2S_GETCHALLENGE, sizeof(A2S_GETCHALLENGE)-1) ) > + if( SOCKET_ERROR == qserver_send_initial(server, > A2S_PLAYER_CHALLENGE, sizeof(A2S_PLAYER_CHALLENGE)-1) ) > { > return SOCKET_ERROR; > } > @@ -179,11 +181,21 @@ > // 2. the index of this packet starting from 0 ( byte > ) > // 3. Size of the split ( short ) > if(pktlen < 10) goto out_too_short; > - pkt_max = ((unsigned char)*pkt); > - pkt_index = ((unsigned char)*(pkt+1)); > - debug( 3, "packetid[2]: 0x%hhx => idx: %hhu, max: > %hhu", *pkt, pkt_index, pkt_max ); > - pkt+=4; > - pktlen -= 12; > + if(server->appid < 200) // Goldsource Engine > + { > + pkt_max = ((unsigned char)*pkt) & 15; > + pkt_index = ((unsigned char)*pkt) >> 4; > + pkt++; > + pktlen -= 9; > + } > + else // Source Engine > + { > + pkt_max = ((unsigned char)*pkt); > + pkt_index = ((unsigned char)*(pkt+1)); > + pkt+=4; > + pktlen -= 12; > + } > + debug( 3, "packetid[2]: 0x%hhx => idx: %hhu, max: > %hhu", server->appid, *pkt, pkt_index, pkt_max ); > } > else > { > @@ -437,6 +449,7 @@ > if(pktlen < 9) goto out_too_short; > > // pkt[0], pkt[1] steam id unused > + server->appid = *pkt; > server->num_players = (unsigned char)pkt[2]; > server->max_players = (unsigned char)pkt[3]; > // pkt[4] number of bots > @@ -498,7 +511,7 @@ > add_rule( server, "game_port", buf, 0 ); > pkt += 2; > pktlen -= 2; > - fprintf( stderr, "game port = %d\n", gameport > ); > +// fprintf( stderr, "game port = %d\n", gameport > ); > } > > if ( edf & 0x40 ) > diff -uNr qstat2.orig/qserver.h qstat2/qserver.h > --- qstat2.orig/qserver.h 2008-04-25 19:53:14.000000000 +0300 > +++ qstat2/qserver.h 2009-01-04 16:11:35.000000000 +0200 > @@ -104,6 +104,7 @@ > int max_players; > int num_players; > int protocol_version; > + unsigned short appid; > int max_spectators; > int num_spectators; > > > > > _______________________________________________ > To unsubscribe, edit your list preferences, or view the list archives, please > visit: > http://list.valvesoftware.com/mailman/listinfo/hlds_linux > > _______________________________________________ To unsubscribe, edit your list preferences, or view the list archives, please visit: http://list.valvesoftware.com/mailman/listinfo/hlds_linux