[HELP] : Logiciel pour Lancer un Serveur

Répondre
Partager Rechercher
Bonjour à tous,

Je veux créer un logiciel qui lorsqu'il est lancé liste tous les serveurs actifs d'un module particulier et affiche le nombre de joueurs online / joueurs max.

J'ai besoin d'aide... Je veux, avec Visual Basic 6.0, me "connecter" à Gamespy pour récupérer ces infos...

Merci d'avance à ceux qui pourront m'aider.
__________________
SidSilver... Harbar forever !
Citation :
J'ai besoin d'aide... Je veux, avec Visual Basic 6.0, me "connecter" à Gamespy pour récupérer ces infos...
Je ne crois pas que l'on sache comment faire. Et il est fort probable que ce protocole soit "sécurisé" , d'une façon ou d'une autre.
Ce que tu peux faire en revanche c'est te connecter au serveur lui-même (UDP en fait, pas de connexion) et lui demander ces infos ("\\status\\" te renverra tout mais ne marche que pour les serveurs publiés sur Gamespy, le reste est incomplet autant que je sache). Comment récupérer l'IP au départ, ça je ne sais pas, à toi de voir.
Oue en gros..
Il faut comme donnée de base :
1)Adresse ip d'un server gamespy , je crois qu'il y a un master0.gamespy.com
2) Protocole utilisé : apparemment c'est UDP
3) Ports utilisés ?
4) Securisé par mot de passe ?
5) Données renvoyées : cryptées ?
6) Protocole de dialogue ?

Une fois que t'as ca ,t'as plus rien a faire..
une petite socket dans un projet vb qui se connecte au server , qui envoie les commandes adéquetes , recupère des trucs , et les parsent pour trier ce qui est renvoyer..

vala...
donc si tu trouves des infos sur les points precedents , je veux bien t'aider pour le reste.
Merci qui ??

Dis Sid , tu commences à trainer à fond sur Jol, dis donc
tu passes par un script en php avec la fonction getinfo() sur le port du serveur.

(enfin, getinfo, j'en suis pas vraiment sur, mais voilà ce que ca donne:
http://pub.gameburnworld.com/serverstatus.php)
(serveur Nwn de jeuxfusion... qui pour l'instant (bizzare) est à l'arret)
tout ce qu'il fait, c'est faire une demande d'info sur un port precis du serveur, il recolte toutes les informations envoyées par le serveur/ports et les met en page.

quand le serveur est en ligne, tu as un bon nombre de variables affichés, plus que tu ne le penses
Oui, merci pour vos réponses...
En fait j'ai eu une idée beaucoup plus simple :

Un peu comme le getinfo() faire une sorte de ping pour voir si le serveur est online ou pas...
Je connais l'ip du serveur et son port.

Le problème c'est que je pense pas qu'on puisse récupérer sous vb ou C++ les données d'un ping qui est en fait une commande DOS.

Donc si vous avez encore des astuces...

Sinon j'ai trouvé comment lancer le client multi sans passer par le menu ou gamepsy... me reste a trouver la commande pour le client MJ.

en gros ça donne ça (pour ceux que ça interesse) :
"chemin"\NeverwinterNights\NWN\nwmain.exe +connect ip : port

Voila... Pour ceux qui peuvent encore m'aider... je prend aussi les astuces pour Visual C++ et C#.

Dark Valer : ba oui je traine moi aussi sur Jol...
__________________
SidSilver... Harbar forever !
Citation :
Le problème c'est que je pense pas qu'on puisse récupérer sous vb ou C++ les données d'un ping qui est en fait une commande DOS.
ben tu trouveras en recherchant tout ca sur google

en gros il existe des apis , des fonctions incluses dans icmp.dll.
du genre celle là :
Private Declare Function IcmpSendEcho Lib "icmp.dll" _
(ByVal IcmpHandle As Long, ByVal DestinationAddress As Long, _
ByVal RequestData As String, ByVal RequestSize As Integer, _
RequestOptions As ip_option_information, ReplyBuffer As icmp_echo_reply, _
ByVal ReplySize As Long, ByVal Timeout As Long) As Long

mais bon tous est bien mieux expliqué sur les sites , et surtout des fois c encapsulé dans des beaux objets , comme ca pas besoin de tripatouiller les apis.
J'ai bien avancé sur l'appli, il ne manque plus que :

- le test qui vérifie que le server est bien online.
- le test qui indique le nombre de joueurs connectés (ca c utopique)
- éventuellement un système de news.

Voila.
Les racourcis pour lancer le jeu directement sur le bon server (en PJ ou en MJ) sont bons, et les liens internets aussi...

Au fait, j'ai laissé tomber VB, je suis passé à C#... c'est de la bombe bébé !
__________________
SidSilver... Harbar forever !
je sais pas si ca peut aider mais le code source de la page "serverstatus.php" qui est affiché plus haut est telechargeable a cette adresse (la page a été faite par Papillon.)
La page affiche bien le nom, le login et le niveau des personnages connectés au serveur.

D'apres ce que j'ai compris, ca envoie une requete au serveur voulu (ca passe pas par gamespy) et ca parse la réponse obtenue. Ca devrait etre faisable bien que je ne m'y connaisse pas du tout en VB.
__________________
..::Heavenlynet le net paradisiaque ::..
http://gw.heaven-ly.net/images/stories/divers/sigfg042.gif
Pour le nombre de joueurs connectés, c'est ce dont je parlais plus haut, si tu connais l'adresse IP du serveur NWN, pas de problème. Tu envoies le message "\\status\\" au server (sur le port 5121, ça marchera, mais si tu connais le port ouvert c'est mieux, au cas où il y aurait un routeur) , et le serveur répondra avec tout un tas d'info, dont ce que tu veux. C'est ce que fais le script PHP sus-mentionné.
Il existe d'autres messages, qui marchent aussi pour les serveurs non-Gamespy, par exemple LAN. En envoyant "BNES" tu obtiendras les données de base. "BNDS" renverra la description du serveur, c'est ce que mon programme utilise (désolé, je ne peux pas t'aider pour VB, mon programme est en C, je crois que L'API windows est à peu près la même ceci dit). Il y a aussi un équivalent de "\\status\\", "\\status\secure\\" si je me souviens bien, mais il y a une protection que je n'ai pas pris la peine d'investiguer étant donné qu'on est pas sensé utiliser cela.
Vos trucs ont l'air pas mal, merci de votre aide...
Le problème c'est que mon appli est en C# (sous Visual Studio .Net) et que je ne sais pas si je peux ni comment intégrer des commandes PHP à C#...
Enfin je vais voir ca...
__________________
SidSilver... Harbar forever !
Il suffit de comprendre le script php et de le rentranscrire en C#. Il n'y a pas d'interpréteur php pour le C# (enfin je ne crois pas) et le C# sera un peu plus rapide sans devoir en plus interpréter du php. Ou alors, tu mets la page en php sur un serveur et tu lui fait renvoyer les données dans un format que tu pourras ensuite parser avec un prog en C#.
Hmmm, ce que tu dis à l'air vraiment intéressant...
Mais comment on fait ????

Je suis vraiment débutant en C#, et je connais rien au PHP.
En fait je maitrise C++ mais pas les interfaces visuelles en VC++ d'où l'utilisation de C# pour mon logiciel.

Au fait, j'ai testé la page PHP de Papillon :."ServerStatuts" qui se trouve sur le Vault et cela ne marche pas avec tout les serveurs apparement... notament avec le serveur qui m'intéresse.
Donc l'histoire du php c'est pas si super que ça en fait
__________________
SidSilver... Harbar forever !
Citation :
Au fait, j'ai testé la page PHP de Papillon :."ServerStatuts" qui se trouve sur le Vault et cela ne marche pas avec tout les serveurs apparement... notament avec le serveur qui m'intéresse.
Si l'admin a choisi de ne pas le rendre publique sur Gamespy c'est normal, comme je le disais plus haut, le message "\\status\\" n'est pas reconnu dans ce cas. Une précision, le principe est le même quelque soit le langage que tu utilises, il n'y a que les fonctions gérant le protocole UDP qui changent, donc tu auras le même résultat en PHP, C, C++, C# ou quoique ce soit d'autre .
Je ne sais pas ce que t'entend exactement par serveur rendu publique sur Gamespy mais le serveur qui m'intéresse est visible sur gamepsy et il ne demande pas de mot de passe aux joueurs.

Alors y a un truc que j'ai pas du bien comprendre ou qui m'a échappé dans le fonctionnement de la requete status...

Est il possible qu'un firewall bloque la requete ?
Sinon ou se trouve la ligne de config "gamepsy = 1" ?
__________________
SidSilver... Harbar forever !
Citation :
Je ne sais pas ce que t'entend exactement par serveur rendu publique sur Gamespy mais le serveur qui m'intéresse est visible sur gamepsy et il ne demande pas de mot de passe aux joueurs.
simplement le fait qu'il soit visible sur Gamespy, pardon.
Citation :
Alors y a un truc que j'ai pas du bien comprendre ou qui m'a échappé dans le fonctionnement de la requête status...

Est il possible qu'un firewall bloque la requête ?
Oui, s'il bloque le port sur lequel le message UDP est envoyé. Le script PHP doit probablement utiliser le port 5121, je n'ai pas regardé. Si le serveur n'utilise pas ce port pour la connexion des joueurs, il est probable que les messages entrant non sollicités ne soit pas autorisé sur celui ci. Dans ce cas, modifies le port cible pour qu'il corresponde à la configuration du serveur, ou bien ouvres manuellement le port 5121 en plus.
Une autre possibilité, si le serveur est en réseau local, est que le message ne soit pas correctement redirigé. De toute façon utiliser le port de connexion des joueurs réglera ce type de problèmes (je ne sais pas si c'est cela ceci dit), puisque sinon il serait impossible de se connecter à ce serveur.
J'ai trouvé un logiciel de "Server Status" qui fonctionne !
En plus apparement le logiciel est en C# !

il se trouve ici.
J'ai envoyé un mail au créateur de ce logiciel pour qu'il m'envoi sa source... j'espère qu'il me l'enverra !
Sinon la découverte de ce logiciel n'aura pas fait avancé le schmilblik.
__________________
SidSilver... Harbar forever !
Bizarre... Désolé, je boycott le framework .net, pour l'instant du moins. Donc je ne peux pas tester cette application. est-ce qu'elle te demandes d'entrer le port du serveur? Si oui , et que ce port est différent de 5121, c'est probablement de là que cela vient. Une autre possibilité est qu'elle utilise un autre message, par exemple "\\serveur\secure\\" ... La cela serait limite, mais étant donné ce que tu disais du serveur je ne pense pas que ce soit ça .
En fait ce logiciel est multiserveur...
On entre l'adresse ip et le port de chaque serveur qu'on veut pouvoir "Checker".

Donc, le port que moi je check est bien 5121.
Après, pour ce qui est de la méthode qu'il utilise, je n'en sais rien, mais il faut absolument qu'il m'envoie sa source.
__________________
SidSilver... Harbar forever !
Je croyais que tu touchais pas a C# à cause du framework...
Moi j'ai besoin de trouver comment faire en C#.

Pour l'ip et le port : 217.129.227.218:5121
Mais ce serveur n'est pas ouvert tout le temps.
sinon essaye avec : 80.67.181.4:5121
Voilà si tu veux essayer tout de même.
__________________
SidSilver... Harbar forever !
Mauvaise nouvelle... Phantom, l'anglais du Vault NWN, ne veut pas me donner le code source de son programme.

Il me faut donc trouver comment gérer l'udp en C#.
Si quelqu'un peut m'aider a cette tache...
__________________
SidSilver... Harbar forever !
Répondre

Connectés sur ce fil

 
1 connecté (0 membre et 1 invité) Afficher la liste détaillée des connectés