VB/VB.Net [DEMANDE]Explication sur le parsing des fichiers D2P

  • Auteur de la discussion Anonymous
  • Date de début
A

Anonymous

Invité
#1
Bien le bonjour, cela va faire un long moment que je ne suis plus passé par ici, et la terre a continué de tourné pendant ce temps, le développement de bots aussi.
Néanmoins j'ai raté un épisode, en effet, je ne sais pas comment parser les fichiers D2P afin d'obtenir les maps (les déséréaliser aussi ?)

Je ne demande pas un code complet, mais une aide, ou une indication sur les sources AS à examiner.
Merci
*Il y a bien 2 dll s'occupant de cette tâche sur le forum, mais étant uploader sur Megaupload, ces liens sont morts
 
A

Anonymous

Invité
#2
Bon, je patauge encore pas mal.
Pour le moment, j'ai vu qu'il existe bien une classe qui s'occupe des fichier d2p : Class PakProtocol2
J'essaie de voir ce que j'arrive à comprendre à l'aide des sources du EuuBot
 
Inscrit
31 Mars 2012
Messages
102
Reactions
0
#3
Salut, je suis dans la même impasse que toi,
je te met au courant si j'avance ;)
 
A

Anonymous

Invité
#4
Bah deja tu dois lire les d2p directement en stream.
Avant on décompressais les d2p en fichier pour chaque mapid, c'est un choix mais apres a toi de voir.
Vous avez des class en as a traduire permettant la lecture de ces fichiers.
 
A

Anonymous

Invité
#5
Oui, à l'époque il y avait une extraction des fichiers en DLM, mais le parsing direction permet d'avoir toujours les fichiers à jour.
Mais je souhaiterais la confirmation, c'est bien la classe "PakProtocol2" qui contient le code pour lire les fichier d2p ?
Merci
 
A

Anonymous

Invité
#6
Eu, je ne crois pas, ça ne me dit rien
 
Inscrit
31 Mars 2012
Messages
102
Reactions
0
#8
il y a aussi une classe I18.as un truc du genre ;)(pas pour les D2o mais bon on pourra faire ça aussi)

et merci pour la source, elle viens de toi ?
 
A

Anonymous

Invité
#10
Salut ToOnS,

j'ai essayé tes sources, le code bloque ici:
Class Cell
Private Shared Layer As Layer
Public ID As Short
Private Shared ELEMENTS_COUNT As Short
Private Shared ELEMENTS As List(Of BasicElement)

Sub New(ByVal Layer As Layer, ByVal br As BinaryReader)
Layer = Layer
ID = Reader.readShort(br)
ELEMENTS_COUNT = Reader.readShort(br)
ELEMENTS = New List(Of BasicElement)
For i As Integer = 0 To ELEMENTS_COUNT - 1
Dim item = BasicElement.getElementFromType(Reader.ReadByte(br), Me, br)
ELEMENTS.Add(item)
Next
End Sub
End Class
Class BasicElement

Private Shared Cell As Cell
Dim value As Integer

Public Function getValue()
Return value
End Function

Public Shared Function fromInt(ByVal value As Integer)
'for (ElementTypesEnum v : values()) {
' If v.value = value Then Return v
'}
Return value
End Function

Public Sub BasicElement(ByVal Cell As Cell)
setCell(Cell)
End Sub

Public Shared Function getElementFromType(ByVal id As Byte, ByVal Cell As Cell, ByVal reader As BinaryReader)
Select Case fromInt(id)
Case 2 'GRAPHICAL
Return New GraphicalElement(Cell, reader)

Case &H21 'SOUND
Return New SoundElement(Cell, reader)
Case Else
Console.WriteLine("Element inconnu ID : " & id & " CellID : " & Cell.ID)
End Select
Return 0 ' erreur
End Function

Public Sub setCell(ByVal Cell As Cell)
Cell = Cell
End Sub

Public Function getCell()
Return Cell
End Function
End Class

à cette ligne:
Sub New(ByVal Layer As Layer, ByVal br As BinaryReader)
Layer = Layer
ID = Reader.readShort(br)
ELEMENTS_COUNT = Reader.readShort(br)
ELEMENTS = New List(Of BasicElement)
For i As Integer = 0 To ELEMENTS_COUNT - 1
Dim item = BasicElement.getElementFromType(Reader.ReadByte(br), Me, br)
ELEMENTS.Add(item)
Next
End Sub
Erreur:
Impossible d'effectuer un cast d'un objet de type 'System.Int32' en type 'BasicElement'.
 

ToOnS

Membre Actif
Inscrit
8 Avril 2009
Messages
974
Reactions
0
#11
oui possible ce code date de la version 0.0001 Alpha ou peu etre meme d'avant , le mieux c'est de voir avec la modification du code de Maxilia par The Falcon , celui la doit etre a jour
 
A

Anonymous

Invité
#12
Ok merci :)
 
A

Anonymous

Invité
#13
Oui le code de TheFalcon, fonctionne parfaitement. Néanmoins, je vais essayer de comprendre ce qui a changé, sa me sera toujours utile si il y a de nouvelles modifications dans le futur.
 
Haut Bas