Regarde ce que j'ai trouvé :p
C'est la lecture des maps décompilés du bot M4x0uBot.
Ce bot étant désormais open source mais je ne met plus la main dessus.
[StandardModule]
internal sealed class Maps
{
public static void LoadMap(int index, string idMap, string indice, string clef)
{
Perso perso = Declarations.comptes[index];
try
{
perso.changeurBas = -1;
perso.changeurDroite = -1;
perso.changeurGauche = -1;
perso.changeurHaut = -1;
perso.Debug("Loading map " + idMap);
if (!Directory.Exists("maps"))
{
Directory.CreateDirectory("maps");
}
if (!File.Exists("maps/" + idMap + "_" + indice + "X.txt"))
{
new SwfUnpacker().SwfUnpack(idMap + "_" + indice + "X.swf");
}
StreamReader reader = new StreamReader("maps/" + idMap + "_" + indice + "X.txt");
string gettokText = reader.ReadLine();
reader.Close();
gettokText = Fonctions.Gettok(gettokText, "|", 2);
string k = Conversions.ToString(Maphandler.prepareKey(clef));
string sData = Conversions.ToString(Maphandler.decypherData(gettokText, k, (int) (Convert.ToInt64(Conversions.ToString(Maphandler.checksum(k)), 0x10) * 2L)));
perso.mapDataActuel = Maphandler.uncompressMap(sData);
perso.mapActuelle = Conversions.ToInteger(idMap);
perso.TabUtilisateur.CoordsMap.Text = Config.GetMapPos(Conversions.ToInteger(idMap));
int num = 1;
do
{
if (perso.mapDataActuel[num].movement == 2)
{
int num2 = Conversions.ToInteger(Fonctions.getX(num));
int num3 = Conversions.ToInteger(Fonctions.getY(num));
if ((num2 - 1) == num3)
{
perso.changeurGauche = num;
}
else if ((num2 - 0x1b) == num3)
{
perso.changeurDroite = num;
}
else if ((num2 + num3) == 0x1f)
{
perso.changeurBas = num;
}
else if (num3 < 0)
{
num3 = Math.Abs(num3);
if ((num2 - num3) == 1)
{
perso.changeurHaut = num;
}
}
}
num++;
}
while (num <= 500);
LoadRessources(index, perso.mapDataActuel);
}
catch (Exception exception1)
{
ProjectData.SetProjectError(exception1);
Exception exception = exception1;
Interaction.MsgBox(exception.Message, MsgBoxStyle.Critical, "Error : Maps.vb --> LoadMap(" + idMap + ")");
ProjectData.ClearProjectError();
}
perso = null;
}
private static void LoadRessources(int index, Maphandler.Cell[] spritesHandler)
{
Perso perso = Declarations.comptes[index];
List<int> list = new List<int>();
List<string> list3 = new List<string>();
List<bool> list2 = new List<bool>();
string str = "a";
StreamReader reader = new StreamReader("data/ressources.txt");
while (str != null)
{
str = reader.ReadLine();
if (str != "")
{
string[] strArray = str.Split(new char[] { ':' });
if (strArray.Length == 3)
{
int item = Conversions.ToInteger(strArray[0]);
string str3 = strArray[1];
string str2 = strArray[2];
list.Add(item);
list3.Add(str3);
if (str2 == "o")
{
list2.Add(true);
}
else
{
list2.Add(false);
}
}
}
}
reader.Close();
int num = 0;
perso.TabUtilisateur.ListeRessources.Items.Clear();
int num3 = 1;
do
{
if (list.Contains(spritesHandler[num3].layerObject2Num))
{
perso.TabUtilisateur.ListeRessources.Items.Add(list3[list.IndexOf(spritesHandler[num3].layerObject2Num)]);
perso.TabUtilisateur.ListeRessources.Items[num].SubItems.Add(num3.ToString());
perso.TabUtilisateur.ListeRessources.Items[num].SubItems.Add("Non coup\x00e9");
spritesHandler[num3].object2Movement = list2[list.IndexOf(spritesHandler[num3].layerObject2Num)];
num++;
}
num3++;
}
while (num3 <= 0x3e8);
perso = null;
}
}
Le projet en bonus.
http://www.megafileupload.com/jzLE/M4x0uBot.rar