Récupérer ressources/FarmCell de la map

Inscrit
13 Avril 2016
Messages
27
Reactions
0
#21
J'imagine que t'a n'a pas vu la fonction que j'ai posté dans les messages plus haut mais c'est exactement se que je fais.
Bon je pense avoir résolu mon problème pour l'instant, j'ai rajouté une boucle qui vérifie que la cell récupéré dans les dlm correspond bien aux cells de StatedElement, ça semble faire le taff.

C#:
public static void setFarmCell()
        {
            UsableElement item;
            bool Bool = true;
            StaticInfos.usableElement.Clear();
            foreach (InteractiveElement i in StaticInfos.element)
            {
                InteractiveElement ie = i as InteractiveElement;
                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)
                                {
                                    foreach (StatedElement cId in StaticInfos.statedElement)
                                    {
                                        if (cId.elementCellId == c.cellId)
                                        {
                                            item = new UsableElement()
                                            {
                                                cellId = (short)cId.elementCellId,
                                                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;
                                            break;
                                        }
                                    }
                                 
                                }
                            }
                        }
                    }
                }
            }
         
        }
Bon sinon je vais travailler plus la chose pour la postions.
 
Inscrit
7 Mars 2015
Messages
30
Reactions
0
#22
Le code de Alex est bon, il suffit juste de vérifier que offset et pixelOffset sont égaux à 0,0.

C#:
  foreach (Layer layer in Map.Data.Layers)
  {
     foreach (Cell cell in layer.Cells)
     {
        foreach (BasicElement layerElement in cell.Elements)
        {
           if (layerElement is GraphicalElement)
           {
              GraphicalElement graphicalElement = (GraphicalElement)layerElement;
              if (graphicalElement.Identifier == element.elementId && element.pixelOffset == Point.Empty && element.offset == Point.Empty)
                 Doors.Add(new MapDoorEntry(cell.CellId, element));
            }
          }
      }
  }

De rien.
 
Inscrit
24 Septembre 2016
Messages
17
Reactions
0
#23
non c'est pas la même chose car lui se sert apres des variables de la classe graphicalelement
 
Inscrit
13 Avril 2016
Messages
27
Reactions
0
#24
Le code de Alex est bon, il suffit juste de vérifier que offset et pixelOffset sont égaux à 0,0.
Humm, j'en doute, j'ai des cells qui sont bonne et qui sont différentes de 0, cependant j'ai remarqué que sur la cell récalcitrante que X de offset est extrêmement élevé par rapporte aux autres, je vais étudier la chose.
 
Inscrit
7 Mars 2015
Messages
30
Reactions
0
#25
Ce code fonctionnera pour les ressources en tout cas
 

BlueDream

Administrateur
Membre du personnel
Inscrit
8 Decembre 2012
Messages
2 010
Reactions
150
#26
Je vous ai mis sur la bonne voie, après j'aime bien laisser un peu faire les gens :p

@Ryflew Autant pour moi.
 
Inscrit
13 Avril 2016
Messages
27
Reactions
0
#27
Je vous ai mis sur la bonne voie, après j'aime bien laisser un peu faire les gens :p
Le but c'est pas d'avoir la réponse, c'est de m’aiguiller.
Du coup merci @MasterPhist, tu m'a bien (trop bien ^^)aiguillé, en fait quand le X de offset est élevé ça veut dire qu'il est hors map, j'ai donc mis un filtre pour ça et ça fonctionne impec :)

Merci a tous :)
 
Dernière édition par un modérateur:

neross

Membre Actif
Inscrit
20 Decembre 2014
Messages
150
Reactions
0
#28
Ayant fait un éditeur de map qui fonctionne a la perfection pour avant le 16:9. Les ressources peuvent avoir un offset différent de 0/0.
Par contre si tu veux analyser les interactives de ta map rien de plus simple. Récupéré les info du fichier "elements.ele", grâce au code a Alex tu pourras récupéré l'elementId de l'interactive.
Tu récupère donc ton interactive et regarde simplement le GFX utiliser, seul les ateliers - enclos - maisons et zaaps ont un GFX différent entre eux.

http://pastebin.com/kRj1aF1x (Petit exemple les valeurs des ressources de sont pas bonne je te laisse les trouver)

Edit : Nous utilisons cette technique sur notre émulateur et nous avons 99% (manque les interactives activable par animation) des interactives utilisable et toute les ressources récoltable sont implanter pour les métiers, bon sauf les poissons qui on une apparition aléatoire (même gfx entre truite et goujon par exemple) ....
 
Inscrit
25 Février 2012
Messages
178
Reactions
3
#29
Le code en haut ne va pas marcher pour certains ressources / interactives.
Un element peut être décalé de certains pixels (et c'est absolument normal dans 90% des cas, les 10% restantes sont les elements hors map).
 
Haut Bas