C# Deplacement échoué lors d'une récolte

Inscrit
17 Avril 2015
Messages
119
Reactions
0
#1
Bonjours,

Cela fais maintenant un moment que j'essaye de développer un bot dofus Socket.
Maintenant la connexion géré, j'ai mon système de trajet. Mes déplacements sont fonctionnels.
Maintenant je voudrais mettre donc une fonction récolte. Mais la arrive les problèmes. Je m'explique :
Dans un premier temps je récupéré les données de la map ( StatedElement, etc )
Ensuite je me déplace à la récolte ( à coter )
J'envoie le packet pour utiliser un interactif jusque là tout est OK.
Mais une fois terminée, j’attends évidement que j'ai finis de récolter, puis je redemande un déplacement, et la c'est le drame.
Je reçois un GameMapNoMovementMessage et le serveur bloque tout mes déplacement.

Si je ne met pas de code dans le post pour vous aider c'est parce que j'ai tellement essayé plein de chose que je ne vois même plus de ou sa pourrais venir.

Merci
 

BlueDream

Administrateur
Membre du personnel
Inscrit
8 Decembre 2012
Messages
2 010
Reactions
150
#2
Partage nous au moins tes échanges de paquets.
 
Inscrit
17 Avril 2015
Messages
119
Reactions
0
#3
Ah oui j'y avais pas pensé :
Code:
[Récolte] Mouvement vers Blé (478754).
950 send to server
[Scripts] Récolte #1.
Packet reçu :6362
Packet reçu :951
Packet reçu :176
952 send to server
Packet reçu :6362
Packet reçu :176
[Récolte] Utilisation de la ressource.
5001 send to server
Packet reçu :6362
Packet reçu :5709
Packet reçu :5708
Packet reçu :5745
Packet reçu :176
Packet reçu :6112
[Récolte] Ressource (Blé) récoltée.
Packet reçu :3023
Packet reçu :3009
Packet reçu :6519
Packet reçu :5654
Packet reçu :5709
Packet reçu :5708
[Récolte] Mouvement vers Blé (478761).
950 send to server
[Scripts] Récolte #2.
Packet reçu :6362
Packet reçu :954
Movement échoué : [14;8].
 

zahid98

Membre Actif
Inscrit
13 Decembre 2014
Messages
352
Reactions
2
#4
La gestion des délais du mouvement tu la fais comment ?
 
Inscrit
17 Avril 2015
Messages
119
Reactions
0
#5
Avec une classe Velocity. Je suis à 99% que je me trompe pas j'ai déjà vérifié.
C#:
public static class MovementVelocity
    {

        public enum MovementTypeEnum
        {
            MOUNTED,
            PARABLE,
            RUNNING,
            SLIDE,
            WALKING,
        }

        public static uint GetPathVelocity(MovementPath cells, MovementTypeEnum moveType)
        {
            uint velocity = 0;

            foreach (PathElement cell in cells.Cells)
            {
                velocity += GetVelocity(cell, moveType);
            }

            return velocity;
        }

        public static uint GetVelocity(PathElement cell, MovementTypeEnum moveType)
        {
            if (cell.Orientation % 2 == 0)
            {
                if (cell.Orientation % 4 == 0)
                {
                    // HORIZONTAL DIAGONAL VELOCITY

                    switch (moveType)
                    {
                        case MovementTypeEnum.MOUNTED:
                            return 200;
                        case MovementTypeEnum.PARABLE:
                            return 500;
                        case MovementTypeEnum.RUNNING:
                            return 255;
                        case MovementTypeEnum.SLIDE:
                            return 255 * 3;
                        case MovementTypeEnum.WALKING:
                            return 510;

                    }
                }

                // VERTICAL DIAGONAL VELOCITY

                switch (moveType)
                {
                    case MovementTypeEnum.MOUNTED:
                        return 120;
                    case MovementTypeEnum.PARABLE:
                        return 450;
                    case MovementTypeEnum.RUNNING:
                        return 150;
                    case MovementTypeEnum.SLIDE:
                        return 150 * 3;
                    case MovementTypeEnum.WALKING:
                        return 425;
                }
            }

            // LINEAR VELOCITY

            switch (moveType)
            {
                case MovementTypeEnum.MOUNTED:
                    return 135;
                case MovementTypeEnum.PARABLE:
                    return 400;
                case MovementTypeEnum.RUNNING:
                    return 170;
                case MovementTypeEnum.SLIDE:
                    return 170 * 3;
                case MovementTypeEnum.WALKING:
                    return 480;
            }

            return 0;
        }

    }
 

zahid98

Membre Actif
Inscrit
13 Decembre 2014
Messages
352
Reactions
2
#6
Hum , tu gères correctement le NoMovementMessage ?
Edit : Désolé j'avais pas le lu le sujet (head out) , pour le GameMapNoMovementMessage , une fois reçu , tu devras annuler toutes les actions qui seront exécutées à la fin du mouvement et tout refaire .
 
Inscrit
17 Avril 2015
Messages
119
Reactions
0
#7
J'annule déjà tout, et le trajet relance automatiquement mais cela ne change rien le serveur n'accepte plus aucun mouvement de la part du bot.
 

zahid98

Membre Actif
Inscrit
13 Decembre 2014
Messages
352
Reactions
2
#8
Tu te trouves kické par le serveur après le NoMovement ou c'est juste que le serveur n'accepte plus tes déplacements ?
Ps : Peut-être que tu es trop rapide sur la récolte ? (les délais de recolte c'est bien géré aussi ?).
C'est un peu dûr d'aider sans code mais je comprends :) .
 
Inscrit
17 Avril 2015
Messages
119
Reactions
0
#9
Oui j'ai mis des pauses entre les récoltes.
Je me fais pas kické par le serveur, juste il n’accepte plus mes déplacements.
 

zahid98

Membre Actif
Inscrit
13 Decembre 2014
Messages
352
Reactions
2
#10
Pour les packets de latency/sequence , c'est aussi bien géré ? Si oui essaie de faire des déplacements quelconques sans recoltes pour se concentrer sur ça si c'est bien le problème.
 
Inscrit
17 Avril 2015
Messages
119
Reactions
0
#11
Pour les packets de latency/sequence:
C'est le packet Lantency que je vois pas trop comment le remplir j'ai mis le nombre de packet envoyer, et après les 2 autres je mes 40 et 50.
Maintenant mon bot n'a pas de problème a ce déplacer uniquement. Je vois par contre qu'il y arrive que les mouvement échoue mais sans conséquence puisque le bot continue son déplacement.
 
Inscrit
17 Avril 2015
Messages
119
Reactions
0
#12
Je pense que je ne gère pas correctement je viens de voir que le serveur ma déconnecte lors d'un déplacement.
 

asyade

Membre Actif
Inscrit
26 Avril 2013
Messages
368
Reactions
1
#13
Tu a tester tes déplacements grandeur nature? un gros trajet ou ton bot change de carte en boucle ? essaye de logger ton path (le code ci dessous viens des source de toutch mais tu pourais utiliser un mapControle par example) sa te dira deja si le path est bon a tout les coups
Code:
exports.logPath = function (path) {
    path = path || [];
    // construct matrix from map
    var grid = [];
    var x, y;
    for (x = 0; x < 33; x += 1) {
        grid.push([]);
        for (y = 0; y < 34; y += 1) {
            if (getCellId(x, y) === undefined) {
                grid[x][y] = '    ';
            } else {
                grid[x][y] = '[  ]';
            }
        }
    }
    for (var i = 0, len = path.length; i < len; i += 1) {
        var cellId = path[i];
        var coord = getMapPoint(cellId);
        var b = (i < 10) ? '0' : '';
        grid[coord.x][coord.y] = '[' + b + i + ']';
    }
    var text = '';
    for (y = 0; y < 34; y += 1) {
        for (x = 0; x < 33; x += 1) {
            text += grid[x][y];
        }
        text += '\n';
    }
    return text;
};
 
Inscrit
17 Avril 2015
Messages
119
Reactions
0
#14
Je viens de finaliser, le bot à tourné pendant beaucoup de temps, je n'est eus aucune déconnexion. Cela reste encore un mystère ce refus de déplacement. Je cherche constamment mais sans réponse.
 
Haut Bas