Salut salut,
Je reviens pour un nouveau problème que je rencontre, je vais résumer rapidement.
Actuellement j'arrive a récupérer les infos des "farmCell". Sur certaines map ça fonction mais sur la plupart ça marche pas du tout.
Donc d'après mes test/analyse, le serveur envoi MapComplementaryInformationsDataMessage, avec StatedElement pour savoir si il est récoltable ou pas, et InteractiveElement pour les autres infos pour la lecture d2o.
Déjà premier question, pourquoi il y plus d'InteractiveElement que de ressources sur la map ?
Ensuite je compare l'elementID du de chaques InteractiveElement reçus avec l'identifier du GraphicalElement des dlm et si c'est les mêmes alors ça veut dire que la cell est une farmCell.
Sauf que sur la plupart des maps, il y a les "bonne" cell mais le reste c'est des cell où il n'y a absolument rien comme ressource.
Par exemple sur cette map on voit bien 3 ressources.
Sauf que moi j’obtiens les 3, mais 2 de trop.
Voici le code :
La fonction qui m'affiche les données :
Voilà si quelqu'un pourrais m'aider et me dire comment récupérer parfaitement les cells, ou me corriger ça serai top
Je reviens pour un nouveau problème que je rencontre, je vais résumer rapidement.
Actuellement j'arrive a récupérer les infos des "farmCell". Sur certaines map ça fonction mais sur la plupart ça marche pas du tout.
Donc d'après mes test/analyse, le serveur envoi MapComplementaryInformationsDataMessage, avec StatedElement pour savoir si il est récoltable ou pas, et InteractiveElement pour les autres infos pour la lecture d2o.
Déjà premier question, pourquoi il y plus d'InteractiveElement que de ressources sur la map ?
Ensuite je compare l'elementID du de chaques InteractiveElement reçus avec l'identifier du GraphicalElement des dlm et si c'est les mêmes alors ça veut dire que la cell est une farmCell.
Sauf que sur la plupart des maps, il y a les "bonne" cell mais le reste c'est des cell où il n'y a absolument rien comme ressource.
Par exemple sur cette map on voit bien 3 ressources.
Sauf que moi j’obtiens les 3, mais 2 de trop.
Voici le code :
C#:
StaticInfos.element.Clear();
foreach (InteractiveElement i in mcidm.interactiveElements)
{
if (i is InteractiveElementWithAgeBonus)
StaticInfos.element.Add(i as InteractiveElementWithAgeBonus);
}
StaticInfos.statedElement = mcidm.statedElements;
MainWindow._MainWindow.setRessourceOnMap();
La fonction qui m'affiche les données :
C#:
string canGather = "";
string ressourceName;
MapData.setFarmCell();
ressourceOnMap.Items.Clear();
foreach (UsableElement i in StaticInfos.usableElement)
{
foreach (InteractiveElementSkill ie in i.skills)
{
DataClass d = GameData.GetDataObject("Skills", ie.skillId);
if ((int)d.Fields["gatheredRessourceItem"] == -1)
continue;
int iId = (int)d.Fields["interactiveId"];
ressourceName = I18n.GetText((int)GameData.GetDataObject("Interactives", iId).Fields["nameId"]);
foreach (StatedElement se in StaticInfos.statedElement)
{
if (se.elementId == i.elementId)
{
canGather = se.elementState == 0 ? "Non" : "Oui";
break;
}
}
ressourceOnMap.Items.Add(new RessourceOnMap() { Name = ressourceName, cellId = i.cellId ,canGather = canGather});
canGather = "";
}
}
}
C#:
UsableElement item;
bool Bool = true;
StaticInfos.usableElement.Clear();
foreach (InteractiveElementWithAgeBonus i in StaticInfos.element)
{
InteractiveElementWithAgeBonus ie = (InteractiveElementWithAgeBonus)i;
if (ie.enabledSkills.Count >= 1)
{
foreach (Layer l in Data.layers)
{
foreach (Cell c in l.cells)
{
foreach (BasicElement b in c.elements)
{
if (b is GraphicalElement)
{
GraphicalElement ge = b as GraphicalElement;
if (ge.identifier == ie.elementId)
{
item = new UsableElement()
{
cellId = c.cellId,
elementId = ie.elementId,
element = ie,
skills = ie.enabledSkills
};
foreach (UsableElement u in StaticInfos.usableElement)
{
if (u.cellId == item.cellId)
Bool = false;
}
if (Bool)
StaticInfos.usableElement.Add(item);
Bool = true;
}
}
}
}
}
}
}
Voilà si quelqu'un pourrais m'aider et me dire comment récupérer parfaitement les cells, ou me corriger ça serai top