Pb De Programmation Php, Récupérer infos/players/rules d'un serveur de jeu CSS avec les s |
30/03/2011 - 19:26:43 |
Post
#1
|
|
Group: Member Posts: 13 Joined: 22/03/2011 |
Bonsoir tout le monde (IMG:http://forum.17buddies.rocks/style_emoticons/default/smile.gif)
Je suis en ce moment en train de concevoir (enfin plutôt paufiner) un gestionnaire de serveurs de jeu/rapports de wars pour ma team. Actuellement, il est stable et marche bien. Cependant, j'aimerais récupérer des informations complémentaires comme par exemple les variables d'un serveur (rules) et le score des joueurs (ainsi que des infos supplémentaires sur le serveur en lui-même comme l'OS ou l'hébergeur). La plupart des infos que je récupère vient de la commande RCon "status". Je teste aussi l'état du serveur (online ou offline) en envoyant une commande par socket avec retour en une seconde (suffisant pour savoir si oui ou non le serveur est en ligne). Je me suis basé sur ceci : http://developer.valvesoftware.com/wiki/Server_queries Ainsi que sur ce cours qui l'a permis de bien comprendre le principe des sockets et de la récupération des données par ce biais : http://a-pellegrini.developpez.com/tutoriels/php/cstrike/ Avec ces deux liens, j'ai réussi à récupérer les informations du serveur et le challenge number. Cependant j'ai quand même un gros doute sur ce dernier, car les deux autres requètes, à savoir les joueurs et les rules (qui demandent d'injecter dans la commande le challenge number) ne marchent pas (en faisant un echo de la réponse en brut, cela me donne une chaine ridiculement courte (6 caractères) concernant les rules). J'ai alors essayé des solutions toutes faites : steam-condenser, GameQ, etc..., rien n'y fait, je retrouve le même problème. Je me suis aussi intéressé au petit Gadget de Windows 7 que Chapo (je crois) a conçu pour 17's Buddies, que j'utilise d'ailleurs. Et surtout aux données JSON récupérées par le Javascript du widget. pour le moment, j'utilise avec honte ces données pour mon gestionnaire, ce qui me rend très dépendant de 17's Buddies. Ma question est donc la suivante : y a-t-il une autre approche pour recueillir les informations que je recherche ? Et si non, qu'est-ce qui fait que cela ne marche pas de mon côté ? |
|
|
18/04/2011 - 17:42:05 |
Post
#2
|
|
Group: Member Posts: 13 Joined: 22/03/2011 |
Bah, ma logique voudrait que je réponde Oui (IMG:http://forum.17buddies.rocks/style_emoticons/default/icon_biggrin.gif)
Ensuite, dans ce cas où les données sont bien compressées, et d'après ce que dit Valve dans son wiki, il faut d'abord décompresser avec BZ2_bzBuffToBuffDecompress(). Là j'ai utilisé son équivalent PHP bzdecompress(), puis je continue à parser ce que je trouve, à commencer par l'en-tête de la réponse. Je trouve 45 au lieu de 69 Code $es = getLong($response); echo "Première info : ".$es; echo "<br><br>"; $es2 = getLong($response); echo "Deuxième info : ".$es2; echo "<br><br>"; $IsCompressed = (($es2 & 0x80000000) != 0); echo "Troisième info : ".$IsCompressed; echo "<br><br>"; $response_unzip = bzdecompress($es2); echo "cui : ".$response_unzip; echo "<br><br>"; $es3 = getByte($response_unzip); echo "Quatrième info : ".$es3; echo "<br><br>"; Ce qui donne : Citation Première info : -1 Deuxième info : -772376767 Troisième info : 1 cui : -5 Quatrième info : 45 Déjà que je n'ai plus beaucoup de cheveux ... (IMG:http://forum.17buddies.rocks/style_emoticons/default/sad.gif) This post has been edited by Liangel: 18/04/2011 - 17:42:36 |
|
|
Lo-Fi Version |
Skin © Chapo
|