Dofus bot 1.29 2 sorts

Inscrit
24 Novembre 2016
Messages
28
Reactions
0
#1
Ayant repris les sources de maxoubot, j'ai voulu ajouter une fonction qui est frapper avec 2 sorts, voici mon code

ElseIf (idMobInt > 0) And idMob <> .monIdDofus Then
If (goalDistance(.toMe, afrappe) < meilleurDistanceHeal) Then
.toHeal = afrappe
meilleurDistanceHeal = goalDistance(.toMe, afrappe)
End If
End If
End If

End If

End If
Next

ElseIf (Mid(packet, 1, 3) = "GTR") Then
.sock.Envoyer("GT")

ElseIf (Mid(packet, 1, 3) = "GTS") Then
Dim lID As String = Mid(Gettok(packet, "|", 1), 4)
If (lID = .monIdDofus) Then
If (.idSort <> 0) Then

If (.Cible = 1) Then
.caseDeLance = .toFrappe
ElseIf (.Cible = 2) Then
.caseDeLance = .toHeal
ElseIf (.Cible = 3) Then
.caseDeLance = .toMe
End If
If (.idSort2 <> 0) Then

End If
If (.Cible2 = 1) Then
.caseDeLance = .toFrappe
ElseIf (.Cible2 = 2) Then
.caseDeLance = .toHeal
ElseIf (.Cible2 = 3) Then
.caseDeLance = .toMe
End If

Dim maxAvance As Integer = 1

If (sortsMin(.idSort) <> -1) Then
maxAvance = sortsMin(.idSort)
End If

If (goalDistance(.toMe, .caseDeLance) > maxAvance) Then
Dim pather As New Pathfinding
Dim path As String = pather.pathing(.mapDataActuel, .toMe, .caseDeLance, False, True, 3)
.sock.Envoyer("GA001" & path)
.sock.Envoyer("GKK0")
End If

If (sortsMax(.idSort) <> -1) Then
Dim distNeed As Integer = sortsMax(.idSort) + 1
If goalDistance(.toMe, .caseDeLance) <= distNeed Then
For i As Integer = 1 To .nombreLance
.sock.Envoyer("GA300" & .idSort & ";" & .caseDeLance)
.sock.Envoyer("GKK0")
Next
End If
Else
For i As Integer = 1 To .nombreLance
.sock.Envoyer("GA300" & .idSort & ";" & .caseDeLance)
.sock.Envoyer("GKK0")
Next
End If

If (sortsMin(.idSort2) <> -1) Then
maxAvance = sortsMin(.idSort2)
End If

If (goalDistance(.toMe, .caseDeLance) > maxAvance) Then
Dim pather As New Pathfinding
Dim path As String = pather.pathing(.mapDataActuel, .toMe, .caseDeLance, False, True, 3)
.sock.Envoyer("GA001" & path)
.sock.Envoyer("GKK0")
End If
If (sortsMax(.idSort2) <> -1) Then
Dim distNeed As Integer = sortsMax(.idSort2) + 1
If goalDistance(.toMe, .caseDeLance) <= distNeed Then
For i As Integer = 1 To .nombreLance
.sock.Envoyer("GA300" & .idSort2 & ";" & .caseDeLance)
.sock.Envoyer("GKK0")
Next
End If
Else
.sock.Envoyer("GA300" & .idSort2 & ";" & .caseDeLance)
.sock.Envoyer("GKK0")

End If

End If

.sock.Envoyer("Gt")

End If
.sock.Envoyer("GT")

Je ne sais pas pourquoi le bot passe son tour..
Merci pour vos futurs réponses
 
Dernière édition:

BlueDream

Administrateur
Membre du personnel
Inscrit
8 Decembre 2012
Messages
2 010
Reactions
149
#3
Peut-être parceque tu passes ton tour à chaque lancer de sort ou déplacement.

Code:
For i As Integer = 1 To .nombreLance
.sock.Envoyer("GA300" & .idSort & ";" & .caseDeLance)
.sock.Envoyer("GKK0")
Next
[\code]
 
Inscrit
24 Novembre 2016
Messages
28
Reactions
0
#4
Peut-être parceque tu passes ton tour à chaque lancer de sort ou déplacement.

Code:
For i As Integer = 1 To .nombreLance
.sock.Envoyer("GA300" & .idSort & ";" & .caseDeLance)
.sock.Envoyer("GKK0")
Next
[\code]
GKK0 = Passer son tour ?
GA300 = ?

Merci pour ton aide.
 
Dernière édition par un modérateur:

tazman59

Contributeur
Inscrit
20 Decembre 2012
Messages
148
Reactions
25
#5
idSort
caseDeLance

? Toujours rien ? Pourtant plus facile que ça ^^'
 
Inscrit
24 Novembre 2016
Messages
28
Reactions
0
#7
EDIT :

Je viens d'utiliser ce code :

Module Combat

Public Sub PacketCombat(ByVal index As Integer, ByVal packet As String)

With comptes(index)

If (Mid(packet, 1, 2) = "GP") Then
.enCombat = 1
.TabUtilisateur.ListPlayers.Items.Clear()
.SendGo()

ElseIf (Mid(packet, 1, 3) = "Gc+") Then

If ((.joinChef) Or (.joinAll)) Then
Dim idCombat As String = Mid(packet, 4)
idCombat = Gettok(idCombat, ";", 1)
If ((idCombat = .idChef) Or (.joinAll)) Then
.JoinCombat(idCombat)
End If

End If

ElseIf (Mid(packet, 1, 4) = "GTM|") Then

Dim i As Integer

For i = 2 To Gettoks(packet, "|")
Dim Groupe As String = Gettok(packet, "|", i)
Dim estMort As String = Gettok(Groupe, ";", 2)
If (estMort = "0") Then

Dim afrappe As String = Gettok(Groupe, ";", 6)
Dim idMob As String = Gettok(Groupe, ";", 1)

If (IsNumeric(idMob)) Then
Dim idMobInt As Integer = idMob
If (IsNumeric(afrappe)) Then
If (idMob = .monIdDofus) Then
.toMe = afrappe
.toMe2 = afrappe
End If
End If
End If

End If
Next

Dim meilleurDistance As Integer = 999
Dim meilleurDistanceHeal As Integer = 999

For i = 2 To Gettoks(packet, "|")
Dim Groupe As String = Gettok(packet, "|", i)
Dim estMort As String = Gettok(Groupe, ";", 2)

If (estMort = "0") Then

Dim afrappe As String = Gettok(Groupe, ";", 6)
Dim idMob As String = Gettok(Groupe, ";", 1)

If (IsNumeric(idMob)) Then
Dim idMobInt As Integer = idMob

If (IsNumeric(afrappe)) Then

If (idMobInt < 0) Then
If (goalDistance(.toMe, afrappe) < meilleurDistance) Then

End If
If (goalDistance(.toMe2, afrappe) < meilleurDistance) Then

End If
.toFrappe = afrappe
.toFrappe2 = afrappe
meilleurDistance = goalDistance(.toMe, afrappe)
meilleurDistance = goalDistance(.toMe2, afrappe)
End If

ElseIf (idMobInt > 0) And idMob <> .monIdDofus Then
If (goalDistance(.toMe, afrappe) < meilleurDistanceHeal) Then
If (goalDistance(.toMe2, afrappe) < meilleurDistanceHeal) Then
.toHeal = afrappe
.toHeal2 = afrappe
meilleurDistanceHeal = goalDistance(.toMe, afrappe)
meilleurDistanceHeal = goalDistance(.toMe2, afrappe)
End If
End If
End If

End If

End If
Next

ElseIf (Mid(packet, 1, 3) = "GTR") Then
.sock.Envoyer("GT")

ElseIf (Mid(packet, 1, 3) = "GTS") Then
Dim lID As String = Mid(Gettok(packet, "|", 1), 4)
If (lID = .monIdDofus) Then
If (.idSort <> 0) Then

If (.Cible = 1) Then
.caseDeLance = .toFrappe
ElseIf (.Cible = 2) Then
.caseDeLance = .toHeal
ElseIf (.Cible = 3) Then
.caseDeLance = .toMe
End If
If (.idSort <> 0) Then

If (.Cible2 = 1) Then
.caseDeLance = .toFrappe
ElseIf (.Cible2 = 2) Then
.caseDeLance = .toHeal
ElseIf (.Cible2 = 3) Then
.caseDeLance = .toMe
End If

Dim maxAvance As Integer = 1

If (sortsMin(.idSort) <> -1) Then
maxAvance = sortsMin(.idSort)
End If
If (sortsMin(.idSort2) <> -1) Then
maxAvance = sortsMin(.idSort2)
End If

If (goalDistance(.toMe, .caseDeLance) > maxAvance) Then
If (goalDistance(.toMe2, .casedelance2) > maxAvance) Then
End If
Dim pather As New Pathfinding
Dim path As String = pather.pathing(.mapDataActuel, .toMe, .caseDeLance, False, True, 3)
Dim path2 As String = pather.pathing(.mapDataActuel, .toMe2, .casedelance2, False, True, 3)
.sock.Envoyer("GA001" & path)
.sock.Envoyer("GKK0")
End If

If (sortsMax(.idSort) <> -1) Then
If (sortsMax(.idSort2) <> -1) Then
End If
Dim distNeed As Integer = sortsMax(.idSort) + 1
Dim distNeed2 As Integer = sortsMax(.idSort2) + 1
If goalDistance(.toMe, .caseDeLance) <= distNeed Then
If goalDistance(.toMe2, .casedelance2) <= distNeed2 Then
End If
For i As Integer = 1 To .nombreLance
.sock.Envoyer("GA300" & .idSort & ";" & .caseDeLance)
.sock.Envoyer("GA300" & .idSort2 & ";" & .casedelance2)
.sock.Envoyer("GKK0")
Next
End If
Else
For i As Integer = 1 To .nombreLance
.sock.Envoyer("GA300" & .idSort & ";" & .caseDeLance)
.sock.Envoyer("GA300" & .idSort2 & ";" & .casedelance2)
.sock.Envoyer("GKK0")
Next
End If

End If

.sock.Envoyer("Gt")

End If
.sock.Envoyer("GT")

ElseIf (Mid(packet, 1, 3) = "GAF") Then
Dim lowlPacket As String = Mid(packet, 4)
.sock.Envoyer("GKK" & Gettok(lowlPacket, "|", 1))

ElseIf (Mid(packet, 1, 2) = "GE") Then
.nombreDeCombat += 1
If ((.nombreDeCombat >= AuBoutDeCombats) AndAlso (ChangerDeMap)) Then
.changeDeMap = 1
End If
.TimerLaunch.Enabled = False
.enCombat = 0
.sock.Envoyer("GC1")
wait(500)
If (.autoLaunch) Then
Dim Quota As Integer = .TabUtilisateur.Vie.Maximum / 2
Dim Vie As Integer = .TabUtilisateur.Vie.Value
If (Vie < Quota) Then
.sock.Envoyer("eU1")
.Regenerate(Quota * 1000)
End If
If ((.nombreDeCombat >= AuBoutDeCombats) And (ChangerDeMap) And .enRegen = 0) Then
.ChangerMap()
End If
End If
.TimerLaunch.Enabled = True

ElseIf (Mid(packet, 1, 3) = "GV") Then
.enCombat = 0
.sock.Envoyer("GC1")
End If
End If

End With

End Sub

End Module

j'ai un nouveau problème, le personnage joue les 2 sorts et se déplace très très lentement, quand il fini le combat il reste sur le bot 'en combat' alors qu'il a fini et n’apparaît pas du tout sur la map. merci pour vos futurs réponses.
 

tazman59

Contributeur
Inscrit
20 Decembre 2012
Messages
148
Reactions
25
#8
T'es questions sont incompréhensibles. Essaye de chercher par toi même, parce que c'est le minimum à savoir faire pour développer un bot, les autres seront bien d'accord avec moi sur ce point)
 
Inscrit
25 Novembre 2015
Messages
169
Reactions
20
#9
Non mais le problème c'est pas ça, il nous balance un algo de 1000ligne, même pas indenté, même pas dans un bloc code, et en VB (je trouve ce langage horrible à regarder personnellement) et après il nous dit grossomerdo : "alors j'ai cet algo et j'ai ce probleme, anyone pls ?" ...
 

BlueDream

Administrateur
Membre du personnel
Inscrit
8 Decembre 2012
Messages
2 010
Reactions
149
#11
Faut avoir des bases pour commencer un bot, et savoir ce que tu fais.
 
Haut Bas