Autoit Recherche de mobs

Inscrit
15 Avril 2011
Messages
457
Reactions
1
#1
Bonjour, je cherche à savoir quelle est la meilleure solution pour trouver des mobs sur une map (pour D.). J'ai essayé quelques trucs, sans succès. Et il n'y pas de tuto sur ça dans le fofo...

Merci.
 
A

Anonymous

Invité
#2
Bonjour,

Le 226: quand tu arrive sur la map
Le 251: quand il sorte de la map (se font attaquer)
Le 5632: quand il spawn dans la map
Le 951: quand il change de cellid

Je pense avoir tout dit
Bonne journee
 
A

Anonymous

Invité
#3
Sauf si c'est du pixelSearch
 
A

Anonymous

Invité
#4
Ah zut on est en autoit, je n'avais pas fait attention...
 
Inscrit
15 Avril 2011
Messages
457
Reactions
1
#5
Oui, je fais un bot Pixel pour le moment, car je ne trouve rien pour m'apprendre le socket :S
 
A

Anonymous

Invité
#6
Disons que le socket n'est pas facile en autoit, pas impossible puisque tout est possible.
 
Inscrit
15 Avril 2011
Messages
457
Reactions
1
#7
Pourtant, tous les bots socket sont en AutoIt non ?

Quel est le meilleur langage pour utiliser la connexion socket ? Car, je ne maîtrise que le C++ et l'AutoIt.
 
A

Anonymous

Invité
#8
Il n'y a pas de langage plus approprié qu'un autre pour du socket.
Le plus courant en bot dofus est le C# et VB.NET.
Le C++ fera très bien l'affaire, va faire un tour dans cette section !
 
Inscrit
15 Avril 2011
Messages
457
Reactions
1
#9
C'est dommage, j'aimais bien l'AutoIt, je voulais en apprendre plus sur ce langage intéressant. Mais, si je me lance dans un bot socket en C++, ça va me permettre d'approfondir mes connaissances en C++, utile pour mon DUT Informatique ! :p

Merci à toi ! ;)





EDIT : Le problème, c'est qu'il n'y a aucun tuto dans la section C/C++, et j'ai regardé sur le Site du Zéro, le tuto sur le C++ n'aborde pas le sujet des sockets :S
Je ne sais pas par où commencer...
 

ToOnS

Membre Actif
Inscrit
8 Avril 2009
Messages
974
Reactions
0
#10
Salut , autoit interressant (y'a 45 ans ca l'aurait été mais pas aujourd'hui) ?...? Voila un petit code d'un serveur C qui tourne sur ma petite carte sous linux pour recuperer les touches de la psp via socket (dsl pour les tests ca serait plus propre avec des "&" mais c'est juste des tests mdr):
Code:
    #include <stdio.h>
          #include <sys/socket.h>
          #include <arpa/inet.h>
          #include <stdlib.h>
          #include <string.h>
          #include <unistd.h>
          #include <netinet/in.h>
          #include <sys/ioctl.h>
          #include <stdio.h>
          #include <fcntl.h>
          #include <time.h>
          #include <linux/gpio_syscalls.h>

          #define MAXPENDING 5    /* Max connection requests */
          #define BUFFSIZE 8192
          void Die(char *mess) { perror(mess); exit(1); }
          
void HandleClient(int sock) {
            unsigned char buffer[BUFFSIZE];
         char buffer4[128];
         char buffer5[128];
         
            int received = -1;
            
            /* Receive message */
            if ((received = recv(sock, buffer, BUFFSIZE, 0)) < 0) {
              Die("Failed to receive initial bytes from client");
            }
            /* Send bytes and check for more incoming data in loop */
            while (received > 0) {
              
            
              
              printf("recu:%d ->%c%c<- |%02X|%02X|%02X|%02X|%02X|%02i|%02i|%02i|%03i|\n", received,buffer[0],buffer[1],buffer[2],buffer[3],buffer[4],buffer[5],buffer[6],buffer[7],buffer[8],buffer[9],buffer[10]*1000/256);
           // buffer 0 = !
              // buffer 1 = K
           // buffer 2 = axe X
           // buffer 3 = axe Y
           // buffer 4 = fleches : gauche = 128 , bas = 64 , droite = 32 , haut = 16 , start = 8 , select = 1
           // buffer 5 = boutons : carré = 128 , croix 64 , rond = 32 , triangle = 16 , R = 2 , L = 1
           // buffer 6 = home
           // buffer 7 = heure 
           // buffer 8 = minute
           // buffer 9 = seconde
           // buffer 10 = us <<16

            

//test
           if (buffer[4]>=128){
              sprintf(buffer4, "%s %s", buffer4,"Gauche ");
              buffer[4]=buffer[4] - 128;}
           if (buffer[4]>=64){
              sprintf(buffer4, "%s %s", buffer4,"Bas ");
                buffer[4]=buffer[4] - 64;}
           if (buffer[4]>=32){
              sprintf(buffer4, "%s %s", buffer4,"Droite ");
                buffer[4]=buffer[4] - 32;}
           if (buffer[4]>=16){
             sprintf(buffer4, "%s %s", buffer4,"Haut ");
                buffer[4]=buffer[4] - 16;}
           if (buffer[4]>=8){
              sprintf(buffer4, "%s %s", buffer4,"Start ");
               // Turn on DL1
                   gpioclearbits(PORTA, PA3);
              buffer[4]=buffer[4] - 8;}
           if (buffer[4]>=1){
              sprintf(buffer4, "%s %s", buffer4,"Select ");
               // Turn off DL1
                   gpiosetbits(PORTA, PA3);
                buffer[4]=buffer[4] - 1;}
           //printf("recu:%s\n",buffer4);


           if (buffer[5]>=128){
              sprintf(buffer5, "%s %s", buffer5,"Carré ");
              buffer[5]=buffer[5] - 128;}
           if (buffer[5]>=64){
              sprintf(buffer5, "%s %s", buffer5,"Croix ");
                buffer[5]=buffer[5] - 64;}
           if (buffer[5]>=32){
              sprintf(buffer5, "%s %s", buffer5,"Rond ");
                buffer[5]=buffer[5] - 32;}
           if (buffer[5]>=16){
             sprintf(buffer5, "%s %s", buffer5,"Triangle ");
                buffer[5]=buffer[5] - 16;}
           if (buffer[5]>=2){
              sprintf(buffer5, "%s %s", buffer5,"R ");
               // Turn on DL1
                   gpioclearbits(PORTA, PA3);
              buffer[5]=buffer[5] - 2;}
           if (buffer[5]>=1){
              sprintf(buffer5, "%s %s", buffer5,"L ");
               // Turn off DL1
                   gpiosetbits(PORTA, PA3);
                buffer[5]=buffer[5] - 1;}
           if (buffer4[0]!="" || buffer5[0]!=""){
              printf("recu:%s%s\n",buffer4,buffer5);
                sprintf(buffer4, "%s", "");
                sprintf(buffer5, "%s", "");}
//test
                       
              if (strstr(buffer,"off")!=NULL) {gpiosetbits(PORTA, PA3);} // Turn off DL1
               if (strstr(buffer,"on")!=NULL) {gpioclearbits(PORTA, PA3);} // Turn on DL1      

            /* Send back "OK" */
           buffer[0]='O'; buffer[1]='K';
              if (send(sock, buffer, 2, 0) != 2) {
                Die("Failed to send bytes to client");
              }

              /* Check for more data */
              if ((received = recv(sock, buffer, BUFFSIZE, 0)) < 0) {
                Die("Failed to receive additional bytes from client");
              }  
            }
            close(sock);
          }

 int main(int argc, char *argv[]) {
            int serversock, clientsock;
            struct sockaddr_in echoserver, echoclient;
            
            if (argc != 2) {
              fprintf(stderr, "USAGE: echoserver <port>\n");
              exit(1);
            }
                      
            /* Create the TCP socket */
            if ((serversock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)) < 0) {
              Die("Failed to create socket");
            }
            /* Construct the server sockaddr_in structure */
            memset(&echoserver, 0, sizeof(echoserver));       /* Clear struct */
            echoserver.sin_family = AF_INET;                  /* Internet/IP */
            echoserver.sin_addr.s_addr = htonl(INADDR_ANY);   /* Incoming addr */
            echoserver.sin_port = htons(atoi(argv[1]));       /* server port */
 /* Bind the server socket */
          if (bind(serversock, (struct sockaddr *) &echoserver,
                                       sizeof(echoserver)) < 0) {
            Die("Failed to bind the server socket");
          }
          /* Listen on the server socket */
          if (listen(serversock, MAXPENDING) < 0) {
            Die("Failed to listen on server socket");
          }
     /* Run until cancelled */
            while (1) {
              unsigned int clientlen = sizeof(echoclient);
              /* Wait for client connection */
              if ((clientsock =
                   accept(serversock, (struct sockaddr *) &echoclient,
                          &clientlen)) < 0) {
                Die("Failed to accept client connection");
              }
              fprintf(stdout, "Client connected: %s\n",
                              inet_ntoa(echoclient.sin_addr));
              // Turn on DL1
              gpioclearbits(PORTA, PA3);
              HandleClient(clientsock);
            }
          }
 
Inscrit
15 Avril 2011
Messages
457
Reactions
1
#11
C'est gentil à toi ToOns mais ce code est très compliqué pour moi, je n'y connais rien en socket ni en C ^^'
 

ToOnS

Membre Actif
Inscrit
8 Avril 2009
Messages
974
Reactions
0
#12
pour en revenir au sujet la recherche par pixels a été compliquée depuis la 2.0 , les couleurs sont casiment jamais les memes , apres tu peux faire un tableau avec plusieurs couleurs mais pour chaque monstres ca va te demander enormement de travail
 
Inscrit
15 Avril 2011
Messages
457
Reactions
1
#13
Oui, je sais, j'avais fait quelques bots de récolte, c'était galère^^ Mais, il n'y a pas un autre moyen de détecter les mobs ? FastFind ne détecte pas les pixels qui ont changé ?
 

ToOnS

Membre Actif
Inscrit
8 Avril 2009
Messages
974
Reactions
0
#14
ca pourrais tres bien etre un perco ou un perso des pixels qui bougent
 
Inscrit
15 Avril 2011
Messages
457
Reactions
1
#15
Bah, y a moyen de vérifier. Si la barre orange de lancement du combat ne s'active pas lorsque que le bot a cliqué sur un pixel qui a bougé, c'est que ce n'était pas un mob ;)


PS : Tu disais que sous la 2.0, les pixels étaient beaucoup plus variés sur les mobs, et bien, j'ai regardé, et en fait c'est le contraire^^
 
A

Anonymous

Invité
#16
Non ToOnS a raison, bref bah si tu veux continuer en autoit ce sera pas facile.
En C aussi d'ailleur mais si tu ne comprend pas le code de ToOnS va faire un tour sur google pour comprendre les termes que tu ne connais pas...
 
Inscrit
15 Avril 2011
Messages
457
Reactions
1
#17
Bah en fait, je me suis lancé dans un bot Pixel pour le moment, je vais essayer de le rendre utilisable, pour l'instant je m'amuse plutôt bien avec les pixels. Mais quand j'en aurais fini, je tenterai de programmer quelque chose de plus performant en socket.

Je vais garder ton code ToOns pour en apprendre sur le socket, mais si quelqu'un a un tuto sur le socket en AutoIt (un peu plus poussé que ceux de Cadernis) ou en C++, ça serait sympa :)
 
A

Anonymous

Invité
#18
Faut que tu te décide a choisir ton langage, je ne pense pas que tu sois assez expérimenté pour faire du multi langage.
Soit C++ dans ce cas socket, soit autoit dans ce cas pixel. Mais du socket en autoit, surtout avec le protocole de D0fus il va falloir être très expérimenté. Je ne suis même pas sur que ce soit possible.
 
Inscrit
15 Avril 2011
Messages
457
Reactions
1
#19
J'aimerais bien faire du socket en C++, mais sans tutoriel, ça risque d'être difficile... J'ai cherché sur Internet, en général, c'est des sockets en C. Tu pourrais en faire un toi ? ^^'
 
Haut Bas