VB/VB.Net Système de trajet via plugin

A

Anonymous

Invité
#1
Bonjour à tous,
Je suis membre d'une communauté, Phoenix Bot, dont le bot est un MITM/Socket qui fonctionne par système de plugins.
Or, récemment, l'administrateur a décidé de rendre le plugin officiel de gestion de trajets/combat/recolte payant et j'essaye de recréer un plugin à peu près équivalent.
Le plugin fonctionnait avec des classes de ce genre :

Code:
// Variable de la banque : commentaire
#define MAP_EXTERIEURE 84674566
#define MAP_INTERIEURE 83887104

move
{
map : MAP_EXTERIEURE
path
{
MAP_EXTERIEURE porte
}
}
J'ai pas mal de bases en Vb.net et je crois être capable de recréer un plugin comme celui mais le plugin fonctionnait avec un sytème de pathfinding très avancé, dès qu'on mettait une mapid, il calculait les maps à franchir. Je veux donc recréer un plugin de ce genre mais sans le pathfinding car ça serait beaucoup trop difficile pour moi.

J'ai pour l'instant pensé à faire une lecture du fichier de trajet ligne par ligne et faire un Select Case mais je pense que ça serait trop brouillon.
Quelque chose du genre :
Code:
Dim Mapid = map.id
For each line 
Select Case Mapid
Case Map
La on Bouge selon l'action demandé.
Next
Mais comme vous le voyez, ça serait beaucoup trop brouillon.
Je pense que c'est simple à faire mais il me faudrait seulement une organisation sachant que le développement d'un plugin n'est pas équivalent au développement d'un bot car on dispose de nombreuses fonctions incluses dans l'Api (tel que le changement de map) :p

Je vous remercie pour votre aide précieuse.
 

ToOnS

Membre Actif
Inscrit
8 Avril 2009
Messages
974
Reactions
0
#2
Salut , le plus simple serait de "convertir" le mapid en position (2,3 par exemple) comme ca si tu veux aller en 0,0 tu sais qu'il faut descendre 2 fois et aller 3 fois a gauche

apres ca se complique biensur mdr car il faudra faire un path de toute facon sur toutes les maps traversées et si le path est impossible prendre des maps voisines (un WorldPathfinding en fait)
 
A

Anonymous

Invité
#3
Tout d'abord, merci pour avoir pris le temps de me répondre :)
Je ne souhaite pas faire un pathfinding car ça serait trop compliqué.
Je voudrais quelque chose qui fonctionne comme ceci :
Map1 Droite
Map2 Gauche
Et selon la map, il irait à droite ou gauche en fonction du fichier trajet.
 
A

Anonymous

Invité
#4
Bah tu fais un reader, tu lis le trajet de l'utilisateur.

Tu serialize tout le trajet, c'est à dire que tu fais une liste dans laquel yaura tout les lignes.

Un truc du genre:

Code:
Dim POS as String
Dim Direction as string

Donc à partir de la ta ta liste avec tout les maps de l'utilisateur.

A chaque changement de map, (Reception du 226), tu effectue ta fonction récolte combat. Lorsqu'il n'y a plus de mobs/ressources.

Tu lis ta liste, Si une des POS de ta liste correspond a ta POS actuel, tu effectue le changement de map correspondant a la variale "Direction".

Apres je ne sais pas si phoenix a une fonction qui gere tout seul le changement de map.

L'algo est simple.
 
A

Anonymous

Invité
#5
Oui, ça m'a l'air beaucoup plus simple maintenant.
Mais aurais-tu un tutoriel pour serializer car je n'ai jamais fait ça, est-ce une serialisation XML,Soap ou Binaire ?

Edit : Ah Oui, comment je fait pour traiter les informations pour savoir si la map se trouve dans un espace move, gather, fight (respectivement, déplacement, fauche, combat) ?
 
A

Anonymous

Invité
#6
Je vais te le faire moi ;)

Alors tu créer une classe par exemple qui va s'appeller "Map".

Code:
Public Class Map

End Class

Tu y ajoute les variables dont je t'ai parlé.

Code:
Public Class Map
Public Pos as string
Public Direction as string
End Class

Et une fonction qui va remplir les variables.

Code:
Public Class Map
Public Pos as string
Public Direction as string

Sub New(Byval _Pos as string, Byval _Direction as string)
Pos = _Pos
Direction = _Direction
end sub

End Class

La tu as ta classe.

Maintenant pour la serializer:

On créer la variable qui va contenir la liste:

Code:
Public ListOfMap as new List(Of Map)
Pour ajouter une map a la liste:
Code:
ListOfMap.Add(New Map("Ta Pos", "Ta direction")

Et pour lire les maps de cette liste.

Code:
For i = 0 to ListOfMap.count -1
Msgbox(ListOfMap(i).Map)
Msgbox(ListOfMap(i).Direction)
Next

Possibilité de faute de frappe, je vien de le tapé à la main sans VB.
 
A

Anonymous

Invité
#7
Edit : Ah Oui, comment je fait pour traiter les informations pour savoir si la map se trouve dans un espace move, gather, fight (respectivement, déplacement, fauche, combat) ?
Lorsque tu lis le trajet, le client va mettre genre "Function=Move"

Quand tu lis le fichier ligne par ligne, si la premiere ligne contient "Move" ou est égal à "Function=Move" alors c'est que du déplacement.

Ou plus simple:

[POS] Gauche Passe

Si le ligne contient passe alors il passe directement la map et n'effectue aucune fonction.
 
A

Anonymous

Invité
#8
Merci beaucoup pour ta réponse.
Mais si je veut faire quelque sous cette forme :
move{
map direction
map direction}

fight{...}
etc...
 
A

Anonymous

Invité
#9
Bah la c'est a toi de faire le systeme, je t'ai donné assez d'indices
 
A

Anonymous

Invité
#10
Ok je vous remercie beaucoup pour vos réponses :)
 
Haut Bas