Touch GameMapMovementRequestMessage

Inscrit
1 Janvier 2021
Messages
1
Reactions
0
#1
Bonjour,

Cela fais plusieurs heures que je cherche a comprendre comment est fais le GameMapMovementRequestMessage plus précisément la valeur de keymovement.
et comment arriver a traduire cette ligne : keyMovements: [8452, 8480] en CELLID dofus

JavaScript:
"call":"sendMessage","data":{"type":"GameMapMovementRequestMessage","data":keyMovements: [8452, 8480], mapId: 67371008}}
Je suis perdu, si quelqu'un pourrais me mettre sur la bonne piste, merci d'avance.
 

DevChris

Membre Actif
Inscrit
12 Avril 2017
Messages
138
Reactions
24
#2
Hello, c'est juste une manière de compresser le chemin. Une fois le chemin calculé, il faut le passer dans cette méthode:

JavaScript:
public compressPath(path: number[]): number[] {
    const compressedPath = [];
    let prevCellId = path[0];
    let prevDirection = -1;
    let prevX = 0;
    let prevY = 0;

    for (let i = 0; i < path.length; i++) {
      let direction = 0;
      const coord = MapPoint.fromCellId(path[i]);
      if (!coord) {
        continue;
      }
      if (i === 0) {
        direction = -1;
      } else {
        if (coord.y === prevY) {
          direction = coord.x > prevX ? 7 : 3;
        } else if (coord.x === prevX) {
          direction = coord.y > prevY ? 1 : 5;
        } else {
          if (coord.x > prevX) {
            direction = coord.y > prevY ? 0 : 6;
          } else {
            direction = coord.y > prevY ? 2 : 4;
          }
        }
      }
      if (direction !== prevDirection) {
        compressedPath.push(prevCellId + (direction << 12));
        prevDirection = direction;
      }
      prevCellId = path[i];
      prevX = coord.x;
      prevY = coord.y;
    }
    compressedPath.push(prevCellId + (prevDirection << 12));
    return compressedPath;
  }
 
Haut Bas