VB/VB.Net Système de trajets 1.29

Inscrit
24 Novembre 2016
Messages
28
Reactions
0
#1
Bonjour,
Je voudrais implanter un système de trajets sur mon bot dofus 1.29, mais je ne sais pas par ou commencer quelqu'un pourrais m'aider?
 
Inscrit
10 Mai 2015
Messages
357
Reactions
55
#2
C'est du simple parsing. donc la personne charge son trajet tu récupères le trajet. A partir de là, tu connais la map du perso tu cherches dans son trajet la ligne de code qui contient la map du perso et tu l'as lis pour savoir que faire.
 
Inscrit
24 Novembre 2016
Messages
28
Reactions
0
#3
Je début un peu dans la programmation, tu pourrais mieux éclaircir stp ?
 

BlueDream

Administrateur
Membre du personnel
Inscrit
8 Decembre 2012
Messages
2 010
Reactions
149
#4
Faut avoir un minimum de base tout de même, va faire tout l'openclassroom.
 
Inscrit
24 Novembre 2016
Messages
28
Reactions
0
#5
Je voudrais juste savoir comment :/
 

Arth

Contributeur
Inscrit
28 Aout 2016
Messages
80
Reactions
3
#6
Hello, personnellement je ne comprend pas ta question. Un système de trajet c'est très vague.
Cela peut-etre:
  • Concevoir un système pour que l'utilisateur fixe lui même le trajet que le bot doit parcourir ?
  • Concevoir un système pour que le bot trouve tout seul les trajets les plus intéressants pour ça tache ?
  • Un système pour déplacer un personnage sur une map ?
  • Un système pour trouver la liste des maps à parcourir pour passer d'une map A à une map B qui ce trouve beaucoup plus loin ?
  • ... (et tant d'autre chose au-quelle je n'ai pas pensé)
C'est sans doute dut fait de l’imprécision de ta question que BlueDream t'a orienté, pour commencer, vers l'apprentissage de la programmation ^^. Car il va falloir identifier clairement ce que tu veut faire, et savoir le faire.
 
Dernière édition par un modérateur:
Inscrit
24 Novembre 2016
Messages
28
Reactions
0
#7
Je voudrais en sorte que l'utilisateur charge un fichier (trajet) txt ou se trouve les pos des maps et le déplacements (gauche,droite,haut,bas) par exemple :
'Admettons que l'utilisateur a chargé le trajet et va le lancer
fichier txt trajet :
[-2,0] bas 'début du trajet
[-2,1] bas
[-2,2] gauche
[-1,2] ' fin du trajet
Je voudrais que le bot se déplace uniquement dans les pos du trajet.
 

tazman59

Contributeur
Inscrit
20 Decembre 2012
Messages
149
Reactions
27
#10
Tu n'a même pas précisé dans quel language tu comptais faire ça........
 

tazman59

Contributeur
Inscrit
20 Decembre 2012
Messages
149
Reactions
27
#12
Ah autant pour moi alors, mais le code est extrêmement basique et tu dois savoir le traduire en Vb sinon on ne plus rien faire pour toi
 
Inscrit
24 Novembre 2016
Messages
28
Reactions
0
#13
Ah autant pour moi alors, mais le code est extrêmement basique et tu dois savoir le traduire en Vb sinon on ne plus rien faire pour toi
j'ai traduit le code :
Imports System.IO

Class Path
Private directions As Dictionary(Of Point, List(Of DirectionsEnum))

Public Sub New(filepath As String)
directions = New Dictionary(Of Point, List(Of DirectionsEnum))()
readPath(filepath)
End Sub

Private Sub readPath(filepath As String)
Using reader As New StreamReader(filepath)
While reader.Peek() <> -1
Dim rawline As String = reader.ReadLine()

If Not (rawline = "") Then
Dim line As String() = rawline.Split(" "c)

Dim pos As String() = line(0).Replace("[", [String].Empty).Replace("]", [String].Empty).Split(";"c)
Dim point As New Point(Convert.ToInt16(pos(0)), Convert.ToInt16(pos(1)))

Dim _directions As New List(Of DirectionsEnum)()
For i As Integer = 1 To line.Count() - 1
If line(i) <> "" Then
_directions.Add(DirectCast(Convert.ToInt16(line(i)), DirectionsEnum))
End If
Next

Me.directions.Add(point, _directions)
End If
End While
End Using
End Sub
Enum DirectionsEnum

NORTH

SOUTH

EAST

WEST
End Enum
End Class
Mais j'ai une erreur dans cette ligne : '_directions.Add(DirectCast(Convert.ToInt16(line(i)), DirectionsEnum))' impossible de convertir une valeur en type 'Short'
 

asyade

Membre Actif
Inscrit
26 Avril 2013
Messages
368
Reactions
1
#14
Hum plus l´habitude du vb mais il me semble que dans ton trajet direction est écris comme sa "left" ,"right" ,"top" hors la tu essaye de convertir un string -> int16 -> directionEnum sa peut pas marcher :3

edit J´avais pas bien lue, tu utilise bien ce genre de trajet?
[0;1] 0 1 2
[4;5] 2 3 1
 
Dernière édition:
Inscrit
2 Juin 2009
Messages
49
Reactions
44
#16
Bonsoir,

tu dois lire chaque ligne de ton script (for each),
trouver la bonne sur laquelle le bot est (en comparant les coordonnées ou le MAPID), (if)
trouver l'action à faire sur cette map (String.Replace)

effectuer l'action.
 
Inscrit
24 Novembre 2016
Messages
28
Reactions
0
#17
Je n'ai pas bien compris, tu pourrais mieux expliquer et merci pour ta réponse.
 
Inscrit
25 Novembre 2015
Messages
169
Reactions
20
#18
On fais pas dans l'assistanat non plus, on peut pas faire plus clair là ...
 

BlueDream

Administrateur
Membre du personnel
Inscrit
8 Decembre 2012
Messages
2 010
Reactions
149
#19
Bonsoir,

Je vois que tu débutes @nomane , un système de trajet est assez simple, tu dois faire correspondre des lignes de textes à des actions en jeu.
La première étape est donc la lecture de ton fichier trajet.

Code:
Dim objStreamReader As StreamReader
   Dim strLine As String

    'Pass the file path and the file name to the StreamReader constructor.
    objStreamReader = New StreamReader("C:\trajet.txt")

    'Read the first line of text.
    strLine = objStreamReader.ReadLine

    'Continue to read until you reach the end of the file.
    Do While Not strLine Is Nothing

      'Do something here

      'Read the next line.
      strLine = objStreamReader.ReadLine
    Loop

    'Close the file.
    objStreamReader.Close()

    Console.ReadLine()
Ici tu lis ton fichier ligne par ligne, selon la manière dont ton trajet est conçu tu dois extraire les données.
Pour cet exemple on se basera sur des trajets assez simplistes.

Code:
[4,-19] Haut
[4,-18] Bas
A chaque ligne qu'on lit on va avoir besoin d'un élément pour séparer les données, on va servir de l'espace qui se trouve entre la coordonnée et la direction vers laquelle aller pour séparer la chaine de texte à l'aide d'un Split.

Code:
Dim parts() As String = strLine.Split(" ")
      Dim coords As String = parts(0)
      Dim direction As String = parts(1)
Une fois ces données extraites, à toi de les stoquer pour les réutiliser plus tard.

Code:
Dim PathSteps As New Dictionary(Of String, String)

Do While Not strLine Is Nothing

      'Do something here
      Dim parts() As String = strLine.Split(" ")
      Dim coords As String = parts(0)
      Dim direction As String = parts(1)
      
      PathSteps.Add(coords,direction)
      Console.WriteLine("Coordonnées : " & coords & " Direction : " & direction)

      'Read the next line.
      strLine = objStreamReader.ReadLine
    Loop
Après à toi d'adapter cet exemple, d'améliorer le code et de faire quelque chose d'autonome et de fiable.
Tu n'as plus qu'a faire des conditions à chaque changement de maps, et de réutiliser ces données.
 
Inscrit
24 Novembre 2016
Messages
28
Reactions
0
#20
Bonsoir,

Je vois que tu débutes @nomane , un système de trajet est assez simple, tu dois faire correspondre des lignes de textes à des actions en jeu.
La première étape est donc la lecture de ton fichier trajet.

Code:
Dim objStreamReader As StreamReader
   Dim strLine As String

    'Pass the file path and the file name to the StreamReader constructor.
    objStreamReader = New StreamReader("C:\trajet.txt")

    'Read the first line of text.
    strLine = objStreamReader.ReadLine

    'Continue to read until you reach the end of the file.
    Do While Not strLine Is Nothing

      'Do something here

      'Read the next line.
      strLine = objStreamReader.ReadLine
    Loop

    'Close the file.
    objStreamReader.Close()

    Console.ReadLine()
Ici tu lis ton fichier ligne par ligne, selon la manière dont ton trajet est conçu tu dois extraire les données.
Pour cet exemple on se basera sur des trajets assez simplistes.

Code:
[4,-19] Haut
[4,-18] Bas
A chaque ligne qu'on lit on va avoir besoin d'un élément pour séparer les données, on va servir de l'espace qui se trouve entre la coordonnée et la direction vers laquelle aller pour séparer la chaine de texte à l'aide d'un Split.

Code:
Dim parts() As String = strLine.Split(" ")
      Dim coords As String = parts(0)
      Dim direction As String = parts(1)
Une fois ces données extraites, à toi de les stoquer pour les réutiliser plus tard.

Code:
Dim PathSteps As New Dictionary(Of String, String)

Do While Not strLine Is Nothing

      'Do something here
      Dim parts() As String = strLine.Split(" ")
      Dim coords As String = parts(0)
      Dim direction As String = parts(1)
     
      PathSteps.Add(coords,direction)
      Console.WriteLine("Coordonnées : " & coords & " Direction : " & direction)

      'Read the next line.
      strLine = objStreamReader.ReadLine
    Loop
Après à toi d'adapter cet exemple, d'améliorer le code et de faire quelque chose d'autonome et de fiable.
Tu n'as plus qu'a faire des conditions à chaque changement de maps, et de réutiliser ces données.
J'ai très bien compris, je te remercie beaucoup, pour ta réponse alex !
 
Dernière édition par un modérateur:
Haut Bas