Paysan est un script de récolte du métier Paysan pour Asterobot : il fauche les céréales du circuit des champs d'Astrub, se bat quand un monstre l'attaque, dépose ses ressources en banque quand les sacs sont pleins, puis reprend sa récolte. Il s'appuie sur @asterobot:base 0.0.3 : le circuit est un plan du Studio, que l'on modifie dans le Studio d'Asteroboard.
Ce que fait le paquet :
il récolte les plants que le niveau du métier permet, la ressource la mieux payée d'abord (prix moyens lus en jeu) ;
il joue les combats de bout en bout, sans jamais les abandonner : sorts, placement, boosts, repli ;
il dépose en banque les ressources et leurs sacs, dans la banque la plus proche ;
il prend un zaap pour aller à la banque et en revenir, seulement quand cela fait gagner du temps ;
il écrit un bilan de récolte dans la console toutes les 30 minutes.
Le paquet a été essayé en jeu avec un Sacrieur et un Cra. Les parties non essayées sont signalées dans « Limites connues ».
Sommaire
Démarrage rapide
Ce que fait chaque étape
Réglages
La récolte
La banque
Le combat
Le zaap
Le bilan de récolte
Messages envoyés et lus
Lignes de la console
Mémoire du bot
Prérequis
Limites connues
Pistes et contribution
Fichiers
Nouveautés de la version 1.3.0
Version précédente
Démarrage rapide
L'installer
Importer Paysan-1.3.0.zip dans la bibliothèque d'Asteroboard (ou le télécharger depuis la Librairie), puis vérifier que @asterobot:base 0.0.3 est installé : c'est la seule dépendance.
{
"dependencies": {
"@asterobot:base": { "version": "0.0.3" }
}
}Le jouer
Connectez le bot, choisissez Paysan 1.3.0 comme comportement, réglez les paramètres du plan (Ressource, Pause entre récoltes, Pods max, Niveau si le serveur ne l'envoie pas), puis cliquez sur Lancer. Le bot va au zaap d'Astrub (par zaap s'il en vaut la peine), puis fauche les cartes du circuit en boucle.
Pour un autre circuit, ouvrez le plan plans/main.js dans le Studio et dessinez le parcours : les étapes de Paysan sont proposées dans la liste.
Ce que fait chaque étape
Bloc | Type | Ce qu'il fait |
|---|---|---|
Faucher ( | étape | Récolte la carte courante : la ressource autorisée la mieux payée d'abord, puis les autres, et reprend un plant repoussé. Reprend la récolte après un combat. |
Deposer en banque ( | étape | Parle au banquier, ouvre le coffre et dépose les ressources du métier et leurs sacs. À jouer sur la carte de la banque. |
Retour de la banque ( | étape | Après le dépôt, retourne à la carte de récolte par zaap si cela fait gagner du temps. |
Banque la plus proche ( | condition | Vraie pour la banque du jeu la plus proche du personnage. Sert à ne jouer que l'arrêt de cette banque. Avant de répondre, elle prend un zaap si cela fait gagner du temps. |
Aller au zaap de la zone ( | condition | Prend un zaap pour rejoindre le zaap de la zone des champs si cela fait gagner assez de temps. Vraie quand le personnage y est arrivé par zaap, fausse sinon (l'arrêt est alors sauté). |
Le plan plans/main.js enchaîne l'arrêt « Zaap d'Astrub », les cartes du circuit (une étape Faucher chacune), et l'interruption Sacs pleins qui joue le plan plans/bank.js (un arrêt par banque, filtré par Banque la plus proche, puis Deposer en banque et Retour de la banque), puis reprend là où le circuit s'était arrêté.
Réglages
Paramètres du plan (Studio)
Paramètre | Rôle | Défaut |
|---|---|---|
Ressource | « Toutes, selon le niveau » ou une seule céréale | Toutes |
Pause entre récoltes | pause en ms, de 0 à 5 000 | 400 |
Pods max | au-delà de ce pourcentage, le plan va à la banque la plus proche, puis reprend | 90 % |
Niveau si le serveur ne l'envoie pas | niveau Paysan supposé | 29 |
Réglages avancés (lib/config.js)
Toutes les valeurs fixes du script sont dans ce fichier. Les principales :
Réglage | Effet | Défaut |
|---|---|---|
| gain de temps minimal pour prendre un zaap | 20 000 |
| temps compté pour utiliser le zaap et charger la carte d'arrivée | 4 000 |
| échecs d'affilée avant de couper le zaap | 2 |
| intervalle du bilan de récolte | 30 min |
| avantage de l'élément principal dans le classement des sorts | 0,5 |
| se mettre à l'abri une fois les PA dépensés | oui |
| boosts : activation, tours pris en compte, marge pour les sauter quand le combat est gagné | oui, 3, 1,1 |
| éviter les cases voisines d'un ennemi | oui |
| sort qui repousse l'ennemi au corps à corps et réserve de PA pour le lancer | oui |
| poids des dégâts retardés dans le classement | 0,5 |
| un plant refusé deux fois est écarté 6 heures | |
| échecs d'étape d'affilée avant d'arrêter le plan | 5 |
La récolte
Les ressources et leurs compétences sont dans
lib/data.js; un plant n'est pris que si le niveau du métier le permet.La priorité vient des prix : le jeu envoie les prix moyens (par exemple quand on ouvre l'hôtel de vente). Une ressource sans prix connu passe après celles dont le prix est connu, puis se classe par niveau requis.
Après un combat, la carte est relue : si son contenu n'est pas revenu, le script le redemande comme le client (
ContextReadyRequest, puisMapInformationRequest).Un plant refusé deux fois est écarté pendant six heures.
La banque
Les banques et leurs portes sont lues dans les données du jeu (icône de banque sur la carte du monde, porte sans condition vers l'intérieur) : 13 banques.
plusProcheBanquechoisit la moins éloignée du personnage, en cartes à traverser.Le dépôt parle au banquier, répond « Consulter son coffre personnel » (réponse trouvée dans les données du jeu), puis envoie chaque pile de ressources et chaque sac de ressource (« Sac de blé », etc.).
L'inventaire est lu à la connexion et tenu à jour par les événements du jeu ; il est gardé dans la mémoire du bot, donc un rechargement du script ne le perd pas.
Le combat
Aucun abandon : le script joue son tour jusqu'à la fin, y compris pour un combat repris en cours.
Les sorts sont ceux de la classe du personnage, lus dans les données du jeu : coût, portée, ligne, ligne de vue, limites par tour et par cible, délai de relance.
Le classement se fait par dégâts attendus par PA : caractéristiques du personnage (force, intelligence, chance, agilité, dommages, dommages %), résistances de l'ennemi (en % puis fixes), effets qui exigent un état de la cible, dégâts retardés comptés à moitié, bonus pour l'élément principal.
Le placement cherche une case d'où le meilleur sort est lançable, de préférence loin des ennemis ; en combat, la marche n'a pas de diagonale d'écran.
Les boosts sont lancés seulement si le calcul prévoit un gain de dégâts (sur 3 tours au plus) et si le combat n'est pas déjà gagné ce tour.
Au corps à corps : sorts d'abord, puis sort qui repousse, puis repli. Après les sorts, le bot se met à l'abri avec ses PM restants. Les chemins évitent les cases voisines d'un ennemi (tacle).
Le zaap
Pour atteindre une carte (la banque, le zaap des champs, la carte de récolte), le script compare :
la marche directe (durée estimée par Asterobot) ;
la marche jusqu'au zaap connu le plus proche, la téléportation vers le zaap connu le plus proche de la destination, puis la marche.
Il prend le zaap seulement si le gain dépasse zaap.minGainMs (20 s). Le prix du zaap n'entre pas dans la décision. Les zaaps connus sont ceux que le personnage a enregistrés (annoncés à son entrée dans le monde ; au besoin, le script ouvre un zaap une fois pour les apprendre).
Le jeu n'envoie pas le contenu de la carte d'arrivée après une téléportation : le script le demande (ContextReadyRequest, MapInformationRequest) puis ferme le dialogue (DialogLeaveRequest).
Garde-fou. Le zaap est coupé pour la session si le jeu annonce un abonnement terminé, s'il répond « compte non abonné » (message 62) à une téléportation, ou après deux échecs d'affilée. Le script marche alors, sans détour vers un zaap.
Le bilan de récolte
Toutes les 30 minutes, la console du bot affiche une ligne de synthèse et une ligne par ressource :
paysan bilan depuis=21:49 duree=0h30 recolte=1841 kamas_estimes=26139 derniere_periode=0h30 recolte_periode=1841 kamas_periode=26139
paysan bilan-ressource ressource=Avoine quantite=382 prix_unite=26 kamas_estimes=9932
paysan bilan-ressource ressource=Orge quantite=630 prix_unite=15 kamas_estimes=9450La valeur est la quantité multipliée par le prix moyen lu en jeu. Une ressource sans prix connu est comptée en quantité mais pas en kamas, et nommée dans prix_inconnus. Le décompte reprend après un rechargement du script, tant que la connexion au jeu reste la même ; une nouvelle connexion repart de zéro. Il compte ce qu'annonce ObjectHarvestedEvent : si le bonus de récolte n'y figure pas, il n'est pas compté.
Messages envoyés et lus
Messages envoyés
Message | Quand |
|---|---|
| marche en combat |
| lancer un sort |
| déroulement du combat |
| dépôt en banque ; fermeture du dialogue d'un zaap |
| téléportation par zaap |
| demande du contenu d'une carte (après un combat, après un zaap) |
Messages lus
Message | Sert à |
|---|---|
| suivre les récoltes et les refus |
| prix moyens des ressources |
| inventaire du personnage |
| banque |
| zaap et abonnement |
| déroulement du combat |
| sorts, positions, déplacements |
Lignes de la console
Ligne | Ce qu'elle dit |
|---|---|
| résultat d'une carte et raison pour laquelle elle est quittée ( |
| état des plants d'une carte quand rien n'est pris |
| banque choisie, coffre ouvert, piles déposées |
| sort choisi et classement des sorts, avec ce qui les empêche |
| pourquoi un boost est lancé ou non |
| repli, sort qui repousse, déplacements |
| décision de zaap avec les durées comparées, raison d'un non, arrivée, refus du jeu |
| bilan de récolte toutes les 30 minutes |
| échec d'une étape ; arrêt du plan avec sa cause |
Mémoire du bot
Le paquet garde ces clés dans la mémoire du bot : Paysan/prices (prix), Paysan/stacks (inventaire), Paysan/blacklist (plants écartés), Paysan/jobLevel, Paysan/fight et Paysan/fightStats (combat en cours et caractéristiques), Paysan/zaaps, Paysan/returnMap, Paysan/bilan, Paysan/stats (compteurs).
Prérequis
Asterobot 0.5.1 (version essayée), jeu 3.7.11.11, Full socket.
@asterobot:base0.0.3.Pour le zaap : un compte abonné et des zaaps enregistrés par le personnage.
Un client en français : le texte de la réponse « coffre personnel » de la banque est cherché en français.
Limites connues
Seul le circuit des champs d'Astrub est fourni.
Combat essayé avec un Sacrieur et un Cra ; soins, invocations, sorts de zone et sorts qui retirent des PA ou des PM ne sont pas gérés ; seuls les gains de dégâts comptent pour les boosts.
Aucune gestion de la vie : pas de seuil de PV, pas de fuite, pas de soin.
Aucune réaction aux invitations de groupe, aux demandes de défi, aux échanges, aux messages privés.
Banques : seule celle d'Astrub et une autre ont été essayées ; les autres sont déduites des données du jeu.
Havre-Sac et commande /zaap : non utilisés (voir ci-dessous).
Les noms de champs des données du jeu sont ceux de la version 3.7.11.11 ; une mise à jour du jeu peut les changer.
L'usage d'un script de ce type peut être sanctionné par l'éditeur du jeu : il se fait aux risques de l'utilisateur.
Pistes et contribution
Ce qui serait utile, et que j'aimerais construire avec vous :
Havre-Sac : le message a été mappé, il sera implémenté dans une future mise à jour d'asterobot.
Commande /zaap : envoyée dans le canal général avec un compte abonné, elle n'a produit aucune réaction. Une capture de ce que le client envoie vraiment aiderait.
Invitations de groupe, défis, échanges, messages privés : les refuser ou les ignorer proprement.
Gestion de la vie : seuil de PV, repli à la banque ou au zaap, soin.
Autres classes : soins, invocations, sorts de zone.
Autres circuits et autres langues du client.
Fichiers
index.js: point d'entrée, exporte les étapes, les conditions et les paramètres.plans/main.js: plan du Studio, champs d'Astrub ;plans/bank.js: plan de la banque.lib/steps.js: étapes et conditions ;lib/harvest.js,lib/watch.js: récolte et suivi ;lib/bank.js,lib/nearest-bank.js: dépôt et choix de la banque ;lib/fight.js: combat ;lib/zaap.js: zaap ;lib/prices.js,lib/data.js,lib/bilan.js,lib/stats.js,lib/log.js,lib/util.js,lib/config.js.README.md,CHANGELOG.md.
Nouveautés de la version 1.3.0
Ajouté
Plans du Studio (
plans/main.js,plans/bank.js), au lieu d'un parcours écrit dans le code.Choix de la banque la plus proche parmi les 13 du jeu.
Dépôt des sacs de ressource.
Combat complet : classement des sorts, résistances, boosts, sort qui repousse, repli, évitement du tacle, délai de relance, reprise des caractéristiques.
Zaap vers la banque, retour, et départ vers les champs, avec seuil de gain et garde-fou pour les comptes non abonnés.
Bilan de récolte toutes les 30 minutes dans la console.
Corrigé
Le dépôt en banque ne déposait rien : le coffre est maintenant ouvert par le dialogue du banquier.
Un combat arrêtait le script : le combat est joué jusqu'au bout et la récolte reprend ensuite.
Après un combat, la carte n'était pas relue et le bot la quittait avec des plants restants.
Les journaux ne recopient plus de trafic brut du jeu ; les messages du jeu ne sont journalisés que par identifiant et type.
Version précédente
La version 1.2.0 (fauche des champs d'Astrub avec un parcours écrit dans le code) a été présentée sur le forum : Paysan, les champs d'Astrub. C'est la première fois que le paquet est publié dans la Librairie.
Modifié le () par Deluni
Nouveautés de la version 1.3.0
libérés
Aucune note de version n'est disponible pour cette version.
Rejoignez la conversation
Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.