Aller au contenu
Afficher dans l'application

Une meilleure façon de naviguer. En savoir plus.

Asterobot

Une application plein écran sur votre écran d'accueil avec notifications push, badges et plus encore.

Pour installer cette application sur iOS et iPadOS
  1. Appuyez sur Icône de partage dans Safari
  2. Faites défiler le menu et appuyez sur Ajouter à l'écran d'accueil.
  3. Appuyez sur Ajouter dans le coin supérieur droit.
Pour installer cette application sur Android
  1. Appuyez sur le menu à trois points (⋮) dans le coin supérieur droit du navigateur.
  2. Appuyez sur Ajouter à l'écran d'accueil ou Installer l'application.
  3. Confirmez en appuyant sur Installer.

Paysan 1.4.0

(0 notes)

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 (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 (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 (retour)

é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 (plusProcheBanque)

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 (versLeZaap)

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

zaap.minGainMs

gain de temps minimal pour prendre un zaap

20 000

zaap.overheadMs

temps compté pour utiliser le zaap et charger la carte d'arrivée

4 000

zaap.maxFailures

échecs d'affilée avant de couper le zaap

2

bilan.everyMs

intervalle du bilan de récolte

30 min

fight.elementBonus

avantage de l'élément principal dans le classement des sorts

0,5

fight.coverAfterAp

se mettre à l'abri une fois les PA dépensés

oui

fight.boost, fight.boostHorizon, fight.lethalMargin

boosts : activation, tours pris en compte, marge pour les sauter quand le combat est gagné

oui, 3, 1,1

fight.avoidTackle

éviter les cases voisines d'un ennemi

oui

fight.disengagePush, fight.reservePush

sort qui repousse l'ennemi au corps à corps et réserve de PA pour le lancer

oui

fight.delayedWeight

poids des dégâts retardés dans le classement

0,5

blacklist

un plant refusé deux fois est écarté 6 heures

failures.maxConsecutive

é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, puis MapInformationRequest).

  • 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.

  • plusProcheBanque choisit 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 :

  1. la marche directe (durée estimée par Asterobot) ;

  2. 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=9450

La 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

MapMovementRequest

marche en combat

GameActionFightCastRequest

lancer un sort

FightReadyRequest, FightTurnReadyRequest, FightTurnFinishRequest, GameActionAcknowledgementRequest

déroulement du combat

NpcGenericActionRequest, NpcDialogReplyRequest, ExchangeObjectMoveRequest, DialogLeaveRequest

dépôt en banque ; fermeture du dialogue d'un zaap

TeleportRequest

téléportation par zaap

ContextReadyRequest, MapInformationRequest

demande du contenu d'une carte (après un combat, après un zaap)

Messages lus

Message

Sert à

ObjectHarvestedEvent, InteractiveUseEndedEvent, InteractiveUseErrorEvent

suivre les récoltes et les refus

ObjectAveragePricesEvent

prix moyens des ressources

InventoryContentEvent, ObjectAddedEvent, ObjectQuantityEvent, ObjectDeletedEvent

inventaire du personnage

MapComplementaryInformationEvent, NpcDialogQuestionEvent, ExchangeStartedWithStorageEvent, ExchangeLeaveEvent

banque

ZaapKnownListEvent, TeleportDestinationsEvent, AccountInformationUpdateEvent, TextInformationEvent

zaap et abonnement

FightJoinEvent, FightStartingEvent, FightPlacementPossiblePositionsEvent, FightSynchronizeEvent, FightRefreshCharacterStatsEvent, FightTurnStartPlayingEvent, FightTurnEvent, FightTurnEndEvent, FightNewRoundEvent, FightMapInformationEvent, FightEndEvent, FightLeaveEvent

déroulement du combat

GameActionFightEvent, SequenceEndEvent, EntitiesDispositionEvent, MapMovementEvent, MapMovementRefusedEvent, ShortcutBarContentEvent

sorts, positions, déplacements

Lignes de la console

Ligne

Ce qu'elle dit

harvest, harvest-leave

résultat d'une carte et raison pour laquelle elle est quittée (nothing-left, pods, map-changed…)

harvest-scan

état des plants d'une carte quand rien n'est pris

bank-nearest, bank-open, bank

banque choisie, coffre ouvert, piles déposées

fight-choice

sort choisi et classement des sorts, avec ce qui les empêche

fight-boost-eval, fight-boost

pourquoi un boost est lancé ou non

fight-cover, fight-push, fight-move

repli, sort qui repousse, déplacements

zaap-plan, zaap-skip, zaap-arrived, zaap-refuse

décision de zaap avec les durées comparées, raison d'un non, arrivée, refus du jeu

bilan, bilan-ressource

bilan de récolte toutes les 30 minutes

step-failed, stop

é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:base 0.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.


Version d'Asterobot requise

0.6.0

Commentaires des utilisateurs

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.

Invité
  • Ceci ne sera pas visible par les autres utilisateurs.

  • Votre avis Requis
    Ajouter un avis...

Compte

Navigation

Recherche

Recherche

Configurer les notifications push du navigateur

Chrome (Android)
  1. Appuyez sur l'icône de cadenas à côté de la barre d'adresse.
  2. Tap Autorisations → Notifications.
  3. Ajustez vos préférences.
Chrome (Desktop)
  1. Cliquez sur l'icône représentant un cadenas dans la barre d'adresse..
  2. Select Paramètres du site.
  3. Find Notifications et ajustez vos préférences.