contributeur : Wocuhecy, Hedjour, Kamax
/!\ page en cours de création
Création d'une carte 3D de regnum
scripts "expérimental" de Wosuhecy. Je vous invite fortement à lire le code.LAST UPDATE : 08/05/2008
Version 0.1 sous GPL
I- Avant propos
Il s'agit de deux scripts écrit en perl (regnum_client.pl et tk-regnum.pl).A/ La partie cliente
Le premier a pour rôle de capturer les trames réseaux envoyées par votre jeu sur le serveur officiel de regnum-online pour en extraire les positions en temps réel de votre personnage. Ce programme envoie à chaque capture vos coordonnées spatiales en direction de mon pc.B/ La partie redirection des donnees
Mon pc, sur lequel tourne un serveur udp, redirige toutes les données reçues par les différents clients sur chacune des machines clientes.
C'est-à-dire que chacun des pcs reçoit toutes les positions en temps réel des différents joueurs connectés sur regnum-online utilisant le script regnum-client.pl. Il envoie aussi maintenant le status des forts, le rafraichissement peut varier de 30 secs à 1 minute.
C/ La partie serveur
Le deuxième fichier concerne la partie serveur et l'affichage. Ce programme récupère donc les données retransmises par mon pc pour les afficher grâce à une interface graphique sur une carte. Le joueur se voit donc, dès lors pourvu d'une carte annexe au jeu montrant la position toute les 2 secs (en moyenne) de tous les joueurs connectés utilisant au moins la partie cliente regnum_client.pl.
D/ La Map
Concernant la creation d'une carte en trois dimensions, elle se construira naturellement grâce au coordonnées X,Y,Z récoltées par le serveur de retransmission de paquets sur mon ordinateur. En effet, toutes les positions et uniquement celles-ci, se verront enregistées dans une base de données. Une image pourra alors être construite a partir de celles ci. Essayer si vous le pouvez de tracer le contour des objets que vous rencontrer sur votre passage (tournez autour).
E/ Les problèmes majeurs sont :
1- Installation type Wifi (non supporter par le regnum_client.pl, sniffer)
2- Installation type windows vista(pas encore testé)
Le portage sur windowsXP et linux fonctionne
II- Installation pour Windows (x86):
Pour le moment seul un joueur l'utilise.A/ : Prérequis
Telecharger a partir de leur site officiel et
installer les logiciels suivant sur vorte ordinateur :
1- active-perlB/ Telecharger les scripts perl
http://www.activestate.com/store/download_file.aspx
?binGUID=e5c71329-b7a6-4563-8199-e1483f751c4f
2- winpcap
http://www.winpcap.org/install/bin/WinPcap_4_0_2.exe
3- Net::Pcap
Dans une console msdos :
ppm install http://www.bribes.org/perl/ppm/Net-Pcap.ppd
4- Perl-Tk
grâce à ppm (Active Perl), installer la dernière version de tk.
(tapez : "ppm" dans une console msdos)
Cree un répértoire dans votre arboresence. Peut importe l'endroit mais un repertoire vide.C/ Procedure d'utilisation
1- a l'aide de votre navigateur internet
a l'adresse suivante : http://wosuhecy.homelinux.com
Aller dans la section download et apres avoir remplis le formulaire, telecharger les trois liens presentes dans le repertoire vide cree.
2- decompresser l'archive
Decompresser l'archive en tar.gz
Il ne faudra qu'un seul fichier (avec l'extension .key, renommer les autres en .key.old si presente)
D/ problemes eventuelles
1- Demarrage des scripts
dans deux consoles msdos distinctes, après s'être connecté à Regnum executer les commandes suivantes a partir du repertoire de telechargement des scripts :
perl tk-regnum.pl puis perl regnum_client.pl
Ou bien encore double-cliquer sur les fichiers fichiers a partir de votre navigateur de fichier.
2- Conseils
Lancer les scripts a partir du mode console est preferable pour une mode bavard, ie : visualisation des donnees traitees.
Dans le cas d'erreur ou de non fonctionnement eventuelle, voici quelques cas deja rencontrer par ordre d'importance :
1- Erreur sur le choix de la carte reseaux par default :
Si le script regnum_client.pl lance en mode console n'affiche aucune donnees, faites varier la valeur "-1" dans ce fichier a la ligne : my $dev=$dev[-1]
par 0, puis 1 , 2 ou 3, jusqu'à apparition de données en série au lancement de ce script.
2- Delai dans l'envoie des trames reseau
Il m'est apparu (parfois seulement) que la totalite des frames capturees sur 30 secs sont envoyer en 1 seconde. Ce comportement reste encore extremement obscure pour moi.
Je n'ai donc pas encore actuellement de solution a apporter.
4- Erreur pour le compteur de rp
3- Probleme encore inconnu
Faites moi part de vos problemes rencontres grace un commentaire sur cette page en me laissant un moyen de vous joindre (in-game, etc )
III- installation linux
A/ Installer les "packages" suivants :
1- perl
2- perl-tk
3- libnet-pcap-perl (ou perl-net-pcap, ...)
B/ Telecharger les scripts perl
Cree un répértoire dans votre arboresence. Peut importe l'endroit mais un repertoire vide.C/ Dans deux consoles après etre connecté à Regnum :
1- a l'aide de votre navigateur internet
a l'adresse suivante : http://wosuhecy.homelinux.com
Aller dans la section download et apres avoir remplis le formulaire, telecharger les trois liens presentes dans le repertoire vide cree.
2- decompresser l'archive
Decompresser l'archive en tar.gz
Il ne faudra qu'un seul fichier (avec l'extension .key, renommer les autres en .key.old si presente)
1- Lancer d'abord la commande : perl tk-regnum.pl (sous un compte utilisateur)D/ problemes eventuelles
2- et ensuite : perl regnum_client.pl (sous le compte root)
probleme pour les interfaces ppp0,wlan0 et nas0
ATTENTION :
VOTRE PORT 4535 DOIT ÊTRE OUVERT
Une seule cle doit etre presente dans le repertoire avec l'extension .key
VOTRE PORT 4535 DOIT ÊTRE OUVERT
Une seule cle doit etre presente dans le repertoire avec l'extension .key
IV - Demo

V - A venir
TODO :
1-enlever les points des clients déconnectés (a venir bientot)
2-extraire les XP pour etablir le lvl automatiquement
votre aide sera la bienvenue...
VI - Pour la carte.
La carte a été mise a jour dernièrement vous pouvez la telecharger ramsesvls.free.fr/regnum_full.gif
Les noms sont ceux donné par les syrtisiens mais que les autres royaumes me donne les denominations de leur royaume via le chan irc
(ps: lorsque la souris est sur un joueur, la classe et nom du joueur sont affichés;)
Si quelqu'un a les accents sur son clavier et un correcteur d'orthographe -(:P)
Commentaires
Heu, comment on fait pour ecrire une page ici O.o
, le 2008-04-20 à 01h48
XDDDD
Tu as un bouton Edit en bas de page à droite. Une fois les modifications effectuées, tu devras Enregistrer le tout (le bouton sera alors en dehors du cadre de texte, en bas à gauche d'icelui. Attention à la luminosité de ton écran, il se peut que le bouton ne soit pas très visible si trop forte)
- Razorbill
Tu as un bouton Edit en bas de page à droite. Une fois les modifications effectuées, tu devras Enregistrer le tout (le bouton sera alors en dehors du cadre de texte, en bas à gauche d'icelui. Attention à la luminosité de ton écran, il se peut que le bouton ne soit pas très visible si trop forte)
- Razorbill
, le 2008-04-20 à 10h58
Des petites explication supplementaire n'aurait pas été superflux... :D
J'ai copier le script dans un fichier que j'ai nommé script3D, je l'ai rendu executable, et lorsque je le lance j'obtiens :
Can't locate Net/Pcap.pm in @INC (@INC contains: /etc/perl /usr/local/lib/perl/5.8.8 /usr/local/share/perl/5.8.8 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.8 /usr/share/perl/5.8 /usr/local/lib/site_perl .) at ./script3d line 5.
BEGIN failed--compilation aborted at ./script3d line 5.
C'est grave docteur wosu ?
LouLeen
J'ai copier le script dans un fichier que j'ai nommé script3D, je l'ai rendu executable, et lorsque je le lance j'obtiens :
Can't locate Net/Pcap.pm in @INC (@INC contains: /etc/perl /usr/local/lib/perl/5.8.8 /usr/local/share/perl/5.8.8 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.8 /usr/share/perl/5.8 /usr/local/lib/site_perl .) at ./script3d line 5.
BEGIN failed--compilation aborted at ./script3d line 5.
C'est grave docteur wosu ?
LouLeen
, le 2008-04-20 à 22h17
"pourra aussi servir dans un futur proche a positionner les membres du clan sur une carte en temps reel." >> Pourquoi pas le lvl aussi ?
kid'
kid'
, le 2008-04-22 à 17h21
Petite idée d'amélioration pour ceux qui sont sous linux, c'est de créer un petit script de lancement du jeu qui lance aussi le client.
, le 2008-04-29 à 11h47
Une idée aussi : intégrer dans le script une ouverture du port adequat (sous réserve d'un acquiscement de l'utilisateur via sudo).
Naoli
Naoli
, le 2008-04-29 à 18h23
A l’occasion je veux bien me charger de la correction de ton texte (mes capacités en informatiques étant limitées ce sera ma seule participation =)
Je trouve ton idée très bonne et dès que j’aurai un peu de temps devant moi j’essaierai l’installation.
Plusieurs idées me viennent à l’esprit:
1- dans le tuto, je verrai bien plusieurs captures d’écran pour les différentes étapes de l’installation.
2- Ce qui serait super cool ce serait de pouvoir développer un script qui permet de sélectionner un joueur en cliquant dans la fenêtre party du jeu. Etant conju, c’est super chiant de ne pas réussir à sélectionner un joueur au milieu d’une foule d’autres joueurs…et de le voir bêtement sans pouvoir le guérir. Je pense que toutes les infos des joueurs qui apparaissent sur notre écran doivent aussi passer par nos ports respectifs…et donc ça devrait être jouable à partir que le joueur est à l’écran, non ?
A++ Xorga (syrtys)
Je trouve ton idée très bonne et dès que j’aurai un peu de temps devant moi j’essaierai l’installation.
Plusieurs idées me viennent à l’esprit:
1- dans le tuto, je verrai bien plusieurs captures d’écran pour les différentes étapes de l’installation.
2- Ce qui serait super cool ce serait de pouvoir développer un script qui permet de sélectionner un joueur en cliquant dans la fenêtre party du jeu. Etant conju, c’est super chiant de ne pas réussir à sélectionner un joueur au milieu d’une foule d’autres joueurs…et de le voir bêtement sans pouvoir le guérir. Je pense que toutes les infos des joueurs qui apparaissent sur notre écran doivent aussi passer par nos ports respectifs…et donc ça devrait être jouable à partir que le joueur est à l’écran, non ?
A++ Xorga (syrtys)
, le 2008-04-30 à 13h56
mm, l'interaction entre mes scripts perl et le jeu en lui meme preconise l'utilisation d'une technique nommee man in the middle. Bref, placer entre le jeu lui meme et le serveur regnum, un programme de modification de trame reseau.
Il m'est possible en effet de programmer une tel chose mais cela me demandera un temps un poil trop consequent. Bref, grave pas le temps ou certainement pas pour apres-demain ;)
De plus, l'utilisation de regle iptables et toute l'artillerie qui va avec rendront le script difficilement configurable pour tous (pour windows, je ne veux meme pas savoir)
Voila un peu les limitations actuelle du developpement et des possiblites
Il m'est possible en effet de programmer une tel chose mais cela me demandera un temps un poil trop consequent. Bref, grave pas le temps ou certainement pas pour apres-demain ;)
De plus, l'utilisation de regle iptables et toute l'artillerie qui va avec rendront le script difficilement configurable pour tous (pour windows, je ne veux meme pas savoir)
Voila un peu les limitations actuelle du developpement et des possiblites
, le 2008-04-30 à 15h56
airsnort, technique MIM, tu serais pas un ptit peu hacker à tes heures perdues toi ? :D
Naoli
Naoli
, le 2008-05-01 à 09h04
Ecrire votre commentaire
Vous devez vous connecter pour pouvoir ajouter un commentaire.
