Aller au contenu

exchange — Échanges & Banque

API échanges et banque MoonBot Lua : déposer/retirer banque, échange entre comptes, gestion des items.

16 fonctions dans ce namespace.

Index


Référence

exchange.putItem / getItem

exchange.putItem(templateId, qty, delay?) / exchange.getItem(templateId, qty, delay?)

returns boolean

Depose/retire un item dans l'echange ou la banque. Ces appels restent compatibles avec le concasseur ; le module crusher propose des fonctions dediees au brisage qui attendent les quantites confirmees. Guide : docs/brisage.md.


exchange.putKamas / getKamas

exchange.putKamas(amount) / exchange.getKamas(amount)

returns boolean

En banque : demande un depot/retrait du montant indique. Fournir un entier positif, limite au solde disponible. true confirme la mise en file, pas le mouvement serveur : relire storageKamas() et character.kamas() avec une attente bornee avant d'enchainer. Ces fonctions ne retirent pas automatiquement tout avec 0. Pour les paiements d'atelier cooperatif, utiliser craft.setPayment. Guide : docs/banque-kamas.md.


exchange.putAllItems

exchange.putAllItems()

returns boolean

Depose tous les items. Ne depose pas de kamas et ne confirme aucun mouvement de kamas.


exchange.putAllItemsExcept

exchange.putAllItemsExcept(except: table)

returns boolean

Depose tout sauf les template IDs dans la table.


exchange.getAllItems

exchange.getAllItems()

returns boolean

Retire tous les items. Ne retire pas de kamas et ne confirme aucun mouvement de kamas.


exchange.ready

exchange.ready(delay1?: number, delay2?: number)

returns boolean

Valide l'echange. Au concasseur (competence 181), lance le brisage des objets prepares, comme craft.combine(). Aucun craft.setQuantity() ni repetition n'est necessaire. true signifie demande mise en file ; preferer crusher.crush() pour attendre un nouveau resultat dans le concasseur courant. Guide : docs/brisage.md.


exchange.leave

exchange.leave()

returns boolean

Ferme l'echange.


exchange.accept / refuse

exchange.accept() / exchange.refuse()

returns boolean

Accepte ou refuse une demande d'echange, y compris une invitation d'artisanat cooperatif. Consulter getPendingRequest() pour identifier le demandeur et le type.


Banque

exchange.storageItems() / storageKamas() / storageItemQuantity(templateId) / storageItemCount()

returns table / number / number / number

storageItems()→table of {id: number, uid: number, quantity: number, name: string, type: number, superType: number, typeName: string, level: number, effects: string, jets: table}. Les jets du coffre ont le meme format que ceux de l'inventaire (voir « Jets d'un item » dans inventory). storageKamas()→number, solde du stockage courant actualise par le serveur, distinct des kamas du personnage et des offres d'echange. Remis a 0 a la fermeture et a la nouvelle ouverture ; 0 avant reception ne prouve pas que le chargement est termine. Le dernier contenu sauvegarde dans l'onglet Banque est un historique distinct. storageItemQuantity(templateId)→number (quantite d'un item). storageItemCount()→number (items uniques).


Echange joueur

exchange.launchExchangeWithPlayerByName(name) / requestByName(name) / requestById(id)

blocking · returns boolean

Demande un echange avec un joueur.


exchange.openWithNpc

exchange.openWithNpc(npcId?: number)

blocking · returns boolean

Lance un echange avec un PNJ (ER2). npcId -1 = PNJ en dialogue. Alias de npc.exchange().


exchange.waitForRequest

exchange.waitForRequest(timeout?: number)

blocking · returns number

Attend une demande d'echange. Retourne l'ID du demandeur ou 0.


exchange.getPendingRequest

exchange.getPendingRequest()

returns fromId: number, exchangeType: number | nil

Demande d'echange recue et pas encore acceptee/refusee. Retourne 0, nil s'il n'y en a pas. Type 1 : echange classique ; type 12 : l'expediteur invite comme artisan ; type 13 : l'expediteur demande les services de l'artisan destinataire. Version non bloquante de exchange.waitForRequest, pour repondre avec exchange.accept() ou exchange.refuse().


Etat echange

exchange.isActive() / myItems() / theirItems() / myKamas() / theirKamas() / myReady() / theirReady() / partnerId()

returns boolean / table / table / number / number / boolean / boolean / number

isActive()→boolean. myItems()/theirItems()→table of {uid, id, quantity, name}. myKamas()/theirKamas()→number. myReady()/theirReady()→boolean (pret a valider). partnerId()→number.


exchange.waitForValidation

exchange.waitForValidation(timeout?: number)

blocking · returns boolean

Attend la validation de l'echange par le partenaire.


exchange.waitForClose

exchange.waitForClose(timeout_ms?: number)

blocking · returns boolean

Attend la fermeture de l'echange. Timeout par defaut : 60 secondes.