JustNao / DofusHelper

Projet personnel pour apprendre Python, en créant un MITM pour Dofus.
MIT License
16 stars 4 forks source link

Index Error Treasure Hunt #4

Closed AymericAg closed 3 years ago

AymericAg commented 3 years ago

Bonjour, Je suis totalement nouveau dans le domaine et je voulais utiliser ce projet pour en apprendre un peu. J'ai donc voulu le tester et tester notamment les chasses, mais lorsque je lance le script main et que je choisis l'un des deux pour les chasses (soit le bot soit juste l'helper), je finis par avoir un IndexError.

Voici l'erreur : Exception in thread Sniffer: Traceback (most recent call last): File "C:\Users\Aymeric\AppData\Local\Programs\Python\Python39\lib\threading.py", line 954, in _bootstrap_inner self.run() File "C:\Users\Aymeric\AppData\Local\Programs\Python\Python39\lib\threading.py", line 892, in run self._target(*self._args, **self._kwargs) File "C:\Users\Aymeric\Desktop\DofusHelper-main\sniffer\network.py", line 207, in _sniff sniff( File "C:\Users\Aymeric\Desktop\DofusHelper-main\sniffer\network.py", line 117, in sniff r = prn(p) File "C:\Users\Aymeric\Desktop\DofusHelper-main\sniffer\network.py", line 211, in prn=lambda p: on_receive(p, action), File "C:\Users\Aymeric\Desktop\DofusHelper-main\sniffer\network.py", line 186, in on_receive action(msg) File "C:\Users\Aymeric\Desktop\DofusHelper-main\modules\treasureHuntBot.py", line 118, in packetRead packet = protocol.read(protocol.msg_from_id[msg.id]["name"], msg.data) File "C:\Users\Aymeric\Desktop\DofusHelper-main\sniffer\protocol.py", line 74, in read ans[var["name"]] = read(var["type"], data) File "C:\Users\Aymeric\Desktop\DofusHelper-main\sniffer\protocol.py", line 50, in read return primitives[type]0 File "C:\Users\Aymeric\Desktop\DofusHelper-main\data\binrw.py", line 67, in readBoolean ans = self.read(1) File "C:\Users\Aymeric\Desktop\DofusHelper-main\data\binrw.py", line 55, in read self.verif(l) File "C:\Users\Aymeric\Desktop\DofusHelper-main\data\binrw.py", line 49, in verif raise IndexError(self.pos, l, len(self)) IndexError: (0, 1, 0)

Pourriez-vous m'éclairer ? Merci d'avance

JustNao commented 3 years ago

Probablement un problème d'ID de packet, cf. le premier paragraphe du ReadMe.On Aug 5, 2021 00:37, AymericAg @.***> wrote:

Bonjour,

Je suis totalement nouveau dans le domaine et je voulais utiliser ce projet pour en apprendre un peu. J'ai donc voulu le tester et tester notamment les chasses, mais lorsque je lance le script main et que je choisis l'un des deux pour les chasses (soit le bot soit juste l'helper), je finis par avoir un IndexError.

Voici l'erreur :

Exception in thread Sniffer:

Traceback (most recent call last):

File "C:\Users\Aymeric\AppData\Local\Programs\Python\Python39\lib\threading.py", line 954, in _bootstrap_inner

self.run()

File "C:\Users\Aymeric\AppData\Local\Programs\Python\Python39\lib\threading.py", line 892, in run

self._target(*self._args, **self._kwargs)

File "C:\Users\Aymeric\Desktop\DofusHelper-main\sniffer\network.py", line 207, in _sniff

sniff(

File "C:\Users\Aymeric\Desktop\DofusHelper-main\sniffer\network.py", line 117, in sniff

r = prn(p)

File "C:\Users\Aymeric\Desktop\DofusHelper-main\sniffer\network.py", line 211, in

prn=lambda p: on_receive(p, action),

File "C:\Users\Aymeric\Desktop\DofusHelper-main\sniffer\network.py", line 186, in on_receive

action(msg)

File "C:\Users\Aymeric\Desktop\DofusHelper-main\modules\treasureHuntBot.py", line 118, in packetRead

packet = protocol.read(protocol.msg_from_id[msg.id]["name"], msg.data)

File "C:\Users\Aymeric\Desktop\DofusHelper-main\sniffer\protocol.py", line 74, in read

ans[var["name"]] = read(var["type"], data)

File "C:\Users\Aymeric\Desktop\DofusHelper-main\sniffer\protocol.py", line 50, in read

return primitives[type]0

File "C:\Users\Aymeric\Desktop\DofusHelper-main\data\binrw.py", line 67, in readBoolean

ans = self.read(1)

File "C:\Users\Aymeric\Desktop\DofusHelper-main\data\binrw.py", line 55, in read

self.verif(l)

File "C:\Users\Aymeric\Desktop\DofusHelper-main\data\binrw.py", line 49, in verif

raise IndexError(self.pos, l, len(self))

IndexError: (0, 1, 0)

Pourriez-vous m'éclairer ? Merci d'avance

—You are receiving this because you are subscribed to this thread.Reply to this email directly, view it on GitHub, or unsubscribe.Triage notifications on the go with GitHub Mobile for iOS or Android.

AymericAg commented 3 years ago

J'avais vu mais je ne pensais pas que c'était ça qui créait cette erreur, je vais essayer d'update.

AymericAg commented 3 years ago

Pourrais-tu m'expliquer comment mettre à jour les id ? Il faut re-décompiler le jeu pour pouvoir mettre à jour les json dans sources/gameRessources/ ? Si c'est ça je ne sais pas comment m'y prendre après la décompilation...

JustNao commented 3 years ago

J'ai mis à jour les packets pour la 2.60 et fait un petit fix pour le problème d'index. Pour la décompilation, le decompile.sh de LaBot extrait tous les packets qui nous intéressent du Invoker.swf d'Ankama dans un dossier sources. Une fois que tu as extrait les ~1500 packets, tu peux les compresser dans un protocole.pk à l'aide de build_protocol.py. C'est dans ça que les packets seront stockés pour l'utilisation des scripts, et ce fichier est à mettre dans DofusHelper/sniffer.