Aller au contenu

mount — Monture & Élevage

API monture MoonBot Lua : équiper la monture, gérer l'élevage, fécondations.

66 fonctions dans ce namespace.

Index


Référence

Convention et confirmations

mount.fonction(...) / mount:fonction(...)

Les deux syntaxes sont acceptees pour toutes les fonctions. UID, quantites, pourcentages et delais exigent des entiers exacts : une valeur decimale provoque une erreur Lua interceptable par pcall avant tout envoi, sans troncature. Les lectures sont des instantanes serveur : aucune action ne modifie optimistement la monture. Les actions retournent true a la mise en file, false si leurs preconditions locales echouent ; true ne confirme pas leur acceptation par le jeu. Seules openInventory/openPaddock/waitPaddockOpen attendent un etat confirme. Les actions de fiche et d'inventaire de monture sont reverifiees par le moteur avec l'UID attendu ; leavePaddock reverifie le contexte. Les transferts historiques entre etable, enclos, equipement et certificats verifient le contexte a l'appel Lua seulement, puis envoient leur UID explicite. Documentation detaillee : docs/enclos-dragodindes.md.


mount.getState

mount.getState()

returns table

Etat complet : {has_mount, mount_id, name, level, model, xp_share, is_riding, pods, details, inspected, last_error, ...}. details est le descripteur complet de la monture equipee, inspected la derniere consultation Rd ; chacun vaut nil si absent. inspection_actor_id est la cible locale d'une consultation Rp et inspection_request_id un identifiant local d'interface, pas des accuses du protocole serveur. pods est la charge courante confirmee par le serveur. xp_share ne change qu'a la confirmation Rx. last_error est la derniere erreur de validation moteur ou le dernier refus monture du serveur (ReE, aliment refuse Im190, ouverture du stockage refusee ERE/ECE), nil sinon ; il est efface a la prochaine demande validee ou confirmation.


mount.getMountData

mount.getMountData(uid?: number)

returns table | nil

Sans UID, descripteur de la monture equipee. Avec UID, recherche dans l'equipement puis les listes de l'enclos actuellement ouvert et enfin la derniere consultation. Retourne nil si inconnu. Meme structure complete que stableMounts/paddockMounts, sans envoyer de paquet ni equiper la monture.


Descripteur complet

mount.getMountData() / mount.stableMounts()[1]

returns table

Identite : uid, name, level, sex (0 male, 1 femelle), model (nombre), color (modele en chaine, compatibilite). Progression : xp, xp_min, xp_max (-1 au niveau maximal) ; energy/energy_max, maturity/maturity_max, stamina/stamina_max, love/love_max, serenity/serenity_min/serenity_max, tired/tired_max. Elevage : new_born (naissance Ee~ dans la fenetre d'etable), wild, mountable, fecondable, fecondation (duree serveur en heures, -1 sans gestation), reprod (-1 castree), reprod_max. Autres : pods_max, ancestors (modeles, positions conservees, 0 inconnu), capacities (IDs officiels), effects (effets hexadecimaux bruts), raw (descripteur complet). fecondable et mountable viennent du serveur ; ne pas les recalculer a partir des jauges.


mount.isRiding / hasMount

mount.isRiding() / mount.hasMount()

returns boolean

isRiding indique la chevauchee confirmee ; hasMount la presence d'une monture equipee. L'etable, l'enclos, les certificats et la consultation sont des emplacements distincts.


mount.toggleRiding

mount.toggleRiding()

returns boolean

Demande de monter ou descendre la monture equipee. Le moteur verifie l'UID equipe et les conditions locales ; relire isRiding pour la confirmation.


mount.setXpRatio / setXpShare

mount.setXpRatio(ratio: number) / mount.setXpShare(ratio: number)

returns boolean

Part d'XP donnee a la monture equipee : entier de 0 a 90 inclus. setXpShare est un alias. La valeur locale ne change qu'a la reponse serveur Rx ; relire getXpRatio.


mount.getXpRatio

mount.getXpRatio()

returns number

Part d'XP confirmee par le serveur (0..90), initialisee a 0 avant la premiere annonce. Cette fonction ne retourne plus une constante factice.


Infos monture

mount.getMountName() / getMountLevel() / getMountXp() / getMountEnergy() / getMountSerenity() / getMountStamina() / getMountLove() / getMountMaturity() / getMountId()

returns string / number

Getters historiques de la monture equipee. getMountName retourne une chaine ; les autres un nombre. getMountId vaut 0 sans monture. Les montures consultees ne remplacent pas ces valeurs.


mount.getMountModel

mount.getMountModel(uid?: number)

returns number | nil

Lit model du descripteur : monture equipee par defaut ou UID connu de getMountData. Retourne nil si la monture est inconnue. getMountGestation est la duree serveur en heures (-1 sans gestation) ; getMountReproductions vaut -1 pour une monture castree.


mount.getMountSex

mount.getMountSex(uid?: number)

returns number | nil

Lit sex du descripteur : monture equipee par defaut ou UID connu de getMountData. Retourne nil si la monture est inconnue. getMountGestation est la duree serveur en heures (-1 sans gestation) ; getMountReproductions vaut -1 pour une monture castree.


mount.getMountXpMin

mount.getMountXpMin(uid?: number)

returns number | nil

Lit xp_min du descripteur : monture equipee par defaut ou UID connu de getMountData. Retourne nil si la monture est inconnue. getMountGestation est la duree serveur en heures (-1 sans gestation) ; getMountReproductions vaut -1 pour une monture castree.


mount.getMountXpMax

mount.getMountXpMax(uid?: number)

returns number | nil

Lit xp_max du descripteur, en conservant -1 au niveau maximal : monture equipee par defaut ou UID connu de getMountData. Retourne nil si la monture est inconnue. getMountGestation est la duree serveur en heures (-1 sans gestation) ; getMountReproductions vaut -1 pour une monture castree.


mount.getMountEnergyMax

mount.getMountEnergyMax(uid?: number)

returns number | nil

Lit energy_max du descripteur : monture equipee par defaut ou UID connu de getMountData. Retourne nil si la monture est inconnue. getMountGestation est la duree serveur en heures (-1 sans gestation) ; getMountReproductions vaut -1 pour une monture castree.


mount.getMountSerenityMin

mount.getMountSerenityMin(uid?: number)

returns number | nil

Lit serenity_min du descripteur : monture equipee par defaut ou UID connu de getMountData. Retourne nil si la monture est inconnue. getMountGestation est la duree serveur en heures (-1 sans gestation) ; getMountReproductions vaut -1 pour une monture castree.


mount.getMountSerenityMax

mount.getMountSerenityMax(uid?: number)

returns number | nil

Lit serenity_max du descripteur : monture equipee par defaut ou UID connu de getMountData. Retourne nil si la monture est inconnue. getMountGestation est la duree serveur en heures (-1 sans gestation) ; getMountReproductions vaut -1 pour une monture castree.


mount.getMountStaminaMax

mount.getMountStaminaMax(uid?: number)

returns number | nil

Lit stamina_max du descripteur : monture equipee par defaut ou UID connu de getMountData. Retourne nil si la monture est inconnue. getMountGestation est la duree serveur en heures (-1 sans gestation) ; getMountReproductions vaut -1 pour une monture castree.


mount.getMountLoveMax

mount.getMountLoveMax(uid?: number)

returns number | nil

Lit love_max du descripteur : monture equipee par defaut ou UID connu de getMountData. Retourne nil si la monture est inconnue. getMountGestation est la duree serveur en heures (-1 sans gestation) ; getMountReproductions vaut -1 pour une monture castree.


mount.getMountMaturityMax

mount.getMountMaturityMax(uid?: number)

returns number | nil

Lit maturity_max du descripteur : monture equipee par defaut ou UID connu de getMountData. Retourne nil si la monture est inconnue. getMountGestation est la duree serveur en heures (-1 sans gestation) ; getMountReproductions vaut -1 pour une monture castree.


mount.getMountPodsMax

mount.getMountPodsMax(uid?: number)

returns number | nil

Lit pods_max du descripteur : monture equipee par defaut ou UID connu de getMountData. Retourne nil si la monture est inconnue. getMountGestation est la duree serveur en heures (-1 sans gestation) ; getMountReproductions vaut -1 pour une monture castree.


mount.getMountFatigue

mount.getMountFatigue(uid?: number)

returns number | nil

Lit tired du descripteur : monture equipee par defaut ou UID connu de getMountData. Retourne nil si la monture est inconnue. getMountGestation est la duree serveur en heures (-1 sans gestation) ; getMountReproductions vaut -1 pour une monture castree.


mount.getMountFatigueMax

mount.getMountFatigueMax(uid?: number)

returns number | nil

Lit tired_max du descripteur : monture equipee par defaut ou UID connu de getMountData. Retourne nil si la monture est inconnue. getMountGestation est la duree serveur en heures (-1 sans gestation) ; getMountReproductions vaut -1 pour une monture castree.


mount.getMountReproductions

mount.getMountReproductions(uid?: number)

returns number | nil

Lit reprod du descripteur : monture equipee par defaut ou UID connu de getMountData. Retourne nil si la monture est inconnue. getMountGestation est la duree serveur en heures (-1 sans gestation) ; getMountReproductions vaut -1 pour une monture castree.


mount.getMountReproductionsMax

mount.getMountReproductionsMax(uid?: number)

returns number | nil

Lit reprod_max du descripteur, y compris une borne negative (jauge desactivee dans le client, sans garantie de reproductions illimitees) : monture equipee par defaut ou UID connu de getMountData. Retourne nil si la monture est inconnue. getMountGestation est la duree serveur en heures (-1 sans gestation) ; getMountReproductions vaut -1 pour une monture castree.


mount.getMountGestation

mount.getMountGestation(uid?: number)

returns number | nil

Lit fecondation du descripteur : monture equipee par defaut ou UID connu de getMountData. Retourne nil si la monture est inconnue. getMountGestation est la duree serveur en heures (-1 sans gestation) ; getMountReproductions vaut -1 pour une monture castree.


mount.getMountPods

mount.getMountPods()

returns number

Pods actuellement transportes par la monture equipee, confirmes par le serveur. Le maximum est disponible via getMountPodsMax ; les pods ne sont pas calcules depuis les quantites d'objets.


mount.getMountFecondation

mount.getMountFecondation()

returns boolean

Compatibilite : true si la gestation annoncee pour la monture equipee est strictement positive. Pour la valeur numerique serveur utiliser getMountGestation ; pour l'aptitude a se reproduire utiliser isFecondable.


mount.isMountable

mount.isMountable(uid?: number)

returns boolean | nil

Valeur serveur mountable. Sans UID : monture equipee ; avec UID : monture connue de getMountData ; nil si inconnue.


mount.isWild

mount.isWild(uid?: number)

returns boolean | nil

Valeur serveur wild. Sans UID : monture equipee ; avec UID : monture connue de getMountData ; nil si inconnue.


mount.isFecondable

mount.isFecondable(uid?: number)

returns boolean | nil

Valeur serveur fecondable. Sans UID : monture equipee ; avec UID : monture connue de getMountData ; nil si inconnue.


mount.getAncestors

mount.getAncestors(uid?: number)

returns table | nil

IDs de modeles des 14 ancetres : indices Lua 1-2 parents, 3-6 grands-parents, 7-14 arriere-grands-parents ; positions inconnues conservees avec 0. Il s'agit de modeles, pas d'UID de montures. L'interface officielle ajoute le modele de la monture comme quinzieme noeud. nil si inconnue.


mount.getCapacities

mount.getCapacities(uid?: number)

returns table | nil

Liste des IDs de capacites speciales du descripteur, sans les valeurs nulles du protocole. nil si inconnue. Les labels d'affichage ne remplacent pas les IDs dans les scripts.


mount.getEffects

mount.getEffects(uid?: number)

returns string | nil

Effets de la monture au format officiel hexadecimal, separes par virgules et #. Ce sont les bonus de la DD ; les capacites speciales se lisent avec getCapacities. nil si inconnue.


mount.feed

mount.feed(itemUid: number, quantity?: number)

returns boolean

Nourrit la monture equipee en deplacant quantity objets (1 par defaut) sur son emplacement officiel 16 : OM{uid}|16|{quantity}. L'UID est celui d'un aliment dans l'inventaire personnage, pas un templateId. Candidat de super-type 6 (consommable) ou 9 (ressource), quantite positive dans le stock disponible ; la famille ne garantit pas l'acceptation comme aliment. Les familiers (super-type 12) ne sont pas des candidats de feed. Les changements d'energie et de quantite attendent le serveur.


mount.rename

mount.rename(name: string)

returns boolean

Demande le renommage de la monture equipee. Nom de 1 a 16 lettres ASCII (A-Z, a-z), comme le client officiel ; sans espace, accent, chiffre ni ponctuation. Aucune mise a jour optimiste. Relire getMountName apres la reponse Rn.


mount.castrate

mount.castrate(expectedMountId: number)

returns boolean

Castration definitive de la monture equipee (Rc). L'appel exige explicitement son UID attendu, verifie a l'appel puis par le moteur. Ne pas appeler sur une simple inspection. Le retour true indique seulement la mise en file ; la confirmation se lit dans reprod (-1).


mount.release

mount.release(expectedMountId: number)

returns boolean

Libere definitivement la monture equipee (Rf). L'UID attendu est obligatoire et doit toujours etre equipe au traitement. Le retour true indique la mise en file, pas le succes ; relire hasMount apres la reponse du serveur.


mount.inspectCertificate

mount.inspectCertificate(certificateUid: number)

returns boolean

Consulte un certificat de type 97 actuellement dans l'inventaire. Extrait les deux valeurs de l'effet 995 puis envoie Rd. Utiliser l'UID de l'objet certificat. Retourne false si absent ou sans donnees valides. Lire getInspectedMount apres la reponse ; cette consultation ne modifie pas l'equipement.


mount.inspect

mount.inspect(mountId: number, validity: string)

returns boolean

Forme explicite de consultation Rd. Utiliser cert.mountUid et cert.validity provenant du meme certificat ; inspectCertificate(cert.uid) est preferable. validity est la seconde valeur de l'effet 995 convertie en chaine decimale. La lecture est asynchrone.


mount.inspectPaddockMount

mount.inspectPaddockMount(actorId: number)

returns boolean

Consulte une monture visible sur la carte via Rp{actorId}. actorId est un entier signe, souvent negatif, identifiant un acteur monture actuellement present ; pas l'UID persistant de la dragodinde ni un UID de certificat. Refuse PNJ et acteurs absents. Le serveur controle les droits. true indique seulement la mise en file ; lire getInspectedMount a la reponse Rd. Son UID persistant est different de actorId ; ne pas comparer ces identifiants. Un ancien resultat ne prouve pas une nouvelle reponse et aucun accuse individuel n'est fourni.


mount.getInspectedMount

mount.getInspectedMount()

returns table | nil

Dernier descripteur recu dans Rd, independant de la monture equipee. nil avant une consultation. Une valeur presente peut preceder votre demande : verifier son UID et ne pas considerer un ancien instantane comme preuve de rafraichissement.


mount.openInventory

mount.openInventory()

returns boolean

Ouvre le stockage de la monture equipee (ER15), attend l'etat confirme avec son contexte pendant 10 s maximum. true immediatement si deja ouvert ; false si demande invalide, delai depasse ou monture equipee changee pendant l'attente. L'inventaire d'une nouvelle monture ne confirme pas l'ancienne demande. Les objets arrivent par leurs notifications serveur.


mount.isInventoryOpen

mount.isInventoryOpen()

returns boolean

True uniquement pendant un echange actif de type 15 avec son contexte confirme. Evite de confondre inventaire de monture, banque et autres stockages.


mount.closeInventory

mount.closeInventory()

returns boolean

Demande la fermeture du stockage actif de la monture (EV). Verifie le type et le contexte de l'echange ; retourne false pour une banque ou un autre echange.


mount.putItem

mount.putItem(templateId: number, qty: number, delayMs?: number)

returns boolean

Depose qty objets, quantite entiere positive, dans le stockage de la DD actuellement ouvert. Resout une pile par templateId disposant de la quantite suffisante. Le delai optionnel est en millisecondes ; l'UID de la monture et le contexte sont captures avant ce delai. true indique une mise en file. Pour choisir une pile et ses effets precisement, utiliser la variante ByUid.


mount.getItem

mount.getItem(templateId: number, qty: number, delayMs?: number)

returns boolean

Retire qty objets, quantite entiere positive, dans le stockage de la DD actuellement ouvert. Resout une pile par templateId disposant de la quantite suffisante. Le delai optionnel est en millisecondes ; l'UID de la monture et le contexte sont captures avant ce delai. true indique une mise en file. Pour choisir une pile et ses effets precisement, utiliser la variante ByUid.


mount.putItemByUid

mount.putItemByUid(itemUid: number, qty: number, delayMs?: number)

returns boolean

Depose une pile precise par UID, avec quantite positive. L'inventaire de la monture doit etre ouvert et le contexte toujours identique lors du traitement moteur. Les inventaires sont actualises uniquement a la reponse serveur.


mount.getItemByUid

mount.getItemByUid(itemUid: number, qty: number, delayMs?: number)

returns boolean

Retire une pile precise par UID, avec quantite positive. L'inventaire de la monture doit etre ouvert et le contexte toujours identique lors du traitement moteur. Les inventaires sont actualises uniquement a la reponse serveur.


mount.inventoryItems

mount.inventoryItems()

returns table

Objets du stockage actif de la DD : {id, uid, quantity, name, effects}. Retourne une liste vide en dehors d'un echange de type 15, jamais les objets d'une banque.


mount.inventoryItemQuantity

mount.inventoryItemQuantity(templateId: number)

returns number

Somme des quantites de ce template dans le stockage de monture ouvert ; 0 si l'inventaire de la DD est ferme.


mount.getSoulStones

mount.getSoulStones()

returns table of {uid, templateId, name, quantity, location, total, monsters: table of {id, name, count}}

Pierres d'âme PLEINES presentes dans le stockage ouvert de la DD, avec les monstres captures ({id, name, count}) et leur total. Raccourci de inventory.getSoulStones("mount") ; location vaut toujours "mount". Liste vide (et avertissement dans le journal) si l'inventaire de la monture n'est pas ouvert. Combiner avec mount.getItemByUid(stone.uid, 1) pour ramener une pierre choisie dans le sac.


mount.openPaddock

mount.openPaddock()

returns boolean

Ouvre l'enclos de la carte via sa competence 175 et attend l'etat confirme (10 s maximum). true immediatement si deja ouvert ; false si aucun enclos ou delai depasse. Les listes initiales sont disponibles des l'ouverture, meme vides.


mount.isPaddockOpen

mount.isPaddockOpen()

returns boolean

True si un enclos est actuellement ouvert (echange actif de type 16).


mount.waitPaddockOpen

mount.waitPaddockOpen(timeoutMs?: number)

returns boolean

Attend un etat actuel d'enclos ouvert (10000 ms par defaut). true immediatement si deja ouvert ; un ancien evenement d'ouverture ne suffit pas apres fermeture.


mount.leavePaddock

mount.leavePaddock()

returns boolean

Demande de fermer l'enclos (EV). Retourne false si aucun enclos actif. Capture le contexte : le moteur refuse la fermeture si une autre fenetre ou une nouvelle ouverture d'enclos a remplace celle-ci avant l'envoi.


mount.stableMounts

mount.stableMounts()

returns table

Liste des descripteurs complets des montures en etable, initialisee a l'ouverture et actualisee par les notifications du serveur. Voir Descripteur complet. Vide si aucun enclos ouvert. La monture equipee est disponible via getMountData, les certificats via certificates.


mount.paddockMounts

mount.paddockMounts()

returns table

Liste des descripteurs complets des montures posees dans l'enclos. Meme format que stableMounts. Vide si aucun enclos ouvert.


mount.findInStable

mount.findInStable(name: string)

returns number | nil

Premier UID dont le nom correspond exactement, sans distinction de casse, dans l'etable de l'enclos ouvert ; nil sinon. En cas d'homonymes, choisir explicitement dans stableMounts.


mount.stableToPaddock

mount.stableToPaddock(uid: number)

returns boolean

Place une monture presente en etable dans l'enclos (Efp). Necessite un enclos ouvert et une source presente ; true signifie mise en file, pas confirmation. Verifier source et destination avant l'action suivante.


mount.paddockToStable

mount.paddockToStable(uid: number)

returns boolean

Ramene une monture presente dans l'enclos vers l'etable (Efg). Necessite un enclos ouvert et une source presente ; true signifie mise en file, pas confirmation. Verifier source et destination avant l'action suivante.


mount.stableToEquip

mount.stableToEquip(uid: number)

returns boolean

Equipe une monture de l'etable (Erg) si aucune monture n'est deja equipee. Necessite un enclos ouvert et une source presente ; true signifie mise en file, pas confirmation. Verifier source et destination avant l'action suivante.


mount.equipToStable

mount.equipToStable()

returns boolean

Range la monture equipee dans l'etable (Erp avec son UID). Necessite un enclos ouvert et une source presente ; true signifie mise en file, pas confirmation. Verifier source et destination avant l'action suivante.


mount.certify

mount.certify(uid: number)

returns boolean

Transforme une monture de l'etable en certificat dans l'inventaire (Erc). Necessite un enclos ouvert et une source presente ; true signifie mise en file, pas confirmation. Verifier source et destination avant l'action suivante.


mount.uncertify

mount.uncertify(certUid: number)

returns boolean

Deballe un certificat de type 97 vers l'etable (ErC). Utiliser l'UID de l'objet certificat. Necessite un enclos ouvert et une source presente ; true signifie mise en file, pas confirmation. Verifier source et destination avant l'action suivante.


mount.certificates

mount.certificates()

returns table

Objets de type officiel 97 dans l'inventaire : {uid, templateId, name, quantity, effects, mountUid?, validity?}. uid identifie l'objet pour uncertify/inspectCertificate ; mountUid et validity sont les deux valeurs de l'effet 995, validity en chaine decimale. Aucun filtrage par nom ou langue.


Exemple — lire les dragodindes

if not mount.openPaddock() then
  error("Impossible d'ouvrir l'enclos")
end
for _, entry in ipairs(mount.stableMounts()) do
  print("Etable : " .. entry.name .. " | UID " .. entry.uid .. " | niveau " .. entry.level)
end
for _, entry in ipairs(mount.paddockMounts()) do
  print("Enclos : " .. entry.name .. " | UID " .. entry.uid)
end
for _, cert in ipairs(mount.certificates()) do
  print("Certificat : " .. cert.name .. " | UID objet " .. cert.uid)
end
if mount.hasMount() then
  print("Equipee : " .. mount.getMountName() .. " | UID " .. mount.getMountId())
end

Ouvre l'enclos puis affiche separement etable, enclos, certificats et monture equipee. Aucun transfert n'est demande. Les fonctions stableToPaddock/paddockToStable/stableToEquip/equipToStable/certify/uncertify retournent apres mise en file : leur delai interne ne garantit pas l'acceptation. Avant d'enchainer un transfert, verifier les listes source et destination avec une attente bornee. Guide : docs/enclos-dragodindes.md.